En este documento, se explica cómo definir los recursos para un trabajo por lotes mediante la especificación de una plantilla de instancias de VM de Compute Engine.
De manera opcional, puedes definir los recursos para un trabajo mediante uno de los siguientes métodos:
- Usa el campo
policy
para definir los recursos de un trabajo directamente, como se ejemplifica en Crea un trabajo básico. - Usa el campo
instanceTemplate
para definir los recursos de un trabajo mediante la especificación de una plantilla de instancias de VM, como se explica en esta sección. Este método es necesario para crear un trabajo que use imágenes de VM no predeterminadas.
Antes de comenzar
- Si nunca antes usaste Batch, revisa Comienza a usar Batch y completa los requisitos previos para proyectos y usuarios.
-
Si quieres obtener los permisos que necesitas para crear un trabajo, solicita al administrador que te otorgue los siguientes roles de IAM:
-
Editor de trabajos por lotes (
roles/batch.jobsEditor
) en el proyecto -
Usuario de cuenta de servicio (
roles/iam.serviceAccountUser
) en la cuenta de servicio del trabajo, que es la cuenta de servicio predeterminada de Compute Engine de forma predeterminada -
Crea un trabajo a partir de una plantilla de instancias de VM de Compute Engine:
Visualizador de Compute (
roles/compute.viewer
) en la plantilla de instancias de VM
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso.
También puedes obtener los permisos necesarios mediante roles personalizados o cualquier otro rol predefinido.
-
Editor de trabajos por lotes (
Crea un trabajo con una plantilla de instancias de VM de Compute Engine
En esta sección, se proporcionan ejemplos para crear un trabajo de secuencia de comandos básico a partir de una plantilla de instancias de VM existente. Puedes crear un trabajo a partir de una plantilla de instancias de VM mediante gcloud CLI, la API de Batch, Go, Java, Node.js o Python.
gcloud
Para crear un trabajo a partir de una plantilla de instancias de VM con gcloud CLI, usa el comando gcloud batch jobs submit
y especifica la plantilla de instancias de VM en el archivo de configuración JSON del trabajo.
Por ejemplo, para crear un trabajo básico de secuencia de comandos a partir de una plantilla de instancias de VM, sigue estos pasos:
Crea un archivo JSON en el directorio actual llamado
hello-world-instance-template.json
con el siguiente contenido:{ "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { "text": "echo Hello world! This is task ${BATCH_TASK_INDEX}. This job has a total of ${BATCH_TASK_COUNT} tasks." } } ], "computeResource": { "cpuMilli": 2000, "memoryMib": 16 }, "maxRetryCount": 2, "maxRunDuration": "3600s" }, "taskCount": 4, "parallelism": 2 } ], "allocationPolicy": { "instances": [ { "installGpuDrivers" INSTALL_GPU_DRIVERS, "instanceTemplate": "INSTANCE_TEMPLATE_NAME" } ] }, "labels": { "department": "finance", "env": "testing" }, "logsPolicy": { "destination": "CLOUD_LOGGING" } }
Reemplaza lo siguiente:
INSTALL_GPU_DRIVERS
: Opcional Cuando se establece entrue
, Batch recupera los controladores necesarios para el tipo de GPU que especificas en tu plantilla de instancias de VM de Compute Engine y Batch los instala en tu nombre. Para obtener más información, consulta cómo crear un trabajo que use una GPU.INSTANCE_TEMPLATE_NAME
: Es el nombre de una plantilla de instancias de VM de Compute Engine existente. Aprende a crear y enumerar plantillas de instancias.
Ejecuta el siguiente comando:
gcloud batch jobs submit example-template-job \ --location us-central1 \ --config hello-world-instance-template.json
API
Para crear un trabajo básico con la API de Batch, usa el método jobs.create
y especifica una plantilla de instancias de VM en el campo allocationPolicy
.
Por ejemplo, para crear trabajos de secuencia de comandos básicos a partir de una plantilla de instancias de VM, usa la siguiente solicitud:
POST https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/jobs?job_id=example-script-job
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"script": {
"text": "echo Hello world! This is task ${BATCH_TASK_INDEX}. This job has a total of ${BATCH_TASK_COUNT} tasks."
}
}
],
"computeResource": {
"cpuMilli": 2000,
"memoryMib": 16
},
"maxRetryCount": 2,
"maxRunDuration": "3600s"
},
"taskCount": 4,
"parallelism": 2
}
],
"allocationPolicy": {
"instances": [
{
"installGpuDrivers" INSTALL_GPU_DRIVERS,
"instanceTemplate": "INSTANCE_TEMPLATE_NAME"
}
]
},
"labels": {
"department": "finance",
"env": "testing"
},
"logsPolicy": {
"destination": "CLOUD_LOGGING"
}
}
Reemplaza lo siguiente:
PROJECT_ID
: Es el ID del proyecto.INSTALL_GPU_DRIVERS
: Opcional Cuando se establece entrue
, Batch recupera los controladores necesarios para el tipo de GPU que especificas en tu plantilla de instancias de VM de Compute Engine y Batch los instala en tu nombre. Para obtener más información, consulta Crea un trabajo que use una GPU.INSTANCE_TEMPLATE_NAME
: Es el nombre de una plantilla de instancias de VM de Compute Engine existente. Aprende a crear y enumerar plantillas de instancias.
Comienza a usarlo
Go
Si deseas obtener más información, consulta la documentación de referencia de la API de Go por lotes.
Java
Java
Si deseas obtener más información, consulta la documentación de referencia de la API de Java por lotes.
Node.js
Node.js
Si deseas obtener más información, consulta la documentación de referencia de la API de Node.js por lotes.
Python
Python
Si deseas obtener más información, consulta la documentación de referencia de la API de Python por lotes.
¿Qué sigue?
- Si tienes problemas para crear o ejecutar un trabajo, consulta Solución de problemas.
- Consulta trabajos y tareas.
- Obtenga más información sobre las opciones de creación de trabajos.