機械学習・ディープラーニング GPUとCPUの速度の違いはどのくらいなのか? Windows、Ubuntu双方で検証

最終更新: 2019年7月28日

機械学習、ディープラーニングで学習および推論を行う時、特に学習にかかる時間はとても長いです。 1週間PCを回しっぱなしなんて事はザラです。。。。

そこで学習速度の向上のためにGPUを導入します。

GPUは、超大量のコア数(計算する人の人数とでも思ってください)があるのが特徴。 一つ一つの計算能力ではCPU(いわゆる普通のコンピュータの頭脳です)に劣るのですが、CPUではせいぜい10〜20コアくらいのところ数千というコア数で計算できます。 そのため同じ計算を一斉に行う機械学習の様な処理ではCPUよりもはるかに速い計算処理を行う事が可能です。

では実際にどのくらい速いのでしょうか?

今回機械学習・ディープラーニングの標準GPUと言えるNvidiaのGPUを取り上げ、Windows、Ubuntu 双方について検証します。 (ちなみにMACはNvidiaのGPUの搭載が大人の事情で現在できませんので検証できません、、、)

使用機種 WindowsとUbuntuのデュアルブート OS:Windows10 CPU:Intel Core i9-9990K GPU:Nvidia Geforce RTX2080ti ドライバー:430.86 CUDA:10.2 CuDNN:7.5

ちなみに上図ではGPUで学習中の使用状況を表示しています。 計算には56%、メモリは10GBほど使用しているのがみて取れます。

まずはKerasを使用し、バックエンドでTensorFlowを動かしています。 この手の検証で使用される代表手法と言えるmnist(画像認識の学習)ファイルを使用して検証してみましょう。

GPUとCPUの学習速度検証


Windows編 mnistをCPUで

1epoch37秒ほどです。 12 epoch学習させていますので7分25秒ほどです。 Windows編 mnistをGPUで

1 epoch3.5秒ほど。 12 epochでも45.5秒です。 CPUに比べ10倍ほどという速度で学習できています。

Windows編 CPUで音楽データを500曲学習

今度は音楽データを学習させました。 音楽データは全て8小節の単音データ。 TensorFlowを使用しています。 結果は上図の通り。 10回の学習x10で100回 平均14秒x10で2分20秒ほどです。 Windows編 GPUで音楽データを500曲学習

こちらも10回の学習x10で100回 平均3.5秒x10で35秒ほどです。 CPUに比べ約4倍の学習速度です。 先ほどのMNISTに比べ学習データが少ないので速度の向上比率も控えめですがさらに学習データが増えるとより学習速度に差が出るのでしょう。 Ubuntuでも検証 Ubuntuでも検証しましょう。 OS:Ubuntu18.04

CPU:Intel Core i9-9990K GPU:Nvidia Geforce RTX2080ti は同様ですが、 ドライバー:410 CUDA:10.1 CuDNN:7.4 となっています

Windowsと変更があるのはOS対応状況などの関係です。 GPU環境はドライバー、CUDA、CuDNNのバージョンを揃えないとエラーが出て動作しないので慎重に構築しないといけません。(かなり環境構築難しいです、、、汗)

ちなみにUbuntu環境では推論時に高速になるTensorRTも導入してあります。 https://developer.nvidia.com/tensorrt が今回の検証は学習のみです。 Ubuntu編 mnistをCPUで

1epoch25秒ほどです。 12 epoch学習させていますので5分6秒ほどです。 Ubuntu編 mnistをGPUで


1epoch5秒弱ほどです。 12 epoch学習させていますので50秒ほどです。

CPUに比べ5倍強という速さでした。

Windowに比べ速度向上が少なかったですが、CPUがUbuntuの方がかなり速かった事、GPUはWindowsの方が速かった事が原因です。

GPUはWindowsの方がドライバとCUDAのバージョンが新しかった事が原因でしょうか? CPUについてはそもそもUbuntuの方が負荷が少ないとかがあるのかもしれませんが、詳細な原因はなんとも断言はできません。。。。

Ubuntu編 CPUで音楽データを500曲学習


Windowsと同じく500曲を学習させています。 10回の学習x10で100回 平均7秒x10で70秒ほどです。 Ubuntu編 GPUで音楽データを500曲学習

同じく500曲をGPUで学習。 平均2秒x10で20秒ほどです。 CPUに比べ約3.5倍の学習速度です。

Windowsに近い検証結果が出ていますが、こちらはどちらも学習速度が速いですね。 特にCPUで顕著ではあります。

ちなみによく質問を受けますが、 GPUは並列処理(たくさんのデータを同時に計算)によって速くなるため、少ないデータの時に導入してもあまり効果が見込めない事多々あります。 これは当然の事なので不思議がらずにご心配なく。

いかがでしたか? GPU導入による学習速度の向上は効果絶大です。 趣味程度ならまだしもですが、業務での導入であれば必須と言えるのではないでしょうか? 弊社では機械学習。ディープラーニング用のGPU環境構築業務を行っております。 導入でお困りの方、どうぞご相談ください。 ご相談はこちらから https://www.exdream-inc.com/blank

0回の閲覧

EXDREAM inc

5-2-#901, Koji-machi eki Plaza Niban-cho

Chiyoda-ku,Tokyo,

102-0084  Japan

TEL&FAX: +8162656694

 

© 2018 EXDREAM inc All Rights Reserved.

EXDREAM 株式会社

102-0084

東京都千代田区二番町5-2

​麹町駅プラザ901

TEL&FAX: 03-6265-6694

 

  • ホワイトFacebookのアイコン
  • ホワイトTwitterのアイコン
  • ホワイトInstagramのアイコン