本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
分解的预填和解码 (DPD) 部署问题
概述:使用分解预填和解码 (DPD) 部署推理端点时可能出现的常见问题。这些问题通常涉及 pod 启动、KV 缓存传输、路由行为或资源分配。
Pod 启动问题
问题:DPD Pod 无法启动或保持未就绪状态。
症状和解决方法:
-
Pod 卡在里
ContainerCreating面超过 10 分钟。跑kubectl describe pod <pod-name>去寻找Failed to pull image或MountVolume.SetUp failed。验证工作映像是否存在,并且可以从集群访问 Amazon S3 存储桶。 -
吊舱卡在 “ 2/3 就绪” 状态。vlLM 工作程序仍在加载模型。Llama 3.3 70B 从冷酷的亚马逊 S3 取货中需要 5-10 分钟。查看进度:
kubectl logs <pod-name> -c <prefill|decode>-<endpoint-name> | grep -i "engine\|loading"等待显示引擎已准备就绪的日志消息。
-
Pod 使用
EngineDeadError或重新启动TimeoutError。这表示操作员版本早于 v3.2。在继续操作之前,请升级推理运算符。 -
所有 HTTP 请求在部署后立即返回 503。Pod 仍在加载模型。等待
InferenceEndpointConfig状态达到DeploymentComplete:kubectl get inferenceendpointconfig <endpoint-name> -n <namespace> -w
KV 缓存传输问题
问题:预填和解码 pod 之间的 KV 缓存传输失败或性能不佳。
症状和解决方法:
-
解码器日志显示
Retrieved 0 out of N required tokens。KV 传输未发生,解码器又回到了本地重新计算。验证是否pd_role正确(预填器必须正确sender,解码器必须正确receiver),两个 pod 使用相同的工作映像,并且在两个 pod"0"上都设置PYTHONHASHSEED为。 -
解码器日志显示
Failed to allocate memory object, retrying...解码器 PD 缓冲区在高并发下已满。要么增加PD_BUFFER_SIZE(尝试"17179869184"使用 16 GiB 或 32 GiB)"34359738368",要么缩放。decodingSpec.replicas -
KV 传输吞吐量低于 1 GB/s。EFA 未被使用,传输正在回退到 CPU。验证两个 Pod 是否调度在同一个可用区的 EFA-capable节点上,节点是否有 EFA 资源可用(
kubectl describe node <node-name> | grep efa),以及工作映像是否包含 EFA libfabric 提供程序。
路由问题
问题:请求在预填和解码 pod 之间路由不正确。
症状和解决方法:
-
所有请求都会绕过预填器(即使是长提示)。检查路由器日志以了解路由决定:
ROUTER_POD=$(kubectl get pods -n hyperpod-inference-system -o name | grep router | head -1) kubectl logs $ROUTER_POD -n hyperpod-inference-system -c router-container --tail=50 \ | grep "Conditional routing"验证该
estimated_tokens值超过您的routingThreshold。如果代币估计值低于预期,则路由器的分词器的计数方式可能会有所不同,请尝试降低。routingThreshold -
预填料之间的负荷分布不均匀。如果您有多个预填器副本,并且发现其中一个副本过载,而其他副本处于空闲状态,请将路由策略切换
roundrobin为均匀分布。或者,也可以kvaware用于缓存感知分配,该分配考虑了每个预填器的实际状态。