· 11 min de lectura · Gaia Lab

Qué corre de verdad en nuestro clúster, leído desde los propios scripts

Cuatro meses del clúster de cómputo del grupo ANTS de la Universidad de Murcia, reconstruidos desde los propios trabajos de Slurm y de forma anonimizada: qué se computa de verdad y qué ingeniería se construye alrededor para convivir en una máquina compartida.

Filas de identificadores de trabajo de seis cifras en tipografía monoespaciada, con una franja roja
Ilustración generada para la entrada: el muro de identificadores.

El histórico de trabajos de un clúster suele ser un muro de identificadores de seis cifras y nombres crípticos —mcpfw_cc, eval_dynamic_pid, boltz2— que lo dicen todo a quien los lanzó y nada a los demás. Pero si guardas los scripts, el muro se convierte en un documento: la gente escribe por qué hace las cosas, sobre todo cuando una tanda cuesta dinero y una noche de espera.

Hemos repasado cuatro meses del clúster de cómputo del grupo ANTS, del Departamento de Ingeniería de la Información y las Comunicaciones de la Facultad de Informática de la Universidad de Murcia —en torno a 7.700 trabajos de 19 usuarios, reconstruidos desde los propios ficheros sbatch— y lo contamos de forma anonimizada: sin nombres, sin rutas internas, mirando patrones y no personas. Así es, por dentro, un clúster de investigación pequeño.

7.656trabajos19usuarios2.989 hhoras de GPU29.598 hhoras de CPU
Cifras del periodo (19 de mayo a 21 de septiembre de 2026). Horas de GPU y CPU como capacidad reservada.

Dos medidores, dos historias #

Si hubiera que resumirlo en una frase: el clúster va hoy, sobre todo, de modelos de lenguaje, y sobre todo de probarlos, no de entrenarlos desde cero. De las siete líneas de trabajo que conviven en la máquina, la mayoría tocan LLMs: ajuste fino de seguridad, benchmarks de código y de llamada a funciones, ataque automático, un modelo para móvil y servicio de inferencia. De preentrenamiento serio, nada; lo más parecido son fine-tunes con LoRA y muchísima evaluación. Así es un clúster GPU universitario en 2026: no un horno de entrenamiento, sino un laboratorio de medida para modelos entrenados en otra parte.

Pero los contadores cuentan dos historias según cuál mires:

  • Horas de GPU (~3.000): las domina el benchmarking de modelos cuantizados (~37 %); después, proteínas (~15 %), auto-alineamiento, bosques y ataque (entre el 10 y el 12 % cada uno) y el modelo para móvil (~9 %). Las GPU son de los LLMs, pero sobre todo de medirlos.
  • Horas de CPU (~30.000): se reparten de otra manera: bosques LiDAR (~27 %) y benchmarking (~25 %) delante, seguidos del clasificador para móvil (~19 %) y el ataque (~12 %). Quien más GPU reserva no es quien más CPU pide.
Horas de GPU reservadas por línea de trabajoBenchmark de GGUFBenchmark de GGUF: 1.104 h · 37 %1.104 h · 37 %Proteínas (Boltz-2)Proteínas (Boltz-2): 442 h · 15 %442 h · 15 %Auto-alineamiento de LLMAuto-alineamiento de LLM: 343 h · 11 %343 h · 11 %Bosques LiDARBosques LiDAR: 320 h · 11 %320 h · 11 %Jailbreak multiagenteJailbreak multiagente: 299 h · 10 %299 h · 10 %Clasificador para móvilClasificador para móvil: 257 h · 9 %257 h · 9 %GNN ambientales / AutoMLGNN ambientales / AutoML: 162 h · 5 %162 h · 5 %OperaciónOperación: 22 h · 1 %22 h · 1 %Imagen dentalImagen dental: 21 h · 1 %21 h · 1 %GenómicaGenómica: 14 h · 0 %14 h · 0 %Inferencia compartida y operaciónInferencia compartida y operación: 5 h · 0 %5 h · 0 %
Horas de GPU reservadas por línea de trabajo.
Horas de CPU reservadas por línea de trabajoBosques LiDARBosques LiDAR: 7.867 h · 27 %7.867 h · 27 %Benchmark de GGUFBenchmark de GGUF: 7.328 h · 25 %7.328 h · 25 %Clasificador para móvilClasificador para móvil: 5.621 h · 19 %5.621 h · 19 %Jailbreak multiagenteJailbreak multiagente: 3.409 h · 12 %3.409 h · 12 %GNN ambientales / AutoMLGNN ambientales / AutoML: 2.198 h · 7 %2.198 h · 7 %Auto-alineamiento de LLMAuto-alineamiento de LLM: 1.421 h · 5 %1.421 h · 5 %OperaciónOperación: 496 h · 2 %496 h · 2 %Inferencia compartida y operaciónInferencia compartida y operación: 443 h · 1 %443 h · 1 %Proteínas (Boltz-2)Proteínas (Boltz-2): 442 h · 1 %442 h · 1 %Imagen dentalImagen dental: 259 h · 1 %259 h · 1 %GenómicaGenómica: 114 h · 0 %114 h · 0 %
Horas de CPU reservadas por línea de trabajo.

Las GPU: defender y atacar el mismo modelo #

El lado GPU es, en sí mismo, casi un debate completo sobre seguridad de LLMs, con distintos usuarios en distintos papeles.

La defensa. Un estudio de SFT + LoRA sobre “auto-alineamiento”, evaluando cada checkpoint con HarmBench, el benchmark estándar de comportamientos dañinos. Todo encadenado como un grafo de dependencias: entrena, y al terminar dispara un array de evaluaciones con --dependency=afterok, guardando las salidas aparte para poder volver a juzgarlas después sin reentrenar.

El ataque. Mucho más pequeño, pero llamativo: un sistema de jailbreak automático y multiagente que ataca un modelo abierto de 120B en decenas de objetivos y turnos, con el clasificador oficial de HarmBench como juez. Todo el conjunto —objetivo, agentes y juez— se apila en una sola H200 de 141 GB, porque cada nodo GPU tiene exactamente una tarjeta.

La medida. Servir modelos GGUF cuantizados con llama.cpp y puntuarlos en BFCL (llamada a funciones), BigCodeBench y RULER (contexto largo). Cliente y servidor en el mismo nodo, tras descartar los túneles SSH porque no paraban de fallar. Parte de los resultados se publica en Yardstick .

Así que un usuario afina modelos para que sean más seguros y los puntúa con HarmBench; otro ataca automáticamente un modelo grande y puntúa los ataques con el mismo clasificador de HarmBench. Las dos mitades de la misma pregunta, en los mismos nodos.

Proteínas, árboles, dientes y lagunas #

El resto de líneas son más pequeñas, pero cada una es un inquilino limpio y monotema:

  • Plegado de proteínas: Boltz-2 , un modelo de difusión de la familia AlphaFold, sobre ~2.500 pares de proteínas. Solo un puñado de trabajos, pero enormes y reanudables: una reserva de cinco días que salta los pares ya hechos.
  • Bosques desde nubes de puntos: estimación de biomasa aérea a partir de LiDAR con Pointcept (PTv3, OACNN), segmentando árboles individuales.
  • Imágenes médicas: segmentación con UNet++, DeepLabV3+ y SegFormer, incluido un array de 100 semillas para medir la varianza entre ejecuciones.
  • Modelo para móvil: un clasificador de riesgo en conversaciones de menores, un LLM pequeño exportado a LiteRT-LM int4/int8 para teléfonos, más un modelo “principal” en H100. Código en GitHub .
  • Y, por los bordes, GNN espaciotemporales que predicen clorofila en una laguna desde imágenes de satélite, un piloto de AutoML para detección de intrusiones, y genómica de célula única.
Trabajos enviados por semana y líneaBenchmark de GGUFAuto-alineamiento de LLMClasificador para móvilImagen dentalOperaciónBosques LiDARResto05001.0001.500Semana del 2026-05-18 · Auto-alineamiento de LLM: 56Semana del 2026-05-18 · Imagen dental: 1Semana del 2026-05-18 · Operación: 5Semana del 2026-05-18 · Bosques LiDAR: 3Semana del 2026-05-18 · Resto: 1118 maySemana del 2026-05-25 · Auto-alineamiento de LLM: 32Semana del 2026-05-25 · Imagen dental: 2Semana del 2026-05-25 · Resto: 18Semana del 2026-06-01 · Auto-alineamiento de LLM: 20Semana del 2026-06-01 · Clasificador para móvil: 35Semana del 2026-06-01 · Operación: 7Semana del 2026-06-01 · Resto: 11Semana del 2026-06-08 · Benchmark de GGUF: 12Semana del 2026-06-08 · Auto-alineamiento de LLM: 73Semana del 2026-06-08 · Clasificador para móvil: 31Semana del 2026-06-08 · Imagen dental: 6Semana del 2026-06-08 · Operación: 5Semana del 2026-06-08 · Resto: 13Semana del 2026-06-15 · Benchmark de GGUF: 2Semana del 2026-06-15 · Auto-alineamiento de LLM: 983Semana del 2026-06-15 · Clasificador para móvil: 46Semana del 2026-06-15 · Operación: 34Semana del 2026-06-15 · Bosques LiDAR: 4015 junSemana del 2026-06-22 · Auto-alineamiento de LLM: 1.407Semana del 2026-06-22 · Imagen dental: 6Semana del 2026-06-22 · Bosques LiDAR: 78Semana del 2026-06-29 · Auto-alineamiento de LLM: 71Semana del 2026-06-29 · Clasificador para móvil: 33Semana del 2026-06-29 · Bosques LiDAR: 8Semana del 2026-07-06 · Benchmark de GGUF: 7Semana del 2026-07-06 · Clasificador para móvil: 17Semana del 2026-07-06 · Imagen dental: 23Semana del 2026-07-06 · Operación: 21Semana del 2026-07-06 · Bosques LiDAR: 14Semana del 2026-07-13 · Clasificador para móvil: 8Semana del 2026-07-13 · Imagen dental: 6Semana del 2026-07-13 · Operación: 5Semana del 2026-07-13 · Bosques LiDAR: 6Semana del 2026-07-13 · Resto: 913 julSemana del 2026-07-20 · Bosques LiDAR: 26Semana del 2026-07-20 · Resto: 1Semana del 2026-07-27 · Clasificador para móvil: 29Semana del 2026-07-27 · Operación: 4Semana del 2026-07-27 · Bosques LiDAR: 1Semana del 2026-07-27 · Resto: 2Semana del 2026-08-03 · Benchmark de GGUF: 32Semana del 2026-08-03 · Imagen dental: 100Semana del 2026-08-03 · Resto: 1Semana del 2026-08-10 · Benchmark de GGUF: 58Semana del 2026-08-10 · Resto: 2110 agoSemana del 2026-08-17 · Benchmark de GGUF: 662Semana del 2026-08-17 · Operación: 21Semana del 2026-08-17 · Resto: 8Semana del 2026-08-24 · Benchmark de GGUF: 1.213Semana del 2026-08-24 · Resto: 39Semana del 2026-08-31 · Benchmark de GGUF: 97Semana del 2026-09-07 · Benchmark de GGUF: 471Semana del 2026-09-07 · Clasificador para móvil: 12Semana del 2026-09-07 · Imagen dental: 1Semana del 2026-09-07 · Operación: 5Semana del 2026-09-07 · Resto: 57 sepSemana del 2026-09-14 · Benchmark de GGUF: 1.361Semana del 2026-09-14 · Clasificador para móvil: 35Semana del 2026-09-14 · Imagen dental: 76Semana del 2026-09-14 · Operación: 67Semana del 2026-09-14 · Resto: 41Semana del 2026-09-21 · Benchmark de GGUF: 26Semana del 2026-09-21 · Clasificador para móvil: 7Semana del 2026-09-21 · Operación: 44Semana del 2026-09-21 · Resto: 25semana (lunes), 2026
Trabajos enviados por semana y línea: cada línea tiene su temporada.
Horas de GPU por tarjeta (todo el clúster)L40S: 1.250 (41.8 %)L40S · 1.250 (42 %)H200 NVL: 731 (24.5 %)H200 NVL · 731 (24 %)L4: 622 (20.8 %)L4 · 622 (21 %)H100 NVL: 386 (12.9 %)H100 NVL · 386 (13 %)Thor (ARM): 0 (0.0 %)Thor (ARM) · 0 (0 %)2.989 hGPU reservada
Horas de GPU por tarjeta en todo el clúster. Una GPU por nodo: la partición elige la tarjeta.

Lo que los scripts enseñan sobre convivir en una máquina compartida #

Más allá de qué se computa, los scripts son una guía discreta de cómo ser buen inquilino. Varios patrones se repiten en usuarios que no tienen nada que ver entre sí:

  • Pedir menos, arrancar antes. Un comentario fechado el día en que alguien lo descubrió: bajar la petición de 4 CPU / 8 GB a 1 CPU / 2 GB hizo que un trabajo pasara de “esperar días” a “arrancar en segundos”, porque el pequeño encajó en un hueco de backfill de un nodo con 28 de 30 núcleos ocupados.
  • Preparar en scratch local y sincronizar con el home al final, dentro de un trap de limpieza, para no machacar el NFS durante la tanda y para que, si el trabajo muere, la limpieza se haga igual.
  • Sin desalojar a nadie: la gente usa --nice alto y walltimes honestos. Como resume un script, lo que de verdad libera una GPU para el vecino no es la prioridad, es terminar pronto.
  • Avisos por ntfy y correo: se encola y uno se olvida.

Y mi favorito, una decisión de seguridad escondida en un script de benchmarking. El equipo que mide modelos de código necesita que el modelo escriba código; sus scripts son tajantes: el clúster solo genera texto, nunca ejecuta el código que escribe el modelo. La corrección —que sí ejecutaría ese código— va después, en un contenedor aislado en una máquina local. Un comentario incluso corrige a otro comentario anterior que había dado por buena la vía insegura, y avisa de que leerlo mal “habría puesto el aislamiento en el sitio equivocado”. Pensar con claridad dónde se permite ejecutar código que no es de fiar, en una máquina compartida, es justo el reflejo que hay que tener.

Conclusión #

El histórico de trabajos de un clúster, leído con calma, es un retrato de lo que preocupa a una comunidad. El del grupo ANTS, a mediados de 2026, se preocupa por los modelos de lenguaje —hacerlos más seguros, romperlos a propósito, medir lo que pueden y encogerlos hasta un móvil—, y proteínas, bosques y dientes por los bordes.

Nada de eso se ve en los nombres de los trabajos. Está en los scripts. Guardad los scripts.


Cifras reconstruidas a partir de la contabilidad de Slurm y de los sbatch recuperados; las horas de GPU/CPU reflejan capacidad reservada (elapsed × asignado), no uso medido, y la intención de cada trabajo se infiere de los cuerpos de los scripts y sus comentarios. Se excluye un registro huérfano que figuraba como RUNNING desde mayo y que inflaba la GPU en unas 2.500 horas, y en cinco trabajos que quedaron colgados unas 18 horas más allá de su límite (Slurm los cerró a la vez al día siguiente) la reserva se cuenta hasta el límite pedido, no hasta el cierre. A petición de una de las personas del grupo, su línea de trabajo y todos sus trabajos se han retirado de esta entrada, de las cifras y de los gráficos. Entrada anonimizada: sin usuarios, rutas, correos ni nombres de proyecto identificables.