多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

8G显存矿卡如何跑通70B+大模型?CMP 170HX破解与量化实战

8G显存矿卡如何跑通70B+大模型?CMP 170HX破解与量化实战 这块卡是我在二手平台淘的卖家只给了一张图灰扑扑的散热鳍片、双 8-Pin、没有显示输出口。我压根没指望它能亮机更没敢想它能跑大模型。结果等我做完驱动补丁、BIOS 解锁、量化模型这三件事之后它真的在一台普通 PC 上跑起了一个 72B 参数的模型。虽然每秒只能吐一两个 token但对一块 8G 显存的矿卡来说这已经算奇迹了。这篇帖就把整条路线完整记录下来从“破解”CMP 170HX 的各种限制到用 Ollama / llama.cpp 把 70B 模型塞进本地中间穿插实测数据和踩坑过程。先给结论能跑但别指望它有 A100 那种飞一般的速度这套方案的体验更像是在跟一个“打字很慢但脑子正常”的助手聊天。适合预算有限、又想在自己机器上跑超大模型研究 AI 的朋友。如果你手上正好有类似的矿卡或者正为大模型显存发愁这篇应该能帮你少走两个月弯路。1. 为什么是矿卡CMP 170HX 的底细与定位1.1 一张没有显示输出的“计算卡”CMP 170HX 是 NVIDIA 专门为加密货币挖矿出的产品线核心用的是 GA100 大核心和 A100 同宗同源但砍掉了很多东西也刻意屏蔽了视频输出接口。矿老板买它就是为了跑哈希不需要接显示器所以这块卡天生就没有 DP、HDMI 视觉输出。普通玩家一听“矿卡”就皱眉But 正是因为没显示输出、不能打游戏它在二手市场的价格才会跌到离谱。我拿到的这张更特殊板载显存原本出厂是 HBM2e容量在 10GB 左右但被矿场改过 BIOS实际只能寻址到 8GB。所以标题写的“8G 矿卡”指的是破解之前系统能看到的那部分容量。这类卡在二手市场流通不少成色参差不齐但核心思路一样通过刷写修改过的 vBIOS / 固件把原本被藏着掖着的计算能力重新释放出来。1.2 大模型推理更看带宽从 HBM 说起很多人以为跑 AI 大模型只要显存大就行其实不完全对。推理过程中每个 token 的生成几乎都要把模型权重从头到尾读一遍所以显存带宽比显存容量更影响速度。举个例子同样加载一个 7B 的 Q4 量化模型显存带宽高的卡往往比单纯显存大但带宽普通的卡快一大截。CMP 170HX 这类矿卡恰恰是“带宽怪”HBM2e 显存天生就比普通 GDDR6 带宽高不少。如果你手里这张卡能解锁完整带宽哪怕只有 8-10GB用来做部分层 offload 的推理性价比也非常夸张。我开始时也怀疑后来实测发现它在本地推理里的表现一点都不像是个二手矿渣尤其是长文本生成时比同价位的旧游戏卡要稳得多。2. 搞明白“破解”到底破了什么2.1 矿卡上的三把锁所谓“破解”并不是去破什么软件版权而是把硬件厂商和矿场加在卡上的“限制”一层层拆掉。我在 CMP 170HX 上遇到的限制主要有三类驱动白名单官方驱动默认不认 CMP 170HX装上去要么报错要么只能装老旧的专用矿驱计算能力被限制住。解决办法是改 INF 文件在驱动安装时把硬件 ID 填进白名单让系统识别成一张可用的计算卡。显存容量锁矿场为了稳定或分货经常会把 HBM2e 显存寻址锁到 8GB实际多出来的容量出不来。需要刷写修改过的 vBIOS把显存配置解开。核心功耗与散热策略锁原厂 BIOS 的功耗墙、风扇策略都按 7x24 小时挖矿场景调校不一定适合跑大模型。刷完第三方 BIOS 后可以手动拉功耗、调风扇曲线让它在 AI 场景下更听话。需要注意不是每张矿卡都三把锁全有具体要看卡到手后 GPU-Z 显示的 BIOS 版本和硬件 ID。先备份原 BIOS再一步步试别上来就乱刷。2.2 破解前的准备与风险提示刷 BIOS 不像装软件一旦中途断电或者刷错版本卡可能直接变砖。我动手前准备的工具有U盘启动盘、GPU-Z、nvflash 刷写工具、一块能显示画面的亮机卡或核显以及完整备份的原始 BIOS。矿卡没有显示输出所以整个刷写过程必须在另一张卡或核显的辅助下进行。风险必须说清楚这种操作大概率会失去保修而且二手矿卡本来就没保修。我建议别在主力电脑上搞也别用“唯一一张能开机的卡”去试。我当时是专门腾出一台旧机器插上亮机卡后才敢对 CMP 170HX 动手。还有个容易被忽略的点矿卡长期在矿场满载运行散热鳍片里全是灰硅脂也干成了水泥。没清灰就刷高功耗 BIOS 很容易当场过热关机。所以刷 BIOS 之前先拆开清灰、换硅脂这比任何破解步骤都重要。3. 70B 放得进 8G 显存吗量化与卸载3.1 先算账70B 参数模型有多重先把账算明白。一个 70B 参数的模型按不同精度存储体积差异巨大存储格式理论体积说明FP16 / BF16约 140GB原始精度显存门槛极高INT8 量化约 70GB精度损失较小但依然很大4-bit 量化Q4_K_M约 40GB社区常用质量可控2-bit 量化Q2_K约 25GB体积最小但质量下降明显所以就算量化到 Q440GB 也远远超过 8GB。这也是很多人第一反应“不可能”的原因。但别忘了一件事显存不够还有内存。3.2 核心思路分层卸载让 CPU 当“外置显存”llama.cpp / Ollama 这类推理框架支持“分层卸载”机制也就是把模型切成一层一层的 Transformer Block一部分层放 GPU 显存剩下的层放在系统内存里CPU 负责计算。GPU 显存不够时只要系统内存够大照样能把完整模型加载起来。这个思路相当于把 CPU 当成一块“外置显存”用。推理时每生成一个 token都要把所有权重读一遍如果大部分权重在系统内存里瓶颈就落在内存带宽上。一台普通双通道 DDR4-3200 的机器理论带宽约 40GB/s一个 40GB 的模型每 token 大约要读一遍极限也就每秒 1 个 token 左右。这是硬件决定的不是优化能救回来的。之前我一度以为 8GB 显存连“塞一层”都费劲后来实测才发现Q4 量化后的 72B 模型每层差不多 0.5GB。把上下文 KV Cache 算进去大概能放 8-12 层到 GPU。也就是说8GB 显存并不白搭它能把整模型最吃延迟的一部分计算搬到高带宽显存里剩下的交给 CPU 内存。最终整体可能只有 0.8-1.2 token/s但对于研究、调试、跑后台任务来说完全够用。4. 从刷卡到跑模型完整本地部署实操4.1 系统准备与驱动安装我用的系统是 Ubuntu 22.04相比 Windows 少很多驱动签名和权限问题。开机先进 BIOS把 Above 4G Decoding 打开再把 Resizable BAR 设为 Enabled这个对矿卡的显存寻址和大块内存映射很重要不然后续加载大模型很容易报错。装驱动前把改好白名单的 INF 文件和驱动包准备好。这里的做法不复杂解压官方驱动找到对应型号的 INF 文件把 CMP 170HX 的硬件 ID 加进去然后以“自定义安装”方式装驱动。装完重启在终端跑一遍nvidia-smi如果能看到 GPU 型号、显存容量、驱动版本就说明驱动这关过了。我当时第一次刷完驱动系统只显示 8GB心里还咯噔一下后面刷完第三方 vBIOS 再重启显存才正常识别出来。4.2 用 Ollama 部署 72B Q4 模型Ollama 是目前最简单的大模型部署工具一条命令就能把 GGUF 模型拉下来跑。安装命令curl -fsSL https://ollama.com/install.sh | sh装完先别急着跑我们要告诉它“GPU 层数最多放几层”。编辑 Ollama 服务配置sudo mkdir -p /etc/systemd/system/ollama.service.d sudo tee /etc/systemd/system/ollama.service.d/override.conf EOF [Service] EnvironmentOLLAMA_GPU_LAYERS10 EOF然后重启服务sudo systemctl daemon-reload sudo systemctl restart ollama接着拉取并运行模型。我选的是 Qwen2 72B 指令版 Q4_K_M 量化ollama pull qwen2:72b-instruct-q4_K_M ollama run qwen2:72b-instruct-q4_K_M这里 OLLAMA_GPU_LAYERS10 的意思是只把前 10 层放到 GPU剩下的全留在 CPU。这个值可以根据显存情况微调我试过 12 层显存直接溢出不工作降到 10 层才稳定。你可以用ollama ps实时查看当前显存和内存占用。4.3 换用 llama.cpp 手工控制Ollama 封装得太好有些参数反而不容易透出来。如果你想更细地控制直接用 llama.cpp 更顺手。源码编译git clone https://github.com/ggerganov/llama.cpp cd llama.cpp cmake -B build cmake --build build -j然后把下载好的 GGUF 模型放到某个目录启动服务./build/bin/llama-server \ -m ./models/qwen2-72b-instruct-q4_K_M.gguf \ -ngl 10 \ --ctx-size 4096 \ --host 0.0.0.0 \ --port 8080-ngl是 GPU Layers 的缩写控制放到显存的层数--ctx-size是上下文长度4096 对 8G 显存来说比较稳妥。启动完成后llama.cpp 会在 8080 端口开一个 OpenAI 风格兼容接口用任意 API 工具都能访问。4.4 实测数据与结果这张卡跑 Qwen2 72B Q4_K_M 的典型资源占用如下指标实测数值GPU 显存7.8GB / 8GB系统内存约 35GBgeneration 速度约 0.9 token/sprefill 速度15-25 token/s视上下文长度波动显卡功耗200-240W显存温度85°C 左右首 token 延迟取决于输入长度短问题通常 5-10 秒长文档分析可能要等一分钟以上。但从第二个 token 开始就稳定了适合跑离线总结、批量改写、后台任务这类场景。5. 常见问题与排查技巧实录5.1 驱动打不上或者刷完 BIOS 黑屏这个问题十个里面能遇到九个。先确认是不是没有显示输出CMP 170HX 本身没有视频接口所以别指望它插上显示器就能亮。一定要用核显或者另一张亮机卡辅助。如果驱动一直提示“找不到兼容硬件”多半是 INF 白名单改得不对。去设备管理器看硬件 ID跟 INF 里写的是否完全一致有时候同一型号的矿卡会有多个子设备 ID漏一个就认不出来。刷 BIOS 变砖也别慌先用 nvflash 把备份的原始 BIOS 恢复回去再重新走流程。我第一次就是刷完忘了保存原有的 ECC 配置来回折腾了两个小时才找到原因。5.2 显存不够、速度太慢该怎么调显存溢出的报错基本都是CUDA error: out of memory。解决办法只有一个方向减小-ngl或OLLAMA_GPU_LAYERS的值。这个值不是越大越好建议从 0 开始每两次加一跑到报错再退一格这样能找到当前显存的最大稳定值。如果速度只有 0.3 token/s 左右先看系统内存是不是跑在单通道。别笑单通道和双通道的带宽差距巨大对 offload 推理的影响直接翻倍。再把 CPU 的散热和供电检查一下CPU 长时间满载时降频也会拖慢速度。最后也别盲目追求 72B如果实际任务用 32B 能解决推理速度会快好几倍。5.3 供电、散热与接口细节矿卡的供电接口很实在我这张是双 8-Pin满载功耗 200 多瓦。电源如果太老没有两根独立的 PCIe 供电线建议换一根转接线别用一根线串联两张卡那种接线方式。散热是矿卡最需要留心的地方。二手矿卡的风扇长期在 100% 转速下工作轴承损耗大很多到手后转速上不去。我清完灰、换了硅脂还把风扇策略调成温度超过 80°C 才拉满整体噪音降了不少。如果你打算长时间挂机跑任务机箱风道里至少保证有前后两个风扇否则显存温度轻松冲破 95°C。6. 值不值得折腾账单和个人体会把整块成本算了一下CMP 170HX 矿卡大概 500 元为了跑模型又加了 32GB DDR4 内存条约 400 元其他零件用的是旧电脑。一张 24GB 显存的新卡动辄好几千而这套方案用不到一千块钱就能在本地跑 70B 模型。虽然速度不快但胜在便宜、可控、不依赖云端。我个人折腾完最大的体会是所谓的“破解”其实是在理解硬件限制之后用工程手段把一层层限制拆掉。刷 BIOS、改驱动白名单、调量化参数每一步都在解决一个具体问题跑通那一刻的成就感不亚于配好一台新机器。这套玩法并不适合所有人如果你追求开箱即用建议直接买大显存卡如果你享受折腾也愿意接受每秒一两个 token 的“慢工出细活”那二手矿卡这条路确实值得走一趟。最后再分享一个小技巧跑大模型时记录下每次调整-ngl和量化等级后的速度与显存占用形成自己的小表格。很多参数组合看似眼熟实际放到不同硬件上差异很大有数据在手后面换模型、换卡都能少踩坑。
返回列表