このドキュメントでは、ジョブの作成時に Compute Engine VM インスタンス テンプレートを指定して、Batch ジョブの VM リソースを定義する方法について説明します。
ジョブが実行される VM リソースのタイプ(instances[]
サブフィールド)は、次のいずれかの方法で定義しない限り、Batch によって自動的に定義されます。
- 基本ジョブを作成するで説明されているように、
policy
フィールドを使用してジョブの VM リソースを直接定義します。 - このドキュメントで説明するように、
instanceTemplate
フィールドを使用して、VM インスタンス テンプレートを指定することでジョブのリソースを定義します。このメソッドは、デフォルト以外の VM イメージを使用するジョブを作成するために必要です。
準備
- Batch を以前に使用したことがない場合は、Batch を使ってみるを確認し、プロジェクトとユーザーの前提条件を完了して Batch を有効にします。
-
ジョブの作成に必要な権限を取得するには、次の IAM ロールを付与するよう管理者に依頼してください。
-
プロジェクトのバッチジョブ編集者(
roles/batch.jobsEditor
) -
ジョブのサービス アカウントのサービス アカウント ユーザー(
roles/iam.serviceAccountUser
)。これは、デフォルトでは Compute Engine のデフォルトのサービス アカウントです。 - Compute Engine VM インスタンス テンプレートからジョブを作成する: VM インスタンス テンプレートに対する Compute 閲覧者(
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 タイプに必要なドライバをフェッチし、Batch がユーザーに代わってインストールします。詳しくは、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
: プロジェクトのプロジェクト IDINSTALL_GPU_DRIVERS
: 省略可。true
に設定すると、Batch は Compute Engine VM インスタンス テンプレートで指定した GPU タイプに必要なドライバをフェッチし、Batch がユーザーに代わってインストールします。詳しくは、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 への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
次のステップ
- ジョブの作成または実行に問題がある場合は、トラブルシューティングをご覧ください。
- ジョブとタスクを表示する。
- 別のジョブ作成オプションを学習する。