SlideShare a Scribd company logo
ChainerMNについて
鈴木 脩司
Preferred Networks, Inc.
Chainer Meetup #05
2017/06/10
今日のお話
 ChainerMNとは?
 ChainerMNの仕組み
 ChainerMNの使い方
2
ChainerMNとは?
ChainerMNとは?
Chainerによる学習を、分散処理によって高速化するための追加パッケージ
特徴
– Scalable
 NVIDIA NCCLやCUDA-Aware MPIなどの最新技術より高い並列性能を
実現
– Flexible
 Chainerの特徴の一つである、動的なネットワークも分散学習可能
– Easy
 既存のChainerのコードに少し変更を加えれば利用可能
GitHubリポジトリ
– https://github.com/chainer/chainermn
4
ChainerMNの仕組み
分散学習の手法
 データ並列
– データを分割して、複数のワーカーが並列に学習
 モデル並列
– モデルを分割して、複数のワーカーが並列に学習
6
データ並列 モデル並列
ChainerMNはこちら
学習イテレーション
7
通常のChainerによる学習
Forward Backward Optimize
All-Reduce
Forward
Forward
Forward
Backward
Backward
Backward
Optimize
Optimize
Optimize
ChainerMNによる分散学習
All-Reduce
 各ワーカーが持つ値を集計し、集計した結果を全ワーカーに配る処理
 ChainerMNでは各ワーカーが持つ勾配𝑔𝑖から平均 𝑔を計算して配る
8
All-Reduce
𝑔0 = 1
𝑔1 = 2
𝑔2 = 3
𝑔 = 2
𝑔 = 2
𝑔 = 2
9
詳細: https://chainer.org/general/2017/02/08/Performance-of-Distributed-Deep-
Learning-Using-ChainerMN.html
ChainerMNの使い方
ChainerMNに必要なライブラリ (GPUを利用する場合)
1. Chainer
– CuPyとcuDNN も含めてインストールする
2. MPI (OpenMPIなど)
– CUDA-Awareのサポートを入れてコンパイルする
3. NVIDIA NCCL
– CUDA 8.0より前のバージョンのCUDAを利用する場合は、makeのときに
NVCC_GENCODEを指定する必要がある
4. MPI4py
5. Cython
– 事前にpipなどでインストールする必要がある
11
CPUのみの場合は以下を参照
http://chainermn.readthedocs.io/en/latest/installation/guide.html
ChainerMNのインストールとサンプル実行(GPUを利用する場合)
 インストール方法
– pip install chainermn
 MNISTのサンプルの実行
– git clone git@github.com:chainer/chainermn.git
– cd chainermn
– mpiexec -n 4 python examples/mnist/train_mnist.py –g
 この例では1つのノードで4つのワーカーが起動して、4つのGPUを使って分散学
習が実行される
12
あれ、動かない?と思ったら・・・
 ドキュメントのStep-by-Step Troubleshootingを見る!
– http://chainermn.readthedocs.io/en/latest/installation/troubleshooti
ng.html
 Step-by-Step TroubleshootingはChainerMNを使うときにハマりそう
な部分を、1つ1つ問題がないか確認していく手順が書かれている
– たとえば・・・
 Check SSH connection
13
$ ssh host00 'hostname'
host00 # without hitting the password
$ ssh host01 'hostname'
host01 # without hitting the password
...
環境別のインストール方法の紹介記事
 AWSのGPUインスタンスでChainerMNを動かす環境構築
– http://qiita.com/pst-ic/items/e01033dee4d389df3a5e
 共用環境向けのChainerMNのインストール
– http://qiita.com/htsst/items/a38d4e09d05c2ef80242
 Chainermn をTSUBAME2.5にインストール
– http://graphium.hatenadiary.jp/entry/2017/06/06/012502
14
みなさま、ありがとうございます!
Chainerのコードを改良してChainerMNを使う手順
 説明にはMNISTのサンプルを利用
 完成コード
– https://github.com/chainer/chainermn/blob/master/examples/mnist
/train_mnist.py
 最低限必要な変更点
1. Communicatorの作成と使用するGPUの指定
2. マルチノード用のOptimizerの作成
 追加の変更
3. データの分配
4. マルチノード用のEvaluatorの作成15
1. Communicatorの作成と使用するGPUの指定
 Communicatorの作成
– 高い並列性能を実現するためには計算機環境に合わせてCommunicatorを
選択する必要がある。詳しくは以下を参照
 https://chainermn.readthedocs.io/en/latest/reference/index.html#communicators
 プロセスが使用するGPUを指定
– ChainerのMNISTのサンプル:
– ChainerMNのMNISTのサンプル:
16
# args.gpu: 使用するGPUのID
chainer.cuda.get_device(args.gpu).use()
# comm.intra_rank:マシン内におけるワーカーの番号
device = comm.intra_rank
chainer.cuda.get_device(device).use()
comm = chainermn.create_communicator()
2. マルチノード用のOptimizerの作成
 マルチノード用のOptimizerを以下のようにして作成
– ChainerのMNISTのサンプル:
– ChainerMNのMNISTのサンプル:
17
optimizer = chainer.optimizers.Adam()
optimizer = chainermn.create_multi_node_optimizer(
chainer.optimizers.Adam(), comm)
3.データの分配
 2.までの状態では、1つのワーカーだけで改良前と同じサイズのデータを学習
– このため、Chainerのサンプルよりも1エポックの合計の大きさが、ワーカー数倍増加
 1エポックを改良前と同じ大きさにするために、1つのワーカーがデータの読み
込みを行い、全ワーカーに分割して配る
– ChainerのMNISTのサンプル:
– ChainerMNのMNISTのサンプル:
18
train, test = chainer.datasets.get_mnist()
if comm.rank == 0: # rank 0 のワーカーが読み込み
train, test = chainer.datasets.get_mnist()
else:
train, test = None, None
# データを分割して配る
train = chainermn.scatter_dataset(train, comm)
test = chainermn.scatter_dataset(test, comm)
4. マルチノード用のEvaluatorの作成
 マルチノード用のEvaluatorを以下のように作成
– ChainerのMNISTのサンプル:
– ChainerMNのMNISTのサンプル:
– 注意
 PrintReportなどのExtensionは1つのワーカーだけ実行するようする
19
trainer.extend(extensions.Evaluator(test_iter, model, device=args.gpu))
evaluator = extensions.Evaluator(test_iter, model, device=device)
evaluator = chainermn.create_multi_node_evaluator(evaluator, comm)
trainer.extend(evaluator)
実行!
 シングルノード実行
– mpiexec -n 4 python train_mnist.py –g
 1つのノードで4つのワーカーを立ち上げ、4個のGPUを使って分散学習を行う
 マルチノード実行
– mpiexec -n 8 -host host00,host01 python train_mnist.py –g
 host00,host01 という2つのノードで、4つずつワーカーが立ち上げ、
合計8個のGPUを使って分散学習を行う
20
まとめ
 ChainerMNとは
– Chainerによる学習を、分散処理によって高速化するための追加パッケージ
– 特徴
 Scalable、Flexible、Easy
– GitHubリポジトリ
 https://github.com/chainer/chainermn
 ChainerMNの使い方
– 最低限必要な変更点
 Communicatorの作成と使用するGPUの指定
 マルチノード用のOptimizerの作成
21

More Related Content

PDF
Hopper アーキテクチャで、変わること、変わらないこと
PDF
コンテナセキュリティにおける権限制御(OCHaCafe5 #3 Kubernetes のセキュリティ 発表資料)
PPTX
Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)
PDF
今話題のいろいろなコンテナランタイムを比較してみた
PDF
Magnum IO GPUDirect Storage 最新情報
PDF
開発者が語る NVIDIA cuQuantum SDK
PDF
Telecom Infra Projectの取り組み -光伝送におけるハードとソフトの分離-
PDF
20分でわかるgVisor入門
Hopper アーキテクチャで、変わること、変わらないこと
コンテナセキュリティにおける権限制御(OCHaCafe5 #3 Kubernetes のセキュリティ 発表資料)
Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)
今話題のいろいろなコンテナランタイムを比較してみた
Magnum IO GPUDirect Storage 最新情報
開発者が語る NVIDIA cuQuantum SDK
Telecom Infra Projectの取り組み -光伝送におけるハードとソフトの分離-
20分でわかるgVisor入門

What's hot (20)

PDF
0から理解するニューラルネットアーキテクチャサーチ(NAS)
PDF
Chainer で Tensor コア (fp16) を使いこなす
PDF
KubernetesでRedisを使うときの選択肢
PDF
エンジニアなら知っておきたい「仮想マシン」のしくみ v1.1 (hbstudy 17)
PDF
Veriloggen.Thread & Stream: 最高性能FPGAコンピューティングを 目指したミックスドパラダイム型高位合成 (FPGAX 201...
PPTX
【DL輪読会】DreamBooth: Fine Tuning Text-to-Image Diffusion Models for Subject-Dri...
PPTX
EfficientDet: Scalable and Efficient Object Detection
PDF
Sw技術者に送るfpga入門
PDF
Linux女子部 systemd徹底入門
PPTX
分散ストレージ技術Cephの最新情報
PDF
20180729 Preferred Networksの機械学習クラスタを支える技術
PDF
05.2 virtio introduction
PDF
分散システムの限界について知ろう
PDF
PythonとPyCoRAMでお手軽にFPGAシステムを開発してみよう
PDF
【DL輪読会】"Learning Fine-Grained Bimanual Manipulation with Low-Cost Hardware"
PDF
Kubernetesによる機械学習基盤への挑戦
PPTX
GraalVMの多言語実行機能が凄そうだったので試しにApache Sparkに組み込んで動かしてみたけどちょっとまだ早かったかもしれない(Open So...
PDF
Multi Chassis LAG for Cloud builders
PDF
5G時代のアプリケーション開発とは - 5G+MECを活用した低遅延アプリの実現へ
PDF
DPDK QoS
0から理解するニューラルネットアーキテクチャサーチ(NAS)
Chainer で Tensor コア (fp16) を使いこなす
KubernetesでRedisを使うときの選択肢
エンジニアなら知っておきたい「仮想マシン」のしくみ v1.1 (hbstudy 17)
Veriloggen.Thread & Stream: 最高性能FPGAコンピューティングを 目指したミックスドパラダイム型高位合成 (FPGAX 201...
【DL輪読会】DreamBooth: Fine Tuning Text-to-Image Diffusion Models for Subject-Dri...
EfficientDet: Scalable and Efficient Object Detection
Sw技術者に送るfpga入門
Linux女子部 systemd徹底入門
分散ストレージ技術Cephの最新情報
20180729 Preferred Networksの機械学習クラスタを支える技術
05.2 virtio introduction
分散システムの限界について知ろう
PythonとPyCoRAMでお手軽にFPGAシステムを開発してみよう
【DL輪読会】"Learning Fine-Grained Bimanual Manipulation with Low-Cost Hardware"
Kubernetesによる機械学習基盤への挑戦
GraalVMの多言語実行機能が凄そうだったので試しにApache Sparkに組み込んで動かしてみたけどちょっとまだ早かったかもしれない(Open So...
Multi Chassis LAG for Cloud builders
5G時代のアプリケーション開発とは - 5G+MECを活用した低遅延アプリの実現へ
DPDK QoS
Ad

Viewers also liked (20)

PDF
More modern gpu
PDF
MapReduceによる大規模データを利用した機械学習
PDF
Pythonで動かして学ぶ機械学習入門_予測モデルを作ってみよう
PDF
LCCC2010:Learning on Cores, Clusters and Cloudsの解説
PPTX
OSC Tokyo fall LT~Dockerで分散処理をやってみた
PDF
Deep Learningを用いたロボット制御
PDF
Chainer v1.6からv1.7の新機能
PPTX
DLフレームワークChainerの紹介と分散深層強化学習によるロボット制御
PPTX
Tf勉強会(4)
PPTX
Tensor flow唐揚サーバーロボット rev1
PPTX
Tensorflowで言語識別をやってみた
PDF
コンピュータ将棋について~機械学習を用いた局面学習への道~
PDF
内省するTensorFlow
PDF
思いついたアルゴリズムを TensorFlow で実装してみた話
PDF
Windows で動かす TensorFlow
PDF
TensorFlowで学ぶDQN
PDF
TensorFlow XLAの可能性
PDF
モデルアーキテクチャ観点からのDeep Neural Network高速化
PDF
Using Raspberry Pi GPU for DNN
PDF
Chainerの使い方と自然言語処理への応用
More modern gpu
MapReduceによる大規模データを利用した機械学習
Pythonで動かして学ぶ機械学習入門_予測モデルを作ってみよう
LCCC2010:Learning on Cores, Clusters and Cloudsの解説
OSC Tokyo fall LT~Dockerで分散処理をやってみた
Deep Learningを用いたロボット制御
Chainer v1.6からv1.7の新機能
DLフレームワークChainerの紹介と分散深層強化学習によるロボット制御
Tf勉強会(4)
Tensor flow唐揚サーバーロボット rev1
Tensorflowで言語識別をやってみた
コンピュータ将棋について~機械学習を用いた局面学習への道~
内省するTensorFlow
思いついたアルゴリズムを TensorFlow で実装してみた話
Windows で動かす TensorFlow
TensorFlowで学ぶDQN
TensorFlow XLAの可能性
モデルアーキテクチャ観点からのDeep Neural Network高速化
Using Raspberry Pi GPU for DNN
Chainerの使い方と自然言語処理への応用
Ad

Similar to ChainerMNについて (20)

PDF
20171128分散深層学習とChainerMNについて
PDF
秒速ChainerMN
PDF
進化するChainer
PDF
深層学習フレームワークChainerの特徴
PDF
【2016年度】勉強会資料_Chainer
PDF
深層学習フレームワーク Chainerとその進化
PDF
Deep Learning Lab: DIMo & Chainer
PDF
Introduction to Chainer (LL Ring Recursive)
PDF
Chainer入門と最近の機能
PDF
ChainerMNをDocker containerで動かす
PDF
Chainerチュートリアル -v1.5向け- ViEW2015
PDF
研究を加速するChainerファミリー
PDF
ChainerMNが即座に使える環境を提供するXTREME DNA HPC Cloud
PDF
20171212 gtc pfn海野裕也_chainerで加速する深層学習とフレームワークの未来
PPTX
20180628 chainer on_colaboratory
PDF
2015年9月18日 (GTC Japan 2015) 深層学習フレームワークChainerの導入と化合物活性予測への応用
PDF
[AI08] 深層学習フレームワーク Chainer × Microsoft で広がる応用
PDF
深層学習フレームワーク Chainer の開発と今後の展開
PDF
深層学習フレームワークChainerの紹介とFPGAへの期待
PPTX
20180221 chainer on_colaboratory_at_gdcjp
20171128分散深層学習とChainerMNについて
秒速ChainerMN
進化するChainer
深層学習フレームワークChainerの特徴
【2016年度】勉強会資料_Chainer
深層学習フレームワーク Chainerとその進化
Deep Learning Lab: DIMo & Chainer
Introduction to Chainer (LL Ring Recursive)
Chainer入門と最近の機能
ChainerMNをDocker containerで動かす
Chainerチュートリアル -v1.5向け- ViEW2015
研究を加速するChainerファミリー
ChainerMNが即座に使える環境を提供するXTREME DNA HPC Cloud
20171212 gtc pfn海野裕也_chainerで加速する深層学習とフレームワークの未来
20180628 chainer on_colaboratory
2015年9月18日 (GTC Japan 2015) 深層学習フレームワークChainerの導入と化合物活性予測への応用
[AI08] 深層学習フレームワーク Chainer × Microsoft で広がる応用
深層学習フレームワーク Chainer の開発と今後の展開
深層学習フレームワークChainerの紹介とFPGAへの期待
20180221 chainer on_colaboratory_at_gdcjp

ChainerMNについて