機械学習とこれを支える並列計算 : 並列計算の現状と産業応用について

31
並列計算の現状と 産業応用について 伊野 文彦 大阪大学 大学院情報科学研究科 1 2017/2/10 IoTと機械学習シンポジウム

Upload: -laboratory-of-hi-think-corporation

Post on 11-Apr-2017

123 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: 機械学習とこれを支える並列計算 : 並列計算の現状と産業応用について

並列計算の現状と産業応用について

伊野 文彦大阪大学大学院情報科学研究科

1

2017/2/10IoTと機械学習シンポジウム

Page 2: 機械学習とこれを支える並列計算 : 並列計算の現状と産業応用について

並列計算とは?

1つの問題を複数の演算器で解くこと計算時間の短縮による新しい価値観や方法論の創出普通にできないことを可能にする!

例:超音速航空機による大阪・ニューヨーク間の日帰り旅行

2

Page 3: 機械学習とこれを支える並列計算 : 並列計算の現状と産業応用について

並列計算機の変遷

需要のある市場なくして並列計算機は開発できないNVIDIAによる民主化

並列でないプロセッサはもはやない

3

将来の超並列プロセッサを見据えた超並列アルゴリズムが必要

ベクトル機国家の特注品

PCクラスタWINTELユーザの汎用品

GPUPCゲーマーの特定汎用品

Page 4: 機械学習とこれを支える並列計算 : 並列計算の現状と産業応用について

身の回りの並列処理逐次処理で100年かかるもの

天気予報力学シミュレーションDNA解析機械学習

秒単位の応答を必要とするもの可視化やPCゲームウェブ検索手術支援自動運転

4

手術シミュレーション可視化やPCゲーム

DNA解析

機械学習

台風シミュレーション

Page 5: 機械学習とこれを支える並列計算 : 並列計算の現状と産業応用について

なぜGPUは速いのか?

高スループット指向のハードウェア・プログラミングモデル 高いメモリ帯域幅

短い道路(短いメモリ遅延)よりも車線の多い道路大事なことは絶え間なくデータを演算器に供給し続けること

高い並列性多くの車を道路に流せる逐次性の強いアルゴリズムはGPUでも遅い

制約のあるプログラミングモデルスレッド単位のプログラムを記述制約:一部のスレッド間の依存を禁止 → メモリ遅延を隠蔽しやすい

5

メモリ

演算器

Page 6: 機械学習とこれを支える並列計算 : 並列計算の現状と産業応用について

6

Digitally reconstructedradiograph (DRR)

Coordinates mapping by simulating X-ray projection in data space [Lemieux94]

SimulationDataspace

Realspace

X-raysource

X-ray image

Position of thereal patient canbe estimated ifthe DRRmatches theX-ray image

Projection

PreoperativeCT volume

2-D/3-D 位置合わせ

Page 7: 機械学習とこれを支える並列計算 : 並列計算の現状と産業応用について

GPU implementation7

GPU SideCPU SideCTvolume

2-Dimage

DRR

1) DRRgeneration

GradientDRR

Gradientimage

2) Gradient image generation

Reduction

3) NCC computationSimilarity

evaluation5 floating point numbers

P:Position &

orientation

Input data

P

Minimize communicationbetween CPU and GPU

Bottleneckoffloaded to GPU

UpdateP

Data transfer

Page 8: 機械学習とこれを支える並列計算 : 並列計算の現状と産業応用について

DRR generationGraphics-oriented solution: DRR generation from CT

volume is almost the same computation as volume rendering

We select the texture-based rendering method [Cullip93], which exploits the hardware components in the GPU

8

Viewing direction

CT volume

Volume slicing bytexture mapping

Screen

Slice composition byalpha blending

Page 9: 機械学習とこれを支える並列計算 : 並列計算の現状と産業応用について

Performance results

GPU-based system Laptop PC (Dell Precision M70)CPU: Pentium 4 2.8-GHzGPU: NVIDIA Quadro FX Go 1400

Video memory: 256MB

Cluster-based systemCluster of 64 PCsCPU: Dual Pentium 3 1-GHz Network: Myrinet-2000 (2 Gb/s)

9

1 GPU

1 CPU

128 CPUs

1) DRR (ms) 19 2940 1422) Gradient (ms) 4 142 7

3) NCC (ms) 28 9 46Total per iteration (ms) 51 3091 195

300 iterations 15 s 15 m 58 s

Page 10: 機械学習とこれを支える並列計算 : 並列計算の現状と産業応用について

Cone beam reconstruction A technique for producing volume data

Input data: a series of 2-D projections taken by CT scanner

Output data: 3-D volume

Feldkamp, Davis and Kress (FDK) algorithm Standard but memory-intensive reconstruction method

135 s on a single-core CPU using SSE instructions

Acceleration is needed for real-time imaging GPU (8.9 s), Cell B.E. (19 s), and FPGA (40 s)

10

Imaging Reconstruction

A series of 2-D projections Volume

Scan rotation

Cone beam CT

Page 11: 機械学習とこれを支える並列計算 : 並列計算の現状と産業応用について

FDK algorithm Input/output data

Input: a series of projections Output: Volume

Filtering stage Convolution between projections

and Shepp-Logan filter Backprojection stage

accumulates pixels on filteredprojections to voxels

iterates accumulation for every projection has perfect parallelism between different voxels

11

Volume F

X-ray source

Filteredprojection

Qiu

v

Interpolatedpixel (u,v)

Rotation

F(x,y,z) = ∑ Wi(x,y) Qi(u,v)Volume Weight Projectioni

Page 12: 機械学習とこれを支える並列計算 : 並列計算の現状と産業応用について

キャッシュ最適化 (1 of 2)

一連のスレッドが担当する領域の形状を工夫任意の方向からの投影面積が小さくなるように形状を選定

12

逆投影時間 キャッシュヒット率(左L1,右L2)

Page 13: 機械学習とこれを支える並列計算 : 並列計算の現状と産業応用について

キャッシュ最適化 (2 of 2)

投影像に対する参照の局所性を高める投影角の違いが微小であれば,投影先の座標 (u,v) はほぼ同じ投影角ごとの2次元投影像を3次元データとして並べ替え

13

一連の2次元データ 並べ替え後の3次元データ

同一投影像内に局所性がある

投影像間をまたいで局所性がある

(u,v)

Page 14: 機械学習とこれを支える並列計算 : 並列計算の現状と産業応用について

性能評価メモリスループットに関して実行効率を計測

14

GPU GeForce GTX 980 (Maxwell)OS Fedora 22 64-bitCUDA 7.5

0

50

100

150

200

250

512 1024 2048 1024 2048

Effic

ienc

y (%

)

今回 従来

4秒 22秒 160秒 40秒 255秒

>100%ならキャッシュが効いている

Page 15: 機械学習とこれを支える並列計算 : 並列計算の現状と産業応用について

文字列探索

テキスト𝑇𝑇 = 𝑡𝑡1𝑡𝑡2 ⋯ 𝑡𝑡𝑛𝑛のうち,パターン𝑃𝑃 = 𝑝𝑝1𝑝𝑝2 ⋯𝑝𝑝𝑚𝑚が一致する部分を返すこと

加速を阻害する要因GPU上の計算量=CPU・GPU間の転送量計算の不規則性袖つきのデータ並列計算

15Text 𝑇𝑇: peach pie penPattern 𝑃𝑃 : pen

match

𝑛𝑛

𝑚𝑚

1−m

Text

Thread 1 Thread 2Thread 3 Thread 4

袖領域

数万スレッドが走るGPUで高い効率を得るためには袖の除去が不可欠

Page 16: 機械学習とこれを支える並列計算 : 並列計算の現状と産業応用について

接頭辞和(prefix sums)問題に帰着一見して逐次性が強そうだが並列に解ける問題 i 番目までの和を配列 A[i] に格納

演算子⊕が結合則を満たせば並列処理できる

袖を除去するアイデア16

𝑥𝑥 ⊕ 𝑦𝑦⊕ 𝑧𝑧 ⇔ (𝑥𝑥 ⊕ 𝑦𝑦) ⊕𝑧𝑧

𝑛𝑛個の要素なら𝑂𝑂(log𝑛𝑛) ステップ

1 1 1 1 1 1 1 1

1 2 3 4 5 6 7 8

+

+ ++

+ + +

+ ++

+

Page 17: 機械学習とこれを支える並列計算 : 並列計算の現状と産業応用について

性能評価

入出力データがGPU側にあることを仮定

17

00.20.40.60.8

11.21.41.61.8

2

0 8 16 24 32 40 48 56 64

Thro

ughp

ut (T

bps)

Pattern size m

cuShiftOr

GBPR

GPU GeForce GTX TITAN X (Maxwell)OS Windows 7 64-bitCUDA 7.5

Tbpsオーダの探索スループット

パターンが1ワードに収まれば性能は一定

既存手法はパターン長とともに性能低下

Page 18: 機械学習とこれを支える並列計算 : 並列計算の現状と産業応用について

商品識別(深層学習応用)

セルフレジ人件費節約(すかいらーく)バーコードを付加できない生鮮食品バーコードを探すのが手間

BakeryScan:レガシーな画像処理による識別トレイ上のパンを天から撮影山盛りはダメ

2017/2/10IoTと機械学習シンポジウム

18

Page 19: 機械学習とこれを支える並列計算 : 並列計算の現状と産業応用について

深層学習による解法日常業務において学習データを容易に収集できる

学習データ:画像とその正解ラベルの組

GoogLeNet(22層)物体識別のための学習済みネットワーク:畳込み層+プーリング層の反復と全結合層

パラメータの初期値は乱数とした

19

ConvolutionPoolingSoftmaxOther

http://www.image-net.org/challenges/LSVRC/2014/slides/GoogLeNet.pptx

ラベル:大根

Page 20: 機械学習とこれを支える並列計算 : 並列計算の現状と産業応用について

処理の流れ

3台のウェブカメラ(正面,左下,右下)による画像の取得1280×720画素,30 fps

オプティカルフローによる動きの検出

ダウンサンプリング(64×64画素)学習時間を短縮するため

3方向の画像を1枚にまとめる画像の連結学習時間を短縮するため

20

ダウンサンプリング

動きの検出

推論(あるいは学習)

画像取得

画像の連結

あり

なし

Page 21: 機械学習とこれを支える並列計算 : 並列計算の現状と産業応用について

識別器の構成21

GoogLeNet

ラベルごとのスコア

複数視点画像

GoogLeNet

ラベルごとのスコア

右下視点画像

GoogLeNet

ラベルごとのスコア

正面視点画像

GoogLeNet

ラベルごとのスコア

左下視点画像

ラベルごとのスコア

+連結版 独立版

Page 22: 機械学習とこれを支える並列計算 : 並列計算の現状と産業応用について

識別器の評価

9+3クラスの識別:大根,人参,玉葱,さつま芋,長葱,ゴボウ,キャベツ,白菜,水菜 + カロリーメイト3種

学習時間(GeForce GTX 980 Ti+cuDNN+Chainer)連結版:2.8時間(3万枚の画像に対して150エポック)連結版は独立版の1/3の時間で学習を完了

交差検証による正答率連結版 青果:98~99% カメ:92~95%独立版 青果:99 % カメ:92~95%単一版 青果:96~98% カメ:93~96%

誤答の原因:撮影の死角や画像のブレ

22

Page 23: 機械学習とこれを支える並列計算 : 並列計算の現状と産業応用について

並列処理が創造したもの

実行時間の短縮術中の位置合わせ製造ラインにおける品質検査高速な機械学習

頑健性の向上停電,ネットワーク断(PCクラスタ→ノートPC)

新しい手段・価値の創造術中の安全性検証ヒトを超えるプレーヤ(識別,囲碁,異物検出,手術ロボット)

23

単なる高速化から価値を見出すことが成功の肝

Page 24: 機械学習とこれを支える並列計算 : 並列計算の現状と産業応用について

まとめ

並列計算:計算時間の短縮だけでなく新しい価値観や方法論を創出

医療現場などにおける並列処理の紹介数万個もの並列性を活用できる超並列アルゴリズムが大事

単なる高速化から価値を見出すことが成功の肝

2017/2/10IoTと機械学習シンポジウム

24

Page 25: 機械学習とこれを支える並列計算 : 並列計算の現状と産業応用について

研究室のホームページ

2017/2/10IoTと機械学習シンポジウム

25

http://www-hagi.ist.osaka-u.ac.jp/

Page 26: 機械学習とこれを支える並列計算 : 並列計算の現状と産業応用について

補足資料26

Page 27: 機械学習とこれを支える並列計算 : 並列計算の現状と産業応用について

Shift-Or algorithm (1 of 2)

非決定性オートマトンNFAに基づいて,ビット並列性を活用する方法

テキストから文字を1つ読み出すたびにNFAの状態を更新 状態 𝑟𝑟𝑖𝑖 は,パターンにおける最初の 𝑖𝑖 文字までが一致していることを表す

読み出した文字が一致するときのみ添え字 𝑖𝑖 が増える→シフト

27

𝑟𝑟0 𝑟𝑟1 𝑟𝑟2 𝑟𝑟3p e n*Pattern 𝑃𝑃 : pen

分岐の少なさが規則性の面で有利

Page 28: 機械学習とこれを支える並列計算 : 並列計算の現状と産業応用について

Shift-Or algorithm (2 of 2)

比較開始点をずらした,𝑚𝑚 個の比較器を同時に処理 比較器の状態をビット列に格納して更新

28

Text 𝑇𝑇: peach pie penBit 𝑟𝑟0: 10111110111011Bit 𝑟𝑟1: 11011111111101Bit 𝑟𝑟2: 11111111111110Output: 1111111111110𝑟𝑟0 𝑟𝑟1 𝑟𝑟2 𝑟𝑟3

p e n* 𝑟𝑟0 𝑟𝑟1 𝑟𝑟2 𝑟𝑟3p e n*𝑟𝑟0 𝑟𝑟1 𝑟𝑟2 𝑟𝑟3

p e n*

0が一致を表す𝑆𝑆𝑗𝑗 = �1𝑚𝑚 , if 𝑗𝑗 = 0

(𝑆𝑆𝑗𝑗−1≪ 1) ∣ 𝑀𝑀(𝑡𝑡𝑗𝑗) , if 𝑗𝑗 > 0文字𝑡𝑡𝑗𝑗が一致するときのみシフトを許すビットマスク

Page 29: 機械学習とこれを支える並列計算 : 並列計算の現状と産業応用について

結合則への対応

シフト演算子 ≪ は結合則を満たさない 𝒙𝒙 ≪ 𝒚𝒚 ≪ 𝒛𝒛 ⇎ 𝒙𝒙 ≪ (𝒚𝒚 ≪ 𝒛𝒛)

しかし,結合則を満たす加算に置換可能 𝒙𝒙 ≪ 𝒚𝒚 ≪ 𝒛𝒛⟺ 𝒙𝒙 ≪ 𝒚𝒚 + 𝒛𝒛

つまり,シフトの幅 𝑦𝑦 + 𝑧𝑧 をあとで反映すればよい

29

𝑆𝑆𝑗𝑗 = �1𝑚𝑚 , if 𝑗𝑗 = 0

(𝑆𝑆𝑗𝑗−1≪ 1) ∣ 𝑀𝑀(𝑡𝑡𝑗𝑗) , if 𝑗𝑗 > 0

Page 30: 機械学習とこれを支える並列計算 : 並列計算の現状と産業応用について

結合則を満たす演算子†30

𝑢𝑢1, 𝑣𝑣1 † 𝑢𝑢2, 𝑣𝑣2 = 𝑢𝑢1 + 𝑢𝑢2, (𝑣𝑣1≪ 𝑢𝑢2) ∣ 𝑣𝑣2

𝑢𝑢𝑗𝑗 , 𝑣𝑣𝑗𝑗 = 0, 1𝑚𝑚 † 1,𝑀𝑀(𝑡𝑡1) † ⋯ † 1,𝑀𝑀(𝑡𝑡𝑗𝑗−1) † 1,𝑀𝑀(𝑡𝑡𝑗𝑗)

Text: piePattern: pi

p i e11 10 01 11 Mask

を使って,以下の 𝑣𝑣𝑗𝑗 を計算する

10 10 <<110 11+ +

00 <<111+

00 <<101+

Page 31: 機械学習とこれを支える並列計算 : 並列計算の現状と産業応用について

参考文献

五味田遵, 合田圭吾, 川崎康博, 伊野文彦, 萩原兼一. ``汎用グラフィクスハードウェアを用いた2次元/3次元剛体位置合わせの高速化''. 情報処理学会論文誌, Vol. 47, No. 10, pp. 2947--2958, (2006-10).

Yuechao Lu, Fumihiko Ino, and Kenichi Hagihara. ``Cache-Aware GPU Optimization for Out-of-Core Cone Beam CT Reconstruction of High-Resolution Volumes''. IEICE Transactions on Information and Systems, Vol. E99-D, No. 12, pp. 3060--3071, (2016-12).

Yasuaki Mitani, Fumihiko Ino, and Kenichi Hagihara. ``Parallelizing Exact and Approximate String Matching via Inclusive Scan on a GPU''. IEEE Transactions on Parallel and Distributed Systems, accepted.

31