このドキュメントでは、画像処理装置(GPU)を使用するジョブを作成して実行する方法について説明します。GPU の機能と制限の詳細については、Compute Engine ドキュメントの GPU についてをご覧ください。
Batch ジョブを作成するときに、必要に応じて GPU を使用して特定のワークロードを高速化できます。GPU を使用するジョブの一般的なユースケースには、集中的なデータ処理や機械学習(ML)などの人工知能ワークロード(AI)が含まれています。
始める前に
- Batch を以前に使用したことがない場合は、Batch を使ってみるを確認し、プロジェクトとユーザーの前提条件を完了して Batch を有効にします。
-
ジョブの作成に必要な権限を取得するには、次の IAM ロールを付与するよう管理者に依頼してください。
-
プロジェクトに対する Batch ジョブ編集者 (
roles/batch.jobsEditor) -
ジョブのサービス アカウントのサービス アカウント ユーザー (
roles/iam.serviceAccountUser)。これは、デフォルトでは Compute Engine のデフォルトのサービス アカウントです。
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
-
プロジェクトに対する Batch ジョブ編集者 (
GPU を使用するジョブを作成する
GPU を使用するジョブを作成するには、次の操作を行います。
- GPU を使用するジョブの要件を計画する。
- 特定した要件と方法を使用してジョブを作成する。推奨されるオプションを使用してジョブを作成する方法の例については、このドキュメントの GPU を使用するサンプルジョブを作成するをご覧ください。
GPU を使用するジョブの要件を計画する
GPU を使用するジョブを作成する前に、次のセクションで説明するようにジョブの要件を計画します。
ステップ 1: GPU マシンタイプと消費オプションを選択する
ジョブの要件は、優先する GPU マシンタイプと使用オプションによって異なり、各オプションは相互に依存している可能性があります。
ジョブの GPU マシンタイプと使用量オプションを選択する手順は次のとおりです。
優先度を特定して選択します。
- パフォーマンスと基本料金を優先する場合は、このドキュメントの GPU マシンタイプを選択するをご覧ください。
- リソースの可用性または割引を優先する場合は、このドキュメントの使用量オプションを選択するセクションをご覧ください。
最初の選択内容と互換性のあるものに基づいて、残りの選択を行います。
最初の選択と互換性のあるオプションを確認するには、Compute Engine ドキュメントのマシンタイプ別の消費オプションの可用性をご覧ください。
消費オプションを選択するまたはGPU マシンタイプを選択するについては、それぞれ残りのセクションをご覧ください。
GPU マシンタイプを選択する
ジョブの GPU マシンタイプを選択し、ジョブの要件を確認する手順は次のとおりです。
GPU マシンタイプを選択する: 使用可能な GPU マシンタイプ(GPU タイプ、GPU の数、マシンタイプ(vCPU とメモリ)の有効な組み合わせ)とその推奨されるユースケースを確認するには、Compute Engine ドキュメントの GPU マシンタイプとアクセラレータ最適化マシン ファミリーをご覧ください。
GPU マシンタイプのジョブ要件を理解する: ジョブで GPU マシンタイプを指定するために必要なフィールドは、次の表のカテゴリによって異なります。
GPU マシンタイプとそのジョブ要件 アクセラレータ最適化 VM の GPU: アクセラレータ最適化マシン ファミリーのマシンタイプを使用する VM には、特定のタイプと数の GPU が自動的に接続されます。
アクセラレータ最適化 VM に GPU を使用するには、マシンタイプを指定することをおすすめします。各アクセラレータ最適化マシンタイプは、特定のタイプと数の GPU のみをサポートしているため、アクセラレータ最適化マシンタイプに加えてこれらの値を指定してもしなくても、機能的には同じです。
具体的には、Batch ではアクセラレータ最適化 VM に GPU のタイプと数のみを指定することもできますが、その場合、vCPU とメモリのオプションが非常に制限されることがよくあります。そのため、使用可能な vCPU とメモリのオプションがジョブのタスク要件と互換性があることを確認することをおすすめします。
N1 VM の GPU: これらの GPU では、各 VM にアタッチするタイプと量を指定する必要があります。また、N1 マシンシリーズのマシンタイプを使用する VM にアタッチする必要があります。
N1 VM に GPU を使用するには、少なくとも GPU のタイプと GPU の数を指定することをおすすめします。値の組み合わせが、N1 マシンタイプに有効な GPU オプションのいずれかに一致していることを確認します。特定のタイプと数の GPU を使用する N1 VM の vCPU とメモリのオプションは非常に柔軟性があります。 Google Cloud コンソールを使用してジョブを作成する場合を除き、ジョブのタスク要件を満たすマシンタイプを Batch に自動的に選択させることができます。
使用オプションを選択する
このセクションでは、ジョブの消費オプションを選択する方法と、各オプションのジョブ要件の概要について説明します。
Batch で使用可能な消費オプションとその要件については、次の表で説明します。この表では、ユースケースに基づいて、リソースの可用性が高い順にオプションを並べています。
まとめると、ほとんどのユーザーには、ジョブの消費オプションを次のように選択することをおすすめします。
- 他の条件のいずれかが true でない限り、Flex Start VM(プレビュー)(要件を満たす場合は推奨)またはオンデマンドを使用します。
- ジョブでリソースの可用性が非常に高いことが求められる場合や、削除できない未使用の予約がある場合は、カレンダー モードの予約(プレビュー)(要件を満たす場合は推奨)または予約を使用します。
- (省略可)ワークロードのフォールト トレランスが高い場合は、Spot VM を使用してコストを削減できる可能性があります。
| 使用オプションとそのジョブ要件 | |
|---|---|
予約
|
Batch は、未使用の予約済み VM を使用できるジョブに予約を使用します。予約を使用するためのジョブ要件の詳細については、VM 予約を使用してリソースの可用性を確保するをご覧ください。 |
カレンダー モードの予約(プレビュー)
|
Batch は、次のすべての処理を行うジョブにカレンダー モードの予約を使用します。
|
Flex Start VM(プレビュー)
|
Batch は、次のすべての処理を行うジョブに Flex Start VM を使用します。
|
オンデマンド
|
Batch は、デフォルトで他のほとんどのジョブにオンデマンドを使用します。ジョブでオンデマンドを使用するようにするには、次の操作を行います。1
1例外: A3 マシンシリーズを使用するジョブの場合、デフォルトの動作は一意です。オンデマンドを使用せず、 |
Spot VM
|
Batch は、次のすべての処理を行うジョブに Spot VM を使用します。
|
ステップ 2: GPU ドライバをインストールする
ジョブで GPU を使用するには、GPU ドライバをインストールする必要があります。GPU ドライバをインストールするには、次のいずれかの方法を選択します。
GPU ドライバを自動的にインストールする(可能であれば推奨): 例に示すように、Batch でサードパーティのロケーションから必要な GPU ドライバをフェッチさせ、ユーザーに代わってインストールする場合は、ジョブの
installGpuDriversフィールドをtrueに設定します。この方法は、ドライバを手動でインストールする必要がない場合に推奨されます。必要に応じて、Batch がインストールする GPU ドライバのバージョンを指定する場合は、
driverVersionフィールドも設定します。GPU ドライバを手動でインストールする: 次のいずれかに該当する場合は、この方法が必要です。
- ジョブがスクリプトと実行可能なコンテナの両方を使用し、インターネットのアクセス権を持っていません。ジョブが持つアクセス権の詳細については、バッチ ネットワーキングの概要をご覧ください。
- ジョブがカスタム VM イメージを使用している。VM OS イメージと使用できる VM OS イメージの詳細については、VM OS 環境の概要をご覧ください。
必要な GPU ドライバを手動でインストールするには、次の方法をおすすめします。
GPU ドライバを含むカスタム VM イメージを作成します。
GPU ドライバをインストールするには、使用する OS に基づいてインストール スクリプトを実行します。
ジョブにコンテナで実行可能なファイルがあり、Container-Optimized OS を使用していない場合は、NVIDIA Container Toolkit もインストールする必要があります。
GPU を使用するジョブを作成して送信する場合は、GPU ドライバを含むカスタム VM イメージを指定し、ジョブの
installGpuDriversフィールドをfalse(デフォルト)に設定します。
ステップ 3: 互換性のある VM リソースを定義する
ジョブの VM リソースを定義するための要件とオプションについては、ジョブリソースをご覧ください。
まとめると、GPU を使用するジョブの VM リソースを定義する場合は、次のすべての操作を行う必要があります。
GPU マシンタイプがジョブの VM のロケーションで使用可能であることを確認します。
GPU マシンタイプを使用できるロケーションについては、Compute Engine ドキュメントのアクセラレータの可用性をご覧ください。
ジョブのマシンタイプを指定する場合は、そのマシンタイプにジョブのタスク要件に十分な vCPU とメモリが含まれていることを確認してください。 Google Cloud コンソールを使用してジョブを作成する場合は、ジョブのマシンタイプを指定する必要があります。また、アクセラレータ最適化 VM で GPU を使用するジョブを作成する場合は、ジョブのマシンタイプを指定することをおすすめします。
ジョブの VM リソースを定義するには、次の有効な方法を使用します。
instances[].policyフィールドを使用して VM リソースを直接定義する(可能であれば推奨)。このメソッドは例で示されています。instances[].instanceTemplateフィールドを使用して、テンプレートから VM リソースを定義する。この方法は、カスタム イメージから GPU ドライバを手動でインストールするために必要です。詳細については、VM インスタンス テンプレートを使用してジョブリソースを定義するをご覧ください。
GPU を使用するサンプルジョブを作成する
以降のセクションでは、各消費オプションのジョブの例を作成する方法について説明します。具体的には、サンプルジョブは推奨されるオプションを使用します。すべてのジョブで GPU ドライバが自動的にインストールされ、すべてのジョブで VM リソースが直接定義されます。
| 使用オプション | ジョブ指示の例 |
|---|---|
| 予約またはカレンダー モードの予約(プレビュー) | |
| Flex Start VM(プレビュー) | |
| オンデマンド VM または Spot VM |
GPU マシンタイプに基づいて、次のいずれかのオプションを選択します。 |
GPU と Flex Start VM を使用する
gcloud CLI または Batch API を使用して、Dynamic Workload Scheduler を介して A3 VM に GPU を使用するジョブを作成できます。
gcloud
GPU ドライバをインストールし、Flex-start VM をサポートする GPU マシンタイプを指定し、予約をブロックし、GPU マシンタイプをサポートするロケーションで実行する JSON ファイルを作成します。
たとえば、アクセラレータ最適化 VM に Flex-start VM と GPU を使用する基本的なスクリプト ジョブを作成するには、次の内容の JSON ファイルを作成します。
{ "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { "text": "echo Hello world from task ${BATCH_TASK_INDEX}." } } ] }, "taskCount": 3, "parallelism": 1 } ], "allocationPolicy": { "instances": [ { "installGpuDrivers": INSTALL_GPU_DRIVERS, "policy": { "provisioningModel":"FLEX_START", "machineType": "MACHINE_TYPE", "reservation": "NO_RESERVATION" } } ], "location": { "allowedLocations": [ "ALLOWED_LOCATIONS" ] } }, "logsPolicy": { "destination": "CLOUD_LOGGING" } }次のように置き換えます。
INSTALL_GPU_DRIVERS:trueに設定すると、Batch はpolicyフィールドで指定した GPU タイプに必要なドライバをサードパーティの場所からフェッチし、Batch がユーザーに代わってインストールします。このフィールドをfalse(デフォルト)に設定した場合、このジョブに対して GPU を使用するために GPU ドライバを手動でインストールする必要があります。MACHINE_TYPE: Flex Start VM をサポートする GPU マシンタイプ。詳細については、Compute Engine ドキュメントのマシンタイプ別の消費オプションの可用性をご覧ください。ALLOWED_LOCATIONS: 必要に応じて、allowedLocations[]フィールドを使用して、ジョブの VM が実行を許可されるリージョンまたはリージョン内の特定のゾーンを指定できます。たとえば、regions/us-central1はリージョンus-central1内のすべてのゾーンを許可します。このジョブに必要な GPU マシンタイプを提供するロケーションを指定してください。指定せず、このフィールドを省略する場合は、ジョブのロケーションで GPU マシンタイプを提供していることを確認してください。
ジョブを作成して実行するには、
gcloud alpha batch jobs submitコマンドを使用します:gcloud batch jobs submit JOB_NAME \ --location LOCATION \ --config JSON_CONFIGURATION_FILE以下を置き換えます。
JOB_NAME: ジョブの名前。LOCATION: ジョブのロケーション。JSON_CONFIGURATION_FILE: ジョブの構成の詳細を含む JSON ファイルへのパス。
API
GPU ドライバをインストールし、Flex-start VM をサポートする GPU マシンタイプを指定し、予約をブロックし、GPU マシンタイプをサポートするロケーションで実行する v1alpha jobs.create メソッドに POST リクエストを送信します。
たとえば、アクセラレータ最適化 VM に Flex Start VM と GPU を使用する基本的なスクリプト ジョブを作成するには、次のリクエストを行います。
POST https://batch.googleapis.com/v1alpha/projects/PROJECT_ID/locations/LOCATION/jobs?job_id=JOB_NAME
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"script": {
"text": "echo Hello world from task ${BATCH_TASK_INDEX}."
}
}
]
},
"taskCount": 3,
"parallelism": 1
}
],
"allocationPolicy": {
"instances": [
{
"installGpuDrivers": INSTALL_GPU_DRIVERS,
"policy": {
"provisioningModel":"FLEX_START",
"machineType": "MACHINE_TYPE",
"reservation": "NO_RESERVATION"
}
}
],
"location": {
"allowedLocations": [
"ALLOWED_LOCATIONS"
]
}
},
"logsPolicy": {
"destination": "CLOUD_LOGGING"
}
}
次のように置き換えます。
PROJECT_ID: プロジェクトのプロジェクト IDLOCATION: ジョブのロケーション。JOB_NAME: ジョブの名前。INSTALL_GPU_DRIVERS:trueに設定すると、Batch はpolicyフィールドで指定した GPU タイプに必要なドライバをサードパーティの場所からフェッチし、Batch がユーザーに代わってインストールします。このフィールドをfalse(デフォルト)に設定した場合、このジョブに対して GPU を使用するために GPU ドライバを手動でインストールする必要があります。MACHINE_TYPE: Flex Start VM をサポートする GPU マシンタイプ。詳細については、Compute Engine ドキュメントのマシンタイプ別の消費オプションの可用性をご覧ください。ALLOWED_LOCATIONS: 必要に応じて、allowedLocations[]フィールドを使用して、ジョブの VM が実行を許可されるリージョンまたはリージョン内の特定のゾーンを指定できます。たとえば、regions/us-central1はリージョンus-central1内のすべてのゾーンを許可します。このジョブに必要な GPU マシンタイプを提供するロケーションを指定してください。指定せず、このフィールドを省略する場合は、ジョブのロケーションで GPU マシンタイプを提供していることを確認してください。
アクセラレータ最適化 VM に GPU を使用する
アクセラレータ最適化 VM に GPU を使用するジョブは、Google Cloud コンソール、gcloud CLI、Batch API、Java、Node.js、Python を使用して作成できます。
コンソール
Google Cloud コンソールを使用して GPU を使用するジョブを作成するには、次の操作を行います。
Google Cloud コンソールで、[ジョブリスト] ページに移動します。
[ 作成] をクリックします。[バッチジョブを作成する] ページが開きます。左側のペインで、[ジョブの詳細] ページが選択されています。
[ジョブの詳細] ページを構成します。
省略可: [ジョブ名] フィールドで、ジョブ名をカスタマイズします。
たとえば、「
example-gpu-job」と入力します。[タスクの詳細] セクションを構成します。
[新しい実行可能物] ウィンドウで、このジョブを実行するためのスクリプトまたはコンテナを少なくとも 1 つ追加します。
たとえば、基本的なスクリプト ジョブを作成するには、次の操作を行います。
[スクリプト] チェックボックスをオンにします。フィールドが表示されます。
フィールドに次のスクリプトを入力します。
echo Hello world from task ${BATCH_TASK_INDEX}.[完了] をクリックします。
[タスク数] フィールドに、このジョブのタスク数を入力します。
たとえば、「
3」と入力します。省略可: [並列処理] フィールドに、同時に実行するタスクの数を入力します。
たとえば、「
1」(デフォルト)と入力します。
[リソースの仕様] ページを構成します。
左側のペインで [リソースの仕様] をクリックします。[リソースの仕様] ページが開きます。
[VM プロビジョニング モデル] セクションで、このジョブの VM の使用オプションとして次のいずれかのオプションを選択します。
ジョブがプリエンプションに耐えることができて、割引された Spot VM が必要な場合は、[スポット] を選択します。
それ以外の場合は、オンデマンド VM を使用するために [標準](デフォルト)を選択します。
このジョブのロケーションを選択します。
[リージョン] フィールドでリージョンを選択します。
[ゾーン] フィールドで、次のいずれかを行います。
このジョブを特定のゾーンでのみ実行するように制限する場合は、ゾーンを選択します。
それ以外の場合は、[任意](デフォルト)を選択します。
このジョブの VM の GPU マシンタイプを選択します。
マシン ファミリー オプションで、[GPU] をクリックします。
[GPU のタイプ] フィールドで、GPU のタイプを選択します。次に、[GPU の数] フィールドで、各 VM に対する GPU の数を選択します。
アクセラレータ最適化 VM の GPU タイプのいずれかを選択した場合、[マシンタイプ] フィールドでは、選択した GPU のタイプと数に基づいて、マシンタイプのオプションが 1 つだけ表示されます。
GPU ドライバを自動的にインストールするには、[GPU ドライバのインストール](デフォルト)を選択します。
各タスクに必要な VM リソースの量を構成します。
[コア数] フィールドに、タスクあたりの vCPUs の量を入力します。
たとえば、「
1」(デフォルト)と入力します。[メモリ] フィールドに、タスクあたりの RAM の量(GB)を入力します。
たとえば、「
0.5」(デフォルト)と入力します。
[完了] をクリックします。
省略可: このジョブの他のフィールドを構成します。
省略可: ジョブ構成を確認するには、左側のペインで [プレビュー] をクリックします。
[作成] をクリックします。
[ジョブの詳細] ページに、作成したジョブが表示されます。
gcloud
GPU ドライバをインストールし、アクセラレータ最適化マシン ファミリーのマシンタイプを指定し、GPU マシンタイプが存在するロケーションで実行する JSON ファイルを作成します。
たとえば、アクセラレータ最適化 VM に GPU を使用する基本的なスクリプト ジョブを作成するには、次の内容の JSON ファイルを作成します。
{ "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { "text": "echo Hello world from task ${BATCH_TASK_INDEX}." } } ] }, "taskCount": 3, "parallelism": 1 } ], "allocationPolicy": { "instances": [ { "installGpuDrivers": INSTALL_GPU_DRIVERS, "policy": { "provisioningModel": "PROVISIONING_MODEL", "machineType": "MACHINE_TYPE", "reservation": "NO_RESERVATION" } } ], "location": { "allowedLocations": [ "ALLOWED_LOCATIONS" ] } }, "logsPolicy": { "destination": "CLOUD_LOGGING" } }以下を置き換えます。
INSTALL_GPU_DRIVERS:trueに設定すると、Batch はpolicyフィールドで指定した GPU タイプに必要なドライバをサードパーティの場所からフェッチし、Batch がユーザーに代わってインストールします。このフィールドをfalse(デフォルト)に設定した場合、このジョブに対して GPU を使用するために GPU ドライバを手動でインストールする必要があります。PROVISIONING_MODEL: 消費オプションのプロビジョニング モデル。オンデマンドの場合はSTANDARD、Spot VM の場合はSPOT。MACHINE_TYPE: アクセラレータ最適化マシン ファミリーのマシンタイプ。ALLOWED_LOCATIONS: 必要に応じて、allowedLocations[]フィールドを使用して、ジョブの VM が実行を許可されるリージョンまたはリージョン内の特定のゾーンを指定できます。たとえば、regions/us-central1はリージョンus-central1内のすべてのゾーンを許可します。このジョブに必要な GPU マシンタイプを提供するロケーションを指定してください。指定せず、このフィールドを省略する場合は、ジョブのロケーションで GPU マシンタイプを提供していることを確認してください。
ジョブを作成して実行するには、
gcloud batch jobs submitコマンドを使用します:gcloud batch jobs submit JOB_NAME \ --location LOCATION \ --config JSON_CONFIGURATION_FILE以下を置き換えます。
JOB_NAME: ジョブの名前。LOCATION: ジョブのロケーション。JSON_CONFIGURATION_FILE: ジョブの構成の詳細を含む JSON ファイルへのパス。
API
GPU ドライバをインストールし、アクセラレータ最適化マシン ファミリーのマシンタイプを指定し、GPU マシンタイプがあるロケーションで実行する jobs.create メソッドに POST リクエストを送信します。
たとえば、アクセラレータ最適化 VM に GPU を使用する基本的なスクリプト ジョブを作成するには、次のリクエストを行います。
POST https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/jobs?job_id=JOB_NAME
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"script": {
"text": "echo Hello world from task ${BATCH_TASK_INDEX}."
}
}
]
},
"taskCount": 3,
"parallelism": 1
}
],
"allocationPolicy": {
"instances": [
{
"installGpuDrivers": INSTALL_GPU_DRIVERS,
"policy": {
"provisioningModel": "PROVISIONING_MODEL",
"machineType": "MACHINE_TYPE",
"reservation": "NO_RESERVATION"
}
}
],
"location": {
"allowedLocations": [
"ALLOWED_LOCATIONS"
]
}
},
"logsPolicy": {
"destination": "CLOUD_LOGGING"
}
}
以下を置き換えます。
PROJECT_ID: プロジェクトのプロジェクト IDLOCATION: ジョブのロケーション。JOB_NAME: ジョブの名前。INSTALL_GPU_DRIVERS:trueに設定すると、Batch はpolicyフィールドで指定した GPU タイプに必要なドライバをサードパーティの場所からフェッチし、Batch がユーザーに代わってインストールします。このフィールドをfalse(デフォルト)に設定した場合、このジョブに対して GPU を使用するために GPU ドライバを手動でインストールする必要があります。PROVISIONING_MODEL: 消費オプションのプロビジョニング モデル。オンデマンドの場合はSTANDARD、Spot VM の場合はSPOT。MACHINE_TYPE: アクセラレータ最適化マシン ファミリーのマシンタイプ。ALLOWED_LOCATIONS: 必要に応じて、allowedLocations[]フィールドを使用して、ジョブの VM が実行を許可されるリージョンまたはリージョン内の特定のゾーンを指定できます。たとえば、regions/us-central1はリージョンus-central1内のすべてのゾーンを許可します。このジョブに必要な GPU マシンタイプを提供するロケーションを指定してください。指定せず、このフィールドを省略する場合は、ジョブのロケーションで GPU マシンタイプを提供していることを確認してください。
Java
Node.js
Python
N1 VM に GPU を使用する
N1 VM に GPU を使用するジョブは、 Google Cloud コンソール、gcloud CLI、Batch API、Java、Node.js、Python を使用して作成できます。
コンソール
Google Cloud コンソールを使用して GPU を使用するジョブを作成するには、次の操作を行います。
Google Cloud コンソールで、[ジョブリスト] ページに移動します。
[ 作成] をクリックします。[バッチジョブを作成する] ページが開きます。左側のペインで、[ジョブの詳細] ページが選択されています。
[ジョブの詳細] ページを構成します。
省略可: [ジョブ名] フィールドで、ジョブ名をカスタマイズします。
たとえば、「
example-gpu-job」と入力します。[タスクの詳細] セクションを構成します。
[新しい実行可能物] ウィンドウで、このジョブを実行するためのスクリプトまたはコンテナを少なくとも 1 つ追加します。
たとえば、基本的なスクリプト ジョブを作成するには、次の操作を行います。
[スクリプト] チェックボックスをオンにします。フィールドが表示されます。
フィールドに次のスクリプトを入力します。
echo Hello world from task ${BATCH_TASK_INDEX}.[完了] をクリックします。
[タスク数] フィールドに、このジョブのタスク数を入力します。
たとえば、「
3」と入力します。省略可: [並列処理] フィールドに、同時に実行するタスクの数を入力します。
たとえば、「
1」(デフォルト)と入力します。
[リソースの仕様] ページを構成します。
左側のペインで [リソースの仕様] をクリックします。[リソースの仕様] ページが開きます。
[VM プロビジョニング モデル] セクションで、このジョブの VM の消費オプションとして次のいずれかのオプションを選択します。
ジョブがプリエンプションに耐えることができて、割引された Spot VM が必要な場合は、[スポット] を選択します。
それ以外の場合は、オンデマンド VM を使用するために [標準](デフォルト)を選択します。
このジョブのロケーションを選択します。
[リージョン] フィールドでリージョンを選択します。
[ゾーン] フィールドで、次のいずれかを行います。
このジョブを特定のゾーンでのみ実行するように制限する場合は、ゾーンを選択します。
それ以外の場合は、[任意](デフォルト)を選択します。
このジョブの VM の GPU マシンタイプを選択します。
マシン ファミリー オプションで、[GPU] をクリックします。
[GPU のタイプ] フィールドで、GPU のタイプを選択します。
N1 VM の GPU タイプのいずれかを選択すると、[シリーズ] フィールドが N1 に設定されます。
[GPU の数] フィールドで、各 VM に対する GPU の数を選択します。
[マシンタイプ] フィールドで、マシンタイプを選択します。
GPU ドライバを自動的にインストールするには、[GPU ドライバのインストール](デフォルト)を選択します。
各タスクに必要な VM リソースの量を構成します。
[コア数] フィールドに、タスクあたりの vCPUs の量を入力します。
たとえば、「
1」(デフォルト)と入力します。[メモリ] フィールドに、タスクあたりの RAM の量(GB)を入力します。
たとえば、「
0.5」(デフォルト)と入力します。
[完了] をクリックします。
省略可: このジョブの他のフィールドを構成します。
省略可: ジョブ構成を確認するには、左側のペインで [プレビュー] をクリックします。
[作成] をクリックします。
[ジョブの詳細] ページに、作成したジョブが表示されます。
gcloud
GPU ドライバをインストールし、
accelerators[]フィールドのtypeとcountのサブフィールドを定義し、GPU マシンタイプがあるロケーションで実行する JSON ファイルを作成します。たとえば、N1 VM に GPU を使用し、Batch が正確な N1 マシンタイプを選択できるようにする基本的なスクリプト ジョブを作成するには、次の内容の JSON ファイルを作成します。
{ "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { "text": "echo Hello world from task ${BATCH_TASK_INDEX}." } } ] }, "taskCount": 3, "parallelism": 1 } ], "allocationPolicy": { "instances": [ { "installGpuDrivers": INSTALL_GPU_DRIVERS, "policy": { "provisioningModel": "PROVISIONING_MODEL", "reservation": "NO_RESERVATION", "accelerators": [ { "type": "GPU_TYPE", "count": GPU_COUNT } ] } } ], "location": { "allowedLocations": [ "ALLOWED_LOCATIONS" ] } }, "logsPolicy": { "destination": "CLOUD_LOGGING" } }以下を置き換えます。
INSTALL_GPU_DRIVERS:trueに設定すると、Batch はpolicyフィールドで指定した GPU タイプに必要なドライバをサードパーティの場所からフェッチし、Batch がユーザーに代わってインストールします。このフィールドをfalse(デフォルト)に設定した場合、このジョブに対して GPU を使用するために GPU ドライバを手動でインストールする必要があります。PROVISIONING_MODEL: 消費オプションのプロビジョニング モデル。オンデマンドの場合はSTANDARD、Spot VM の場合はSPOT。GPU_TYPE: GPU タイプ。使用可能な GPU タイプのリストは、gcloud compute accelerator-types listコマンドを使用することで表示できます。このフィールドは、N1 VM の GPU にのみ使用します。GPU_COUNT: 指定されたタイプの GPU の数。有効なオプションの詳細については、N1 マシンシリーズの GPU マシンタイプをご覧ください。このフィールドは、N1 VM の GPU にのみ使用します。ALLOWED_LOCATIONS: 必要に応じて、allowedLocations[]フィールドを使用して、ジョブの VM が実行を許可されるリージョンまたはリージョン内の特定のゾーンを指定できます。たとえば、regions/us-central1はリージョンus-central1内のすべてのゾーンを許可します。このジョブに必要な GPU マシンタイプを提供するロケーションを指定してください。指定せず、このフィールドを省略する場合は、ジョブのロケーションで GPU マシンタイプを提供していることを確認してください。
ジョブを作成して実行するには、
gcloud batch jobs submitコマンドを使用します:gcloud batch jobs submit JOB_NAME \ --location LOCATION \ --config JSON_CONFIGURATION_FILE以下を置き換えます。
JOB_NAME: ジョブの名前。LOCATION: ジョブのロケーション。JSON_CONFIGURATION_FILE: ジョブの構成の詳細を含む JSON ファイルへのパス。
API
GPU ドライバをインストールし、accelerators[] フィールドの type と count のサブフィールドを定義し、GPU マシンタイプがあるロケーションを使用する jobs.create メソッドに POST リクエストを送信します。
たとえば、N1 VM に GPU を使用し、Batch が正確な N1 マシンタイプを選択できるようにする基本的なスクリプト ジョブを作成するには、次のリクエストを行います。
POST https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/jobs?job_id=JOB_NAME
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"script": {
"text": "echo Hello world from task ${BATCH_TASK_INDEX}."
}
}
]
},
"taskCount": 3,
"parallelism": 1
}
],
"allocationPolicy": {
"instances": [
{
"installGpuDrivers": INSTALL_GPU_DRIVERS,
"policy": {
"provisioningModel": "PROVISIONING_MODEL",
"reservation": "NO_RESERVATION",
"accelerators": [
{
"type": "GPU_TYPE",
"count": GPU_COUNT
}
]
}
}
],
"location": {
"allowedLocations": [
"ALLOWED_LOCATIONS"
]
}
},
"logsPolicy": {
"destination": "CLOUD_LOGGING"
}
}
以下を置き換えます。
PROJECT_ID: プロジェクトのプロジェクト IDLOCATION: ジョブのロケーション。JOB_NAME: ジョブの名前。INSTALL_GPU_DRIVERS:trueに設定すると、Batch はpolicyフィールドで指定した GPU タイプに必要なドライバをサードパーティの場所からフェッチし、Batch がユーザーに代わってインストールします。このフィールドをfalse(デフォルト)に設定した場合、このジョブに対して GPU を使用するために GPU ドライバを手動でインストールする必要があります。PROVISIONING_MODEL: 消費オプションのプロビジョニング モデル。オンデマンドの場合はSTANDARD、Spot VM の場合はSPOT。GPU_TYPE: GPU タイプ。使用可能な GPU タイプのリストは、gcloud compute accelerator-types listコマンドを使用することで表示できます。このフィールドは、N1 VM の GPU にのみ使用します。GPU_COUNT: 指定されたタイプの GPU の数。有効なオプションの詳細については、N1 マシンシリーズの GPU マシンタイプをご覧ください。このフィールドは、N1 VM の GPU にのみ使用します。ALLOWED_LOCATIONS: 必要に応じて、allowedLocations[]フィールドを使用して、ジョブの VM が実行を許可されるリージョンまたはリージョン内の特定のゾーンを指定できます。たとえば、regions/us-central1はリージョンus-central1内のすべてのゾーンを許可します。このジョブに必要な GPU マシンタイプを提供するロケーションを指定してください。指定せず、このフィールドを省略する場合は、ジョブのロケーションで GPU マシンタイプを提供していることを確認してください。
Java
Node.js
Python
次のステップ
- ジョブの作成または実行で問題が発生した場合は、トラブルシューティングをご覧ください。
- ジョブとタスクを表示する。
- 別のジョブ作成オプションを学習する。