GGML é uma biblioteca de tensores de propósito geral escrita em C, projetada para aplicações de aprendizado de máquina com foco em execução eficiente em hardware de consumo. Foi criada por Georgi Gerganov e é desenvolvida em conjunto com o llama.cpp, uma biblioteca de software de código aberto que realiza inferência em vários modelos de linguagem de grande porte, como o Llama da Meta. O GGML fornece as operações de tensor e os backends de hardware subjacentes que permitem ao llama.cpp executar modelos em CPUs, GPUs e outros aceleradores, tornando a inferência de IA local acessível a um público amplo.
A biblioteca enfatiza o gerenciamento estrito de memória e o multithreading, o que permite alcançar alto desempenho mesmo em sistemas sem placas gráficas dedicadas. O GGML tornou-se um componente fundamental no ecossistema de IA local, com o llama.cpp sendo considerado o padrão de facto para ferramentas de inferência local, incluindo aplicativos populares como Ollama e LM Studio.
Histórico
Georgi Gerganov começou a trabalhar na biblioteca GGML no final de setembro de 2022, inspirando-se no trabalho de Fabrice Bellard no LibNC. Antes do GGML, Gerganov desenvolveu o whisper.cpp, uma biblioteca semelhante que implementava o modelo de reconhecimento de fala Whisper da OpenAI. Este projeto anterior estabeleceu as bases para os princípios de design e a abordagem técnica posteriormente aplicados ao GGML e ao llama.cpp.
Desenvolvimento
O desenvolvimento do llama.cpp começou em março de 2023 como uma implementação pura em C/C++ do código de inferência do Llama, sem dependências externas. O projeto visava melhorar o desempenho em computadores sem GPUs ou outro hardware dedicado, e rapidamente ganhou tração entre usuários com capacidades de hardware limitadas. Inicialmente projetado para CPUs, o llama.cpp posteriormente adicionou suporte para GPUs e NPUs. Em maio de 2026, o projeto acumulava mais de 109.000 estrelas no GitHub.
Marcos importantes incluem a introdução do FlashAttention em 30 de abril de 2024, que melhorou significativamente a eficiência do cálculo de atenção. Em 10 de abril de 2025, o libmtmd foi introduzido, revitalizando o suporte para modelos multimodais. Em 17 de dezembro de 2025, a aceleração total em dispositivos Android e ChromeOS foi habilitada por meio de uma nova vinculação de GUI, permitindo o desenvolvimento de aplicativos nativos além da abordagem anterior de compilação cruzada e CLI.
Arquitetura
O llama.cpp suporta múltiplos alvos de hardware, incluindo x86, ARM, Metal, BLAS, zDNN, ZenDNN, SYCL, MUSA, CUDA, HIP, CANN, OpenCL, RPC e Vulkan (versão 1.2 ou superior). Esses backends formam a biblioteca de tensores GGML, que é usada pelo frontend do llama.cpp específico do modelo. A biblioteca aproveita extensões de CPU para otimização: AVX, AVX2, AVX-512, AVX-VNNI e AMX para x86-64; Neon, i8MM, SVE, SVE2, SME e SME2 para AArch64; e VXE2 para S390x. O silício da Apple é um alvo importante para o projeto.
O GGML suporta recursos voltados para inferência de borda, incluindo quantização de modelo antecipada, quantização de cache KV em tempo real, decodificação especulativa e descarregamento parcial de camadas do modelo para a RAM do sistema, permitindo que dispositivos carreguem modelos que excedem a capacidade da VRAM da GPU. Para comunicação de frontend, o llama.cpp oferece endpoints compatíveis com OpenAI, como v1/chat/completions e formatação de saída baseada em gramática como JSON.
Formato de Arquivo GGUF
O formato GGUF (Arquivo Universal GGML) é um formato binário que armazena tanto tensores quanto metadados em um único arquivo, projetado para carregamento e salvamento rápidos de dados de modelo. Introduzido em agosto de 2023 pelo projeto llama.cpp, o GGUF foi criado para manter a compatibilidade retroativa à medida que o suporte para arquiteturas de modelo adicionais foi adicionado. Ele substituiu formatos anteriores, como o GGML, e é tipicamente produzido pela conversão de modelos de outras bibliotecas de aprendizado de máquina, como o PyTorch.
Design
O GGUF foca na quantização, reduzindo a precisão dos pesos do modelo para diminuir o uso de memória e aumentar a velocidade, ao custo de alguma precisão. Ele suporta tipos inteiros quantizados de 2 a 8 bits, formatos de ponto flutuante comuns, como float32, float16 e bfloat16, e quantização de 1,58 bits. O formato inclui informações essenciais para executar modelos de linguagem do tipo GPT, como vocabulário do tokenizador, comprimento do contexto, informações de tensor e outros atributos.
Modelos
O llama.cpp suporta uma ampla gama de modelos de linguagem de grande porte, incluindo Llama, Mistral, Gemma, DeepSeek, gpt-oss, Phi e Qwen. Essa ampla compatibilidade tornou o GGML e o llama.cpp ferramentas essenciais para desenvolvedores e pesquisadores que trabalham com modelos de linguagem de grande porte em hardware local.