CPU、GPU、NPU、FPGA はディープラーニングでどのように優位性を発揮するのでしょうか?

CPU、GPU、NPU、FPGA はディープラーニングでどのように優位性を発揮するのでしょうか?

AIの応用が広まるにつれ、ディープラーニングは現在のAI研究と応用の主流の方法となっています。膨大なデータの並列計算に直面して、AI の計算能力に対する要件は増加し続けており、ハードウェアの計算速度と電力消費に対する要件も高まっています。

[[276629]]

現在、汎用 CPU に加えて、ハードウェア アクセラレーションとして使用される GPU、NPU、FPGA などのチップ プロセッサが、ディープラーニングのさまざまなアプリケーションでそれぞれの利点を発揮していますが、どれが優れているのでしょうか。

顔認識を例にとると、基本的な処理フローと対応する機能モジュールに必要な計算能力は次のように配分されます。


アプリケーション間にこのような区別があるのはなぜですか?

何がポイントですか?

答えを知るには、まず CPU、GPU、NPU、FPGA の原理、アーキテクチャ、パフォーマンス特性を理解する必要があります。

まず、汎用CPUのアーキテクチャを見てみましょう。

CPU

CPU (中央処理装置) は、非常に大規模な集積回路です。その主な論理アーキテクチャには、制御ユニット Control、演算ユニット ALU、キャッシュ メモリ (Cache)、およびそれらの間のデータ (Data)、制御、ステータス接続を実現するバス (Bus) が含まれます。

簡単に言えば、

計算ユニット、制御ユニット、およびストレージユニットです。

アーキテクチャ図は次のとおりです。


CPU はフォン・ノイマン・アーキテクチャに準拠しており、その中核はプログラムの保存と順次実行です。 CPU アーキテクチャでは、ストレージ ユニット (Cache) と制御ユニット (Control) を配置するために多くのスペースが必要です。これに比べて、コンピューティング ユニット (ALU) はごくわずかな部分しか占めないため、大規模な並列コンピューティング機能には非常に限られており、論理制御に優れています。

CPU は大量の行列データに対して並列計算を実行することはできませんが、GPU は実行できます。

グラフィックプロセッサ

GPU (Graphics Processing Unit) は、グラフィック プロセッサとも呼ばれ、複数のタスクを同時に処理するために特別に設計された、多数のコンピューティング ユニットで構成された大規模な並列コンピューティング アーキテクチャです。

GPU が並列コンピューティング機能を実現できるのはなぜでしょうか? GPU にも基本的なコンピューティング ユニット、制御ユニット、ストレージ ユニットが含まれていますが、次の図に示すように、GPU のアーキテクチャは CPU のアーキテクチャとは異なります。


CPU と比較すると、CPU チップ スペースの 20% 未満が ALU ですが、GPU チップ スペースの 80% 以上が ALU です。つまり、GPU にはデータの並列処理用の ALU がより多くあります。

GPU Titan X および CPU Intel i7-4790K (4 GHz) 上で Darknet を使用して構築されたニューラル ネットワーク モデル AlexNet、VGG-16、および Restnet152 を使用した ImageNet 分類タスクの予測結果:


注: 上記のデータは https://pjreddie.com/darknet/imagenet/#reference から取得されています。

これは、ニューラル ネットワーク データの処理において GPU が CPU よりもはるかに効率的であることを示しています。

要約すると、GPU には次の特性があります。

1. マルチスレッドは、マルチコア並列コンピューティングのインフラストラクチャを提供し、コアの数が非常に多いため、大量のデータの並列コンピューティングをサポートできます。

2. メモリアクセス速度が速くなります。

3. 浮動小数点演算能力の向上。

したがって、大量のトレーニング データ、大規模な行列、およびディープラーニングにおける畳み込み演算には、CPU よりも GPU の方が適しています。

GPU は並列コンピューティング機能に優れていますが、単独では動作できず、CPU との連携処理が必要です。ニューラル ネットワーク モデルの構築とデータ ストリームの送信は、依然として CPU 上で実行されます。同時に、消費電力が高く、サイズが大きいという問題もあります。

GPU の性能が高くなるほど、サイズが大きくなり、消費電力も高くなり、価格も高くなるため、一部の小型デバイスやモバイルデバイスでは使用できなくなります。

そのため、小型、低消費電力、高コンピューティング性能、高コンピューティング効率を備えた専用チップ NPU が誕生しました。

非営利

NPU (Neural Networks Process Units) ニューラル ネットワーク処理ユニット。 NPU の動作原理は、人間のニューロンとシナプスを回路レベルでシミュレートし、ディープラーニング命令セットを使用して大規模なニューロンとシナプスを直接処理することです。1 つの命令でニューロンのグループの処理が完了します。 CPU や GPU と比較して、NPU はシナプス重みを通じてストレージとコンピューティングを統合し、動作効率を向上させます。

NPU は、生物学的ニューラル ネットワークを模倣して構築されています。CPU および GPU プロセッサは、ニューロン処理を完了するために数千の命令を必要としますが、NPU は 1 つまたは数個の命令で完了します。そのため、ディープラーニング処理の効率性において明らかな利点があります。

実験結果によると、同じ消費電力で、NPU のパフォーマンスは GPU の 118 倍です。

GPU と同様に、NPU でも特定のタスクを完了するために CPU の共同処理が必要です。次に、GPU と NPU が CPU と連携してどのように動作するかを見てみましょう。

GPUアクセラレーション

現在、GPU は並列行列乗算と加算演算のみを実行し、ニューラル ネットワーク モデルの構築とデータ ストリームの送信は引き続き CPU で実行されます。

CPU は重みデータを読み込み、コードに従ってニューラル ネットワーク モデルを構築し、CUDA や OpenCL などのライブラリ インターフェイスを介して各層のマトリックス演算を GPU に送信して並列計算を実現し、結果を出力します。その後、CPU は、ニューラル ネットワーク出力層の計算が完了するまで下位ニューロン グループのマトリックス データ計算をスケジュールし、最終結果を取得します。


CPU と GPU 間の相互作用プロセス:

1. GPU情報を取得し、GPU IDを設定する

2 ニューロンパラメータをGPUにロードする

3 GPUがニューラルネットワークコンピューティングを加速

4. GPU計算結果を受け取る

NPUアクセラレーション

NPU は GPU アクセラレーションとは異なり、各層のニューロンの計算結果をメインメモリに出力する必要がなく、ニューラルネットワークの接続に応じて次の層のニューロンに渡されてさらに計算されるため、コンピューティング性能と消費電力が大幅に向上しました。

CPU は、コンパイルされたニューラル ネットワーク モデル ファイルと重みファイルを専用チップに渡し、ハードウェア プログラミングをロードして完了します。


操作プロセス全体を通じて、CPU は主にデータのロードとビジネス プロセスの制御を実現します。その相互作用プロセスは次のとおりです。

1. NPU専用チップデバイスを開く

2. モデルファイルを渡し、モデルタスクを取得する

3. タスクの入力情報と出力情報を取得する

4. 入力データをモデルメモリにコピーする

5. モデルを実行して出力データを取得する

NPUに加えて、FPGAも消費電力と計算能力で競合します。

プログラマブルロジック

FPGA (Field-Programmable Gate Array) は、フィールドプログラマブルゲートアレイと呼ばれ、ユーザーが自分のニーズに応じて繰り返しプログラムすることができます。 CPUやGPUと比較すると、高性能、低消費電力、ハードウェアプログラマビリティなどの特徴があります。

FPGA の基本原理は、多数のデジタル回路の基本ゲート回路とメモリをチップ内に統合することであり、ユーザーは FPGA 構成ファイルを書き込むことで、これらのゲート回路とメモリ間の接続を定義できます。この書き込みは一度限りのものではなく、定義を繰り返し書き込んで構成することができます。

FPGA の内部構造を下図に示します。


FPGA のプログラマブル ロジック ブロックには、LUT (ルックアップ テーブル) とトリガーで構成される多くの機能ユニットが含まれています。 FPGA は、命令体系の変換なしにこれらのゲート回路を通じてユーザーのアルゴリズムを直接実装し、実行効率が高くなります。

比較してみましょう:

CPU/GPU/NPU/FPGAのそれぞれの特徴


各チップアーキテクチャの特徴のまとめ

/CPU/

トランジスタの70%をキャッシュの構築に使用し、制御ユニットの一部を使用しています。演算ユニットが少なく、論理的な制御演算に適しています。

/GPU/

ほとんどのトランジスタは、計算の複雑さが低く、大規模な並列計算に適した計算ユニットの構築に使用されます。主にビッグデータ、バックエンドサーバー、画像処理に使用されます。

/NPU/

ニューロンは回路層でシミュレートされ、ストレージとコンピューティングはシナプスの重みを通じて統合されます。1 つの命令でニューロンのグループの処理が完了し、操作効率が向上します。主に通信、ビッグデータ、画像処理の分野で使用されます。

/ FPGA /

プログラマブル ロジックは計算効率が高く、基盤となる IO に近く、冗長なトランジスタと配線によってロジックを編集できます。本質的には、命令や共有メモリを必要とせず、CPU や GPU よりも計算効率が高くなります。主にスマートフォン、携帯機器、自動車などに使用されています。

最も一般的な部分として、CPU は他のプロセッサと連携してさまざまなタスクを完了します。 GPU は、ディープラーニングのバックグラウンド サーバーでの大規模データ トレーニングや行列畳み込み演算に適しています。 NPU と FPGA は、パフォーマンス、面積、消費電力などの面で大きな利点があり、ニューラル ネットワークの計算をより高速化できます。 FPGAはハードウェア記述言語を用いて開発されるのが特徴で、GPUやNPUに比べて開発の敷居が高いです。

各プロセッサにはそれぞれ長所と短所があると言えます。さまざまなアプリケーションシナリオでは、ニーズに応じて長所と短所を比較検討し、適切なチップを選択する必要があります。

<<:  顔認識の背後にあるセキュリティリスクを誰が負担するのでしょうか?

>>:  AI 導入を迅速に進める 5 つの方法

ブログ    
ブログ    

推薦する

人工知能応用シナリオのレビューと展望

2020 年は特別で忘れられない年であり、人工知能にとっても同じことが言えます。 [[374502]...

MITチームがCOVID-19の早期警告に役立つ可能性のある咳分析AIを開発

無症状感染者の存在により、COVID-19の検出と制御は非常に困難になります。 しかし、MITの研究...

...

...

よりスケーラブルになるにはどうすればよいでしょうか?

この記事は公開アカウント「Reading Core Technique」(ID: AI_Discov...

人工知能の分野に参入する際に Python が好まれる言語なのはなぜですか?

実際、すべてのプログラミング言語の中で、Python は新しいお気に入りではありません。最初のバージ...

清華大学の学生が強化学習プラットフォーム「TianShou」を開発:数千行のコードが完成、オープンソース化

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

自然言語処理の究極の方向性: 自然言語処理におけるディープラーニングの 5 つの利点

[[206924]]自然言語処理の分野では、ディープラーニングによって、より多くのデータが必要でも言...

CIOがAIのビジネスケースを作成する方法

近年、AI プロジェクトに対する組織の関心は着実に高まっています。調査会社ガートナーの調査によると、...

Google Loon の AI が開発者を驚かせる理由

北京時間3月5日、人工知能を使ったアルゴリズムが予想外のトリックで問題を解決しようとしており、開発者...

ロボット犬をDIYするにはどれくらいの費用がかかりますか?価格は900ドルと安く、スタンフォード大学が開発し、コードはオープンソースです

たった 900 ドルで四足ロボット犬を DIY できる?スタンフォード学生ロボットクラブの新メンバー...

人工知能、モノのインターネット、新エネルギーなどへの投資ガイド。

12月21日、百度と華為は包括的な戦略提携を発表した。両者は中国市場とユーザーエクスペリエンスに重...

...

PHPソートアルゴリズムの完全実装

PHP を学習しているときに、PHP のソート問題に遭遇することがあります。ここでは、PHP のソー...

AI+クラウドランディングBeifei Technology、Amazon Pollyの助けを借りて教育モードの変化を促進

[51CTO.comより引用] 時代のトレンドである最先端技術として、人工知能はニュースという形で人...