Partager via


Entraîner un modèle à l’aide d’une image Docker personnalisée

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. Sdk v1 est déconseillé depuis le 31 mars 2025. La prise en charge 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 SDK v2, consultez Qu’est-ce qu’Azure Machine Learning CLI et le SDK Python v2 ? et la référence du SDK v2.

Cet article explique comment utiliser une image Docker personnalisée pour entraîner des modèles avec Azure Machine Learning. Les exemples de scripts montrent comment classifier des images en créant un réseau neuronal convolutionnel.

Azure Machine Learning fournit une image de base par défaut. Vous pouvez également utiliser des environnements Azure Machine Learning pour spécifier une autre image de base, telle qu’une image de base Azure Machine Learning gérée ou votre propre image personnalisée. Les images de base personnalisées vous permettent de gérer étroitement vos dépendances et de maintenir un contrôle plus étroit sur les versions des composants lorsque vous exécutez des travaux d’entraînement.

Prérequis

Pour exécuter l’exemple de code, votre configuration doit inclure l’un des environnements suivants :

Configurer une expérience de formation

La première tâche consiste à configurer votre expérience de formation en initialisant un espace de travail Machine Learning, en définissant votre environnement et en configurant une cible de calcul.

Initialiser un espace de travail

L’espace de travail Azure Machine Learning est la ressource de niveau supérieur du service. Il vous donne un emplacement centralisé pour travailler avec tous les artefacts que vous créez. Dans le kit de développement logiciel (SDK) Python, vous pouvez accéder aux artefacts de l’espace de travail en créant un objet Workspace.

Si nécessaire, créez un Workspace objet à partir du fichier config.json que vous avez créé en tant que prérequis.

from azureml.core import Workspace

ws = Workspace.from_config()

Définir votre environnement

Créez un objet Environment.

from azureml.core import Environment

fastai_env = Environment("fastai2")

L'image de base spécifiée dans le code suivant prend en charge la bibliothèque fast.ai, qui permet des capacités de deep-learning distribuées. Pour plus d’informations, consultez le référentiel Docker Hub fast.ai.

Lorsque vous utilisez votre image Docker personnalisée, vous pouvez déjà configurer correctement votre environnement Python. Dans ce cas, définissez l’user_managed_dependenciesindicateur sur True pour utiliser l’environnement Python intégré de votre image personnalisée. Par défaut, Azure Machine Learning crée un environnement Conda avec les dépendances que vous avez spécifiées. Le service exécute le script dans cet environnement au lieu d’utiliser des bibliothèques Python que vous avez installées sur l’image de base.

fastai_env.docker.base_image = "fastdotai/fastai2:latest"
fastai_env.python.user_managed_dependencies = True

Important

Azure Machine Learning prend uniquement en charge les images Docker qui fournissent les logiciels suivants :

  • Ubuntu 18.04 ou version ultérieure
  • Conda 4.7.# ou version ultérieure
  • Python 3.7+
  • Un interpréteur de commandes compatible POSIX disponible sur /bin/sh est requis dans n’importe quelle image conteneur utilisée pour l’entraînement

Pour plus d’informations sur la création et la gestion d’environnements Azure Machine Learning, consultez créer et utiliser des environnements logiciels.

Créer ou attacher une cible de calcul

Vous devez créer une cible de calcul pour la formation de votre modèle. Dans ce tutoriel, vous allez créer AmlCompute comme ressource de calcul de formation.

La création de AmlCompute prend quelques minutes. Si laAmlCompute ressource figure déjà dans votre espace de travail, ce code ignore le processus de création.

À l’instar d’autres services Azure, certaines ressources (par exemple, AmlCompute) associées au service Azure Machine Learning présentent des limites. Pour plus d'informations, consultez Limites par défaut et comment demander un quota plus élevé.

from azureml.core.compute import ComputeTarget, AmlCompute
from azureml.core.compute_target import ComputeTargetException

# Choose a name for your cluster
cluster_name = "gpu-cluster"

try:
    compute_target = ComputeTarget(workspace=ws, name=cluster_name)
    print('Found existing compute target.')
except ComputeTargetException:
    print('Creating a new compute target...')
    compute_config = AmlCompute.provisioning_configuration(vm_size='STANDARD_NC6',
                                                           max_nodes=4)

    # Create the cluster
    compute_target = ComputeTarget.create(ws, cluster_name, compute_config)

    compute_target.wait_for_completion(show_output=True)

# Use get_status() to get a detailed status for the current AmlCompute
print(compute_target.get_status().serialize())

Important

Utilisez les références CPU pour toute création d’image sur le calcul.

Configurer votre tâche d’entraînement

Pour ce tutoriel, utilisez le script de formation train.py sur GitHub. Dans la pratique, vous pouvez utiliser n’importe quel script de formation personnalisé et l’exécuter, comme c’est le cas, avec Azure Machine Learning.

Créez ScriptRunConfig une ressource pour configurer votre travail en vue de son exécution sur lacible de calculsouhaitée.

from azureml.core import ScriptRunConfig

src = ScriptRunConfig(source_directory='fastai-example',
                      script='train.py',
                      compute_target=compute_target,
                      environment=fastai_env)

Envoyer votre tâche d’entraînement

Lorsque vous soumettez une exécution d’apprentissage à l’aide d’un ScriptRunConfig objet, la submit méthode retourne un objet de type ScriptRun. L’objet ScriptRun retourné vous donne un accès par programmation aux informations sur l’exécution de l’apprentissage.

from azureml.core import Experiment

run = Experiment(ws,'Tutorial-fastai').submit(src)
run.wait_for_completion(show_output=True)

Avertissement

Azure Machine Learning exécute des scripts 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. Au lieu de cela, accédez à vos données à l’aide d’un magasin de données.