Ce document explique comment créer et exécuter une tâche qui utilise une unité de traitement graphique (GPU).
Vous pouvez également créer une tâche par lot qui ajoute un ou plusieurs GPU aux VM exécutées dans votre tâche. Les cas d'utilisation courants de tâches utilisant des GPU incluent les charges de travail intensives de traitement des données et de machine learning (ML).
Avant de commencer
- Si vous n'avez jamais utilisé Batch, consultez la page Premiers pas avec Batch et activez-la en remplissant les conditions préalables pour les projets et les utilisateurs.
-
Pour obtenir les autorisations nécessaires pour créer une tâche, demandez à votre administrateur de vous attribuer les rôles IAM suivants:
-
Éditeur de tâches par lot (
roles/batch.jobsEditor
) sur le projet -
Utilisateur du compte de service (
roles/iam.serviceAccountUser
) sur le compte de service de la tâche, qui est le compte de service Compute Engine par défaut par défaut
Pour en savoir plus sur l'attribution de rôles, consultez la section Gérer les accès.
Vous pouvez également obtenir les autorisations requises via des rôles personnalisés ou d'autres rôles prédéfinis.
-
Éditeur de tâches par lot (
Créer une tâche utilisant un GPU
Vous pouvez éventuellement créer une tâche qui ajoute une ou plusieurs unités de traitement graphique (GPU) à chacune des VM exécutant la tâche. Pour créer une tâche qui utilise des GPU, procédez comme suit:
- Consultez la section Conditions requises pour qu'une tâche utilise des GPU afin de déterminer les méthodes vous permettant de créer cette tâche.
- Créez une tâche avec les méthodes sélectionnées. Pour obtenir des exemples de création de tâches à l'aide des méthodes recommandées, consultez la section Créer une tâche utilisant un GPU.
Conditions requises pour qu'une tâche utilise des GPU
Pour utiliser des GPU, une tâche doit effectuer les opérations suivantes:
- Installer les pilotes de GPU requis
- Définir les ressources de VM
- Installez des GPU sur n'importe quel conteneur
Installer des pilotes de GPU.
Pour installer les pilotes de GPU requis, sélectionnez l'une des méthodes suivantes:
Installer automatiquement les pilotes (recommandé):comme indiqué dans les exemples, pour permettre à Batch d'extraire les pilotes GPU requis à partir d'un emplacement tiers et de les installer en votre nom, définissez le champ
installGpuDrivers
de la tâche surtrue
.Installer des pilotes manuellement:cette méthode est obligatoire si l'une des conditions suivantes est remplie:
- Une tâche utilise à la fois des scripts exécutables et des conteneurs exécutables, et ne dispose pas d'un accès à Internet. Pour en savoir plus sur l'accès d'une tâche, consultez la page Présentation de la mise en réseau par lot.
- Une tâche utilise une image de VM personnalisée.
Pour installer manuellement les pilotes de GPU requis, il est recommandé d'utiliser la méthode suivante:
Créez une image de VM personnalisée incluant les pilotes de GPU.
Pour installer les pilotes de GPU, exécutez un script d'installation en fonction du système d'exploitation que vous souhaitez utiliser:
Si votre tâche comporte des conteneurs exécutables et n'utilise pas Container-Optimized OS, vous devez également installer NVIDIA Container Toolkit.
Créez et envoyez une tâche avec l'image de VM personnalisée à l'aide d'un modèle d'instance Compute Engine. Définissez le champ
installGpuDrivers
de la tâche surfalse
(valeur par défaut).
Définir les ressources de VM
Pour utiliser des GPU, une tâche doit spécifier le type et le nombre de GPU, ainsi qu'un type de machine compatible avec les VM de la tâche. Pour définir les ressources des VM d'un job, sélectionnez l'une des méthodes suivantes:
- Définir les ressources directement (recommandé) : comme indiqué dans les exemples, utilisez le champ
policy
pour définir directement les ressources des VM d'une tâche. - Définissez les ressources dans un modèle:définissez les ressources pour les VM d'une tâche en spécifiant un modèle d'instance Compute Engine. Si vous incluez un modèle d'instance dans la définition de votre tâche, vous devez utiliser cette méthode.
Installer des GPU sur n'importe quel conteneur
Si une tâche inclut des exécutables de conteneur que vous souhaitez utiliser avec des GPU, vous devez également installer les GPU sur chaque conteneur exécutable en fonction de l'image de VM de la tâche:
- Si une tâche utilise l'image de VM par défaut et ne comporte que des conteneurs exécutables ou une image personnalisée de Container-Optimized OS, procédez comme suit :
- Dans le champ
options
, spécifiez l'option--privileged
. - Pour le champ
volumes
, spécifiez les chemins d'accès/var/lib/nvidia/lib64:/usr/local/nvidia/lib64
et/var/lib/n
vidia/bin:/usr/local/nvidia/bin
.
- Dans le champ
- Sinon, si une tâche utilise l'image de VM par défaut et dispose de conteneurs et de scripts exécutables, ou si une tâche utilise une image de VM personnalisée autre que Container-Optimized OS, procédez comme suit :
- Dans le champ
options
, spécifiez l'option--gpus all
.
- Dans le champ
Créer une tâche utilisant un GPU
Cette section fournit des exemples de création de tâches utilisant un GPU à l'aide des méthodes recommandées: la tâche installe automatiquement les pilotes requis et définit les ressources qu'elle utilise directement. Les exemples de tâches avec des exécutables de conteneur installent également les GPU sur les conteneurs. Vous pouvez créer une tâche qui utilise un GPU à l'aide de gcloud CLI ou de l'API Batch.
gcloud
Pour ajouter un GPU à une tâche, consultez l'un des exemples suivants, en fonction des types d'exécutables que vous souhaitez utiliser:
- Ajoutez un GPU à une tâche de conteneur.
- Ajoutez un GPU à une tâche de script.
- Ajouter un GPU à un job de conteneur et de script
Ajouter un GPU à une tâche de conteneur
Pour créer une tâche de conteneur avec un GPU utilisant l'image par défaut à l'aide de gcloud CLI, exécutez la commande gcloud batch jobs submit
.
Par exemple, pour créer une tâche de conteneur avec un GPU:
Dans le répertoire actuel, créez un fichier JSON nommé
hello-world-container-job-gpu.json
avec le contenu suivant:{ "taskGroups": [ { "taskSpec": { "runnables": [ { "container": { "imageUri": "gcr.io/google_containers/cuda-vector-add:v0.1", "volumes": [ "/var/lib/nvidia/lib64:/usr/local/nvidia/lib64", "/var/lib/nvidia/bin:/usr/local/nvidia/bin" ], "options": "--privileged" } } ], }, "taskCount": 3, "parallelism": 1 } ], "allocationPolicy": { "instances": [ { "installGpuDrivers": INSTALL_GPU_DRIVERS, "policy": { "machineType": "MACHINE_TYPE", "accelerators": [ { "type": "GPU_TYPE", "count": GPU_COUNT } ] } } ], "location": { "allowedLocations": [ "ALLOWED_LOCATIONS" ] } } }
Remplacez les éléments suivants :
INSTALL_GPU_DRIVERS
: facultatif. Lorsqu'elle est définie surtrue
, Batch récupère les pilotes requis pour le type de GPU que vous spécifiez dans le champpolicy
à partir d'un emplacement tiers, et les installe en votre nom. Si vous définissez ce champ surfalse
(valeur par défaut), vous devez installer manuellement les pilotes de GPU pour utiliser les GPU de cette tâche.MACHINE_TYPE
: type de machine, qui peut être prédéfini ou personnalisé, pour les VM de votre job. Le type de machine limite le type de GPU que vous pouvez utiliser. Pour créer une tâche avec un GPU, ce champ est obligatoire.GPU_TYPE
: type de GPU. Vous pouvez afficher la liste des types de GPU disponibles à l'aide de la commandegcloud compute accelerator-types list
. Pour créer une tâche avec un GPU, ce champ est obligatoire.GPU_COUNT
: nombre de GPU du type que vous avez spécifié dans le champtype
. Pour créer une tâche avec un GPU, ce champ est obligatoire.ALLOWED_LOCATIONS
: facultatif. Emplacements où les instances de VM de votre job sont autorisées à s'exécuter (par exemple,regions/us-central1, zones/us-central1-a
autorise la zoneus-central1-a
). Si vous spécifiez un emplacement autorisé, vous devez sélectionner la région et, éventuellement, une ou plusieurs zones. Les emplacements que vous choisissez doivent disposer du type de GPU souhaité pour cette tâche. Pour en savoir plus, consultez le champ de tableauallowedLocations
.
Exécutez la commande suivante :
gcloud batch jobs submit example-job-gpu \ --location us-central1 \ --config hello-world-container-job-gpu.json
Ajouter un GPU à une tâche de script
Pour créer une tâche de script avec un GPU utilisant l'image par défaut à l'aide de gcloud CLI, exécutez la commande gcloud batch jobs submit
.
Par exemple, pour créer une tâche de script avec un GPU, procédez comme suit:
Dans le répertoire actuel, créez un fichier JSON nommé
hello-world-script-job-gpu.json
avec le contenu suivant:{ "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { "text": "echo Hello world from task ${BATCH_TASK_INDEX}." } } ] }, "taskCount": 3, "parallelism": 1 } ], "allocationPolicy": { "instances": [ { "installGpuDrivers": INSTALL_GPU_DRIVERS, "policy": { "machineType": "MACHINE_TYPE", "accelerators": { "type": "GPU_TYPE", "count": GPU_COUNT } ] } } ], "location": { "allowedLocations": [ "ALLOWED_LOCATIONS" ] } } }
Remplacez les éléments suivants :
INSTALL_GPU_DRIVERS
: facultatif. Lorsqu'elle est définie surtrue
, Batch récupère les pilotes requis pour le type de GPU que vous spécifiez dans le champpolicy
à partir d'un emplacement tiers, et les installe en votre nom. Si vous définissez ce champ surfalse
(valeur par défaut), vous devez installer manuellement les pilotes de GPU pour utiliser les GPU de cette tâche.MACHINE_TYPE
: type de machine, qui peut être prédéfini ou personnalisé, pour les VM de votre job. Le type de machine limite le type de GPU que vous pouvez utiliser. Pour créer une tâche avec un GPU, ce champ est obligatoire.GPU_TYPE
: type de GPU. Vous pouvez afficher la liste des types de GPU disponibles à l'aide de la commandegcloud compute accelerator-types list
. Pour créer une tâche avec un GPU, ce champ est obligatoire.GPU_COUNT
: nombre de GPU du type que vous avez spécifié dans le champtype
. Pour créer une tâche avec un GPU, ce champ est obligatoire.ALLOWED_LOCATIONS
: facultatif. Emplacements où les instances de VM de votre job sont autorisées à s'exécuter (par exemple,regions/us-central1, zones/us-central1-a
autorise la zoneus-central1-a
). Si vous spécifiez un emplacement autorisé, vous devez sélectionner la région et, éventuellement, une ou plusieurs zones. Les emplacements que vous choisissez doivent disposer du type de GPU souhaité pour cette tâche. Pour en savoir plus, consultez le champ de tableauallowedLocations
.
Exécutez la commande suivante :
gcloud batch jobs submit example-job-gpu \ --location us-central1 \ --config hello-world-script-job-gpu.json
Ajouter un GPU à une tâche de conteneur et de script
Pour créer un conteneur et une tâche de script avec un GPU utilisant l'image par défaut à l'aide de gcloud CLI, exécutez la commande gcloud batch jobs submit
.
Par exemple, pour créer une tâche de conteneur et de script avec un GPU:
Dans le répertoire actuel, créez un fichier JSON nommé
hello-world-container-script-job-gpu.json
avec le contenu suivant:{ "taskGroups": [ { "taskSpec": { "runnables": [ { "container": { "imageUri": "gcr.io/google_containers/cuda-vector-add:v0.1", "options": "--gpus all" } }, { "script": { "text": "echo Hello world from script task ${BATCH_TASK_INDEX}." } } ] }, "taskCount": 3, "parallelism": 1 } ], "allocationPolicy": { "instances": [ { "installGpuDrivers": INSTALL_GPU_DRIVERS, "policy": { "machineType": "MACHINE_TYPE", "accelerators": [ { "type": "GPU_TYPE", "count": GPU_COUNT } ] } } ], "location": { "allowedLocations": [ "ALLOWED_LOCATIONS" ] } } }
Remplacez les éléments suivants :
INSTALL_GPU_DRIVERS
: facultatif. Lorsqu'elle est définie surtrue
, Batch récupère les pilotes requis pour le type de GPU que vous spécifiez dans le champpolicy
à partir d'un emplacement tiers, et les installe en votre nom. Si vous définissez ce champ surfalse
(valeur par défaut), vous devez installer manuellement les pilotes de GPU pour utiliser les GPU de cette tâche.MACHINE_TYPE
: type de machine, qui peut être prédéfini ou personnalisé, pour les VM de votre job. Le type de machine limite le type de GPU que vous pouvez utiliser. Pour créer une tâche avec un GPU, ce champ est obligatoire.GPU_TYPE
: type de GPU. Vous pouvez afficher la liste des types de GPU disponibles à l'aide de la commandegcloud compute accelerator-types list
. Pour créer une tâche avec un GPU, ce champ est obligatoire.GPU_COUNT
: nombre de GPU du type que vous avez spécifié dans le champtype
. Pour créer une tâche avec un GPU, ce champ est obligatoire.ALLOWED_LOCATIONS
: facultatif. Emplacements où les instances de VM de votre job sont autorisées à s'exécuter (par exemple,regions/us-central1, zones/us-central1-a
autorise la zoneus-central1-a
). Si vous spécifiez un emplacement autorisé, vous devez sélectionner la région et, éventuellement, une ou plusieurs zones. Les emplacements que vous choisissez doivent disposer du type de GPU souhaité pour cette tâche. Pour en savoir plus, consultez le champ de tableauallowedLocations
.
Exécutez la commande suivante :
gcloud batch jobs submit example-job-gpu \ --location us-central1 \ --config hello-world-container-script-job-gpu.json
API
Pour ajouter un GPU à une tâche, consultez l'un des exemples suivants, en fonction des types d'exécutables que vous souhaitez utiliser:
- Ajoutez un GPU à une tâche de conteneur.
- Ajoutez un GPU à une tâche de script.
- Ajouter un GPU à un job de conteneur et de script
Ajouter un GPU à une tâche de conteneur
Pour créer une tâche de conteneur avec un GPU qui utilise l'image par défaut à l'aide de l'API Batch, utilisez la méthode jobs.create
.
Par exemple, pour créer une tâche de conteneur avec un GPU, exécutez la requête suivante:
POST https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/jobs?job_id=example-job-gpu
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"container": {
"imageUri": "gcr.io/google_containers/cuda-vector-add:v0.1",
"volumes": [
"/var/lib/nvidia/lib64:/usr/local/nvidia/lib64",
"/var/lib/nvidia/bin:/usr/local/nvidia/bin"
],
"options": "--privileged"
}
}
],
},
"taskCount": 3,
"parallelism": 1
}
],
"allocationPolicy": {
"instances": [
{
"installGpuDrivers": INSTALL_GPU_DRIVERS,
"policy": {
"machineType": "MACHINE_TYPE",
"accelerators": [
{
"type": "GPU_TYPE",
"count": GPU_COUNT
}
]
}
}
],
"location": {
"allowedLocations": [
"ALLOWED_LOCATIONS"
]
}
}
}
Remplacez les éléments suivants :
PROJECT_ID
: ID de votre projet.INSTALL_GPU_DRIVERS
: facultatif. Lorsqu'elle est définie surtrue
, Batch récupère les pilotes requis pour le type de GPU que vous spécifiez dans le champpolicy
à partir d'un emplacement tiers, et les installe en votre nom. Si vous définissez ce champ surfalse
(valeur par défaut), vous devez installer manuellement les pilotes de GPU pour utiliser les GPU de cette tâche.MACHINE_TYPE
: type de machine, qui peut être prédéfini ou personnalisé, pour les VM de votre job. Le type de machine limite le type de GPU que vous pouvez utiliser. Pour créer une tâche avec un GPU, ce champ est obligatoire.GPU_TYPE
: type de GPU. Vous pouvez afficher la liste des types de GPU disponibles à l'aide de la commandegcloud compute accelerator-types list
. Pour créer une tâche avec un GPU, ce champ est obligatoire.GPU_COUNT
: nombre de GPU du type que vous avez spécifié dans le champtype
. Pour créer une tâche avec un GPU, ce champ est obligatoire.ALLOWED_LOCATIONS
: facultatif. Emplacements où les instances de VM de votre job sont autorisées à s'exécuter (par exemple,regions/us-central1, zones/us-central1-a
autorise la zoneus-central1-a
). Si vous spécifiez un emplacement autorisé, vous devez sélectionner la région et, éventuellement, une ou plusieurs zones. Les emplacements que vous choisissez doivent disposer du type de GPU souhaité pour cette tâche. Pour en savoir plus, consultez le champ de tableauallowedLocations
.
Ajouter un GPU à une tâche de script
Pour créer une tâche de script avec un GPU qui utilise l'image par défaut à l'aide de l'API Batch, utilisez la méthode jobs.create
.
Par exemple, pour créer une tâche de script avec un GPU, exécutez la requête suivante:
POST https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/jobs?job_id=example-job-gpu
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"script": {
"text": "echo Hello world from task ${BATCH_TASK_INDEX}."
}
}
]
},
"taskCount": 3,
"parallelism": 1
}
],
"allocationPolicy": {
"instances": [
{
"installGpuDrivers": INSTALL_GPU_DRIVERS,
"policy": {
"machineType": "MACHINE_TYPE",
"accelerators": [
{
"type": "GPU_TYPE",
"count": GPU_COUNT
}
]
}
}
],
"location": {
"allowedLocations": [
"ALLOWED_LOCATIONS"
]
}
}
}
Remplacez les éléments suivants :
PROJECT_ID
: ID de votre projet.INSTALL_GPU_DRIVERS
: facultatif. Lorsqu'elle est définie surtrue
, Batch récupère les pilotes requis pour le type de GPU que vous spécifiez dans le champpolicy
à partir d'un emplacement tiers, et les installe en votre nom. Si vous définissez ce champ surfalse
(valeur par défaut), vous devez installer manuellement les pilotes de GPU pour utiliser les GPU de cette tâche.MACHINE_TYPE
: type de machine, qui peut être prédéfini ou personnalisé, pour les VM de votre job. Le type de machine limite le type de GPU que vous pouvez utiliser. Pour créer une tâche avec un GPU, ce champ est obligatoire.GPU_TYPE
: type de GPU. Vous pouvez afficher la liste des types de GPU disponibles à l'aide de la commandegcloud compute accelerator-types list
. Pour créer une tâche avec un GPU, ce champ est obligatoire.GPU_COUNT
: nombre de GPU du type que vous avez spécifié dans le champtype
. Pour créer une tâche avec un GPU, ce champ est obligatoire.ALLOWED_LOCATIONS
: facultatif. Emplacements où les instances de VM de votre job sont autorisées à s'exécuter (par exemple,regions/us-central1, zones/us-central1-a
autorise la zoneus-central1-a
). Si vous spécifiez un emplacement autorisé, vous devez sélectionner la région et, éventuellement, une ou plusieurs zones. Les emplacements que vous choisissez doivent disposer du type de GPU souhaité pour cette tâche. Pour en savoir plus, consultez le champ de tableauallowedLocations
.
Ajouter un GPU à une tâche de conteneur et de script
Pour créer un conteneur et une tâche de script avec un GPU qui utilise l'image par défaut à l'aide de l'API Batch, utilisez la méthode jobs.create
.
Par exemple, pour créer une tâche de conteneur et de script avec un GPU, exécutez la requête suivante:
POST https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/jobs?job_id=example-job-gpu
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"container": {
"imageUri": "gcr.io/google_containers/cuda-vector-add:v0.1",
"options": "--gpus all"
}
},
{
"script": {
"text": "echo Hello world from script task ${BATCH_TASK_INDEX}."
}
}
]
},
"taskCount": 3,
"parallelism": 1
}
],
"allocationPolicy": {
"instances": [
{
"installGpuDrivers": INSTALL_GPU_DRIVERS,
"policy": {
"machineType": "MACHINE_TYPE",
"accelerators": [
{
"type": "GPU_TYPE",
"count": GPU_COUNT
}
]
}
}
],
"location": {
"allowedLocations": [
"ALLOWED_LOCATIONS"
]
}
}
}
Remplacez les éléments suivants :
PROJECT_ID
: ID de votre projet.INSTALL_GPU_DRIVERS
: facultatif. Lorsqu'elle est définie surtrue
, Batch récupère les pilotes requis pour le type de GPU que vous spécifiez dans le champpolicy
à partir d'un emplacement tiers, et les installe en votre nom. Si vous définissez ce champ surfalse
(valeur par défaut), vous devez installer manuellement les pilotes de GPU pour utiliser les GPU de cette tâche.MACHINE_TYPE
: type de machine, qui peut être prédéfini ou personnalisé, pour les VM de votre job. Le type de machine limite le type de GPU que vous pouvez utiliser. Pour créer une tâche avec un GPU, ce champ est obligatoire.GPU_TYPE
: type de GPU. Vous pouvez afficher la liste des types de GPU disponibles à l'aide de la commandegcloud compute accelerator-types list
. Pour créer une tâche avec un GPU, ce champ est obligatoire.GPU_COUNT
: nombre de GPU du type que vous avez spécifié dans le champtype
. Pour créer une tâche avec un GPU, ce champ est obligatoire.ALLOWED_LOCATIONS
: facultatif. Emplacements où les instances de VM de votre job sont autorisées à s'exécuter (par exemple,regions/us-central1, zones/us-central1-a
autorise la zoneus-central1-a
). Si vous spécifiez un emplacement autorisé, vous devez sélectionner la région et, éventuellement, une ou plusieurs zones. Les emplacements que vous choisissez doivent disposer du type de GPU souhaité pour cette tâche. Pour en savoir plus, consultez le champ de tableauallowedLocations
.
Étapes suivantes
- Si vous rencontrez des problèmes lors de la création ou de l'exécution d'une tâche, consultez Dépannage.
- Afficher les tâches et les tâches
- En savoir plus sur les options de création de tâches