← Todos los postsBlog · 21 de septiembre de 2025

Los errores del Laboratorio, Vol. 1: todo lo que rompimos aprendiendo IA local

Compilación honesta (y con humor) de nuestros mejores fracasos: discos llenos, contextos imposibles, SSH imposible, modelos que no arrancaban y noches largas. Para que tú no los repitas.

Prometimos contar también los fracasos. Este post es el primero de la serie “Los errores del Laboratorio”: una colección de momentos en los que las máquinas ganaron. Que sirva de vacuna.

1. El disco lleno a las 2AM (91% y subiendo)

Qué pasó: descargamos un modelo de 97GB sin mirar el disco. A mitad de descarga, el sistema empezó a comportarse como si estuviera borracho.

Qué aprendimos: los archivos .part y las descargas de HuggingFace duplican espacio temporalmente. Ahora: df -h antes de CUALQUIER descarga, y limpieza automática semanal de cachés (con cron, no con fe).

La frase: “¿Por qué ncdu no era parte del setup desde el día 1?”

2. El contexto de 256K “porque podíamos”

Qué pasó: configuramos un modelo con 256K de contexto máximo en una máquina con 121GB. El KV cache se comió 40GB+ antes de la primera conversación real. El escritorio empezó a hacer swap y todo fue a cámara lenta.

Qué aprendimos: el contexto no es gratis — es memoria RAM/VRAM reservada. Ahora configuramos el contexto que REALMENTE usamos (32-64K) y el KV cache cuantizado (q8_0).

La regla: contexto máximo usado en el último mes + margen del 50%. Nada más.

3. El SSH imposible (la saga completa)

Qué pasó: un servidor con PasswordAuthentication no que no recordábamos haber configurado, claves en authorized_keys que no correspondían con las que ofrecíamos, y tres máquinas (server + 2 sparks) donde cada una confiaba en claves distintas. Horas de “Permission denied (publickey)”.

Qué aprendimos:

  • sshd_config.d/*.conf SOBREESCRIBE lo que pongas en sshd_config. Míralo siempre.
  • Un solo fichero known_hosts y un ~/.ssh/config bien mantenido valen oro.
  • La solución siempre estuvo en los logs: journalctl -u ssh decía exactamente qué fallaba. Leerlos a tiempo = 3 horas ahorradas.

La frase: “El error no está en tu clave. Está en tu config.d.”

4. El benchmark que derretía la Spark

Qué pasó: probando un modelo grande en agosto, con 30°C ambiente, el benchmark de inferencia disparó las temperaturas hasta el throttling silencioso. Resultados 30% peores sin ningún mensaje de error. Casi sacamos conclusiones erróneas del hardware.

Qué aprendimos: monitorizar SIEMPRE temperaturas durante cualquier medición (nvtop, sensors). Y los benchmarks serios se hacen con refrigeración decente, no con un ventilador de sobremesa apuntando con cariño.

5. El modelo que no hablaba español

Qué pasó: un modelo top del benchmark global, desplegado con ilusión para ser “nuestro asistente familiar”… que respondía en español con construcciones tan raras que parecía traducción automática de los 90.

Qué aprendimos: los benchmarks globales no miden calidad de idioma. Para tareas en español: probar SIEMPRE con prompts reales en español antes de adoptar un modelo. Algunos modelos “top” son mediocres en español; algunos discretos son excelentes.

La consecuencia: nuestro mini-benchmark casero incluye 3 prompts exclusivamente en español coloquial. Es el filtro más valioso que tenemos.

6. El backup que nunca se probó

Qué pasó: teníamos backup automático del servidor. Lo que no teníamos era UNA PRUEBA de restauración. Cuando tocó restaurar… el backup existía, estaba incompleto, y faltaba la base de datos.

Qué aprendimos: un backup sin restauración probada no es un backup, es un deseo. Mensualmente: restaurar a un contenedor limpio y verificar.

La moraleja del Laboratorio

Todos estos errores comparten patrón: asumimos que las cosas funcionaban como imaginábamos sin verificar. La IA local es maravillosa pero no perdona los supuestos.

Por eso todas nuestras recetas incluyen la sección “errores de novatos”: son estos, y son reales. Que te sirvan. 🫡

¿Tienes un error glorioso que contar? Escríbenos y lo publicamos (con cariño).