Classes d'entraînement

Le SDK Vertex AI inclut plusieurs classes que vous utilisez lorsque vous entraînez votre modèle. La plupart des classes d'entraînement sont utilisées pour créer, entraîner et renvoyer votre modèle. Utilisez HyperparameterTuningJob pour régler les hyperparamètres du job d'entraînement. Utilisez PipelineJob pour gérer votre workflow de machine learning (ML) afin de pouvoir automatiser et surveiller vos systèmes de ML.

Les articles suivants fournissent une description détaillée de chaque classe liée à l'entraînement dans le SDK Vertex AI.

Classes d'entraînement AutoML pour les données structurées

Le SDK Vertex AI inclut les classes suivantes qui sont utilisées pour entraîner un modèle AutoML structuré.

AutoMLForecastingTrainingJob

La classe AutoMLForecastingTrainingJob utilise la méthode d'entraînement AutoML pour entraîner et exécuter un modèle de prévision. La méthode d'entraînement AutoML est un bon choix pour la plupart des cas d'utilisation des prévisions. Si votre cas d'utilisation ne bénéficie pas de la méthode d'entraînement Seq2seq ou Temporal fusion transformer proposée par les classes SequenceToSequencePlusForecastingTrainingJob et TemporalFusionTransformerForecastingTrainingJob respectivement, alors AutoML est probablement la meilleure méthode d'entraînement pour vos prédictions de prévisions.

Pour obtenir un exemple de code illustrant comment utiliser AutoMLForecastingTrainingJob, consultez l'exemple "Créer une prévision de pipeline d'entraînement" sur GitHub.

AutoMLTabularTrainingJob

La classe AutoMLTabularTrainingJob représente un job qui crée, entraîne et renvoie un modèle tabulaire AutoML. Pour en savoir plus sur l'entraînement de modèles tabulaires et Vertex AI, consultez les sections Données tabulaires et Présentation des données tabulaires.

L'exemple d'extrait de code suivant vous montre comment vous pouvez utiliser le SDK Vertex AI pour créer et exécuter un modèle tabulaire AutoML :

dataset = aiplatform.TabularDataset('projects/my-project/location/us-central1/datasets/{DATASET_ID}')

job = aiplatform.AutoMLTabularTrainingJob(
  display_name="train-automl",
  optimization_prediction_type="regression",
  optimization_objective="minimize-rmse",
)

model = job.run(
    dataset=dataset,
    target_column="target_column_name",
    training_fraction_split=0.6,
    validation_fraction_split=0.2,
    test_fraction_split=0.2,
    budget_milli_node_hours=1000,
    model_display_name="my-automl-model",
    disable_early_stopping=False,
)

SequenceToSequencePlusForecastingTrainingJob

La classe SequenceToSequencePlusForecastingTrainingJob utilise la méthode d'entraînement Seq2seq+ pour entraîner et exécuter un modèle de prévision. La méthode d'entraînement Seq2seq+ est un bon choix pour les tests. Son algorithme est plus simple et utilise un espace de recherche plus petit que l'option AutoML. Seq2seq+ est une bonne option si vous souhaitez obtenir des résultats rapides et que vos ensembles de données sont inférieurs à 1 Go.

Pour obtenir un exemple de code illustrant comment utiliser SequenceToSequencePlusForecastingTrainingJob, consultez l'exemple "Créer une prévision de pipeline d'entraînement Seq2seq" sur GitHub.

TemporalFusionTransformerForecastingTrainingJob

La classe TemporalFusionTransformerForecastingTrainingJob utilise la méthode d'entraînement Temporal Fusion Transformer (TFT) pour entraîner et exécuter un modèle de prévision. La méthode d'entraînement TFT implémente un modèle de réseau de neurones profond (DNN, Deep Neural Network) basé sur l'attention qui utilise une tâche de prévision multi-horizons pour produire des prédictions.

Pour obtenir un exemple de code illustrant comment utiliser TemporalFusionTransformerForecastingTrainingJob, consultez l'exemple "Créer un transformateur de fusion temporelle de prévision de pipeline d'entraînement" sur GitHub.

TimeSeriesDenseEncoderForecastingTrainingJob

La classe TimeSeriesDenseEncoderForecastingTrainingJob utilise la méthode d'entraînement de l'encodeur dense de séries temporelles (TiDE) pour entraîner et exécuter un modèle de prévision. TiDE utilise un perceptron à plusieurs couches (MLP) pour accélérer la prévision des modèles linéaires avec des covariées et des dépendances non linéaires. Pour plus d'informations sur TiDE, consultez la page Progressions récentes dans les prévisions à long terme et cet article de blog sur TiDE.

Classes d'entraînement AutoML pour les données non structurées

Le SDK Vertex AI inclut les classes suivantes pour entraîner des modèles d'image, de texte et de vidéos non structurés :

AutoMLImageTrainingJob

Utilisez la classe AutoMLImageTrainingJob pour créer, entraîner et renvoyer un modèle d'image. Pour en savoir plus sur l'utilisation des modèles de données d'image dans Vertex AI, consultez la section Données d'image.

Pour obtenir un exemple d'utilisation de la classe AutoMLImageTrainingJob, consultez le tutoriel dans le notebook Classification d'images AutoML.

AutoMLTextTrainingJob

Utilisez la classe AutoMLTextTrainingJob pour créer, entraîner et renvoyer un modèle de texte. Pour en savoir plus sur l'utilisation des modèles de données textuelles dans Vertex AI, consultez la section Données textuelles.

Pour obtenir un exemple d'utilisation de la classe AutoMLTextTrainingJob, consultez le tutoriel dans le notebook Entraînement AutoML d'un modèle d'extraction d'entités textuelles pour la prédiction en ligne.

AutoMLVideoTrainingJob

Utilisez la classe AutoMLVideoTrainingJob pour créer, entraîner et renvoyer un modèle vidéo. Pour en savoir plus sur l'utilisation des modèles de données vidéo dans Vertex AI, consultez la section Données vidéo.

Pour obtenir un exemple d'utilisation de la classe AutoMLVideoTrainingJob, consultez le tutoriel dans le notebook Entraînement AutoML d'un modèle de reconnaissance d'actions dans des vidéos pour les prédictions par lot.

Classes d'entraînement de données personnalisées

Vous pouvez utiliser le SDK Vertex AI pour automatiser un workflow d'entraînement personnalisé. Pour plus d'informations sur l'utilisation de Vertex AI pour exécuter des applications d'entraînement personnalisé, consultez la section Présentation de l'entraînement personnalisé.

Le SDK Vertex AI inclut trois classes qui créent un pipeline d'entraînement personnalisé. Un pipeline d'entraînement accepte en entrée un ensemble de données géré Vertex AI qu'il utilise pour entraîner un modèle. Il renvoie ensuite le modèle une fois le job d'entraînement terminé. Chacune des trois classes du pipeline d'entraînement personnalisé crée un pipeline d'entraînement différemment. CustomTrainingJob utilise un script Python, CustomContainerTrainingJob utilise un conteneur personnalisé et CustomPythonPackageTrainingJob utilise un package Python et un conteneur prédéfini.

La classe CustomJob crée un job d'entraînement personnalisé, mais il ne s'agit pas d'un pipeline. Contrairement à un pipeline d'entraînement personnalisé, la classe CustomJob peut utiliser un ensemble de données qui n'est pas un ensemble de données géré Vertex AI pour entraîner un modèle, et elle ne renvoie pas le modèle entraîné. Comme la classe accepte différents types d'ensembles de données et ne renvoie pas de modèle entraîné, elle est moins automatisée et plus flexible qu'un pipeline d'entraînement personnalisé.

CustomContainerTrainingJob

Utilisez la classe CustomContainerTrainingJob afin d'utiliser un conteneur pour lancer un pipeline d'entraînement personnalisé dans Vertex AI.

Pour obtenir un exemple d'utilisation de la classe CustomContainerTrainingJob, consultez le tutoriel dans le notebook Entraînement parallèle avec données d'image distribuées sur plusieurs nœuds pour la classification d'image PyTorch sur un GPU utilisant l'entraînement Vertex AI avec un conteneur personnalisé.

CustomJob

Utilisez la classe CustomJob afin d'utiliser un script pour lancer un job d'entraînement personnalisé dans Vertex AI.

Un job d'entraînement est plus flexible qu'un pipeline d'entraînement, car vous n'êtes pas limité au chargement de vos données dans un ensemble de données géré Vertex AI, et une référence à votre modèle n'est pas enregistrée une fois le job d'entraînement terminé. Par exemple, vous pouvez utiliser la classe CustomJob, sa méthode from_local_script et un script pour charger un ensemble de données à partir de scikit-learn ou TensorFlow. Vous pouvez également analyser ou tester votre modèle entraîné avant de l'enregistrer dans Vertex AI.

Pour plus d'informations sur les jobs d'entraînement personnalisé, y compris les conditions à remplir avant d'envoyer un job d'entraînement personnalisé, le contenu d'un job d'entraînement personnalisé et un exemple de code Python, consultez la section Créer des jobs d'entraînement personnalisé.

Comme CustomJob.run ne renvoie pas le modèle entraîné, vous devez utiliser un script pour écrire l'artefact de modèle dans un emplacement, tel qu'un bucket Cloud Storage. Pour plus d'informations, consultez la section Exporter un modèle de ML entraîné.

L'exemple de code suivant montre comment créer et exécuter un job personnalisé à l'aide d'un exemple de spécification de pool de nœuds de calcul. Le code écrit le modèle entraîné dans un bucket Cloud Storage nommé artifact-bucket.

# Create a worker pool spec that specifies a TensorFlow cassava dataset and
# includes the machine type and Docker image. The Google Cloud project ID
# is 'project-id'.
worker_pool_specs=[
     {
        "replica_count": 1,
        "machine_spec": { "machine_type": "n1-standard-8", 
                          "accelerator_type": "NVIDIA_TESLA_V100", 
                          "accelerator_count": 1
        },
        "container_spec": {"image_uri": "gcr.io/{project-id}/multiworker:cassava"}
      },
      {
        "replica_count": 1,
        "machine_spec": { "machine_type": "n1-standard-8", 
                          "accelerator_type": "NVIDIA_TESLA_V100", 
                          "accelerator_count": 1
        },
        "container_spec": {"image_uri": "gcr.io/{project-id}/multiworker:cassava"}
      }
]

# Use the worker pool spec to create a custom training job. The custom training 
# job artifacts are stored in the Cloud Storage bucket
# named 'artifact-bucket'.
your_custom_training_job = aiplatform.CustomJob(
                                      display_name='multiworker-cassava-sdk',
                                      worker_pool_specs=worker_pool_specs,
                                      staging_bucket='gs://{artifact-bucket}')

# Run the training job. This method doesn't return the trained model.
my_multiworker_job.run()

CustomPythonPackageTrainingJob

Utilisez la classe CustomPythonPackageTrainingJob afin d'utiliser un package Python pour lancer un pipeline d'entraînement personnalisé dans Vertex AI.

Pour obtenir un exemple d'utilisation de la classe CustomPythonPackageTrainingJob, consultez le tutoriel dans le notebook Entraînement personnalisé à l'aide d'un package Python, d'un ensemble de données de texte géré et d'un conteneur TensorFlow Serving.

CustomTrainingJob

Utilisez la classe CustomTrainingJob pour lancer un pipeline d'entraînement personnalisé dans Vertex AI avec un script.

Pour obtenir un exemple d'utilisation de la classe CustomTrainingJob, consultez le tutoriel dans le notebook Entraînement personnalisé d'un modèle de classification d'images pour la prédiction en ligne avec explications.

Classe d'entraînement d'hyperparamètres

Le SDK Vertex AI inclut une classe pour les réglages d'hyperparamètres. Les réglages d'hyperparamètres optimisent la précision des prédictions de votre modèle en optimisant les variables (appelées hyperparamètres) qui régissent le processus d'entraînement. Pour en savoir plus, consultez la section Présentation des réglages d'hyperparamètres.

HyperparameterTuningJob

Utilisez la classe HyperparameterTuningJob pour automatiser le réglage des hyperparamètres sur une application d'entraînement.

Pour apprendre à utiliser la classe HyperparameterTuningJob afin de créer et régler un modèle entraîné personnalisé, consultez le tutoriel Réglages d'hyperparamètres sur GitHub.

Pour apprendre à utiliser la classe HyperparameterTuningJob afin d'exécuter un job de réglage d'hyperparamètres Vertex AI pour un modèle TensorFlow, consultez le tutoriel Exécuter les réglages d'hyperparamètres pour un modèle TensorFlow sur GitHub.

Classe d'entraînement de pipeline

Un pipeline orchestre votre workflow de ML dans Vertex AI. Vous pouvez utiliser un pipeline pour automatiser, surveiller et gérer vos systèmes de machine learning. Pour en savoir plus sur les pipelines dans Vertex AI, consultez la section Présentation des pipelines Vertex AI.

PipelineJob

Une instance de la classe PipelineJob représente un pipeline Vertex AI.

Plusieurs notebooks de tutoriels montrent comment utiliser la classe PipelineJob :

Pour découvrir d'autres notebooks de tutoriels, consultez la section Tutoriels sur les notebooks Vertex AI.

Étapes suivantes