Estoy configurando un InferenceService usando Argo y KFServing con Amazon EKS (Kubernetes). Es importante saber que nuestro equipo tiene un clúster de EKS por entorno, lo que significa que puede haber múltiples aplicaciones dentro de nuestro clúster que no controlamos.
Esto es lo que hemos configurado hasta ahora
argo para enviar flujos de trabajo que inician la capacitación en el n.° 1. Al instalar argo en nuestro clúster de kubernetes, notamos que sus componentes a veces se asignan a los nodos de la GPU.La configuración actual que tenemos para el n.° 2 y el n.° 3 (arriba) parece prohibir la capacidad de KFServing de reducirse a cero. Nos preocupa que tener estos componentes en la GPU no permita que la GPU se reduzca.
¿Qué pods deben asignarse a nuestros nodos de GPU?
(Opción 1) ¿Solo necesitamos que se asigne nuestro módulo de flujo de trabajo argo y repeler el resto?
-- O --
(Opción 2) ¿Se necesitan otros componentes de kfserving dentro del nodo GPU para que funcione correctamente?
Opción 1: ¿Cómo evitamos que todos los pods entren en nuestros nodos de GPU que no sean el pod de flujo de trabajo de argo? Como recordatorio, tenemos otras aplicaciones que no podemos controlar, por lo que agregar afinidades de nodos para cada pod parece poco realista.
Opción 2: ¿Cómo se escalan a cero los nodos de GPU cuando estos nodos de GPU tienen componentes kfserving en ellos? Tenía la impresión de que reducir la escala significa que no hay pods en el nodo.
tl; dr Puedes usar taints .
¿Qué pods deben asignarse a nuestros nodos de GPU?
Los pods de los trabajos que requieren GPU.
Si su trabajo de entrenamiento requiere GPU, debe asignarlo usando el nodeSelector y las tolerations en la especificación de su despliegue de entrenamiento/implementación, vea un buen ejemplo aquí .
Si su modelo es CV/NLP (muchas multiplicaciones de matrices), es posible que también desee tener el servicio de inferencia en la GPU; en ese caso, debe solicitarlo en su especificación como se describe aquí .
¿Solo necesitamos que se asigne nuestro pod de flujo de trabajo de argo y repeler el resto?
Sí, si su servicio de inferencia no requiere GPU.
¿Se necesitan otros componentes kfserving dentro del nodo GPU para que funcionen correctamente?
No, el único componente kfserving es kfserving-controller y no requiere una gpu ya que solo orquesta la creación de los recursos istio&knative para su servicio de inferencia.
Si hay servicios de inferencia ejecutándose en su grupo de nodos de gpu sin tener la GPU solicitada en la especificación, significa que el grupo de nodos no está configurado para tener el efecto de corrupción NoSchedule . Asegúrese de que el grupo de nodos gpu en la configuración de eksctl tenga la contaminación como se describe en el documento .