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 的 token 速率运行一系列现代 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
  1. 内核 (Kernels) 使用微型 Python DSL (opentpu.language) 编写。
  2. 编译器 (@ol.jit) 将它们降低为 8‑word, 32‑bit ISA。
  3. ISA 模拟器 (opentpu.isasim.py) 提供参考模型。
  4. 在硬件上,RTL 实现了一个简单的定序器,每个周期执行一条指令,通过 DMA 移动数据,执行 int8 矩阵乘法、fp32 向量运算,并将结果量化回 int8。
  5. 主机工具加载支持所有模型的单一比特流,管理 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 堆栈(模拟器可在任何笔记本上运行)
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 是一个完全开放、基于 FPGA 的 LLM 推理加速器,提供了完整的硬件描述、ISA、模拟器、编译器和主机工具。它在小型 Kintex‑7 板上运行数十种现代模型,达到每秒数十个 token 的速度,同时将整个堆栈暴露出来以供学习和研究。

相关

  • 项目
  • 项目
  • 项目
  • 项目