IA

    BitNet b1.58 e Quantização Ternária: Arquitetura BitLinear, Zero-GEMM e Inferência de LLMs Sem Multiplicação de Ponto Flutuante

    Como a representação de pesos em 1,58 bits elimina multiplicações de ponto flutuante, rompe o Memory Wall e viabiliza LLMs rápidos em CPUs.

    2026-09-0211 minEquipe MaxVision
    CLIP_001 · DJI O4FPV · 4K · 60FPS

    A inferência autoregressiva de modelos de linguagem enfrenta uma barreira física: o gargalo de largura de banda de memória (Memory Wall). Na geração token a token com lotes pequenos, a intensidade aritmética do modelo cai para cerca de 1 OP por byte transferido.

    O avanço arquitetural do BitNet b1.58 rompe esse paradigma. Introduzido pela Microsoft Research no paper The Era of 1-bit LLMs (arXiv:2402.17764), ele adota valores ternários {-1, 0, +1}. Essa estrutura elimina multiplicadores nos blocos lineares e acelera inferência em CPUs comuns.

    Bancada de testes de microeletrônica com equipamento de teste de silício e indicador luminoso de barramento sob iluminação focada

    Por que 1,58 bits por peso e qual a matemática da ternarização?

    A quantização ternária restringe cada parâmetro da rede neural a três estados discretos {-1, 0, +1}, armazenando log_2(3) ≈ 1,58496 bits teóricos por peso. Essa formulação mantém a capacidade de filtragem de variáveis (feature filtering) e a expressividade da rede.

    Diferente de redes estritamente binárias de 1 bit como o BitNet original (arXiv:2310.11453), que usam apenas {-1, +1}, o estado nulo 0 silencia conexões desnecessárias. Isso introduz esparsidade natural e remove ruído em tarefas de raciocínio.

    A quantização dos pesos utiliza a média absoluta da matriz de parâmetros (AbsMean):

    γ = (1 ÷ (n × m)) × ∑ |W_ij|

    W_q = Round(Clip(W ÷ (γ + ε), -1, 1))

    O escalar γ normaliza a matriz contínua W. O operador Clip restringe a faixa ao intervalo [-1, 1], e o arredondamento gera W_q ∈ {-1, 0, +1}. A recuperação contínua para escala real ocorre via W_hat = γ × W_q.

    Formato NuméricoEstados PossíveisBits Teóricos log_2(K)Operação Principal de Silício
    FP16 / BF1665.536 contínuos16,00 bitsMultiplicação + Adição FP16 (MAC)
    INT8 / FP8256 discretos8,00 bitsMultiplicação + Acumulação INT8
    INT4 / FP416 discretos4,00 bitsDescompactação + Multiplicação
    BitNet 1.0 (Binário)2 {-1, +1}1,00 bitInversão de Sinal / Pura Adição
    BitNet b1.58 (Ternário)3 {-1, 0, +1}1,58 bitsZero-GEMM (Soma, Subtração, Skip)

    A quantização das ativações opera dinamicamente por token em precisão inteira de 8 bits (INT8). O método emprega a escala máxima absoluta (AbsMax), similar ao princípio de LLM.int8() (arXiv:2208.07339):

    γ_A = max(|A_k|)

    A_q = Clip(Round(A × (127 ÷ (γ_A + ε))), -128, 127)

    Como funciona a camada BitLinear e a eliminação de multiplicações (Zero-GEMM)?

    A camada BitLinear substitui multiplicações de matrizes em ponto flutuante por adições e subtrações de inteiros, executando operações sem multiplicadores (Zero-GEMM). Quando o peso ternário é +1, a ativação é somada; quando -1, ela é subtraída; quando 0, a operação é ignorada (no-op).

    Essa substituição simplifica o núcleo de processamento. A acumulação inteira ocorre em registradores de 32 bits (INT32) para prevenir overflow aritmético durante a redução de vetores de alta dimensionalidade.

    Exemplo de Acumulação Vetorial Zero-GEMM:
    Ativações INT8 (X):   [ +42,  -18,  +105,   -7,  +88,  +12,  -64,   +3 ]
    Pesos Ternários (W):  [  +1,    0,    -1,   +1,    0,   -1,   +1,   -1 ]
    
    Passo 1: (+42) × (+1)  --> acc = +42
    Passo 2: (-18) × ( 0)  --> acc = +42 (skip / no-op)
    Passo 3: (+105) × (-1) --> acc = +42 - 105 = -63
    Passo 4: ( -7) × (+1)  --> acc = -63 + (-7) = -70
    Passo 5: (+88) × ( 0)  --> acc = -70 (skip / no-op)
    Passo 6: (+12) × (-1)  --> acc = -70 - 12 = -82
    Passo 7: (-64) × (+1)  --> acc = -82 + (-64) = -146
    Passo 8: ( +3) × (-1)  --> acc = -146 - 3 = -149
    
    Acumulador INT32 Final: -149 | Multiplicações Realizadas: ZERO
    

    O resultado acumulado A_q × (W_q)^T recebe uma única multiplicação escalar por (γ_A × γ) ÷ 127 antes da camada seguinte. Toda a computação intensiva de projeção opera sem multiplicar matrizes.

    Para estabilizar o treinamento com pesos discretos, o BitNet adota o Straight-Through Estimator (STE). No passo backward, o gradiente da quantização é aproximado pela identidade ∂W_q ÷ ∂W = 1 para valores dentro da faixa válida.

    Posto de trabalho de diagnóstico com monitor de análise de execução matricial e cabos de teste de instrumentação

    Como o BitNet quebra o Memory Wall na inferência autoregressiva?

    O BitNet b1.58 eleva a intensidade aritmética da inferência em até 8 vezes ao reduzir a transferência de memória DRAM por parâmetro de 16 bits para apenas 1,58 a 2 bits. Isso desloca a execução da zona limitada por barramento para a zona de saturação computacional.

    No regime de decodificação de LLMs, a intensidade aritmética I mede a razão entre operações executadas e bytes transferidos da memória externa:

    I_FP16 = (2 × P OPs) ÷ (2 × P Bytes) = 1,0 OP/Byte

    Processadores modernos entregam centenas de TFLOPs de cálculo, mas possuem largura de banda de memória limitada a poucas centenas de GB/s. Por isso, a inferência em FP16 opera presa ao canal da memória.

    Com pesos compactados em 2 bits no BitNet b1.58 (0,25 Byte por peso), o volume de dados transferidos da DRAM cai em 87,5%:

    I_BitNet = (2 × P OPs) ÷ (0,25 × P Bytes) = 8,0 OP/Byte

    Tamanho do ModeloTamanho dos Pesos em FP16Tamanho dos Pesos em INT4Tamanho no BitNet b1.58 (2-bit pack)Redução de Tráfego DRAM
    700M parâmetros1,40 GB0,35 GB0,175 GB87,5%
    1.3B parâmetros2,60 GB0,65 GB0,325 GB87,5%
    3.0B parâmetros6,00 GB1,50 GB0,750 GB87,5%
    7.0B parâmetros14,00 GB3,50 GB1,750 GB87,5%
    13.0B parâmetros26,00 GB6,50 GB3,250 GB87,5%
    70.0B parâmetros140,00 GB35,00 GB17,500 GB87,5%

    Segundo os estudos de custo energético em silício de Mark Horowitz (IEEE ISSCC), uma adição inteira de 8 bits consome ~0,03 pJ de energia. Já uma operação combinada de multiplicação e adição em FP16 consome ~1,50 pJ. A economia energética atinge até 50 vezes no núcleo de cálculo.

    Como o ecossistema bitnet.cpp acelera inferência em CPUs e borda?

    O framework open source bitnet.cpp (GitHub microsoft/BitNet) implementa kernels com tabelas de busca (LUT) e vetorização SIMD em CPUs x86 e ARM. Isso viabiliza executar modelos de 3B a 7B parâmetros em tempo real em computadores sem GPU dedicada.

    O bitnet.cpp emprega a técnica de Lookup Table (LUT-GEMM / T-MAC), detalhada em T-MAC: CPU Lookup Table-based Matrix Multiplication (arXiv:2407.00018). Em vez de descompactar pesos ternários durante a execução, o kernel pré-calcula somas lineares em blocos pequenos de ativações.

    Para um bloco de 4 ativações INT8 (a_0, a_1, a_2, a_3), existem exatamente 3^4 = 81 combinações possíveis de pesos ternários {-1, 0, +1}. O runtime monta uma tabela de 81 entradas na cache L1.

    O processador usa os bits compactados como índice de leitura direta na tabela, aplicando instruções SIMD como vpshufb no x86 ou vtbl no ARM Neon.

    Fluxo de Execução com Lookup Table (LUT-GEMM):
    Ativações INT8 (Bloco de 4): [ a0, a1, a2, a3 ]
                  |
                  v
    [ Tabela de Pré-Somas (81 entradas na Cache L1) ]
    Índice 0:  -a0 -a1 -a2 -a3
    Índice 40:  0   0   0   0
    Índice 80: +a0 +a1 +a2 +a3
                  ^
                  |
    [ 5 Pesos Ternários Compactados em 1 Byte (Radix-3) ]
                  |
                  v
    [ Leitura Vetorial Direta ] ---> [ Acumulador SIMD INT32 ]
    

    O esquema de empacotamento Radix-3 compacta 5 pesos ternários em 1 único byte (3^5 = 243 ≤ 256). Esse arranjo atinge uma densidade prática de 1,60 bits por peso e aproveita 94,9% do espaço de estados da memória.

    Plataforma / ProcessadorConjunto de InstruçõesModelo AvaliadoThroughput de Geração
    Intel Core i7-13700K (x86_64)AVX2 + VNNIBitNet b1.58 3B18,2 tokens/s
    AMD EPYC 9654 (Servidor x86)AVX-512 + VNNIBitNet b1.58 7B34,5 tokens/s
    Apple M3 Max (ARM64)Neon + AMX / AccelerateBitNet b1.58 3B28,7 tokens/s
    Apple M3 Max (ARM64)Neon + AMX / AccelerateBitNet b1.58 7B14,1 tokens/s
    Snapdragon 8 Gen 3 (Mobile)ARMv9 Neon / NPUBitNet b1.58 1.3B22,4 tokens/s
    Raspberry Pi 5 (Cortex-A76)ARM Neon 128-bitBitNet b1.58 700M8,9 tokens/s

    Módulo computacional de servidor de IA de borda em chassi escuro com dissipador de calor e suporte anodizado

    Qual a acurácia do BitNet b1.58 comparada ao padrão FP16?

    A partir de 3 bilhões de parâmetros, o BitNet b1.58 atinge paridade estrita de perplexidade e acurácia com modelos treinados em precisão plena FP16. Em redes maiores, o ruído discreto da quantização ternária atua como regularizador, reduzindo o sobreajuste em tarefas de raciocínio.

    As leis de escala empíricas confirmam que modelos quantizados em 1,58 bits acompanham a curva de convergência de modelos contínuos conforme previsto pelas leis de Chinchilla (arXiv:2203.15556), desde que o volume de tokens de treino compense o número de parâmetros.

    Benchmark DownstreamLLaMA 700M (FP16)BitNet 700M (1.58-bit)LLaMA 1.3B (FP16)BitNet 1.3B (1.58-bit)LLaMA 3.0B (FP16)BitNet 3.0B (1.58-bit)
    ARC-Easy52,8%51,9%58,4%58,1%64,2%64,5%
    ARC-Challenge27,6%26,8%31,5%31,2%36,8%37,1%
    HellaSwag53,2%51,7%62,1%61,8%69,4%69,5%
    PIQA69,8%68,9%73,6%73,2%76,8%77,1%
    Winogrande55,4%54,8%58,9%58,7%63,2%63,4%
    GSM8K (Raciocínio)8,4%7,9%14,2%13,8%24,6%24,9%
    MMLU (Conhecimento Geral)25,6%25,2%26,8%26,7%32,1%32,4%
    Média Consolidada40,75%39,97%45,24%44,96%50,99%51,26%

    No benchmark WikiText-2, o BitNet b1.58 de 3B alcança perplexidade de 8,88, superando o baseline FP16 de mesma arquitetura (8,92). Isso comprova a retenção de qualidade linguística mesmo com corte drástico de bits por peso.

    Quais os trade-offs e desafios de engenharia do BitNet b1.58?

    O BitNet b1.58 não é um método de quantização pós-treino (PTQ); ele exige pré-treinamento nativo com estimadores de gradiente ou destilação profunda de conhecimento. Aplicar ternarização direta sobre checkpoints legados em FP16 colapsa a representação do modelo.

    Além do custo de treinamento inicial, outros gargalos técnicos cercam a implementação em escala:

    • Falta de Silício Ternário Dedicado: GPUs comerciais atuais não possuem ALUs nativas para base 3. O ganho real de 50 vezes em energia depende do surgimento de NPUs e ASICs customizados para arquiteturas de 1 bit.
    • Operações Não Lineares Residuais: Mecanismos de atenção quadrática (Softmax QK^T), ativações SwiGLU e normalizações RMSNorm continuam operando em precisão flutuante ou INT8.
    • Complexidade de Decodificação na Memória: Empacotar 5 pesos por byte (Radix-3) exige rotinas de lookup table ou máscaras de bitplane para manter o pipeline saturado na CPU.

    O BitNet b1.58 redefine a relação entre hardware e inteligência artificial. Ao substituir o cálculo matricial flutuante por somas e tabelas de busca, ele abre caminho para uma nova era de computação distribuída, eficiente e de baixo consumo de energia.

    TAGS
    • IA
    • BitNet
    • LLM
    • Compiladores
    • Inferência
    • Hardware
    Mascote da MaxVision para contato rápido no WhatsAppFale agora pelo WhatsApp