分享方式:


設定 Azure Machine Learning 與其他服務之間的驗證

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

Azure Machine Learning 是由多個 Azure 服務組成。 Azure Machine Learning 與其依賴的服務間有多種驗證方式。

  • Azure Machine Learning 工作區使用受控識別與其他服務通訊。 根據預設是系統指派的受控識別。 您也可以改用使用者指派的受控識別。
  • Azure Machine Learning 使用 Azure Container Registry (ACR),儲存用來定型和部署模型的 Docker 映像。 如果您允許 Azure Machine Learning 自動建立 ACR,它會啟用管理員帳戶
  • Azure Machine Learning 計算叢集使用受控識別,從 Azure Key Vault 擷取資料存放區的連線資訊,並從 ACR 提取 Docker 映像。 您也可以設定資料存放區的識別型存取,改用計算叢集的受控識別。
  • 根據資料儲存體服務和設定,資料存取可能透過多種路徑進行。 例如,資料存放區的驗證可能會使用帳戶金鑰、權杖、安全性主體、受控識別,或使用者身分識別。
  • 執行推斷時,受控線上端點可以使用受控識別存取 Azure 資源。 如需詳細資訊,請參閱從線上端點存取 Azure 資源

必要條件

遵循本文中的步驟之前,請確定您已滿足下列必要條件:

  • 若要指派角色,Azure 訂用帳戶的登入必須具有受控識別操作員角色,或其他授與必要動作的角色 (例如擁有者)。

  • 您必須熟悉建立和使用受控識別

工作區身分識別類型

Azure Machine Learning 工作區使用受控識別與其他服務通訊。 Azure Machine Learning 支援多種身分識別類型。

受控識別類型 建立角色指派 目的
系統指派 (SAI) 由 Microsoft 管理 生命週期與資源繫結、使用單一資源、易於上手
系統指派+使用者指派 (SAI+UAI) 由您管理 使用者指派身分識別的獨立生命週期、使用多個資源、可控制最低權限存取權。 存取訓練作業中的資料。

使用 SAI 身分識別類型建立工作區後,即可將其更新為 SAI+UAI,但無法從 SAI+UAI 變更回 SAI。 您可以將多個使用者指派的身分識別指派給同一工作區。

Azure Container Registry 和身分識別類型

此表列出向 Azure Container Registry 驗證時的支援矩陣,取決於驗證方法和 Azure Container Registry 的公用網路存取組態

驗證方法 停用
公用網路存取
Azure Container Registry
公用網路存取已啟用
管理使用者
工作區系統指派的受控識別
工作區使用者指派的受控識別
具有指派給身分識別的 ACRPull 角色

使用者指派的受控識別

工作區

Azure 入口網站建立 Azure Machine Learning 工作區時,您可以新增使用者指派的受控識別。 建立工作區時,請使用下列步驟:

  1. 從 [基本] 頁面,選取您要搭配工作區使用的 Azure 儲存體帳戶、Azure Container Registry 和 Azure Key Vault。
  2. 從 [身分識別] 頁面,選取 [使用者指派的身分識別],然後選取要使用的受控識別。

Azure Machine Learning 工作區的使用者指派受控識別上需要下列 Azure RBAC 角色指派,才能存取工作區相關聯資源上的資料。

資源 權限
Azure Machine Learning 工作區 參與者
Azure 儲存體 參與者 (控制平面) + 儲存體 Blob 資料參與者 (資料平面,選用,以在 Azure Machine Learning 工作室中啟用資料預覽)
Azure Key Vault (使用 RBAC 權限模型時) 參與者 (控制平面) + Key Vault 系統管理員 (資料平面)
Azure Key Vault (使用存取原則權限模型時) 參與者 + 任何存取原則權限,還有清除作業
Azure Container Registry 參與者
Azure Application Insights 參與者

若要在使用者指派的受控識別上自動建立角色指派,您可以使用此 ARM 範本

提示

如果工作區具有用於加密的客戶自控金鑰,您可以傳入使用者指派的受控識別,以從儲存體向 Key Vault 驗證。 使用 user-assigned-identity-for-cmk-encryption (CLI) 或 user_assigned_identity_for_cmk_encryption (SDK) 傳入受控識別。 此受控識別與工作區主要使用者指派的受控識別可以相同或不同。

若要建立具有多個使用者指派身分識別的工作區,請使用下列其中一個方法:

適用於:Azure CLI ml 延伸模組 v2 (目前)

az ml workspace create -f workspace_creation_with_multiple_UAIs.yml --subscription <subscription ID> --resource-group <resource group name> --name <workspace name>

其中 workspace_creation_with_multiple_UAIs.yml 的內容如下:

location: <region name>
identity:
   type: user_assigned
   user_assigned_identities:
    '<UAI resource ID 1>': {}
    '<UAI resource ID 2>': {}
storage_account: <storage acccount resource ID>
key_vault: <key vault resource ID>
image_build_compute: <compute(virtual machine) resource ID>
primary_user_assigned_identity: <one of the UAI resource IDs in the above list>

若要更新工作區的使用者指派身分識別,包括新增新的身分識別或刪除現有的身分識別,請使用下列其中一個方法:

適用於:Azure CLI ml 延伸模組 v2 (目前)

az ml workspace update -f workspace_update_with_multiple_UAIs.yml --subscription <subscription ID> --resource-group <resource group name> --name <workspace name>

其中 workspace_update_with_multiple_UAIs.yml 的內容如下:

identity:
   type: user_assigned
   user_assigned_identities:
    '<UAI resource ID 1>': {}
    '<UAI resource ID 2>': {}
primary_user_assigned_identity: <one of the UAI resource IDs in the above list>

提示

若要新增 UAI,除了現有的 UAI 之外,您還可以在區段 user_assigned_identities 下指定新的 UAI 識別碼,需要它才能傳遞所有現有的 UAI 識別碼。
若要刪除一或多個現有的 UAI,您可以將需要保留的 UAI 識別碼放在區段 user_assigned_identities 下,其餘的 UAI 識別碼將會被刪除。

除了系統指派的身分識別之外,將使用者指派的受控識別新增至工作區

在某些情況下,除了預設的系統指派工作區身分識別之外,您可能還須使用使用者指派的受控識別。 若要新增使用者指派的受控識別,而不變更現有的工作區身分識別,請使用下列步驟:

  1. 建立使用者指派的受控識別。 儲存您所建立受控識別的識別碼。

  2. 若要將受控識別附加至工作區,您需要指定身分識別的 YAML 檔案。 下列為 YAML 檔案內容的範例。 以您自己的值取代 <TENANT_ID><RESOURCE_GROUP><USER_MANAGED_ID>

    identity:
        type: system_assigned,user_assigned
        tenant_id: <TENANT_ID>
        user_assigned_identities:
            '/subscriptions/<SUBSCRIPTION_ID/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<USER_MANAGED_ID>':
            {}
    
  3. 使用 Azure CLI az ml workspace update 命令來更新工作區。 使用 --file 參數,指定上一個步驟中的 YAML 檔案。 此命令如下列範例所示:

    az ml workspace update --resource-group <RESOURCE_GROUP> --name <WORKSPACE_NAME> --file <YAML_FILE_NAME>.yaml
    

計算叢集

注意

Azure Machine Learning 計算叢集僅支援一個系統指派的身分識別,或多個使用者指派的身分識別,無法同時支援兩者。

預設受控身分識別是系統指派的受控身分識別,或第一個使用者指派的受控身分識別。

在執行期間,有兩種身分識別的應用程式:

  1. 系統會使用身分識別來設定使用者的儲存體裝載、容器登錄和資料存放區。

    • 在此情況下,系統會使用預設的受控識別。
  2. 您要套用身分識別,從提交作業的程式碼存取資源:

    • 在此情況下,請針對您要用來擷取認證的受控身分識別,提供對應的 client_id
    • 或是透過 DEFAULT_IDENTITY_CLIENT_ID 環境變數,取得使用者指派身分識別的用戶端識別碼。

    例如,若要使用預設受控身分識別來取得資料存放區的權杖:

    client_id = os.environ.get('DEFAULT_IDENTITY_CLIENT_ID')
    credential = ManagedIdentityCredential(client_id=client_id)
    token = credential.get_token('https://storage.azure.com/')
    

若要使用受控識別設定計算叢集,請使用下列其中一種方法:

適用於:Azure CLI ml 延伸模組 v2 (目前)

az ml compute create -f create-cluster.yml

其中 create-cluster.yml 內容如下:

$schema: https://azuremlschemas.azureedge.net/latest/amlCompute.schema.json 
name: basic-example
type: amlcompute
size: STANDARD_DS3_v2
min_instances: 0
max_instances: 2
idle_time_before_scale_down: 120
identity:
  type: user_assigned
  user_assigned_identities: 
    - resource_id: "identity_resource_id"

作為比較,下列 YAML 檔案的範例會建立使用系統指派受控識別的叢集:

$schema: https://azuremlschemas.azureedge.net/latest/amlCompute.schema.json 
name: basic-example
type: amlcompute
size: STANDARD_DS3_v2
min_instances: 0
max_instances: 2
idle_time_before_scale_down: 120
identity:
  type: system_assigned

如果您有現有的計算叢集,您可以在使用者管理和系統受控識別間變更。 下列範例示範如何變更設定:

使用者指派的受控識別

export MSI_NAME=my-cluster-identity
export COMPUTE_NAME=mycluster-msi

does_compute_exist()
{
  if [ -z $(az ml compute show -n $COMPUTE_NAME --query name) ]; then
    echo false
  else
    echo true
  fi
}

echo "Creating MSI $MSI_NAME"
# Get the resource id of the identity
IDENTITY_ID=$(az identity show --name "$MSI_NAME" --query id -o tsv | tail -n1 | tr -d "[:cntrl:]" || true)
if [[ -z $IDENTITY_ID ]]; then
    IDENTITY_ID=$(az identity create -n "$MSI_NAME" --query id -o tsv | tail -n1 | tr -d "[:cntrl:]")
fi
echo "MSI created: $MSI_NAME"
sleep 15 # Let the previous command finish: https://github.com/Azure/azure-cli/issues/8530


echo "Checking if compute $COMPUTE_NAME already exists"
if [ "$(does_compute_exist)" == "true" ]; then
  echo "Skipping, compute: $COMPUTE_NAME exists"
else
  echo "Provisioning compute: $COMPUTE_NAME"
  az ml compute create --name "$COMPUTE_NAME" --type amlcompute --identity-type user_assigned --user-assigned-identities "$IDENTITY_ID"
fi
az ml compute update --name "$COMPUTE_NAME" --identity-type user_assigned --user-assigned-identities "$IDENTITY_ID"

系統指派的受控識別

export COMPUTE_NAME=mycluster-sa

does_compute_exist()
{
  if [ -z $(az ml compute show -n $COMPUTE_NAME --query name) ]; then
    echo false
  else
    echo true
  fi
}

echo "Checking if compute $COMPUTE_NAME already exists"
if [ "$(does_compute_exist)" == "true" ]; then
  echo "Skipping, compute: $COMPUTE_NAME exists"
else
  echo "Provisioning compute: $COMPUTE_NAME"
  az ml compute create --name "$COMPUTE_NAME" --type amlcompute
fi

az ml compute update --name "$COMPUTE_NAME" --identity-type system_assigned

資料存放區

當您建立一個使用身分識別型資料存取的資料存放區時,系統會使用您的 Azure 帳戶 (Microsoft Entra 權杖) 來確認您有權限存取儲存體服務。 在身分識別型資料存取案例中,不會儲存任何驗證認證。 只有儲存體帳戶資訊會儲存在資料存放區中。

另外,資料存放區在工作區相關的金鑰保存庫中,使用認證型驗證快取連線資訊 (例如儲存體帳戶金鑰或 SAS 權杖)。 這種方法存在限制,因為其他工作區使用者只要有足夠的權限,便可擷取這些認證,所以對部分組織來說是安全性隱憂。

如需如何驗證資料存取的詳細資訊,請參閱資料管理文章。 如需設定資料的身分識別型存取資訊,請參閱建立資料存放區

有兩種情況,您可以在 Azure Machine Learning 中套用身分識別型資料存取。 當您使用機密資料,而且需要更細微的資料存取管理時,這些情況非常適合身分識別型存取:

  • 存取儲存體服務
  • 定型機器學習模型

身分識別型存取讓您使用角色型存取控制 (RBAC),限制使用者或計算資源等身分識別的資料存取權。

存取儲存體服務

您可以使用 Azure Machine Learning 資料存放區,透過身分識別型資料存取來連線儲存體服務。

當您使用身分識別型資料存取時,Azure Machine Learning 會提示您輸入 Microsoft Entra 權杖以進行資料存取驗證,而不是將認證保留在資料存放區中。 這種方法可讓您在儲存層級進行資料存取管理,並讓認證保持機密。

相同的行為適用於您透過本機電腦或計算執行個體的 Jupyter Notebook,以互動方式處理資料時。

注意

透過認證型驗證儲存的認證包括訂用帳戶識別碼、共用存取簽章 (SAS) 權杖,以及儲存體存取金鑰和服務主體資訊,例如用戶端識別碼和租用戶識別碼。

為了協助確保您安全地連線到 Azure 上的儲存體服務,Azure Machine Learning 要求您必須有權存取對應的資料儲存體。

警告

不支援跨租用戶存取儲存體帳戶。 如果您的案例需要跨租用戶存取權,請連絡 Azure Machine Learning 資料支援小組別名:amldatasupport@microsoft.com,取得自訂程式碼解決方案的協助。

身分識別型資料存取支援下列儲存體服務的連線。

  • Azure Blob 儲存體
  • Azure Data Lake Storage Gen1
  • Azure Data Lake Storage Gen2

若要存取這些儲存體服務,您必須至少具有對於儲存體帳戶的儲存體 Blob 資料讀取者存取權。 只有儲存體帳戶擁有者可以透過 Azure 入口網站變更您的存取層級

使用受控識別在計算上存取定型作業的資料

特定機器學習案例使用私人資料。 此時,資料科學家可能無法以 Microsoft Entra 使用者的身分直接存取資料。 在此案例中,計算的受控識別可以用於資料存取驗證。 在此案例中,資料只能從執行定型作業的計算執行個體或機器學習計算叢集存取。 使用此方法時,管理員會授與計算執行個體或計算叢集受控識別在儲存體上的 Blob 資料讀者權限。 不需要將存取權授與個別資料科學家。

若要啟用以計算受控識別進行驗證:

  • 建立啟用受控識別的計算。 請參閱計算叢集小節,或若是計算執行個體,請參閱指派受控識別小節。

    重要

    如果計算執行個體也設定為 [閒置關機],除非受控識別有 Azure Machine Learning 工作區的 [參與者] 存取權,否則計算執行個體不會因為閒置而關機。 如需指派權限的詳細資訊,請參閱管理 Azure Machine Learning 工作區存取權

  • 在儲存體帳戶上授與計算受控識別至少儲存體 Blob 資料讀者的角色。

  • 建立啟用身分識別型驗證的資料存放區。 請參閱建立資料存放區

注意

為計算執行個體或叢集建立的系統受控識別名稱,格式為 Microsoft Entra ID 中的 /workspace-name/computes/compute-name。

啟用身分識別型驗證後,存取定型作業中的資料時,即預設使用計算受控識別。 您可以選擇性地使用下一節所述的步驟,透過使用者身分識別進行驗證。

如需針對儲存體設定 Azure RBAC 的相關資訊,請參閱角色型存取控制

使用使用者身分識別,在計算叢集上存取定型作業的資料

適用於:Azure CLI ml 延伸模組 v2 (目前)

Azure Machine Learning 計算叢集上定型時,您可以使用使用者 Microsoft Entra 權杖來向儲存體驗證。

此驗證模式可讓您:

  • 設定精細的權限,讓不同的工作區使用者可以存取儲存體帳戶內的不同儲存體帳戶或資料夾。
  • 讓資料科學家在儲存體系統上重複使用現有的權限。
  • 稽核儲存體存取,因為儲存體記錄會顯示用來存取資料的身分識別。

重要

此功能有下列限制

  • 功能支援透過 Azure Machine Learning CLI 和 Python SDK V2 提交的實驗,但不支援透過 ML 工作室。
  • 使用者身分識別和計算受控識別不能用於相同作業內的驗證。
  • 針對管線作業,我們建議在將在一個計算上執行的個別步驟層級設定使用者身分識別,而不是在根管線層級執行。 (雖然根管線和步驟層級都支援身分識別設定,但如果兩者都已設定,則步驟層級設定會優先。不過,對於包含管線元件的管線,必須在將執行的個別步驟上設定身分識別。在根管線或管線元件層級設定的身分識別將無法運作。因此,我們建議在個別步驟層級設定身分識別,以方便起見。)

下列步驟概述如何從 CLI 針對計算叢集上的定型作業,使用使用者身分識別來設定資料存取。

  1. 將儲存體資源的存取權授與使用者身分識別。 例如,授與您想要使用的特定儲存體的 StorageBlobReader 存取權,或是授與 Azure Data Lake Gen 2 儲存體中特定資料夾或檔案的 ACL 型權限。

  2. 建立 Azure Machine Learning 資料存放區,而不需儲存體帳戶的快取認證。 如果資料存放區有快取的認證,例如儲存體帳戶金鑰,則會使用這些認證,而不是使用者身分識別。

  3. 提交定型作業,並且將 identity 屬性設定為 type: user_identity,如下列作業規格中所示。 在定型作業期間,儲存體的驗證會透過提交作業的使用者身分識別進行。

    注意

    如果未指定 identity 屬性且資料存放區沒有快取的認證,則計算受控識別會成為後援選項。

    command: |
    echo "--census-csv: ${{inputs.census_csv}}"
    python hello-census.py --census-csv ${{inputs.census_csv}}
    code: src
    inputs:
    census_csv:
        type: uri_file 
        path: azureml://datastores/mydata/paths/census.csv
    environment: azureml:AzureML-sklearn-1.0-ubuntu20.04-py38-cpu@latest
    compute: azureml:cpu-cluster
    identity:
    type: user_identity
    

下列步驟概述如何從 Python SDK 針對計算叢集上的定型作業,使用使用者身分識別來設定資料存取。

  1. 如以上針對 CLI 所述,授與資料存取並建立資料存放區。

  2. 提交定型作業,並將 identity 參數設定為 azure.ai.ml.UserIdentityConfiguration。 此參數設定可讓作業代表提交作業的使用者存取資料。

    from azure.ai.ml import command
    from azure.ai.ml.entities import Data, UriReference
    from azure.ai.ml import Input
    from azure.ai.ml.constants import AssetTypes
    from azure.ai.ml import UserIdentityConfiguration
    
    # Specify the data location
    my_job_inputs = {
        "input_data": Input(type=AssetTypes.URI_FILE, path="<path-to-my-data>")
    }
    
    # Define the job
    job = command(
        code="<my-local-code-location>", 
        command="python <my-script>.py --input_data ${{inputs.input_data}}",
        inputs=my_job_inputs,
        environment="AzureML-sklearn-0.24-ubuntu18.04-py37-cpu:9",
        compute="<my-compute-cluster-name>",
        identity= UserIdentityConfiguration() 
    )
    # submit the command
    returned_job = ml_client.jobs.create_or_update(job)
    

重要

在啟用使用者身分識別驗證的作業提交期間,程式碼快照集會受到總和檢查碼驗證的竄改保護。 如果您有現有的管線元件,而且想要使用它們搭配啟用使用者身分識別的驗證,您可能需要重新上傳它們。 否則,作業可能會在總和檢查碼驗證期間失敗。

使用虛擬網路

根據預設,Azure Machine Learning 無法與位於防火牆後方或虛擬網路中的儲存體帳戶進行通訊。

您可以將儲存體帳戶設定為只允許從特定虛擬網路內進行存取。 此設定需要額外的步驟,以確保資料不會在網路之外洩漏。 這種行為與認證型資料存取相同。 如需詳細資訊,請參閱如何防止資料外流

如果您的儲存體帳戶具有虛擬網路設定,這表示需要哪些身分識別類型和權限存取權。 例如,針對資料預覽和資料設定檔,虛擬網路設定會決定用來驗證資料存取的身分識別類型。

  • 在只允許特定 IP 和子網路存取儲存體的情況下,Azure Machine Learning 會使用工作區 MSI 來完成資料預覽和設定檔。

  • 如果您的儲存體是 ADLS Gen 2 或 Blob 且具有虛擬網路設定,客戶可以根據建立期間定義的資料存放區設定,使用使用者身分識別或工作區 MSI。

  • 如果虛擬網路設定為 [允許受信任服務清單上的 Azure 服務存取此儲存體帳戶],則使用工作區 MSI。

案例:沒有管理使用者的 Azure Container Registry

停用 ACR 的管理使用者後,Azure Machine Learning 會使用受控識別來組建並提取 Docker 映像。 在停用管理使用者的情況下,設定 Azure Machine Learning 使用 ACR 時,有兩個工作流程:

  • 允許 Azure Machine Learning 建立 ACR 執行個體,然後停用管理使用者。
  • 在已停用管理使用者的情況下,取用現有的 ACR。

具有自動建立 ACR 執行個體的 Azure Machine Learning

  1. 建立新的 Azure Machine Learning 工作區。

  2. 執行一個需要 Azure Container Registry 的動作。 例如,教學課程:定型您的第一個模型

  3. 取得叢集建立的 ACR 名稱。

    適用於:Azure CLI ml 延伸模組 v2 (目前)

    az ml workspace show --name <my workspace name> \
    --resource-group <my resource group> \
    --subscription <my subscription id> \
    --query container_registry
    

    此命令會傳回類似下列文字的值。 您只需要文字的最後部分,也就是 ACR 執行個體名稱:

    /subscriptions/<subscription id>/resourceGroups/<my resource group>/providers/MicrosoftContainerReggistry/registries/<ACR instance name>
    
  4. 更新 ACR 以停用管理使用者:

    az acr update --name <ACR instance name> --admin-enabled false
    

自備 ACR

如果訂用帳戶原則不允許 ACR 管理使用者,您應該先建立不具有管理使用者的 ACR,然後將 ACR 與工作區產生關聯。 從 Azure CLI 建立 ACR 而不設定 --admin-enabled 引數,或從 Azure 入口網站建立,而不啟用管理使用者。 然後,在建立 Azure Machine Learning 工作區時,指定 ACR 的 Azure 資源識別碼。 下列範例會示範如何建立使用現有的 ACR 的新 Azure Machine Learning 工作區:

適用於:Azure CLI ml 延伸模組 v2 (目前)

az ml workspace create -n <workspace name> \
-g <workspace resource group> \
-l <region> \
--container-registry /subscriptions/<subscription id>/resourceGroups/<acr resource group>/providers/Microsoft.ContainerRegistry/registries/<acr name>

提示

若要取得 --container-registry 參數的值,請使用 az acr show 命令來顯示 ACR 的資訊。 id 欄位 ACR 的資源識別碼。

此外,如果您現有的 ACR 已停用管理使用者,則可以透過更新將 ACR 附加至工作區。 下列範例示範如何更新 Azure Machine Learning 工作區,以使用現有的 ACR:

適用於:Azure CLI ml 延伸模組 v2 (目前)

az ml workspace update --update-dependent-resources \
--name <workspace name> \
--resource-group <workspace resource group> \
--container-registry /subscriptions/<subscription id>/resourceGroups/<acr resource group>/providers/Microsoft.ContainerRegistry/registries/<acr name>

建立具有受控識別的計算,以存取 Docker 映像來定型

若要存取工作區 ACR,請建立機器學習計算叢集並啟用系統指派的受控識別。 在建立計算時,您可以從 Azure 入口網站或工作室啟用身分識別,或從 Azure CLI 使用下列命令來啟用。 如需詳細資訊,請參閱對計算叢集使用受控識別

適用於:Azure CLI ml 延伸模組 v2 (目前)

az ml compute create --name cpu-cluster --type <cluster name>  --identity-type systemassigned

工作區 ACR 的 ACRPull 角色會自動授與受控識別,以允許提取 Docker 映像來定型。

注意

在建立工作區 ACR 之前,如果您先建立計算,則必須手動指派 ACRPull 角色。

使用 Docker 映像來推斷

如先前所述設定不具有管理使用者的 ACR 之後,您不需要 Azure Kubernetes Service (AKS) 中的系統管理金鑰,就可以存取 Docker 映像來推斷。 當您建立 AKS 或將 AKS 附加至工作區時,工作區 ACR 的 ACRPull 存取權會自動指派給叢集的服務主體。

注意

如果您自備 AKS 叢集,叢集必須已啟用服務主體,而不是受控識別。

案例:使用私人 Azure Container Registry

Azure Machine Learning 使用的 Docker 基礎映像,預設來自 Microsoft 管理的公用存放庫。 然後會根據這些映像,建立定型或推斷環境。 如需詳細資訊,請參閱什麼是 ML 環境?

若要使用企業內部的自訂基礎映像,您可以使用受控識別來存取私人 ACR。 有兩個使用案例:

  • 使用基礎映像依原樣定型。
  • 以自訂映像為基礎,建立 Azure Machine Learning 受控映像。

將 Docker 基礎映像提取至機器學習計算叢集來依原樣定型

如先前所述,建立機器學習計算叢集並啟用系統指派的受控識別。 然後,決定受控識別的主體識別碼。

適用於:Azure CLI ml 延伸模組 v2 (目前)

az ml compute show --name <cluster name> -n <workspace> -g <resource group>

您可以選擇更新計算叢集,以指派使用者指派的受控識別:

適用於:Azure CLI ml 延伸模組 v2 (目前)

az ml compute update --name <cluster name> --user-assigned-identities <my-identity-id>

若要允許計算叢集提取基礎映像,請將私人 ACR 的 ACRPull 角色授與受控服務識別

適用於:Azure CLI ml 延伸模組 v2 (目前)

az role assignment create --assignee <principal ID> \
--role acrpull \
--scope "/subscriptions/<subscription ID>/resourceGroups/<private ACR resource group>/providers/Microsoft.ContainerRegistry/registries/<private ACR name>"

最後,建立環境,並在環境 YAML 檔案中指定基礎映像位置。

適用於:Azure CLI ml 延伸模組 v2 (目前)

$schema: https://azuremlschemas.azureedge.net/latest/environment.schema.json
name: docker-image-example
image: pytorch/pytorch:latest
description: Environment created from a Docker image.
az ml environment create --file <yaml file>

您限在可在定型作業中使用環境。

將 Azure Machine Learning 受控環境加入私人 ACR 的基礎映像中來定型或推斷

注意

目前不支援使用使用者指派的受控識別連線至私人 ACR。 系統管理金鑰是私人 ACR 支援的唯一驗證類型。

下一步