Gemma.cpp: motor de inferencia C++ ligero e independiente para modelos Gemma

El lanzamiento por parte de Google de Gemma.cpp, un motor de inferencia C++ ligero para sus modelos de lenguaje Gemma, está provocando comparaciones con proyectos comunitarios ya establecidos como llama.cpp y planteando dudas sobre rendimiento, portabilidad y viabilidad a largo plazo. Los comentaristas destacan que, aunque el motor en sí es diminuto, los despliegues prácticos siguen estando dominados por pesos de varios gigabytes, con inferencia solo en CPU que logra un rendimiento utilizable pero no sobresaliente y una calidad que algunos consideran por detrás de rivales como Mistral. Muchos ven valor en los pesos abiertos de Gemma, sus múltiples superficies de herramientas (GGUF, Kaggle, HF) y su fuerte optimización para CPU, pero se debate si estos modelos más pequeños y fuertemente cuantizados son realmente competitivos más allá de nichos locales y casos de uso embebidos.

Tamaño del modelo, binarios y despliegue

  • El tamaño del ejecutable (p. ej., gemma.cpp, llamafile) es diminuto en comparación con los pesos del modelo. Un ejemplo: binario de ~30MB frente a 1.3–1.7GB para Gemma 2B cuantizado.
  • Los pesos FP16 puros de 7B son ~17GB; la cuantización puede llevar los modelos pequeños por debajo de ~1–2GB, pero la calidad “funcional” suele requerir al menos cuantización de nivel q4.
  • Hay que esperar que cualquier app CLI independiente esté dominada por el tamaño del modelo, no por el código.

Casos de uso y calidad del modelo

  • Algunos describen Gemma 2B como “excelente” para su tamaño y muy rápido en servicios alojados.
  • Otros consideran que Gemma 7B es poco impresionante frente a alternativas como Mistral 7B, con afirmaciones de aproximadamente el doble de tasa de error en una tarea determinista de sí/no.
  • Hay informes de buen rendimiento en métricas de alucinación para modelos pequeños, pero el consenso general es mixto: decente para experimentos embebidos/locales, no puntero.

Rendimiento y hardware

  • gemma.cpp está centrado en CPU-SIMD; el objetivo principal es la portabilidad y la capacidad de modificación, no el despliegue en producción.
  • Rendimiento reportado en CPU:
    • ~2 tokens/s en un Ryzen 7 para 7B-Instruct.
    • ~5.3 tokens/s en una CPU Skylake Gold de 16 hilos y 5 años de antigüedad para 7B IT, con una mejora de ~1.4× usando cuantización de ~4.5 bits.
  • Se solicita compatibilidad con GPU/Metal, pero aún no está presente; llama.cpp + GGUF es la ruta recomendada para uso con GPU.

Relación con llama.cpp, GGUF y formatos

  • gemma.cpp es independiente pero está inspirado en llama.cpp; los modelos Gemma también funcionan en llama.cpp y mediante herramientas como Ollama y llamafile.
  • GGUF se describe como un formato GGML evolucionado que contiene metadatos del modelo y plantillas de prompts; principalmente para inferencia y cuantización.
  • Las diferencias entre salidas .sbs y GGUF se atribuyen a la cuantización y a sutiles diferencias de implementación; corregirlas sigue en curso.

Censura, jailbreaks y variantes

  • Gemma incluye tanto variantes más restringidas como variantes “PT” (menos filtradas).
  • Algunos comentaristas dicen que los modelos Gemma son relativamente difíciles de hacer jailbreak.

Estrategia y riesgo de Google

  • A algunos les preocupa la dependencia a largo plazo de Google, pero otros señalan que los pesos de Gemma se pueden descargar, así que una descontinuación afectaría sobre todo a las actualizaciones futuras.
  • Debate más amplio sobre la ejecución organizativa de Google frente a su fuerte capacidad técnica, y sobre cómo los lanzamientos abiertos (Llama, Gemma) pueden afectar al ecosistema en general.