Ce document explique comment utiliser des étiquettes pour organiser vos ressources.
Les étiquettes sont des paires clé/valeur appliquées aux ressources pour regrouper de l'IA générative. Le lot comporte des étiquettes prédéfinies, qui sont automatiquement appliquées aux ressources, et les étiquettes personnalisées, que vous définissez et appliquez la création d'un job.
Les étiquettes vous permettent de filtrer les résultats des listes de ressources et de Cloud Billing rapports. Par exemple, vous pouvez utiliser des libellés pour :
Clarifier et organiser la liste des tâches de votre projet.
Distinguez les exécutables d'une tâche à l'aide d'étiquettes pour décrire le type de conteneur ou de script qu'ils spécifient.
Analyser les coûts en filtrant les rapports Cloud Billing pour les ressources créées par lot ou par jobs spécifiques.
Pour en savoir plus sur les libellés, consultez également la documentation Compute Engine sur les libellés.
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 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 (
Restrictions
En plus des exigences concernant les libellés spécifiées dans la documentation Compute Engine, l'application de libellés à un job par lot et à ses ressources est soumise aux restrictions suivantes :
Batch n'accepte que les étiquettes des ressources créées à l'aide de Batch et les types suivants:
Tâches
Environnements exécutables
Processeurs graphiques (GPU) pour job (le cas échéant)
Disques persistants (disques de démarrage et volumes de stockage) pour une tâche
Instances de machine virtuelle (VM) pour une tâche
Après avoir pris en compte les libellés prédéfinis que Batch applique automatiquement à une tâche, vous pouvez définir les quantités de libellés personnalisés suivantes :
Vous pouvez définir jusqu'à 63 étiquettes personnalisées à appliquer à l'offre d'emploi et à ses et des exécutables.
Vous pouvez définir jusqu'à 61 libellés personnalisés à appliquer à chaque GPU, disque persistant et VM créés pour la tâche.
Batch n'accepte que la définition de libellés personnalisés avec des noms uniques. En conséquence :
Toute tentative de remplacement d'un libellé prédéfini entraîne des erreurs.
Si vous définissez une étiquette personnalisée en double, elle remplace l'étiquette personnalisée existante.
Batch n'accepte la définition de libellés que lors de la création d'une tâche.
Vous ne pouvez pas ajouter, mettre à jour ni supprimer de libellés pour les tâches et les exécutables.
Bien qu'il soit possible d'utiliser Compute Engine pour ajouter, mettre à jour ou supprimer des libellés pour les disques persistants et les VM créés pour les tâches, cela n'est pas recommandé. La période pendant laquelle les ressources d'un job existent est estimée de manière fiable, et les changements risquent de ne pas fonctionner correctement par lot.
Pour utiliser des libellés pour filtrer votre liste de tâches, vous devez afficher votre liste de tâches à l'aide de la gcloud CLI ou de l'API Batch.
Libellés prédéfinis
Chaque étiquette prédéfinie possède une clé commençant par le préfixe batch-
. Par
par défaut, Batch applique automatiquement les
étiquettes:
Pour chaque tâche que vous créez :
batch-job-id
: la valeur de ce libellé est définie sur le nom de la tâche.
Pour chaque GPU, disque persistant et VM créés pour une tâche :
batch-job-id
: la valeur de ce libellé est définie sur le nom de la tâche.batch-job-uid
: la valeur de ce libellé est définie sur l'identifiant unique (UID) de l'offre d'emploi.batch-node
: la valeur de ce libellé est nulle. Il regroupe simplement tous les GPU, disques persistants et VM créés pour les tâches. Par exemple : utiliser ce libellé lorsque vous afficher un rapport Cloud Billing identifier les coûts de tous les GPU, disques persistants et VM créés par lot.
Définir des étiquettes personnalisées
Vous pouvez éventuellement définir une ou plusieurs étiquettes personnalisées lors de la création d'un job. Vous pouvez définir des libellés personnalisés avec de nouvelles clés ou des clés que votre projet utilise déjà. Pour définir des libellés personnalisés, sélectionnez une ou plusieurs des méthodes suivantes dans ce document en fonction de l'objectif du libellé :
Définissez des étiquettes personnalisées pour la tâche et ses ressources.
Cette section explique comment appliquer une ou plusieurs étiquettes personnalisées à la tâche et à chaque GPU, disque persistant et VM créés pour le job. Après avoir créé la tâche, vous pouvez utiliser ces libellés pour filtrer les rapports Cloud Billing et les listes de tâches, de disques persistants et de VM de votre projet.
Définissez des étiquettes personnalisées pour la tâche.
Cette section explique comment appliquer un ou plusieurs libellés personnalisés à la tâche. Après créez le job, vous pouvez utiliser ces étiquettes pour filtrer les listes de emplois.
Définissez des étiquettes personnalisées pour les exécutables.
Cette section explique comment appliquer un ou plusieurs libellés personnalisés à un ou plusieurs exécutables pour la tâche. Après avoir créé le job, vous pouvez utiliser ces étiquettes pour : filtrer les listes de jobs de votre projet.
Définir des libellés personnalisés pour la tâche et ses ressources
Les libellés définis dans le champ labels
pour la stratégie d'allocation d'une tâche sont appliqués à la tâche, ainsi qu'à chaque GPU (le cas échéant), disque persistant (tous les disques de démarrage et les nouveaux volumes de stockage) et VM créés pour la tâche.
Vous pouvez définir des libellés pour une tâche et ses ressources lorsque vous en créez une à l'aide de gcloud CLI ou de l'API Batch.
gcloud
Par exemple, pour créer une tâche de conteneur de base dans us-central1
qui définit deux étiquettes personnalisées qui s'appliquent à la tâche et aux ressources créées pour la tâche, procédez comme suit :
Créez un fichier JSON qui spécifie les détails de configuration de la tâche et le champ
allocationPolicy.labels
.{ "allocationPolicy": { "instances": [ { "policy": { "machineType": "e2-standard-4" } } ], "labels": { "VM_LABEL_NAME1": "VM_LABEL_VALUE1", "VM_LABEL_NAME2": "VM_LABEL_VALUE2" } }, "taskGroups": [ { "taskSpec": { "runnables": [ { "container": { "imageUri": "gcr.io/google-containers/busybox", "entrypoint": "/bin/sh", "commands": [ "-c", "echo Hello world!" ] } } ] } } ] }
Remplacez les éléments suivants :
VM_LABEL_NAME1
: nom du premier libellé à appliquer aux VM créées pour la tâche.VM_LABEL_VALUE1
: valeur du premier libellé à appliquer aux VM créées pour la tâche.VM_LABEL_NAME2
: nom du deuxième libellé à appliquer vers les VM créées pour ce job.VM_LABEL_VALUE2
: valeur du deuxième libellé à s'appliquent aux VM créées pour ce job.
Créez la tâche dans
us-central1
à l'aide de la méthode commandegcloud batch jobs submit
.gcloud batch jobs submit example-job \ --config=JSON_CONFIGURATION_FILE \ --location=us-central1
Remplacez
JSON_CONFIGURATION_FILE
par le chemin d'accès au fichier JSON contenant les informations de configuration de la tâche que vous avez créée à l'étape précédente.
API
Par exemple, pour créer dans us-central1
un job de conteneur de base qui définit deux
des étiquettes personnalisées qui s'appliquent au job et aux ressources créées pour celui-ci,
envoyez une requête POST
au
Méthode jobs.create
et spécifiez le paramètre
allocationPolicy.labels
.
POST https://batch.googleapis.com/v1/projects/example-project/locations/us-central1/jobs?job_id=example-job
{
"allocationPolicy": {
"instances": [
{
"policy": {
"machineType": "e2-standard-4"
}
}
],
"labels": {
"VM_LABEL_NAME1": "VM_LABEL_VALUE1",
"VM_LABEL_NAME2": "VM_LABEL_VALUE2"
}
},
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"container": {
"imageUri": "gcr.io/google-containers/busybox",
"entrypoint": "/bin/sh",
"commands": [
"-c",
"echo Hello world!"
]
}
}
]
}
}
]
}
Remplacez les éléments suivants :
VM_LABEL_NAME1
: nom du premier libellé à appliquer aux VM créées pour la tâche.VM_LABEL_VALUE1
: valeur du premier libellé à appliquer les VM créées pour ce job.VM_LABEL_NAME2
: nom du deuxième libellé à appliquer aux VM créées pour la tâche.VM_LABEL_VALUE2
: valeur du deuxième libellé à appliquer vers les VM créées pour ce job.
Java
Node.js
Python
Définir des étiquettes personnalisées pour le job
Les libellés définis dans le champ labels
pour la tâche ne sont appliqués qu'à la tâche.
Vous pouvez définir des libellés pour une tâche lorsque vous en créez une à l'aide de gcloud CLI ou de l'API Batch.
gcloud
Par exemple, pour créer dans us-central1
un job de conteneur de base qui définit
deux étiquettes personnalisées qui s'appliquent au job lui-même, procédez comme suit:
Créez un fichier JSON qui spécifie les détails de configuration du job et la classe Champ
labels
.{ "taskGroups": [ { "taskSpec": { "runnables": [ { "container": { "imageUri": "gcr.io/google-containers/busybox", "entrypoint": "/bin/sh", "commands": [ "-c", "echo Hello World!" ] } } ] } } ], "labels": { "JOB_LABEL_NAME1": "JOB_LABEL_VALUE1", "JOB_LABEL_NAME2": "JOB_LABEL_VALUE2" } }
Remplacez les éléments suivants :
JOB_LABEL_NAME1
: nom du premier libellé à postuler à votre emploi.JOB_LABEL_VALUE1
: valeur du premier libellé à appliquer à votre tâche.JOB_LABEL_NAME2
: nom du deuxième libellé à postuler à votre emploi.JOB_LABEL_VALUE2
: valeur de la deuxième étiquette à appliquer à votre tâche.
Créez le job dans
us-central1
à l'aide de la commandegcloud batch jobs submit
avec les options suivantes :gcloud batch jobs submit example-job \ --config=JSON_CONFIGURATION_FILE \ --location=us-central1
Remplacez
JSON_CONFIGURATION_FILE
par le chemin d'accès JSON contenant les détails de configuration du job que vous avez créés à l'étape précédente étape.
API
Par exemple, pour créer une tâche de conteneur dans us-central1
qui définit deux libellés personnalisés à appliquer aux tâches elles-mêmes, envoyez une requête POST
à la méthode jobs.create
et spécifiez le champ labels
.
POST https://batch.googleapis.com/v1/projects/example-project/locations/us-central1/jobs?job_id=example-job
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"container": {
"imageUri": "gcr.io/google-containers/busybox",
"entrypoint": "/bin/sh",
"commands": [
"-c",
"echo Hello World!"
]
}
}
]
}
}
],
"labels": {
"JOB_LABEL_NAME1": "JOB_LABEL_VALUE1",
"JOB_LABEL_NAME2": "JOB_LABEL_VALUE2"
}
}
Remplacez les éléments suivants :
JOB_LABEL_NAME1
: nom du premier libellé à appliquer à votre tâche.JOB_LABEL_VALUE1
: valeur du premier libellé à appliquer à votre travail.JOB_LABEL_NAME2
: nom du deuxième libellé à appliquer votre travail.JOB_LABEL_VALUE2
: valeur de la deuxième étiquette à appliquer à votre tâche.
Java
Node.js
Python
Définir des libellés personnalisés pour les exécutables
Les étiquettes définies dans
Champ labels
pour un exécutable
ne sont appliqués qu'à cet exécutable.
Vous pouvez définir des étiquettes pour un ou plusieurs exécutables lorsque vous créez un job à l'aide de la propriété gcloud CLI ou l'API Batch.
gcloud
Par exemple, pour créer une tâche dans us-central1
qui définit deux étiquettes personnalisées,
une étiquette personnalisée pour chacun des exécutables des deux jobs, procédez comme suit:
Créez un fichier JSON qui spécifie les détails de configuration de la tâche et les champs
runnables.labels
.{ "taskGroups": [ { "taskSpec": { "runnables": [ { "container": { "imageUri": "gcr.io/google-containers/busybox", "entrypoint": "/bin/sh", "commands": [ "-c", "echo Hello from task ${BATCH_TASK_INDEX}!" ] }, "labels": { "RUNNABLE1_LABEL_NAME1": "RUNNABLE1_LABEL_VALUE1" } }, { "script": { "text": "echo Hello from task ${BATCH_TASK_INDEX}!" }, "labels": { "RUNNABLE2_LABEL_NAME1": "RUNNABLE2_LABEL_VALUE1" } } ] } } ] }
Remplacez les éléments suivants :
RUNNABLE1_LABEL_NAME1
: nom du libellé à appliquer au premier exécutable de la tâche.RUNNABLE1_LABEL_VALUE1
: valeur du libellé à au premier exécutable du job.RUNNABLE2_LABEL_NAME1
: nom du libellé à appliquer au deuxième exécutable du job.RUNNABLE2_LABEL_VALUE1
: valeur du libellé à appliquer au deuxième exécutable de la tâche.
Créez la tâche dans
us-central1
à l'aide de la commandegcloud batch jobs submit
.gcloud batch jobs submit example-job \ --config=JSON_CONFIGURATION_FILE \ --location=us-central1
Remplacez
JSON_CONFIGURATION_FILE
par le chemin d'accès au fichier JSON contenant les informations de configuration de la tâche que vous avez créée à l'étape précédente.
API
Par exemple, pour créer une tâche dans us-central1
qui définit deux libellés personnalisés, un pour chacun des deux exécutables de la tâche, envoyez une requête POST
à la méthode jobs.create
et spécifiez les champs runnables.labels
.
POST https://batch.googleapis.com/v1/projects/example-project/locations/us-central1/jobs?job_id=example-job
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"container": {
"imageUri": "gcr.io/google-containers/busybox",
"entrypoint": "/bin/sh",
"commands": [
"-c",
"echo Hello from ${BATCH_TASK_INDEX}!"
]
},
"labels": {
"RUNNABLE1_LABEL_NAME1": "RUNNABLE1_LABEL_VALUE1"
}
},
{
"script": {
"text": "echo Hello from ${BATCH_TASK_INDEX}!"
},
"labels": {
"RUNNABLE2_LABEL_NAME1": "RUNNABLE2_LABEL_VALUE1"
}
}
]
}
}
]
}
Remplacez les éléments suivants :
RUNNABLE1_LABEL_NAME1
: nom du libellé à appliquer à l'exécutable de la première tâche.RUNNABLE1_LABEL_VALUE1
: valeur du libellé à appliquer à l'exécutable de la première tâche.RUNNABLE2_LABEL_NAME1
: nom du libellé à appliquer à l'exécutable de la deuxième tâche.RUNNABLE2_LABEL_VALUE1
: valeur du libellé à appliquer à l'exécutable du deuxième job.
Java
Node.js
Python
Étape suivante
Utilisez des libellés comme filtres lorsque vous effectuez les opérations suivantes :
Découvrez comment supprimer des tâches.