ggml, la librería en C y C++ que impulsa a llama.cpp y whisper.cpp, publicó el 13 de noviembre de 2026 su versión 1.0.0 en GitHub. La release poda la API pública marcada como obsoleta, descontinúa dos operaciones heredadas y suma soporte para el formato de punto flotante FP8 (nota de la versión 1.0.0).
Qué rompe ggml 1.0.0
El cambio más disruptivo es interno: ggml eliminó la API pública que llevaba meses deprecada y quitó las operaciones heredadas DIAG_MASK_INF y DIAG_MASK_ZERO. Junto con esa poda, el protocolo RPC subió a la versión 9 y ahora rechaza directamente a cualquier peer que hable una versión anterior, en vez de fallar a medias durante el handshake (release v1.0.0).
También llegaron dos funciones nuevas, ggml_rope_set_truncate y ggml_rope_get_truncate, que dejan configurar el redondeo del límite de corrección de YaRN, la técnica que extiende el contexto de un modelo más allá de con lo que fue entrenado. Antes ese valor venía fijo; ahora cada proyecto que use ggml como motor puede ajustarlo según su propio esquema de extensión de contexto.
ggml-org/ggml suma unas 15.765 estrellas al 2026-11-14.
Rendimiento repartido entre seis backends
El grueso del release es trabajo de rendimiento, repartido backend por backend. En CUDA se agregó MMQ de pocas filas para tandas de 2 a 24, soporte FP8 del estándar OCP y matmuls NVFP4 fusionados con GLU; en Metal se fusionó el ruteo de MoE dentro de un mismo buffer de comandos. Vulkan suma un kernel de FlashAttention para prefill en GPU Intel, SYCL agrega un planificador de MoE que corre del lado del dispositivo, y OpenCL incorpora FlashAttention descompuesto para Adreno (release v1.0.0).
Dentro de CUDA también entró una rama HIP para GPU AMD: un workspace fijo para BLAS y un indexador MFMA pensado para la arquitectura CDNA2, más una ruta rápida para el escaneo de estados (SSM_SCAN) con d_state=64 y un Top-K por radix que ahora es determinístico cuando hay empates, algo que importa para reproducir resultados de benchmarks (release v1.0.0).
El resto de los backends también avanzó: WebGPU sumó kernels nuevos (GROUP_NORM, MEAN, COUNT_EQUAL, PAD_REFLECT_1D) y Hexagon amplió su cobertura de operaciones con soporte Q5_0/Q5_1 y convolución 3D. A nivel de scheduler central, ggml ahora evita subir a la GPU los inputs que ninguna operación va a leer y solo precarga lo que produce el split anterior: menos transferencias de memoria por cada grafo de cómputo que se ejecuta.
Lo que probamos: clonar e instalar ggml en sandbox
Clonamos el repositorio en un sandbox aislado (Python 3.12.16, Node v18.20.4, Git 2.39.5, sin aislamiento de red) para ver qué tan simple es arrancar desde cero:
git -c protocol.allow=never -c protocol.https.allow=always -c core.hooksPath=/dev/null clone --depth 1 --single-branch --no-tags -- https://github.com/ggml-org/ggml /tmp/lab-runs/lab-b2w_j88s/w/repo El clon bajó 32,4 MB en 1,81 segundos con un pico de memoria de apenas 33,5 MB, nada fuera de lo normal para un repo de este tamaño. El problema llegó en el paso siguiente, instalar las dependencias Python del repositorio:
python3 -m venv .venv .venv/bin/python -m pip install --no-input -r requirements.txt Esa instalación falló con código de salida 2 después de 38,88 segundos y un pico de memoria de 151,9 MB. La salida de pip, antes de truncarse, muestra que requirements.txt intenta bajar TensorFlow 2.20.0 y Torch ~2.11.0 completos, con todo su árbol de dependencias (tensorboard, sympy, keras, rich). Es un hallazgo que contrasta con la descripción oficial del propio repo: «Plain C/C++ implementation without any dependencies» (ggml-org/ggml). Esa frase describe la librería núcleo en C/C++, pero las herramientas Python que viven en el mismo repo (scripts de conversión y pruebas) sí arrastran un stack de ML completo, y en nuestro sandbox ese stack ni siquiera terminó de instalarse en el tiempo que le dimos.
Qué significa para vos si mantenés un binding o un fork
Si tenés un fork de llama.cpp, whisper.cpp o cualquier binding en Python, Node o Rust que linkea contra ggml como submódulo, el salto a 1.0.0 implica recompilar: el código que todavía llamaba a la API pública deprecada o a DIAG_MASK_INF/DIAG_MASK_ZERO deja de compilar directamente. Revisá tu CMakeLists.txt y tus llamadas a esas dos operaciones antes de actualizar el submódulo en CI.
Si además corrés ggml-rpc-server para repartir cómputo entre máquinas, por ejemplo un nodo con GPU y otro sin ella, actualizá cliente y servidor al mismo tiempo. Con el protocolo RPC en v9, un peer viejo ya no logra ni completar el handshake, no es un fallo silencioso. Y si pensás contribuir a los scripts Python del repo (conversión de pesos, benchmarks), asumí que vas a necesitar bastante más disco y tiempo de instalación del que sugiere el pitch de «sin dependencias»: nuestro intento se quedó a mitad de camino bajando TensorFlow y Torch.
Si en cambio compilás para navegador o para un dispositivo embebido con WebAssembly, las adiciones a WebGPU son las que te tocan directo: antes GROUP_NORM, MEAN, COUNT_EQUAL y PAD_REFLECT_1D no tenían kernel nativo en ese backend y probablemente caían a una ruta más lenta o fallaban. Si tu build apunta a WebGPU, vale la pena revisar si tu grafo de cómputo usa alguna de esas cuatro operaciones y remedir el rendimiento después de actualizar.
El clon del repo tardó 1,81 segundos en nuestro sandbox.
ggml frente a TensorFlow y Transformers
ggml ocupa un nivel mucho más bajo que las alternativas con más estrellas en GitHub. TensorFlow (tensorflow/tensorflow, unas 201.596 estrellas al 2026-11-14) y Transformers de Hugging Face (huggingface/transformers, unas 168.966 estrellas al 2026-11-14) son frameworks completos con entrenamiento, serialización y un catálogo de modelos ya integrado. ggml, en cambio, es la capa de cómputo de tensores que corre por debajo de proyectos como llama.cpp: sin autograd, sin Python como lenguaje principal, pensada para compilar e inferir en el dispositivo final, de un teléfono a un cluster con GPU.
ProyectoQué esEstrellas (2026-11-14)Dependencias núcleoggmlLibrería de tensores en C/C++, sin autograd~15.765Ninguna (C/C++ puro)TensorFlowFramework completo de entrenamiento e inferencia~201.596Python, CUDA, protobuf y decenas másTransformersLibrería de modelos preentrenados sobre PyTorch/TF/JAX~168.966PyTorch o TensorFlow como backend
El ResearchBundle también agrupa a ggml con f/prompts.chat (unas 177.268 estrellas al 2026-11-14) por compartir el topic de GitHub «machine-learning», pero no es una librería de tensores: es una colección de prompts para ChatGPT. Comparten etiqueta, no función, así que la comparación real de ggml es contra TensorFlow y Transformers.
Limitaciones y cuándo no conviene usarlo directo
ggml no tiene instalador ni paquete precompilado: la propia documentación arranca con «Build from source» y un ejemplo mínimo de multiplicación de matrices (ggml-org/ggml). Si tu equipo no tiene a alguien cómodo compilando C++ para la plataforma destino (x86, ARM, RISC-V, WebAssembly), probablemente te conviene seguir usando ggml por la puerta de atrás, a través de llama.cpp, whisper.cpp o un binding ya empaquetado, no directo.
La cobertura de modelos también tiene huecos reconocidos por el propio proyecto: el issue #59, abierto, pregunta por soporte nativo de texto a voz y sigue sin cerrarse. Y la gobernanza del proyecto está en transición: ggml.ai se integró a Hugging Face para asegurar la continuidad de la IA local, algo que la comunidad de Hacker News discutió activamente (hilo de HN). Todavía es pronto para saber cómo ese cambio de sombrilla afecta el ritmo de releases como esta.
Referencias
- GitHub, release v1.0.0 de ggml-org/ggml: nota de la versión con los cambios de API, rendimiento y protocolo RPC.- GitHub, ggml-org/ggml: descripción del proyecto, estrellas, forks, licencia y lenguaje principal.- GitHub, issue #59: pedido abierto de soporte nativo para modelos de texto a voz.- Hacker News: discusión sobre la integración de Ggml.ai a Hugging Face.- GitHub, tensorflow/tensorflow: framework de referencia para la comparación de alcance y dependencias.- GitHub, huggingface/transformers: librería de modelos preentrenados usada como segundo punto de comparación.
Seguimos el tema en @programacion.