bc250
在退役 AMD 挖矿板上跑 LLM:GFX1013 Vulkan 推理调优指南,40-CU 解锁后
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
在退役 AMD 挖矿板上跑 LLM:GFX1013 Vulkan 推理调优指南,40-CU 解锁后
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
图1:BC-250 硬件平台,ATX 电源供电,DIY AIO 散热器,运行 24/7 无故障至今
想象一下:你手里有一块被淘汰的加密货币挖矿板,硬件规格听起来不错——AMD Zen 2 CPU 加 16GB 统一内存的 GPU,源自 PlayStation 5 同款芯片家族。但官方驱动不支持它,ROCm 不认识它,OpenCL 也跑不起来。这种情况下,大多数人的选择是扔进电子垃圾堆。
但这个仓库的作者没有。
作者花了大半年时间,在这块看似无望的硬件上,把 LLM 推理跑到了 78.7 tok/s(Qwen3.5 35B MoE,40-CU 模式)。这不是魔法,而是一份详尽到 330 页的工程复盘笔记,记录了每一个踩坑、每一次调优、每一个性能数据点。
这个仓库的发起人 akandr 是一个长期关注 AMD GPU 底层架构的开发者。2025 年,他注意到 AMD BC-250 这款加密挖矿主板在二手市场出现异常低价——因为加密货币崩盘,大批矿老板清仓甩卖。
BC-250 基于 AMD Cyan Skillfish APU,这颗芯片的 GPU 部分代号 GFX1013,社区普遍认为它是 PlayStation 5 APU(代号 Oberon/RDNA 2)的远亲,但比 PS5 更早一代,有人称之为"RDNA 1.5"。物理上,这颗芯片拥有 40 个计算单元(CU),但出厂固件只解锁了 24 个,另外 16 个被屏蔽。
akandr 买回主板后发现:ROCm 不支持这颗 GPU(计算队列疑似有硬件缺陷),OpenCL 也跑不起来。折腾一番后,他发现 Vulkan 是唯一可用的 GPU 计算路径——Mesa/RADV 驱动绕过了坏掉的计算队列,走图形队列分发计算任务。于是整个技术方案建立在这个"曲线救国"的发现之上。
整个技术栈围绕一个核心约束构建:GFX1013 只能用 Vulkan 做 GPU 计算。在这个约束下,作者选型极为务实:
值得注意的是,作者测试了多种量化格式对推理速度的影响,发现 MoE(混合专家)架构 在这块无矩阵加速器的 GPU 上表现出色——因为生成速度与活跃参数量成正比,35B 总参数量但每 token 只激活 3B 的 MoE 模型,解码速度是同参数密集模型的 6 倍。
BC-250 的默认固件和开源驱动组合有两个内存瓶颈:
解决方案是设置 ttm.pages_limit=4194304(16 GiB)。但作者踩了一个大坑:systemd-tmpfiles 在启动后期会静默覆盖这个值,从 16 GiB 跌回 12 GiB,导致 35B MoE 模型看似"只能跑短上下文",实则是 12 GiB 的软件上限在作祟。作者花了数周才定位到这个问题,详细记录在 §3.3。
GFX1013 芯片物理上就有 40 个 CU,但出厂固件屏蔽了 16 个。社区开发者 S. Duggan 发布了内核模块补丁(duggasco/bc250-40cu-unlock),通过两个 GFX10 配置寄存器重新启用隐藏的 CU。作者独立做了 FP32 精度校验(100M 次无错乘加),然后做了 11 个模型的 24-CU vs 40-CU 配对测试。结果:
这不是简单的 Telegram Bot,而是一个完整的本地 AI 助手框架:文本对话、视觉理解(发图问问题)、音频转录(语音消息自动转文字再回复)、智能路由(多模型选择)。整个系统在 Ollama 的 HTTP API 之上封装,配合 queue-runner v7 实现任务队列和并发控制。330 个自动化任务中,包括每日 benchmark 复跑、健康监控、职业情报扫描等。
stable-diffusion.cpp 在 Vulkan 后端运行 FLUX.2-klein-9B 模型,支持分辨率扩展和视频生成。所有基准测试数据(8 个模型、分辨率扩展曲线、视频生成速度)均有记录。
作者建立了完整的基准测试体系(Phase A–H + Phase D),涵盖:
| 维度 | 测试内容 |
|---|---|
| 生成速度 | 31 个模型的 tok/s、预填充 tok/s、TTFT、VRAM 占用 |
| 质量评估 | 5 任务 × 3 轮,覆盖 32 个模型 |
| 上下文扩展 | 4K→64K 填充上下文阶梯测试 |
| 长上下文质量 | 5-needle 检索、多跳推理、合成任务 |
| 冷启动时间 | 模型加载速度、Signal 聊天延迟 |
| 量化影响 | Q4_K_M vs Q8_0 vs MXFP4 的速度/质量 trade-off |
| Roofline 分析 | 实测 357 GB/s 内存带宽,10.9 FLOP/byte 脊点,所有 LLM 解码量化均落在内存带宽受限区间 |
最值得关注的发现:LLM token 生成在这块 GPU 上是内存带宽受限的——增加更多 CU 只能带来 1.3 倍左右的加速(而非线性),因为瓶颈在 GDDR6 带宽而非算力。这解释了为什么 MoE 架构(低活跃参数量 = 少读内存 = 省带宽)在这类硬件上表现异常出色。
如果你的目标是"下载一个 Docker 镜像然后跑起来",这个项目不适合你。真正的门槛包括:
适合人群:硬件极客、AI 推理系统工程师、对 AMD GPU 底层架构有研究兴趣的开发者。
不适合:只是想本地跑大模型的用户(用 Ollama 官方支持平台更简单)。
作者在文档中坦诚列出了所有已知局限:
这个项目折射出一个更宏观的趋势:消费级/工业级废弃硬件的 AI 推理价值挖掘。
当 H100 一卡难求、当 RTX 4090 价格炒到上天,像 BC-250 这样几百块钱的退役矿卡,在精心的调优下竟然能跑到 Qwen3.5 35B MoE 78 tok/s 的生成速度——这比许多人的 RTX 3090 都要快(3090 在 llama.cpp 里对同等量化模型的实测大约 50-60 tok/s)。
更重要的是,这套方法论可以迁移到其他"非主流" AMD APU 上。Cyan Skillfish 不只有 BC-250 一个形态——PS5 本身、某些嵌入式服务器主板、甚至是某些 OEM 品牌机都有这颗芯片的变体。如果 Mesa/RADV 驱动持续更新,更多 GFX1013 设备可能解锁类似的 AI 推理能力。
这个仓库的真正价值不只是"BC-250 能跑 AI",而是一套在非标准硬件上做 LLM 推理的完整工程方法论:从内存布局调优到 kernel 选择,从 systemd 服务编排到大规模自动化测试,所有踩过的坑都有记录。