uyuutosa's blog

Introducing program, algorithm or paper about computer vision or machine larning or life log.

cupyテスト

ディープラーニングマシンを作りました。

ディープラーニングがやりたくて新しいPCを買ってしまいました! スペックは以下の通り

スペック

CPU:
Intel CPU Broadwell-EP Xeon E5-2630v4 2.20GHz 10コア/20スレッド LGA2011-3 BX80660E52630V4 【BOX】
¥82,282

ストレージ:
Transcend SSD 1TB 2.5インチ SATA3 6Gb/s MLC採用 3.5インチブラケット付属 3年保証 TS1TSSD370S
¥35,142

電源:
Corsair RM1000x 80PLUS GOLD認証取得 1000W静音電源ユニット PS596 CP-9020094-JP
¥20.055

メモリ:
CORSAIR DDR4 メモリモジュール VENGEANCE LPX Series 8GB×2枚キット CMK16GX4M2A2666C16 \8824

ケース:
Corsair Carbide 600C フルタワー型PCケース CS6412 CC-9011079-WW
¥19,350

GPU:
NVIDIA TITAN X Pascalアーキテクチャー採用 世界最先端GPUアーキテクチャ
¥ 171,204

グラフィックボード:
ASUSTeK Intel X99搭載 Core i7 X-シリーズプロセッサー対応 X99-DELUXE II【ATX】
¥ 57,951

サイズ 【HASWELL対応】 グランド鎌クロス Rev.B 14cmトップフローCPUクーラー SCKC-2100
¥ 6,398

すべてアマゾンで購入。合計401206円なり。 ディープラーニングはマシン環境とデータサイエンティストとデータの3つが必要だという。 データをネットリソースからバンバン吸い上げるためにNUROを契約しました(何度でも立ち会いますよ!)。なのでデータはOKで、 環境もまあいいでしょう。むしろCPUがオーバースペック気味。 なので当面はアルゴいじりをします。

GPUの性能テスト

pythonのcupy.ndarrayとnumpy.ndarrayを使って簡単なテストをしてみました。 10000x10000の行列の内積演算です。

from cupy import *
import numpy as n

arr_cpu = n.arange(1e8).reshape(10000,10000)
arr_gpu = arange(1e8).reshape(10000,10000)

timeit arr_cpu.dot(arr_cpu)
timeit arr_gpu.dot(arr_gpu)

cpuを使っているときは、cpuのコアをたくさん使って計算しています。

f:id:sayu819:20161120183523p:plain

gpuを使っているときはcpuはおとなしいです。 その代わり、gpuの使用率が上がっています。

f:id:sayu819:20161120183422p:plain

gpuの使用率は以下のコマンドで確認しました。

nvidia-smi -l

CPUが

1 loop, best of 3: 12 s per loop

なのに対し、

GPU

1 loop, best of 3: 6.04 s per loop

なので、このスペックでは倍近く違うみたいです。

追記

手持ちのMacBook Proでも試してみました。 GPUNVIDIA GeForce GT 750M 2048 MBです。

結果は以下の通りになります。

from cupy import *
import numpy as n
 
arr_cpu = n.arange(1e6).reshape(1000,1000)
arr_gpu = arange(1e6).reshape(1000,1000)

In []: timeit arr_cpu.dot(arr_cpu)
The slowest run took 4.80 times longer than the fastest. This could mean that an intermediate result is being cached.
100 loops, best of 3: 12.1 ms per loop

In []: timeit arr_gpu.dot(arr_gpu)
10 loops, best of 3: 77 ms per loop

TITAN Xはメモリが12Gあるのに対して、MacGPUは2Gしかないのが影響しているんでしょうか。

GPUのほうが時間がかかっています。

人検出

  • AdaBoost : 統計的学習手法Boostingの一つ
  • 識別精度が高い
  • Hog特徴量: 局所領域のセルの輝度の勾配方向をヒストグラム
  • RealAdaBoost: AdaBoostからの派生、効果的な重みの更新が可能

http://www.vision.cs.chubu.ac.jp/joint_hog/pdf/HOG+Boosting_LN.pdf