Ce document explique comment créer et exécuter un job qui utilise un de processeur graphique (GPU). Pour en savoir plus sur les fonctionnalités et applicables aux GPU, consultez la section À propos des GPU documentation Compute Engine.
Lorsque vous créez un job Batch, vous pouvez éventuellement utiliser des GPU pour pour accélérer des charges de travail spécifiques. Voici quelques cas d'utilisation courants de tâches utilisant des GPU : pour le traitement intensive des données et les charges de travail d'intelligence artificielle (IA), telles que le machine learning (ML).
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 à la création d'un job, demandez à votre administrateur de vous accorder le 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 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 page Gérer l'accès aux projets, aux dossiers et aux organisations.
Vous pouvez également obtenir les autorisations requises via des rôles personnalisés ou d'autres rôles prédéfinis.
-
Éditeur de jobs 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:
- Planifiez les exigences d'une tâche qui utilise des GPU.
- Créez une tâche avec les exigences et les méthodes que vous avez identifiées. Pour savoir comment créer une tâche à l'aide des méthodes recommandées, consultez la section Créer un exemple de tâche qui utilise des GPU de ce document.
Planifier les exigences d'une tâche qui utilise des GPU
Avant de créer une tâche qui utilise des GPU, planifiez les exigences de la tâche comme expliqué dans les sections suivantes :
- Sélectionnez le type de machine GPU.
- Installer les pilotes de GPU
- Définir les ressources de VM compatibles
Étape 1 : Sélectionnez le type de machine GPU
Les types de machines GPU disponibles (combinaisons valides de type de GPU, nombre de les GPU, le type de machine (processeurs virtuels et mémoire) et leurs cas d'utilisation sont répertoriés sur la page Page Types de machines GPU dans Compute Engine dans la documentation Google Cloud.
Les champs requis pour qu'une tâche spécifie un type de machine GPU varient en fonction du catégories dans le tableau suivant:
Types de machines avec GPU et exigences de tâche | |
---|---|
GPU pour les VM optimisées pour les accélérateurs : les VM dont le type de machine appartient à la famille de machines optimisées pour les accélérateurs sont associées automatiquement à un type et un nombre spécifiques de ces GPU. |
Pour utiliser des GPU dans des VM optimisées pour les accélérateurs, nous vous recommandons spécifier le type de machine. Chaque type de machine optimisé pour les accélérateurs n'est compatible qu'avec un type et un nombre spécifiques de GPU. Il est donc fonctionnellement équivalent que vous spécifiiez ou non ces valeurs en plus du type de machine optimisé pour les accélérateurs. Plus précisément, Batch ne permet également de spécifier que le type et le nombre de GPU pour les VM optimisées pour l'accélérateur, mais les options de processeurs virtuels et de mémoire qui en résultent sont souvent très limitées. C'est pourquoi nous vous recommandons de vérifier que les options de processeurs virtuels et de mémoire disponibles sont compatibles avec les exigences de la tâche de l'ordre de travail. |
GPU pour les VM N1: avec ces GPU, vous devez spécifier le type et la quantité à rattacher à chaque VM, et doivent être associées aux VM avec une machine à partir de Série de machines N1. |
Pour utiliser des GPU pour les VM N1, nous vous recommandons de spécifier au moins le type et le nombre de GPU. Assurez-vous que la combinaison de valeurs correspond à l'une des options de GPU valides pour les types de machines N1. Les options de vCPU et de mémoire pour les VM N1 utilisant n'importe quel type et est assez flexible. Si vous le souhaitez, vous pouvez donc laisser Batch qui répond aux exigences de la tâche. |
Étape 2 : Installez les pilotes de GPU
Pour installer les pilotes de GPU requis, sélectionnez l'une des méthodes suivantes :
Installer automatiquement les pilotes (recommandé si possible) : comme indiqué dans les exemples, pour permettre à Batch de récupérer les pilotes de GPU requis à partir d'un un emplacement tiers et les installer pour vous, définissez le
installGpuDrivers
pour le job àtrue
. Cette méthode est recommandée si votre travail ne vous oblige pas à installer les pilotes manuellement.Si vous devez spécifier la version du pilote de GPU les installations par lot, définissez également Champ
driverVersion
.Installer les pilotes manuellement : cette méthode est requise dans les cas suivants : sont vrais:
- Une tâche utilise à la fois des scripts et des exécutables de conteneur, et n'a pas accès à Internet. Pour en savoir plus sur les droits d'accès d'une tâche, consultez la section Présentation de la mise en réseau par lot.
- Une tâche utilise une image de VM personnalisée. Pour en savoir plus sur les images d'OS de VM et d'OS de VM que vous pouvez utiliser, consultez Présentation de l'environnement d'OS de VM
Pour installer manuellement les pilotes de GPU requis, nous vous recommandons de suivre la méthode suivante :
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 basé sur le système d'exploitation que vous souhaitez utiliser:
Si votre tâche contient des exécutables de conteneur et n'utilise pas Container-Optimized OS, vous devez également installer le 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).
Étape 3 : Définir les ressources de VM compatibles
Pour en savoir plus sur les exigences et les options de définition des ressources de VM pour une tâche, consultez la section Ressources de tâche.
En résumé, vous devez effectuer toutes les opérations suivantes lorsque vous définissez les ressources de VM pour une tâche qui utilise des GPU:
Assurez-vous que le type de machine GPU est disponible sur l'emplacement de votre VM d'un job.
Pour savoir où les types de machines GPU sont disponibles, consultez Disponibilité des GPU par régions et zones dans la documentation Compute Engine.
Si vous spécifiez le type de machine du job, assurez-vous qu'il dispose de suffisamment vCPU et mémoire pour répondre aux exigences des tâches du job. Spécifier la machine du job est requis lors de l'utilisation de GPU pour les VM optimisées pour les accélérateurs et le type lorsque vous utilisez des GPU pour les VM N1.
Assurez-vous de définir les ressources de VM pour une tâche à l'aide d'une méthode valide :
- Définissez les ressources de VM directement à l'aide du champ
instances[].policy
(recommandé si possible). Cette méthode est illustrée dans les exemples. - Définissez les ressources de VM via un modèle à l'aide du champ
instances[].instanceTemplate
. Cette méthode est requise pour installer manuellement les pilotes de GPU via un l'image. Pour en savoir plus, consultez Définissez les ressources de la tâche à l'aide d'un modèle d'instance de VM.
- Définissez les ressources de VM directement à l'aide du champ
Créer un exemple de job qui utilise des GPU
Les sections suivantes expliquent comment créer un exemple de tâche pour différents types de machines GPU. Les exemples d'emplois installent tous automatiquement les pilotes de GPU et définissent directement les ressources de VM.
Utiliser des GPU pour les VM optimisées pour les accélérateurs
Vous pouvez créer un job qui utilise des GPU pour les VM optimisées pour les accélérateurs à l'aide de gcloud CLI, de l'API Batch, de Java ou de Python.
gcloud
Créez un fichier JSON qui installe les pilotes de GPU, définit le Champ
machineType
avec un type de machine de la famille de machines optimisées pour les accélérateurs, et utilise un emplacement disposant du type de GPU spécifié.Par exemple, pour créer une tâche de script de base qui utilise des GPU pour les VM optimisées pour les accélérateurs, 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": { "machineType": "MACHINE_TYPE" } } ], "location": { "allowedLocations": [ "ALLOWED_LOCATIONS" ] } } }
Remplacez les éléments suivants :
INSTALL_GPU_DRIVERS
: si défini surtrue
, extrait par lot les pilotes requis pour Type de GPU spécifié dans le champpolicy
depuis un emplacement tiers, et Batch les installe en votre nom. Si vous définissez ce champ surfalse
(valeur par défaut), vous devez d'installer manuellement les pilotes de GPU afin d'utiliser n'importe quel GPU pour cette tâche.MACHINE_TYPE
: type de machine du famille de machines optimisées pour les accélérateurs.ALLOWED_LOCATIONS
: le champallowedLocations[]
définit une région, et éventuellement une ou plusieurs zones, dans lesquelles les instances de VM de votre tâche sont autorisées à s'exécuter. Par exemple,regions/us-central1, zones/us-central1-a
autorise la zoneus-central1-a
. Assurez-vous de spécifier les zones proposant le type de machine GPU que vous souhaitez pour cette tâche. Sinon, si vous omettez ce champ, assurez-vous que l'emplacement de la tâche propose le type de machine GPU.
Pour créer et exécuter la tâche, utilisez la commande
gcloud batch jobs submit
: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
: emplacement 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 installe les pilotes de GPU, définit le champ machineType
avec le type de machine de la famille de machines optimisées pour les accélérateurs et utilise un emplacement avec le type de GPU spécifié.
Par exemple, pour créer une tâche de script de base qui utilise des GPU pour les VM optimisées pour l'accélérateur, 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 task ${BATCH_TASK_INDEX}."
}
}
]
},
"taskCount": 3,
"parallelism": 1
}
],
"allocationPolicy": {
"instances": [
{
"installGpuDrivers": INSTALL_GPU_DRIVERS,
"policy": {
"machineType": "MACHINE_TYPE"
}
}
],
"location": {
"allowedLocations": [
"ALLOWED_LOCATIONS"
]
}
}
}
Remplacez les éléments suivants :
PROJECT_ID
: le ID du projet de votre projet.LOCATION
: emplacement du travail.JOB_NAME
: nom de la tâche.INSTALL_GPU_DRIVERS
: lorsque la valeur esttrue
, 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 d'installer manuellement les pilotes de GPU afin d'utiliser n'importe quel GPU pour cette tâche.MACHINE_TYPE
: type de machine du famille de machines optimisées pour les accélérateurs.ALLOWED_LOCATIONS
: le ChampallowedLocations[]
définit une région, et éventuellement une ou plusieurs zones, où la VM instances de votre job sont autorisées à s'exécuter, exemple,regions/us-central1, zones/us-central1-a
autorise la zoneus-central1-a
Veillez à spécifier qui proposent le type de machine GPU. que vous souhaitez pour ce travail. Sinon, si vous omettez ce champ, assurez-vous que l'emplacement de la tâche propose le type de machine GPU.
Java
Python
Utiliser des GPU pour les VM N1
Vous pouvez créer un job qui utilise des GPU pour les VM N1 à l'aide de gcloud CLI. API Batch, Java, Node.js ou Python.
gcloud
Créez un fichier JSON qui installe les pilotes de GPU, définit les sous-champs
type
etcount
du champaccelerators[]
et utilise un emplacement avec le type de GPU spécifié.Par exemple, pour créer une tâche de script de base qui utilise des GPU pour les VM N1 et permet à Batch de sélectionner le type de machine N1 exact, créez un fichier JSON contenant les éléments suivants :
{ "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
: lorsque la valeur esttrue
, 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 des GPU pour cette tâche.GPU_TYPE
: le GPU de mots clés. Vous pouvez afficher une liste des types de GPU disponibles à l'aide de la Commandegcloud compute accelerator-types list
N'utilisez ce champ que pour les GPU des VM N1.GPU_COUNT
: nombre de GPU du type spécifié. Pour en savoir plus sur les options valides, consultez la section Types de machines GPU pour la série de machines N1. N'utilisez ce champ que pour les GPU des VM N1.ALLOWED_LOCATIONS
: le ChampallowedLocations[]
définit une région, et éventuellement une ou plusieurs zones, où la VM instances de votre job sont autorisées à s'exécuter, exemple,regions/us-central1, zones/us-central1-a
autorise la zoneus-central1-a
Assurez-vous de spécifier les zones proposant le type de machine GPU que vous souhaitez pour cette tâche. Sinon, si vous omettez ce champ, assurez-vous que l'emplacement de la tâche propose le type de machine GPU.
Pour créer et exécuter la tâche, utilisez la commande
gcloud batch jobs submit
: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
: emplacement de la tâche.JSON_CONFIGURATION_FILE
: chemin d'accès d'une JSON contenant les détails de la configuration du job.
API
Envoyez une requête POST
à la méthode jobs.create
qui installe les pilotes de GPU, définit les sous-champs type
et count
du champ accelerators[]
et utilise un emplacement avec le type de GPU spécifié.
Par exemple, pour créer une tâche de script de base qui utilise des GPU pour les VM N1 et permet à Batch de sélectionner le type de machine N1 exact, effectuez 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 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
: le ID du projet de votre projet.LOCATION
: emplacement de la tâche.JOB_NAME
: nom de la tâche.INSTALL_GPU_DRIVERS
: lorsque la valeur esttrue
, 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 des GPU pour cette tâche.GPU_TYPE
: type de GPU. Vous pouvez afficher la liste des types de GPU disponibles à l'aide de la commandegcloud compute accelerator-types list
. N'utilisez ce champ que pour les GPU des VM N1.GPU_COUNT
: le nombre de GPU du type spécifié. Pour en savoir plus sur les options valides, consultez la section Types de machines GPU pour la série de machines N1. N'utilisez ce champ que pour les GPU des VM N1.ALLOWED_LOCATIONS
: le champallowedLocations[]
définit une région, et éventuellement une ou plusieurs zones, dans lesquelles les instances de VM de votre tâche sont autorisées à s'exécuter. Par exemple,regions/us-central1, zones/us-central1-a
autorise la zoneus-central1-a
. Assurez-vous de spécifier les zones proposant le type de machine GPU que vous souhaitez pour cette tâche. Sinon, si vous omettez ce champ, que l'emplacement du job propose le type de machine GPU.
Java
Node.js
Pour créer une tâche avec des GPU à l'aide de Node.js, sélectionnez l'une des options suivantes en fonction du type de machine de votre modèle de GPU :
- Créer un job qui utilise des GPU avec des VM optimisées pour les accélérateurs
- Créer un job qui utilise des GPU avec des VM N1
Créer une tâche qui utilise des GPU avec des VM optimisées pour les accélérateurs
Pour utiliser des GPU avec des VM optimisées pour les accélérateurs, il vous suffit de spécifier le type de machine souhaité pour les VM de la tâche :
Créer une tâche qui utilise des GPU avec des VM N1
Pour utiliser des GPU avec des VM N1, vous devez spécifier le nombre et le type de GPU souhaités pour chacune des VM de la tâche:
Python
Étape suivante
- Si vous rencontrez des problèmes lors de la création ou de l'exécution d'un job, consultez la section Dépannage.
- Afficher les missions et les tâches
- Découvrez d'autres options de création de tâches.