375美元矿卡FPGA跑通Qwen3.5-9B,每秒2.4个token
我一直想试试在FPGA上跑LLM推理,但一直没太大理由——毕竟9B-27B这个规模上没有前沿级模型(3.6 27B确实很不错,但还不足以给我动力)。3.8发布后,它在这个尺寸下能做到的事让我印象深刻。于是我开始找能装下模型的便宜FPGA。我找到了SQRL FK33(280美元,8GB HBM2,约400GB/s带宽),想着可以用多卡来跑。在那之前,我一直在更小的AXU3EG FPGA开发板上做llama.c推理,实现主要靠Opus 4.8(CC),并参考了一些架构建议。
用FK33,75MHz下能跑3.5 9B,约2tok/s(更高时钟需要更多RTL优化和更高核心电压)。我决定用Fable/Opus5、5.5/Kimi K3来做Qwen实现。FK33验证通过后,我决定入手SQRL Jungle Cat退役矿卡FPGA(375美元,两块FK33通过8条GTY通道互连,以太网加载bitstream),因为它能带来更高的prefill和生成性能(每片XCVU35P的fabric是FK33的两倍)。不过Jungle Cat Lite板卡似乎没有办法更快加载权重,除非我做PCB树脂处理,而且它缺少GTY通道的时钟生成(这个容易修,焊几个元件就行,元件也容易搞清楚)。
我正在朝着4x XCVU35P(32GB HBM2)的理想FPGA推理引擎努力,但那需要定制载板。一些结果:
Qwen3.5-9B INT4在2x FK33上,75MHz(流水线切分,卡间残差由主机承担):
- Prefill:约6 tok/s(256-token提示词),约5.5 tok/s(2.3k-token提示词)
- 生成:开始时约3.2 tok/s,2-3k上下文时约2.4 tok/s
- 输出与llama.cpp逐层对照验证过
估算:Qwen3.8-27B INT4(基于实测9B逐算子性能曲线建模;这些都还没实际跑过):
- 一块Jungle Cat(2x VU35P)按FK33设计原样跑75MHz:短上下文约2 tok/s prefill、约1.1 tok/s生成,16k时约0.5 tok/s。
- 同样两个die,RTL按更大die调整尺寸后仍跑75MHz:约6 tok/s prefill、约3 tok/s生成(两个die间张量并行约5.5 tok/s),16k时约1.1 tok/s。
- 调整尺寸后跑200MHz(随时钟线性扩展):约16 tok/s prefill、约8 tok/s生成(张量并行约15 tok/s),16k时约3 tok/s。
- 4x VU35P四路张量并行跑200MHz:短上下文约25 tok/s prefill、约25 tok/s生成,16k时约10 tok/s,完整262k上下文时约1 tok/s。
两个die大约在45k上下文就到顶了,因为再往后27B的KV缓存就放不进14.5GB权重旁边了;完整262k需要四个die。
总的来说,目前这是个挺有趣的项目,主要精力放在琢磨怎么给Jungle Cat板卡加载权重上,也欢迎大家提建议。另外,我之前花60美元和75美元收了两块BC-250,性价比离谱。附上BC-250给Jungle Cat编程的照片。觉得这里的人可能会对这个项目感兴趣。
另一件我一直想做的事是类似tinytapeout的东西(把RTL做成ASIC,这样时钟能上去、功耗能下来),所以我让Opus 5.5估算了一下,不过是基于TSMC 2023年的工艺节点哈哈:在TSMC 2023年的N3节点上,配上六组当年的HBM3(4.9 TB/s),这套RTL做成ASIC后跑2GHz,27B模型短上下文大约294 tok/s,16k时106 tok/s,262k时10 tok/s,功耗大约125-340W!
仓库地址(MIT许可):https://github.com/Nero7991/llm.vhdl
―― 高赞评论(帖子共33条讨论)――
[+29] u/Redditiskindasilly:这活儿太猛了。这真的就是推动这个爱好前进的那种事!干得漂亮!
[+15] u/Open-Adhesiveness-86:如果还没做的话,值得把每个计算tile固定到它本地的HBM伪通道上。VU35P内置的AXI交换矩阵可以路由到任何地方,但跨堆栈的横向跳转会严重损耗有效带宽。另外,75MHz远低于HBM控制器的时钟,所以每个单元需要多个宽端口才能接近饱和那400GB/s。
[+15] u/geldonyetich:我完全敬佩这种粗犷的硬件方案,但天哪,地毯是静电的老巢,你比我勇敢多了。
[+6] u/davernow:非常酷
[+6] u/Shoddy-Tutor9563:既然FPGA允许对任何数学运算做超高效的实现(或者说硬件加速),我一直在等有人做这种事。祝好运,期待更多更新。
[+4] u/lolzinventor:好板子。几乎值得买一块看看Opus/Fable还能用这种板子做些什么。现在用VHDL跑本地模型(Qwen/Qwen3.8-27B)可能也会不错?
[+4] u/TripleSecretSquirrel:太棒了,真酷!我觉得自己懂得够多,知道FPGA推理有潜力变得非常惊人、带来突破性性能,但远不够自己动手做,向你致敬!
[+3] u/stormy1one:这个sub就是为这种项目而存在的。关注了!
[+3] u/Primary_Minimum5033:对完全放得进内存的小模型来说会很棒,但我觉得算力会成为问题所在。
[+3] u/GalacticDistances:你考虑过把它用作主模型的独立MTP草稿模型吗?
[+3] u/bearishmarket:这太美了。
[+2] u/GruuMasterofMinions:说实话我在考虑搞一台旧手机。至少12GB内存,越多越好。找一台摔坏的、只要主板还能用的。然后看看能跑什么,我估计7B在上面能跑得不错(20tok/s),功耗还很低。
不知道,还在纠结,想在本地找点划算的东西。
目前大多看到8GB和DDR4,但我会瞄准DDR5和骁龙8。