在入口網站中或使用 Python SDK (v2) 來管理 Azure Machine Learning 工作區

適用於Python SDK azure-ai-ml v2 (現行)

在本文中,您將使用 Azure 入口網站適用於 Python 的 SDK,為 Azure Machine Learning 建立、檢視和刪除 Azure Machine Learning 工作區

隨著自動化的需求變更或需求增加,您也可以使用 CLIAzure PowerShell透過 VS Code 擴充功能來管理工作區。

必要條件

  • Azure 訂用帳戶。 如果您沒有 Azure 訂用帳戶,請在開始前先建立免費帳戶。 立即試用免費或付費版本的 Azure Machine Learning
  • 若使用 Python SDK:
    1. 安裝 SDK v2

    2. 提供您的訂用帳戶詳細資料

      # Enter details of your subscription
      subscription_id = "<SUBSCRIPTION_ID>"
      resource_group = "<RESOURCE_GROUP>"
    3. 取得訂用帳戶的控制代碼。 ml_client 將會用於本文中的所有 Python 程式碼。

      # get a handle to the subscription
      
      from azure.ai.ml import MLClient
      from azure.identity import DefaultAzureCredential
      
      ml_client = MLClient(DefaultAzureCredential(), subscription_id, resource_group)
      • (選擇性) 若您有多個帳戶,請將您想要使用的 Azure Active Directory 租用戶識別碼新增至 DefaultAzureCredential。 在 Azure 入口網站的 [Active Directory,外部身分識別] 下,尋找您的租用戶識別碼。

        DefaultAzureCredential(interactive_browser_tenant_id="<TENANT_ID>")
        
      • (選擇性) 如果您正在處理主權雲端**,請指定要向 DefaultAzureCredential 進行驗證的主權雲端。

        from azure.identity import AzureAuthorityHosts
        DefaultAzureCredential(authority=AzureAuthorityHosts.AZURE_GOVERNMENT))
        

限制

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

    Azure Machine Learning 的資源提供者為 Microsoft.MachineLearningServices。 如需如何檢查是否已註冊及如何註冊的相關資訊,請參閱《Azure 資源提供者和類型》一文。

    重要

    這僅適用於建立工作區期間所提供的資源;Azure 儲存體帳戶、Azure Container Register、Azure Key Vault 和 Application Insights。

  • 根據預設,建立工作區時也會建立 Azure Container Registry (ACR)。 由於 ACR 目前不支援資源群組名稱中的 Unicode 字元,請使用不包含這些字元的資源群組。

  • Azure Machine Learning 不支援工作區預設儲存體帳戶使用階層命名空間 (Azure Data Lake Storage Gen2 功能)。

提示

當您建立工作區時,會建立 Azure Application Insights 執行個體。 建立叢集後,您可以視需要刪除 Application Insights 執行個體。 刪除叢集會限制從工作區收集的資訊,且可能會使問題的疑難排解變得較為困難。 若您刪除工作區所建立的 Application Insights 執行個體,即無法在不刪除和重新建立工作區的情況下重新建立該執行個體。

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

建立工作區

您可以直接在 Azure Machine Learning 工作室中建立工作區,來取得有限的可用選項。 或者,使用下列其中一種方法來取得更多選項控制。

適用於Python SDK azure-ai-ml v2 (現行)

  • 預設規格。 依預設會自動建立相依資源和資源群組。 此程式碼會在 eastus2 中建立名為 myworkspace 的工作區,以及名為 myresourcegroup 的資源群組。

    # Creating a unique workspace name with current datetime to avoid conflicts
    from azure.ai.ml.entities import Workspace
    import datetime
    
    basic_workspace_name = "mlw-basic-prod-" + datetime.datetime.now().strftime(
        "%Y%m%d%H%M"
    )
    
    ws_basic = Workspace(
        name=basic_workspace_name,
        location="eastus",
        display_name="Basic workspace-example",
        description="This example shows how to create a basic workspace",
        hbi_workspace=False,
        tags=dict(purpose="demo"),
    )
    
    ws_basic = ml_client.workspaces.begin_create(ws_basic).result()
    print(ws_basic)
  • 使用現有的 Azure 資源。 您也可以使用 Azure 資源識別碼格式,來建立使用現有 Azure 資源的工作區。 在 Azure 入口網站中或使用 SDK,尋找特定的 Azure 資源識別碼。 此範例假設資源群組、儲存體帳戶、金鑰保存庫、App Insights 以及容器登錄都已存在。

    # Creating a unique workspace name with current datetime to avoid conflicts
    import datetime
    from azure.ai.ml.entities import Workspace
    
    basic_ex_workspace_name = "mlw-basicex-prod-" + datetime.datetime.now().strftime(
        "%Y%m%d%H%M"
    )
    
    # Change the following variables to resource ids of your existing storage account, key vault, application insights
    # and container registry. Here we reuse the ones we just created for the basic workspace
    existing_storage_account = (
        # e.g. "/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.Storage/storageAccounts/<STORAGE_ACCOUNT>"
        ws_basic.storage_account
    )
    existing_container_registry = (
        # e.g. "/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.ContainerRegistry/registries/<CONTAINER_REGISTRY>"
        ws_basic.container_registry
    )
    existing_key_vault = (
        # e.g. "/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.KeyVault/vaults/<KEY_VAULT>"
        ws_basic.key_vault
    )
    existing_application_insights = (
        # e.g. "/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.insights/components/<APP_INSIGHTS>"
        ws_basic.application_insights
    )
    
    ws_with_existing_resources = Workspace(
        name=basic_ex_workspace_name,
        location="eastus",
        display_name="Bring your own dependent resources-example",
        description="This sample specifies a workspace configuration with existing dependent resources",
        storage_account=existing_storage_account,
        container_registry=existing_container_registry,
        key_vault=existing_key_vault,
        application_insights=existing_application_insights,
        tags=dict(purpose="demonstration"),
    )
    
    ws_with_existing_resources = ml_client.begin_create_or_update(
        ws_with_existing_resources
    ).result()
    
    print(ws_with_existing_resources)

如需詳細資訊,請參閱工作區 SDK 參考

如果您在存取訂用帳戶時遇到問題,請參閱 設定 Azure Machine Learning 資源和工作流程的驗證,以及 Azure Machine Learning 筆記本中的驗證

網路

重要

如需將私人端點和虛擬網路與工作區搭配使用的詳細資訊,請參閱網路隔離和隱私權

適用於Python SDK azure-ai-ml v2 (現行)

# Creating a unique workspace name with current datetime to avoid conflicts
import datetime
from azure.ai.ml.entities import Workspace

basic_private_link_workspace_name = (
    "mlw-privatelink-prod-" + datetime.datetime.now().strftime("%Y%m%d%H%M")
)

ws_private = Workspace(
    name=basic_private_link_workspace_name,
    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=dict(purpose="demonstration"),
)

ml_client.workspaces.begin_create(ws_private).result()

此類別需要現有的虛擬網路。

進階

根據預設,工作區的中繼資料會儲存在 Microsoft 所維護的 Azure Cosmos DB 執行個體中。 此資料會使用 Microsoft 受控金鑰進行加密。

如要限制 Microsoft 在工作區上收集的資料,請在入口網站中選取 [高業務影響工作區],或在 Python 中設定 hbi_workspace=true 。 如需此設定的詳細資訊,請參閱靜態加密

重要

只有在建立工作區時,才能選取 [高業務影響]。 建立工作區之後,就無法變更此設定。

使用您自己的資料加密金鑰

您可以提供自己的金鑰進行資料加密。 這麼做會建立 Azure Cosmos DB 執行個體,以將中繼資料儲存在您的 Azure 訂閱中。 如需詳細資訊,請參閱客戶自控金鑰

使用下列步驟來提供您自己的金鑰:

重要

在遵循這些步驟之前,您必須先執行下列動作:

遵循設定客戶自控金鑰中的步驟,執行以下動作:

  • 註冊 Azure Cosmos DB 提供者
  • 建立與設定 Azure Key Vault
  • 產生金鑰

適用於Python SDK azure-ai-ml v2 (現行)


from azure.ai.ml.entities import Workspace, CustomerManagedKey

# specify the workspace details
ws = Workspace(
    name="my_workspace",
    location="eastus",
    display_name="My workspace",
    description="This example shows how to create a workspace",
    customer_managed_key=CustomerManagedKey(
        key_vault="/subscriptions/<SUBSCRIPTION_ID>/resourcegroups/<RESOURCE_GROUP>/providers/microsoft.keyvault/vaults/<VAULT_NAME>"
        key_uri="<KEY-IDENTIFIER>"
    )
    tags=dict(purpose="demo")
)

ml_client.workspaces.begin_create(ws)

下載設定檔

如果您要在計算執行個體上執行程式碼,請略過此步驟。 計算執行個體會為您建立及儲存此檔案的複本。

若您打算在本機環境上使用參考此工作區的程式碼,請下載檔案:

  1. Azure Studio 中選取您的工作區

  2. 在右上方選取工作區名稱,然後選取 [下載 config.json]

    下載 config.json

使用 Python 指令碼或 Jupyter Notebook,將檔案置於目錄結構中。 可以位於相同的目錄,名為 aml_config 的子目錄,或位於父目錄。 當您建立計算執行個體時,系統會為您將此檔案新增至 VM 上的正確目錄。

連線到工作區

當您使用 SDK 執行機器學習工作時,需要指定工作區連線的 MLClient 物件。 您可以從參數或使用組態檔來建立 MLClient 物件。

適用於Python SDK azure-ai-ml v2 (現行)

  • 使用組態檔:此程式碼會讀取組態檔的內容,以尋找您的工作區。 若您尚未經過驗證,將會收到登入的提示。

    from azure.ai.ml import MLClient
    
    # read the config from the current directory
    ws_from_config = MLClient.from_config()
    
  • 從參數:如果您使用此方法,就不需要有可用的 config.json 檔案。

    from azure.ai.ml import MLClient
    from azure.ai.ml.entities import Workspace
    from azure.identity import DefaultAzureCredential
    
    ws = MLClient(
        DefaultAzureCredential(),
        subscription_id="<SUBSCRIPTION_ID>",
        resource_group_name="<RESOURCE_GROUP>",
        workspace_name="<AML_WORKSPACE_NAME>",
    )
    print(ws)

如果您在存取訂用帳戶時遇到問題,請參閱 設定 Azure Machine Learning 資源和工作流程的驗證,以及 Azure Machine Learning 筆記本中的驗證

尋找工作區

查看您可以使用的所有工作區清單。
您也可以在 Studio 內搜尋工作區。 請參閱搜尋 Azure Machine Learning 資產 (預覽)

適用於Python SDK azure-ai-ml v2 (現行)

from azure.ai.ml import MLClient
from azure.ai.ml.entities import Workspace
from azure.identity import DefaultAzureCredential

# Enter details of your subscription
subscription_id = "<SUBSCRIPTION_ID>"
resource_group = "<RESOURCE_GROUP>"

my_ml_client = MLClient(DefaultAzureCredential(), subscription_id, resource_group)
for ws in my_ml_client.workspaces.list():
    print(ws.name, ":", ws.location, ":", ws.description)

若要取得特定工作區的詳細資料:

ws = my_ml_client.workspaces.get("<AML_WORKSPACE_NAME>")
# uncomment this line after providing a workspace name above
# print(ws.location,":", ws.resource_group)

刪除工作區

當您不再需要工作區時,請將其刪除。

警告

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

若您不小心刪除工作區,您仍然可以取出筆記本。 如需詳細資訊,請參閱商務持續性和災害復原的容錯移轉

適用於Python SDK azure-ai-ml v2 (現行)

ml_client.workspaces.begin_delete(name=ws_basic.name, delete_dependent_resources=True)

預設動作不會刪除與工作區相關聯的資源,也就是容器登錄、儲存體帳戶、金鑰保存庫和 Application Insights。 將 delete_dependent_resources 設為 True 以一併刪除這些資源。

清除資源

重要

您所建立的資源可用來作為其他 Azure Machine Learning 教學課程和操作說明文章的先決條件。

如果不打算使用您建立的任何資源,請刪除以免產生任何費用:

  1. 在 Azure 入口網站中,選取最左邊的 [資源群組] 。

  2. 從清單中,選取您所建立的資源群組。

  3. 選取 [刪除資源群組]。

    在 Azure 入口網站中刪除資源群組選項的螢幕擷取畫面。

  4. 輸入資源群組名稱。 然後選取 [刪除]。

疑難排解

  • Azure Machine Learning 工作室中支援的瀏覽器:建議您使用與作業系統相容的最新瀏覽器。 支援下列瀏覽器:

    • Microsoft Edge (新的 Microsoft Edge 最新版本,非 Microsoft Edge 舊版)
    • Safari (最新版本,僅限 Mac)
    • Chrome (最新版本)
    • Firefox (最新版本)
  • Azure 入口網站

工作區診斷

您可以從 Azure Machine Learning 工作室或 Python SDK 診斷工作區。 診斷執行完成後,就會傳回所有偵測到的問題清單。 這份清單包含可能的解決方案連結。 如需詳細資訊,請參閱如何使用工作區診斷

資源提供者錯誤

建立 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/NotebookProxies Azure Machine Learning 計算執行個體上的整合式筆記本。
Microsoft.ContainerService 若您打算將已定型的模型部署至 Azure Kubernetes Service。

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

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

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

刪除 Azure Container Registry

Azure Machine Learning 工作區會使用 Azure Container Registry (ACR) 進行某些作業。 它會在第一次需要 ACR 執行個體時自動建立一個。

警告

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

範例

本文中的範例來自 workspace.ipynb

後續步驟

擁有工作區之後,請瞭解如何定型和部署模型

如要深入瞭解如何針對組織的需求規劃工作區,請參閱組織和設定 Azure Machine Learning

如需瞭解使用最新的安全性更新以讓您的 Azure ML 保持在最新狀態的相關資訊,請參閱 弱點管理