Dans cet article, vous allez apprendre à configurer et à soumettre des travaux Azure Machine Learning pour entraîner 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 d’effectuer 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.
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électionnez la cible de calcul sur laquelle votre script d’entraînement sera exécuté. 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 ».
Notes
Azure Databricks n’est pas pris en charge comme cible de calcul pour la formation des modèles. Vous pouvez utiliser Azure Databricks pour les tâches de préparation des données et de déploiement.
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 :
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).
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 la configuration du travail de script
Maintenant que vous avez une cible de calcul (my_compute_target, voir Prérequis) et un environnement (myenv, voir Créer un environnement), créez une configuration de travail de script qui exécute votre script d’entraînement (train.py) dans votre répertoire project_folder :
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 souhaitez passer des arguments de ligne de commande à votre script d’entraînement, vous pouvez les spécifier par le biais du paramètre arguments du constructeur ScriptRunConfig, par exemple, arguments=['--arg1', arg1_val, '--arg2', arg2_val].
Si vous souhaitez remplacer la durée maximale par défaut autorisée pour le travail, vous pouvez le faire avec 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.
run = experiment.submit(config=src)
run.wait_for_completion(show_output=True)
Important
Quand vous envoyez le travail d’entraînement, un instantané du répertoire contenant vos scripts d’entraînement 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 que vous 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 non le fichier .gitignore.
Pour plus d’informations sur les instantanés, consultez Instantanés.
Important
Dossiers spéciaux : deux dossiers, outputs et logs, reçoivent un traitement spécial de la part d’Azure Machine Learning. Pendant l’apprentissage, quand vous écrivez des fichiers dans les dossiers nommés outputs et logs qui sont relatifs au répertoire racine (respectivement ./outputs et ./logs), les fichiers sont automatiquement chargés dans votre historique des travaux. Vous pouvez ainsi y accéder une fois le travail terminé.
Pour créer des artefacts pendant l’entraînement (par exemple, des fichiers de modèle, des points de contrôle, des fichiers de données ou des images tracées), écrivez-les dans le dossier ./outputs.
De même, vous pouvez écrire tous les journaux d’activité de votre travail d’apprentissage dans le dossier ./logs. Pour utiliser l’intégration TensorBoard d’Azure Machine Learning, écrivez vos journaux d’activité TensorBoard dans ce dossier. Quand votre travail est en cours, vous pouvez lancer TensorBoard et transmettre ces journaux en continu. Vous pouvez également restaurer les journaux ultérieurement à partir de l’un des travaux précédents.
Par exemple, pour télécharger un fichier écrit dans le dossier outputs sur votre ordinateur local après votre travail d’apprentissage distant : 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 Obtenir une intégration pour Azure Machine Learning.
Exemples de notebooks
Consultez ces notebooks pour obtenir des exemples de configuration des travaux pour différents scénarios d’apprentissage :
AttributeError : l’objet « RoundTripLoader »n’a pas d’attribut « comment_handling » : cette erreur provient de la nouvelle version (v 0.17.5) de ruamel-yaml, une dépendance azureml-core qui introduit un changement cassant à azureml-core . Pour 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 vont de la v0.15.35 à la v0.17.4 (comprises). Pour ce faire, exécutez pip install "ruamel-yaml>=0.15.35,<0.17.5".
Échec du travail 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 une mise à niveau vers la dernière version d’azureml-core : pip install -U azureml-core.
If. vous rencontrez ce problème pour des travaux locaux, vérifiez la version de PyJWT installée dans l’environnement où vous démarrez les travaux. Les versions prises en charge de PyJWT sont ultérieures à la version 2.0.0. Désinstallez PyJWT de l’environnement si la version est antérieure à la version 2.0.0. Vous pouvez vérifier la version de PyJWT, désinstaller et installer la version correcte comme suit :
Démarrez un interpréteur de commandes, puis activez l’environnement Conda dans lequel azureml-core est installé.
Entrez pip freeze et recherchez PyJWT. Le cas échéant, la version indiquée doit être antérieure à la version 2.0.0
Si la version indiquée n’est pas une version prise en charge, exécutez pip uninstall PyJWT dans l’interpréteur de commandes et entrez « y » pour confirmer.
Installer à l’aide de pip install 'PyJWT<2.0.0'
If. vous envoyez un environnement créé par l’utilisateur avec votre travail, vous pouvez utiliser la dernière version d’azureml-core dans cet environnement. Les versions ultérieures à la version 1.18.0 d’azureml-core sont déjà compatibles avec les version de PyJWT antérieures à la version 2.0.0. Si vous devez utiliser une version d’azureml-core antérieure à la version 1.18.0 dans l’environnement que vous envoyez, veillez à spécifier une version de PyJWT antérieure à la version 2.0.0 dans vos dépendances pip.
ModuleErrors (aucun module nommé) : Si vous rencontrez des erreurs de module (ModuleErrors) lors de l’envoi d’expériences dans Azure Machine Learning, le script d’entraînement attend qu’un package soit installé, mais il n’est pas ajouté. Une fois que vous avez fourni le nom du package, Azure Machine Learning installe ce dernier dans l’environnement utilisé pour votre travail d’apprentissage.
If. vous utilisez des Estimateurs pour soumettre des expériences, vous pouvez spécifier un nom de package à l’aide du paramètre pip_packages ou conda_packages 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 de conda_dependencies_file ou 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 :
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 (objet sans attribut) : Cette exception doit provenir de vos scripts d’apprentissage. Vous pouvez consulter les fichiers journaux du portail Azure pour obtenir des informations supplémentaire sur l’erreur de nom non défini ou 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. Veillez à examiner votre script d’apprentissage et à corriger l’erreur avant de renvoyer 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.
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 :
En interne, Azure Machine Learning concatène les blocs portant le même nom d’indicateur de performance dans une liste contiguë.
Le démarrage de la cible de calcul prend beaucoup de temps : 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 registre ACR du 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 pour Azure Container Registry.
Azure HPC est une fonctionnalité cloud conçue spécialement pour les charges de travail HPC et IA, qui utilise des processeurs de pointe et une interconnexion InfiniBand de classe HPC pour offrir les meilleures performances, scalabilité et valeur aux applications. Azure HPC permet aux utilisateurs de laisser libre cours à l’innovation, la productivité et l’agilité métier grâce à une gamme de technologies HPC et IA hautement disponibles qui peuvent être allouées dynamiquement à mesure que vos besoins technico
Gérer l’ingestion et la préparation des données, l’entraînement et le déploiement des modèles, ainsi que la surveillance des solutions d’apprentissage automatique avec Python, Azure Machine Learning et MLflow.
Créez et gérez des environnements pour l’entraînement et le déploiement de modèles avec CLI v1. Gérez des packages Python et d’autres paramètres pour l’environnement.
Les scientifiques des données et les développeurs d’IA utilisent le Kit de développement logiciel (SDK) Azure Machine Learning pour Python afin de créer et d’exécuter des flux de travail Machine Learning.
Découvrez les environnements d’apprentissage automatique qui permettent des définitions de dépendance d’apprentissage automatique reproductibles, auditables et portables sur diverses cibles de calcul.
Découvrez comment utiliser l’interface CLI Azure Machine Learning ou le Kit de développement logiciel (SDK) Python pour créer et utiliser différents emplacements et types de modèles inscrits.
Découvrez comment créer des clusters de calcul dans votre espace de travail Azure Machine Learning. Utilisez le cluster de calcul en tant que cible de calcul pour l’entraînement ou l’inférence.