Partager via


Effectuer l’apprentissage de modèles avec le SDK Python Azure Machine Learning (v1)

S’APPLIQUE À :Kit de développement logiciel (SDK) Python azureml v1

Apprenez à attacher des ressources de calcul Azure à votre espace de travail Azure Machine Learning avec le SDK v1. Vous pourrez ensuite utiliser ces ressources comme cibles de calcul pour l'apprentissage et l'inférence dans vos tâches de Machine Learning.

Cet article explique comment configurer l'espace de travail pour utiliser ces ressources de calcul :

  • Votre ordinateur local
  • Machines virtuelles distantes
  • Pools Apache Spark (avec Azure Synapse Analytics)
  • Azure HDInsight
  • Azure Batch
  • Azure Databricks, utilisé comme cible de calcul de formation uniquement dans les pipelines Machine Learning.
  • Service Analytique Azure Data Lake
  • Azure Container Instance
  • Azure Machine Learning Kubernetes

Pour utiliser les cibles de calcul gérées par Azure Machine Learning service, consultez :

Important

Les éléments marqués « préversion » dans cet article sont actuellement en préversion publique. La préversion est fournie sans contrat de niveau de service et n’est pas recommandée pour les charges de travail en production. Certaines fonctionnalités peuvent être limitées ou non prises en charge. Pour plus d’informations, consultez Conditions d’Utilisation Supplémentaires relatives aux Évaluations Microsoft Azure.

Prérequis

Limites

  • Évitez de créer plusieurs attachements en même temps dans le même calcul depuis votre espace de travail. Par exemple, évitez d’attacher un cluster AKS à un espace de travail en utilisant deux noms différents. Chaque nouvel attachement va supprimer le ou les attachements précédents.

    Si vous souhaitez rattacher une cible de calcul, par exemple pour changer le protocole TLS ou un autre paramètre de configuration du cluster, vous devez d'abord supprimer l'attachement existant.

Qu’est-ce qu’une cible de calcul ?

Azure Machine Learning vous permet d’effectuer l’apprentissage de votre modèle sur une variété de ressources et d’environnements, appelés collectivement cibles de calcul. Une cible de calcul peut être un ordinateur local ou une ressource cloud, comme une capacité de calcul Azure Machine Learning, Azure HDInsight ou une machine virtuelle distante. Vous pouvez également utiliser des cibles de calcul pour le déploiement de modèles, comme décrit dans « Déployer des modèles avec le service Azure Machine Learning ».

Ordinateur local

Lorsque vous utilisez votre ordinateur local pour l’entraînement, il n’est pas nécessaire de créer une cible de calcul. Il vous suffit de soumettre l’exécution d’entraînement à partir de votre ordinateur local.

Lorsque vous utilisez votre ordinateur local pour l’inférence, Docker doit être installé. Pour effectuer le déploiement, utilisez LocalWebservice.deploy_configuration() pour définir le port que le service web devra utiliser. Utilisez ensuite la procédure de déploiement normale décrite dans Déployer des modèles avec Azure Machine Learning.

Machines virtuelles distantes

Azure Machine Learning prend également en charge le rattachement d’une machine virtuelle Azure. La machine virtuelle doit être une instance d’Azure Data Science Virtual Machine (DSVM). La machine virtuelle offre un choix organisé d’outils et d’infrastructures pour le développement de l’apprentissage automatique en cycle de vie complet. Pour plus d’informations sur l’utilisation de la DSVM avec Azure Machine Learning, consultez Configurer un environnement de développement.

Conseil

Au lieu d’une machine virtuelle distante, nous vous recommandons d’utiliser l’instance de calcul Azure Machine Learning. Il s’agit d’une solution de calcul, informatique et complètement managée, qui est propre à Azure Machine Learning. Pour plus d’informations, consultez Créer et gérer une instance de calcul Azure Machine Learning.

  1. Créer : Azure Machine Learning ne peut pas créer de machine virtuelle distante pour vous. Au lieu de cela, vous devez créer la machine virtuelle puis l’attacher à votre espace de travail Azure Machine Learning. Pour plus d’informations sur la création d’un environnement Data Science VM, consultez Approvisionner un environnement Data Science Virtual Machine pour Linux (Ubuntu).

    Avertissement

    Azure Machine Learning prend uniquement en charge les machines virtuelles exécutant Ubuntu. Lorsque vous créez une machine virtuelle ou en choisissez une existante, celle-ci doit utiliser Ubuntu.

    Azure Machine Learning nécessite également que la machine virtuelle dispose d’une adresse IP publique.

  2. Attacher : Pour attacher une machine virtuelle existante en tant que cible de calcul, vous devez fournir l'ID de ressource, le nom d'utilisateur et le mot de passe de la machine virtuelle. L'ID de ressource de la machine virtuelle peut être construit à l'aide de l'ID d’abonnement, du nom du groupe de ressources et du nom de la machine virtuelle en utilisant le format de chaîne suivant : /subscriptions/<subscription_id>/resourceGroups/<resource_group>/providers/Microsoft.Compute/virtualMachines/<vm_name>

    from azureml.core.compute import RemoteCompute, ComputeTarget
    
    # Create the compute config 
    compute_target_name = "attach-dsvm"
    
    attach_config = RemoteCompute.attach_configuration(resource_id='<resource_id>',
                                                    ssh_port=22,
                                                    username='<username>',
                                                    password="<password>")
    
    # Attach the compute
    compute = ComputeTarget.attach(ws, compute_target_name, attach_config)
    
    compute.wait_for_completion(show_output=True)
    

    Vous pouvez également attacher la machine DSVM (Data Science Virtual Machine) à votre espace de travail à l’aide d’Azure Machine Learning Studio.

    Avertissement

    Ne créez pas plusieurs attachements en même temps dans la même machine virtuelle DSVM depuis votre espace de travail. Chaque nouvel attachement va supprimer le ou les attachements précédents.

  3. Configurer : Créez une configuration de série de tests pour la cible de calcul Data Science Virtual Machine (DSVM). Docker et Conda sont utilisés pour créer et configurer l’environnement d’entraînement sur la DSVM.

    from azureml.core import ScriptRunConfig
    from azureml.core.environment import Environment
    from azureml.core.conda_dependencies import CondaDependencies
    
    # Create environment
    myenv = Environment(name="myenv")
    
    # Specify the conda dependencies
    myenv.python.conda_dependencies = CondaDependencies.create(conda_packages=['scikit-learn'])
    
    # If no base image is explicitly specified the default CPU image "azureml.core.runconfig.DEFAULT_CPU_IMAGE" will be used
    # To use GPU in DSVM, you should specify the default GPU base Docker image or another GPU-enabled image:
    # myenv.docker.enabled = True
    # myenv.docker.base_image = azureml.core.runconfig.DEFAULT_GPU_IMAGE
    
    # Configure the run configuration with the Linux DSVM as the compute target and the environment defined above
    src = ScriptRunConfig(source_directory=".", script="train.py", compute_target=compute, environment=myenv) 
    

Conseil

Si vous souhaitez supprimer (détacher) une machine virtuelle de votre espace de travail, utilisez la méthode RemoteCompute.detach().

Azure Machine Learning ne supprime pas la machine virtuelle pour vous. Vous devez supprimer manuellement la machine virtuelle à l’aide du portail Azure, de l’interface CLI ou du Kit de développement logiciel (SDK) pour Machines virtuelles Azure.

Pools Apache Spark

L’intégration d’Azure Synapse Analytics à Azure Machine Learning (préversion) vous permet d’attacher un pool Apache Spark en utilisant Azure Synapse pour l’exploration et la préparation de données interactives. Avec cette intégration, vous pouvez disposer d’une puissance de calcul dédiée au data wrangling à grande échelle. Pour plus d’informations, consultez Guide pratique pour attacher des pools Apache Spark avec Azure Synapse Analytics.

Azure HDInsight

Azure HDInsight est une plateforme populaire pour l’analytique de Big Data. Elle fournit Apache Spark, que vous pouvez utiliser pour entraîner votre modèle.

  1. Créer : Azure Machine Learning ne peut pas créer de cluster HDInsight pour vous. Au lieu de cela, vous devez créer le cluster puis l’attacher à votre espace de travail Azure Machine Learning. Pour plus d’informations, consultez Créer un cluster Spark dans HDInsight.

    Avertissement

    Azure Machine Learning nécessite également que le cluster HDInsight dispose d’une adresse IP publique.

    Lors de la création du cluster, vous devez spécifier un nom d’utilisateur SSH et un mot de passe. Notez ces valeurs, car vous en aurez besoin lors de l’utilisation de HDInsight comme cible de calcul.

    Une fois le cluster créé, connectez-le au nom d’hôte <clustername>6SSH.azurehdinsight.net, où <clustername> est le nom que vous avez donné au cluster.

  2. Attacher : Pour attacher un cluster HDInsight en tant que cible de calcul, vous devez fournir l'ID de ressource, le nom d'utilisateur et le mot de passe du cluster HDInsight. L'ID de ressource du cluster HDInsight peut être construit à l'aide de l'ID d’abonnement, du nom du groupe de ressources et du nom du cluster HDInsight en utilisant le format de chaîne suivant : /subscriptions/<subscription_id>/resourceGroups/<resource_group>/providers/Microsoft.HDInsight/clusters/<cluster_name>

    from azureml.core.compute import ComputeTarget, HDInsightCompute
    from azureml.exceptions import ComputeTargetException
    
    try:
    # if you want to connect using SSH key instead of username/password you can provide parameters private_key_file and private_key_passphrase
    
    attach_config = HDInsightCompute.attach_configuration(resource_id='<resource_id>',
                                                          ssh_port=22, 
                                                          username='<ssh-username>', 
                                                          password='<ssh-pwd>')
    hdi_compute = ComputeTarget.attach(workspace=ws, 
                                       name='myhdi', 
                                       attach_configuration=attach_config)
    
    except ComputeTargetException as e:
    print("Caught = {}".format(e.message))
    
    hdi_compute.wait_for_completion(show_output=True)
    

    Vous pouvez également attacher le cluster HDInsight à votre espace de travail à l’aide d’Azure Machine Learning Studio.

    Avertissement

    Ne créez pas plusieurs attachements en même temps dans le même service HDInsight depuis votre espace de travail. Chaque nouvel attachement va supprimer le ou les attachements précédents.

  3. Configurer : Créez une configuration de série de tests pour la cible de calcul HDI.

    from azureml.core.runconfig import RunConfiguration
    from azureml.core.conda_dependencies import CondaDependencies
    
    
    # use pyspark framework
    run_hdi = RunConfiguration(framework="pyspark")
    
    # Set compute target to the HDI cluster
    run_hdi.target = hdi_compute.name
    
    # specify CondaDependencies object to ask system installing numpy
    cd = CondaDependencies()
    cd.add_conda_package('numpy')
    run_hdi.environment.python.conda_dependencies = cd
    

Conseil

Si vous souhaitez supprimer (détacher) un cluster HDInsight de l’espace de travail, utilisez la méthode HDInsightCompute.detach().

Azure Machine Learning ne supprime pas le cluster HDInsight pour vous. Vous devez le supprimer manuellement à l’aide du portail Azure, de l’interface CLI ou du Kit de développement logiciel (SDK) pour Azure HDInsight.

Azure Batch

Azure Batch sert à exécuter efficacement des applications de calcul haute performance (HPC) en parallèle et à grande échelle dans le cloud. AzureBatchStep peut être utilisé dans un pipeline Azure Machine Learning pour envoyer des travaux à un pool de machines Azure Batch.

Pour attacher Azure Batch comme cible de calcul, vous devez utiliser le Kit de développement logiciel Azure Machine Learning et fournir les informations suivantes :

  • Nom de calcul Azure Batch : Nom convivial à utiliser pour le calcul au sein de l’espace de travail
  • Nom du compte Azure Batch : Nom du compte Azure Batch
  • Groupe de ressources : Groupe de ressources qui contient le compte Azure Batch.

Le code suivant montre comment attacher Azure Batch comme cible de calcul :

from azureml.core.compute import ComputeTarget, BatchCompute
from azureml.exceptions import ComputeTargetException

# Name to associate with new compute in workspace
batch_compute_name = 'mybatchcompute'

# Batch account details needed to attach as compute to workspace
batch_account_name = "<batch_account_name>"  # Name of the Batch account
# Name of the resource group which contains this account
batch_resource_group = "<batch_resource_group>"

try:
    # check if the compute is already attached
    batch_compute = BatchCompute(ws, batch_compute_name)
except ComputeTargetException:
    print('Attaching Batch compute...')
    provisioning_config = BatchCompute.attach_configuration(
        resource_group=batch_resource_group, account_name=batch_account_name)
    batch_compute = ComputeTarget.attach(
        ws, batch_compute_name, provisioning_config)
    batch_compute.wait_for_completion()
    print("Provisioning state:{}".format(batch_compute.provisioning_state))
    print("Provisioning errors:{}".format(batch_compute.provisioning_errors))

print("Using Batch compute:{}".format(batch_compute.cluster_resource_id))

Avertissement

Ne créez pas plusieurs attachements en même temps dans le même service Azure Batch depuis votre espace de travail. Chaque nouvel attachement va supprimer le ou les attachements précédents.

Azure Databricks

Azure Databricks est un environnement basé sur Apache Spark dans le cloud Azure. Il peut être utilisé comme cible de calcul avec un pipeline Azure Machine Learning.

Important

Azure Machine Learning ne peut pas créer de cible de calcul Azure Databricks. Vous devez créer un espace de travail Azure Databricks, puis l’attacher à votre espace de travail Azure Machine Learning. Pour créer une ressource d’espace de travail, consultez le document Exécuter un travail Spark sur Azure Databricks.

Pour attacher un espace de travail Azure Databricks d’un autre abonnement Azure, vous (votre compte Microsoft Entra) devez disposer du rôle Contributeur dans cet espace de travail. Vérifiez votre accès dans le portail Azure.

Pour joindre Azure Databricks comme cible de calcul, fournissez les informations suivantes :

  • Nom de la capacité de calcul Databricks : nom que vous voulez affecter à cette ressource de calcul.
  • Nom de l’espace de travail Databricks : nom de l’espace de travail Azure Databricks.
  • Jeton d’accès Databricks : jeton d’accès utilisé pour s’authentifier auprès d’Azure Databricks. Pour générer un jeton d’accès, consultez le document Authentification.

Le code suivant montre comment attacher Azure Databricks comme cible de calcul avec le SDK Azure Machine Learning :

import os
from azureml.core.compute import ComputeTarget, DatabricksCompute
from azureml.exceptions import ComputeTargetException

databricks_compute_name = os.environ.get(
    "AML_DATABRICKS_COMPUTE_NAME", "<databricks_compute_name>")
databricks_workspace_name = os.environ.get(
    "AML_DATABRICKS_WORKSPACE", "<databricks_workspace_name>")
databricks_resource_group = os.environ.get(
    "AML_DATABRICKS_RESOURCE_GROUP", "<databricks_resource_group>")
databricks_access_token = os.environ.get(
    "AML_DATABRICKS_ACCESS_TOKEN", "<databricks_access_token>")

try:
    databricks_compute = ComputeTarget(
        workspace=ws, name=databricks_compute_name)
    print('Compute target already exists')
except ComputeTargetException:
    print('compute not found')
    print('databricks_compute_name {}'.format(databricks_compute_name))
    print('databricks_workspace_name {}'.format(databricks_workspace_name))
    print('databricks_access_token {}'.format(databricks_access_token))

    # Create attach config
    attach_config = DatabricksCompute.attach_configuration(resource_group=databricks_resource_group,
                                                           workspace_name=databricks_workspace_name,
                                                           access_token=databricks_access_token)
    databricks_compute = ComputeTarget.attach(
        ws,
        databricks_compute_name,
        attach_config
    )

    databricks_compute.wait_for_completion(True)

Si vous souhaitez obtenir un exemple plus détaillé, veuillez consulter un exemple de notebook sur GitHub.

Avertissement

Ne créez pas plusieurs attachements en même temps dans le même service Azure Databricks depuis votre espace de travail. Chaque nouvel attachement va supprimer le ou les attachements précédents.

Service Analytique Azure Data Lake

Azure Data Lake Analytics est une plateforme analytique de Big Data dans le cloud Azure. Il peut être utilisé comme cible de calcul avec un pipeline Azure Machine Learning.

Créez un compte Azure Data Lake Analytics avant de l’utiliser. Pour créer cette ressource, consultez le document Prise en main d’Azure Data Lake Analytics.

Pour attacher Data Lake Analytics comme cible de calcul, vous devez utiliser le Kit de développement logiciel Azure Machine Learning et fournir les informations suivantes :

  • Nom de la capacité de calcul : nom que vous voulez affecter à cette ressource de calcul.
  • Groupe de ressources : groupe de ressources contenant le compte Data Lake Analytics.
  • Nom du compte : Le nom du compte Data Lake Analytics.

Le code suivant montre comment attacher Data Lake Analytics comme cible de calcul :

import os
from azureml.core.compute import ComputeTarget, AdlaCompute
from azureml.exceptions import ComputeTargetException


adla_compute_name = os.environ.get(
    "AML_ADLA_COMPUTE_NAME", "<adla_compute_name>")
adla_resource_group = os.environ.get(
    "AML_ADLA_RESOURCE_GROUP", "<adla_resource_group>")
adla_account_name = os.environ.get(
    "AML_ADLA_ACCOUNT_NAME", "<adla_account_name>")

try:
    adla_compute = ComputeTarget(workspace=ws, name=adla_compute_name)
    print('Compute target already exists')
except ComputeTargetException:
    print('compute not found')
    print('adla_compute_name {}'.format(adla_compute_name))
    print('adla_resource_id {}'.format(adla_resource_group))
    print('adla_account_name {}'.format(adla_account_name))
    # create attach config
    attach_config = AdlaCompute.attach_configuration(resource_group=adla_resource_group,
                                                     account_name=adla_account_name)
    # Attach ADLA
    adla_compute = ComputeTarget.attach(
        ws,
        adla_compute_name,
        attach_config
    )

    adla_compute.wait_for_completion(True)

Si vous souhaitez obtenir un exemple plus détaillé, veuillez consulter un exemple de notebook sur GitHub.

Avertissement

Ne créez pas plusieurs attachements en même temps dans le même service Azure Data Lake Analytics depuis votre espace de travail. Chaque nouvel attachement va supprimer le ou les attachements précédents.

Conseil

Les pipelines Azure Machine Learning peuvent uniquement fonctionner avec les données stockées dans le magasin de données par défaut du compte Data Lake Analytics. Si les données dont vous avez besoin se trouvent dans un magasin non défini par défaut, vous pouvez utiliser un DataTransferStep pour copier les données avant l’apprentissage.

Azure Container Instance

Des instances Azure Container Instances (ACI) sont créées de façon dynamique lorsque vous déployez un modèle. Vous ne pouvez pas créer ou attacher des ACI à votre espace de travail de quelque autre manière que ce soit. Pour plus d’informations, consultez Déployer un modèle dans Azure Container Instances.

Kubernetes

Azure Machine Learning vous offre la possibilité d’attacher vos propres clusters Kubernetes pour l’apprentissage et l’inférence. Consultez Configurer des clusters Kubernetes pour Azure Machine Learning.

Pour détacher un cluster Kubernetes de votre espace de travail, utilisez la méthode suivante :

compute_target.detach()

Avertissement

Détacher un cluster ne supprime pas le cluster. Pour supprimer un cluster Azure Kubernetes Service, consultez Utiliser Azure CLI avec AKS. Pour supprimer un cluster Kubernetes avec Azure Arc, consultez Démarrage rapide Azure Arc.

Exemples de notebooks

Pour des exemples d’apprentissage avec différentes cibles de calcul, voir les blocs-notes suivants :

Découvrez comment exécuter des notebooks dans l’article Utiliser des notebooks Jupyter pour explorer ce service.

Étapes suivantes