You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按目录过滤.pstats文件?Nerfacto性能分析求助

优化NerfStudio Nerfacto性能分析的方案

按目录过滤cProfile结果

1. 用pstats脚本预处理

写个简单的Python脚本加载原始profile文件,只保留你关注的项目目录下的函数:

import pstats

# 替换为你的nerfstudio项目根目录
TARGET_DIR = "/path/to/your/nerfstudio"

# 加载原始profile数据
stats = pstats.Stats("profile_data.profile")
# 清理路径前缀,方便过滤
stats.strip_dirs()
# 筛选出路径包含TARGET_DIR的函数
filtered_funcs = [func for func in stats.stats if TARGET_DIR in func[0]]
stats.filter_stats(*filtered_funcs)
# 保存过滤后的结果
stats.dump_stats("filtered_profile.profile")

之后用Snakeviz打开过滤后的文件:

py -m snakeviz filtered_profile.profile

2. Snakeviz界面直接过滤

Snakeviz顶部的搜索框支持模糊匹配,直接输入nerfstudio或nerfacto,就能只显示和目标模块相关的函数,不用提前处理文件。

更适合大型项目的性能分析工具

针对NerfStudio这类依赖PyTorch的大型训练项目,以下工具比cProfile更高效:

  • py-spy:采样式分析,开销极低,适合长时间训练任务。安装后直接启动分析:

    # 启动训练时同时记录profile
    py-spy record -o profile.svg -- python -m ns-train nerfacto --data poster
    # 或者attach到已运行的训练进程(替换<PID>为进程号)
    py-spy record -o profile.svg -p <PID>
    

    生成的SVG可视化文件能清晰展示函数时间占比,默认不会追踪Python/PyTorch内置函数。

  • torch.profiler:PyTorch官方工具,专门针对张量运算、CUDA操作优化。可以在训练代码中插入profiler逻辑:

    import torch.profiler
    
    # 在训练循环外初始化profiler
    with torch.profiler.profile(
        activities=[torch.profiler.ProfilerActivity.CPU, torch.profiler.ProfilerActivity.CUDA],
        schedule=torch.profiler.schedule(wait=1, warmup=1, active=3),
        on_trace_ready=torch.profiler.tensorboard_trace_handler("./profile_logs"),
        record_shapes=True,
        profile_memory=True
    ) as prof:
        for step in range(total_train_steps):
            # 你的训练步骤代码
            train_step()
            # 标记profiler步骤
            prof.step()
    

    之后用TensorBoard查看结果:

    tensorboard --logdir ./profile_logs
    

    可以精准过滤nerfacto模块的函数,还能分析CUDA内存和运算耗时。

  • line_profiler:行级性能分析,适合定位具体函数内的瓶颈代码。给目标函数添加@profile装饰器后,运行:

    kernprof -l -v your_train_script.py
    

    需要注意适配NerfStudio的入口脚本,可能需要修改ns-train的启动逻辑来引入装饰器。

内容的提问来源于stack exchange,提问作者Youssef Haddouda

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 14:55:57