O que é BitNet? Como executar LLMs de 1 bit na sua CPU com bitnet.cpp da Microsoft

BitNet é a família de modelos de linguagem de 1 bit da Microsoft, e bitnet.cpp é o motor open source que os executa em uma CPU comum, sem GPU e com uma fração da memória habitual. Seu modelo principal, BitNet b1.58 2B4T, ocupa cerca de 0,4 GB em seus pesos sem embeddings, contra os 1,4 a 4,8 GB que modelos pequenos comparáveis precisam.

O repositório não é novo: o bitnet.cpp 1.0 saiu em outubro de 2024. Mas ele não parou de evoluir. Em janeiro de 2026, uma otimização de CPU somou outra aceleração de 1,15x a 2,1x. Em julho de 2026, a Microsoft publicou dois modelos de embeddings de 1 bit e o VibeASR.cpp, um motor de reconhecimento de voz construído sobre a mesma quantização. Aqui está o que é, como instalá-lo e onde ele realmente se encaixa na sua caixa de ferramentas.

O que significa um LLM ser de 1 bit?

Significa que cada peso do modelo só pode assumir um de três valores: -1, 0 ou +1. Tecnicamente são 1,58 bits, e daí vem o “b1.58” do nome. Um modelo convencional armazena cada peso como um número de ponto flutuante de 16 bits. Com pesos ternários, as custosas multiplicações de matrizes se reduzem a somas, e por isso o ganho aparece ao mesmo tempo em memória, latência e energia. Em inglês você vai encontrá-lo como 1-bit LLM ou ternary LLM.

O detalhe importante está na ficha do modelo: o BitNet b1.58 2B4T foi treinado do zero neste formato. Não é um modelo de precisão completa que foi comprimido depois. Essa é a diferença em relação às quantizações Q4 ou Q8 que você baixa para o Ollama ou o LM Studio: essas pegam um modelo pronto e o comprimem, enquanto o BitNet nasce ternário. As ativações são quantizadas em 8 bits, então o esquema completo é W1.58A8.

O modelo tem cerca de 2 bilhões de parâmetros, foi treinado com 4 trilhões de tokens, usa o tokenizador do Llama 3 e tem um contexto máximo de 4.096 tokens.

Quão rápido é o BitNet e quão bom ele é?

Segundo os dados da Microsoft, que não são benchmarks independentes, o bitnet.cpp é entre 2,37x e 6,17x mais rápido que a inferência de precisão completa em CPUs x86. Nesses mesmos processadores, consome entre 71,9 e 82,2 por cento menos energia. Em ARM, a aceleração vai de 1,37x a 5,07x e a economia de energia, de 55,4 a 70,0 por cento. Os modelos maiores são os que mais ganham.

Em qualidade, a ficha do modelo compara o BitNet b1.58 2B com modelos instruct de tamanho similar:

LLaMA 3.2 1B Gemma-3 1B Qwen2.5 1.5B BitNet b1.58 2B
Memória (sem embeddings) 2 GB 1,4 GB 2,6 GB 0,4 GB
Latência de decodificação em CPU 48 ms 41 ms 65 ms 29 ms
Média dos benchmarks 44,90 43,74 55,23 54,19
HumanEval+ 31,10 37,20 50,60 38,40
GSM8K 38,21 31,16 56,79 58,38

A tabela mostra uma qualidade próxima à do Qwen2.5 1.5B com aproximadamente um sexto da memória. A exceção é o código: no HumanEval+ ele fica bem atrás do Qwen.

O README também afirma que o bitnet.cpp pode executar um modelo BitNet de 100 bilhões de parâmetros em uma única CPU, a entre 5 e 7 tokens por segundo, mais ou menos a velocidade de leitura humana. Encare isso como uma afirmação sobre o motor. Não existe um modelo BitNet público de 100B. Os maiores modelos suportados hoje são os da família Falcon3, de até 10B. O repositório inclui um gerador de modelos dummy justamente para medir arquiteturas que ainda não têm um modelo público.

Por que o BitNet não é mais rápido com transformers?

Porque os kernels especializados só existem no bitnet.cpp. A ficha do modelo diz isso sem rodeios: executar o BitNet com a biblioteca padrão transformers da Hugging Face não traz nenhuma vantagem em velocidade, latência ou energia, e pode ser até mais lento que um modelo de precisão completa. Você verá menos uso de memória, mas os benefícios de computação exigem o bitnet.cpp.

É o erro mais comum com o BitNet. As pessoas o carregam em Python, não notam diferença e concluem que era tudo fumaça. O motor é o produto.

Como instalar o bitnet.cpp?

Você precisa de Python 3.10 ou superior, CMake 3.22 ou superior e clang 18 ou superior. O uso de conda é altamente recomendado. No Debian ou Ubuntu, o README indica o script de instalação automática do LLVM para obter o clang:

bash -c "$(wget -O - https://apt.llvm.org/llvm.sh)"

1. Clone o repositório com seus submódulos:

git clone --recursive https://github.com/microsoft/BitNet.git
cd BitNet

2. Crie o ambiente e instale as dependências:

conda create -n bitnet-cpp python=3.10
conda activate bitnet-cpp

pip install -r requirements.txt

3. Baixe o modelo e compile:

huggingface-cli download microsoft/BitNet-b1.58-2B-4T-gguf --local-dir models/BitNet-b1.58-2B-4T
python setup_env.py -md models/BitNet-b1.58-2B-4T -q i2_s

setup_env.py aceita -q i2_s ou -q tl1 para escolher o kernel de quantização. Ele também tem estas opções:

  • --use-pretuned (-p): usa parâmetros de kernel já ajustados.
  • --hf-repo (-hr): baixa diretamente um dos modelos da comunidade suportados.

4. Converse com o modelo:

python run_inference.py -m models/BitNet-b1.58-2B-4T/ggml-model-i2_s.gguf -p "You are a helpful assistant" -cnv

-cnv ativa o modo chat, e nesse modo -p passa a ser o system prompt. Outras flags úteis:

  • -t: número de threads.
  • -c: tamanho do contexto.
  • -n: quantos tokens gerar.
  • -temp: temperatura.

Para medir o desempenho na sua própria máquina:

python utils/e2e_benchmark.py -m /path/to/model -n 200 -p 256 -t 4

Esse comando gera 200 tokens a partir de um prompt de 256 tokens com 4 threads. O valor padrão é de 2 threads, então ajuste -t aos seus núcleos antes de comparar números.

O BitNet funciona no Windows e no Mac?

Sim, em ambos, com ressalvas.

O Windows precisa do Visual Studio 2022 com estes componentes ativados:

  • Desktop development with C++
  • C++ CMake Tools for Windows
  • Git for Windows
  • C++ Clang Compiler for Windows
  • MS-Build Support for LLVM-Toolset (clang)

Todos os comandos devem ser executados a partir de um Developer Command Prompt ou Developer PowerShell do VS2022. Se clang -v responder que o comando não é reconhecido, seu terminal não está inicializado com as ferramentas do Visual Studio. O FAQ do README traz a solução com VsDevCmd.bat.

Mac com Apple Silicon e outros chips ARM executam o modelo de chat com os kernels I2_S e TL1. O próprio vídeo de demonstração da Microsoft mostra um modelo BitNet de 3B rodando em um M2.

Os novos modelos de embeddings são apenas para x86. A tabela de modelos suportados não lista nenhum kernel ARM para o BitNet-embedding-0.6B nem para o de 270M, então no Apple Silicon você não consegue executá-los com o bitnet.cpp.

Existe ainda um kernel oficial para GPU, publicado em maio de 2025. No momento da publicação desta nota, o README menciona o suporte a NPU como “o próximo passo”, sem data.

O que são os novos modelos de embeddings do BitNet?

São os primeiros modelos de embeddings de 1 bit, publicados em 20 de julho de 2026 em dois tamanhos:

  • BitNet-embedding-0.6B: prefill entre 1,42x e 2,28x mais rápido que em F16, com 8 threads.
  • BitNet-embedding-270M: entre 1,32x e 1,74x mais rápido, pensado para implantações no edge.

A Microsoft relata uma qualidade de embeddings competitiva com os modelos de precisão completa usando 2 bits por peso. Os embeddings são o motor de qualquer pipeline de RAG, de busca semântica ou de busca de código, então esta pode ser a parte mais prática do lançamento para um desenvolvedor. O repositório inclui um guia específico de conversão e inferência (docs/bitnet-embeddings-i2s-guide.md).

Para que serve o BitNet e para que não serve?

Ele se encaixa bem nestes casos:

  • Embeddings locais para RAG.
  • Classificação e extração em servidores sem GPU.
  • Implantações offline e no edge.
  • Jobs de CI ou workers em segundo plano, onde um modelo pequeno em uma CPU ociosa é uma opção melhor que uma chamada a uma API.
  • Qualquer caso em que a energia ou a memória sejam a principal restrição.

Não se encaixa nestes:

  • Assistência para programar. Sua pontuação no HumanEval+ é modesta; ele não substitui o seu agente de código.
  • Documentos longos. A janela de contexto é de 4.096 tokens.
  • Cargas de trabalho principalmente em espanhol. A ficha do modelo adverte que o suporte a idiomas diferentes do inglês é limitado.

A Microsoft também não recomenda usar o BitNet b1.58 em aplicações comerciais ou do mundo real sem mais testes e desenvolvimento. Trate-o como um modelo de pesquisa com um motor de nível de produção.

BitNet, llama.cpp ou Ollama: qual usar?

Depende de como o modelo foi treinado. O bitnet.cpp é construído sobre o llama.cpp; a diferença está nos kernels. Os do bitnet.cpp são projetados para pesos ternários, com os métodos de tabelas de consulta do projeto T-MAC da Microsoft. Para um modelo quantizado geral (Q4, Q8 ou similares), llama.cpp, Ollama ou LM Studio continuam sendo as ferramentas indicadas. A própria Microsoft recomenda o T-MAC para modelos de poucos bits que não são ternários. Use o bitnet.cpp quando o modelo foi treinado como modelo BitNet.

Se você ainda está escolhendo entre os runtimes gerais, aqui comparamos os três: LM Studio, Ollama ou llama.cpp: o que realmente roda na sua máquina


E você? Que tarefa do seu fluxo de trabalho você passaria para um modelo local em CPU?

Para que você usaria o BitNet primeiro?
  • Embeddings para RAG ou busca semântica
  • Classificação ou extração em servidores sem GPU
  • Experimentar no meu laptop
  • Prefiro outra opção (nos conta qual)
0 votantes

Comente abaixo ou, se este artigo chegou até você por e-mail, responda diretamente ao e-mail: sua resposta é publicada aqui.

Relacionado: Ternlight: Como Instalar um Motor de Embeddings de 7 MB que Roda Inteiramente no seu Navegador