En este documento, se explica cómo definir los recursos de VM para un trabajo de lotes especificando una plantilla de instancia de VM de Compute Engine cuando creas el trabajo.
Los tipos de recursos de VM en los que se ejecuta un trabajo se definen automáticamente con Batch, a menos que los definas con uno de los siguientes métodos:
- Define los recursos de VM de un trabajo directamente con 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 a través de una plantilla con el campo
instances[].instanceTemplate
. Este es el método que se explica en este documento.Se requiere el uso de una plantilla para especificar las opciones de VM para las que Batch no proporciona campos de trabajo. El uso de una plantilla también puede ser conveniente cuando deseas especificar los mismos recursos de VM para varios trabajos.
Antes de comenzar
- Si nunca usaste Batch, consulta Cómo comenzar a usar Batch y habilita Batch completando los requisitos previos para proyectos y usuarios.
- Crea una plantilla de instancias o identifica una plantilla de instancias existente.
-
Para obtener los permisos que necesitas para crear un trabajo, pídele a tu administrador que te otorgue los siguientes roles de IAM:
-
Editor de trabajos por lotes (
roles/batch.jobsEditor
) en el proyecto -
Usuario de la 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:
Visor de Compute (
roles/compute.viewer
) en la plantilla de instancia de VM
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
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 instancia 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 instancia de VM existente. Puedes crear un trabajo a partir de una plantilla de instancia de VM con gcloud CLI, la API de Batch, Go, Java, Node.js, Python o C++.
gcloud
Para crear un trabajo a partir de una plantilla de instancias de VM con la CLI de gcloud, 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 una tarea de secuencia de comandos básica a partir de una plantilla de instancia 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 la plantilla de tu 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
: Es el nombre de una plantilla de instancia de VM de Compute Engine existente. Obtén información para 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 instancia de VM en el campo allocationPolicy
.
Por ejemplo, para crear trabajos de secuencias de comandos básicas 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 de tu proyecto.INSTALL_GPU_DRIVERS
: Opcional Cuando se establece entrue
, Batch recupera los controladores necesarios para el tipo de GPU que especificas en la 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 existente. Aprende a crear y enumerar plantillas de instancias.
Go
Go
Para obtener más información, consulta la documentación de referencia de la API de Go de lotes.
Para autenticarte en Batch, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Java
Java
Para obtener más información, consulta la documentación de referencia de la API de Java de lotes.
Para autenticarte en Batch, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Node.js
Node.js
Para obtener más información, consulta la documentación de referencia de la API de Node.js de lotes.
Para autenticarte en Batch, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Python
Python
Para obtener más información, consulta la documentación de referencia de la API de Python de lotes.
Para autenticarte en Batch, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
C++
C++
Para obtener más información, consulta la documentación de referencia de la API de C++ de lotes.
Para autenticarte en Batch, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
¿Qué sigue?
- Si tienes problemas para crear o ejecutar una tarea, consulta Solución de problemas.
- Ver trabajos y tareas.
- Obtén más información sobre las opciones de creación de trabajos.