Siete núcleos se detienen en una barrera invisible. El octavo se ha entretenido en un proceso ajeno... y toda la inferencia de LLM se congela. Así es el principal conflicto de convivencia entre las tareas de aprendizaje automático y los procesos comunes en un mismo procesador. El grupo de inferencia exige que todos los núcleos ataquen al unísono; de lo contrario, silencio. Pero el sistema operativo no puede simplemente congelar un núcleo en medio de la generación de un token (una palabra o parte de ella en el modelo de lenguaje): la barrera nunca esperará al rezagado, y la incorporación arbitraria de un nuevo miembro distorsionaría el resultado de forma imperceptible.
En Anima OS —un sistema operativo escrito en Rust—, resolvieron este problema convirtiendo el gang en una orquesta elástica sin director. Cada núcleo-músico puede entrar o salir del conjunto estrictamente entre compases, es decir, entre tokens. El protocolo ACK-latch funciona así: antes de empezar la generación, se activa un indicador de actividad y se incrementa el número de época. Cada núcleo capaz de prestarse confirma la época actual, tras guardar el estado de su proceso —como un músico que pone su instrumento en pausa y asiente—. La lista de participantes para el siguiente token se fija en una palabra atómica —una máscara de bits— que incluye solo a aquellos cuya confirmación coincide con la época en el momento de la fijación. Esta máscara se publica antes de comenzar el token, y cada punto de espera en la barrera la lee. El núcleo que no alcanzó a confirmar simplemente no se incluye en el token actual; nadie lo espera, y sus vecinos le roban el trabajo.
Las pruebas con un procesador AMD Ryzen 9 9800X3D (arquitectura Zen 5) y los modelos SmolLM2-135M y Qwen2.5-7B mostraron que, con una cuarta parte del tiempo dedicada a la inferencia, el rendimiento total para los procesos comunes aumentó 1,75 veces en comparación con la división estática de núcleos, pasando de 327 a 574 cuantos de servicio por segundo. La velocidad de generación no decayó y la salida de los modelos permaneció idéntica a nivel de bit respecto a la configuración fija. El hash de los logits finales —las puntuaciones numéricas de probabilidad de los tokens—, 0x9a2917eca1a62bd1, no cambió en ningún escenario. La latencia de devolución del núcleo después de la generación fue de 0,22 microsegundos de mediana, prácticamente instantánea. Y la captura de un núcleo ocupado, siguiendo una política conservadora, dura un quantum del planificador (unos 16 milisegundos): el proceso arrendatario no se interrumpe durante su quantum, y el núcleo se une al grupo solo al finalizar.
El grupo elástico rompe la idea establecida de que los cálculos con barreras rígidas son incompatibles con la redistribución dinámica de núcleos. El protocolo ACK-latch convierte el grupo de inferencia en un objeto planificable de pleno derecho: comparte recursos con el resto del sistema sin pérdida de corrección. Esto abre el camino a sistemas operativos donde la inferencia de LLM no es una tarea aislada, sino un servicio rutinario que se adapta a la carga, como una orquesta que cambia de formación entre los movimientos de una sinfonía. El mecanismo puede trasladarse a Linux con el planificador SCHED_DEADLINE, adaptarse a arquitecturas heterogéneas (big.LITTLE) e integrarse con políticas de ahorro energético. Así, sincronizándose mediante una única palabra-partitura, el grupo elástico avanza hacia la solución del problema fundamental de la coexistencia pacífica de cálculos síncronos y asíncronos en un mismo sistema. Ahora, un núcleo bloqueado no es un desastre. Si no llega a la barrera a tiempo, simplemente se salta un compás, y la orquesta elástica sigue tocando… sin desafinar una sola nota.
Incluso con 301 migraciones de procesos en una ventana de 10 segundos, la inferencia se mantuvo exacta a nivel de bit, y la dispersión de las mediciones de rendimiento no superó el 0,9 %.