⏱️ Lectura: 8 min

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).

📑 En este artículo
  1. Qué rompe ggml 1.0.0
  2. Rendimiento repartido entre seis backends
  3. Lo que probamos: clonar e instalar ggml en sandbox
  4. Qué significa para vos si mantenés un binding o un fork
  5. ggml frente a TensorFlow y Transformers
  6. Limitaciones y cuándo no conviene usarlo directo
  7. Referencias
    1. 📚 Artículos relacionados

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. Foto de Trnava University en Unsplash

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. Foto de National Cancer Institute en Unsplash

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.

Proyecto Qué es Estrellas (2026-11-14) Dependencias núcleo
ggml Librería de tensores en C/C++, sin autograd ~15.765 Ninguna (C/C++ puro)
TensorFlow Framework completo de entrenamiento e inferencia ~201.596 Python, CUDA, protobuf y decenas más
Transformers Librería de modelos preentrenados sobre PyTorch/TF/JAX ~168.966 PyTorch 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

Seguimos el tema en @programacion.

Imagen destacada: Foto de Ilya Pavlov en Unsplash

📬 Recibí lo nuevo en tu email

Te avisamos de artículos grandes (1-2 por mes).

Así preparamos cada artículo (fuentes, pruebas y criterio editorial): Cómo trabajamos.

¿Te sirvió? ¿Te dio otro error? Contalo abajo: las preguntas se responden y le sirven al siguiente que llegue.

Dejar un comentario
Categorías: Noticias Tech

Redacción El Solitario

Artículo preparado por la redacción de El Solitario con fuentes citadas, bajo la responsabilidad editorial de Luis Navarro. Más detalles en "Cómo trabajamos".

0 Comentarios

Deja un comentario

Marcador de posición del avatar

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Podés incluir código entre <code>…</code> o, para varias líneas, <pre><code>…</code></pre>.

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.