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 comment exécuter un pipeline Kubeflow Pipelines (KFP), consultez le tutoriel Structurer les commandes de pipeline à l'aide du SDK KFP sur GitHub.
Pour découvrir comment entraîner un modèle de classification tabulaire scikit-learn et créer un job de prédiction par lot avec un pipeline Vertex AI, consultez le tutoriel Entraînement et prédiction par lot avec source et destination BigQuery pour un modèle de classification tabulaire personnalisé sur GitHub.
Pour découvrir comment créer un modèle de classification d'images AutoML et utiliser un pipeline Vertex AI, consultez le tutoriel Pipelines de classification d'images AutoML utilisant google-cloud-pipeline-components sur GitHub.
Pour découvrir comment utiliser un pipeline pour créer un modèle de classification de texte AutoML, consultez le tutoriel Pipelines de classification de texte AutoML utilisant google-cloud-pipeline-components sur GitHub.
Pour découvrir d'autres notebooks de tutoriels, consultez la section Tutoriels sur les notebooks Vertex AI.
Étapes suivantes
- En savoir plus sur le SDK Vertex AI.