GPU on OpenStack
GPUインターナルクラウド
のベストプラクティス
日本仮想化技術株式会社
VitrualTech.jp
玉置 伸行
2017/10/20
1
自己紹介
• 日本仮想化技術
• 通信事業者向けのSDN/NFVのITコンサルタント
• 「OpenStack最新情報セミナー」主催者
EnterpriseCloud.jp (ソリューションサイト)
https://EnterpriseCloud.jp
SlideShare
https://www.slideshare.net/virtualtech-jp
2
GPUの業務での適用範囲の拡大は続く
• NTTコミュニケーションズとプリファード・ネットワークスが
1024基のGPUを活用したプライベート・スーパーコンピュータ
を稼働 (2017/9/20)
• 東工大で2160基のGPUを活用したハイパフォーマンスコン
ピューティング(HPC)環境を今夏に稼働開始 (2017/2/17)
• AWS, Azure, GCPでGPUインスタンスをリリース、
NVIDIA Tesla P100 搭載のGPUインスタンス追加などライン
ナップを拡充
3
‘GPU’トレンドのおさらい
• HPCやVDIでのニーズの拡大
• 多くのGPUコアを利用し並列処理などを行うことで、省電力で高パフォー
マンスを実現可能
• GPUの活用が一般的になりつつあり、計算量が増加傾向
• 機械学習や深層学習(Deep Learning)での適用範囲の爆発的な拡大
• コネクテッドカー(常時ネットワーク接続されている自動車)やスマート
スピーカーなど、機械学習や深層学習を活用したアプリケーションが登場
• アノマリー検出(通常ではない状態の検出)などの領域でも活用が拡がる
4
GPUインフラの選択
• 機密情報などのデータを扱いたい 。最新の GPU を使いたい。
• インフラを集中管理し、簡単に使えて、GPU リソースを有効活用
GPU on OpenStack が GPU インフラの候補に
5
パブリッククラウド プライベートクラウド
規模
② 専用のHPCクラスタ
④ GPU搭載のワークステー
ション
① パブリッククラウドの
GPUインスタンス
③ GPU on OpenStack
自由度
GPU on OpenStackのサーバ構成
GPU搭載のコンピュートノードからGPUインスタンスを生成
6
OpenStack
コントローラ
ノード群
OpenStack
コンピュート
ノード
OpenStack上でGPUを動かすために
• 現在、PCI パススルーあるいは nvidia docker で利用可能
• PCI パススルーはOpenStackコンピュートノードに設定が必要
• KVM ベースの GPU インスタンスに GPU を割り当てる
• nvidia dockerは特別なハードウェア設定なしに使用できる
• OpenStackから Kubernetes や Docker コンテナを操作するた
めの仕組みを導入する必要がある
7
参考:OpenStackの仮想化・コンテナ対応
• OpenStack API で様々なコンピュート技術をコントロール
• ベアメタルサーバ+コンテナを OpenStack HEAT でプロビ
ジョニング、のような将来のユースケースに対応
8
OpenStack
KVM ESXi
Docker
Kubernetes Ironic
ハイパーバイザー対応 コンテナ対応 ベアメタル対応
どちらを選択するのがよいのか?
PCI パススルー nvidia docker
強み
多目的(VDI/HPC/DL)
で利用可能
環境構築が簡単
弱み 特別な環境設定が必要
• HPCやDLの用途に限定
• リソース競合の懸念
• OpenStackとの連携に課題
9
用途の合わせて選択するのがよいと考えます。
OpenStack + nvidia docker については NTT コミュニケーションズ様
が調査を行い発表しているので参考するとよいです。
https://www.slideshare.net/VirtualTech-JP/gpu-container-as-a-serviceoss-openstack-20177
PCI パススルーで実現する場合
10
KVM hypervisor
GPU Driver
App
VMM/KVM
IOMMU/Vt-d
PCI Express x16
Linux/Win OS
GPU Card GPU Card
Nova Compute
Nova Scheduler
Nova APILinux OS
Nova Conductor
pci-stub/vfio-pciGPU Driver
OpenStack
コントローラ
ノード
GPU
インス
タンス
OpenStack
コンピュート
ノード
①②
③ ④
環境構築のステップ① ハードウェア関連
1. IOMMU をオンにする
2. pci-stubもしくはvfioドライバを導入する
3. ブラックリストの設定
• GPUのドライバをブラックリストに追加してブートローダを再構築する
• ホスト OS のブート時に GPU デバイスを認識できなくする
4. 物理からのアンバインド
• ホストOSから切り離し、GPUインスタンスへバインドするために
pci-stub を設定する
11
環境構築のステップ② OpenStack関連
5. OpenStack の設定を変更
• /etc/nova/nova.conf の編集
• Nova API にて、PCI デバイスを利用可にして PCI 利用のリクエス
トを送れるようにする
• Nova Scheduler にて、pcipassthroughfilter を利用し GPU パスス
ルーされたコンピュートノードを選ぶ
• Nova Compute にて、GPU パススルーした GPU インスタンスを
pci_alias と pci_passthrought_whitelist に従い生成する
• フレーバーにPCIパススルーの設定(キー)を追加
12
環境構築についてのまとめ
• 本ドキュメントは太田さん作成の「GPU on OpenStack 〜GPU
インターナルクラウドのベストプラクティス」を参考に構成し
ています。構築の詳細な手順について本ドキュメントをご覧く
ださい。
https://www.slideshare.net/VirtualTech-JP/gpu-on-openstack-gpu-openstack-20177
13
デモ(GPUインスタンス作成)
14
デモ(Windows上でベンチマークツール)
15
お知らせ
• OpenStack最新情報セミナーの紹介
11/15(水)にサイバーエージェント様セミナールームにて
『OpenStack最新情報セミナー 2017年11月』を企画しています。
昼の部:CFPに落ちたが現地で話したかった俺の話(LT大会)
夜の部:OpenStack Summit Sydneyフィードバック会
https://openstack-update.connpass.com/event/68643/
16

GPU on OpenStack 〜GPUインターナルクラウドのベストプラクティス