Este documento explica como definir os recursos de VM para um job em lote especificando um modelo de instância de VM do Compute Engine ao criar o job.
Os tipos de recursos de VM em que um job é executado são definidos automaticamente pelo Batch, a menos que você os defina usando um dos seguintes métodos:
- Defina os recursos de VM de um job diretamente usando o campo
instances[].policy
. Esse método é demonstrado na maioria da documentação do Batch. Defina os recursos de VM de um job usando um modelo com o campo
instances[].instanceTemplate
. Esse é o método explicado neste documento.É necessário usar um modelo para especificar opções de VM que o lote não oferece campos de trabalho. O uso de um modelo também pode ser conveniente quando você quer especificar os mesmos recursos de VM para vários jobs.
Antes de começar
- Se você nunca usou o Batch, consulte Começar a usar o Batch e ative o Batch concluindo os pré-requisitos para projetos e usuários.
- Crie um modelo de instância ou identifique um modelo de instância existente.
-
Para receber as permissões necessárias para criar um job, peça ao administrador para conceder a você os seguintes papéis do IAM:
-
Editor de jobs em lote (
roles/batch.jobsEditor
) no projeto -
Usuário da conta de serviço (
roles/iam.serviceAccountUser
) na conta de serviço do job, que é a conta de serviço padrão do Compute Engine -
Crie um job usando um modelo de instância de VM do Compute Engine:
Visualizador do Compute (
roles/compute.viewer
) no modelo de instância de VM
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Também é possível conseguir as permissões necessárias por meio de papéis personalizados ou de outros papéis predefinidos.
-
Editor de jobs em lote (
Criar um job usando um modelo de instância de VM do Compute Engine
Esta seção fornece exemplos de como criar um job de script básico usando um modelo de instância de VM. É possível criar um job usando um modelo de instância de VM com a CLI gcloud, a API Batch, Go, Java, Node.js, Python ou C++.
gcloud
Para criar um job usando um modelo de instância de VM com a
CLI gcloud, use o comando gcloud batch jobs submit
e especifique o modelo de instância de VM no arquivo de configuração JSON do job.
Por exemplo, para criar um job de script básico usando um modelo de instância de VM:
Crie um arquivo JSON no diretório atual chamado
hello-world-instance-template.json
com o seguinte conteúdo:{ "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" } }
Substitua:
INSTALL_GPU_DRIVERS
: opcional. Quando definido comotrue
, o lote busca os drivers necessários para o tipo de GPU especificado no modelo de instância de VM do Compute Engine e os instala em seu nome. Para mais informações, consulte como criar um job que usa uma GPU.INSTANCE_TEMPLATE_NAME
: o nome de um modelo de instância de VM do Compute Engine. Saiba como criar e listar modelos de instâncias.
Execute este comando:
gcloud batch jobs submit example-template-job \ --location us-central1 \ --config hello-world-instance-template.json
API
Para criar um job básico usando a API Batch, use o
método jobs.create
e especifique um modelo de instância de VM no campo allocationPolicy
.
Por exemplo, para criar trabalhos de script básicos em um modelo de instância de VM, use a seguinte solicitação:
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"
}
}
Substitua:
PROJECT_ID
: o ID do projeto do seu projeto.INSTALL_GPU_DRIVERS
: opcional. Quando definido comotrue
, o lote busca os drivers necessários para o tipo de GPU especificado no modelo de instância de VM do Compute Engine e os instala em seu nome. Para mais informações, consulte como criar um job que usa uma GPU.INSTANCE_TEMPLATE_NAME
: o nome de um modelo de instância de VM do Compute Engine. Saiba como criar e listar modelos de instância.
Go
Go
Para mais informações, consulte a documentação de referência da API Batch Go.
Para autenticar no Batch, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Java
Java
Para mais informações, consulte a documentação de referência da API Batch Java.
Para autenticar no Batch, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Node.js
Node.js
Para mais informações, consulte a documentação de referência da API Batch Node.js.
Para autenticar no Batch, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Python
Python
Para mais informações, consulte a documentação de referência da API Batch Python.
Para autenticar no Batch, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
C++
C++
Para mais informações, consulte a documentação de referência da API Batch C++.
Para autenticar no Batch, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
A seguir
- Se você tiver problemas para criar ou executar um job, consulte Solução de problemas.
- Conferir jobs e tarefas.
- Saiba mais sobre as opções de criação de jobs.