小显存别碰 INT8/BF16:为什么又慢又费 SSD
一个很常见的误区:显卡小(8-12GB),但为了「画质更好」去下 INT8(19.5-34GB) 甚至 BF16(40-66GB)权重。结果就是——每一条视频都在折磨你的硬盘,而且慢到怀疑人生。 这篇文章把账算清楚,然后给你正确选择。
先理解三层内存:显存 → 内存 → 硬盘
ComfyUI 跑 H3 时,权重必须站在显存里才能被计算。放不下的部分会经历这样一条链:
- 显存(VRAM):放得下的部分正常计算;
- 系统内存(RAM):放不下的权重以「每步搬运」的方式经 PCIe 送进显存。PCIe 4.0 实际约 24GB/s, PCIe 5.0 约 48GB/s——听起来快,但这是每一步都要搬一次的代价;
- 硬盘(页文件 / 页缓存):当内存也装不下时(例如 32GB 内存要同时容纳 14.6GB 文本编码器 + 19.5GB 主模型),系统只能把数据放到硬盘。页文件读写只有 NVMe 的 3-5GB/s—— 比内存慢 10-20 倍。
算一笔账:12GB 显卡跑 INT8 主模型(19.5GB),每步约有 10-13GB 权重需要搬运。 走 PCIe 约 +0.5 秒/步;一旦落到硬盘,就变成 +2.5-3.5 秒/步——4 步加速也救不回来。
为什么「伤 SSD」:两种模式,两种代价
| 模式 | 数据在哪 | 硬盘行为 | 后果 |
|---|---|---|---|
| 默认(匿名内存) | 权重副本占用内存 | 页文件写入 + 读取(每步换入换出) | SSD 写入量上升 → 真实消耗 TBW 寿命;速度最慢 |
--fast-disk |
权重放在页缓存(可回收) | 主要是读取(每步从 NVMe 重读) | 写入很少(不伤寿命),但读放大同样让速度暴跌 |
社区实测:8GB 显卡 + 小内存跑一条片段,单次采样从硬盘读取可达 270GB, 而写入只有 0.04GB(fast-disk 模式);另一组「16GB 内存 + 46GB 页文件」的默认模式测试中, 5 秒视频要 389 秒、10 秒 768 秒、15 秒直接失败——页文件被反复擦写。
SSD 寿命的直观数字
以主流 1TB TLC 固态(保修写入量 600TBW)为例,默认模式下一页文件写入按每条约 30-50GB 计(含换页反复),100 条视频约消耗 0.5-0.9% 的健康度; 如果你每天跑 10 条,一个月就是 1.5-2.7%。对 QLC 硬盘还要再翻倍。 而换用合适的量化 + 足够内存,这个数字可以直接变成 0。
有没有例外?BF16 在什么情况下才值得
BF16 全精度(61.7GB)在消费级显卡上基本没有实用场景:显存放不下、内存放不下、 每步要搬运 50GB 以上,最终速度是 INT8 的几分之一。真正需要 BF16 的是 96GB 显存 + 128GB 内存以上的工作站——对绝大多数人,量化损失(INT8 实测约 0.9%, W4A8 约 0.073 相对误差)换来的是 3-5 倍的速度。
正确选择表(按显存档位)
| 显存 | 推荐量化 | 内存底线 | 预期行为 |
|---|---|---|---|
| 8GB | GGUF Q3(8.9GB) | 16GB + 48GB 页文件(NVMe) | 540p 短线,5-8 分钟/条,可接受 |
| 8GB + 想更好 | GGUF Q4(11.6GB) | 32GB | 权重更多驻留内存,页文件压力小 |
| 12GB | W4A8(12.5GB)或 GGUF Q4 | 32GB(64GB 更佳) | 每步搬运量比 INT8 少一半,速度稳定 |
| 16GB | 剪枝 INT8(20.97GB)+ 4 步加速 | 64GB 或 --fast-disk | 540p-768p 可用;SSD 只读不写 |
把 --fast-disk 加进启动参数是「保 SSD」的关键一步:它让权重从「匿名内存」
变成「可回收的页缓存」,写放大基本消失,代价是内存不足时读盘变慢。
用计算器验证你自己的配置
打开 WhichH3 计算器:在「第 1 步」填显存/内存/页文件, 第 3 步的每个格子会直接显示 每步 SSD 读取 与 页文件写入/条、SSD 折损/100 条。 你能一眼看出:换小一档量化,写入量是怎么从几十 GB 变成 0 的。
结论
- 小显存 + 大权重 = 每步搬运 + 页文件换入换出,慢和伤 SSD 是同一个原因;
- 8-12GB 的正确姿势:GGUF Q3/Q4 或 W4A8 + 4 步蒸馏 + 540p;
- 内存 ≥32GB、
--fast-disk常开,能把「写」变成「读」,保护硬盘寿命; - BF16 留给 96GB 显存的工作站,不是小卡的画质补丁。