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

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

構成の指定

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

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 ml-engine jobs submit training コマンドを実行する際に、--config フラグで YAML ファイルのパスを指定します。

gcloud ml-engine 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

トレーニング ジョブを実行する方法の詳細をご覧ください。

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.10',
    'pythonVersion': '3.5'}

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

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

スケール階層

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

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

Cloud ML Engine のスケール階層
BASIC

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

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 ml-engine 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
    

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

Cloud ML 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 タイプと同等のマシンで、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 個が追加されています。これらの GPU の利用可能性は、ベータ版の段階にあります。

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

large_model_v100

large_model タイプと同等のマシンで、NVIDIA Tesla V100 GPU 1 個が追加されています。これらの GPU の利用可能性は、ベータ版の段階にあります。

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

complex_model_m_v100

complex_model_m と同等のマシンで、NVIDIA Tesla V100 GPU 4 個が追加されています。これらの GPU の利用可能性は、ベータ版の段階にあります。

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

complex_model_l_v100

complex_model_l と同等のマシンで、NVIDIA Tesla V100 GPU 8 個が追加されています。これらの GPU の利用可能性は、ベータ版の段階にあります。

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

cloud_tpu

1 つの Cloud TPU を含む TPU VM。Cloud TPU の利用可能性は、ベータ版の段階にあります。

グラフィック プロセッシング ユニット(GPU)の詳細については、GPU でのトレーニングをご覧ください。Tensor Processing Unit(TPU)の詳細については、TPU をトレーニング ジョブに使用する方法をご覧ください。

マシンタイプの比較

マシンタイプの具体的な仕様は随時変更される可能性があります。マシンタイプの相対的な能力は、次の表に示す情報を基に比較できます。

マシンタイプ Compute Engine のマシン名 仮想 CPU GPU / TPU メモリ(GB)
standard n1-standard-4 4 - 15
large_model n1-highmem-8 8 - 52
complex_model_s n1-highcpu-8 8 - 7.20
complex_model_m n1-highcpu-16 16 - 14.4
complex_model_l n1-highcpu-32 32 - 28.8
standard_gpu n1-standard-8 8 1(K80 GPU) 30
complex_model_m_gpu n1-standard-16 16 4(K80 GPU) 60
complex_model_l_gpu n1-standard-32 32 8(K80 GPU) 120
standard_p100 n1-standard-8 8 1(P100 GPU) 30
complex_model_m_p100 n1-standard-16 16 4(P100 GPU) 60
standard_v100(ベータ版) n1-standard-8 8 1(V100 GPU) 30
large_model_v100(ベータ版) n1-highmem-8 16 1(V100 GPU) 52
complex_model_m_v100(ベータ版) n1-standard-16 16 4(V100 GPU) 60
complex_model_l_v100(ベータ版) n1-standard-32 32 8(V100 GPU) 120
cloud_tpu(ベータ版) カスタム 8(TPU コア)

次のステップ

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

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

TensorFlow 用 Cloud ML Engine