LLM的普及推动了对AI训练与推理的精细化性能检测与调优需求,众多在GPU节点上运行的业务,期望对GPU容器进行在线性能分析。AI Profiling作为基于eBPF和动态进程注入的无侵入式性能分析工具,原生面向Kubernetes容器场景提供,支持对运行GPU任务的容器进程进行在线检测,涵盖多方面的数据采集能力,可以在正在运行的GPU任务上动态启停性能数据采集。而对线上业务来说,可动态挂卸载的Profiling工具可以实时地对在线业务进行较为细致的分析,且无需对业务代码进行修改。本文介绍如何通过控制台触发AI Profiling并查看结果。
操作步骤
AI Profiling 控制台现采用白名单机制,存量用户UID已自动纳入白名单,新用户需通过提交工单申请加入白名单后方可使用。
步骤一:发起诊断
- 登录容器服务管理控制台,在左侧导航栏选择集群列表。 
- 在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择。 
- 在故障与性能诊断页面,单击AI Profiling进入AI Profiling页面。 
- 单击诊断进入AI Profiling配置页面,按照页面提示完成配置。重点配置如下表,配置完成后,单击发起诊断。 - 配置项 - 说明 - 示例值 - Profiling 配置 - 检测项 - 需要选择对应检测项,目前检测项支持cpu(CPU调用)、 python(Python进程)、syscall(系统调用)、cuda_kernel(CUDA核函数)。可多选。 - cpu、python、syscall为eBPF采集项,需确保目标节点的内核版本大于5.10。 
- python采集项要求目标业务进程的Python解释器启用USDT特性。您可以登录目标业务容器运行 - python -c "import sysconfig; print(sysconfig.get_config_var('WITH_DTRACE'))"命令,若输出为1 ,则可以开启python采集项,若为0,请勿开启python采集项,否则会导致本次采集失败。
- cuda_kernel基于动态注入的采集项,需确保目标进程正在使用GPU,才可以成功收集相关数据。 
 - cpu,cuda_kernel - 检测时长 - 检测时长建议控制在60s以内,Profiling为实时采集,采集数据过多可能会对您的内存和磁盘产生压力。 - 5 
步骤二:结果展示
- 等待状态栏变为成功后,可单击诊断详情,查看相应信息。  
- AI Profiling默认使用SysOM对采集结果进行分析和图表展示,单击诊断结果下的点击查看图表,跳转至SysOM控制台查看分析结果。  - 可以看到如下效果展示: - 数据分析总览  
- GPU CUDA核函数的细节分析  
- CPU/GPU Tracing分析  
 
步骤三:结果分析
可参见AI Profiling性能分析示例对结果进行分析。
Profiling Overhead影响数据参考
vLLM推理Overhead数据参考
测试环境
- 推理框架:vLLM-0.6.4 
- 推理模型:Qwen2-1.5B 
- GPU卡型:NVIDIA A10 
- 测试机型:ecs.ebmgn7ix.32xlarge 
- 测试参数:采集时长30 s,Buffer Size 10 
- 评测标准:outputToken/s 
- 百分比含义:(baseline output token数 - 开启profiling的output token数)/ baseline output token数 * 100% 
测试数据
测试数据内容包含cuda采集项,可参见通过命令行使用AI Profiling获取cuda采集项信息。
- Benchmark Batchsize = 1 - eBPF采集项 - Baseline(无任何采集) - 不开启CUDA核函数采集 - 开启CUDA核函数采集 - 无eBPF采集 - 55.77 - 无 - 44.64(19.96%) - cpu - 无 - 55.32(0.81%) - 45.2(18.29%) - syscall - 无 - 55.21(1.00%) - 47.78(13.63%) - cuda - 无 - 49.15(11.87%) - 43.4(21.55%) - python - 无 - 29.72(46.71%) - 25.5(53.90%) - cpu + syscall + cuda + python - 无 - 26.93(51.71%) - 21.66(60.85%) 
- Benchmark Batchsize = 16 - eBPF采集项 - Baseline(无任何采集) - 不开启CUDA核函数采集 - 开启CUDA核函数采集 - 无eBPF采集 - 266.83 - 无 - 240.08(10.02%) - cpu - 无 - 258.45(3.14%) - 240.35(9.92%) - syscall - 无 - 261.76(1.9%) - 250.49(3.08%) - cuda - 无 - 253.14(5.13%) - 236.49(11.37%) - python - 无 - 186.1(30.26%) - 173.8(32.75%) - cpu + syscall + cuda + python - 无 - 178.8(32.99%) - 157.02(39.24%)