23 de agosto de 2026 · 4 min de lectura

Assisted-by en el commit: la evidencia que llama.cpp le exige a la IA

open-source modelos seguridad producción
Nicolás Neira
Nicolás Neira
Arquitectura de agentes e IA aplicada

Cuando el código lo escribe una IA, el review humano no basta como red de seguridad. Menos todavía en rutas de bajo nivel: un kernel de multiplicación de matrices o un conversor de pesos no fallan con un stack trace, fallan con NaN, con un resultado ligeramente distinto, o con una lectura fuera de límites que corrompe memoria en silencio. Esta semana, los commits de llama.cpp muestran cómo un proyecto de esa escala está resolviendo ese problema: no confía en que el código de IA esté bien porque compila, exige que venga acompañado de evidencia numérica verificable.

El patrón

En el port del modelo Kimi-K3, la arquitectura combina atención híbrida KDA (lineal) más MLA (completa), MoE latente y una activación “situ” que reemplaza SwiGLU en todas partes, además de una compuerta MLA antes de la proyección de salida. Es exactamente el tipo de cambio donde un error sutil de implementación no rompe la ejecución: solo degrada la calidad del modelo de forma difícil de notar a simple vista. El commit, marcado “Assisted-By: Claude Opus 5 (1M context)”, no se conformó con decir que el código estaba probado. Reportó los números: los logits en la posición final contra la referencia en fp32 dieron un error relativo de 6.7e-05 y una correlación de 1.00000000, tanto en el camino chunked como en el recurrente del delta-net. Los bloques MXFP4 repackeados dequantizan a los pesos originales con 0.0e+00 de error.

El siguiente commit de la misma serie, también asistido por Claude Opus 5, corrigió errores de tipos en el conversor Python. De nuevo, no alcanzó con decir “sin cambio de comportamiento”: el commit repite la medición, esta vez con 8.386e-03 de error relativo y 0.99996630 de correlación en los logits de punta a punta. Y el formato de chat de Kimi-K3, atribuido a “Claude Fable 5”, se verificó de punta a punta contra el modelo completo corriendo en 8x B200, comprobando contenido, reasoning_content, deltas de streaming y tool_calls.

El mismo patrón aparece en bugs, no solo en features nuevas. Un fix en el kernel Vulkan de flash attention corrige un cálculo de cuantización de Q que podía dividir por un número denormalizado y desbordar: la nota del commit dice literalmente que fue Codex quien encontró el problema. Y un fix en el kernel Metal de multiplicación de matrices corrigió un caso donde el tile final de K, cuando no es múltiplo de 32, leía elementos fuera del rango válido del tensor: comportamiento indefinido según la especificación de MSL, que dependiendo del contenido residual de memoria podía corromper el resultado o producir NaN. Ese commit, marcado “Assisted-by: pi:llama.cpp/Qwen3.8-27B”, no se limitó a arreglar el cálculo: agregó casos de test-backend-ops con K no múltiplo de 32 para ejercer específicamente el camino que había fallado.

Por qué importa

Ninguno de estos bugs habría producido un crash. Todos habrían producido resultados plausibles pero incorrectos, el peor tipo de falla en un sistema de inferencia: pasa los tests superficiales, pasa el review visual del diff, y solo se nota cuando alguien compara salidas con cuidado o cuando un usuario reporta que el modelo “se comporta raro” sin poder decir por qué. La única defensa real contra ese tipo de falla es la que aparece en estos commits: una referencia contra la cual medir, una métrica de error explícita, y un test de regresión que reproduce exactamente el caso límite que rompió.

Eso es lo que distingue código “probablemente funciona” de código verificado: no es que el código de IA sea confiable por venir de un modelo grande, es que el flujo de aceptación de estos parches obliga a mostrar el número, no solo a afirmar que “no hay cambio de comportamiento”.

Reglas

Si vas a aceptar código escrito por IA en una ruta numérica o de bajo nivel (kernels, cuantización, conversión de formatos, parsers binarios):

Fuentes: https://github.com/ggml-org/llama.cpp/releases/tag/b10448, https://github.com/ggml-org/llama.cpp/releases/tag/b10539, https://github.com/ggml-org/llama.cpp/releases/tag/b10545

Seguir leyendo

Nicolás Neira

Esto se demuestra en video, y se sigue a diario en la comunidad

Las demos completas van al canal. El seguimiento release por release, adentro.