トピックハブ

FPGAでのAIと機械学習

ニューラルネットワークがFPGA上でどう動くか、データフロー型とオーバーレイ型アクセラレータの違い、主なベンダーとオープンソースのフロー、そしてFPGAがGPUやNPUに勝つのはどんな場合かを解説します。

更新 2026年11月13日 · 量子化、hls4ml、FINN、Vitis AI、DPU、FPGA AI Suite、VectorBlox、sensAI

概要

FPGAはニューラルネットワークを、他のあらゆるものと同じ方法で実行します。つまり、固定のメモリスケジュールで供給される固定の演算としてです。そのため、ワークロードが数週間ごとに変わる学習には向きません。一方、エッジでの推論には向いています。ひとつのモデルが何年も動き続け、入力はセンサーストリームで、ピークスループットよりもレイテンシ、電力、決定性が重視されるからです。このハブは、モデルをそもそもFPGAに載せるべきかどうか、載せるとすれば大きく異なる2つのアクセラレータ構築法のどちらを使うかを判断するエンジニアのためのページです。

本稿執筆時点での率直な要約はこうです。大規模言語モデルや、バッチサイズをもった密な行列乗算が支配的なものについては、GPUと専用NPUがワット当たりスループットとソフトウェアの成熟度で勝ります。FPGAが勝つのは、変わったデータ型を使うレイテンシ重視の小さなモデル、センサーやネットワークのパイプラインに直接組み込まれるモデル、そして別の理由ですでに選ばれているデバイス上で動かさなければならないものです。

重要な考え方

量子化がすべて

浮動小数点はFPGAにとって高くつきます。32ビットの積和演算にはDSPスライスに加えて多くのロジックが必要ですが、8ビットの乗算はほとんどのファミリーでDSP 1個に2つ詰め込め、2ビットまたはバイナリのネットワークはDSPをまったく必要とせずLUTだけで済みます。したがって量子化は最適化ではなく、最初の設計ステップです。チャネルごとのスケーリングを伴うINT8は、ほとんどの畳み込みネットワークで精度低下が1%未満です。8ビット未満では量子化を考慮した学習が必要で、FINNとhls4mlのフローはBrevitasとQKerasを通じてこれをサポートしています。見返りは比例的です。ビット幅を半分にすると、収容できる演算量はおよそ2倍になり、メモリ帯域幅は半分になります。そして通常、本当の限界はメモリ帯域幅です。

データフロー型対オーバーレイ型

アーキテクチャは2種類あり、それぞれ異なる問題に適しています。

データフロー型アクセラレータは、ネットワークをハードウェアにコンパイルします。各層がその層の演算量に合わせたサイズの独自ブロックになり、FIFOで接続され、全層が同時に動作します。hls4mlとFINNはこれを構築します。レイテンシはマイクロ秒以下、スループットは設計時に固定され、モデル全体の重みは通常チップ上に置かれます。代償は、1つのビットストリームが1つのモデルにしか対応せず、モデルが収まらなければならないことです。トリガーレベルの物理実験、リンク上の異常検知、キーワード検出、小さな分類器に適した形です。

オーバーレイ型アクセラレータは、固定のプロセッサ的エンジン(独自の命令ストリームをもつシストリックアレイやベクトルユニット)で、ツールがモデルごとにプログラムします。Vitis AI配下のAMDのDPU、Altera FPGA AI Suite、Microchip VectorBlox、Lattice sensAI CNNアクセラレータはすべてオーバーレイ型です。サポートされるモデルならビットストリームを再構築せずに動作し、重みはDDRからストリーミングされ、スケジューリングはコンパイラが処理します。代償は、スパース性や特殊な層の種類を活用できない固定アーキテクチャであり、汎用データパスを通してデータを動かすのにエネルギーを費やすことです。モデルが変わり解像度が高い、カメラ解析に適した形です。

データフロー型conv18 PEconv232 PEconv332 PEdense4 PE各層の間にFIFO。重みはLUT RAMまたはブロックRAM。レイテンシは固定で数マイクロ秒。各層の入力あたり処理時間が等しくなるようにPE数を選ぶ。オーバーレイ型シストリックアレイ例: 16 x 16 INT8 MACビルド時に固定scheduler命令ストリームDDR重み、活性化コンパイラがサポート対象のモデルを同じビットストリームに写像。高解像度では帯域幅律速。
データフロー型(層ごとに1ブロック、重みはチップ上)とオーバーレイ型(固定エンジン1つ、命令と重みはDDRから)

FPGAが勝つ場合、勝たない場合

FPGAが優れた選択になるのは、モデルがデータフロー型に収まるほど小さくレイテンシが仕様そのものである場合、ネットワークがすでにFPGA内にあるデータパス(レーダー受信機、カメラISP、パケット分類器)の中に置かれる場合、データ型が特殊な場合(4ビット、三値、独自の活性化関数)、あるいは製品に10年から15年の供給期間が必要な場合です。間違った選択になるのは、モデルが数十億パラメータのトランスフォーマーである場合、チームにハードウェアエンジニアがいない場合、モデルが毎月変わる場合、あるいは10米ドルのNPU搭載マイクロコントローラで目標を満たせる場合です。電力比較はベンダーに都合のよい動作点で示されることが多いので、決める前に開発ボードで自分のモデルを測定してください。

どこから始めるか

あらゆるアクセラレータの土台にある演算はパイプライン化された積和演算なので、/learn/beginner/03-combinational-logic-and-luts/と/learn/beginner/04-registers-clocks-and-state/から始め、次に重みと活性化の格納のために/learn/beginner/09-memories-block-ram-and-fifos/に進んでください。/topics/dsp/ハブは固定小数点演算を扱っており、これも同じスキルです。最初のアクセラレータとしては、小さなKerasモデルでhls4mlのチュートリアルを実行して生成されたHLSを眺めるか、Kria KV260でVitis AIのサンプルを動かしてみてください。HLSとアクセラレータに関する中級トラックは準備中です。

ツールとベンダー

フロー 種類 提供元 対象 備考
hls4ml データフロー型、HLS Fast Machine Learningコミュニティ(オープンソース) AMD、Altera、Catapult Keras、PyTorch、ONNXを入力。小さなMLPとCNNに最適
FINN データフロー型、RTL/HLS AMDリサーチ(オープンソース) AMD Brevitasで量子化したモデル、1ビットまで対応
Vitis AIとDPU オーバーレイ型 AMD Zynq UltraScale+、Versal、Alveo 最大のモデルズー、INT8
FPGA AI Suite オーバーレイ型 Altera Agilex、Arria 10、Cyclone 10 GX OpenVINOフロントエンド
VectorBlox オーバーレイ型 Microchip PolarFire、PolarFire SoC オープンなSDK、低電力向け
sensAI オーバーレイ型およびコンパイル型 Lattice iCE40 UltraPlus、CrossLink-NX、Certus-NX ミリワット級の常時稼働タスク
EfinityとTinyML コンパイル型、RISC-Vとアクセラレータ Efinix Trion、Titanium TensorFlow Lite Microベース

Achronixはデータセンター向けに機械学習プロセッサブロックを備えたSpeedster7t部品を販売しており、/topics/data-centre-and-acceleration/で扱っています。

よくある間違い

  • 浮動小数点モデルから始めて、精度の問題はツールが解決してくれると期待する。まず量子化し、次に精度を測定し、それから構築してください。
  • TOPSの数値を比較する。ベンダーのピークTOPSはすべてのMACが毎サイクル稼働する前提で、実際のモデルでは達成できません。自分の解像度での実測フレームレートを比較してください。
  • 重みがチップ上に収まるか確認せずに、データフロー型設計をデバイスに載せる。
  • 前処理と後処理を無視する。リサイズ、正規化、非極大値抑制は、ソフトプロセッサに任せたままだとネットワーク本体より時間がかかることがよくあります。
  • アクセラレータを製品そのものと見なす。ソフトウェア統合、モデル更新、ツールのライセンスがライフタイムコストの大半を占めます。

さらに深く

姉妹サイト

学習ループから量子化、サービングまで、この分野のソフトウェア側は当サイトの姉妹サイトで扱っています: AI/ML Field Guideのハードウェアとアクセラレーション。

このトピックの最新ニュース

最近の論文

  • ConvLUT: Rethinking Convolutional Architectures for Ultra-Low-Latency LUT-Based Inference

    M. Andronic, O. Weng, D. Zuberi et al. · arXiv cs.LG · ダイジェスト

    各ニューロンをルックアップテーブルにしてロジックに直接展開するLUTベースのニューラルネットワークは、これまでMLP型のモデルに限られていました。本論文はこの考え方を畳み込みに拡張し、受容野のファンイン問題を抑えるLUTツリー、LUTベースのプーリング層、ハードウェアを意識した枝刈りスケジュールを導入します。MLPerf Tinyのタスク(CIFAR-10、Visual Wake Words、キーワードスポッティング)では、完全展開した設計が約50 ns未満の遅延で動作し、CIFAR-10で従来のLUTベースモデルを精度で20ポイント以上上回りました。モデルは依然として小さく完全展開されているため、汎用の視覚処理ではなく、トリガー型やセンサーフロントエンドのワークロードが対象です。

  • PENSA: A Spatial Accelerator for BitNet b1.58 Inference on an HBM-equipped AMD Alveo FPGA

    K. B. Kalyanasundaram, I. S. Maksymov, P. H. W. Leong · arXiv cs.AR · ダイジェスト

    3値LLMは線形層の乗算を符号制御の加算に置き換えるため、ボトルネックはパック済み重みの供給と結果の縮約に移ります。PENSAはBitNet b1.58 2B4Tモデル全体をAlveo U50上で実行し、TQ1_0形式でパックした重みを8つのHBM疑似チャネルから2つの行列エンジンにストリーミングします。各エンジンは1サイクルあたり1,280個の3値重みを処理し、アテンションと語彙射影はデバイス上に常駐します。104.1 MHzで、コンテキスト長128では58.09トークン/秒、2048では24.60トークン/秒に達し、著者らはこれをXeon E-2356Gベースラインの2.14〜3.14倍としています。UltraScale+製品としてはクロックが低く、比較対象もGPUではなくCPUなので、実現可能性を示した結果として捉えてください。

  • SkipLane: Write-Once, Conflict-Free Accumulation for Zero-Skipping CNN Engines on FPGAs

    A. Saboo, P. Verma · arXiv cs.AR · ダイジェスト

    CNNエンジンでゼロの活性化をスキップすると乗算は節約できますが、圧縮されたウィンドウからの積が異なる出力列に落ちるため、累算が煩雑になります。著者らの以前の設計は行バッファへのリードモディファイライトで積をマージしていたため、疎な入力が密な入力より遅くなっていました。SkipLaneはカーネルの各行に3つの部分和レジスタを持つ専用レーンを与え、完了した列を競合し得ないバンクに退避させ、レーン間の加算をすべて読み出し時まで遅らせるので、読み戻しは一切発生しません。6個のエンジンがPYNQ-Z2上で21.1k LUTにて140 MHzを達成し、LeNet-5をビット精度で実行し、conv1は密なエンジンの1.94分の1のサイクル数で済みます。幅の狭いconv2層では密なエンジンより遅く、疎性の手法が層の形状に大きく依存することを改めて示しています。