Partager via


Configurer et envoyer des travaux d’apprentissage

S’APPLIQUE À :Kit de développement logiciel (SDK) Azure Machine Learning v1 pour Python

Important

Cet article fournit des informations sur l’utilisation du Kit de développement logiciel (SDK) Azure Machine Learning v1. Le SDK v1 est déprécié depuis le 31 mars 2025 et la prise en charge de celui-ci prendra fin le 30 juin 2026. Vous pouvez installer et utiliser le Kit de développement logiciel (SDK) v1 jusqu’à cette date.

Nous vous recommandons de passer au SDK v2 avant le 30 juin 2026. Pour plus d’informations sur le Kit de développement logiciel (SDK) v2, consultez Présentation du Kit de développement logiciel (SDK) Python Azure Machine Learning v2 et référence du Kit de développement logiciel (SDK) v2.

Dans cet article, vous apprendrez à configurer et à soumettre des tâches Azure Machine Learning pour former vos modèles. Des extraits de code décrivent les éléments clés de la configuration et de la soumission d'un script de formation. Utilisez ensuite l'un des exemples de notebooks pour accéder aux exemples fonctionnels complets de bout en bout.

Lors de l’entraînement, il est courant de démarrer sur votre ordinateur local, puis de passer à un scale-out vers un cluster cloud. Avec Azure Machine Learning, vous pouvez exécuter votre script sur différentes cibles de calcul sans avoir à modifier votre script de formation.

Il vous suffit de définir l’environnement pour chaque cible de calcul dans une configuration d’un travail de script. Quand vous souhaitez ensuite exécuter votre expérience de formation sur une autre cible de calcul, spécifiez la configuration du travail pour celle-ci.

Prérequis

Qu’est-ce qu’une configuration d’exécution de script ?

Un objet ScriptRunConfig sert à configurer les informations nécessaires pour envoyer un travail d’apprentissage dans le cadre de l’expérience.

Vous soumettez votre expérience de formation à l’aide d’un objet ScriptRunConfig. Cet objet inclut ce qui suit :

  • source_directory : le répertoire source qui contient votre script de formation
  • script : le script de formation à exécuter
  • compute_target : la cible de calcul sur laquelle s'exécuter
  • environnement : l'environnement à utiliser lors de l'exécution du script
  • autres options configurables (consultez la documentation de référence pour plus d’informations)

Entraîner votre modèle

Le modèle de code pour envoyer un travail d’apprentissage est identique pour tous les types de cibles de calcul :

  1. Créer une expérience à exécuter
  2. Créer un environnement dans lequel le script s’exécute
  3. Créer un objet ScriptRunConfig, qui spécifie la cible de calcul et l’environnement
  4. Envoi du travail
  5. Attendre la fin du travail

Vous pouvez également :

Sélectionner une cible de calcul

Sélectionnez la cible de calcul sur laquelle votre script de formation s'exécutera. Si aucune cible de calcul n’est spécifiée dans l’objet ScriptRunConfig, ou si compute_target='local', Azure Machine Learning exécute votre script localement.

L’exemple de code fourni dans cet article suppose que vous avez déjà créé une cible de calcul my_compute_target comme indiqué dans la section « Prérequis ».

Remarque

  • Azure Databricks n’est pas pris en charge comme cible de calcul pour l’entraînement de modèle. Vous pouvez utiliser Azure Databricks pour les tâches de préparation des données et de déploiement.
  • Pour créer et attacher une cible de calcul pour la formation sur un cluster Kubernetes compatible Azure Arc, consultez Configurer l'apprentissage automatique compatible Azure Arc

Créer un environnement

Les environnements Azure Machine Learning sont une encapsulation de l’environnement dans lequel votre formation Machine Learning se produit. Ils spécifient les packages, image Docker, variables d’environnement et paramètres logiciels Python autour de vos scripts d’entraînement et de scoring. Ils spécifient également les temps d’exécution (Python, Spark ou Docker).

Vous pouvez définir votre propre environnement ou utiliser un environnement organisé Azure Machine Learning. Les environnements organisés sont des environnements prédéfinis qui sont disponibles dans votre espace de travail par défaut. Ces environnements s’appuient sur des images Docker mises en cache, ce qui réduit le coût de préparation des travaux. Consultez Environnements organisés Azure Machine Learning pour obtenir la liste complète des environnements organisés disponibles.

Pour une cible de calcul à distance, vous pouvez utiliser l’un de ces environnements organisés courants pour commencer :

S’APPLIQUE À :Kit de développement logiciel (SDK) Azure Machine Learning v1 pour Python

from azureml.core import Workspace, Environment

ws = Workspace.from_config()
myenv = Environment.get(workspace=ws, name="AzureML-Minimal")

Pour plus d’informations et pour obtenir des détails sur les environnements, consultez Créer et utiliser des environnements logiciels dans Azure Machine Learning.

Cible de calcul locale

Si votre cible de calcul est votre ordinateur local, vous devez vérifier que tous les packages nécessaires sont disponibles dans l’environnement Python où le script s’exécute. Utilisez python.user_managed_dependencies pour utiliser votre environnement Python actuel (ou celui sous le chemin d’accès que vous spécifiez).

S’APPLIQUE À :Kit de développement logiciel (SDK) Azure Machine Learning v1 pour Python

from azureml.core import Environment

myenv = Environment("user-managed-env")
myenv.python.user_managed_dependencies = True

# You can choose a specific Python environment by pointing to a Python path 
# myenv.python.interpreter_path = '/home/johndoe/miniconda3/envs/myenv/bin/python'

Créer une expérience

Créez une expérience dans votre espace de travail. Une expérience est un conteneur léger qui permet d’organiser l’envoi de travaux et d’effectuer le suivi du code.

S’APPLIQUE À :Kit de développement logiciel (SDK) Azure Machine Learning v1 pour Python

from azureml.core import Experiment

experiment_name = 'my_experiment'
experiment = Experiment(workspace=ws, name=experiment_name)

Créer la configuration du travail de script

Maintenant que vous disposez d'une cible de calcul (my_compute_target, consultez Prérequis et environnement (myenv, consultez Créer un environnement), créez une configuration de tâche de script qui exécute votre script de formation (train.py) situé dans votre répertoire project_folder :

S’APPLIQUE À :Kit de développement logiciel (SDK) Azure Machine Learning v1 pour Python

from azureml.core import ScriptRunConfig

src = ScriptRunConfig(source_directory=project_folder,
                      script='train.py',
                      compute_target=my_compute_target,
                      environment=myenv)

Si vous ne spécifiez pas d’environnement, un environnement par défaut est créé pour vous.

Si vous avez des arguments de ligne de commande que vous souhaitez transmettre à votre script de formation, vous pouvez les spécifier via le paramètre arguments du constructeur ScriptRunConfig, par exemple, arguments=['--arg1', arg1_val, '--arg2', arg2_val].

Si vous souhaitez remplacer le temps maximum par défaut autorisé pour le travail, vous pouvez le faire via le paramètre max_run_duration_seconds. Le système tente d’annuler automatiquement le travail s’il prend plus de temps que cette valeur.

Spécifier une configuration de travail distribué

Si vous souhaitez exécuter une tâche d’entraînement distribué, renseignez la configuration spécifique à la tâche distribuée au niveau du paramètre distributed_job_config. Les types de configuration pris en charge incluent MpiConfiguration, TensorflowConfiguration, et PyTorchConfiguration.

Pour plus d’informations et des exemples sur l’exécution des travaux distribués Horovod, TensorFlow et PyTorch, consultez :

Soumettre l’expérimentation

S’APPLIQUE À :Kit de développement logiciel (SDK) Azure Machine Learning v1 pour Python

run = experiment.submit(config=src)
run.wait_for_completion(show_output=True)

Important

Lorsque vous envoyez le travail d’entraînement, un instantané du répertoire qui contient vos scripts d’apprentissage est créé et envoyé à la cible de calcul. Il est également stocké dans le cadre de l’expérience dans votre espace de travail. Si vous modifiez des fichiers et envoyez à nouveau le travail, seuls les fichiers modifiés sont chargés.

Pour empêcher que les fichiers inutiles soient inclus dans l’instantané, créez un fichier « ignore» (.gitignore ou .amlignore) dans le répertoire. Ajoutez dans ce fichier les fichiers et répertoires à exclure. Pour plus d’informations sur la syntaxe à utiliser dans ce fichier, consultez syntaxe et modèles pour .gitignore. Le fichier .amlignore utilise la même syntaxe. Si les deux fichiers existent, le fichier .amlignore est utilisé et le fichier .gitignore est inutilisé.

Pour plus d’informations sur les instantanés, consultez Instantanés.

Important

Dossiers spéciaux Deux dossiers, sorties et journaux, reçoivent un traitement spécial par Azure Machine Learning. Lors de l’apprentissage, lorsque vous écrivez des fichiers dans des dossiers nommés sorties et journaux relatifs au répertoire racine (et./outputs, respectivement), les fichiers sont automatiquement ./logs dans votre historique des travaux afin de pouvoir y accéder une fois votre travail terminé.

Pour créer des artefacts pendant l’apprentissage (tels que les fichiers de modèle, les points de contrôle, les fichiers de données ou les images tracées) écrivez dans le ./outputs dossier.

De même, vous pouvez écrire tous les journaux de votre tâche de formation dans le dossier ./logs. Pour utiliser l’intégration TensorBoard d’Azure Machine Learning, veillez à écrire vos journaux TensorBoard dans ce dossier. Pendant que votre travail est en cours, vous pourrez lancer TensorBoard et diffuser ces journaux de bord. Plus tard, vous pourrez également restaurer les fichiers logs depuis l’un de vos travaux précédents.

Par exemple, pour télécharger un fichier écrit dans le dossier de sorties sur votre machine locale après votre tâche de formation à distance : run.download_file(name='outputs/my_output_file', output_file_path='my_destination_path')

Intégration et suivi Git

Quand vous démarrez un travail d’apprentissage où le répertoire source est un répertoire Git local, les informations relatives au répertoire sont stockées dans l’historique des travaux. Pour plus d’informations, consultez Intégration Git pour Azure Machine Learning.

Exemples de Notebooks

Consultez ces blocs-notes pour des exemples de configuration de tâches pour divers scénarios de formation :

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

Dépannage

  • AttributeError : l'objet 'RoundTripLoader' n'a pas d'attribut 'comment_handling' : cette erreur provient de la nouvelle version (v0.17.5) de ruamel-yaml, une dépendance azureml-core, qui introduit une modification radicale dans azureml-core. Afin de corriger cette erreur, désinstallez ruamel-yaml en exécutant pip uninstall ruamel-yaml et en installant une version différente de ruamel-yaml; les versions prises en charge sont v0.15.35 à v0.17.4 (inclus). Vous pouvez le faire en exécutant pip install "ruamel-yaml>=0.15.35,<0.17.5".

  • Le travail échoue avec jwt.exceptions.DecodeError : Message d'erreur exact : jwt.exceptions.DecodeError: It is required that you pass in a value for the "algorithms" argument when calling decode().

    Envisagez de mettre à niveau vers la dernière version d'azureml-core : pip install -U azureml-core.

    Si vous rencontrez ce problème pour les travaux locaux, vérifiez la version de PyJWT installée dans votre environnement où . vous démarrez les travaux. Les versions prises en charge de PyJWT sont < 2.0.0. Désinstallez PyJWT de l'environnement si la version est >= 2.0.0. Vous pouvez vérifier la version de PyJWT, désinstaller et installer la version correcte comme suit :

    1. Démarrez un shell de commande, activez l'environnement conda dans lequel azureml-core est installé.
    2. Entrer pip freeze et rechercher PyJWT, si trouvé, la version répertoriée devrait être < 2.0.0
    3. Si la version répertoriée n’est pas une version prise en charge, pip uninstall PyJWT dans l’interpréteur de commandes et entrez y pour confirmation.
    4. Installer à l’aide de pip install 'PyJWT<2.0.0'

    Si vous soumettez un environnement créé par l’utilisateur avec votre travail, envisagez d’utiliser la dernière version d’azureml-core dans cet environnement. Les versions >= 1.18.0 d'azureml-core épinglent déjà PyJWT < 2.0.0. Si vous devez utiliser une version d’azureml-core < 1.18.0 dans l’environnement que vous soumettez, assurez-vous de spécifier PyJWT < 2.0.0 dans vos dépendances pip.

  • ModuleErrors (Aucun module nommé) : Si . vous rencontrez des erreurs ModuleErrors lors de la soumission d'expériences dans Azure Machine Learning, le script de formation attend l'installation d'un package mais il n'est pas ajouté. Une fois que vous avez fourni le nom du package, Azure Machine Learning installe le package dans l’environnement utilisé pour votre tâche de formation.

    Si vous utilisez estimateurs pour envoyer des expériences, vous pouvez spécifier un nom de package via pip_packages ou conda_packages un paramètre dans l’estimateur en fonction de la source à partir de laquelle vous souhaitez installer le package. Vous pouvez également spécifier un fichier yml avec toutes vos dépendances à l'aide du paramètre conda_dependencies_fileou répertorier toutes vos exigences pip dans un fichier txt à l'aide du paramètre pip_requirements_file. Si vous souhaitez remplacer l’image par défaut utilisée par l’estimateur dans votre propre objet d’environnement Azure Machine Learning, vous pouvez spécifier cet environnement par le bais du paramètre environment du constructeur estimateur.

    Les images Docker gérées par Azure Machine Learning et leur contenu sont visibles dans les conteneurs Azure Machine Learning. Les dépendances spécifiques au framework sont listées dans la documentation correspondante du framework :

    Remarque

    Si vous pensez qu’un package particulier est suffisamment courant pour être ajouté dans des environnements et images gérés par Azure Machine Learning, signalez un problème GitHub dans Azure Machine Learning Containers.

  • NameError (Nom non défini), AttributeError (L'objet n'a aucun attribut) : Cette exception doit provenir de vos scripts de formation. Vous pouvez consulter les fichiers journaux du Portail Microsoft Azure pour obtenir plus d’informations sur le nom spécifique non défini ou l’erreur d’attribut. À partir du Kit de développement logiciel (SDK), vous pouvez utiliser run.get_details() pour examiner le message d’erreur. Cette opération répertorie également tous les fichiers journaux générés pour votre travail. Assurez-vous de jeter un œil à votre script de formation et de corriger l'erreur avant de soumettre à nouveau votre travail.

  • Suppression du travail ou de l’expérience : les expériences peuvent être archivées à l’aide de la méthode Experiment.archive ou à partir de la vue d’onglet Expérience dans le client Azure Machine Learning studio via le bouton « Archiver l’expérience ». Cette action masque l’expérience des requêtes et des vues de liste, mais elle ne la supprime pas.

    La suppression définitive d’expériences ou de travaux individuels n’est actuellement pas prise en charge. Pour plus d'informations sur la suppression des ressources de l'espace de travail, consultez Exporter ou supprimer les données de votre espace de travail d’Azure Machine Learning Service.

  • Le document de métriques est trop volumineux : Azure Machine Learning comporte des limites internes sur la taille des objets métriques qui peuvent être consignés simultanément dans un travail d’apprentissage. Si vous rencontrez une erreur « Le document de métrique est trop volumineux » lors de l’enregistrement d’une mesure de liste, essayez de fractionner la liste en segments plus petits, par exemple :

    run.log_list("my metric name", my_metric[:N])
    run.log_list("my metric name", my_metric[N:])
    

    En interne, Azure Machine Learning concatène les blocs portant le même nom d’indicateur de performance dans une liste contiguë.

  • La cible de calcul prend beaucoup de temps à démarrer : les images Docker pour les cibles de calcul sont chargées à partir d’Azure Container Registry (ACR). Par défaut, Azure Machine Learning crée un ACR qui utilise le niveau de service De base. Un passage au niveau Standard ou Premium du registre ACR de l’espace de travail est susceptible de réduire le temps nécessaire à la génération et au chargement des images. Pour plus d’informations, consultez Niveaux de service Azure Container Registry.

Étapes suivantes