MATLABで始めるGPUコンピューティング

MATLABで始めるGPUコンピューティング
MathWorks Japan
アプリケーション エンジニアリング部 テクニカルコンピューティング
太田 英司
© 2015 The MathWorks, Inc.
1
MATLABとは?

科学技術計算のための統合環境
– Matrix Laboratoryの略
– 米国で開発された行列演算ライブラリー LINPACK, EINSPACK を
手軽に利用するソフトウェアとして開発された。
Jack Little
Cleve Moler
– 「プログラミングで悩むより、その先の本質を勉強して欲しい」との思い
から開発されたソフトウェア。
2
主な特徴
Figure

高速行列演算ライブラリー
– 行列やベクトルの高速演算
エディター

豊富な拡張ライブラリー
現在のフォルダ
– コード量の削減
– バグの削減
ワークスペース
MATLAB メモリ領域

インタプリターによる対話的操作
– 学習コストの削減
– デバッグコストの削減
コマンドウィンドウ
コマンド履歴
3
機械学習・並列化・高速化
Statistics and Machine Learning Toolbox™
 機械学習
 多変量統計
 確率分布
 回帰と分散分析
 実験計画
 統計的工程管理
Neural Network Toolbox™
 ニューラルネットワークの構築、学習
 データフィッティング
 クラスタリング
Parallel Computing Toolbox™
 MATLAB & Simulink と連携した並列処理
 対話的な並列計算実行
 GPGPU による高速演算
 ジョブおよびタスクの制御
MATLAB Distributed Computing Server™
 クラスタによる計算環境を提供
コンピュータ
ローカル
Mean Squared Error (mse)
10
0
Best Validation Performance is 0.01227 at epoch 26
Train
Validation
Test
Best
10
-1
10
-2
10
-3
0
 パターン認識
 深層学習
 GPUによる計算の高速化
5
10
15
20
25
30
32 Epochs
MATLAB Distributed Computing Server
MATLAB
デスクトップ
Scheduler
Parallel Computing
Toolbox
5
画像処理・コンピュータービジョン・ロボットビジョン
Image Processing Toolbox™
 コーナー、円検出




幾何学的変換
各種画像フィルタ処理
レジストレーション(位置合せ)
セグメンテーション(領域分割)
 画像の領域の定量評価
Image Acquisition Toolbox™
 デバイスから画像、動画直接取り込み




フレームグラバボード
DCAM, Camera Link®
GigE Vision®, Webカメラ
Microsoft® Kinect® for Windows®
Computer Vision System Toolbox™
 カメラキャリブレーション
 特徴点・特徴量抽出
 機械学習による物体認識
 動画ストリーミング処理
 トラッキング
 ステレオビジョン・3D表示
Robotics System Toolbox™
 ロボティクスアルゴリズム開発の支援
 MATLAB・SimulinkとROS間の
インターフェイス
 ROSノード生成
6
信号処理・信号解析
DSP System Toolbox™
 高度なフィルタ設計
 スペクトル解析
 スペアナ、ロジアナ表示
 行列演算、統計処理
30
Input signal PSD
Equiripple output PSD
IFIR output PSD
Multirate/multistage output PSD
20
10
Power density (dB/rad/sample)
Signal Processing Toolbox™
 信号生成、時間領域解析
 フィルタ設計解析
 スペクトル解析
 線形予測
0
-10
-20
-30
-40
-50
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
Normalized Frequency (x rad/sample)
0.8
0.9
1
Wavelet Toolbox™
 信号・画像の解析・ノイズ除去・圧縮等


連続 / 離散ウェーブレット
パケット解析 / 主成分分析
 対話的なGUIによる操作
7
GPU を対象とした高速化手法
GPU array による GPU の利用
カスタマイズ性
使い易さ
関数オプションの変更による GPU の利用
CUDA や PTX コードの利用
9
GPU を対象とした高速化手法
GPU array による GPU の利用
カスタマイズ性
使い易さ
関数オプションの変更による GPU の利用
CUDA や PTX コードの利用
11
GPU array による GPU の利用
Parallel Computing Toolbox
gpuArray
gather
メインメモリ
GPGPU
>> GX = gpuArray(X);
GPU 上のメモリへ転送
>> GY = fft2(GX);
2次元 FFT を GPU上で実行
>> Y = gather(GY);
結果をメインメモリへ転送
12
GPU array をサポートする代表的な関数(アルゴリズム系)
abs
acos
acosh
acot
acoth
acsc
acsch
all
any
arrayfun
asec
asech
asin
asinh
atan
atan2
atanh
bitand
bitcmp
bitor
bitshift
bitxor
cast
cat
ceil
chol
classUnderlying
colon
complex
conj
conv
conv2
cos
cosh
cot
coth
csc
csch
ctranspose
cumprod
cumsum
diag
diff
disp
display
dot
double
eig
eps
eq
erf
erfc
erfcinv
erfcx
erfinv
exp
expm1
filter
filter2
find
fft
fft2
fix
floor
gamma
gammaln
gather
ge
gt
horzcat
hypot
ifft
ifft2
imag
int16
int32
int64
int8
isempty
isequal
isequalwithequalnans
isfinite
isinf
islogical
isnan
isreal
ldivide
le
length log
log10
log1p
log2
logical
lt
lu
max
meshgrid
min
minus
mldivide
mod
mrdivide
mtimes
ndgrid
ndims
ne
norm
not
numel
plot (and related)
plus
power
prod
rdivide
real
reallog
realpow
realsqrt
rem
repmat
reshape
round
sec
sech
sign
sin
single
sinh
size
sort
sqrt
subsasgn
subsindex
subsref
sum
svd
tan
tanh
times
transpose
tril
triu
uint16
uint32
uint64
uint8
uminus
uplus
vertcat
13
GPU array をサポートする代表的な関数(画像処理系)
bwlookup
corr2
edge
histeq
imadjust
imfilter
imgradient
imgradientxy
imhist
imnoise
imresize
imrotate
imshow
medfilt2
padarray
std2
stdfilt
ルックアップ テーブルによる非線形フィルター処理
2 次元相関係数
強度イメージ内のエッジの検出
ヒストグラム均等化を使用したコントラストの強調
イメージの強度値またはカラーマップの調整
多次元イメージの N 次元フィルター処理
イメージの勾配の大きさと方向
イメージの方向勾配
イメージ データのヒストグラム
イメージにノイズを付加
イメージのサイズ変更
イメージの回転
イメージの表示
2 次元のメディアン フィルター処理
配列の埋め込み
行列要素の標準偏差
イメージの局所的な標準偏差
im2double
im2single
im2uint8
im2uint16
イメージを倍精度に変換
イメージを単精度に変換
イメージを 8 ビットの符号なし整数に変換
イメージを 16 ビットの符号なし整数に変換
imabsdiff
imlincomb
2つのイメージの絶対差
イメージの線形結合
bwmorph
imbothat
imclose
imdilate
imerode
imopen
imtophat
バイナリ イメージのモルフォロジー演算
ボトム ハット フィルター処理
イメージにモルフォロジー クローズ処理を行う
イメージの膨張
イメージの収縮
モルフォロジーなイメージのオープン処理
トップ ハット フィルター処理
mat2gray
rgb2gray
rgb2ycbcr
ycbcr2rgb
行列をグレースケール イメージに変換
RGB イメージまたはカラーマップをグレースケールに変換
RGB の色の値を YCbCr 色空間に変換
YCbCr の色の値を RGB 色空間に変換
14
GPU array による GPU の利用
画像に対するフィルタ処理(キャンバス効果)
>> GX = gpuArray(X);
>> GY = canvasEffect(GX);
>> Y = gather(GY);
gpuArray
メインメモリ
gather
GPGPU
15
GPU array による GPU の利用
波動方程式のソルバー(スペクトラル法)の高速化
波動方程式をスペクトラル法で解く
𝜕2𝑢 𝜕2𝑢 𝜕2𝑢
=
+
𝜕𝑡 2 𝜕𝑥 2 𝜕𝑦 2
gpuArray
メインメモリ
gather
GPGPU
16
GPU を対象とした高速化手法
GPU array による GPU の利用
カスタマイズ性
使い易さ
関数オプションの変更による GPU の利用
CUDA や PTX コードの利用
17
Stacked Autoencoder (積層自己符号化器)
Neural Network Toolbox
自己符号化器(Autoencoder)とは?
 2層のニューラルネットワーク
 恒等写像となるようなウェイトを学習
 主に DNN の事前学習に利用
自己符号化器(Autoencoder)
【コード例】 自己符号化器の学習
autoenc = trainAutoencoder(X, hiddenSize,...
'L2WeightRegularization’, 0.001, ...
'SparsityRegularization', 4, ...
'SparsityProportion', 0.05, ...
'DecoderTransferFunction', 'purelin‘
'useGPU', true);
GPUによる高速化
積層自己符号化器(Stacked Autoencoder)
18
Convolutional Neural Network(畳み込みニューラルネット)
Neural Network Toolbox
畳み込みニューラルネット(CNN)とは?
 畳み込みを主な構成要素としたニューラルネットワーク
 学習は教師あり学習を利用
 画像認識の分野で非常に高い性能
 畳み込み層・プーリング層などを積層したネットワーク
>> net.Layers
ans =
11x1 Layer array with layers:
1
2
3
4
5
6
7
8
9
10
11
'imageinput'
'conv'
'relu'
'conv'
'relu'
'maxpool'
'conv'
'relu'
'fc'
'softmax'
'classoutput'
Image Input
Convolution
ReLU
Convolution
ReLU
Max Pooling
Convolution
ReLU
Fully Connected
Softmax
Classification Output
19
Convolutional Neural Network(畳み込みニューラルネット)
Neural Network Toolbox
畳み込み層・プーリング層・正規化層などを積み重ねて作られた多層のニューラルネットワーク
Softmax層
全結合層
全結合層
最大プーリング層
正規化層
畳み込み層
最大プーリング層
正規化層
畳み込み層
犬
猫
牛
馬
20
畳み込みニューラルネットの構築と学習
28×28 ピクセルの画像(数字)を認識させる例題でのネットワーク構築の例
layers = [ ...
imageInputLayer([28 28 1], 'Normalization', 'none');
convolution2dLayer(5, 20);
reluLayer();
maxPooling2dLayer(2, 'Stride', 2);
fullyConnectedLayer(10);
softmaxLayer();
畳み込み層・プーリング層・正規化層
などの層を積み上げて定義
classificationLayer()];
opts = trainingOptions('sgdm', 'MaxEpochs', 50);
学習率や最大反復数などを定義して
net = trainNetwork(XTrain, TTrain, layers, opts);
学習の関数を呼び出す
http://www.mathworks.com/help/releases/R2016a/nnet/ref/trainnetwork.html
21
R-CNN(Regions with CNN features) とは?
CNNにコンピュータビジョンの手法を組み合わせた物体検出・識別の手法
停止標識(Stop Sign)
R-CNNに自動車の前面と停止標識を学習させた場合の検出例
自動車の前面(Car Front)
22
© 2016 The MathWorks, Inc. MATLAB and Simulink are registered trademarks of The MathWorks, Inc. See www.mathworks.com/trademarks for a list of
additional trademarks. Other product or brand names may be trademarks or registered trademarks of their respective holders.
23