Ce document explique comment créer et exécuter un job qui utilise un processeur graphique (GPU).
Lorsque vous créez un job par lot, vous pouvez éventuellement ajouter un ou plusieurs GPU aux VM qui l'exécutent. Parmi les cas d'utilisation courants des tâches qui utilisent des GPU, citons le traitement intensive des données et les charges de travail de machine learning (ML).
Avant de commencer
- Si vous n'avez jamais utilisé Batch, consultez la page Premiers pas avec Batch et activez Batch en remplissant les conditions préalables pour les projets et les utilisateurs.
-
Afin d'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 par défaut le compte de service Compute Engine 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 qui utilise des GPU
Pour créer une tâche qui utilise des GPU, procédez comme suit:
- Consultez la section Conditions requises pour qu'une tâche puisse utiliser des GPU afin de déterminer les méthodes que vous pouvez utiliser pour créer votre tâche.
- Créez un job avec les méthodes que vous avez sélectionnées. Pour obtenir des exemples de création de tâche à l'aide des méthodes recommandées, consultez la section Créer un exemple de tâche utilisant des GPU.
Conditions requises pour qu'une tâche utilise des GPU
Pour utiliser des GPU, une tâche doit effectuer les opérations suivantes:
- Installez les pilotes de GPU requis soit automatiquement, soit manuellement, en fonction des exigences de la tâche.
- Si votre tâche spécifie d'autres ressources pour ses VM (directement ou à l'aide d'un modèle d'instance de VM), elle doit définir des ressources de VM compatibles.
Une fois que vous avez déterminé comment répondre à ces exigences pour votre tâche, vous devez également définir l'emplacement et les GPU de la tâche. Les VM d'une tâche peuvent utiliser chacune un ou plusieurs GPU du type que vous spécifiez. Les emplacements autorisés pour les VM de la tâche (ou, s'ils ne sont pas définis, l'emplacement de la tâche) doivent correspondre au type de GPU spécifié. Pour en savoir plus sur la définition du type de GPU, du nombre de GPU et d'un emplacement valide pour une tâche, consultez les exemples.
Installer des pilotes de GPU.
Pour installer les pilotes de GPU requis, sélectionnez l'une des méthodes suivantes:
Installer les pilotes automatiquement (si possible) : comme indiqué dans les exemples, pour permettre à Batch de récupérer les pilotes de GPU requis à partir d'un emplacement tiers et de les installer pour vous, définissez le champ
installGpuDrivers
de la tâche surtrue
. Cette méthode est recommandée si votre tâche ne nécessite pas d'installer manuellement des pilotes.Installer les pilotes manuellement:cette méthode est requise dans les cas suivants:
- Une tâche utilise à la fois des scripts et des exécutables de conteneur, et ne dispose pas d'un accès à Internet. Pour en savoir plus sur l'accès à une tâche, consultez la page Présentation de la mise en réseau de lots.
- Un job utilise une image de VM personnalisée. Pour en savoir plus sur les images d'OS de VM et sur les images d'OS de VM que vous pouvez utiliser, consultez la section Présentation de l'environnement d'OS de VM.
Pour installer manuellement les pilotes de GPU requis, la méthode suivante est recommandée:
Créez une image de VM personnalisée incluant les pilotes de GPU.
Pour installer des 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 un job 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
(par défaut).
Définir les ressources de VM compatibles
Si votre tâche définit une ressource de VM (l'un des sous-champs instances[]
) autre que les GPU, vous devez définir ces ressources de VM de manière compatible.
Pour définir les ressources des VM d'une tâche, y compris les GPU, vous ne pouvez utiliser que les méthodes suivantes:
- Définir les ressources directement (recommandé) : comme indiqué dans les exemples, pour définir directement les ressources des VM d'une tâche, utilisez le champ
policy
. - Définir les ressources dans un modèle:définissez les ressources pour les VM d'un job en spécifiant un modèle d'instance Compute Engine.
De plus, toutes les ressources que vous définissez doivent être compatibles avec le type et le nombre de GPU pour la tâche. Pour en savoir plus sur les ressources de VM que vous pouvez utiliser avec les GPU, consultez la section Plates-formes GPU dans la documentation Compute Engine.
Créer un exemple de job utilisant des GPU
Vous pouvez créer un job qui utilise des GPU à l'aide de gcloud CLI ou de l'API Batch.
gcloud
Créez un fichier JSON qui spécifie les détails de configuration de la tâche, les sous-champs
type
etcount
du champaccelerators[]
, ainsi qu'un emplacement contenant ces types de GPU.Par exemple, pour créer une tâche de script de base qui utilise des GPU, installe automatiquement les pilotes de GPU requis et spécifie les emplacements autorisés pour les VM de la tâche, créez un fichier 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": { "accelerators": [ { "type": "GPU_TYPE", "count": GPU_COUNT } ] } } ], "location": { "allowedLocations": [ "ALLOWED_LOCATIONS" ] } } }
Remplacez les éléments suivants :
INSTALL_GPU_DRIVERS
: facultatif. Lorsque ce paramètre est défini 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, puis les installe pour vous. Si vous définissez ce champ surfalse
(par défaut), vous devez installer manuellement des pilotes de GPU pour utiliser des GPU pour ce job.GPU_TYPE
: type de GPU. Vous pouvez afficher la liste des types de GPU disponibles à l'aide de la commandegcloud compute accelerator-types list
.GPU_COUNT
: nombre de GPU du type spécifié.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 correspondre aux types de GPU souhaités pour cette tâche. Sinon, si vous omettez ce champ, l'emplacement de la tâche doit être de type GPU. Pour en savoir plus, consultez le champallowedLocations[]
.
Pour créer et exécuter la tâche, utilisez la commande
gcloud batch jobs submit
suivante:gcloud batch jobs submit JOB_NAME \ --location LOCATION \ --config JSON_CONFIGURATION_FILE
Remplacez les éléments suivants :
JOB_NAME
: nom de la tâche.LOCATION
: le lieu de la tâche.JSON_CONFIGURATION_FILE
: chemin d'accès à un fichier JSON contenant les détails de configuration de la tâche.
API
Envoyez une requête POST
à la méthode jobs.create
qui spécifie les détails de configuration de la tâche, les sous-champs type
et count
du champ accelerators[]
, ainsi qu'un emplacement contenant ces types de GPU.
Par exemple, pour créer une tâche de script de base qui utilise des GPU, installe automatiquement les pilotes de GPU requis et spécifie les emplacements autorisés pour les VM de la tâche, créez un fichier JSON avec le contenu suivant:
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 task ${BATCH_TASK_INDEX}."
}
}
]
},
"taskCount": 3,
"parallelism": 1
}
],
"allocationPolicy": {
"instances": [
{
"installGpuDrivers": INSTALL_GPU_DRIVERS,
"policy": {
"accelerators": [
{
"type": "GPU_TYPE",
"count": GPU_COUNT
}
]
}
}
],
"location": {
"allowedLocations": [
"ALLOWED_LOCATIONS"
]
}
}
}
Remplacez les éléments suivants :
PROJECT_ID
: ID de projet de votre projet.LOCATION
: le lieu de la tâche.JOB_NAME
: nom de la tâche.INSTALL_GPU_DRIVERS
: facultatif. Lorsque ce paramètre est défini 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, puis les installe pour vous. Si vous définissez ce champ surfalse
(par défaut), vous devez installer manuellement des pilotes de GPU pour utiliser des GPU pour ce job.GPU_TYPE
: type de GPU. Vous pouvez afficher la liste des types de GPU disponibles à l'aide de la commandegcloud compute accelerator-types list
.GPU_COUNT
: nombre de GPU du type spécifié.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 correspondre aux types de GPU souhaités pour cette tâche. Sinon, si vous omettez ce champ, l'emplacement de la tâche doit être de type GPU. Pour en savoir plus, consultez le champallowedLocations[]
.
Étapes suivantes
- Si vous rencontrez des problèmes pour créer ou exécuter un job, consultez la section Dépannage.
- Affichez les tâches et les tâches.
- En savoir plus sur les options de création de missions