AMD BC-250 与低成本计算探索

Reddit r/LocalLLaMA 新闻

摘要

一位开发者逆向工程了 AMD BC-250 板卡(回收的 PS5 APU),解锁全部 40 个计算单元,通过自定义 HIP 内核在 LLM 推理中实现了显著的性能提升。该项目展示了低成本 AI 计算的潜力。

自从 MI50 价格飙升以来,我花了好几个月寻找被废弃或低估的计算载体——现在出现了搭载独立板卡的回收 PS5 APU:Zen 2、16 GB 统一 GDDR6、RDNA 2(gfx1013)。它们在 eBay 上售价 50-150 美元,出厂时只启用 40 个 CU 中的 24 个。我产生了好奇,开始阅读 amdgpu 源代码。原来有两个寄存器控制 CU 可用性: - `CC_GC_SHADER_ARRAY_CONFIG`:告诉驱动有多少 CU 存在 - `SPI_PG_ENABLE_STATIC_WGP_MASK`:告诉着色处理器将工作发往何处 这两个寄存器在驱动初始化路径中都可写入,从而清除硬件寄存器。两者必须同时设置,单独设置任何一个都不起作用: pp512 数据(Vulkan、llama.cpp): | 配置 | tok/s | 功率 | 温度 | |--------|-------|-------|------| | 24 CU @ 1500 MHz | 230 | 55W | 71C | | 40 CU @ 1500 MHz | 372 | 125W | 83C | | 40 CU @ 2 GHz | 466 | 181W | 96C | 我还在为 gfx1013 开发自定义 HIP 内核,因为既没有现成的 HIP 内核,也没有 tensile 中的优化。HIP 在 token 生成上已经击败 Vulkan(9B 模型上 48 vs 30 tok/s),预填充仍然落后但正在缩小差距。Vulkan 后端使用 fp16 FMA 反量化,这很难与 HIP 的 int8 dp4a 路径匹敌,但我们正在构建一个自定义 MMQ 内核,重新组织数据流以匹配 RADV 编译器的工作方式。初步结果很有希望,在 Q6_K 上相比基准 HIP 已经提升了 +63% 的 pp。 仓库:https://github.com/duggasco/bc250-40cu-unlock 如果你有这种板卡,加入 Discord:[discord.gg/8eZfFWhczz](http://www.discord.gg/8eZfFWhczz)
查看原文

相似文章