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%)