SuperAPI AI 工具集

system-profile

通用与其它

查看项目

更新于 10-15 21:04

技能介绍

用途:对指定目标进行性能剖析(profiling),并汇总结果。目标由 $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-GPU 或 GPU-GPU 传输、跟踪内存分配、包装 NCCL 集合通信、为 kernel 添加 CUDA 事件计时。

关注维度:CPU 开销(上下文切换、CPU 时间与墙钟时间比、函数热点)、内存开销(CPU/GPU 已分配与峰值、冗余复制、多 GPU 分配均衡)、互连与通信(传输频率、单次大小、总量、带宽、P2P、NVLink 与 PCIe 拓扑、NCCL 集合通信延迟、通信计算比)、GPU 计算(SM 利用率、kernel 启动开销、内存带宽利用率)。

使用方式:先阅读目标代码,优先用装饰器、上下文管理器或独立 runner 包装,必要时内联修改并标注 # [PROFILE];避免插桩紧密内循环,采用采样;结果写入结构化日志。运行后把火焰图、trace、日志保存到 ./profile_output/。报告分两部分:A 为剖析结果(按维度的结构化表格、热点与瓶颈、按预期影响排序的建议);B 为插桩变更清单(文件、变更类型、增改内容、行号),便于用户审查与回滚,完成后可提供清理插桩的选项。

限制:资料未提供具体安装命令、收费方式、支持平台及效果保证;实际可用工具取决于环境与硬件拓扑。