互動式 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 計算執行個體。 計算執行個體具有執行成功程式碼所需的環境和設定檔。
必要條件
- 如果您沒有 Azure 訂用帳戶,請在開始前建立免費帳戶。 立即試用免費或付費版本的 Azure Machine Learning
- Azure Machine Learning 工作區和計算執行個體
- 在 Azure Machine Learning Studio 中使用 Jupyter Notebook 的基本瞭解。 如需詳細資訊,請瀏覽雲端工作站上的模型開發資源。
在 Studio 的筆記本中執行 R
您將在計算執行個體上使用 Azure Machine Learning 工作區中的筆記本。
如果工作區尚未開啟,請開啟工作區
在左側導覽中,選取 [Notebooks]
建立名為 RunR.ipynb 的新筆記本
提示
如果您不確定如何在 Studio 中建立和使用筆記本,請檢閱在工作區中執行 Jupyter 筆記本
選取筆記本。
在筆記本工具列上,確定您的計算執行個體正在執行中。 如果沒有,請立即啟動。
在筆記本工具列上,將核心切換至 R。
您的筆記本現在已準備好執行 R 命令。
存取資料
您可以將檔案上傳至工作區檔案儲存體資源,然後在 R 中存取這些檔案。不過,對於儲存在 Azure 資料資產中的檔案,或來自資料存放區的資料,您必須安裝一些套件。
本節說明如何使用 Python 和 reticulate
套件,從互動式工作階段將資料資產和資料存放區載入 R。 您可以使用 azureml-fsspec
Python 套件和 reticulate
R 套件,將表格式資料讀取為 Pandas DataFrames。 本節也包含將資料資產和資料存放區讀取到 R data.frame
的範例。
若要安裝這些套件:
在計算執行個體上建立名為 setup.sh 的新檔案。
將此程式碼複製到檔案:
#!/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
選取 [儲存並在終端機中執行指令碼] 以執行指令碼
安裝指令碼會處理下列步驟:
pip
會在計算執行個體的預設 conda 環境中安裝azureml-fsspec
- 視需要安裝 R
reticulate
套件 (版本必須是 1.26 或更新版本)
從已註冊的資料資產或資料存放區讀取表格式資料
針對儲存在 Azure Machine Learning 中建立之資料資產的資料,請使用下列步驟,將該表格式檔案讀入 Pandas DataFrame 或 R data.frame
:
注意
讀取具有 reticulate
的檔案只適用於表格式資料。
請確定您有正確的
reticulate
版本。 對於低於 1.26 的版本,請嘗試使用較新的計算執行個體。packageVersion("reticulate")
載入
reticulate
並設定已安裝azureml-fsspec
的 conda 環境library(reticulate) use_condaenv("azureml_py310_sdkv2") print("Environment is set")
尋找資料檔的 URI 路徑。
首先,取得工作區的控制代碼
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")
使用此程式碼來擷取資產。 請務必將
<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"
若要擷取 URI,請執行程式碼。
py_run_string(py_code) print(paste("URI path is", py$data_uri))
使用 Pandas 讀取函式將檔案讀取至 R 環境。
pd <- import("pandas") cc <- pd$read_csv(py$data_uri) head(cc)
您也可以使用資料存放區 URI 來存取已註冊資料存放區上的不同檔案,並將這些資源讀入 R data.frame
。
在此格式中,使用您自己的值建立資料存放區 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 格式:
- 瀏覽至您想要讀入 R 的檔案/資料夾
- 選取其旁邊的省略號 [...]。
- 從功能表選取 [複製 URI]。
- 選取 [資料存放區 URI] 以複製到您的筆記本/指令碼。
請注意,您必須在程式碼中建立
<path>
變數。
使用先前提及的 URI 建立檔案存放區物件:
fs <- azureml.fsspec$AzureMachineLearningFileSystem(uri, sep = "")
- 讀入 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 互動 (例如記錄模型或查詢登錄)。