《向阳-AiDD-基于eBPF和Agent构建LLM训练推理优化体系.pdf》由会员分享,可在线阅读,更多相关《向阳-AiDD-基于eBPF和Agent构建LLM训练推理优化体系.pdf(47页珍藏版)》请在三个皮匠报告上搜索。
1、基于 eBPF 和 Agent 构建LLM 训练推理优化体系向阳 云杉网络演讲嘉宾向阳清华大学博士/云杉网络研发 VP清华大学博士,云杉网络研发 VP,DeepFlow 开源社区负责人。曾在国际顶级学术会议 ACM SIGCOMM、ACM IMC 上发表可观测性方向的学术论文,现负责可观测性产品 DeepFlow,致力于打造一款为云原生和 AI 应用而生的零侵扰可观测性产品。目 录CONTENTS1.背景:训练和推理的效率挑战2.现状:传统解决方案和工具的问题3.方法:eBPF 构建零侵扰可观测性4.实践:PyTorch 全栈剖析和追踪5.探索:Agent 自动优化 ML 代码背景:训练和推理
2、的效率挑战PART 01LLM 训练开销大、效率低GPT-4Llama-3.1参数1.8T405BGPU25K A10016K H100时长90100 天54 天MFU32%36%38%43%Everything We Know About GPT-4-Klu.aiGPT4-All Details LeakedThe Llama 3 Herd of Models训练时间长:数月GPU 数量多:数万GPU 利用率低:40%GPU 年化故障高:6%11%模型参数大:万亿148/54*365/16384=6%(148+72+19+17+6+6)/54*365/16384=11%代码层面训练低效的主要
3、原因计算效率显存拷贝网络传输 Yanjie Gao(Microsoft Research)et al,ACM ICSE 2024,An Empirical Study on Low GPU Utilization of Deep Learning Jobs.Yanjie Gao(Microsoft Research)et al,ACM ICSE 2023,An Empirical Study on Quality Issues of Deep Learning Platform.如何知晓你的训练任务是否存在这些问题?LLM 推理开销大、时延高Llama8B70B405BFP3236GB267G
4、B1.48TBFP1620GB135GB758GBINT812GB70GB382GBINT48GB37GB193GBLLM Memory RequirementsLLM Inference Performance Engineering:Best Practices80GB:1 GPU640GB:1 Node x 8 GPU1.28TB:2 Node x 8 GPUTime To First Token(TTFT)Time Per Output Token(TPOT)Model Bandwidth Utilization(MBU)GPU 并非越少越好GPU 越少,则每个GPU 需要加载更多的模
5、型参数。GPU 并非越多越好GPU 越多,则通信越复杂,内存碎块越多。没有银弹,唯有持续观测&优化。排查 LLM 推理显存消耗的挑战Python/C+PyTorchvLLMBiz从推理应用到在线 LLM 推理服务APIGWAuthServiceRAGVectorDBToolsCacheGatewayLLM-1LLM-2vLLMPyTorchSGLang.LLMAgentMemCacheDiskCache云-在线推理服务是一个复杂的分布式服务TTFT、TPOT、时延、吞吐端-自动驾驶、具身智能(ROS2)的端到端低时延和高稳定性要求Robot Operating System 2(ROS2)-B
6、ased Frameworks for Increasing Robot Autonomy:A SurveyPromptsSignalsPerception-Planning-ControlBEV-OCC-Transformer从大模型到小模型:消费级 GPU、CPU 协同Accelerating Model Training in Multi-cluster Environments with Consumer-grade GPUs,SIGCOMM 2024.AI 训练和推理的可观测性需求GPU计算HBM显存COMM通信SpanSpanSpanSpanSpan训练&推理在线、端侧推理服务cu
7、daMemcpyop(N,x,y)cudaSynccudaMemcpyHBMGPUHBMHostDevncclCOMMtGatewayAuth3rdROS2 NodesGateway.现状:传统解决方案和工具的问题PART 02DCGM Prometheus Exporter发现故障 优化性能 XGPU:Nvidia Nsight、PyTorch ProfilerNsight 的问题:需要重启进程、缺少 CPU Context。PyTorch Profiler 的问题:只能用于 PyTorch;性能影响大;需要改代码、重启进程。需要手工精心打造插桩、开销RDMA 网络:网卡/交换机指标、拨测M
8、eta:Network Observability for AI/HPC Training Workflows私有基础设施网卡/交换机指标粒度粗AI/ML 应用(K8s Pod)公有云RDMA 网络AI/ML 应用(K8s Pod)公有基础设施RDMA 网络是性能黑盒字节&北邮聚焦 RDMA 网络主动拨测SIGCOMM 2024NSDI 2023在线推理服务的可观测性:分布式追踪OpenLLMetryOpenLITLangSmith支持的语言有限、需要修改代码方法:eBPF 构建零侵扰可观测性PART 03eBPF 的可观测性能力Socket EventsFile EventsPerf Eve
9、ntsFunction Call EventsProcess EventsKernel EventsHW Eventscuda/ibverbscudaXXX()ncclXXX()使用 eBPF 实现可观测性的优势cuda/ibverbscudaXXX()ncclXXX()Zero CodeFullStack业内探索:eBPF Profiling&Tracing华为:eBPF Tracing+ROS2Meta:eBPF GPU Profiling使用 eBPF 实现持续剖析的技术挑战如何合并 Python Stack 和 C/C+Stack#0 _select_nocancel()#1 pysl
10、eep#2 time_sleep#3 call_function#4 PyEval_EvalFrameEx#5 fast_function#6 call_function#7 PyEval_EvalFrameEx#8 fast_function#9 call_function#10 PyEval_EvalFrameEx#11 fast_function#12 call_function#13 PyEval_EvalFrameEx#14 fast_function#15 call_function#16 PyEval_EvalFrameEx#17 _PyEval_EvalCodeWithName
11、#18 PyEval_EvalCodeEx#19 PyEval_EvalCode栈合并目的:全栈剖析https:/ eBPF uprobeHook cuda_malloc获取显存申请调用栈 eBPF uretprobeHook cuda_malloc获取申请的显存地址 eBPF uprobeHook cuda_free获取释放的显存地址 计算当前显存消耗使用 eBPF 实现分布式追踪的技术挑战Network-Centric Distributed Tracing with DeepFlow:Troubleshooting Your Microservices in Zero Code实践:Py
12、Torch 全栈剖析和追踪PART 04DeepFlow 中的 eBPF AutoProfiling1.Compute ProfilingGPU计算HBM显存COMM通信SpanSpanSpanSpanSpanPyTorch+nanoGPT CPU&GPU 火焰图CPU&GPU 全栈剖析:Python 业务函数 Python vLLM 函数 Python PyTorch 函数 C/C+Lib 函数 CUDA 入口函数到底哪个函数调用栈在 CPU、GPU 上花费的时间最长?到底一个 Task 的哪个 Worker 拖累了整体的速度?零侵扰、全栈回答上述问题PyTorch+nanoGPT CPU&
13、GPU 火焰图CUDA 函数耗时按 K8s Label 过滤,对比同一个 Task 的所有 Pod2.HBM ProfilingGPU计算HBM显存COMM通信SpanSpanSpanSpanSpanCUDA mem-alloc 显存申请火焰图为什么显存不够了,OOM 了?哪个函数调用栈申请的显存最多?HostDevice 拷贝耗时?零侵扰、全栈回答上述问题CUDA mem-inuse 显存实时用量火焰图演进:Hook KV-Cache allocator?为什么显存不够了,OOM 了?哪个函数调用栈当前消耗的显存最大?HostDevice 拷贝耗时?零侵扰、全栈回答上述问题3.COMM.Pr
14、ofilingGPU计算HBM显存COMM通信SpanSpanSpanSpanSpanRDMA 网络性能剖析RoCEv2 Packet关键标签:Client 及其关联的 K8s Pod、标签Server 及其关联的 K8s Pod、标签Client Queue PairServer Queue Pair关键指标:丢包率:即 NACK 的比例时延:ACK 的时延吞吐:通信对的 bps、pps 等使用 eBPF Hook RDMA APIeBPF HooksFunction作ibv_modify_qpQueue Pair 状态修改ibv_reg_mrMemory Region 注册ibv_dere
15、g_mrMemory Region 注销ibv_post_sendbuffer 发送或 RDMA 读写ibv_poll_cq等待 wr 完成libibverbs Hooks,NCCL Hooks,PyTorch Hooks,.4.Distributed TracingGPU计算HBM显存COMM通信SpanSpanSpanSpanSpan在线推理服务、端侧 ROS2 推理服务内置协议识别能力+可编程协议识别能力Function CallNetwork Packetdeepflow-agentdeepflow-serverProtobufThriftRPC over TCP业务私有DBMQ拓扑、
16、指标、追踪、日志LLM 应用全栈可观测性WASM 插件LUA插件协议识别应用协议字段提取内置解析器应用协议解析模块热插拔二进制脚本*业务属性标签用户唯一标识、Prompt 唯一标识、.业务属性标签提取框架开发平台工程常见RPC.soSDKFastCGIHTTPHTTP2HTTPSTLSDNSJSONXML探索:Agent 自动优化 ML 代码PART 05如何快速高效的理解全栈函数利用 LLM Agent 自动优化 ML 代码利用 LLM Agent 自动优化 ML 代码/2DeepFlow:零侵扰实现 AI 应用的全栈可观测性集合通信网络性能监控在线推理服务分布式追踪CPU+GPU 全栈持续剖析无需修改代码,无需重启进程THANKS