Ce document explique comment créer et exécuter un job par lot qui utilise des instances de machine virtuelle (VM) avec des Tensor Processing Units (TPU). Les TPU sont des circuits intégrés spécifiques aux applications (ASIC) développés spécifiquement par Google et conçus pour accélérer les charges de travail de machine learning (ML) et d'intelligence artificielle (IA). Lorsque vous créez un job par lot, vous pouvez éventuellement spécifier un type de machine TPU pour accélérer les charges de travail d'inférence, d'évaluation, d'ajustement et d'entraînement d'IA et de ML conteneurisées ou basées sur des scripts.
Pour en savoir plus sur les TPU, consultez À propos des TPU sur Google Cloud et Types de machines TPU dans la documentation Compute Engine. Vous pouvez également accélérer le traitement des données, l'IA et les charges de travail de ML en utilisant des GPU.
Avant de commencer
- Si vous n'avez jamais utilisé Batch, consultez Premiers pas avec Batch et activez Batch en remplissant les conditions préalables pour les projets et les utilisateurs.
-
Pour obtenir les autorisations nécessaires pour créer un job, demandez à votre administrateur de vous accorder les rôles IAM suivants :
- Éditeur de jobs par lot (
roles/batch.jobsEditor) sur le projet - Utilisateur du compte de service (
roles/iam.serviceAccountUser) sur le compte de service du job, qui est par défaut le compte de service Compute Engine par défaut
Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.
Vous pouvez également obtenir les autorisations requises avec des rôles personnalisés ou d'autres rôles prédéfinis.
- Éditeur de jobs par lot (
Restrictions
Lorsqu'un job utilise des TPU, toutes les restrictions suivantes s'appliquent en plus des limites de Compute Engine pour les TPU.
Tranches de TPU à hôte unique uniquement : Batch n'est compatible qu'avec les VM TPU indépendantes, appelées tranches de TPU à hôte unique. Les tranches TPU multi-hôtes, qui se composent chacune de plusieurs VM interconnectées, ne sont pas compatibles.
Un job peut s'exécuter sur une ou plusieurs tranches de TPU à hôte unique. Par exemple, si un job définit
taskCountsur4ettaskCountPerNodesur1, le nombre de VM sur lesquelles le job s'exécute est inférieur ou égal à 4. Contrairement aux tranches de TPU multi-hôtes, les tranches de TPU à hôte unique fonctionnent chacune comme une VM indépendante et ne fournissent pas de réseau d'interconnexion entre puces (ICI) pour une communication à bande passante élevée et à faible latence.Pour en savoir plus sur les tranches de TPU à hôte unique et multi-hôte, consultez la documentation Compute Engine.
Versions de TPU et types de machines compatibles : Batch n'est compatible qu'avec les tranches de TPU à hôte unique (VM TPU indépendantes) pour les versions de TPU et les types de machines suivants :
- TPU7x (Ironwood) :
tpu7x-standard-4t v6e (Trillium) :
ct6e-standard-1t,ct6e-standard-4tetct6e-standard-8tv5p :
ct5p-hightpu-4tOptions de consommation compatibles : Batch n'est pas compatible avec les VM Flex-start (modèle de provisionnement
FLEX_START) pour les jobs qui utilisent des TPU. À l'exception des VM Flex-start, vous pouvez spécifier n'importe quelle option de consommation compatible avec la version de TPU de votre job, conformément à la section Disponibilité des options de consommation par version de TPU de la documentation Compute Engine.Emplacement à zone unique requis : lorsque vous créez un job qui utilise des TPU, vous devez limiter le job à une zone spécifique en définissant les emplacements autorisés du job (champ
allowedLocations[]) sur une zone contenant votre version de TPU ou, le cas échéant, votre réservation.Fonctionnalités non compatibles : les jobs qui utilisent des TPU ne sont pas compatibles avec les fonctionnalités suivantes :
- flexibilité des instances (champ
instanceFlexibilityPolicy) - Stratégies d'emplacement compact (champ
collocation)
- flexibilité des instances (champ
Pour en savoir plus sur chaque type de machine TPU, comme les disques compatibles, consultez Types de machines TPU dans la documentation Compute Engine.
Créer un job qui utilise des TPU
Pour créer un job qui utilise des TPU, procédez comme suit :
- Planifiez la configuration d'un job qui utilise des TPU.
- Créez un job avec la configuration que vous avez identifiée. Pour obtenir des exemples de création d'un job qui utilise des TPU, consultez Créer un job qui utilise des TPU dans ce document.
Planifier la configuration d'un job qui utilise des TPU
Avant de créer un job qui utilise des TPU, vous devez effectuer les opérations suivantes :
Choisir la version de TPU : sélectionnez la version de TPU adaptée à votre charge de travail. Pour obtenir la liste des versions de TPU par type de charge de travail, consultez Versions de TPU recommandées par type de charge de travail.
Veillez à sélectionner l'une des versions de TPU compatibles.
Choisissez une option de consommation de TPU : sélectionnez l'option de consommation qui correspond le mieux à votre charge de travail, à sa durée et à vos besoins en termes de coûts. Veillez à sélectionner l'une des options de consommation compatibles. Les cas d'utilisation et les exigences de job pour chaque option de consommation sont résumés dans le tableau suivant.
Options de consommation et exigences liées aux jobs Liées à une réservation (réservations futures en mode Agenda ou réservations futures pour des blocs de capacité)
Cas d'utilisation : nous recommandons les options de consommation liées à une réservation pour les jobs qui nécessitent un très haut niveau de garantie de disponibilité des ressources TPU pour une période spécifique. Dans Compute Engine, elles sont décrites comme des réservations futures en mode Agenda (pour une durée de 1 à 90 jours) et des réservations futures pour les blocs de capacité (pour une durée d'un an ou plus).
Détails : Avant de créer un job, vous devez obtenir ou identifier une réservation pour la version de TPU choisie et le modèle de provisionnement
RESERVATION_BOUND. Une fois qu'une réservation est créée, elle entraîne des coûts pour les VM spécifiées au même prix que l'exécution des VM jusqu'à ce que vous supprimiez la réservation. Les VM qui consomment une réservation n'entraînent pas de frais distincts, mais les réservations entraînent des frais, quelle que soit la consommation.Pour en savoir plus, consultez Choisir un type de réservation dans la documentation Compute Engine.
Batch consomme des réservations liées à une réservation pour les jobs qui effectuent toutes les opérations suivantes :
- Définissez le champ
provisioningModelsurRESERVATION_BOUND. - Ciblez spécifiquement une réservation compatible. Définissez le champ
reservationsur le nom court (si la réservation se trouve dans le même projet et la même zone) ou sur le chemin d'accès complet de la ressource de la réservation, du bloc de réservation ou du sous-bloc de réservation.
À la demande
Cas d'utilisation : le modèle à la demande est rapide et simple à essayer. Il s'agit donc de l'option de consommation par défaut pour la plupart des jobs. Toutefois, nous ne recommandons pas l'utilisation à la demande si une autre option de consommation correspond mieux à vos priorités ou si vous rencontrez régulièrement des problèmes d'obtention de ressources.
Détails : l'accès à la demande est généralement le moyen par défaut d'accéder aux VM Compute Engine. Le mode à la demande vous permet d'accéder aux ressources (si elles sont disponibles) lorsqu'elles sont demandées. Les ressources ne sont pas supprimées tant que le job n'est pas terminé ou que la limite de temps d'exécution n'est pas atteinte.
Batch utilise par défaut des ressources à la demande pour la plupart des jobs. Si vous souhaitez vous assurer qu'un job utilise la tarification à la demande, procédez comme suit :
- Définissez le champ
provisioningModelsurSTANDARD. - Empêcher la consommation de réservations Pour empêcher un job d'utiliser automatiquement des réservations compatibles, définissez le champ
reservationsurNO_RESERVATION. Pour en savoir plus, consultez Créer et exécuter un job qui ne peut pas consommer de VM réservées.
Les VM Spot
Cas d'utilisation : nous vous recommandons d'utiliser des VM Spot pour réduire les coûts des charges de travail tolérantes aux pannes.
Détails : si une requête de création d'un job utilisant des VM Spot est satisfaite, les VM sont facturées au tarif des VM Spot, qui peut changer souvent et peut offrir la remise la plus importante, jusqu'à 91 % de réduction par rapport au tarif à la demande. Toutefois, les VM Spot ne sont pas toujours disponibles et peuvent être préemptées à tout moment.
En savoir plus sur les VM Spot et les recommandations pour les jobs avec des VM Spot.
Batch utilise des VM Spot pour les jobs qui répondent à toutes les conditions suivantes :
- Définissez le champ
provisioningModelsurSPOT. - (Facultatif) Empêchez la consommation des réservations. Vous ne pouvez pas utiliser de VM Spot avec des réservations. Plus précisément, le job peut éventuellement définir le champ
reservationsurNO_RESERVATION. Pour en savoir plus, consultez Créer et exécuter un job qui ne peut pas consommer de VM réservées.
Sélectionnez une zone dans laquelle les TPU que vous avez choisis sont disponibles : pour utiliser une version de TPU, le champ
allowedLocations[]d'un job doit être défini sur une zone contenant les TPU que vous avez choisis, comme suit :- Si vous avez choisi une option de consommation qui utilise des réservations, vous devez utiliser la zone où se trouve la réservation.
- Sinon, sélectionnez une zone contenant votre version de TPU en fonction de la disponibilité des TPU.
Dans les deux cas, la zone doit également se trouver dans l'une des régions prises en charge pour Batch.
Assurez-vous que votre projet dispose d'un quota de TPU suffisant : si vous créez un job qui utilise des TPU avec des VM à la demande ou des VM Spot, vous devez disposer d'un quota de TPU suffisant dans la région que vous souhaitez utiliser. La création d'un job qui utilise des TPU et consomme une réservation de TPU ne nécessite aucun quota de TPU, car le quota est utilisé lors de la création de la réservation. Pour obtenir la liste des noms de quotas de TPU, consultez Quotas de TPU. Pour savoir comment afficher les quotas, consultez Afficher et gérer les quotas.
Choisissez un type de machine TPU : sélectionnez un type de machine TPU pour la version de TPU choisie. Si vous avez choisi une option de consommation qui utilise des réservations, vous devez utiliser le type de machine de votre réservation. Pour obtenir la liste des types de machines disponibles pour chaque version de TPU, consultez Types de machines TPU.
En raison des restrictions, vous devez utiliser la topologie à hôte unique pour votre type de machine TPU.
Créer un job qui utilise des TPU
Les sections suivantes expliquent comment créer un exemple de job qui utilise des TPU pour chaque option de consommation.
| Option d'utilisation | Exemples d'instructions de job |
|---|---|
| Liées à une réservation (réservations futures en mode Agenda ou réservations futures pour des blocs de capacité) |
Utiliser des TPU avec des options d'utilisation liées à la réservation |
| VM à la demande ou VM Spot |
Utiliser des TPU avec des VM à la demande ou Spot
Vous pouvez créer un job qui utilise des TPU avec des VM à la demande ou des VM Spot à l'aide de la gcloud CLI ou de l'API Batch.
gcloud
Créez un fichier de configuration JSON qui spécifie un type de machine TPU à hôte unique compatible, définit le modèle de provisionnement sur
STANDARDouSPOT, et s'exécute dans un emplacement qui propose le type de machine TPU.Par exemple, pour créer un job de script de base, créez un fichier JSON avec le contenu suivant :
{ "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { "text": "echo Hello world from TPU task ${BATCH_TASK_INDEX}." } } ] }, "taskCount": 3, "parallelism": 1 } ], "allocationPolicy": { "instances": [ { "policy": { "provisioningModel": "PROVISIONING_MODEL", "machineType": "MACHINE_TYPE" } } ], "location": { "allowedLocations": [ "ALLOWED_LOCATIONS" ] } }, "logsPolicy": { "destination": "CLOUD_LOGGING" } }Remplacez les éléments suivants :
PROVISIONING_MODEL: modèle de provisionnement pour votre option de consommation :STANDARDpour les VM à la demande ouSPOTpour les VM Spot.MACHINE_TYPE: type de machine TPU à hôte unique compatible, par exemplect5p-hightpu-4t.ALLOWED_LOCATIONS: emplacements autorisés pour le job. Pour un job qui utilise des TPU, vous devez définir le champallowedLocations[]sur une zone qui propose le type de machine TPU (par exemple,zones/us-central1-apropose le type de machine TPUct5p-hightpu-4t).
Pour créer et exécuter le job, utilisez la commande
gcloud batch jobs submit:gcloud batch jobs submit JOB_NAME \ --location LOCATION \ --config JSON_CONFIGURATION_FILERemplacez les éléments suivants :
JOB_NAME: nom du job.LOCATION: emplacement du job.JSON_CONFIGURATION_FILE: chemin d'accès à un fichier JSON contenant les détails de configuration du job.
API
Envoyez une requête POST à la méthode jobs.create qui spécifie un type de machine TPU à hôte unique compatible, définit le modèle de provisionnement sur STANDARD ou SPOT, et s'exécute dans un emplacement qui propose le type de machine TPU.
Par exemple, pour créer un job de script de base, envoyez la requête suivante :
POST https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/jobs?job_id=JOB_NAME
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"script": {
"text": "echo Hello world from TPU task ${BATCH_TASK_INDEX}."
}
}
]
},
"taskCount": 3,
"parallelism": 1
}
],
"allocationPolicy": {
"instances": [
{
"policy": {
"provisioningModel": "PROVISIONING_MODEL",
"machineType": "MACHINE_TYPE"
}
}
],
"location": {
"allowedLocations": [
"ALLOWED_LOCATIONS"
]
}
},
"logsPolicy": {
"destination": "CLOUD_LOGGING"
}
}
Remplacez les éléments suivants :
PROJECT_ID: ID du projet de votre projet.LOCATION: emplacement du job.JOB_NAME: nom du job.PROVISIONING_MODEL: modèle de provisionnement pour votre option de consommation :STANDARDpour les VM à la demande ouSPOTpour les VM Spot.MACHINE_TYPE: type de machine TPU à hôte unique compatible, par exemplect5p-hightpu-4t.ALLOWED_LOCATIONS: emplacements autorisés pour le job. Pour un job qui utilise des TPU, vous devez définir le champallowedLocations[]sur une zone qui propose le type de machine TPU (par exemple,zones/us-central1-apropose le type de machine TPUct5p-hightpu-4t).
Utiliser des TPU avec des options d'utilisation liées à la réservation
Vous pouvez créer un job qui utilise des TPU avec une option de consommation pour le modèle de provisionnement lié à la réservation (RESERVATION_BOUND), soit des réservations futures pour les blocs de capacité, soit des réservations futures en mode calendrier, à l'aide de la gcloud CLI ou de l'API Batch.
gcloud
Créez un fichier de configuration JSON qui spécifie une réservation pour un type de machine TPU à hôte unique, définit le modèle de provisionnement sur
RESERVATION_BOUNDet s'exécute dans la zone de la réservation.Par exemple, pour créer un job de script de base, créez un fichier JSON avec le contenu suivant :
{ "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { "text": "echo Hello world from TPU task ${BATCH_TASK_INDEX}." } } ] }, "taskCount": 3, "parallelism": 1 } ], "allocationPolicy": { "instances": [ { "policy": { "provisioningModel": "RESERVATION_BOUND", "reservation": "RESERVATION", "machineType": "MACHINE_TYPE" } } ], "location": { "allowedLocations": [ "ALLOWED_LOCATIONS" ] } }, "logsPolicy": { "destination": "CLOUD_LOGGING" } }Remplacez les éléments suivants :
RESERVATION: remplacez par l'un des chemins d'accès suivants vers votre réservation :Si vous souhaitez utiliser une réservation future en mode Agenda ou une partie de la réservation pour une réservation future pour des blocs de capacité, spécifiez la réservation :
projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAMESi vous souhaitez utiliser un bloc spécifique d'une réservation future pour les blocs de capacité, spécifiez le bloc de réservation :
projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME/reservationBlocks/BLOCK_NAMESi vous souhaitez utiliser un sous-bloc spécifique d'une réservation future pour les blocs de capacité, spécifiez le sous-bloc de réservation :
projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME/reservationSubBlocks/SUB_BLOCK_NAME
MACHINE_TYPE: type de machine TPU de votre réservation, par exemplect5p-hightpu-4t.ALLOWED_LOCATIONS: emplacements autorisés pour le job. Pour un job qui utilise des TPU réservés, vous devez définir le champallowedLocations[]sur la zone de votre réservation. Par exemple,zones/us-central1-apropose le type de machine TPUct5p-hightpu-4t.
Pour créer et exécuter le job, utilisez la commande
gcloud batch jobs submit:gcloud batch jobs submit JOB_NAME \ --location LOCATION \ --config JSON_CONFIGURATION_FILERemplacez les éléments suivants :
JOB_NAME: nom du job.LOCATION: emplacement du job.JSON_CONFIGURATION_FILE: chemin d'accès à un fichier JSON contenant les détails de configuration du job.
API
Envoyez une requête POST à la méthode jobs.create qui spécifie une réservation pour un type de machine TPU à hôte unique, définit le modèle de provisionnement sur RESERVATION_BOUND et s'exécute dans la zone de la réservation.
Par exemple, pour créer un job de script de base, envoyez la requête suivante :
POST https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/jobs?job_id=JOB_NAME
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"script": {
"text": "echo Hello world from TPU task ${BATCH_TASK_INDEX}."
}
}
]
},
"taskCount": 3,
"parallelism": 1
}
],
"allocationPolicy": {
"instances": [
{
"policy": {
"provisioningModel": "RESERVATION_BOUND",
"reservation": "RESERVATION",
"machineType": "MACHINE_TYPE"
}
}
],
"location": {
"allowedLocations": [
"ALLOWED_LOCATIONS"
]
}
},
"logsPolicy": {
"destination": "CLOUD_LOGGING"
}
}
Remplacez les éléments suivants :
PROJECT_ID: ID du projet de votre projet.LOCATION: emplacement du job.JOB_NAME: nom du job.RESERVATION: remplacez par l'un des chemins d'accès suivants vers votre réservation :Si vous souhaitez utiliser une réservation future en mode Agenda ou une partie de la réservation pour une réservation future pour des blocs de capacité, spécifiez la réservation :
projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAMESi vous souhaitez utiliser un bloc spécifique d'une réservation future pour les blocs de capacité, spécifiez le bloc de réservation :
projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME/reservationBlocks/BLOCK_NAMESi vous souhaitez utiliser un sous-bloc spécifique d'une réservation future pour les blocs de capacité, spécifiez le sous-bloc de réservation :
projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME/reservationSubBlocks/SUB_BLOCK_NAME
MACHINE_TYPE: type de machine TPU de votre réservation, par exemplect5p-hightpu-4t.ALLOWED_LOCATIONS: emplacements autorisés pour le job. Pour un job qui utilise des TPU réservés, vous devez définir le champallowedLocations[]sur la zone de votre réservation. Par exemple,zones/us-central1-apropose le type de machine TPUct5p-hightpu-4t.
Pour en savoir plus sur la création de jobs qui consomment des réservations, consultez Assurer la disponibilité des ressources à l'aide de réservations de VM.
Étapes suivantes
- Si vous rencontrez des problèmes pour créer ou exécuter un job, consultez Dépannage.
- Afficher les jobs et les tâches
- Découvrez d'autres options de création de jobs.