Partager via


Créer un hub à l’aide du Kit de développement logiciel (SDK) Azure Machine Learning et de l’interface CLI

Remarque

Ce document fait référence au portail Microsoft Foundry (classique).

🔍 Consultez la documentation Microsoft Foundry (nouvelle) pour en savoir plus sur le nouveau portail.

Dans cet article, vous allez apprendre à créer les ressources Microsoft Foundry suivantes à l’aide du Kit de développement logiciel (SDK) Azure Machine Learning et d’Azure CLI (avec l’extension Machine Learning) :

  • Un hub de fonderie
  • Une connexion Foundry

Remarque

Un hub est utilisé uniquement pour un projet basé sur un hub. Un projet Foundry n’utilise pas de hub. Pour plus d'informations, voir Types de projets.

Conditions préalables

  • Un compte Azure avec un abonnement actif. Si vous n’en avez pas, créez un compte Azure gratuit, qui inclut un abonnement d’essai gratuit.
  • Rôles RBAC : vous devez disposer du rôle Contributeur ou Propriétaire sur votre abonnement Ou groupe de ressources Azure pour créer un hub. Si vous créez une connexion à des ressources existantes, vérifiez que vous disposez également d’un accès Contributeur à ces ressources.
  • Pour le SDK Python : Kit de développement logiciel (SDK) Python Azure Machine Learning (v2.0 ou version ultérieure),sdk Python d’identité Azure et Python 3.8 ou version ultérieure.
  • Pour Azure CLI : Extension Azure CLI et Azure Machine Learning.
  • Si vous vous connectez à des ressources existantes : le compte stockage Azure ou Azure Key Vault doit déjà exister dans le même abonnement (même groupe de ressources ou dans un autre groupe de ressources auquel vous avez accès).

Configurer votre environnement

Utilisez les onglets suivants pour déterminer si vous utilisez le Kit de développement logiciel (SDK) Python ou Azure CLI :

  1. Installez les packages. (Si dans une cellule de bloc-notes, utilisez %pip install à la place.)

    pip install azure-ai-ml
    pip install azure-identity
    
  2. Fournissez les informations de votre abonnement :

    # Enter details of your subscription
    subscription_id = "<SUBSCRIPTION_ID>"
    resource_group = "<RESOURCE_GROUP>"
  3. Obtenez un descripteur pour l’abonnement. Tout le code Python de cet article utilise 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. (Facultatif) Si vous avez plusieurs comptes, ajoutez l’ID de locataire de l’instance Microsoft Entra ID que vous souhaitez utiliser dans le DefaultAzureCredential. Recherchez votre ID de locataire dans le portail Azure sous Microsoft Entra ID, External Identities.

    DefaultAzureCredential(interactive_browser_tenant_id="<TENANT_ID>")
    
  5. (Facultatif) Si vous travaillez dans les régions Azure Government – États-Unis ou Azure China 21Vianet, spécifiez la région dans laquelle vous voulez vous authentifier. Vous pouvez spécifier la région avec DefaultAzureCredential. L’exemple suivant s’authentifie auprès de la région Azure Government – États-Unis :

    from azure.identity import AzureAuthorityHosts
    DefaultAzureCredential(authority=AzureAuthorityHosts.AZURE_GOVERNMENT)
    
  6. Vérifiez la connexion.

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

Si vous recevez une erreur d’authentification, vérifiez que vos informations d’identification Azure sont configurées (exécutez ou configurez az login vos informations d’identification via le Kit de développement logiciel (SDK) Azure Identity). Si vous recevez une erreur d’autorisation, vérifiez que vous avez le rôle Contributeur sur l’abonnement ou le groupe de ressources.

Références : MLClient, DefaultAzureCredential

Créer le hub Foundry et la connexion Microsoft Foundry

Utilisez les exemples suivants pour créer un hub. Remplacez les valeurs de chaîne d'exemple par vos propres valeurs :

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

Ce code crée un nouveau hub avec le nom spécifié, l'emplacement, et le nom d'affichage. Azure provisionne automatiquement les ressources Azure Storage et Azure Key Vault associées.

Références : Hub, MLClient.workspaces.begin_create

Créer une connexion Foundry

Après avoir créé votre propre ressource Foundry ou ressource Azure OpenAI dans le même groupe de ressources, vous pouvez la connecter à votre hub. Vous pouvez également connecter Azure AI Search à partir de n’importe quel groupe de ressources dans votre même abonnement.

  1. Incluez votre hub dans votre ml_client connexion :

    • Entrez les détails de votre abonnement. Pour <AML_WORKSPACE_NAME>, entrez le nom de votre hub :

      # Enter details of your AML workspace
      subscription_id = "<SUBSCRIPTION_ID>"
      resource_group = "<RESOURCE_GROUP>"
      workspace = "<AML_WORKSPACE_NAME>"
    • Obtenez un descripteur pour le 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. Utilisez ml_client pour créer la connexion à vos outils Foundry. Vous pouvez trouver des points de terminaison dans le portail Azure sous Clés et points de terminaison de gestion des > ressources. Pour une ressource Foundry, utilisez le point de terminaison AI Services . Pour Azure AI Search, utilisez l’URL du point de terminaison.

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

    Références : AzureAIServicesConnection, MLClient.connections

Créer un hub avec des ressources de dépendance existantes

Par défaut, un hub crée automatiquement des ressources Azure Storage et Azure Key Vault associées. Si vous souhaitez réutiliser des ressources Azure Storage ou Azure Key Vault existantes, vous pouvez les spécifier lors de la création du hub. Dans les exemples suivants, remplacez les valeurs des placeholders par vos propres identifiants de ressource :

Conseil / Astuce

Vous pouvez récupérer l’ID de ressource du compte de stockage et du coffre de clés à partir du Portail Microsoft Azure en accédant à la vue d’ensemble de la ressource et en sélectionnant la vue JSON. L’ID de la ressource se trouve dans le champ id. Vous pouvez également utiliser l’interface de ligne de commande Azure pour récupérer l’ID de ressource. Par exemple, utilisez az storage account show --name {my_storage_account_name} --query "id" et 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}")

Pour rechercher des ID de ressource pour les ressources existantes, accédez au portail Azure, accédez à la page Vue d’ensemble de la ressource, puis sélectionnez l’affichage JSON. L’ID de ressource apparaît dans le champ ID . Vous pouvez également utiliser 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"

Références : Hub

Mettre à jour Azure Application Insights et Azure Container Registry

Pour utiliser des environnements personnalisés pour Prompt Flow, vous devez configurer un Registre de conteneurs Azure pour votre hub. Pour utiliser Azure Application Insights pour les déploiements de flux d’invite, vous devez configurer une ressource Azure Application Insights pour votre hub. La mise à jour des ressources Azure Container Registry ou Application Insights associées à l’espace de travail peut rompre la traçabilité des travaux précédents, des points de terminaison d’inférence déployés ou votre capacité à réexécuter des travaux antérieurs dans l’espace de travail. Après l’association avec un hub Foundry, les ressources Azure Container Registry et Application Insights ne peuvent pas être dissociées (définie sur Null).

Vous pouvez utiliser le portail Azure, les options Azure SDK/CLI ou des modèles d’infrastructure en tant que code pour mettre à jour à la fois Azure Application Insights et Azure Container Registry pour le 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}")

Ce script met à jour un hub existant avec les ressources Application Insights et Container Registry spécifiées. Le update_dependent_resources=True paramètre confirme la mise à jour.

Référence : Hub, MLClient.workspaces.begin_update()