20171212 gtc pfn海野裕也_chainerで加速する深層学習とフレームワークの未来
TRANSCRIPT
![Page 1: 20171212 gtc pfn海野裕也_chainerで加速する深層学習とフレームワークの未来](https://reader033.vdocuments.site/reader033/viewer/2022050613/5a64784e7f8b9a27568b459b/html5/thumbnails/1.jpg)
Chainerで加速する深層学習とフレームワークの未来
Preferred Networks 海野裕也
1
![Page 2: 20171212 gtc pfn海野裕也_chainerで加速する深層学習とフレームワークの未来](https://reader033.vdocuments.site/reader033/viewer/2022050613/5a64784e7f8b9a27568b459b/html5/thumbnails/2.jpg)
自己紹介
海野裕也
-2008 東大情報理工修士,自然言語処理
2008-2011 日本アイ・ビー・エム(株)東京基礎研
2011-2016 (株)プリファードインフラストラクチャー
2016-(株)プリファードネットワークス 自然言語処理、機械学習、テキストマイニング
ChainerやCuPyなどのOSS開発
機械とのコミュニケーションの研究開発
NLP若手の会
「オンライン機械学習」(2015, 講談社)
「深層学習による自然言語処理」(2017, 講談社)
2
![Page 3: 20171212 gtc pfn海野裕也_chainerで加速する深層学習とフレームワークの未来](https://reader033.vdocuments.site/reader033/viewer/2022050613/5a64784e7f8b9a27568b459b/html5/thumbnails/3.jpg)
http://chainer.org/
3
![Page 4: 20171212 gtc pfn海野裕也_chainerで加速する深層学習とフレームワークの未来](https://reader033.vdocuments.site/reader033/viewer/2022050613/5a64784e7f8b9a27568b459b/html5/thumbnails/4.jpg)
Chainerの目標
高い自由度で直感的に記述できる
十分に高速に実行できる
容易にデバッグできる
社内の深層学習の研究開発を加速させる世の中
4
![Page 5: 20171212 gtc pfn海野裕也_chainerで加速する深層学習とフレームワークの未来](https://reader033.vdocuments.site/reader033/viewer/2022050613/5a64784e7f8b9a27568b459b/html5/thumbnails/5.jpg)
Chainer開発時のフレームワークの状況
旧 新
5
![Page 6: 20171212 gtc pfn海野裕也_chainerで加速する深層学習とフレームワークの未来](https://reader033.vdocuments.site/reader033/viewer/2022050613/5a64784e7f8b9a27568b459b/html5/thumbnails/6.jpg)
深層学習研究者・エンジニアがすること
1. ネットワークを考案 2. ネットワーク定義を記述
3. データを用意4. 計算機で最適化
フレームワークが担当する所6
![Page 7: 20171212 gtc pfn海野裕也_chainerで加速する深層学習とフレームワークの未来](https://reader033.vdocuments.site/reader033/viewer/2022050613/5a64784e7f8b9a27568b459b/html5/thumbnails/7.jpg)
深層学習フレームワークがやるべきこと
どのようにネットワーク定義を記述するか
複雑なモデルを簡単に記述するには?
定義の間違いを防ぐには?
デバッグするには?
どのように最適化するか
自動微分(誤差逆伝播)と最適化ルーチンを提供
いかに高速・省メモリで実行するか?
7
![Page 8: 20171212 gtc pfn海野裕也_chainerで加速する深層学習とフレームワークの未来](https://reader033.vdocuments.site/reader033/viewer/2022050613/5a64784e7f8b9a27568b459b/html5/thumbnails/8.jpg)
ニューラルネットワーク=計算グラフ
ネットワーク定義さえできれば誤差逆伝播によって学習は
自動化される
x matmul a
W
+
b
ŷ MSE l
y
l = MSE(matmul(x, W) + b, y)
8
![Page 9: 20171212 gtc pfn海野裕也_chainerで加速する深層学習とフレームワークの未来](https://reader033.vdocuments.site/reader033/viewer/2022050613/5a64784e7f8b9a27568b459b/html5/thumbnails/9.jpg)
計算グラフの作成戦略 define-and-runとdefine-by-run
define-and-run(静的グラフ)
ネットワーク定義と計算実行の2ステップに別れる
Caffe, theano, TensorFlowなど
define-by-run(動的グラフ)
計算実行のコード自体がネットワーク定義を兼ねる
Chainer, DyNet, PyTorchなど
9
![Page 10: 20171212 gtc pfn海野裕也_chainerで加速する深層学習とフレームワークの未来](https://reader033.vdocuments.site/reader033/viewer/2022050613/5a64784e7f8b9a27568b459b/html5/thumbnails/10.jpg)
擬似コードで比較する
define-and-run
# ネットワーク定義
x = Variable(‘x’)
y = Variable(‘y’)
z = x + 2 * y
# 計算
for xi, yi in data:
eval(z, (xi, yi))
define-by-run
# 定義と計算が同時
for xi, yi in data:
x = Variable(xi)
y = Variable(yi)
z = x + 2 * y
データを見ながら違う処理をしてもよい
10
![Page 11: 20171212 gtc pfn海野裕也_chainerで加速する深層学習とフレームワークの未来](https://reader033.vdocuments.site/reader033/viewer/2022050613/5a64784e7f8b9a27568b459b/html5/thumbnails/11.jpg)
デバッグのしやすさで比較する
define-and-run
# ネットワーク定義
x = Variable(‘x’)
y = Variable(‘y’)
z = x + 2 / y
# 計算
for xi, yi in data:
eval(z, (xi, yi))
define-by-run
for xi, yi in data:
x = Variable(xi)
y = Variable(yi)
z = x + 2 / y
実行時エラーと定義の対応が取りづらい
エラーはただちに確認できる
11
![Page 12: 20171212 gtc pfn海野裕也_chainerで加速する深層学習とフレームワークの未来](https://reader033.vdocuments.site/reader033/viewer/2022050613/5a64784e7f8b9a27568b459b/html5/thumbnails/12.jpg)
デバッグコードで比較する
define-and-run
x = Variable(‘x’)
y = Variable(‘y’)
w = 2 * y
w = PrintNode(w)
z = x + w
define-by-run
for xi, yi in data:
x = Variable(xi)
y = Variable(yi)
w = 2 * y
print(w)
z = x + w
特殊なノードを追加 ただのPythonのprint文
12
![Page 13: 20171212 gtc pfn海野裕也_chainerで加速する深層学習とフレームワークの未来](https://reader033.vdocuments.site/reader033/viewer/2022050613/5a64784e7f8b9a27568b459b/html5/thumbnails/13.jpg)
define-by-runのお陰で生産性が向上
直感的に記述できる
デバッグも簡単に
13
![Page 14: 20171212 gtc pfn海野裕也_chainerで加速する深層学習とフレームワークの未来](https://reader033.vdocuments.site/reader033/viewer/2022050613/5a64784e7f8b9a27568b459b/html5/thumbnails/14.jpg)
GPUはCuPyという行列ライブラリを独自に作成して利用
Chainer
CPU
BLAS
NumPyCuPy
CUDA/cuDNN
NVIDIA GPU
14
![Page 15: 20171212 gtc pfn海野裕也_chainerで加速する深層学習とフレームワークの未来](https://reader033.vdocuments.site/reader033/viewer/2022050613/5a64784e7f8b9a27568b459b/html5/thumbnails/15.jpg)
CuPyはCUDAを利用したNumPy互換の行列計算ライブラリ
CUDAとその周辺ライブラリを利用した行列ライブラリ
CUDA、cuDNNのAPI変更を吸収
NumPyの挙動を忠実に再現
自分でカーネルを簡単に書く機能も提供
15
![Page 16: 20171212 gtc pfn海野裕也_chainerで加速する深層学習とフレームワークの未来](https://reader033.vdocuments.site/reader033/viewer/2022050613/5a64784e7f8b9a27568b459b/html5/thumbnails/16.jpg)
CuPyとNumPyの比較
16
import numpy
x = numpy.array([1,2,3], numpy.float32)
y = x * x
s = numpy.sum(y)
print(s)
import cupy
x = cupy.array([1,2,3], cupy.float32)
y = x * x
s = cupy.sum(y)
print(s)
![Page 17: 20171212 gtc pfn海野裕也_chainerで加速する深層学習とフレームワークの未来](https://reader033.vdocuments.site/reader033/viewer/2022050613/5a64784e7f8b9a27568b459b/html5/thumbnails/17.jpg)
高い互換性のため生産性が向上
ライブラリを新たに覚える必要がない
CuPyとNumPyでコードを共通化できる
既存のNumPyのコードをそのまま流用できる
17
![Page 18: 20171212 gtc pfn海野裕也_chainerで加速する深層学習とフレームワークの未来](https://reader033.vdocuments.site/reader033/viewer/2022050613/5a64784e7f8b9a27568b459b/html5/thumbnails/18.jpg)
CuPyは深層学習以外にも利用できる
サンプルコードとして深層学習以外のコードを公開
古典的な機械学習(K-MeansやGMM)、数値計算(CG法)、
金融向け(モンテカルロ法)など
NumPyと高い互換性があるので、numpyをcupyに書き
換えるだけで既存コードが動作する
18
![Page 19: 20171212 gtc pfn海野裕也_chainerで加速する深層学習とフレームワークの未来](https://reader033.vdocuments.site/reader033/viewer/2022050613/5a64784e7f8b9a27568b459b/html5/thumbnails/19.jpg)
Chainer公開から2年半
19
![Page 20: 20171212 gtc pfn海野裕也_chainerで加速する深層学習とフレームワークの未来](https://reader033.vdocuments.site/reader033/viewer/2022050613/5a64784e7f8b9a27568b459b/html5/thumbnails/20.jpg)
多くのライブラリがdefine-by-runの重要性に気づいた
PyTorch Chainerをforkして、バックエンドをTorchにした
TensorFlow define-by-run (Eager mode) を最近サポート
Gluon mxnetやCNTKにdefine-by-runのインターフェースを提供
20
![Page 21: 20171212 gtc pfn海野裕也_chainerで加速する深層学習とフレームワークの未来](https://reader033.vdocuments.site/reader033/viewer/2022050613/5a64784e7f8b9a27568b459b/html5/thumbnails/21.jpg)
深層学習自体のトレンドもどんどん変わる
データセットは大規模化
異なるデータや手法の組み合わせ
急速に進む実用化
21
![Page 22: 20171212 gtc pfn海野裕也_chainerで加速する深層学習とフレームワークの未来](https://reader033.vdocuments.site/reader033/viewer/2022050613/5a64784e7f8b9a27568b459b/html5/thumbnails/22.jpg)
フレームワークの役割が広がっている
単に誤差逆伝播を実行すればよいだけではなくなった
大規模なデータを学習するための分散学習
複雑な手法のサポートする高レベルライブラリ
ユースケースに合わせた多様な実行環境のサポート
22
![Page 23: 20171212 gtc pfn海野裕也_chainerで加速する深層学習とフレームワークの未来](https://reader033.vdocuments.site/reader033/viewer/2022050613/5a64784e7f8b9a27568b459b/html5/thumbnails/23.jpg)
分散学習を可能にするChainerMN
23
![Page 24: 20171212 gtc pfn海野裕也_chainerで加速する深層学習とフレームワークの未来](https://reader033.vdocuments.site/reader033/viewer/2022050613/5a64784e7f8b9a27568b459b/html5/thumbnails/24.jpg)
典型的なケースでフレームワーク間の速度差はなくなってきている
https://github.com/ilkarman/DeepLearningFrameworks
0 50 100 150 200 250
Keras(CNTK)
Tensorflow
PyTorch
CNTK
Chainer
Knet(Julia)
Gluon
Caffe2
MXNet
Training CNN (VGG-style) on CIFAR-1
Training Time (s)
24
![Page 25: 20171212 gtc pfn海野裕也_chainerで加速する深層学習とフレームワークの未来](https://reader033.vdocuments.site/reader033/viewer/2022050613/5a64784e7f8b9a27568b459b/html5/thumbnails/25.jpg)
速度における貢献度
GPU
CUDA
GPU
CUDA
cuDNN
フレームワーク
以前 2017年
フレームワーク
CUDA/cuDNNが典型的な実装をカバーしたため、速度はそれらが担保するようになってきた
25
![Page 26: 20171212 gtc pfn海野裕也_chainerで加速する深層学習とフレームワークの未来](https://reader033.vdocuments.site/reader033/viewer/2022050613/5a64784e7f8b9a27568b459b/html5/thumbnails/26.jpg)
そうだ分散だ!
26
![Page 27: 20171212 gtc pfn海野裕也_chainerで加速する深層学習とフレームワークの未来](https://reader033.vdocuments.site/reader033/viewer/2022050613/5a64784e7f8b9a27568b459b/html5/thumbnails/27.jpg)
ChainerMN
Chainerの使いやすさはそのままに,複数GPU,複数ノード環境で高
速に学習することができる
GPU
GPU
InfiniBand
GPU
GPU
InfiniBand
27
![Page 28: 20171212 gtc pfn海野裕也_chainerで加速する深層学習とフレームワークの未来](https://reader033.vdocuments.site/reader033/viewer/2022050613/5a64784e7f8b9a27568b459b/html5/thumbnails/28.jpg)
ノード内通信とノード間通信をそれぞれ最適化
InfiniBand
MPI
ChainerMN
pyMPI
NCCL
NVIDIA GPU
ノード内 ノード間
CuPy
28
![Page 29: 20171212 gtc pfn海野裕也_chainerで加速する深層学習とフレームワークの未来](https://reader033.vdocuments.site/reader033/viewer/2022050613/5a64784e7f8b9a27568b459b/html5/thumbnails/29.jpg)
GPUの数にほぼ比例した性能向上
29
![Page 30: 20171212 gtc pfn海野裕也_chainerで加速する深層学習とフレームワークの未来](https://reader033.vdocuments.site/reader033/viewer/2022050613/5a64784e7f8b9a27568b459b/html5/thumbnails/30.jpg)
学習速度が向上することが最も重要
30
![Page 31: 20171212 gtc pfn海野裕也_chainerで加速する深層学習とフレームワークの未来](https://reader033.vdocuments.site/reader033/viewer/2022050613/5a64784e7f8b9a27568b459b/html5/thumbnails/31.jpg)
他のフレームワークに比べても高速
31
![Page 32: 20171212 gtc pfn海野裕也_chainerで加速する深層学習とフレームワークの未来](https://reader033.vdocuments.site/reader033/viewer/2022050613/5a64784e7f8b9a27568b459b/html5/thumbnails/32.jpg)
MN-1: an in-house supercomputer
NVIDIA Tesla P100 × 10248 GPUs per node, 128 nodes in total
Inter-connected by InfiniBand FDR2 HCAs per node, tree-like topology
スパコンランキング、産業領域で国内1位(世界12位)
32
![Page 33: 20171212 gtc pfn海野裕也_chainerで加速する深層学習とフレームワークの未来](https://reader033.vdocuments.site/reader033/viewer/2022050613/5a64784e7f8b9a27568b459b/html5/thumbnails/33.jpg)
ResNet-50のImageNetによる学習が15分
Team Hardware Software Batchsize Time Accuracy
He et al. P100 × 8 Caffe 256 29 hr 75.3 %
Goyal et al. P100 × 256 Caffe2 8,192 1 hr 76.3 %
Codreanu
et al.
KNL 7250 ×
720Intel Caffe 11,520 62 min 75.0 %
You et al.Xeon 8160 ×
1600Intel Caffe 16,000 31 min 75.3 %
Akiba et al. P100 × 1024 Chainer 32,768 15 min 74.9 %
33
![Page 34: 20171212 gtc pfn海野裕也_chainerで加速する深層学習とフレームワークの未来](https://reader033.vdocuments.site/reader033/viewer/2022050613/5a64784e7f8b9a27568b459b/html5/thumbnails/34.jpg)
Microsoft AzureのInfiniBand付きノード上でスケール
自前でサーバーを持たなくても分散学習できる34
![Page 35: 20171212 gtc pfn海野裕也_chainerで加速する深層学習とフレームワークの未来](https://reader033.vdocuments.site/reader033/viewer/2022050613/5a64784e7f8b9a27568b459b/html5/thumbnails/35.jpg)
分散深層学習をコモディティー化していく
深層学習は分散させるのが当たり前になるように
35
![Page 36: 20171212 gtc pfn海野裕也_chainerで加速する深層学習とフレームワークの未来](https://reader033.vdocuments.site/reader033/viewer/2022050613/5a64784e7f8b9a27568b459b/html5/thumbnails/36.jpg)
様々な手法を組み合わせるための高レベルライブラリ
36
![Page 37: 20171212 gtc pfn海野裕也_chainerで加速する深層学習とフレームワークの未来](https://reader033.vdocuments.site/reader033/viewer/2022050613/5a64784e7f8b9a27568b459b/html5/thumbnails/37.jpg)
どんどん複雑になる深層学習の課題
画像処理 自然言語 音声処理 ・・・
かつては各領域ごとに研究していたが・・・
画像+言語 画像+音声 画像+強化学習 ・・・
領域横断的な課題に取り組めるようになった
37
![Page 38: 20171212 gtc pfn海野裕也_chainerで加速する深層学習とフレームワークの未来](https://reader033.vdocuments.site/reader033/viewer/2022050613/5a64784e7f8b9a27568b459b/html5/thumbnails/38.jpg)
具体例:言葉を理解して作業するロボットの研究
38
![Page 39: 20171212 gtc pfn海野裕也_chainerで加速する深層学習とフレームワークの未来](https://reader033.vdocuments.site/reader033/viewer/2022050613/5a64784e7f8b9a27568b459b/html5/thumbnails/39.jpg)
深層学習が簡単になったため,手法や課題が複雑化
Chainer
全部自作
深層学習
Chainer
深層学習が複雑化
Chainer
よりハイレベルなサポートが必用
深層学習
39
![Page 40: 20171212 gtc pfn海野裕也_chainerで加速する深層学習とフレームワークの未来](https://reader033.vdocuments.site/reader033/viewer/2022050613/5a64784e7f8b9a27568b459b/html5/thumbnails/40.jpg)
分野特化した高レベルライブラリをリリース
強化学習
画像処理
Coming soon …
40
![Page 41: 20171212 gtc pfn海野裕也_chainerで加速する深層学習とフレームワークの未来](https://reader033.vdocuments.site/reader033/viewer/2022050613/5a64784e7f8b9a27568b459b/html5/thumbnails/41.jpg)
ChainerRL:深層強化学習ライブラリ
環境やエージェントなど強化学習の要素を抽象化
最新の強化学習アルゴリズムをサポート DQN, DDPG, A3C, ACER, ...
Agent Environment
Action
Reward
41
![Page 42: 20171212 gtc pfn海野裕也_chainerで加速する深層学習とフレームワークの未来](https://reader033.vdocuments.site/reader033/viewer/2022050613/5a64784e7f8b9a27568b459b/html5/thumbnails/42.jpg)
42
![Page 43: 20171212 gtc pfn海野裕也_chainerで加速する深層学習とフレームワークの未来](https://reader033.vdocuments.site/reader033/viewer/2022050613/5a64784e7f8b9a27568b459b/html5/thumbnails/43.jpg)
ChainerCV:画像処理ライブラリ
物体検知、セグメンテーション、画像分類といった、典
型的な画像処理を前処理・後処理含めてサポート
Faster R-CNN, SSD, SegNet, VGG…
可視化などのユーティリティーも提供
43
![Page 44: 20171212 gtc pfn海野裕也_chainerで加速する深層学習とフレームワークの未来](https://reader033.vdocuments.site/reader033/viewer/2022050613/5a64784e7f8b9a27568b459b/html5/thumbnails/44.jpg)
複雑な研究をサポートするため可視化・管理ツールをリリース予定
44
![Page 45: 20171212 gtc pfn海野裕也_chainerで加速する深層学習とフレームワークの未来](https://reader033.vdocuments.site/reader033/viewer/2022050613/5a64784e7f8b9a27568b459b/html5/thumbnails/45.jpg)
周辺ライブラリがより重要度を増していく
深層学習の適用領域は今後も増え続ける
実験管理やデバッグのしやすさまで、効率的に実験を進
められるようにする
45
![Page 46: 20171212 gtc pfn海野裕也_chainerで加速する深層学習とフレームワークの未来](https://reader033.vdocuments.site/reader033/viewer/2022050613/5a64784e7f8b9a27568b459b/html5/thumbnails/46.jpg)
多様な実行環境のサポート
46
![Page 47: 20171212 gtc pfn海野裕也_chainerで加速する深層学習とフレームワークの未来](https://reader033.vdocuments.site/reader033/viewer/2022050613/5a64784e7f8b9a27568b459b/html5/thumbnails/47.jpg)
急速に実用化される深層学習技術
音声認識
各社のエンジンにすでに搭載されている
画像認識
実用化段階で、一部のサービスの裏ではすでに利用されている
自然言語処理
機械翻訳など、一部は実用化されている
47
![Page 48: 20171212 gtc pfn海野裕也_chainerで加速する深層学習とフレームワークの未来](https://reader033.vdocuments.site/reader033/viewer/2022050613/5a64784e7f8b9a27568b459b/html5/thumbnails/48.jpg)
ハードウェアの選択は速度だけが重要ではない
利用シーンの違い
運用コストの違い
消費電力の違い
48
![Page 49: 20171212 gtc pfn海野裕也_chainerで加速する深層学習とフレームワークの未来](https://reader033.vdocuments.site/reader033/viewer/2022050613/5a64784e7f8b9a27568b459b/html5/thumbnails/49.jpg)
多様な環境をサポートするための取り組み
標準形式ONNXへのエクスポート
Intel CPU向けの最適化
Windows向けバイナリの配布
49
![Page 50: 20171212 gtc pfn海野裕也_chainerで加速する深層学習とフレームワークの未来](https://reader033.vdocuments.site/reader033/viewer/2022050613/5a64784e7f8b9a27568b459b/html5/thumbnails/50.jpg)
ONNX (Open Neural Network Exchange) のサポート
50
![Page 51: 20171212 gtc pfn海野裕也_chainerで加速する深層学習とフレームワークの未来](https://reader033.vdocuments.site/reader033/viewer/2022050613/5a64784e7f8b9a27568b459b/html5/thumbnails/51.jpg)
Chainerで学習した結果を様々なプラットフォーム上で動作可能に
NNVM/TVM TensorRT
Jetson
51
![Page 52: 20171212 gtc pfn海野裕也_chainerで加速する深層学習とフレームワークの未来](https://reader033.vdocuments.site/reader033/viewer/2022050613/5a64784e7f8b9a27568b459b/html5/thumbnails/52.jpg)
バックエンドを切り替えてCPUしかない環境にも最適化できるように
Chainer
ideep
MKL-DNN
MKL (Math Kernel Library)
Intel CPU
MKL NumPy
BLAS
NumPyCuPy
CUDA/cuDNN
NVIDIA GPU
52
![Page 53: 20171212 gtc pfn海野裕也_chainerで加速する深層学習とフレームワークの未来](https://reader033.vdocuments.site/reader033/viewer/2022050613/5a64784e7f8b9a27568b459b/html5/thumbnails/53.jpg)
おわりに
今日お話したのは今のトレンド
今後の新しい研究トレンドにも
迅速に対応していきます
53
![Page 54: 20171212 gtc pfn海野裕也_chainerで加速する深層学習とフレームワークの未来](https://reader033.vdocuments.site/reader033/viewer/2022050613/5a64784e7f8b9a27568b459b/html5/thumbnails/54.jpg)
まとめ
Chainerは自由度の高い深層学習フレームワーク
大規模分散学習のためのChainerMN
多様な研究を支えるためのChainerRL, ChainerCVなど
の高レベルライブラリ
実運用向けのONNXサポートなど
54
![Page 55: 20171212 gtc pfn海野裕也_chainerで加速する深層学習とフレームワークの未来](https://reader033.vdocuments.site/reader033/viewer/2022050613/5a64784e7f8b9a27568b459b/html5/thumbnails/55.jpg)
55