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
17
Chainerのテスト環境と DockerでのCUDAの利⽤
Yuya Unno
March 19, 2016
Tweet
Share
More Decks by Yuya Unno
See All by Yuya Unno
深層学習で切り拓くパーソナルロボットの未来 @東京大学 先端技術セミナー 工学最前線
unnonouno
0
23
深層学習時代の自然言語処理ビジネス @DLLAB 言語・音声ナイト
unnonouno
0
45
ベンチャー企業で言葉を扱うロボットの研究開発をする @東京大学 電子情報学特論I
unnonouno
0
45
PFNにおけるセミナー活動 @NLP2018 言語処理研究者・技術者の育成と未来への連携WS
unnonouno
0
15
進化するChainer @JSAI2017
unnonouno
0
21
予測型戦略を知るための機械学習チュートリアル @BigData Conference 2017 Spring
unnonouno
0
22
深層学習フレームワーク Chainerとその進化
unnonouno
0
21
深層学習による機械とのコミュニケーション @DeNA TechCon 2017
unnonouno
0
31
最先端NLP勉強会 “Learning Language Games through Interaction” @第8回最先端NLP勉強会
unnonouno
0
15
Other Decks in Technology
See All in Technology
ソフトバンク流!プラットフォームエンジニアリング実現へのアプローチ
sbtechnight
1
230
CyberAgentの生成AI戦略 〜変わるものと変わらないもの〜
katayan
0
280
2026年もソフトウェアサプライチェーンのリスクに立ち向かうために / Product Security Square #3
flatt_security
1
720
ReactのdangerouslySetInnerHTMLは“dangerously”だから危険 / Security.any #09 卒業したいセキュリティLT
flatt_security
0
370
[2] Power BI Deep Dive [2026-03]
ohata_bi
0
110
Agent Skill 是什麼?對軟體產業帶來的變化
appleboy
0
130
AgentCoreとLINEを使った飲食店おすすめアプリを作ってみた
yakumo
2
100
Visional 28新卒プロダクト職(エンジニア/デザイナー)向け 会社説明資料 / Visional Company Briefing for Newgrads 28
visional_engineering_and_design
1
110
イベントで大活躍する電子ペーパー名札を作る(その2) 〜 M5PaperとM5PaperS3 〜 / IoTLT @ JLCPCB オープンハードカンファレンス
you
PRO
0
140
VLAモデル構築のための AIロボット向け模倣学習キット
kmatsuiugo
0
310
AWS CDK「読めるけど書けない」を脱却するファーストステップ
smt7174
3
210
フロントエンド刷新 4年間の軌跡
yotahada3
0
520
Featured
See All Featured
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.2k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
130
4 Signs Your Business is Dying
shpigford
187
22k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.1k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
Embracing the Ebb and Flow
colly
88
5k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
1.9k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
360
Principles of Awesome APIs and How to Build Them.
keavy
128
17k
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
ご清聴ありがとうございました