En este documento se explica cómo definir los recursos de VM de un trabajo de Batch especificando una plantilla de instancia de VM de Compute Engine al crear el trabajo.
Los tipos de recursos de VM en los que se ejecuta un trabajo se definen automáticamente en Batch, a menos que los definas mediante uno de los siguientes métodos:
- Define los recursos de VM de un trabajo directamente mediante el campo
instances[].policy
. Este método se muestra en la mayoría de la documentación de Batch. Define los recursos de VM de un trabajo mediante una plantilla con el campo
instances[].instanceTemplate
. Este es el método que se explica en este documento.Es necesario usar una plantilla para especificar las opciones de VM para las que Batch no proporciona campos de trabajo. Usar una plantilla también puede ser útil si quieres especificar los mismos recursos de VM para varios trabajos.
Antes de empezar
- Si no has usado Batch antes, consulta el artículo Empezar a usar Batch y habilita Batch completando los requisitos previos para proyectos y usuarios.
- Crea una plantilla de instancia o identifica una plantilla de instancia que ya tengas.
-
Para obtener los permisos que necesitas para crear un trabajo, pide a tu administrador que te conceda los siguientes roles de gestión de identidades y accesos:
-
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 de forma predeterminada es la cuenta de servicio predeterminada de Compute Engine -
Crea un trabajo a partir de una plantilla de instancia de VM de Compute Engine:
Compute Viewer (
roles/compute.viewer
) en la plantilla de instancia de VM
Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.
También puedes conseguir los permisos necesarios a través de roles personalizados u otros roles predefinidos.
-
Editor de trabajos por lotes (
Crear un trabajo con una plantilla de instancia de VM de Compute Engine
En esta sección se muestran ejemplos de cómo crear un trabajo de secuencia de comandos básico a partir de una plantilla de instancia de VM. Puedes crear un trabajo a partir de una plantilla de instancia de VM con la CLI de gcloud, la API Batch, Go, Java, Node.js, Python o C++.
gcloud
Para crear un trabajo a partir de una plantilla de instancia de VM mediante la CLI de gcloud, usa el comando gcloud batch jobs submit
y especifica la plantilla de instancia de VM en el archivo de configuración JSON del trabajo.
Por ejemplo, para crear un trabajo de secuencia de comandos básico a partir de una plantilla de instancia de VM, haz lo siguiente:
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" } }
Haz los cambios siguientes:
INSTALL_GPU_DRIVERS
: opcional. Si se define comotrue
, Batch obtiene los controladores necesarios para el tipo de GPU que especifiques en la plantilla de instancia de VM de Compute Engine y los instala por ti. Para obtener más información, consulta cómo crear un trabajo que use una GPU.INSTANCE_TEMPLATE_NAME
: el nombre de una plantilla de instancia de VM de Compute Engine. Consulta cómo crear y listar 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 Batch, usa el método jobs.create
y especifica una plantilla de instancia de VM en el campo allocationPolicy
.
Por ejemplo, para crear trabajos de secuencias de comandos básicos a partir de una plantilla de instancia 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"
}
}
Haz los cambios siguientes:
PROJECT_ID
: el ID de proyecto de tu proyecto.INSTALL_GPU_DRIVERS
: opcional. Si se define comotrue
, Batch obtiene los controladores necesarios para el tipo de GPU que especifiques en tu plantilla de instancia de VM de Compute Engine y los instala en tu nombre. Para obtener más información, consulta cómo crear un trabajo que use una GPU.INSTANCE_TEMPLATE_NAME
: el nombre de una plantilla de instancia de VM de Compute Engine. Consulta cómo crear y listar plantillas de instancias.
Go
Go
Para obtener más información, consulta la documentación de referencia de la API Batch Go.
Para autenticarte en Batch, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Java
Java
Para obtener más información, consulta la documentación de referencia de la API Batch Java.
Para autenticarte en Batch, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Node.js
Node.js
Para obtener más información, consulta la documentación de referencia de la API Batch Node.js.
Para autenticarte en Batch, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Python
Python
Para obtener más información, consulta la documentación de referencia de la API Batch Python.
Para autenticarte en Batch, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
C++
C++
Para obtener más información, consulta la documentación de referencia de la API Batch C++.
Para autenticarte en Batch, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Siguientes pasos
- Si tienes problemas para crear o ejecutar un trabajo, consulta la sección Solución de problemas.
- Ver trabajos y tareas.
- Consulta más información sobre las opciones de creación de trabajos.