Proj 275 - eBPF for AI/ML

项目简介

随着 AI 技术和 LLM 模型的复杂性不断提高,对计算资源的需求也在增长,有效监控和优化 AI 工作负载变得尤为重要。

本项目提出 CuTracer。CuTracer 基于 eBPF 开发,可以实现对 AI/ML 工作的负载追踪、性能分析。

通过对 C-CUDA 层、Torch 算子层、Python 层进行事件追踪,CuTracer 能够提供深入的性能分析,帮助 AI 开发人员识别瓶颈并优化性能;

img

CuTracer 服务全景图

此外,通过多主机 Uprobe Agent 和 CUDA Tracer Server 的解耦设计,CuTracer 支持在单机和多机环境下进行事件追踪;

img

CuTracer 架构图

最后,CuTracer 还提供可视化的分析结果,助力开发人员更有效地理解、改进工作负载。

img

CuTracer 生成的性能面板

更多 CuTracer 的特性和实现细节,请访问 CuTracer 的项目文档。

项目文档

决赛的技术文档请见:决赛技术文档.pdf

如何使用

安装和编译文档

此文档将指导如何编译、安装以及使用相关命令进行测试和追踪任务。请按照以下步骤进行操作。

1. 克隆项目

git clone <项目仓库地址>
cd <项目文件夹>

2. 编译项目

项目分为多个部分,需要分别编译:

make all

此命令会执行以下操作:

  1. 编译 test/file 目录下的文件。
  2. 编译 src/bpf 目录下的文件。
  3. 生成 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

请根据项目需求进行安装、编译和测试。如果有任何问题,请参考项目文档或联系项目维护者。