3,378 views
この記事は最終更新から 1817日 が経過しています。
NVIDIA GTX-650の載った Linuxマシンがあるので cuda-convnet なる GPU実装版 NeuralNetプログラムを動かしてみる。ホームページはこちら(↓)
https://code.google.com/p/cuda-convnet/
トレーニングデータセットとして MNIST は提供されていないので…
今回は同ホームページで提供されている CIFAR-10 データセットを使用する。
1. cuda-convnetをインストール
今回インストールするマシンには CUDA 6.0 , SDK 4.2 をインストールしてある。
この辺りのバージョン違いのゴタゴタに3時間以上も費やしてしまった…
2. データセットをダウンロード
3. プログラムを実行
4. 実行結果
今回は 10 epochs 指定で実行してみた。
[user@linux]$ python convnet.py --data-path=../data/cifar-10/ --save-path=../save --test-range=6 --train-range=1-5 --layer-def=./example-layers/layers-19pct.cfg --layer-params=./example-layers/layer-params-19pct.cfg --data-provider=cifar --test-freq=13
10epoch目の結果はこんな感じになった。
・error rate = 0.366100 (accuracy=73.4%)
・1epochの処理に要する時間はおよそ 40秒前後 → octaveと比較するとめちゃくちゃ速い!
------------------------------------------------------- Layer 'conv1' weights[0]: 2.856662e-02 [1.153782e-04] Layer 'conv1' biases: 9.223316e-03 [3.505556e-06] Layer 'conv2' weights[0]: 1.143599e-02 [2.939290e-05] Layer 'conv2' biases: 7.934627e-03 [3.020574e-06] Layer 'conv3' weights[0]: 1.032112e-02 [2.550705e-05] Layer 'conv3' biases: 7.986603e-03 [2.903473e-06] Layer 'fc10' weights[0]: 2.028455e-03 [1.244750e-04] Layer 'fc10' biases: 2.140154e-01 [1.096559e-04] ------------------------------------------------------- Saved checkpoint to ../save/ConvNet__2014-07-02_23.33.24 ======================================================= (8.310 sec) 10.1... logprob: 1.094434, 0.383200 (6.475 sec) 10.2... logprob: 1.132439, 0.391000 (6.473 sec) 10.3... logprob: 1.077382, 0.378500 (6.475 sec) 10.4... logprob: 1.107526, 0.386300 (6.474 sec) 10.5... logprob: 1.072043, 0.371800 ======================Test output====================== logprob: 1.077383, 0.366100 -------------------------------------------------------
ちなみにうちの GPUの性能はこんな感じです。CUDAコア数は 384個としょぼいです…
Device 0: "GeForce GTX 650" CUDA Driver Version / Runtime Version 6.0 / 6.0 CUDA Capability Major/Minor version number: 3.0 Total amount of global memory: 1023 MBytes (1073020928 bytes) ( 2) Multiprocessors, (192) CUDA Cores/MP: 384 CUDA Cores GPU Clock rate: 1058 MHz (1.06 GHz) Memory Clock rate: 2500 Mhz Memory Bus Width: 128-bit L2 Cache Size: 262144 bytes Maximum Texture Dimension Size (x,y,z) 1D=(65536), 2D=(65536, 65536), 3D=(4096, 4096, 4096) Maximum Layered 1D Texture Size, (num) layers 1D=(16384), 2048 layers Maximum Layered 2D Texture Size, (num) layers 2D=(16384, 16384), 2048 layers Total amount of constant memory: 65536 bytes Total amount of shared memory per block: 49152 bytes Total number of registers available per block: 65536 Warp size: 32 Maximum number of threads per multiprocessor: 2048 Maximum number of threads per block: 1024 Max dimension size of a thread block (x,y,z): (1024, 1024, 64) Max dimension size of a grid size (x,y,z): (2147483647, 65535, 65535) Maximum memory pitch: 2147483647 bytes Texture alignment: 512 bytes Concurrent copy and kernel execution: Yes with 1 copy engine(s) Run time limit on kernels: No Integrated GPU sharing Host Memory: No Support host page-locked memory mapping: Yes Alignment requirement for Surfaces: Yes Device has ECC support: Disabled Device supports Unified Addressing (UVA): Yes Device PCI Bus ID / PCI location ID: 1 / 0
近日中に cuda-convnet上で MNISTをトレーニングしてみよう。