Aprende de Cerebras: Monta tu Mini-Infraestructura IA en Casa

Aprende de Cerebras: Cómo Montar tu Mini-Infraestructura IA en Casa

Tiempo de lectura: 9 minutos

Cerebras acaba de recaudar $1,100 millones para expandir sus datacenters de IA. Pero aquí la pregunta interesante: ¿qué podemos aprender de su arquitectura para aplicarlo a nuestro homelab?

Este artículo no va de inversiones millonarias. Va de extraer los principios técnicos que hacen que la infraestructura de Cerebras sea tan eficiente, y replicarlos a escala homelab con hardware accesible.

  • Cerebras: 6 nuevos datacenters con capacidad 20x superior
  • Wafer-Scale Engine: Chip único vs arquitectura multi-GPU
  • 40M tokens/seg Llama 70B: Inferencia distribuida masiva
  • Lecciones aplicables: Clustering, networking, almacenamiento distribuido
  • Tu versión homelab: Replica sus principios con ~€500-€2,000

Tabla de Contenidos

Qué Está Haciendo Cerebras y Por Qué Importa

Cerebras Systems acaba de anunciar una expansión masiva de su infraestructura de inferencia de IA:

  • $1,100 millones recaudados en Serie G
  • 6 nuevos datacenters en EE.UU., Canadá y Europa
  • Capacidad 20x superior a su infraestructura actual
  • 40 millones tokens/seg para Llama 70B en su red completa

Su tecnología clave es el Wafer-Scale Engine (WSE): en lugar de usar múltiples GPUs pequeñas, utilizan un solo chip gigante del tamaño de una oblea de silicio completa (21.5 cm x 21.5 cm). Esto elimina la latencia entre chips y permite memoria compartida real.

¿Por Qué Nos Debería Importar Esto?

Porque los principios arquitectónicos que aplican son escalables:

  1. Clustering inteligente: Distribuir inferencia entre múltiples nodos
  2. Memoria compartida: Reducir copias de modelos entre GPUs
  3. Networking de baja latencia: 10GbE/25GbE entre nodos
  4. Almacenamiento distribuido: Modelos accesibles desde cualquier nodo
  5. Orquestación automatizada: Balanceo de carga y failover

Todos estos conceptos se pueden aplicar a un homelab, aunque sea con 2-3 máquinas en lugar de 300 CS-3 Superchips.

El Wafer-Scale Engine: Arquitectura Única

Cómo Funciona el WSE

El chip WSE-3 de Cerebras tiene:

  • 900,000 núcleos IA optimizados para redes neuronales
  • 44 GB SRAM on-chip (memoria directa en chip, sin latencia VRAM)
  • 21 PB/s bandwidth interno (20,000x más rápido que GPUs consumer)
  • Arquitectura dataflow: Los datos fluyen entre cores sin control central

Por Qué No Podemos Replicarlo Exactamente

El WSE cuesta cientos de miles de dólares y requiere fabricación especializada. Pero sí podemos replicar sus ventajas arquitectónicas con GPUs consumer:

Cerebras WSE Equivalente Homelab
Memoria compartida en chip Modelos en NFS/Samba compartido
Inferencia distribuida en 900k cores vLLM con tensor parallelism en 2-3 GPUs
Networking 21 PB/s interno 10GbE o NVMe-over-Fabric
Orquestación hardware Kubernetes/Docker Swarm/Ray
44 GB SRAM on-chip 48-96GB VRAM total (2-4x RTX 4090)

Lecciones de Cerebras para tu Homelab

1. La Memoria Compartida es Oro

Cerebras pone todo el modelo en SRAM on-chip para evitar cargarlo múltiples veces. En homelab:

  • Almacenamiento NFS/Samba centralizado: Un solo servidor con los modelos
  • Caché local en NVMe: Primera carga desde red, luego desde disco local
  • Evitar duplicación: No copies Llama 70B (140GB) en cada máquina

Arquitectura recomendada:

[Servidor NAS]
    ├─ /models/llama-3.3-70b/ (140GB)
    ├─ /models/qwen-2.5-72b/ (146GB)
    └─ /models/flux-schnell/ (24GB)
         ↓ 10GbE Network
    [Nodo GPU 1] [Nodo GPU 2] [Nodo GPU 3]
    Cache local  Cache local  Cache local

2. El Networking No es Opcional

Cerebras usa networking de 200G QSFP. Nosotros podemos usar:

  • 10 Gigabit Ethernet: Suficiente para inferencia distribuida (€150-€300 total)
  • 25GbE: Si necesitas más (€500-€800 total)
  • Bonding de interfaces: 2x 2.5GbE = 5Gbps efectivos (€0 si ya tienes las interfaces)

Por qué importa: Transferir activaciones entre GPUs en un modelo distribuido genera ~2-5 GB/s de tráfico. Con Gigabit Ethernet (125 MB/s) te conviertes en cuello de botella. Con 10GbE (1,250 MB/s) va fluido.

3. La Distribución Inteligente Multiplica Capacidad

Cerebras puede ejecutar 405B parámetros distribuidos. Tú puedes ejecutar 70B en 2x GPUs o 123B en 3x GPUs con tensor parallelism.

Tensor Parallelism: El modelo se divide horizontalmente entre GPUs. Cada GPU procesa una porción de cada capa, y se sincronizan entre capas.

Pipeline Parallelism: Diferentes capas del modelo en diferentes GPUs. GPU1 hace capas 1-20, GPU2 hace 21-40, etc.

Para homelab, tensor parallelism con vLLM es la opción más práctica.

4. La Monitorización es Crítica

Cerebras monitoriza 300+ sistemas CS-3 en tiempo real. Tú necesitas monitorizar tus 2-3 nodos para:

  • Detectar cuellos de botella: GPU underutilized = problema de red o I/O
  • Optimizar costes: No dejes GPUs encendidas sin usar (€0.15/kWh)
  • Prevenir fallos: Temperatura >85°C = throttling = inferencia lenta

Herramientas: Prometheus + Grafana + nvidia-smi exporter.

Tutorial: Clustering IA Básico en Casa

Vamos a montar una mini-infraestructura tipo Cerebras con 2 máquinas y networking 10GbE.

Hardware Necesario

Opción Económica (2 nodos, ~€3,500 total):

NODO 1 (Servidor principal):
├─ GPU: RTX 4070 Ti Super 16GB        → €900
├─ CPU: AMD Ryzen 5 7600              → €200
├─ RAM: 32GB DDR5                     → €100
├─ SSD: 2TB NVMe (modelos)            → €150
├─ NIC: 10GbE SFP+ (Mellanox CX3)     → €50 (usado)
└─ Resto (placa, PSU, caja)           → €400

NODO 2 (Nodo inferencia):
├─ GPU: RTX 4070 Super 12GB           → €650
├─ CPU: AMD Ryzen 5 7600              → €200
├─ RAM: 32GB DDR5                     → €100
├─ NIC: 10GbE SFP+ (Mellanox CX3)     → €50 (usado)
└─ Resto (placa, PSU, caja)           → €400

NETWORKING:
├─ Switch 10GbE SFP+ 8 puertos        → €200 (MikroTik CRS309)
└─ 2x cables DAC SFP+ 1m              → €30

TOTAL: ~€3,430

Capacidad combinada:

  • 28GB VRAM total (16+12)
  • Llama 3.3 70B Q4 distribuido
  • Mistral Large 123B Q2 distribuido (calidad justa)
  • Qwen 2.5 72B Q4 distribuido

Instalación del Software

1. Sistema base en ambos nodos (Ubuntu 24.04 LTS)

# Actualizar
sudo apt update && sudo apt upgrade -y

# Drivers NVIDIA
sudo apt install -y nvidia-driver-550 nvidia-utils-550

# Docker + NVIDIA Container Toolkit
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER

curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
  sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
  sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list

sudo apt update
sudo apt install -y nvidia-container-toolkit
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker

2. Configurar almacenamiento compartido (Nodo 1 = servidor NFS)

# En NODO 1 (servidor NFS)
sudo apt install -y nfs-kernel-server

# Crear directorio de modelos
sudo mkdir -p /mnt/models
sudo chown $USER:$USER /mnt/models

# Exportar via NFS
echo "/mnt/models 192.168.10.0/24(rw,sync,no_subtree_check,no_root_squash)" | sudo tee -a /etc/exports
sudo exportfs -ra
sudo systemctl restart nfs-server

# En NODO 2 (cliente NFS)
sudo apt install -y nfs-common
sudo mkdir -p /mnt/models
echo "192.168.10.1:/mnt/models /mnt/models nfs defaults 0 0" | sudo tee -a /etc/fstab
sudo mount -a

3. Instalar vLLM con soporte multi-GPU

# En ambos nodos
docker pull vllm/vllm-openai:latest

# Descargar modelo en NODO 1 (se sincroniza via NFS a NODO 2)
cd /mnt/models
git lfs install
git clone https://huggingface.co/meta-llama/Llama-3.3-70B-Instruct

4. Configurar Ray Cluster para distribución

# En NODO 1 (head node)
docker run -d --name ray-head --gpus all --network host \
  -v /mnt/models:/models \
  rayproject/ray:latest-gpu ray start --head --port=6379

# En NODO 2 (worker node)
docker run -d --name ray-worker --gpus all --network host \
  -v /mnt/models:/models \
  rayproject/ray:latest-gpu ray start --address='192.168.10.1:6379'

# Verificar cluster
docker exec ray-head ray status

5. Lanzar vLLM distribuido

# En NODO 1, lanzar vLLM con tensor parallelism
docker run -d --name vllm-server \
  --gpus all \
  --network host \
  -v /mnt/models:/models \
  -e RAY_ADDRESS=192.168.10.1:6379 \
  vllm/vllm-openai:latest \
  --model /models/Llama-3.3-70B-Instruct \
  --tensor-parallel-size 2 \
  --host 0.0.0.0 \
  --port 8000

# Verificar que detecta ambas GPUs
docker logs vllm-server | grep "tensor_parallel_size"

6. Probar inferencia distribuida

# Desde cualquier máquina en la red
curl http://192.168.10.1:8000/v1/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "/models/Llama-3.3-70B-Instruct",
    "prompt": "Explica qué es tensor parallelism en 100 palabras",
    "max_tokens": 200
  }'

# Monitorizar GPUs en tiempo real
# En NODO 1
watch -n 1 nvidia-smi

# En NODO 2
watch -n 1 nvidia-smi

Deberías ver ambas GPUs trabajando simultáneamente con utilización >80%.

Networking para Inferencia Distribuida

¿Por Qué 10GbE y No Gigabit?

Durante inferencia distribuida con tensor parallelism, las GPUs intercambian activaciones entre capas:

  • Llama 70B: ~2-4 GB/s de tráfico inter-GPU
  • Gigabit Ethernet: 125 MB/s teóricos, ~100 MB/s reales
  • 10 Gigabit Ethernet: 1,250 MB/s teóricos, ~1,100 MB/s reales

Con Gigabit, las GPUs pasan el 70% del tiempo esperando datos de red. Con 10GbE, pasan el 5% esperando.

Configuración de Red Optimizada

# Configurar IPs estáticas en interfaz 10GbE (ejemplo: ens1)
# En NODO 1
sudo ip addr add 192.168.10.1/24 dev ens1
sudo ip link set ens1 up

# En NODO 2
sudo ip addr add 192.168.10.2/24 dev ens1
sudo ip link set ens1 up

# Hacer permanente (netplan en Ubuntu)
cat <

Alternativa: Bonding de Interfaces

Si no quieres comprar hardware 10GbE, puedes hacer bonding de 2x 2.5GbE:

# Instalar ifenslave
sudo apt install -y ifenslave

# Cargar módulo bonding
echo "bonding" | sudo tee -a /etc/modules

# Configurar bond0 (netplan)
cat <

Esto te da ~4.5 Gbps efectivos (suficiente para modelos <70B).

Almacenamiento Eficiente de Modelos

Estrategia de 3 Capas

  1. Almacenamiento frío (HDD): Modelos que no usas frecuentemente
    • 8-12 TB WD Red Plus (€180-€280)
    • Backup de todos los modelos
  2. Almacenamiento caliente (NVMe compartido): Modelos activos
    • 2-4 TB NVMe en servidor NFS
    • Los 3-5 modelos que usas más
  3. Caché local (NVMe en cada nodo): Modelo actualmente cargado
    • 500GB-1TB NVMe en cada nodo de inferencia
    • Primera carga desde NFS, luego desde caché local

Script de Gestión de Modelos

#!/bin/bash
# cache_model.sh - Cachea modelo desde NFS a local

MODEL_NAME=$1
NFS_PATH="/mnt/models"
CACHE_PATH="/var/cache/models"

if [ ! -d "$CACHE_PATH/$MODEL_NAME" ]; then
    echo "📦 Cacheando $MODEL_NAME desde NFS..."
    rsync -avP "$NFS_PATH/$MODEL_NAME" "$CACHE_PATH/" --bwlimit=1000000  # 1 GB/s max
    echo "✅ $MODEL_NAME cacheado localmente"
else
    echo "✅ $MODEL_NAME ya está en caché"
fi

echo "$CACHE_PATH/$MODEL_NAME"

Compresión de Modelos Inactivos

Los modelos GGUF/safetensors comprimen bien con zstd:

# Comprimir modelo inactivo
zstd -19 --threads=16 /mnt/cold/llama-3.1-405b-q4.gguf

# Ahorra ~30-40% de espacio
# Descomprimir cuando lo necesites (1-2 min en CPU moderno)
zstd -d /mnt/cold/llama-3.1-405b-q4.gguf.zst

Monitorización y Optimización

Stack de Monitorización Completo

Crea ~/monitoring/docker-compose.yml:

services:
  prometheus:
    image: prom/prometheus:latest
    container_name: prometheus
    ports:
      - "9090:9090"
    volumes:
      - ./prometheus.yml:/etc/prometheus/prometheus.yml
      - prometheus-data:/prometheus
    command:
      - '--config.file=/etc/prometheus/prometheus.yml'
      - '--storage.tsdb.retention.time=30d'
    restart: unless-stopped

  grafana:
    image: grafana/grafana:latest
    container_name: grafana
    ports:
      - "3000:3000"
    volumes:
      - grafana-data:/var/lib/grafana
    environment:
      - GF_SECURITY_ADMIN_PASSWORD=admin
    restart: unless-stopped

  nvidia-exporter-node1:
    image: utkuozdemir/nvidia_gpu_exporter:latest
    container_name: nvidia-exporter-node1
    ports:
      - "9835:9835"
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: all
              capabilities: [gpu]
    restart: unless-stopped

volumes:
  prometheus-data:
  grafana-data:

prometheus.yml:

global:
  scrape_interval: 5s

scrape_configs:
  - job_name: 'nvidia-gpu-node1'
    static_configs:
      - targets: ['192.168.10.1:9835']
        labels:
          node: 'nodo1'

  - job_name: 'nvidia-gpu-node2'
    static_configs:
      - targets: ['192.168.10.2:9835']
        labels:
          node: 'nodo2'

Lanzar:

cd ~/monitoring
docker compose up -d

Accede a Grafana en http://192.168.10.1:3000 (admin/admin) e importa el dashboard ID 14574 (NVIDIA GPU Metrics).

Métricas Clave a Monitorizar

  • GPU Utilization: Debe estar >80% durante inferencia (si <50%, hay cuello de botella)
  • GPU Memory Usage: Evita swap (si VRAM full = OOM o swap a RAM)
  • GPU Temperature: <85°C ideal, >90°C = throttling
  • Power Consumption: TDP máximo = GPU trabajando al 100%
  • Network Throughput: Debería ser constante durante inferencia distribuida

Escalabilidad: De 1 GPU a N GPUs

Roadmap de Expansión

Fase 1: Single GPU (€1,500)

  • RTX 4070 Ti Super 16GB
  • Llama 3.3 70B Q4, Qwen 2.5 72B Q4
  • FLUX Schnell para imágenes

Fase 2: Dual GPU en una máquina (€2,800)

  • 2x RTX 4070 Ti Super 16GB
  • 32GB VRAM total
  • Llama 3.3 70B Q5/Q8, Mistral Large 123B Q4
  • Tensor parallelism local (sin networking necesario)

Fase 3: Cluster 2 nodos (€3,500)

  • 2 máquinas con 1 GPU cada una
  • 10GbE networking (€200)
  • 28GB VRAM total distribuido
  • Failover: Si nodo1 falla, nodo2 sigue funcionando

Fase 4: Cluster 3+ nodos (€5,000+)

  • 3 máquinas con 1-2 GPUs cada una
  • 40-60GB VRAM total
  • Pipeline parallelism + Tensor parallelism combinados
  • Modelos 405B quantizados (Q2/Q3)

Cuándo Escalar

Escala solo cuando:

  1. Necesitas modelos más grandes: Tu modelo actual no cabe en VRAM
  2. Necesitas más throughput: Tienes cola de requests esperando
  3. Quieres redundancia: Para servicios críticos (chatbots internos, APIs)

No escales si:

  • Tu GPU actual está <50% utilizada
  • Modelos quantizados Q4/Q5 te dan resultados suficientemente buenos
  • Solo experimentas y no tienes carga de producción

Preguntas Frecuentes

¿Vale la pena montar un cluster de IA en casa?

Depende de tu caso de uso. Si ejecutas modelos >70B frecuentemente o tienes múltiples usuarios/servicios consumiendo inferencia, sí. Si solo experimentas con modelos 7B-13B, una sola GPU es suficiente. El sweet spot es 2 nodos con 1 GPU cada uno: te da redundancia y capacidad distribuida por ~€3,500.

¿Qué es tensor parallelism y cómo funciona?

Tensor parallelism divide el modelo horizontalmente entre GPUs. Cada GPU tiene una fracción de cada capa. Durante inferencia, todas las GPUs procesan el mismo token simultáneamente, cada una calculando su porción de la capa. Los resultados se combinan antes de pasar a la siguiente capa. Es ideal para latencia baja, pero requiere networking rápido (10GbE+).

¿Cuánto ancho de banda necesito para inferencia distribuida?

Para modelos 70B con tensor parallelism entre 2 GPUs, necesitas ~2-4 GB/s (16-32 Gbps). 10 Gigabit Ethernet (10 Gbps) es el mínimo práctico. Gigabit Ethernet (1 Gbps) es insuficiente y causará que las GPUs estén idle el 70% del tiempo esperando datos de red. Si tienes 2.5GbE, haz bonding de 2 interfaces para llegar a ~4.5 Gbps.

¿Puedo mezclar GPUs diferentes en un cluster?

Técnicamente sí, pero no es recomendable. El rendimiento estará limitado por la GPU más lenta. Por ejemplo, si tienes RTX 4090 (24GB) + RTX 4060 Ti (16GB), el modelo se dividirá equitativamente pero la 4060 Ti será cuello de botella. Lo ideal es GPUs idénticas o al menos de la misma generación y arquitectura (todas Ada Lovelace, todas Blackwell, etc.).

¿Qué software es mejor para orquestar múltiples GPUs: Ray, Kubernetes, Docker Swarm?

Para IA específicamente, Ray es el mejor. Está diseñado para machine learning distribuido y se integra nativamente con vLLM, TensorFlow, PyTorch. Kubernetes es overkill para homelabs pequeños (2-3 nodos) y Docker Swarm no tiene soporte nativo para tensor parallelism. Si solo tienes 2 nodos, puedes empezar sin orquestador y usar vLLM directamente.

¿Cómo comparto modelos entre nodos sin duplicarlos?

Usa almacenamiento compartido por red:

  • NFS (Linux): Fácil de configurar, buen rendimiento con 10GbE
  • Samba/CIFS (Windows): Más lento pero funciona cross-platform
  • GlusterFS/CephFS: Para clusters grandes (>5 nodos), overkill para homelab

La primera vez que un nodo carga un modelo desde NFS tarda 2-3 min (dependiendo de networking). Después puedes cachearlo localmente en NVMe.

¿Cuánto consume un cluster de 2 nodos con GPUs?

Cluster ejemplo (2x RTX 4070 Ti Super + CPUs Ryzen 5):

  • Idle: ~200W total (100W por nodo)
  • Inferencia 70B: ~800W total (400W por nodo)
  • Coste 24/7 @0.15€/kWh: €17.5/mes idle, €86/mes full load

Si solo usas inferencia 4h/día: ~€30/mes. Usa scripts de wake-on-LAN para encender nodos bajo demanda.

¿Puedo ejecutar Llama 3.1 405B en casa?

Técnicamente sí, pero necesitas ~200GB VRAM para la versión quantizada Q4. Eso significa 4-6x RTX 4090 (€7,200-€10,800 solo en GPUs). Es impractico para homelab. Alternativa real: Llama 3.3 70B Q5 da calidad comparable para el 95% de tareas y corre en 2x GPUs consumer (€1,800). O usa Qwen 2.5 72B, DeepSeek V3, Mixtral 8x22B.

¿Cómo monitorizo la salud del cluster?

Stack mínimo: Prometheus + Grafana + nvidia_gpu_exporter. Monitoriza:

  • GPU utilization, memory, temperature
  • Network throughput entre nodos
  • Disk I/O en almacenamiento compartido
  • Ray cluster status (si usas Ray)

Configura alertas en Grafana para: GPU temp >85°C, VRAM >95%, node unreachable.

¿Qué hago si un nodo falla durante inferencia?

Con Ray + vLLM, puedes configurar réplicas. Si tienes 3 nodos y 1 falla, Ray redistribuye la carga a los nodos restantes. El request actual se pierde, pero los siguientes se procesan normalmente. Para alta disponibilidad, necesitas al menos 3 nodos (N+1 redundancy).

Conclusión: Tu Mini-Cerebras Casero

Cerebras invierte $1,100 millones en infraestructura masiva, pero los principios arquitectónicos son escalables:

  • Distribución inteligente: Tensor/pipeline parallelism con vLLM + Ray
  • Networking de baja latencia: 10GbE entre nodos (€200)
  • Almacenamiento compartido: NFS para evitar duplicar modelos
  • Monitorización activa: Prometheus + Grafana para optimizar
  • Escalabilidad progresiva: De 1 GPU a N GPUs según necesidad

Roadmap recomendado:

  1. Empieza con 1 GPU (RTX 4070 Ti Super, €1,500 total)
  2. Aprende inferencia local (Ollama, vLLM, modelos quantizados)
  3. Si necesitas más capacidad, añade un 2º nodo + 10GbE (€2,000 adicionales)
  4. Implementa clustering con Ray + vLLM tensor parallelism
  5. Optimiza networking y almacenamiento según uso real

No necesitas $1,100 millones ni datacenters. Necesitas entender los principios y aplicarlos a tu escala.

Recursos relacionados:

¿Has montado un cluster IA en casa? Comparte tu experiencia en los comentarios.

El Diario IA
Resumen de privacidad

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.