Mettre à niveau l’exécution du script vers le SDK v2

Dans le SDK v2, les « expériences » et les « exécutions » sont regroupées en travaux.

Un travail possède un type. La plupart d’entre eux sont des travaux de commande qui exécutent une command, comme python main.py. Ce qui s’exécute dans un travail est indépendant du langage de programmation. Vous pouvez donc exécuter des scripts bash, appeler des interpréteurs python, exécuter un ensemble de commandes curl ou toute autre chose.

Pour effectuer la mise à niveau, vous devez modifier votre code pour envoyer les travaux vers SDK 2. Ce que vous exécutez au sein du travail n’a pas besoin d’être migré vers le Kit de développement logiciel (SDK) v2. Cependant, il est recommandé de supprimer tout code propre à Azure Machine Learning de vos scripts d’entraînement de modèle. Cette séparation permet une transition plus facile entre l’environnement local et le cloud et est considérée comme une bonne pratique pour un MLOps mature. Dans la pratique, cela suppose de supprimer des lignes de code azureml.*. Le code de journalisation et de suivi de modèle doit être remplacé par MLflow. Pour plus d’informations, consultez comment utiliser MLflow dans v2.

Cet article fournit une comparaison des scénarios dans le SDK v1 et le SDK v2.

Envoyer une exécution de script

  • Kit de développement logiciel (SDK) v1

    from azureml.core import Workspace, Experiment, Environment, ScriptRunConfig
    
    # connect to the workspace
    ws = Workspace.from_config()
    
    # define and configure the experiment
    experiment = Experiment(workspace=ws, name='day1-experiment-train')
    config = ScriptRunConfig(source_directory='./src',
                                script='train.py',
                                compute_target='cpu-cluster')
    
    # set up pytorch environment
    env = Environment.from_conda_specification(
        name='pytorch-env',
        file_path='pytorch-env.yml')
    config.run_config.environment = env
    
    run = experiment.submit(config)
    
    aml_url = run.get_portal_url()
    print(aml_url)
    
  • SDK v2

    #import required libraries
    from azure.ai.ml import MLClient, command
    from azure.ai.ml.entities import Environment
    from azure.identity import DefaultAzureCredential
    
    #connect to the workspace
    ml_client = MLClient.from_config(DefaultAzureCredential())
    
    # set up pytorch environment
    env = Environment(
        image="mcr.microsoft.com/azureml/openmpi3.1.2-ubuntu18.04",
        conda_file="pytorch-env.yml",
        name="pytorch-env"
    )
    
    # define the command
    command_job = command(
        code="./src",
        command="train.py",
        environment=env,
        compute="cpu-cluster",
    )
    
    returned_job = ml_client.jobs.create_or_update(command_job)
    returned_job
    

Mappage des fonctionnalités clés de la version v1 et de la version v2

Fonctionnalités dans le SDK v1 Mappage approximatif dans le SDK v2
experiment.submit MLCLient.jobs.create_or_update
ScriptRunConfig() command()

Étapes suivantes

Pour plus d'informations, consultez les pages suivantes :