Parameters
parameters — числа, значения которых модель получает во время обучения
Параметры модели — обучаемые числа внутри матриц и других тензоров нейросети. Обучение меняет их по градиентам, checkpoint сохраняет найденные значения, а обычный inference применяет их к новым входам. Количество параметров влияет на размер и вычисления, но само по себе не измеряет качество или объём знаний.
Коротко
Параметры — числа, значения которых модель подбирает во время обучения. Чаще всего это веса матриц и смещения, но также параметры embeddings, нормализации и других обучаемых слоёв. После обучения значения сохраняются в checkpoint и при обычном inference остаются неизменными.
Когда в описании встречается 7B, буква B обычно означает billion — миллиард параметров, а не гигабайт. Размер файла зависит ещё и от формата чисел, квантизации, служебных данных и того, какие компоненты вошли в checkpoint.
Что именно называют параметром
На экране открыт файл весов. Внутри нет аккуратной папки «русский язык», отдельной ячейки «кошки» и готовых ответов на вопросы. Там лежат массивы чисел — тензоры с именами вроде layer.weight, bias, embedding или norm.weight.
В простом линейном узле вычисление можно записать так:
y = f(w₁x₁ + w₂x₂ + … + wₙxₙ + b)
Здесь x — входные значения, w — веса, b — смещение, а f — функция активации. Веса и смещение являются параметрами: обучение может менять их, чтобы уменьшить ошибку. Входы параметрами не являются — они приходят заново для каждого примера или запроса.
Современная сеть хранит параметры не по одному, а большими тензорами. У линейного слоя это матрица весов и, если он включён, вектор bias. У embedding-слоя — таблица представлений. У нормализации могут быть обучаемые scale и offset. Поэтому разговорное «параметры равны весам» удобно, но немного упрощает картину.
Как посчитать параметры слоя
Для полносвязного слоя с m входами и n выходами матрица весов имеет форму n × m. Если у каждого выхода есть bias, общее число параметров равно:
m × n + n
Например, слой 4 → 3 содержит 12 весов и 3 смещения — всего 15 параметров. Функция активации вроде ReLU сама по себе обычно ничего обучаемого не добавляет.
У таблицы embeddings размером vocabulary_size × hidden_size число параметров равно произведению этих величин. У свёртки учитываются число входных и выходных каналов, размер ядра, groups и наличие bias. У трансформера складываются embeddings, проекции attention, feed-forward блоки, нормализации и выходная голова.
Одной универсальной формулы «параметры трансформера» нет. Архитектуры различаются grouped-query attention, gated MLP, общими embeddings, bias и parameter sharing. Надёжнее считать реальные тензоры конкретной конфигурации, а не подставлять название семейства в приблизительную формулу.
Как обучение меняет числа
В начале параметры могут быть инициализированы случайно или загружены из базового checkpoint. Для batch данных модель делает предсказание, loss измеряет ошибку, а backpropagation вычисляет производную ошибки по каждому обучаемому параметру.
Optimizer использует градиенты и свои настройки, чтобы обновить значения. Сильно упрощённо один шаг выглядит так:
новый параметр = старый параметр − learning_rate × gradient
Реальные оптимизаторы могут хранить momentum, оценки дисперсии и применять weight decay. Но смысл остаётся тем же: данные не записываются в одну конкретную ячейку. Множество небольших обновлений перестраивает распределённые закономерности во многих тензорах.
После обучения checkpoint сохраняет найденное состояние. В обычном inference optimizer и backward pass не запускаются, поэтому параметры только читаются. Fine-tuning снова разрешает менять все или часть значений; parameter-efficient методы могут заморозить базу и обучать небольшой набор добавленных параметров.
Total, trainable, frozen и active
Одна фраза «в модели столько-то параметров» может скрывать несколько разных чисел.
- Total parameters — все учитываемые параметры модели.
- Trainable parameters — подмножество, для которого вычисляются градиенты и которое обновляет optimizer.
- Frozen parameters — сохранённые параметры, исключённые из обновления на данном этапе обучения.
- Active parameters — часть, реально участвующая в конкретном forward pass; термин особенно важен для sparse и Mixture-of-Experts архитектур.
У dense-модели total и active обычно близки: почти все основные матрицы используются на каждом проходе. У MoE маршрутизатор может выбрать лишь несколько экспертов, поэтому total описывает общую ёмкость, а active лучше отражает часть вычисления для одного элемента. При этом все эксперты всё равно нужно где-то хранить или подгружать.
Trainable — характеристика текущего режима обучения, а не вечное свойство тензора. Один и тот же слой можно сначала заморозить, затем разморозить. В TensorFlow/Keras и PyTorch параметры, trainable weights и persistent buffers учитываются разными механизмами, поэтому два отчёта стоит сравнивать только после проверки методики подсчёта.
Параметры, buffers и активации
Не каждое число в state_dict является параметром. Например, слой может хранить running mean и variance как persistent buffers. Они входят в состояние модели и сохраняются, но не обязательно оптимизируются градиентным спуском.
Активации — ещё один отдельный класс. Это промежуточные результаты для конкретного входа. Они появляются во время forward pass, зависят от batch, длины последовательности, разрешения и архитектуры, а затем освобождаются или временно сохраняются для backward pass.
Из-за этого одинаковое число параметров не гарантирует одинаковое потребление памяти. На inference к весам добавляются активации, временные тензоры и, у языковых моделей, KV cache. На training нужны также градиенты, optimizer states и сохранённые активации. Иногда именно они, а не checkpoint, вызывают out-of-memory.
Как число параметров связано с размером
Идеальный нижний предел для одних только значений можно оценить так:
размер = число параметров × бит на параметр ÷ 8
Один миллиард значений занимает примерно 4 ГБ в FP32, 2 ГБ в FP16 или BF16, 1 ГБ при 8 битах и 0,5 ГБ при 4 битах. Это ориентир, а не обещанный размер файла.
У квантизованного checkpoint дополнительно хранятся scales, zero points, таблицы и метаданные групп. В файл могут входить несколько компонентов, а часть параметров — оставаться в более высокой точности. Runtime добавляет собственные буферы и иногда преобразует веса при загрузке.
Квантизация меняет представление значений, но не обязана менять архитектурное число параметров. Модель всё ещё имеет те же позиции весов, просто кодирует их меньшим количеством бит и с некоторой потерей точности.
Пример на практике
Монтажёр собирает локального помощника для поиска по расшифровкам. В папке лежат два checkpoint одной архитектуры: исходный и квантизованный. Названия похожи, но размеры файлов заметно различаются.
Сначала он смотрит не только на суффикс в имени, а на четыре вещи: total parameters, dtype или схему quantization, реальный размер checkpoint и память процесса на контрольном запросе. К весам добавляет запас под KV cache и длинные фрагменты расшифровки. Так становится понятно, почему арифметика «параметры умножить на полбайта» даёт нижнюю границу, а не точный расход VRAM.
Затем монтажёр добавляет небольшой адаптер. Базовые веса остаются frozen, а trainable parameters находятся в отдельном файле. В ComfyUI или другом графовом интерфейсе рядом видны ещё десятки полей — seed, steps, temperature, сила адаптера. Это параметры запуска и workflow, но не параметры нейросети в смысле обученных тензоров.
С чем часто путают
- Параметры модели и гиперпараметры. Первые получает обучение; learning rate, batch size и многие настройки архитектуры задают процесс, который их ищет.
- Параметры модели и настройки inference. Temperature, seed, steps и CFG меняют запуск, но не переписывают сохранённые веса.
- Параметры и входы. Токены, пиксели и признаки приходят в модель; параметры определяют, как сеть их преобразует.
- Параметры и активации. Параметры сохраняются между запросами, активации вычисляются заново для конкретного входа.
- Параметры и buffers. Оба вида тензоров могут входить в checkpoint, но buffers не обязаны быть обучаемыми через optimizer.
- Количество параметров и размер файла. Число позиций и число бит на позицию — разные характеристики.
Частые ошибки и заблуждения
«Больше параметров всегда означает лучше»
Качество зависит от архитектуры, данных, цели обучения, вычислительного бюджета, оптимизации и самой задачи. Компактная специализированная модель может быть полезнее крупной универсальной.
«Каждый параметр хранит отдельный факт»
Представления распределены по множеству тензоров. Один вес обычно нельзя перевести в понятную подпись «этот отвечает за Париж» или «этот рисует глаза».
«7B — это файл на 7 ГБ»
Суффикс сообщает число параметров. Размер зависит от dtype, quantization, служебных коэффициентов, состава checkpoint и упаковки.
«Frozen-параметры исчезают из памяти»
Заморозка отключает их обновление, но значения всё равно нужны для forward pass. Она экономит память на градиентах и optimizer states, а не обязательно на самих весах.
«Квантизация удаляет часть параметров»
Обычно она снижает точность хранения тех же весов. Pruning и изменение архитектуры действительно могут убрать связи или тензоры, но это другой процесс.
«Total parameters достаточно для сравнения MoE»
Для sparse-модели дополнительно важны active parameters, схема маршрутизации, память всех экспертов и коммуникации между устройствами.
Связанные термины
- Weights — распространённое название обучаемых матриц и параметров модели.
- Training — процесс, который вычисляет градиенты и обновляет trainable parameters.
- Checkpoint — сохранённое состояние параметров и связанных тензоров.
- Gradient — чувствительность loss к небольшому изменению параметра.
- Optimizer — правило обновления параметров по градиентам и внутреннему состоянию.
- Hyperparameters — настройки архитектуры и процесса обучения.
- Fine-tuning — продолжение обучения всех или выбранных параметров готовой модели.
- LoRA — адаптер с небольшим набором обучаемых параметров рядом с замороженной базой.
- Quantization — хранение и вычисление параметров в более компактном числовом представлении.
- Mixture of Experts — архитектура, где total и active parameters могут заметно различаться.
Частые вопросы
Как узнать число параметров модели?
Самый надёжный способ — просуммировать число элементов всех уникальных parameter tensors в загруженной конфигурации. Документация и model card удобны, но стоит проверить, включают ли они embeddings, output head и не считают ли shared weights дважды.
Параметры и weights — одно и то же?
В разговоре почти всегда да. Строго говоря, weights — наиболее заметный вид параметров; кроме них встречаются bias, scale, offset и другие обучаемые тензоры.
Меняются ли параметры во время обычного чата с моделью?
Обычно нет. Меняются вход, контекст, KV cache и внешняя память приложения. Параметры изменяются только при отдельном обучении, online learning или специально реализованном обновлении.
Почему checkpoint меньше памяти процесса?
Процесс хранит не только веса: декодированные или переконвертированные тензоры, активации, KV cache, рабочие буферы и накладные расходы runtime.
Что означает trainable percentage?
Это доля параметров, которые обновляются в текущем запуске обучения. Маленькая доля характерна для адаптеров и частичной разморозки, но сама по себе не измеряет качество дообучения.
Можно ли сравнивать модели только по числу параметров?
Можно грубо оценить класс размера, но не качество, скорость и требования целиком. Нужны архитектура, dtype, active parameters, длина входа и результаты на вашей задаче.
Главное
Параметры — обученное числовое состояние модели. Архитектура задаёт, где лежат эти тензоры и как они участвуют в вычислении; данные, loss и optimizer формируют их значения. Checkpoint сохраняет результат, а inference применяет его к новым входам.
Количество параметров помогает оценить масштаб, нижнюю границу хранения и устройство обучения. Но это только одна координата. Для практического выбора рядом с ней нужны точность представления, active и trainable части, память runtime и качество на реальной задаче.