Поделиться через


Создание концентратора с помощью пакета SDK Azure Machine Learning и CLI (классической версии)

Применяется только к:Портал Foundry (классический). Эта статья недоступна для нового портала Foundry. Дополнительные сведения о новом портале.

Замечание

Некоторые ссылки в этой статье могут открывать содержимое в новой документации Microsoft Foundry, а не в классической версии Foundry, которую вы просматриваете сейчас.

В этой статье вы узнаете, как создать следующие ресурсы Microsoft Foundry с помощью пакета SDK Azure Machine Learning и Azure CLI (с расширением machine learning):

  • Центр литейки
  • Подключение к системе Foundry

Замечание

Концентратор используется только для проекта на основе концентратора. Foundry project не использует хаб. Дополнительные сведения см. в разделе "Типы проектов".

Предпосылки

  • Учетная запись Azure с активной подпиской. Если у вас нет, создайте учетную запись free Azure, которая включает бесплатную пробную подписку.
  • роли RBAC: необходимо иметь роль Contributor или Owner в подписке или группе ресурсов Azure для создания концентратора. Если вы создаете соединение с существующими ресурсами, убедитесь, что у вас есть доступ Contributor к этим ресурсам.
  • For Python SDK: Azure Machine Learning Python SDK (версии 2.0 или более поздней), Azure Identity Python SDK и Python 3.8 или новее.
  • For Azure CLI: Azure CLI и расширение Azure Machine Learning.
  • При подключении к существующим ресурсам: учетная запись Azure Storage или Azure Key Vault должна уже существовать в той же подписке (той же группе ресурсов или в другой группе ресурсов, к которой у вас есть доступ).

Настройка среды

Используйте следующие вкладки, чтобы выбрать, используете ли вы пакет SDK для Python или Azure CLI:

  1. Установка пакетов. (Если в ячейке записной книжки, используйте %pip install вместо этого.)

    pip install azure-ai-ml
    pip install azure-identity
    
  2. Укажите сведения о подписке:

    # Enter details of your subscription
    subscription_id = "<SUBSCRIPTION_ID>"
    resource_group = "<RESOURCE_GROUP>"
  3. Получите идентификатор подписки. Весь код 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)
  4. (Необязательно) Если у вас несколько учетных записей, добавьте идентификатор клиента Microsoft Entra ID, который вы хотите использовать в DefaultAzureCredential. Найдите идентификатор клиента из Azure portal в разделе Microsoft Entra ID, внешние удостоверения.

    DefaultAzureCredential(interactive_browser_tenant_id="<TENANT_ID>")
    
  5. (Необязательно) Если вы работаете в Azure Government - US или Azure China 21Vianet, укажите регион, в который требуется пройти проверку подлинности. Можно указать регион с помощью DefaultAzureCredential. В следующем примере выполняется проверка подлинности в облачном регионе Azure Government для США.

    from azure.identity import AzureAuthorityHosts
    DefaultAzureCredential(authority=AzureAuthorityHosts.AZURE_GOVERNMENT)
    
  6. Проверьте подключение.

    for hub in ml_client.workspaces.list():
        print(f"  - {hub.name}")
    

Если вы получили ошибку проверки подлинности, убедитесь, что учетные данные Azure настроены (выполните az login или настройте учетные данные с помощью пакета SDK для удостоверений Azure). Если вы получили ошибку разрешения, убедитесь в наличии у вас роли 'Участник' в подписке или группе ресурсов.

Ссылки: MLClient, DefaultAzureCredential

Создание концентратора Foundry и подключения Microsoft Foundry

Используйте следующие примеры для создания нового концентратора. Замените примеры строковых значений собственными значениями:

from azure.ai.ml.entities import Hub

my_hub_name = "myexamplehub"
my_location = "East US"
my_display_name = "My Example Hub"

# Construct a basic hub
my_hub = Hub(
    name=my_hub_name,
    location=my_location,
    display_name=my_display_name
)

# Create the hub and wait for completion
created_hub = ml_client.workspaces.begin_create(my_hub).result()
print(f"Created hub: {created_hub.name}")

Этот код создает новый концентратор с указанным именем, расположением и отображаемым именем. Azure автоматически подготавливает ресурсы, связанные с Azure Storage и Azure Key Vault.

Ссылки: HubMLClient.workspaces.begin_create

Создание подключения Foundry

После создания собственного ресурса Foundry или ресурса Azure OpenAI в той же группе ресурсов, вы можете подключить его к вашему хабу. Вы также можете подключить Azure AI Search из любой группы ресурсов в одной подписке.

  1. Включите ваш концентратор в подключение ml_client.

    • Введите сведения о подписке. Введите <AML_WORKSPACE_NAME>имя концентратора:

      # Enter details of your AML workspace
      subscription_id = "<SUBSCRIPTION_ID>"
      resource_group = "<RESOURCE_GROUP>"
      workspace = "<AML_WORKSPACE_NAME>"
    • Получите дескриптор к концентратору:

      # get a handle to the workspace
      from azure.ai.ml import MLClient
      from azure.identity import DefaultAzureCredential
      
      ml_client = MLClient(
          DefaultAzureCredential(), subscription_id, resource_group, workspace
      )
  2. Используйте ml_client для подключения к инструментам Foundry. Конечные точки можно найти в Azure portal в разделе Управление ресурсами> Ключи и конечные точки. Для ресурса Foundry используйте endpoint ИИ-сервисов. Для Azure AI Search используйте URL-адрес конечной точки.

    from azure.ai.ml.entities import AzureAIServicesConnection
    
    # Construct a connection to Azure AI Services
    my_connection_name = "my-ai-services-connection"  # Any name you want
    aiservices_resource_name = "<your-resource-name>"  # From Azure portal
    my_endpoint = "<your-endpoint>"  # From Azure portal
    my_api_keys = None  # Leave blank to use Azure Entra ID (AAD) authentication
    my_ai_services_resource_id = f"/subscriptions/{subscription_id}/resourceGroups/{resource_group}/providers/Microsoft.CognitiveServices/accounts/{aiservices_resource_name}"
    
    my_connection = AzureAIServicesConnection(
        name=my_connection_name,
        endpoint=my_endpoint,
        api_key=my_api_keys,
        ai_services_resource_id=my_ai_services_resource_id
    )
    
    # Create the connection
    ml_client.connections.create_or_update(my_connection)
    print(f"Created connection: {my_connection.name}")
    

    Ссылки: AzureAIServicesConnection, MLClient.connections

Создание узла с существующими зависимыми ресурсами

По умолчанию концентратор автоматически создает связанные Azure Storage и Azure Key Vault ресурсы. Если вы хотите повторно использовать существующие Azure Storage или Azure Key Vault ресурсы, их можно указать во время создания концентратора. В следующих примерах замените значения заполнителей собственными идентификаторами ресурсов:

Подсказка

Вы можете получить идентификатор ресурса учетной записи хранения и ключевого хранилища в Azure портале, перейдя на вкладку Обзор ресурса и выбрав представление JSON. Идентификатор ресурса находится в поле id. Вы также можете использовать Azure CLI для получения идентификатора ресурса. Например, используйте az storage account show --name {my_storage_account_name} --query "id" и az keyvault show --name {my_key_vault_name} --query "id".

from azure.ai.ml.entities import Hub

my_hub_name = "myexamplehub"
my_location = "East US"
my_display_name = "My Example Hub"
my_resource_group = "myresourcegroupname"
my_storage_account_id = "/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.Storage/storageAccounts/<storage-account-name>"
my_key_vault_id = "/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.KeyVault/vaults/<key-vault-name>"

# Construct a hub with existing dependency resources
my_hub = Hub(
    name=my_hub_name,
    location=my_location,
    display_name=my_display_name,
    resource_group=my_resource_group,
    storage_account_id=my_storage_account_id,
    key_vault_id=my_key_vault_id
)

# Create the hub
created_hub = ml_client.workspaces.begin_create(my_hub).result()
print(f"Created hub with existing resources: {created_hub.name}")

Чтобы найти идентификаторы ресурсов для существующих ресурсов, перейдите на страницу Azure portal, перейдите на страницу Overview и выберите представление JSON. Идентификатор ресурса отображается в поле id. Кроме того, используйте Azure CLI:

# Get Storage account resource ID
az storage account show --name <storage-account-name> --resource-group <resource-group> --query "id"

# Get Key Vault resource ID
az keyvault show --name <key-vault-name> --resource-group <resource-group> --query "id"

Ссылки: Hub

Обновление Azure Application Insights и Azure Container Registry

Чтобы использовать пользовательские среды для Prompt Flow, необходимо настроить Azure Container Registry для вашего центра. Чтобы использовать Azure Application Insights для развертываний Prompt Flow, необходимо настроить ресурс Azure Application Insights для узла. Обновление подключенных к рабочей области ресурсов Azure Container Registry или Application Insights может привести к нарушению целостности данных предыдущих заданий, развернутых конечных точек построения выводов или возможности повторного выполнения предыдущих заданий в рабочей области. После сопоставления с центром Foundry ресурсы Azure Container Registry и Application Insights не могут быть отсоединены (задано значение NULL).

Вы можете использовать портал Azure, параметры Azure SDK/CLI или шаблоны инфраструктуры как код, чтобы обновить и Azure Application Insights, и Azure Container Registry для узла.

from azure.ai.ml.entities import Hub

my_app_insights = "{APPLICATION_INSIGHTS_ARM_ID}"
my_container_registry = "{CONTAINER_REGISTRY_ARM_ID}"

# construct a hub with Application Insights and Container Registry
my_hub = Hub(name="myexamplehub", 
             location="East US", 
             application_insights=my_app_insights,
             container_registry=my_container_registry)

# update_dependent_resources is used to give consent to update the workspace dependent resources.
updated_hub = ml_client.workspaces.begin_update(workspace=my_hub, update_dependent_resources=True).result()
print(f"Hub updated: {updated_hub.name}")

Этот скрипт обновляет существующий концентратор с указанными ресурсами Application Insights и реестра контейнеров. Параметр update_dependent_resources=True подтверждает обновление.

Справочник: Hub, MLClient.workspaces.begin_update()