Présentation des conteneurs

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.

  1. Créez une application qui entraîne votre modèle à l'aide du framework de ML de votre choix.
  2. 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.
  3. 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 même projet Google Cloud que celui utilisé pour AI Platform Training.
  4. 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.
  5. Envoyez la tâche à l'aide de gcloud ai-platform jobs submit training, en spécifiant vos arguments dans un fichier config.yaml ou les options gcloud correspondantes.
  6. 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.
  7. 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.
  8. Vous pouvez obtenir des informations sur la tâche en cours de différentes manières :
  9. 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.
  • Dans votre requête de tâche, ajoutez un élément HyperparameterSpec à l'objet TrainingInput.

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