Présentation de l'entraînement personnalisé

Vertex AI fournit un service d'entraînement géré qui vous permet d'opérationnaliser l'entraînement de modèles à grande échelle. Vous pouvez utiliser Vertex AI pour exécuter des applications d'entraînement basées sur n'importe quel framework de machine learning (ML) sur l'infrastructure Google Cloud. Pour les frameworks de ML populaires suivants, Vertex AI offre également une compatibilité intégrée qui simplifie le processus de préparation pour l'entraînement et l'inférence des modèles :

Cette page explique les avantages de l'entraînement personnalisé sur Vertex AI, le workflow impliqué et les différentes options d'entraînement disponibles.

Vertex AI rend l'entraînement opérationnel à grande échelle

L'opérationnalisation de l'entraînement de modèle présente plusieurs défis. Ces défis incluent le temps et les coûts nécessaires pour entraîner des modèles, la profondeur des compétences requises pour gérer l'infrastructure de calcul et la nécessité de fournir une sécurité de niveau entreprise. Vertex AI résout ces problèmes tout en offrant de nombreux autres avantages.

Infrastructure de calcul entièrement gérée

Infrastructure gérée

L'entraînement des modèles sur Vertex AI est un service entièrement géré qui ne nécessite aucune administration de l'infrastructure physique. Vous pouvez entraîner des modèles de ML sans avoir à provisionner ou à gérer des serveurs. Vous ne payez que les ressources de calcul que vous consommez. Vertex AI gère également la journalisation, la mise en file d'attente et la surveillance des jobs.

Hautes performances

Hautes performances

Les jobs d'entraînement Vertex AI sont optimisés pour l'entraînement des modèles de ML, offrant ainsi des performances plus rapides que si vous exécutiez directement votre application d'entraînement sur un cluster GKE. Vous pouvez également identifier et déboguer les goulots d'étranglement de performance dans votre job d'entraînement à l'aide de Vertex AI TensorBoard Profiler.

Entraînement distribué

Entraînement distribué

Reduction Server est un algorithme entièrement réduit de Vertex AI qui peut augmenter le débit et réduire la latence de l'entraînement distribué sur plusieurs nœuds sur les processeurs graphiques (GPU) NVIDIA. Cette optimisation permet de réduire le temps et les coûts liés à l'exécution de jobs d'entraînement volumineux.

Optimisation des hyperparamètres

Réglages d'hyperparamètres

Les jobs de réglage d'hyperparamètres exécutent plusieurs essais de votre application d'entraînement en utilisant différentes valeurs d'hyperparamètres. Vous spécifiez une plage de valeurs à tester, et Vertex AI détecte les valeurs optimales pour votre modèle dans cette plage.

Sécurité d'entreprise

Sécurité d'entreprise

Vertex AI fournit les fonctionnalités de sécurité d'entreprise suivantes :

Intégrations des opérations de ML (MLOps)

MLOps

Vertex AI fournit une suite d'outils MLOps intégrés et de fonctionnalités que vous pouvez utiliser aux fins suivantes :

  • Orchestrer des workflows de ML de bout en bout
  • Effectuer une extraction de caractéristiques
  • Effectuer des tests
  • Gérer et itérer vos modèles
  • Suivre les métadonnées de ML
  • Surveiller et évaluer la qualité des modèles

Workflow d'entraînement personnalisé

Le schéma suivant présente une vue d'ensemble du workflow d'entraînement personnalisé sur Vertex AI. Les sections ci-dessous décrivent chaque étape en détail.

Workflow d'entraînement personnalisé.

Charger et préparer les données d'entraînement

Pour des performances et une assistance optimales, utilisez l'un des services Google Cloud suivants comme source de données :

Vous pouvez également spécifier un ensemble de données géré Vertex AI en tant que source de données lorsque vous utilisez un pipeline d'entraînement pour entraîner votre modèle. L'entraînement d'un modèle personnalisé et d'un modèle AutoML utilisant le même ensemble de données vous permet de comparer les performances des deux modèles.

Préparer l'application d'entraînement

Pour préparer votre application d'entraînement afin de l'utiliser sur Vertex AI, procédez comme suit :

  • Mettez en œuvre les bonnes pratiques de code d'entraînement pour Vertex AI.
  • Déterminez un type d'image de conteneur à utiliser.
  • Empaquetez votre application d'entraînement dans un format compatible en fonction du type d'image de conteneur sélectionné.

Mettre en œuvre les bonnes pratiques de code d'entraînement

Votre application d'entraînement doit mettre en œuvre les bonnes pratiques liées au code d'entraînement pour Vertex AI. Ces bonnes pratiques portent sur la capacité de votre application d'entraînement à effectuer les opérations suivantes :

  • Accéder aux services Google Cloud
  • Charger les données d'entrée
  • Activez la journalisation automatique pour le suivi des tests.
  • Exporter des artefacts de modèles
  • Utiliser les variables d'environnement de Vertex AI
  • Assurer la résilience aux redémarrages des VM

Sélectionner un type de conteneur

Vertex AI exécute votre application d'entraînement dans une image de conteneur Docker. Une image de conteneur Docker est un package logiciel autonome qui inclut du code et toutes les dépendances, et peut s'exécuter dans presque tous les environnements informatiques. Vous pouvez spécifier l'URI d'une image de conteneur prédéfinie à utiliser, ou créer et importer une image de conteneur personnalisée sur laquelle votre application d'entraînement et vos dépendances sont préinstallées.

Le tableau suivant montre les différences entre les images de conteneurs prédéfinies et personnalisées :

Spécifications Images de conteneurs prédéfinies Images de conteneurs personnalisées
ML framework Chaque image de conteneur est spécifique à un framework de ML. Utilisez n'importe quel framework de ML ou n'en utilisez aucun.
Version du framework de ML Chaque image de conteneur est spécifique à une version du framework de ML. Utilisez n'importe quelle version de framework de ML, y compris les versions mineures et les builds automatiques.
Dépendances de l'application Les dépendances courantes du framework de ML sont préinstallées. Vous pouvez spécifier des dépendances supplémentaires à installer dans votre application d'entraînement. Préinstallez les dépendances dont votre application d'entraînement a besoin.
Format de déploiement d'applications
  • Distribution source Python
  • Fichier Python unique
Préinstallez l'application d'entraînement dans l'image de conteneur personnalisé.
Difficulté de la configuration Faible Élevés
Recommandations pour… Applications d'entraînement Python basées sur un framework de ML et une version de framework avec une image de conteneur prédéfinie disponible.
  • Personnalisation et contrôle accrus.
  • Applications d'entraînement non-Python.
  • Dépendances privées ou personnalisées.
  • Applications d'entraînement utilisant un framework de ML ou une version de framework sur laquelle aucune image de conteneur prédéfinie n'est disponible.

Empaqueter l'application d'entraînement

Une fois que vous avez déterminé le type d'image de conteneur à utiliser, empaquetez votre application d'entraînement dans l'un des formats suivants en fonction du type d'image de conteneur :

  • Fichier Python unique à utiliser dans un conteneur prédéfini

    Écrivez votre application d'entraînement en tant que fichier Python unique et utilisez le SDK Vertex AI pour Python pour créer une classe CustomJob ou CustomTrainingJob. Le fichier Python est empaqueté dans une distribution source Python et installé dans une image de conteneur prédéfinie. La diffusion de votre application d'entraînement sous la forme d'un seul fichier Python convient au prototypage. Pour les applications d'entraînement en production, vous disposerez probablement d'une application d'entraînement organisée dans plusieurs fichiers.

  • Distribution source Python à utiliser dans un conteneur prédéfini

    Empaquetez votre application d'entraînement dans une ou plusieurs distributions source Python, puis importez-les dans un bucket Cloud Storage. Vertex AI installe les distributions sources dans une image de conteneur prédéfinie lorsque vous créez un job d'entraînement.

  • Image de conteneur personnalisé

    Créez votre propre image de conteneur Docker sur laquelle votre application d'entraînement et vos dépendances sont préinstallées, puis importez-la dans Artifact Registry. Si votre application d'entraînement est écrite en Python, vous pouvez effectuer ces étapes à l'aide d'une commande Google Cloud CLI.

Configurer le job d'entraînement

Un job d'entraînement Vertex AI effectue les tâches suivantes :

  • Provisionne une machine virtuelle (entraînement à nœud unique) ou plusieurs (entraînement distribué).
  • Exécute votre application d'entraînement conteneurisée sur des VM provisionnées.
  • Supprime les VM une fois le job d'entraînement terminé.

Vertex AI propose trois types de jobs d'entraînement pour l'exécution de votre application d'entraînement :

  • Job personnalisé

    Un job personnalisé (CustomJob) exécute votre application d'entraînement. Si vous utilisez une image de conteneur prédéfinie, les artefacts de modèle sont générés dans le bucket Cloud Storage spécifié. Pour les images de conteneurs personnalisées, votre application d'entraînement peut également générer des artefacts de modèle dans d'autres emplacements.

  • Job de réglage des hyperparamètres

    Un job de réglage des hyperparamètres (HyperparameterTuningJob) exécute plusieurs essais de votre application d'entraînement en utilisant des valeurs d'hyperparamètres différentes jusqu'à la production d'artefacts de modèle avec l'hyperparamètre optimal. Vous spécifiez la plage de valeurs des hyperparamètres à tester et les métriques à optimiser.

  • Pipeline d'entraînement

    Un pipeline d'entraînement (CustomTrainingJob) exécute un job personnalisé ou un job de réglage des hyperparamètres et peut également exporter les artefacts de modèle vers Vertex AI pour créer une ressource de modèle. Vous pouvez spécifier un ensemble de données géré Vertex AI comme source de données.

Lorsque vous créez un job d'entraînement, vous devez spécifier les ressources de calcul à utiliser pour exécuter votre application d'entraînement et configurer les paramètres de conteneur.

Configurations de calcul

Spécifiez les ressources de calcul à utiliser pour un job d'entraînement. Vertex AI accepte l'entraînement à nœud unique, où le job d'entraînement s'exécute sur une VM, et l'entraînement distribué, où le job d'entraînement s'exécute sur plusieurs VM.

Les ressources de calcul que vous pouvez spécifier pour votre job d'entraînement sont les suivantes :

  • Type de machine d'une VM

    Différents types de machines offrent des processeurs, une taille de mémoire et une bande passante différents.

  • Processeurs graphiques (GPU)

    Vous pouvez ajouter un ou plusieurs GPU aux VM de type A2 ou N1. Si votre application d'entraînement est conçue pour utiliser des GPU, l'ajout de GPU peut considérablement améliorer les performances.

  • TPU (Tensor Processing Unit)

    Les TPU sont conçus spécifiquement pour accélérer les charges de travail de machine learning. Lorsque vous utilisez une VM TPU pour l'entraînement, vous ne pouvez spécifier qu'un seul pool de nœuds de calcul. Ce pool ne peut avoir qu'une seule instance répliquée.

  • Disques de démarrage

    Vous pouvez utiliser des disques SSD ou HDD pour votre disque de démarrage. Si votre application d'entraînement lit et écrit sur le disque, l'utilisation de disques SSD peut améliorer les performances. Vous pouvez également spécifier la taille de votre disque de démarrage en fonction de la quantité de données temporaires que votre application d'entraînement écrit sur le disque. Les disques de démarrage peuvent être compris entre 100 Gio (par défaut) et 64 000 Gio. Toutes les VM d'un pool de nœuds de calcul utilisent le même type et la même taille de disque de démarrage.

Configurations de conteneur

Les configurations de conteneurs que vous devez effectuer varient selon que vous utilisez une image de conteneur prédéfinie ou personnalisée.

  • Configurations de conteneurs prédéfinis :

    • Spécifiez l'URI de l'image de conteneur prédéfinie que vous souhaitez utiliser.
    • Si votre application d'entraînement est empaquetée en tant que distribution source Python, spécifiez l'URI Cloud Storage où se trouve le package.
    • Spécifiez le module de point d'entrée de votre application d'entraînement.
    • Facultatif : spécifiez une liste d'arguments de ligne de commande à transmettre au module de point d'entrée de votre application d'entraînement.
  • Configurations de conteneurs personnalisés :

    • Spécifiez l'URI de votre image de conteneur personnalisé, qui peut être un URI d'Artifact Registry ou de Docker Hub.
    • Facultatif : Remplacez les instructions ENTRYPOINT ou CMD dans votre image de conteneur.

Créer un job d'entraînement

Une fois vos données et votre application d'entraînement préparées, exécutez l'application d'entraînement en créant l'un des jobs d'entraînement suivants :

Pour créer le job d'entraînement, vous pouvez utiliser la console Google Cloud, Google Cloud CLI, le SDK Vertex AI pour Python ou l'API Vertex AI.

(Facultatif) Importer des artefacts de modèle dans Vertex AI

Votre application d'entraînement génère probablement un ou plusieurs artefacts de modèle vers un emplacement spécifié, généralement un bucket Cloud Storage. Avant d'obtenir des prédictions dans Vertex AI à partir de vos artefacts de modèle, vous devez d'abord importer les artefacts de modèle dans Vertex AI Model Registry.

Comme les images de conteneurs pour l'entraînement, Vertex AI vous permet d'utiliser des images de conteneurs prédéfinies ou personnalisées pour les prédictions. Si une image de conteneur prédéfinie pour les prédictions est disponible pour votre framework de ML et votre version de framework, nous vous recommandons d'utiliser une image de conteneur prédéfinie.

Étapes suivantes