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のテスト環境と
DockerでのCUDAの利利⽤用
(株)Preferred Infrastructure
海野  裕也 (@unnonouno)
⾃自⼰己紹介
海野  裕也
l  -2008 東⼤大情報理理⼯工修⼠士
l  ⾃自然⾔言語処理理
l  2008-2011 ⽇日本アイ・ビー・エム(株)東京基礎研
l  テキストマイニング、⾃自然⾔言語処理理の研究開発
l  2011...
Chainerキートップ
3
4
初期の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...
そんなにテストいるの・・・?
l  protobufがPy3で動かない
l  依存してたライブラリがある⽇日突然消えた
l  CUDA 6.5だけ最適化のバグを踏む(キャスト周
り)
l  新しいcuDNNがABIを壊す
l  Num...
悲痛な叫び
7
⾃自動テストをしよう
8
既存のCIサービスはGPUに⾮非対応
9
よし、Jenkinsを使おう!
10
Jenkinsとは?
l  最もメジャーなオープンソースの継続的インテ
グレーションツール
l  リポジトリを監視して、特定の条件でジョブを
⾃自動実⾏行行してくれる
l  テストを実⾏行行するようにすれば、⾃自動テスト環
境ができる
1...
テストと仮想環境
l  8台のマシンを⽤用意せずに、複数の環境を1台の
マシン上でテストしたい
12
Dockerとは?
l  コンテナ型仮想化技術
l  詳細を語れるほど詳しくないのでググって下さい
l  起動が超早い(重要)
l  Dockerfileに環境のセットアップ⽅方法を書いて
おくとキャッシュが効く
l  Dockerf...
こんな感じ
14
Chainerの⾃自動テスト環境
15	
Githubを監視	
Dockerコンテナ
上でテスト実行
ところで・・・
CUDAのプログラムって
Dockerで動くんですか?
結論論:動きます!
16
Dockerfileの準備
l  .runファイルをダウンロードして解凍
l  中のドライバとCUDAをインストール
RUN ./installers/NVIDIA-Linux-
x86_64-352.39.run -s -N --no-k...
問題1: GPUが⾒見見えない
l  ふつうに起動するとGPUがゲストから⾒見見えない
l  --deviceオプションを渡すと⾒見見えるようになる
$ docker run --device /dev/nvidia0 --
device ...
問題2: 古いCUDAが動かない
l  ホストとゲストで別バージョンを⼊入れると動かない
l  同じバージョンのドライバを使わないとダメ
l  ホストもゲストもCUDA7.5付属のドライバだけ⼊入れて、
ゲスト側はライブラリだけ別のバージ...
問題3: nvidia-uvmが消失する
l  起動直後には  /dev/nvidia-uvm がない
l  経験的に、sampleのdeviceQueryを実⾏行行すると
⽣生成されることが知られている
l  /dev/nvidia-u...
問題4: ドライババージョンが合わない
l  nvidia-352.63が公開されて、バージョンが上
がっちゃった
l  ホストドライバが新しくなって、バージョンの
不不⼀一致問題が再燃  \(^o^)/
l  ドライバのバージョンを戻せ...
nvidia-dockerをつかう
l  さすがにしんどいので探したら、NVIDIAがCUDA⽤用の
Dockerラッパーを作っていた
l  https://github.com/NVIDIA/nvidia-docker
22
nvidia-dockerは何をしてくれるのか・・・?
l 今説明したことを全部⾃自動で解決し
てくれるdockerコマンドのラッパー
l 今までの苦労は・・・
23
nvidia-dockerでのドライバ問題
l  ホスト側のドライバ関連ファイルをVolumeで全部ゲス
トから⾒見見えるようにしている(!)
l  ホストの環境に依存せずに使える
24
nvidia-dockerでのnvidia-uvm問題
l  /dev/nvidia-uvmがなかったら、nvidia-
modprobeを実⾏行行している(deviceQueryいらん
かった)
25	
nvidia-docker/tool...
nvidia-dockerでのCUDA, cuDNNのバージョン
l  CUDA 6.5, 7.0, 7.5
l  cuDNN v2, v3, v4
l  ⾃自分で⽤用意しなくていいのね・・・
26
まとめ
nvidia-docker使いましょう
27
テスト環境のソース類
l  https://github.com/pfnet/chainer-test
l  run_xxx.pyを実⾏行行すると、Dockerfileを⽣生成し
て、docker buildとnvidia-docker r...
ところで、作ってる間に増えてきた・・・
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...
⽬目がシパシパする
30
え、まだ増えるの・・・
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...
ご清聴ありがとうございました
Upcoming SlideShare
Loading in …5
×

of

Chainerのテスト環境とDockerでのCUDAの利用 Slide 1 Chainerのテスト環境とDockerでのCUDAの利用 Slide 2 Chainerのテスト環境とDockerでのCUDAの利用 Slide 3 Chainerのテスト環境とDockerでのCUDAの利用 Slide 4 Chainerのテスト環境とDockerでのCUDAの利用 Slide 5 Chainerのテスト環境とDockerでのCUDAの利用 Slide 6 Chainerのテスト環境とDockerでのCUDAの利用 Slide 7 Chainerのテスト環境とDockerでのCUDAの利用 Slide 8 Chainerのテスト環境とDockerでのCUDAの利用 Slide 9 Chainerのテスト環境とDockerでのCUDAの利用 Slide 10 Chainerのテスト環境とDockerでのCUDAの利用 Slide 11 Chainerのテスト環境とDockerでのCUDAの利用 Slide 12 Chainerのテスト環境とDockerでのCUDAの利用 Slide 13 Chainerのテスト環境とDockerでのCUDAの利用 Slide 14 Chainerのテスト環境とDockerでのCUDAの利用 Slide 15 Chainerのテスト環境とDockerでのCUDAの利用 Slide 16 Chainerのテスト環境とDockerでのCUDAの利用 Slide 17 Chainerのテスト環境とDockerでのCUDAの利用 Slide 18 Chainerのテスト環境とDockerでのCUDAの利用 Slide 19 Chainerのテスト環境とDockerでのCUDAの利用 Slide 20 Chainerのテスト環境とDockerでのCUDAの利用 Slide 21 Chainerのテスト環境とDockerでのCUDAの利用 Slide 22 Chainerのテスト環境とDockerでのCUDAの利用 Slide 23 Chainerのテスト環境とDockerでのCUDAの利用 Slide 24 Chainerのテスト環境とDockerでのCUDAの利用 Slide 25 Chainerのテスト環境とDockerでのCUDAの利用 Slide 26 Chainerのテスト環境とDockerでのCUDAの利用 Slide 27 Chainerのテスト環境とDockerでのCUDAの利用 Slide 28 Chainerのテスト環境とDockerでのCUDAの利用 Slide 29 Chainerのテスト環境とDockerでのCUDAの利用 Slide 30 Chainerのテスト環境とDockerでのCUDAの利用 Slide 31 Chainerのテスト環境とDockerでのCUDAの利用 Slide 32
Upcoming SlideShare
Deep forest
Next
Download to read offline and view in fullscreen.

28 Likes

Share

Download to read offline

Chainerのテスト環境とDockerでのCUDAの利用

Download to read offline

2016/03/19にChainer meetup #2で、Chainerのテスト環境をDockerで整備した話を話しました

Related Books

Free with a 30 day trial from Scribd

See all

Chainerのテスト環境とDockerでのCUDAの利用

  1. 1. Chainerのテスト環境と DockerでのCUDAの利利⽤用 (株)Preferred Infrastructure 海野  裕也 (@unnonouno)
  2. 2. ⾃自⼰己紹介 海野  裕也 l  -2008 東⼤大情報理理⼯工修⼠士 l  ⾃自然⾔言語処理理 l  2008-2011 ⽇日本アイ・ビー・エム(株)東京基礎研 l  テキストマイニング、⾃自然⾔言語処理理の研究開発 l  2011- (株)プリファードインフラストラクチャー l  ⾃自然⾔言語処理理、情報検索索、機械学習、テキストマイニングなど の研究開発 l  研究開発系案件、コンサルティング l  JubatusやChainerの開発 l  最近は対話処理理 NLP若若⼿手の会共同委員⻑⾧長(2014-) 「オンライン機械学習」(2015, 講談社)2
  3. 3. Chainerキートップ 3
  4. 4. 4
  5. 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. 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. 悲痛な叫び 7
  8. 8. ⾃自動テストをしよう 8
  9. 9. 既存のCIサービスはGPUに⾮非対応 9
  10. 10. よし、Jenkinsを使おう! 10
  11. 11. Jenkinsとは? l  最もメジャーなオープンソースの継続的インテ グレーションツール l  リポジトリを監視して、特定の条件でジョブを ⾃自動実⾏行行してくれる l  テストを実⾏行行するようにすれば、⾃自動テスト環 境ができる 11
  12. 12. テストと仮想環境 l  8台のマシンを⽤用意せずに、複数の環境を1台の マシン上でテストしたい 12
  13. 13. Dockerとは? l  コンテナ型仮想化技術 l  詳細を語れるほど詳しくないのでググって下さい l  起動が超早い(重要) l  Dockerfileに環境のセットアップ⽅方法を書いて おくとキャッシュが効く l  Dockerfile内に環境のセットアップを書いておく 13
  14. 14. こんな感じ 14
  15. 15. Chainerの⾃自動テスト環境 15 Githubを監視 Dockerコンテナ 上でテスト実行
  16. 16. ところで・・・ CUDAのプログラムって Dockerで動くんですか? 結論論:動きます! 16
  17. 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. 18. 問題1: GPUが⾒見見えない l  ふつうに起動するとGPUがゲストから⾒見見えない l  --deviceオプションを渡すと⾒見見えるようになる $ docker run --device /dev/nvidia0 -- device /dev/nvidiactl --device /dev/nvidia- uvm chainer nvidia-smi 18
  19. 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. 20. 問題3: nvidia-uvmが消失する l  起動直後には  /dev/nvidia-uvm がない l  経験的に、sampleのdeviceQueryを実⾏行行すると ⽣生成されることが知られている l  /dev/nvidia-uvmがなかったらdeviceQueryを実 ⾏行行するようにスクリプトを書いておく(あとで もっといい⽅方法があるよ) 20
  21. 21. 問題4: ドライババージョンが合わない l  nvidia-352.63が公開されて、バージョンが上 がっちゃった l  ホストドライバが新しくなって、バージョンの 不不⼀一致問題が再燃  \(^o^)/ l  ドライバのバージョンを戻せば・・・いいの か・・・? 21
  22. 22. nvidia-dockerをつかう l  さすがにしんどいので探したら、NVIDIAがCUDA⽤用の Dockerラッパーを作っていた l  https://github.com/NVIDIA/nvidia-docker 22
  23. 23. nvidia-dockerは何をしてくれるのか・・・? l 今説明したことを全部⾃自動で解決し てくれるdockerコマンドのラッパー l 今までの苦労は・・・ 23
  24. 24. nvidia-dockerでのドライバ問題 l  ホスト側のドライバ関連ファイルをVolumeで全部ゲス トから⾒見見えるようにしている(!) l  ホストの環境に依存せずに使える 24
  25. 25. nvidia-dockerでのnvidia-uvm問題 l  /dev/nvidia-uvmがなかったら、nvidia- modprobeを実⾏行行している(deviceQueryいらん かった) 25 nvidia-docker/tools/src/nvidia/nvidia.go
  26. 26. nvidia-dockerでのCUDA, cuDNNのバージョン l  CUDA 6.5, 7.0, 7.5 l  cuDNN v2, v3, v4 l  ⾃自分で⽤用意しなくていいのね・・・ 26
  27. 27. まとめ nvidia-docker使いましょう 27
  28. 28. テスト環境のソース類 l  https://github.com/pfnet/chainer-test l  run_xxx.pyを実⾏行行すると、Dockerfileを⽣生成し て、docker buildとnvidia-docker runを実⾏行行 l  -iを渡すと、bashが起動してデバッグできる 28
  29. 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. ⽬目がシパシパする 30
  31. 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. 32. ご清聴ありがとうございました
  • KanjiTakahashi

    Jun. 8, 2018
  • TakatoNakatani

    Jan. 9, 2018
  • DubaiEscortBunniesUAE

    May. 30, 2017
  • viperbjpn

    Feb. 6, 2017
  • hiww

    Oct. 9, 2016
  • ssuser5ae2d8

    Aug. 21, 2016
  • YuriOhno

    Aug. 1, 2016
  • yumios

    Jul. 24, 2016
  • greentea1125

    Jul. 19, 2016
  • masanork

    May. 8, 2016
  • ShiwonCho

    Apr. 22, 2016
  • hirocell

    Apr. 22, 2016
  • yuukiniikura3

    Apr. 18, 2016
  • YukinoriKitadai

    Apr. 1, 2016
  • ryupechi

    Mar. 28, 2016
  • last_resort

    Mar. 23, 2016
  • racooma

    Mar. 22, 2016
  • silverrin

    Mar. 22, 2016
  • KeisukeNakata

    Mar. 20, 2016
  • tsubame9590206

    Mar. 20, 2016

2016/03/19にChainer meetup #2で、Chainerのテスト環境をDockerで整備した話を話しました

Views

Total views

16,407

On Slideshare

0

From embeds

0

Number of embeds

1,091

Actions

Downloads

121

Shares

0

Comments

0

Likes

28

×