Ваги та зміщення нейромережі (Weights & Biases)(Ваги та зміщення моделі: що насправді записано всередині файлів .safetensors)
Фундаментальна природа навченої нейромережі. Ваги (Weights) — матричні коефіцієнти сили зв'язку між штучними нейронами, а зміщення (Biases) — поріг чутливості активації. Пояснення форматів збереження (.safetensors, bfloat16, fp8) та інспекція ваг через Python і CLI.
1. Огляд концепції та математична суть
Коли ви завантажуєте відкриту модель із Hugging Face (наприклад, Llama 3.1 8B або Mistral NeMo), ви отримуєте один або кілька файлів із розширенням .safetensors вагою від 4 до 140 гігабайтів.
Що міститься всередині цих файлів? Чи є там тексти з Вікіпедії або програмний код?
Ні. Там збережено результат сотень тисяч годин обчислень на кластерах GPU — Матриці Вагів (Weights) та Вектори Зміщення (Biases):
- Ваги ($W$): коефіцієнти масштабування вхідних векторів. Вони визначають, наскільки сильно один концепт пов'язаний з іншим у багатовимірному просторі.
- Зміщення ($b$): додатковий зсув, що регулює базову ймовірність активації нейрона незалежно від вхідних даних (поріг збудження).
Математична основа одного лінійного шару трансформера: $$y = \sigma(W \cdot x + b)$$ де $x$ — вхідний вектор токенів, $W$ — матриця вагів, $b$ — вектор зміщень, а $\sigma$ — функція активації (GELU чи SwiGLU).
Ментальна модель: якщо уявити мозок як гігантський пульт звукорежисера з 70 мільярдами повзунків, то ваги — це зафіксовані з міліметровою точністю положення кожного повзунка після року тренування.
┌─────────────────────────────────────────────────────────────┐
│ МЕХАНІКА ОБЧИСЛЕННЯ НЕЙРОНА │
├─────────────────────────────────────────────────────────────┤
│ Вхідні токени (x): │
│ • Токен 1 ("Кіт") ─── [ Вага w1: +2.85 ] ───┐ │
│ • Токен 2 ("Гавкає") ─── [ Вага w2: -3.40 ] ───┼──> Σ + b│
│ • Токен 3 ("М'ясо") ─── [ Вага w3: +1.15 ] ───┘ │ │
│ ▼ │
│ Зміщення (Bias b): -0.50 ────────────────────> [ АКТИВАЦІЯ ]│
│ │ │
│ ▼ │
│ Вихідний прогноз (y): "Муркоче" (Ймовірність: 96.4%) │
└─────────────────────────────────────────────────────────────┘
2. Практичні CLI-команди та інспекція файлу вагів у Python
Замість сліпої довіри до чорної скриньки, ви можете легко перевірити заголовок та типи збережених тензорів у терміналі:
# 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. Чому файли вагів важать десятки гігабайтів
Кожен окремий ваговий коефіцієнт — це дійсне число:
- Модель Llama 3.1 на 8 мільярдів параметрів містить 8 000 000 000 окремих чисел.
- У стандартній точності Bfloat16 / FP16 кожне число займає рівно 2 байти (16 біт).
- Розрахунок розміру: $8 \times 10^9 \times 2 \text{ байти} \approx 16 \text{ Гігабайтів}$.
- Якщо застосувати 4-бітне квантування (GGUF Q4_K_M або AWQ), кожне число стискається до 0.5 байта, і модель «худне» до 4.8 ГБ, що дозволяє запустити її навіть на звичайному ноутбуці з 8 ГБ RAM.
4. Підсумковий висновок
Файл вагів — це і є матеріальне втілення штучного інтелекту. Коли компанії кажуть «Ми відкриваємо ваги (Open Weights)», це означає, що вони викладають публічний файл .safetensors, надаючи вам повну свободу запускати, вивчати та модифікувати модель локально без залежності від хмарних API.
FAQ: Ваги та зміщення нейромережі (Weights & Biases)
Пов'язані терміни
Кількість параметрів моделі (7B, 14B, 70B)
Позначення загальної кількості навчальних параметрів (ваг) у великій мовній моделі, де буква 'B' означає мільярди (Billion). Головний показник інтелектуальної місткості моделі, швидкості її роботи та вимог до обсягу пам'яті комп'ютера.
Типи квантування: FP16, INT8, INT4
Технічні формати представлення ваг нейромереж. Від повної 16-бітної точності з плаваючою комою (FP16 / BF16) до цілочисельних форматів стиснення (INT8, INT4, AWQ, EXL2), що визначають баланс між споживанням пам'яті та інтелектуальною якістю відповідей.
Відеопам'ять (VRAM) для ШІ
Відеопам'ять графічного процесора (Video RAM), у яку завантажуються ваги нейромережі та контекстне вікно. Головне апаратне вузьке місце: якщо модель не поміщається у VRAM, вона або не запуститься, або працюватиме в десятки разів повільніше на звичайному процесорі.
Квантування та формат GGUF
Математичний метод зменшення точності числових ваг моделі (наприклад, з 16-бітного FP16 до 4-бітного INT4) та уніфікований бінарний файл формату GGUF для миттєвого завантаження в процесори й відеокарти через рушій llama.cpp.