Weitere ähnliche Inhalte
Ähnlich wie AWS Webinar 20201224 (20)
Kürzlich hochgeladen (10)
AWS Webinar 20201224
- 1. p4d.24xlargeのすゝめ
~ 圧 倒 的 コ ス パ を 誇 る G P U イ ン ス タ ン ス ~
2 0 2 0 . 1 2 . 2 4 1 1 : 2 5 ~ 1 1 : 5 0 A W S W e b i n a r 来 栖 川 電 算 取 締 役 山 口 陽 平
AWSの最新GPUインスタンス Amazon EC2 P4d - マシンラーニングとHPCに最適!
- 4. 山口陽平 何でも学び何でもやる人
4
有限会社来栖川電算 創業者・取締役・最高技術責任者
職務 全体 ビジョン・ビジネス・資金・設備・人員・制
度・文化・パートナーシップの計画・遂行
個別 企画,調査,研究,開発,運用,指導,教育,
広報,採用,…
略歴 2001 名古屋工業大学 知能情報システム 卒業
2003 名古屋工業大学 電気情報工学 修士課程 修了
有限会社来栖川電算 設立
IPA 未踏ソフトウェア創造事業 採択
2012 名古屋工業大学 情報工学 博士課程 退学
2013 Mashup Awards 9 優秀賞 受賞
- 5. 仕事 = 趣味 何にでも面白みを見出す人
5
休日も論文読み・プログラミング・コミュニティ活動・講演・執筆
興味 ロボット,AI,UI,UX
専門 機械学習,信号処理,記号処理,プログラミング言
語,コンパイラ,データベース,ソフトウェアアー
キテクチャ,ソフトウェアプロセス
得意 分析,抽象化,高速化,省資源化,並列化,分散化
@melleo1978
- 9. ハイレベルな人材
• 最先端の AI・ML 技術
– 文字認識,物体認識,行動認識,空間復元
• 限界性能を引き出す優れた実装技術
– 機械学習・コンパイラ・データベースなどのアルゴリズムやバ
イナリハックを駆使した高精度化・高速化・省資源化・並列
化・分散化
• 高品質なソフトウェアを実現する技術
– アーキテクチャ・プロセスへの深い理解に基づく設計と計画
9
未踏採択者,コンテスト受賞者,MVP 受賞者,OSS 貢献者,…
- 11. 機械学習 名古屋
• 勉強会 開催:隔月 対象:初心者(非技術者も含む)
– アルゴリズム紹介・事例紹介・ハンズオン
• 研究会 開催:毎月 対象:研究者,技術者
– 機械学習関連の論文紹介・記事紹介
– 来栖川電算の研究者だけでなく日本各地の大学院生も参加
11
https://machine-learning.connpass.com/
宣伝
- 19. 研究にまつわる課題
• こんな実験が “めっちゃ” たくさんある
– 複数の工程からなる微妙に設定が異なる実験
– デカくて時間がかかる実験
• こんなことが “よく” 起きる
– 手作業が挟まると取り違える。
– 後で確認(やり直し)したくなる。
– たまに死ぬので途中から再開したくなる。
⇒実験パイプラインのコード化が重要
19
たくさんの絡み合うデカい実験を扱えるツールがない!
- 23. 2020 年 5 月 DGX A100 登場!
23
2.5 倍の速度で半額、消費電力は 65%、なんかめちゃ安くね?
DGX-2 DGX-A100
GPU 計算速度 2 PF 5 PF
GPU メモリ容量 512 GB 320 GB
GPU 間通信速度 300 GB/s 600 GB/s
本体消費電力 10,000 W 6,500 W
本体価格 399,000 $ 199,000 $
- 26. 評価方法
評価用プログラム
画像セグメンテーションのための深層モデル(dilated conv や
separable conv などでできた標準的 CNN)を分散学習するプログ
ラム(TensorFlow 1 系 + Horovod ※Uber製 or Strict ※自社製)
26
評価プログラムで各ハードウェアのスループットを計測・比較する
評価対象ハードウェア GPU 種類 GPU 数 GPU 接続方式 GPU 接続構造
DGX-1 ※1 P100 16GB 8 GPU NVLink Hybrid Cube Mesh
p3.16xlarge V100 16GB 8 GPU NVLink Hybrid Cube Mesh
p3dn.24xlarge V100 32GB 8 GPU NVLink Hybrid Cube Mesh
p4d.24xlarge A100 40GB 8 GPU NVLink Full Connection
※1・・・あるプロジェクトで3台使っている。今回これを更新できると嬉しい。
- 27. Horovod
27
凄く手軽な分散学習用フレームワーク ※ TF1 系勢にお勧め
1. NGC コンテナを使う。
2. Dockerfile に「pip install horovod」を追加する。
3. 次の修正が入ったコードを mpirun 経由で実行する。
# MonitoredTrainingSessionを使わない場合に、全GPUでモデルの重みを共有する方法(最初に1回だけやれば良い)の参考
session.run(tf.global_variables_initializer())
if arg_option.input_database != "":
model.restore(session, arg_option.saver_format_version, arg_option.input_database)
if arg_option.hvd:
session.run(hvd.broadcast_global_variables(0)) # これで全GPUに重みが共有される
参考にしたサイト ⇒ https://github.com/horovod/horovod/blob/master/docs/tensorflow.rst
- 29. 単体性能比較:計算方式別
• V100 以降は AMP(混合精度計算へ近似する機能)で速くなる。
• 最小容量の GPU に合わせてバッチサイズ(10 事例)を設定したた
め、V100 32GB と A100 40GB は本来の性能を発揮できていない。
29
A100 1GPU ≒ V100 1GPU × 1.6 ≒ P100 1GPU × 6.2
0.0 事例/秒
10.0 事例/秒
20.0 事例/秒
30.0 事例/秒
40.0 事例/秒
50.0 事例/秒
60.0 事例/秒
1GPU+FP32 1GPU+AMP
DGX-1 (P100 16GB) p3.16xlarge (V100 16GB) p3dn.24xlarge (V100 32GB) p4d.24xlarge (A100 40GB)
- 30. 30
ハードウェア 使用資源 計算方式 分散方式 バッチサイズ スループット
DGX-1 (P100 16GB) 1 GPU FP32 - 10 事例 8.3 事例/秒
p3.16xlarge (V100 16GB) 1 GPU FP32 - 10 事例 13.9 事例/秒
p3dn.24xlarge (V100 32GB) 1 GPU FP32 - 10 事例 13.3 事例/秒
p4d.24xlarge (A100 40GB) 1 GPU FP32 - 10 事例 32.3 事例/秒
DGX-1 (P100 16GB) 1 GPU AMP - 10 事例 ×
p3.16xlarge (V100 16GB) 1 GPU AMP - 10 事例 31.8 事例/秒
p3dn.24xlarge (V100 32GB) 1 GPU AMP - 10 事例 30.4 事例/秒
p4d.24xlarge (A100 40GB) 1 GPU AMP - 10 事例 51.2 事例/秒
- 32. 32
ハードウェア 使用資源 計算方式 分散方式 バッチサイズ スループット
p4d.24xlarge (A100 40GB) 1 GPU AMP - 10 事例 51.2 事例/秒
p4d.24xlarge (A100 40GB) 1 GPU AMP - 15 事例 58.1 事例/秒
p4d.24xlarge (A100 40GB) 1 GPU AMP - 17 事例 58.2 事例/秒
p4d.24xlarge (A100 40GB) 1 GPU AMP - 32 事例 57.8 事例/秒
p4d.24xlarge (A100 40GB) 1 GPU AMP - 40 事例 50.9 事例/秒
- 33. 分散性能比較:分散方式別
• Horovod を使えば高い分散効率を得られる。精度に影響あるかも?
• Strict(精度劣化しない方式,弊社製)では分散効率が悪い。P100
は計算が律速だったが、A100 は通信が律速になった。調整が要る。
33
A100 8GPU ≒ A100 1GPU × 7.0 ≒ V100 8GPU × 1.6 ≒ P100 8GPU × 5.7
0.0 事例/秒
50.0 事例/秒
100.0 事例/秒
150.0 事例/秒
200.0 事例/秒
250.0 事例/秒
300.0 事例/秒
350.0 事例/秒
400.0 事例/秒
1GPU 8GPU+Strict 8GPU+Horovod
DGX-1 (P100 16GB) p3.16xlarge (V100 16GB) p3dn.24xlarge (V100 32GB) p4d.24xlarge (A100 40GB)
- 34. 34
ハードウェア 使用資源 計算方式 分散方式 バッチサイズ スループット
p4d.24xlarge (A100 40GB) 1 GPU AMP - 40 事例 50.9 事例/秒
DGX-1 (P100 16GB) 8 GPU FP32 Strict 40 事例 47.1 事例/秒
p3.16xlarge (V100 16GB) 8 GPU AMP Strict 40 事例 98.8 事例/秒
p3dn.24xlarge (V100 32GB) 8 GPU AMP Strict 40 事例 104.7 事例/秒
p4d.24xlarge (A100 40GB) 8 GPU AMP Strict 40 事例 137.0 事例/秒
DGX-1 (P100 16GB) 8 GPU FP32 Horovod 40 事例 62.0 事例/秒
p3.16xlarge (V100 16GB) 8 GPU AMP Horovod 40 事例 222.2 事例/秒
p3dn.24xlarge (V100 32GB) 8 GPU AMP Horovod 40 事例 224.7 事例/秒
p4d.24xlarge (A100 40GB) 8 GPU AMP Horovod 40 事例 354.0 事例/秒
- 35. 分散性能比較:バッチサイズ別
• バッチサイズを大きくすると分散性能が改善するとは言えない。
• A100 は V100 よりもバッチサイズによる性能の変動幅が大きい。
Tensor Core が使われる条件を理解しきれていないので探索が要る。
35
A100 8GPU ≒ 8.6 × A100 1GPU ≒ 1.8 × V100 8GPU ≒ 6.6 × P100 8GPU
0.0 事例/秒
100.0 事例/秒
200.0 事例/秒
300.0 事例/秒
400.0 事例/秒
1GPU+40事例 8GPU+40事例 8GPU+80事例 8GPU+120事例 8GPU+256事例 8GPU+320事例
DGX-1 (P100 16GB) p3.16xlarge (V100 16GB) p3dn.24xlarge (V100 32GB) p4d.24xlarge (A100 40GB)
分散方式 : Horovod
- 36. 36
ハードウェア 使用資源 計算方式 分散方式 バッチサイズ スループット
p4d.24xlarge (A100 40GB) 1 GPU AMP - 40 事例 50.9 事例/秒
DGX-1 (P100 16GB) 8 GPU FP32 Horovod 40 事例 62.0 事例/秒
p3.16xlarge (V100 16GB) 8 GPU AMP Horovod 40 事例 222.2 事例/秒
p3dn.24xlarge (V100 32GB) 8 GPU AMP Horovod 40 事例 224.7 事例/秒
p4d.24xlarge (A100 40GB) 8 GPU AMP Horovod 40 事例 354.0 事例/秒
DGX-1 (P100 16GB) 8 GPU FP32 Horovod 80 事例 65.8 事例/秒
p3.16xlarge (V100 16GB) 8 GPU AMP Horovod 80 事例 236.7 事例/秒
p4d.24xlarge (A100 40GB) 8 GPU AMP Horovod 80 事例 390.2 事例/秒
p3.16xlarge (V100 16GB) 8 GPU AMP Horovod 120 事例 236.2 事例/秒
p3dn.24xlarge (V100 32GB) 8 GPU AMP Horovod 120 事例 236.2 事例/秒
p4d.24xlarge (A100 40GB) 8 GPU AMP Horovod 120 事例 436.4 事例/秒
p3.16xlarge (V100 16GB) 8 GPU AMP Horovod 256 事例 231.7 事例/秒
p4d.24xlarge (A100 40GB) 8 GPU AMP Horovod 256 事例 436.8 事例/秒
p4d.24xlarge (A100 40GB) 8 GPU AMP Horovod 320 事例 390.2 事例/秒
- 37. 分散性能比較:バッチサイズ別
• バッチサイズを大きくすると分散性能が改善するとは言えない。
• A100 は V100 よりもバッチサイズによる性能の変動幅が大きい。
Tensor Core が使われる条件を理解しきれていないので探索が要る。
37
A100 8GPU ≒ 7.9 × A100 1GPU ≒ 2.7 × V100 8GPU ≒ 8.6 × P100 8GPU
0.0 事例/秒
100.0 事例/秒
200.0 事例/秒
300.0 事例/秒
400.0 事例/秒
1GPU+40事例 8GPU+40事例 8GPU+80事例 8GPU+120事例 8GPU+256事例 8GPU+320事例
DGX-1 (P100 16GB) p3.16xlarge (V100 16GB) p3dn.24xlarge (V100 32GB) p4d.24xlarge (A100 40GB)
分散方式 : Strict
- 38. 38
ハードウェア 使用資源 計算方式 分散方式 バッチサイズ スループット
p4d.24xlarge (A100 40GB) 1 GPU AMP - 40 事例 50.9 事例/秒
DGX-1 (P100 16GB) 8 GPU FP32 Horovod 40 事例 47.1 事例/秒
p3.16xlarge (V100 16GB) 8 GPU AMP Horovod 40 事例 98.8 事例/秒
p3dn.24xlarge (V100 32GB) 8 GPU AMP Horovod 40 事例 104.7 事例/秒
p4d.24xlarge (A100 40GB) 8 GPU AMP Horovod 40 事例 137.0 事例/秒
DGX-1 (P100 16GB) 8 GPU FP32 Horovod 80 事例 50.5 事例/秒
p3.16xlarge (V100 16GB) 8 GPU AMP Horovod 80 事例 97.7 事例/秒
p4d.24xlarge (A100 40GB) 8 GPU AMP Horovod 80 事例 131.4 事例/秒
p3.16xlarge (V100 16GB) 8 GPU AMP Horovod 120 事例 97.3 事例/秒
p3dn.24xlarge (V100 32GB) 8 GPU AMP Horovod 120 事例 102.9 事例/秒
p4d.24xlarge (A100 40GB) 8 GPU AMP Horovod 120 事例 135.6 事例/秒
p3.16xlarge (V100 16GB) 8 GPU AMP Horovod 256 事例 214.6 事例/秒
p4d.24xlarge (A100 40GB) 8 GPU AMP Horovod 256 事例 403.8 事例/秒
p4d.24xlarge (A100 40GB) 8 GPU AMP Horovod 320 事例 171.0 事例/秒
- 41. まとめ ※来栖川電算のモデルでの結論
• 圧倒的にコスパがいい
• まだまだ伸びしろがある
– A100 は、バッチサイズによ
る性能の変動幅が大きい、通
信が律速になりやすい、ので
調整が要る。
– 組み合わせ(モデル・計算方
式・分散方式)で精度劣化す
る恐れがあるので対策が要る。
41
3日 (P100 8GPU) が半日 (A100 8GPU) になるだけでも導入効果が高い
A100 8GPU ≒ V100 8GPU × 1.7 ~ 1.8
A100 8GPU ≒ P100 8GPU × 6.3 ~ 6.6
A100 8GPU ≒ A100 1GPU × 7.0 ~ 8.7
V100 8GPU ≒ A100 1GPU × 4.4 ~ 4.7
P100 8GPU ≒ A100 1GPU × 1.2 ~ 1.3
A100 1GPU ≒ V100 1GPU × 1.6
A100 1GPU ≒ P100 1GPU × 5.7
p4d.24xlarge (A100 40GB) 32.7726 $/h
p3dn.24xlarge (V100 32GB) 31.2120 $/h
- 42. 結論:買います!
• DGX A100:3,000 万円
– 本体:2,000万円,保守3年:400万円,電気代3年:600万円
※故障してから復旧まで使えない。社員の対応コストもかかる。
※3年以上使えるが、3年後の新しいマシンの方が消費電力あた
りの計算速度が高いので得しない可能性がある。
• p4d.24xlarge 3年リザーブドスタンダード:3000 万円
※故障したら再起動するだけで直ぐに復旧できる。追加も簡単。
⇒ 結論:クラウドのがいいね!
42
以下の理由により、DGX A100 ではなく p4d.24large に決定した
- 64. DNN compiler
DNNの推論を 10 ~ 1000 倍も高速化
重みや活性の量子化・スパース化、計算の共有などの
様々な手法で DNN を近似し、高速化・省資源化され
た実行形式(Linux・Android・iOS)へ変換。
64
- 69. 役職 研究者 開発者 デザイナ アノテータ その他 合計
役員・正社員 11.2 % 11.1 % 0.1 % 3.0 % 1.4 % 26.7 %
アルバイト/即戦力枠 5.5 % 4.1 % 1.4 % 15.8 % 0.7 % 27.4 %
アルバイト/育成枠 0.7 % 0.7 % 0.0 % 0.0 % 0.0 % 1.4 %
アルバイト/試用枠 0.0 % 0.7 % 0.0 % 0.0 % 0.0 % 0.7 %
パートナー 0.0 % 4.1 % 0.0 % 39.0 % 0.7 % 43.8 %
合計 17.3 % 20.7 % 1.4 % 57.8 % 2.7 % 100.0 %
柔軟な体制
69
ワンストップ体制を支えるために様々な技術者がバランスよく在籍