テンセントクラウド基礎製品センターとテンセントアーキテクチャプラットフォーム部門で構成されたテンセントクラウドFPGAジョイントチームは、中国初のFPGAクラウドサーバーのディープラーニングアルゴリズム(AlexNet)のエンジニアリング実装を紹介し、ディープラーニングアルゴリズム向けFPGAハードウェアアクセラレーションプラットフォームのアーキテクチャについて議論しました。 背景は次のとおりです。1月20日、テンセントクラウドは国内初の高性能異種コンピューティングインフラストラクチャであるFPGAクラウドサーバーを立ち上げました。これは、長い間大企業のみが使用できたFPGAを、クラウドサービスの形でより多くの企業に普及させるものです。企業は汎用CPUの約40%のコストしか支払う必要がなく、パフォーマンスは汎用CPUサーバーの30倍以上に向上します。具体的な共有内容は以下の通りです。 1. 概要 2016年3月、AI囲碁プログラム「AlphaGo」が人間の囲碁プレイヤーであるイ・セドルに勝利し、人工知能の発展に対する業界の熱意に火がつき、人工知能はますます未来のトレンドに近づいています。 人工知能は、アルゴリズム、コンピューティング、データという 3 つの要素で構成されています。現在最も主流の人工知能アルゴリズムはディープラーニングです。コンピューティング研究所に対応するハードウェア プラットフォームは、CPU、GPU、FPGA、および ASIC です。モバイル インターネットの登場により、ユーザーは毎日大量のデータを生成し、検索や通信などのポータル アプリケーションによって収集されるようになりました。当社のQQおよびWeChatサービスのユーザーが毎日生成する写真の数は数億枚に上ります。これらのユーザーが生成するデータを鉱床、対応するハードウェアプラットフォームを掘削機と見なすと、掘削機の掘削効率がさまざまなコンピューティングハードウェアプラットフォームを比較する基準となります。 当初、ディープラーニング アルゴリズムの主なコンピューティング プラットフォームは CPU でした。CPU は汎用性に優れ、ハードウェア フレームワークが非常に成熟しており、プログラマーにとって非常に使いやすいためです。しかし、ディープラーニング アルゴリズムが計算能力にますます要求するようになり、CPU はディープラーニングの実行にあまり効率的ではないことが判明しました。 CPU の汎用性を満たすために、チップ領域の大部分が複雑な制御フローとキャッシュに使用され、コンピューティング ユニット用の領域はほとんど残っていません。このとき、GPU はディープラーニング研究者の視野に入りました。 GPU の本来の目的は画像レンダリングです。画像レンダリング アルゴリズムのピクセルは比較的独立しているため、GPU は多数の並列コンピューティング ユニットを提供し、同時に多数のピクセルを並列処理できます。このアーキテクチャは、ディープラーニング アルゴリズムで使用できます。 GPU は CPU よりもはるかに高速にディープラーニング アルゴリズムを実行しますが、価格が高く、消費電力が非常に高いため、IDC での大規模展開には多くの問題が生じています。ディープラーニング専用に設計された専用チップ (ASIC) を作成した場合、GPU よりも効率的になるのだろうかと疑問に思う人もいるかもしれません。実際、ディープラーニング専用のチップを作るには大きな不確実性があります。まず、パフォーマンスを上げるには最高の半導体製造プロセスを使用する必要があります。しかし、最新のプロセスを使用してチップを製造するには、1回限りのコストが数百万ドルかかります。資金の問題とは別に、ゼロから設計するためのR&Dチームを編成すると、完全な設計サイクルに1年以上かかることがよくあります。ただし、現在のディープラーニングアルゴリズムは絶えず更新されており、設計された専用チップアーキテクチャが最新のディープラーニングアルゴリズムに適しているかどうかについては大きなリスクがあります。 Google はディープラーニング用に設計された専用チップ TPU を開発したのではないのかと疑問に思う人もいるかもしれません。 Googleがこれまで発表してきた性能対電力比の向上(10倍以上の向上)から判断すると、専用プロセッサの向上の上限にはまだほど遠い。そのため、本質的にはデータビット幅の低いGPUのようなアーキテクチャを採用する可能性が高く、それでも汎用性は高い可能性がある。近年、FPGAは注目を集めています。AmazonやFacebookなどのインターネット企業は、データセンターにFPGAを一括導入し、自社のディープラーニングやクラウドサービスにハードウェアプラットフォームを提供しています。 FPGA は「Field Programmable Gate Array」の略です。その基本原理は、多数のデジタル回路の基本ゲート回路とメモリを FPGA チップに統合することであり、ユーザーは FPGA 構成ファイルを書き込むことで、これらのゲート回路とメモリ間の接続を定義できます。この書き込みは一度限りのものではなく、ユーザーは今日 FPGA を画像コーデックとして構成し、構成ファイルを編集して明日同じ FPGA をオーディオコーデックとして構成することができます。この機能により、データセンターの弾力的なサービス機能が大幅に向上します。そのため、ディープラーニングアルゴリズム用に開発されたチップアーキテクチャはFPGAに素早く実装でき、設計された特定用途向けチップ(ASIC)よりもコストが安くなります。もちろん、パフォーマンスは特定用途向けチップ(ASIC)ほど強力ではありません。 ASIC は一度きりの取引です。設計に問題があった場合、基本的に変更する機会はありません。しかし、FPGA は再構成して、最適なソリューションが得られるまで何度も試行錯誤することができます。そのため、FPGA で開発するリスクは ASIC よりもはるかに小さくなります。 2. Alexnetアルゴリズムの分析 2.1 Alexnetモデル構造 Alexnet モデルの構造を以下の図 2.1 に示します。
モデルの入力は 3x224x224 サイズの画像です。5 (畳み込み層) + 3 (完全接続層) 層モデル構造を採用しています。いくつかの畳み込み層の後に、Relu、プーリング、正規化層が追加されます。最後の完全接続層は、1000 個のカテゴリを出力するソフトマックス層です。表1に示すように、8層すべてで1.45GFLOPSの乗算と加算の計算を実行する必要があります。計算方法を以下に示します。 表2.1 Alexnet浮動小数点演算量 2.2 Alexnet畳み込み演算特性 Alexnet の畳み込み演算は 3 次元です。ニューラル ネットワークの計算式 y=f(wx+b) では、各出力ポイントは 3 次元行列 w(kernel) と x を乗算し、bias(b) を加算することで得られます。下の図2.2に示すように、カーネルのサイズはM = Dxkxkです。行列の乗算と加算の演算を展開すると、y = x[0]*w[0] + x[1]*w[1] +…+x[M-1]*w[M-1]となり、3次元行列演算は1x[M-1]行列に[M-1]x1行列を乗算したものとみなすことができます。
各3次元行列カーネルをNxN平面上でスライドさせて得られたすべての行列Xに対してy=f(wx+b)演算を実行すると、図2.3に示すように2次元平面(特徴マップ)が得られます。水平方向と垂直方向のスライド数は (N+2xp-k)/s+1 (p はパディングのサイズ) で取得でき、スライド操作ごとにポイントが得られます。
Kernel_num 個のカーネルを操作した後、図 2.4 に示すように、パラメータ H = Kernel_num を持つキューブに再編成された特徴マップのセットが取得されます。この畳み込みキューブは畳み込みの最終出力結果です。
3. AlexNetモデルのFPGA実装 3.1 FPGA異種プラットフォーム 図 3.1 は、ヘテロジニアス コンピューティング プラットフォームの原理ブロック図です。CPU は PCIe インターフェイスを介して FPGA にデータと命令を送信し、FPGA は CPU が発行したデータと命令に基づいて計算を実行します。 FPGA アクセラレータ カードには、データをバッファリングするための DDR DRAM ストレージ リソースもあります。
3.2 FPGA上でのCNNの実装 3.2.1 FPGA コンピューティングにオフロードする必要があるものは何ですか? 実際には、すべての計算が FPGA にオフロードされるわけではありません。代わりに、最初の 5 つの畳み込み層のみが FPGA に実装され、完全接続層と Softmax 層は CPU によって完了されます。主な理由は次のとおりです。 (1)全結合層はパラメータが多く、計算負荷は高くない。FPGA演算ユニットが最大の演算性能を達成するには、大きなDDR帯域幅が必要である。 3.2.2 実装モード Alexnet の 5 つの畳み込み層、それらを実装するためのリソースの割り当て方法、主に層並列モードと層シリアル モード: (1)レイヤー並列モード:図3.2に示すように、各レイヤーの計算複雑度に応じて異なるハードウェアリソースが割り当てられます。FPGA内ではすべてのレイヤーの計算が同時に完了し、完了後に計算結果がCPUに返されます。利点は、すべての計算が FPGA 内で一度に完了し、FPGA と DDR DRAM 間で中間結果を直接読み書きする必要がないため、DDR 帯域幅を節約できることです。欠点は、異なるレイヤーで使用されるリソースのバランスをとることが難しく、FPGA 内のレイヤー間でデータをバッファリングおよびフォーマットすることも難しいことです。さらに、このモードはモデルパラメータをわずかに調整することで再設計できますが(たとえば、レイヤー数を増やすなど)、柔軟性が低くなります。
(2)レイヤーシリアルモード:図3.3に示すように、FPGAには単一のレイヤーのみが実装され、異なるレイヤーは時間多重化によって実装されます。メリットとしては、実装時に考慮する必要がある実装レイヤーが 1 つだけであることです。データは DDR から読み込まれ、計算結果は DDR に書き戻されるため、データ制御は比較的簡単です。欠点は、中間結果を DDR に保存する必要があるため、DDR 帯域幅の要件が増加することです。
私たちの設計ではレイヤーシリアルモードを採用しています。CPU、FPGA、DDR間のデータの直接相互作用プロセスを図3.4に示します。
3.2.3 単一層計算のためのPM(処理モジュール)設計 図 3.5 に示すように、データ処理プロセスは次のようになり、すべてのプロセスはパイプライン化されています。 (1)カーネルとデータは2つの独立したチャネルを介してCONVモジュールにロードされる。
3.2.4 CONVモジュールの設計 PM モジュール全体の中で最も重要なモジュールは、データの畳み込みを完了する CONV モジュールです。 図 3.6 に示すように、畳み込み計算は、カーネルとデータの拡張と行列の乗算の 2 つのプロセスに分解できます。 カーネルは拡張したデータを事前に DDR に格納できるため、FPGA 内で再度カーネルを拡張する必要がありません。データ拡張モジュールは、主にカーネルのサイズに応じて入力特徴マップをカーネルとの内積計算が可能な行列に拡張します。データ拡張モジュールの設計は非常に重要です。DDR から読み取られるデータの量を減らして DDR 帯域幅の要件を減らすだけでなく、毎回 DDR から読み取られるデータが連続したアドレスを持つ大きなデータ セグメントであることを保証して、DDR 帯域幅の読み取り効率を向上させます。
図3.7は、乗算器と加算器を直列に接続して実装された行列乗算の実装構造を示しています。2つのベクトルの内積は、1サイクルで1回完了できます。ポート上のデータを更新することで、行列乗算を実現できます。
拡張された行列は比較的大きいです。リソース構造の制限により、FPGA は一度にこれほど多くのベクトル内積を完了することはできません。そのため、大きな行列の乗算は、いくつかの小さな行列の乗算と加算演算に分割する必要があります。分割プロセスを図 3.8 に示します。
R = K/L。入力行列が割り切れない場合は、重み行列とバイアス行列はゼロパディングによって割り切れるように処理されます。 3.2.5 実施プロセスの要点 (1)システム性能を決定する主な要因は、DSPの計算能力、帯域幅、オンチップストレージリソースです。良いデザインとは、これら 3 つの要素をうまくバランスよく組み合わせることです。文献[2]では、システム性能をオフチップメモリ帯域幅およびピークコンピューティング性能に関連付けるルーフライン性能モデルが開発されました。 (2)最高の計算性能を達成するには、FPGAがクロックサイクルごとに可能な限り効率的に動作するようにする必要がある。この目標を達成するには、CONV モジュールと後続の ReLU/Norm/Pooling を非同期的にパイプライン化できる必要があります。カーネル ストレージには、係数をピンポン ロードできるように 2 つのストレージ スペースも必要です。また、次のレイヤーの入力は前のレイヤーの出力に依存し、データが計算されて DDR に書き戻されるまでに一定の時間がかかるため、この時間を 2 つの画像を重ねて計算して重複させる必要があります (Batch=2)。 (3)適切なアーキテクチャを選択するには、計算プロセス中にデータとカーネルをDDRから一度だけ読み取ればよい。そうでない場合、DDR帯域幅の要件が増加する。 3.3 パフォーマンスと利点 図 3.9 に示すように、FPGA ヘテロジニアス コンピューティングを採用すると、FPGA ヘテロジニアス プラットフォームの処理性能は純粋な CPU コンピューティングの 4 倍になり、TCO コストは純粋な CPU コンピューティングの 3 分の 1 になります。このソリューションの比較では、CPU は 2 つの E5-2620、FPGA は 28nm デバイスの Virtex-7 VX690T です。20nm または 16nm デバイスを使用すると、さらに優れたパフォーマンスが得られます。
図 3.11 は、実際のビジネスにおける FPGA の高速化への利用を示しています。図のデータから、FPGA 高速化によってコストを効果的に削減できることがわかります。
[1] Alex Krizhevsky. 深層畳み込みニューラルネットワークによるImageNet分類 |
<<: 今年、データ サイエンティストはどのようなアルゴリズムを使用しましたか?
>>: IntelがBigDLディープラーニングフレームワークをリリース、CPUを使ってGPUを攻撃する予定
【51CTO.com クイック翻訳】機械学習アルゴリズムは、数十行の表や数百万ピクセルの画像など、...
現在、人工知能 (AI) システムは反復的で非創造的なタスクを実行するのが得意ですが、スクリプトから...
負荷分散技術は現在ではどこにでもありますが、基本的にはまだ使用段階であり、その核心は十分に理解されて...
連日続いている「室温超伝導」事件に、新たな続報が続いている。サンプルの半懸濁に成功した華科チームは本...
Google の年末開発者特典が始まりました! Google Gemini のリリースから 1 週間...
誇大宣伝を信じるなら、人工知能 (AI) と機械学習 (ML) はすでに現代の IT インフラストラ...
2023年10月11日、北京の黄金の秋に、第9回HAOMO AI DAYが予定通り開催されました。今...
人形アニメーションの制作は、クリエイターの手描きに頼るアニメーションと比べると、非常に手間のかかる作...
[51CTO.comからのオリジナル記事]最近、UiPathとSF Supply Chainは共同オ...
[51CTO.comからのオリジナル記事] スマートフォンの開発はハードウェアの革新においてボトルネ...