做过 AI 视频大尺寸渲染的团队,基本都见过控制台弹出的 OOM 红字。
爆显存,是常态。
无限画布听着很酷,镜头一推、画幅一扩,显存占用直接跳崖式上涨。
很多刚上手的朋友都会问:同样是生成 10 秒视频,怎么开了无限画布,显存直接翻了快两倍?
这话不是危言耸听。我们团队前期测过多款主流模型,同时长、同采样步数下,4K 分辨率的无限画布推理,峰值显存比 1080P 固定画幅高出 170% 左右。不少持 24G 显存显卡的团队,跑 2K 无限画布都得小心翼翼,稍不注意就直接崩。
行业里很多方案为了跑通大尺寸,要么砍采样步数牺牲画质,要么把画布拆成碎块逐一生成,最后拼接处留下明显接缝。商用交付的时候,这些问题全是雷。
不少人心里都会打鼓:省显存省显存,会不会把画质也给省没了?
星宇智算 Vera 1.1 版本,针对无限画布场景做了全链路的显存工程优化。我们团队前后测了快两个月,从底层原理到调参落地,摸透了这套方案的核心逻辑。
一、无限画布推理的显存瓶颈,到底卡在哪
先把账算明白。无限画布的显存高,不是某一个模块吃内存,是多个维度叠加的结果。核心瓶颈集中在四块。
空间维度的特征膨胀。无限画布支持画幅动态扩展,为了保证边缘区域的生成质量,模型需要缓存扩展区域的中间特征,有效画布越大,缓存的特征张量就越大。注意力计算的复杂度和画幅面积近似正相关,画幅翻一倍,注意力层的显存占用差不多翻三倍。
时序维度的叠加开销。普通视频的时序注意力是固定画幅下的计算,无限画布还要叠加滑动窗口的重叠帧缓存。窗口重叠比例越高,时序特征的冗余量就越大,显存占用自然水涨船高。
全局注意力的二次增长。很多早期方案用全局注意力处理画布内容,画幅扩大后,注意力计算的 token 数线性增长,显存占用呈二次方上涨。这也是大尺寸下显存崩得特别快的核心原因。
中间结果的冗余缓存。推理过程中,去噪各阶段的中间特征、梯度相关张量如果全部常驻显存,再大的显存也扛不住。无限画布场景下,中间张量的体积本身就大,冗余缓存的影响被进一步放大。
有人可能会说,那我把画幅拆小块生成行不行?
当然可以,但拆块就会遇到接缝问题。块与块之间的语义衔接、纹理对齐、光影统一,每一项都是工程难题。很多开源方案拆块生成的画面,拼接处的断层肉眼可见,根本没法商用。
二、Vera1.1 的四层显存优化架构,具体是怎么做的
Vera 1.1 没有走 “拆块硬拼” 的路子,而是从计算、调度、缓存、复用四个层面做了全链路优化。在尽量不损失画质的前提下,把峰值显存压了下来。
2.1 空间分块稀疏注意力:从全局计算到按需计算
这是最核心的一步优化,直接把注意力层的显存占用打了下来。
Vera 1.1 没有对整张画布做全局注意力计算,而是把画布划分成固定大小的计算块,只对当前块及周边重叠区域做注意力计算。
分块采用边缘重叠设计,相邻块保留 15%-25% 的重叠区域,保证块与块之间的纹理、语义自然衔接,不会出现拼接断层。
注意力计算只在块内生效,非活动区域的特征不参与当前轮计算,大幅降低单步的显存峰值。
分块大小支持动态适配,会根据当前显存剩余空间自动调整分块粒度,显存充足用大块保证速度,显存紧张用小块控制峰值。
我们实测下来,单这一项优化,就能把注意力层的峰值显存降低 40% 以上。画幅越大,优化效果越明显。4K 场景下,注意力层的显存开销甚至能降一半还多。
2.2 时序特征分级调度:显存不够,内存来补
无限画布的时序特征缓存,是除了空间注意力之外的第二大显存消耗项。
很多方案会把所有帧的中间特征全部存在显存里,窗口滑到哪用到哪。短序列还好,长视频加长大画布,显存很快就被占满了。
Vera 1.1 做了分级调度机制,把时序特征分成了活动帧、过渡帧、非活动帧三个级别,分别放在不同的存储介质里。
活动帧特征常驻显存,就是当前窗口正在计算的帧,保证计算速度。
过渡帧特征做低精度缓存,放在显存的低优先级区域,随时可以被换出。
非活动帧特征换出到系统内存,等窗口滑动到附近时,再提前加载回显存。
这套机制的关键,是换入换出的时机和粒度。换早了浪费显存,换晚了会卡计算。Vera 1.1 会根据当前生成速度、显存占用率、窗口滑动速度动态调整预加载时机。正常场景下,显存 - 内存交换带来的速度损失控制在 10% 以内,但能省出 25%-30% 的显存空间。
2.3 中间特征按需释放:用重计算换显存空间
扩散模型推理的过程中,会产生大量中间特征张量。很多时候这些张量只用一次,之后就一直占着显存。
Vera 1.1 针对去噪过程的不同阶段,做了中间特征的按需释放策略。
对于计算成本低、复用频率低的中间张量,用完立即释放,需要的时候再通过重计算生成。
对于计算成本高、复用频繁的核心特征,保留在显存里,避免反复计算拖慢速度。
支持多级重计算档位,用户可以根据自己的显存情况选择,从 “速度优先” 到 “显存优先” 有四档可调。
很多人担心重计算会影响画质。其实不会。重计算只是用时间换空间,计算逻辑和结果和原来完全一致,不会改变生成内容,只会影响推理速度。我们测过,开满重计算的情况下,速度下降约 20%,但能再省出 15% 左右的显存。
2.4 滑动窗口增量复用:减少冗余计算与缓存
无限画布的滑动窗口机制,本身就有大量重叠区域。如果每滑动一次就全部重新计算,既浪费算力,也浪费显存。
Vera 1.1 做了增量式缓存复用,窗口滑动时,重叠区域的特征直接继承上一窗口的结果,只计算新增区域的内容。
空间上,画布平移后的重叠区域,中间特征直接复用,不用重新去噪。
时序上,窗口重叠的帧,时序特征直接继承,只补充新进入窗口的帧特征。
复用区域会做一次轻量特征对齐,避免因为累积误差出现接缝。
这项优化不仅省显存,还能提速度。滑动窗口的重叠比例越高,收益越明显。默认 4 帧重叠的配置下,单窗口的显存开销能再降 10% 左右,生成速度还有小幅提升。
三、核心可调参数与实战调参经验
讲完架构,再说说大家最关心的调参。
很多人会问:24G 显存到底能不能跑 2K 无限画布?
答案是可以,前提是参数调对。我们在星宇智算 Vera 1.1 上摸了很久,总结出几个核心参数的调参逻辑,不同显存的卡都能找到适配的组合。
空间分块尺寸。可选范围从 128 到 512 像素,默认 256。显存充足选大分块,计算效率高、速度快;显存紧张选小分块,峰值显存更低。注意分块不是越小越好,太小的话分块调度的开销会上涨,反而得不偿失。16G 显存建议降到 192,24G 显存用默认 256 即可,40G 以上显存可以拉到 384。
时序缓存深度。控制常驻显存的时序帧数,默认 8 帧。数值越高,时序连贯性越好,但吃显存也越多。长视频生成、显存紧张的场景,可以降到 6 帧,对连贯性影响不大,但能省不少显存。
显存交换阈值。默认 75%,就是显存占用超过这个比例,就开始把非活动帧换出到内存。显存小的卡可以把阈值调低,提前触发交换,避免突然 OOM;显存大的卡可以调高,尽量减少交换,保证速度。
重计算等级。共四档,0 档全关、速度最快,3 档全开、最省显存。日常商用推荐 1 档,速度损失很小,还能省一部分显存。极端显存紧张的场景再开 2 到 3 档。
特征复用比例。控制滑动窗口的特征复用程度,默认 70%。对画质要求高可以调低一点,对速度和显存要求高可以调高。一般商用场景默认值就足够平衡。
说两个实打实踩过的坑。
第一个坑,一开始为了省显存,把分块调到 128,重计算拉满,结果速度掉了快一半,画质边缘还出现了轻微的块效应。后来才发现,分块太小会导致边缘重叠的占比过高,反而增加了计算量。合适的分块大小,一定是结合自身显存和画幅来定的,不是越小越好。
第二个坑,显存交换阈值设得太低,频繁换入换出,速度波动特别大,有时候一卡就是好几秒。后来调到 75% 到 80% 之间,既保证不会爆显存,又不会频繁交换,速度平稳很多。
合理调参之后,我们在 24G 的 RTX 4090 上,可以稳定跑 2.7K 分辨率的无限画布连续推理,最大支持 30 秒时长。对比优化前的原生方案,最大可运行画幅提升了 60%,这个提升幅度还是很可观的。
四、团队落地的工程协作与职业心得
我们团队从去年开始把无限画布引入生产管线,从一开始的天天爆显存,到现在稳定交付商用项目,踩了不少坑,也攒了些经验。分享几点实打实的心得。
第一,不要盲目追求极致大尺寸,先对齐业务需求。
很多团队上来就想怼 4K、8K,好像画幅不大就没技术含量。实际上大多数商用场景,1080P 到 2K 完全够用。短视频平台、企业宣传片、短剧素材,2K 分辨率已经远超交付标准。盲目上大尺寸,不仅显存压力大,生成速度慢,还容易引入更多画质问题。先搞清楚交付标准,再选合适的画幅,性价比最高。
第二,建立显存 - 画质 - 速度的三角评估体系。
做工程优化,不能只盯着显存这一个指标。省了显存,画质崩了,或者速度慢到没法量产,都没用。我们团队现在每个新项目启动,都会先测三组基准数据:默认配置的显存、画质、速度,显存优先配置的三项数据,速度优先配置的三项数据。然后根据项目周期和交付要求,选最优的平衡点。有了量化标准,团队沟通也少了很多扯皮。
第三,工程优化要和前端分镜配合,从源头降低压力。
显存压力不是只靠工程端就能解决的。同样是无限画布,一个大面积复杂纹理的全景镜头,和一个人物近景镜头,显存占用能差出一倍。我们现在的流程是,分镜阶段技术岗就介入,特别吃显存的镜头,要么调整构图,要么拆成多个镜头,从源头降低显存峰值。比后期硬优化效率高得多。
第四,沉淀场景化配置模板,降低团队门槛。
参数这么多,不可能让每个编导、每个美术都成调参专家。我们的做法是沉淀模板。数字人口播模板、短剧对话模板、产品展示模板、风景空镜模板,每个模板都调好对应的分块大小、重计算等级、交换阈值。新人直接套用,就能拿到稳定的产出,资深工程师再针对特殊镜头做精细调优。整体生产效率提升很明显。
五、优化方案的边界与未来方向
最后客观说一句,这套优化不是万能的,也有它的适用边界。
比如极端超大尺寸,比如 8K 以上的画幅,单卡即使开满优化也很难扛住,还是得上多卡张量并行。再比如重计算开满的情况下,速度确实会受影响,对交付时效要求极高的场景,还是建议升级硬件。
但从目前的商用场景来看,Vera 1.1 这套优化方案,已经能覆盖绝大多数团队的需求。用消费级显卡就能跑通 2K 级别的无限画布,这在一年前是很难想象的。
未来的优化空间还很大。比如进一步优化分块调度的逻辑,比如引入显存压缩技术,比如和硬件厂商合作做更底层的适配。AI 视频的工程化落地,本来就是一点点抠出来的。
FAQ 常见问题
Q1:24G 显存的显卡,用 Vera1.1 最多能跑多大的无限画布?
A:默认优化配置下,24G 显存可以稳定运行 2.5K-2.7K 分辨率的无限画布,支持最长 30 秒连续生成。如果开高档重计算、调小分块,可以摸到 3K 左右,但速度会有明显下降。一般商用场景,2K 分辨率是兼顾画质、速度和稳定性的最优选择。
Q2:开启显存优化之后,会不会影响生成的画质?
A:分块注意力、特征复用、显存交换这几项优化,都不会改变生成结果,画质和原生全局计算完全一致。只有重计算选项,是用重复计算替代缓存,计算逻辑完全不变,也不会影响画质,只会增加推理耗时。正常商用档位下,肉眼看不出任何画质差异。
Q3:Vera1.1 的无限画布支持多卡并行加速吗?
A:支持。Vera 1.1 的无限画布支持空间并行和时序并行两种多卡模式。空间并行把大画布拆分到多张卡上同时计算,适合超大画幅场景;时序并行把不同帧分到不同卡上,适合长视频生成。企业级部署还支持集群调度,批量渲染的效率提升很明显。
Q4:无限画布生成的画面,分块拼接处会不会有痕迹?
A:正常参数下不会。Vera 1.1 的分块采用了重叠区域加权融合 + 特征对齐的方案,重叠区域的内容会做平滑过渡,不会出现硬拼接的断层。我们做过大量盲测,普通用户完全无法分辨分块生成和全局生成的画面差异。只有在极端参数、分块特别小的情况下,才可能出现极轻微的块效应,正常商用配置不会遇到。