クラウドを活用したNGC✖Singularity での機械学習環境GPU Deep Learning Community #8 May 24, 2018Ryo NAKAMARU, SUPINF Inc., Rescale, Inc.
View Slide
中丸 良 @pottava• CTO at SUPINF Inc. / Solutions Architect at Rescale, Inc.• AWS Certified SA, DevOps Engineer - Pro• Google Certified Professional - Cloud ArchitectProfile!2
SUPINF Inc.!3• クラウド / コンテナ 中心の コンサルティング / 環境構築 / 受託開発 / 運用• 直近ではオンプレ × DGX-1 × Kubernetes な機械学習環境の納品など• スピンフ、と読みます
Rescale, Inc.!4• クラウド HPC プラットフォームを SaaS で提供• スケーラブルなシミュレーションや機械学習をとても手軽に• Singularity でのジョブ実行もサポート
!5Rescale1. 入力ファイル選んで2. Singularity 選んで3. ハードウェア選んで4. Submit ボタン押すだけ
機械学習環境!6
インフラ管理者のための 7 つのヒント!71. なぜ Docker か2. なぜ NVIDIA GPU Cloud(NGC)か3. ジョブスケジューラとは何か4. なぜ Kubernetes か5. なぜ Singularity か6. なぜ HPC のジョブスケジューラか7. なぜクラウドとのハイブリッド環境か
Point of view!8今日はインフラ管理者視点、かつ学習フェーズのお話です。✖ アルゴリズムの話はありません✖ 推論フェーズの話もありません
1. なぜ Docker か!9
Docker のよさ!10必要最低限 隔離された実行環境がすぐ手に入る・・・・・
Docker のよさ!11必要最低限 隔離された実行環境がすぐ手に入る・・・・・気軽にかんたんに共有できる、再現する・・・・・repositorypush pull
Docker のよさ!12必要最低限 隔離された実行環境がすぐ手に入る・・・・・気軽にかんたんに共有できる、再現する利用事例 が豊富で知見が得やすい・・・・・repositorypush pull
2. なぜ NVIDIA GPU Cloud(NGC)か!13
NGC とは?!14・NVIDIA 公式の Docker レジストリ・Docker イメージは毎月更新される・CUDA やライブラリはもちろん同梱・NVIDIA GPU に最適化された設定・なんと無料
NGC のない世界!15Dockerfile職人養成所?肥大化するリポジトリ管理者たる重責!!GPU 最適化CUDA、ライブラリ、etc ..
NGC のある世界!16メンテナンスフリー、利用料もフリーNVIDIA お墨付きの安心感
3. ジョブスケジューラとは何か!17
資源の占有!18お一人様機械学習
資源の共有!19お一人様機械学習 チームで資源を共有使います!
全体資源の把握・ジョブの配置!20data center cloudお一人様機械学習 チームで資源を共有 会社で全資源を共有使います!schedulerジョブを渡すと空いている資源に自動配置・計算開始
スケジューラといえば巷で話題のクーバネーティス!21
4. なぜ Kubernetes か!22
Kubernetes!23Control plane(管理ノード) 計算ノード社内 DC 社内 DC• Docker との相性抜群Kubernetes クラスタ
Kubernetes!24Control plane(管理ノード) 計算ノードTesla V100社内 DCTITAN V社内 DC• Docker との相性抜群• NVIDIA さんもサポートを宣言• 複数 GPU アーキテクチャでも OK( New )
Kubernetes!25Control plane(管理ノード)ジョブを定義したYAML を Apply 計算ノードTesla V100社内 DCTITAN V社内 DC• 例えば高性能な Tesla で計算したい! YAML に書いた定義を渡すと・・
Kubernetes!26Control plane(管理ノード)ジョブを定義したYAML を Apply 計算ノードTesla V100社内 DCTITAN V社内 DC• 空きがあり、条件に合うノードに配置• nvidia-docker v1 / v2 すでに対応済→ コンテナへ適切に GPU 割り当て
Kubernetes!27Control plane(管理ノード) 計算ノードTesla V100社内 DCTITAN V社内 DCTesla P100AWS…• 専用線で繋げばクラウドもクラスタに• Federated という方法もあったり
Kubernetes!28Control plane(管理ノード)ジョブを定義したYAML を Apply 計算ノードTesla V100社内 DCTITAN V社内 DCTesla P100AWS…• “クラウドで動かしたい” or / and• “Tesla P100 で動かしたい”
k8s で十分じゃない?!29• そうですね!私自身、本番稼働を経験したのはここまで。• 大切なのは、要件にあった技術が選べること‣ この先の話も知っていると選択肢が広がる‣ ツールの利用想定にない要件で使うのはお互い不幸• HPC を支える技術の深さは貴重‣ DL フレームワークの追従, etc ..
そんな中、では!30
5. なぜ Singularity か!31
Better Docker!32もっと計算を速くしたい勢 運用を改善したい勢IB使いたいノードまたぎたいもっとMPIかんたんにroot 渡すの無理です既存の スケジューラ使いたい
Singularity• http://singularity.lbl.gov• Singularity = Docker のいいところ(特に再現性)+ HPC サポート‣ 基本思想は同じ: Build, Ship, and Run any app, Anywhere‣ 高性能ハードウェアそのまま、ジョブスケジューラもそのまま• DockerHub のように公式レジストリもあるよ‣ https://singularity-hub.org!33
国内採用事例!34And more ..
でも Singularity、Kubernetes で動かないよね?じゃあ何を使えばいいの・・!35
6. なぜ HPC のジョブスケジューラか!36
Web 界隈のジョブスケジューラ!37Web (Docker) 界隈・Singularity 対応なし・基本ホストリソースの 切り売りscheduler GPUGPUGPU… GPUGPUGPU…確保!
HPC 系ジョブスケジューラとの違い!38Web (Docker) 界隈・Singularity 対応なし・基本ホストリソースの 切り売りscheduler GPUGPUGPU… GPUGPUGPU…確保!scheduler GPUGPUGPU… GPUGPUGPU…確保!HPC 業界・ノードをまたいで リソースを確保できる・ノード間通信するための設定もしてくれる
深層学習フレームワークの直近の傾向!39
7. なぜクラウドとのハイブリッド環境か!40
クラウド?オンプレ?いいとこ取り?!41・セキュリティポリシーデータ転送制限 etc..(仕方ないやつ・・)・クラウドほんとに安い?例 1)GeForce + AWS例 2)大企業の調達コスト・データ転送速度・どちらが最新 GPU?・鬼のチューニング
Rescale で検証中の例!42WebUI からぽちっと
Rescale で検証中の例!43Jupyter notebook を入れローカルで試行錯誤
Rescale で検証中の例!44Jupyter notebook を入れローカルで試行錯誤Singularity に変換して
Rescale で検証中の例!45Jupyter notebook を入れローカルで試行錯誤Singularity に変換してクラウドで高速に並列計算
DEMO!46
NGC Registry API Library for Go!47レジストリから情報を抜きたい
ご静聴ありがとうございました参考文献:• ディープ ラーニング コンテナー - NVIDIA GPU Cloud (NGC) https://www.nvidia.com/ja-jp/gpu-cloud/deep-learning-containers/• Containers for Science, Reproducibility and Mobility SINGULARITY P2 https://www.intel.com/content/dam/www/public/us/en/documents/presentation/hpc-containers-singularity-advanced.pdf• Singularityで分散深層学習(産総研佐藤さん) https://www.slideshare.net/htsst/singularity-85959573