AI Platform Training でトレーニング ジョブを実行する場合は、必要なマシン数とマシンタイプを指定する必要があります。このプロセスを簡単にするために、「スケール階層」と呼ばれるクラスタ仕様があらかじめいくつか定義されており、その中から選択できるようになっています。また、カスタム階層を選択して、マシンタイプを自分で指定することもできます。
構成の指定
クラスタ構成を指定する方法は、トレーニング ジョブをどのように実行する予定であるかによって異なります。
gcloud
TrainingInput
オブジェクトを表す YAML 構成ファイルを作成し、その構成ファイルでスケール階層の識別子とマシンタイプを指定します。このファイルの名前は任意ですが、config.yaml
とするのが慣例です。
次の例は、カスタム処理クラスタを使用するジョブの構成ファイル(config.yaml
)の内容です。
trainingInput: scaleTier: CUSTOM masterType: n1-highcpu-16 workerType: n1-highcpu-16 parameterServerType: n1-highmem-8 evaluatorType: n1-highcpu-16 workerCount: 9 parameterServerCount: 3 evaluatorCount: 1
gcloud ai-platform jobs submit training
コマンドを実行するときに、--config
フラグに YAML ファイルのパスを指定します。
gcloud ai-platform jobs submit training $JOB_NAME \ --package-path $TRAINER_PACKAGE_PATH \ --module-name $MAIN_TRAINER_MODULE \ --job-dir $JOB_DIR \ --region $REGION \ --config config.yaml \ -- \ --user_first_arg=first_arg_value \ --user_second_arg=second_arg_value
コマンドラインのフラグに構成ファイルではなく、クラスタ構成の詳細を指定することもできます。詳しくは、該当するフラグの使用方法をご覧ください。
次の例では、構成ファイルを使用せずに、前の例と同様の構成でトレーニング ジョブを送信する方法を示します。
gcloud ai-platform jobs submit training $JOB_NAME \
--package-path $TRAINER_PACKAGE_PATH \
--module-name $MAIN_TRAINER_MODULE \
--job-dir $JOB_DIR \
--region $REGION \
--scale-tier custom \
--master-machine-type n1-highcpu-16 \
--worker-machine-type n1-highcpu-16 \
--parameter-server-machine-type n1-highmem-8 \
--worker-count 9 \
--parameter-server-count 3 \
-- \
--user_first_arg=first_arg_value \
--user_second_arg=second_arg_value
トレーニング ジョブを実行する方法の詳細をご覧ください。
Python
スケール階層の識別子とマシンタイプは、ジョブ構成の TrainingInput
オブジェクトで指定します。
次の例は、カスタム処理クラスタを持つジョブの Job 表現を作成する方法です。
training_inputs = {'scaleTier': 'CUSTOM', 'masterType': 'n1-highcpu-16', 'workerType': 'n1-highcpu-16', 'parameterServerType': 'n1-highmem-8', 'evaluatorType': 'n1-highcpu-16', 'workerCount': 9, 'parameterServerCount': 3, 'evaluatorCount': 1, 'packageUris': ['gs://my/trainer/path/package-0.0.0.tar.gz'], 'pythonModule': 'trainer.task' 'args': ['--arg1', 'value1', '--arg2', 'value2'], 'region': 'us-central1', 'jobDir': 'gs://my/training/job/directory', 'runtimeVersion': '2.11', 'pythonVersion': '3.7'} job_spec = {'jobId': my_job_name, 'trainingInput': training_inputs}
training_inputs
と job_spec
は任意の識別子です。これらの辞書には任意の名前を付けることができます。ただし、辞書のキーの名前はここに示しているとおりにする必要があります(Job
リソースや TrainingInput
リソース内の名前と対応させるため)。
スケール階層
Google は、お客様からのフィードバックやクラウド リソースの可用性に基づいて、さまざまなジョブのスケール階層の構成を徐々に最適化していきます。各スケール階層は、特定のタイプのジョブへの適性という観点から定義されます。一般的に、より高度なスケール階層ほど、多くのマシンがクラスタに割り当てられ、各仮想マシンの仕様はより強力になります。スケール階層の複雑さが増すと、トレーニング ジョブの時間あたりのコスト(トレーニング ユニットの数で表す)も増加します。ジョブのコストを計算するには、料金ページをご覧ください。
AI Platform のトレーニングでは分散型トレーニングや、scikit-learn か、XGBoost のコードでアクセラレータを使用したトレーニングはサポートされていません。トレーニング ジョブで scikit-learn や XGBoost コードを実行する場合は、スケール階層を BASIC
か CUSTOM
に設定してください。
スケール階層の識別子は以下のとおりです。
AI Platform Training のスケール階層 | |
---|---|
BASIC
|
単一ワーカー インスタンス。AI Platform Training の使い方を学習するときや、小さいデータセットを使用して新しいモデルを実験するときに適しています。 Compute Engine のマシン名: n1-standard-4 |
STANDARD_1
|
1 つのマスター インスタンス、4 つのワーカー、3 つのパラメータ サーバー。このスケール階層は、TensorFlow を使用してトレーニングする場合やカスタム コンテナを使用する場合のみに使用します。 Compute Engine のマシン名、マスター: n1-highcpu-8、ワーカー: n1-highcpu-8、パラメータ サーバー: n1-standard-4 |
PREMIUM_1
|
1 つのマスター インスタンス、19 のワーカー、11 のパラメータ サーバー。このスケール階層は、TensorFlow を使用してトレーニングする場合やカスタム コンテナを使用する場合のみに使用します。 Compute Engine のマシン名、マスター: n1-highcpu-16、ワーカー: n1-highcpu-16、パラメータ サーバー: n1-highmem-8 |
BASIC_GPU
|
GPU を備えた 1 つのワーカー インスタンス。グラフィック プロセッシング ユニット(GPU)の詳細については、GPU でのトレーニングに関するセクションをご覧ください。このスケール階層は、TensorFlow を使用してトレーニングする場合やカスタム コンテナを使用する場合のみに使用します。 Compute Engine のマシン名: n1-standard-8(GPU×1) |
BASIC_TPU
|
マスター VM と 8 つの TPU v2 コアを搭載した Cloud TPU。トレーニング ジョブに TPU を使用する方法をご覧ください。このスケール階層は、TensorFlow を使用してトレーニングする場合やカスタム コンテナを使用する場合のみに使用します。 Compute Engine のマシン名、マスター: n1-standard-4、ワーカー: Cloud TPU(8 つの TPU v2 コア) |
CUSTOM
|
CUSTOM 階層はあらかじめ設定された階層ではなく、独自のクラスタ仕様を使用するための階層です。この階層を使用するときは、処理クラスタを構成するための値を、下記のガイドラインに沿って設定します。
|
カスタム スケール階層のマシンタイプ
モデルのトレーニングに使用する処理クラスタをより細かく制御する場合は、カスタム スケール階層を使用します。この構成は、ジョブ構成内の TrainingInput
オブジェクトで指定します。トレーニング ジョブを送信するために gcloud ai-platform jobs submit training
コマンドを使用する場合は、同じ識別子を使用できます。
スケール階層(
scaleTier
)をCUSTOM
に設定します。必要なワーカー(
workerCount
)、パラメータ サーバー(parameterServerCount
)、評価ツール(evaluatorCount
)の数を設定します。AI Platform のトレーニングでは、TensorFlow を使用してトレーニングする場合やカスタム コンテナを使用する場合のみ、分散型トレーニングがサポートされます。トレーニング ジョブで scikit-learn や XGBoost コードを実行する場合は、ワーカー、パラメータ サーバー、評価ツールは指定しないでください。
マスター ワーカーのマシンタイプ(
masterType
)を設定します。ワーカー、パラメータ サーバー、または評価ツールを使用する場合は、それぞれworkerType
、parameterServerType
、evaluatorType
フィールドにマシンタイプを設定します。masterType
、workerType
、parameterServerType
、evaluatorType
にそれぞれ異なるマシンタイプを指定できますが、個々のインスタンスに異なるマシンタイプを使用することはできません。たとえば、n1-highmem-8
というマシンタイプをパラメータ サーバーに使用できますが、あるパラメータ サーバーにはn1-highmem-8
を使用し、それ以外にはn1-highcpu-16
を使用するということはできません。カスタム構成(完全なクラスタではない)で必要なワーカーが 1 つだけの場合は、マスターのみのマシンタイプを持つカスタム スケール階層を指定する必要があります。そのように指定すると、ワーカーは 1 つだけになります。
config.yaml
ファイルの例を次に示します。trainingInput: scaleTier: CUSTOM masterType: n1-highcpu-16
Compute Engine のマシンタイプ
Compute Engine の特定の定義済みマシンタイプの名前をジョブの masterType
、workerType
、parameterServerType
、evaluatorType
に使用できます。TensorFlow でトレーニングを行う場合やカスタム コンテナを使用する場合は、これらのマシンタイプにさまざまな種類の GPU を使用できます。
トレーニング ジョブで使用できる Compute Engine マシンタイプ ID は次のとおりです。
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
a2-highgpu-1g
*(プレビュー)a2-highgpu-2g
*(プレビュー)a2-highgpu-4g
*(プレビュー)a2-highgpu-8g
*(プレビュー)a2-megagpu-16g
*(プレビュー)
これらのマシンタイプの技術的な仕様については、マシンタイプに関する Compute Engine のドキュメントをご覧ください。
レガシー マシンタイプ
ジョブに Compute Engine のマシンタイプではなく、従来のマシンタイプ名を指定することもできます。これらのマシンタイプは、同等の Compute Engine マシンタイプと同じ vCPU とメモリリソースを提供しますが、構成上の制限があります。
acceleratorConfig
を使用して GPU の使用をカスタマイズすることはできません。ただし、GPU を使用するレガシー マシンタイプもあります。次の表をご確認ください。トレーニング ジョブの構成で複数のマシンを使用している場合、Compute Engine のマシンタイプとレガシー マシンタイプを混在させることはできません。マスター ワーカー、ワーカー、パラメータ サーバー、評価ツールが使用するマシンタイプは、すべて同じグループのものにする必要があります。
たとえば、
masterType
を構成してn1-highcpu-32
(Compute Engine マシンタイプ)とする場合、workerType
をcomplex_model_m
(以前のマシンタイプ)に設定することはできませんが、n1-highcpu-16
(別の Compute Engine マシンタイプ)に設定することはできます。
次の表に、レガシー マシンタイプを示します。
レガシー マシンタイプ | |
---|---|
standard
|
基本的なマシン構成。小~中規模のデータセットを使用する単純なモデルのトレーニングに適しています。 Compute Engine のマシン名: n1-standard-4 |
large_model
|
大容量メモリを備えたマシン。特に、モデルが大きい(多数の隠れ層がある、または非常に多くのノードを持つ層がある)ときのパラメータ サーバーに適しています。 Compute Engine のマシン名: n1-highmem-8 |
complex_model_s
|
standard タイプのマシンで適切に処理できるレベルよりも、モデルが多くのコンピューティングを必要としている場合に、クラスタのマスターやワーカーに適しているマシン。 Compute Engine のマシン名: n1-highcpu-8 |
complex_model_m
|
complex_model_s の約 2 倍のコア数と約 2 倍のメモリ容量を備えたマシン。 Compute Engine のマシン名: n1-highcpu-16 |
complex_model_l
|
complex_model_m の約 2 倍のコア数と約 2 倍のメモリ容量を備えたマシン。 Compute Engine のマシン名: n1-highcpu-32 |
standard_gpu
|
standard タイプと同等のマシンで、GPU 1 個が追加されています。このマシンタイプは、TensorFlow を使用してトレーニングする場合やカスタム コンテナを使用する場合のみに使用します。 Compute Engine のマシン名: n1-standard-8(GPU×1) |
complex_model_m_gpu
|
complex_model_m と同等のマシンですが、GPU 4 個も含まれています。このマシンタイプは、TensorFlow を使用してトレーニングする場合やカスタム コンテナを使用する場合のみに使用します。 Compute Engine のマシン名: n1-standard-16(GPUx4) |
complex_model_l_gpu
|
complex_model_l と同等のマシンですが、GPU 8 個も含まれています。このマシンタイプは、TensorFlow を使用してトレーニングする場合やカスタム コンテナを使用する場合のみに使用します。 Compute Engine のマシン名: n1-standard-32(GPUx8) |
standard_p100
|
standard と同等のマシンで、単一の NVIDIA Tesla P100 GPU 1 個が追加されています。このマシンタイプは、TensorFlow を使用してトレーニングする場合やカスタム コンテナを使用する場合のみに使用します。 Compute Engine のマシン名: n1-standard-8-p100x1 |
complex_model_m_p100
|
complex_model_m と同等のマシンで、NVIDIA Tesla P100 GPU 4 個が追加されています。このマシンタイプは、TensorFlow を使用してトレーニングする場合やカスタム コンテナを使用する場合のみに使用します。 Compute Engine のマシン名: n1-standard-16-p100x4 |
standard_v100
|
standard と同等のマシンで、単一の NVIDIA Tesla V100 GPU 1 個が追加されています。このマシンタイプは、TensorFlow を使用してトレーニングする場合やカスタム コンテナを使用する場合のみに使用します。 Compute Engine のマシン名: n1-standard-8-v100x1 |
large_model_v100
|
large_model と同等のマシンで、単一の NVIDIA Tesla V100 GPU 1 個が追加されています。このマシンタイプは、TensorFlow を使用してトレーニングする場合やカスタム コンテナを使用する場合のみに使用します。 Compute Engine のマシン名: n1-highmem-8-v100x1 |
complex_model_m_v100
|
complex_model_m と同等のマシンで、NVIDIA Tesla V100 GPU 4 個が追加されています。このマシンタイプは、TensorFlow を使用してトレーニングする場合やカスタム コンテナを使用する場合のみに使用します。 Compute Engine のマシン名: n1-standard-16-v100x4 |
complex_model_l_v100
|
complex_model_l と同等のマシンで、NVIDIA Tesla V100 GPU 8 個が追加されています。このマシンタイプは、TensorFlow を使用してトレーニングする場合やカスタム コンテナを使用する場合のみに使用します。 Compute Engine のマシン名: n1-standard-32-v100x8 |
GPU と TPU によるトレーニング
一部のスケール階層とレガシー マシンタイプには GPU(Graphics Processing Unit)が組み込まれています。Compute Engine マシンタイプを使用している場合は、独自に選択した複数の GPU を接続できます。詳しくは、GPU によるトレーニングをご覧ください。
Tensor Processing Unit(TPU)を使用してトレーニングを行う場合は、BASIC_TPU
スケール階層または cloud_tpu
マシンタイプを使用する必要があります。cloud_tpu
マシンタイプには特別な構成オプションがあります。このタイプは、Compute Engine マシンタイプまたはレガシー マシンタイプと一緒に使用できます。また、8 つの TPU v2 コアまたは 8 つの TPU v3 コアを使用するように構成できます。トレーニング ジョブで TPU を使用する方法をご覧ください。