分享方式:


使用 Azure CLI 管理 Azure Machine Learning 工作區

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

在本文中,您將了解如何使用 Azure CLI 建立及管理 Azure Machine Learning 工作區。 Azure CLI 提供管理 Azure 資源的命令,旨在讓您快速使用 Azure,並強調自動化。 Azure CLI 機器學習延伸模組會提供用於使用 Azure Machine Learning 資源的命令。

您也可以使用下列方法來建立和管理 Azure Machine Learning 工作區:

必要條件

  • 具有免費或付費版 Azure Machine Learning 的 Azure 訂用帳戶。 如尚未擁有 Azure 訂用帳戶,請在開始之前先建立免費帳戶

  • 已安裝 Azure CLI (部分機器翻譯) (如果您想要在本機執行本文中的 Azure CLI 命令的話)。

    如果您在 Azure Cloud Shell 中執行 Azure CLI 命令,則不需要安裝任何項目。 瀏覽器會存取最新版的 Azure CLI 和 Azure Machine Learning 延伸模組。

限制

  • 建立新的工作區時,您可以自動建立工作區所需的服務,或使用現有的服務。 若要使用有別於工作區的不同 Azure 訂閱的現有服務,您必須在包含這些服務的訂閱中註冊 Azure Machine Learning 命名空間。 例如,若要在訂用帳戶 A (使用訂用帳戶 B 的儲存體帳戶) 中建立工作區,則必須先在訂用帳戶 B 中註冊 Azure Machine Learning 命名空間,然後工作區才能使用該儲存體帳戶。

    Azure Machine Learning 的資源提供者為 Microsoft.MachineLearningServices。 如需查看是否已註冊或正在註冊它的相關資訊,請參閱 Azure 資源提供者和類型

    重要

    此資訊僅適用建立工作區期間所提供的資源:Azure 儲存體帳戶、Azure Container Registry、Azure Key Vault 和 Application Insights。

連接到 Azure 訂用帳戶

如果您從 Azure 入口網站使用 Azure Cloud Shell,則可以略過本節。 Cloud Shell 會自動使用您登入時所用的 Azure 訂用帳戶來驗證您的身分。

有數種方式可從 Azure CLI 在本機向您的 Azure 訂用帳戶進行驗證。 最簡單的方式是使用瀏覽器。

若要以互動方式進行驗證,請開啟命令列或終端,然後執行 az login。 如果 CLI 可以開啟預設瀏覽器,便會加以開啟,然後載入登入頁面。 否則,請遵循命令行的指示,開啟瀏覽器以進入 https://aka.ms/devicelogin,然後輸入裝置的授權碼。

提示

登入之後,您會看到一份與 Azure 帳戶相關聯的訂用帳戶清單。 具有 isDefault: true 的訂用帳戶資訊是目前針對 Azure CLI 命令啟用的訂用帳戶。 此訂用帳戶必須是包含 Azure Machine Learning 工作區的相同訂用帳戶。 您可以在 Azure 入口網站中工作區的概觀頁面上找到訂用帳戶資訊。

若要選取另一個訂用帳戶來用於 Azure CLI 命令,請執行 az account set -s <subscription> 命令,並指定要切換到的訂用帳戶名稱或識別碼。 如需訂用帳戶選項的詳細資訊,請參閱使用多個 Azure 訂用帳戶

如需其他驗證方法,請參閱使用 Azure CLI 登入

建立資源群組

Azure Machine Learning 工作區必須建立在現有或新的資源群組內。 若要建立新的資源群組,請執行下列命令。 將 <resource-group-name> 取代為要用於此資源群組的名稱,並將 <location> 取代為要用於此資源群組的 Azure 區域。

注意

請務必選取可使用 Azure Machine Learning 的區域。 如需資訊,請參閱依區域提供的產品

az group create --name <resource-group-name> --location <azure-region>

此命令的回應類似下列 JSON。 您可以使用輸出值來找出已建立的資源,或傳遞輸出值來作為其他 Azure CLI 命令或自動化的輸入。

{
  "id": "/subscriptions/<subscription-GUID>/resourceGroups/<resourcegroupname>",
  "location": "<location>",
  "managedBy": null,
  "name": "<resource-group-name>",
  "properties": {
    "provisioningState": "Succeeded"
  },
  "tags": null,
  "type": null
}

如需使用資源群組的詳細資訊,請參閱 az group

建立工作區

所部署的 Azure Machine Learning 工作區需要不同的其他服務來作為相依的相關聯資源 (部分機器翻譯)。 當您使用 CLI 建立工作區時,CLI 可以建立新的相關聯資源,或者您也可以連結現有的資源。

若要使用自動建立的新相依服務來建立新的工作區,請執行下列命令:

az ml workspace create -n <workspace-name> -g <resource-group-name>

若要建立使用現有資源的新工作區,請先在 YAML 設定檔中定義資源,如下一節所述。 接著,請在 Azure CLI 工作區建立命令中參考 YAML 檔案,如下所示:

az ml workspace create -g <resource-group-name> --file <configuration-file>.yml

工作區建立命令的輸出類似下列 JSON。 您可以使用輸出值來找出已建立的資源,或傳遞輸出值來作為其他 Azure CLI 命令的輸入。

{
  "applicationInsights": "/subscriptions/<subscription-GUID>/resourcegroups/<resource-group-name>/providers/microsoft.insights/components/<application-insight-name>",
  "containerRegistry": "/subscriptions/<subscription-GUID>/resourcegroups/<resource-group-name>/providers/microsoft.containerregistry/registries/<container-registry-name>",
  "creationTime": "2019-08-30T20:24:19.6984254+00:00",
  "description": "",
  "friendlyName": "<workspace-name>",
  "id": "/subscriptions/<subscription-GUID>/resourceGroups/<resource-group-name>/providers/Microsoft.MachineLearningServices/workspaces/<workspace-id>",
  "identityPrincipalId": "<GUID>",
  "identityTenantId": "<GUID>",
  "identityType": "SystemAssigned",
  "keyVault": "/subscriptions/<subscription-GUID>/resourcegroups/<resource-group-name>/providers/microsoft.keyvault/vaults/<key-vault-name>",
  "location": "<location>",
  "name": "<workspace-name>",
  "resourceGroup": "<resource-group-name>",
  "storageAccount": "/subscriptions/<subscription-GUID>/resourcegroups/<resource-group-name>/providers/microsoft.storage/storageaccounts/<storage-account-name>",
  "type": "Microsoft.MachineLearningServices/workspaces",
  "workspaceid": "<GUID>"
}

YAML 設定檔

若要為新的工作區使用現有的資源,請在 YAML 設定檔中定義資源。 下列範例顯示 YAML 工作區設定檔:

$schema: https://azuremlschemas.azureedge.net/latest/workspace.schema.json
name: mlw-basicex-prod
location: eastus
display_name: Bring your own dependent resources-example
description: This configuration specifies a workspace configuration with existing dependent resources
storage_account: /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.Storage/storageAccounts/<STORAGE_ACCOUNT>
container_registry: /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.ContainerRegistry/registries/<CONTAINER_REGISTRY>
key_vault: /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.KeyVault/vaults/<KEY_VAULT>
application_insights: /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.insights/components/<APP_INSIGHTS>
tags:
  purpose: demonstration

您不必在設定檔中指定所有相關聯的相依資源。 您可以指定一或多個資源,並讓系統自動建立其他資源。

您必須在 YAML 檔案中提供現有資源的識別碼。 您可以藉由在 Azure 入口網站中檢視資源「屬性」,或藉由執行下列 Azure CLI 命令,來取得這些識別碼:

  • Azure Application Insights
    az monitor app-insights component show --app <application-insight-name> -g <resource-group-name> --query "id"
  • Azure Container Registry:
    az acr show --name <container-registry-name> -g <resource-group-name> --query "id"
  • Azure Key Vault:
    az keyvault show --name <key-vault-name> --query "id"
  • Azure 儲存體帳戶:
    az storage account show --name <storage-account-name> --query "id"

查詢結果看起來會像下列字串:
"/subscriptions/<subscription-GUID>/resourceGroups/<resource-group-name>/providers/<provider>/<subresource>/<id>".

相關聯的相依資源

下列考量和限制適用於與工作區相關聯的相依資源。

Application Insights

提示

當您建立工作區時,會建立 Azure Application Insights 執行個體。 建立叢集後,您可以視需要刪除 Application Insights 執行個體。 刪除 Application Insights 執行個體會限制從工作區收集的資訊,且可能會使問題的疑難排解變得較為困難。 如果您刪除工作區所建立的 Application Insights 執行個體,重新建立的唯一方式是刪除並重新建立工作區

如需關於使用 Application Insights 執行個體的詳細資訊,請參閱監視和收集 Machine Learning Web 服務端點的資料

Container Registry

Azure Machine Learning 工作區會針對某些作業使用 Azure Container Registry,並在第一次需要 Container Registry 執行個體時自動建立一個。

警告

建立工作區的 Azure Container Registry 之後,請勿將其刪除。 這樣做將會造成您的 Azure Machine Learning 工作區中斷。

若要搭配 Azure Machine Learning 工作區使用現有的 Azure 容器登錄,您必須在容器登錄上啟用系統管理員帳戶 (部分機器翻譯)。

儲存體帳戶

如果您為工作區使用現有的儲存體帳戶,其必須符合下列準則。 這些需求僅適用於預設儲存體帳戶。

  • 帳戶不能是 Premium_LRS 或 Premium_GRS。
  • 必須同時啟用 Azure Blob 和 Azure 檔案功能。
  • 必須為 Azure Data Lake Storage 停用階層命名空間。

保護 Azure CLI 通訊

所有 Azure Machine Learning V2 az ml 命令都會將 YAML 參數和中繼資料等作業資料傳達給 Azure Resource Manager。 某些 Azure CLI 命令會透過網際網路與 Azure Resource Manager 通訊。

如果您的 Azure Machine Learning 工作區是公用的,且不在虛擬網路後方,則系統會使用 HTTPS/TLS 1.2 來保護這些通訊。 不需要額外的設定。

如果您的 Azure Machine Learning 工作區使用私人端點和虛擬網路,則必須選擇下列其中一個設定來使用 Azure CLI:

  • 若要透過公用網際網路來進行通訊,請將 --public-network-access 參數設定為 Enabled

  • 若為求安全而要避免透過公用網際網路來進行通訊,請將 Azure Machine Learning 設定為使用私人網路來與 Azure Private Link 端點連線,如下一節所述。

私人網路連線能力

視您的使用案例和組織需求而定,您可以將 Azure Machine Learning 設定為使用私人網路連線。 您可以使用 Azure CLI 來部署工作區資源的工作區和 Private Link 端點。

如果您同時為 Azure Container Registry 和 Azure Machine Learning 使用私人連結端點,則無法使用 Container Registry 工作來建置 Docker 環境映像。 相反地,您必須使用 Azure Machine Learning 計算叢集來建置映像。

在 YAML 工作區設定檔中,您必須將 image_build_compute 屬性設定為計算叢集名稱,以用於 Docker 映像環境的建置。 您也可以將 public_network_access 屬性設定為 Disabled,以指定無法透過網際網路來存取的私人連結工作區。

下列程式碼顯示私人網路連線的範例工作區設定檔。

$schema: https://azuremlschemas.azureedge.net/latest/workspace.schema.json
name: mlw-privatelink-prod
location: eastus
display_name: Private Link endpoint workspace-example
description: When using private link, you must set the image_build_compute property to a cluster name to use for Docker image environment building. You can also specify whether the workspace should be accessible over the internet.
image_build_compute: cpu-compute
public_network_access: Disabled
tags:
  purpose: demonstration

建立工作區之後,請使用 Azure 網路 CLI 命令 (部分機器翻譯) 來為工作區建立私人連結端點。

az network private-endpoint create \
    --name <private-endpoint-name> \
    --vnet-name <virtual-network-name> \
    --subnet <subnet-name> \
    --private-connection-resource-id "/subscriptions/<subscription>/resourceGroups/<resource-group-name>/providers/Microsoft.MachineLearningServices/workspaces/<workspace-name>" \
    --group-id amlworkspace \
    --connection-name workspace -l <location>

若要建立工作區的私人網域名稱服務 (DNS) 區域項目,請使用下列命令:

# Add privatelink.api.azureml.ms
az network private-dns zone create \
    -g <resource-group-name> \
    --name 'privatelink.api.azureml.ms'

az network private-dns link vnet create \
    -g <resource-group-name> \
    --zone-name 'privatelink.api.azureml.ms' \
    --name <link-name> \
    --virtual-network <virtual-network-name> \
    --registration-enabled false

az network private-endpoint dns-zone-group create \
    -g <resource-group-name> \
    --endpoint-name <private-endpoint-name> \
    --name <zone-group-name> \
    --private-dns-zone 'privatelink.api.azureml.ms' \
    --zone-name 'privatelink.api.azureml.ms'

# Add privatelink.notebooks.azure.net
az network private-dns zone create \
    -g <resource-group-name> \
    --name 'privatelink.notebooks.azure.net'

az network private-dns link vnet create \
    -g <resource-group-name> \
    --zone-name 'privatelink.notebooks.azure.net' \
    --name <link-name> \
    --virtual-network <virtual-network-name> \
    --registration-enabled false

az network private-endpoint dns-zone-group add \
    -g <resource-group-name> \
    --endpoint-name <private-endpoint-name> \
    --name <zone-group-name> \
    --private-dns-zone 'privatelink.notebooks.azure.net' \
    --zone-name 'privatelink.notebooks.azure.net'

如需將私人端點和虛擬網路與工作區搭配使用的詳細資訊,請參閱下列文章:

您可以使用下列程序來保護與 Azure 管理群組中所有 Azure Resource Manager 資源的通訊,方法是使用 Private Link:

  1. 建立用於管理 Azure 資源的私人連結 (部分機器翻譯)。
  2. 為在上一個步驟中建立的私人連結建立私人端點 (部分機器翻譯)。

重要

若要為 Azure Resource Manager 設定私人連結,您必須是 Azure 訂用帳戶的「擁有者」,並且是根管理群組的「擁有者」或「參與者」。 如需詳細資訊,請參閱建立用於管理 Azure 資源的 Private Link

進階組態

有數個可以套用至工作區的其他進階設定。 針對複雜的資源設定,也請參閱以範本為基礎的部署選項,包括 Azure Resource Manager

客戶管理的金鑰

根據預設,工作區中繼資料會儲存在 Microsoft 維護的 Azure Cosmos DB 執行個體中,並使用 Microsoft 管理的金鑰進行加密。 您也可以提供自己的金鑰,而不使用 Microsoft 管理的金鑰。 使用自己的金鑰會在您的 Azure 訂用帳戶中,建立一組額外的資源來儲存資料。

注意

Azure Cosmos DB 不會用來儲存模型效能資訊、實驗所記錄的資訊,或透過模型部署所記錄的資訊。

若要建立使用自有金鑰的工作區,請在 YAML 工作區設定檔中使用 customer_managed_key 參數,並在保存庫中指定包含金鑰之 key_vaultkey_uri 的資源識別碼。

$schema: https://azuremlschemas.azureedge.net/latest/workspace.schema.json
name: mlw-cmkexample-prod
location: eastus
display_name: Customer managed key encryption-example
description: This configurations shows how to create a workspace that uses customer-managed keys for encryption.
customer_managed_key: 
  key_vault: /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.KeyVault/vaults/<KEY_VAULT>
  key_uri: https://<KEY_VAULT>.vault.azure.net/keys/<KEY_NAME>/<KEY_VERSION>
tags:
  purpose: demonstration

若要深入了解當您使用自己的金鑰來加密時所建立的資源,請參閱 Azure Machine Learning 的資料加密 (部分機器翻譯)。

注意

若要管理新增的資料加密資源,請使用身分識別和存取權管理,透過訂用帳戶的「參與者」權限,對 Machine Learning 應用程式進行授權。

高業務影響工作區

若要在您的工作區上限制 Microsoft 收集的資料 (部分機器翻譯),您可以將 YAML 設定檔中的 hbi_workspace 屬性設定為 TRUE,以指定高業務影響工作區。 只有在建立工作區時,才能設定高業務影響。 建立工作區之後,您就無法變更此設定。

如需有關客戶自控金鑰和高業務影響工作區的詳細資訊,請參閱 Azure Machine Learning 的企業安全性

使用 Azure CLI 來管理工作區

您可以使用 az ml workspace (部分機器翻譯) 命令來管理工作區。

取得工作區資訊

若要取得工作區的資訊,請使用下列命令:

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

如需詳細資訊,請參閱 az ml workspace show (部分機器翻譯)。

更新工作區

若要更新工作區,請使用下列命令:

az ml workspace update -n <workspace-name> -g <resource-group-name>

例如,下列命令會更新工作區,以啟用公用網路存取:

az ml workspace update -n <workspace-name> -g <resource-group-name> --public-network-access enabled

如需詳細資訊,請參閱 az ml workspace update

同步相依資源的金鑰

如果您為工作區所使用的其中一項資源變更存取金鑰,工作區大約需要一小時才能同步為新的金鑰。 若要強制工作區立即同步處理新的金鑰,請使用下列命令:

az ml workspace sync-keys -n <workspace-name> -g <resource-group-name>

移動工作區

移動 Azure Machine Learning 工作區目前為預覽功能。 如需詳細資訊,請參閱在訂用帳戶之間移動 Azure Machine Learning 工作區 (預覽)

刪除工作區

若要刪除不再需要的工作區,請使用下列命令:

az ml workspace delete -n <workspace-name> -g <resource-group-name>

Azure Machine Learning 的預設行為是「虛刪除」工作區。 工作區不會立即刪除,而是標示為要刪除。 如需詳細資訊,請參閱虛刪除

警告

如果工作區已啟用虛刪除,可在刪除後加以復原。 如果未啟用虛刪除,或您選取永久刪除工作區的選項,則無法加以復原。 如需詳細資訊,請參閱復原已刪除的工作區

刪除工作區不會刪除工作區所使用的 Application Insights、儲存體帳戶、金鑰保存庫或容器登錄。 若要刪除工作區、相依資源,以及資源群組中的所有其他 Azure 資源,您可以刪除資源群組。 若要刪除資源群組,請使用下列命令:

az group delete -g <resource-group-name>

如需詳細資訊,請參閱 az ml workspace delete (部分機器翻譯)。

針對資源提供者錯誤進行疑難排解

建立 Azure Machine Learning 工作區或工作區所使用的資源時,您可能會收到類似下列訊息的錯誤:

  • No registered resource provider found for location {location}
  • The subscription is not registered to use namespace {resource-provider-namespace}

大部分資源提供者都會自動註冊,但並非全部。 如果您收到此訊息,則需要註冊先前提及的提供者。

下表包含 Azure Machine Learning 所需的資源提供者清單:

資源提供者 需要的原因
Microsoft.MachineLearningServices 建立 Azure Machine Learning 工作區。
Microsoft.Storage Azure 儲存體帳戶用來做為工作區的預設儲存體。
Microsoft.ContainerRegistry 工作區會使用 Azure Container Registry 來建置 Docker 映像。
Microsoft.KeyVault 工作區會使用 Azure Key Vault 來儲存秘密。
Microsoft.Notebooks Azure Machine Learning 計算執行個體上的整合式筆記本。
Microsoft.ContainerService 若您打算將已定型的模型部署至 Azure Kubernetes Service。

若您打算搭配 Azure Machine Learning 使用客戶自控金鑰,則必須註冊下列服務提供者:

資源提供者 需要的原因
Microsoft.DocumentDB 記錄工作區中繼資料的 Azure CosmosDB 執行個體。
Microsoft.Search Azure 搜尋可為工作區提供索引編製功能。

如果您打算搭配 Azure Machine Learning 使用受控虛擬網路,則必須註冊 Microsoft.Network 資源提供者。 建立受控虛擬網路的私人端點時,工作區會使用此資源提供者。

如需有關註冊資源提供者的詳細資訊,請參閱解決資源提供者註冊的錯誤

  • 如需 Azure CLI 機器學習延伸模組的詳細資訊,請參閱 az ml (部分機器翻譯) 文件。
  • 如需可識別及協助解決工作區問題之診斷的相關資訊,請參閱如何使用工作區診斷 (部分機器翻譯)。
  • 若要了解如何使用最新的安全性更新使 Azure Machine Learning 保持最新狀態的相關資訊,請參閱弱點管理