ComfyUI 的异步权重流:4GB 显存跑满大模型的工程魔法

一块 4GB 显存的旧显卡,一台 8GB 内存的普通笔记本,跑起 12B 参数的扩散模型——不是靠魔法,是靠把"搬数据"这件事做到了极致。

目录
  1. ComfyUI 的异步权重流:4GB 显存跑满大模型的工程魔法
  2. 一句话
  3. 场景开篇
  4. 核心机制:把"搬数据"变成"流水线"
  5. 问题在哪
  6. 异步卸载:提前搬,不等
  7. 钉住内存:减少搬运税
  8. DynamicVRAM:看着水位放水
  9. NVFP4:Blackwell 架构的翻倍外挂
  10. 这套优化意味着什么
  11. 对个人用户
  12. 对工程实践
  13. 对生态
  14. 数据说话
  15. 一点思考

ComfyUI 的异步权重流:4GB 显存跑满大模型的工程魔法

仓库:Comfy-Org/ComfyUI
语言:Python
Trending:155 stars/day

一句话

一块 4GB 显存的旧显卡,一台 8GB 内存的普通笔记本,跑起 12B 参数的扩散模型——不是靠魔法,是靠把"搬数据"这件事做到了极致。


场景开篇

你买了一张 RTX 3070,8GB 显存。跑 Stable Diffusion 1.5 没问题,跑 SDXL 勉强能行,跑 FLUX 或者 LTX-2 视频模型?显存直接爆了。系统提示 "CUDA out of memory",你盯着屏幕发呆。

传统解法很简单——买更大的卡。RTX 4090 24GB,RTX 5090 32GB。但一张卡一两万块,不是每个人都掏得起。

ComfyUI 团队过去几个月悄悄做了一件事:不换硬件,靠软件把显存墙推后。他们管这套技术叫"异步权重流"(async offloading)配合"钉住内存"(pinned memory),2025 年 12 月默认开启,所有 NVIDIA 显卡免费生效。RTX 3070 跑大模型的采样速度提升了 10-50%,RTX 4070ti 提升 20-60%,RTX 5070ti 在 NVFP4 量化加持下直接翻倍。

这不是算法创新,是系统工程的胜利。


核心机制:把"搬数据"变成"流水线"

问题在哪

扩散模型推理的瓶颈不是算力,是带宽。一个 12B 参数的模型,fp16 精度下权重占 24GB。你的显卡只有 8GB 显存,怎么办?

传统方案是"权重卸载"(weight offloading):把模型放在系统内存里,推理时按需把当前层搬到显存,算完再搬出来。问题是搬运速度跟不上计算速度——GPU 算完一层,等下一层从内存搬过来,干等着。

打个比方:你在厨房做菜,食材都在楼下冰箱里。每做一道菜,你要跑下楼拿食材,再跑上楼炒菜。炒菜 30 秒,跑楼 2 分钟。GPU 大部分时间在"等食材"。

异步卸载:提前搬,不等

ComfyUI 的方案叫 async offload——异步卸载。核心思路是:在 GPU 还在算当前层的时候,提前把下一层的权重从内存搬到显存。

回到厨房的比喻:你还在炒第一道菜的时候,你的助手已经下楼去拿第二道菜的食材了。等你炒完第一道,第二道的食材已经在灶台上了,直接开炒。

技术实现上,这需要两件事: 1. 预测下一层:知道模型结构,提前规划搬运顺序 2. 异步传输:用 CUDA stream 让搬运和计算并行

关键指标是 PCIe 带宽。PCIe 4.0 x16 理论带宽 32GB/s,实际约 25GB/s。一层权重 200MB,搬运时间约 8ms。如果计算时间超过 8ms,搬运完全被计算掩盖,零额外开销。

钉住内存:减少搬运税

从系统内存到 GPU 显存,中间要经过操作系统。普通内存是"可分页"的——操作系统可以把它换到硬盘上。GPU 不能直接访问可分页内存,必须先复制到一块"钉住"的内存区域,再从那里传到 GPU。这多了一次复制。

Pinned memory(钉住内存)绕过了这次复制。ComfyUI 预分配一块钉住内存作为中转站,权重从普通内存到钉住内存到 GPU 显存,少了一跳。

效果有多大?ComfyUI 团队的基准测试显示,在 RTX 3070 上跑 1024x1024 图像,采样速度提升 10-30%。RTX 4070ti 提升 20-50%。关键是——零配置,默认开启。

DynamicVRAM:看着水位放水

第三层优化是 DynamicVRAM。传统显存管理是静态的——你告诉系统"留 2GB 给模型,其余给推理"。但不同模型、不同分辨率需要的显存不一样,静态分配经常浪费或不够。

DynamicVRAM 做的是动态水位控制:实时监控显存压力,高了就多卸载一些到内存,低了就多留一些在显存。甚至能在显存和内存都满的时候,把权重进一步卸载到 SSD。

这解释了 ComfyUI README 里那句看起来像吹牛的话:"run even the biggest open source models on as low as 4GB vram + 8GB ram"。4GB 显存确实能跑,只是速度会慢——因为大部分时间在搬数据,不在算数据。


NVFP4:Blackwell 架构的翻倍外挂

如果你恰好有 RTX 50 系列显卡,还有一层加速:NVFP4 量化。

NVFP4 是 NVIDIA Blackwell 架构原生支持的 4-bit 浮点格式。相比 fp8 或 bf16,权重体积再小一半,采样速度翻倍。ComfyUI 在 LTX-2 发布时正式支持了 NVFP4。

基准测试:RTX 5070ti 跑 LTX-2 视频,NVFP4 模式比 fp8 快约 2 倍。

但有个坑——需要 PyTorch with CUDA 13.0 (cu130)。如果你的 PyTorch 是 cu124 或更早,NVFP4 模型反而会比 fp8 慢一倍。这是最常见的"我用了新功能反而变慢了"的陷阱。


这套优化意味着什么

对个人用户

一张 RTX 3070 可以跑 FLUX、LTX-2 这种以前需要 24GB 显存的模型。不是跑得飞快,但能跑。这对没有专业显卡的独立开发者、学生、内容创作者是实打实的门槛降低。

对工程实践

ComfyUI 的做法揭示了一个被忽视的优化方向:在算力和带宽之间找平衡。大模型推理的瓶颈正在从"算不够"转向"搬不过来"。GPU 算力每年翻倍,但 PCIe 带宽增长缓慢。异步卸载 + 钉住内存 + 动态水位,本质上是在带宽受限环境下最大化算力利用率。

对生态

ComfyUI 把这些优化默认开启,不需要用户配置。这是正确的工程决策——大多数用户不知道什么是 pinned memory,也不应该知道。好的基础设施是隐形的。


数据说话

ComfyUI 团队在 RTX 3070 (8GB)、RTX 4070ti (12GB)、RTX 5070ti (16GB) 上做了基准测试,使用 Ryzen 5950x + 128GB RAM @ PCIe 4.0 x16:

  • RTX 3070:1024x1024 采样,async offload + pinned memory 后速度提升 10-30%
  • RTX 4070ti:1328x1328 采样,提升 20-50%
  • RTX 5070ti:NVFP4 量化 + async offload,速度翻倍
注意:PCIe 带宽是关键变量。PCIe 4.0 x16 是最佳配置,PCIe 4.0 x8 的提升会打折扣,PCIe 5.0 会更好。


一点思考

ComfyUI 的这套优化让我想到一个更普遍的工程原则:当硬件升级遇到瓶颈时,软件优化的边际收益会突然变高。

GPU 显存从 8GB 涨到 24GB 花了五年,价格翻了三倍。但异步卸载让 8GB 显存能干以前 24GB 才能干的事,成本是零。这不是"用算法换硬件"的妥协,是"用系统工程重新定义资源边界"。

类似思路在其他领域也适用:LLM 推理里的 KV cache 卸载到 CPU 内存,数据库里的冷热数据分层,操作系统的页面置换。核心都是同一个——当资源不够时,不要让资源闲置,让搬运和计算重叠。

ComfyUI 做到了,而且做得足够好,好到可以默认开启。


项目地址:https://github.com/Comfy-Org/ComfyUI
优化博客:https://blog.comfy.org/p/new-comfyui-optimizations-for-nvidia
桌面应用:支持 Windows、macOS、Linux
协议:GPL-3.0
暂无表态

想参与讨论或点赞?登录后使用完整功能

讨论回复(0)

暂无回复,登录后可参与讨论
合作

智谱 GLM-5 已上线

在智谱开放平台 BigModel.cn 打造 AI 应用。新一代旗舰模型 GLM-5 在推理、代码、智能体综合能力达到开源模型 SOTA。

领取 2000万 Tokens