記事

FPGA ニューラルネットワーク

FPGAデバイス上でのニューラルネットワークの推論

はじめに

世界の接続性が高まるにつれて、増え続けるデータが発生します。機械学習は、正しく適用されれば、このデータの中のパターンと相互作用を抽出するために学習することができます。FPGAテクノロジーはその一助となります。 

機械学習は人工知能(AI)の一分野であり、アルゴリズムとデータを使って、あるタスクを実行できるシステムを作るものである。システムの精度は、より多くのデータを処理することで徐々に向上していきます(学習と呼ばれます)。十分な精度が得られたら、このシステムは訓練されたとみなされ、他の環境に配備されるようになります。ここで、同じ学習されたアルゴリズムが結果の統計的確率を推論するために使われる。これは推論と呼ばれる。

ニューラルネットワークは、多くの機械学習タスクの基盤を形成している。これらは複数の計算層で構成され、その相互作用はトレーニング中に学習された係数に基づいています。 このホワイトペーパーでは、FPGAデバイスでのニューラルネットワークの推論に焦点を当て、その長所と短所を説明します。

機械学習への深化

CNNホワイトペーパーを読む

のFPGAアクセラレータ製品による畳み込みニューラルネットワークの高速化をご覧ください。BittWare

2D FFTホワイトペーパーを読む

こちらをクリック

BWNNホワイトペーパーを読む

OpenCLを使用して、YOLOv3機械学習フレームワークを当社のFPGAカードに適合させた方法について説明します。

BWNNホワイトペーパーを読む

こちらをクリック

FPGAの機能

ニューラルネットワークの中心には、膨大な数の計算が積み重ねられている。これらの計算は、何千ものニューロンの相互作用をシミュレートし、何かが発生する統計的な可能性を生成します。画像認識の場合、これはネットワークが特定の物体を観察しているという確信度である。もちろん、間違っている場合もある。例えば、人間は無生物の中に人間の顔を見ることがよくあります。したがって、どのようなシステムであっても、間違った結果に対してある程度の耐性が必要になります。これらの結果の統計的性質は、最終的な答えがアプリケーションの許容範囲によって定義された精度の満足できるレベルにとどまる限り、計算のダイナミックレンジを変化させる機会を提供します。結果として、推論は使用するデータ型に工夫を凝らす機会を提供する。

データ幅は、多くの場合8ビット整数に、場合によっては1ビットにまで小さくすることができます。FPGAは、ほとんどすべてのサイズのデータ型を処理するように構成することができ、計算効率をほとんど低下させることはありません。

ニューラルネットワークの推論に関して、ASIC、CPU、GPU、FPGAにはそれぞれ利点と欠点があります。カスタムチップ(ASIC)は最高の性能と低コストを実現しますが、狙ったアルゴリズムにしか対応できないため、柔軟性がありません。 一方、CPUはプログラミングの自由度は高いですが、計算スループットは低くなります。GPU の性能は通常 CPU よりもはるかに高く、大きなバッチ番号、つまり多くのクエリを並列に処理する場合には、さらに向上します。レイテンシーが重要なリアルタイム・システムでは、入力データをバッチ処理できるとは限りません。これはFPGAがややユニークな分野の1つで、ニューラルネットワークを単一のクエリに最適化しつつ、高レベルの計算資源利用を実現することができます。ASICが存在しない場合、FPGAはレイテンシ重視のニューラルネットワーク処理に理想的と言えます。

インライン処理

図 1 は、FPGA の典型的なアクセラレータ・オフロード構成を示 しています。ここでは、係数データは、接続されたディープ DDR または HBM メモリにロード更新され、ホストから転送されたデータを処理するときに AI 推論エンジンによってアクセスされます。バッチ数が多い場合は、一般的に GPU が FPGA を上回りますが、バッチ数が少ない場合や低レイテンシがシステムの最優先の制約である場合は、FPGA が魅力的な選択肢になります。

図1:FPGA推論オフロード

FPGAが特に優れているのは、AI推論と他のリアルタイム処理要件の組み合わせです。 FPGAのリコンフィギャブルIOは、高速イーサネットからアナログ・センサデータまで、さまざまな接続性の問題に合わせてカスタマイズできます。このため、FPGAはASICが存在しないエッジで複雑な推論を行うことができるユニークな存在となっています。また、デバイスは同じIOを使用して、アプリケーションに最適な構成で複数のFPGAを接続したり、既存のサーバー接続に適合させたりすることができます。接続は特注でも、イーサネットのような標準規格に従ってもよい。

図2 : データパイプラインラインでの推論活用の一例

インライン処理では、ニューラルネットワークはラインレートでデータを処理することができればよい。この場合、FPGAは希望のスループットに追いつくために必要なリソースのみを使用し、それ以上は使用しません。これにより消費電力が削減され、暗号化などの他のタスクのためにFPGAの領域が余ることになる。

暗号化

データプライバシーが重要視される分野では、機械学習の大きな機会がある。例えば、医療診断では、クラウドアクセラレーション の恩恵を受けることができる。しかし、患者のデータは機密であり、複数のサイトに分散されている。サイト間でやり取りされるデータは、少なくとも暗号化されている必要があります。FPGA は、復号化、AI 処理、暗号化のすべてを非常に低いレイテンシで実行できます。重要なのは、暗号化されたデータがFPGAの外に出ることがないことである。

 

図3:FPGAを用いて、クラウド上の復号・暗号化ロジックで推論を行う。

最終的には、このような機密データを処理するためには、FPGAが有望視されている同形式暗号化が望ましいと言えます。

さまざまなニューラルネットワークのトポロジーに対応した最適化

ニューラルネットワークには様々な種類があります。最も一般的なのは、畳み込みニューラルネットワーク(CNN)、リカレントニューラルネットワーク(RNN)、そして最近ではGoogleのBERTのようなトランスフォーマーベースのネットワークの3つです。 CNNは主に画像認識アプリケーションに使用され、本質的には行列処理問題である。RNNやBERTは音声認識などの問題によく使われ、GPUのようなSIMDプロセッサーではCNNモデルより効率が悪くなります。

FPGA のロジックは、GPU などのハードウェアにアルゴリズムを合わせるのではなく、ニューラルネットの処理要求に最適なように再構成することができます。これはバッチ数が少ない場合に特に重要で、バッチサイズを大きくすることが、GPUへの依存度が高いネットワークを処理するための解決策になることがよくあります。

コンピュートとメモリの帯域幅をバランスよく調整

Resnetは、多くの畳み込み層から構成されるニューラルネットワークとしてよく引用される。しかし、これらの層のほとんどは、一般的な要件である1セル(1×1)のみのステンシルを使用している。Resnetの最終層では、小さなステンシルサイズが可能なデータの再利用量を減らすため、重みとデータ計算の比率を非常に高くする必要があります。これは、可能な限り低いレイテンシ、すなわちバッチサイズ1を達成しようとすると悪化します。最高のパフォーマンスを達成するためには、計算とメモリのバンド幅のバランスをとることが重要です。幸い、FPGA は DDR、HBM、GDDR、内部 SRAM メモリなど、さまざまな外部メモリをサポートしているため、正しいデバイスを選択すれば、特定のワークロードに対して演算に対する帯域幅の最適な組み合わせを選択することができます。

図4: Resnet (224×224) の行列サイズ増加時のピーク帯域要件 (32bit Floating point data)。

図4は、Resnet 50のマトリックスサイズが8×8、16×16、24×24、32×32、48×48、64×64の場合、ピーク帯域幅の要件が増加している様子を示しています。この帯域幅は、ウェイト、入力および出力データが外部メモリに読み書きされることを想定しています。オンチップSRAMメモリは、一時的な蓄積を保存するために使用されます。ネットワークがFPGAのメモリ内に収まる場合は、メモリとの間で一貫して機能データの読み書きを行う必要はない。この場合、外部データ帯域幅は無視できるほど小さくなります。int8実装の場合、必要な帯域幅の数値は4で割ることができます。

FPGAベンダ

Bittware はベンダーにとらわれず、Intel、Xilinx、AchronixのFPGA技術をサポートしています。どのFPGAベンダーも低レイテンシ、低バッチ数の実装で優れた性能を発揮しますが、コンフィギュラブルロジックの適用にはデバイスごとに微妙な差異があります。

Achronix Speedster 7t

アロニクスの最新FPGAは、ニューラル・ネットワーク処理を高速化するために設計されたIPも備えています。このデバイスの各機械学習プロセッサ(MLP)は、4~24 ビットの計算をサポートする 32 個の乗算アキュムレータ(MAC)を処理します。Bfloat16 などの非標準の浮動小数点フォーマットがサポートされています。Achronix社のMPLとIntel社のテンソル・コンポーネントの主な違いは、非結合型SRAMに対してより高いクロック速度を確保する目的で、SRAMメモリを密結合している点です。

Bittware S7t-VG6は、2,560 MLPS のSpeedster7t を搭載し、61 TOps (int8 または bfloat16) の理論ピーク性能を実現しています。

図5:Achronix社のMLP3

図6 :BittWare S7t-VG6

インテルStratix 10 NXとAgilex

IntelStratix 10 NX は、専用のテンソル演算ブロックを搭載した Intel 社初の FPGA である。テンソル IP は、10×3 ブロックのデータに対してテンソル演算を実行するように最適化されている (図 5)。このIPは、int4、int8、Block FP12、Block FP16のデータ型をフルに活用して動作するよう設定することができる。

図 7:Stratix 10 Tensor IP1

Startix10 NX デバイスの理論上のピークスループットを表 1 に示す。

Stratix 10 NXは、512GB/sの集約帯域幅を提供するHBM2メモリも搭載しており、利用可能なすべての処理に十分な帯域幅を確保することができます。

高精度 パフォーマンス
INT4 286 TOPS
INT8 143トプス
ブロックFP12 286 TFLOPS
ブロックFP16 143 TFLOPS

表 1:Stratix 10 理論上のピークスループット

Stratix 10 NXは、アクセラレータカードの心臓部です。 Bittware 520NX アクセラレータカードです。最大600Gbpsのボード間バンド幅を持ち、複数のカードをまとめて接続したり、センサーデータへの通信に利用することができます。

IntelAgilex シリーズはテンソルDSPコンポーネントを搭載していませんが、そのDSPはStratix 10から改良され、より多くのデータ型をサポートし、低精度演算のスループットを向上させています。IntelAgilex M-SeriesのResnet-50の理論性能は88 INT TOPSです。2

図8 :BittWare 520NX

AMD ザイリンクス Versal

ザイリンクスのVersalデバイスは、FPGAのプログラマブルロジックに統合されていない独立したAIエンジンを持っています。バーサルのAIエンジンはFPGAと密接に結合していますが、FPGAの他の部分とは独立して動作しています。AIエンジンとFPGAロジックの間では、NOC(Network On Chip)を使ってデータが受け渡されます。

図9:Versal AIエンジン

BittWare's AX-840pは、AMD Xilinx® の 7nm Versal Premium ACAP デバイスを搭載した PCIe Gen5 アクセラレータ・カードです。このカードは、最大2x 400GとデュアルPCIe Gen5 x8を提供し、計算負荷の高いワークロードに対応します。

ニューラルネット用FPGAのプログラミング

AIエンジニアは、PyTorch、TensorFlow、Caffeなど、ニューラルネットワークを記述するために多くの異なる高レベルのツールを使用しています。幸いなことに、AIコードをFPGAにコンパイルするAPIが用意されており、エンジニアは既存のツールフローを引き続き使用することができます。

Bittware は、この機能を持つパートナー企業を持っています。

EdgeCortix 

EdgeCortix ダイナミック・ニューラル・アクセラレータ(DNA) は、高い計算能力、超低レイテンシー、スケーラブルな推論エンジンを備えた深層学習推論用の柔軟な IP コアで、Agilex FPGA を搭載したBittWare カードに搭載されています。

Megh Computing 

VASスイート Megh ComputingのVAS Suiteは、TCOを考慮しながら、エンタープライズクラスのパフォーマンスで実用的な洞察を必要とするセキュリティおよびシステムインテグレータのためのインテリジェントなビデオ分析ソリューションです。

結論

最新のFPGAは、低レイテンシーで小バッチサイズの推論を得意とする非常に高性能なAIプロセッサーです。他の処理要件と組み合わせることで、ユニークな機能を持つAIシステムを構築するための強力なプラットフォームとなります。BittWare は、消費電力、処理能力、IO の要件に基づき、適切な FPGA システムを選択できるよう、お客様を支援する準備が整っています。

FPGAアクセラレータカードの詳細についてはこちら→。