Compartilhar via


Criar um hub usando o SDK e a CLI do Azure Machine Learning

Observação

Este documento refere-se ao portal do Microsoft Foundry (clássico ).

🔍 Exiba a documentação do Microsoft Foundry (novo) para saber mais sobre o novo portal.

Neste artigo, você aprenderá a criar os seguintes recursos do Microsoft Foundry usando o SDK do Azure Machine Learning e a CLI do Azure (com extensão de machine learning):

  • Um hub do Foundry
  • Uma conexão de fábrica

Observação

Um hub é usado apenas para um projeto baseado em hub. Um projeto do Foundry não usa um hub. Para obter mais informações, confira Tipos de projetos.

Pré-requisitos

Configure seu ambiente

Use as seguintes guias para selecionar se você está usando o SDK do Python ou a CLI do Azure:

  1. Instalar pacotes. (Se estiver em uma célula de notebook, use %pip install em vez disso.)

    pip install azure-ai-ml
    pip install azure-identity
    
  2. Forneça os detalhes da sua assinatura:

    # Enter details of your subscription
    subscription_id = "<SUBSCRIPTION_ID>"
    resource_group = "<RESOURCE_GROUP>"
  3. Controle a assinatura. Todo o código Python nesse artigo usa 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. (Opcional) Se você tiver várias contas, adicione o ID do locatário do ID do Microsoft Entra que deseja usar no DefaultAzureCredential. Localize sua ID de locatário do portal do Azure no Microsoft Entra ID, Identidades Externas.

    DefaultAzureCredential(interactive_browser_tenant_id="<TENANT_ID>")
    
  5. (Opcional) Se você estiver trabalhando nas regiões Azure Governamental – EUA ou Azure China 21Vianet, especifique a região na qual você quer se autenticar. Você pode especificar a região com DefaultAzureCredential. O seguinte exemplo faz a autenticação na região Azure Governamental – EUA:

    from azure.identity import AzureAuthorityHosts
    DefaultAzureCredential(authority=AzureAuthorityHosts.AZURE_GOVERNMENT)
    
  6. Verifique a conexão.

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

Se você receber um erro de autenticação, verifique se suas credenciais do Azure estão configuradas (execute az login ou configure suas credenciais por meio do SDK de Identidade do Azure). Se você receber um erro de permissão, verifique se você tem a função Colaborador na assinatura ou no grupo de recursos.

Referências: MLClient, DefaultAzureCredential

Criar o Hub Foundry e a conexão com o Microsoft Foundry

Use os exemplos a seguir para criar um novo hub. Substitua os valores de cadeia de caracteres de exemplo por seus próprios valores:

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}")

Esse código cria um novo hub com o nome, o local e o nome de exibição especificados. O Azure provisiona automaticamente os recursos associados do Armazenamento do Azure e do Azure Key Vault.

Referências: Hub, MLClient.workspaces.begin_create

Criar uma conexão do Foundry

Depois de criar seu próprio recurso do Foundry ou recurso do Azure OpenAI no mesmo grupo de recursos, você pode conectá-lo ao seu hub. Você também pode conectar a Pesquisa de IA do Azure de qualquer grupo de recursos em sua mesma assinatura.

  1. Inclua seu hub em sua ml_client conexão:

    • Insira os detalhes da assinatura. Para <AML_WORKSPACE_NAME>, insira o nome do hub:

      # Enter details of your AML workspace
      subscription_id = "<SUBSCRIPTION_ID>"
      resource_group = "<RESOURCE_GROUP>"
      workspace = "<AML_WORKSPACE_NAME>"
    • Obtenha um identificador para o hub:

      # 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. Use ml_client para estabelecer a conexão com suas Ferramentas Foundry. Você pode encontrar pontos de extremidade no portal do Azure em Gerenciamento de recursos> Chaves e pontos de extremidade. Para um recurso da Fábrica, use o ponto de extremidade Serviços de IA. Na Pesquisa de IA do Azure, use a URL do ponto de extremidade específico.

    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}")
    

    Referências: AzureAIServicesConnection, MLClient.connections

Criar um hub com recursos de dependência existentes

Por padrão, um hub cria automaticamente recursos associados do Armazenamento do Azure e do Azure Key Vault. Se você quiser reutilizar os recursos existentes do Armazenamento do Azure ou do Azure Key Vault, poderá especificá-los durante a criação do hub. Nos exemplos a seguir, substitua os valores de espaço reservado pelos seus próprios IDs de recursos:

Dica

Você pode recuperar a ID do recurso da conta de armazenamento e do cofre de chaves no portal do Azure acessando a visão geral do recurso e selecionando Exibição JSON. A ID do recurso está localizada no campo id. Você também pode usar a CLI do Azure para recuperar a ID do recurso. Por exemplo, use az storage account show --name {my_storage_account_name} --query "id" e 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}")

Para encontrar IDs de recurso para recursos existentes, visite o portal do Azure, navegue até a página visão geral do recurso e selecione o modo de exibição JSON. A ID do recurso é exibida no campo ID . Como alternativa, use a CLI do Azure:

# 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"

Referências: Hub

Atualizar o Azure Application Insights e o Registro de Contêiner do Azure

Para usar ambientes personalizados para o Fluxo de Prompt, você precisa configurar um Registro de Contêiner do Azure para seu hub. Para usar o Azure Application Insights para implantações do Prompt Flow, você precisa configurar um recurso do Azure Application Insights para o seu hub. A atualização dos recursos do Registro de Contêineres do Azure ou do Application Insights conectados ao workspace pode interromper a linhagem de trabalhos anteriores, os pontos de extremidade de inferência implantados ou sua capacidade de executar novamente trabalhos anteriores no workspace. Após a associação com um hub do Foundry, os recursos do Registro de Contêiner do Azure e do Application Insights não podem ser desassociados (definido como nulo).

Você pode usar o portal do Azure, as opções do SDK/CLI do Azure ou os modelos de infraestrutura como código para atualizar o Azure Application Insights e o Registro de Contêiner do Azure para o hub.

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}")

Esse script atualiza um hub existente com os recursos especificados do Application Insights e do Registro de Contêiner. O update_dependent_resources=True parâmetro confirma a atualização.

Referência: Hub, MLClient.workspaces.begin_update()