Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

分析コンペ用のオンプレマシン構築について

2,252 views

Published on

分析コンペLT会 (2019/11/30) の発表資料

Published in: Engineering
  • Be the first to comment

  • Be the first to like this

分析コンペ用のオンプレマシン構築について

  1. 1. 分析コンペ用の オンプレマシン構築について mhiro2 分析コンペLT会 2019/11/30
  2. 2. 自己紹介 Masaaki Hirotsu / mhiro2 MLOps Engineer @ GiXo (2019/08~) • ML のサイクルを円滑に回すための基盤づくり • GCP 上での ML 基盤の設計・構築が現在の主業務 (k8s, Airflow, MLflow, … etc.) Kaggle • 2018年10月~(登録は2014年) • 最近サボリ気味… @mhiro2_1127 mhiro2 2
  3. 3. 前置き:本LTのモチベーション  Kaggle の GPU カーネルの制限が厳しくなった (30h/week) ことにより、 オンプレマシンの需要が高まっている? • 今後更に制限が厳しくなる可能性もゼロではない?  本発表の内容は私個人の意見です • 主観的な話が多いのでご理解ください  当たり前の話が多いかもしれません • 初心者向けのつもり 3 無料で無制限にP100使えると思った!?残念!! ※私の勝手なイメージで実際の発言ではありません 某k氏
  4. 4. 本日話すこと 1. オンプレでマシンを構築する意義 2. CPUの選び方 3. GPUの選び方 4
  5. 5. 1. オンプレでマシンを構築する意義 5
  6. 6. 分析コンペに高スペックマシンは必須?  なくても(コンペを選べば)勝てる人は勝てる • ノートPCで金メダルを取る人もいる • 学習・推論全てを Kaggle 上でやるコンペがなくなってきてハードルは上がり気味  個人的には以下が重要だと思っている • 参加できるコンペの幅が広がる • 特徴量の数が増やせる、画像サイズを大きくできる • 単純に試行回数が増やせる • 他の参加者に実力と関係ない所でハンデを負わずにすむ • ある程度非効率で雑な実装でもとりあえず回せる  とは言えリソースを宝の持ち腐れにしない知識・実装力も必要 6
  7. 7. なぜオンプレミスか 7  クラウドは環境構築やスペック変更が楽だが、高くつきやすい • 特に GPU を使いだすと数万円/月とかはざらにある (所詮オンゲーなので、賞金取れないのに月数万円の支出は個人的には厳しい) • 短期的には安く済む場合もあるが、長く使えば確実にオンプレのほうが安い  オンプレをメインで使う個人的な理由 • いつでも電気代だけで使えるマシンがあることによる安心感 • 構成を理解することでボトルネックを把握しやすくなる • shake down してもクラウドで数万使うより傷は浅い(?) • 最悪 Kaggle に飽きても何かには使える、売れる • 前職は JTC なのでクラウドの補助とか当然なかった
  8. 8. 2. CPUの選び方 8
  9. 9. CPUのスペックについて(おさらい)  とりあえず買うときに性能面で最低限見るべき項目 • コア数/スレッド数 • 多いほど並列処理できる • クロック周波数 • 高いほど高速に処理できる • オーバークロックできるものもある 9
  10. 10. CPUの選び方(コンペ視点)  個人的にはコア数/スレッド数が最重要 • テーブルコンペ • コア数が LightGBM の学習速度に直結 (num_threds は物理コア数指定を推奨) • 画像コンペ • GPU に比べると優先度は低いが、重めの augmentation をかけるような場合は CPU が貧弱だと GPU を活かしきれない(NVIDIA DALIとかもあるが) • data loader は基本的に CPU の並列処理  どれを買うべきか? • 最近は Intel より AMD が優位だが、Linux 前提なら Intel のほうが敷居は低い • 自作スキルに自信があるなら、10コア以上も数万円で買える中古 Xeon は個人的に おすすめ(ES 品とかもあるので自己責任で) • GPU と違って数年前のモデルと性能にそこまで差がない 10
  11. 11. 補足:メモリとのバランスも重要  Python は GIL の制約があるため、基本的にはマルチプロセスで 並列化することになる = プロセス単位でメモリが必要 • 並列数を増やすほど基本的には要求されるメモリの量が増える (プロセス間のデータのやり取りは pickle 化処理が必要) • Joblib の sharedmem など共有メモリを使う方法も一応色々あるにはあるが、 有効に使える場面は限定的? • (NumPy のようなマルチスレッドで動く外部モジュールの演算は例外)  メモリは積めるだけ積んでおくのが吉 • メモリは後からでも追加・変更しやすいパーツなので、1枚あたりの容量が 大きいものを買っておくほうがスペック変更は容易 (クロック、レイテンシ、ランク、チャンネル数とかも考慮すべきだが省略) • マザーボード側で対応メモリの仕様や上限があるので注意 • 最近は一時期の高騰から考えるとかなり安くなった 11
  12. 12. 3. GPUの選び方 12
  13. 13. 2080 Ti ってのを買っておけばいいらしい!調べてみよう🔍 13 GPUの選び方、の前に…
  14. 14. 2080 Ti ってのを買っておけばいいらしい!調べてみよう🔍 14 GPUの選び方、の前に…
  15. 15. 15 GPUの選び方、の前に… 2080 Ti ってのを買っておけばいいらしい!調べてみよう🔍
  16. 16. GPUの選び方  チップ • 適当に抜粋  メーカー • 同じチップなら中身は同じなので半分好み(?) • オーバークロックされていたり、ファンが違ったり、出力端子、保証の差など  排気仕様 • 内排気 or 外排気 (or 水冷) • シングル GPU 構成なら内排気がベター 16 内排気外排気 GeForce TITAN Quadro Tesla Pascall GTX 10XX TITAN X TITAN Xp P[1,2,4,5,6]000, GP100 P100, P40 P4 (推論用) Volta TITAN V GV100 V100 Turing RTX 20XX GTX 16XX TITAN RTX RTX [4,5,6,8]000 T4 (推論用)
  17. 17. どれを買うべきか  今から Turing 世代以外を買うメリットはほぼないと思われる • 中古 GTX 1080 Ti (11GB) なら5~6万円くらいで買えるが、混合精度が活きない  現実的な選択肢 ✓ Titan RTX 24GB(学割28万円、個人輸入30万円、正規購入33万円程度) • お金に余裕があるなら、これ買っておけば間違いないはず ✓ RTX 2080 Ti 11GB(13万円程度~) • とりあえず無難な選択 ✓ 2080/2080 SUPER 8GB(8万円程度~) • 個人的にはここが最低ライン 17
  18. 18. オンプレでGPUを使う上で知っておきたいこと  GPU の温度に気をつける • 温度が上がりすぎるとサーマルスロットリングによって動作クロックが下げられる • 90℃を超えるような場合は PC の設置場所やエアフローを見直したほうが良い  コンペ環境構築 • nvidia-container-toolkit (nvidia-docker) は絶対使うべき • NVIDIA GPU CLOUD (NGC) の docker image を使えば、コンペ用途はほぼカバー できるはず 18
  19. 19. 補足: 複数GPU/複数ノード  複数 GPU を考える際に気をつけること • 内排気モデル2枚構成の場合、上の GPU の排気が下の GPU を直撃してしまうので、 最低1枚は外排気モデルを使う方が望ましい場合が多い • NVLink を使いたいなら同じ GPU 2枚にする (ブリッジ接続による NVLink は GPU 間通信が PCIe より速くなるだけで、 VRAM 2倍になったりはしないはず) • 必要な電源容量や月々の電気代は言うまでもなく上がる  複数ノード(クラスタ構成)は更にハードルが上がる • Horovod や ChainerMN などマルチノードで学習させるコードを書くこと自体は そこまで難しくないが、InfiniBand などの高速な IF がないと NW がボトルネックになる • 個人で手を出す領域ではない気がする 19
  20. 20. まとめ 20
  21. 21. まとめ  オンプレも検討してみては? • 人によってはクラウドより効率的にコンペに取り組めるかも? • クラウドとの使い分けが大事  結局どのパーツも重要になってくるので、お財布と相談して妥協点を 見つけるのが重要 • 自分の買いたいものを買うのが正解 21

×