SlideShare a Scribd company logo
1 of 65
Download to read offline
Copyright © NTT Communications Corporation.
Transform your business, transcend expectations with our technologically advanced solutions.
GPU Container as a Service を
実現するための最新OSS徹底比較
張 暁晶・角田佳史
松本赳明・原田 和明
Copyright © NTT Communications Corporation.
1
自己紹介
角田 佳史
Yoshifumi Sumida
y.sumida@ntt.com
技術開発部
ソフトウェアエンジニア
興味:IaaS、コンテナ
張 暁晶
Xiaojing Zhang
xiaojing.zhang@ntt.com
技術開発部
ソフトウェアエンジニア
興味:ソフトウェア工学、
ヘテロジニアスなクラウド
Copyright © NTT Communications Corporation.
2
Agenda
1. 背景&目的
2. GPU環境の望ましい要件
3. コンテナ技術関連の各種OSSツール比較
4. OpenStack連携によるマルチテナントの実現
5. GPU Container as a Service つくってみた
Copyright © NTT Communications Corporation.
3
Agenda
1. 背景&目的
2. GPU環境の望ましい要件
3. コンテナ技術関連の各種OSSツール比較
4. OpenStack連携によるマルチテナントの実現
5. GPU Container as a Service つくってみた
Copyright © NTT Communications Corporation.
● AI、機械学習、ビッグデータ解析
○ 高速な計算資源としてGPUが幅広く活用されている
● NTTコミュニケーションズでも注目
○ AI エンジン“COTOHA”、三井化学様における品質予測事例、など
http://www.ntt.com/business/services/application/ai/cotoha.html
http://www.ntt.com/about-us/press-releases/news/article/2016/20160915.html
○ GPUを用いた学習・検証に対する社内ニーズの高まり
4
背景
Copyright © NTT Communications Corporation.
● 高速な並列データ処理が可能なGPUの需要がある
○ 学習や解析などのワークロードは非常に高負荷
● 一方でGPUの調達における予算や時間がネックになることも...
○ クラウドサービスを利用する事により解決出来る
○ 主要クラウドプロバイダは既にGPUインスタンスの提供を開始
■ Azure、AWS、GCP、Bluemix (Bare)
5
GPU利用のトレンド
Copyright © NTT Communications Corporation.
Node 4
Node 3
Node 2
Node 1
6
目的
社内向けに検証環境として
GPU as a Service を提供する
GPU
GPU
GPU
GPUリソースの指定
GPUリソースの管理と
スケジューリング
GPU
GPU as a
Service
Copyright © NTT Communications Corporation.
● クラウド基盤は OpenStack を利用
● VMインスタンスとしてGPUリソースを提供
○ VMにGPUを認識させるため、PCI Passthrough を利用
○ GPUリソースとして、3種類の NVIDIA製 GPU を利用
● 主に機械学習やディープラーニングなどに利用されている
7
社内プライベートクラウドでのGPU提供の現状
Copyright © NTT Communications Corporation.
8
VMでのGPU提供の問題
1. 機械学習用の環境構築のユーザ負担が大きい
○ VM毎に適切なGPUデバイスドライバをインストールする必要がある
○ デバイスドライバ/CUDA/アプリ間でバージョン整合性を保つ必要がある
2. 特に処理が無い時でもGPUリソースが無駄に占有される
○ 社内向けの検証環境で提供可能なGPU数が少ないため
3. プロバイダ側でGPUデバイスを監視出来ない
○ GPUデバイスを VM へ Passthrough しているため
Copyright © NTT Communications Corporation.
1. ユーザの環境構築が容易
2. GPUリソースを使用後に迅速に解放出来る
3. GPUリソースの使用状況を監視出来る
9
コンテナ技術による問題解決
GPU as a Service 実現のため コンテナ技術 を活用
Copyright © NTT Communications Corporation.
10
コンテナ技術とは
INFRASTRUCTURE INFRASTRUCTURE
HOST OSHOST OS
HYPERVISOR CONTAINER ENGINE
GUEST OS
APP
BIN/LIBS BIN/LIBS
APPS APPS
ハイパーバイザ型仮想化 コンテナ型仮想化
● VMと比較して軽量
● リソースを迅速に解放可能
● ホスト所有のデバイスを利用
VM
CONTAINER
BIN/LIBS
GUEST OS
APP
BIN/LIBS
Copyright © NTT Communications Corporation.
11
Agenda
1. 背景&目的
2. GPU環境の望ましい要件
3. コンテナ技術関連の各種OSSツール比較
4. OpenStack連携によるマルチテナントの実現
5. GPU Container as a Service つくってみた
Copyright © NTT Communications Corporation.
● As a Service として利用できる
○ 即時に利用可能・マルチテナント対応
● GPU環境のデプロイが容易である
○ GPU数など幾つかの事項を指定するのみで良い
○ コンテナ技術でデファクトスタンダードのDockerが利用できる
12
GPU as a Service の要件 ~ユーザ側~
GPU
node
User
GaaS
GPU数を指定 Dockerコンテナ作成
Copyright © NTT Communications Corporation.
13
● GPU搭載サーバをクラスタとして管理できる
○ PoC上のGPUクラスタは以下の NVIDIA製 GPU を利用している
● Tesla K2, Tesla K10, Tesla P100
● コンテナ間で GPU の分離ができる
GPU as a Service の要件 ~プロバイダ側~ 1/2
GPU
複数GPUの割り当て
GPU
GPUの分離
GPU
GPU
Copyright © NTT Communications Corporation.
● 効率的にGPUリソースを扱う事が出来る
○ コンテナのライフサイクルをタスクの種別毎に分類
14
GPU as a Service の要件 ~プロバイダ側~ 2/2
Temporary Batch task
● タスクを一度だけ実行, e.g. training task
● タスク終了後にコンテナ停止, GPUを解放
Long running Service task
● ウェブサービス, e.g. Jupyter Notebook
● コンテナの停止までGPUは解放されない
User
タスクの種類を指定
Copyright © NTT Communications Corporation.
15
Agenda
1. 背景&目的
2. GPU環境の望ましい要件
3. コンテナ技術関連の各種OSSツール比較
4. OpenStack連携によるマルチテナントの実現
5. GPU Container as a Service つくってみた
Copyright © NTT Communications Corporation.
16
前提知識
GPUコンテナを実現するための要素技術
Docker Nvidia Docker
Copyright © NTT Communications Corporation.
● Docker 社による コンテナ管理プラットフォーム
○ 簡単なコマンドでアプリケーション環境をデプロイ出来る
$ docker run image_name -p 80:80
● コンテナ毎に個々のデバイスを分離出来る
● ユーザが自身で用意したイメージを利用出来る
○ アプリの実行に必要なライブラリ等を纏めたもの
17
Docker
Copyright © NTT Communications Corporation.
18
Nvidia Docker
● DockerからGPUを扱う事を容易にする為のツール
○ コンテナへGPUリソースを割り当てる事が出来る
$ NV_GPU=0,1 nvidia-docker run nvidia/cuda nvidia-smi
● Deep Learning 用のイメージが公式で提供されている
○ nvidia/cuda など
○ CUDA Toolkit (SDK) を包含
Copyright © NTT Communications Corporation.
Host
ContainerVM
19
Docker / Nvidia Docker の利点 1/2
自動マウント
コンテナ化
Nvidia Driver
Applic
ations
CUDA Toolkit (SDK)
Container
Applicati
ons
CUDA
Toolkit
(SDK)
nvidia-kernel-module
Nvidia
Driver
Nvidia Driver
イメージ化
Applic
ations
Appli
catio
ns
Dockerイメー
ジおよび
NvidiaDocker
の自動マウント
機能により
バージョン不整
合を解決
Host
Nvidia Driverなし
バージョンが整
合してないとア
プリが正常動作
しない
Nvidia
Driver
Applicati
ons
CUDA
Toolkit
(SDK)
Copyright © NTT Communications Corporation.
Host
ContainerVM
20
Docker / Nvidia Docker の利点 2/2
コンテナ化
Nvidia Driver
Applic
ations
CUDA Toolkit (SDK)
Container
Applicati
ons
CUDA
Toolkit
(SDK)
nvidia-kernel-module
Nvidia
Driver
Nvidia Driver
Applic
ations
Appli
catio
ns
Host
Nvidia Driverなし
Nvidia
Driver
GPU
GPU GPU
Applicati
ons
CUDA
Toolkit
(SDK)
ホストにNVIDIA
Driverがないた
め監視が難しい
通常通り
NVIDIA
Management
Library (NVML)
を利用してGPU
を監視可
Copyright © NTT Communications Corporation.
• サービス提供の為に COE (Container Orchestration Engine) が必要
– GPU サーバ群をクラスタとして管理・提供する必要がある
– 効率的にGPUリソースを提供す必要がある
21
コンテナ関連OSSツールの比較
GPU as a Service の適切な実現手段となる
様々なコンテナ関連OSSツールの調査・検証を実施
OpenStack
Zun
Docker Swarm /
Swarm Mode
Apache Mesos Kubernetes
Copyright © NTT Communications Corporation.
22
コンテナ関連OSSツールの検証項目
検証項目を以下のように設定
GPUクラスタ
管理
GPUの指定
複数割り当て
GPUの分離
Docker
サポート
バッチタスク
実行可能か
OpenStackZun
DockerSwarm
/ SwarmMode
mesos
Kubernetes
Copyright © NTT Communications Corporation.
23
コンテナ関連OSSツールの検証項目
検証項目を以下のように設定
GPUクラスタ
管理
GPUの指定
複数割り当て
GPUの分離
Docker
サポート
バッチタスク
実行可能か
OpenStackZun
DockerSwarm
/ SwarmMode
mesos
Kubernetes
・ユーザが自身でGPU数を指定可能
・複数GPUをコンテナへ割り当て可能
Copyright © NTT Communications Corporation.
24
コンテナ関連OSSツールの検証項目
検証項目を以下のように設定
GPUクラスタ
管理
GPUの指定
複数割り当て
GPUの分離
Docker
サポート
バッチタスク
実行可能か
OpenStackZun
DockerSwarm
/ SwarmMode
mesos
Kubernetes
・各コンテナへ異なるGPUを割り当て可能
・ビジーなGPUは他コンテナへ割り当て不可
Copyright © NTT Communications Corporation.
25
コンテナ関連OSSツールの検証項目
検証項目を以下のように設定
GPUクラスタ
管理
GPUの指定
複数割り当て
GPUの分離
Docker
サポート
バッチタスク
実行可能か
OpenStackZun
DockerSwarm
/ SwarmMode
mesos
Kubernetes
・コンテナ内部のプロセスが停止時に
 自動的にコンテナが停止する
Copyright © NTT Communications Corporation.
• OpenStack 上でコンテナを管理するためのツール
• OpenStack内部で基本的なコンテナの制御 (i.e. CRUD) のみ提供
26
OpenStack Zun
Zun の
マスコットキャラクタ
Copyright © NTT Communications Corporation.
● GPUリソースがサポートされていない
○ Docker に “CpuShares” and “Memory” パラメータのみ渡す事が可能
○ GPU対応の話題がコミュニティ側で挙がっていない
27
OpenStack Zun
OpenStack Zun は Dockerサポート 以外の
要件を満たしていない
Copyright © NTT Communications Corporation.
28
OpenStack Zun の検証結果
GPUクラスタ
管理
GPUの指定
複数割り当て
GPUの分離
Docker
サポート
バッチタスク
実行可能か
OpenStackZun
✗ ✗ ✗ ✔ ✗
DockerSwarm
/ SwarmMode
mesos
Kubernetes
Copyright © NTT Communications Corporation.
Docker Swarm / swarm mode
29
● Docker ネイティブなクラスタ管理ツール
● Dockerが展開されたマシン複数台から簡単にクラスタを構築出来る
● Docker v1.12 以上でDockerに標準で組み込まれている
Internal Distributed State Store
Manager
(follower)
Manager
(leader)
Manager
(follower)
Worker Worker Worker Worker Worker Worker
Copyright © NTT Communications Corporation.
30
Docker Swarm / swarm mode
● Docker Swarm は GPU をサポートしていない
○ 現在もGPU対応が Docker Project において進められている
■ https://github.com/docker/docker/issues/23917
● Nvidia Docker も同様にサポートされていない
○ GPUコンテナに必要なライブラリ群をマウント出来ない
Docker Swarm / swarm mode は
“GPUクラスタ管理” を満たしていない
Copyright © NTT Communications Corporation.
31
Docker Swarm / Swarm Mode の検証結果
GPUクラスタ
管理
GPUの指定
複数割り当て
GPUの分離
Docker
サポート
バッチタスク
実行可能か
OpenStackZun
✗ ✗ ✗ ✔ ✗
DockerSwarm
/ SwarmMode ✗ ✗ ✗ ✔ ✗
mesos
Kubernetes
Copyright © NTT Communications Corporation.
32
Mesos
● Apacheソフトウェア財団によるクラスタ管理ツール
● 効率的かつ動的なリソースの分配や共有が可能
● 分散アプリケーションやフレームワークを Mesos Master が制御
○ e.g. Marathon, Chronos, Hadoop...
Copyright © NTT Communications Corporation.
33
● Mesos の GPU サポート状況
○ Mesos v1.0.0 以上で Nvidia GPU に対応している
○ CPU や Memoryと同様に GPU も管理する事が出来る
Mesos
Copyright © NTT Communications Corporation.
34
Mesos
Task Type Frameworks GPU + Mesos GPU + Docker
Batch
Chronos ✗ N/A
Metronome ✗ N/A
Service
Aurona ✔ ✗
Marathon ✔ ✗
Mesos フレームワークは二種類のコンテナを扱う事が可能
- Mesos コンテナ・Docker コンテナ
Copyright © NTT Communications Corporation.
35
Apache Mesos の検証結果
GPUクラスタ
管理
GPUの指定
複数割り当て
GPUの分離
Docker
サポート
バッチタスク
実行可能か
OpenStackZun
✗ ✗ ✗ ✔ ✗
DockerSwarm
/ SwarmMode ✗ ✗ ✗ ✔ ✗
mesos
✔ ✔ ✔ ✗ ✔
Kubernetes
Copyright © NTT Communications Corporation.
36
Kubernetes
● Google による Container Orchestration Engine (COE)
● コンテナのクラスタリング・オートスケーリング等の様々な機能を提供
● コミュニティも活発で頻繁に議論や機能の開発が行われている
Copyright © NTT Communications Corporation.
● コンテナは Pod と呼ばれる単位で管理される
○ Podは単一もしくは複数のコンテナで構成される
○ Pod単位で CRUD 等の様々な処理が行われる
タスク種別毎の Pod 管理方法
37
Kubernetes
Node A
Pod A Pod B Service Task : Pod, ReplicaSet
Deployment など
Batch Task : Job など
Copyright © NTT Communications Corporation.
● コンテナの CRUD 管理 は マニフェストファイル で行う
○ Pod 及び Pod 内のコンテナの情報を定義する
■ Podの管理方法 (Kind)
■ コンテナ・コンテナイメージ名など
○ yaml・jsonの各種形式で定義可能
○ CLI (kubectl) や WebUI から利用可能
38
Kubernetes
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
conatiners:
- name: nginx
image: nginx
ports:
- containerPort: 80
User
Master
Node
Pod
Minion
NodeManifest
Copyright © NTT Communications Corporation.
● KubernetesのGPUサポート状況
○ v1.3.x から試験的にGPUスケジューリングが導入された
■ GPU as a Service の要件を満たしていない
● 複数GPUが割り当て出来ない
● GPUの分離が出来ない
○ v1.6 以上で Alpha 版として GPUスケジューリングをサポート
■ GPUスケジューリングの機能が改善された
● v1.3.x ~ v1.5.x までの問題が解決されている
■ 自動的にノード上のGPU数を検出できる
39
Kubernetes
v1.6系を利用
Copyright © NTT Communications Corporation.
● 複数GPUを単一のコンテナに割り当て可能
40
Kubernetes
コンテナ内の情報
マニフェスト内でGPU数を指定する
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 375.39 Driver Version: 375.39 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 Tesla K10.G2.8GB Off |0000:00:05.0 Off | 0 |
| N/A 39C P8 17W / 117W | 0MiB / 3527MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
| 1 Tesla K10.G2.8GB Off |0000:00:06.0 Off | 0 |
| N/A 41C P8 18W / 117W | 0MiB / 3527MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
resources:
limits:
alpha.Kubernetes.io/nvidia-gpu: 2
requests:
alpha.Kubernetes.io/nviida-gpu: 2
command: [“/bin/bash”, “-c”]
args: [“nvidia-smi” && tail -f /dev/null]
Copyright © NTT Communications Corporation.
● コンテナ間でGPUの分離が可能
41
Kubernetes
Copyright © NTT Communications Corporation.
● バッチタスクに対応
42
Kubernetes
apiVersion: batch/v1
kind: Job
...
limits:
alpha.Kubernetes.io/nvidia-gpu: 2
requests:
alpha.Kubernetes.io/nviida-gpu: 2
 ...
 command: [“/bin/bash”, “-c”]
args: [“nvidia-smi”]
...
タスクの種類をマニフェスト内で定義 Podの情報 (起動時)
$ kubectl get pods -a -o wide
NAME READY STATUS RESTARTS AGE
nbody-swsdj 0/1 Completed 0 2m
$ kubectl get jobs
NAME DESIRED SUCCESSFUL AGE
nbody 1 1 2m
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
nbody-swsdj 1/1 Running 0 5s
$ kubectl get jobs
NAME DESIRED SUCCESSFUL AGE
nbody 1 0 7s
Podの情報 (終了時)
Copyright © NTT Communications Corporation.
43
検証結果
GPUクラスタ
管理
GPUの指定
複数割り当て
GPUの分離
Docker
サポート
バッチタスク
実行可能か
OpenStackZun
✗ ✗ ✗ ✔ ✗
DockerSwarm
/ SwarmMode ✗ ✗ ✗ ✔ ✗
mesos
✔ ✔ ✔ ✗ ✔
Kubernetes
✔ ✔ ✔ ✔ ✔
Copyright © NTT Communications Corporation.
44
Agenda
1. 背景&目的
2. GPU環境の望ましい要件
3. コンテナ技術関連の各種OSSツール比較
4. OpenStack連携によるマルチテナントの実現
5. GPU Container as a Service つくってみた
Copyright © NTT Communications Corporation.
Kubernetes でのマルチテナント実現手法は 2種類 ある
 方法1.OpenStack のテナントごとにk8sをデプロイする
- 1-1 OpenStack Magnumでデプロイ
- 1-2 OpenStack Heatでデプロイ
 方法2.Kubernetes の認証・認可に OpenStack Keystone を用いる
45
Kubernetes を用いたマルチテナントの実現
OpenStack
Tenant A
k8s
Tenant B
k8s
OpenStack
Tenant A
Tenant B
Kubernetes
NamespaceA
NamespaceB
方法1 方法2
Copyright © NTT Communications Corporation.
● OpenStack 上で COE のクラスタ環境を簡単に構築してくれるコンポーネント
○ Kubernetes や Mesos などに対応している
● OpenStack 環境内に Kubernetes クラスタの構築が可能
○ OpenStack Cinder や Octavia (LBaaS) 等と連携出来る
○ 後から 容易に Minion Node 数を増減出来る
46
方法1-1 Magnum
Tenant A
Magnum
API
Tenant B
Copyright © NTT Communications Corporation.
47
• GPU 対応の k8s 1.6 はサポートされていない
– 現在の Magnum の k8s 対応状況
Minion Node 構築用のOSイメージにより異なる
• [Fedora Atomic]: k8s 1.5.3 [CoreOS]: k8s 1.5.2
• 公式サポートのイメージに Nvidia Driver が含まれていない
– GPU対応には 独自 OS イメージの作成が必要になる
• 独自設定で k8s 1.6 が利用出来るかを検証を行った
– ユーザ側で書き換える事が出来ない内部の設定ファイルを変更
• 現在の Magnum では構築出来ない
• k8s 1.6 と Magnum が認証連携出来ない
方法1-1 Magnum
Copyright © NTT Communications Corporation.
• OpenStack 上で オーケストレーション を行うコンポーネント
– Heat Template に基づいて VM や NW などを構築出来る
– k8s が公式メンテナンスしている Heat Template がある
• k8s 1.6 向けのテンプレートが存在するが ...
• ユーザ自身が柔軟なクラスタ環境を構築出来る
– ユーザ側で Heat Template を直接編集出来る
• Heat Template を編集する事で Nvidia Driver のインストール自動化も可能
• k8s 1.6 を構築可能か検証を行った
– 現在の OpenStack Heat では構築出来ない
• 必要な各種ファイルの設定や配置が適切でない
48
方法1-1 Heat
Copyright © NTT Communications Corporation.
方法2 Keystone 連携
● 認証処理について
○ Kubernetes のユーザ認証を Keystone へ委譲出来る
○ OpenStackの既存ユーザを用いた認証が可能
● 認可処理について
○ OpenStack のテナント と Namespace の対応付けの設定が必要
■ Kubernetes は Namespace と呼ばれるテナント分離の仕組みがある
■ Kubernetes の 認可の仕組み (RBACやABAC) を利用する
○ Keystone のみで認可を実現することは現状出来ない
■ https://github.com/Kubernetes/Kubernetes/pull/25624
49
Copyright © NTT Communications Corporation.
マルチテナント実現手法の比較
● k8s 1.6 対応 の Heat 及び Keystone の2手法を以下の観点で比較し、
検証環境における適切なマルチテナント実現方法を選択する
○ GPUリソースの分離
○ プロバイダ視点でのGPU監視
○ コンテナ配備先の分離
○ ネットワークの分離
○ OpenStack 上のVMとの通信
50
Copyright © NTT Communications Corporation.
GPUリソース
の分離
プロバイダ視点
GPUの監視
コンテナ
配備先の分離
ネットワークの
分離
OpenStack
VMとの通信
方法1
OpenStackの
テナントごとに
k8sを展開
テナント単位 困難 テナント単位
テナント単位
(VXLAN,
GRE…)
Tenant
Network 内
方法2
k8s
認証/認可に
Keystone
全テナント
共有
可能 全テナント
共有
全テナント
共有
(Flat +
Iptables)
Floating IP
経由
51
マルチテナント実現手法の比較
● GPUリソースをなるべく全体で共有したい
● GPUリソースをプロバイダ側で監視したい
● 厳密にNW等が分離されている必要がない
➡ 方法2を選択
今回の検証環境の要件
Copyright © NTT Communications Corporation.
52
Agenda
1. 背景&目的
2. GPU環境の望ましい要件
3. コンテナ技術関連の各種OSSツール比較
4. OpenStack連携によるマルチテナントの実現
5. GPU Container as a Service つくってみた
Copyright © NTT Communications Corporation.
複数台のGPU搭載サーバで Kubernetes のクラスタを組んでいる
53
検証環境の概念図
Minion Node1
Deploy/Manage Pods
ユーザ
GPU x 8
(Tesla P100)
Minion Node2
GPU x 4
(Tesla GRID K2)
Minion Node3
GPU x 2
(Tesla K10)
Minion Node4
GPU x 2
(Tesla K10)
OpenStack Env
Keystone
Keystone 連携による
マルチテナントの実現Master
Node
Copyright © NTT Communications Corporation.
54
Demo
Kubernetes 上で Digits (GPU) を実行してみた
Copyright © NTT Communications Corporation.
● 各ノード上でのGPUコンテナの有効化
1. Nvidia Driver のインストール
■ http://www.nvidia.co.jp/Download/index.aspx?lang=jp
2. Nvidia docker のインストール
■ https://github.com/NVIDIA/nvidia-docker
3. Kubernetes 環境の構築
■ kubelet の起動時に以下のパラメータを付与する
■ --feature-gates=Accelerators=true
55
GPUクラスタの構築と管理 〜構築〜 1/3 
Copyright © NTT Communications Corporation.
● ユーザが指定のGPUを選択可能にする
○ 該当ノードにラベル (GPU名) を設定する
■ PoC環境では, GPUの種類に応じて`p100`,`k2` , `k10` を指定可能
$ kubectl label nodes <nodeName> gputype=p100
○ ユーザはマニフェストで需要に見合ったGPUラベル名を指定
nodeSelector.gputype: p100
56
GPUクラスタの構築と管理 〜構築〜 2/3
Pod
Minion Node 1
LABEL: p100
Tesla P100
Minion Node 2
LABEL: k2
Tesla K2
Minion Node 3
LABEL: k10
Tesla K10
•••
p100
Deploy
Copyright © NTT Communications Corporation.
● Kubernetes と Keystone の連携
○ Kubernetes 側での設定
■ kube-apiserver へのパラメータ付与
--experimental-keystone-url
--experimental-keystone-cafile
○ OpenStack 側での設定
■ Keystone Endpoint の HTTPS 化
● リバースプロキシ等を活用する
○ 上記ののちに認可設定を Kubernetes で行う
■ Keystone に存在する既存ユーザへ Role の適用
57
GPUクラスタの構築と管理 〜構築〜 3/3
Copyright © NTT Communications Corporation.
● GPUリソースの監視
○ Kubernetes における GPU監視方法
■ Kubernetes に標準で実装されているGPUリソース監視機能
■ NVIDIAによって提供されている NVdia Management Library (NVML)
58
GPUクラスタの構築と運用 〜運用〜 1/3
Copyright © NTT Communications Corporation.
● k8sではGPU数を監視できる機能が標準で備わっている
● 以下のコマンドで使用状況を見ることが可能
○ $ kubectl describe node
59
GPUクラスタの構築と運用 〜運用〜 2/3
・利用可能なGPU数を正確に取得
 する事ができない
・どのコンテナがGPUを利用中
 かは分からない
Copyright © NTT Communications Corporation.
● NVIDIAは NVdia Management Library (NVML) を提供している
○ 様々なGPUメトリクスを取得する事が可能
60
GPUクラスタの構築と運用 〜運用〜 3/3
e.g.
nvml.util.gpu : GPU 利用率 (%)
nvml.mem.used : GPUの使用中メモリ量
nvml.temp : GPUの温度
Copyright © NTT Communications Corporation.
61
GPUクラスタの構築と運用 〜運用〜 3/3
Copyright © NTT Communications Corporation.
62
まとめ
1. 背景&目的
2. GPU環境の望ましい要件
3. コンテナ技術関連の各種OSSツール比較
4. OpenStack連携によるマルチテナントの実現
5. GPU Container as a Service つくってみた
Copyright © NTT Communications Corporation.
63
Special Thanks to...
• 横山智大
• 松下正樹
• 小倉真人
• Ankit Purohit
• 奥村昌和
• 逸見彰一郎
Copyright © NTT Communications Corporation.
64
ご清聴ありがとうございました

More Related Content

What's hot

仮想化環境におけるパケットフォワーディング
仮想化環境におけるパケットフォワーディング仮想化環境におけるパケットフォワーディング
仮想化環境におけるパケットフォワーディング
Takuya ASADA
 
CyberAgentのプライベートクラウド Cycloudの運用及びモニタリングについて #CODT2020 / Administration and M...
CyberAgentのプライベートクラウド Cycloudの運用及びモニタリングについて #CODT2020 / Administration and M...CyberAgentのプライベートクラウド Cycloudの運用及びモニタリングについて #CODT2020 / Administration and M...
CyberAgentのプライベートクラウド Cycloudの運用及びモニタリングについて #CODT2020 / Administration and M...
whywaita
 
MHA for MySQLとDeNAのオープンソースの話
MHA for MySQLとDeNAのオープンソースの話MHA for MySQLとDeNAのオープンソースの話
MHA for MySQLとDeNAのオープンソースの話
Yoshinori Matsunobu
 
エンジニアなら知っておきたい「仮想マシン」のしくみ (BPStudy38)
エンジニアなら知っておきたい「仮想マシン」のしくみ (BPStudy38)エンジニアなら知っておきたい「仮想マシン」のしくみ (BPStudy38)
エンジニアなら知っておきたい「仮想マシン」のしくみ (BPStudy38)
Takeshi HASEGAWA
 

What's hot (20)

仮想化環境におけるパケットフォワーディング
仮想化環境におけるパケットフォワーディング仮想化環境におけるパケットフォワーディング
仮想化環境におけるパケットフォワーディング
 
Machine configoperatorのちょっとイイかもしれない話
Machine configoperatorのちょっとイイかもしれない話 Machine configoperatorのちょっとイイかもしれない話
Machine configoperatorのちょっとイイかもしれない話
 
DeNAのサーバー"コード"レスアーキテクチャ
DeNAのサーバー"コード"レスアーキテクチャDeNAのサーバー"コード"レスアーキテクチャ
DeNAのサーバー"コード"レスアーキテクチャ
 
Apache OpenWhiskで実現するプライベートFaaS環境 #tjdev
Apache OpenWhiskで実現するプライベートFaaS環境 #tjdevApache OpenWhiskで実現するプライベートFaaS環境 #tjdev
Apache OpenWhiskで実現するプライベートFaaS環境 #tjdev
 
CyberAgentのプライベートクラウド Cycloudの運用及びモニタリングについて #CODT2020 / Administration and M...
CyberAgentのプライベートクラウド Cycloudの運用及びモニタリングについて #CODT2020 / Administration and M...CyberAgentのプライベートクラウド Cycloudの運用及びモニタリングについて #CODT2020 / Administration and M...
CyberAgentのプライベートクラウド Cycloudの運用及びモニタリングについて #CODT2020 / Administration and M...
 
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
 
アプリ起動時間高速化 ~推測するな、計測せよ~
アプリ起動時間高速化 ~推測するな、計測せよ~アプリ起動時間高速化 ~推測するな、計測せよ~
アプリ起動時間高速化 ~推測するな、計測せよ~
 
Part 5: "製品の変革" を支える基盤サービス (製造リファレンス・アーキテクチャ勉強会)
Part 5: "製品の変革" を支える基盤サービス (製造リファレンス・アーキテクチャ勉強会)Part 5: "製品の変革" を支える基盤サービス (製造リファレンス・アーキテクチャ勉強会)
Part 5: "製品の変革" を支える基盤サービス (製造リファレンス・アーキテクチャ勉強会)
 
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャーKubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
 
Pod Security AdmissionによるKubernetesのポリシー制御(Kubernetes Novice Tokyo #21 発表資料)
Pod Security AdmissionによるKubernetesのポリシー制御(Kubernetes Novice Tokyo #21 発表資料)Pod Security AdmissionによるKubernetesのポリシー制御(Kubernetes Novice Tokyo #21 発表資料)
Pod Security AdmissionによるKubernetesのポリシー制御(Kubernetes Novice Tokyo #21 発表資料)
 
サポート エンジニアが語る、トラブルを未然に防ぐための Azure インフラ設計
サポート エンジニアが語る、トラブルを未然に防ぐための Azure インフラ設計サポート エンジニアが語る、トラブルを未然に防ぐための Azure インフラ設計
サポート エンジニアが語る、トラブルを未然に防ぐための Azure インフラ設計
 
MHA for MySQLとDeNAのオープンソースの話
MHA for MySQLとDeNAのオープンソースの話MHA for MySQLとDeNAのオープンソースの話
MHA for MySQLとDeNAのオープンソースの話
 
Google Cloud で実践する SRE
Google Cloud で実践する SRE  Google Cloud で実践する SRE
Google Cloud で実践する SRE
 
続・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
 
Azure Data Explorer
Azure Data ExplorerAzure Data Explorer
Azure Data Explorer
 
Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)
Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)
Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)
 
コンテナ時代のOpenStack
コンテナ時代のOpenStackコンテナ時代のOpenStack
コンテナ時代のOpenStack
 
NTTデータ流Infrastructure as Code~ 大規模プロジェクトを通して考え抜いた基盤自動化の新たな姿~(NTTデータ テクノロジーカンフ...
NTTデータ流Infrastructure as Code~ 大規模プロジェクトを通して考え抜いた基盤自動化の新たな姿~(NTTデータ テクノロジーカンフ...NTTデータ流Infrastructure as Code~ 大規模プロジェクトを通して考え抜いた基盤自動化の新たな姿~(NTTデータ テクノロジーカンフ...
NTTデータ流Infrastructure as Code~ 大規模プロジェクトを通して考え抜いた基盤自動化の新たな姿~(NTTデータ テクノロジーカンフ...
 
エンジニアなら知っておきたい「仮想マシン」のしくみ (BPStudy38)
エンジニアなら知っておきたい「仮想マシン」のしくみ (BPStudy38)エンジニアなら知っておきたい「仮想マシン」のしくみ (BPStudy38)
エンジニアなら知っておきたい「仮想マシン」のしくみ (BPStudy38)
 
なぜあなたのプロジェクトのDevSecOpsは形骸化するのか(CloudNative Security Conference 2022)
なぜあなたのプロジェクトのDevSecOpsは形骸化するのか(CloudNative Security Conference 2022)なぜあなたのプロジェクトのDevSecOpsは形骸化するのか(CloudNative Security Conference 2022)
なぜあなたのプロジェクトのDevSecOpsは形骸化するのか(CloudNative Security Conference 2022)
 

Similar to GPU Container as a Service を実現するための最新OSS徹底比較

45分で理解する 最近のスパコン事情 斉藤之雄
45分で理解する 最近のスパコン事情 斉藤之雄45分で理解する 最近のスパコン事情 斉藤之雄
45分で理解する 最近のスパコン事情 斉藤之雄
Yukio Saito
 

Similar to GPU Container as a Service を実現するための最新OSS徹底比較 (20)

インフラ野郎AzureチームProX
インフラ野郎AzureチームProXインフラ野郎AzureチームProX
インフラ野郎AzureチームProX
 
【たぶん日本初導入!】Azure Stack Hub with GPUの性能と機能紹介
【たぶん日本初導入!】Azure Stack Hub with GPUの性能と機能紹介【たぶん日本初導入!】Azure Stack Hub with GPUの性能と機能紹介
【たぶん日本初導入!】Azure Stack Hub with GPUの性能と機能紹介
 
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
 
Storm×couchbase serverで作るリアルタイム解析基盤
Storm×couchbase serverで作るリアルタイム解析基盤Storm×couchbase serverで作るリアルタイム解析基盤
Storm×couchbase serverで作るリアルタイム解析基盤
 
MEC (Mobile Edge Computing) + GPUコンピューティングについて
MEC (Mobile Edge Computing) + GPUコンピューティングについてMEC (Mobile Edge Computing) + GPUコンピューティングについて
MEC (Mobile Edge Computing) + GPUコンピューティングについて
 
EnrootとPyxisで快適コンテナ生活
EnrootとPyxisで快適コンテナ生活EnrootとPyxisで快適コンテナ生活
EnrootとPyxisで快適コンテナ生活
 
DeNA private cloud のその後 - OpenStack最新情報セミナー(2017年3月)
DeNA private cloud のその後 - OpenStack最新情報セミナー(2017年3月)DeNA private cloud のその後 - OpenStack最新情報セミナー(2017年3月)
DeNA private cloud のその後 - OpenStack最新情報セミナー(2017年3月)
 
Kubernetes1.9でWindowsコンテナーをクラスタ化
Kubernetes1.9でWindowsコンテナーをクラスタ化Kubernetes1.9でWindowsコンテナーをクラスタ化
Kubernetes1.9でWindowsコンテナーをクラスタ化
 
GPU と PYTHON と、それから最近の NVIDIA
GPU と PYTHON と、それから最近の NVIDIAGPU と PYTHON と、それから最近の NVIDIA
GPU と PYTHON と、それから最近の NVIDIA
 
0から始めるコンテナの学び方(Kubernetes Novice Tokyo #14 発表資料)
0から始めるコンテナの学び方(Kubernetes Novice Tokyo #14 発表資料)0から始めるコンテナの学び方(Kubernetes Novice Tokyo #14 発表資料)
0から始めるコンテナの学び方(Kubernetes Novice Tokyo #14 発表資料)
 
45分で理解する 最近のスパコン事情 斉藤之雄
45分で理解する 最近のスパコン事情 斉藤之雄45分で理解する 最近のスパコン事情 斉藤之雄
45分で理解する 最近のスパコン事情 斉藤之雄
 
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
 
Intel OpenVINO、 NVIDIA Deepstream対応開発キットから、 エッジサーバー、Azure Data Box Edgeまで、 Az...
Intel OpenVINO、 NVIDIA Deepstream対応開発キットから、 エッジサーバー、Azure Data Box Edgeまで、 Az...Intel OpenVINO、 NVIDIA Deepstream対応開発キットから、 エッジサーバー、Azure Data Box Edgeまで、 Az...
Intel OpenVINO、 NVIDIA Deepstream対応開発キットから、 エッジサーバー、Azure Data Box Edgeまで、 Az...
 
「スーパーコンピュータとクラウドゲーム」
「スーパーコンピュータとクラウドゲーム」「スーパーコンピュータとクラウドゲーム」
「スーパーコンピュータとクラウドゲーム」
 
2016 06-30-deep-learning-archi
2016 06-30-deep-learning-archi2016 06-30-deep-learning-archi
2016 06-30-deep-learning-archi
 
コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門
 
D1-2-OS2_オンプレミスのVMワークロードをGCPへ移行する
D1-2-OS2_オンプレミスのVMワークロードをGCPへ移行するD1-2-OS2_オンプレミスのVMワークロードをGCPへ移行する
D1-2-OS2_オンプレミスのVMワークロードをGCPへ移行する
 
次世代の高速メモリストレージ利用に向けたソフトウェアのモダナイゼーション
次世代の高速メモリストレージ利用に向けたソフトウェアのモダナイゼーション次世代の高速メモリストレージ利用に向けたソフトウェアのモダナイゼーション
次世代の高速メモリストレージ利用に向けたソフトウェアのモダナイゼーション
 
Tech Dojo 02/09 IBM Japan CSM
Tech Dojo 02/09 IBM Japan CSMTech Dojo 02/09 IBM Japan CSM
Tech Dojo 02/09 IBM Japan CSM
 
JETSON 最新情報 & 自動外観検査事例紹介
JETSON 最新情報 & 自動外観検査事例紹介JETSON 最新情報 & 自動外観検査事例紹介
JETSON 最新情報 & 自動外観検査事例紹介
 

More from NTT Communications Technology Development

More from NTT Communications Technology Development (20)

クラウドを最大限活用するinfrastructure as codeを考えよう
クラウドを最大限活用するinfrastructure as codeを考えようクラウドを最大限活用するinfrastructure as codeを考えよう
クラウドを最大限活用するinfrastructure as codeを考えよう
 
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~
 
マルチクラウドでContinuous Deliveryを実現するSpinnakerについて
マルチクラウドでContinuous Deliveryを実現するSpinnakerについて マルチクラウドでContinuous Deliveryを実現するSpinnakerについて
マルチクラウドでContinuous Deliveryを実現するSpinnakerについて
 
Argo CDについて
Argo CDについてArgo CDについて
Argo CDについて
 
SpinnakerとKayentaで 高速・安全なデプロイ!
SpinnakerとKayentaで 高速・安全なデプロイ!SpinnakerとKayentaで 高速・安全なデプロイ!
SpinnakerとKayentaで 高速・安全なデプロイ!
 
100Gbps OpenStack For Providing High-Performance NFV
100Gbps OpenStack For Providing High-Performance NFV100Gbps OpenStack For Providing High-Performance NFV
100Gbps OpenStack For Providing High-Performance NFV
 
Can we boost more HPC performance? Integrate IBM POWER servers with GPUs to O...
Can we boost more HPC performance? Integrate IBM POWER servers with GPUs to O...Can we boost more HPC performance? Integrate IBM POWER servers with GPUs to O...
Can we boost more HPC performance? Integrate IBM POWER servers with GPUs to O...
 
AWS re:Invent2017で見た AWSの強さとは
AWS re:Invent2017で見た AWSの強さとは AWS re:Invent2017で見た AWSの強さとは
AWS re:Invent2017で見た AWSの強さとは
 
分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)
 
Mexico ops meetup発表資料 20170905
Mexico ops meetup発表資料 20170905Mexico ops meetup発表資料 20170905
Mexico ops meetup発表資料 20170905
 
NTT Tech Conference #2 - closing -
NTT Tech Conference #2 - closing -NTT Tech Conference #2 - closing -
NTT Tech Conference #2 - closing -
 
イケてない開発チームがイケてる開発を始めようとする軌跡
イケてない開発チームがイケてる開発を始めようとする軌跡イケてない開発チームがイケてる開発を始めようとする軌跡
イケてない開発チームがイケてる開発を始めようとする軌跡
 
SpinnakerとOpenStackの構築
SpinnakerとOpenStackの構築SpinnakerとOpenStackの構築
SpinnakerとOpenStackの構築
 
Troveコミュニティ動向
Troveコミュニティ動向Troveコミュニティ動向
Troveコミュニティ動向
 
Web rtc for iot, edge computing use cases
Web rtc for iot, edge computing use casesWeb rtc for iot, edge computing use cases
Web rtc for iot, edge computing use cases
 
OpenStack Ops Mid-Cycle Meetup & Project Team Gathering出張報告
OpenStack Ops Mid-Cycle Meetup & Project Team Gathering出張報告OpenStack Ops Mid-Cycle Meetup & Project Team Gathering出張報告
OpenStack Ops Mid-Cycle Meetup & Project Team Gathering出張報告
 
NTT Tech Conference #1 Opening Keynote
NTT Tech Conference #1 Opening KeynoteNTT Tech Conference #1 Opening Keynote
NTT Tech Conference #1 Opening Keynote
 
NTT Tech Conference #1 Closing Keynote
NTT Tech Conference #1 Closing KeynoteNTT Tech Conference #1 Closing Keynote
NTT Tech Conference #1 Closing Keynote
 
OpsからみたOpenStack Summit
OpsからみたOpenStack SummitOpsからみたOpenStack Summit
OpsからみたOpenStack Summit
 
RabbitMQ can scale out!!(jp ops-workshop-3)
RabbitMQ can scale out!!(jp ops-workshop-3)RabbitMQ can scale out!!(jp ops-workshop-3)
RabbitMQ can scale out!!(jp ops-workshop-3)
 

GPU Container as a Service を実現するための最新OSS徹底比較

  • 1. Copyright © NTT Communications Corporation. Transform your business, transcend expectations with our technologically advanced solutions. GPU Container as a Service を 実現するための最新OSS徹底比較 張 暁晶・角田佳史 松本赳明・原田 和明
  • 2. Copyright © NTT Communications Corporation. 1 自己紹介 角田 佳史 Yoshifumi Sumida y.sumida@ntt.com 技術開発部 ソフトウェアエンジニア 興味:IaaS、コンテナ 張 暁晶 Xiaojing Zhang xiaojing.zhang@ntt.com 技術開発部 ソフトウェアエンジニア 興味:ソフトウェア工学、 ヘテロジニアスなクラウド
  • 3. Copyright © NTT Communications Corporation. 2 Agenda 1. 背景&目的 2. GPU環境の望ましい要件 3. コンテナ技術関連の各種OSSツール比較 4. OpenStack連携によるマルチテナントの実現 5. GPU Container as a Service つくってみた
  • 4. Copyright © NTT Communications Corporation. 3 Agenda 1. 背景&目的 2. GPU環境の望ましい要件 3. コンテナ技術関連の各種OSSツール比較 4. OpenStack連携によるマルチテナントの実現 5. GPU Container as a Service つくってみた
  • 5. Copyright © NTT Communications Corporation. ● AI、機械学習、ビッグデータ解析 ○ 高速な計算資源としてGPUが幅広く活用されている ● NTTコミュニケーションズでも注目 ○ AI エンジン“COTOHA”、三井化学様における品質予測事例、など http://www.ntt.com/business/services/application/ai/cotoha.html http://www.ntt.com/about-us/press-releases/news/article/2016/20160915.html ○ GPUを用いた学習・検証に対する社内ニーズの高まり 4 背景
  • 6. Copyright © NTT Communications Corporation. ● 高速な並列データ処理が可能なGPUの需要がある ○ 学習や解析などのワークロードは非常に高負荷 ● 一方でGPUの調達における予算や時間がネックになることも... ○ クラウドサービスを利用する事により解決出来る ○ 主要クラウドプロバイダは既にGPUインスタンスの提供を開始 ■ Azure、AWS、GCP、Bluemix (Bare) 5 GPU利用のトレンド
  • 7. Copyright © NTT Communications Corporation. Node 4 Node 3 Node 2 Node 1 6 目的 社内向けに検証環境として GPU as a Service を提供する GPU GPU GPU GPUリソースの指定 GPUリソースの管理と スケジューリング GPU GPU as a Service
  • 8. Copyright © NTT Communications Corporation. ● クラウド基盤は OpenStack を利用 ● VMインスタンスとしてGPUリソースを提供 ○ VMにGPUを認識させるため、PCI Passthrough を利用 ○ GPUリソースとして、3種類の NVIDIA製 GPU を利用 ● 主に機械学習やディープラーニングなどに利用されている 7 社内プライベートクラウドでのGPU提供の現状
  • 9. Copyright © NTT Communications Corporation. 8 VMでのGPU提供の問題 1. 機械学習用の環境構築のユーザ負担が大きい ○ VM毎に適切なGPUデバイスドライバをインストールする必要がある ○ デバイスドライバ/CUDA/アプリ間でバージョン整合性を保つ必要がある 2. 特に処理が無い時でもGPUリソースが無駄に占有される ○ 社内向けの検証環境で提供可能なGPU数が少ないため 3. プロバイダ側でGPUデバイスを監視出来ない ○ GPUデバイスを VM へ Passthrough しているため
  • 10. Copyright © NTT Communications Corporation. 1. ユーザの環境構築が容易 2. GPUリソースを使用後に迅速に解放出来る 3. GPUリソースの使用状況を監視出来る 9 コンテナ技術による問題解決 GPU as a Service 実現のため コンテナ技術 を活用
  • 11. Copyright © NTT Communications Corporation. 10 コンテナ技術とは INFRASTRUCTURE INFRASTRUCTURE HOST OSHOST OS HYPERVISOR CONTAINER ENGINE GUEST OS APP BIN/LIBS BIN/LIBS APPS APPS ハイパーバイザ型仮想化 コンテナ型仮想化 ● VMと比較して軽量 ● リソースを迅速に解放可能 ● ホスト所有のデバイスを利用 VM CONTAINER BIN/LIBS GUEST OS APP BIN/LIBS
  • 12. Copyright © NTT Communications Corporation. 11 Agenda 1. 背景&目的 2. GPU環境の望ましい要件 3. コンテナ技術関連の各種OSSツール比較 4. OpenStack連携によるマルチテナントの実現 5. GPU Container as a Service つくってみた
  • 13. Copyright © NTT Communications Corporation. ● As a Service として利用できる ○ 即時に利用可能・マルチテナント対応 ● GPU環境のデプロイが容易である ○ GPU数など幾つかの事項を指定するのみで良い ○ コンテナ技術でデファクトスタンダードのDockerが利用できる 12 GPU as a Service の要件 ~ユーザ側~ GPU node User GaaS GPU数を指定 Dockerコンテナ作成
  • 14. Copyright © NTT Communications Corporation. 13 ● GPU搭載サーバをクラスタとして管理できる ○ PoC上のGPUクラスタは以下の NVIDIA製 GPU を利用している ● Tesla K2, Tesla K10, Tesla P100 ● コンテナ間で GPU の分離ができる GPU as a Service の要件 ~プロバイダ側~ 1/2 GPU 複数GPUの割り当て GPU GPUの分離 GPU GPU
  • 15. Copyright © NTT Communications Corporation. ● 効率的にGPUリソースを扱う事が出来る ○ コンテナのライフサイクルをタスクの種別毎に分類 14 GPU as a Service の要件 ~プロバイダ側~ 2/2 Temporary Batch task ● タスクを一度だけ実行, e.g. training task ● タスク終了後にコンテナ停止, GPUを解放 Long running Service task ● ウェブサービス, e.g. Jupyter Notebook ● コンテナの停止までGPUは解放されない User タスクの種類を指定
  • 16. Copyright © NTT Communications Corporation. 15 Agenda 1. 背景&目的 2. GPU環境の望ましい要件 3. コンテナ技術関連の各種OSSツール比較 4. OpenStack連携によるマルチテナントの実現 5. GPU Container as a Service つくってみた
  • 17. Copyright © NTT Communications Corporation. 16 前提知識 GPUコンテナを実現するための要素技術 Docker Nvidia Docker
  • 18. Copyright © NTT Communications Corporation. ● Docker 社による コンテナ管理プラットフォーム ○ 簡単なコマンドでアプリケーション環境をデプロイ出来る $ docker run image_name -p 80:80 ● コンテナ毎に個々のデバイスを分離出来る ● ユーザが自身で用意したイメージを利用出来る ○ アプリの実行に必要なライブラリ等を纏めたもの 17 Docker
  • 19. Copyright © NTT Communications Corporation. 18 Nvidia Docker ● DockerからGPUを扱う事を容易にする為のツール ○ コンテナへGPUリソースを割り当てる事が出来る $ NV_GPU=0,1 nvidia-docker run nvidia/cuda nvidia-smi ● Deep Learning 用のイメージが公式で提供されている ○ nvidia/cuda など ○ CUDA Toolkit (SDK) を包含
  • 20. Copyright © NTT Communications Corporation. Host ContainerVM 19 Docker / Nvidia Docker の利点 1/2 自動マウント コンテナ化 Nvidia Driver Applic ations CUDA Toolkit (SDK) Container Applicati ons CUDA Toolkit (SDK) nvidia-kernel-module Nvidia Driver Nvidia Driver イメージ化 Applic ations Appli catio ns Dockerイメー ジおよび NvidiaDocker の自動マウント 機能により バージョン不整 合を解決 Host Nvidia Driverなし バージョンが整 合してないとア プリが正常動作 しない Nvidia Driver Applicati ons CUDA Toolkit (SDK)
  • 21. Copyright © NTT Communications Corporation. Host ContainerVM 20 Docker / Nvidia Docker の利点 2/2 コンテナ化 Nvidia Driver Applic ations CUDA Toolkit (SDK) Container Applicati ons CUDA Toolkit (SDK) nvidia-kernel-module Nvidia Driver Nvidia Driver Applic ations Appli catio ns Host Nvidia Driverなし Nvidia Driver GPU GPU GPU Applicati ons CUDA Toolkit (SDK) ホストにNVIDIA Driverがないた め監視が難しい 通常通り NVIDIA Management Library (NVML) を利用してGPU を監視可
  • 22. Copyright © NTT Communications Corporation. • サービス提供の為に COE (Container Orchestration Engine) が必要 – GPU サーバ群をクラスタとして管理・提供する必要がある – 効率的にGPUリソースを提供す必要がある 21 コンテナ関連OSSツールの比較 GPU as a Service の適切な実現手段となる 様々なコンテナ関連OSSツールの調査・検証を実施 OpenStack Zun Docker Swarm / Swarm Mode Apache Mesos Kubernetes
  • 23. Copyright © NTT Communications Corporation. 22 コンテナ関連OSSツールの検証項目 検証項目を以下のように設定 GPUクラスタ 管理 GPUの指定 複数割り当て GPUの分離 Docker サポート バッチタスク 実行可能か OpenStackZun DockerSwarm / SwarmMode mesos Kubernetes
  • 24. Copyright © NTT Communications Corporation. 23 コンテナ関連OSSツールの検証項目 検証項目を以下のように設定 GPUクラスタ 管理 GPUの指定 複数割り当て GPUの分離 Docker サポート バッチタスク 実行可能か OpenStackZun DockerSwarm / SwarmMode mesos Kubernetes ・ユーザが自身でGPU数を指定可能 ・複数GPUをコンテナへ割り当て可能
  • 25. Copyright © NTT Communications Corporation. 24 コンテナ関連OSSツールの検証項目 検証項目を以下のように設定 GPUクラスタ 管理 GPUの指定 複数割り当て GPUの分離 Docker サポート バッチタスク 実行可能か OpenStackZun DockerSwarm / SwarmMode mesos Kubernetes ・各コンテナへ異なるGPUを割り当て可能 ・ビジーなGPUは他コンテナへ割り当て不可
  • 26. Copyright © NTT Communications Corporation. 25 コンテナ関連OSSツールの検証項目 検証項目を以下のように設定 GPUクラスタ 管理 GPUの指定 複数割り当て GPUの分離 Docker サポート バッチタスク 実行可能か OpenStackZun DockerSwarm / SwarmMode mesos Kubernetes ・コンテナ内部のプロセスが停止時に  自動的にコンテナが停止する
  • 27. Copyright © NTT Communications Corporation. • OpenStack 上でコンテナを管理するためのツール • OpenStack内部で基本的なコンテナの制御 (i.e. CRUD) のみ提供 26 OpenStack Zun Zun の マスコットキャラクタ
  • 28. Copyright © NTT Communications Corporation. ● GPUリソースがサポートされていない ○ Docker に “CpuShares” and “Memory” パラメータのみ渡す事が可能 ○ GPU対応の話題がコミュニティ側で挙がっていない 27 OpenStack Zun OpenStack Zun は Dockerサポート 以外の 要件を満たしていない
  • 29. Copyright © NTT Communications Corporation. 28 OpenStack Zun の検証結果 GPUクラスタ 管理 GPUの指定 複数割り当て GPUの分離 Docker サポート バッチタスク 実行可能か OpenStackZun ✗ ✗ ✗ ✔ ✗ DockerSwarm / SwarmMode mesos Kubernetes
  • 30. Copyright © NTT Communications Corporation. Docker Swarm / swarm mode 29 ● Docker ネイティブなクラスタ管理ツール ● Dockerが展開されたマシン複数台から簡単にクラスタを構築出来る ● Docker v1.12 以上でDockerに標準で組み込まれている Internal Distributed State Store Manager (follower) Manager (leader) Manager (follower) Worker Worker Worker Worker Worker Worker
  • 31. Copyright © NTT Communications Corporation. 30 Docker Swarm / swarm mode ● Docker Swarm は GPU をサポートしていない ○ 現在もGPU対応が Docker Project において進められている ■ https://github.com/docker/docker/issues/23917 ● Nvidia Docker も同様にサポートされていない ○ GPUコンテナに必要なライブラリ群をマウント出来ない Docker Swarm / swarm mode は “GPUクラスタ管理” を満たしていない
  • 32. Copyright © NTT Communications Corporation. 31 Docker Swarm / Swarm Mode の検証結果 GPUクラスタ 管理 GPUの指定 複数割り当て GPUの分離 Docker サポート バッチタスク 実行可能か OpenStackZun ✗ ✗ ✗ ✔ ✗ DockerSwarm / SwarmMode ✗ ✗ ✗ ✔ ✗ mesos Kubernetes
  • 33. Copyright © NTT Communications Corporation. 32 Mesos ● Apacheソフトウェア財団によるクラスタ管理ツール ● 効率的かつ動的なリソースの分配や共有が可能 ● 分散アプリケーションやフレームワークを Mesos Master が制御 ○ e.g. Marathon, Chronos, Hadoop...
  • 34. Copyright © NTT Communications Corporation. 33 ● Mesos の GPU サポート状況 ○ Mesos v1.0.0 以上で Nvidia GPU に対応している ○ CPU や Memoryと同様に GPU も管理する事が出来る Mesos
  • 35. Copyright © NTT Communications Corporation. 34 Mesos Task Type Frameworks GPU + Mesos GPU + Docker Batch Chronos ✗ N/A Metronome ✗ N/A Service Aurona ✔ ✗ Marathon ✔ ✗ Mesos フレームワークは二種類のコンテナを扱う事が可能 - Mesos コンテナ・Docker コンテナ
  • 36. Copyright © NTT Communications Corporation. 35 Apache Mesos の検証結果 GPUクラスタ 管理 GPUの指定 複数割り当て GPUの分離 Docker サポート バッチタスク 実行可能か OpenStackZun ✗ ✗ ✗ ✔ ✗ DockerSwarm / SwarmMode ✗ ✗ ✗ ✔ ✗ mesos ✔ ✔ ✔ ✗ ✔ Kubernetes
  • 37. Copyright © NTT Communications Corporation. 36 Kubernetes ● Google による Container Orchestration Engine (COE) ● コンテナのクラスタリング・オートスケーリング等の様々な機能を提供 ● コミュニティも活発で頻繁に議論や機能の開発が行われている
  • 38. Copyright © NTT Communications Corporation. ● コンテナは Pod と呼ばれる単位で管理される ○ Podは単一もしくは複数のコンテナで構成される ○ Pod単位で CRUD 等の様々な処理が行われる タスク種別毎の Pod 管理方法 37 Kubernetes Node A Pod A Pod B Service Task : Pod, ReplicaSet Deployment など Batch Task : Job など
  • 39. Copyright © NTT Communications Corporation. ● コンテナの CRUD 管理 は マニフェストファイル で行う ○ Pod 及び Pod 内のコンテナの情報を定義する ■ Podの管理方法 (Kind) ■ コンテナ・コンテナイメージ名など ○ yaml・jsonの各種形式で定義可能 ○ CLI (kubectl) や WebUI から利用可能 38 Kubernetes apiVersion: v1 kind: Pod metadata: name: nginx spec: conatiners: - name: nginx image: nginx ports: - containerPort: 80 User Master Node Pod Minion NodeManifest
  • 40. Copyright © NTT Communications Corporation. ● KubernetesのGPUサポート状況 ○ v1.3.x から試験的にGPUスケジューリングが導入された ■ GPU as a Service の要件を満たしていない ● 複数GPUが割り当て出来ない ● GPUの分離が出来ない ○ v1.6 以上で Alpha 版として GPUスケジューリングをサポート ■ GPUスケジューリングの機能が改善された ● v1.3.x ~ v1.5.x までの問題が解決されている ■ 自動的にノード上のGPU数を検出できる 39 Kubernetes v1.6系を利用
  • 41. Copyright © NTT Communications Corporation. ● 複数GPUを単一のコンテナに割り当て可能 40 Kubernetes コンテナ内の情報 マニフェスト内でGPU数を指定する +-----------------------------------------------------------------------------+ | NVIDIA-SMI 375.39 Driver Version: 375.39 | |-------------------------------+----------------------+----------------------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | |===============================+======================+======================| | 0 Tesla K10.G2.8GB Off |0000:00:05.0 Off | 0 | | N/A 39C P8 17W / 117W | 0MiB / 3527MiB | 0% Default | +-------------------------------+----------------------+----------------------+ | 1 Tesla K10.G2.8GB Off |0000:00:06.0 Off | 0 | | N/A 41C P8 18W / 117W | 0MiB / 3527MiB | 0% Default | +-------------------------------+----------------------+----------------------+ resources: limits: alpha.Kubernetes.io/nvidia-gpu: 2 requests: alpha.Kubernetes.io/nviida-gpu: 2 command: [“/bin/bash”, “-c”] args: [“nvidia-smi” && tail -f /dev/null]
  • 42. Copyright © NTT Communications Corporation. ● コンテナ間でGPUの分離が可能 41 Kubernetes
  • 43. Copyright © NTT Communications Corporation. ● バッチタスクに対応 42 Kubernetes apiVersion: batch/v1 kind: Job ... limits: alpha.Kubernetes.io/nvidia-gpu: 2 requests: alpha.Kubernetes.io/nviida-gpu: 2  ...  command: [“/bin/bash”, “-c”] args: [“nvidia-smi”] ... タスクの種類をマニフェスト内で定義 Podの情報 (起動時) $ kubectl get pods -a -o wide NAME READY STATUS RESTARTS AGE nbody-swsdj 0/1 Completed 0 2m $ kubectl get jobs NAME DESIRED SUCCESSFUL AGE nbody 1 1 2m $ kubectl get pods NAME READY STATUS RESTARTS AGE nbody-swsdj 1/1 Running 0 5s $ kubectl get jobs NAME DESIRED SUCCESSFUL AGE nbody 1 0 7s Podの情報 (終了時)
  • 44. Copyright © NTT Communications Corporation. 43 検証結果 GPUクラスタ 管理 GPUの指定 複数割り当て GPUの分離 Docker サポート バッチタスク 実行可能か OpenStackZun ✗ ✗ ✗ ✔ ✗ DockerSwarm / SwarmMode ✗ ✗ ✗ ✔ ✗ mesos ✔ ✔ ✔ ✗ ✔ Kubernetes ✔ ✔ ✔ ✔ ✔
  • 45. Copyright © NTT Communications Corporation. 44 Agenda 1. 背景&目的 2. GPU環境の望ましい要件 3. コンテナ技術関連の各種OSSツール比較 4. OpenStack連携によるマルチテナントの実現 5. GPU Container as a Service つくってみた
  • 46. Copyright © NTT Communications Corporation. Kubernetes でのマルチテナント実現手法は 2種類 ある  方法1.OpenStack のテナントごとにk8sをデプロイする - 1-1 OpenStack Magnumでデプロイ - 1-2 OpenStack Heatでデプロイ  方法2.Kubernetes の認証・認可に OpenStack Keystone を用いる 45 Kubernetes を用いたマルチテナントの実現 OpenStack Tenant A k8s Tenant B k8s OpenStack Tenant A Tenant B Kubernetes NamespaceA NamespaceB 方法1 方法2
  • 47. Copyright © NTT Communications Corporation. ● OpenStack 上で COE のクラスタ環境を簡単に構築してくれるコンポーネント ○ Kubernetes や Mesos などに対応している ● OpenStack 環境内に Kubernetes クラスタの構築が可能 ○ OpenStack Cinder や Octavia (LBaaS) 等と連携出来る ○ 後から 容易に Minion Node 数を増減出来る 46 方法1-1 Magnum Tenant A Magnum API Tenant B
  • 48. Copyright © NTT Communications Corporation. 47 • GPU 対応の k8s 1.6 はサポートされていない – 現在の Magnum の k8s 対応状況 Minion Node 構築用のOSイメージにより異なる • [Fedora Atomic]: k8s 1.5.3 [CoreOS]: k8s 1.5.2 • 公式サポートのイメージに Nvidia Driver が含まれていない – GPU対応には 独自 OS イメージの作成が必要になる • 独自設定で k8s 1.6 が利用出来るかを検証を行った – ユーザ側で書き換える事が出来ない内部の設定ファイルを変更 • 現在の Magnum では構築出来ない • k8s 1.6 と Magnum が認証連携出来ない 方法1-1 Magnum
  • 49. Copyright © NTT Communications Corporation. • OpenStack 上で オーケストレーション を行うコンポーネント – Heat Template に基づいて VM や NW などを構築出来る – k8s が公式メンテナンスしている Heat Template がある • k8s 1.6 向けのテンプレートが存在するが ... • ユーザ自身が柔軟なクラスタ環境を構築出来る – ユーザ側で Heat Template を直接編集出来る • Heat Template を編集する事で Nvidia Driver のインストール自動化も可能 • k8s 1.6 を構築可能か検証を行った – 現在の OpenStack Heat では構築出来ない • 必要な各種ファイルの設定や配置が適切でない 48 方法1-1 Heat
  • 50. Copyright © NTT Communications Corporation. 方法2 Keystone 連携 ● 認証処理について ○ Kubernetes のユーザ認証を Keystone へ委譲出来る ○ OpenStackの既存ユーザを用いた認証が可能 ● 認可処理について ○ OpenStack のテナント と Namespace の対応付けの設定が必要 ■ Kubernetes は Namespace と呼ばれるテナント分離の仕組みがある ■ Kubernetes の 認可の仕組み (RBACやABAC) を利用する ○ Keystone のみで認可を実現することは現状出来ない ■ https://github.com/Kubernetes/Kubernetes/pull/25624 49
  • 51. Copyright © NTT Communications Corporation. マルチテナント実現手法の比較 ● k8s 1.6 対応 の Heat 及び Keystone の2手法を以下の観点で比較し、 検証環境における適切なマルチテナント実現方法を選択する ○ GPUリソースの分離 ○ プロバイダ視点でのGPU監視 ○ コンテナ配備先の分離 ○ ネットワークの分離 ○ OpenStack 上のVMとの通信 50
  • 52. Copyright © NTT Communications Corporation. GPUリソース の分離 プロバイダ視点 GPUの監視 コンテナ 配備先の分離 ネットワークの 分離 OpenStack VMとの通信 方法1 OpenStackの テナントごとに k8sを展開 テナント単位 困難 テナント単位 テナント単位 (VXLAN, GRE…) Tenant Network 内 方法2 k8s 認証/認可に Keystone 全テナント 共有 可能 全テナント 共有 全テナント 共有 (Flat + Iptables) Floating IP 経由 51 マルチテナント実現手法の比較 ● GPUリソースをなるべく全体で共有したい ● GPUリソースをプロバイダ側で監視したい ● 厳密にNW等が分離されている必要がない ➡ 方法2を選択 今回の検証環境の要件
  • 53. Copyright © NTT Communications Corporation. 52 Agenda 1. 背景&目的 2. GPU環境の望ましい要件 3. コンテナ技術関連の各種OSSツール比較 4. OpenStack連携によるマルチテナントの実現 5. GPU Container as a Service つくってみた
  • 54. Copyright © NTT Communications Corporation. 複数台のGPU搭載サーバで Kubernetes のクラスタを組んでいる 53 検証環境の概念図 Minion Node1 Deploy/Manage Pods ユーザ GPU x 8 (Tesla P100) Minion Node2 GPU x 4 (Tesla GRID K2) Minion Node3 GPU x 2 (Tesla K10) Minion Node4 GPU x 2 (Tesla K10) OpenStack Env Keystone Keystone 連携による マルチテナントの実現Master Node
  • 55. Copyright © NTT Communications Corporation. 54 Demo Kubernetes 上で Digits (GPU) を実行してみた
  • 56. Copyright © NTT Communications Corporation. ● 各ノード上でのGPUコンテナの有効化 1. Nvidia Driver のインストール ■ http://www.nvidia.co.jp/Download/index.aspx?lang=jp 2. Nvidia docker のインストール ■ https://github.com/NVIDIA/nvidia-docker 3. Kubernetes 環境の構築 ■ kubelet の起動時に以下のパラメータを付与する ■ --feature-gates=Accelerators=true 55 GPUクラスタの構築と管理 〜構築〜 1/3 
  • 57. Copyright © NTT Communications Corporation. ● ユーザが指定のGPUを選択可能にする ○ 該当ノードにラベル (GPU名) を設定する ■ PoC環境では, GPUの種類に応じて`p100`,`k2` , `k10` を指定可能 $ kubectl label nodes <nodeName> gputype=p100 ○ ユーザはマニフェストで需要に見合ったGPUラベル名を指定 nodeSelector.gputype: p100 56 GPUクラスタの構築と管理 〜構築〜 2/3 Pod Minion Node 1 LABEL: p100 Tesla P100 Minion Node 2 LABEL: k2 Tesla K2 Minion Node 3 LABEL: k10 Tesla K10 ••• p100 Deploy
  • 58. Copyright © NTT Communications Corporation. ● Kubernetes と Keystone の連携 ○ Kubernetes 側での設定 ■ kube-apiserver へのパラメータ付与 --experimental-keystone-url --experimental-keystone-cafile ○ OpenStack 側での設定 ■ Keystone Endpoint の HTTPS 化 ● リバースプロキシ等を活用する ○ 上記ののちに認可設定を Kubernetes で行う ■ Keystone に存在する既存ユーザへ Role の適用 57 GPUクラスタの構築と管理 〜構築〜 3/3
  • 59. Copyright © NTT Communications Corporation. ● GPUリソースの監視 ○ Kubernetes における GPU監視方法 ■ Kubernetes に標準で実装されているGPUリソース監視機能 ■ NVIDIAによって提供されている NVdia Management Library (NVML) 58 GPUクラスタの構築と運用 〜運用〜 1/3
  • 60. Copyright © NTT Communications Corporation. ● k8sではGPU数を監視できる機能が標準で備わっている ● 以下のコマンドで使用状況を見ることが可能 ○ $ kubectl describe node 59 GPUクラスタの構築と運用 〜運用〜 2/3 ・利用可能なGPU数を正確に取得  する事ができない ・どのコンテナがGPUを利用中  かは分からない
  • 61. Copyright © NTT Communications Corporation. ● NVIDIAは NVdia Management Library (NVML) を提供している ○ 様々なGPUメトリクスを取得する事が可能 60 GPUクラスタの構築と運用 〜運用〜 3/3 e.g. nvml.util.gpu : GPU 利用率 (%) nvml.mem.used : GPUの使用中メモリ量 nvml.temp : GPUの温度
  • 62. Copyright © NTT Communications Corporation. 61 GPUクラスタの構築と運用 〜運用〜 3/3
  • 63. Copyright © NTT Communications Corporation. 62 まとめ 1. 背景&目的 2. GPU環境の望ましい要件 3. コンテナ技術関連の各種OSSツール比較 4. OpenStack連携によるマルチテナントの実現 5. GPU Container as a Service つくってみた
  • 64. Copyright © NTT Communications Corporation. 63 Special Thanks to... • 横山智大 • 松下正樹 • 小倉真人 • Ankit Purohit • 奥村昌和 • 逸見彰一郎
  • 65. Copyright © NTT Communications Corporation. 64 ご清聴ありがとうございました