機械学習とこれを支える並列計算 : 並列計算の現状と産業応用について
TRANSCRIPT
並列計算の現状と産業応用について
伊野 文彦大阪大学大学院情報科学研究科
1
2017/2/10IoTと機械学習シンポジウム
並列計算とは?
1つの問題を複数の演算器で解くこと計算時間の短縮による新しい価値観や方法論の創出普通にできないことを可能にする!
例:超音速航空機による大阪・ニューヨーク間の日帰り旅行
2
並列計算機の変遷
需要のある市場なくして並列計算機は開発できないNVIDIAによる民主化
並列でないプロセッサはもはやない
3
将来の超並列プロセッサを見据えた超並列アルゴリズムが必要
ベクトル機国家の特注品
PCクラスタWINTELユーザの汎用品
GPUPCゲーマーの特定汎用品
身の回りの並列処理逐次処理で100年かかるもの
天気予報力学シミュレーションDNA解析機械学習
秒単位の応答を必要とするもの可視化やPCゲームウェブ検索手術支援自動運転
4
手術シミュレーション可視化やPCゲーム
DNA解析
機械学習
台風シミュレーション
なぜGPUは速いのか?
高スループット指向のハードウェア・プログラミングモデル 高いメモリ帯域幅
短い道路(短いメモリ遅延)よりも車線の多い道路大事なことは絶え間なくデータを演算器に供給し続けること
高い並列性多くの車を道路に流せる逐次性の強いアルゴリズムはGPUでも遅い
制約のあるプログラミングモデルスレッド単位のプログラムを記述制約:一部のスレッド間の依存を禁止 → メモリ遅延を隠蔽しやすい
5
メモリ
演算器
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 位置合わせ
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
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
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
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
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
キャッシュ最適化 (1 of 2)
一連のスレッドが担当する領域の形状を工夫任意の方向からの投影面積が小さくなるように形状を選定
12
逆投影時間 キャッシュヒット率(左L1,右L2)
キャッシュ最適化 (2 of 2)
投影像に対する参照の局所性を高める投影角の違いが微小であれば,投影先の座標 (u,v) はほぼ同じ投影角ごとの2次元投影像を3次元データとして並べ替え
13
一連の2次元データ 並べ替え後の3次元データ
同一投影像内に局所性がある
投影像間をまたいで局所性がある
(u,v)
性能評価メモリスループットに関して実行効率を計測
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%ならキャッシュが効いている
文字列探索
テキスト𝑇𝑇 = 𝑡𝑡1𝑡𝑡2 ⋯ 𝑡𝑡𝑛𝑛のうち,パターン𝑃𝑃 = 𝑝𝑝1𝑝𝑝2 ⋯𝑝𝑝𝑚𝑚が一致する部分を返すこと
加速を阻害する要因GPU上の計算量=CPU・GPU間の転送量計算の不規則性袖つきのデータ並列計算
15Text 𝑇𝑇: peach pie penPattern 𝑃𝑃 : pen
match
𝑛𝑛
𝑚𝑚
1−m
Text
Thread 1 Thread 2Thread 3 Thread 4
袖領域
数万スレッドが走るGPUで高い効率を得るためには袖の除去が不可欠
接頭辞和(prefix sums)問題に帰着一見して逐次性が強そうだが並列に解ける問題 i 番目までの和を配列 A[i] に格納
演算子⊕が結合則を満たせば並列処理できる
袖を除去するアイデア16
𝑥𝑥 ⊕ 𝑦𝑦⊕ 𝑧𝑧 ⇔ (𝑥𝑥 ⊕ 𝑦𝑦) ⊕𝑧𝑧
𝑛𝑛個の要素なら𝑂𝑂(log𝑛𝑛) ステップ
1 1 1 1 1 1 1 1
1 2 3 4 5 6 7 8
+
+ ++
+ + +
+ ++
+
性能評価
入出力データが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ワードに収まれば性能は一定
既存手法はパターン長とともに性能低下
商品識別(深層学習応用)
セルフレジ人件費節約(すかいらーく)バーコードを付加できない生鮮食品バーコードを探すのが手間
BakeryScan:レガシーな画像処理による識別トレイ上のパンを天から撮影山盛りはダメ
2017/2/10IoTと機械学習シンポジウム
18
深層学習による解法日常業務において学習データを容易に収集できる
学習データ:画像とその正解ラベルの組
GoogLeNet(22層)物体識別のための学習済みネットワーク:畳込み層+プーリング層の反復と全結合層
パラメータの初期値は乱数とした
19
ConvolutionPoolingSoftmaxOther
http://www.image-net.org/challenges/LSVRC/2014/slides/GoogLeNet.pptx
ラベル:大根
処理の流れ
3台のウェブカメラ(正面,左下,右下)による画像の取得1280×720画素,30 fps
オプティカルフローによる動きの検出
ダウンサンプリング(64×64画素)学習時間を短縮するため
3方向の画像を1枚にまとめる画像の連結学習時間を短縮するため
20
ダウンサンプリング
動きの検出
推論(あるいは学習)
画像取得
画像の連結
あり
なし
識別器の構成21
GoogLeNet
ラベルごとのスコア
複数視点画像
GoogLeNet
ラベルごとのスコア
右下視点画像
GoogLeNet
ラベルごとのスコア
正面視点画像
GoogLeNet
ラベルごとのスコア
左下視点画像
ラベルごとのスコア
+連結版 独立版
識別器の評価
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
並列処理が創造したもの
実行時間の短縮術中の位置合わせ製造ラインにおける品質検査高速な機械学習
頑健性の向上停電,ネットワーク断(PCクラスタ→ノートPC)
新しい手段・価値の創造術中の安全性検証ヒトを超えるプレーヤ(識別,囲碁,異物検出,手術ロボット)
23
単なる高速化から価値を見出すことが成功の肝
まとめ
並列計算:計算時間の短縮だけでなく新しい価値観や方法論を創出
医療現場などにおける並列処理の紹介数万個もの並列性を活用できる超並列アルゴリズムが大事
単なる高速化から価値を見出すことが成功の肝
2017/2/10IoTと機械学習シンポジウム
24
研究室のホームページ
2017/2/10IoTと機械学習シンポジウム
25
http://www-hagi.ist.osaka-u.ac.jp/
補足資料26
Shift-Or algorithm (1 of 2)
非決定性オートマトンNFAに基づいて,ビット並列性を活用する方法
テキストから文字を1つ読み出すたびにNFAの状態を更新 状態 𝑟𝑟𝑖𝑖 は,パターンにおける最初の 𝑖𝑖 文字までが一致していることを表す
読み出した文字が一致するときのみ添え字 𝑖𝑖 が増える→シフト
27
𝑟𝑟0 𝑟𝑟1 𝑟𝑟2 𝑟𝑟3p e n*Pattern 𝑃𝑃 : pen
分岐の少なさが規則性の面で有利
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文字𝑡𝑡𝑗𝑗が一致するときのみシフトを許すビットマスク
結合則への対応
シフト演算子 ≪ は結合則を満たさない 𝒙𝒙 ≪ 𝒚𝒚 ≪ 𝒛𝒛 ⇎ 𝒙𝒙 ≪ (𝒚𝒚 ≪ 𝒛𝒛)
しかし,結合則を満たす加算に置換可能 𝒙𝒙 ≪ 𝒚𝒚 ≪ 𝒛𝒛⟺ 𝒙𝒙 ≪ 𝒚𝒚 + 𝒛𝒛
つまり,シフトの幅 𝑦𝑦 + 𝑧𝑧 をあとで反映すればよい
29
𝑆𝑆𝑗𝑗 = �1𝑚𝑚 , if 𝑗𝑗 = 0
(𝑆𝑆𝑗𝑗−1≪ 1) ∣ 𝑀𝑀(𝑡𝑡𝑗𝑗) , if 𝑗𝑗 > 0
結合則を満たす演算子†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+
参考文献
五味田遵, 合田圭吾, 川崎康博, 伊野文彦, 萩原兼一. ``汎用グラフィクスハードウェアを用いた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