Effectuer l’apprentissage des modèles avec l’interface CLI Azure Machine Learning, le Kit de développement logiciel (SDK) et l’API REST

S’APPLIQUE À :Extension Azure ML CLI v2 (actuelle)Kit de développement logiciel (SDK) Python azure-ai-ml v2 (préversion)

Azure Machine Learning fournit plusieurs façons d’envoyer des travaux d’apprentissage ML. Dans cet article, vous allez apprendre à envoyer des travaux à l’aide des méthodes suivantes :

  • Extension Azure CLI pour Machine Learning : l’extension ml, également appelée CLI v2.
  • Kit de développement logiciel (SDK) Python v2 pour Azure Machine Learning.
  • API REST : API sur laquelle l’interface CLI et le kit de développement logiciel (SDK) sont basés.

Prérequis

Pour utiliser les informations sur le Kit de développement logiciel (SDK), installez le kit de développement logiciel (SDK) v2 for Python Azure Machine Learning.

Cloner le référentiel d’exemples

Les extraits de code de cet article sont basés sur des exemples dans le référentiel GitHub d’exemples Azure Machine Learning. Pour cloner le référentiel dans votre environnement de développement, utilisez la commande suivante :

git clone --depth 1 https://github.com/Azure/azureml-examples

Conseil

Utilisez --depth 1 pour cloner uniquement le dernier commit dans le dépôt, ce qui réduit le temps nécessaire à l’exécution de l’opération.

Exemple de travail

Les exemples de cet article utilisent le jeu de données d’iris pour effectuer l’apprentissage d’un modèle MLFlow.

Effectuer l’apprentissage dans le cloud

Lors de l’apprentissage dans le cloud, vous devez vous connecter à votre espace de travail Azure Machine Learning et sélectionner une ressource de calcul qui sera utilisée pour exécuter le travail d’apprentissage.

1. Connexion à l’espace de travail

Conseil

Utilisez les onglets ci-dessous pour sélectionner la méthode que vous souhaitez utiliser pour effectuer l’apprentissage d’un modèle. La sélection d’un onglet bascule automatiquement tous les onglets de cet article vers le même onglet. Vous pouvez sélectionner un autre onglet à tout moment.

Pour vous connecter à l’espace de travail, vous avez besoin de paramètres d’identificateur : un abonnement, un groupe de ressources et un nom d’espace de travail. Vous utiliserez ces informations dans MLClient de l’espace de noms azure.ai.ml pour obtenir un descripteur vers l’espace de travail Azure Machine Learning requis. Pour vous authentifier, vous utilisez l’authentification Azure par défaut. Consultez cet exemple pour plus d’informations sur la configuration des informations d’identification et la connexion à un espace de travail.

#import required libraries
from azure.ai.ml import MLClient
from azure.identity import DefaultAzureCredential

#Enter details of your Azure Machine Learning workspace
subscription_id = '<SUBSCRIPTION_ID>'
resource_group = '<RESOURCE_GROUP>'
workspace = '<AZUREML_WORKSPACE_NAME>'

#connect to the workspace
ml_client = MLClient(DefaultAzureCredential(), subscription_id, resource_group, workspace)

2. Créer une ressource de calcul pour l’apprentissage

Remarque

Pour essayer le calcul serverless, ignorez cette étape et passez à 3. Soumettre le travail d’entraînement.

Un cluster de calcul Azure Machine Learning est une ressource de calcul entièrement gérée qui peut être utilisée pour exécuter le travail d’apprentissage. Dans les exemples suivants, un cluster de calcul nommé cpu-compute est créé.

from azure.ai.ml.entities import AmlCompute

# specify aml compute name.
cpu_compute_target = "cpu-cluster"

try:
    ml_client.compute.get(cpu_compute_target)
except Exception:
    print("Creating a new cpu compute target...")
    compute = AmlCompute(
        name=cpu_compute_target, size="STANDARD_D2_V2", min_instances=0, max_instances=4
    )
    ml_client.compute.begin_create_or_update(compute).result()

3. Soumettre la tâche d’apprentissage

Pour exécuter ce script, vous allez utiliser un command qui exécute le script Python main.py situé sous ./sdk/python/jobs/single-step/lightgbm/iris/src/. La commande sera exécutée en la soumettant comme job à Azure Machine Learning.

Remarque

Pour utiliser le calcul serverless, supprimez compute="cpu-cluster" dans ce code.

from azure.ai.ml import command, Input

# define the command
command_job = command(
    code="./src",
    command="python main.py --iris-csv ${{inputs.iris_csv}} --learning-rate ${{inputs.learning_rate}} --boosting ${{inputs.boosting}}",
    environment="AzureML-lightgbm-3.2-ubuntu18.04-py37-cpu@latest",
    inputs={
        "iris_csv": Input(
            type="uri_file",
            path="https://azuremlexamples.blob.core.windows.net/datasets/iris.csv",
        ),
        "learning_rate": 0.9,
        "boosting": "gbdt",
    },
    compute="cpu-cluster",
)
# submit the command
returned_job = ml_client.jobs.create_or_update(command_job)
# get a URL for the status of the job
returned_job.studio_url

Dans les exemples ci-dessus, vous avez configuré :

  • code : chemin où se trouve le code utilisé pour exécuter la commande
  • command : commande à exécuter
  • environment : l’environnement nécessaire pour exécuter le script d’apprentissage. Dans cet exemple, nous utilisons un environnement organisé ou prêt à l’emploi fourni par Azure Machine Learning appelé AzureML-lightgbm-3.2-ubuntu18.04-py37-cpu. Nous utilisons la dernière version de cet environnement à l’aide de la directive @latest. Vous pouvez également utiliser des environnements personnalisés en spécifiant une image docker de base et en spécifiant un fichier yaml conda par dessus celui-ci.
  • inputs : dictionnaire d’entrées de paires nom-valeur pour la commande. La clé est un nom pour l’entrée dans le contexte du travail et la valeur est la valeur d’entrée. Les entrées sont référencées dans command avec l’expression ${{inputs.<input_name>}}. Pour utiliser des fichiers ou des dossiers en entrées, vous pouvez utiliser la classe Input. Pour plus d’informations, consultez Expressions du kit de développement logiciel (SDK) et de CLI v2.

Pour plus d’informations, consultez la documentation de référence.

Lorsque vous envoyez le travail, une URL est retournée à l’état du travail dans Azure Machine Learning Studio. Utilisez l’interface utilisateur Studio pour afficher la progression du travail. Vous pouvez également utiliser returned_job.status pour vérifier l’état actuel du travail.

Inscrire le modèle entraîné

Les exemples suivants montrent comment inscrire un modèle dans votre espace de travail Azure Machine Learning.

Conseil

La propriété name retournée par le travail d’apprentissage est utilisée dans le cadre du chemin d’accès au modèle.

from azure.ai.ml.entities import Model
from azure.ai.ml.constants import AssetTypes

run_model = Model(
    path="azureml://jobs/{}/outputs/artifacts/paths/model/".format(returned_job.name),
    name="run-model-example",
    description="Model created from run.",
    type=AssetTypes.MLFLOW_MODEL
)

ml_client.models.create_or_update(run_model)

Étapes suivantes

Maintenant que vous avez un modèle entraîné, découvrez comment le déployer à l’aide d’un point de terminaison en ligne.

Pour plus d’exemples, consultez le référentiel GitHub d’exemples Azure Machine Learning.

Pour plus d’informations sur les commandes Azure CLI, les classes du Kit de développement logiciel (SDK) Python ou les API REST utilisées dans cet article, consultez la documentation de référence suivante :