SlideShare a Scribd company logo
2019/08/28
DAシンポジウム 1A招待講演
深層学習モデル 高 な
Training/Inference ため
HW/SW技術
Hiroya Kaneko @Preferred Networks
今日話す内容
• PFNについて
• 深層学習と
• 深層学習における計算・ワークフロー
• Deep Learning 高 化
– ソフトウェア 視点から
– ハードウェア 視点から
• MN-Core 開発について
• まとめ
今日話す内容
• PFNについて
• 深層学習と
• 深層学習における計算・ワークフロー
• Deep Learning 高 化
– ソフトウェア 視点から
– ハードウェア 視点から
• MN-Core 開発について
• まとめ
株式会社Preferred Networks (PFN)
• 設立:2014年3月
• 本社:東京都千代田区大手町(日本)
• Preferred Networks America, Inc.:カリフォルニア州バークレー(米国)
• 取締役:西川 徹、岡野原 大輔、奥田 遼介
• 従業員数:約250名(2019年4月時点)
• ミッション:IoT時代に向けた新しいコンピュータを創 する
あらゆるモノに知能をもたせ、分散知能を実現する
• 事業内容:IoT + 分散機械学習
交通システム、製 業、バイオヘルスケア
7
@CEATEC JAPAN 2018 Autonomous Tidying-up Robot System
https://projects.preferred.jp/tidying-up-robot/
x2
今日話す内容
• PFNについて
• 深層学習と
• 深層学習における計算・ワークフロー
• Deep Learning 高 化
– ソフトウェア 視点から
– ハードウェア 視点から
• MN-Core 開発について
• まとめ
9
ディープラーニング(深層学習)と
● 層が深く、幅も広いニューラルネットワーク
を利用した機械学習手法 一手法
● 2012年 大ブレーク以来、研究コミュニティ
みならず産業界に多く使われてきた
● 画像認識、音声認識、強化学習、自然言語処理
などで劇的な精度向上を果たし、そ 多くが既に実用化されている
2014年 一般画像認識コンテストで優勝した
22層からなる GoogLeNet 例 [Google 2014]
*http://memkite.com/deep-learning-bibliography/
10
深層学習 = 表現学習、一貫学習(end-to-end学習)
● データをど ように表現するか(表現学習)
● 全モジュールを誤差逆伝播法で一貫して学習
— モジュール毎 局所最適化 問題がない
— 信用割り当て問題(誰に間違った責任があるか)を自然に解く
特徴設計
ルール
・
プログラム
タスク 学習
ルールベース
浅い機械学習

(決定木、RF、SVM、

ロジスティク回帰など)
深層学習



タスク 学習
表現学習
(特徴設計)
人手 データから自動獲得
一貫学習
深層学習における代表的なタスク
11
The graph was excerpted from https://leonardoaraujosantos.gitbooks.io/artificial-inteligence/content/object_localization_and_detection.html
今日話す内容
• PFNについて
• 深層学習と
• 深層学習における計算・ワークフロー
• Deep Learning 高 化
– ソフトウェア 視点から
– ハードウェア 視点から
• MN-Core 開発について
• まとめ
13

ニューラルネットワークモデル
● 入力に対しhidden layer 演算を繰り返して出力を得る
深いレイヤー パーツを組み合わせた
総合的かつ抽象的な情報
図 CS231n講義資料より
http://cs231n.github.io/neural-networks-1/
14
ディープラーニング 基本計算
● 下層 入力xを重み付きで足しあわせた後に活性化関数hをかけて出力
– Wi
がモデルパラメータであり、重みと呼 れる
x1
x2
x3
+1
w1
w2
w3
w4
h = a(x1
w1
+x2
w2
+x3
w3
+w4
)
h
a 例 ReLU: h(x) = max(0, x)
a : 活性化関数
バイアス項
活性化関数に 、ReLUなど勾配消失問題を
回避できる区分線形関数が多く使われる
15

CNN (Convolutional Neural Network)
1 2 3
4 5 6
7 8 9
Input * Nch
1 2
3 4
Weight * N個
1 2
3 4
1 2
3 4
1 2
3 4
Output(Activation)
1 2
3 4
37 47
67 87
1 2 3
4 5 6
7 8 9
*
Filterをずらしながら畳み込み演算を行う
データ転送に対して演算量が大きい
input ch数=1 場合
16
アーキテクチャ 例
● AlexNet
— Conv 5層+FC3層というシンプルなモデル
Chainerで 実装例
     with self.init_scope():
            self.conv1 = L.Convolution2D(None,  96, 11, stride=4)
            self.conv2 = L.Convolution2D(None, 256,  5, pad=2)
            self.conv3 = L.Convolution2D(None, 384,  3, pad=1)
            self.conv4 = L.Convolution2D(None, 384,  3, pad=1)
            self.conv5 = L.Convolution2D(None, 256,  3, pad=1)
            self.fc6 = L.Linear(None, 4096)
            self.fc7 = L.Linear(None, 4096)
            self.fc8 = L.Linear(None, 1000)
def forward(self, x, t):
h = F.max_pooling_2d(F.local_response_normalization(
F.relu(self.conv1(x))), 3, stride=2)
h = F.max_pooling_2d(F.local_response_normalization(
F.relu(self.conv2(h))), 3, stride=2)
h = F.relu(self.conv3(h))
h = F.relu(self.conv4(h))
h = F.max_pooling_2d(F.relu(self.conv5(h)), 3, stride=2)
h = F.dropout(F.relu(self.fc6(h)))
h = F.dropout(F.relu(self.fc7(h)))
h = self.fc8(h)
The graph was excerpted from https://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks.pdf
Trainingにおける演算
• 誤差逆伝播を使った勾配 算出とモデル
アップデート (これを1iterationと呼ぶ)
– Forward時 activation 値が必要
– いくつか 入力をまとめて学習を行う場
合もある(ミニバッチ学習)
– 勾配 平均をupdateに利用する
– 全て 入力データを一度利用することを
1epochと呼ぶ
• 大量 密なFMA演算が必要とされる
– 特にCNN 場合Filterを共有するためメ
モリアクセスに対して演算量が大きい
図 メディカル AI専門コース オンライン講義資料より
https://japan-medical-ai.github.io/medical-ai-course-materials/
Image Classification 進歩
● ILSVRC Image classification competition
The graph was excerpted from Eunbyung Park (2017). Overview of ILSVRC 2017
2012: AlexNet
2014: GoogLeNet
2016: ResNet
既に人 認識率を
超えつつある
19
モデル 探索・改善
● 新しいネットワークアーキテクチャ 探索(Trained from scratch)
— ある意味職人芸 世界
— 各ドメインごとにある程度当たりをつけた上で 様々なアーキテクチャ/ハイパーパラメータ 試行錯誤
を繰り返す
— アーキテクチャ 自動探索 (Neural Architecture Search)
● Pre-trained model 活用 (fine-tuning)
— 大きなデータセットに対して十分に Trainingされたモデル 良い特徴量抽出器として利用できること
が知られている
— Pre-trained modelをtrunk networkとして利用し他 タスク向けに再学習
— scratchからtrainingするより 時間が短縮できるが、 結局 試行錯誤 繰り返し
● 最適なアーキテクチャを自動的に探
索する仕組み
● 近年hand-craft なネットワーク 精
度をNASが凌駕しつつある
● 試行錯誤 自動化
20

Neural Architecture Search (NAS)
The graph was excerpted from Zoph, B., Vasudevan, V., Shlens, J., & Le, Q. V. (2017). Learning
Transferable Architectures for Scalable Image Recognition. AAAI-18
Red: NAS, Black: Handcraft
Top-1 Acc@ImageNet
Better
Search Train & Test
Neural
Network
Metrics
Deep Learningに必要な計算能力 増え続けている
● SoTAな研究において モデルサイズ 依然として増えていく傾向にある
— 画像から動画/立体へ、画像 巨大化
— 時間方向/空間方向へ Convolution, HD画像処理など
● NAS (Network Architecture Search)
— アーキテクチャ探索 自動化
— 探索時間を減らすため 試みなど 様々行われているが、基本的に 試行錯誤 自動化
— 人がボトルネックにならない
● 計算能力を高めること 競争力 源泉
Train Evaluate
Design a new model quicker
Train faster Get a better (or equivalent) model
今日話す内容
• PFNについて
• 深層学習と
• 深層学習における計算・ワークフロー
• Deep Learning 高 化
– ソフトウェア 視点から
– ハードウェア 視点から
• MN-Core 開発について
• まとめ
PFNにおける深層学習基盤
● HWからSWまで深層学習 研究開発 加 を目的に整備・運用している
— HW
◆ GPU Cluster (MN-1/1b/2)
◆ Custom Processor (MN-Core)
— SW
◆ k8s env + job scheduler
◆ Optuna (hyperparameter optimization framework)
◆ Chainer family (Deep learning framework)
24
PFNが自社クラスタにこだわる理由
• 大量 計算機を使って誰にも成し遂げられなかったことをしたい(グランドチャレンジ)
– や り計算力 競争力 源(クラウドとて無限で ない)
– 2017年5月頃、NIPS論文提出 締切直前に、大手クラウドサービス GPUが枯渇
• 息をするように大規模な学習できる環境
– 16 GPU, 32 GPU 学習を日常的に回したい
• 高 な通信環境をいつも使いたい
– 分散深層学習に 高 な通信環境が必須
• 上から下まで保有すること 重要性
– 様々な技術バックグランドを持つメンバーが集結することによって、新しいも を生み出
していく(クラスタ 調達からアルゴリズムまで)
Deep Learning 高 化
● 基本的に 一般的なHPC workload 高 化と考え方 同じ
● Scale-out (分散並列化) – SW的な改善
— 分散深層学習
◆ データ並列、モデル並列
◆ 計算と通信 オーバラップ
● Scale-up (専用アクセラレータ) – HW的な改善
— Inference/Training専用アクセラレータ
今日話す内容
• PFNについて
• 深層学習と
• 深層学習における計算・ワークフロー
• Deep Learning 高 化
– ソフトウェア 視点から
– ハードウェア 視点から
• MN-Core 開発について
• まとめ
27
Deep learningにおける分散並列化
Data-parallelism
Model-parallelism
Synchronous
Asynchronous
Fine-grained
Coarse-grained
一つ モデルを複数 ノードを用い
て高 にTrainingする
- 全ノードで同一 パラメータ
一つ 大きなモデルを 複数 ノード
を用いて分担してTrainingする
- 全ノードで異なるパラメータ
● データ並列とモデル並列で目的が異なる
— 高 化 観点で データ並列を利用する
高 化 観点で
同期型データ並列が重要
28
同期型データ並列による学習 高 化
● 1iterationで処理する画像 枚数 (バッチサイズ)を大きく取り各GPUで処理を分担
— 複数 GPUに画像を らまき各 GPUで逆伝播を行う
— 各GPUで求まった勾配 平均を Allreduceを用いて求める
— 各GPUにおいてモデルをアップデートする
● 課題
● バッチサイズを変更した結果 精度劣化
● All-reduceによる同期オーバヘッド
All-Reduc
e
Forward
Forward
Forward
Backward
Backward
Backward
Optimize
Optimize
Optimize
Forward Backward Optimizebatchsize=32
batchsize=96
(32*3)
1nodeで 学習
3nodeで 分散学習
※1nodeあたり batchsize GPUを
効率的に利用可能な値に設定される
29
The “large batch” problem
From Keskar et al.
“On Large-Batch Training for Deep Learning: Generalization Gap and Sharp Minima”
“It has been observed in practice that when using a larger batch
there is a significant degradation in the quality of the model, as
measured by its ability to generalize”
1. Computed gradients in each iteration is an average of larger number of samples
→ gradients are “less stochastic”, which makes it difficult to escape from local minima
2. Total number of iterations (=updates) is smaller
(number of iterations in 1epoch = number of images / batchsize)
Local minima
Better model
30
“Linear scaling rule” for large batch problem
“If minibatch-size is k times larger, increase learning rate by k times”
31
Data parallel: sync vs. async
All-Reduc
e
Forward
Forward
Forward
Backward
Backward
Backward
Optimize
Optimize
Optimize
Synchronous:
Parameter server
Asynchronous:
32
Reduce communication: use FP16
Compute gradients
Convert FP32 to FP16
Allreduce (with NCCL)
Convert FP16 to FP32 and update
33
Hide communication (by overlapping)
Double buffering
• Each update uses the gradients from previous iteration (1-step stale grad.)
同期型データ並列による学習 高 化
● 問題設定
● Dataset: ImageNet
● モデル: ResNet50
● 90epochをいかに精度を落とさずに高 に学習するか (epoch数自体を減らして いけない )
● 2年弱で100倍以上高 化している
Company Processor Date Training time
PFN TITAN X *128 17/1 4h
Facebook P100 *256 17/6 1h
PFN P100 *1024 17/11 15min
SONY V100 *2176 18/11 3.7min
Google TPUv3 *1024 18/11 2.2min
Scale-out (分散並列化)による高 化
● 同期型データ並列によって、2年弱で100倍以上高 化している
— 元々 論文で 8枚 GPUで数週間要していたも 、今や2.2min
— バッチサイズを増やせる問題について 、GPU台数に対してほぼリニアに性能向上が達成で
きる程度にノウハウがたまりつつある
● 常に適用できる万能な手法で ない
— バッチサイズを増やしても精度や学習 安定性に問題が出ないモデル に み適用可能
今日話す内容
• PFNについて
• 深層学習と
• 深層学習における計算・ワークフロー
• Deep Learning 高 化
– ソフトウェア 視点から
– ハードウェア 視点から
• MN-Core 開発について
• まとめ
Scale-upによる高 化
- 専用アクセラレータによる高 化-
● 様々な専用アクセラレータを
各社提案している
— Inference向け
— 精度を維持したまま
く、省電力に推論を実
行する(組み込み寄り
世界)
— Training向け
◆ 精度を維持したままモ
デルを高 に学習す
る (HPC寄り 世界)
The image was excerpted from https://github.com/basicmi/AI-Chip
PFNとして
こちら 高 化
需要が大きい
なぜ今DL専用アクセラレータ開発な か?
● 「大きな計算能力が必要」という需要 観点以外にも、ハードウェア開発を加 さ
せる背景がある
— Deep Learning 応用範囲が拡大していること
— Deep Learningにおいて必要とされる演算精度がこれまで 科学技術計算と異なること
— 演算手順が計算グラフによって宣言的に定義されること
なぜ今DL専用アクセラレータ開発な か?
● 「大きな計算能力が必要」という需要 観点以外にも、ハードウェア開発を加 さ
せる背景がある
— Deep Learning 応用範囲が拡大していること
— Deep Learningにおいて必要とされる演算精度がこれまで 科学技術計算と異なること
— 演算手順が計算グラフによって宣言的に定義されること
演算精度について(Training)
● Trainingで 混合精度 (fp16乗算+fp32加算) 活用が注目されている
— NVIDIA Volta: Tensor Core (4x4 混合積和演算, fp16 matmul, fp32 accumulate)
— Google TPU: BFLOAT16 (brain float)
◆ fp16よりもdynamic rangeが広い
◆ 勾配 underflow対策
● Deep learningに最適な数値表現と なにか?という問題に 答え 出ていない
— fp16でもCNN, RNN, GANなど Trainingがある程度うまくいくという報告
— 使う観点で cuDNNなどが対応を始めているが、正しく利用するために ノウハウが必要
● HPC系学会でも混合精度演算 benchmarkについて議論が始まっている
The figure was excerpted from https://cloud.google.com/tpu/docs/bfloat16
演算精度について(Inference)
● Inferenceで 、よりAggressiveな最適化が可能
— Int8, Int4, binary
● 学習済みモデルをターゲットアーキテクチャに対して最適化する
— モデル 量子化 (Quantization)
◆ モデル N-bit整数化
— モデル 剪定 (Pruning)
◆ 構築済みモデル Sparse化 (主にSpMV Acceleratorと 組み合わせ)
— 小さいモデルへ 蒸留 (distillation)
◆ 小さなモデルに教師モデル 分布を学習させる
● Emerging deviceを利用したも も様々提案がある(が、現時点で まだMNIST
など Toy Problemが解ける程度という印象)
なぜ今DL専用アクセラレータ開発な か?
● 「大きな計算能力が必要」という需要 観点以外にも、ハードウェア開発を加 さ
せる背景がある
— Deep Learning 応用範囲が拡大していること
— Deep Learningにおいて必要とされる演算精度がこれまで 科学技術計算と異なること
— 演算手順が計算グラフによって宣言的に定義されること
計算グラフと中間表現
● Deep learning モデル 計算グラフとして
表現できる
● 現実的に モデル element-wiseな計算
依存関係で なくオペレータ (レイヤ)
接続関係としてDeep Learning Framework
上で表現される
— I/F Frameworkごとに異なっても表現し
ているも に大きな違い ない
● 手続き的な表現でなく宣言的な表現 (グラフ
IR)が手に入る!
— 中間表現 標準化:ONNX, NNEFなど
計算グラフが手に入るうれしさ
- アーキテクチャ観点から
● 高度なオフラインスケジューリングが可能
— 変数 life-timeが既知
◆ cache 重要性 低下 (scratchpadで十分)
— 演算順序がdeterministicに決定可能
◆ 分岐予測 重要性 低下 (値に依存して分岐することが少ない)
◆ 並列性が抽出しやすい
-> 高度なオフラインスケジューラを前提としたシンプルかつ並列度 高いプ
ロセッサアーキテクチャを現実的に利用可能
深層学習コンパイラ
● グラフIRを入力に、ターゲット依存 最適化を行うコンパイラ
The figure was excerpted from Tianqi Chen et al. TVM: An Automated End-to-End Optimizing Compiler for Deep Learning
https://arxiv.org/abs/1802.04799
● オペレータ単位でプロセッサ専用
高効率カーネルを定義可能
● 演算 fusionやスケジューリング、メ
モリ配置 最適化
● 演算 スケジューリング /メモリ配置
最適化
● 再計算
— 計算量を増加させることで、メモリ使用量
を削減する
Chainer-compiler
● Box: software component / Rounded corner: data
● Yellow: exists / Grey: future work
CH2O
elichika
XCVM
runtime
Python
Chainer
ONNX+
inferenc
e
XCVM
IR
ONNX
Chainer
ONNX+
training
Compiler
code
gen
Menoh
C API
@static
graph
MN-Core?
Static
graph
analysis
Visualizers
(e.g., netron)
native
binary
(AOT)
Compiler
middle
end
今日話す内容
• PFNについて
• 深層学習と
• 深層学習における計算・ワークフロー
• Deep Learning 高 化
– ソフトウェア 視点から
– ハードウェア 視点から
• MN-Core 開発について
• まとめ
深層学習用プロセッサ
MN-Core
倍精度 単精度 半精度
TFLOP 32.8 131 524
TFLOP/W 0.066 0.26 1.0
開発中
• Deep Learning Trainingに特
化した専用設計 ASIC
• 特に計算量 多いConvolution
Kernelを高 化するため 専用
設計
MN-Core
• 階層メモリ型SIMDアーキテク
チャによって512MABを1chip
に集積
– 各階層 メモリ スク
ラッチパッドとして利用
可能
– 各階層間で 分配、結
合、放送、縮約といった
複数 転送モードをサ
ポート
• 倍/単/半精度相当及び混合
精度 行列積演算をサポート
• Deep Learningに特化した演
算器を搭載 製 プロセス TSMC 12nm
消費電力 (W、予測値) 500 (4die, 1package合計)
ピーク性能 (TFLOPS) 32.8 (倍精度) / 131 (単精度) / 524 (半精度)
電力性能 (TFLOPS / W、予測値) 0.066 (倍精度) / 0.26 (単精度) / 1.0 (半精度)
MN-Core
• PCIe接続 アクセラレータカードとして提供
• ボード及びサーバも開発中
– MN-Coreを搭載したクラスタを2020年に運用開始予定(目標)
チップ 1 MN-Core チップ (4die)
インターフェース PCI Express Gen3 x16
メモリサイズ 32 GB (ボード当たり)
消費電力 600 W (予測値)
GPUとMN-Core
• 汎用性と性能 トレードオフ
– GPUとMN-Core 補完関係にある (全て jobがMN-Coreにfitするわけで ない)
Architecture can be simpler
GPU
MN-Core
Computation intensive
SIMD friendly
Convolution layer
Dense matrix algo.
Particle sim.
Sparse matrix algo.
Finite diff. method
CPU
FFT
Graph algo.Rigid body sim.
new app?
Circuit sim.
MN-Core開発チーム
● ハードウェア/ソフトウェアエンジニア 垣根なくフレキシブルに働いている
— そもそも区分けが会社全体として存在していない
● HDLをソフトウェアエンジニアが読みつつ・・・など よくある
開発メンバー
● 神戸大学 牧野淳一郎教授と共同で
アーキテクチャ検討を実施
— ASIC開発に関して 経験豊富な
GRAPE開発メンバがリード
MN-Core 開発
● 開発プロセスに何か特筆すべき事項があるわけで ない
— SystemCベース 検証環境
◆ 主にデバイスドライバなどと 協調検証に利用
— ソフトウェアエミュレータ
◆ MN-Core 命令レベルエミュレータ
◆ 上位 アプリケーションレベル 記述性 確認
◆ RTLと 最終的な比較一致検証
— 演算器 精度などについて Chainer側に手を入れ一部モデルで検証を実施
HWを支えるSWについて
• ユーザにとって いつも コードをいつも 方法で動かして、結果 くなるという が理想(使
うために大きなオーバヘッド 避けるべき)
• 既存 Chainerからシームレスに、かつ高効率にMN-Coreを利用可能にするため ソフト
ウェア 研究開発を行っています
– 専用ASICを利用するため ツールチェーン群
– ChainerX
• 高 な自動微分 実装、選択可能なbackend
– Chainer-compiler
• Pythonから拡張ONNXフォーマットへ convert
• 拡張ONNX上における計算グラフ 最適化、自動微分
PFN プロセッサ関連研究へ 取り組み
● 次世代 プロセッサ 開発を並行して実施している (NEDO PJ)
● そ 他、新しい検討など
— 新しいアーキテクチャ 検討・評価
— 形式手法を用いたテスト 自動生成
— 高 ・高機能なHPC向けInterconnect 検討
● 今後重要になりそうなTopic
— システム (データセンタ)全体として性能を出すため 仕組み
◆ 既に学習を律 するも がプロセッサで なくなりつつある
さいごに
● Deep Learning 分野において 計算能力 向上が求められている
— 高 化 アプローチ:Scale-out (分散並列化)とScale-up (専用アクセラレータ)
— プロセッサ 設計/効率的な利用という観点で 、宣言的に計算が定義されることが重要
◆ オフラインスケジューリングを前提としたシンプルな並列アーキテクチャ
◆ 深層学習コンパイラ
● Deep learning ため 最適な計算機を構築するために
専用ASIC (MN-Core) から上位ソフトウェアフレームワークまで含めて全体を考え
ていく必要がある
Thank you!
57
We
are
hiring!

More Related Content

PPTX
Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)
PDF
Transformerを多層にする際の勾配消失問題と解決法について
PDF
ChatGPTは思ったほど賢くない
PDF
【メタサーベイ】基盤モデル / Foundation Models
PDF
続・PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜 #2
PPTX
Tensor コアを使った PyTorch の高速化
PDF
TensorFlow計算グラフ最適化処理
PDF
ゼロから始める深層強化学習(NLP2018講演資料)/ Introduction of Deep Reinforcement Learning
Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)
Transformerを多層にする際の勾配消失問題と解決法について
ChatGPTは思ったほど賢くない
【メタサーベイ】基盤モデル / Foundation Models
続・PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜 #2
Tensor コアを使った PyTorch の高速化
TensorFlow計算グラフ最適化処理
ゼロから始める深層強化学習(NLP2018講演資料)/ Introduction of Deep Reinforcement Learning

What's hot (20)

PDF
Kaggle Happywhaleコンペ優勝解法でのOptuna使用事例 - 2022/12/10 Optuna Meetup #2
PDF
DQNからRainbowまで 〜深層強化学習の最新動向〜
PDF
機械学習で泣かないためのコード設計
PDF
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
PDF
大規模な組合せ最適化問題に対する発見的解法
PDF
三次元点群を取り扱うニューラルネットワークのサーベイ
PDF
深層学習の新しい応用と、 それを支える計算機の進化 - Preferred Networks CEO 西川徹 (SEMICON Japan 2022 Ke...
PDF
最適化超入門
PDF
HPC+AI ってよく聞くけど結局なんなの
PPTX
PFNにおける研究開発(2022/10/19 東大大学院「融合情報学特別講義Ⅲ」)
PDF
【メタサーベイ】数式ドリブン教師あり学習
PDF
研究効率化Tips Ver.2
PDF
計算論的学習理論入門 -PAC学習とかVC次元とか-
PPTX
[DL輪読会]Deep Learning based Recommender System: A Survey and New Perspectives
PPTX
[DL輪読会]Live-Streaming Fraud Detection: A Heterogeneous Graph Neural Network A...
PDF
MediaPipeの紹介
PDF
Neural networks for Graph Data NeurIPS2018読み会@PFN
PPTX
Dimensionality reduction with t-SNE(Rtsne) and UMAP(uwot) using R packages.
PDF
TensorFlow XLAは、 中で何をやっているのか?
PDF
Scala、DDD、Akkaで立ち向かう 〜広告配信システムに課せられた100msの制約〜
Kaggle Happywhaleコンペ優勝解法でのOptuna使用事例 - 2022/12/10 Optuna Meetup #2
DQNからRainbowまで 〜深層強化学習の最新動向〜
機械学習で泣かないためのコード設計
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
大規模な組合せ最適化問題に対する発見的解法
三次元点群を取り扱うニューラルネットワークのサーベイ
深層学習の新しい応用と、 それを支える計算機の進化 - Preferred Networks CEO 西川徹 (SEMICON Japan 2022 Ke...
最適化超入門
HPC+AI ってよく聞くけど結局なんなの
PFNにおける研究開発(2022/10/19 東大大学院「融合情報学特別講義Ⅲ」)
【メタサーベイ】数式ドリブン教師あり学習
研究効率化Tips Ver.2
計算論的学習理論入門 -PAC学習とかVC次元とか-
[DL輪読会]Deep Learning based Recommender System: A Survey and New Perspectives
[DL輪読会]Live-Streaming Fraud Detection: A Heterogeneous Graph Neural Network A...
MediaPipeの紹介
Neural networks for Graph Data NeurIPS2018読み会@PFN
Dimensionality reduction with t-SNE(Rtsne) and UMAP(uwot) using R packages.
TensorFlow XLAは、 中で何をやっているのか?
Scala、DDD、Akkaで立ち向かう 〜広告配信システムに課せられた100msの制約〜
Ad

Similar to DAシンポジウム2019招待講演「深層学習モデルの高速なTraining/InferenceのためのHW/SW技術」 金子紘也hare (20)

PDF
20180729 Preferred Networksの機械学習クラスタを支える技術
PDF
fpgax #11+TFUG ハード部:DNN専用ハードについて語る会-2019-02-02 MN-coreについて 金子 紘也
PPTX
エッジヘビーコンピューティングと機械学習
PDF
ディープラーニング最近の発展とビジネス応用への課題
PPT
Deep Learningの技術と未来
PDF
Deep Learning Lab: DIMo & Chainer
PDF
DEEP LEARNING、トレーニング・インファレンスのGPUによる高速化
PDF
20180227_最先端のディープラーニング 研究開発を支えるGPU計算機基盤 「MN-1」のご紹介
PPTX
「機械学習とは?」から始める Deep learning実践入門
PPTX
機械学習 / Deep Learning 大全 (2) Deep Learning 基礎編
PPTX
2017-05-30_deepleaning-and-chainer
PDF
【参考文献追加】20180115_東大医学部機能生物学セミナー_深層学習の最前線とこれから_岡野原大輔
PDF
20180115_東大医学部機能生物学セミナー_深層学習の最前線とこれから_岡野原大輔
PPTX
Image net classification with Deep Convolutional Neural Networks
PPTX
2018/06/23 Sony"s deep learning software and the latest information
PDF
FPGAX2016 ドキュンなFPGA
PDF
[基調講演] Deep Learning: IoT's Driving Engine
PPTX
機械学習 / Deep Learning 大全 (6) Library編
PPTX
【Dll171201】深層学習利活用の紹介 掲載用
PDF
ディープラーニングの産業応用とそれを支える技術
20180729 Preferred Networksの機械学習クラスタを支える技術
fpgax #11+TFUG ハード部:DNN専用ハードについて語る会-2019-02-02 MN-coreについて 金子 紘也
エッジヘビーコンピューティングと機械学習
ディープラーニング最近の発展とビジネス応用への課題
Deep Learningの技術と未来
Deep Learning Lab: DIMo & Chainer
DEEP LEARNING、トレーニング・インファレンスのGPUによる高速化
20180227_最先端のディープラーニング 研究開発を支えるGPU計算機基盤 「MN-1」のご紹介
「機械学習とは?」から始める Deep learning実践入門
機械学習 / Deep Learning 大全 (2) Deep Learning 基礎編
2017-05-30_deepleaning-and-chainer
【参考文献追加】20180115_東大医学部機能生物学セミナー_深層学習の最前線とこれから_岡野原大輔
20180115_東大医学部機能生物学セミナー_深層学習の最前線とこれから_岡野原大輔
Image net classification with Deep Convolutional Neural Networks
2018/06/23 Sony"s deep learning software and the latest information
FPGAX2016 ドキュンなFPGA
[基調講演] Deep Learning: IoT's Driving Engine
機械学習 / Deep Learning 大全 (6) Library編
【Dll171201】深層学習利活用の紹介 掲載用
ディープラーニングの産業応用とそれを支える技術
Ad

More from Preferred Networks (20)

PDF
PodSecurityPolicy からGatekeeper に移行しました / Kubernetes Meetup Tokyo #57
PDF
Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3
PDF
Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...
PDF
Kubernetes ControllerをScale-Outさせる方法 / Kubernetes Meetup Tokyo #55
PDF
最新リリース:Optuna V3の全て - 2022/12/10 Optuna Meetup #2
PDF
Optuna Dashboardの紹介と設計解説 - 2022/12/10 Optuna Meetup #2
PDF
スタートアップが提案する2030年の材料開発 - 2022/11/11 QPARC講演
PDF
自然言語処理を 役立てるのはなぜ難しいのか(2022/10/25東大大学院「自然言語処理応用」)
PDF
Kubernetes にこれから入るかもしれない注目機能!(2022年11月版) / TechFeed Experts Night #7 〜 コンテナ技術を語る
PDF
Matlantis™のニューラルネットワークポテンシャルPFPの適用範囲拡張
PDF
PFNのオンプレ計算機クラスタの取り組み_第55回情報科学若手の会
PDF
Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...
PDF
KubeCon + CloudNativeCon Europe 2022 Recap / Kubernetes Meetup Tokyo #51 / #k...
PDF
KubeCon + CloudNativeCon Europe 2022 Recap - Batch/HPCの潮流とScheduler拡張事例 / Kub...
PDF
独断と偏見で選んだ Kubernetes 1.24 の注目機能と今後! / Kubernetes Meetup Tokyo 50
PDF
Topology Managerについて / Kubernetes Meetup Tokyo 50
PDF
PFN Summer Internship 2021 / Kohei Shinohara: Charge Transfer Modeling in Neu...
PDF
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
PDF
Playgram開発秘話_2022年1月プログラミングシンポジウム招待講演_西澤勇輝、岡本雄太
PDF
東北大学 先端技術の基礎と実践_深層学習による画像認識とデータの話_菊池悠太
PodSecurityPolicy からGatekeeper に移行しました / Kubernetes Meetup Tokyo #57
Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3
Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...
Kubernetes ControllerをScale-Outさせる方法 / Kubernetes Meetup Tokyo #55
最新リリース:Optuna V3の全て - 2022/12/10 Optuna Meetup #2
Optuna Dashboardの紹介と設計解説 - 2022/12/10 Optuna Meetup #2
スタートアップが提案する2030年の材料開発 - 2022/11/11 QPARC講演
自然言語処理を 役立てるのはなぜ難しいのか(2022/10/25東大大学院「自然言語処理応用」)
Kubernetes にこれから入るかもしれない注目機能!(2022年11月版) / TechFeed Experts Night #7 〜 コンテナ技術を語る
Matlantis™のニューラルネットワークポテンシャルPFPの適用範囲拡張
PFNのオンプレ計算機クラスタの取り組み_第55回情報科学若手の会
Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...
KubeCon + CloudNativeCon Europe 2022 Recap / Kubernetes Meetup Tokyo #51 / #k...
KubeCon + CloudNativeCon Europe 2022 Recap - Batch/HPCの潮流とScheduler拡張事例 / Kub...
独断と偏見で選んだ Kubernetes 1.24 の注目機能と今後! / Kubernetes Meetup Tokyo 50
Topology Managerについて / Kubernetes Meetup Tokyo 50
PFN Summer Internship 2021 / Kohei Shinohara: Charge Transfer Modeling in Neu...
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
Playgram開発秘話_2022年1月プログラミングシンポジウム招待講演_西澤勇輝、岡本雄太
東北大学 先端技術の基礎と実践_深層学習による画像認識とデータの話_菊池悠太

DAシンポジウム2019招待講演「深層学習モデルの高速なTraining/InferenceのためのHW/SW技術」 金子紘也hare

  • 1. 2019/08/28 DAシンポジウム 1A招待講演 深層学習モデル 高 な Training/Inference ため HW/SW技術 Hiroya Kaneko @Preferred Networks
  • 2. 今日話す内容 • PFNについて • 深層学習と • 深層学習における計算・ワークフロー • Deep Learning 高 化 – ソフトウェア 視点から – ハードウェア 視点から • MN-Core 開発について • まとめ
  • 3. 今日話す内容 • PFNについて • 深層学習と • 深層学習における計算・ワークフロー • Deep Learning 高 化 – ソフトウェア 視点から – ハードウェア 視点から • MN-Core 開発について • まとめ
  • 4. 株式会社Preferred Networks (PFN) • 設立:2014年3月 • 本社:東京都千代田区大手町(日本) • Preferred Networks America, Inc.:カリフォルニア州バークレー(米国) • 取締役:西川 徹、岡野原 大輔、奥田 遼介 • 従業員数:約250名(2019年4月時点) • ミッション:IoT時代に向けた新しいコンピュータを創 する あらゆるモノに知能をもたせ、分散知能を実現する • 事業内容:IoT + 分散機械学習 交通システム、製 業、バイオヘルスケア
  • 5. 7 @CEATEC JAPAN 2018 Autonomous Tidying-up Robot System https://projects.preferred.jp/tidying-up-robot/ x2
  • 6. 今日話す内容 • PFNについて • 深層学習と • 深層学習における計算・ワークフロー • Deep Learning 高 化 – ソフトウェア 視点から – ハードウェア 視点から • MN-Core 開発について • まとめ
  • 7. 9 ディープラーニング(深層学習)と ● 層が深く、幅も広いニューラルネットワーク を利用した機械学習手法 一手法 ● 2012年 大ブレーク以来、研究コミュニティ みならず産業界に多く使われてきた ● 画像認識、音声認識、強化学習、自然言語処理 などで劇的な精度向上を果たし、そ 多くが既に実用化されている 2014年 一般画像認識コンテストで優勝した 22層からなる GoogLeNet 例 [Google 2014] *http://memkite.com/deep-learning-bibliography/
  • 8. 10 深層学習 = 表現学習、一貫学習(end-to-end学習) ● データをど ように表現するか(表現学習) ● 全モジュールを誤差逆伝播法で一貫して学習 — モジュール毎 局所最適化 問題がない — 信用割り当て問題(誰に間違った責任があるか)を自然に解く 特徴設計 ルール ・ プログラム タスク 学習 ルールベース 浅い機械学習
 (決定木、RF、SVM、
 ロジスティク回帰など) 深層学習
 
 タスク 学習 表現学習 (特徴設計) 人手 データから自動獲得 一貫学習
  • 9. 深層学習における代表的なタスク 11 The graph was excerpted from https://leonardoaraujosantos.gitbooks.io/artificial-inteligence/content/object_localization_and_detection.html
  • 10. 今日話す内容 • PFNについて • 深層学習と • 深層学習における計算・ワークフロー • Deep Learning 高 化 – ソフトウェア 視点から – ハードウェア 視点から • MN-Core 開発について • まとめ
  • 11. 13
 ニューラルネットワークモデル ● 入力に対しhidden layer 演算を繰り返して出力を得る 深いレイヤー パーツを組み合わせた 総合的かつ抽象的な情報 図 CS231n講義資料より http://cs231n.github.io/neural-networks-1/
  • 12. 14 ディープラーニング 基本計算 ● 下層 入力xを重み付きで足しあわせた後に活性化関数hをかけて出力 – Wi がモデルパラメータであり、重みと呼 れる x1 x2 x3 +1 w1 w2 w3 w4 h = a(x1 w1 +x2 w2 +x3 w3 +w4 ) h a 例 ReLU: h(x) = max(0, x) a : 活性化関数 バイアス項 活性化関数に 、ReLUなど勾配消失問題を 回避できる区分線形関数が多く使われる
  • 13. 15
 CNN (Convolutional Neural Network) 1 2 3 4 5 6 7 8 9 Input * Nch 1 2 3 4 Weight * N個 1 2 3 4 1 2 3 4 1 2 3 4 Output(Activation) 1 2 3 4 37 47 67 87 1 2 3 4 5 6 7 8 9 * Filterをずらしながら畳み込み演算を行う データ転送に対して演算量が大きい input ch数=1 場合
  • 14. 16 アーキテクチャ 例 ● AlexNet — Conv 5層+FC3層というシンプルなモデル Chainerで 実装例      with self.init_scope():             self.conv1 = L.Convolution2D(None,  96, 11, stride=4)             self.conv2 = L.Convolution2D(None, 256,  5, pad=2)             self.conv3 = L.Convolution2D(None, 384,  3, pad=1)             self.conv4 = L.Convolution2D(None, 384,  3, pad=1)             self.conv5 = L.Convolution2D(None, 256,  3, pad=1)             self.fc6 = L.Linear(None, 4096)             self.fc7 = L.Linear(None, 4096)             self.fc8 = L.Linear(None, 1000) def forward(self, x, t): h = F.max_pooling_2d(F.local_response_normalization( F.relu(self.conv1(x))), 3, stride=2) h = F.max_pooling_2d(F.local_response_normalization( F.relu(self.conv2(h))), 3, stride=2) h = F.relu(self.conv3(h)) h = F.relu(self.conv4(h)) h = F.max_pooling_2d(F.relu(self.conv5(h)), 3, stride=2) h = F.dropout(F.relu(self.fc6(h))) h = F.dropout(F.relu(self.fc7(h))) h = self.fc8(h) The graph was excerpted from https://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks.pdf
  • 15. Trainingにおける演算 • 誤差逆伝播を使った勾配 算出とモデル アップデート (これを1iterationと呼ぶ) – Forward時 activation 値が必要 – いくつか 入力をまとめて学習を行う場 合もある(ミニバッチ学習) – 勾配 平均をupdateに利用する – 全て 入力データを一度利用することを 1epochと呼ぶ • 大量 密なFMA演算が必要とされる – 特にCNN 場合Filterを共有するためメ モリアクセスに対して演算量が大きい 図 メディカル AI専門コース オンライン講義資料より https://japan-medical-ai.github.io/medical-ai-course-materials/
  • 16. Image Classification 進歩 ● ILSVRC Image classification competition The graph was excerpted from Eunbyung Park (2017). Overview of ILSVRC 2017 2012: AlexNet 2014: GoogLeNet 2016: ResNet 既に人 認識率を 超えつつある
  • 17. 19 モデル 探索・改善 ● 新しいネットワークアーキテクチャ 探索(Trained from scratch) — ある意味職人芸 世界 — 各ドメインごとにある程度当たりをつけた上で 様々なアーキテクチャ/ハイパーパラメータ 試行錯誤 を繰り返す — アーキテクチャ 自動探索 (Neural Architecture Search) ● Pre-trained model 活用 (fine-tuning) — 大きなデータセットに対して十分に Trainingされたモデル 良い特徴量抽出器として利用できること が知られている — Pre-trained modelをtrunk networkとして利用し他 タスク向けに再学習 — scratchからtrainingするより 時間が短縮できるが、 結局 試行錯誤 繰り返し
  • 18. ● 最適なアーキテクチャを自動的に探 索する仕組み ● 近年hand-craft なネットワーク 精 度をNASが凌駕しつつある ● 試行錯誤 自動化 20
 Neural Architecture Search (NAS) The graph was excerpted from Zoph, B., Vasudevan, V., Shlens, J., & Le, Q. V. (2017). Learning Transferable Architectures for Scalable Image Recognition. AAAI-18 Red: NAS, Black: Handcraft Top-1 Acc@ImageNet Better Search Train & Test Neural Network Metrics
  • 19. Deep Learningに必要な計算能力 増え続けている ● SoTAな研究において モデルサイズ 依然として増えていく傾向にある — 画像から動画/立体へ、画像 巨大化 — 時間方向/空間方向へ Convolution, HD画像処理など ● NAS (Network Architecture Search) — アーキテクチャ探索 自動化 — 探索時間を減らすため 試みなど 様々行われているが、基本的に 試行錯誤 自動化 — 人がボトルネックにならない ● 計算能力を高めること 競争力 源泉 Train Evaluate Design a new model quicker Train faster Get a better (or equivalent) model
  • 20. 今日話す内容 • PFNについて • 深層学習と • 深層学習における計算・ワークフロー • Deep Learning 高 化 – ソフトウェア 視点から – ハードウェア 視点から • MN-Core 開発について • まとめ
  • 21. PFNにおける深層学習基盤 ● HWからSWまで深層学習 研究開発 加 を目的に整備・運用している — HW ◆ GPU Cluster (MN-1/1b/2) ◆ Custom Processor (MN-Core) — SW ◆ k8s env + job scheduler ◆ Optuna (hyperparameter optimization framework) ◆ Chainer family (Deep learning framework)
  • 22. 24 PFNが自社クラスタにこだわる理由 • 大量 計算機を使って誰にも成し遂げられなかったことをしたい(グランドチャレンジ) – や り計算力 競争力 源(クラウドとて無限で ない) – 2017年5月頃、NIPS論文提出 締切直前に、大手クラウドサービス GPUが枯渇 • 息をするように大規模な学習できる環境 – 16 GPU, 32 GPU 学習を日常的に回したい • 高 な通信環境をいつも使いたい – 分散深層学習に 高 な通信環境が必須 • 上から下まで保有すること 重要性 – 様々な技術バックグランドを持つメンバーが集結することによって、新しいも を生み出 していく(クラスタ 調達からアルゴリズムまで)
  • 23. Deep Learning 高 化 ● 基本的に 一般的なHPC workload 高 化と考え方 同じ ● Scale-out (分散並列化) – SW的な改善 — 分散深層学習 ◆ データ並列、モデル並列 ◆ 計算と通信 オーバラップ ● Scale-up (専用アクセラレータ) – HW的な改善 — Inference/Training専用アクセラレータ
  • 24. 今日話す内容 • PFNについて • 深層学習と • 深層学習における計算・ワークフロー • Deep Learning 高 化 – ソフトウェア 視点から – ハードウェア 視点から • MN-Core 開発について • まとめ
  • 25. 27 Deep learningにおける分散並列化 Data-parallelism Model-parallelism Synchronous Asynchronous Fine-grained Coarse-grained 一つ モデルを複数 ノードを用い て高 にTrainingする - 全ノードで同一 パラメータ 一つ 大きなモデルを 複数 ノード を用いて分担してTrainingする - 全ノードで異なるパラメータ ● データ並列とモデル並列で目的が異なる — 高 化 観点で データ並列を利用する 高 化 観点で 同期型データ並列が重要
  • 26. 28 同期型データ並列による学習 高 化 ● 1iterationで処理する画像 枚数 (バッチサイズ)を大きく取り各GPUで処理を分担 — 複数 GPUに画像を らまき各 GPUで逆伝播を行う — 各GPUで求まった勾配 平均を Allreduceを用いて求める — 各GPUにおいてモデルをアップデートする ● 課題 ● バッチサイズを変更した結果 精度劣化 ● All-reduceによる同期オーバヘッド All-Reduc e Forward Forward Forward Backward Backward Backward Optimize Optimize Optimize Forward Backward Optimizebatchsize=32 batchsize=96 (32*3) 1nodeで 学習 3nodeで 分散学習 ※1nodeあたり batchsize GPUを 効率的に利用可能な値に設定される
  • 27. 29 The “large batch” problem From Keskar et al. “On Large-Batch Training for Deep Learning: Generalization Gap and Sharp Minima” “It has been observed in practice that when using a larger batch there is a significant degradation in the quality of the model, as measured by its ability to generalize” 1. Computed gradients in each iteration is an average of larger number of samples → gradients are “less stochastic”, which makes it difficult to escape from local minima 2. Total number of iterations (=updates) is smaller (number of iterations in 1epoch = number of images / batchsize) Local minima Better model
  • 28. 30 “Linear scaling rule” for large batch problem “If minibatch-size is k times larger, increase learning rate by k times”
  • 29. 31 Data parallel: sync vs. async All-Reduc e Forward Forward Forward Backward Backward Backward Optimize Optimize Optimize Synchronous: Parameter server Asynchronous:
  • 30. 32 Reduce communication: use FP16 Compute gradients Convert FP32 to FP16 Allreduce (with NCCL) Convert FP16 to FP32 and update
  • 31. 33 Hide communication (by overlapping) Double buffering • Each update uses the gradients from previous iteration (1-step stale grad.)
  • 32. 同期型データ並列による学習 高 化 ● 問題設定 ● Dataset: ImageNet ● モデル: ResNet50 ● 90epochをいかに精度を落とさずに高 に学習するか (epoch数自体を減らして いけない ) ● 2年弱で100倍以上高 化している Company Processor Date Training time PFN TITAN X *128 17/1 4h Facebook P100 *256 17/6 1h PFN P100 *1024 17/11 15min SONY V100 *2176 18/11 3.7min Google TPUv3 *1024 18/11 2.2min
  • 33. Scale-out (分散並列化)による高 化 ● 同期型データ並列によって、2年弱で100倍以上高 化している — 元々 論文で 8枚 GPUで数週間要していたも 、今や2.2min — バッチサイズを増やせる問題について 、GPU台数に対してほぼリニアに性能向上が達成で きる程度にノウハウがたまりつつある ● 常に適用できる万能な手法で ない — バッチサイズを増やしても精度や学習 安定性に問題が出ないモデル に み適用可能
  • 34. 今日話す内容 • PFNについて • 深層学習と • 深層学習における計算・ワークフロー • Deep Learning 高 化 – ソフトウェア 視点から – ハードウェア 視点から • MN-Core 開発について • まとめ
  • 35. Scale-upによる高 化 - 専用アクセラレータによる高 化- ● 様々な専用アクセラレータを 各社提案している — Inference向け — 精度を維持したまま く、省電力に推論を実 行する(組み込み寄り 世界) — Training向け ◆ 精度を維持したままモ デルを高 に学習す る (HPC寄り 世界) The image was excerpted from https://github.com/basicmi/AI-Chip PFNとして こちら 高 化 需要が大きい
  • 36. なぜ今DL専用アクセラレータ開発な か? ● 「大きな計算能力が必要」という需要 観点以外にも、ハードウェア開発を加 さ せる背景がある — Deep Learning 応用範囲が拡大していること — Deep Learningにおいて必要とされる演算精度がこれまで 科学技術計算と異なること — 演算手順が計算グラフによって宣言的に定義されること
  • 37. なぜ今DL専用アクセラレータ開発な か? ● 「大きな計算能力が必要」という需要 観点以外にも、ハードウェア開発を加 さ せる背景がある — Deep Learning 応用範囲が拡大していること — Deep Learningにおいて必要とされる演算精度がこれまで 科学技術計算と異なること — 演算手順が計算グラフによって宣言的に定義されること
  • 38. 演算精度について(Training) ● Trainingで 混合精度 (fp16乗算+fp32加算) 活用が注目されている — NVIDIA Volta: Tensor Core (4x4 混合積和演算, fp16 matmul, fp32 accumulate) — Google TPU: BFLOAT16 (brain float) ◆ fp16よりもdynamic rangeが広い ◆ 勾配 underflow対策 ● Deep learningに最適な数値表現と なにか?という問題に 答え 出ていない — fp16でもCNN, RNN, GANなど Trainingがある程度うまくいくという報告 — 使う観点で cuDNNなどが対応を始めているが、正しく利用するために ノウハウが必要 ● HPC系学会でも混合精度演算 benchmarkについて議論が始まっている The figure was excerpted from https://cloud.google.com/tpu/docs/bfloat16
  • 39. 演算精度について(Inference) ● Inferenceで 、よりAggressiveな最適化が可能 — Int8, Int4, binary ● 学習済みモデルをターゲットアーキテクチャに対して最適化する — モデル 量子化 (Quantization) ◆ モデル N-bit整数化 — モデル 剪定 (Pruning) ◆ 構築済みモデル Sparse化 (主にSpMV Acceleratorと 組み合わせ) — 小さいモデルへ 蒸留 (distillation) ◆ 小さなモデルに教師モデル 分布を学習させる ● Emerging deviceを利用したも も様々提案がある(が、現時点で まだMNIST など Toy Problemが解ける程度という印象)
  • 40. なぜ今DL専用アクセラレータ開発な か? ● 「大きな計算能力が必要」という需要 観点以外にも、ハードウェア開発を加 さ せる背景がある — Deep Learning 応用範囲が拡大していること — Deep Learningにおいて必要とされる演算精度がこれまで 科学技術計算と異なること — 演算手順が計算グラフによって宣言的に定義されること
  • 41. 計算グラフと中間表現 ● Deep learning モデル 計算グラフとして 表現できる ● 現実的に モデル element-wiseな計算 依存関係で なくオペレータ (レイヤ) 接続関係としてDeep Learning Framework 上で表現される — I/F Frameworkごとに異なっても表現し ているも に大きな違い ない ● 手続き的な表現でなく宣言的な表現 (グラフ IR)が手に入る! — 中間表現 標準化:ONNX, NNEFなど
  • 42. 計算グラフが手に入るうれしさ - アーキテクチャ観点から ● 高度なオフラインスケジューリングが可能 — 変数 life-timeが既知 ◆ cache 重要性 低下 (scratchpadで十分) — 演算順序がdeterministicに決定可能 ◆ 分岐予測 重要性 低下 (値に依存して分岐することが少ない) ◆ 並列性が抽出しやすい -> 高度なオフラインスケジューラを前提としたシンプルかつ並列度 高いプ ロセッサアーキテクチャを現実的に利用可能
  • 43. 深層学習コンパイラ ● グラフIRを入力に、ターゲット依存 最適化を行うコンパイラ The figure was excerpted from Tianqi Chen et al. TVM: An Automated End-to-End Optimizing Compiler for Deep Learning https://arxiv.org/abs/1802.04799 ● オペレータ単位でプロセッサ専用 高効率カーネルを定義可能 ● 演算 fusionやスケジューリング、メ モリ配置 最適化 ● 演算 スケジューリング /メモリ配置 最適化 ● 再計算 — 計算量を増加させることで、メモリ使用量 を削減する
  • 44. Chainer-compiler ● Box: software component / Rounded corner: data ● Yellow: exists / Grey: future work CH2O elichika XCVM runtime Python Chainer ONNX+ inferenc e XCVM IR ONNX Chainer ONNX+ training Compiler code gen Menoh C API @static graph MN-Core? Static graph analysis Visualizers (e.g., netron) native binary (AOT) Compiler middle end
  • 45. 今日話す内容 • PFNについて • 深層学習と • 深層学習における計算・ワークフロー • Deep Learning 高 化 – ソフトウェア 視点から – ハードウェア 視点から • MN-Core 開発について • まとめ
  • 46. 深層学習用プロセッサ MN-Core 倍精度 単精度 半精度 TFLOP 32.8 131 524 TFLOP/W 0.066 0.26 1.0 開発中 • Deep Learning Trainingに特 化した専用設計 ASIC • 特に計算量 多いConvolution Kernelを高 化するため 専用 設計
  • 47. MN-Core • 階層メモリ型SIMDアーキテク チャによって512MABを1chip に集積 – 各階層 メモリ スク ラッチパッドとして利用 可能 – 各階層間で 分配、結 合、放送、縮約といった 複数 転送モードをサ ポート • 倍/単/半精度相当及び混合 精度 行列積演算をサポート • Deep Learningに特化した演 算器を搭載 製 プロセス TSMC 12nm 消費電力 (W、予測値) 500 (4die, 1package合計) ピーク性能 (TFLOPS) 32.8 (倍精度) / 131 (単精度) / 524 (半精度) 電力性能 (TFLOPS / W、予測値) 0.066 (倍精度) / 0.26 (単精度) / 1.0 (半精度)
  • 48. MN-Core • PCIe接続 アクセラレータカードとして提供 • ボード及びサーバも開発中 – MN-Coreを搭載したクラスタを2020年に運用開始予定(目標) チップ 1 MN-Core チップ (4die) インターフェース PCI Express Gen3 x16 メモリサイズ 32 GB (ボード当たり) 消費電力 600 W (予測値)
  • 49. GPUとMN-Core • 汎用性と性能 トレードオフ – GPUとMN-Core 補完関係にある (全て jobがMN-Coreにfitするわけで ない) Architecture can be simpler GPU MN-Core Computation intensive SIMD friendly Convolution layer Dense matrix algo. Particle sim. Sparse matrix algo. Finite diff. method CPU FFT Graph algo.Rigid body sim. new app? Circuit sim.
  • 50. MN-Core開発チーム ● ハードウェア/ソフトウェアエンジニア 垣根なくフレキシブルに働いている — そもそも区分けが会社全体として存在していない ● HDLをソフトウェアエンジニアが読みつつ・・・など よくある 開発メンバー ● 神戸大学 牧野淳一郎教授と共同で アーキテクチャ検討を実施 — ASIC開発に関して 経験豊富な GRAPE開発メンバがリード
  • 51. MN-Core 開発 ● 開発プロセスに何か特筆すべき事項があるわけで ない — SystemCベース 検証環境 ◆ 主にデバイスドライバなどと 協調検証に利用 — ソフトウェアエミュレータ ◆ MN-Core 命令レベルエミュレータ ◆ 上位 アプリケーションレベル 記述性 確認 ◆ RTLと 最終的な比較一致検証 — 演算器 精度などについて Chainer側に手を入れ一部モデルで検証を実施
  • 52. HWを支えるSWについて • ユーザにとって いつも コードをいつも 方法で動かして、結果 くなるという が理想(使 うために大きなオーバヘッド 避けるべき) • 既存 Chainerからシームレスに、かつ高効率にMN-Coreを利用可能にするため ソフト ウェア 研究開発を行っています – 専用ASICを利用するため ツールチェーン群 – ChainerX • 高 な自動微分 実装、選択可能なbackend – Chainer-compiler • Pythonから拡張ONNXフォーマットへ convert • 拡張ONNX上における計算グラフ 最適化、自動微分
  • 53. PFN プロセッサ関連研究へ 取り組み ● 次世代 プロセッサ 開発を並行して実施している (NEDO PJ) ● そ 他、新しい検討など — 新しいアーキテクチャ 検討・評価 — 形式手法を用いたテスト 自動生成 — 高 ・高機能なHPC向けInterconnect 検討 ● 今後重要になりそうなTopic — システム (データセンタ)全体として性能を出すため 仕組み ◆ 既に学習を律 するも がプロセッサで なくなりつつある
  • 54. さいごに ● Deep Learning 分野において 計算能力 向上が求められている — 高 化 アプローチ:Scale-out (分散並列化)とScale-up (専用アクセラレータ) — プロセッサ 設計/効率的な利用という観点で 、宣言的に計算が定義されることが重要 ◆ オフラインスケジューリングを前提としたシンプルな並列アーキテクチャ ◆ 深層学習コンパイラ ● Deep learning ため 最適な計算機を構築するために 専用ASIC (MN-Core) から上位ソフトウェアフレームワークまで含めて全体を考え ていく必要がある