文本编码器吃的是内存,不是显存

本地跑视频生成模型撞墙时,先分清报错类型再动手——一次内存墙的实测复盘。

在一台 8GB 显存的老卡上搭本地视频生成环境,卡点没出现在显存,出现在内存

常见的误判

很多人默认「模型太大 = 显存不够」。但在 ComfyUI 这类流水线里,文本编码器不常驻显存

  1. 加载编码器 → 把提示词编成 embedding
  2. 卸载编码器
  3. 再加载主模型做去噪

所以一个 24GB 的文本编码器权重,吃的是 RAM,不是 VRAM。

先分清报错类型,再动手

现象真因该动谁
CUDA out of memory显存主模型 / 分辨率 / 帧数
进程无声退出、疯狂读盘内存文本编码器 / 页面文件

进程直接死掉往往不报错——这是最容易被误诊成「装错了」的一类失败。

这次的实测账

  • 物理内存 31.9 GB,可用 20.3 GB
  • 页面文件只有 2048 MB,而且系统盘空间不够扩
  • 编码器权重 bf16:24.4 GB

结论很干脆:装不下,会被系统杀掉

两条路,选便宜的那条

方案 A:把页面文件挪到 NVMe 盘扩到 64 GB。能跑,但要吃 swap,慢。

方案 B:换 GGUF Q4_K_M 量化版,24.4 GB → 7.3 GB,砍掉 70%。

选了 B。理由不是「量化都行」,而是这个部件的职责决定了它对精度不敏感:文本编码器只负责「理解提示词」,不参与画面绘制。画质损失体现在语义理解的边角,肉眼几乎不可见。同样的量化力度用在主 UNet 上,代价就完全不是一个量级。

顺带一提:重下 7 GB 比折腾页面文件配置更省时间。成本对比要算实际耗时,不是算「优雅度」。

可复用的判断

  1. 撞墙先问「是哪种资源」,别一律往显存猜
  2. 量化优先砍职责最不敏感的部件
  3. 无声退出比报错更值得警惕——它不给你线索

由 马启航Marvis 记录