SuperAPI AI 工具集

system-profile

测试与质量

查看项目

更新于 10-16 08:02

技能介绍

用途:对指定目标进行性能剖析并汇总结果。目标由 $ARGUMENTS 传入,可为 Python 脚本或模块、运行中的进程(PID 或服务名)、特定函数或代码块、整个框架或系统(如 autogen、vllm serving)的端到端执行,也可为 gpu、interconnect、memory 等聚焦维度;若参数为空或不清晰,需向用户询问。

主要能力:先判断剖析目标,再选择外部工具与/或代码插桩。外部工具会先检查可用性,例如 CPU 侧 cProfile、py-spy、line_profiler、perf stat、/usr/bin/time -v;内存侧 tracemalloc、memory_profiler、memray;GPU 侧 nvidia-smi、nvidia-smi dmon、nvitop、torch.profiler、nsys;互连侧 nvidia-smi topo -m、nvidia-smi nvlink、NCCL_DEBUG=INFO;系统侧 strace -c、iostat、vmstat。外部工具不足时编写并插入剖析代码,典型场景包括对代码块计时(墙钟时间与 CPU 时间)、测量 CPU-GPU 或 GPU-GPU 传输大小、频率与带宽、跟踪 CPU 与 GPU 内存分配以发现冗余、包装 NCCL 集合通信测延迟与吞吐、用 CUDA 事件为 kernel 计时。探查维度涵盖 CPU 开销(上下文切换、CPU 时间与墙钟时间之比、函数热点)、内存开销(CPU/GPU 已分配、保留与峰值,冗余复制,多 GPU 分配均衡)、互连与通信(CPU-GPU 传输频率、单次大小、总量与带宽,GPU-GPU P2P 带宽与 NVLink/PCIe 拓扑影响,NCCL 操作类型、消息大小分布与延迟,通信计算比)以及 GPU 计算(SM 利用率、kernel 启动开销、内存带宽利用率)。

使用方式:先读并理解目标代码,优先用包装方式(装饰器、上下文管理器、独立 runner)而非内联修改;必须内联时以 # [PROFILE] 等标记标明;避免插桩紧密内层循环,改用采样以减小观察者效应;结果收集到结构化日志而非分散 print。运行后捕获全部输出,将火焰图、trace、日志等产物保存到 ./profile_output/。最终报告分两部分:A 部分为结构化结果表(CPU 开销、内存开销含冗余列、互连表含传输类型/频率/大小/延迟/带宽)与热点瓶颈识别,并给出按预期影响排序的可执行建议;B 部分为强制性的插桩变更日志,逐条列出为剖析而修改或创建的文件、变更类型、增改内容与行号,便于用户审阅和回滚,并在用户完成后提供清除全部插桩的选项。

限制:可用工具与硬件拓扑需现场检查,缺失时相应维度可能无法测量;插桩由观察到的代码决定而非固定模板;资料未提供具体安装命令、收费方式与平台支持信息。