Sur AI Platform Training, les conteneurs constituent une fonctionnalité qui vous permet d'exécuter votre application dans une image Docker. Vous pouvez créer votre propre conteneur personnalisé pour exécuter des tâches sur AI Platform Training grâce à des versions et frameworks de ML, ainsi qu'à l'aide de dépendances, de bibliothèques et de binaires hors ML qui ne sont autrement pas disponibles sur AI Platform Training.
Fonctionnement de l'entraînement avec des conteneurs
Votre application d'entraînement, mise en œuvre dans le framework de ML de votre choix, se trouve au cœur du processus d'entraînement.
- Créez une application qui entraîne votre modèle à l'aide du framework de ML de votre choix.
- Déterminez si vous souhaitez utiliser un conteneur personnalisé. Une version d'exécution existante prend peut-être déjà en charge vos dépendances. Dans le cas contraire, vous devez créer un conteneur personnalisé pour votre tâche d'entraînement. Dans le conteneur personnalisé, pré-installez votre application d'entraînement et toutes ses dépendances sur une image avec laquelle vous exécuterez la tâche d'entraînement.
- Stockez vos données d'entraînement et de validation dans une source à laquelle AI Platform Training peut accéder. Cela implique généralement de les placer dans Cloud Storage, Bigtable ou un autre service de stockage Google Cloud associé au projet Google Cloud que vous utilisez pour AI Platform Training.
- Lorsque l'application est prête à être exécutée, vous devez créer votre image Docker et la stocker dans Container Registry, afin de vous assurer que le service AI Platform Training peut accéder à votre registre.
- Envoyez la tâche à l'aide de
gcloud ai-platform jobs submit training
, en spécifiant vos arguments dans un fichierconfig.yaml
ou les optionsgcloud
correspondantes. - Le service d'entraînement AI Platform Training configure des ressources pour votre tâche. Il alloue une ou plusieurs machines virtuelles (appelées instances d'entraînement) en fonction de la configuration de la tâche. Configurez une instance d'entraînement à l'aide du conteneur personnalisé que vous spécifiez dans le cadre de l'objet
TrainingInput
lorsque vous envoyez la tâche d'entraînement. - Le service d'entraînement exécute l'image Docker en transmettant tous les arguments de ligne de commande que vous spécifiez lors de la création de la tâche d'entraînement.
- Vous pouvez obtenir des informations sur la tâche en cours de différentes manières :
- Dans Cloud Logging. Vous trouverez un lien vers les journaux de tâches sur la page "Tâches" d'AI Platform Training dans la console Google Cloud.
- En demandant des informations sur la tâche ou en exécutant le flux de journal à l'aide de l'outil de ligne de commande
gcloud
(plus précisément,gcloud ai-platform jobs stream-logs
) - En envoyant de manière automatisée des demandes d'état au service d'entraînement, à l'aide de la méthode
projects.jobs.get
. Pour en savoir plus, consultez la page décrivant comment surveiller des tâches d'entraînement.
- Lorsque votre tâche d'entraînement réussit ou rencontre une erreur irrécupérable, AI Platform Training interrompt tous les processus de la tâche, puis effectue un nettoyage des ressources.
Avantages des conteneurs personnalisés
Les conteneurs personnalisés vous permettent de spécifier et de pré-installer toutes les dépendances nécessaires à votre application.
- Démarrage plus rapide. Si vous utilisez un conteneur personnalisé sur lequel vos dépendances sont pré-installées, vous pouvez gagner le temps dont votre application d'entraînement aurait besoin pour installer les dépendances lors du démarrage.
- Utilisation du framework de ML de votre choix. Si vous ne trouvez pas de version d'exécution d'AI Platform Training compatible avec le framework de ML que vous souhaitez utiliser, vous pouvez créer un conteneur personnalisé qui installe le framework de votre choix et l'utilise pour exécuter des tâches sur AI Platform Training. Par exemple, vous pouvez procéder à un entraînement à l'aide de PyTorch.
- Compatibilité étendue pour l'entraînement distribué. Avec des conteneurs personnalisés, vous pouvez procéder à un entraînement distribué à l'aide de n'importe quel framework de ML.
- Utilisation de la version la plus récente. Vous pouvez également exploiter le dernier build ou la dernière version mineure d'un framework de ML. Vous pouvez par exemplecréer un conteneur personnalisé pour effectuer un entraînement avec
tf-nightly
.
Régler les hyperparamètres avec des conteneurs personnalisés
Pour régler les hyperparamètres sur AI Platform Training, vous devez spécifier une métrique correspondant à l'objectif et indiquer si elle doit être minimisée ou maximisée. Par exemple, vous souhaiterez peut-être maximiser la justesse de votre modèle ou minimiser sa perte. Vous répertoriez également les hyperparamètres que vous souhaitez ajuster, ainsi qu'une valeur cible pour chacun d'entre eux. AI Platform Training effectue plusieurs essais de votre application d'entraînement, en suivant et en ajustant les hyperparamètres après chaque essai. Une fois la tâche de réglage d'hyperparamètres terminée, AI Platform Training rapporte les valeurs correspondant à la configuration la plus efficace de vos hyperparamètres, et fournit un résumé de chaque essai.
Pour régler les hyperparamètres avec des conteneurs personnalisés, vous devez procéder aux ajustements suivants :
- Dans votre Dockerfile, installez
cloudml-hypertune
. - Dans votre code d'entraînement :
- Utilisez
cloudml-hypertune
pour signaler les résultats de chaque essai en appelant sa fonction d'aide,report_hyperparameter_tuning_metric
. - Ajoutez des arguments de ligne de commande pour chaque hyperparamètre et gérez l'argument d'analyse avec un analyseur d'arguments tel que
argparse
.
- Utilisez
- Dans votre requête de tâche, ajoutez un élément
HyperparameterSpec
à l'objetTrainingInput
.
Consultez un exemple d'entraînement avec des conteneurs personnalisés utilisant le réglage d'hyperparamètres ou découvrez le fonctionnement du réglage d'hyperparamètres sur AI Platform Training.
Utiliser des GPU avec des conteneurs personnalisés
En cas d'entraînement avec des GPU, votre conteneur personnalisé doit répondre à quelques exigences particulières. Vous devez créer une image Docker différente de celle que vous utiliseriez pour l'entraînement avec des processeurs.
- Préinstallez CUDA Toolkit et cuDNN dans votre image Docker. L'utilisation de l'image
nvidia/cuda
comme image de base est recommandée. Les versions correspondantes de CUDA Toolkit et de cuDNN y sont préinstallées, ce qui vous aide à configurer correctement les variables d'environnement associées. - Installez votre application d'entraînement, ainsi que le framework de ML requis et d'autres dépendances, dans votre image Docker.
Consultez un exemple de fichier Dockerfile pour l'entraînement avec des GPU.
Étapes suivantes
- Apprenez à utiliser des conteneurs personnalisés pour vos jobs d'entraînement.
- Apprenez-en plus sur l'entraînement distribué avec des conteneurs personnalisés.