Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Chainerのテスト環境と DockerでのCUDAの利⽤
Search
Yuya Unno
March 19, 2016
Technology
0
9
Chainerのテスト環境と DockerでのCUDAの利⽤
Yuya Unno
March 19, 2016
Tweet
Share
More Decks by Yuya Unno
See All by Yuya Unno
深層学習で切り拓くパーソナルロボットの未来 @東京大学 先端技術セミナー 工学最前線
unnonouno
0
20
深層学習時代の自然言語処理ビジネス @DLLAB 言語・音声ナイト
unnonouno
0
38
ベンチャー企業で言葉を扱うロボットの研究開発をする @東京大学 電子情報学特論I
unnonouno
0
34
PFNにおけるセミナー活動 @NLP2018 言語処理研究者・技術者の育成と未来への連携WS
unnonouno
0
10
進化するChainer @JSAI2017
unnonouno
0
19
予測型戦略を知るための機械学習チュートリアル @BigData Conference 2017 Spring
unnonouno
0
15
深層学習フレームワーク Chainerとその進化
unnonouno
0
17
深層学習による機械とのコミュニケーション @DeNA TechCon 2017
unnonouno
0
27
最先端NLP勉強会 “Learning Language Games through Interaction” @第8回最先端NLP勉強会
unnonouno
0
12
Other Decks in Technology
See All in Technology
ECS組み込みのBlue/Greenデプロイを動かしてELB側の動きを観察してみる
yuki_ink
3
380
クレジットカードの不正を防止する技術
yutadayo
17
7.9k
国産クラウドを支える設計とチームの変遷 “技術・組織・ミッション”
kazeburo
4
6.2k
未回答質問の回答一覧 / 開発をリードする品質保証 QAエンジニアと開発者の未来を考える-Findy Online Conference -
findy_eventslides
0
360
AI駆動開発を実現するためのアーキテクチャと取り組み
baseballyama
13
8.7k
DDD x Microservice Architecture : Findy Architecture Conf 2025
syobochim
12
3.2k
事業状況で変化する最適解。進化し続ける開発組織とアーキテクチャ
caddi_eng
1
4.7k
なぜブラウザで帳票を生成したいのか どのようにブラウザで帳票を生成するのか
yagisanreports
0
150
個人から巡るAI疲れと組織としてできること - AI疲れをふっとばせ。エンジニアのAI疲れ治療法 ショートセッション -
kikuchikakeru
4
1.8k
巨大モノリスのリプレイス──機能整理とハイブリッドアーキテクチャで挑んだ再構築戦略
zozotech
PRO
0
230
pmconf 2025 大阪「生成AI時代に未来を切り開くためのプロダクト戦略:圧倒的生産性を実現するためのプロダクトサイクロン」 / The Product Cyclone for Outstanding Productivity
yamamuteki
3
2k
ABEJA FIRST GUIDE for Software Engineers
abeja
0
3.2k
Featured
See All Featured
Practical Orchestrator
shlominoach
190
11k
Side Projects
sachag
455
43k
How to Ace a Technical Interview
jacobian
280
24k
Fireside Chat
paigeccino
41
3.7k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
11
940
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
22k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Why You Should Never Use an ORM
jnunemaker
PRO
60
9.6k
Statistics for Hackers
jakevdp
799
230k
Learning to Love Humans: Emotional Interface Design
aarron
274
41k
Code Review Best Practice
trishagee
72
19k
Documentation Writing (for coders)
carmenintech
76
5.1k
Transcript
Chainerのテスト環境と DockerでのCUDAの利利⽤用 (株)Preferred Infrastructure 海野 裕也 (@unnonouno)
⾃自⼰己紹介 海野 裕也 l -2008 東⼤大情報理理⼯工修⼠士 l ⾃自然⾔言語処理理 l 2008-2011
⽇日本アイ・ビー・エム(株)東京基礎研 l テキストマイニング、⾃自然⾔言語処理理の研究開発 l 2011- (株)プリファードインフラストラクチャー l ⾃自然⾔言語処理理、情報検索索、機械学習、テキストマイニングなど の研究開発 l 研究開発系案件、コンサルティング l JubatusやChainerの開発 l 最近は対話処理理 NLP若若⼿手の会共同委員⻑⾧長(2014-) 「オンライン機械学習」(2015, 講談社) 2
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 2x2x2=8通りの環境
そんなにテストいるの・・・? 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
⾃自動テストをしよう 8
既存のCIサービスはGPUに⾮非対応 9
よし、Jenkinsを使おう! 10
Jenkinsとは? l 最もメジャーなオープンソースの継続的インテ グレーションツール l リポジトリを監視して、特定の条件でジョブを ⾃自動実⾏行行してくれる l テストを実⾏行行するようにすれば、⾃自動テスト環 境ができる
11
テストと仮想環境 l 8台のマシンを⽤用意せずに、複数の環境を1台の マシン上でテストしたい 12
Dockerとは? l コンテナ型仮想化技術 l 詳細を語れるほど詳しくないのでググって下さい l 起動が超早い(重要) l Dockerfileに環境のセットアップ⽅方法を書いて おくとキャッシュが効く
l Dockerfile内に環境のセットアップを書いておく 13
こんな感じ 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-kernel-module && ./installers/cuda-linux64- rel-7.5.18-19867135.run --noprompt 17
問題1: GPUが⾒見見えない l ふつうに起動するとGPUがゲストから⾒見見えない l --deviceオプションを渡すと⾒見見えるようになる $ docker run --device
/dev/nvidia0 -- device /dev/nvidiactl --device /dev/nvidia- uvm chainer nvidia-smi 18
問題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
問題3: nvidia-uvmが消失する l 起動直後には /dev/nvidia-uvm がない l 経験的に、sampleのdeviceQueryを実⾏行行すると ⽣生成されることが知られている l
/dev/nvidia-uvmがなかったらdeviceQueryを実 ⾏行行するようにスクリプトを書いておく(あとで もっといい⽅方法があるよ) 20
問題4: ドライババージョンが合わない l nvidia-352.63が公開されて、バージョンが上 がっちゃった l ホストドライバが新しくなって、バージョンの 不不⼀一致問題が再燃 \(^o^)/ l ドライバのバージョンを戻せば・・・いいの
か・・・? 21
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/tools/src/nvidia/nvidia.go
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 runを実⾏行行 l -iを渡すと、bashが起動してデバッグできる
28
ところで、作ってる間に増えてきた・・・ 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
え、まだ増えるの・・・ 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
ご清聴ありがとうございました