开放TPU(openTPU)是一个由AI开发的开源AI加速器,它将自动架构竞赛(auto-arch-tournament)项目的经验应用于AI加速器,提出两个问题:AI智能体在硬件设计上能走多远,能否造出运行自身推理的芯片。在FPGA卡上,otpu-chat运行着LFM2.5-230M模型,otpu-smi显示卡的利用率与DRAM带宽。该项目也是学习用的,整个加速器位于单体仓库中,包含SystemVerilog硬件设计、指令集、位精确模拟器、内核语言及其编译器,以及驱动PCIe卡的主机软件。
正文
开源 AI 加速器,由 AI 开发。
openTPU 将 auto-arch-tournament 的经验带到了 AI 加速器领域。它提出两个问题:AI 智能体在硬件设计上能走多远,以及它们能否造出运行自身推理的芯片。

学习之地
openTPU 也是一个学习项目。整个加速器放在一个小型 monorepo 中,可以端到端读完:硬件设计(SystemVerilog)、指令集、位精确模拟器、内核语言及其编译器,以及驱动真实 PCIe 卡的主机软件。如果想理解 AI 加速器如何从 Python 里的矩阵乘法一直到底层连线,这里是个好起点。
成果
该设计在浪潮 YPCB-00338 卡(Xilinx Kintex-7 xc7k480t,两个 DDR3 通道)上用真实权重运行了十个现代模型,卡片产生的 token 与模拟器逐位相同。
| 模型 | 权重 | 解码(设备) | 解码(实际) | 预填充(设备) | 解码时 DRAM | | --- | --- | --- | --- | --- | --- | | LFM2.5-230M | int8 | 59.0 tok/s | 52.3 tok/s | 295.6 tok/s | 14.5 GB/s (峰值85%) | | LFM2.5-230M | 4-bit, int8 头 | 85.8 tok/s | 82.1 tok/s | 335.4 tok/s | 14.1 GB/s (82%) | | Qwen3-0.6B | int8 | 21.6 tok/s | 21.3 tok/s | 92.1 tok/s | 14.4 GB/s (84%) | | Qwen3-0.6B | 4-bit, int8 头 | 31.3 tok/s | 30.7 tok/s | 103.4 tok/s | 13.9 GB/s (82%) | | Qwen3.5-0.8B | int8 | 17.6 tok/s | 16.3 tok/s | 61.4 tok/s | 14.5 GB/s (峰值85%) | | Qwen3.5-0.8B | 4-bit, int8 头 | 24.5 tok/s | 23.3 tok/s | 66.7 tok/s | 14.1 GB/s (83%) | | Gemma 4 E2B | 4-bit, int8 头 | 10.57 tok/s | 10.53 tok/s | 32.1 tok/s | 15.6 GB/s (92%) | | Gemma 4 E2B | 4-bit, 4-bit 头 | 12.14 tok/s | 12.09 tok/s | 29.9 tok/s | 15.5 GB/s (91%) | | LFM2-2.6B | int8 | 6.05 tok/s | 6.03 tok/s | 21.4 tok/s | 16.1 GB/s (94%) | | LFM2-2.6B | 4-bit, int8 头 | 10.96 tok/s | 10.93 tok/s | 20.6 tok/s | 15.8 GB/s (93%) | | SmolLM3-3B | int8 | 5.00 tok/s | 4.99 tok/s | 21.1 tok/s | 16.0 GB/s (94%) | | SmolLM3-3B | 4-bit, int8 头 | 8.74 tok/s | 8.72 tok/s | 22.8 tok/s | 15.7 GB/s (92%) | | Phi-4-mini (3.8B) | int8 | 3.99 tok/s | 3.98 tok/s | 13.8 tok/s | 16.0 GB/s (94%) | | Phi-4-mini (3.8B) | 4-bit, int8 头 | 6.56 tok/s | 6.55 tok/s | 15.0 tok/s | 15.8 GB/s (92%) | | Qwen3.5-2B | int8 | 8.02 tok/s | 8.00 tok/s | 38.2 tok/s | 16.0 GB/s (94%) | | Qwen3.5-2B | 4-bit, int8 头 | 12.09 tok/s | 12.03 tok/s | 41.7 tok/s | 15.8 GB/s (92%) | | Qwen3.5-4B | 4-bit, int8 头 | 5.88 tok/s | 5.87 tok/s | 12.9 tok/s | 15.7 GB/s (92%) | | Gemma 4 E4B | int8, 4-bit 头及 down 0-23 | 3.78 tok/s | 3.75 tok/s | 14.8 tok/s | 16.0 GB/s (94%) |
在卡上测得:前三个模型于 2026-09-29 用生产镜像 deploychampe698dcd7;LFM2-2.6B 等于 09-30,Qwen3.5-2B/4B 和 Gemma 4 于 10-01 用 build B(deployfused133c79c5707a)。Build B 解码快 8-9%,DRAM 峰值占用 91-94%;Qwen3.5-4B 的 int8 镜像超 4 GiB。
- 镜像:主 e698dcd 跑在 133.33 MHz,所有模型共用一个比特流,含 LiteDRAM 控制器(内存核内小 CPU 校准)、四列脉动矩阵单元和流引擎。DDR3-1066 峰值 17.1 GB/s。
- 主机:卡片插在 opentpu(Intel Core i7-4790)。
- 方法:decode 为 512 token 提示后 64 个贪婪 token,device 只计加速器周期,wall 加主机;prefill 为设备上 512 token 提示。
- DRAM 流量来自卡自身计数器。
- Gemma 4 E2B 每层嵌入表留卡上(3.5-3.6 GiB 镜像),int8 放不下;E4B 表在主机,每 token 拷 11 KB 行(3.96 GiB 镜像)。卡自身解码循环更快:E2B 11.01/12.73 tok/s,E4B 3.83 tok/s。
- 每种配置都与模拟器逐 token 匹配。
日志流式回传时(96 token),4-bit 解码更快(设备/实际 tok/s):LFM2 89.5/84.5;Qwen3 33.7/33.3;Qwen3.5 24.6/24.2;LFM2-2.6B 11.07/11.02;SmolLM3-3B 8.92/8.89;Phi-4-mini 6.69/6.67。
前一生产镜像 se-cand3 用 Xilinx MIG、两列矩阵和 120.755 MHz。新镜像:decode 各配置误差 2.3% 内,受 DRAM 限制,LiteDRAM 读 82-85% 峰值;prefill 快 1.3 倍(Qwen3.5)到 2.0 倍(LFM2 4-bit);启动后核内 CPU 12 秒校准双通道,无主机参与。
大于卡片 4 GiB 的 MoE 模型,专家从主机流式传输。卡路由并计算专家,专家放 DRAM 分层槽,主机按链路速率拷缺失专家。2026-10-01 build B 测得,卡自身解码循环、4-bit 专家、int8 头:LFM2.5-8B-A1B(8.5B 参数,1.7B 激活)160 token 上 10.6 tok/s,98.5% 命中,每 token 流 5.2 MB;Qwen3.5-35B-A3B(34.7B,3.0B 激活)3.95 tok/s,62% 命中,每 token 153 MB(PCIe 1.41 GB/s)。两者与模拟器逐位匹配。
4-bit 权重用 FP4 值加两级块缩放,每权重 4.25 位,LM 头保持 int8 保精度。字节每 token 减约三分之一,解码速度升 40%(Qwen3.5)到 45%(Qwen3、LFM2)。
主机几乎不干预。LFM2 和 Qwen3 卡运行一次编译的解码程序,从寄存器读位置并查自身嵌入和 RoPE 行,日志在卡运行时流回;主机每 token 加 0.17-0.30 ms(opentpu 上 0.45-1.3 ms)。Qwen3.5 解码同理;预填充仍在主机编译每块程序。
工作原理
内核在 ol 中写成 mlp、attention 等,经 @ol.jit 和语言/编译器处理布局、仿射循环寻址与融合,生成 ISA(每指令 8×32 位)。ISA 模拟器(Python)与 RTL(SystemVerilog)互验相同位,RTL 经 Vivado 比特流跑在 Kintex-7 xc7k480t FPGA 卡上,通过 PCIe 连主机工具 otpu-chat、otpu-smi、otpu-lens。
机器设计刻意简单。定序器每周期发一条指令给几个单元:DMA 搬数据,矩阵单元乘从 DRAM 流的 int8 权重,向量单元做 fp32 数学,量化器转回 int8。无缓存无隐藏调度,每次数据搬移都是指令,所以轨迹精确显示周期去向。指令集详见 docs/isa.md。
内核类似 Python 函数,用 @ol.jit 装饰,通过 ol.load 载入、ol.quantize 量化、ol.dot 矩阵乘、ol.all_gather 收集、ol.store 存储,编译器将其转成指令。
因每次搬数据都是指令,运行轨迹能解释速度。Lens 分析器从 RTL、模拟器或卡记录运行,在浏览器用 roofline、时间线和逐指令表展示。

试用
除卡片外都能在笔记本运行。安装:pip install -e . 及 pytest、torch、transformers,跑 pytest 做 RTL 测试需 Verilator 5。下载 LFM2.5-230M 后可用 otpu-chat --model lfm2 --backend isa 在模拟器聊天。
有卡时,在 boards/ypcb-00338 执行 make bit 建比特流,JTAG 加载,然后 sudo otpu-setup 和 otpu-chat --backend board。docs/board.md 有详细流程。
| 命令 | 功能 |
| --- | --- |
| otpu-chat | 与 Qwen3-0.6B、LFM2.5-230M (--model lfm2)、Qwen3.5-0.8B (--model qwen35)、LFM2-2.6B (lfm2-2.6b)、SmolLM3-3B (smollm3)、Phi-4-mini (phi4-mini) 或 Qwen3.5-2B/4B (qwen35-2b, qwen35-4b) 聊天 |
| otpu-smi | 温度、功耗、DRAM 带宽和单元利用率 |
| otpu-lens | 记录运行并在分析器打开 |
| otpu-selftest, otpu-diag | 检查卡片工作 |
推荐阅读起点
- docs/isa.md:指令集,其他都建于其上。
- opentpu/kernels 和 docs/compiler.md:内核如何变指令。
- opentpu/isasm.py:模拟器即规范。
- rtl/:硬件,从 rtl/top/otpu_top.sv 开始。
- docs/lfm2.md、docs/qwen35.md、docs/llama.md、docs/benchmarks.md:完整模型及周期去向。
- docs/board.md:物理卡,从时钟到 PCIe。
下一步
- DRAM 最后几个百分点:解码受 DRAM 效率限制,读 82-85% DDR3-1066 峰值,正优化 LiteDRAM 路径。
- 时序裕量和面积:设计勉强收敛 133.33 MHz(WNS +0.032 ns),Vivado 竞赛在优化裕量和面积。解码受 DRAM 限,更快时钟主要帮预填充。
- 更快预填充:四列脉动矩阵已在生产镜像,预填充仍受矩阵单元乘法率限制。
贡献
欢迎 issue 和 PR,多数只需 Python 和 Verilator 而非 FPGA。改 ISA、模拟器或 RTL 必须过 pytest,性能声明需说明测量方法。
许可证
Apache License 2.0。
评论
讨论整体在两层情绪之间拉扯:一边把 openTPU 当作递归自我改进已经跑通的证据,甚至开玩笑说天网要来了;另一边冷处理标题里那句「AI 能自己开发推理硬件」,强调真正做决定的仍是拿着提示词的人。分歧主轴与其说是技术,不如说是功劳算谁的。
人类才是设计者,AI 只是被指挥的工具
- 直接拆解标题的措辞:是人先让 LLM 搭出硬件设计的仿真环境,再在人给出提示的前提下让它按约束去调优,整条链路里 AI 并没有自主立项(较多人) > 人类先让 LLM 去搭一个硬件设计的仿真环境,再提示它在这个环境里按约束优化设计。(@mbgerring)
- 用类比补刀:推土机、挖掘机和压路机现在也能修路,但这不叫机器自己会修路(较多人)
递归自我改进这条环路确实已经闭合
- 项目从每秒只出几个 token,靠一轮轮自我改进循环,在小模型上做到了 80+ tok/s,这个提升幅度被拿来当作「它真的在自举」的证据(较多人)
- 反讽语气很受欢迎:嘴上喊着递归自我改进会毁灭人类,手上展示的正是它在干活(较多人)
- 「Colossus 正在建造 Colossus II」「天网诞生」这类玩笑代表了现场情绪,但没人真的把它当预测(少数人)
性能有没有超过人类设计的硬件,才是前提问题
- 要先有改进才谈得上递归自我改进,所以第一步该问的是这块硬件跟人类设计的 SOTA 相比到底如何、算不算进步(较多人)
芯片设计正被 LLM 加速,硬件会迎来指数级增长
- 芯片开发工具在最近几个月里跨越了几个世纪,等 LLM 设计的下一代 CPU/GPU 上市,硬件侧会看到指数级收益(较多人)
- 关键变量不是模型本身,而是有经验的用户把 LLM 引向一个有品味的方向(少数人) > 让一个有经验的用户把 LLM 引向有品味的方向,能榨出的东西很多。(@vatsachak)
不解实验室为什么不直接把前沿模型烧成芯片
- 从纯软件视角发问:性能收益和单次请求成本看起来都划算,为什么没人做,提问者自己也承认既不懂经济账也不懂物理限制(少数人)
真正的下一步是内存带宽和可重构架构
- 已有 SOTA 模型能造出跑模型的加速器,卡点转移到内存吞吐是否够让模型跑起自己;更值得追问的是,能不能给 AI 一块大 FPGA,让它设计出专门吃可重构特性红利的模型架构(少数人)
担心软件开发者未来还剩什么位置
- 看完这条会忍不住问「未来做软件开发者意味着什么」(少数人)
有价值的补充
- 有人翻开源 RTL 后注意到里面的浮点运算并不正确,于是一个反直觉的结论浮出来:LLM 推理对浮点正确性的要求可能远低于硬件工程师的直觉
- 硬件成本被追问:看起来跑在一块约 300 美元的 FPGA 板上,但缺乏更多细节,也没人给出与 ASIC 方案的公平对比
- 有人分享自己正在用 vibecoding 的方式做一个开源 AV1 硬件解码器,说明这条路径已经在个人项目层面扩散