Clústeres de IA para IA local
Qué cubre este artículo sobre clústeres de IA
- Cuándo tiene sentido un clúster para IA.
- Diferencia entre inferencia en single-node y multi-node.
- Requisitos de red, almacenamiento y cómputo.
- Herramientas como vLLM, Ray, llama.cpp-RPC y soluciones tipo RunPod.
- Consejos para construir uno en el homelab.
Introducción: Clústeres de IA para IA local
Un PC potente individual es suficiente para muchas aplicaciones de IA local. Sin embargo, quien necesita modelos más grandes, mayor disponibilidad o inferencia distribuida, eventualmente llega al punto de conectar varios equipos en un clúster. Un clúster de IA puede distribuir cargas, repartir modelos entre varias GPUs o simplemente aprovechar varias GPUs pequeñas de forma conjunta.
Este artículo ofrece una visión general sobre clústeres de IA en el homelab y explica en qué debes fijarte al construir uno.
Conceptos clave
- Clúster: Varios equipos que trabajan juntos.
- Node: Equipo individual dentro del clúster.
- Inferencia single-node: El modelo se ejecuta en un equipo.
- Inferencia multi-node: El modelo se distribuye entre varios equipos.
- Tensor Parallelism: División de un modelo entre varias GPUs.
- Pipeline Parallelism: División por capas.
- RPC: Remote Procedure Call, llamada remota de funciones.
- Load Balancing: Distribución de solicitudes entre varios nodes.
Cuándo vale la pena un clúster de IA
- Un sistema individual no puede cargar el modelo deseado.
- Se quieren conectar varias GPUs pequeñas.
- Se requiere alta disponibilidad.
- Diferentes cargas de trabajo deben ejecutarse por separado.
- Se planean experimentos con entrenamiento o inferencia distribuida.
- Múltiples usuarios necesitan utilizar modelos simultáneamente.
Fundamentos de hardware
Equipo por node
Cada node necesita:
- CPU con AVX2.
- Suficiente RAM, al menos tanta como VRAM de GPU.
- Conectividad de red rápida, idealmente 10 Gbit/s o más.
- GPU con suficiente VRAM.
- Carriles PCIe para GPU y NVMe.
Red
- 1 Gbit/s es suficiente para clústeres pequeños.
- 10 Gbit/s o más recomendado para modelos grandes.
- La latencia es más importante que el ancho de banda puro.
- Switch con suficientes puertos y jumbo-frames opcional.
Almacenamiento
- Almacenamiento compartido facilita la distribución de modelos.
- NFS, Ceph, GlusterFS o simplemente rsync es posible.
- SSDs recomendados, NVMe para modelos grandes.
Tipos de clústeres
Clúster de inferencia
Múltiples nodes atienden solicitudes. Distribución de carga a través de reverse proxy o API gateway. Cada modelo puede ejecutarse en su propio node.
Clúster de distribución de modelos
Un modelo grande se divide entre varias GPUs o nodes. Ejemplos:
- Tensor Parallelism: Los pesos se reparten.
- Pipeline Parallelism: Las capas del modelo se distribuyen.
Para esto se necesita software especializado como vLLM, TensorRT-LLM o Ray Serve.
Clúster mixto
Algunos nodes manejan inferencia, otros bases de datos, RAG o monitoreo. Esta separación aumenta estabilidad y escalabilidad.
Herramientas para clústeres de IA
| Herramienta | Propósito |
|---|---|
| vLLM | Inferencia de alto rendimiento con soporte multi-GPU. |
| Ray | Aplicaciones Python distribuidas y serving. |
| llama.cpp RPC | Inferencia distribuida sobre la red. |
| TGI | Hugging Face Text Generation Inference. |
| Ollama | Inferencia local simple, principalmente single-node. |
| Kubernetes | Orquestación de cargas de trabajo en contenedores. |
| Docker Swarm | Orquestación de contenedores más simple. |
llama.cpp RPC
llama.cpp soporta RPC para aprovechar GPUs en otros equipos:
./rpc-server -p 50052 -m cuda
En el equipo principal:
./main -m modell.gguf --rpc 192.168.1.20:50052
De esta forma el cálculo se distribuye entre múltiples máquinas. La latencia y el ancho de banda juegan un papel importante.
vLLM para Multi-GPU
vLLM puede distribuir modelos entre varias GPUs en un equipo o entre múltiples nodes:
python -m vllm.entrypoints.openai.api_server \
--model meta-llama/Llama-3.1-70B \
--tensor-parallel-size 2 \
--pipeline-parallel-size 2
Aquí dos GPUs comparten los pesos, y otros dos nodes ejecutan partes del pipeline.
Topologías de red
- Star: Un node central coordina todo, simple pero con punto único de fallo.
- Mesh: Cada node se comunica con todos los demás, robusto.
- Ring: Los datos fluyen a través de un anillo, adecuado para ciertas estrategias de paralelización.
Para homelabs, generalmente una configuración star o mesh es suficiente.
Sistema operativo y orquestación
- Proxmox VE: Virtualización simple y contenedores en múltiples nodes.
- Kubernetes: Potente, pero complejo.
- Docker Swarm: Entrada simple a la orquestación de clústeres.
- Plain Linux con SSH: Esfuerzo mínimo, pero mucho trabajo manual.
Energía, refrigeración y espacio
- Múltiples equipos requieren mucha energía.
- Refrigeración y temperatura ambiente aumentan.
- Múltiples fuentes de alimentación y UPS tienen sentido.
- Gestión de cables y prevención de polvo importantes.
Costos
Un clúster con servidores usados o workstations puede ser económico. Hardware nuevo con GPUs actuales es caro. A menudo vale la pena una mezcla de un equipo principal y nodes económicos para tareas específicas.
Tropiezos típicos
- Conexión de red demasiado lenta: La inferencia se convierte en tiempo de espera.
- GPUs diferentes: Distribución de carga difícil.
- Falta de solución de almacenamiento compartido: Los modelos deben copiarse múltiples veces.
- RAM insuficiente: Cada node debe poder retener el modelo o partes de él.
- Stack de software complejo: Debugging se vuelve tedioso.
- Suministro de energía inadecuado: Varias GPUs consumen mucha corriente.
- Refrigeración subestimada: Las salas de servidores se calientan mucho.
Enlaces e información adicional
- BotServ.de Comprar estación de trabajo de IA
- BotServ.de Comprar GPU para IA local
- BotServ.de Red para IA local
- BotServ.de Red Proxmox
- BotServ.de Docker Swarm
- BotServ.de Rendimiento Ollama
FAQ: Clústeres de IA
¿Necesita un homelab obligatoriamente un clúster? No, para la mayoría de aplicaciones un PC potente es suficiente.
¿Puedo ejecutar Ollama en el clúster? Ollama es principalmente single-node. Para inferencia distribuida se necesitan otras herramientas como vLLM o llama.cpp RPC.
¿Es suficiente una red de 1 Gbit/s? Para modelos pequeños sí, para modelos grandes distribuidos probablemente no.
¿Puedo combinar GPUs diferentes? Es posible, pero no siempre es fácil. GPUs homogéneas son mucho más fáciles de manejar.
¿Vale la pena hardware de servidor usado? A menudo sí, especialmente para cargas de trabajo de CPU y mucha RAM.
Fuentes y lecturas adicionales
- vLLM: https://github.com/vllm-project/vllm
- Ray: https://www.ray.io/
- llama.cpp RPC: https://github.com/ggerganov/llama.cpp/blob/master/examples/rpc/README.md
- Kubernetes: https://kubernetes.io/
Resumen: Clústeres de IA para IA local
Un clúster de IA permite modelos más grandes, mayor disponibilidad y cargas de trabajo separadas. Para homelabs no siempre es necesario, pero es una extensión lógica cuando un equipo individual llega a sus límites. Lo importante es una red rápida, suficiente RAM, almacenamiento compartido y software adecuado como vLLM, Ray o llama.cpp RPC. Quien presta atención a la energía, refrigeración y latencia puede construir un sistema de IA distribuido potente y eficiente incluso en pequeña escala.


