Aprovechar las GPU fraccionarias en Kubernetes

Diseñado para la velocidad: ~ 10 ms de latencia, incluso bajo carga
¡Una forma increíblemente rápida de crear, rastrear e implementar sus modelos!
- Gestiona más de 350 RPS en solo 1 vCPU, sin necesidad de ajustes
- Listo para la producción con soporte empresarial completo
¿Por qué elegir GPU fraccionarias?
Las GPU fraccionadas nos permiten asignar varias cargas de trabajo a una sola GPU, lo que puede resultar útil en los siguientes escenarios:
- Las cargas de trabajo ocupan entre 2 y 3 GB de VRAM, por lo que puede asignar varias réplicas de esta carga de trabajo en una sola GPU que tenga alrededor de 16 GB de VRAM o más.
- Cada carga de trabajo tiene poco tráfico y no puede maximizar el uso de la GPU.
¿Cómo usar las GPU fraccionadas?
- Rebanamiento del tiempo: En este enfoque, puede dividir una GPU en un número fijo de partes fraccionarias y, a continuación, elegir una fracción de GPU para esta carga de trabajo. Por ejemplo, podemos decidir dividir una GPU en 10 sectores y, a continuación, solicitar 3 sectores para una carga de trabajo, 5 sectores para la carga de trabajo2 y 2 sectores para la carga de trabajo3. Esto significa que la carga de trabajo1 utilizará 0,3 GPU (procesamiento más del 30% de VRAM), la carga de trabajo2 utilizará 0,5 GPU y la carga de trabajo3 utilizará 0,2 GPU. Sin embargo, la división de tiempos solo se usa para programar las cargas de trabajo en la misma máquina; no significa ningún aislamiento real de la máquina. Por ejemplo, si la máquina GPU tiene 16 GB de VRAM, es responsabilidad del usuario asegurarse de que la carga de trabajo1 ocupa menos de 4,8 GB de VRAM, la carga de trabajo2 ocupa menos de 8 GB de VRAM y la carga de trabajo3 consume menos de 3,2 GB de VRAM. Si una carga de trabajo empieza a ocupar más memoria de forma repentina, los demás procesos pueden bloquearse. El procesamiento también se comparte, pero una carga de trabajo puede llegar a utilizar la GPU completa si las demás cargas de trabajo están inactivas; básicamente, se trata de un cambio de contexto entre las tres cargas de trabajo. Puedes leer más sobre esto aquí.
- MIG (GPU de instancias múltiples): Esta es una función proporcionada por Nvidia solo en las GPU A100 y H100; no funciona en otras GPU. Podemos dividir las GPU en un número fijo de partes configurables, tal y como se indica en la tabla siguiente. Las cargas de trabajo pueden elegir uno de los segmentos y obtendrán un aislamiento de computación y memoria. Las instancias no son exactamente las fracciones completas de la GPU, sino unidades más discretas, como se indica en la tabla siguiente. Por ejemplo, supongamos que dividimos una GPU A100 de 40 GB en 7 partes; entonces podemos colocar 7 cargas de trabajo cada una con alrededor de 1/7 de GPU y 5 GB de VRAM. Ten en cuenta que, en este caso, no podemos limitarnos a proporcionar 2 porciones a una carga de trabajo y esperar que tenga 2/7 GPU y 10 GB de VRAM. En este caso, cada carga de trabajo solo puede tener un segmento.

Requisitos previos para la GPU fraccionada
Agregar integración en la nube
Para habilitar las GPU fraccionadas, tendremos que crear un grupo de nodos independiente de las GPU y no funcionará mediante el aprovisionamiento dinámico de nodos estándar en AWS /GCP. Para que Truefoundry pueda leer esos grupos de nodos, tenemos que asegurarnos de que la integración de la nube ya está hecha con Truefoundry.
Si aún no está activado, por favor sigue esta guía para habilitar la integración en la nube.
Una vez que se agrega la integración en la nube, debe «crear grupos de nodos» para las GPU compatibles con MIG o TimeSlicing. Esta configuración es diferente para los distintos proveedores de nube. Siga la guía que aparece a continuación para habilitar las GPU fraccionadas en su clúster.
Instale la última versión de tfy-gpu-operator
- Ir a
Despliegues -> Helm -> tfy-gpu-operator. - Haga clic en editar (tres puntos a la derecha)
- Elige la última versión del gráfico (la más alta) en el menú desplegable y haz clic en Enviar.
Habilitar MIG
Azure
1. Crea un Nodepool con MIG habilitado usando el argumento --perfil de instancia de la GPU de la CLI de Azure. Este es un ejemplo de comando para hacer lo mismo:
como pregunta nodepool add\
<your cluster name>--nombre-clúster\
<your resource group>--grupo de recursos\
--sin espera\
--habilitar el escalador automático de clústeres\
--política de desalojo Eliminar\
--recuento de nodos 0\
--recuento máximo 20\
--recuento mínimo 1\
--node-osdisk-size 200\
--modo de escalado descendente Eliminar\
--tipo operativo Linux\
--node contiene «nvidia.com/gpu=presente:noschedule»\
--nombre a100mig7\
--estándar de tamaño de máquina virtual de nodo_NC24ADS_A100_v4\
--punto prioritario\
--os-sku Ubuntu\
--gpu-instance-profile MiG1G
2. Actualiza los grupos de nodos del clúster de Truefoundry.
3. Implemente su carga de trabajo seleccionando la GPU (con un recuento de 1) y seleccionando el grupo de nodos correcto.
GCP
Crea un grupo de nodos y pasa el mig_profile acelerador pasando gpu_partition_size=1 g.5 gb[O uno de los valores permitidos para el perfil MIG que puede encontrar en la parte superior de esta página]
Los grupos de nodos de contenedores de gcloud crean a100-40-mig-1g5gb\ INT ✘
<enter your project name>--proyecto=\
<enter your region>--región=\
<enter your cluster name here>--clúster=\
--tipo de máquina=a2-highgpu-1g\
--tipo de acelerador=nvidia-tesla-a100, número = 1, tamaño de partición de la gpu=1g.5gb\
--habilitar el escalado automático\
--número total de nodos mínimos 0\
--número máximo total de nodos 4\
--nodos mínimos de aprovisionamiento 0\
--números-nodos 0
AWS
No es trivial admitir actualmente las GPU MIG en AWS de forma gestionada, aunque si quieres probar la función -> Consulta estas documentos
Habilitar Timeslicing
Azure
- Asegúrese de que
complemento de dispositivo nvidiala configuración está correctamente configurada enoperador tfy-gpu-gráfico.
Ir aHelm -> tfy-gpu-operator, haga clic en editar y asegúrese de que las siguientes líneas estén presentes en elvalora
operador de GPU azure-aks-:
Plugin de dispositivo:
configuración:
datos:
todos: «»
cronometrado-10: |-
versión: v1
compartir:
Recorte de tiempo:
renameByDefault: verdadero
recursos:
- nombre: nvidia.com/gpu
réplicas: 10
nombre: time-slicing-config
crear: verdadero
predeterminado: todos
- Crea un grupo de nodos con
dispositivo-plugin.configapuntando a la configuración correcta de división de tiempo con la CLI de Azure. Este es un comando de ejemplo para hacer lo mismo.
como pregunta nodepool add\
<your cluster name>--nombre-clúster\
<your resource group>--grupo de recursos\
--sin espera\
--habilitar el escalador automático de clústeres\
--política de desalojo Eliminar\
--recuento de nodos 0\
--recuento máximo 20\
--recuento mínimo 0\
--node-osdisk-size 200\
--modo de escalado descendente Eliminar\
--tipo operativo Linux\
--node contiene «nvidia.com/gpu=presente:noschedule»\
--nombre a100mig7\
--estándar de tamaño de máquina virtual de nodo_NC24ADS_A100_v4\
--punto prioritario\
--os-sku Ubuntu\
--labels nvidia.com/device-plugin.config=time-sliced-10
- Actualice los grupos de nodos en el clúster de truefoundry.
- Despliegue su carga de trabajo seleccionando la GPU (con un recuento de 1) y seleccionando el grupo de nodos correcto.
GCP
Los grupos de nodos de contenedores de gcloud crean un 100-40-frac-10\ ✔
--proyecto=tfy-devtest\
--región=EE. UU. Central1\
--cluster=tfy-gtl-b-us-central-1\
--tipo de máquina=a2-highgpu-1g\
--acelerador type=nvidia-tesla-a100, count=1, gpu-sharing-strategy=tiempo compartido, número máximo de clientes compartidos por gpu=10\
--habilitar el escalado automático\
--número total de nodos mínimos 0\
--número máximo total de nodos 4\
--nodos mínimos de aprovisionamiento 0\
--números-nodos 0
AWS
1. Asegúrese de que complemento de dispositivo nvidia la configuración está correctamente configurada en operador tfy-gpu-gráfico.
Ir a Helm -> tfy-gpu-operator, haga clic en editar y asegúrese de que las siguientes líneas estén presentes en el valora
operador de GPU aws-eks-:
Plugin de dispositivo:
configuración:
datos:
todos: «»
cronometrado-10: |-
versión: v1
compartir:
Recorte de tiempo:
renameByDefault: verdadero
recursos:
- nombre: nvidia.com/gpu
réplicas: 10
nombre: time-slicing-config
crear: verdadero
predeterminado: todos
2. Cree un grupo de nodos en AWS EKS con la siguiente etiqueta:
etiquetas:
«nvidia.com/device-plugin.config»: «10 veces segmentado»
Uso de GPU fraccionarias en tu servicio
Para usar GPU fraccionarias en tu servicio:
1. Asegúrese de haber agregado los grupos de nodos deseados.
2. Sincronice los grupos de nodos del clúster desde su cuenta en la nube yendo a Integraciones -> Clústeres -> Sincronización, como se muestra a continuación:

3. Puedes realizar la implementación con la interfaz de usuario de Truefoundry o con el SDK de Python.
Nota: El ajuste de escala automático de los grupos de nodos solo funcionará en GCP racimos. Tendrá que aumentar o reducir manualmente la escala de los grupos de nodos en Azure/AWS.
Implementación con interfaz de usuario
1. Para implementar una carga de trabajo que utilice una GPU fraccionada, comience a implementar su servicio/trabajo en truefoundry y, en la sección «Recursos», seleccione el selector de grupos de nodos
2. Una vez que hayas seleccionado el selector de nodos en la parte superior derecha de la sección Recursos, podrás ver las GPU fraccionadas en la interfaz de usuario que puedes seleccionar (como se muestra a continuación)


Implementación con Python SDK
Puedes usar GPU fraccionarias con el SDK de Python con los siguientes cambios en el cambio de recursos:
1. Uso de GPU MIG
de servicefoundry import (
...
Servicio,
NVIDIA MigGPU,
Selector de grupos de nodos,
)
servicio = Servicio (
...
resources=Recursos (
...
node=nodePoolSelector (
<add your nodepool name>grupos de nodos = [» «],
),
dispositivos= [
NVIDIA MigGPU (perfil="1g.5gb»)
],
),
)
2. Uso de la GPU Timeslicing
de servicefoundry import (
Servicio,
GPU NVIDIA Time Slicing,
Selector de grupos de nodos,
)
servicio = Servicio (
...
resources=Recursos (
...
node=nodePoolSelector (
<add your nodepool name>grupos de nodos = [» «],
),
dispositivos= [
GPU NVIDIA TimeSlicing (gpu_memory=4000),
],
),
)
Estamos en True Foundry admiten GPU fraccionarias de una manera extremadamente simplificada.
TrueFoundry AI Gateway ofrece una latencia de entre 3 y 4 ms, gestiona más de 350 RPS en una vCPU, se escala horizontalmente con facilidad y está listo para la producción, mientras que LitellM presenta una latencia alta, tiene dificultades para superar un RPS moderado, carece de escalado integrado y es ideal para cargas de trabajo ligeras o de prototipos.
La forma más rápida de crear, gobernar y escalar su IA



















.png)


.webp)




.webp)







