首页
/
行业洞察
/
正文
INDUSTRY INSIGHT · 深度
LingBot-World 2.0 无限视频的秘密:local_attn_size 滑动窗口 KV Cache 与 sink_size 注意力汇聚机制源码解析
📅 2026/10/11 23:02:47
✍️ 爱科研究院
👁 阅读 3,247
【免费下载链接】lingbot-world-v2Infinite Worlds with Versatile Interactions项目地址https://gitcode.com/gh_mirrors/li/lingbot-world-v2点击查看免费下载LingBot-World 2.0 是一个开源的无限交互世界视频生成项目给一张图 一串动作轨迹它能持续生成画质稳定的超长视频。它的无限不是魔法而是两个参数——local_attn_size滑动窗口 KV Cache和sink_size注意力汇聚——共同作用的结果。本文带你用 10 分钟读懂这两个机制的源码实现搞清楚固定大小的缓存如何撑住 361 帧以上的视频生成。 为什么无限视频会撞上内存墙因果自回归的视频生成是分块进行的生成第 N 个分块时注意力必须回看之前所有帧。如果老老实实缓存全部历史KV Cache 随帧数线性增长注意力开销随帧数平方级恶化40B 级模型 数百帧上下文显存根本放不下。LingBot-World 2.0 的答案组合了两件经典武器滑动窗口local attention只保留最近local_attn_size个潜在帧的 KV超出的旧帧被滚出去注意力汇聚attention sink永远钉住视频开头的sink_size个潜在帧作为整个世界的锚点防止长视频漂移。 分块推理KV Cache 在哪里被反复读写推理入口是 generate.py 中的命令行参数真正的调度逻辑在 wan/image2video.py 的_generate_causal_fast中视频潜变量按chunk_size33 个潜在帧 ≈ 12 个像素帧切块逐块去噪蒸馏后的 fast 模型每块只需 4 个采样步timesteps_index[0, 179, 358, 679]这就是 60fps 实时流的来源每块去噪完成后代码会额外用干净潜变量在 t0 处再前向一次把新块的 KV 写入缓存wan/image2video.py#L704-L709。缓存本身是定长的这一点在 wan/image2video.py#L620-L623 一眼可见kv_size frame_seqlen * local_attn_size # 指定窗口时定长缓存 kv_size frame_seqlen * lat_f # 未指定时全局缓存初始化函数 _initialize_self_kv_cache 为每个 Transformer 层14B 模型共 32 层建好k、v张量外加两个记账标量global_end_index和local_end_index。 local_attn_size 滑动窗口缓存满了怎么滚核心滚动逻辑在 wan/modules/model_fast.py#L112-L162fast 模型以及 wan/modules/model_causal.py#L98-L197 的SelfAttention_KVCache中。每次前向判断是否装得下新 token 数 local_end_index kv_cache_size且确实产生了新内容 → 触发滚动计算淘汰量num_evicted_tokens 新 token 数 local_end_index - kv_cache_size左移滚动把缓存内容向左搬num_evicted_tokens个位置——注意搬运区间从sink_tokens之后开始最前面的 sink 区域原地不动尾部写入新块的 RoPE 编码后的 Key 和 Value 写到local_start_index:local_end_index执行注意力Query 只读[local_end_index - max_attention_size : local_end_index]这段窗口。用官方默认参数算一笔账480×832 分辨率每个潜在帧 60×104/4 1560 个 tokenlocal_attn_size18→ 缓存固定为 18×1560 28080 token恰好覆盖最近约 72 个像素帧。每来一个新块4680 token就滚动淘汰等量的最旧 token——显存占用从头到尾恒定帧数想跑多久跑多久。 sink_size 注意力汇聚为什么开头永远不能丢如果只做滑动窗口视频开头的画面主角形象、场景风格、光照基调迟早被滚出缓存长视频就会逐渐失忆漂移。sink_size解决的就是这个问题sink_tokens self.sink_size * frame_seqlen源码注释 写得很直白滚动 KV 缓存时前sink_size个潜在帧保持不动。官方脚本run_fast.sh#L20-L21设置sink_size6即 6 个潜在帧9360 个 token被永久钉在缓存头部。这与 LLM 长文本推理中的 Attention Sink 思想一脉相承初始 token 承载了分布层面的锚丢弃它会破坏整体稳定性——对视频而言这个锚就是这个世界的样子。 两个容易忽略的细节双下标记账global_end_index记录 token 在完整序列中的绝对位置local_end_index记录在滚动缓冲区中的位置。RoPE 位置编码用current_start_frame取绝对帧号wan/modules/model_fast.py#L116-L118所以即使 Key 被滚动搬移时间对齐关系依然正确max_attention_size 二级保险在窗口之上再限制单次注意力可回看的 token 数generate.py#L173-L177显存吃紧时可进一步收紧。 3 个参数亲手跑通 361 帧无限视频最简启动方式是 run_fast.sh8 卡 FSDP Ulysses 序列并行bash run_fast.sh weights_dir 361 # 等价于 # bash run_fast.sh lingbot-world-v2-14b-causal-fast 361它实际传递的关键参数就是两个--local_attn_size 18 --sink_size 6。想要更长视频只需调大第二个参数frame_num如 721、1441KV Cache 大小不会随之增长——这正是滑动窗口带来的无限。 关键源码文件清单文件作用generate.py推理入口--local_attn_size/--sink_size/--max_attention_size参数定义run_fast.sh8 卡快速推理脚本18 / 6 官方参数wan/image2video.pyWanI2VCausal管线分块循环、KV Cache 初始化与更新wan/modules/model_fast.py蒸馏 fast 模型的滑动窗口自注意力4 步采样wan/modules/model_causal.py预训练因果模型的SelfAttention_KVCachewan/distributed/sequence_parallel.py多卡 Ulysses 序列并行下的同一套窗口逻辑README.md安装、模型下载与完整推理命令✨ 小结LingBot-World 2.0 的无限本质上是一道缓存工程题local_attn_size用滑动窗口把显存占用压成常数sink_size用注意力汇聚保住世界最初的记忆锚点再配合 RoPE 绝对位置编码和 t0 缓存更新就得到了一条既能无限延展、又始终认得这个世界的视频生成流水线。理解了 model_fast.py 里那段不到 50 行的滚动逻辑你就读懂了这个项目最核心的秘密。赞分享【免费下载链接】lingbot-world-v2Infinite Worlds with Versatile Interactions项目地址https://gitcode.com/gh_mirrors/li/lingbot-world-v2点击查看免费下载相关推荐10分钟黑苹果EFI一键生成OpCore Simplify教程与完整指南10分钟黑苹果EFI一键生成OpCore Simplify教程与完整指南 OpCore Simplify 是一款开源的黑苹果 EFI 一键生成工具也是黑苹果开发工具CLILitGPT长文本处理终极指南滑动窗口注意力机制全解析LitGPT长文本处理终极指南滑动窗口注意力机制全解析 LitGPT是一个支持20多种高性能LLM的开源项目提供了预训练、微调及大规模部署的完整解决方案。本大模型预训练微调模型推理服务React Photo Album与Lightbox集成教程打造专业级图片查看体验React Photo Album与Lightbox集成教程打造专业级图片查看体验 React Photo Album 是一个强大的响应式图片画廊组件而 L创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
📌 标签:
工业官网
设计趋势
AI 建站
SEO
获取完整报告 →
RELATED ARTICLES
推荐阅读
2026/10/11 23:02:47
水下光学目标检测实战:MMDetection定制化改造与工程部署
2026/10/11 22:57:47
大模型编程提效四法则:结构化提示与渐进验证
2026/10/11 22:57:47
电力塔遥感检测:小目标+多尺度+弱纹理的工程落地指南
2026/10/12 0:07:51
基于SSM的二手家电回收系统:数据库建模与订单状态机实践
2026/10/12 0:07:51
盲道与障碍物图像分割数据集:3500张真实街景开箱即用
2026/10/12 0:07:51
SolidWorks Routing英文界面修复指南:修改文件位置和语言包
2026/10/12 0:07:51
华为IPD培训PPT实战拆解:研发管理落地的五大支柱
2026/10/12 0:07:51
Vue打包工具与脚手架实战:从Webpack配置到TaoToken统一Key接入
2026/10/12 0:02:51
思科AIR-CAP1602E-C-K9配置实战:自治模式与CAPWAP隧道详解
2026/10/12 0:02:51
你的 AI 编程 CLI 配置管理工具来了:用 TaoToken 统一管理 Claude Code 与 Codex 的 Base URL
2026/10/12 0:02:51
Susi AI API实战指南:susi_alexa_skill如何用Node.js调用chat.json获取智能回答
2026/10/12 0:02:51
换新电脑了?KeyStats 恢复码数据找回完全指南,端到端加密统计一键重建
2026/10/11 0:00:10
流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南
2026/10/11 0:00:10
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别
2026/10/11 0:00:10
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容
2026/10/11 19:13:46
我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频
2026/10/11 21:41:11
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证
2026/10/11 23:43:10
2026 大模型集体涨价:用 Python 做企业 Token 成本测算与选型避坑(附配置)