3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Intel MacでeGPUを使いtensorflow-macosとPlaidMLを比較してみた

Posted at

はじめに

tensorflow-macosのリリースに伴い, macでも深層学習を始めるハードルがとても下がったと思います. ただ実際のところどの程度パフォーマンスはどうなのか? はたまたeGPUを使った場合どうなるのか? すでにmacで深層学習をやっている方はPlaidMLと比較してどうなのか?など, 不明なところが多いかと思います.
基本ROM専な私ですが, なかなかベンチマーク結果が出てこないこともあり, 今回初投稿しました.

@tomoyaeibuさんがm1 macでtensorflow-macosを実行した記事を上げているので,
勝手ながらそれと同様の条件で比較できるように, パフォーマンスを測定しました.
https://qiita.com/tomoyaeibu/items/46f2f3384a370df71d5e

私はeGPU利用の結果を中心に投稿したいと思います.

tensorflow-macos, PlaidML, eGPUについて

tensorflow-macos, PlaidML

いずれもMacでGPUを使った深層学習を行えるフレームワーク.
いずれもいろんな方が記事にしているので, ググってみてください.

eGPUについて

簡単に言うと外付けGPU. ノートPCのような拡張不可能な端末において, (お金があれば)容易にGPUをアップグレードすることができる. macOS High Sierra 10.13.4以降で使えるようになりました. 詳しくはググってみてください. m1 macには残念ながら現在のところ未対応らしいです.
今回, thunderbolt2なmacでeGPUを利用するため, purge-wrangler.shを使いました.

環境

ハードウェア

  • MacBook Pro (Retina, 13-inch, Late2013)
    • プロセッサ 2.4GHz デュアルコア Intel Core i5
    • メモリ 8GB 1600MHz DDR3
  • Razer Core X (eGPU)
    • Radeon RX580 (8GB)
    • Thunderbolt3-2変換ケーブル利用

ソフトウェア

  • Mac OS Big Sur 11.1
  • tensorflow-macos 0.1-alpha1
  • PlaidML 0.7.0
  • purge-wrangler.sh (Thunderbolt2なMacでeGPUを使えるようにするため)

実験設定

実験コード

https://qiita.com/tomoyaeibu/items/46f2f3384a370df71d5e
こちらの記事のLeNetライクなConvolution層によるmnistの分類コードを使いました.
PlaidMLはkerasでコードを記述可能であるため, ほぼ同様のコードを使い計測しております.
(バッチサイズのデフォルト値が異なるので, tensorflow-macosのデフォルト値にそろえて測定しております.) よって実行結果は, アルゴリズムに差はなく, 各フレームワークの実行効率の良さや, ハードウェアの性能にほぼ依存するかと思います.

評価方法

3回実行し実行時間の平均値で評価します.

実行結果

MacBook Pro Late 2013 with Radeon RX580 eGPU(tensorflow-macos) MacBook Pro Late 2013 with Radeon RX580 eGPU(PlaidML)
5epochにかかった時間 771.53s 1251.12s

tensorflow-macosとPlaidMLを比較した場合, 今回の環境下においてtensorflow-macosが1.62倍高速に動作することがわかりました.
また, (フェアな比較ではないですが) @tomoyaeibuさんのm1 mac book airの結果と比較しても, 3.40倍高速に動作することがわかります.
m1チップのGPUも高速ですが, やはりRadeon等のGPUのほうが強力で, eGPU環境下でも十分高速に動作することがわかりました.

最後に

今回, Intel MacによるeGPUを使った深層学習のパフォーマンス計測を実施しました.
ある特定のニューラルネットワークの学習にtensorflow-macosとPlaidMLを利用し, tensorflow-macosが高速に動作することがわかりました.
また, m1チップとeGPU(Radeon RX580)とを比較し, eGPUで十分高速に深層学習できることがわかりました. ただこの比較は, コスパを考えた場合フェアな比較ではないと思っており, 参考程度の情報と考えております.

他のニューラルネットワークの構造(VGGやResNet)に対しても同様の結果が得られるか不明なため, また気が向いた際に追加で調査したいと思います.
今回, eGPUのデータ転送にThunderbolt2を利用しております. これがボトルネックになっているかどうかが気になっております.

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?