Lorsque vous utilisez l'entraînement personnalisé pour entraîner des modèles, vous pouvez configurer votre job d'entraînement pour importer automatiquement vos journaux Vertex AI TensorBoard dans Vertex AI TensorBoard.
Vous pouvez vous servir de cette intégration pour surveiller votre entraînement en temps quasi réel, car Vertex AI TensorBoard diffuse les journaux Vertex AI TensorBoard à mesure qu'ils sont écrits dans Cloud Storage.
Pour la configuration initiale, consultez Configurer Vertex AI TensorBoard.
Modifier le script d'entraînement
Votre script d'entraînement doit être configuré pour écrire des journaux TensorBoard dans le bucket Cloud Storage, dont l'emplacement sera automatiquement mis à disposition par le service Vertex AI Training à l'aide d'une variable d'environnement prédéfinie AIP_TENSORBOARD_LOG_DIR
.
Pour ce faire, il faut en principe fournir os.environ['AIP_TENSORBOARD_LOG_DIR']
comme répertoire de journal aux API d'écriture de journaux TensorBoard Open Source. L'emplacement de AIP_TENSORBOARD_LOG_DIR
est généralement défini avec la variable staging_bucket
.
Pour configurer votre script d'entraînement dans TensorFlow 2.x, créez un rappel TensorBoard et définissez la variable log_dir
sur os.environ['AIP_TENSORBOARD_LOG_DIR']
. Le rappel TensorBoard est ensuite inclus dans la liste des rappels model.fit
TensorFlow.
tensorboard_callback = tf.keras.callbacks.TensorBoard( log_dir=os.environ['AIP_TENSORBOARD_LOG_DIR'], histogram_freq=1 ) model.fit( x=x_train, y=y_train, epochs=epochs, validation_data=(x_test, y_test), callbacks=[tensorboard_callback], )
Découvrez comment Vertex AI définit les variables d'environnement dans votre environnement d'entraînement personnalisé.
Créer un job d'entraînement personnalisé
L'exemple suivant montre comment créer votre propre job d'entraînement personnalisé.
Pour obtenir un exemple détaillé montrant comment créer un job d'entraînement personnalisé, consultez Entraînement personnalisé Hello. Si vous souhaitez connaître les étapes à suivre pour créer un conteneur d'entraînement personnalisé, consultez Créer une image de conteneur personnalisée pour l'entraînement.
Pour créer un job d'entraînement personnalisé, utilisez le SDK Vertex AI pour Python ou REST.
Python
Python
project
: . Vous pouvez trouver cet ID sur la page d'accueil de la console Google Cloud .
location
: emplacement où exécuter CustomJob. Il doit s'agir du même emplacement que celui de l'instance TensorBoard fournie.staging_bucket
: bucket Cloud Storage permettant de préparer les artefacts lors des appels d'API, y compris les journaux TensorBoard.display_name
: nom à afficher du job d'entraînement personnalisé.script_path
: chemin d'accès au script qui est le point d'entrée de votre code d'entraînement et qui se trouve dans le répertoire de votre système de fichiers local.container_uri
: URI de l'image du conteneur d'entraînement pouvant être un conteneur d'entraînement prédéfini Vertex AI ou un conteneur personnalisé.model_serving_container_image_uri
: URI du conteneur de mise en service du modèle adapté à la mise en service du modèle produit par le script d'entraînement.dataset_id
: ID de l'ensemble de données à utiliser pour l'entraînement.model_display_name
: nom à afficher du modèle entraîné.args
: arguments de ligne de commande à transmettre au script Python.replica_count
: nombre d'instances répliquées de nœuds de calcul à utiliser. Dans la plupart des cas, définissez cette valeur sur 1 pour votre premier pool de nœuds de calcul.machine_type
: type de VM à utiliser. Pour obtenir la liste des VM compatibles, consultez Types de machines.accelerator_type
: type de GPU à associer à chaque VM du pool de ressources. Pour obtenir la liste des GPU compatibles, consultez GPU.accelerator_count
: nombre de GPU à associer à chaque VM du pool de ressources. La valeur par défaut est1
.training_fraction_split
: fraction de l'ensemble de données à utiliser pour entraîner votre modèle.validation_fraction_split
: fraction de l'ensemble de données à utiliser pour valider votre modèle.test_fraction_split
: fraction de l'ensemble de données à utiliser pour évaluer votre modèle.sync
: indique si cette méthode doit être exécutée de manière synchrone.tensorboard_resource_name
: nom de ressource de l'instance Vertex TensorBoard dans laquelle CustomJob importe les journaux TensorBoard.service_account
: obligatoire lors de l'exécution avec TensorBoard. Consultez Créer un compte de service avec les autorisations requises.
REST
Avant d'utiliser les données de requête, effectuez les remplacements suivants :
- LOCATION_ID : emplacement où exécuter
CustomJob
(par exemple, us-central1). Il doit s'agir du même emplacement que celui de l'instance TensorBoard fournie. - PROJECT_ID : ID de votre projet.
- TENSORBOARD_INSTANCE_NAME (obligatoire) : nom complet de l'instance Vertex AI TensorBoard existante stockant vos journaux Vertex AI TensorBoard :
projects/
PROJECT_ID
/locations/LOCATION_ID
/tensorboards/TENSORBOARD_INSTANCE_ID
Remarque : Si l'instance TensorBoard n'existe pas encore, la création de customJobs génère une erreur 404. - GCS_BUCKET_NAME : "${PROJECT_ID}-tensorboard-logs-${LOCATION}".
- USER_SA_EMAIL (obligatoire) : compte de service créé lors des étapes précédentes ou votre propre compte de service. "USER_SA_NAME@${PROJECT_ID}.iam.gserviceaccount.com".
- TRAINING_CONTAINER : TRAINING_CONTAINER.
- INVOCATION_TIMESTAMP : "$(date +'%Y%m%d-%H%M%S')".
- JOB_NAME : "tensorboard-example-job-${INVOCATION_TIMESTAMP}".
- BASE_OUTPUT_DIR (obligatoire) : chemin d'accès à Google Cloud dans lequel le résultat de l'entraînement est écrit. "gs://$GCS_BUCKET_NAME/$JOB_NAME".
Méthode HTTP et URL :
POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/customJobs
Corps JSON de la requête :
{ "displayName": JOB_NAME, "jobSpec":{ "workerPoolSpecs":[ { "replicaCount": "1", "machineSpec": { "machineType": "n1-standard-8", }, "containerSpec": { "imageUri": TRAINING_CONTAINER, } } ], "base_output_directory": { "output_uri_prefix": BASE_OUTPUT_DIR, }, "serviceAccount": USER_SA_EMAIL, "tensorboard": TENSORBOARD_INSTANCE_NAME, } }
Pour envoyer votre requête, développez l'une des options suivantes :
Vous devriez recevoir une réponse JSON de ce type :
{ "name": "projects/PROJECT_ID/locations/LOCATION_ID/customJobs/CUSTOM_JOB_ID", "displayName": "DISPLAY_NAME", "jobSpec": { "workerPoolSpecs": [ { "machineSpec": { "machineType": "n1-standard-8" }, "replicaCount": "1", "diskSpec": { "bootDiskType": "pd-ssd", "bootDiskSizeGb": 100 }, "containerSpec": { "imageUri": "IMAGE_URI" } } ], "serviceAccount": "SERVICE_ACCOUNT", "baseOutputDirectory": { "outputUriPrefix": "OUTPUT_URI_PREFIX" }, "tensorboard": "projects//locations/LOCATION_ID/tensorboards/tensorboard-id" }, "state": "JOB_STATE_PENDING", "createTime": "CREATE-TIME", "updateTime": "UPDATE-TIME" }
Étapes suivantes
- Consultez Afficher Vertex AI TensorBoard.
- Découvrez comment optimiser les performances de vos jobs d'entraînement personnalisés à l'aide de Cloud Profiler.