strata-12gb-125b-guide/hero.jpg" alt="12GB 显卡跑 125B 大模型">

手里只有 12GB 显存的显卡,能不能跑 125B 的大模型?答案是能——Strata 把门槛定在了 12GB 起步。但"能跑"和"跑得舒服"之间隔着两个坑:hugepages 配错会让 40GB 的内存大页静默退化成 4KB 小页,PCIe 探测读数漂移会让校准参数偏 3 倍。这篇文章把 12GB 档的真实数据、配置和坑一次讲完。

先看官方门槛

Strata 的 README 把门槛写得明明白白:

架构决定了"能跑"的原理:125B MoE 有 24,576 个专家,Strata 把它们分层放——最热门的几个专家在显卡显存里,全量专家在内存里,查找表在 SSD 上。显存不够不是跑不了,是命中率低、更多请求走内存/磁盘,速度降级而不是失败。

12GB 的真实速度:没有神话

RTX 3500 Ada 12GB(i7 13 代 + 64GB DDR5):decode 只有 9-10 tok/s(IQ2_XS 量化)。

这就是 12GB 卡 + 消费级内存带宽的正常水平——比 llama.cpp 直接跑 MoE 还是快得多,但"打字机"体感。

RTX A3000 12GB 笔记本(i7-12850HX + 128GB RAM): 社区没给出展开的 tok/s 数字,但留了最有价值的部分——这台 12GB 卡调优时踩的两个坑(下面详细讲)。

为什么 12GB 这么快? 三个因素叠加:

  1. 专家缓存命中率低:12GB 减去系统占位和 KV 后,能常驻 GPU 的专家就几千个,路由到的专家大部分要 PCIe 往返内存
  2. 内存带宽是第二瓶颈:40-60GB 的专家池在 DDR4/DDR5 上走,单条内存和双条内存差距巨大
  3. PCIe 传输开销:每次专家 miss 都是一次 H2D 拷贝,PCIe 实测带宽比理论值低 3 倍是常态

想体验升级:同样 12GB 卡,把内存从 32GB 加到 64-128GB、保证双通道/四通道,速度能上一个台阶;或者用两张卡做 layer split(下篇讲)。

坑一:hugepages 全有或全无

A3000 那台机器的实测教训:配置 34GiB 的 vm.nr_hugepages,系统静默地给了 4KB 页——39.97GiB 的专家 arena 完全用不上大页,性能打折,而且没有任何报错提示。

正确姿势:

# 要配到足够大,实际才给 2MB 大页(44GiB 才够覆盖 39.97GiB arena)
echo 8800 > /proc/sys/vm/nr_hugepages  # 约 44GiB 的 2MB 页
# 同时需要无限制的 MEMLOCK(systemd 用户单元默认上限 8MiB,要 override)

两个要点:nr_hugepages 给小了系统不会报错,直接退化成 4K 页;RLIMIT_MEMLOCK 被 systemd 限到 8MiB 时锁定会静默失败。

坑二:PCIe 探测读数漂移 3 倍

Strata 启动时探测 PCIe 带宽来决定 pcie_frac 参数,但探测本身不可靠——同一台机器,同一块 x16 Gen4 的卡,不同启动读数 5.8 / 6.9 / 18.5 GB/s。一次低读数会把 pcie_frac 钉在 0.12-0.39(默认 0.55),专家调度策略全错。

正确姿势:别信启动探测,手动跑 tools/calibrate.py:

python tools/calibrate.py
# A3000 那台机器的校准结果:--pcie-frac 0.35 --spec-min-p 0.70 --pool-workers 8

calibrate.py 用真实吞吐测出来的参数比探测值稳。12GB 卡上这个校准尤其重要,因为 PCIe 往返占 decode 时间的比例本来就高。

12GB 的完整启动配置(A3000 同款)

选型建议:12GB 买不买

数据出处

本文数据来自 Strata 官方仓库(github.com/Niko1221/Strata)的 README 与社区 benchmark issue:12GB 笔记本卡调优记录 #489、RTX 3500 Ada 12GB 实测 #6、PCIe 探测漂移 #485、显存档位与 RAM 要求见 README。