Proj 275 - eBPF for AI/ML
- 赛题:使用 eBPF 对 AI/ML 工作负载进行追踪和性能分析
- 队名:聆听_CUDA_RunTime_の_声音
- 高校:中山大学
- 指导老师:陈鹏飞
- 成员:许睿林 陈镜霖 谢宗轩
- 决赛技术文档:决赛技术文档.pdf
项目简介
随着 AI 技术和 LLM 模型的复杂性不断提高,对计算资源的需求也在增长,有效监控和优化 AI 工作负载变得尤为重要。
本项目提出 CuTracer。CuTracer 基于 eBPF 开发,可以实现对 AI/ML 工作的负载追踪、性能分析。
通过对 C-CUDA 层、Torch 算子层、Python 层进行事件追踪,CuTracer 能够提供深入的性能分析,帮助 AI 开发人员识别瓶颈并优化性能;
CuTracer 服务全景图此外,通过多主机 Uprobe Agent 和 CUDA Tracer Server 的解耦设计,CuTracer 支持在单机和多机环境下进行事件追踪;
CuTracer 架构图最后,CuTracer 还提供可视化的分析结果,助力开发人员更有效地理解、改进工作负载。
CuTracer 生成的性能面板更多 CuTracer 的特性和实现细节,请访问 CuTracer 的项目文档。
项目文档
决赛的技术文档请见:决赛技术文档.pdf
如何使用
安装和编译文档
此文档将指导如何编译、安装以及使用相关命令进行测试和追踪任务。请按照以下步骤进行操作。
1. 克隆项目
git clone <项目仓库地址>
cd <项目文件夹>
2. 编译项目
项目分为多个部分,需要分别编译:
make all
此命令会执行以下操作:
- 编译
test/file
目录下的文件。 - 编译
src/bpf
目录下的文件。 - 生成 Python 的打包文件。
3. 安装项目
项目提供两种安装方式:公共安装和开发安装。
公共安装
适用于将项目作为公共库进行安装:
make install_pub
开发安装
适用于开发者,以便实时更新代码:
make install
4. 清理项目
如果需要清理编译文件和临时文件,可以使用以下命令:
make clean
此命令会删除编译生成的文件夹、清理 src/bpf
目录,并移除 .cuTracer
文件。
5. 卸载项目
如果需要卸载项目,可以使用以下命令:
make uninstall
此命令将卸载 cuTracer
包并删除相关的安装文件。
6. 文档服务
项目提供文档服务,您可以在本地启动文档服务器:
make docs
文档服务器将运行在 127.0.0.1:5500
上,您可以在浏览器中访问该地址查看文档。
7. 追踪任务
项目支持多种追踪任务,您可以根据需要选择执行相应的任务:
- 执行所有追踪任务:
make trace_all
- 分别执行各类追踪任务:
make trace_python
make trace_c_cuda
make trace_py_cuda
make trace_torch_cpu
make trace_torch_cuda
make trace_qwen2
make trace_ollama
- 追踪 GPT 模型的性能:
make trace_gpt
8. 测试任务
项目提供了多种测试任务,您可以根据需要选择执行相应的测试:
- 执行所有测试任务:
make test_all
- 分别执行各类测试任务:
make test_bpf
make test_uprobe
make test_c_ucb
make test_py_ucb
make test_s_c_client
make test_s_py_client
make test_s_server
make test_webui
make test_grafana
make test_tracer
make test_tools_tracer
make test_tools_client
make test_tools_server
make test_tools_webui
请根据项目需求进行安装、编译和测试。如果有任何问题,请参考项目文档或联系项目维护者。