Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Auto parameter optimization option for multi-GPU environment #199

Open
hiroshi-matsuda-rit opened this issue Oct 15, 2021 · 0 comments
Open

Comments

@hiroshi-matsuda-rit
Copy link
Contributor

次の条件から、従来型の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に割り当てるプロセス数

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants