View a markdown version of this page

分解的预填和解码 (DPD) 部署问题 - 亚马逊 SageMaker AI

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

分解的预填和解码 (DPD) 部署问题

概述:使用分解预填和解码 (DPD) 部署推理端点时可能出现的常见问题。这些问题通常涉及 pod 启动、KV 缓存传输、路由行为或资源分配。

Pod 启动问题

问题:DPD Pod 无法启动或保持未就绪状态。

症状和解决方法:

  • Pod 卡在里ContainerCreating面超过 10 分钟。kubectl describe pod <pod-name>去寻找Failed to pull imageMountVolume.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 tokensKV 传输未发生,解码器又回到了本地重新计算。验证是否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用于缓存感知分配,该分配考虑了每个预填器的实际状态。