ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

LingBot-Map性能测试手册:gct_profile.py逐帧剖析推理耗时

LingBot-Map性能测试手册:gct_profile.py逐帧剖析推理耗时 LingBot-Map性能测试手册gct_profile.py逐帧剖析推理耗时【免费下载链接】lingbot-mapA feed-forward 3D foundation model for reconstructing scenes from streaming data项目地址: https://gitcode.com/GitHub_Trending/li/lingbot-mapLingBot-Map 是一个面向流式数据的前馈式 3D 基础模型Geometric Context Transformer能以约 20 FPS 的速度对超长视频序列做在线 3D 重建。想知道它在你自己的显卡上到底跑多快仓库自带的 gct_profile.py 就是官方性能测试工具——它逐帧计时 GPU 推理耗时输出全局 FPS、窗口 FPS 和多配置对比表帮你快速定位推理瓶颈。 性能测试测的是什么在动手之前先理解 gct_profile.py 的测量哲学结果才可靠只测顶层model.forward()的 GPU 时间——不挂 per-module hook、不做内部拆解每帧用一对 CUDA Event 计时保证测到的是端到端真实耗时随机权重、不加载 checkpoint——模型架构即成本来源排除权重加载的干扰见 load_model合成图像输入——torch.randn生成随机图像固定种子 42长序列时驻留 CPU 防止 OOM严格预热——先跑 eager 预热再跑 3 轮彩排让 CUDA Graphs、cuDNN autotune、FlashInfer 惰性初始化、显存分配器全部就位后才开始正式计时 推理流程两阶段计时流式推理在 GCTStream 中被拆成两个阶段profile_streaming 分别计时阶段帧行为Phase 1Scale 帧前 8 帧双向注意力一次 forward 批量处理Phase 2流式帧其余全部因果注意力逐帧处理配合滑动窗口 KV cache逐帧计时采用start_ev.record() → forward() → end_ev.record() → torch.cuda.synchronize()的固定套路gct_profile.py#L117-L135。每帧后同步一次看似低效实则是刻意设计——让 GPU 时钟频率与显存分配器行为在每次运行间保持一致跨次对比才公平。 三步跑通性能测试第一步装好环境按 README.md 安装 conda 环境、PyTorchCUDA 12.8后执行pip install -e .再装 FlashInfer推荐pip install flashinfer-python第二步一行命令开始剖析python gct_profile.py --backend both --dtype bf16 --num_frames 500第三步读懂报告脚本会自动对比sdpa / flashinfer×bf16 / fp32四种组合最后打印对比表并保存 JSON 到/tmp/profile_results_*.json。 报告里的四个关键指标Global FPS(Phase 1 Phase 2 总耗时) / 总帧数最能代表真实吞吐Windowed FPS±30 帧在流式段 10% / 50% / 90% 位置各取 ±30 帧均值观察 FPS 是否随 KV cache 增长而漂移FPS trace每 100 帧采样一次画出演进轨迹自动跳过冷启动首帧Comparison 表多配置横向对比一眼看出flashinfer_bf16是否真的更快⚙️ 常用参数速查参数默认作用--num_frames500总帧数越长越接近稳态--backendflashinfersdpa/flashinfer/both对比--dtypebf16bf16/fp32/both--compile开对热模块用torch.compile(modereduce-overhead)并裁掉 point_head省约 5.9 ms/帧在 518×378 下通常快约 5 FPS--camera_num_iterations4相机头迭代精化步数设 1 可跳过 3 轮精化换速度--keyframe_interval1每 N 帧存一次关键帧 KV非关键帧走 skip_append 路径--fa3关使用 FlashInfer FA3SM90内核替代 FA2--sliding_window64KV cache 滑动窗口大小 小贴士fp32 FlashInfer 会自动回退到 gatherSDPA 路径FlashInfer FA2 内核仅支持 fp16/bf16这是预期行为而非报错gct_profile.py#L292-L294。 进阶显存也要一起测耗时之外显存同样是性能的一部分。仓库还提供了 scripts/benchmark_gct_memory.py它用合成输入按帧数64 → 10000扫描输出每档的峰值 CUDA 显存、运行耗时和是否 OOM并写入 CSV。注意它默认把非 14 整除的分辨率自动下调如 384 → 378patch size 为 14。python scripts/benchmark_gct_memory.py \ --frame-counts 256 1024 4096 --stop-on-oom速度换不来质量就没有意义——上图是 benchmark/ 评测中 DROID-W 数据集的轨迹对比说明在追求高 FPS 的同时位姿精度依然稳。❓ 常见问题Q首帧耗时为什么异常大CUDA Graph 在clean_kv_cache()之后需要重新捕获第一帧包含一次性开销脚本的 trace 采样会自动跳过它。Q结果和 README 里说的 ~20 FPS 对不上FPS 强依赖 GPU 型号、分辨率和--compile开关。脚本打印的配置头分辨率/帧数/窗口/后端务必与你的运行参数一致后再比较。Q测真实 checkpoint 怎么办gct_profile.py 定位是架构级剖析真实场景端到端体验请用 demo.py 跑example/courthouse等示例场景二者互为补充。 延伸阅读性能剖析主脚本gct_profile.py流式模型实现lingbot_map/models/gct_stream.pyKV cache 聚合器lingbot_map/aggregator/stream.py显存基准脚本scripts/benchmark_gct_memory.py完整安装与使用说明README.md【免费下载链接】lingbot-mapA feed-forward 3D foundation model for reconstructing scenes from streaming data项目地址: https://gitcode.com/GitHub_Trending/li/lingbot-map创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表