Neste documento, explicamos como definir os recursos de VM para um job do Batch 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
(subcampos instances[]
) são definidos automaticamente
pelo Batch, a menos que você os defina usando
um dos seguintes métodos:
- Use o campo
policy
para definir diretamente os recursos da VM de um job, conforme exemplificado em Criar um job básico. - Use o campo
instanceTemplate
para definir os recursos de VM de um job especificando um modelo de instância de VM, conforme explicado neste documento. Esse método é necessário para criar um job que use imagens de VM não padrão.
Antes de começar
- Se você nunca usou o Batch, leia Primeiros passos com o Batch e ative-o concluindo 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.
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
Nesta seção, você verá exemplos de como criar um job de script básico com base em um modelo de instância de VM. É 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 a partir de 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 o 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 a partir de 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 (link em inglês).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 o 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 atual 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.
- Visualizar jobs e tarefas
- Saiba mais sobre mais opções de criação de jobs.