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

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

構成の指定

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

gcloud

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

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

trainingInput:
  scaleTier: CUSTOM
  masterType: complex_model_m

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

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

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

gcloud ml-engine 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 \
        -- \
        --user_first_arg=first_arg_value \
        --user_second_arg=second_arg_value

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

Python

スケール階層の識別子とマシンタイプは、ジョブ構成の TrainingInput オブジェクトで指定します。

次の例は、カスタム処理クラスタを持つジョブの Job 表現を作成する方法です。

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

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

Cloud ML Engine のスケール階層
BASIC

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

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

CUSTOM CUSTOM 階層はあらかじめ設定された階層ではなく、独自のマシン仕様を使用するための階層です。
  • マスターノードに使用するマシンのタイプを指定するために TrainingInput.masterType を設定する必要があります。scikit-learn と XGBoost でサポートされているのはこの設定のみです。以下で説明するマシンタイプをご覧ください。

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

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

  • スケール階層(scaleTier)を CUSTOM に設定します。
  • マスター ワーカーのマシンタイプを設定します(masterType)。
  • scikit-learn と XGBoost では分散トレーニングがサポートされていないため、parameterServerTypeworkerType は指定しないでください。

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

Compute Engine のマシンタイプ

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

直接使用できる 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 マシンタイプで提供されるリソースをご覧ください。

マシンタイプの比較

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

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

Cloud ML Engine のマシンタイプ

マシンタイプ 仮想 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

Compute Engine のマシンタイプ

マシンタイプ 仮想 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

次のステップ

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

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

scikit-learn と XGBoost の Cloud ML Engine