本文說明如何建立 Batch 工作時,指定 Compute Engine VM 執行個體範本,定義 Batch 工作的 VM 資源。
除非使用下列其中一種方法定義,否則 Batch 會自動定義工作執行的 VM 資源類型:
- 直接使用
instances[].policy
欄位定義作業的 VM 資源。 大部分的 Batch 說明文件都會示範這個方法。 使用
instances[].instanceTemplate
欄位,透過範本定義工作的 VM 資源。 本文件說明的就是這個方法。如要指定 Batch 未提供工作欄位的 VM 選項,就必須使用範本。如果您想為多項工作指定相同的 VM 資源,使用範本也很方便。
事前準備
- 如果您從未使用過 Batch,請參閱「開始使用 Batch」,並完成專案和使用者的必要條件,啟用 Batch。
- 建立執行個體範本,或找出現有的執行個體範本。
-
如要取得建立作業所需的權限,請要求管理員授予下列 IAM 角色:
-
批次工作編輯者 (
roles/batch.jobsEditor
) 專案 -
服務帳戶使用者 (
roles/iam.serviceAccountUser
) 在作業的服務帳戶上,預設為預設 Compute Engine 服務帳戶 -
從 Compute Engine VM 執行個體範本建立工作:
在 VM 執行個體範本上點選「Compute Viewer」 (
roles/compute.viewer
)
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。
-
批次工作編輯者 (
使用 Compute Engine VM 執行個體範本建立工作
本節提供範例,說明如何從現有的 VM 執行個體範本建立基本指令碼工作。您可以使用 gcloud CLI、Batch API、Go、Java、Node.js、Python 或 C++,從 VM 執行個體範本建立作業。
gcloud
如要使用 gcloud CLI,從 VM 執行個體範本建立工作,請使用 gcloud batch jobs submit
指令,並在工作的 JSON 設定檔中指定 VM 執行個體範本。
舉例來說,如要從 VM 執行個體範本建立基本指令碼作業,請執行下列步驟:
在目前目錄中建立名為
hello-world-instance-template.json
的 JSON 檔案,並加入下列內容:{ "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" } }
更改下列內容:
INSTALL_GPU_DRIVERS
:選用。如果設為true
,Batch 會擷取 Compute Engine VM 執行個體範本中指定 GPU 類型所需的驅動程式,並代您安裝。詳情請參閱如何建立使用 GPU 的工作。INSTANCE_TEMPLATE_NAME
:現有 Compute Engine VM 執行個體範本的名稱。瞭解如何建立和列出執行個體範本。
執行下列指令:
gcloud batch jobs submit example-template-job \ --location us-central1 \ --config hello-world-instance-template.json
API
如要使用 Batch API 建立基本工作,請使用 jobs.create
方法,並在 allocationPolicy
欄位中指定 VM 執行個體範本。
舉例來說,如要從 VM 執行個體範本建立基本指令碼作業,請使用下列要求:
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"
}
}
更改下列內容:
PROJECT_ID
:專案的專案 ID。INSTALL_GPU_DRIVERS
:選用。如果設為true
,Batch 會擷取您在 Compute Engine VM 執行個體範本中指定的 GPU 類型所需驅動程式,並代您安裝。詳情請參閱如何建立使用 GPU 的工作。INSTANCE_TEMPLATE_NAME
:現有 Compute Engine VM 執行個體範本的名稱。瞭解如何建立和列出執行個體範本。
Go
Go
詳情請參閱 Batch Go API 參考說明文件。
如要向 Batch 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Java
Java
詳情請參閱 Batch Java API 參考說明文件。
如要向 Batch 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Node.js
Node.js
詳情請參閱 Batch Node.js API 參考說明文件。
如要向 Batch 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Python
Python
詳情請參閱 Batch Python API 參考說明文件。
如要向 Batch 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
C++
C++
詳情請參閱 Batch C++ API 參考說明文件。
如要向 Batch 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。