SlideShare a Scribd company logo
kubernetesでGPUクラスタ
管理したい
NTT ソフトウェアイノベーションセンタ
大嶋悠司
モチベーション
• 機械学習
• 分散学習タスクの場合にいちいちノードにログインしたくない
• 複数のタスクを並列で走らせたい
• コンテナ単位で管理できればデプロイも楽
なぜkubernetesなのか
• コンテナオーケストレータの覇者であることがほぼ確定
• スケジューラなどが拡張しやすい
• アルファ版だがGPUサポートが有る
• コミュニティとしても盛り上がってるところ
• https://github.com/google/kubeflow
• https://github.com/tensorflow/k8s
GPUマネージメントのドキュメント
読めばなんなくわかる
kubernetesでGPU管理の構成
Node
GPU
DLフレームワーク
Nvidiaライブラリ
Nvidiaドライバ
spec:
template:
metadata:
labels:
app: mxd-worker1
spec:
volumes:
- name: nvidialib
hostPath:
path: /usr/lib/nvidia-375
containers:
- name: mxd-worker1
image: mxnet/python:gpu
volumeMounts:
- mountPath: /usr/local/nvidia
name: nvidialib
readOnly: true
resources:
requests:
alpha.kubernetes.io/nvidia-gpu: 4
limits:
alpha.kubernetes.io/nvidia-gpu: 4
これで大丈夫
ドキュメントにもそう書いてある
KubernetesでGPUクラスタを管理したい
Nvidia-dockerなら動いたのに・・・
(旧) Nvidia-dockerはどうやってるいたか
謎の力で必要なライブラリを
/var/lib/nvidia-docker/volumes/nvidia_driver/{バージョン}
に集めてくれる
で、それをマウントしてる
解決策
kubernetesクラスタ構築前にnv-dockerをインストールしてライブ
ラリだけ集めた後
/var/lib/nvidia-docker/volumes/nvidia_driver/{バージョン}
をマウント
結果:動いた!
不満点1:マウントパスに各ノードのcudaのバージョンが必要
不満点2:nvidia-docker1.0はプロジェクトが終了してる
もっとかっこよくなりませんか…?
手段
1. kubernetes + docker + nvidia-docker2
2. kubernetes + cri-containerd + nvidia-container-runtime
3. ???
目標
1. コミュニティでちゃんとサポートされそうなこと
2. k8sのマニフェストにノード固有の設定が不要なこと
nvida-docker2, nvidia-container-runtime
• nvidiaが最近始めたプロジェクト
• OCIランタイムスペックに準拠したGPUを利用するためのコンテ
ナランタイム
• ホスト側のCUDAのバージョンを自動的に認識してなんとかして
くれる
• 最新版のdockerにも対応してる
• 特徴として環境変数でGPU数や、GPUアーキテクチャの指定な
どを細かく指定できる
docker, containerd, runcおさらい
dockerd
containerd
runc
shim
runc
shim
runc
shim
OCI ランタイムスペック
nvidia-docker2のやること
dockerd
containerd
runc
shim
runc
shim
nvidia
runtime
shim
OCI ランタイムスペック
nv-docker, nv-runtime, k8sの関係
k8sはdocker, cri-containerdに対して
deviceオプションでGPUデバイスを、-vでライブラリを入れる
デバイスオプション
このpodにはGPU 2つ
ライブラリのマウントはユーザの責任
2 GPUマウントするよー
nv-docker, nv-runtime, k8sの関係
旧nv-dockerも一緒
デバイスオプション
このコンテナにはGPU 2つ
ライブラリのマウントも自動
2 GPUマウントするよー
nv-docker, nv-runtime, k8sの関係
nvidia-docker2, nv-runtimeは違う
環境変数でGPU数指定
NVIDIA_VISIBLE_DEVICES=0,1
このコンテナにはGPU 2つ
2GPUマウントしよう
デバイス・ライブラリのマウント
方法1:k8s + docker + nvidia-docker2
Node
GPU
nv-runtime
素直な構成、安心と信頼の?docker
構築手順
• ワーカにnvidiaドライバインストール
• 各ノードにdockerインストール
• ワーカにnvidia-docker2インストール
• ワーカでdefault runtimeの設定変更
• kubeadmなどでkubernetesクラスタ構築
各ワーカでの設定
{
"default-runtime": ”nvidia",
"runtimes": {
”nvidia": {
"path": "nvidia-container-runtime"
},
}
}
/etc/docker/daemon.json
k8s + cri-containerd + nv-runtime
Node
GPU
CRI-containerd
nv-runtime
alpha版の組み合わせでちょっと怖い
でも将来的にはこっちが主流かも?
構築手順
• ワーカにnvidiaドライバインストール
• https://github.com/kubernetes-incubator/cri-containerd を参考に
cri-containerd等を各ノードにインストール
• ワーカにnvidia-container-runtimeをインストール
• ワーカにcontainerdのruntimeを設定
• kubeadmなどでkubernetesクラスタ構築
各ワーカでの設定
[cgroup]
path = "runtime”
[plugins.linux]
runtime = "/usr/bin/nvidia-container-runtime"
/etc/containerd/config.tml
nv-docker2, nv-runtime, k8sの組み合わせに
よる問題
このpodにはGPUはない
環境変数でGPU数指定
NVIDIA_VISIBLE_DEVICES=0,1
デバイス・ライブラリのマウント
このコンテナにはGPU 2つ
2GPUマウントしよう
誰が GPUを管理するか複雑になる
kubernetesにGPUを管理させる
• nvidia-docker2/nvidia-container-runtimeでは
NVIDIA_VISIBLE_DEVICESをnoneとすればライブラリのマウントだ
け行う
• NVIDIA_VISIBLE_DEVICES=noneにしておきながらkubernetes側で
resourceを記述する
結果:
docker + nvidia-docker2 なら目標を満たせた
cri-conainerd + nvidia-container-runtimeだとなぜかずっとpending
kubernetesにGPUを管理させる
• nvidia-docker2/nvidia-container-runtimeでは
NVIDIA_VISIBLE_DEVICESをnoneとすればライブラリのマウントだ
け行う
• NVIDIA_VISIBLE_DEVICES=noneにしておきながらkubernetes側で
resourceを記述する
結果:
docker + nvidia-docker2 なら目標を満たせた
cri-conainerd + nvidia-container-runtimeだとなぜかずっとpending
が、これはかっこいい方法なんだろうか
結論
• 現状では怪しいワークアラウンドが必要になる
• nvidia-docker2を使うのも選択肢としてはありかも
• もしくは力技で関連ライブラリを共通のパスにコピーする方法
もある
• kubeletは/devの上から指定するだけだが、nvidia-docker2では
GPUのUUIDやアーキテクチャを指定とかいろいろ機能があるが
まだkubernetesと上手く連携できない
• このあたりのインタフェースの整理はこれからだと思われる
ちなみに‥GKEじゃだめですか?
• GKEはalphaとしてGPUインスタンスも扱える
• cudaドライバのインストール等をk8sのデーモンセットでできる
gcloud alpha container clusters create gpu-cluster
--accelerator type=nvidia-tesla-k80,count=1
--zone=asia-east1-a
--enable-kubernetes-alpha
$ kubectl apply -f daemonset.yaml
https://github.com/ContainerEngine/accelerators

More Related Content

What's hot (20)

PDF
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
Preferred Networks
 
PDF
KubeCon + CloudNativeCon Europe 2022 Recap - Batch/HPCの潮流とScheduler拡張事例 / Kub...
Preferred Networks
 
PDF
コンテナの作り方「Dockerは裏方で何をしているのか?」
Masahito Zembutsu
 
PPTX
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
NTT DATA Technology & Innovation
 
PDF
マルチコアを用いた画像処理
Norishige Fukushima
 
PDF
ゼロから作るKubernetesによるJupyter as a Service ー Kubernetes Meetup Tokyo #43
Preferred Networks
 
PDF
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
Preferred Networks
 
PDF
DDDオンライン勉強会#2 「集約・境界付けられたコンテキスト」
Koichiro Matsuoka
 
PPTX
MLOpsはバズワード
Tetsutaro Watanabe
 
PDF
DockerとPodmanの比較
Akihiro Suda
 
PDF
【DL輪読会】"Masked Siamese Networks for Label-Efficient Learning"
Deep Learning JP
 
PDF
マイクロにしすぎた結果がこれだよ!
mosa siru
 
PDF
続・PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜 #2
Preferred Networks
 
PDF
Teslaにおけるコンピュータビジョン技術の調査
Kazuyuki Miyazawa
 
PDF
KubeCon + CloudNativeCon Europe 2022 Recap / Kubernetes Meetup Tokyo #51 / #k...
Preferred Networks
 
PDF
ドメイン適応の原理と応用
Yoshitaka Ushiku
 
PDF
Topology Managerについて / Kubernetes Meetup Tokyo 50
Preferred Networks
 
PDF
深層強化学習でマルチエージェント学習(前篇)
Junichiro Katsuta
 
PDF
オススメの標準・準標準パッケージ20選
Takuya Ueda
 
PDF
Docker入門 - 基礎編 いまから始めるDocker管理
Masahito Zembutsu
 
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
Preferred Networks
 
KubeCon + CloudNativeCon Europe 2022 Recap - Batch/HPCの潮流とScheduler拡張事例 / Kub...
Preferred Networks
 
コンテナの作り方「Dockerは裏方で何をしているのか?」
Masahito Zembutsu
 
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
NTT DATA Technology & Innovation
 
マルチコアを用いた画像処理
Norishige Fukushima
 
ゼロから作るKubernetesによるJupyter as a Service ー Kubernetes Meetup Tokyo #43
Preferred Networks
 
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
Preferred Networks
 
DDDオンライン勉強会#2 「集約・境界付けられたコンテキスト」
Koichiro Matsuoka
 
MLOpsはバズワード
Tetsutaro Watanabe
 
DockerとPodmanの比較
Akihiro Suda
 
【DL輪読会】"Masked Siamese Networks for Label-Efficient Learning"
Deep Learning JP
 
マイクロにしすぎた結果がこれだよ!
mosa siru
 
続・PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜 #2
Preferred Networks
 
Teslaにおけるコンピュータビジョン技術の調査
Kazuyuki Miyazawa
 
KubeCon + CloudNativeCon Europe 2022 Recap / Kubernetes Meetup Tokyo #51 / #k...
Preferred Networks
 
ドメイン適応の原理と応用
Yoshitaka Ushiku
 
Topology Managerについて / Kubernetes Meetup Tokyo 50
Preferred Networks
 
深層強化学習でマルチエージェント学習(前篇)
Junichiro Katsuta
 
オススメの標準・準標準パッケージ20選
Takuya Ueda
 
Docker入門 - 基礎編 いまから始めるDocker管理
Masahito Zembutsu
 

Similar to KubernetesでGPUクラスタを管理したい (20)

PDF
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」
ManaMurakami1
 
PDF
EnrootとPyxisで快適コンテナ生活
Kuninobu SaSaki
 
PDF
ディープラーニングイメージで構築する快適・高速な機械学習環境
Yaboo Oyabu
 
PPTX
Slurmのジョブスケジューリングと実装
Ryuichi Sakamoto
 
PDF
20191120 beyondstudy#21 kitaoka
beyond Co., Ltd.
 
PPTX
2016 06-30-deep-learning-archi
Daisuke Nagao
 
PDF
kube-system落としてみました
Shuntaro Saiba
 
PDF
パタヘネゼミ 第6章
okuraofvegetable
 
PDF
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正前 typoあり)」
ManaMurakami1
 
PDF
20180729 Preferred Networksの機械学習クラスタを支える技術
Preferred Networks
 
PDF
20221105_GCPUG 女子会 Kubernets 編.pdf
Google Cloud Platform - Japan
 
PDF
Watsonをささえる ハイパフォーマンスクラウドで はじめるDeep Learning
Atsumori Sasaki
 
PDF
GPU Container as a Serviceを実現するための最新OSS徹底比較 - OpenStack最新情報セミナー 2017年7月
VirtualTech Japan Inc.
 
PDF
20130126 sc12-reading
Toshiya Komoda
 
PDF
Kuberneteの運用を支えるGitOps
shunki fujiwara
 
PPTX
俺とKubernetes
Masayuki KaToH
 
PDF
ぼうけんにでかけよう Kubernetes KEDA
Tsukasa Kato
 
PDF
Autopilot google kubernetes engineでargo workflowsを動かす
shouta yoshikai
 
PDF
グリー株式会社『私たちが GCP を使い始めた本当の理由』第 9 回 Google Cloud INSIDE Game & Apps
Google Cloud Platform - Japan
 
PDF
私たちがGCPを使い始めた本当の理由
gree_tech
 
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」
ManaMurakami1
 
EnrootとPyxisで快適コンテナ生活
Kuninobu SaSaki
 
ディープラーニングイメージで構築する快適・高速な機械学習環境
Yaboo Oyabu
 
Slurmのジョブスケジューリングと実装
Ryuichi Sakamoto
 
20191120 beyondstudy#21 kitaoka
beyond Co., Ltd.
 
2016 06-30-deep-learning-archi
Daisuke Nagao
 
kube-system落としてみました
Shuntaro Saiba
 
パタヘネゼミ 第6章
okuraofvegetable
 
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正前 typoあり)」
ManaMurakami1
 
20180729 Preferred Networksの機械学習クラスタを支える技術
Preferred Networks
 
20221105_GCPUG 女子会 Kubernets 編.pdf
Google Cloud Platform - Japan
 
Watsonをささえる ハイパフォーマンスクラウドで はじめるDeep Learning
Atsumori Sasaki
 
GPU Container as a Serviceを実現するための最新OSS徹底比較 - OpenStack最新情報セミナー 2017年7月
VirtualTech Japan Inc.
 
20130126 sc12-reading
Toshiya Komoda
 
Kuberneteの運用を支えるGitOps
shunki fujiwara
 
俺とKubernetes
Masayuki KaToH
 
ぼうけんにでかけよう Kubernetes KEDA
Tsukasa Kato
 
Autopilot google kubernetes engineでargo workflowsを動かす
shouta yoshikai
 
グリー株式会社『私たちが GCP を使い始めた本当の理由』第 9 回 Google Cloud INSIDE Game & Apps
Google Cloud Platform - Japan
 
私たちがGCPを使い始めた本当の理由
gree_tech
 
Ad

More from Yuji Oshima (11)

PDF
MLCT#12 使われる機能目指して 測ったり試したり
Yuji Oshima
 
PDF
KubeFlow MeetUp #1 Katibよもやま話
Yuji Oshima
 
PDF
KubeFlowでどこまでいける?
Yuji Oshima
 
PDF
2018 07-23
Yuji Oshima
 
PDF
2018 07-19dist
Yuji Oshima
 
PDF
Katib
Yuji Oshima
 
PPTX
Infrakitの話とk8s+GPUの話
Yuji Oshima
 
PPTX
Infrakit Docker_Tokyo_meetup
Yuji Oshima
 
PDF
Docker1.12イングレスロードバランサ
Yuji Oshima
 
PDF
runC概要と使い方
Yuji Oshima
 
PDF
近頃のDockerネットワーク
Yuji Oshima
 
MLCT#12 使われる機能目指して 測ったり試したり
Yuji Oshima
 
KubeFlow MeetUp #1 Katibよもやま話
Yuji Oshima
 
KubeFlowでどこまでいける?
Yuji Oshima
 
2018 07-23
Yuji Oshima
 
2018 07-19dist
Yuji Oshima
 
Infrakitの話とk8s+GPUの話
Yuji Oshima
 
Infrakit Docker_Tokyo_meetup
Yuji Oshima
 
Docker1.12イングレスロードバランサ
Yuji Oshima
 
runC概要と使い方
Yuji Oshima
 
近頃のDockerネットワーク
Yuji Oshima
 
Ad

Recently uploaded (8)

PDF
Hyperledger Fabric最新v3.x系での機能強化、変更点にキャッチアップ!
LFDT Tokyo Meetup
 
PDF
20250710_Devinで切り拓くDB革命_〜価値創出に集中せよ〜.pdf
Masaki Yamakawa
 
PDF
20250630_aws_reinforce_2025_aws_sheild_network_security_director
uedayuki
 
PDF
[Hardening Designers Confernece 2025]ランサムウェアでの見えざるログ・見えるログ
kataware
 
PDF
人気ブロックチェーン基盤「Hyperledger Fabric」最新版を動かしてみた!
LFDT Tokyo Meetup
 
PDF
プライバシ保護のためのインターネットアーキテクチャの進化 (2025-07-11)
Jun Kurihara
 
PDF
SIG-AUDIO 2025 Vol.02 オンラインセミナー SIG-Audioプレゼン資料_オーディオプラグイン開発_塩澤達矢.pdf
IGDA Japan SIG-Audio
 
PDF
Hyperledger Fabric公式サンプル fabric-samples徹底解説
LFDT Tokyo Meetup
 
Hyperledger Fabric最新v3.x系での機能強化、変更点にキャッチアップ!
LFDT Tokyo Meetup
 
20250710_Devinで切り拓くDB革命_〜価値創出に集中せよ〜.pdf
Masaki Yamakawa
 
20250630_aws_reinforce_2025_aws_sheild_network_security_director
uedayuki
 
[Hardening Designers Confernece 2025]ランサムウェアでの見えざるログ・見えるログ
kataware
 
人気ブロックチェーン基盤「Hyperledger Fabric」最新版を動かしてみた!
LFDT Tokyo Meetup
 
プライバシ保護のためのインターネットアーキテクチャの進化 (2025-07-11)
Jun Kurihara
 
SIG-AUDIO 2025 Vol.02 オンラインセミナー SIG-Audioプレゼン資料_オーディオプラグイン開発_塩澤達矢.pdf
IGDA Japan SIG-Audio
 
Hyperledger Fabric公式サンプル fabric-samples徹底解説
LFDT Tokyo Meetup
 

KubernetesでGPUクラスタを管理したい