データ プラットフォームのコンピューティング能力: ディープラーニングとデータベースに適した GPU はどれですか?

データ プラットフォームのコンピューティング能力: ディープラーニングとデータベースに適した GPU はどれですか?

[[190035]]
画像はVisual Chinaより

最近、GoogleはISCA2017でTPU(Tensor Processing Unit)の詳細を公開しました。Haswell CPU、Tesla K80 GPUに続き、機械学習とニューラルネットワークに特化した高性能兵器を追加しました。

データ分析とGPU

GPU は、データベースの多くの機能を実現できるだけでなく、強力な計算能力によりリアルタイム分析も実現できます。 MapD と Kinetica はこの分野でよく知られている 2 つの企業です。 MapDはNVIDIA Tesla K40/K80を使用し、SQLと列ストレージをベースとしたデータベースを実装します。インデックスを必要とせず、条件付きクエリ(Where)、集計(Groupby)などの任意の組み合わせを得意としています。従来のリレーショナルデータベースのBI機能を実現し、ユーザーが自由に複数条件のクエリを実行できるようにします。パフォーマンス上の利点も顕著です (特に応答時間)。

たとえば、MapD は 1987 年から 2008 年にかけて米国に到着および出発したフライトのデータを 10 倍に拡張し、「SELECT...GROUP BY...」などの完全なテーブル スキャンを必要とするレポート タスクを実行します。 8 枚の Tesla K40 グラフィック カード (8 コア/384G RAM/SSD) を搭載したサーバーは、3 台のサーバー (32 コア/244G RAM/SSD) で構成されるメモリ データベース クラスターよりも 50 ~ 100 倍高速です。

GPU データベースのもう 1 つの主要な機能は、視覚的なレンダリングと描画です。 OpenGL やその他のグラフィック カードのバッファーを GPU CUDA のビデオ メモリ空間に直接マップし、結果をメモリから GPU にコピーせずにその場でレンダリングすることで、高フレーム レートのアニメーションを実現できます。また、その場で PNG またはビデオ ストリームとして描画してクライアントに送信することもできるため、ネットワーク経由で送信されるデータ量が大幅に削減されます。これらの利点は多くの開発者を魅了しています。

リアルタイム分析でよく知られている企業は Kinetica です。彼らはまず、米国の諜報機関のために250のデータストリームをリアルタイムで分析することから始めた。現在、200,000 個のセンサーに基づく 10 個のノードが、米国郵政公社 (USPS) に 15,000 件の並列リアルタイム分析、物流ルーティング計算、およびスケジュールを提供できます。

私の国では分析やマイニングに GPU を使用するユーザーが増えており、深く学びたい友人もたくさんいます。始める最も早い方法は、以前の実験を繰り返すことです。バージニア大学の「CUDA を使用した GPU での SQL データベース操作の高速化」の開発環境と実験は、学ぶ価値があります。彼らは、ローエンド サーバー (Xeon X5550 (2.66GHz/4 コア)、5G RAM) 上の 4G ビデオ メモリを備えた NVIDIA Tesla C1060 を使用して、500 万行のテーブルをクエリして要約し、応答時間を 30 ~ 60 ミリ秒に抑えました。

私たちがテストした中で最高の構成は、1,000 元を超える NVidia GTX 780 で、クエリや集計を試すのに適しています。まず、SQLite を使用して SQL を複数の OpCode ステップに解析し、次に CUDA 上に仮想マシンを実装して、テーブル全体が行ごとに走査されるまで各ステップを 1 つずつ実装します。これらのステップの一部は並列​​化できるため、CUDA を使用して数万のスレッドを開始し、それぞれが 1 行を処理することができます。

ディープラーニングとGPU

深度には高い計算能力が必要なので、GPU の選択はユーザー エクスペリエンスに大きな影響を与えます。 GPU が登場する前は、実験が完了するまでに数か月かかったり、特定の実験のパラメータが適切でないことが判明するまでに 1 日実行しなければならなかったりすることもありました。優れた GPU は、ディープラーニング ネットワークを迅速に反復処理し、数か月かかる実験を数日で実行したり、数日を数時間に、数分を数時間に置き換えることができます。

高速 GPU は、学習を始めたばかりの人が実践的な経験を素早く積み重ね、ディープラーニングを使用して実践的な問題を解決するのに役立ちます。すぐに結果が得られず、間違いからすぐに学ばなければ、学習はさらに意欲を失ってしまいます。 Tim Dettmers 氏は、一連の Kaggle コンテストで GPU を使用してディープラーニングを適用し、Partly Sunny with a chance of Hashtags コンテストで準優勝しました。彼は、2 つのより大きな 2 層ディープ ニューラル ネットワークを使用し、ReLU 活性化関数を採用し、Dropout を使用して正規化を実現しました。このネットワークは、6GB の GPU メモリにほとんど収まりません。

複数の GPU は必要ですか?

Tim はかつて 40Gbit/s InfiniBand を使用して小規模な GPU クラスターを構築しましたが、複数の GPU に並列ニューラル ネットワークを実装することが難しく、高密度ニューラル ネットワークでは速度の向上が明らかではないことがわかりました。小規模なネットワークはデータ並列処理を使用してより効率的に並列化できますが、競技で使用された大規模ネットワークでは、ほとんど速度向上は見られません。

その後、8 ビットの圧縮方式が開発され、高密度または完全に相互接続されたネットワーク層を 32 ビットよりも効率的に並列化できるようになりました。しかし、結果も理想的ではありませんでした。並列アルゴリズムを最適化し、複数の GPU で並列実行する独自のコードを記述したとしても、その効果は労力に見合うものではありません。並列処理から本当にメリットを得られるかどうかを判断するには、ディープラーニング アルゴリズムとハードウェアがどのように相互作用するかを十分に理解する必要があります。

GPU の並列サポートは一般的になりつつありますが、まだ普遍的とは言えず、結果も必ずしも良好ではありません。 CNTK は、Microsoft の特殊な 1 ビット量子化並列アルゴリズム (高効率) とブロック モメンタム アルゴリズム (非常に効率的) を通じて、複数の GPU と複数のコンピューター上でアルゴリズムを効率的に実行できる唯一のディープラーニング ライブラリです。

96 個の GPU のクラスターで CNTK を使用すると、90 ~ 95 倍の高速化を実現できます。複数のマシンを効率的に並列化できる次のライブラリは Pytorch かもしれませんが、まだ完全には準備ができていません。単一のマシンで並列化したい場合は、CNTK、Torch、または Pytorch を使用できます。速度は3.6~3.8倍に上がります。これらのライブラリには、4 つの GPU を搭載した単一のマシンで並列実行できるアルゴリズムが含まれています。並列処理をサポートする他のライブラリは、速度が遅いか、両方の問題を抱えています。

複数のGPU、非並列

複数の GPU を使用するもう 1 つの利点は、アルゴリズムが並列に実行されない場合でも、各 GPU で複数のアルゴリズムまたは実験を個別に実行できることです。高速化はできませんが、複数のアルゴリズムやパラメータのパフォーマンスを一度に把握できます。これは、研究者がディープラーニングの経験をできるだけ早く蓄積し、アルゴリズムのさまざまなバージョンを試す必要がある場合に役立ちます。

これはディープラーニングプロセスにも有益です。タスクの実行速度が速いほど、フィードバックの受信速度も速くなり、脳はこれらの記憶の断片から完全な結論を導き出すことができます。異なる GPU 上の小さなデータセットを使用して 2 つの畳み込みネットワークをトレーニングすると、より迅速にパフォーマンスを向上させる方法を見つけるのに役立ちます。クロス検証エラーのパターンを見つけて正しく解釈することも簡単になります。また、特定のパターンを発見して、追加、削除、または調整する必要があるパラメーターやレイヤーを見つけることもできます。

一般的に、ほとんどすべてのタスクには単一の GPU で十分ですが、複数の GPU を使用してディープラーニング モデルを高速化することがますます重要になっています。複数の安価な GPU を使用して、ディープラーニングをより速く学習することもできます。したがって、1 つの大きな GPU ではなく、複数の小さな GPU を使用することをお勧めします。

どれを選ぶべきでしょうか?

NVIDIA GPU、AMD GPU、またはIntel Xeon Phi

NVIDIA の標準ライブラリを使用して CUDA ディープラーニング ライブラリを構築するのは簡単ですが、AMD の OpenCL 標準ライブラリはそれほど強力ではありません。また、CUDA の GPU コンピューティングまたは一般的な GPU コミュニティは大きいですが、OpenCL のコミュニティは小さいです。 CUDA コミュニティから、優れたオープン ソース ソリューションと信頼できるプログラミング アドバイスを見つけるのが簡単になります。

さらに、NVIDIA は設立当初からディープラーニングに投資しており、大きな成果を上げています。現在、他の企業もディープラーニングに資金とエネルギーを投入していますが、開始が遅れたため、遅れをとっています。ディープラーニングに NVIDIA-CUDA 以外のソフトウェアやハードウェアを使用すると回り道をすることになります。

Intel の Xeon Phi は標準の C コードをサポートしており、Xeon Phi 上で高速化するためにコードを変更することも容易であると言われています。この機能は興味深いですね。しかし、実際には C コードのごく一部しかサポートされておらず、実用的ではありません。サポートされている場合でも、実装が遅いです。 Tim はかつて 500 個の Xeon Phi プロセッサのクラスターを使用していましたが、次々と問題に遭遇しました。たとえば、Xeon Phi MKL と Python Numpy は互換性がなかったため、ユニット テストは不可能でした。 Intel Xeon Phi コンパイラーは、switch ステートメントなどのテンプレートのコード プルーニングを適切に実行できないため、コードの大部分をリファクタリングする必要があります。 Xeon Phi コンパイラは一部の C++11 機能をサポートしていないため、プログラムの C インターフェイスを変更する必要があります。それは面倒で、時間がかかり、人々をイライラさせます。

実行も遅いです。テンソルのサイズが継続的に変化すると、パフォーマンスに影響を与えるのはバグなのか、スレッドのスケジューリングなのかはわかりません。たとえば、全結合層 (FC) またはドロップアウト層 (Dropout) のサイズが異なる場合、Xeon Phi は CPU よりも遅くなります。

予算内で最速のGPU

ディープラーニングにおける GPU の高速性を決定するものは何ですか? CUDAコアですか?クロック速度?それともRAMのサイズですか?どれも違います。ディープラーニングのパフォーマンスに影響を与える最も重要な要素は、ビデオメモリの帯域幅です。

GPU のメモリ帯域幅は、アクセス時間 (レイテンシ) を犠牲にして最適化されます。 CPU の場合はその逆です。メモリ使用量が少ないほど、複数の数値の乗算 (3*6*9) などの計算が高速になり、メモリ使用量が多いほど、行列の乗算 (A*B*C) などの計算が低速になります。 GPU は、そのメモリ帯域幅により、大量のメモリを必要とする問題の解決に優れています。もちろん、GPU と CPU の間にはより複雑な違いがあります。Quora の Tim の回答を参照してください。

したがって、高速な GPU を購入するときは、まず帯域幅を確認してください。

CPUとGPUの帯域幅開発の比較

チップアーキテクチャが同じであれば、帯域幅を直接比較できます。たとえば、Pascal グラフィック カード GTX 1080 と 1070 のパフォーマンスを比較するには、ビデオ メモリの帯域幅だけを確認する必要があります。 GTX 1080 (320GB/s) は GTX 1070 (256GB/s) よりも 25% 高速です。ただし、チップのアーキテクチャが異なる場合は、直接比較することはできません。たとえば、Pascal と Maxwell (GTX 1080 と Titan X) では、異なる製造プロセスで同じ帯域幅が異なって使用されます。ただし、帯域幅は GPU の速度を大まかに反映できます。さらに、そのアーキテクチャが cnD​​NN と互換性があるかどうかを確認する必要があります。ほとんどのディープラーニング ライブラリは cuDNN を使用して畳み込みを実行するため、Kepler 以上の GPU (GTX 600 シリーズ以上) が必要です。一般的に言えば、Kepler は遅いので、パフォーマンスの観点からは、900 または 1000 シリーズを検討する必要があります。ディープラーニングタスクにおけるさまざまなグラフィック カードのパフォーマンスを比較するために、Tim はグラフを作成しました。たとえば、GTX 980 は Titan X Pascal の 0.35 倍の速度で、Titan X Pascal は GTX のほぼ 3 倍の速度です。

これらの結果は、各カードのディープラーニング ベンチマークから得たものではなく、グラフィック カードのパラメーターと計算ベンチマークから得たものです (一部の暗号通貨マイニング タスクは、計算の点でディープラーニングに似ています)。したがって、これはあくまでも概算です。実際の数値は若干異なりますが、差はそれほど大きくないので、グラフィック カードのランキングは正しいはずです。また、GPU を十分に活用しない小規模ネットワークを使用すると、大規模な GPU が劣っているように見えます。たとえば、128 個の隠れユニット (バッチ サイズ > 64) を持つ LSTM は、GTX 1070 よりも GTX 1080 Ti で実行してもそれほど高速ではありません。パフォーマンスの違いを確認するには、1024 個の隠しユニット (バッチ サイズ > 64) を持つ LSTM を使用する必要があります。

大規模ディープラーニングネットワークを実行するGPUのパフォーマンス比較

一般的に言えば、Tim は GTX 1080 Ti または GTX 1070 の使用を推奨しています。どちらも良いです。予算に余裕があれば、GTX 1080 Ti を使用することもできます。 GTX 1070 は、通常の GTX Titan X (Maxwell) よりも少し安価で高速です。どちらも、ビデオ メモリが 6GB ではなく 11GB と 8GB と大きいため、GTX 980 Ti よりも適しています。

8GB は少し小さいですが、Kaggle コンペティションのほとんどの画像データセットでの自然言語理解 (NLP) タスクなど、多くのタスクには十分です。

ディープラーニングを学び始めるときは、GTX 1060 が最適な選択であり、Kaggle コンテストでも時々使用できます。 3GB では少なすぎ、6GB では足りない場合もありますが、多くのアプリケーションを処理できます。 GTX 1060 は通常の Titan X よりも遅いですが、その性能と中古価格は GTX 980 とほぼ同じです。

コストパフォーマンスの観点から見ると、10シリーズはよく設計されています。 GTX 1060、1070、1080 Ti の方がはるかに優れています。 GTX 1060 は初心者に適しており、GTX 1070 は汎用性が高く、スタートアップや特定の科学研究および産業用アプリケーションに適しており、GTX 1080 Ti はまさにオールラウンドなハイエンド製品です。

Tim は、価格性能比が良くないため、NVIDIA Titan X (Pascal) を推奨していません。コンピューター ビジョンの大規模なデータ セットやビデオ データの科学的研究に適しています。 VRAM のサイズはこれらの領域に大きな影響を与えますが、Titan X は GTX 1080 Ti よりも 1GB 大きいため、より適しています。ただし、eBay から GTX Titan X (Maxwell) を購入する方がコスト効率が高くなります。少し遅いですが、12 GB のビデオ メモリで十分です。

ほとんどの研究者にとって、GTX 1080Ti で十分です。追加の 1GB のビデオ メモリは、多くの科学研究やアプリケーションではあまり役に立ちません。

科学研究においては、ティムは個人的には複数の GTX 1070 を選択します。1 つの実験を少し速く実行するよりも、より多くの実験を少し遅く実行することを好みます。 NLP はコンピューター ビジョンほど多くのビデオ メモリを必要としないため、GTX 1070 で十分です。彼が現在処理しているタスクと方法によって、最も適切な選択肢である GTX 1070 が決定されます。

GPU を選択するときにも同様のアプローチを使用できます。まず、実行するタスクと実験方法を明確に検討し、要件を満たす GPU を探します。現在、AWS 上の GPU インスタンスは高価で低速です。 GTX 970 は速度が遅く、中古品は高価で、グラフィック カードは起動時にメモリの問題が発生します。もう少しお金をかけて、より高速で、より多くのビデオ メモリを搭載し、ビデオ メモリの問題がない GTX 1060 を購入することもできます。 GTX 1060 が高すぎる場合は、4G ビデオメモリを搭載した GTX 1050 Ti を使用できます。 4GB は少し小さいですが、ディープラーニングを始めるには十分です。一部のモデルでは調整を行うとパフォーマンスが向上します。 GTX 1050 Ti はほとんどの Kaggle コンテストに適していますが、一部のコンテストではプレイヤーに有利にならない可能性があります。

<<:  ゲームにおけるディープラーニングと AI

>>:  幾何学を利用してディープラーニングモデルのパフォーマンスを向上させることは、コンピュータービジョン研究の未来です。

推薦する

...

...

...

「模倣学習」とは、決まり文句を使うことだけでしょうか?説明: 微調整 + 130億のパラメータ Orca: 推論能力はChatGPTに匹敵

ChatGPT APIが公開されて以来、多くの研究でChatGPTやGPT-4などの大規模基本モデル...

COVID-19パンデミックの影響を受けて、世界のエッジAIソフトウェア市場は急速な発展を遂げている

MarketsandMarkets は、エッジ AI ソフトウェア市場が 2019 年から 2021...

次世代産業用ロボットに対する人工知能(AI)の影響

[[389728]]大量生産される製品に対する需要が高まるにつれ、製品には高品質で信頼性が高く、より...

建設技術におけるAIは潜在性があるが、まだ現実にはなっていない

建設業界がテクノロジーの導入において他の業界に遅れをとっているのは周知の事実です。 2018年の米国...

ネイチャー誌の記事で、ウォータールー大学のチームが「量子コンピュータ+大規模言語モデル」の現状と将来についてコメントした。

今日の量子コンピューティング デバイスをシミュレートする際の主な課題は、量子ビット間で発生する複雑な...

...

トランスフォーマー+強化学習、Google DeepMindは世界を知覚するロボットの脳となる大きなモデルを作る

ロボットの学習方法を開発する際に、大規模で多様なデータセットを統合し、強力で表現力豊かなモデル (T...

...

世界シミュレーターはAGIの最終成果、12の状況予測です!チーフエキスパートによる1万語の記事がソラのマイルストーンを専門的に解釈

私はここ数日、Sora の技術レポートと Sora のさまざまな技術分析を読んできました。基本的な視...

...

2021 年の自然言語処理 (NLP) のトレンド トップ 10

2020 年は、ディープラーニングベースの自然言語処理 (NLP) 研究にとって忙しい年でした。最...

工業情報化省科学技術局長:チップOSはAIを突破しなければ単なる空想に過ぎない

国内メディアの報道によると、12月17日に開催された2019年中国スマート企業発展フォーラムで、工業...