ComfyUI 报错 CUDA out memory 解决方法
在使用 ComfyUI 的过程中,经常会碰到大名鼎鼎的 CUDA out memory 显存不够的的报错,如果你有仔细看报错信息中的说明,可以看到其实有解决方法:PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True。
在使用 ComfyUI 的过程中,经常会碰到大名鼎鼎的 CUDA out memory 显存不够的的报错,如果你有仔细看报错信息中的说明,可以看到其实有解决方法:PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True。

参数解释
PYTORCH_CUDA_ALLOC_CONF: 是 PyTorch 用来设置 CUDA 内存分配器参数的环境变量,可以通过它来调整内存分配器的底层行为,以优化性能或解决特定问题。
expandable_segments:True: 是分配器的一个具体配置选项,expandable_segments 指的是内存分配器是否允许已分配的内存“段”(segments)进行扩展。
当设置为 True 时,意味着内存分配器会尝试在不移动现有数据的情况下,扩展已经分配给某个张量的内存块。这可以减少内存碎片,并可能避免因无法找到连续大块内存而导致的 out of memory 错误(即使总的可用显存是足够的),因为它不必为增长的需求寻找全新的、更大的连续内存块。
相反,如果设置为 False(默认值),那么当需要更多内存时,分配器必须分配一个新的、更大的内存块,然后将旧数据复制过去,最后释放旧的内存块。这个过程更耗时,并且更容易受到内存碎片的影响。
如何使用
这里以 ComfyUI 官方下载的手动安装版和 Windows 便携版为例,在命令行窗口里启动 ComfyUI 程序 Python 脚本前先开启动态显存优化,再启动 ComfyUI,环境变量的有效性仅限于当前的命令行窗口,也就是新建一个命令行窗口需要重新输入命令进行开启。
例如在 Linux 下
export PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True
python main.py
例如在 Windows 下
set PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True
python main.py
如果你是 ComfyUI 官方的桌面版在设置选项中开启即可,无需通过命令设置。
请注意!此解决方法是有前提条件的,以运行 Wan2.2 文生视频 FP8 量化模型为例,显存要大等于 16G,其实也就是运行的模型与所需显存不能差距太大,如果显存小于 16G,就算开启 Pytorch 的显存动态分配优化也无济于事!
本次尝试为 Tesla V100 16G 版,如果未开启显存动态分配优化,是无法运行 Wan2.2 文生视频官方默认设置的工作流,开启后,显存占用 14.8G,生成速度 220 秒左右。

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)