互動式 R 開發

適用於:Azure CLI ml 延伸模組 v2 (目前)Python SDK azure-ai-ml v2 (目前)

本文說明如何在 Azure Machine Learning Studio 中的計算執行個體上使用 R,以在 Jupyter Notebook 中執行 R 核心。

熱門的 RStudio IDE 也可運作。 您可以在計算執行個體的自訂容器中安裝 RStudio 或 Posit Workbench。 不過,在讀取和寫入 Azure Machine Learning 工作區方面有限制。

重要

本文中顯示的程式碼適用於 Azure Machine Learning 計算執行個體。 計算執行個體具有執行成功程式碼所需的環境和設定檔。

必要條件

在 Studio 的筆記本中執行 R

您將在計算執行個體上使用 Azure Machine Learning 工作區中的筆記本。

  1. 登入 Azure Machine Learning 工作室

  2. 如果工作區尚未開啟,請開啟工作區

  3. 在左側導覽中,選取 [Notebooks]

  4. 建立名為 RunR.ipynb 的新筆記本

    提示

    如果您不確定如何在 Studio 中建立和使用筆記本,請檢閱在工作區中執行 Jupyter 筆記本

  5. 選取筆記本。

  6. 在筆記本工具列上,確定您的計算執行個體正在執行中。 如果沒有,請立即啟動。

  7. 在筆記本工具列上,將核心切換至 R

    Screenshot: Switch the notebook kernel to use R.

您的筆記本現在已準備好執行 R 命令。

存取資料

您可以將檔案上傳至工作區檔案儲存體資源,然後在 R 中存取這些檔案。不過,對於儲存在 Azure 資料資產中的檔案,或來自資料存放區的資料,您必須安裝一些套件。

本節說明如何使用 Python 和 reticulate 套件,從互動式工作階段將資料資產和資料存放區載入 R。 您可以使用 azureml-fsspec Python 套件和 reticulate R 套件,將表格式資料讀取為 Pandas DataFrames。 本節也包含將資料資產和資料存放區讀取到 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
    
  3. 選取 [儲存並在終端機中執行指令碼] 以執行指令碼

安裝指令碼會處理下列步驟:

  • pip 會在計算執行個體的預設 conda 環境中安裝 azureml-fsspec
  • 視需要安裝 R reticulate 套件 (版本必須是 1.26 或更新版本)

從已註冊的資料資產或資料存放區讀取表格式資料

針對儲存在 Azure Machine Learning 中建立之資料資產的資料,請使用下列步驟,將該表格式檔案讀入 Pandas DataFrame 或 R data.frame

注意

讀取具有 reticulate 的檔案只適用於表格式資料。

  1. 請確定您有正確的 reticulate 版本。 對於低於 1.26 的版本,請嘗試使用較新的計算執行個體。

    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)

您也可以使用資料存放區 URI 來存取已註冊資料存放區上的不同檔案,並將這些資源讀入 R data.frame

  1. 在此格式中,使用您自己的值建立資料存放區 URI:

    subscription <- '<subscription_id>'
    resource_group <- '<resource_group>'
    workspace <- '<workspace>'
    datastore_name <- '<datastore>'
    path_on_datastore <- '<path>'
    
    uri <- paste0("azureml://subscriptions/", subscription, "/resourcegroups/", resource_group, "/workspaces/", workspace, "/datastores/", datastore_name, "/paths/", path_on_datastore)
    

    提示

    如果您知道檔案所在的資料存放區,您可以複製並貼上 Studio UI 中的資料存放區 URI,而不是記住資料存放區 URI 格式:

    1. 瀏覽至您想要讀入 R 的檔案/資料夾
    2. 選取其旁邊的省略號 [...]
    3. 從功能表選取 [複製 URI]
    4. 選取 [資料存放區 URI] 以複製到您的筆記本/指令碼。 請注意,您必須在程式碼中建立 <path> 變數。 Screenshot highlighting the copy of the datastore URI.
  2. 使用上述 URI 建立檔案存放區物件:

fs <- azureml.fsspec$AzureMachineLearningFileSystem(uri, sep = "")
  1. 讀入 R data.frame
df <- with(fs$open("<path>)", "r") %as% f, {
 x <- as.character(f$read(), encoding = "utf-8")
 read.csv(textConnection(x), header = TRUE, sep = ",", stringsAsFactors = FALSE)
})
print(df)

安裝 R 套件

計算執行個體有許多預安裝 R 套件。

若要安裝其他套件,您必須明確陳述位置和相依性。

提示

當您建立或使用不同的計算執行個體時,您必須重新安裝任何已安裝的套件。

例如,若要安裝 tsibble 套件:

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

注意

如果您在 Jupyter Notebook 中執行的 R 工作階段內安裝套件,則需要 dependencies = TRUE。 否則,相依套件將不會自動安裝。 也需要程式庫位置,才能在正確的計算執行個體位置中安裝。

載入 R 程式庫

/home/azureuser 新增至 R 程式庫路徑。

.libPaths("/home/azureuser")

提示

您必須更新每個互動式 R 指令碼中的 .libPaths,才能存取使用者安裝的程式庫。 將此程式碼新增至每個互動式 R 指令碼或筆記本的頂端。

更新 libPath 之後,請如往常載入程式庫。

library('tsibble')

在筆記本中使用 R

除了稍早所述的問題之外,請像您在任何其他環境中一樣使用 R,包括本地工作站。 在您的筆記本或指令碼中,您可以讀取和寫入儲存筆記本/指令碼的路徑。

注意

  • 從互動式 R 工作階段中,您只能寫入工作區檔案系統。
  • 在互動式 R 工作階段中,您無法與 MLflow 互動 (例如記錄模型或查詢登錄)。

下一步