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.

20171212 gtc pfn海野裕也_chainerで加速する深層学習とフレームワークの未来

4,103 views

Published on

12月12日-13日の2日間にわたって開催されたGTC Japan 2017でのPreferred Networks海野裕也の講演資料です

Published in: Technology

20171212 gtc pfn海野裕也_chainerで加速する深層学習とフレームワークの未来

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

×