SlideShare ist ein Scribd-Unternehmen logo
1 von 28
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
これで大丈夫
ドキュメントにもそう書いてある
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

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (20)

【DL輪読会】マルチエージェント強化学習における近年の 協調的方策学習アルゴリズムの発展
【DL輪読会】マルチエージェント強化学習における近年の 協調的方策学習アルゴリズムの発展【DL輪読会】マルチエージェント強化学習における近年の 協調的方策学習アルゴリズムの発展
【DL輪読会】マルチエージェント強化学習における近年の 協調的方策学習アルゴリズムの発展
 
Transformerを多層にする際の勾配消失問題と解決法について
Transformerを多層にする際の勾配消失問題と解決法についてTransformerを多層にする際の勾配消失問題と解決法について
Transformerを多層にする際の勾配消失問題と解決法について
 
分散学習のあれこれ~データパラレルからモデルパラレルまで~
分散学習のあれこれ~データパラレルからモデルパラレルまで~分散学習のあれこれ~データパラレルからモデルパラレルまで~
分散学習のあれこれ~データパラレルからモデルパラレルまで~
 
【DL輪読会】Llama 2: Open Foundation and Fine-Tuned Chat Models
【DL輪読会】Llama 2: Open Foundation and Fine-Tuned Chat Models【DL輪読会】Llama 2: Open Foundation and Fine-Tuned Chat Models
【DL輪読会】Llama 2: Open Foundation and Fine-Tuned Chat Models
 
Tensor コアを使った PyTorch の高速化
Tensor コアを使った PyTorch の高速化Tensor コアを使った PyTorch の高速化
Tensor コアを使った PyTorch の高速化
 
時系列予測にTransformerを使うのは有効か?
時系列予測にTransformerを使うのは有効か?時系列予測にTransformerを使うのは有効か?
時系列予測にTransformerを使うのは有効か?
 
機械学習モデルの判断根拠の説明
機械学習モデルの判断根拠の説明機械学習モデルの判断根拠の説明
機械学習モデルの判断根拠の説明
 
[Track2-2] 最新のNVIDIA AmpereアーキテクチャによるNVIDIA A100 TensorコアGPUの特長とその性能を引き出す方法
[Track2-2] 最新のNVIDIA AmpereアーキテクチャによるNVIDIA A100 TensorコアGPUの特長とその性能を引き出す方法[Track2-2] 最新のNVIDIA AmpereアーキテクチャによるNVIDIA A100 TensorコアGPUの特長とその性能を引き出す方法
[Track2-2] 最新のNVIDIA AmpereアーキテクチャによるNVIDIA A100 TensorコアGPUの特長とその性能を引き出す方法
 
TVM の紹介
TVM の紹介TVM の紹介
TVM の紹介
 
続・PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜 #2
続・PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜 #2続・PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜 #2
続・PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜 #2
 
モデル高速化百選
モデル高速化百選モデル高速化百選
モデル高速化百選
 
分散深層学習 @ NIPS'17
分散深層学習 @ NIPS'17分散深層学習 @ NIPS'17
分散深層学習 @ NIPS'17
 
Rust で RTOS を考える
Rust で RTOS を考えるRust で RTOS を考える
Rust で RTOS を考える
 
ゼロから始める深層強化学習(NLP2018講演資料)/ Introduction of Deep Reinforcement Learning
ゼロから始める深層強化学習(NLP2018講演資料)/ Introduction of Deep Reinforcement Learningゼロから始める深層強化学習(NLP2018講演資料)/ Introduction of Deep Reinforcement Learning
ゼロから始める深層強化学習(NLP2018講演資料)/ Introduction of Deep Reinforcement Learning
 
[DL輪読会]Revisiting Deep Learning Models for Tabular Data (NeurIPS 2021) 表形式デー...
[DL輪読会]Revisiting Deep Learning Models for Tabular Data  (NeurIPS 2021) 表形式デー...[DL輪読会]Revisiting Deep Learning Models for Tabular Data  (NeurIPS 2021) 表形式デー...
[DL輪読会]Revisiting Deep Learning Models for Tabular Data (NeurIPS 2021) 表形式デー...
 
[DL輪読会]1次近似系MAMLとその理論的背景
[DL輪読会]1次近似系MAMLとその理論的背景[DL輪読会]1次近似系MAMLとその理論的背景
[DL輪読会]1次近似系MAMLとその理論的背景
 
Transformer メタサーベイ
Transformer メタサーベイTransformer メタサーベイ
Transformer メタサーベイ
 
機械学習モデルの判断根拠の説明(Ver.2)
機械学習モデルの判断根拠の説明(Ver.2)機械学習モデルの判断根拠の説明(Ver.2)
機械学習モデルの判断根拠の説明(Ver.2)
 
SSII2021 [OS2-01] 転移学習の基礎:異なるタスクの知識を利用するための機械学習の方法
SSII2021 [OS2-01] 転移学習の基礎:異なるタスクの知識を利用するための機械学習の方法SSII2021 [OS2-01] 転移学習の基礎:異なるタスクの知識を利用するための機械学習の方法
SSII2021 [OS2-01] 転移学習の基礎:異なるタスクの知識を利用するための機械学習の方法
 
(第3版)「知能の構成的解明の研究動向と今後の展望」についての個人的見解:Chain of thought promptingやpostdictionを中...
(第3版)「知能の構成的解明の研究動向と今後の展望」についての個人的見解:Chain of thought promptingやpostdictionを中...(第3版)「知能の構成的解明の研究動向と今後の展望」についての個人的見解:Chain of thought promptingやpostdictionを中...
(第3版)「知能の構成的解明の研究動向と今後の展望」についての個人的見解:Chain of thought promptingやpostdictionを中...
 

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

Ähnlich wie KubernetesでGPUクラスタを管理したい (20)

EnrootとPyxisで快適コンテナ生活
EnrootとPyxisで快適コンテナ生活EnrootとPyxisで快適コンテナ生活
EnrootとPyxisで快適コンテナ生活
 
ディープラーニングイメージで構築する快適・高速な機械学習環境
ディープラーニングイメージで構築する快適・高速な機械学習環境ディープラーニングイメージで構築する快適・高速な機械学習環境
ディープラーニングイメージで構築する快適・高速な機械学習環境
 
Slurmのジョブスケジューリングと実装
Slurmのジョブスケジューリングと実装Slurmのジョブスケジューリングと実装
Slurmのジョブスケジューリングと実装
 
20191120 beyondstudy#21 kitaoka
20191120 beyondstudy#21 kitaoka20191120 beyondstudy#21 kitaoka
20191120 beyondstudy#21 kitaoka
 
2016 06-30-deep-learning-archi
2016 06-30-deep-learning-archi2016 06-30-deep-learning-archi
2016 06-30-deep-learning-archi
 
kube-system落としてみました
kube-system落としてみましたkube-system落としてみました
kube-system落としてみました
 
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
 
パタヘネゼミ 第6章
パタヘネゼミ 第6章パタヘネゼミ 第6章
パタヘネゼミ 第6章
 
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正前 typoあり)」
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正前 typoあり)」「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正前 typoあり)」
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正前 typoあり)」
 
20180729 Preferred Networksの機械学習クラスタを支える技術
20180729 Preferred Networksの機械学習クラスタを支える技術20180729 Preferred Networksの機械学習クラスタを支える技術
20180729 Preferred Networksの機械学習クラスタを支える技術
 
20221105_GCPUG 女子会 Kubernets 編.pdf
20221105_GCPUG 女子会 Kubernets 編.pdf20221105_GCPUG 女子会 Kubernets 編.pdf
20221105_GCPUG 女子会 Kubernets 編.pdf
 
Watsonをささえる ハイパフォーマンスクラウドで はじめるDeep Learning
Watsonをささえる ハイパフォーマンスクラウドで はじめるDeep LearningWatsonをささえる ハイパフォーマンスクラウドで はじめるDeep Learning
Watsonをささえる ハイパフォーマンスクラウドで はじめるDeep Learning
 
GPU Container as a Serviceを実現するための最新OSS徹底比較 - OpenStack最新情報セミナー 2017年7月
GPU Container as a Serviceを実現するための最新OSS徹底比較 - OpenStack最新情報セミナー 2017年7月GPU Container as a Serviceを実現するための最新OSS徹底比較 - OpenStack最新情報セミナー 2017年7月
GPU Container as a Serviceを実現するための最新OSS徹底比較 - OpenStack最新情報セミナー 2017年7月
 
20130126 sc12-reading
20130126 sc12-reading20130126 sc12-reading
20130126 sc12-reading
 
Kuberneteの運用を支えるGitOps
Kuberneteの運用を支えるGitOpsKuberneteの運用を支えるGitOps
Kuberneteの運用を支えるGitOps
 
俺とKubernetes
俺とKubernetes俺とKubernetes
俺とKubernetes
 
ぼうけんにでかけよう Kubernetes KEDA
ぼうけんにでかけよう Kubernetes KEDAぼうけんにでかけよう Kubernetes KEDA
ぼうけんにでかけよう Kubernetes KEDA
 
Autopilot google kubernetes engineでargo workflowsを動かす
Autopilot google kubernetes engineでargo workflowsを動かすAutopilot google kubernetes engineでargo workflowsを動かす
Autopilot google kubernetes engineでargo workflowsを動かす
 
グリー株式会社『私たちが GCP を使い始めた本当の理由』第 9 回 Google Cloud INSIDE Game & Apps
グリー株式会社『私たちが GCP を使い始めた本当の理由』第 9 回 Google Cloud INSIDE Game & Appsグリー株式会社『私たちが GCP を使い始めた本当の理由』第 9 回 Google Cloud INSIDE Game & Apps
グリー株式会社『私たちが GCP を使い始めた本当の理由』第 9 回 Google Cloud INSIDE Game & Apps
 
私たちがGCPを使い始めた本当の理由
私たちがGCPを使い始めた本当の理由私たちがGCPを使い始めた本当の理由
私たちがGCPを使い始めた本当の理由
 

Mehr von Yuji Oshima (11)

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

Kürzlich hochgeladen

Kürzlich hochgeladen (11)

論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 

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