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
7
Chainerのテスト環境と DockerでのCUDAの利⽤
Yuya Unno
March 19, 2016
Tweet
Share
More Decks by Yuya Unno
See All by Yuya Unno
深層学習で切り拓くパーソナルロボットの未来 @東京大学 先端技術セミナー 工学最前線
unnonouno
0
17
深層学習時代の自然言語処理ビジネス @DLLAB 言語・音声ナイト
unnonouno
0
38
ベンチャー企業で言葉を扱うロボットの研究開発をする @東京大学 電子情報学特論I
unnonouno
0
34
PFNにおけるセミナー活動 @NLP2018 言語処理研究者・技術者の育成と未来への連携WS
unnonouno
0
9
進化するChainer @JSAI2017
unnonouno
0
17
予測型戦略を知るための機械学習チュートリアル @BigData Conference 2017 Spring
unnonouno
0
11
深層学習フレームワーク Chainerとその進化
unnonouno
0
16
深層学習による機械とのコミュニケーション @DeNA TechCon 2017
unnonouno
0
24
最先端NLP勉強会 “Learning Language Games through Interaction” @第8回最先端NLP勉強会
unnonouno
0
12
Other Decks in Technology
See All in Technology
slog.Handlerのよくある実装ミス
sakiengineer
4
470
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
8.8k
使いやすいプラットフォームの作り方 ー LINEヤフーのKubernetes基盤に学ぶ理論と実践
lycorptech_jp
PRO
1
160
20250910_障害注入から効率的復旧へ_カオスエンジニアリング_生成AIで考えるAWS障害対応.pdf
sh_fk2
3
280
機械学習を扱うプラットフォーム開発と運用事例
lycorptech_jp
PRO
0
660
Snowflake×dbtを用いたテレシーのデータ基盤のこれまでとこれから
sagara
0
120
2025/09/16 仕様駆動開発とAI-DLCが導くAI駆動開発の新フェーズ
masahiro_okamura
0
130
JTCにおける内製×スクラム開発への挑戦〜内製化率95%達成の舞台裏/JTC's challenge of in-house development with Scrum
aeonpeople
0
270
複数サービスを支えるマルチテナント型Batch MLプラットフォーム
lycorptech_jp
PRO
1
960
2つのフロントエンドと状態管理
mixi_engineers
PRO
3
150
普通のチームがスクラムを会得するたった一つの冴えたやり方 / the best way to scrum
okamototakuyasr2
0
110
今日から始めるAWSセキュリティ対策 3ステップでわかる実践ガイド
yoshidatakeshi1994
0
120
Featured
See All Featured
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
30
9.7k
Facilitating Awesome Meetings
lara
55
6.5k
Java REST API Framework Comparison - PWX 2021
mraible
33
8.8k
For a Future-Friendly Web
brad_frost
180
9.9k
Unsuck your backbone
ammeep
671
58k
Typedesign – Prime Four
hannesfritz
42
2.8k
Designing for humans not robots
tammielis
253
25k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
131
19k
Bash Introduction
62gerente
615
210k
Agile that works and the tools we love
rasmusluckow
330
21k
Building Flexible Design Systems
yeseniaperezcruz
329
39k
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
ご清聴ありがとうございました