View a markdown version of this page

Problemas de implementación desagregados de prellenado y decodificación (DPD) - Amazon SageMaker AI

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Problemas de implementación desagregados de prellenado y decodificación (DPD)

Descripción general: problemas comunes que pueden surgir al implementar puntos finales de inferencia con el prellenado y la decodificación desagregados (DPD). Estos problemas suelen estar relacionados con el arranque del pod, la transferencia de caché en KV, el comportamiento del enrutamiento o la asignación de recursos.

Problemas al iniciar el pod

Problema: los pods de DPD no se inician o no están preparados.

Síntomas y resolución:

  • Las cápsulas se quedaron pegadas ContainerCreating durante más de 10 minutos. Corre kubectl describe pod <pod-name> y busca Failed to pull image oMountVolume.SetUp failed. Compruebe que la imagen del trabajador existe y que se puede acceder al bucket de Amazon S3 desde el clúster.

  • Los pods están bloqueados en 2/3 Ready. El dispositivo de trabajo de vLLM sigue cargando el modelo. Llama 3.3 70B tarda entre 5 y 10 minutos en una captura fría de Amazon S3. Compruebe el progreso:

    kubectl logs <pod-name> -c <prefill|decode>-<endpoint-name> | grep -i "engine\|loading"

    Espere a que aparezca el mensaje de registro que indica que el motor está listo.

  • Los pods se reinician con EngineDeadError oTimeoutError. Esto indica una versión de operador anterior a la v3.2. Actualice el operador de inferencia antes de continuar.

  • Todas las solicitudes HTTP devuelven 503 inmediatamente después de la implementación. Los pods siguen cargando el modelo. Espera a que el InferenceEndpointConfig estado llegue aDeploymentComplete:

    kubectl get inferenceendpointconfig <endpoint-name> -n <namespace> -w

Problemas con la transferencia de caché KV

Problema: la transferencia de caché en KV entre los módulos de prellenado y decodificación falla o tiene un rendimiento deficiente.

Síntomas y resolución:

  • Se muestran Retrieved 0 out of N required tokens los registros del decodificador. No se produjo la transferencia de KV y el decodificador volvió a realizar un nuevo cálculo local. Compruebe que pd_role es correcta (el prerelleno debe serlo y el decodificador debe serloreceiver)sender, que ambos pods utilizan la misma imagen de trabajo y que PYTHONHASHSEED está configurada en ambos pods. "0"

  • Los registros del decodificador muestran que el búfer PD Failed to allocate memory object, retrying... del decodificador está lleno en condiciones de alta concurrencia. Aumente PD_BUFFER_SIZE (pruebe "17179869184" con 16 GiB o "34359738368" 32 GiB) o escale. decodingSpec.replicas

  • El rendimiento de transferencia en kV es inferior a 1. GB/s El EFA no se utiliza y las transferencias recaen en la CPU. Compruebe que ambos pods estén programados en EFA-capable nodos de la misma zona de disponibilidad, que los nodos tengan recursos de EFA disponibles (kubectl describe node <node-name> | grep efa) y que la imagen del trabajador incluya el proveedor libfabric de EFA.

Problemas de enrutamiento

Problema: las solicitudes no se envían correctamente entre los módulos de prellenado y decodificación.

Síntomas y resolución:

  • Todas las solicitudes omiten el llenado previo (incluso las más largas). Revise los registros del router para ver las decisiones de enrutamiento:

    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"

    Verifique que el estimated_tokens valor supere el suyoroutingThreshold. Si la estimación del token es inferior a la esperada, es posible que el tokenizador del router esté contando de forma diferente. Intente reducirla. routingThreshold

  • Distribución desigual de la carga entre las prellenadoras. Si tiene varias réplicas de prellenado y observa que una está sobrecargada mientras que otras están inactivas, cambie la estrategia de enrutamiento a una distribución uniforme. roundrobin También puede utilizarla kvaware para una distribución basada en la memoria caché que tenga en cuenta el estado real de cada relleno previo.