SlideShare uma empresa Scribd logo
1 de 66
Baixar para ler offline
Copyright © NTT Communications Corporation.
Transform your business, transcend expectations with our technologically advanced solutions.
GPU Container as a Service を
実現するための最新OSS徹底比較
NTTコミュニケーションズ
技術開発部
松本赳明
Copyright © NTT Communications Corporation.
1
今回の発表内容
• OpenStack Days Tokyo Day 2 (July 21)
– GPU Container as a Serviceを実現するための最新OSS徹底比較
• スライド
– https://www.slideshare.net/td-nttcom/gpu-container-as-a-service-oss
Copyright © NTT Communications Corporation.
2
自己紹介
松本 赳明
Takeaki Matsumoto
takeaki.matsumoto@ntt.com
技術開発部
クラウド基盤ソフトウェア検証,
プライベートクラウド運用...
Copyright © NTT Communications Corporation.
3
Agenda
1. 背景&目的
2. GPU環境の望ましい要件
3. コンテナ技術関連の各種OSSツール比較
4. OpenStack連携によるマルチテナントの実現
5. GPU Container as a Service つくってみた
Copyright © NTT Communications Corporation.
4
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を用いた学習・検証に対する社内ニーズの高まり
5
背景
Copyright © NTT Communications Corporation.
● 高速な並列データ処理が可能なGPUの需要がある
○ 学習や解析などのワークロードは非常に高負荷
● 一方でGPUの調達における予算や時間がネックになることも...
○ クラウドサービスを利用する事により解決出来る
○ 主要クラウドプロバイダは既にGPUインスタンスの提供を開始
■ Azure、AWS、GCP、Bluemix (Bare)
6
GPU利用のトレンド
Copyright © NTT Communications Corporation.
Node 4
Node 3
Node 2
Node 1
7
目的
社内向けに検証環境として
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 を利用
● 主に機械学習やディープラーニングなどに利用されている
8
社内プライベートクラウドでのGPU提供の現状
Copyright © NTT Communications Corporation.
9
VMでのGPU提供の問題
1. 機械学習用の環境構築のユーザ負担が大きい
○ VM毎に適切なGPUデバイスドライバをインストールする必要がある
○ デバイスドライバ/CUDA/アプリ間でバージョン整合性を保つ必要がある
2. 特に処理が無い時でもGPUリソースが無駄に占有される
○ 社内向けの検証環境で提供可能なGPU数が少ないため
3. プロバイダ側でGPUデバイスの使用状態を監視出来ない
○ GPUデバイスを VM へ Passthrough しているため
Copyright © NTT Communications Corporation.
1. ユーザの環境構築が容易
2. GPUリソースを使用後に迅速に解放出来る
3. GPUリソースの使用状況を監視出来る
10
コンテナ技術による問題解決
GPU as a Service 実現のため コンテナ技術 を活用
Copyright © NTT Communications Corporation.
11
コンテナ技術とは
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.
12
Agenda
1. 背景&目的
2. GPU環境の望ましい要件
3. コンテナ技術関連の各種OSSツール比較
4. OpenStack連携によるマルチテナントの実現
5. GPU Container as a Service つくってみた
Copyright © NTT Communications Corporation.
● As a Service として利用できる
○ 即時に利用可能・マルチテナント対応
● GPU環境のデプロイが容易である
○ GPU数など幾つかの事項を指定するのみで良い
○ コンテナ技術でデファクトスタンダードのDockerが利用できる
13
GPU as a Service の要件 ~ユーザ側~
GPU
node
User
GaaS
GPU数を指定 Dockerコンテナ作成
Copyright © NTT Communications Corporation.
14
● 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リソースを扱う事が出来る
○ コンテナのライフサイクルをタスクの種別毎に分類
15
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.
16
Agenda
1. 背景&目的
2. GPU環境の望ましい要件
3. コンテナ技術関連の各種OSSツール比較
4. OpenStack連携によるマルチテナントの実現
5. GPU Container as a Service つくってみた
Copyright © NTT Communications Corporation.
17
前提知識
GPUコンテナを実現するための要素技術
Docker Nvidia Docker
Copyright © NTT Communications Corporation.
● Docker 社による コンテナ管理プラットフォーム
○ 簡単なコマンドでアプリケーション環境をデプロイ出来る
$ docker run image_name -p 80:80
● コンテナ毎に個々のデバイスを分離出来る
● ユーザが自身で用意したイメージを利用出来る
○ アプリの実行に必要なライブラリ等を纏めたもの
18
Docker
Copyright © NTT Communications Corporation.
19
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
20
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
21
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リソースを提供する必要がある
22
コンテナ関連OSSツールの比較
GPU as a Service の適切な実現手段となる
様々なコンテナ関連OSSツールの調査・検証を実施
OpenStack
Zun
Docker Swarm /
Swarm Mode
Apache Mesos Kubernetes
Copyright © NTT Communications Corporation.
23
コンテナ関連OSSツールの検証項目
検証項目を以下のように設定
GPUクラスタ
管理
GPUの指定
複数割り当て
GPUの分離
Docker
サポート
バッチタスク
実行可能か
OpenStackZun
DockerSwarm
/ SwarmMode
mesos
Kubernetes
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
・各コンテナへ異なるGPUを割り当て可能
・ビジーなGPUは他コンテナへ割り当て不可
Copyright © NTT Communications Corporation.
26
コンテナ関連OSSツールの検証項目
検証項目を以下のように設定
GPUクラスタ
管理
GPUの指定
複数割り当て
GPUの分離
Docker
サポート
バッチタスク
実行可能か
OpenStackZun
DockerSwarm
/ SwarmMode
mesos
Kubernetes
・コンテナ内部のプロセスが停止時に
 自動的にコンテナが停止する
Copyright © NTT Communications Corporation.
• OpenStack 上でコンテナを管理するためのツール
• OpenStack内部で基本的なコンテナの制御 (i.e. CRUD) のみ提供
27
OpenStack Zun
Zun の
マスコットキャラクタ
Copyright © NTT Communications Corporation.
● GPUリソースがサポートされていない
○ Docker に “CpuShares” and “Memory” パラメータのみ渡す事が可能
○ GPU対応の話題がコミュニティ側で挙がっていない
28
OpenStack Zun
OpenStack Zun は Dockerサポート 以外の
要件を満たしていない
Copyright © NTT Communications Corporation.
29
OpenStack Zun の検証結果
GPUクラスタ
管理
GPUの指定
複数割り当て
GPUの分離
Docker
サポート
バッチタスク
実行可能か
OpenStackZun
✗ ✗ ✗ ✔ ✗
DockerSwarm
/ SwarmMode
mesos
Kubernetes
Copyright © NTT Communications Corporation.
Docker Swarm / swarm mode
30
● 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.
31
Docker Swarm / swarm mode
● Docker Swarm は GPU をサポートしていない
○ 現在もGPU対応が Docker Project において進められている
■ https://github.com/docker/docker/issues/23917
○ Generic Resourceという仕組みが入ったがまだ機能不足
■ https://github.com/docker/swarmkit/pull/2090
● Nvidia Docker も同様にサポートされていない
○ GPUコンテナに必要なライブラリ群をマウント出来ない
Docker Swarm / swarm mode は
“GPUクラスタ管理” を満たしていない
Copyright © NTT Communications Corporation.
32
Docker Swarm / Swarm Mode の検証結果
GPUクラスタ
管理
GPUの指定
複数割り当て
GPUの分離
Docker
サポート
バッチタスク
実行可能か
OpenStackZun
✗ ✗ ✗ ✔ ✗
DockerSwarm
/ SwarmMode ✗ ✗ ✗ ✔ ✗
mesos
Kubernetes
Copyright © NTT Communications Corporation.
33
Mesos
● Apacheソフトウェア財団によるクラスタ管理ツール
● 効率的かつ動的なリソースの分配や共有が可能
● 分散アプリケーションやフレームワークを Mesos Master が制御
○ e.g. Marathon, Chronos, Hadoop…
● 二種類のコンテナに対応
○ Mesosコンテナ, Dockerコンテナ
Copyright © NTT Communications Corporation.
34
● Mesos の GPU サポート状況
○ Mesos v1.0.0 以上で Nvidia GPU に対応している
○ CPU や Memoryと同様に GPU も管理する事が出来る
Mesos
Copyright © NTT Communications Corporation.
35
Mesos
Task Type Frameworks GPU + Mesos GPU + Docker
Batch
Chronos ✗ N/A
Metronome ✗ N/A
Service
Aurona ✔ ✗
Marathon ✔ ✗
● フレームワークとコンテナの種類によって対応状況が異なる
○ DockerコンテナではGPUを扱えない
Copyright © NTT Communications Corporation.
36
Apache Mesos の検証結果
GPUクラスタ
管理
GPUの指定
複数割り当て
GPUの分離
Docker
サポート
バッチタスク
実行可能か
OpenStackZun
✗ ✗ ✗ ✔ ✗
DockerSwarm
/ SwarmMode ✗ ✗ ✗ ✔ ✗
Mesos
✔ ✔ ✔ ▲ ✗
Kubernetes
Copyright © NTT Communications Corporation.
37
Kubernetes
● Google による Container Orchestration Engine (COE)
● コンテナのクラスタリング・オートスケーリング等の様々な機能を提供
● コミュニティも活発で頻繁に議論や機能の開発が行われている
Copyright © NTT Communications Corporation.
● コンテナは Pod と呼ばれる単位で管理される
○ Podは単一もしくは複数のコンテナで構成される
○ Pod単位で CRUD 等の様々な処理が行われる
タスク種別毎の Pod 管理方法
38
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 から利用可能
39
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数を検出できる
40
Kubernetes
v1.6系を利用
Copyright © NTT Communications Corporation.
● 複数GPUを単一のコンテナに割り当て可能
41
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の分離が可能
42
Kubernetes
Copyright © NTT Communications Corporation.
● バッチタスクに対応
43
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.
44
検証結果
GPUクラスタ
管理
GPUの指定
複数割り当て
GPUの分離
Docker
サポート
バッチタスク
実行可能か
OpenStackZun
✗ ✗ ✗ ✔ ✗
DockerSwarm
/ SwarmMode ✗ ✗ ✗ ✔ ✗
mesos
✔ ✔ ✔ ▲ ✗
Kubernetes
✔ ✔ ✔ ✔ ✔
Copyright © NTT Communications Corporation.
45
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 を用いる
46
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 数を増減出来る
47
方法1-1 Magnum
Tenant A
Magnum
API
Tenant B
Copyright © NTT Communications Corporation.
48
• 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 を構築可能か検証を行った
– 現状の Heat Templateでは構築出来ない
• 必要な各種ファイルの設定や配置が適切でない
49
方法1-2 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
50
Copyright © NTT Communications Corporation.
マルチテナント実現手法の比較
● k8s 1.6 対応 の Heat 及び Keystone の2手法を以下の観点で比較し、
検証環境における適切なマルチテナント実現方法を選択する
○ GPUリソースの分離
○ プロバイダ視点でのGPU監視
○ コンテナ配備先の分離
○ ネットワークの分離
○ OpenStack 上のVMとの通信
51
Copyright © NTT Communications Corporation.
GPUリソース
の分離
プロバイダ視点
GPUの監視
コンテナ
配備先の分離
ネットワークの
分離
OpenStack
VMとの通信
方法1
OpenStackの
テナントごとに
k8sを展開
テナント単位 困難 テナント単位
テナント単位
(VXLAN,
GRE…)
Tenant
Network 内
方法2
k8s
認証/認可に
Keystone
全テナント
共有
可能
全テナント
共有
全テナント
共有
(Flat +
Iptables)
Floating IP
経由
52
マルチテナント実現手法の比較
● GPUリソースをなるべく全体で共有したい
● GPUリソースをプロバイダ側で監視したい
● 厳密にNW等が分離されている必要がない
➡ 方法2を選択
今回の検証環境の要件
Copyright © NTT Communications Corporation.
53
Agenda
1. 背景&目的
2. GPU環境の望ましい要件
3. コンテナ技術関連の各種OSSツール比較
4. OpenStack連携によるマルチテナントの実現
5. GPU Container as a Service つくってみた
Copyright © NTT Communications Corporation.
複数台のGPU搭載サーバで Kubernetes のクラスタを組んでいる
54
検証環境の概念図
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.
● 各ノード上での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
宣伝
https://ntt-developers.github.io/ntt-tech-conference/02/
Copyright © NTT Communications Corporation.
64
ご清聴ありがとうございました
Copyright © NTT Communications Corporation.
65
Demo
Kubernetes 上で Digits (GPU) を実行してみた

Mais conteúdo relacionado

Mais procurados

セガサターンマシン語プログラミングの紹介
セガサターンマシン語プログラミングの紹介セガサターンマシン語プログラミングの紹介
セガサターンマシン語プログラミングの紹介Yuma Ohgami
 
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)NTT DATA Technology & Innovation
 
Docker Compose入門~今日から始めるComposeの初歩からswarm mode対応まで
Docker Compose入門~今日から始めるComposeの初歩からswarm mode対応までDocker Compose入門~今日から始めるComposeの初歩からswarm mode対応まで
Docker Compose入門~今日から始めるComposeの初歩からswarm mode対応までMasahito Zembutsu
 
DockerコンテナでGitを使う
DockerコンテナでGitを使うDockerコンテナでGitを使う
DockerコンテナでGitを使うKazuhiro Suga
 
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)NTT DATA Technology & Innovation
 
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)NTT DATA Technology & Innovation
 
10分でわかる Cilium と XDP / BPF
10分でわかる Cilium と XDP / BPF10分でわかる Cilium と XDP / BPF
10分でわかる Cilium と XDP / BPFShuji Yamada
 
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 2021Preferred Networks
 
仮想化環境におけるパケットフォワーディング
仮想化環境におけるパケットフォワーディング仮想化環境におけるパケットフォワーディング
仮想化環境におけるパケットフォワーディングTakuya ASADA
 
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」Masahito Zembutsu
 
ネットワークOS野郎 ~ インフラ野郎Night 20160414
ネットワークOS野郎 ~ インフラ野郎Night 20160414ネットワークOS野郎 ~ インフラ野郎Night 20160414
ネットワークOS野郎 ~ インフラ野郎Night 20160414Kentaro Ebisawa
 
How to Schedule Machine Learning Workloads Nicely In Kubernetes #CNDT2020 / C...
How to Schedule Machine Learning Workloads Nicely In Kubernetes #CNDT2020 / C...How to Schedule Machine Learning Workloads Nicely In Kubernetes #CNDT2020 / C...
How to Schedule Machine Learning Workloads Nicely In Kubernetes #CNDT2020 / C...Preferred Networks
 
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjugYahoo!デベロッパーネットワーク
 
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャーKubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャーToru Makabe
 
JIRA / Confluence の 必須プラグインはこれだ
JIRA / Confluence の必須プラグインはこれだJIRA / Confluence の必須プラグインはこれだ
JIRA / Confluence の 必須プラグインはこれだNarichika Kajihara
 
Linux-HA Japanプロジェクトのこれまでとこれから
Linux-HA JapanプロジェクトのこれまでとこれからLinux-HA Japanプロジェクトのこれまでとこれから
Linux-HA Japanプロジェクトのこれまでとこれからksk_ha
 
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Masahito Zembutsu
 
Dockerを支える技術
Dockerを支える技術Dockerを支える技術
Dockerを支える技術Etsuji Nakai
 

Mais procurados (20)

セガサターンマシン語プログラミングの紹介
セガサターンマシン語プログラミングの紹介セガサターンマシン語プログラミングの紹介
セガサターンマシン語プログラミングの紹介
 
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
 
WebSocket / WebRTCの技術紹介
WebSocket / WebRTCの技術紹介WebSocket / WebRTCの技術紹介
WebSocket / WebRTCの技術紹介
 
Docker Compose入門~今日から始めるComposeの初歩からswarm mode対応まで
Docker Compose入門~今日から始めるComposeの初歩からswarm mode対応までDocker Compose入門~今日から始めるComposeの初歩からswarm mode対応まで
Docker Compose入門~今日から始めるComposeの初歩からswarm mode対応まで
 
DockerコンテナでGitを使う
DockerコンテナでGitを使うDockerコンテナでGitを使う
DockerコンテナでGitを使う
 
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
 
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)
 
10分でわかる Cilium と XDP / BPF
10分でわかる Cilium と XDP / BPF10分でわかる Cilium と XDP / BPF
10分でわかる Cilium と XDP / BPF
 
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
 
仮想化環境におけるパケットフォワーディング
仮想化環境におけるパケットフォワーディング仮想化環境におけるパケットフォワーディング
仮想化環境におけるパケットフォワーディング
 
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」
 
ネットワークOS野郎 ~ インフラ野郎Night 20160414
ネットワークOS野郎 ~ インフラ野郎Night 20160414ネットワークOS野郎 ~ インフラ野郎Night 20160414
ネットワークOS野郎 ~ インフラ野郎Night 20160414
 
How to Schedule Machine Learning Workloads Nicely In Kubernetes #CNDT2020 / C...
How to Schedule Machine Learning Workloads Nicely In Kubernetes #CNDT2020 / C...How to Schedule Machine Learning Workloads Nicely In Kubernetes #CNDT2020 / C...
How to Schedule Machine Learning Workloads Nicely In Kubernetes #CNDT2020 / C...
 
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
 
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャーKubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
 
JIRA / Confluence の 必須プラグインはこれだ
JIRA / Confluence の必須プラグインはこれだJIRA / Confluence の必須プラグインはこれだ
JIRA / Confluence の 必須プラグインはこれだ
 
Linux-HA Japanプロジェクトのこれまでとこれから
Linux-HA JapanプロジェクトのこれまでとこれからLinux-HA Japanプロジェクトのこれまでとこれから
Linux-HA Japanプロジェクトのこれまでとこれから
 
nginx入門
nginx入門nginx入門
nginx入門
 
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
 
Dockerを支える技術
Dockerを支える技術Dockerを支える技術
Dockerを支える技術
 

Semelhante a GPU Container as a Serviceを実現するための最新OSS徹底比較 - OpenStack最新情報セミナー 2017年7月

EnrootとPyxisで快適コンテナ生活
EnrootとPyxisで快適コンテナ生活EnrootとPyxisで快適コンテナ生活
EnrootとPyxisで快適コンテナ生活Kuninobu SaSaki
 
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)NTT DATA Technology & Innovation
 
オススメの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 発表資料)NTT DATA Technology & Innovation
 
45分で理解する 最近のスパコン事情 斉藤之雄
45分で理解する 最近のスパコン事情 斉藤之雄45分で理解する 最近のスパコン事情 斉藤之雄
45分で理解する 最近のスパコン事情 斉藤之雄Yukio Saito
 
PGOを用いたPostgreSQL on Kubernetes入門(Open Source Conference 2023 Online/Hokkaido...
PGOを用いたPostgreSQL on Kubernetes入門(Open Source Conference 2023 Online/Hokkaido...PGOを用いたPostgreSQL on Kubernetes入門(Open Source Conference 2023 Online/Hokkaido...
PGOを用いたPostgreSQL on Kubernetes入門(Open Source Conference 2023 Online/Hokkaido...NTT DATA Technology & Innovation
 
"Up" with vagrant and docker
"Up" with vagrant and docker"Up" with vagrant and docker
"Up" with vagrant and dockerHiroshi Miura
 
Kubernetes1.9でWindowsコンテナーをクラスタ化
Kubernetes1.9でWindowsコンテナーをクラスタ化Kubernetes1.9でWindowsコンテナーをクラスタ化
Kubernetes1.9でWindowsコンテナーをクラスタ化Takashi Kanai
 
CODT2020 OpenStack Version Up and VMHA Masakari in Enterprise Cloud
CODT2020 OpenStack Version Up and VMHA Masakari in Enterprise CloudCODT2020 OpenStack Version Up and VMHA Masakari in Enterprise Cloud
CODT2020 OpenStack Version Up and VMHA Masakari in Enterprise CloudToshikazu Ichikawa
 
MEC (Mobile Edge Computing) + GPUコンピューティングについて
MEC (Mobile Edge Computing) + GPUコンピューティングについてMEC (Mobile Edge Computing) + GPUコンピューティングについて
MEC (Mobile Edge Computing) + GPUコンピューティングについてVirtualTech Japan Inc.
 
0から始めるコンテナの学び方(Kubernetes Novice Tokyo #14 発表資料)
0から始めるコンテナの学び方(Kubernetes Novice Tokyo #14 発表資料)0から始めるコンテナの学び方(Kubernetes Novice Tokyo #14 発表資料)
0から始めるコンテナの学び方(Kubernetes Novice Tokyo #14 発表資料)NTT DATA Technology & Innovation
 
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 発表資料)NTT DATA Technology & Innovation
 
インフラ野郎AzureチームProX
インフラ野郎AzureチームProXインフラ野郎AzureチームProX
インフラ野郎AzureチームProXToru Makabe
 
2016 06-30-deep-learning-archi
2016 06-30-deep-learning-archi2016 06-30-deep-learning-archi
2016 06-30-deep-learning-archiDaisuke Nagao
 
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...NTT DATA Technology & Innovation
 
【たぶん日本初導入!】Azure Stack Hub with GPUの性能と機能紹介
【たぶん日本初導入!】Azure Stack Hub with GPUの性能と機能紹介【たぶん日本初導入!】Azure Stack Hub with GPUの性能と機能紹介
【たぶん日本初導入!】Azure Stack Hub with GPUの性能と機能紹介NTT Communications Technology Development
 
Docker ComposeでMastodonが必要なものを梱包する話
Docker ComposeでMastodonが必要なものを梱包する話Docker ComposeでMastodonが必要なものを梱包する話
Docker ComposeでMastodonが必要なものを梱包する話Masahito Zembutsu
 
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)NTT DATA Technology & Innovation
 
20130714 July Tech Festa 日本CloudStackユーザー会
20130714 July Tech Festa 日本CloudStackユーザー会20130714 July Tech Festa 日本CloudStackユーザー会
20130714 July Tech Festa 日本CloudStackユーザー会samemoon
 

Semelhante a GPU Container as a Serviceを実現するための最新OSS徹底比較 - OpenStack最新情報セミナー 2017年7月 (20)

EnrootとPyxisで快適コンテナ生活
EnrootとPyxisで快適コンテナ生活EnrootとPyxisで快適コンテナ生活
EnrootとPyxisで快適コンテナ生活
 
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
 
オススメの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 発表資料)
 
45分で理解する 最近のスパコン事情 斉藤之雄
45分で理解する 最近のスパコン事情 斉藤之雄45分で理解する 最近のスパコン事情 斉藤之雄
45分で理解する 最近のスパコン事情 斉藤之雄
 
PGOを用いたPostgreSQL on Kubernetes入門(Open Source Conference 2023 Online/Hokkaido...
PGOを用いたPostgreSQL on Kubernetes入門(Open Source Conference 2023 Online/Hokkaido...PGOを用いたPostgreSQL on Kubernetes入門(Open Source Conference 2023 Online/Hokkaido...
PGOを用いたPostgreSQL on Kubernetes入門(Open Source Conference 2023 Online/Hokkaido...
 
"Up" with vagrant and docker
"Up" with vagrant and docker"Up" with vagrant and docker
"Up" with vagrant and docker
 
Kubernetes1.9でWindowsコンテナーをクラスタ化
Kubernetes1.9でWindowsコンテナーをクラスタ化Kubernetes1.9でWindowsコンテナーをクラスタ化
Kubernetes1.9でWindowsコンテナーをクラスタ化
 
CODT2020 OpenStack Version Up and VMHA Masakari in Enterprise Cloud
CODT2020 OpenStack Version Up and VMHA Masakari in Enterprise CloudCODT2020 OpenStack Version Up and VMHA Masakari in Enterprise Cloud
CODT2020 OpenStack Version Up and VMHA Masakari in Enterprise Cloud
 
MEC (Mobile Edge Computing) + GPUコンピューティングについて
MEC (Mobile Edge Computing) + GPUコンピューティングについてMEC (Mobile Edge Computing) + GPUコンピューティングについて
MEC (Mobile Edge Computing) + GPUコンピューティングについて
 
0から始めるコンテナの学び方(Kubernetes Novice Tokyo #14 発表資料)
0から始めるコンテナの学び方(Kubernetes Novice Tokyo #14 発表資料)0から始めるコンテナの学び方(Kubernetes Novice Tokyo #14 発表資料)
0から始めるコンテナの学び方(Kubernetes Novice Tokyo #14 発表資料)
 
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 発表資料)
 
インフラ野郎AzureチームProX
インフラ野郎AzureチームProXインフラ野郎AzureチームProX
インフラ野郎AzureチームProX
 
2016 06-30-deep-learning-archi
2016 06-30-deep-learning-archi2016 06-30-deep-learning-archi
2016 06-30-deep-learning-archi
 
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
 
Storm×couchbase serverで作るリアルタイム解析基盤
Storm×couchbase serverで作るリアルタイム解析基盤Storm×couchbase serverで作るリアルタイム解析基盤
Storm×couchbase serverで作るリアルタイム解析基盤
 
【たぶん日本初導入!】Azure Stack Hub with GPUの性能と機能紹介
【たぶん日本初導入!】Azure Stack Hub with GPUの性能と機能紹介【たぶん日本初導入!】Azure Stack Hub with GPUの性能と機能紹介
【たぶん日本初導入!】Azure Stack Hub with GPUの性能と機能紹介
 
Docker ComposeでMastodonが必要なものを梱包する話
Docker ComposeでMastodonが必要なものを梱包する話Docker ComposeでMastodonが必要なものを梱包する話
Docker ComposeでMastodonが必要なものを梱包する話
 
最近のJuju/MAAS について
最近のJuju/MAAS について最近のJuju/MAAS について
最近のJuju/MAAS について
 
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
 
20130714 July Tech Festa 日本CloudStackユーザー会
20130714 July Tech Festa 日本CloudStackユーザー会20130714 July Tech Festa 日本CloudStackユーザー会
20130714 July Tech Festa 日本CloudStackユーザー会
 

Mais de VirtualTech Japan Inc.

5G時代のアプリケーションとは 〜 5G+MECを活用した低遅延アプリの実現へ 〜
5G時代のアプリケーションとは 〜 5G+MECを活用した低遅延アプリの実現へ 〜5G時代のアプリケーションとは 〜 5G+MECを活用した低遅延アプリの実現へ 〜
5G時代のアプリケーションとは 〜 5G+MECを活用した低遅延アプリの実現へ 〜VirtualTech Japan Inc.
 
エンジニアが幸せになれる会社を目指します
エンジニアが幸せになれる会社を目指しますエンジニアが幸せになれる会社を目指します
エンジニアが幸せになれる会社を目指しますVirtualTech Japan Inc.
 
今からはじめる! Linuxコマンド入門
今からはじめる! Linuxコマンド入門今からはじめる! Linuxコマンド入門
今からはじめる! Linuxコマンド入門VirtualTech Japan Inc.
 
5G時代のアプリケーション開発とは - 5G+MECを活用した低遅延アプリの実現へ
5G時代のアプリケーション開発とは - 5G+MECを活用した低遅延アプリの実現へ5G時代のアプリケーション開発とは - 5G+MECを活用した低遅延アプリの実現へ
5G時代のアプリケーション開発とは - 5G+MECを活用した低遅延アプリの実現へVirtualTech Japan Inc.
 
Kubernetes雑にまとめてみた 2020年8月版
Kubernetes雑にまとめてみた 2020年8月版Kubernetes雑にまとめてみた 2020年8月版
Kubernetes雑にまとめてみた 2020年8月版VirtualTech Japan Inc.
 
MS Teams + OBS Studio (+ OBS Mac Virtual Camera) でのオンラインセミナーのプロトタイプの構築
MS Teams + OBS Studio (+ OBS Mac Virtual Camera) でのオンラインセミナーのプロトタイプの構築MS Teams + OBS Studio (+ OBS Mac Virtual Camera) でのオンラインセミナーのプロトタイプの構築
MS Teams + OBS Studio (+ OBS Mac Virtual Camera) でのオンラインセミナーのプロトタイプの構築VirtualTech Japan Inc.
 
5G時代のアプリケーション開発とは
5G時代のアプリケーション開発とは5G時代のアプリケーション開発とは
5G時代のアプリケーション開発とはVirtualTech Japan Inc.
 
hbstudy#88 5G+MEC時代のシステム設計
hbstudy#88 5G+MEC時代のシステム設計hbstudy#88 5G+MEC時代のシステム設計
hbstudy#88 5G+MEC時代のシステム設計VirtualTech Japan Inc.
 
通信への課題発掘ワークショップ 「5Gイノベーション」の取り組み
通信への課題発掘ワークショップ 「5Gイノベーション」の取り組み通信への課題発掘ワークショップ 「5Gイノベーション」の取り組み
通信への課題発掘ワークショップ 「5Gイノベーション」の取り組みVirtualTech Japan Inc.
 
Kubernetes雑にまとめてみた 2019年12月版
Kubernetes雑にまとめてみた 2019年12月版Kubernetes雑にまとめてみた 2019年12月版
Kubernetes雑にまとめてみた 2019年12月版VirtualTech Japan Inc.
 
OpenStackを使用したGPU仮想化IaaS環境 事例紹介
OpenStackを使用したGPU仮想化IaaS環境 事例紹介OpenStackを使用したGPU仮想化IaaS環境 事例紹介
OpenStackを使用したGPU仮想化IaaS環境 事例紹介VirtualTech Japan Inc.
 
5Gにまつわる3つの誤解 - 5G×ライブコンテンツ:5G時代の双方向コンテンツとは
5Gにまつわる3つの誤解 - 5G×ライブコンテンツ:5G時代の双方向コンテンツとは5Gにまつわる3つの誤解 - 5G×ライブコンテンツ:5G時代の双方向コンテンツとは
5Gにまつわる3つの誤解 - 5G×ライブコンテンツ:5G時代の双方向コンテンツとはVirtualTech Japan Inc.
 
KubeCon China & MWC Shangai 出張報告
KubeCon China & MWC Shangai 出張報告KubeCon China & MWC Shangai 出張報告
KubeCon China & MWC Shangai 出張報告VirtualTech Japan Inc.
 
NTT Docomo's Challenge looking ahead the world pf 5G × OpenStack - OpenStack最...
NTT Docomo's Challenge looking ahead the world pf 5G × OpenStack - OpenStack最...NTT Docomo's Challenge looking ahead the world pf 5G × OpenStack - OpenStack最...
NTT Docomo's Challenge looking ahead the world pf 5G × OpenStack - OpenStack最...VirtualTech Japan Inc.
 
Introduction of private cloud in LINE - OpenStack最新情報セミナー(2019年2月)
Introduction of private cloud in LINE - OpenStack最新情報セミナー(2019年2月)Introduction of private cloud in LINE - OpenStack最新情報セミナー(2019年2月)
Introduction of private cloud in LINE - OpenStack最新情報セミナー(2019年2月)VirtualTech Japan Inc.
 
Multi-access Edge Computing(MEC)における”Edge”の定義
Multi-access Edge Computing(MEC)における”Edge”の定義Multi-access Edge Computing(MEC)における”Edge”の定義
Multi-access Edge Computing(MEC)における”Edge”の定義VirtualTech Japan Inc.
 
Edge Computing Architecture using GPUs and Kubernetes
Edge Computing Architecture using GPUs and KubernetesEdge Computing Architecture using GPUs and Kubernetes
Edge Computing Architecture using GPUs and KubernetesVirtualTech Japan Inc.
 

Mais de VirtualTech Japan Inc. (20)

5G時代のアプリケーションとは 〜 5G+MECを活用した低遅延アプリの実現へ 〜
5G時代のアプリケーションとは 〜 5G+MECを活用した低遅延アプリの実現へ 〜5G時代のアプリケーションとは 〜 5G+MECを活用した低遅延アプリの実現へ 〜
5G時代のアプリケーションとは 〜 5G+MECを活用した低遅延アプリの実現へ 〜
 
エンジニアが幸せになれる会社を目指します
エンジニアが幸せになれる会社を目指しますエンジニアが幸せになれる会社を目指します
エンジニアが幸せになれる会社を目指します
 
KubeVirt 201 How to Using the GPU
KubeVirt 201 How to Using the GPUKubeVirt 201 How to Using the GPU
KubeVirt 201 How to Using the GPU
 
KubeVirt 101
KubeVirt 101KubeVirt 101
KubeVirt 101
 
今からはじめる! Linuxコマンド入門
今からはじめる! Linuxコマンド入門今からはじめる! Linuxコマンド入門
今からはじめる! Linuxコマンド入門
 
5G時代のアプリケーション開発とは - 5G+MECを活用した低遅延アプリの実現へ
5G時代のアプリケーション開発とは - 5G+MECを活用した低遅延アプリの実現へ5G時代のアプリケーション開発とは - 5G+MECを活用した低遅延アプリの実現へ
5G時代のアプリケーション開発とは - 5G+MECを活用した低遅延アプリの実現へ
 
Kubernetes雑にまとめてみた 2020年8月版
Kubernetes雑にまとめてみた 2020年8月版Kubernetes雑にまとめてみた 2020年8月版
Kubernetes雑にまとめてみた 2020年8月版
 
MS Teams + OBS Studio (+ OBS Mac Virtual Camera) でのオンラインセミナーのプロトタイプの構築
MS Teams + OBS Studio (+ OBS Mac Virtual Camera) でのオンラインセミナーのプロトタイプの構築MS Teams + OBS Studio (+ OBS Mac Virtual Camera) でのオンラインセミナーのプロトタイプの構築
MS Teams + OBS Studio (+ OBS Mac Virtual Camera) でのオンラインセミナーのプロトタイプの構築
 
5G時代のアプリケーション開発とは
5G時代のアプリケーション開発とは5G時代のアプリケーション開発とは
5G時代のアプリケーション開発とは
 
hbstudy#88 5G+MEC時代のシステム設計
hbstudy#88 5G+MEC時代のシステム設計hbstudy#88 5G+MEC時代のシステム設計
hbstudy#88 5G+MEC時代のシステム設計
 
通信への課題発掘ワークショップ 「5Gイノベーション」の取り組み
通信への課題発掘ワークショップ 「5Gイノベーション」の取り組み通信への課題発掘ワークショップ 「5Gイノベーション」の取り組み
通信への課題発掘ワークショップ 「5Gイノベーション」の取り組み
 
Kubernetes雑にまとめてみた 2019年12月版
Kubernetes雑にまとめてみた 2019年12月版Kubernetes雑にまとめてみた 2019年12月版
Kubernetes雑にまとめてみた 2019年12月版
 
OpenStackを使用したGPU仮想化IaaS環境 事例紹介
OpenStackを使用したGPU仮想化IaaS環境 事例紹介OpenStackを使用したGPU仮想化IaaS環境 事例紹介
OpenStackを使用したGPU仮想化IaaS環境 事例紹介
 
Docker超入門
Docker超入門Docker超入門
Docker超入門
 
5Gにまつわる3つの誤解 - 5G×ライブコンテンツ:5G時代の双方向コンテンツとは
5Gにまつわる3つの誤解 - 5G×ライブコンテンツ:5G時代の双方向コンテンツとは5Gにまつわる3つの誤解 - 5G×ライブコンテンツ:5G時代の双方向コンテンツとは
5Gにまつわる3つの誤解 - 5G×ライブコンテンツ:5G時代の双方向コンテンツとは
 
KubeCon China & MWC Shangai 出張報告
KubeCon China & MWC Shangai 出張報告KubeCon China & MWC Shangai 出張報告
KubeCon China & MWC Shangai 出張報告
 
NTT Docomo's Challenge looking ahead the world pf 5G × OpenStack - OpenStack最...
NTT Docomo's Challenge looking ahead the world pf 5G × OpenStack - OpenStack最...NTT Docomo's Challenge looking ahead the world pf 5G × OpenStack - OpenStack最...
NTT Docomo's Challenge looking ahead the world pf 5G × OpenStack - OpenStack最...
 
Introduction of private cloud in LINE - OpenStack最新情報セミナー(2019年2月)
Introduction of private cloud in LINE - OpenStack最新情報セミナー(2019年2月)Introduction of private cloud in LINE - OpenStack最新情報セミナー(2019年2月)
Introduction of private cloud in LINE - OpenStack最新情報セミナー(2019年2月)
 
Multi-access Edge Computing(MEC)における”Edge”の定義
Multi-access Edge Computing(MEC)における”Edge”の定義Multi-access Edge Computing(MEC)における”Edge”の定義
Multi-access Edge Computing(MEC)における”Edge”の定義
 
Edge Computing Architecture using GPUs and Kubernetes
Edge Computing Architecture using GPUs and KubernetesEdge Computing Architecture using GPUs and Kubernetes
Edge Computing Architecture using GPUs and Kubernetes
 

GPU Container as a Serviceを実現するための最新OSS徹底比較 - OpenStack最新情報セミナー 2017年7月

  • 1. Copyright © NTT Communications Corporation. Transform your business, transcend expectations with our technologically advanced solutions. GPU Container as a Service を 実現するための最新OSS徹底比較 NTTコミュニケーションズ 技術開発部 松本赳明
  • 2. Copyright © NTT Communications Corporation. 1 今回の発表内容 • OpenStack Days Tokyo Day 2 (July 21) – GPU Container as a Serviceを実現するための最新OSS徹底比較 • スライド – https://www.slideshare.net/td-nttcom/gpu-container-as-a-service-oss
  • 3. Copyright © NTT Communications Corporation. 2 自己紹介 松本 赳明 Takeaki Matsumoto takeaki.matsumoto@ntt.com 技術開発部 クラウド基盤ソフトウェア検証, プライベートクラウド運用...
  • 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. 4 Agenda 1. 背景&目的 2. GPU環境の望ましい要件 3. コンテナ技術関連の各種OSSツール比較 4. OpenStack連携によるマルチテナントの実現 5. GPU Container as a Service つくってみた
  • 6. 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を用いた学習・検証に対する社内ニーズの高まり 5 背景
  • 7. Copyright © NTT Communications Corporation. ● 高速な並列データ処理が可能なGPUの需要がある ○ 学習や解析などのワークロードは非常に高負荷 ● 一方でGPUの調達における予算や時間がネックになることも... ○ クラウドサービスを利用する事により解決出来る ○ 主要クラウドプロバイダは既にGPUインスタンスの提供を開始 ■ Azure、AWS、GCP、Bluemix (Bare) 6 GPU利用のトレンド
  • 8. Copyright © NTT Communications Corporation. Node 4 Node 3 Node 2 Node 1 7 目的 社内向けに検証環境として GPU as a Service を提供する GPU GPU GPU GPUリソースの指定 GPUリソースの管理と スケジューリング GPU GPU as a Service
  • 9. Copyright © NTT Communications Corporation. ● クラウド基盤は OpenStack を利用 ● VMインスタンスとしてGPUリソースを提供 ○ VMにGPUを認識させるため、PCI Passthrough を利用 ○ GPUリソースとして、3種類の NVIDIA製 GPU を利用 ● 主に機械学習やディープラーニングなどに利用されている 8 社内プライベートクラウドでのGPU提供の現状
  • 10. Copyright © NTT Communications Corporation. 9 VMでのGPU提供の問題 1. 機械学習用の環境構築のユーザ負担が大きい ○ VM毎に適切なGPUデバイスドライバをインストールする必要がある ○ デバイスドライバ/CUDA/アプリ間でバージョン整合性を保つ必要がある 2. 特に処理が無い時でもGPUリソースが無駄に占有される ○ 社内向けの検証環境で提供可能なGPU数が少ないため 3. プロバイダ側でGPUデバイスの使用状態を監視出来ない ○ GPUデバイスを VM へ Passthrough しているため
  • 11. Copyright © NTT Communications Corporation. 1. ユーザの環境構築が容易 2. GPUリソースを使用後に迅速に解放出来る 3. GPUリソースの使用状況を監視出来る 10 コンテナ技術による問題解決 GPU as a Service 実現のため コンテナ技術 を活用
  • 12. Copyright © NTT Communications Corporation. 11 コンテナ技術とは 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
  • 13. Copyright © NTT Communications Corporation. 12 Agenda 1. 背景&目的 2. GPU環境の望ましい要件 3. コンテナ技術関連の各種OSSツール比較 4. OpenStack連携によるマルチテナントの実現 5. GPU Container as a Service つくってみた
  • 14. Copyright © NTT Communications Corporation. ● As a Service として利用できる ○ 即時に利用可能・マルチテナント対応 ● GPU環境のデプロイが容易である ○ GPU数など幾つかの事項を指定するのみで良い ○ コンテナ技術でデファクトスタンダードのDockerが利用できる 13 GPU as a Service の要件 ~ユーザ側~ GPU node User GaaS GPU数を指定 Dockerコンテナ作成
  • 15. Copyright © NTT Communications Corporation. 14 ● GPU搭載サーバをクラスタとして管理できる ○ PoC上のGPUクラスタは以下の NVIDIA製 GPU を利用している ● Tesla K2, Tesla K10, Tesla P100 ● コンテナ間で GPU の分離ができる GPU as a Service の要件 ~プロバイダ側~ 1/2 GPU 複数GPUの割り当て GPU GPUの分離 GPU GPU
  • 16. Copyright © NTT Communications Corporation. ● 効率的にGPUリソースを扱う事が出来る ○ コンテナのライフサイクルをタスクの種別毎に分類 15 GPU as a Service の要件 ~プロバイダ側~ 2/2 Temporary Batch task ● タスクを一度だけ実行, e.g. training task ● タスク終了後にコンテナ停止, GPUを解放 Long running Service task ● ウェブサービス, e.g. Jupyter Notebook ● コンテナの停止までGPUは解放されない User タスクの種類を指定
  • 17. Copyright © NTT Communications Corporation. 16 Agenda 1. 背景&目的 2. GPU環境の望ましい要件 3. コンテナ技術関連の各種OSSツール比較 4. OpenStack連携によるマルチテナントの実現 5. GPU Container as a Service つくってみた
  • 18. Copyright © NTT Communications Corporation. 17 前提知識 GPUコンテナを実現するための要素技術 Docker Nvidia Docker
  • 19. Copyright © NTT Communications Corporation. ● Docker 社による コンテナ管理プラットフォーム ○ 簡単なコマンドでアプリケーション環境をデプロイ出来る $ docker run image_name -p 80:80 ● コンテナ毎に個々のデバイスを分離出来る ● ユーザが自身で用意したイメージを利用出来る ○ アプリの実行に必要なライブラリ等を纏めたもの 18 Docker
  • 20. Copyright © NTT Communications Corporation. 19 Nvidia Docker ● DockerからGPUを扱う事を容易にする為のツール ○ コンテナへGPUリソースを割り当てる事が出来る $ NV_GPU=0,1 nvidia-docker run nvidia/cuda nvidia-smi ● Deep Learning 用のイメージが公式で提供されている ○ nvidia/cuda など ○ CUDA Toolkit (SDK) を包含
  • 21. Copyright © NTT Communications Corporation. Host ContainerVM 20 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)
  • 22. Copyright © NTT Communications Corporation. Host ContainerVM 21 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 を監視可
  • 23. Copyright © NTT Communications Corporation. • サービス提供の為に COE (Container Orchestration Engine) が必要 – GPU サーバ群をクラスタとして管理・提供する必要がある – 効率的にGPUリソースを提供する必要がある 22 コンテナ関連OSSツールの比較 GPU as a Service の適切な実現手段となる 様々なコンテナ関連OSSツールの調査・検証を実施 OpenStack Zun Docker Swarm / Swarm Mode Apache Mesos Kubernetes
  • 24. Copyright © NTT Communications Corporation. 23 コンテナ関連OSSツールの検証項目 検証項目を以下のように設定 GPUクラスタ 管理 GPUの指定 複数割り当て GPUの分離 Docker サポート バッチタスク 実行可能か OpenStackZun DockerSwarm / SwarmMode mesos Kubernetes
  • 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 ・各コンテナへ異なるGPUを割り当て可能 ・ビジーなGPUは他コンテナへ割り当て不可
  • 27. Copyright © NTT Communications Corporation. 26 コンテナ関連OSSツールの検証項目 検証項目を以下のように設定 GPUクラスタ 管理 GPUの指定 複数割り当て GPUの分離 Docker サポート バッチタスク 実行可能か OpenStackZun DockerSwarm / SwarmMode mesos Kubernetes ・コンテナ内部のプロセスが停止時に  自動的にコンテナが停止する
  • 28. Copyright © NTT Communications Corporation. • OpenStack 上でコンテナを管理するためのツール • OpenStack内部で基本的なコンテナの制御 (i.e. CRUD) のみ提供 27 OpenStack Zun Zun の マスコットキャラクタ
  • 29. Copyright © NTT Communications Corporation. ● GPUリソースがサポートされていない ○ Docker に “CpuShares” and “Memory” パラメータのみ渡す事が可能 ○ GPU対応の話題がコミュニティ側で挙がっていない 28 OpenStack Zun OpenStack Zun は Dockerサポート 以外の 要件を満たしていない
  • 30. Copyright © NTT Communications Corporation. 29 OpenStack Zun の検証結果 GPUクラスタ 管理 GPUの指定 複数割り当て GPUの分離 Docker サポート バッチタスク 実行可能か OpenStackZun ✗ ✗ ✗ ✔ ✗ DockerSwarm / SwarmMode mesos Kubernetes
  • 31. Copyright © NTT Communications Corporation. Docker Swarm / swarm mode 30 ● Docker ネイティブなクラスタ管理ツール ● Dockerが展開されたマシン複数台から簡単にクラスタを構築出来る ● Docker v1.12 以上でDockerに標準で組み込まれている Internal Distributed State Store Manager (follower) Manager (leader) Manager (follower) Worker Worker Worker Worker Worker Worker
  • 32. Copyright © NTT Communications Corporation. 31 Docker Swarm / swarm mode ● Docker Swarm は GPU をサポートしていない ○ 現在もGPU対応が Docker Project において進められている ■ https://github.com/docker/docker/issues/23917 ○ Generic Resourceという仕組みが入ったがまだ機能不足 ■ https://github.com/docker/swarmkit/pull/2090 ● Nvidia Docker も同様にサポートされていない ○ GPUコンテナに必要なライブラリ群をマウント出来ない Docker Swarm / swarm mode は “GPUクラスタ管理” を満たしていない
  • 33. Copyright © NTT Communications Corporation. 32 Docker Swarm / Swarm Mode の検証結果 GPUクラスタ 管理 GPUの指定 複数割り当て GPUの分離 Docker サポート バッチタスク 実行可能か OpenStackZun ✗ ✗ ✗ ✔ ✗ DockerSwarm / SwarmMode ✗ ✗ ✗ ✔ ✗ mesos Kubernetes
  • 34. Copyright © NTT Communications Corporation. 33 Mesos ● Apacheソフトウェア財団によるクラスタ管理ツール ● 効率的かつ動的なリソースの分配や共有が可能 ● 分散アプリケーションやフレームワークを Mesos Master が制御 ○ e.g. Marathon, Chronos, Hadoop… ● 二種類のコンテナに対応 ○ Mesosコンテナ, Dockerコンテナ
  • 35. Copyright © NTT Communications Corporation. 34 ● Mesos の GPU サポート状況 ○ Mesos v1.0.0 以上で Nvidia GPU に対応している ○ CPU や Memoryと同様に GPU も管理する事が出来る Mesos
  • 36. Copyright © NTT Communications Corporation. 35 Mesos Task Type Frameworks GPU + Mesos GPU + Docker Batch Chronos ✗ N/A Metronome ✗ N/A Service Aurona ✔ ✗ Marathon ✔ ✗ ● フレームワークとコンテナの種類によって対応状況が異なる ○ DockerコンテナではGPUを扱えない
  • 37. Copyright © NTT Communications Corporation. 36 Apache Mesos の検証結果 GPUクラスタ 管理 GPUの指定 複数割り当て GPUの分離 Docker サポート バッチタスク 実行可能か OpenStackZun ✗ ✗ ✗ ✔ ✗ DockerSwarm / SwarmMode ✗ ✗ ✗ ✔ ✗ Mesos ✔ ✔ ✔ ▲ ✗ Kubernetes
  • 38. Copyright © NTT Communications Corporation. 37 Kubernetes ● Google による Container Orchestration Engine (COE) ● コンテナのクラスタリング・オートスケーリング等の様々な機能を提供 ● コミュニティも活発で頻繁に議論や機能の開発が行われている
  • 39. Copyright © NTT Communications Corporation. ● コンテナは Pod と呼ばれる単位で管理される ○ Podは単一もしくは複数のコンテナで構成される ○ Pod単位で CRUD 等の様々な処理が行われる タスク種別毎の Pod 管理方法 38 Kubernetes Node A Pod A Pod B Service Task : Pod, ReplicaSet Deployment など Batch Task : Job など
  • 40. Copyright © NTT Communications Corporation. ● コンテナの CRUD 管理 は マニフェストファイル で行う ○ Pod 及び Pod 内のコンテナの情報を定義する ■ Podの管理方法 (Kind) ■ コンテナ・コンテナイメージ名など ○ yaml・jsonの各種形式で定義可能 ○ CLI (kubectl) や WebUI から利用可能 39 Kubernetes apiVersion: v1 kind: Pod metadata: name: nginx spec: conatiners: - name: nginx image: nginx ports: - containerPort: 80 User Master Node Pod Minion NodeManifest
  • 41. 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数を検出できる 40 Kubernetes v1.6系を利用
  • 42. Copyright © NTT Communications Corporation. ● 複数GPUを単一のコンテナに割り当て可能 41 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]
  • 43. Copyright © NTT Communications Corporation. ● コンテナ間でGPUの分離が可能 42 Kubernetes
  • 44. Copyright © NTT Communications Corporation. ● バッチタスクに対応 43 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の情報 (終了時)
  • 45. Copyright © NTT Communications Corporation. 44 検証結果 GPUクラスタ 管理 GPUの指定 複数割り当て GPUの分離 Docker サポート バッチタスク 実行可能か OpenStackZun ✗ ✗ ✗ ✔ ✗ DockerSwarm / SwarmMode ✗ ✗ ✗ ✔ ✗ mesos ✔ ✔ ✔ ▲ ✗ Kubernetes ✔ ✔ ✔ ✔ ✔
  • 46. Copyright © NTT Communications Corporation. 45 Agenda 1. 背景&目的 2. GPU環境の望ましい要件 3. コンテナ技術関連の各種OSSツール比較 4. OpenStack連携によるマルチテナントの実現 5. GPU Container as a Service つくってみた
  • 47. Copyright © NTT Communications Corporation. Kubernetes でのマルチテナント実現手法は 2種類 ある  方法1.OpenStack のテナントごとにk8sをデプロイする - 1-1 OpenStack Magnumでデプロイ - 1-2 OpenStack Heatでデプロイ  方法2.Kubernetes の認証・認可に OpenStack Keystone を用いる 46 Kubernetes を用いたマルチテナントの実現 OpenStack Tenant A k8s Tenant B k8s OpenStack Tenant A Tenant B Kubernetes NamespaceA NamespaceB 方法1 方法2
  • 48. Copyright © NTT Communications Corporation. ● OpenStack 上で COE のクラスタ環境を簡単に構築してくれるコンポーネント ○ Kubernetes や Mesos などに対応している ● OpenStack 環境内に Kubernetes クラスタの構築が可能 ○ OpenStack Cinder や Octavia (LBaaS) 等と連携出来る ○ 後から 容易に Minion Node 数を増減出来る 47 方法1-1 Magnum Tenant A Magnum API Tenant B
  • 49. Copyright © NTT Communications Corporation. 48 • 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
  • 50. Copyright © NTT Communications Corporation. • OpenStack 上で オーケストレーション を行うコンポーネント – Heat Template に基づいて VM や NW などを構築出来る – k8s が公式メンテナンスしている Heat Template がある • k8s 1.6 向けのテンプレートが存在するが ... • ユーザ自身が柔軟なクラスタ環境を構築出来る – ユーザ側で Heat Template を直接編集出来る • Heat Template を編集する事で Nvidia Driver のインストール自動化も可能 • k8s 1.6 を構築可能か検証を行った – 現状の Heat Templateでは構築出来ない • 必要な各種ファイルの設定や配置が適切でない 49 方法1-2 Heat
  • 51. Copyright © NTT Communications Corporation. 方法2 Keystone 連携 ● 認証処理について ○ Kubernetes のユーザ認証を Keystone へ移譲出来る ○ OpenStackの既存ユーザを用いた認証が可能 ● 認可処理について ○ OpenStack のテナント と Namespace の対応付けの設定が必要 ■ Kubernetes は Namespace と呼ばれるテナント分離の仕組みがある ■ Kubernetes の 認可の仕組み (RBACやABAC) を利用する ○ Keystone のみで認可を実現することは現状出来ない ■ https://github.com/Kubernetes/Kubernetes/pull/25624 50
  • 52. Copyright © NTT Communications Corporation. マルチテナント実現手法の比較 ● k8s 1.6 対応 の Heat 及び Keystone の2手法を以下の観点で比較し、 検証環境における適切なマルチテナント実現方法を選択する ○ GPUリソースの分離 ○ プロバイダ視点でのGPU監視 ○ コンテナ配備先の分離 ○ ネットワークの分離 ○ OpenStack 上のVMとの通信 51
  • 53. Copyright © NTT Communications Corporation. GPUリソース の分離 プロバイダ視点 GPUの監視 コンテナ 配備先の分離 ネットワークの 分離 OpenStack VMとの通信 方法1 OpenStackの テナントごとに k8sを展開 テナント単位 困難 テナント単位 テナント単位 (VXLAN, GRE…) Tenant Network 内 方法2 k8s 認証/認可に Keystone 全テナント 共有 可能 全テナント 共有 全テナント 共有 (Flat + Iptables) Floating IP 経由 52 マルチテナント実現手法の比較 ● GPUリソースをなるべく全体で共有したい ● GPUリソースをプロバイダ側で監視したい ● 厳密にNW等が分離されている必要がない ➡ 方法2を選択 今回の検証環境の要件
  • 54. Copyright © NTT Communications Corporation. 53 Agenda 1. 背景&目的 2. GPU環境の望ましい要件 3. コンテナ技術関連の各種OSSツール比較 4. OpenStack連携によるマルチテナントの実現 5. GPU Container as a Service つくってみた
  • 55. Copyright © NTT Communications Corporation. 複数台のGPU搭載サーバで Kubernetes のクラスタを組んでいる 54 検証環境の概念図 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
  • 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 宣伝 https://ntt-developers.github.io/ntt-tech-conference/02/
  • 65. Copyright © NTT Communications Corporation. 64 ご清聴ありがとうございました
  • 66. Copyright © NTT Communications Corporation. 65 Demo Kubernetes 上で Digits (GPU) を実行してみた