🦙 llama.cpp — Documentação para Obsidian
📌 Introdução
llama.cpp é um repositório open-source que implementa inferência de grandes modelos de linguagem (LLMs) em C/C++, com mínima dependência externa, permitindo executar modelos localmente em hardware comum (CPU, GPU e dispositivos móveis). O foco é desempenho, portabilidade e simplicidade de build.
Projeto mantido pela organização ggml-org, amplamente utilizado para rodar modelos como LLaMA, Mistral, Falcon e outros em formato compatível (especialmente GGUF).
🗂️ Visão Geral do Repositório
- Nome: llama.cpp
- Organização: ggml-org
- Linguagem: C / C++
- Licença: MIT
- Objetivo: Inferência local eficiente de LLMs
🚀 Objetivos e Características
🎯 Propósito
- Rodar LLMs sem dependência de frameworks pesados
- Possibilitar uso local e offline
- Explorar otimizações de baixo nível para CPU e GPU
- Servir como referência e laboratório para a biblioteca GGML
⚙️ Características Principais
- Implementação direta em C/C++
- Alto foco em quantização (4-bit, 5-bit, 8-bit, etc.)
- Baixo consumo de memória
- Suporte a múltiplas arquiteturas de hardware
- Ferramentas CLI e servidor HTTP embutido
- Comunidade ativa e evolução constante
📦 Estrutura do Repositório
Principais diretórios e arquivos:
src/— Código principal de inferênciainclude/— Headers públicosdocs/— Documentação de build, instalação e usoexamples/— Exemplos de usotools/— Ferramentas auxiliares (inclui servidor HTTP)models/— Scripts e utilitários relacionados a modelosCMakeLists.txt— Build com CMakeMakefile— Build simplificado
🛠️ Build e Instalação
Requisitos Básicos
- Compilador C/C++ moderno (gcc, clang, MSVC)
- CMake (recomendado)
- Opcionalmente suporte a CUDA, Metal, Vulkan etc.
Build Básico
git clone https://github.com/ggml-org/llama.cpp
cd llama.cpp
mkdir build && cd build
cmake ..
cmake --build . --config ReleaseHá também suporte a build via make, conforme descrito na documentação oficial.
🧠 Modelos Suportados
llama.cpp não treina modelos — apenas executa inferência.
Os modelos devem estar em formatos compatíveis, principalmente:
- GGUF (formato atual e recomendado)
- Modelos convertidos a partir de Hugging Face
Modelos populares:
- LLaMA / LLaMA-2 / LLaMA-3
- Mistral
- Falcon
- Qwen
- Phi
⚡ Quantização
Um dos pilares do projeto é a quantização:
- Reduz uso de memória drasticamente
- Permite rodar modelos grandes em máquinas modestas
- Tipos comuns: Q2, Q3, Q4, Q5, Q8
Trade-off clássico:
Menor precisão → menor uso de RAM → maior velocidade
🖥️ Backends e Hardware
CPU
- x86 (AVX, AVX2, AVX-512)
- ARM (NEON)
- Apple Silicon
GPU / Aceleração
Suporte opcional a:
- CUDA (NVIDIA)
- HIP (AMD)
- Metal (macOS / iOS)
- Vulkan
- OpenCL
- SYCL
A ativação depende de flags de build.
🌐 Servidor HTTP Integrado
O projeto inclui um servidor HTTP leve (llama-server) que:
- Expõe endpoints REST para inferência
- Permite uso via navegador ou integração com apps
- Pode ser usado como backend local para interfaces web
Exemplo de uso:
./llama-server -m modelo.gguf🧩 Integração com GGML
Internamente, llama.cpp utiliza a biblioteca GGML, responsável por:
- Operações de tensor
- Alocação eficiente de memória
- Execução de grafos computacionais
llama.cpp é, na prática, uma aplicação de referência sobre GGML.
⚠️ Limitações Conhecidas
- Não realiza treinamento ou fine-tuning completo
- Documentação avançada muitas vezes está em issues/discussions
- Quebras ocasionais de compatibilidade em builds antigos
- Dependência de conversão correta de modelos
📚 Referências
- Repositório oficial: https://github.com/ggml-org/llama.cpp