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
- 内核 (Kernels) 使用微型 Python DSL (
opentpu.language) 编写。 - 编译器 (
@ol.jit) 将它们降低为 8‑word, 32‑bit ISA。 - ISA 模拟器 (
opentpu.isasim.py) 提供参考模型。 - 在硬件上,RTL 实现了一个简单的定序器,每个周期执行一条指令,通过 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 堆栈(模拟器可在任何笔记本上运行)
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 的速度,同时将整个堆栈暴露出来以供学习和研究。
相关
- 项目
- 项目
- 项目
- 项目