尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

LingBot-Map Paged KV Cache:像LLM显存管理一样做3D重建

LingBot-Map Paged KV Cache:像LLM显存管理一样做3D重建 LingBot-Map Paged KV Cache像LLM显存管理一样做3D重建【免费下载链接】lingbot-mapA feed-forward 3D foundation model for reconstructing scenes from streaming data项目地址: https://gitcode.com/GitHub_Trending/li/lingbot-mapLingBot-Map 是一个前馈式 3D 重建基础模型它能从视频流中实时重建 3D 点云。它的核心工程亮点是Paged KV Cache分页 KV 缓存——把大语言模型里管理长上下文的显存技术原封不动搬进了流式 3D 重建缓存内存恒定不涨从而在 518×378 分辨率下以约 20 FPS 稳定推理超过 10,000 帧的长序列。本文将带你快速看懂这套机制以及如何在自己的机器上跑通长视频重建。一、长序列 3D 重建的显存痛点 流式重建的 Transformer 必须记住历史帧每来一帧就要和之前所有帧的 KVKey/Value 特征做注意力。最朴素的做法是把历史帧的 KV 全部堆在显存里——序列越长、显存占用线性增长几千帧就 OOM。LingBot-Map 的思路和 LLM 推理框架vLLM、FlashInfer一致分页 按需回收让缓存大小与视频长度解耦。实现集中在 lingbot_map/layers/flashinfer_cache.py配合 lingbot_map/layers/attention.py 中的FlashInferAttention完成单帧流式前向。二、分页 KV 缓存三路页面各司其职 FlashInferKVCacheManager把每一层 Transformer 的 KV 切分成固定大小的页page并分成两个逻辑流、三类页面页面类型作用生命周期Scale 页8 页开头的 8 个尺度帧用于确定场景尺度永不清理滑动窗口页64 页最近的 64 帧 patch 特征超过窗口即回收复用Special 页每帧 6 个特殊 token相机/寄存器/尺度只追加不回收一页可打包 42 帧关键设计有两条Patch 页可回收每帧 256 个 patch token 恰好占一页窗口外的旧页立刻归还 free list下一帧直接复用——所以无论视频多长patch 缓存恒定约 88 页。Special token 追加流被驱逐的帧会丢 patch 细节但其相机位姿等 6 个特殊 token 会被连续压缩进 Special 页一页 256 槽打包 42 帧保证长程位姿漂移校正不丢信息。注意力计算时按scale 页 → 窗口页 → special 页的顺序拼出可见页表special 页放在最后最后一个未满页由paged_kv_last_page_len天然描述无需自定义 mask见 flashinfer_cache.py 的build_visible_page_table。三、关键帧策略缓存只留精华 ️模型用 video RoPE 在 320 帧范围内训练KV 里存超过 320 帧会掉点。LingBot-Map 因此提供--keyframe_interval每 N 帧才存一个关键帧的 KV非关键帧照常输出预测但不写缓存。实现非常精巧——非关键帧会临时追加 → 计算注意力 → 回滚_set_skip_appendrollback_last_frame见 lingbot_map/models/gct_stream.py 的_set_skip_append。这样缓存增长速度约降为1/N是 320 帧以上长序列最优先的调优手段。四、窗口化推理25000 帧室内漫游稳跑 超过约 3000 帧建议切换到--mode windowed每个窗口window_size 128计的是 KV 槽位而非实际帧数重置一次 KV 缓存相邻窗口共享overlap_keyframes保持位姿对齐。官方用它重建了约 25,000 帧、13 分钟的室内视频显存全程平稳五、实测性能20 FPS 与恒定显存 518×378 分辨率下~20 FPS稳定推理 10,000 帧长序列想压测自己的硬件可用现成脚本FPS 剖析gct_profile.pypython gct_profile.py --backend flashinfer --dtype bf16 --compile显存扫描scripts/benchmark_gct_memory.py对 64~10000 帧逐档测峰值 CUDA 显存并输出 CSV无 FlashInfer 环境会自动回退 SDPA 后端--use_sdpa任何 CUDA GPU 均可运行。六、快速上手一键跑通与调优参数 安装依赖FlashInfer 为推荐的 Paged Attention 后端pip install flashinfer-python然后跑示例场景python demo.py --model_path /path/to/lingbot-map.pt \ --image_folder example/courthouse --mask_sky显存吃紧时的调优顺序详见 demo.py 与 README.md参数作用--keyframe_interval N只缓存每 N 帧显存约降 N 倍首选--mode windowed --window_size 128超长序列3000 帧窗口化推理--camera_num_iterations 1相机头少做 3 轮精修速度更快、其 KV 缓存缩小 4×--offload_to_cpu逐帧预测卸载到 CPU默认开启--num_scale_frames 2降低初始尺度阶段的激活峰值七、小结 ✅LingBot-Map 的 Paged KV Cache 证明了LLM 推理的显存管理哲学分页、回收、追加流可以完整迁移到流式 3D 重建。三路页面设计让缓存恒定关键帧与窗口化推理把记住多长变成可调参数最终实现万帧级、20 FPS 的实时重建。核心源码值得精读lingbot_map/layers/flashinfer_cache.py缓存管理器、lingbot_map/layers/attention.pyPaged 注意力、lingbot_map/models/gct_stream.py流式推理主流程。【免费下载链接】lingbot-mapA feed-forward 3D foundation model for reconstructing scenes from streaming data项目地址: https://gitcode.com/GitHub_Trending/li/lingbot-map创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表