Submit Search
Chainerのテスト環境とDockerでのCUDAの利用
•
28 likes
•
16,568 views
Yuya Unno
Follow
2016/03/19にChainer meetup #2で、Chainerのテスト環境をDockerで整備した話を話しました
Read less
Read more
1 of 32
Download now
Downloaded 122 times
More Related Content
Chainerのテスト環境とDockerでのCUDAの利用
1.
Chainerのテスト環境と DockerでのCUDAの利利⽤用 (株)Preferred Infrastructure 海野 裕也 (@unnonouno)
2.
⾃自⼰己紹介 海野 裕也 l -2008
東⼤大情報理理⼯工修⼠士 l ⾃自然⾔言語処理理 l 2008-2011 ⽇日本アイ・ビー・エム(株)東京基礎研 l テキストマイニング、⾃自然⾔言語処理理の研究開発 l 2011- (株)プリファードインフラストラクチャー l ⾃自然⾔言語処理理、情報検索索、機械学習、テキストマイニングなど の研究開発 l 研究開発系案件、コンサルティング l JubatusやChainerの開発 l 最近は対話処理理 NLP若若⼿手の会共同委員⻑⾧長(2014-) 「オンライン機械学習」(2015, 講談社)2
3.
Chainerキートップ 3
4.
4
5.
初期のChainerが主に依存しているライブラリ l OS l Ubuntu14.04,
CentOS 7 l Python l 2.7, 3.4 l CUDA l 6.5, 7.0 l cuDNN l v2 5 2x2x2=8通りの環境
6.
そんなにテストいるの・・・? l protobufがPy3で動かない l 依存してたライブラリがある⽇日突然消えた l
CUDA 6.5だけ最適化のバグを踏む(キャスト周 り) l 新しいcuDNNがABIを壊す l NumPyのバージョンが上がると挙動が変わる l pipやsetuptoolsのバージョンがそれぞれ10個 位ある l Python 3.5.0だけGC時のバグを踏む 6
7.
悲痛な叫び 7
8.
⾃自動テストをしよう 8
9.
既存のCIサービスはGPUに⾮非対応 9
10.
よし、Jenkinsを使おう! 10
11.
Jenkinsとは? l 最もメジャーなオープンソースの継続的インテ グレーションツール l リポジトリを監視して、特定の条件でジョブを ⾃自動実⾏行行してくれる l
テストを実⾏行行するようにすれば、⾃自動テスト環 境ができる 11
12.
テストと仮想環境 l 8台のマシンを⽤用意せずに、複数の環境を1台の マシン上でテストしたい 12
13.
Dockerとは? l コンテナ型仮想化技術 l 詳細を語れるほど詳しくないのでググって下さい l
起動が超早い(重要) l Dockerfileに環境のセットアップ⽅方法を書いて おくとキャッシュが効く l Dockerfile内に環境のセットアップを書いておく 13
14.
こんな感じ 14
15.
Chainerの⾃自動テスト環境 15 Githubを監視 Dockerコンテナ 上でテスト実行
16.
ところで・・・ CUDAのプログラムって Dockerで動くんですか? 結論論:動きます! 16
17.
Dockerfileの準備 l .runファイルをダウンロードして解凍 l 中のドライバとCUDAをインストール RUN
./installers/NVIDIA-Linux- x86_64-352.39.run -s -N --no-kernel-module && ./installers/cuda-linux64- rel-7.5.18-19867135.run --noprompt 17
18.
問題1: GPUが⾒見見えない l ふつうに起動するとGPUがゲストから⾒見見えない l
--deviceオプションを渡すと⾒見見えるようになる $ docker run --device /dev/nvidia0 -- device /dev/nvidiactl --device /dev/nvidia- uvm chainer nvidia-smi 18
19.
問題2: 古いCUDAが動かない l ホストとゲストで別バージョンを⼊入れると動かない l
同じバージョンのドライバを使わないとダメ l ホストもゲストもCUDA7.5付属のドライバだけ⼊入れて、 ゲスト側はライブラリだけ別のバージョンを⼊入れる RUN ./installers/NVIDIA-Linux- x86_64-352.39.run -s -N --no-kernel-module RUN ./installers/cuda-linux64- rel-7.0.28-19326674.run -noprompt 19
20.
問題3: nvidia-uvmが消失する l 起動直後には
/dev/nvidia-uvm がない l 経験的に、sampleのdeviceQueryを実⾏行行すると ⽣生成されることが知られている l /dev/nvidia-uvmがなかったらdeviceQueryを実 ⾏行行するようにスクリプトを書いておく(あとで もっといい⽅方法があるよ) 20
21.
問題4: ドライババージョンが合わない l nvidia-352.63が公開されて、バージョンが上 がっちゃった l
ホストドライバが新しくなって、バージョンの 不不⼀一致問題が再燃 \(^o^)/ l ドライバのバージョンを戻せば・・・いいの か・・・? 21
22.
nvidia-dockerをつかう l さすがにしんどいので探したら、NVIDIAがCUDA⽤用の Dockerラッパーを作っていた l https://github.com/NVIDIA/nvidia-docker 22
23.
nvidia-dockerは何をしてくれるのか・・・? l 今説明したことを全部⾃自動で解決し てくれるdockerコマンドのラッパー l 今までの苦労は・・・ 23
24.
nvidia-dockerでのドライバ問題 l ホスト側のドライバ関連ファイルをVolumeで全部ゲス トから⾒見見えるようにしている(!) l ホストの環境に依存せずに使える 24
25.
nvidia-dockerでのnvidia-uvm問題 l /dev/nvidia-uvmがなかったら、nvidia- modprobeを実⾏行行している(deviceQueryいらん かった) 25 nvidia-docker/tools/src/nvidia/nvidia.go
26.
nvidia-dockerでのCUDA, cuDNNのバージョン l CUDA
6.5, 7.0, 7.5 l cuDNN v2, v3, v4 l ⾃自分で⽤用意しなくていいのね・・・ 26
27.
まとめ nvidia-docker使いましょう 27
28.
テスト環境のソース類 l https://github.com/pfnet/chainer-test l run_xxx.pyを実⾏行行すると、Dockerfileを⽣生成し て、docker
buildとnvidia-docker runを実⾏行行 l -iを渡すと、bashが起動してデバッグできる 28
29.
ところで、作ってる間に増えてきた・・・ l OS l Ubuntu
14.04, CentOS 7 l Python l 2.7, 3.4, 3.5 l CUDA l 6.5, 7.0, 7.5 l cuDNN l v2, v3, v4 l numpy l 1.9, 1.10 29 2x3x3x3x2=108通り
30.
⽬目がシパシパする 30
31.
え、まだ増えるの・・・ l OS l Ubuntu
14.04, CentOS 7, Ubuntu 16.04 l Python l 2.7, 3.4, 3.5 l CUDA l 6.5, 7.0, 7.5, 8.0 l cuDNN l v2, v3, v4 l numpy l 1.9, 1.10, 1.11 l protobuf l 2.7, 3.0 31
32.
ご清聴ありがとうございました
Download