Neste documento, explicamos como definir os recursos para um job em lote especificando um modelo de instância de VM do Compute Engine.
Também é possível definir os recursos para um job usando um dos seguintes métodos:
- Use o campo
policy
para definir os recursos de um job diretamente, conforme exemplificado em Criar um job básico. - Use o campo
instanceTemplate
para definir os recursos de um job especificando um modelo de instância de VM, conforme explicado nesta seção. Esse método é necessário para criar um job que usa imagens de VM não padrão.
Antes de começar
- Se você nunca usou o Batch, leia os Primeiros passos com o Batch e ative-o com os pré-requisitos para projetos e usuários.
-
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, por padrão, é a conta de serviço padrão do Compute Engine -
Crie um job a partir de um modelo de instância de VM do Compute Engine:
Leitor do Compute (
roles/compute.viewer
) no modelo de instância de VM
Para mais informações sobre como conceder papéis, consulte Gerenciar acesso.
Talvez você também consiga receber as permissões necessárias por meio de papéis personalizados ou outros papéis predefinidos.
-
Editor de jobs em lote (
Criar um job usando um modelo de instância de VM do Compute Engine
Nesta seção, fornecemos exemplos de como criar um job de script básico usando um modelo de instância de VM atual. É possível criar um job a partir de um modelo de instância de VM usando a CLI gcloud, a API Batch, Go, Java, Node.js, Python ou C++.
gcloud
Para criar um job com base em um modelo de instância de VM usando 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 Batch 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 jobs de script básicos usando 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.INSTALL_GPU_DRIVERS
: opcional. Quando definido comotrue
, o Batch 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 Go em lote.
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 Java em lote.
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 Node.js em lote.
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 Python em lote.
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 C++ em lote.
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.
- Confira jobs e tarefas.
- Conheça mais opções de criação de jobs.