Emplacement où enregistrer et écrire des fichiers pour les expériences de Azure Machine Learning

S’APPLIQUE À :SDK Python azureml v1

Dans cet article, vous découvrez où enregistrer les fichiers d’entrée et où écrire les fichiers de sortie de vos expériences pour empêcher les erreurs de limites de stockage et la latence des expériences.

Quand des tâches d’entraînement sont lancées sur une cible de calcul, elles sont isolées des environnements extérieurs. L’objectif de cette conception est de garantir la reproductibilité et la portabilité des expériences. Si vous exécutez deux fois le même script sur la même cible de calcul ou sur une autre cible, vous obtenez les mêmes résultats. Grâce à cette conception, vous pouvez traiter les cibles de calcul comme des ressources de calcul sans état, chacune d’entre elles n’ayant aucune affinité avec les travaux exécutés une fois qu’ils sont terminés.

Emplacement où enregistrer les fichiers d’entrée

Avant de pouvoir démarrer une expérience sur une cible de calcul ou sur votre ordinateur local, vous devez vérifier que les fichiers nécessaires sont disponibles pour cette cible de calcul, comme les fichiers de dépendance et les fichiers de données dont votre code a besoin pour s’exécuter.

Azure Machine Learning exécute des scripts de tâches d’entraînement en copiant l’intégralité du répertoire source. Si vous avez des données sensibles que vous ne souhaitez pas charger, utilisez un fichier .ignore ou ne l’incluez pas dans le répertoire source. À la place, accédez à vos données à l’aide d’un magasin de données.

La limite de stockage pour les instantanés d’expérience est de 300 Mo et/ou de 2 000 fichiers.

C’est pourquoi nous vous recommandons d’effectuer les opérations suivantes :

  • Stocker vos fichiers dans un jeu de données Azure Machine Learning. Cela évite les problèmes de latence des expériences et présente l’avantage d’un accès aux données à partir d’une cible de calcul distante, ce qui signifie que l’authentification et le montage sont gérés par Azure Machine Learning. Pour savoir comment spécifier un jeu de données comme source de données d’entrée dans votre script d’entraînement, consultez Entraîner avec des jeux de données.

  • Si vous avez besoin de seulement quelques fichiers de données et scripts de dépendance, et que vous ne pouvez pas utiliser un magasin de données, placez les fichiers dans le même répertoire de dossier que votre script d’entraînement. Spécifiez ce dossier comme votre source_directory directement dans votre script d’entraînement ou dans le code qui appelle votre script d’entraînement.

Limites de stockage des instantanés d’expérience

Pour les expériences, Azure Machine Learning crée automatiquement un instantané d’expérience de votre code en fonction du répertoire que vous suggérez quand vous configurez la tâche. Pour un pipeline, le répertoire est configuré pour chaque étape.

Cela a une limite totale de 300 Mo et/ou de 2000 fichiers. Si vous dépassez cette limite, l’erreur suivante s’affiche :

While attempting to take snapshot of .
Your total snapshot size exceeds the limit of 300.0 MB

Pour résoudre cette erreur, stockez vos fichiers d’expérience sur un magasin de données. Si vous ne pouvez pas utiliser un magasin de données, le tableau ci-dessous propose des solutions alternatives possibles.

Description de l’expérience Solution à la limite de stockage
Moins de 2 000 fichiers et impossibilité d’utiliser un magasin de données Remplacez la limite de taille des captures instantanées par
azureml._restclient.snapshots_client.SNAPSHOT_MAX_SIZE_BYTES = 'insert_desired_size' et azureml._restclient.constants.SNAPSHOT_MAX_SIZE_BYTES = 'insert_desired_size'
Cette opération peut durer plusieurs minutes en fonction de la taille des fichiers et de leur nombre.
Obligation d’utiliser un répertoire de scripts spécifique 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.
Pipeline Utilisez un autre sous-répertoire pour chaque étape.
Notebooks Jupyter Créez un fichier .amlignore ou déplacez votre notebook vers un nouveau sous-répertoire vide, puis réexécutez votre code.

Emplacement où écrire les fichiers

En raison de l’isolation des expériences d’entraînement, les changements apportés aux fichiers qui se produisent lors des tâches ne sont pas nécessairement conservés en dehors de votre environnement. Si votre script modifie le chemin local des fichiers pour le calcul, les changements ne sont pas conservés pour votre prochaine tâche d’expérience, et ils ne sont pas automatiquement propagés vers l’ordinateur client. Par conséquent, les changements apportés pendant la première tâche de l’expérience n’affectent pas, et ne doivent pas affecter, ceux de la deuxième.

Lorsque vous effectuez des modifications, nous vous recommandons d’écrire les fichiers dans le stockage par le biais d’un jeu de données Azure Machine Learning avec un objet OutputFileDatasetConfig. Voir comment créer un objet OutputFileDatasetConfig.

Sinon, écrivez les fichiers dans le dossier ./outputs et/ou le dossier ./logs.

Important

Deux dossiers, outputs et logs, reçoivent un traitement spécial de la part d’Azure Machine Learning. Pendant l’entraînement, quand vous écrivez des fichiers dans les dossiers ./outputs and./logs, les fichiers sont automatiquement chargés dans votre historique des tâches. Vous pouvez ainsi y accéder une fois la tâche terminée.

  • Pour la sortie, comme des messages d’état ou des résultats de notation, écrivez les fichiers dans le dossier ./outputs afin qu’ils soient conservés en tant qu’artefacts dans l’historique des tâches. Soyez attentif au nombre de fichiers écrits dans ce dossier ainsi qu’à leur taille, car il peut se produire une latence quand le contenu est chargé dans l’historique des tâches. Si la latence pose problème, il est recommandé d’écrire les fichiers dans un magasin de données.

  • Pour enregistrer les fichiers écrits sous forme de journaux dans l’historique des tâches, écrivez-les dans le dossier ./logs. Les journaux sont chargés en temps réel. Cette méthode convient donc pour le streaming des mises à jour automatiques à partir d’une tâche à distance.

Étapes suivantes