Este documento explica como definir os recursos de VM para uma tarefa do Batch especificando um modelo de instância de VM do Compute Engine quando cria a tarefa.
Os tipos de recursos de VM em que uma tarefa é executada são definidos automaticamente pelo Batch, a menos que os defina através de um dos seguintes métodos:
- Defina os recursos de VM de uma tarefa diretamente através do campo
instances[].policy
. Este método é demonstrado na maioria da documentação da API Google Ads. Defina os recursos de VM de uma tarefa através de um modelo com o campo
instances[].instanceTemplate
. Este é o método explicado neste documento.A utilização de um modelo é necessária para especificar opções de VM para as quais o Batch não fornece campos de tarefas. A utilização de um modelo também pode ser conveniente quando quer especificar os mesmos recursos de VM para várias tarefas.
Antes de começar
- Se nunca usou o Batch, reveja o artigo Comece a usar o Batch e ative o Batch concluindo os pré-requisitos para projetos e utilizadores.
- Crie um modelo de instância ou identifique um modelo de instância existente.
-
Para receber as autorizações de que precisa para criar uma tarefa, peça ao seu administrador para lhe conceder as seguintes funções de IAM:
-
Editor de tarefas em lote (
roles/batch.jobsEditor
) no projeto -
Utilizador da conta de serviço (
roles/iam.serviceAccountUser
) na conta de serviço da tarefa, que, por predefinição, é a conta de serviço predefinida do Compute Engine -
Crie uma tarefa a partir de um modelo de instância de VM do Compute Engine:
Compute Viewer (
roles/compute.viewer
) no modelo de instância de VM
Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.
Também pode conseguir as autorizações necessárias através de funções personalizadas ou outras funções predefinidas.
-
Editor de tarefas em lote (
Crie uma tarefa com um modelo de instância de VM do Compute Engine
Esta secção fornece exemplos de como criar uma tarefa de script básica a partir de um modelo de instância de VM existente. Pode criar uma tarefa 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 uma tarefa a partir de um modelo de instância de VM através da CLI gcloud, use o comando gcloud batch jobs submit
e especifique o modelo de instância de VM no ficheiro de configuração JSON da tarefa.
Por exemplo, para criar uma tarefa de script básica a partir de um modelo de instância de VM:
Crie um ficheiro JSON no diretório atual com o nome
hello-world-instance-template.json
e 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 o seguinte:
INSTALL_GPU_DRIVERS
: opcional. Quando definido comotrue
, o Batch obtém os controladores necessários para o tipo de GPU que especificar no modelo da instância de VM do Compute Engine e instala-os em seu nome. Para mais informações, veja como criar uma tarefa que use uma GPU.INSTANCE_TEMPLATE_NAME
: o nome de um modelo de instância de VM do Compute Engine existente. Saiba como criar e listar modelos de instâncias.
Execute o seguinte comando:
gcloud batch jobs submit example-template-job \ --location us-central1 \ --config hello-world-instance-template.json
API
Para criar uma tarefa básica através da API Batch, use o método jobs.create
e especifique um modelo de instância de VM no campo allocationPolicy
.
Por exemplo, para criar tarefas de script básicas a partir de um modelo de instância de VM, use o seguinte pedido:
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 o seguinte:
PROJECT_ID
: o ID do projeto do seu projeto.INSTALL_GPU_DRIVERS
: opcional. Quando definido comotrue
, o Batch obtém os controladores necessários para o tipo de GPU que especificar no modelo de instância de VM do Compute Engine e instala-os em seu nome. Para mais informações, veja como criar uma tarefa que usa uma GPU.INSTANCE_TEMPLATE_NAME
: o nome de um modelo de instância de VM do Compute Engine existente. Saiba como criar e listar modelos de instâncias.
Ir
Go
Para mais informações, consulte a documentação de referência da API Go em lote.
Para se autenticar no Batch, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure 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 se autenticar no Batch, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure 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 se autenticar no Batch, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure 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 se autenticar no Batch, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure 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 se autenticar no Batch, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
O que se segue?
- Se tiver problemas ao criar ou executar uma tarefa, consulte a secção Resolução de problemas.
- Ver empregos e tarefas.
- Saiba mais sobre as opções de criação de tarefas.