カスタム トレーニングを行う場合、トレーニング コードは 1 つ以上の仮想マシン(VM)インスタンスで実行されます。トレーニングに使用する VM のタイプを構成できます。より多くのコンピューティング リソースを備えた VM を使用すると、トレーニングを高速化し、より大きなデータセットを扱うことができますが、トレーニング コストが増大する可能性があります。
また、GPU を使用してトレーニングを加速することもできます。GPU を使用すると、追加のコストが発生します。
必要に応じて、トレーニング VM のブートディスクのタイプとサイズをカスタマイズできます。
このドキュメントでは、カスタム トレーニングで使用できるさまざまなコンピューティング リソースとその構成方法について説明します。
コンピューティング リソースを指定する場所
WorkerPoolSpec
内で構成の詳細を指定します。カスタム トレーニングの実行方法に応じて、この WorkerPoolSpec
を次のいずれかの API フィールドに配置します。
CustomJob
リソースを作成する場合は、CustomJob.jobSpec.workerPoolSpecs
にWorkerPoolSpec
を指定します。Google Cloud CLI を使用している場合は、
gcloud ai custom-jobs create
コマンドで--worker-pool-spec
フラグまたは--config
フラグを使用して、ワーカープール オプションを指定します。詳細については、
CustomJob
の作成をご覧ください。HyperparameterTuningJob
リソースを作成する場合は、HyperparameterTuningJob.trialJobSpec.workerPoolSpecs
にWorkerPoolSpec
を指定します。gcloud CLI を使用している場合は、
gcloud ai hpt-tuning-jobs create
コマンドで--config
フラグを使用して、ワーカープール オプションを指定します。詳細については、
HyperparameterTuningJob
の作成をご覧ください。ハイパーパラメータ調整を行わない
TrainingPipeline
リソースを作成する場合は、TrainingPipeline.trainingTaskInputs.workerPoolSpecs
にWorkerPoolSpec
を指定します。詳細については、カスタムの
TrainingPipeline
の作成をご覧ください。ハイパーパラメータ調整を行う
TrainingPipeline
を作成する場合は、TrainingPipeline.trainingTaskInputs.trialJobSpec.workerPoolSpecs
にWorkerPoolSpec
を指定します。
分散トレーニングを行う場合、ワーカープールごとに異なる設定を使用できます。
マシンタイプ
WorkerPoolSpec
で、machineSpec.machineType
フィールドに次のマシンタイプのいずれかを指定する必要があります。ワーカープールの各レプリカは、指定されたマシンタイプの個別の VM で実行されます。
a2-ultragpu-1g
*a2-ultragpu-2g
*a2-ultragpu-4g
*a2-ultragpu-8g
*a2-highgpu-1g
*a2-highgpu-2g
*a2-highgpu-4g
*a2-highgpu-8g
*a2-megagpu-16g
*a3-highgpu-8g
*e2-standard-4
e2-standard-8
e2-standard-16
e2-standard-32
e2-highmem-2
e2-highmem-4
e2-highmem-8
e2-highmem-16
e2-highcpu-16
e2-highcpu-32
n2-standard-4
n2-standard-8
n2-standard-16
n2-standard-32
n2-standard-48
n2-standard-64
n2-standard-80
n2-highmem-2
n2-highmem-4
n2-highmem-8
n2-highmem-16
n2-highmem-32
n2-highmem-48
n2-highmem-64
n2-highmem-80
n2-highcpu-16
n2-highcpu-32
n2-highcpu-48
n2-highcpu-64
n2-highcpu-80
n1-standard-4
n1-standard-8
n1-standard-16
n1-standard-32
n1-standard-64
n1-standard-96
n1-highmem-2
n1-highmem-4
n1-highmem-8
n1-highmem-16
n1-highmem-32
n1-highmem-64
n1-highmem-96
n1-highcpu-16
n1-highcpu-32
n1-highcpu-64
n1-highcpu-96
c2-standard-4
c2-standard-8
c2-standard-16
c2-standard-30
c2-standard-60
m1-ultramem-40
m1-ultramem-80
m1-ultramem-160
m1-megamem-96
g2-standard-4
*g2-standard-8
*g2-standard-12
*g2-standard-16
*g2-standard-24
*g2-standard-32
*g2-standard-48
*g2-standard-96
*cloud-tpu
*
* 上記のリストでアスタリスクの付いたマシンタイプは、特定の GPU または TPU で使用する必要があります。このガイドの以降のセクションをご覧ください。
これらのマシンタイプの技術的な仕様については、マシンタイプに関する Compute Engine のドキュメントをご覧ください。各マシンタイプをカスタム トレーニングに使用する場合の料金については、料金をご覧ください。
次の例は、CustomJob
の作成時にマシンタイプを指定する場所を示しています。
コンソール
Google Cloud コンソールでは、CustomJob
を直接作成できません。ただし、CustomJob
を作成する TrainingPipeline
を作成することは可能です。Google Cloud コンソールで TrainingPipeline
を作成する場合は、[コンピューティングと料金] のステップで、各ワーカープールのマシンタイプを [マシンタイプ] フィールドに指定します。
gcloud
gcloud ai custom-jobs create \
--region=LOCATION \
--display-name=JOB_NAME \
--worker-pool-spec=machine-type=MACHINE_TYPE,replica-count=REPLICA_COUNT,container-image-uri=CUSTOM_CONTAINER_IMAGE_URI
Java
このサンプルを試す前に、Vertex AI クイックスタート: クライアント ライブラリの使用にある Java の設定手順を完了してください。詳細については、Vertex AI Java API のリファレンス ドキュメントをご覧ください。
Vertex AI に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
Node.js
このサンプルを試す前に、Vertex AI クライアント ライブラリをインストールするにある Node.js の設定手順を完了してください。詳細については、Vertex AI Node.js API のリファレンス ドキュメントをご覧ください。
Vertex AI に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
Python
Python をインストールまたは更新する方法については、Vertex AI SDK for Python をインストールするをご覧ください。詳細については、Python API リファレンス ドキュメントをご覧ください。
詳細については、CustomJob
の作成ガイドをご覧ください。
GPU
GPU を使用するためのトレーニング コードを作成した場合は、各 VM で 1 つ以上の GPU を使用するようにワーカープールを構成できます。GPU を使用するには、A2、N1、または G2 マシンタイプを使用する必要があります。また、GPU で n1-highmem-2
などの小型のマシンタイプを使用すると、CPU の制約により、一部のワークロードでロギングが失敗する可能性があります。トレーニング ジョブがログを返さなくなった場合は、より大きなマシンタイプの選択を検討してください。
Vertex AI では、カスタム トレーニング用に次のタイプの GPU がサポートされています。
NVIDIA_H100_80GB
NVIDIA_A100_80GB
NVIDIA_TESLA_A100
(NVIDIA A100 40GB)NVIDIA_TESLA_K80
NVIDIA_TESLA_P4
NVIDIA_TESLA_P100
NVIDIA_TESLA_T4
NVIDIA_TESLA_V100
NVIDIA_L4
各タイプの GPU の技術仕様の詳細については、コンピューティング ワークロード用 GPU に関する Compute Engine の簡単なドキュメントをご覧ください。各マシンタイプをカスタム トレーニングに使用する場合の料金については、料金をご覧ください。
WorkerPoolSpec
で、使用する GPU のタイプを machineSpec.acceleratorType
フィールドに指定し、ワーカープール内の各 VM の数を machineSpec.acceleratorCount
フィールドに指定します。ただし、これらのフィールドを選択するには、次の要件を満たしている必要があります。
選択する GPU のタイプは、カスタム トレーニングを実行するロケーションで使用できる必要があります。すべての GPU がすべてのリージョンで利用できるわけではありません。利用可能なリージョンをご確認ください。
構成では特定の数の GPU のみを使用できます。たとえば、VM で 2 つまたは 4 つの
NVIDIA_TESLA_T4
GPU を使用できますが、3 は指定できません。各 GPU タイプのacceleratorCount
値を確認するには、互換性テーブルをご覧ください。使用するマシンタイプで十分な数の仮想 CPU とメモリを GPU 構成に定義する必要があります。たとえば、ワーカープールで
n1-standard-32
マシンタイプを使用する場合、各 VM は 32 個の仮想 CPU と 120 GB のメモリを搭載します。各NVIDIA_TESLA_V100
GPU で最大 12 個の仮想 CPU と 76 GB のメモリを提供できるため、要件を満たすには、各n1-standard-32
VM で 4 個数以上の GPU を使用する必要があります(2 つの GPU では十分なリソースが提供されません。また、3 つの GPU を指定することはできません)。要件については、こちらの互換性テーブルをご覧ください。
Compute Engine で GPU を使用する場合と異なるカスタム トレーニングで GPU を使用する場合には、次の制限事項にも注意してください。
- 8 個の
NVIDIA_TESLA_K80
GPU を使用する構成では、すべてのリージョンとゾーンに最大 208 GB のメモリのみが提供されます。 - 4 個の
NVIDIA_TESLA_P100
GPU を使用する構成では、すべてのリージョンとゾーンに最大 64 個の仮想 CPU と最大 208 GB のメモリのみが提供されます。
- 8 個の
次の互換性の表は、machineSpec.machineType
と machineSpec.acceleratorType
ごとに machineSpec.acceleratorCount
で有効な値を示しています。
各マシンタイプに有効な GPU の数 | ||||||||
---|---|---|---|---|---|---|---|---|
マシンタイプ | NVIDIA_A100_80GB |
NVIDIA_TESLA_A100 |
NVIDIA_TESLA_K80 |
NVIDIA_TESLA_P4 |
NVIDIA_TESLA_P100 |
NVIDIA_TESLA_T4 |
NVIDIA_TESLA_V100 |
NVIDIA_L4 |
a2-ultragpu-1g |
1 | |||||||
a2-ultragpu-2g |
2 | |||||||
a2-ultragpu-4g |
4 | |||||||
a2-ultragpu-8g |
8 | |||||||
a2-highgpu-1g |
1 | |||||||
a2-highgpu-2g |
2 | |||||||
a2-highgpu-4g |
4 | |||||||
a2-highgpu-8g |
8 | |||||||
a2-megagpu-16g |
16 | |||||||
n1-standard-4 |
1、2、4、8 | 1、2、4 | 1、2、4 | 1、2、4 | 1、2、4、8 | |||
n1-standard-8 |
1、2、4、8 | 1、2、4 | 1、2、4 | 1、2、4 | 1、2、4、8 | |||
n1-standard-16 |
2、4、8 | 1、2、4 | 1、2、4 | 1、2、4 | 2、4、8 | |||
n1-standard-32 |
4、8 | 2、4 | 2、4 | 2、4 | 4、8 | |||
n1-standard-64 |
4 | 4 | 8 | |||||
n1-standard-96 |
4 | 4 | 8 | |||||
n1-highmem-2 |
1、2、4、8 | 1、2、4 | 1、2、4 | 1、2、4 | 1、2、4、8 | |||
n1-highmem-4 |
1、2、4、8 | 1、2、4 | 1、2、4 | 1、2、4 | 1、2、4、8 | |||
n1-highmem-8 |
1、2、4、8 | 1、2、4 | 1、2、4 | 1、2、4 | 1、2、4、8 | |||
n1-highmem-16 |
2、4、8 | 1、2、4 | 1、2、4 | 1、2、4 | 2、4、8 | |||
n1-highmem-32 |
4、8 | 2、4 | 2、4 | 2、4 | 4、8 | |||
n1-highmem-64 |
4 | 4 | 8 | |||||
n1-highmem-96 |
4 | 4 | 8 | |||||
n1-highcpu-16 |
2、4、8 | 1、2、4 | 1、2、4 | 1、2、4 | 2、4、8 | |||
n1-highcpu-32 |
4、8 | 2、4 | 2、4 | 2、4 | 4、8 | |||
n1-highcpu-64 |
8 | 4 | 4 | 4 | 8 | |||
n1-highcpu-96 |
4 | 4 | 8 | |||||
g2-standard-4 |
1 | |||||||
g2-standard-8 |
1 | |||||||
g2-standard-12 |
1 | |||||||
g2-standard-16 |
1 | |||||||
g2-standard-24 |
2 | |||||||
g2-standard-32 |
1 | |||||||
g2-standard-48 |
4 | |||||||
g2-standard-96 |
8 |
次の例は、CustomJob
の作成時に GPU を指定できる場所を示します。
コンソール
Google Cloud コンソールでは、CustomJob
を直接作成できません。ただし、TrainingPipeline
を作成する CustomJob
を作成することは可能です。Google Cloud コンソールで TrainingPipeline
を作成する場合、[コンピューティングと料金] のステップで各ワーカープールに GPU を指定できます。まず、マシンタイプを指定します。次に、[アクセラレータ タイプ] と [アクセラレータ数] フィールドに GPU の詳細を指定できます。
gcloud
Google Cloud CLI ツールを使用して GPU を指定するには、config.yaml
ファイルを使用する必要があります。次に例を示します。
config.yaml
workerPoolSpecs:
machineSpec:
machineType: MACHINE_TYPE
acceleratorType: ACCELERATOR_TYPE
acceleratorCount: ACCELERATOR_COUNT
replicaCount: REPLICA_COUNT
containerSpec:
imageUri: CUSTOM_CONTAINER_IMAGE_URI
以下のコマンドを実行します。
gcloud ai custom-jobs create \
--region=LOCATION \
--display-name=JOB_NAME \
--config=config.yaml
Node.js
このサンプルを試す前に、Vertex AI クイックスタート: クライアント ライブラリの使用にある Node.js の設定手順を完了してください。詳細については、Vertex AI Node.js API のリファレンス ドキュメントをご覧ください。
Vertex AI に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
Python
Python をインストールまたは更新する方法については、Vertex AI SDK for Python をインストールするをご覧ください。詳細については、Python API リファレンス ドキュメントをご覧ください。
詳細については、CustomJob
の作成ガイドをご覧ください。
TPU
Vertex AI でカスタム トレーニングに Tensor Processing Unit(TPU)を使用するには、TPU VM を使用するようにワーカープールを構成します。
Vertex AI で TPU VM を使用する場合は、カスタム トレーニングに 1 つのワーカープールのみを使用し、1 つのレプリカのみを使用するように、このワーカープールを構成する必要があります。
ワーカープールで TPU VM を使用するには、次のいずれかの構成を使用する必要があります。
TPU V2 を使用して TPU VM を構成するには、
WorkerPoolSpec
で次のフィールドを指定します。machineSpec.machineType
をcloud-tpu
に設定します。machineSpec.acceleratorType
をTPU_V2
に設定します。- 単一の TPU の場合は
machineSpec.acceleratorCount
を8
に、TPU Pod の場合は32 or multiple of 32
に設定します。 replicaCount
を1
に設定します。
TPU V3 で TPU VM を構成するには、
WorkerPoolSpec
で次のフィールドを指定します。machineSpec.machineType
をcloud-tpu
に設定します。machineSpec.acceleratorType
をTPU_V3
に設定します。- 単一の TPU の場合は
machineSpec.acceleratorCount
を8
に、TPU Pod の場合は32+
に設定します。 replicaCount
を1
に設定します。
次の例は、CustomJob
の作成時に TPU VM を指定する方法を示しています。
gcloud
gcloud CLI ツールを使用して TPU VM を指定するには、config.yaml
ファイルを使用する必要があります。次に例を示します。
config.yaml
workerPoolSpecs:
machineSpec:
machineType: cloud-tpu
acceleratorType: TPU_V2
acceleratorCount: 8
replicaCount: 1
containerSpec:
imageUri: CUSTOM_CONTAINER_IMAGE_URI
以下のコマンドを実行します。
gcloud ai custom-jobs create \
--region=LOCATION \
--display-name=JOB_NAME \
--config=config.yaml
詳細については、CustomJob
の作成ガイドをご覧ください。
ブートディスク オプション
必要に応じて、トレーニング VM のブートディスクをカスタマイズできます。ワーカープール内のすべての VM は、同じ種類とサイズのブートディスクを使用します。
各トレーニング VM が使用するブートディスクの種類をカスタマイズするには、
WorkerPoolSpec
でdiskSpec.bootDiskType
フィールドを指定します。標準ハードドライブを基盤とする標準永続ディスクを使用する場合は、このフィールドを
pd-standard
に設定します。あるいは、pd-ssd
に設定することで、SSD(ソリッド ステート ドライブ)を基盤とする SSD 永続ディスクを使用することもできます。デフォルト値はpd-ssd
です。トレーニング コードがディスクに読み書きを行う場合、
pd-ssd
を使用すると、パフォーマンスが向上することがあります。詳しくは、ディスクタイプをご覧ください。各トレーニング VM が使用するブートディスクのサイズ(GB 単位)をカスタマイズするには、
WorkerPoolSpec
でdiskSpec.bootDiskSizeGb
フィールドを指定します。このフィールドは、100~64,000 の整数に設定できます。デフォルト値は
100
です。トレーニング コードが大量の一時データをディスクに書き込む場合は、ブートディスクのサイズを増やすことをおすすめします。ブートディスクに書き込むデータは一時的なものであり、トレーニングの完了後に取得できないことに注意してください。
ブートディスクの種類とサイズを変更すると、カスタム トレーニングの料金が変わります。
次の例は、CustomJob
の作成時にブートディスク オプションを指定する場所を示します。
コンソール
Google Cloud コンソールでは、CustomJob
を直接作成できません。ただし、TrainingPipeline
を作成する CustomJob
を作成することは可能です。Google Cloud コンソールで TrainingPipeline
を作成するときに、[コンピューティングと料金] のステップで、[ディスクタイプ] プルダウン リストと [ディスクサイズ(GB)] フィールドに、各ワーカープールのブートディスク オプションを指定できます。
gcloud
Google Cloud CLI ツールを使用してブートディスク オプションを指定するには、config.yaml
ファイルを使用する必要があります。次に例を示します。
config.yaml
workerPoolSpecs:
machineSpec:
machineType: MACHINE_TYPE
diskSpec:
bootDiskType: DISK_TYPE
bootDiskSizeGb: DISK_SIZE
replicaCount: REPLICA_COUNT
containerSpec:
imageUri: CUSTOM_CONTAINER_IMAGE_URI
以下のコマンドを実行します。
gcloud ai custom-jobs create \
--region=LOCATION \
--display-name=JOB_NAME \
--config=config.yaml
詳細については、CustomJob
の作成ガイドをご覧ください。
次のステップ
- カスタム トレーニング ジョブを実行する永続リソースの作成方法を学習する。
CustomJob
を作成するして、カスタム トレーニングの実行方法を学習する。