Posted at

Ryzen Threadripper 2950X で機械学習 YOLO V3 KerasでVGG16


買っちゃった

機械学習を高速にしたいのでRyzen Threadripper 2950X でPCを組みました。

買ったのは去年の12月。なんだかんだ実験してたらもう数カ月たってしまった。

もともとGPUをうまく使える環境ではなかったので、高性能なGPUを導入しても効果が無いことからPCを買いなおした。


結果

結果的に早くなった。GPU,CPUをしっかり使うようになった。これはすごい。

金を使った分リニアに伸びない世界だから、価格に見合う性能UPか?と言われると・・・


構成

元々あったのと合わせて以下のようになりました。

CPU:Ryzen Threadripper2 2950X

クーラー:KRAKEN X52

MB:X399 GAMING PRO CARBON AC

CASE:Trooper SE (SGC-5000-KWN2)

MEM:CMK16GX4M2Z2666C16 2個で32G

SSD:MZ-V7E500B/IT

電源:CORSAIR RM1000x

GPU:GTX1070Ti*3枚

GPUは3スロット占有が2枚、2スロット占有が1枚でも何とかささりました。

ケース大きい。


INTEL入ってないとダメなんじゃない?

ダメじゃなかった。

Tensorflow(CPU)も動いた

YOLO V3もCPUで動いた。


1coreあたりの性能が低いと遅い?

怖かったので 2950X にしました。i5-7500にくらべてだいぶ早いように感じます。


YOLO V3はどうよ

i5とくらべると差が無かった。チョビットはやいかな?くらい。

でもモデルの構築?読み込み、prediction時間は高速になった。

と・・・おもったら

AlexeyAB/darknet

のソースコードを変えると、CPU使用率があがって早くなった。

変更箇所は

darknet-master\src\detector.c



120行目あたりに

    args.threads = 3 * ngpus;   // Amazon EC2 Tesla V100: p3.2xlarge (8 logical cores) - p3.16xlarge

//args.threads = 12 * ngpus; // Ryzen 7 2700X (16 logical cores)

こんな記述があるので28にした。

30以上になると遅いかな?と思えるのでパラメータをかえながら設定する

ソース変更前はCPU使用率15%~30%だったのがCPU使用率70%~80%になった


教師データ作成作業

結局はここの作業が快適になるかどうか?だと思いました。

快適になった。


KerasでVGG16はどうよ

GPUがしっかりと使えるようになった。

Keras自体CPU依存度が高いように感じる


全体的に

性能のいいCPUがほしい病から解放されて精神的に楽になった。