このドキュメントでは、Compute Engine VM インスタンス テンプレートを指定してバッチジョブのリソースを定義する方法について説明します。
必要に応じて、次のいずれかの方法を使用してジョブのリソースを定義できます。
- 基本ジョブを作成するで説明されているように、
policy
フィールドを使用してジョブのリソースを直接定義します。 - このセクションで説明するように、
instanceTemplate
フィールドを使用して、VM インスタンス テンプレートを指定することでジョブのリソースを定義します。このメソッドでは、デフォルト以外の VM イメージを使用するジョブを作成することが必要でした。
始める前に
- バッチを以前に使用したことがなかった場合は、バッチを開始するを確認し、プロジェクトとユーザーの前提条件を完了してバッチを有効にします。
-
ジョブの作成に必要な権限を取得するには、次の 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 を使用して、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 への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
次のステップ
- ジョブの作成または実行に問題がある場合は、トラブルシューティングをご覧ください。
- ジョブとタスクを表示する。
- 別のジョブ作成オプションを学習する。