La base es una plataforma de servidor con 24 núcleos a 2,00 GHz y 256 GiB de DDR4 con corrección de errores multi-bit. La RAM con ECC no es un capricho en esta máquina: pasa el día con modelos enteros mapeados en memoria, y un bit que cambia en un tensor no da un error, da una respuesta plausible y equivocada. Es la clase de fallo que no se detecta porque no hay una excepción que lo pare.
El cómputo pesado de GPU son dos tarjetas de 32 GB, 64 GB en total. Ahí está la razón de ser del proyecto: un modelo de 125 mil millones de parámetros, incluso cuantizado a tres bits, no entra en una sola tarjeta de 32 GB. Con una sola tarjeta habría que servir un modelo cuatro veces más pequeño, y un modelo cuatro veces más pequeño es otro producto. El formato GGUF permite además que el excedente se descargue a la RAM, que aquí es de 256 GiB, así que hay margen para subir la cantidad de contexto sin tocar el modelo.
Sobre eso corren cuatro servicios en contenedor, cada uno con su volumen de datos independiente. El primero es el servidor de inferencia en GPU con API compatible con OpenAI: un único endpoint al que se puede llamar con cualquier cliente que ya exista. Los otros tres son una forja git privada con API HTTP para automatizar el despliegue de mis propios servicios, un agente autónomo que consume ese mismo endpoint de inferencia, y un navegador gestionado con puerto de depuración remoto para las automatizaciones de formulario y sesión, que se levanta solo cuando se usa.
La segunda caja resuelve un problema distinto. Un servicio en 192.168.x.x:8000 no se le puedes explicar a nadie, y en cuanto cambias un contenedor de puerto se rompe todo lo que depende de él. Con un pasamuros inverso que da un dominio a cada servicio, los proyectos apuntan a un nombre estables y el mapeo interno cambia sin que nadie se entere. La separación entre las dos cajas es deliberada: reiniciar el servidor de cómputo para probar una tarjeta no debería tumbar la puerta de entrada, y viceversa.
proyecto variable de entorno ruta
CRM Java MRM_OLLAMA_BASE_URL → /v1 (apagable con un flag)
rascadores de clientes LOCAL_LLM_BASE_URL → /v1/chat/completions
demo de RAG OLLAMA_URL
juego con modo IA host del proveedor local
↓ una sola forma de llamar, local o comercial
servidor de inferencia en GPU · API compatible con OpenAI
modelo GGUF de 125 B · cuantizado · repartido entre 2 × 32 GB
↓
pasamuros Nginx en otra caja: cada servicio, su dominio