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ファミリー

5,429 views

Published on

DLLAB DAY 2018 Track3 17:00-17:40

Published in: Technology
  • Be the first to comment

研究を加速するChainerファミリー

  1. 1. 研究を加速するChainerファミリー 株式会社Preferred Networks 比戸将平 岡田真太郎
  2. 2. でも、深層学習フレームワークだけあればいいの? CoreML TVM / NNVM ● どのフレームワークもおなじ? ● MNISTサンプルを走らせたら終わり?
  3. 3. 実装が様々なフレームワーク・APIにちらばっていてユーザー泣かせ ● ディープラーニングの進歩に利用APIの整備共通化が追いつかずまだ使いづらい ● (参考)scikit-learn: 様々な機械学習アルゴリズムを共通のAPIで利用可能 DLフレーム ワーク X DLフレーム ワーク Y1.0 アルゴリズムA DLフレーム ワーク Y2.0 アルゴリズムB アルゴリズムC scikit-learn アルゴリズムA アルゴリズムB アルゴリズムD アルゴリズムA’ アルゴリズムB’ アルゴリズムE 決定木 Logistic回帰 線形SVM カーネルSVM ナイーブベイズ Bagging AdaBoost GradientBoost RandomForest 学習: fit() 予測: predict()API 共通API
  4. 4. 拡大するChainerファミリー: Chainer UI Chainer Chemistry 強化学習 画像認識 可視化 グラフ構造 大規模分散 Menoh 本日発表
  5. 5. アジェンダ ● ChainerCV: 画像認識 ● ChainerRL: 深層強化学習 ● Chainer Chemistry: グラフ構造 ● Chainer GAN lib: Generative Adversarial Networks ● ChainerUI: モニタリングUI ● ChainerMN: 分散深層学習 ● Menoh: ONNXモデルの推論エンジン
  6. 6. ChainerCV: 画像認識ライブラリ ● https://github.com/chainer/chainercv ● 1行サンプル実行で学習済みモデルを自動ダウンロードしてを予測結果を描画
  7. 7. ChainerCVの意義: 全ての画像認識タスクに共通する部分の負担を大幅に軽減 1. 自分のモデルを 標準データで評価 データセット Pascal VOC, Caltech- UCSD Birds-200- 2011, Stanford Online Products, CamVid, etc. モデル Faster R-CNN, SSD, SegNet (順次追加) 学習ツール評価ツール データセット 抽象化 2. 標準モデルを 自分のデータで学習
  8. 8. 実際のChainerCVコード ● ChainerCVを使えば – 実質10数行で書ける ● ChainerCVが無かったら? – アルゴリズム実装する or 探してくる – データセットをダウンロードして読み込んで前処理 – モデルを学習する or 学習済みモデルを探して読み込む – テストデータに対して予測を行う – 描画スクリプトを書く
  9. 9. ChainerCV: 標準的アルゴリズムを「精度も含めて」再現 ● タスクとアルゴリズム – 画像分類 (ResNet, VGG) – 物体検出 (Faster R-CNN, SSD, YOLO) – セマンティック・セグメンテーション (SegNet, PSPNet) – インスタンス・セグメンテーション (FCIS) ● 元論文と同等精度を達成することを確認 Faster R-CNN SSD
  10. 10. ベンチマークデータセットと前処理のサポート ● 例:画像単位の前処理(主にdata augmentation) – center_crop – flip – pca_lighting – random_crop – random_expand – random_flip – random_rotate – random_sized_crop – resize – resize_contain – scale – ten_crop ● 例:利用可能データセット – ADE20K – CamVid – Cityscapes – CUB – OnlineProducts – PASCAL VOC – Semantic Boundaries Dataset
  11. 11. 各アルゴリズムの実行結果
  12. 12. アジェンダ ● ChainerCV: 画像認識 ● ChainerRL: 深層強化学習 ● Chainer Chemistry: グラフ構造 ● Chainer GAN lib: Generative Adversarial Networks ● ChainerUI: モニタリングUI ● ChainerMN: 分散深層学習 ● Menoh: ONNXモデルの推論エンジン
  13. 13. ChainerRL: 深層強化学習ライブラリ ● https://github.com/chainer/chainerrl ● 深層強化学習の応用例 – ゲームプレイ(ATARIゲーム、囲碁) – シミュレーション – ロボット制御 ● 最近の人工知能応用のかなりの部分に関係(例:AlphaGo) x Reinforcement Learning 強化学習 ロボット制御 ゲームプレイ
  14. 14. ChainerRLの基本的な使い方 ● 1. 環境(問題)を定義 ● 2. エージェントをモデル化 ● 3. エージェントを作成 ● 4. エージェントの学習 アクション 環境 観測、報酬 エージェント
  15. 15. 多くの最新アルゴリズムを網羅(DQN、A3C、TRPO、PPO…) • A3C (Asynchronous Advantage Actor-Critic) • ACER (Actor-Critic with Experience Replay) • Asynchronous N-step Q-learning • Categorical DQN • DQN (including Double DQN, etc) • DDPG (Deep Deterministic Poilcy Gradients) • PGT (Policy Gradient Theorem) • PCL (Path Consistency Learning) • PPO (Proximal Policy Optimization) • TRPO (Trust Region Policy Optimization)
  16. 16. 環境(問題)の定義の仕方: OpenAI Gymのインタフェースに対応 ● シンプルなGymインタフェース – env.reset() – env.step(action) ● 多種多様な強化学習問題が定義可能 – アクション、状態変化、報酬… https://gym.openai.com/envs/
  17. 17. ChainerRLの始め方 ● 制御の古典的問題(倒立振子)を深層強化学習アルゴリズムDQNで解くタスク ● https://github.com/chainer/chainerrl/blob/master/examples/quickstart/quickstart.ipynb
  18. 18. ● データ解析に必要なものが全てパッケージング(Windows/Linux両対応) – 分析:開発環境 / データ基盤 / 機械学習ツール – GPUサポート:CUDA / cuDNN – DL:フレームワーク / 関連ツール ChainerおよびCV/RLはAzure Data Science VMにプリインストール済み https://azure.microsoft.com/en-us/services/virtual-machines/data-science-virtual-machines/
  19. 19. アジェンダ ● ChainerCV: 画像認識 ● ChainerRL: 深層強化学習 ● Chainer Chemistry: グラフ構造 ● Chainer GAN lib: Generative Adversarial Networks ● ChainerUI: モニタリングUI ● ChainerMN: 分散深層学習 ● Menoh: ONNXモデルの推論エンジン
  20. 20. Chainer Chemistry: グラフ構造における深層学習ライブラリ ● https://github.com/pfnet-research/chainer-chemistry 通常の画像向けの畳込みニューラルネットワーク グラフ向けの畳込みニューラルネットワーク(Graph Convolution) • 画像分類 • 物体検出 • セグメンテーション • 化学物質の性質 • 例:化合物の毒性 • 材料の性質
  21. 21. Chainer Chemistryのサポート ● 実装済みアルゴリズム – NFP: Neural fingerprint – GGNN: Gated Graph Neural Network – WeaveNet – SchNet – RSGCN: Renormalized Spectral Graph Convolutional Network ● ベンチマークデータセット – QM9 – Tox21 – MoleculeNet ● (参考)Preferred Networksは深層学習を用いた 阻害活性予測コンテストでIPAB賞を受賞 – →その成果をChainer Chemistryとして公開
  22. 22. アジェンダ ● ChainerCV: 画像認識 ● ChainerRL: 深層強化学習 ● Chainer Chemistry: グラフ構造 ● Chainer GAN lib: Generative Adversarial Networks ● ChainerUI: モニタリングUI ● ChainerMN: 分散深層学習 ● Menoh: ONNXモデルの推論エンジン
  23. 23. Chainer-GAN-lib: Generative Adversarial Network特化ライブラリ ● https://github.com/pfnet-research/chainer-gan-lib http://corochann.com/cifar-10-cifar-100-dataset-introduction-1258.html CIFAR-10データセット ProgressiveGANの生成した画像
  24. 24. Chainer-GAN-libのサポート範囲 ● 実装済みアルゴリズムと評価値(公式の値との比較) Progressive Growing of GANs for Improved Quality, Stability, and Variation [Karras+, 2017]
  25. 25. アジェンダ ● ChainerCV: 画像認識 ● ChainerRL: 深層強化学習 ● Chainer Chemistry: グラフ構造 ● Chainer GAN lib: Generative Adversarial Networks ● ChainerUI: モニタリングUI ● ChainerMN: 分散深層学習 ● Menoh: ONNXモデルの推論エンジン
  26. 26. ChainerUI: 可視化・実験管理ライブラリ ● https://github.com/chainer/chainerui ● 各種学習状況のモニタリング – 経過時間 – エポック数 – 訓練ロス・精度 – 検証ロス・精度 ● ハイパーパラメータの変更 – 学習率の変更 ● スナップショット管理 – 例:数エポック毎に保存
  27. 27. アジェンダ ● ChainerCV: 画像認識 ● ChainerRL: 深層強化学習 ● Chainer Chemistry: グラフ構造 ● Chainer GAN lib: Generative Adversarial Networks ● ChainerUI: モニタリングUI ● ChainerMN: 分散深層学習 ● Menoh: ONNXモデルの推論エンジン
  28. 28. ChainerMN: モデル学習高速化のための分散深層学習ライブラリ ● https://github.com/chainer/chainermn GPU GPU InfiniBand GPU GPU InfiniBand MPI NVIDIA NCCL All- Reduce Forward Forward Forward Backward Backward Backward Optimize Optimize Optimize
  29. 29. ChainerMNの基本的な使い方 ● OptimizerをCommunicatorでラップするだけ ● ChainerMNが内部でAll-Reduceのための通信処理を実行 optimizer = chainer.optimizers.MomentumSGD() comm = chainermn.create_communicator(‘hierarchical’) optimizer = chainermn.create_multi_node_optimizer( optimizer, comm)
  30. 30. ChainerMNのAzure環境における分散性能:128GPUまでほぼ線形に速度向上 ● NC24rs_v2 (P100) x 32 nodes = 128 GPUs
  31. 31. ChainerMNの効果: 試行錯誤ループを簡単にすることで研究開発をスピードアップ ● 1024GPUによってImageNet学習を15分で完了(世界記録) [Akiba, Suzuki, Fukuda, 2017] 0 10 20 30 40 50 60 70 Goyal et al. (Facebook) Codreanu et al. Cho et al. (IBM) You et al. Akiba et al. (This work) Time[min] Training time of ResNet-50 (90 epochs) on ImageNet-1K 62min. 60min.
  32. 32. 誤解: ChainerMNはInfiniBand前提だからイーサネットでは性能が出ない? ● →Chainer v4.1 & ChainerMN v1.3以降をお使い下さい! ● 追加機能1: Double bufferingで通常のイーサネット環境でも高い分散性能 – 1ステップ古い勾配を利用してモデル計算を同時に行い通信遅延を隠蔽 ● 追加機能2: FP16 All-Reduce: 半精度浮動小数点数を利用し通信量を半減 5/25リリース
  33. 33. Infinibandの無い環境におけるImageNet学習速度の向上 512 1024 2048 4096 8192 8 16 32 Samplespersecond #GPUs InfiniBand 10 Gb イーサネット 10 Gb イーサネット + Double Buffering + FP16 Allreduce ● 10GbイーサネットにおいてもInfiniBand+FP32時と遜色ない学習速度 ● FP16と1ステップ古い勾配を用いることによるモデル精度への影響は微少 モデル精度76.4% モデル精度75.8% モデル精度76.4% 5/25リリース
  34. 34. アジェンダ ● ChainerCV: 画像認識 ● ChainerRL: 深層強化学習 ● Chainer Chemistry: グラフ構造 ● Chainer GAN lib: Generative Adversarial Networks ● ChainerUI: モニタリングUI ● ChainerMN: 分散深層学習 ● Menoh: ONNXモデルの推論エンジン
  35. 35. Menoh公開:CPU向けのコンパクトなONNXモデル推論エンジン ● Chainer等で学習・保存したONNXフォーマットのモデルを読み込み可能 ● MKL-DNN対応でインテルCPUにおける高速な推論を実現 ● C++実装 & 多言語ラッパーによりエッジを中心に多様な環境に対応 https://github.com/pfnet-research/menoh Menoh
  36. 36. (参考) ONNXとONNX-Chainer: Chainerで学習したモデルを広く活用するために 37 https://github.com/chainer/onnx-chainer 学習済み モデル出力 message ModelProto { optional int64 ir_version = 1; : optional GraphProto graph = 7; }; message GraphProto { repeated NodeProto node = 1; optional string name = 2; repeated TensorProto initializer = 5; optional string doc_string = 10; repeated ValueInfoProto input = 11; repeated ValueInfoProto output = 12; repeated ValueInfoProto value_info = 13; } message TensorProto { repeated int64 dims = 1; optional DataType data_type = 2; optional Segment segment = 3; repeated float float_data = 4 [packed = true]; : optional string name = 8; } message NodeProto { repeated string input = 1; repeated string output = 2; optional string name = 3; optional string op_type = 4; repeated AttributeProto attribute = 5; optional string doc_string = 6; } Node Tensor Tensor Open Neural Network Exchange Format: 学習済みモデルの標準フォーマット
  37. 37. Menohの構成: MKL-DNNの多言語ラッパーとしてのCoreと各言語バインディング 38 Intel CPU MKL-DNN ideep Menoh core Chainer (Python) NumPy C++ C# Haskell JVM Ruby BLAS
  38. 38. Menohの推論性能: CPU版Chainerより6倍、iDeep対応Chainerより2倍高速 ● VGG16モデルの平均推論時間(ミリ秒/画像、バッチサイズ=1) ● Intel(R) Core(TM) i7-6500U CPU @ 2.50GHz、メモリ8GB 39
  39. 39. Menohの多言語サポート ● 本日同時公開 ● C++: https://github.com/pfnet-research/menoh (コアに同梱) ● C#: https://github.com/pfnet-research/menoh-sharp ● Haskell: https://github.com/pfnet-research/menoh-haskell ● Hackage - http://hackage.haskell.org/package/menoh ● 近日公開予定 ● Ruby ● JVM ● Node.js 40 Menoh core C++ C# Haskell JVM Ruby
  40. 40. まとめ Menoh ● Chainerは研究開発の効率を第一に考えたディープラーニングフレームワークであり、 Chainer Familyによってユーザーはやりたいことをすぐ始められます ● ChainerCVやChainerRL等の分野特化ライブラリは最新の標準手法をサポートします ● ChaineMNはニューラルネットワークの分散学習で世界最先端を行くことで Chainerユーザーの試行錯誤スピードの向上をもたらします ● MenohはPython以外の環境での学習済みモデル活用の道を開きます

×