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
25
深層学習時代の自然言語処理ビジネス @DLLAB 言語・音声ナイト
unnonouno
0
46
ベンチャー企業で言葉を扱うロボットの研究開発をする @東京大学 電子情報学特論I
unnonouno
0
45
PFNにおけるセミナー活動 @NLP2018 言語処理研究者・技術者の育成と未来への連携WS
unnonouno
0
15
進化するChainer @JSAI2017
unnonouno
0
21
予測型戦略を知るための機械学習チュートリアル @BigData Conference 2017 Spring
unnonouno
0
23
深層学習フレームワーク Chainerとその進化
unnonouno
0
21
深層学習による機械とのコミュニケーション @DeNA TechCon 2017
unnonouno
0
32
最先端NLP勉強会 “Learning Language Games through Interaction” @第8回最先端NLP勉強会
unnonouno
0
15
Other Decks in Technology
See All in Technology
Kiro Meetup #7 Kiro アップデート (2025/12/15〜2026/3/20)
katzueno
2
250
夢の無限スパゲッティ製造機 #phperkaigi
o0h
PRO
0
370
【PHPerKaigi2026】OpenTelemetry SDKを使ってPHPでAPMを自作する
fendo181
1
300
「お金で解決」が全てではない!大規模WebアプリのCI高速化 #phperkaigi
stefafafan
5
2.3k
ThetaOS - A Mythical Machine comes Alive
aslander
0
190
Phase07_実務適用
overflowinc
0
2k
Phase06_ClaudeCode実践
overflowinc
0
2.1k
AIエージェント勉強会第3回 エージェンティックAIの時代がやってきた
ymiya55
0
130
20年以上続く PHP 大規模プロダクトを Kubernetes へ ── クラウド基盤刷新プロジェクトの4年間
oogfranz
PRO
0
310
Phase11_戦略的AI経営
overflowinc
0
1.7k
Blue/Green Deployment を用いた PostgreSQL のメジャーバージョンアップ
kkato1
0
140
イベントで大活躍する電子ペーパー名札を作る(その2) 〜 M5PaperとM5PaperS3 〜 / IoTLT @ JLCPCB オープンハードカンファレンス
you
PRO
0
210
Featured
See All Featured
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
400
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
30 Presentation Tips
portentint
PRO
1
260
Raft: Consensus for Rubyists
vanstee
141
7.4k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
420
Heart Work Chapter 1 - Part 1
lfama
PRO
5
35k
A better future with KSS
kneath
240
18k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
160
The Limits of Empathy - UXLibs8
cassininazir
1
270
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
150
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.6k
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
ご清聴ありがとうございました