與登錄共用各工作區的資料 (預覽)

Azure Machine Learning 登錄可讓您在組織內跨工作區共同作業。 您可以使用登錄來共用模型、元件、環境和資料。 與登錄共用資料目前是預覽功能。 在本文中,您將學會如何:

  • 在登錄中建立資料資產。
  • 將現有的資料資產從工作區分享至登錄
  • 使用登錄中的資料資產作為工作區中模型定型作業的輸入。

重要

此功能目前處於公開預覽。 此預覽版本沒有服務等級協定,不建議用於處理生產工作負載。 可能不支援特定功能,或可能已經限制功能。

如需詳細資訊,請參閱 Microsoft Azure 預覽版增補使用條款

使用 Azure Machine Learning 登錄共用資料所解決的主要案例

您可能想要在中央位置的多個小組、專案或工作區間共用資料。 這類資料沒有敏感性存取控制,而且可在組織中廣泛使用。

範例包含:

  • 小組想要共用已預先處理並準備好用於實驗的公用資料集。
  • 您的組織已從外部廠商取得專案的特定資料集,而且想要讓從事某個專案的所有小組都能使用。
  • 小組想要跨不同區域的工作區共用資料資產。

在這些案例中,您可以在登錄中建立資料資產,或將工作區中的現有資料資產分享到登錄。 然後,此資料資產可以跨多個工作區使用。

使用 Azure Machine Learning 登錄共用資料未解決的案例

  • 共用需要精細存取控制的敏感性資料。 您無法在登錄中建立要與少數使用者/工作區共用的資料資產,而組織中的許多其他使用者都可以存取此登錄。

  • 共用現有的儲存體中不得複製或太大或太昂貴而無法複製的可用資料。 每當在登錄中建立資料資產時,資料複本就會內嵌至登錄儲存體,以便進行複寫。

Azure Machine Learning 登錄所支援的資料資產類型

提示

在決定您是否要在您的案例中使用 uri_fileuri_foldermltable 時,請參閱下列典型案例

您可以建立三種資料資產類型:

類型 V2 API 典型案例
檔案:參考單一檔案 uri_file 讀取/寫入單一檔案 - 檔案可以是任何格式。
資料夾:參考單一資料夾 uri_folder 您必須將 parquet/CSV 檔案的目錄讀取/寫入至 Pandas/Spark 中。 使用位於目錄中的影像、文字、音訊、視訊檔案進行深度學習。
資料表:參考資料表 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 命令來查看目前的預設值。

複製範例存放庫

本文中的程式碼範例以範例存放庫中的 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>

如果您收到此名稱和版本的資料已存在登錄中的錯誤,您可以在 data-registry.yml 中編輯 version 欄位,或在 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

儲存 az ml data create 命令輸出中資料的 nameversion 並搭配 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 目錄中。 在 single-job-pipeline.yml 檔案的 train_job 區段之下,編輯 component 區段以參考定型元件,以及在 training_data 之下編輯 path 以參考上一節中建立的資料資產。 下列範例顯示編輯後的 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 的計算叢集,或是將 jobs.train_job.compute 下方的 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>

下一步