ディープラーニングタスクに最適な GPU を選択するにはどうすればよいでしょうか?

ディープラーニングタスクに最適な GPU を選択するにはどうすればよいでしょうか?

ディープラーニングは計算集約型の分野であり、GPU の選択によってディープラーニングの実験が根本的に決まります。 GPU がないと、実験が完了するまでに数か月かかる場合や、選択したパラメータのみをオフにした状態で実験が 1 日実行される場合もあります。優れた安定した GPU があれば、ディープラーニング ネットワークで迅速に反復処理を実行し、数か月、数日、数時間ではなく、数日、数時間、数分で実験を完了できます。したがって、GPU を購入する際には正しい選択が重要です。では、自分に合った GPU を選択するにはどうすればよいでしょうか? このブログ記事ではまさにこの疑問について取り上げ、適切な選択を行うお手伝いをします。

高速な GPU を持つことは、ディープラーニングの初心者にとって重要です。なぜなら、ディープラーニングを新しい問題に適用するのに役立つ専門知識を身に付けるのに役立つ実践的な経験をすぐに得ることができるからです。この迅速なフィードバックがなければ、間違いから学ぶのに時間がかかりすぎて、深い学習を続けるのが困難になり、やる気をなくしてしまうでしょう。 GPU の助けを借りて、私は一連の Kaggle コンテストでディープラーニングを適用する方法をすぐに学び、特定のツイートから天気スコアを予測する「Partly Sunny with a Chance of Hashtags」Kaggle コンテストで 2 位を獲得しました。コンテストでは、かなり大規模な 2 層のディープ ニューラル ネットワーク (正規化のために 2 つの正規化線形ユニットとドロップアウトを使用) を使用しましたが、このディープ ネットワークを 6G GPU メモリに収めることはほぼ不可能でした。

複数の GPU を使用する必要がありますか?

GPU の助けを借りてディープラーニングが何を実現できるかに興奮しています。私はマルチ GPU の分野に飛び込み、InfiniBand 40Gbit/s インターコネクトを使用して小さな GPU クラスターを組み立てました。複数の GPU を使用すると、より良い結果が得られるかどうか知りたかったのです。複数の GPU 上でニューラル ネットワークを並列化するのは難しいだけでなく、さらに、通常の高密度ニューラル ネットワークの場合、加速効果も平均的です。小規模なニューラル ネットワークは並列化でき、データ並列性を効果的に活用できますが、Partly Sunny with a Chance of Hashtags Kaggle コンテストで使用したような大規模なニューラル ネットワークでは、速度向上はほとんど見られません。

その後、私は実験をさらに進め、32 ビット アプローチと比較して、高密度または完全に接続されたニューラル ネットワーク レイヤーを並列でより効率的に処理できる、モデル並列処理を備えた新しい 8 ビット圧縮手法を開発しました。

しかし、並列化は非常にイライラさせられることもあることがわかりました。私はさまざまな問題に対して並列アルゴリズムを単純に最適化しましたが、費やした労力を考えると、最適化されたカスタム コードを使用しても、複数の GPU で注意を並列化することはあまりうまく機能しないことがわかりました。並列化のメリットが得られるかどうかを最初から判断できるように、ハードウェアとそれがディープラーニング アルゴリズムとどのように相互作用するかを十分に理解しておく必要があります。

[[185944]]

私のメインフレーム コンピューターのセットアップ: 3 つの GXT Titan と InfiniBand カードが表示されます。これはディープラーニングに適した設定でしょうか?

それ以来、GPU 並列処理のサポートはより一般的になってきましたが、完全に利用可能かつ効果的になるにはまだまだ遠い状況です。現在、GPU とコンピューター上で効率的なアルゴリズムを実装する唯一のディープラーニング ライブラリは CNTK であり、これは 1 ビット量子化 (効率的) とブロック モメンタム (非常に効率的) という Microsoft の特殊な並列化アルゴリズムを使用します。 CNTK と 96 個の GPU のクラスターを使用すると、約 90 倍から 95 倍の新しい線形高速化を実現できます。 Pytorch はマシン間での効率的な並列化をサポートするライブラリかもしれませんが、そのライブラリはまだ存在していません。単一のマシンで並列処理を実行する場合、CNTK、Torch、および Pytorch が主な選択肢になります。これらのライブラリは、4 ~ 8 個の GPU を搭載したマシンで優れた高速化 (3.6 倍~ 3.8 倍) と定義済みの並列アルゴリズムを備えています。並列化をサポートするライブラリは他にもありますが、それらは遅い(例:TensorFlow の場合は 2 倍から 3 倍)か、複数の GPU で使用するのが難しい(Theano)、またはその両方です。

並列処理を重視する場合は、Pytorch または CNTK を使用することをお勧めします。

並列化せずに複数のGPUを使用する

複数の GPU を使用するもう 1 つの利点は、並列アルゴリズムがなくても、各 GPU で複数のアルゴリズムまたは実験を個別に実行できることです。高速ではありませんが、さまざまなアルゴリズムやパラメータを使用することで、パフォーマンスに関する詳細な情報を取得できます。これは、ディープラーニングの経験をできるだけ早く積むことが主な目的である場合に非常に役立ち、新しいアルゴリズムのさまざまなバージョンを同時に試したい研究者にとっても非常に役立ちます。

ディープラーニングを学びたい場合、これは心理学的にも重要です。タスク間の間隔とフィードバックを得るまでの時間が短いほど、脳は関連する記憶の断片を首尾一貫した画像に統合しやすくなります。別々の GPU を使用して小さなデータセットで 2 つの畳み込みネットワークをトレーニングすると、優れたパフォーマンスを得るために何が重要かをより迅速に学習でき、クロス検証エラーのパターンをより簡単に検出して正しく解釈できるようになります。また、どのパラメータとレイヤーを追加、削除、または調整する必要があるかを示すパターンも見つかります。

したがって、全体として、ほぼすべてのタスクには 1 つの GPU で十分ですが、ディープラーニング モデルを高速化するには複数の GPU がますます重要になります。ディープラーニングを早く学びたいなら、安価なGPUを複数枚使うのも良いでしょう。個人的には、研究目的であっても、1 つの大きな GPU よりも複数の小さな GPU を使用することを好みます。

では、どのタイプのアクセラレータを選択すればよいでしょうか? Nvidia GPU、AMD GPU、それとも Intel の Xeon Phi でしょうか?

Nvidia の標準ライブラリにより、CUDA での最初のディープラーニング ライブラリの構築が容易になりましたが、AMD の OpenCL ほど強力な標準ライブラリはありませんでした。現在、AMD グラフィック カードに適したディープラーニング ライブラリは存在しないため、選択できるのは Nvidia のみです。将来的に OpenCL ライブラリがいくつか利用可能になったとしても、私は Nvidia を使い続けるつもりです。なぜなら、GPU コンピューティングや GPGPU コミュニティは CUDA では巨大ですが、OpenCL では比較的小さいからです。したがって、CUDA コミュニティには、優れたオープン ソース ソリューションとプログラミングに関する確かなアドバイスが用意されています。

さらに、ディープラーニングはまだ初期段階であるにもかかわらず、Nvidia は現在、ディープラーニングにすべてを賭けています。その賭けは成功した。他の企業もディープラーニングに資金とエネルギーを投入していますが、開始が遅れたため、依然として遅れをとっています。現在、NVIDIA-CUDA 以外のディープラーニング向けハードウェアとソフトウェアの組み合わせでは、うまくいきません。

Intel の Xeon Phi に関しては、標準の C コードを使用して、それを高速化された Xeon Phi コードに簡単に変換できると広告に記載されています。これは興味深いように思えます。なぜなら、C コードの膨大なリソースに頼ることができると思われるからです。しかし、実際には、C コードのごく一部のみしかサポートされていないため、この機能はあまり役に立たず、ほとんどの C は非常に低速で実行されます。

私は 500 台を超える Xeon Phi クラスターに取り組んできましたが、終わりのないフラストレーションに遭遇しました。 Xeon Phi の MKL (Math Kernel Library) が NumPy と互換性がなかったため、ユニット テストを実行できませんでした。Intel Xeon Phi コンパイラーがテンプレートで適切な削減を行わなかったため、コードの大部分を書き直す必要がありました。たとえば、switch ステートメントの場合、Intel Xeon Phi コンパイラーが一部の C++11 機能をサポートしていないため、C インターフェイスを変更する必要がありました。これらすべてにより、単体テストなしでコードのリファクタリングを実行する必要が生じ、非常にイライラします。これには長い時間がかかりました。なんて地獄だ。

その後、コードを実行すると、すべてが非常に遅く実行されます。これはバグでしょうか、それともスレッド スケジューラの問題でしょうか。ベースとなるベクトル サイズが継続的に変化すると、どの問題がパフォーマンスに影響しますか。たとえば、異なるサイズの完全接続レイヤーまたはドロップアウト レイヤーがある場合、Xeon Phi は CPU よりも遅くなります。私はこの動作をスタンドアロンの行列-行列乗算の例で再現し、Intel に送信しましたが、返信はありませんでした。したがって、ディープラーニングをしたい場合は、Xeon Phi には近づかないでください。

与えられた予算内で最速のGPU

最初の疑問は、「ディープラーニングの高速 GPU パフォーマンスにとって最も重要な機能は何ですか?」ということでしょう。それは、CUDA コア、クロック速度、それとも RAM の量でしょうか。

上記のどれでもない。最も重要な特性はメモリ帯域幅です。

つまり、GPU はメモリ アクセス時間 (レイテンシ) を犠牲にしてメモリ帯域幅を最適化しますが、CPU はそれと正反対のことをするように設計されています。複数の数値を掛け合わせる(3*6*9)など、使用するメモリ量が少ない場合は、CPU は高速に計算を実行できます。ただし、行列の掛け算(A*B*C)など、メモリを大量に使用する演算の場合、CPU は非常に低速で動作します。 GPU は、そのメモリ帯域幅により、メモリを大量に消費する問題の処理に優れています。もちろん、GPU と CPU の間には他にもより複雑な違いがあります。

高速な GPU の購入を検討している場合、最も重要なのは帯域幅です。

メモリ帯域幅に基づいてGPUを評価する

時間の経過に伴う CPU と GPU の帯域幅を比較します。 GPU の計算速度が CPU を上回るのはなぜでしょうか? 主な理由の 1 つは帯域幅です。

帯域幅は、アーキテクチャ内で直接比較できます。たとえば、Pascal グラフィック カード GTX 1080 と GTX 1070 のパフォーマンスを比較したり、メモリ帯域幅のみを調べて直接比較したりすることもできます。たとえば、GTX 1080 (320GB/秒) は、GTX 1070 (256 GB/秒) よりも約 25% 高速です。ただし、異なるアーキテクチャでは処理中に特定のメモリ帯域幅を異なる方法で使用するため、Pascal と Maxwell、または GTX 1080 と GTX Titan X など、複数のアーキテクチャ間で直接比較することはできません。これは少し怪しいように思えますが、合計帯域幅を見るだけで、GPU のおおよその速度をかなり正確に把握できます。特定の予算内で最速の GPU を選択するには、この Wikipedia ページ (Nvidia グラフィックス プロセッシング ユニットの一覧) を使用して、帯域幅を GB/秒単位で調べることができます。新しいカード (900 および 1000 シリーズ) の場合、記載されている価格は非常に正確ですが、古いカードは、特に eBay で購入する場合、記載されている価格よりもはるかに安くなることがあります。たとえば、通常の GTX Titan X は eBay で約 550 ドルかかります。

ただし、考慮すべきもう 1 つの重要な要素は、すべてのアーキテクチャが cuDNN と互換性があるわけではないということです。ほぼすべてのディープラーニング ライブラリは畳み込み演算に cuDNN を使用するため、選択肢は Kepler GPU 以上、つまり GTX 600 シリーズ以上に制限されます。重要なのは、Kepler GPU は一般的に遅いということです。つまり、良好なパフォーマンスを得るには、900 または 1000 シリーズの GPU を選択する必要があります。

ディープラーニング タスクにおけるグラフィック カードのパフォーマンスの比較を大まかに把握するために、簡単な GPU 同等性表を作成しました。どのように読み取るのでしょうか? たとえば、GTX 980 は Titan X Pascal の 0.35 倍の速度です。または、Titan X Pascal は GTX 980 のほぼ 3 倍の速度です。

これらのグラフィック カードをすべて所有しているわけではなく、また、それらすべてに対してディープラーニング ベンチマークを実行したわけでもないことに注意してください。これらの比較は、グラフィック カードの仕様とコンピューティング ベンチマークの比較に基づいています (一部の暗号通貨マイニング タスクでは、ディープラーニングに匹敵するコンピューティング能力が必要です)。したがって、これはあくまでも大まかな比較に過ぎません。実際の数値は多少異なりますが、一般的に言えば、誤差は最小限に抑えられ、グラフィック カードのランキングは良好になります。

また、GPU を十分に活用していない小規模なネットワークでは、大規模な GPU の見栄えが悪くなることにも注意してください。たとえば、小さな LSTM (128 個の隠れユニット、バッチ サイズ > 64) は、GTX 1070 よりも GTX 1080 Ti で大幅に高速に実行されるわけではありません。表に示されているパフォーマンスの違いを実現するには、1024 個の隠れユニット (および 64 を超えるバッチ サイズ) を持つ LSTM などの、より大規模なネットワークを実行する必要があります。適切な GPU を選択する際には、この点を念頭に置くことが重要です。

大規模なディープラーニング ネットワークの GPU パフォーマンスの大まかな比較。

全体的には、GTX 1080 Ti または GTX 1070 をお勧めします。どちらも優れたグラフィック カードなので、GTX 1080 Ti を購入できる予算があれば、ぜひ購入してください。 GTX 1070 は少し安価ですが、それでも通常の GTX Titan X (Maxwell) よりも少し高速です。どちらも、11GB と 8GB の RAM (6GB ではなく) が追加されているため、GTX 980 Ti よりも優れた選択肢です。

8GB の RAM は少し少ないように思えるかもしれませんが、多くのタスクには十分すぎるほどです。たとえば、Kaggle のコンペティションでは、多数の画像データセット、ディープ スタイル、自然言語理解のタスクで苦労することはほとんどありません。

GTX 1060 は、ディープラーニングを試してみたり、Kaggle コンテストに参加するために使用したりする場合に最適なエントリーレベルの GPU です。他の 6GB バリアントの機能がすでに非常に制限されているため、3GB RAM を搭載した GTX 1060 バリアントはお勧めしません。ただし、多くのアプリケーションでは 6G のメモリで十分です。 GTX 1060 は通常の Titan X よりも遅いですが、パフォーマンスと価格の点では GTX980 に匹敵します (eBay 上)。

コストパフォーマンスについて言えば、10 シリーズのデザインは本当に素晴らしいです。 GTX 1060、GTX 1070、GTX 1080 Ti で優れたパフォーマンスを発揮します。 GTX 1060 は初心者に適しており、GTX 1070 は特定の業界、研究部門、スタートアップに適しており、GTX 1080 Ti はハイエンドの選択肢です。

一般的に言えば、Nvidia Titan X (Pascal) はパフォーマンスに対してあまりにも高価すぎるため、お勧めしません。 GTX 1080 Ti を使い続けてください。それでも、Nvidia Titan X (Pascal) は、大規模なデータセットやビデオコレクションを扱うコンピューター ビジョンの研究者の間では定着しています。これらの領域では、1G のメモリが無駄になることはなく、GTX 1080 Ti よりも 1G 多い Nvidia Titan X のメモリによって、処理上の利点もさらに高まります。ただし、コストパフォーマンスの点では、eBay の GTX Titan X (Maxwell) をお勧めします。少し遅いですが、12G のメモリが搭載されています。

ただし、ほとんどの研究者は GTX 1080 Ti で十分でしょう。ほとんどの研究やアプリケーションでは、追加の 1G のメモリは実際には必要ありません。

私は個人的に研究用に複数の GTX 1070 を使用しています。たとえ 1 つのテストだけを実行するよりも遅くても (1 つのテストだけを実行する方が高速です)、複数のテストを実行することをお勧めします。自然言語処理タスクでは、メモリの制限はコンピューター ビジョンの研究ほど明白ではありません。したがって、GTX 1070 で十分です。私の研究タスクと実験の実行方法から判断すると、私にとって最適な選択は GTX 1070 です。

独自の GPU を選択する場合は、同じ方法に従って選択する必要があります。タスクと実験の実行方法を考慮し、これらすべてのニーズを満たす GPU を見つけてください。

現在、資金に余裕がなく GPU を購入する必要がある人にとって、選択肢は少なくなっています。 AWS GPU インスタンスは高価で速度も遅いため、予算が限られている場合にはもはや良い選択肢ではありません。 GTX 970 は、eBay で中古品を購入しても速度が遅く高価 (150 ドル) であり、ストレージとグラフィック カードの起動に問題があるため、お勧めしません。代わりに、もう少しお金を出して GTX 1060 を購入してください。これははるかに高速で、ストレージ容量も大きく、この問題は発生しません。 GTX 1060 を購入する余裕がない場合は、4GB の RAM を搭載した GTX 1050 Ti をお勧めします。 4GB では制限がありますが、ディープラーニングを試したり、モデルを微調整したりすれば、優れたパフォーマンスを得ることができます。 GTX 1050 はほとんどの Kaggle コンテストでは問題ありませんが、一部のコンテストでは競争力が制限される可能性があります。

Amazon Web Services (AWS) の GPU インスタンス

このブログ投稿の以前のバージョンでは、AWS GPU スポットインスタンスを推奨していましたが、現在は推奨していません。現在、AWS の GPU は非常に遅く (GTX 1080 は AWS GPU より 4 倍高速です)、その価格は過去数か月で大幅に上昇しました。今では、独自の GPU を購入することが再び理にかなっているように思えます。

要約する

この記事のすべての情報を使用すると、メモリ サイズのニーズ、帯域幅速度 (GB/s)、GPU の価格のバランスをとって適切な GPU を見つけることができ、これらの考え方は今後何年も信頼できるものとなるでしょう。ただし、現時点では、価格が許容範囲内であれば、GTX 1080 Ti または GTX 1070 をお勧めします。ディープラーニングを始めたばかりの場合や予算が限られている場合は、GTX 1060 が適しているかもしれません。お金があまりない場合は、GTX 1050 Ti を購入してください。コンピューター ビジョンの研究者であれば、Titan X Pascal が最適でしょう (または、既存の GTX Titan Xs を使用することもできます)。

まとめ

  • 総合的に最高の GPU: Titan X Pascal と GTX 1080 Ti
  • コスト効率は良いが高価: GTX 1080 Ti、GTX 1070
  • コスト効率が良く安価:GTX 1060
  • 250Gを超えるデータセットを処理する場合: 通常のGTX Titan XまたはTitan X Pascal
  • お金があまりない: GTX 1060
  • お金がほとんどない: GTX 1050 Ti
  • 私はKaggleのコンペに参加しています。通常のコンペではGTX 1060、ディープラーニングのコンペではGTX 1080Ti
  • 私は競争力のあるコンピュータビジョン研究者です: Titan X Pascal または通常の GTX Titan X
  • 私は研究者です: GTX 1080 Ti。自然言語処理タスクなどの場合には、GTX 1070 が適切な選択肢となる場合があります。現在のモデルのストレージ要件を確認してください。
  • GPU クラスターを構築したい: これは非常に複雑ですが、ここからいくつかのアイデアを得ることができます: https://timdettmers.wordpress.com/2014/09/21/how-to-build-and-use-a-multi-gpu-system-for-deep-learning/
  • 私はディープラーニングに興味を持ち始めたばかりで、GTX 1060 から始めました。次のステップ(スタートアップ? Kaggle コンテスト? 研究または応用ディープラーニング)に応じて、GTX 1060 を売却し、目的にもっと適したものを購入してください。

元記事のアドレス: http://timdettmers.com/2017/03/19/which-gpu-for-deep-learning/

[この記事は、51CTOコラムニストのMachine Heart、WeChatパブリックアカウント「Machine Heart(id:almosthuman2014)」によるオリジナル翻訳です]

この著者の他の記事を読むにはここをクリックしてください

<<:  音声認識データベースが人工知能の中核となる

>>:  DeepMind のニューラル ネットワーク記憶研究を分析: 動物の脳をシミュレートして継続的な学習を実現する

ブログ    
ブログ    
ブログ    
ブログ    

推薦する

デジタルコンテンツ制作のためのDIY AI

背景今年、chatgpt に代表される大型モデルの驚異的なパフォーマンスは、AICG の分野に完全に...

国産のハイエンドチップはどれくらい強いのか?業界関係者6人がこう考えている

[[440057]]この記事はLeiphone.comから転載したものです。転載する場合は、Leip...

モデルを最適化する方法だけを心配する必要はありません。これは機械学習のすべてではありません。

[[263282]]機械学習分野の学生、研究者、企業の開発者は、より高い精度/AUC/mAP など...

AIは中国のSaaS状況を打破できるか?

SaaS はバリューチェーンが短く、拡張性が速く、キャッシュフローが高いという優れたビジネスですが...

5四半期連続で前年同期比で減少: AIはデルの危機を逆転できるか?

企業の時代はなく、時代の企業だけがある!新たなトレンドに直面しても、古い大手企業は反応が遅く、固定観...

2023年に人工知能を学ぶべき主な理由

テクノロジーとイノベーションがダイナミックに変化する中、人工知能 (AI) の研究は学生や専門家にと...

スマート物流は進化し、AIは「独自のスキル」を発揮し続ける

データによると、わが国のスマート物流市場規模は2019年に5074億元で、前年比23.10%増加しま...

スマートテクノロジーが戦いに加わり、宇宙探査が新たな機会をもたらす

今日、現代科学技術の出現と発展、そしてさまざまなインテリジェント技術の登場により、人類の宇宙旅行はよ...

AIはインダストリー4.0の最適化段階の鍵となる

[[282511]]製造業の新たな課題製造業はインテリジェント製造に向けてアップグレードし、変革する...

...

...

AI は「彼ら」による盗聴を防ぐことができますか?

次のような状況に遭遇したことがあるかもしれません:携帯電話でアプリを開くと、最初に表示されるのは数分...

環境センシング:スマートホームの次のステップ

「スマートホーム」という用語は何年も前から存在しているようですが、業界自体は比較的初期段階にあります...

DidiがAoEをオープンソース化: AIの迅速な統合を可能にする端末操作環境SDK

Didi は、エンドサイド AI 統合ランタイム環境 (IRE) である AoE (AI on E...

こんなに高い給料がもらえる機械学習の職種の面接を受けるにはどうしたらいいのでしょうか?

[[199809]]まず第一に、この質問は非常に広範囲にわたります。機械学習にはさまざまな方向性が...