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

適用於Python SDK azure-ai-ml v2 (目前)

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

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

必要條件

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

    2. 安裝 azure-identity:pip install azure-identity。 如果在筆記本資料格中, 請使用 %pip install azure-identity

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

      適用於Python SDK azure-ai-ml v2 (目前)

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

      # 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)
      • (選擇性) 如果您有多個帳戶,請將您想要使用的 Microsoft Entra ID 租用戶識別碼新增至 DefaultAzureCredential。 在 Azure 入口網站的 [Microsoft Entra ID,外部身分識別] 下,尋找您的租用戶識別碼。

        DefaultAzureCredential(interactive_browser_tenant_id="<TENANT_ID>")
        
      • (選擇性)如果您正在 Azure Government - USAzure China 21Vianet 區域工作,您必須指定您要驗證的雲端。 您可以在 中 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)、儲存體 帳戶、金鑰保存庫 和 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 (目前)

  • 系統會自動建立基本組態,以開始使用 [沒有規格], 系統會自動建立相關聯的資源和 Azure 資源群組。 此程式代碼會建立名為 myworkspace、相依 Azure 資源的工作區(儲存體 帳戶、金鑰保存庫、Container Registry、Application Insights),以及名為 的資源eastus2群組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 資源識別碼。 此範例假設資源群組、儲存體 帳戶、金鑰保存庫、Application Insights 和 Container Registry 已經存在。

    # 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)
  • (預覽)使用現有的中樞工作區。 您可以重複使用中樞工作區的共享環境,而不是使用自己的安全性設定和相關聯的資源來建立預設工作區 新的「專案」工作區將會從中樞取得安全性設定和共用設定,包括計算和連線。 此範例假設中樞工作區已經存在。

    from azure.ai.ml.entities import Project
    
    my_project_name = "myexampleproject"
    my_location = "East US"
    my_display_name = "My Example Project"
    
    my_hub = Project(name=my_hub_name, 
                     location=my_location,
                     display_name=my_display_name,
                     hub_id=created_hub.id)
    
    created_project_workspace = ml_client.workspaces.begin_create(workspace=my_hub).result()
    

如需詳細資訊,請參閱工作區 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()

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

加密

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

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

您可以提供自己的金鑰進行資料加密。 提供您自己的密鑰會建立 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)

身分識別

在入口網站中,使用 [身分識別] 頁面來設定受控識別、儲存體帳戶存取和資料影響。 如需 Python SDK,請參閱下列各節中的連結。

受控識別

您可以為工作區提供系統指派的身分識別或使用者指派的身分識別。 此身分識別可用來存取訂用帳戶中的資源。 如需詳細資訊,請參閱設定 Azure Machine Learning 與其他服務之間的驗證

儲存體帳戶存取

在連線到預設儲存體帳戶時,選擇 [認證型存取] 或 [身分識別型存取]。 若要進行身分識別型驗證,必須向儲存體帳戶上的工作區受控識別授與儲存體 Blob 資料參與者角色。

資料影響

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

重要

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

標籤

籤標籤為成對的名稱和數值,可讓您透過將相同標籤套用至多個資源與資源群組,進而分類資源並檢視合併的帳單。

輸入名稱/值組來指派工作區的標籤。 如需詳細資訊,請參閱 使用標籤來組織您的 Azure 資源

也請使用標籤來 [強制執行工作區原則](#enforce 原則)。

下載設定檔

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

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

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

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

    [下載config.json] 選項的螢幕快照。

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

強制執行原則

您可以開啟/關閉工作區的這些功能:

  • 工作區中的意見反應機會。 商機包括偶爾的產品內問卷和工作區橫幅中的笑臉意見反應工具。
  • 能夠在 工作區中試用預覽功能

這些功能預設為開啟。 若要關閉它們:

  • 建立工作區時,請從 [標記 ] 區段關閉功能:

    1. 新增 「ADMIN_HIDE_SURVEY:TRUE」來關閉意見反應
    2. 新增 「AZML_DISABLE_PREVIEW_FEATURE」: 「TRUE」 來關閉預覽
  • 針對現有的工作區,請從 [標記 ] 區段關閉功能:

    1. 移至 Azure 入口網站 中的工作區資源
    2. 從左側導覽面板中,開啟 [標籤]
    3. 新增 「ADMIN_HIDE_SURVEY:TRUE」來關閉意見反應
    4. 新增 「AZML_DISABLE_PREVIEW_FEATURE: TRUE」 配對來關閉預覽
    5. 選取套用

此螢幕快照顯示設定標籤以防止工作區中的意見反應。

您可以在訂用帳戶層級關閉預覽,確保訂用帳戶中的所有工作區都關閉預覽。 在此情況下,訂用帳戶中的使用者也無法在選取工作區之前存取預覽工具。 此設定適用於想要確保組織未使用預覽功能的系統管理員。

如果在訂用帳戶層級停用預覽設定,則會忽略在個別工作區上進行設定。

若要停用訂用帳戶層級的預覽功能:

  1. 移至 Azure 入口網站 中的訂用帳戶資源
  2. 從左側導覽面板中,開啟 [標籤]
  3. 藉由新增配對 「AZML_DISABLE_PREVIEW_FEATURE」:「TRUE」 來關閉訂用帳戶中所有工作區的預覽
  4. 選取套用

連線到工作區

當您使用 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(credential=DefaultAzureCredential())
    
  • 從參數:如果您使用此方法,就不需要有可用的 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)

刪除工作區

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

警告

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

提示

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

適用於Python SDK azure-ai-ml v2 (目前)

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

默認動作不會自動刪除與工作區相關聯的資源。 將 delete_dependent_resources 設為 True 以一併刪除這些資源。

  • 容器登錄
  • 儲存體帳戶
  • 金鑰保存庫
  • Application Insights

清除資源

重要

您所建立的資源可用來作為其他 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 Azure Machine Learning 計算執行個體上的整合式筆記本。
Microsoft.ContainerService 若您打算將已定型的模型部署至 Azure Kubernetes Service。

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

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

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

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

刪除 Azure Container Registry

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

警告

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

範例

本文中的範例來自 workspace.ipynb

下一步

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

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

若要了解如何使用最新的安全性更新讓 Azure Machine Learning 保持最新狀態的相關資訊,請瀏覽弱點管理