Pesos e Vies de Redes Neurais (Weights & Biases)
A natureza fundamental de uma rede neural treinada. Os Pesos (Weights) são coeficientes matriciais que definem a força das conexões entre neurônios artificiais, enquanto os Vies (Biases) representam o limiar de sensibilidade para ativação. Explicação dos formatos de armazenamento (.safetensors, bfloat16, fp8) e inspeção de pesos via Python e CLI.
1. Visão geral do conceito e essência matemática
Ao baixar um modelo aberto do Hugging Face (por exemplo, Llama 3.1 8B ou Mistral NeMo), você obtém um ou mais arquivos com extensão .safetensors, com peso entre 4 e 140 gigabytes.
O que há dentro desses arquivos? Há textos da Wikipedia ou código-fonte?
Não. Eles armazenam o resultado de centenas de milhares de horas de computação em clusters de GPU — Matrizes de Pesos (Weights) e Vetores de Viés (Biases):
- Pesos ($W$): coeficientes de escala dos vetores de entrada. Eles determinam a força da associação entre conceitos em um espaço multidimensional.
- Viés ($b$): um deslocamento adicional que regula a probabilidade base de ativação do neurônio, independentemente dos dados de entrada (limiar de excitação).
A base matemática de uma camada linear de um transformer é: $$y = \sigma(W \cdot x + b)$$ onde $x$ é o vetor de entrada de tokens, $W$ é a matriz de pesos, $b$ é o vetor de viés e $\sigma$ é a função de ativação (GELU ou SwiGLU).
Modelo mental: se imaginarmos o cérebro como um enorme console de mixagem de som com 70 bilhões de faders, os pesos são as posições exatas de cada fader, fixadas com precisão milimétrica após um ano de treinamento.
┌─────────────────────────────────────────────────────────────┐
│ MECÂNICA DE CÁLCULO DO NEURÔNIO │
├─────────────────────────────────────────────────────────────┤
│ Tokens de entrada (x): │
│ • Token 1 ("Gato") ─── [ Peso w1: +2.85 ] ───┐ │
│ • Token 2 ("Latindo") ─── [ Peso w2: -3.40 ] ───┼──> Σ + b│
│ • Token 3 ("Carne") ─── [ Peso w3: +1.15 ] ───┘ │ │
│ ▼ │
│ Viés (Bias b): -0.50 ────────────────────> [ ATIVAÇÃO ] │
│ │ │
│ ▼ │
│ Previsão de saída (y): "Ronronando" (Probabilidade: 96.4%) │
└─────────────────────────────────────────────────────────────┘
2. Comandos práticos de CLI e inspeção de arquivos de pesos em Python
Em vez de confiar cegamente na caixa preta, você pode verificar facilmente o cabeçalho e os tipos de tensores armazenados no terminal:
# 1. Швидкий перегляд метаданих та структури тензорів без завантаження всієї моделі в RAM
python -c "
from safetensors import safe_open
with safe_open('model.safetensors', framework='pt', device='cpu') as f:
for key in list(f.keys())[:5]:
tensor = f.get_slice(key)
print(f'{key}: shape={tensor.get_shape()}, dtype={tensor.get_dtype()}')
"
# 2. Перевірка цілісності та контрольної суми файлу вагів SHA256
sha256sum model-00001-of-00004.safetensors
# 3. Швидке завантаження моделі з HuggingFace через офіційний CLI
huggingface-cli download Qwen/Qwen2.5-Coder-7B-Instruct --include "*.safetensors"
3. Por que os arquivos de pesos têm dezenas de gigabytes
Cada coeficiente de peso individual é um número real:
- O modelo Llama 3.1 com 8 bilhões de parâmetros contém 8.000.000.000 números individuais.
- Na precisão padrão Bfloat16 / FP16, cada número ocupa exatamente 2 bytes (16 bits).
- Cálculo do tamanho: $8 \times 10^9 \times 2 \text{ bytes} \approx 16 \text{ Gigabytes}$.
- Se aplicarmos quantização de 4 bits (GGUF Q4_K_M ou AWQ), cada número é comprimido para 0,5 byte, e o modelo "emagrece" para 4,8 GB, permitindo executá-lo até mesmo em laptops comuns com 8 GB de RAM.
4. Conclusão final
O arquivo de pesos é a materialização tangível da inteligência artificial. Quando empresas dizem "Estamos abrindo os pesos (Open Weights)", isso significa que elas disponibilizam publicamente o arquivo .safetensors, concedendo-lhe total liberdade para executar, estudar e modificar o modelo localmente, sem dependência de APIs em nuvem.
FAQ: Pesos e Vies de Redes Neurais (Weights & Biases)
Termos relacionados
Número de parâmetros do modelo (7B, 14B, 70B)
Designação da quantidade total de parâmetros de treinamento (pesos) em um grande modelo de linguagem, onde a letra 'B' significa bilhões (Billion). Principal indicador da capacidade intelectual do modelo, sua velocidade de execução e requisitos de memória do computador.
Tipos de quantização: FP16, INT8, INT4
Formatos técnicos para a representação dos pesos das redes neurais. Desde a precisão completa de 16 bits com vírgula flutuante (FP16 / BF16) até formatos inteiros de compressão (INT8, INT4, AWQ, EXL2), que definem o equilíbrio entre o consumo de memória e a qualidade intelectual das respostas.
Memória de Vídeo (VRAM) para IA
A memória de vídeo da placa gráfica (Video RAM), onde são carregados os pesos da rede neural e a janela de contexto. É o principal gargalo de hardware: se o modelo não couber na VRAM, ele não será executado ou funcionará dezenas de vezes mais lentamente no processador comum.
Quantização e Formato GGUF
Método matemático para reduzir a precisão dos pesos numéricos do modelo (por exemplo, de FP16 de 16 bits para INT4 de 4 bits) e um arquivo binário unificado no formato GGUF para carregamento instantâneo em processadores e placas de vídeo através do motor llama.cpp.