Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.
深層学習フレームワーク
Chainerとその進化
Preferred Networks 海野 裕也
http://chainer.org/
Chainerの⽬標
l ⾼い⾃由度で直感的に記述できる
l ⼗分に⾼速に実⾏できる
l 容易にデバッグできる
社内の深層学習の研究開発を加速させる
世の中
ニューラルネットの学習⽅法
1. ⽬的関数の設計
l RNNなどを利⽤して⾃分で設計
2. 勾配の計算
l ⾃動で計算できる(これから説明)
3. 最⼩化のための反復計算
l ライブラリが提供してくれる
4
1さえ設計すれば残りは
ほぼ⾃動化さ...
ニューラルネット=合成関数
l ベクトルに対して線形・⾮線形な関数をたくさん適⽤す
る合成関数と捉えるとよい
l 各ノードはベクトルを保持する変数
l 各関数はLSTMや線形和など様々
5
y = h(g(f(x)))
計算グラフの例
z = x ** 2 + 2 * x * y + y
6
x
y
_ ** 2
2 * _ _ * _ _ + _ z
_ + _
誤差逆伝播によって勾配を計算できるのが重要
l 誤差逆伝播は連鎖律をつかって勾配を計算する
l ニューラルネットのフレームワークはこれを⾃動で
⾏ってくれる
7
y’ = h’(g(f(x))) g’(f(x)) f’(x)
計算グラフの作成戦略 define-and-runとdefine-by-run
l define-and-run(静的グラフ)
l まず計算グラフを構築し、構築した計算グラフにデータを流すと
いう、2ステップから成る
l Caffe, thea...
擬似コードで⽐較する
define-and-run
# 構築
x = Variable(‘x’)
y = Variable(‘y’)
z = x + 2 * y
# 評価
for xi, yi in data:
eval(z, (xi, yi)...
なぜ、⾃由度の⾼いフレームワークが必要か?
深層学習とは階層の深いだけではなくなってきている
l 深いボルツマンマシン
l 深い畳込みニューラルネットワーク
l 再帰ニューラルネットワーク
l 双⽅向再帰ネットワーク
l 注意機構
⼿法⾃体がど...
研究開発・実⽤化を加速する様々なプロジェクトを紹介
l ChainerMN
l 複数ノード上で分散計算するChainer
l ChainerRL
l Chainerを利⽤した深層強化学習ライブラリ
l Intel版Chainer
l Intel...
l 2015/04 Chainer開発開始
l 2015/06 Chainer 1.0.0公開
l 2015/11 TensorFlow公開
l 2017/01 ChainerMNの実験結果公表
l 2017/01 PaintsChainer公...
ChainerMN
ChainerMN
Chainerの使いやすさはそのままに,複数GPU,複数ノード環境で⾼
速に学習することができる
GPU
GPU
InfiniBand
GPU
GPU
InfiniBand
ノード内通信とノード間通信をそれぞれ最適化
InfiniBand
MPI
ChainerMN
pyMPI
NCCL
NVIDIA GPU
ノード内 ノード間
CuPy
既存のコードを多少書き換えるだけで利⽤できる
optimizer = chainer.optimizers.MomentumSGD()
optimizer = chainermn.DistributedOptimizer(
chainer.op...
GPUの数にほぼ⽐例した性能向上
実時間に対する学習速度も向上
他のフレームワークに⽐べても⾼速
ChainerRL
ChainerRL
Chainerを使った深層強化学習フレームワーク
https://github.com/pfnet/chainerrl
強化学習は試⾏錯誤で学習する⼿法
どうすればいいか(教師データ)を教えるのではなく,試
⾏錯誤して正しい⽅法を探す学習⽅法
教師あり学習:いつペダルを踏むかを教える
強化学習:倒れずに前に進む⽅法を試⾏錯誤
24
深層学習が簡単になったため,⼿法が複雑化
Chainer
全部⾃作
深層学習
Chainer
深層学習
が複雑化
Chainer
ChainerRL
深層学習
Intel版Chainer
ハードウェアの選択は速度だけが重要ではない
l 利⽤シーンの違い
l 運⽤コストの違い
l 消費電⼒の違い
Intel版Chainer
Github上でIntel CPU向けに最適化されたChainerの開発
が開始
https://github.com/intel/chainer
Intel CPU上でのChainer
Chainer
MKL-DNN
MKL (Math Kernel Library)
Intel CPU
MKL NumPy
OpenBLAS/ATLAS
NumPy
MKL-DNNはCPU向けの最適化された深層学習ライブラリ
l MKL (Intel Math Kernel Library)
l Intel製の数値計算ライブラリ
l NumPyのバックエンドとして利⽤可能
l MKL-DNN
l Intel...
まとめ
l Chainerは⾃由度の⾼い深層学習フレームワーク
l Chainerの周辺で様々なプロジェクトが進⾏中
l ChainerMN:⼤規模分散学習
l ChainerRL:深層強化学習ライブラリ
l Intel版Chainer:CPU...
深層学習フレームワークChainerとその進化
深層学習フレームワークChainerとその進化
Prochain SlideShare
Chargement dans…5
×

深層学習フレームワーク Chainerとその進化

2 332 vues

Publié le

2017/04/06 Intel AI Dayの講演資料

Publié dans : Technologie
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

深層学習フレームワーク Chainerとその進化

  1. 1. 深層学習フレームワーク Chainerとその進化 Preferred Networks 海野 裕也
  2. 2. http://chainer.org/
  3. 3. Chainerの⽬標 l ⾼い⾃由度で直感的に記述できる l ⼗分に⾼速に実⾏できる l 容易にデバッグできる 社内の深層学習の研究開発を加速させる 世の中
  4. 4. ニューラルネットの学習⽅法 1. ⽬的関数の設計 l RNNなどを利⽤して⾃分で設計 2. 勾配の計算 l ⾃動で計算できる(これから説明) 3. 最⼩化のための反復計算 l ライブラリが提供してくれる 4 1さえ設計すれば残りは ほぼ⾃動化されている
  5. 5. ニューラルネット=合成関数 l ベクトルに対して線形・⾮線形な関数をたくさん適⽤す る合成関数と捉えるとよい l 各ノードはベクトルを保持する変数 l 各関数はLSTMや線形和など様々 5 y = h(g(f(x)))
  6. 6. 計算グラフの例 z = x ** 2 + 2 * x * y + y 6 x y _ ** 2 2 * _ _ * _ _ + _ z _ + _
  7. 7. 誤差逆伝播によって勾配を計算できるのが重要 l 誤差逆伝播は連鎖律をつかって勾配を計算する l ニューラルネットのフレームワークはこれを⾃動で ⾏ってくれる 7 y’ = h’(g(f(x))) g’(f(x)) f’(x)
  8. 8. 計算グラフの作成戦略 define-and-runとdefine-by-run l define-and-run(静的グラフ) l まず計算グラフを構築し、構築した計算グラフにデータを流すと いう、2ステップから成る l Caffe, theano, TensorFlowなど l define-by-run(動的グラフ) l 通常の⾏列演算をする感覚で順伝播処理をすると同時に、逆伝播 ⽤の計算グラフが構築される l Chainer, DyNet, PyTorchなど 8
  9. 9. 擬似コードで⽐較する 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 9 データを⾒ながら 違う処理をしてもよい
  10. 10. なぜ、⾃由度の⾼いフレームワークが必要か? 深層学習とは階層の深いだけではなくなってきている l 深いボルツマンマシン l 深い畳込みニューラルネットワーク l 再帰ニューラルネットワーク l 双⽅向再帰ネットワーク l 注意機構 ⼿法⾃体がどんどん複雑化して、古いフレームワークは新⼿法を扱い づらくなっていく 10
  11. 11. 研究開発・実⽤化を加速する様々なプロジェクトを紹介 l ChainerMN l 複数ノード上で分散計算するChainer l ChainerRL l Chainerを利⽤した深層強化学習ライブラリ l Intel版Chainer l Intel CPU上で最適化されたChainer
  12. 12. l 2015/04 Chainer開発開始 l 2015/06 Chainer 1.0.0公開 l 2015/11 TensorFlow公開 l 2017/01 ChainerMNの実験結果公表 l 2017/01 PaintsChainer公開 l 2017/02 ChainerRL公開 l 2017/03 Intel版Chainerのリポジトリが公開 l 2017/05 Chainer 2.0.0公開予定
  13. 13. ChainerMN
  14. 14. ChainerMN Chainerの使いやすさはそのままに,複数GPU,複数ノード環境で⾼ 速に学習することができる GPU GPU InfiniBand GPU GPU InfiniBand
  15. 15. ノード内通信とノード間通信をそれぞれ最適化 InfiniBand MPI ChainerMN pyMPI NCCL NVIDIA GPU ノード内 ノード間 CuPy
  16. 16. 既存のコードを多少書き換えるだけで利⽤できる optimizer = chainer.optimizers.MomentumSGD() optimizer = chainermn.DistributedOptimizer( chainer.optimizers.MomentumSGD())
  17. 17. GPUの数にほぼ⽐例した性能向上
  18. 18. 実時間に対する学習速度も向上
  19. 19. 他のフレームワークに⽐べても⾼速
  20. 20. ChainerRL
  21. 21. ChainerRL Chainerを使った深層強化学習フレームワーク https://github.com/pfnet/chainerrl
  22. 22. 強化学習は試⾏錯誤で学習する⼿法 どうすればいいか(教師データ)を教えるのではなく,試 ⾏錯誤して正しい⽅法を探す学習⽅法 教師あり学習:いつペダルを踏むかを教える 強化学習:倒れずに前に進む⽅法を試⾏錯誤
  23. 23. 24
  24. 24. 深層学習が簡単になったため,⼿法が複雑化 Chainer 全部⾃作 深層学習 Chainer 深層学習 が複雑化 Chainer ChainerRL 深層学習
  25. 25. Intel版Chainer
  26. 26. ハードウェアの選択は速度だけが重要ではない l 利⽤シーンの違い l 運⽤コストの違い l 消費電⼒の違い
  27. 27. Intel版Chainer Github上でIntel CPU向けに最適化されたChainerの開発 が開始 https://github.com/intel/chainer
  28. 28. Intel CPU上でのChainer Chainer MKL-DNN MKL (Math Kernel Library) Intel CPU MKL NumPy OpenBLAS/ATLAS NumPy
  29. 29. MKL-DNNはCPU向けの最適化された深層学習ライブラリ l MKL (Intel Math Kernel Library) l Intel製の数値計算ライブラリ l NumPyのバックエンドとして利⽤可能 l MKL-DNN l Intel CPU向けに最適化された深層学習ライブラリ l https://github.com/01org/mkl-dnn
  30. 30. まとめ l Chainerは⾃由度の⾼い深層学習フレームワーク l Chainerの周辺で様々なプロジェクトが進⾏中 l ChainerMN:⼤規模分散学習 l ChainerRL:深層強化学習ライブラリ l Intel版Chainer:CPU向けの最適化 l 深層学習のみならず,HPCや⾼度な機械学習,コードの最適化な ど,様々な分野の専⾨家を求めています

×