買っちゃった
機械学習を高速にしたいので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がほしい病から解放されて精神的に楽になった。