gtc japan 2017

20
AIクラウドのソフトウェアエコシステム 構築に向けた産総研の取り組み 産業技術総合研究所 ⼈⼯知能研究センター ⼈⼯知能クラウド研究チーム 佐藤

Upload: hitoshi-sato

Post on 28-Jan-2018

220 views

Category:

Engineering


1 download

TRANSCRIPT

Page 1: GTC Japan 2017

AIクラウドのソフトウェアエコシステム構築に向けた産総研の取り組み

産業技術総合研究所⼈⼯知能研究センター ⼈⼯知能クラウド研究チーム

佐藤 仁

Page 2: GTC Japan 2017

⼈⼯知能技術の発展にはアルゴリズム×ビッグデータ×計算基盤

の⼀体的な進展が不可⽋

2

ビッグデータ

アルゴリズム

計算基盤

深層学習, 機械学習, etc.

クラウド, スパコン, etc.

研究開発・実証・橋渡しを⾒据えたAIプラットフォームの構築・展開

Page 3: GTC Japan 2017

スパコンの新しい応⽤: HPCとAI/ビッグデータ処理の融合• ⼤規模グラフ処理

– Graph500:⼤規模グラフの探索能⼒でスーパーコンピュータのビッグデータ処理を評価する新しいベンチマーク

• ⼈⼯知能・機械学習– コンピュータがデータからルールや知識

を⾃動的に学習ex. 画像・映像・⾳声認識、⾃動運転、バイオ・ヘルスケア、ロボット・ドローン

on the Graph500 Ranking of Supercomputers with38621.4 GE/s on Scale 40

on the 10th Graph500 list published at the InternationalSupercomputing Conference, July 12, 2015.

Congratulations from the Graph500 Executive Committee

No.1

RIKEN Advanced Institute for ComputationalScience (AICS)’s K computer

is ranked

Kronecker graph

A: 0.57, B: 0.19C: 0.19, D: 0.05

TSUBAME-KFCTSUBAME3.0プロトタイプ

⾼度な学習のためにはマルチペタフロップス/バイト級の計算・ストレージ性能が必要

⼈⼯的に⽣成された10万時間の⾳声データを基に学習 [Baidu2015]

類似したアーキテクチャ

GPUによるアクセラレーション

約1兆頂点、16兆辺のグラフ82,944台, 663,552プロセスで0.45秒で処理

Page 4: GTC Japan 2017

4

産総研AIクラウド(通称AAIC)とは?• 400x NVIDIA Tesla P100s and Infiniband EDR accelerate various AI workloads

including ML (Machine Learning) and DL (Deep Learning).• Advanced data analytics leveraged by 4PiB shared Big Data Storage and Apache

Spark w/ its ecosystem.

AI Computation System Large Capacity Storage SystemComputation Nodes (w/GPU) x50• Intel Xeon E5 v4 x2• NVIDIA Tesla P100 (NVLink) x8• 256GiB Memory, 480GB SSDComputation Nodes (w/o GPU) x68• Intel Xeon E5 v4 x2• 256GiB Memory, 480GB SSD

Mgmt & Service Nodes x16

Interactive Nodes x2

400 Pascal GPUs30TB Memory

56TB SSD DDN SFA14K• File server (w/10GbEx2,

IB EDRx4) x4• 8TB 7.2Krpm NL-SAS

HDD x730• GRIDScaler (GPFS)

Computation NetworkMellanox CS7520 Director Switch• EDR (100Gbps) x216

Bi-direction 200GbpsFull bi-section bandwidth

Service and Management Network

IB EDR (100Gbps) IB EDR (100Gbps)

GbE or 10GbE GbE or 10GbE

Firewall• FortiGate 3815D x2• FortiAnalyzer 1000E x2

UTM Firewall40-100Gbps class

10GbE

SINET5Internet

Connection10-100GbE

>4PiB effectiveRW100GB/s

既存のGPUスパコンに類似した構成

Page 5: GTC Japan 2017

GPU計算ノードの構成• NVIDIA TESLA P100 x 8• Intel Xeon E5-2630 v4 x 2 ソケット

– ソケットあたり10コア– Hyper Threading (HT) で動作– ノードあたり40コアにみえる

• 256GiBのメモリ• 480GBのSSD• EDR Infiniband

– 計算ノード– GPFSストレージへ接続

5

Machine (256GB total)

NUMANode P#0 (128GB)

Package P#0

L3 (25MB)

L2 (256KB)

L1d (32KB)

L1i (32KB)

Core P#0

PU P#0

PU P#20

L2 (256KB)

L1d (32KB)

L1i (32KB)

Core P#1

PU P#1

PU P#21

L2 (256KB)

L1d (32KB)

L1i (32KB)

Core P#2

PU P#2

PU P#22

L2 (256KB)

L1d (32KB)

L1i (32KB)

Core P#3

PU P#3

PU P#23

L2 (256KB)

L1d (32KB)

L1i (32KB)

Core P#4

PU P#4

PU P#24

L2 (256KB)

L1d (32KB)

L1i (32KB)

Core P#8

PU P#5

PU P#25

L2 (256KB)

L1d (32KB)

L1i (32KB)

Core P#9

PU P#6

PU P#26

L2 (256KB)

L1d (32KB)

L1i (32KB)

Core P#10

PU P#7

PU P#27

L2 (256KB)

L1d (32KB)

L1i (32KB)

Core P#11

PU P#8

PU P#28

L2 (256KB)

L1d (32KB)

L1i (32KB)

Core P#12

PU P#9

PU P#29

PCI 10de:15f9

card1

renderD128

PCI 10de:15f9

card2

renderD129

PCI 10de:15f9

card3

renderD130

PCI 10de:15f9

card4

renderD131

PCI 8086:8d62

sda

PCI 1a03:2000

card0

controlD64

PCI 8086:8d02

NUMANode P#1 (128GB)

Package P#1

L3 (25MB)

L2 (256KB)

L1d (32KB)

L1i (32KB)

Core P#0

PU P#10

PU P#30

L2 (256KB)

L1d (32KB)

L1i (32KB)

Core P#1

PU P#11

PU P#31

L2 (256KB)

L1d (32KB)

L1i (32KB)

Core P#2

PU P#12

PU P#32

L2 (256KB)

L1d (32KB)

L1i (32KB)

Core P#3

PU P#13

PU P#33

L2 (256KB)

L1d (32KB)

L1i (32KB)

Core P#4

PU P#14

PU P#34

L2 (256KB)

L1d (32KB)

L1i (32KB)

Core P#8

PU P#15

PU P#35

L2 (256KB)

L1d (32KB)

L1i (32KB)

Core P#9

PU P#16

PU P#36

L2 (256KB)

L1d (32KB)

L1i (32KB)

Core P#10

PU P#17

PU P#37

L2 (256KB)

L1d (32KB)

L1i (32KB)

Core P#11

PU P#18

PU P#38

L2 (256KB)

L1d (32KB)

L1i (32KB)

Core P#12

PU P#19

PU P#39

PCI 8086:1528

enp129s0f0

PCI 8086:1528

enp129s0f1

PCI 10de:15f9

card5

renderD132

PCI 10de:15f9

card6

renderD133

PCI 10de:15f9

card7

renderD134

PCI 10de:15f9

card8

renderD135

PCI 15b3:1013

ib0 mlx5_0

Indexes: physical

Date: Tue May 30 11:32:43 2017

MEM

CPU Cores

GPUs

Infiniband HBA

SSD

Page 6: GTC Japan 2017

現状のAIクラウドの利⽤法(≒ スパコンの利⽤法)• ジョブスケジューラの存在

– スクリプトファイルの作成– ジョブの投⼊

• ユーザ権限でのプログラム実⾏– システムに予めインストールされた

ソフトウェアの利⽤• GPUランタイム・ライブラリCUDA,

CuDNN, NCCL• 並列分散処理ソフトウェア(MPI)

• 共有ストレージの利⽤– 複数ユーザで共有された並列ファイルシステム

6

/home ��������(GPFS)

Job Job Job Job

NQS

Submit

Scheduling

script file

$ qsub <option> script_filename

inter-connect

SSH

( )

Page 7: GTC Japan 2017

AIアプリケーションの事例(Linuxコンテナ)• lang2program

– https://github.com/kelvinguu/lang2program

– ACL 2017 paper内で⽤いられた実装– Dockerfileの提供

• Tensorflow, PostgresQL,Python pip Packages, etc.

• 依存関係のあるソフトウェアのインストールが⼤量に発⽣

7

HPC環境(スパコン)で動くか?• Dockerの⾮サポート

(セキュリティ上ホストのrootを与えることができない)• マニュアルにインストールすれば可能だが煩雑

Page 8: GTC Japan 2017

AIアプリケーションの事例(ファイルI/O)ImageNet-1kの対象とするファイルサイズの数と分布

学習データ テストデータ

8

サイズの⼩さなファイルへの⼤量アクセス→ 共有ファイルシステムが苦⼿なI/Oパターン(メタデータアクセス増)

Page 9: GTC Japan 2017

9

ユーザプログラム

数値計算ライブラリBLAS

ドメイン固有⾔語

デバッグ・ 性能プロファイル

MPI・OpenMP・CUDA/OpenCL

並列ファイルシステムLustre・GPFS

バッチジョブスケジューラ

Linux OS

InfiniBabdネットワーク

SAN+ローカルストレージ

X86+GPU/

アクセラレーター

仮想マシン・Linuxコンテナ

Ethernetネットワーク

ローカルノード

ストレージx86 CPU

分散ファイルシステムHDFS

MapReduceフレームワークSpark/Hadoop

ユーザプログラム

RDBPostgresQL

機械学習ライブラリ

MLlib/Mahout

グラフ処理ライブラリGraphX/Giraph

Java・Scala+統合開発環境

SQLクエリエンジンHive/Pig

CloudDB/NoSQLHbase/Cassandra/MondoDB

コーディネーションエンジンZooKeeper

Linux OS

既存クラウド 既存スパコンアプリケーション層

システムソフトウェア層

ハードウェア層

OS層

Fortran・C・C+++統合開発環境

• クラウドはプログラムの実⾏に対話的な操作が必要。• スパコンはバッチジョブによる実⾏のため不要。

• クラウドは利便性が⾼いプログラム⾔語を採⽤するも⾼速化には向かない。データ解析等頻繁にプログラムを書き換える利⽤に特化。

• スパコンはマシンの性能を活かせるプログラム⾔語を採⽤するも、プログラムが難しく⽣産性が低い。数値演算などコアな処理はあまりプログラムを書き換える必要がないため。

• クラウドはデータベース利⽤が多い。

• スパコンは数千・数万台の計算機向けにデバッグ・性能チューニングが必要。

• クラウドは仮想マシン・コンテナ技術による⽤途に応じた環境構築が可能。• スパコンは⾼速処理のためのベアメタル環境が主。

• クラウドはWebサーバ由来の技術、分散ストレージなどを採⽤。• スパコンは超広帯域・低遅延ネットワーク、共有ストレージ、GPUなどを採⽤。

AI/ビッグデータ処理の⾼速化が最重要だがソフトウェアエコシステムは皆無特に分散深層学習・強化学習、HPCと融合したワークロード等

既存のクラウドとスパコンで異なるソフトウェアエコシステム

Page 10: GTC Japan 2017

AIクラウドのためのソフトウェアエコシステム既存のクラウド・スパコンの両⽅の技術要素が必要

10

数値計算ライブラリ

BLAS/Matlab

デバッグ・ 性能プロファイル

MPI・OpenMP・CUDA/OpenCL

バッチジョブスケジューラ・ワークフロー

Linux OS

InfiniBabdネットワーク

SAN+ローカルストレージ

X86+GPU/アクセラレーター

Linuxコンテナ

分散ファイルシステム

HDFS

ユーザプログラム

RDBPostgresQL

機械学習ライブラリ

グラフ処理ライブラリ

Python, Jupyter Notebook, R etc.+統合開発環境

CloudDB/NoSQL

AIクラウド

アプリケーション層

OS層

深層学習ライブラリ

Webサービス

ビッグデータ処理カーネル

Sort etc.

Fortran・C・C++

ネイティブコード

並列ファイルシステムLustre・GPFS

システムソフトウェア層

ハードウェア層

• 分散深層学習をはじめとする各種フレームワークを簡単にバッチ処理や対話的な操作で利⽤

• 場合によってはウェブサービスの提供

• Python, Rなどのスクリプト⾔語、JupyterNodebookなどのフレームワークの利⽤

• MPI, OpenMP, CUDAを利⽤した並列処理、HPC由来の数値演算カーネル(BLAS),ビッグデータ処理カーネル(Sort, PrefixSum, Merge, SetIntersection)のサポート

• ⼤規模なパラメータサーベイ、ジョブの⻑時間実⾏、ワークフローのサポート

• 画像、映像、⾳声、テキストなど細粒度I/O, 秘匿性のあるデータへのアクセス

• Linuxコンテナのサポート

• スーパコンピュータ由来のInfiniband, GPUの利⽤、コモディティサーバの採⽤

Page 11: GTC Japan 2017

Singularity(ソフトウェアの名称です)

• Singularity– ⽶国LBLで開発中のHPC向けLinuxコンテナ

• http://singularity.lbl.gov/• https://github.com/singularityware/singularity• 修正BSDライセンス

– ユーザ権限でプログラムを実⾏、ストレージへアクセス• rootで動作するデーモンが不要• setuidでroot権限を与えたコマンドを実⾏

– Dockerイメージが利⽤可能• DockerHubと連携

– HPC系のソフトウェアスタックが利⽤可能• CUDA, MPI, Infiniband, etc.

11

Page 12: GTC Japan 2017

Singularityの利⽤イメージ

sudo singularity build –sandbox tmpdir/ Singularity

sudo singularity build –writable container.img Singularity

sudo singularity build container.img Singularity

sudo singularity build container.img docker://ubuntu

sudo singularity build container.img shub://ubuntu

Sandboxディレクトリの⽣成

コンテナイメージファイルの⽣成 sudo singularity shell –writable container.img

パッケージソフトウェアをインストール(yum, apt等)

Recipeファイルの利⽤

DockerHubの利⽤ (Dockerコンテナイメージ)

SingularityHubの利⽤(Singularityコンテナイメージ)

container.img

コンテナイメージファイルを転送

インタラクティブにコンテナイメージを作成

既存のコンテナイメージを利⽤して作成

予め定めた⼿順によりコンテナイメージを作成

singularity run container.img

singularity exec container.img …

singularity shell container.img

シェルを実⾏(shell)

コマンドを与えて実⾏(exec)

予め定義された動作を実⾏(run)

ユーザ環境 共有計算機環境

Page 13: GTC Japan 2017

分散深層学習フレームワーク向けコンテナイメージの構築

• ホスト側– GPUやIninibandを活⽤するために

デバイス関連ドライバ・ライブラリをコンテナ側へマウント

• GPUやIninibandの利⽤• nvidia-docker⽅式

• コンテナ側– ユーザランドライブラリの

インストール• CUDA, CuDNN, NCCL2, ibverbs, MPI

– 分散深層学習フレームワークのインストール

• 最適化されたビルド

13

Base Drivers, Libraries on Host

CUDADrivers

InfinibandDrivers

FilesystemLibraries

(GPFS, Lustre)

Userland Libraries on Container

CUDA CuDNN NCCL2 MPI(mpi4py)

Mount

ibverbs

Distributed Deep Learning Frameworks

Caffe2 ChainerMNDistributedTensorflowMXNet

Page 14: GTC Japan 2017

Singularityを⽤いた分散深層学習フレームワークの実⾏• 実験環境

– AAIC 8 nodes (64 GPUs)– フレームワーク: CHainerMN v1.0.0

• Chainer 2.1.0, Cupy 1.0.3, mpi4py 2.0.0, Python 3.6.1– コンテナ

• Singularity v2.3.1• Ubuntu 16.04, gcc-5.4.0, glibc-2.23

– ベアメタル• CentOS 7.3, gcc-4.8.5, glibc-2.17,

• 実験設定– データセット: Imagenet-1K– モデル: ResNet-50– 訓練:

• バッチサイズ: GPU毎に32, 32 x 64• 学習率: 30 epoch毎に0.1倍• 最適化: Momentum SGD (momentum=0.9)• Weight Decay: 0.0001• 訓練エポック数: 100

14

ベアメタル実⾏とほぼ遜⾊のない性能を確認

Page 15: GTC Japan 2017

AICloudModules: AI向けコンテナイメージ集• Base Images

– AIクラウド向けに最適化したOSイメージ• CUDA,CuDNN, NCCL, MPI, etc.• CUDA, Infiniband, GPFS等は

ホスト側のドライバを利⽤• DL Images

– 基盤となるOSイメージを拡張し、深層学習フレームワークやその他AIアプリケーションを導⼊

15

Base ImagesBase OS Images

incl. CUDA, CuDNN, NCCL2, MPI, Infiniband

DL ImagesImages for Deep Learning Frameworks

based on HPCBase

CentOSUbuntu

Base Drivers, Libraries on Host

GPU Infiniband GPFSMPI

Caffe2 ChainerMNDistributedTensorflowMXNet

公開に向けて準備中

CNTK

Page 16: GTC Japan 2017

Distributed Deep Learning Frameworks

Distributed Deep Learning Playgrounds:分散深層学習フレームワークの実⾏サンプル集

• 分散深層学習フレームワーク– CNTK, ChainerMN, Caffe2,

Tensorflow, MXNet• AIクラウドをはじめスパコン環境

での実⾏を想定したスクリプト– MPIでのリモートプロセス起動

• プロセスマッピング、MIMDモード– ジョブスケジューラを介したジョブ実⾏

• NQSII, Univa, etc.向けスクリプトファイル

16

Caffe2 ChainerMN

DistributedTensorflowMXNet

CNTK

MPI

OpenMPI Mvapich

Schedulers

NQSII Unvia Others

Page 17: GTC Japan 2017

細粒度I/Oのためのオンデマンドなデータストア• スケジューラと協調してオンデマンドに

分散ファイルシステムを構築– スケジューラが計算ノードを確保– 確保された計算ノードの

ローカルストレージ(SSD)を集約– 共有ファイルシステムから

ファイルステージング

• 分散ファイルシステム– BeeGFS On Demand

• https://www.beegfs.io/content/– Gfarm Burstbuffer

• http://oss-tsukuba.org/software/gfarm

17

Page 18: GTC Japan 2017

AIクラウドのソフトウェアエコシステム構築に向けて• ⽐較的運⽤が保守的なHPC環境でもAI/ビッグデータ処理

のためのソフトウェアスタックが容易に構成可能• いろいろある⽇本国内のGPU計算資源

→ 適切な⼿続き(HPCI, JHPCN,共同研究 etc.)を経れば利⽤可能– 東京⼤学 Reedbush H, L

(NVIDIA Tesla P100 x 2 per node x 128ノード)(NVIDIA Tesla P100 x 2 per node x 64ノード)

– 東京⼯業⼤学 TSUBAME3(NVIDIA Tesla P100 x 4 per node x 540ノード)

– 九州⼤学 Ito(NVIDIA Tesla P100 x 4 per node x 128ノード)

– 産総研 AAIC(NVIDIA Tesla P100 x 8 per node x 50ノード)

Page 19: GTC Japan 2017

まとめ

• 産総研AIクラウド(AAIC)の紹介• AIクラウドのためのソフトウェアエコシステムの必要性

– 既存のクラウドとスパコンの両⽅の技術要素が必要• 産総研の取り組み

– Singularityを⽤いたユーザ権限でのコンテナ実⾏– 分散深層学習フレームワークのコンテナ化– 細粒度I/Oのためのオンデマンドなデータストア構築

19

Page 20: GTC Japan 2017

ABCI AI Bridging Cloud InfrastructureThe worlds first large-scale Open AI Infrastructure

20

ABCI

Serving your AI needsin Spring 2018