概念
不随版本变化
显存与性能:什么决定你能跑多大
占用由几样东西叠加而成,不是取最大值。弄清这点,调参才有方向。
同一块显卡能不能跑得动,主要取决于同时驻留在显存里的东西有多少。它们是叠加关系,不是取最大值。
显存被什么占用
- 模型本身:模型越大,常驻占用越高;同一个模型的低位精度版本占用更低。
- 中间数据:分辨率越高、批量越大,计算过程中的中间数据越多。
- 同时加载的模型数量:不同环节各加载一个(例如文本编码器与主模型),占用会叠加。
- 其他程序:浏览器、播放器、其他用到显卡的程序都在抢同一块显存。
- 碎片:反复加载卸载之后,剩余显存可能被切得很碎,总量够但凑不出一块连续空间。
排列顺序就是排查顺序:先砍中间数据(降分辨率、降批量),再看能不能换更省显存的模型版本,最后才是动系统与启动参数。反过来做,往往花了很大力气却没解决问题。
三个可以调的旋钮
- 降需求:分辨率与批量:见效最快,代价是出图尺寸或多张一起跑的能力。先把批量改回 1,再把分辨率降一档。
- 换版本:精度更低、模型更小:同一功能的更小模型、或低位精度版本,占用能明显下降。代价是可能与原版有细微差别。
- 调装载方式:启动参数:主程序的启动参数决定模型怎么放进显存(常驻、按需、还是尽量不占)。这类参数各版本命名与行为会变,以你所用版本的帮助信息为准。
常见误解
常见误解
- 看到任务管理器里显存还有空余,就认为不该报显存不足
分配器需要一块连续空间。总数够、但都是碎片时,照样申请失败。这类报错在处理步骤里通常是降低分辨率或批量。 - 以为换个采样器或调度器能省显存
它们影响的是计算过程与质量取向,不改变模型与中间数据的体量,省不了显存。 - 把「能加载」当成「能跑完」
加载只占一份模型的空间,跑起来还要加上中间数据。峰值出现在计算阶段,不是加载阶段。
知仓学习社