Azure Machine Learning 登錄可讓您在組織內跨工作區共同作業。 使用登錄,您可以共用模型、元件、環境和數據。 在本文中,您將學會如何:
- 在登錄中建立資料資產。
- 將現有的資料資產從工作區分享至登錄
- 使用登錄中的資料資產作為工作區中模型定型作業的輸入。
使用 Azure Machine Learning 登錄共用資料所解決的主要案例
您可能想要在中央位置的多個小組、專案或工作區之間共享數據。 這類資料沒有敏感性存取控制,而且可在組織中廣泛使用。
範例包含:
- 小組想要共用已預先處理並準備好用於實驗的公用資料集。
- 您的組織已從外部廠商取得專案的特定資料集,而且想要讓從事某個專案的所有小組都能使用。
- 小組想要跨不同區域的工作區共用資料資產。
在這些案例中,您可以在登錄中建立資料資產,或將工作區中的現有資料資產分享到登錄。 然後,此資料資產可以跨多個工作區使用。
使用 Azure Machine Learning 登錄共用資料未解決的案例
共用需要精細存取控制的敏感性資料。 您無法在登錄中建立要與少數使用者/工作區共用的資料資產,而組織中的許多其他使用者都可以存取此登錄。
共用現有的儲存體中不得複製或太大或太昂貴而無法複製的可用資料。 每當在登錄中建立資料資產時,資料複本就會內嵌至登錄儲存體,以便進行複寫。
Azure Machine Learning 登錄所支援的資料資產類型
秘訣
在決定您是否要在您的案例中使用 、uri_file 或 uri_folder 時,請參閱下列mltable。
您可以建立三種資料資產類型:
| 類型 | V2 API | 典型案例 |
|---|---|---|
| 檔案:參考單一檔案 | uri_file |
讀取/寫入單一檔案 - 檔案可以是任何格式。 |
| 資料夾:參考單一資料夾 | uri_folder |
您必須在 Pandas/Spark 中讀取或寫入 parquet/CSV 檔案的目錄。 使用位於目錄中的影像、文字、音訊、視訊檔案進行深度學習。 |
| 資料表:參考資料表 | mltable |
您有複雜的結構描述可能會經常變更,或需要大型表格式資料的子集。 |
Azure Machine Learning 登錄所支援的路徑
當您建立資料資產時,您必須指定指向資料位置的 path 參數。 目前,唯一支援的路徑是本機電腦上的位置。
秘訣
「本機」表示您正在使用之電腦的本機儲存體。 例如,如果您使用膝上型電腦,則為本機磁碟機。 如果您使用 Azure Machine Learning 計算執行個體,則為計算執行個體的「本機」磁碟機。
必要條件
遵循本文中的步驟之前,請確定您已滿足下列必要條件:
熟悉 Azure Machine Learning 登錄和 Azure Machine Learning 中的資料概念。
用於共用資料的 Azure Machine Learning 註冊表。 若要建立登錄,請參閱了解如何建立登錄。
Azure Machine Learning 工作區。 如果您沒有工作區資源,請依快速入門:建立工作區資源一文中的步驟來建立工作區資源。
重要
建立工作區的 Azure 區域 (位置) 必須列於 Azure Machine Learning 登錄的支援區域清單中。
Azure CLI 與
ml延伸模組或 Azure Machine Learning Python SDK v2:若要安裝 Azure CLI 和擴充功能,請參閱安裝、設定和使用 CLI (v2)。
重要
本文中的 CLI 範例假設您使用 Bash (或相容的) 殼層。 例如,從 Linux 系統或 Windows 子系統 Linux 版。
這些範例也會假設您已設定 Azure CLI 的預設值,因此您不必指定訂用帳戶、工作區、資源群組或位置的參數。 若要設定預設設定,請使用下列命令。 請用您的設定值替換下列參數:
- 使用您的 Azure 訂用帳戶識別碼來取代
<subscription>。 - 將您的 Azure Machine Learning 工作區名稱取代為
<workspace>。 - 將
<resource-group>取代為包含您工作區的 Azure 資源群組。 - 將
<location>取代為包含您工作區的 Azure 區域。
az account set --subscription <subscription> az configure --defaults workspace=<workspace> group=<resource-group> location=<location>您可以使用
az configure -l命令來查看目前的預設值。- 使用您的 Azure 訂用帳戶識別碼來取代
複製範例存放庫
本文中的程式碼範例以nyc_taxi_data_regression中的 範例為基礎。 若要在開發環境中使用這些檔案,請使用下列命令複製存放庫,並將目錄變更至範例:
git clone https://github.com/Azure/azureml-examples
cd azureml-examples
若是 CLI 範例,請將目錄變更至cli/jobs/pipelines-with-components/nyc_taxi_data_regression在本機複本中的 。
cd cli/jobs/pipelines-with-components/nyc_taxi_data_regression
建立 SDK 連線
秘訣
此步驟僅在使用 Python SDK 時需要執行。
建立 Azure Machine Learning 工作區和登錄的用戶端連線。 在下列範例中,將 <...> 占位符替換為適合您組態的值。 例如,您的 Azure 訂用帳戶識別碼、工作區名稱、登錄名稱等等:
ml_client_workspace = MLClient( credential=credential,
subscription_id = "<workspace-subscription>",
resource_group_name = "<workspace-resource-group",
workspace_name = "<workspace-name>")
print(ml_client_workspace)
ml_client_registry = MLClient(credential=credential,
registry_name="<REGISTRY_NAME>",
registry_location="<REGISTRY_REGION>")
print(ml_client_registry)
在登錄中建立資料
在提交定型作業時,本文稍後會使用在此步驟中建立的資料資產。
秘訣
相同的 CLI 命令 az ml data create 可以用來在工作區或登錄中建立資料。 執行該命令搭配 --workspace-name 命令會在工作區中建立資料,而執行該命令搭配 --registry-name 則會在登錄中建立資料。
資料來源位於您稍早複製的範例存放庫。 在本機複本下,移至下列目錄路徑:cli/jobs/pipelines-with-components/nyc_taxi_data_regression。 在此目錄中,建立名為 data-registry.yml 的 YAML 檔案,並使用下列 YAML 作為檔案的內容:
$schema: https://azuremlschemas.azureedge.net/latest/data.schema.json
name: transformed-nyc-taxt-data
description: Transformed NYC Taxi data created from local folder.
version: 1
type: uri_folder
path: data_transformed/
path 值會指向 data_transformed 子目錄,其中包含使用登錄共用的資料。
若要在登錄中建立資料,請使用 az ml data create。 在下列範例中,以您的登錄名稱取代 <registry-name>。
az ml data create --file data-registry.yml --registry-name <registry-name>
如果您收到具有此名稱和版本的數據已存在於註冊表中的錯誤,您可以在 version 中編輯 data-registry.yml 欄位,或在 CLI 中指定不同的版本,以覆蓋 data-registry.yml 中的版本值。
# use shell epoch time as the version
version=$(date +%s)
az ml data create --file data-registry.yml --registry-name <registry-name> --set version=$version
秘訣
如果 version=$(date +%s) 命令未在您的環境中設定 $version 變數,請以隨機數字取代 $version。
儲存 name 命令輸出中資料的 version 和 az ml data create 並搭配 az ml data show 命令使用,以檢視資產的詳細資料。
az ml data show --name transformed-nyc-taxt-data --version 1 --registry-name <registry-name>
秘訣
如果您使用不同的資料名稱或版本,請相應地取代 --name 和 --version 參數。
您也可以使用 az ml data list --registry-name <registry-name> 列出登錄中的所有資料資產。
在登錄中建立環境和元件
若要在登錄中建立環境和元件,請使用如何共用模型、元件和環境一文中的步驟。 環境和元件使用於下一節中的定型作業。
秘訣
您可以使用工作區中的環境和元件,而不是使用登錄中的環境和元件。
使用登錄的元件在工作區中執行管線作業
當執行的管線作業使用登錄的元件時,「計算」資源會位於工作區的本機。 在下列範例中,作業會使用 Scikit Learn 定型元件,以及在先前各節中建立的資料資產來定型模型。
附註
關鍵的環節是此管線將在工作區中執行,使用的定型資料不在該特定工作區內。 此資料位於登錄中,可以與組織中的任何工作區搭配使用。 您可以在任何有權訪問的工作區中運行此訓練任務,而不必擔心該工作區的訓練數據是否可供使用。
確認您位於 cli/jobs/pipelines-with-components/nyc_taxi_data_regression 目錄中。 在 component 檔案的 train_job 區段之下,編輯 single-job-pipeline.yml 區段以參考定型元件,以及在 path 之下編輯 training_data 以參考上一節中建立的資料資產。 下列範例顯示編輯後的 single-job-pipeline.yml 外觀。 以您的登錄名稱取代 <registry_name>:
$schema: https://azuremlschemas.azureedge.net/latest/pipelineJob.schema.json
type: pipeline
display_name: nyc_taxi_data_regression_single_job
description: Single job pipeline to train regression model based on nyc taxi dataset
jobs:
train_job:
type: command
component: azureml://registries/<registry-name>/component/train_linear_regression_model/versions/1
compute: azureml:cpu-cluster
inputs:
training_data:
type: uri_folder
path: azureml://registries/<registry-name>/data/transformed-nyc-taxt-data/versions/1
outputs:
model_output:
type: mlflow_model
test_data:
警告
- 在執行管線作業之前,請先確認您執行作業所在的工作區位於您所建立數據的登錄所支援的 Azure 區域中。
- 請確認工作區具有名稱為
cpu-cluster的計算叢集,或是將compute下方的jobs.train_job.compute欄位編輯為您的計算名稱。
使用 az ml job create 命令執行管線作業。
az ml job create --file single-job-pipeline.yml
秘訣
如果您尚未如必要條件一節中所述設定預設工作區和資源群組,則必須指定 --workspace-name 和 --resource-group 參數,才能使用 az ml job create。
如需執行作業的詳細資訊,請參閱下列文章:
將工作區的資料分享至註冊表
下列步驟示範如何將現有資料資產從工作區分享至登錄。
首先,在工作區中建立資料資產。 確定您位於 cli/assets/data 目錄中。 位於此目錄中的 local-folder.yml 可用於在工作區中建立資料資產。 此檔案中指定的資料可在 cli/assets/data/sample-data 目錄中取得。 下列 YAML 是 local-folder.yml 檔案的內容:
$schema: https://azuremlschemas.azureedge.net/latest/data.schema.json
name: local-folder-example-titanic
description: Dataset created from local folder.
type: uri_folder
path: sample-data/
若要在工作區中建立資料資產,請使用下列命令:
az ml data create -f local-folder.yml
如需在工作區中建立資料資產的詳細資訊,請參閱如何建立資料資產。
在工作區中建立的資料資產可以分享至儲存庫。 從登錄,其可使用於多個工作區。 我們會在共用函式中傳遞--share_with_name和--share_with_version參數。 這些參數是選擇性的,如果您不提供這些數據,它們將會以工作區中的相同名稱和版本被共用。
下列範例示範如何使用 share 命令來共用資料資產。 將 <registry-name> 取代為資料要將分享至的登錄名稱。
az ml data share --name local-folder-example-titanic --version <version-in-workspace> --share-with-name <name-in-registry> --share-with-version <version-in-registry> --registry-name <registry-name>