Gemma.cpp: motor de inferência C++ leve e independente para modelos Gemma

O lançamento do Gemma.cpp pela Google, um motor de inferência C++ leve para seus modelos de linguagem Gemma, está gerando comparações com projetos comunitários estabelecidos como o llama.cpp e levantando questões sobre desempenho, portabilidade e viabilidade de longo prazo. Os comentaristas destacam que, embora o motor em si seja pequeno, implantações práticas continuam dominadas por pesos de modelo de vários gigabytes, com inferência apenas em CPU alcançando throughput utilizável, mas não extraordinário, e qualidade que alguns consideram atrás de rivais como Mistral. Muitos veem valor nos pesos abertos do Gemma, nas múltiplas superfícies de ferramentas (GGUF, Kaggle, HF) e na forte otimização para CPU, mas debatem se esses modelos menores e fortemente quantizados são realmente competitivos além de casos de uso locais e embarcados de nicho.

Tamanho do modelo, binários e implantação

  • O tamanho do executável (por exemplo, gemma.cpp, llamafile) é minúsculo em comparação com os pesos do modelo. Um exemplo: binário de ~30MB versus 1,3–1,7GB para Gemma 2B quantizado.
  • Os pesos FP16 brutos de 7B têm cerca de ~17GB; a quantização pode reduzir modelos pequenos para menos de ~1–2GB, mas a qualidade “funcional” normalmente exige pelo menos quantização em nível q4.
  • Espere que qualquer app CLI independente seja dominado pelo tamanho do modelo, não pelo código.

Casos de uso e qualidade do modelo

  • Gemma 2B é descrito por alguns como “excelente” para seu tamanho e muito rápido em serviços hospedados.
  • Outros acham Gemma 7B pouco impressionante em comparação com alternativas como Mistral 7B, com alegações de uma taxa de erro aproximadamente duas vezes maior em uma tarefa determinística de sim/não.
  • Há relatos de bom desempenho em métricas de alucinação para modelos pequenos, mas o consenso geral é misto: razoável para experimentos embarcados / locais, não estado da arte.

Desempenho e hardware

  • gemma.cpp é centrado em CPU-SIMD; o objetivo principal é portabilidade e facilidade de hackear, e não implantação em produção.
  • Throughput de CPU relatado:
    • ~2 tokens/s em um Ryzen 7 para 7B-Instruct.
    • ~5,3 tokens/s em uma CPU Skylake Gold de 16 threads, com 5 anos de idade, para 7B IT, com ~1,4× de aceleração usando quantização de ~4,5 bits.
  • Suporte a GPU/Metal é solicitado, mas ainda não existe; llama.cpp + GGUF é o caminho recomendado para uso com GPU.

Relação com llama.cpp, GGUF e formatos

  • gemma.cpp é independente, mas inspirado em llama.cpp; os modelos Gemma também rodam em llama.cpp e por meio de ferramentas como Ollama e llamafile.
  • GGUF é descrito como um formato GGML evoluído que contém metadados do modelo e templates de prompt; é principalmente para inferência e quantização.
  • As diferenças entre as saídas .sbs e GGUF são atribuídas à quantização e a diferenças sutis de implementação; corrigir isso está em andamento.

Censura, jailbreaks e variantes

  • Gemma inclui variantes mais restritas e variantes “PT” (menos filtradas).
  • Alguns comentaristas dizem que os modelos Gemma são relativamente difíceis de fazer jailbreak.

Estratégia da Google e risco

  • Alguns se preocupam com a dependência de longo prazo da Google, mas outros observam que os pesos do Gemma podem ser baixados, então a descontinuação afeta principalmente futuras atualizações.
  • Debate mais amplo sobre a execução organizacional da Google versus sua forte capacidade técnica, e como lançamentos abertos (Llama, Gemma) podem afetar o ecossistema mais amplo.