Как пользоваться
- Перепишите из конфигурации модели число слоёв, размер скрытого слоя, головы внимания, KV-головы, размер FFN и словаря.
- Выберите gated или обычный FFN, RMSNorm или LayerNorm и вид позиций.
- Включите «tied», если выходной слой использует матрицу эмбеддинга, и «смещения», если они есть в линейных слоях.
- Смотрите итог и разбивку.
Формулы
При размерности головы h = d_model ÷ головы и ширине KV k = KV-головы × h:
- внимание на слой = 2·d_model² + 2·d_model·k (Q и O, затем K и V), со смещениями ещё 2·d_model + 2·k;
- FFN на слой = 3·d_model·d_ff (gated) или 2·d_model·d_ff (обычный), плюс смещения, если есть;
- нормализация на слой = 2 × d_model (RMSNorm) или 2 × 2·d_model (у LayerNorm есть ещё смещение);
- эмбеддинги = словарь × d_model, вдвое больше без tied, плюс позиции × d_model для обучаемой таблицы;
- всего = слои × параметры слоя + эмбеддинги + финальная нормализация.
Пример расчёта
Размеры по умолчанию: 32 слоя, d_model 4096, 32 головы (размерность 128), 8 KV-голов (ширина KV 1024), gated FFN 14 336, RMSNorm, словарь 32 000, без tied, rotary-позиции.
- внимание 2 × 4096² + 2 × 4096 × 1024 = 41 943 040;
- FFN 3 × 4096 × 14 336 = 176 160 768;
- слой вместе с двумя нормализациями по 4096 — 218 112 000, × 32 = 6 979 584 000;
- эмбеддинг и выходной слой 2 × 32 000 × 4096 = 262 144 000; финальная нормализация 4096.
Итого 7 241 732 096 параметров, 7,242 млрд, то есть 14,48 GB в 16 битах.
Советы
- В маленьких моделях эмбеддинги весят больше. При большом словаре они занимают заметную долю; строка «без эмбеддингов» показывает остальное.
- Память следует из числа параметров. Умножьте на 2 байта для 16-битных весов или на 0,5 для 4-битных; калькулятор видеопамяти для LLM добавит KV-кэш.
- В моделях со смесью экспертов (MoE) в слое несколько блоков FFN; калькулятор считает один, поэтому умножьте строку FFN на число экспертов сами.