# 12GB 显卡跑 125B 大模型：真实速度 9-40 tok/s，hugepages 和 PCIe 校准两个坑一次讲完

> Strata 把 125B 的门槛定在 12GB 起步：3500 Ada 12GB 实测 decode 9-10 tok/s 是'能用级'，但加内存、跑 calibrate、配 hugepages 三步做完速度明显提升。两个坑：nr_hugepages 给小了系统静默退化成 4K 页不报错，PCIe 启动探测读数漂移 3 倍必须手动校准。附 12GB 完整配置和选型建议。

![12GB 显卡跑 125B 大模型](/assets/articles/lcz/strata-12gb-125b-guide/hero.jpg)

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

## 先看官方门槛

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

- **显卡：12GB VRAM 起**（NVIDIA RTX 20/30/40/50 系，AMD RX 7900/7800/7700/9060XT/9070 系）
- **内存：32GB 起**（决定能跑哪个量化尺寸，64GB 跑所有尺寸）

架构决定了"能跑"的原理：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 完全用不上大页，性能打折，而且**没有任何报错提示**。

正确姿势：

```bash
# 要配到足够大，实际才给 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`**：

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

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

## 12GB 的完整启动配置（A3000 同款）

- 模型：Qwen3.8-Flash-Next Swift 1.5 **IQ3_XXS**（39.97GiB 专家 arena）
- `--pcie-frac 0.35`（calibrate 校准值）
- `--spec-min-p 0.70`（MTP 投机解码最低概率阈值）
- `--pool-workers 8`（8P+8E 核）
- `--max-context` 按 RAM 定，KV int8
- hugepages 44GiB + 无限 MEMLOCK

## 选型建议：12GB 买不买

- **尝鲜 / 轻任务**：买。12GB 是 Strata 的门槛，125B 级别的模型在你手上能跑起来，体验比 llama.cpp 好 4-5 倍
- **主力使用**：加钱上 16GB（5060 Ti 双卡 layer split 能到 56-63 tok/s），或 24GB 单卡（4090 106 tok/s）
- **已有 12GB 卡**：别急着换——先把内存补到 64GB 双通道以上、跑一遍 calibrate、配好 hugepages，这三步做完速度会明显提升，很多"12GB 太慢"的抱怨是这三步没做

## 数据出处

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


---
来源：https://laobanclaw.top/articles/strata-12gb-125b-guide/（AI 军火库）
