このドキュメントでは、画像処理装置(GPU)を使用するジョブを作成して実行する方法について説明します。
Batch ジョブを作成するときに、必要に応じて、そのジョブを実行中の VM に 1 つ以上の GPU を追加できます。GPU を使用するジョブの一般的なユースケースには、集中的なデータ処理と機械学習(ML)のワークロードが含まれています。
準備
- Batch を以前に使用したことがなかった場合は、Batch を使ってみるを確認し、プロジェクトとユーザーの前提条件を完了して Batch を有効にします。
-
ジョブの作成に必要な権限を取得するには、次の IAM ロールを付与するよう管理者に依頼してください。
-
プロジェクトのバッチジョブ編集者(
roles/batch.jobsEditor
) -
ジョブのサービス アカウントのサービス アカウント ユーザー(
roles/iam.serviceAccountUser
)。これは、デフォルトでは Compute Engine のデフォルトのサービス アカウントです。
ロールの付与の詳細については、アクセスの管理をご覧ください。
-
プロジェクトのバッチジョブ編集者(
GPU を使用するジョブを作成する
GPU を使用するジョブを作成するには、次のようにします。
- GPU を使用するジョブの要件を確認して、ジョブの作成に使用できるメソッドを決定します。
- 選択したメソッドを使用してジョブを作成します。推奨の方法を使用してジョブを作成する例については、GPU を使用するジョブの例を作成するをご覧ください。
ジョブで GPU を使用するための要件
GPU を使用するには、ジョブで次のすべての作業を行う必要があります。
- ジョブの要件に応じて、自動または手動で必要な GPU ドライバをインストールします。
- ジョブでジョブの VM に他のリソースが指定されている場合(直接または VM インスタンス テンプレートを使用)、ジョブで互換性のある VM リソースを定義する必要があります。
ジョブに対してこれらの要件を満たす方法を決定したら、ジョブの GPU とロケーションを定義する必要もあります。ジョブの VM はそれぞれ、指定したタイプの GPU を 1 つ以上使用できます。ジョブの VM に対して許可されているロケーション(または、定義されていない場合はジョブのロケーション)には、指定されたタイプの GPU が存在している必要があります。GPU のタイプ、GPU 数、ジョブの有効なロケーションの定義の詳細については、例をご覧ください。
GPU ドライバをインストールする
必要な GPU ドライバをインストールするには、以下のいずれかの方法を選択します。
ドライバを自動的にインストールする(可能であれば推奨): 例に示すように、Batch でサードパーティのロケーションから必要な GPU ドライバをフェッチさせ、ユーザーに代わってインストールする場合は、ジョブの
installGpuDrivers
フィールドをtrue
に設定します。ドライバを手動でインストールする必要がないジョブでは、この方法をおすすめします。ドライバを手動でインストールする: 次のいずれかに該当する場合は、この方法が必要です。
- ジョブがスクリプトと実行可能なコンテナの両方を使用し、インターネットのアクセス権を持っていません。ジョブが持つアクセス権の詳細については、バッチ ネットワーキングの概要をご覧ください。
- ジョブはカスタム VM イメージを使用します。VM OS イメージと使用できる VM OS イメージの詳細については、VM OS 環境の概要をご覧ください。
必要な GPU ドライバを手動でインストールするには、次の方法をおすすめします。
GPU ドライバを含むカスタム VM イメージを作成します。
GPU ドライバをインストールするには、使用する OS に基づいてインストール スクリプトを実行します。
ジョブにコンテナで実行可能なファイルがあり、Container-Optimized OS を使用していない場合は、NVIDIA Container Toolkit もインストールする必要があります。
Compute Engine インスタンス テンプレートを使用して、カスタム VM イメージでジョブを作成して送信します。ジョブの
installGpuDrivers
フィールドをfalse
(デフォルト)に設定します。
互換性のある VM リソースを定義する
ジョブで GPU 以外の VM リソース(instances[]
サブフィールド)が定義されている場合は、互換性のある方法で VM リソースを定義する必要があります。
ジョブの VM のリソース(GPU を含む)を定義するには、次の方法のみを使用できます。
- リソースを直接定義する(推奨):
例に示すように、ジョブの VM のリソースを直接定義するには、
policy
フィールドを使用します。 - テンプレート内のリソースを定義する: Compute Engine インスタンス テンプレートを指定して、ジョブの VM のリソースを定義します。
また、定義するすべてのリソースは、ジョブの GPU のタイプと数に対応している必要があります。GPU で使用できる VM リソースの詳細については、Compute Engine ドキュメントの GPU プラットフォームをご覧ください。
GPU を使用するサンプルジョブを作成する
GPU を使用するジョブは、gcloud CLI または Batch API を使用して作成できます。
gcloud
ジョブの構成の詳細、
accelerators[]
フィールドのtype
とcount
のサブフィールド、それらのタイプの GPU が存在しているロケーションを指定する JSON ファイルを作成します。たとえば、GPU を使用する基本的なスクリプト ジョブを作成し、必要な GPU ドライバを自動的にインストールして、ジョブの VM に対して許可されているロケーションを指定するには、次の内容の 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": { "accelerators": [ { "type": "GPU_TYPE", "count": GPU_COUNT } ] } } ], "location": { "allowedLocations": [ "ALLOWED_LOCATIONS" ] } } }
以下を置き換えます。
INSTALL_GPU_DRIVERS
: 省略可。true
に設定すると、Batch はpolicy
フィールドで指定した GPU タイプに必要なドライバをサードパーティの場所からフェッチし、Batch がユーザーに代わってインストールします。 このフィールドをfalse
(デフォルト)に設定した場合、このジョブに対して GPU を使用するために GPU ドライバを手動でインストールする必要があります。GPU_TYPE
: GPU タイプ。使用可能な GPU タイプのリストは、gcloud compute accelerator-types list
コマンドを使用することで表示できます。GPU_COUNT
: 指定したタイプの GPU の数。ALLOWED_LOCATIONS
: 省略可。ジョブの VM インスタンスが実行できるロケーション(たとえば、regions/us-central1, zones/us-central1-a
はゾーンus-central1-a
を許可します)。許可されたロケーションを指定するには、リージョンと、必要に応じて 1 つ以上のゾーンを選択する必要があります。選択したロケーションには、このジョブに必要な GPU タイプが必要です。それ以外の場合は、このフィールドを省略すると、ジョブのロケーションに GPU タイプが存在する必要があります。詳細については、allowedLocations[]
フィールドをご覧ください。
ジョブを作成して実行するには、
gcloud batch jobs submit
コマンドを使用します。gcloud batch jobs submit JOB_NAME \ --location LOCATION \ --config JSON_CONFIGURATION_FILE
以下を置き換えます。
JOB_NAME
: ジョブの名前。LOCATION
: ジョブのロケーション。JSON_CONFIGURATION_FILE
: ジョブの構成の詳細を含む JSON ファイルへのパス。
API
ジョブの構成の詳細、accelerators[]
フィールドの type
と count
サブフィールド、それらのタイプの GPU が存在しているロケーションを指定する jobs.create
メソッドに対して POST
リクエストを作成します。
たとえば、GPU を使用する基本的なスクリプト ジョブを作成し、必要な GPU ドライバを自動的にインストールして、ジョブの VM に対して許可されているロケーションを指定するには、次の内容の JSON ファイルを作成します。
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": {
"accelerators": [
{
"type": "GPU_TYPE",
"count": GPU_COUNT
}
]
}
}
],
"location": {
"allowedLocations": [
"ALLOWED_LOCATIONS"
]
}
}
}
以下を置き換えます。
PROJECT_ID
: プロジェクトのプロジェクト IDLOCATION
: ジョブのロケーション。JOB_NAME
: ジョブの名前。INSTALL_GPU_DRIVERS
: 省略可。true
に設定すると、Batch はpolicy
フィールドで指定した GPU タイプに必要なドライバをサードパーティの場所からフェッチし、Batch がユーザーに代わってインストールします。 このフィールドをfalse
(デフォルト)に設定した場合、このジョブに対して GPU を使用するために GPU ドライバを手動でインストールする必要があります。GPU_TYPE
: GPU タイプ。使用可能な GPU タイプのリストは、gcloud compute accelerator-types list
コマンドを使用することで表示できます。GPU_COUNT
: 指定したタイプの GPU の数。ALLOWED_LOCATIONS
: 省略可。ジョブの VM インスタンスが実行できるロケーション(たとえば、regions/us-central1, zones/us-central1-a
はゾーンus-central1-a
を許可します)。許可されたロケーションを指定するには、リージョンと、必要に応じて 1 つ以上のゾーンを選択する必要があります。選択したロケーションには、このジョブに必要な GPU タイプが必要です。それ以外の場合は、このフィールドを省略すると、ジョブのロケーションに GPU タイプが存在する必要があります。詳細については、allowedLocations[]
フィールドをご覧ください。
次のステップ
- ジョブの作成または実行に問題がある場合は、トラブルシューティングをご覧ください。
- ジョブとタスクを表示する。
- 別のジョブ作成オプションを学習する。