Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

2,237 views

Published on

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

Published in: Technology
  • Be the first to comment

  • Be the first to like this

深層学習フレームワーク 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や⾼度な機械学習,コードの最適化な ど,様々な分野の専⾨家を求めています

×