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.
Gobierno de tareas para el despliegue del modelo en HyperPod
En esta sección, se explica cómo optimizar los clústeres de Amazon SageMaker HyperPod EKS compartidos para cargas de trabajo de inferencia en tiempo real. Aprenderá a configurar las características de gobernanza de tareas de Kueue, como la administración de cuotas, la programación de prioridades y las políticas de uso compartido de recursos, para garantizar que sus cargas de trabajo de inferencia reciban los recursos de GPU que necesitan durante los picos de tráfico y, al mismo tiempo, mantener una asignación justa entre las actividades de entrenamiento, evaluación y pruebas de sus equipos. Para obtener información general sobre la gobernanza de tareas, consulte SageMaker HyperPod gobierno de tareas.
Funcionamiento de la administración de la carga de trabajo de inferencia
Para gestionar eficazmente los picos de tráfico de inferencia en tiempo real en los clústeres de HyperPod EKS compartidos, implemente las siguientes estrategias de gobierno de tareas utilizando las capacidades existentes de Kueue.
Configuración de las clases de prioridad
Defina clases de prioridad específicas para las cargas de trabajo de inferencia con un peso elevado (por ejemplo, 100) a fin de garantizar que los pods de inferencia se admitan y programen antes que otros tipos de tarea. Esta configuración permite que las cargas de trabajo de inferencia se antepongan a los trabajos de menor prioridad durante la carga del clúster, lo cual es fundamental para mantener los requisitos de baja latencia durante los picos de tráfico.
Dimensiones y asignación de cuotas
Reserve suficientes recursos de GPU en la ClusterQueue de su equipo para gestionar los picos de inferencia esperados. Durante los períodos de poco tráfico de inferencias, los recursos de cuota no utilizados se pueden asignar temporalmente a las tareas de otros equipos. Cuando la demanda de inferencias aumenta, estos recursos prestados se pueden recuperar para priorizar los pods de inferencias pendientes. Para obtener más información, consulte Cluster Queue
Estrategias de uso compartido de recursos
Elija entre dos enfoques de uso compartido de cuotas en función de sus requisitos:
-
Control estricto de los recursos: desactive las cuotas de préstamo y los préstamos para garantizar que la capacidad reservada de la GPU esté siempre disponible para sus cargas de trabajo. Este enfoque requiere un tamaño de cuotas suficientemente grande como para poder gestionar los picos de demanda de forma independiente, lo que puede provocar que los nodos estén inactivos durante los períodos de poco tráfico.
-
Uso compartido flexible de recursos: habilite el préstamo de cuotas para utilizar los recursos inactivos de otros equipos cuando sea necesario. Los pods prestados se marcan como preferentes y se pueden expulsar si el equipo que las presta recupera su capacidad.
Intra-Team Preferencia
Active la preferencia dentro del equipo al ejecutar cargas de trabajo mixtas (evaluación, entrenamiento e inferencia) por debajo de la misma cuota. Esto permite que Kueue anteponga los trabajos de menor prioridad dentro de su equipo para incluir pods de inferencia de alta prioridad, de manera que se puedan ejecutar las inferencias en tiempo real sin depender de los préstamos de cuotas externas. Para obtener más información, consulte Preferencia
Configuración de la carga de trabajo de inferencia de ejemplo
El siguiente ejemplo muestra cómo Kueue administra los recursos de GPU en un clúster de Amazon SageMaker HyperPod compartido.
Configuración del clúster y de la política
El clúster tiene la siguiente configuración:
-
Equipo A: cuota de 10 GPU P4
-
Equipo B: cuota de 20 GPU P4
-
Aprovisionamiento estático: sin escalado automático
-
Capacidad total: 30 GPU P4
El grupo de GPU compartido usa esta política de prioridad:
-
Real-time inferencia: prioridad 100
-
Entrenamiento: prioridad de 75
-
Evaluación: prioridad de 50
Kueue aplica las cuotas de los equipos y las clases de prioridad, y habilita la preferencia y el préstamo de cuotas.
Estado inicial: uso normal del clúster
En operaciones normales:
-
El equipo A realiza trabajos de entrenamiento y evaluación en los 10 GPU P4.
-
El equipo B ejecuta la inferencia (10 P4) y la evaluación (10 P4) en tiempo real dentro de su cuota de 20 GPU
-
El clúster se utiliza por completo y se admiten y se ejecutan todos los trabajos
Pico de inferencia: el equipo B requiere GPU adicionales
Cuando el equipo B experimenta un pico de tráfico, los pods de inferencia adicionales requieren 5 GPU P4 más. Kueue detecta que los nuevos pods:
-
Están dentro del espacio de nombres del equipo B
-
Tienen prioridad de 100 (inferencia en tiempo real)
-
Todavía no se han admitido debido a limitaciones de cuota
El proceso de respuesta de Kueue elige entre dos opciones:
Opción 1 - préstamo de cuotas: si el equipo A solo usa 6 de sus 10 P4, Kueue puede admitir los pods del equipo B con las 4 P4 inactivas. Sin embargo, estos recursos prestados se marcan como preferentes: si el equipo A envía trabajos para alcanzar la cuota total, Kueue expulsa los pods de inferencia prestados por el equipo B.
Opción 2: Self-preemption (recomendada): el equipo B ejecuta trabajos de evaluación de baja prioridad (prioridad 50). Cuando los pods de inferencia de alta prioridad esperan, Kueue antepone los trabajos de evaluación dentro de la cuota del equipo B y admite los pods de inferencia. Este enfoque proporciona una asignación segura de los recursos sin riesgo de expulsión externa.
Kueue sigue un proceso de tres pasos para asignar recursos:
-
Verificación de cuotas
Pregunta: ¿El equipo B tiene una cuota que no utiliza?
-
Sí → Admitir los pods
-
No → Continuar con el paso 2
-
-
Self-preemption dentro del equipo B
Pregunta: ¿Se pueden anteponer los trabajos de menor prioridad del equipo B?
-
Sí → Anteponer los trabajos de evaluación (prioridad 50), liberar 5 P4 y admitir los pods de inferencia
-
No → Continuar con el paso 3
Este enfoque mantiene las cargas de trabajo dentro de la cuota garantizada del equipo B, lo que evita los riesgos de expulsión externa.
-
-
Préstamos de otros equipos
Pregunta: ¿Se puede tomar prestada una cuota inactiva de otros equipos?
-
Sí → Admitir el uso de una cuota prestada (marcada como preferente)
-
No → El pod conserva el estado
NotAdmitted
-
Configurar la gobernanza de las tareas para las cargas de trabajo de inferencia
Para integrar tus cargas de trabajo de inferencia con Kueue, añade etiquetas de gobierno de tareas a tu CRD. InferenceEndpointConfig JumpStartModel Estas etiquetas determinan quién LocalQueue recibe la carga de trabajo necesaria para la gestión de las cuotas y definen la prioridad de programación utilizada en las decisiones de prevención. En las siguientes secciones se describen los requisitos previos, el alcance de los recursos, la configuración de las etiquetas y los pasos de verificación.
Requisitos previos
Antes de configurar la gobernanza de tareas para las cargas de trabajo de inferencia, asegúrese de que existan los siguientes recursos en el clúster: HyperPod
-
Kueue está instalado y ejecutándose en tu clúster
-
A ClusterQueueexiste con una cuota de GPU asignada a tu equipo
-
A LocalQueueexiste en el espacio de nombres en el que planea implementar su punto final de inferencia
-
Se definen uno o más PriorityClassrecursos para los tipos de carga de trabajo (como inferencia, formación o evaluación)
Para comprobar que estos recursos están disponibles, ejecute los siguientes comandos:
# Verify Kueue is installed kubectl get crd | grep kueue # List available PriorityClasses kubectl get priorityclass # List ClusterQueues kubectl get clusterqueue # List LocalQueues in your namespace kubectl get localqueue -n <your-namespace>
Comprender el alcance de los recursos
Los recursos de gobierno de tareas tienen diferentes ámbitos que afectan a la forma en que se configuran las etiquetas de despliegue de inferencias.
La kueue.x-k8s.io/queue-name etiqueta debe hacer referencia a una LocalQueue que exista en el mismo espacio de nombres que su o. InferenceEndpointConfig JumpStartModel Si no LocalQueue se encuentra ninguna coincidencia en ese espacio de nombres, Kueue no admitirá la carga de trabajo.
ClusterQueue ResourceFlavor, y PriorityClass tienen un ámbito de clúster y son accesibles desde cualquier espacio de nombres.
Para verificar el alcance de los recursos en tu clúster, sigue estos pasos:
kubectl api-resources | grep kueue
Añadir etiquetas de gobierno de tareas
Para habilitar la gobernanza de tareas para su implementación de inferencias, añada las siguientes etiquetas a la metadata sección de su InferenceEndpointConfig JumpStartModel CRD:
metadata: name: <your-deployment-name> namespace: <your-namespace> labels: kueue.x-k8s.io/queue-name: <your-localqueue-name> kueue.x-k8s.io/priority-class: <your-priority-class>
Descripciones de etiquetas:
-
kueue.x-k8s.io/queue-name— Enruta la carga de trabajo a la de tu equipo LocalQueue para el seguimiento de las cuotas. Debe coincidir con un LocalQueue nombre en el mismo espacio de nombres que la carga de trabajo. -
kueue.x-k8s.io/priority-class— Establece la prioridad de programación para las decisiones preferentes. Hace referencia a un clúster PriorityClass por su nombre.
Verificar la configuración del gobierno de tareas
Tras aplicar las etiquetas de gobierno de las tareas InferenceEndpointConfig o JumpStartModel con ellas, compruebe que Kueue ha admitido que la carga de trabajo y los módulos se están programando correctamente.
Para comprobar que la gobernanza de las tareas funciona
-
Compruebe el estado de admisión de la carga de trabajo:
kubectl get workloads -n <namespace>TrueEn la columna ADMITIDOS, se muestra una carga de trabajo admitida correctamente y en la columna RESERVADOS, los recursos reservados. ClusterQueue -
Compruebe el estado del módulo:
kubectl get pods -n <namespace>Tras su admisión, las cápsulas pasan gradualmente por las etapas de inicialización hasta que alcanzan
Runningel estado. -
Consulta la cuota de consumo:
kubectl get clusterqueue <clusterqueue-name> -o yamlRevise la
statussección para confirmar que se está realizando un seguimiento del consumo de recursos. -
Compruebe las cargas de trabajo LocalQueue pendientes:
kubectl get localqueue -n <namespace>La columna CARGAS DE TRABAJO PENDIENTES muestra cuántas cargas de trabajo están en espera de ser admitidas.
-
Vea los eventos de admisión a Kueue:
kubectl describe workload <workload-name> -n <namespace>Revisa la sección de Eventos para ver las decisiones de admisión y cualquier error.
Si los pods permanecen en buen Pending estado, determine si el problema está en el nivel de admisión de Kueue (se muestra en la carga de trabajoAdmitted: False) o en el nivel del programador de Kubernetes (se admite la carga de trabajo, pero el pod no se puede programar).