ginza icon indicating copy to clipboard operation
ginza copied to clipboard

Auto parameter optimization option for multi-GPU environment

Open hiroshi-matsuda-rit opened this issue 3 years ago • 0 comments

次の条件から、従来型のtok2vecモデルとtransformersモデルとで異なるマルチプロセス戦略を取りたい。

  • tok2vec
    • CPU処理時
      • 単一コアを100%占有
    • GPU処理時
      • GPU占有率は20%程度
      • GPUメモリは400MBを専有
      • CPUは1コアを100%で専有
      • CPU(E5-2660 v3)単一スレッドに対してRTX8000は2倍速
  • transformers
    • CPU処理時
      • 全コアのCPUタイムの約半分を占有
    • GPU処理時
      • GPU占有率は17%程度
      • GPUメモリは1.8GBを専有
      • CPUは1コアを100%で専有
      • CPU(E5-2660 v3 x 2 = 40スレッド)に対してRTX8000は3倍速

モデルと利用可能なGPU数との組み合わせで類型化してみます。

  • GPUなし
    • tok2vec
      • マルチプロセス化によりほぼリニアに高速化が可能
      • Many Core CPUでは並列度はメモリで律速される場合がある
    • transformers
      • 独自のマルチプロセス化により2倍程度は高速化可能
  • GPU1台
    • tok2vec
      • 並列度はGPU処理帯域で律速 = 4並列程度が限界 = CPU単一プロセスの8倍程度が限界
      • CPUが8コア以上の場合はGPUを用いないマルチプロセス化の方が効果が高い
      • GPUマシンのCPUコア数は普通はもっと多いものを使うことが多い
    • transformers
      • 並列度はGPU処理帯域またはGPUメモリ容量で律速 = 5並列程度が限界
  • GPU2台以上
    • tok2vec
      • CPUコア数 >= 8 x GPU台数の場合はGPUを用いないマルチプロセス化の方が効果が高い
    • transformers
      • 並列度はGPU台数 x 5またはCPUコア数のいずれかで律速

上記をふまえて、現在のマルチプロセスオプションに加えて、さらに次の機能の追加を検討したいと思います。

  • マルチGPU環境においてGiNZAで使用するGPUの指定(複数可)
  • 1つのGPUに割り当てるプロセス数

一方、上記のような複雑なパラメータの組み合わせをユーザが使い分けることはかなり難しいため、 利用中の環境に応じて適切に並列処理パラメータを自動設定するモードも検討したいと思います。

hiroshi-matsuda-rit avatar Oct 15 '21 16:10 hiroshi-matsuda-rit