FeSens/openTPU
An open-source AI accelerator, developed by AI: RTL, ISA, simulator, compiler and profiler in one repo. Runs Qwen3, LFM2.5 and Qwen3.5 on a Kintex-7 PCIe card.
openTPU – オープンソースAIアクセラレータ
概要
openTPUは、小型のXilinx Kintex‑7 FPGAカードを中心に構築された、フルスタックのオープンソースAIアクセラレータです。リポジトリには以下が含まれます:
- ハードウェアRTL (SystemVerilog)(アクセラレータコア用)
- 命令セットアーキテクチャ (ISA) および ビット精度のPythonシミュレータ
- カーネル言語とコンパイラ(高レベルのPythonカーネルをISA命令に変換)
- ホストソフトウェア (
otpu‑chat,otpu‑serve,otpu‑smi,otpu‑lensなど)(PCIe経由でFPGAを駆動し、推論インターフェースを提供) - 検証、性能測定、プロファイリングのためのドキュメント、テスト、スクリプト
このプロジェクトは、実際のアクセラレータ(物理的なPCIeカード上で動作)であると同時に、学習プラットフォームでもあります。スタック全体が小規模であるため、最初から最後まで読み解くことが可能です。
重要性
- エンドツーエンドのオープン性 – 多くの商用AIチップとは異なり、シリコンRTLからPythonレベルの推論APIに至るまで、すべてのレイヤーがオープンソースです。
- ハードウェアを意識したAI研究 – 命令スケジューリング、メモリレイアウト、量子化、さらにはAI生成ハードウェア設計(リポジトリでは、AIエージェントがハードウェアを設計する auto‑arch‑tournament プロジェクトに言及)を実験できます。
- 実用的な性能 – Kintex‑7ボード上で、低電力GPUに匹敵するトークンレートで現代のLLM(230 Mから35 Bパラメータ)を実行でき、DRAM使用率はDDR3のピークに近いです。
- 教育的価値 – モノレポは意図的にシンプルに設計されています。サイクルごとのシングルイシュー・シーケンサー、明示的なDMA命令、そしてサイクルがどこで消費されているかを正確に示すビジュアルプロファイラ (Lens) を備えています。
動作原理(ハイレベル)
Python kernel → otpu.language (ol) → JIT → ISA instructions →
RTL (matrix unit, vector unit, DMA, quantiser) → FPGA card → PCIe ↔ Host
- カーネルは、小さなPython DSL (
opentpu.language) で記述されます。 - コンパイラ (
@ol.jit) がそれらを8‑word, 32‑bit ISAに変換します。 - ISAシミュレータ (
opentpu.isasim.py) がリファレンスモデルを提供します。 - ハードウェア上では、RTLがシンプルなシーケンサーを実装し、サイクルごとに1つの命令を実行します。DMA経由でデータを移動し、int8行列乗算、fp32ベクトル演算を行い、結果をint8に量子化して戻します。
- ホストツールは、すべてのモデルをサポートする単一のビットストリームをロードし、DRAMを管理します。また、以下を提供します:
otpu-chat– インタラクティブなCLIチャットotpu-serve– OpenAI互換のAPIサーバーotpu-smi– ランタイム統計(温度、電力、DRAM帯域幅)otpu‑lens– フロアプラン上の実行を可視化するプロファイラ
性能ハイライト(READMEより)
| モデル | 重みフォーマット | デコード (デバイス) | デコード (実測) | DRAM帯域幅 |
|---|---|---|---|---|
| LFM2.5‑230M | int8 | 59 tok/s | 52 tok/s | 14.5 GB/s (85 % ピーク) |
| LFM2.5‑230M | 4‑bit | 85.8 tok/s | 82.1 tok/s | 14.1 GB/s |
| Qwen3‑0.6B | int8 | 21.6 tok/s | 21.3 tok/s | 14.4 GB/s |
| Gemma 4 E2B | 4‑bit head | 12.14 tok/s | 12.09 tok/s | 15.5 GB/s |
| Phi‑4‑mini (3.8B) | int8 | 3.99 tok/s | 3.98 tok/s | 16 GB/s |
| Qwen3.5‑35B (MoE) | 4‑bit + int8 head | 3.95 tok/s (エキスパートストリーミング) | – | 1.41 GB/s PCIe |
ポイント: 4‑bit量子化 (FP4 + ブロックスケール) により、重みトラフィックが約⅓削減され、精度低下を抑えつつデコード速度が40‑45 %向上します。DRAM使用率はDDR3ピークの80‑95 %を維持しており、計算よりもメモリがボトルネックとなる設計であることがわかります。
はじめ方(クイックステップ)
# Pythonスタックのインストール(シミュレータはどのノートPCでも動作します)
pip install -e .
pip install pytest torch transformers
python -m pytest -q # RTL対応テストの実行(Verilatorが必要)
# シミュレータでモデルを実行
hf download LiquidAI/LFM2.5-230M --local-dir models/LFM2.5-230M
otpu-chat --model lfm2 --backend isa # シミュレータでのインタラクティブチャット
物理カードの場合:
make bit # FPGAビットストリームのビルド (boards/ypcb-00338)
sudo otpu-setup # JTAG経由でカードをプログラム
otpu-chat --backend board # 実際のアクセラレータと通信
READMEには他のホストコマンド (otpu-serve, otpu-smi, otpu-lens, otpu-selftest) も記載されています。
想定されるユーザー
- 研究者: LLM推論のための新しい量子化スキーム、命令セット、メモリレイアウトの最適化を模索している方。
- 教育者・学生: AIアクセラレータの具体的でオープンなハードウェア例を求めている方。
- ホビーユーザー: FPGAベースの推論に興味があり、安価なPCIeカードでLLMを実行したい方。
- AIハードウェア開発者: 明示的なDMAスケジューリングを備えたシンプルなシストリック行列エンジンのリファレンス実装を探している方。
制限事項 / 未解決の課題
- ハードウェアはKintex‑7 (≈ 200 mm², DDR3) に限定されており、最新のASICには性能が及びません。
- 4 GiBのオンボードDRAMを超えるモデルにはエキスパートオフロードが必要であり、PCIeトラフィックが増加します。
- 4‑bit重みの精度はint8より低く、READMEに詳細なKL‑loss数値が記載されています。
- ビットストリームのビルドにはFPGAツールチェーン (Vivado) の知識が必要です。
まとめ
openTPUは、ハードウェア記述、ISA、シミュレータ、コンパイラ、ホストツールを完備した、完全にオープンなFPGAベースのLLM推論アクセラレータです。小規模なKintex‑7ボード上で数十種類の現代的なモデルを実行し、秒間数十トークンの速度を達成しつつ、学習と研究のためにスタック全体を公開しています。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト