交互式 R 开发

适用于:Azure CLI ml 扩展 v2 (当前版本)Python SDK azure-ai-ml v2 (当前版本)

本文介绍如何在 Jupyter 笔记本中运行 R 内核的计算实例上使用 Azure 机器学习工作室 R。

常用的 RStudio IDE 也能发挥作用。 可以在计算实例上的自定义容器中安装 RStudio 或 Posit Workbench。 但是,此解决方案在读取和写入Azure 机器学习工作区方面存在限制。

重要

本文中显示的代码适用于Azure 机器学习计算实例。 计算实例具有成功运行代码所需的环境和配置文件。

先决条件

在工作室中的笔记本中运行 R

在计算实例上使用Azure 机器学习工作区中的笔记本。

  1. 登录到 Azure 机器学习工作室

  2. 如果工作区尚未打开,请打开它。

  3. 在左侧导航中,选择“笔记本”

  4. 创建名为 RunR.ipynb 的新笔记本。

    提示

    如果不确定如何在 Studio 中创建和使用 Jupyter 笔记本,请查看 工作区中的“运行 Jupyter 笔记本”

  5. 选择该笔记本。

  6. 在笔记本工具栏上,确保你的计算实例正在运行。 如果未运行,请立即启动。

  7. 在笔记本工具栏上,将内核切换为“R”。

    屏幕截图:切换笔记本内核以使用 R。

笔记本现已准备好运行 R 命令。

访问数据

可以将文件上传到工作区文件存储资源,然后在 R 中访问这些文件。但是,对于存储在 Azure data assetsdatastores>datastores 中的数据,必须安装一些包。

本部分介绍如何使用 Python 和 reticulate 包从交互式会话将数据资产和数据存储加载到 R。 使用 azureml-fsspec Python 包和 reticulate R 包将表格数据读取为 Pandas 数据帧。 该部分还包含一个将数据资产和数据存储读取到 R data.frame 中的示例。

若要安装这些包:

  1. 在计算实例上创建一个名为 setup.sh 的新文件。
  2. 将以下代码复制到文件中:
#!/bin/bash

set -e

# Installs azureml-fsspec in default conda environment 
# Does not need to run as sudo

eval "$(conda shell.bash hook)"
conda activate azureml_py310_sdkv2
pip install azureml-fsspec
conda deactivate

# Checks that version 1.26 of reticulate is installed (needs to be done as sudo)

sudo -u azureuser -i <<'EOF'
R -e "if (packageVersion('reticulate') >= 1.26) message('Version OK') else install.packages('reticulate')"
EOF
  1. 选择“保存并在终端中运行脚本”来运行脚本。

安装脚本将处理以下步骤:

  • pip 将安装 azureml-fsspec 到计算实例的默认 conda 环境中。
  • 如有必要,安装 R reticulate 包(版本必须为 1.26 或更高版本)。

从已注册的数据资产或数据存储中读取表格数据

对于存储在Azure 机器学习中创建的数据资产中的数据,请使用以下步骤将该表格文件读取到 Pandas DataFrame 或 R data.frame

注意

使用 reticulate 读取文件仅适用于表格数据。

  1. 确认安装reticulate包。

    packageVersion("reticulate")
    
  2. 加载 reticulate 并设置已在其中安装了 azureml-fsspec 的 conda 环境

    library(reticulate)
    use_condaenv("azureml_py310_sdkv2")
    print("Environment is set")
    
  3. 查找数据文件的 URI 路径。

    1. 首先,获取工作区的句柄。

      py_code <- "from azure.identity import DefaultAzureCredential
      from azure.ai.ml import MLClient
      credential = DefaultAzureCredential()
      ml_client = MLClient.from_config(credential=credential)"
      
      py_run_string(py_code)
      print("ml_client is configured")
      
    2. 使用此代码检索资产。 确保将 <MY_NAME><MY_VERSION> 替换为你的数据资产的名称和编号。

      提示

      在 Studio 左侧导航栏中选择“数据”以找到你的数据资产的名称和版本号。

      # Replace <MY_NAME> and <MY_VERSION> with your values
      py_code <- "my_name = '<MY_NAME>'
      my_version = '<MY_VERSION>'
      data_asset = ml_client.data.get(name=my_name, version=my_version)
      data_uri = data_asset.path"
      
    3. 要检索该 URI,请运行该代码。

      py_run_string(py_code)
      print(paste("URI path is", py$data_uri))
      
  4. 使用 Pandas 的读取函数将文件或文件集导入到 R 环境中。

pd <- import("pandas")
cc <- pd$read_csv(py$data_uri)
head(cc)

安装 R 包

计算实例附带许多预安装的 R 包。

要安装其他包,必须显式指明位置和依赖项。

提示

创建或使用其他计算实例时,必须重新安装已安装的任何包。

例如,若要安装 tsibble 包,请运行以下代码:

install.packages("tsibble", 
                 dependencies = TRUE,
                 lib = "/home/azureuser")

注意

如果在 Jupyter 笔记本中运行的 R 会话中安装包,请包含 dependencies = TRUE。 否则,依赖包不会自动安装。 您还需要指定 lib 的位置,以便在正确的计算实例位置中安装。

加载 R 库

/home/azureuser 添加到 R 库路径。

.libPaths("/home/azureuser")

提示

必须更新每个交互式 R 脚本中的 .libPaths 才能访问用户安装的库。 将此代码添加到每个交互式 R 脚本或笔记本的顶部。

更新 libPath 后,照常加载库。

library('tsibble')

在笔记本中使用 R

除了前面所述的问题,像在任何其他环境中一样使用 R,包括本地工作站。 在笔记本或脚本中,可以读取和写入存储笔记本或脚本的路径。

注意

  • 在交互式 R 会话中,只能写入到工作区文件系统。
  • 在交互式 R 会话中,无法与 MLflow 交互(例如日志模型或查询注册表)。