マシンタイプまたはスケール階層の指定

AI Platform でトレーニング ジョブを実行する場合は、必要なマシン数とマシンタイプを指定する必要があります。このプロセスを簡単にするために、「スケール階層」と呼ばれるクラスタ仕様があらかじめいくつか定義されており、その中から選択できるようになっています。また、カスタム階層を選択して、マシンタイプを自分で指定することもできます。

構成の指定

クラスタ構成を指定する方法は、トレーニング ジョブをどのように実行する予定であるかによって異なります。

gcloud

TrainingInput オブジェクトを表す YAML 構成ファイルを作成し、その構成ファイルでスケール階層の識別子とマシンタイプを指定します。このファイルの名前は任意ですが、config.yaml とするのが慣例です。

次の例は、カスタム処理クラスタを使用するジョブの構成ファイル config.yaml の内容を示しています。

trainingInput:
  scaleTier: CUSTOM
  masterType: complex_model_m
  workerType: complex_model_m
  parameterServerType: large_model
  workerCount: 9
  parameterServerCount: 3

gcloud ai-platform jobs submit training コマンドを実行するときに、YAML ファイルへのパスを --config フラグで指定します。

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 beta コンポーネントをインストールすると、クラスタ構成の詳細を構成ファイル内に指定するのではなく、コマンドライン フラグを使用して指定できます。詳しくは、該当するフラグの使用方法をご覧ください。gcloud beta コンポーネントをインストールまたは更新するには、gcloud components install beta を実行します。

次の例は、前の例と同じ構成のトレーニング ジョブを送信する方法を示しています。ただし、この例では、構成ファイルを使用していません。

gcloud beta 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 complex_model_m \
        --worker-machine-type complex_model_m \
        --parameter-server-machine-type large_model \
        --worker-server-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': 'complex_model_m',
    'workerType': 'complex_model_m',
    'parameterServerType': 'large_model',
    'workerCount': 9,
    'parameterServerCount': 3,
    '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': '1.13',
    'pythonVersion': '3.5'}

job_spec = {'jobId': my_job_name, 'trainingInput': training_inputs}

training_inputsjob_spec は任意の識別子です。これらの辞書には任意の名前を付けることができます。ただし、辞書のキーの名前はここに示しているとおりにする必要があります(Job リソースや TrainingInput リソース内の名前と対応させるため)。

スケール階層

Google は、お客様からのフィードバックやクラウド リソースの可用性に基づいて、さまざまなジョブのスケール階層の構成を徐々に最適化していきます。各スケール階層は、特定のタイプのジョブへの適性という観点から定義されます。一般的に、より高度なスケール階層ほど、多くのマシンがクラスタに割り当てられ、各仮想マシンの仕様はより強力になります。スケール階層の複雑さが増すと、トレーニング ジョブの時間あたりコスト(トレーニング ユニットの数で表す)も増加します。ジョブのコストを計算するには、料金ページをご覧ください。

スケール階層の識別子は以下のとおりです。

AI Platform のスケール階層
BASIC

単一ワーカー インスタンス。AI Platform の使い方を学習するときや、小さいデータセットを使用して新しいモデルを実験するときに適しています。

Compute Engine のマシン名: n1-standard-4

STANDARD_1

1 つのマスター インスタンス、4 つのワーカー、3 つのパラメータ サーバー。

Compute Engine のマシン名、マスター: n1-highcpu-8、ワーカー: n1-highcpu-8、パラメータ サーバー: n1-standard-4

PREMIUM_1

1 つのマスター インスタンス、19 のワーカー、11 のパラメータ サーバー。

Compute Engine のマシン名、マスター: n1-highcpu-16、ワーカー: n1-highcpu-16、パラメータ サーバー: n1-highmem-8

BASIC_GPU

1 つの NVIDIA Tesla K80 GPU を備えた 1 つのワーカー インスタンス。グラフィック プロセッシング ユニット(GPU)の詳細については、GPU でのトレーニングに関するセクションをご覧ください。

Compute Engine のマシン名: n1-standard-8(k80 GPU×1)

BASIC_TPU

マスター VM とクラウド TPU。トレーニング ジョブに TPU を使用する方法をご覧ください。

Compute Engine のマシン名、マスター: n1-standard-4、ワーカー: Cloud TPU

CUSTOM

CUSTOM 階層はあらかじめ設定された階層ではなく、独自のクラスタ仕様を使用するための階層です。この階層を使用するときは、処理クラスタを構成するための値を、下記のガイドラインに沿って設定します。

  • マスターノードに使用するマシンのタイプを指定するために TrainingInput.masterType を設定する必要があります。これが唯一の必須の設定です。以下で説明するマシンタイプをご覧ください。
  • 使用するワーカーの数を指定するために、TrainingInput.workerCount を設定することができます。ワーカーを 1 つ以上指定する場合は、ワーカーノードに使用するマシンのタイプを指定するための TrainingInput.workerType も指定する必要があります。
  • 使用するパラメータ サーバーの数を指定するために TrainingInput.parameterServerCount を設定することができます。パラメータ サーバーを 1 つ以上指定する場合は、パラメータ サーバーに使用するマシンのタイプを指定するための TrainingInput.parameterServerType も設定する必要があります。

カスタム スケール階層のマシンタイプ

モデルのトレーニングに使用する処理クラスタをより細かく制御する場合は、カスタム スケール階層を使用します。この構成は、ジョブ構成内の TrainingInput オブジェクトで指定します。トレーニング ジョブを送信するために gcloud ai-platform jobs submit training コマンドを使用する場合は、同じ識別子を使用できます。

  • スケール階層(scaleTier)を CUSTOM に設定します。
  • 必要なパラメータ サーバー数(parameterServerCount)とワーカー数(workerCount)の値を設定します。
  • マスター ワーカー(masterType)、パラメータ サーバー(parameterServerType)、ワーカー(workerType)それぞれのマシンタイプを設定します。masterTypeparameterServerTypeworkerType のそれぞれに異なるマシンタイプを指定できますが、個々のインスタンスに異なるマシンタイプを使用することはできません。たとえば、large_model というマシンタイプをパラメータ サーバーに使用できますが、あるパラメータ サーバーには large_model を使用し、それ以外には complex_model_m を使用するということはできません。
  • カスタム構成(完全なクラスタではない)で必要なワーカーが 1 つだけの場合は、マスターのみのマシンタイプを持つカスタム スケール階層を指定する必要があります。そのように指定すると、ワーカーは 1 つだけになります。config.yaml ファイルの例を以下に示します。

    trainingInput:
      scaleTier: CUSTOM
      masterType: complex_model_m
    

マシンタイプの識別子は以下のとおりです。

AI Platform のマシン名
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 タイプと同等のマシンで、NVIDIA Tesla K80 GPU 1 個が追加されています。

Compute Engine のマシン名: n1-standard-8(k80 GPU×1)

complex_model_m_gpu

complex_model_m と同等のマシンで、NVIDIA Tesla K80 GPU 4 個が追加されています。

Compute Engine のマシン名: n1-standard-16-k80x4

complex_model_l_gpu

complex_model_l と同等のマシンで、NVIDIA Tesla K80 GPU 8 個が追加されています。

Compute Engine のマシン名: n1-standard-32-k80x8

standard_p100

standard タイプと同等のマシンで、NVIDIA Tesla P100 GPU 1 個が追加されています。

Compute Engine のマシン名: n1-standard-8-p100x1

complex_model_m_p100

complex_model_m と同等のマシンで、NVIDIA Tesla P100 GPU 4 個が追加されています。

Compute Engine のマシン名: n1-standard-16-p100x4

standard_v100

standard タイプと同等のマシンで、NVIDIA Tesla V100 GPU 1 個が追加されています。

Compute Engine のマシン名: n1-standard-8-v100x1

large_model_v100

large_model タイプと同等のマシンで、NVIDIA Tesla V100 GPU 1 個が追加されています。

Compute Engine のマシン名: n1-highmem-8-v100x1

complex_model_m_v100

complex_model_m と同等のマシンで、NVIDIA Tesla V100 GPU 4 個が追加されています。

Compute Engine のマシン名: n1-standard-16-v100x4

complex_model_l_v100

complex_model_l と同等のマシンで、NVIDIA Tesla V100 GPU 8 個が追加されています。

Compute Engine のマシン名: n1-standard-32-v100x8

cloud_tpu

1 つの Cloud TPU を含む TPU VM。

Compute Engine のマシンタイプ

上記の AI Platform マシンタイプの代わりに、Compute Engine の定義済みマシンタイプの名前を使用することもできます。これにより、トレーニング ジョブのコンピューティング リソースをより柔軟に割り当てることができます。ジョブで GPU を使用する方法をカスタマイズすることもできます。

直接使用できる Compute Engine マシンタイプの識別子は次のとおりです。

  • 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

詳しくは、Compute Engine マシンタイプで提供されるリソースをご覧ください。

トレーニング ジョブの構成で複数のマシンを使用している場合、AI Platform のマシンタイプと Compute Engine のマシンタイプを混在させることはできません。マスター ワーカー、パラメータ サーバー、ワーカーはすべて同じグループのマシンタイプを使用する必要があります。

たとえば、masterTypen1-highcpu-32(Compute Engine のマシンタイプ)に設定した場合、workerType または parameterServerTypecomplex_model_m(AI Platform のマシンタイプ)に設定することはできませんが、n1-highcpu-16(他の Compute Engine マシンタイプ)には設定できます。

GPU と TPU によるトレーニング

一部のスケール階層と AI Platform のマシンタイプには GPU(Graphics Processing Unit)が含まれています。Compute Engine マシンタイプを使用している場合は、独自に選択した複数の GPU を接続できます。詳しくは、GPU によるトレーニングをご覧ください。

Tensor Processing Unit(TPU)の詳細については、TPU をトレーニング ジョブに使用する方法をご覧ください。

マシンタイプの比較

次の表では、スケール階層を CUSTOM に設定した場合にトレーニングで使用できる AI Platform のマシンタイプと Compute Engine のマシンタイプを比較しています。

マシンタイプの具体的な仕様は随時変更される可能性があります。

AI Platform のマシンタイプ

マシンタイプ アクセラレータ 仮想 CPU メモリ(GB)
standard - 4 15
large_model - 8 52
complex_model_s - 8 7.2
complex_model_m - 16 14.4
complex_model_l - 32 28.8
standard_gpu 1(K80 GPU) 8 30
complex_model_m_gpu 4(K80 GPU) 16 60
complex_model_l_gpu 8(K80 GPU) 32 120
standard_p100 1(P100 GPU) 8 30
complex_model_m_p100 4(P100 GPU) 16 60
standard_v100 1(V100 GPU) 8 30
large_model_v100 1(V100 GPU) 16 52
complex_model_m_v100 4(V100 GPU) 16 60
complex_model_l_v100 8(V100 GPU) 32 120
cloud_tpu 8(TPU コア)

Compute Engine のマシンタイプ

Compute Engine のマシンタイプではデフォルトでアクセラレータは使用されませんが、トレーニング構成でこれらの仮想マシンに GPU を接続できます。

マシンタイプ 仮想 CPU メモリ(GB)
n1-standard-4 4 15
n1-standard-8 8 30
n1-standard-16 16 60
n1-standard-32 32 120
n1-standard-64 64 240
n1-standard-96 96 360
n1-highmem-2 2 13
n1-highmem-4 4 26
n1-highmem-8 8 52
n1-highmem-16 16 104
n1-highmem-32 32 208
n1-highmem-64 64 416
n1-highmem-96 96 624
n1-highcpu-16 16 14.4
n1-highcpu-32 32 28.8
n1-highcpu-64 64 57.6
n1-highcpu-96 96 86.4

次のステップ

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

TensorFlow 用 AI Platform