Weitere ähnliche Inhalte Ähnlich wie Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」) (20) Mehr von Preferred Networks (20) Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)3. 自己紹介 - 金子 紘也 (Hiroya Kaneko)
● 2017/4- 株式会社Preferred Networks, Engineering Manager
— Deep Learningの高速化のための計算機基盤
— MN-Coreの開発/検証, MN-Core向けソフトウェアスタックの開発/実活用
● バックグラウンド
● HPC向けインタコネクトの研究@筑波大学(2011-2013)
● 通信キャリア向けネットワーク仮想化(SDN/NFV) @電機メーカ研究所(2013-2017)
● ハードウェア屋さんではない
4. 目次
● PFNにとっての計算能力の位置付け
● 代表的なDeep Learningの高速化手法
● なぜ今プロセッサ開発なのか?
● MN-Coreの概要
● 開発チームの働き方
● 最近の成果
○ Green500における成果
○ DL Workloadにおける成果
○ Simulation WorkloadにおけるFeasibility Study
5. 豊富な計算資源と高度な技術を基盤に複数の事業を創出
PFNを支える技術と事業内容
Computer Vision(コンピュータビジョン) Data Analytics(データ解析)
Navigation(ナビゲーション)
Visual Inspection(外観検査)
Pose(ポーズ推定)
Scene(シーン解析)
Image Segmentation
Anomaly Detection(異常検知)
Optimization(最適化)
Time series data(時系列データ)
Infrastructure (インフラ技術)
Machine Learning and Deep Learning(機械学習と深層学習)
Manufacturing Transportation Bio & Healthcare
Personal Robot Visual Inspection Entertainment
PFN
Technology
Business
Object Detection(物体検出)
8. ● PFNにとっての計算能力の位置付け
● 代表的なDeep Learningの高速化手法
● なぜ今プロセッサ開発なのか?
● MN-Coreの概要
● 開発チームの働き方
● 最近の成果
○ Green500における成果
○ DL Workloadにおける成果
○ Simulation WorkloadにおけるFeasibility Study
目次
9. Deep Learning の高速化
● Scale-out (分散深層学習)
– たくさんのプロセッサをつなげて高速化
● Keywords: データ並列、モデル並列 , 計算と通信
のオーバラップ
● Scale-up (専用アクセラレータ)
– はやいプロセッサを使って高速化
● Keywords: Inference/Training専用アクセラレー
タ
11. Deep Learning の高速化
● Scale-out (分散深層学習)
– たくさんのプロセッサをつなげて高速化
● Keywords: データ並列、モデル並列 , 計算と通信
のオーバラップ
● Scale-up (専用アクセラレータ)
– はやいプロセッサを使って高速化
● Keywords: Inference/Training専用アクセラレー
タ
12. The image was excerptedfrom https://github.com/basicmi/AI-Chip
13. 目次
● PFNにとっての計算能力の位置付け
● 代表的なDeep Learningの高速化手法
● なぜ今プロセッサ開発なのか?
● MN-Coreの概要
● 開発チームの働き方
● 最近の成果
○ Green500における成果
○ DL Workloadにおける成果
○ Simulation WorkloadにおけるFeasibility Study
15. 演算精度について(Training)
● Trainingでは混合精度 (fp16乗算+fp32加算)の活用が進む
— NVIDIA Volta: Tensor Core (4x4の混合積和演算, fp16 matmul, fp32 accumulate)
— Google TPU: BFLOAT16 (brain float)
◆ fp16よりもdynamic rangeが広い
◆ 勾配のunderflow対策
● 最新のH100(Hopper)ではfp8 formatも登場
● Deep learningに最適な数値表現とはなにか?という問題には答えは出ていない
— fp16でもCNN, RNN, GANなどのTrainingがある程度可能であるという報告(arxiv:1905.12322)
— fp8についても研究がいくつか出てきつつある(arxiv:2001.05674)
— 使う観点ではcuDNNなどが対応を始めているが、正しく利用するためにはノウハウが必要
The figure was excerpted from https://cloud.google.com/tpu/docs/bfloat16
16. 演算精度について(Inference)
● Inferenceでは、よりAggressiveな最適化が可能
— Int8, Int4, binary
● 学習済みモデルをターゲットアーキテクチャに対して最適化する
— モデルの量子化 (Quantization)
◆ モデルのN-bit整数化
— モデルの剪定 (Pruning)
◆ 構築済みモデルのSparse化 (主にSpMV Acceleratorとの組み合わせ)
— 小さいモデルへの蒸留 (distillation)
◆ 小さなモデルに教師モデルの分布を学習させる
● Emerging deviceを利用したものも様々提案がある(が、現時点ではまだ
MNISTなどのToy Problemが解ける程度という印象)
20. 深層学習コンパイラ
● グラフIRを入力に、ターゲット依存の最適化を行うコンパイラ
The figure was excerptedfrom Tianqi Chen et al. TVM: An AutomatedEnd-to-End Optimizing Compiler for Deep Learning
https://arxiv.org/abs/1802.04799
● オペレータ単位でプロセッサ専用
の高効率カーネルを定義可能
● 演算のfusionやスケジューリング
、メモリ配置の最適化
● 演算のスケジューリング/メモリ配
置の最適化
● 再計算
— 計算量を増加させることで、メモリ使用
量を削減する
22. 目次
● PFNにとっての計算能力の位置付け
● 代表的なDeep Learningの高速化手法
● なぜ今プロセッサ開発なのか?
● MN-Coreの概要
● 開発チームの働き方
● 最近の成果
○ Green500における成果
○ DL Workloadにおける成果
○ Simulation WorkloadにおけるFeasibility Study
23. MN-Coreの概要
超大規模なSIMD型プロセッサ
Single Instruction, Multiple Data
(単一命令・複数データ)
● 各階層のメモリは陽にプログラムが制御(scratchpad)
● 各階層間では分配、結合、放送、縮約といった複数の転
送モードをサポート
プログラマが陽にすべての演算器の挙動を制御可
能(fully-deterministic architecture)
● 計算グラフの情報などから最適なスケジューリングを時
間空間方向に対して明示的に指示可能
HWとしては以下利点がある
● 1. 制御構造なしの大規模SIMD採用により
回路オーバーヘッド最小化/性能予測の容易
化を実現
● 2. 演算器ローカルな大サイズSRAMにより
実行効率を向上
消費電力 (W、設計値) 500 (4die, 1package合計)
ピーク性能 (TFLOPS、設計値) 32.8 (DP) / 131 (SP) / 524 (HP)
電力性能 (TFLOPS / W、設計値) 0.066 (DP) / 0.26 (SP) / 1.0 (HP)
25. ソフトウェア:ONNX-to-MN-Core Compilerのアーキテクチャ
25
layer 1
layer 2
layer 3
PFVM
PyTorch
Code
Graph / Node / Value
MN-Core
(Assembler)
ONNX
ONNX+
training
Generic
Conv
Tensor
Generic
Move
Vector
Layers
Low-level
Computational Graph
MN-Core
Instructions
グラフの単純化
大域的スケジューリング
計算グラフから徐々に
MN-Core向けコードを生成
スケジューリングおよび
メモリ配置の決定
← ONNX計算グラフ可視化例
(Squeezenetの一部)
レイヤの分離による実装の抽象化・最適化の共通化
28. 目次
● PFNにとっての計算能力の位置付け
● 代表的なDeep Learningの高速化手法
● なぜ今プロセッサ開発なのか?
● MN-Coreの概要
● 開発チームの働き方
● 最近の成果
○ Green500における成果
○ DL Workloadにおける成果
○ Simulation WorkloadにおけるFeasibility Study
30. MN-Coreの開発
ハードウェア開発
● アーキテクチャ検討
● 詳細仕様検討
● 論理設計
● 物理設計
● 検証
ソフトウェア開発
● 機能/精度検証用ソフトウェア実装
● 記述性確認用アプリケーションの作成
● ランタイム/コンパイラの先行開発
システムとしての実装
● ボード/サーバの設計
● 工事スケジュール
● システムの初期検証
● 様々な仕事があるが、ハードウェア/ソフトウェアエンジニアで明確な区切りが
あるわけではない
— 時期によってそれぞれ自身の得意分野を活かしながら業務が移り変わっている
◆ ex. 既存のプロセッサ上で高速なカーネルを書くのが得意な人は、チップができるまでは自
分が使うチップの仕様検討をしていたりする
(一例): 私が実作業していたところ
● コンパイラの開発
● GREEN500 Benchmark開発
● モデル検討/社内での実利用
● 社内k8sとの統合
● Monitoring
プロセッサ tapeoutまで
プロセッサES入手後
● 問題解析
● 次期チップの検討
32. 目次
● PFNにとっての計算能力の位置付け
● 代表的なDeep Learningの高速化手法
● なぜ今プロセッサ開発なのか?
● MN-Coreの概要
● 開発チームの働き方
● 最近の成果
○ Green500における成果
○ DL Workloadにおける成果
○ Simulation WorkloadにおけるFeasibility Study
34. PFN Confidential
Improvements MN-Core Environment with Green500 Challenge
34
Our Journey of Green500 Challenge
● 2022/Juneから2021/Novまで世界最高クラスの電力
性能を達成
● 定期的なチャレンジ実施によって、MN-Coreの最適
化に関する知見を多く貯めることができた
2020/June 2020/Nov. 2021/June 2021/Nov 2022/June
Rank 1 2 1 1 5
Energy Eff. 21.11GF/W 26.04GF/W 29.70GF/W 39.38GF/W 40.90GF/W
Exec. Eff.(*) 41.33% 52.68% 58.08% 64.35% 65.09%
MI250X
(AMD)
37. 目次
● PFNにとっての計算能力の位置付け
● 代表的なDeep Learningの高速化手法
● なぜ今プロセッサ開発なのか?
● MN-Coreの概要
● 開発チームの働き方
● 最近の成果
○ Green500における成果
○ DL Workloadにおける成果
○ Simulation WorkloadにおけるFeasibility Study
38. ● PFNには様々なDeep Learning Workloadが存在している
● 何か特定のWorkloadだけが早いのではなく、モデルの変更やデータセットの変
更に対して堅牢かつ平均的に高速に動作する事をターゲットにコンパイラを開発
○ ベンチマーク的な性能だけでなく、実応用における試行錯誤に利用できることが重要
● すでに社内ではk8s経由でMN-Coreを全社員が利用できる状況にある
○ MN-Coreチームのサポートなしに実際にR&DにMN-Coreを使える状況までソフトウェアスタックや
インフラの整備が進みつつある
○ 実案件への応用も実際に進んでいる
MN-Coreを用いたDeep Learning Workload
40. 目次
● PFNにとっての計算能力の位置付け
● 代表的なDeep Learningの高速化手法
● なぜ今プロセッサ開発なのか?
● MN-Coreの概要
● 開発チームの働き方
● 最近の成果
○ Green500における成果
○ DL Workloadにおける成果
○ Simulation WorkloadにおけるFeasibility Study
41. ● MN-Coreの優れた特性をDL以外の計算に活用するためにJAXの活用を模索
○ JAXであれば計算グラフが取得できる && JIT前提のコードが多いため良い特性を持つコードが多い
Simulation WorkloadにおけるFeasibility Study
● JAX=「高性能な自動微分付きNumpy」
○ Differentiable: Autograd
○ High-performance: XLA
○ GPUだけでなくTPUなどのbackend実装
● 様々なシミュレーション実装
○ JAX-CFD: “Computational Fluid Dynamics
in JAX”
○ JAX-MD: “Differentiable, Hardware
Accelerated, Molecular Dynamics”
● DL Framework on JAX
○ Haiku: “JAX-based neural network library”
○ Flax: “A neural network library and
ecosystem for JAX designed for flexibility”
JIT compilation
for high performance
42. ● MN-Coreの優れた特性をDL以外の計算に活用するためにJAXの活用を模索
○ JAXであれば計算グラフが取得できる && JIT前提のコードが多いため良い特性を持つコードが多い
Simulation WorkloadにおけるFeasibility Study
● JAX=「高性能な自動微分付きNumpy」
○ Differentiable: Autograd
○ High-performance: XLA
○ GPUだけでなくTPUなどのbackend実装
● 様々なシミュレーション実装
○ JAX-CFD: “Computational Fluid Dynamics
in JAX”
○ JAX-MD: “Differentiable, Hardware
Accelerated, Molecular Dynamics”
● DL Framework on JAX
○ Haiku: “JAX-based neural network library”
○ Flax: “A neural network library and
ecosystem for JAX designed for flexibility”
JIT compilation
for high performance
😊 Use mnjit() to utilize MN-Core
43. ● JAX to MN-Coreの実装
○ JAXをGPU同様にTensorflow HLOにlowering
○ HLO to ONNX(for MN-Core)をPFN独自で実装
し、DL向けコンパイラスタックと同様のバッ
クエンドで命令生成
Simulation WorkloadにおけるFeasibility Study
Harmonic Minimization
(512 particles in total)
2D Channel Flow
45. 45
• 計算機インフラはDeep Learningをコアとする研究開発の競争力の源泉の一つ
– Deep Learningが多量の計算能力を必要とするだけでなく、Deep Learningというワークロード自
体の特性を生かした新しいアーキテクチャが様々開発されている
• PFNでは計算機インフラの研究開発に多くの投資を行っている
– 複数のコンピュータを並べてScale-out
– 高速なアクセラレータ(MN-Core)を開発し単一ノードの性能をScale-up
• PFN独自設計のDeep Learning向けアクセラレータ「MN-Core」が電力性能比の世界ランキ
ングで複数回一位を獲得し、Deep Learning向け/汎用ワークロード向けの利活用も実際に進
んでいる
計算機を1から作るのは楽しい
さいごに