GPU を使用するジョブを作成して実行する

このドキュメントでは、画像処理装置(GPU)を使用するジョブを作成して実行する方法について説明します。

Batch ジョブを作成するときに、必要に応じて、そのジョブを実行中の VM に 1 つ以上の GPU を追加できます。GPU を使用するジョブの一般的なユースケースには、集中的なデータ処理と機械学習(ML)のワークロードが含まれています。

準備

GPU を使用するジョブを作成する

GPU を使用するジョブを作成するには、次のようにします。

  1. GPU を使用するジョブの要件を確認して、ジョブの作成に使用できるメソッドを決定します。
  2. 選択したメソッドを使用してジョブを作成します。推奨の方法を使用してジョブを作成する例については、GPU を使用するジョブの例を作成するをご覧ください。

ジョブで GPU を使用するための要件

GPU を使用するには、ジョブで次のすべての作業を行う必要があります。

ジョブに対してこれらの要件を満たす方法を決定したら、ジョブの GPU とロケーションを定義する必要もあります。ジョブの VM はそれぞれ、指定したタイプの GPU を 1 つ以上使用できます。ジョブの VM に対して許可されているロケーション(または、定義されていない場合はジョブのロケーション)には、指定されたタイプの GPU が存在している必要があります。GPU のタイプ、GPU 数、ジョブの有効なロケーションの定義の詳細については、をご覧ください。

GPU ドライバをインストールする

必要な GPU ドライバをインストールするには、以下のいずれかの方法を選択します。

互換性のある VM リソースを定義する

ジョブで GPU 以外の VM リソース(instances[] サブフィールド)が定義されている場合は、互換性のある方法で VM リソースを定義する必要があります。

ジョブの VM のリソース(GPU を含む)を定義するには、次の方法のみを使用できます。

また、定義するすべてのリソースは、ジョブの GPU のタイプと数に対応している必要があります。GPU で使用できる VM リソースの詳細については、Compute Engine ドキュメントの GPU プラットフォームをご覧ください。

GPU を使用するサンプルジョブを作成する

GPU を使用するジョブは、gcloud CLI または Batch API を使用して作成できます。

gcloud

  1. ジョブの構成の詳細、accelerators[] フィールドの typecount のサブフィールド、それらのタイプの 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[] フィールドをご覧ください。

  2. ジョブを作成して実行するには、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[] フィールドの typecount サブフィールド、それらのタイプの 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: プロジェクトのプロジェクト ID

  • LOCATION: ジョブのロケーション

  • 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[] フィールドをご覧ください。

次のステップ