0

Cloud Machine Learning APIでのカスタム スケール階層の使用について調査しています。

さて、カスタム層を設計する方法が正確にはわかりません! 私は基本的に CIFAR タイプのモデルを使用しており、以下を使用することにしました。

   if args.distributed:
      config['trainingInput']['scaleTier']  = 'CUSTOM'
      config['trainingInput']['masterType'] = 'complex_model_m'
      config['trainingInput']['workerType'] = 'complex_model_m'
      config['trainingInput']['parameterServerType'] = 'large_model'
      config['trainingInput']['workerCount'] = 12
      config['trainingInput']['parameterServerCount'] = 4

    yaml.dump(config, file('custom_config.yaml', 'w'))

しかし、クラスターを適切にディメンション化する方法に関する情報はほとんど見つかりません。そこに「経験則」はありますか?それとも、試してテストする必要がありますか?

よろしくお願いします!

4

1 に答える 1

2

私はいくつかの小さな実験を行ったので、共有する価値があるかもしれません. 私のセットアップは 100% クリーンではありませんでしたが、大まかな考えは正しいと思います。

  • モデルは cifar の例に似ていますが、多くのトレーニング データが含まれています。平均化、減衰勾配、およびドロップアウトを使用します。
  • 「構成」の命名は(うまくいけば)明示的です:基本的に'M{masterCost}_PS{nParameterServer}x{parameterServerCost}_W{nWorker}x{workerCost}'。パラメータ サーバーには、常に「large_model」を使用します。
  • 「速度」は「global_step/s」です
  • 「コスト」は合計 ML ユニットです
  • そして、「global_step/second/ML unit」の数を「効率」と呼びます

ここにいくつかの部分的な結果があります:

          config  cost  speed  efficiency
0             M1     1    0.5        0.50
1  M6_PS1x3_W2x6    21   10.0        0.48
2  M6_PS2x3_W2x6    24   10.0        0.42
3  M3_PS1x3_W3x3    15   11.0        0.73
4  M3_PS1x3_W5x3    21   15.9        0.76
5  M3_PS2x3_W4x3    21   15.1        0.72
6  M2_PS1x3_W5x2    15    7.7        0.51

もっと多くの実験を行う必要があることはわかっていますが、そのための時間がありません。時間があれば、もっと深く掘り下げます。

主な結論は次のとおりです。

  • ハイパーパラメーターの調整を行う前に、使用する構成を決定するためだけに、少量の反復でいくつかのセットアップを試す価値があるかもしれません。

  • 良いことは、バリエーションがかなり限られていることです。0.5 から 0.75 まで、これは 50% の効率の増加であり、重要ですが、爆発的ではありません。

  • 私の特定の問題では、基本的に、大きくて高価なユニットは私の問題にとってはやり過ぎです。私が得ることができる最良の値は、「complex_model_m」を使用することです。

于 2016-10-12T20:41:12.760 に答える