- CPU, RAM, swap y disco.
- I/O y espacio de inodos.
- Red y errores.
- Reinicios y procesos.
Cómo operar IA local en producción: monitorización, copias e incidencias
Convierte el despliegue en un servicio mantenible. Define qué componentes existen, quién responde por ellos, qué nivel de servicio deben cumplir, qué métricas se vigilan, cómo se hacen y restauran las copias, cómo se actualiza y cómo se vuelve a la versión anterior cuando algo falla.
Documenta servicios, estado, propietario y dependencia
Operar la IA es mantener la furgoneta de la empresa: revisiones programadas, un cuaderno de incidencias, un responsable con nombre y un plan para el día que no arranque. Nada exótico — pero si nadie es el responsable, el fallo se descubre en el peor momento posible.
| Servicio | Estado | Fuente de verdad | Propietario | Recuperación |
|---|---|---|---|---|
| Proxy TLS | Configuración | Repositorio y certificados | Infraestructura | Reinstalar y restaurar config |
| Open WebUI | Usuarios y configuración | Base y volumen | Plataforma IA | Base + datos persistentes |
| Runtime | Modelos y configuración | Manifiesto y almacén | Plataforma IA | Descargar/verificar artefactos |
| RAG | Índice y metadatos | Originales + pipeline | Conocimiento | Snapshot o reindexación |
| Postgres | Datos críticos | Base | DBA/Plataforma | Dump y recuperación puntual |
| n8n | Workflows, credenciales, ejecuciones | Base y secretos | Automatización | Base + clave de cifrado |
| Evaluaciones | Datasets y resultados | Repositorio protegido | Equipo IA | Copia versionada |
Ficha por servicio
service: open-webui
owner: plataforma-ia
business_owner: soporte
host: ia-node-01
endpoint: https://ia.intranet.ejemplo
healthcheck: https://ia.intranet.ejemplo/health
upstream: http://127.0.0.1:3000
identity: oidc-corporativo
secrets: secret-store/open-webui
state:
- postgres database
- application data volume
backup_policy: daily + pre-change
restore_runbook: RB-IA-004
monitoring_dashboard: OBS-IA-WEBUI
rollback: previous image digest + database snapshotDefine qué debe estar disponible y en cuánto tiempo
Indicadores
- Disponibilidad: porcentaje de peticiones atendidas dentro de la ventana.
- Latencia: tiempo hasta primer token y respuesta completa por percentil.
- Capacidad: peticiones y tokens procesados sin superar cola o error.
- Calidad: regresión, errores críticos, citas y herramientas.
- Frescura: tiempo desde que cambia una fuente hasta que el índice la refleja.
- Recuperación: tiempo máximo aceptable para restablecer el servicio (RTO) y cantidad máxima de datos que se admite perder (RPO).
Plantilla SLO
Un SLO es una meta operativa medible: indica qué disponibilidad, velocidad, capacidad y recuperación debe alcanzar el servicio. No es una promesa genérica; debe asociarse a una métrica, un periodo de medición, un responsable y una acción cuando se incumple.
Servicio: asistente interno de soporte
Horario: jornada laboral definida por la empresa
Disponibilidad objetivo: ...
Latencia p95 para consulta representativa: ...
Cola máxima antes de degradar: ...
RTO: ...
RPO: ...
Frescura documental: ...
Errores críticos permitidos: cero
Modo degradado: búsqueda documental sin generación
Canal de incidente: ...
Responsable de decisión: ...No fijes un objetivo sin presupuesto de capacidad y soporte. Un servicio no crítico puede aceptar recuperación manual; una plataforma compartida necesita automatización, redundancia o soporte acorde.
Observa infraestructura, inferencia, RAG y experiencia
- Memoria usada y total.
- Utilización y temperatura.
- Potencia y throttling.
- Errores del controlador.
- Modelos cargados.
- Cola y peticiones.
- TTFT, latencia y tokens/s.
- Timeouts y OOM.
- Ingestas fallidas.
- Documentos vigentes.
- Tiempo de indexación.
- Fuentes y abstenciones.
- Login y errores.
- Herramientas rechazadas.
- Aprobaciones pendientes.
- Feedback y casos fallidos.
- Última copia correcta.
- Prueba de restauración.
- Caducidad de certificados.
- Capacidad de almacenamiento.
Comandos de diagnóstico rápido
date -Is
uptime
free -h
df -h
df -i
nvidia-smi
docker compose ps
docker compose top
docker compose logs --since=30m --tail=300
ss -lntup
journalctl -p warning --since "30 minutes ago"Ejecuta comandos con la cuenta autorizada. Los logs pueden contener datos; limita quién puede leerlos y evita copiarlos a canales no aprobados.
Alertas accionables
Cada alerta debe indicar impacto, umbral, ventana, propietario y runbook. Evita alertar por cada pico instantáneo. Ejemplo: memoria GPU por encima del margen durante varios minutos junto con cola creciente y errores de asignación.
Planifica por demanda, contexto y concurrencia
Datos que debes conservar
- Peticiones por hora y patrón diario.
- Usuarios activos y simultáneos.
- Tokens de entrada y salida por percentil.
- Modelos y tiempo residentes en memoria.
- Tiempo de cola, prefill y generación.
- Trabajos batch y ventanas.
- Crecimiento de documentos, índice y logs.
Modos de degradación
- Reducir contexto o resultados RAG manteniendo evidencia mínima.
- Enrutar tareas sencillas a un modelo compacto evaluado.
- Limitar salidas y concurrencia por usuario.
- Poner trabajos batch en cola fuera del pico.
- Desactivar temporalmente una función no crítica.
- Ofrecer búsqueda con fuentes sin generación cuando sea posible.
Señales para ampliar hardware
- La cola supera el objetivo con uso legítimo y configuración optimizada.
- La carga representativa no cabe sin degradar calidad.
- El p95 permanece fuera de objetivo tras ajustar contexto y motor.
- No existe margen para actualización o fallo de una réplica.
- Los trabajos visuales compiten con el chat y requieren aislamiento.
Una GPU adicional puede servir réplicas o separar cargas. DGX Spark aporta memoria coherente para modelos que exceden VRAM; DGX Station o servidores profesionales se justifican cuando capacidad, servicio y soporte lo demuestran. No uses petaFLOP FP4 como sustituto de mediciones de tu carga.
Copia fuentes de verdad y prueba una restauración completa
| Activo | Método | Consistencia | Prueba |
|---|---|---|---|
| Configuración | Repositorio y copia cifrada | Por cambio | Desplegar host vacío |
| Postgres | pg_dump o backup físico | Transaccional | Restaurar y ejecutar checks |
| Qdrant/índice | Snapshot soportado | Por colección | Restaurar o reindexar |
| Documentos | Repositorio original | Fuente de verdad | Recuperar versión y permisos |
| Modelos | Manifiesto, hash y origen | Artefacto inmutable | Volver a descargar o restaurar |
| n8n | Base, datos y clave de cifrado | Coherente | Abrir workflows y credenciales |
| Evaluación | Repositorio protegido | Versionado | Reejecutar una batería |
Backup lógico de Postgres
set -euo pipefail
umask 077
STAMP="$(date -u +%Y%m%dT%H%M%SZ)"
DEST="/srv/ia/backups/postgres/${STAMP}"
install -d -m 0700 "$DEST"
docker compose exec -T postgres \
pg_dump --format=custom --no-owner --no-acl \
--username="${POSTGRES_USER}" "${POSTGRES_DB}" \
> "${DEST}/ia.dump"
sha256sum "${DEST}/ia.dump" > "${DEST}/SHA256SUMS"
test -s "${DEST}/ia.dump"No guardes contraseña en el script. Cárgala desde un entorno o secreto con permisos limitados. Cifra y replica fuera del host según política.
Snapshot de una colección vectorial
curl -fsS -X POST \
"http://127.0.0.1:6333/collections/COLECCION/snapshots" \
-H "api-key: ${QDRANT_API_KEY}"El endpoint debe estar en localhost o red administrativa. Verifica el procedimiento de la versión fijada y copia el snapshot fuera del contenedor.
Regla de tres copias
Conserva la fuente operativa, una copia separada del host y otra protegida frente al mismo incidente. Cifra, controla acceso, prueba integridad y aplica retención. Una réplica sincronizada no sustituye una copia frente a borrado o corrupción.
Practica la recuperación en un entorno distinto
Orden recomendado
Provisiona un host limpio
Misma arquitectura o compatible, red aislada y sin usuarios.
Restaura configuración y secretos
Desde fuentes autorizadas; rota credenciales si el incidente pudo exponerlas.
Arranca dependencias
Base, vectorial y almacenamiento antes de aplicaciones.
Restaura estado
Importa Postgres, snapshots y datos persistentes.
Recupera modelos
Verifica hashes, licencia y compatibilidad.
Valida identidad y permisos
Prueba usuarios, grupos, baja y aislamiento RAG.
Ejecuta evaluación mínima
Smoke test, regresión crítica, herramienta en modo prueba y carga breve.
Decide el retorno
Documenta RPO alcanzado, diferencias y aprobación.
Restaurar un dump lógico
sha256sum -c SHA256SUMS
docker compose exec -T postgres \
createdb --username="${POSTGRES_USER}" ia_restore_test
docker compose exec -T postgres \
pg_restore --clean --if-exists --no-owner --no-acl \
--username="${POSTGRES_USER}" --dbname=ia_restore_test \
< ia.dumpPrueba sobre una base separada. No ejecutes --clean contra producción sin un plan y aprobación.
Acta de restauración
- Inicio y fin.
- Copia utilizada y hashes.
- RPO y RTO reales.
- Servicios recuperados.
- Pruebas ejecutadas.
- Diferencias y acciones.
- Responsables y aprobación.
Cambia una variable, evalúa y conserva rollback
Qué puede alterar la conducta
- Modelo, cuantización o adaptador.
- Runtime, driver o librería CUDA.
- Prompt de sistema, plantilla o parámetros.
- Embeddings, fragmentación, índice o reranker.
- Open WebUI, n8n, nodos o extensiones.
- Herramientas, schemas, permisos o APIs.
- Documentos, metadatos y políticas.
Proceso de cambio
Registrar
Motivo, versión actual, objetivo, propietario y riesgo.
Respaldar
Copia consistente y verificación de espacio y restauración.
Probar
Entorno de preproducción con dataset y seguridad.
Desplegar gradualmente
Grupo pequeño o réplica canaria.
Observar
Calidad, latencia, errores, memoria y feedback.
Confirmar o revertir
Criterios definidos antes del cambio.
Actualización de Compose
cd /srv/ia/compose
cp env.production "env.production.backup.$(date -u +%Y%m%dT%H%M%SZ)"
docker compose --env-file env.candidate config > rendered-candidate.yaml
docker compose --env-file env.candidate pull
docker image inspect IMAGEN@sha256:DIGEST
docker compose --env-file env.candidate up -d
docker compose ps
docker compose logs --since=10m --tail=300
# Ejecutar smoke tests y regresión crítica antes de ampliar usuarios.Para rollback, conserva la configuración anterior, digest, copia de base compatible y procedimiento. Una migración de esquema puede impedir volver solo cambiando la imagen.
Clasifica impacto, contiene y conserva evidencia mínima
| Severidad | Ejemplo | Respuesta |
|---|---|---|
| Crítica | Fuga, acción no autorizada, secreto o indisponibilidad general | Contener, escalar, preservar, comunicar y recuperar |
| Alta | Errores críticos repetidos o pérdida de una función principal | Deshabilitar función, rollback y análisis |
| Media | Degradación, cola o ingestión parcial | Modo degradado y corrección programada |
| Baja | Pregunta aislada o mejora de calidad | Registrar y añadir a regresión |
Runbook de primera respuesta
- Confirma hora, alcance, usuarios y primera señal.
- Asigna responsable y canal de coordinación.
- Detén la función o acceso que puede aumentar el daño.
- Preserva IDs, métricas, versiones y cambios recientes.
- No copies datos sensibles a chats no autorizados.
- Aplica rollback o recuperación conocida.
- Verifica con pruebas y comunica el estado.
- Analiza causa y crea acciones y regresión.
Comando para recoger estado sin contenido
set -euo pipefail
OUT="ops-state-$(date -u +%Y%m%dT%H%M%SZ)"
mkdir -m 0700 "$OUT"
date -Is > "$OUT/time.txt"
uptime > "$OUT/uptime.txt"
df -h > "$OUT/disk.txt"
free -h > "$OUT/memory.txt"
nvidia-smi > "$OUT/nvidia-smi.txt" 2>&1 || true
docker compose ps > "$OUT/compose-ps.txt"
docker inspect $(docker compose ps -q) \
--format '{{.Name}} {{.Image}} {{.State.Status}}' > "$OUT/containers.txt"
tar -czf "${OUT}.tar.gz" "$OUT"
sha256sum "${OUT}.tar.gz" > "${OUT}.sha256"No incluye logs ni cuerpos. Añádelos solo según necesidad y política.
Calendario operativo recomendado
- Disponibilidad y alertas.
- Copias correctas.
- Ingestiones fallidas.
- Disco y cola.
- Casos fallidos y feedback.
- Capacidad y tendencias.
- Reintentos y aprobaciones.
- Vulnerabilidades críticas.
- Copia y espacio.
- Dataset de regresión.
- Compatibilidad de esquema.
- Rollback y ventana.
- Restauración completa.
- Roles y credenciales.
- Retención y borrado.
- Prueba de incidente.
Matriz RACI mínima
| Actividad | Negocio | Plataforma | Seguridad | Datos |
|---|---|---|---|---|
| Calidad del caso | Responsable | Consultado | Informado | Consultado |
| Disponibilidad | Informado | Responsable | Consultado | Informado |
| Accesos | Aprueba | Ejecuta | Supervisa | Consultado |
| Índice documental | Aprueba contenido | Opera pipeline | Revisa control | Responsable de fuente |
| Incidente | Decide impacto | Contiene y recupera | Coordina respuesta | Apoya evidencia |
Un servicio listo para ser mantenido
- Inventario y propietario de cada componente.
- SLO, RTO, RPO y modo degradado.
- Panel de host, GPU, runtime, RAG y aplicación.
- Alertas con responsable y runbook.
- Capacidad medida con percentiles y concurrencia.
- Backups de configuración, base, índice y fuentes.
- Restauración probada en entorno separado.
- Imágenes y modelos fijados por digest o hash.
- Proceso de cambio, canario y rollback.
- Dataset de regresión antes de cada cambio.
- Severidades y canal de incidente.
- Accesos y secretos revisados.
- Retención de logs y documentos aplicada.
- Otra persona ha ejecutado el runbook.
Convierte el caso de uso en una decisión de hardware verificable
Define la tarea, prepara una prueba y mide memoria, tiempo y usuarios simultáneos. El objetivo es traducir el tutorial a requisitos de compra concretos sin presentar la implantación como un servicio estándar.
- 01
Define la carga
Concreta tarea, familia de modelo, contexto, lote y usuarios simultáneos.
Aclarar el caso de uso → - 02
Dimensiona memoria
Compara VRAM, memoria coherente, velocidad y margen de crecimiento.
Usar el recomendador de hardware → - 03
Compra en la tienda
Abre la ficha comercial para consultar configuración, precio cerrado, disponibilidad y condiciones vigentes.
Contacto y disponibilidad →
RTX PRO 6000 · 96 GB
Prioriza una GPU profesional para inferencia, imagen, vídeo o serving cuando el modelo y el contexto caben en sus 96 GB de VRAM.
Ver ficha profesional →NVIDIA DGX Spark · 128 GB
Considera memoria unificada para desarrollo CUDA y cargas que superan la VRAM de una GPU, aceptando que capacidad no equivale siempre a más velocidad.
Ver ficha y comprar →Recomendador de hardware
Responde cinco preguntas y compara el equipo actual, una GPU NVIDIA, la RTX PRO 6000 y sistemas GB10 como DGX Spark, ASUS Ascent GX10 o Lenovo ThinkStation PGX.
Comparar opciones →aisupercomputers.es aporta guías y herramientas de decisión. La compra, el precio cerrado en la ficha y el soporte comercial desde España se gestionan en las tiendas del grupo Ietres.
Operar modelos y RAG
¿Tengo que copiar los modelos?
Conserva un manifiesto con origen, hash y licencia. Puedes volver a descargarlos si el repositorio y la política lo permiten, pero una copia local puede reducir el tiempo de recuperación. Los adaptadores propios sí requieren copia protegida.
¿El índice vectorial es la fuente de verdad?
No. Es derivado de documentos y configuración. Debes poder restaurarlo o reconstruirlo con los mismos metadatos, permisos, embeddings y fragmentación.
¿Cuándo necesito alta disponibilidad?
Cuando el impacto y el tiempo de recuperación no admiten un único host. Decide por SLO y análisis de riesgo, no por el número de usuarios solamente.
¿Qué cambio obliga a repetir la evaluación?
Cualquier cambio de modelo, runtime, prompt, índice, embeddings, documentos, herramienta, permisos o infraestructura que pueda alterar salida, seguridad o rendimiento.
¿Cómo evito quedarme sin GPU?
Limita contexto, salida, concurrencia y modelos residentes; separa cargas batch o visuales; monitoriza memoria y cola; prueba capacidad antes de ampliar usuarios y reserva margen para actualizaciones o fallos.
- Un modelo más grande: solo en pareja — dos unidades con su cable directo (hasta 405B). El "en serie" de 3 o 4 no existe.
- Más usuarios o más trabajo: las que quieras — 4, 50, 500 — en estrella a un switch, cada una con el modelo completo y un repartidor delante.
- Para recordar: dos se funden; los demás se suman. Guía completa de clústeres →