Варианты, форматы и квантизация LLM с открытыми весами

Автоматический перевод Эта статья была автоматически переведена с оригинальной английской версии.

Названия вроде Model-32B-A3B-Instruct-AWQ выглядят перегруженными, потому что объединяют несколько независимых решений: семейство и размер, архитектуру, роль в обучении и квантизацию. Репозиторий может поставлять эти веса в виде шардированных файлов Safetensors, тогда как конверсия того же чекпоинта от сообщества может выглядеть как Q4_K_M.gguf.

Эти обозначения относятся к разным категориям: GPTQ и AWQ — методы квантизации, GGUF — контейнер и экосистема рантаймов, а MoE — архитектура. Если рассматривать эти уровни отдельно, выбрать подходящий вариант для скачивания проще.

Выбирая между загрузкой Q4_K_M.gguf для локального инференса и репозиторием AWQ Safetensors для сервинга на GPU, начните с поведения чекпоинта и архитектуры, необходимых вашей задаче. Затем убедитесь, что числовое представление, структура пакета и целевой рантайм соответствуют доступному железу, памяти и ограничениям сервинга.

Кратко. Выбирайте чекпоинт по качеству на задаче, лицензии, языкам, контексту и поведению интерфейса. Затем выбирайте рантайм, поддерживающий его архитектуру. И только после этого — представление весов и квантизацию, соответствующие измеренным требованиям к памяти и латентности. GPTQ и AWQ — методы квантизации, Safetensors и GGUF — контейнеры, а MoE — архитектура. Метка MoE не означает, что все веса поместятся в память, рассчитанную только на «активные параметры».

Для выбора компактного варианта деплоя см. Форматы квантизации LLM.

Читайте артефакт модели на шести уровнях

Шесть независимых уровней артефакта модели с открытыми весамиШесть независимых уровней артефакта модели с открытыми весами

УровеньПримерНа какой вопрос отвечает
Семейство и ревизияModel-3.1, хэш коммитаКакие веса и контракт токенизатора?
Роль в обученииBase, Instruct, reasoning-tunedКакое поведение оптимизировалось?
АрхитектураDense, MoE, общее и активное число параметровКакие ядра и раскладка памяти требуются?
Числовое представлениеBF16, FP8, GPTQ 4-bit, AWQ 4-bitКак представлены или квантизованы тензоры?
Контейнер и раскладкаШарды Safetensors, GGUFКак упакованы тензоры и метаданные?
РантаймTransformers, vLLM, llama.cppКакой загрузчик и аппаратный путь выполняют модель?

Происхождение обучения дополняет эти уровни, а не образует ещё один уровень артефакта. Например, distilled описывает способ переноса поведения, а не роль чекпоинта. Чекпоинт одновременно может быть дистиллированным, дообученным на инструкциях, дообученным на задачах ризонинга и построенным по архитектуре MoE.

Метка «open-source» требует отдельной проверки. Если опубликованы только доступные для скачивания веса, не следует автоматически считать, что лицензия соответствует определению open-source или разрешает ваш сценарий использования. До сравнения архитектур и бенчмарков прочитайте карточку модели и лицензию.

Метки роли в обучении описывают поведение, а не гарантии возможностей

Base

Базовый чекпоинт обучается преимущественно на предсказание следующего токена. Он подходит для продолжения претрейнинга, контролируемых исследований или адаптации, когда вы хотите самостоятельно определить поведение при следовании инструкциям. Такая модель может продолжать промпт, а не отвечать на него.

Не предполагаёте, что каждый файн-тюнинг нужно начинать с base. Чекпоинт instruct может быть лучшей инициализацией, если его исходное поведение соответствует целевому. С помощью эвалов убедитесь, что это поведение не конфликтует с новой целью.

Instruct или chat

Такие чекпоинты проходят пост-трейнинг, направленный на улучшение следования инструкциям и ведения диалога. Конкретный рецепт может включать supervised fine-tuning, оптимизацию предпочтений, обучение с подкреплением, дистилляцию или их комбинацию. Это не обязательно supervised fine-tuning с последующим RLHF.

Используйте instruct-чекпоинт как исходный baseline ассистента. Проверьте его chat template, поддерживаемый формат tool call, поведение system message и характеристики отказов. Одна лишь метка «Instruct» не гарантирует надёжный JSON или tool use.

Reasoning-tuned

Чекпоинты, ориентированные на ризонинг, оптимизируются на задачах или траекториях, поощряющих многошаговое решение проблем. Некоторые выводят текст рассуждений, некоторые отделяют его через парсер сервинга, а некоторые показывают только ответ. Более длинная генерация не гарантирует ни достоверности рассуждений, ни меньшего числа галлюцинаций.

Выбирайте такую модель, если после учёта числа выходных токенов, латентности и верификации она улучшает сложные срезы эвалов. Рутинные задачи извлечения или классификации могут стать медленнее, не став при этом лучше.

Distilled

Дистилляция переносит поведение учителя или данные, сгенерированные учителем, в другую модель. Студенческая модель может быть меньше, того же размера или структурно отличаться. Универсального правила «70–80% качества при половине размера» не существует: сохранённое качество зависит от учителя, данных, цели, ёмкости студента и эвалуации.

Рассматривайте Distill как сведения о происхождении обучения, а затем бенчмаркайте эту модель как любой другой чекпоинт.

Какая метка должна влиять на каждый этап выбора? Эта схема разделяет роль в обучении, происхождение обучения и архитектуру. Она не ранжирует типы моделей.

Схема выбора, разделяющая роль в обучении, происхождение обучения и архитектуруСхема выбора, разделяющая роль в обучении, происхождение обучения и архитектуру

В документации Transformers по chat template объясняется, почему точный формат сообщений важен для модели, дообученной на инструкциях. В оригинальной статье о knowledge distillation Хинтон, Виньялс и Дин переносят поведение в студенческую модель, не заявляя фиксированного соотношения качества. Статья о Switch Transformer описывает один из вариантов разреженной маршрутизации по экспертам. Конкретное семейство MoE может маршрутизировать токены иначе, поэтому определяющей остаётся карточка модели.

Метки архитектуры описывают выполнение

Плотные модели

Большинство параметров участвует в прямом проходе для каждого токена. Число параметров приблизительно показывает объём хранения весов. Память рантайма также включает KV cache, активации или рабочую область, накладные расходы аллокатора, а иногда дублированное или шардированное состояние.

Mixture of Experts

Слой MoE направляет каждый токен в подмножество экспертных feed-forward-сетей. Названия вроде A3B часто означают, что на один токен активно примерно три миллиарда параметров, но соглашения об именовании зависят от семейства. В карточке модели проверьте общее и активное число параметров, количество экспертов и схему маршрутизации.

Число активных параметров описывает вычисления после маршрутизации, а не размещение весов. Например, expert parallelism в vLLM распределяет экспертные слои между рангами expert parallelism и вычисляет распределение экспертов для каждого ранга на основе их общего числа. Другие рантаймы могут размещать веса или выгружать их иначе. Поэтому модель с 30B общих и 3B активных параметров не обязательно помещается как плотная модель на 3B.

Поддержка рантаймом также зависит от архитектуры. До скачивания проверьте реализацию модели, поддержку expert parallelism или tensor parallelism, ядер квантизации и максимального контекста.

Контейнеры и квантизация — разные уровни

Safetensors

Safetensors — безопасный формат сериализации тензоров, который часто используется в репозиториях Hugging Face. Модель может состоять из нескольких шардов .safetensors, а также конфигурации, токенизатора и файлов генерации. Эти тензоры могут быть в BF16/FP16 или предварительно квантизованы методом вроде GPTQ или AWQ.

Одно только расширение не сообщает ни о точности, ни о совместимости с рантаймом. Проверьте config.json, конфигурацию квантизации, карточку модели, dtype тензоров и документацию рантайма.

GGUF

GGUF упаковывает тензоры и метаданные для экосистемы ggml/llama.cpp. llama.cpp загружает GGUF и поддерживает бэкенды, включая Metal, CUDA, HIP, Vulkan и пути выполнения на CPU. Совместимость всё равно определяется архитектурой модели и качеством конверсии.

GGUF — это контейнер. Он может содержать тензоры высокой точности или квантизованные тензоры. Для мультимодальных моделей также могут потребоваться отдельные файлы проектора или энкодера. Правило «один файл GGUF содержит всё» универсальным не является.

GPTQ и AWQ

GPTQ и AWQ — методы квантизации весов после обучения, а не расширения файлов. Их артефакты обычно состоят из Safetensors и конфигурации, специфичной для метода. Движкам сервинга нужны ядра, совместимые с методом, разрядностью, размером группы, архитектурой модели и аппаратным обеспечением.

Ни один из методов не является универсально лучшим по качеству. Имеют значение калибровочные данные, реализация, путь выполнения ядра и задача. Поддержка рантаймов меняется, поэтому проверяйте конкретный артефакт для зафиксированной версии. Рядом с этим решением изучите официальные страницы квантизации Transformers и квантизации vLLM.

Одно только железо не позволяет выбрать контейнер. Сначала выберите рантайм, поддерживающий архитектуру и интерфейс сервинга. Затем используйте структуру артефакта и путь квантизации, документированные этим рантаймом.

Схема выбора контейнера модели и пути квантизации с приоритетом рантаймаСхема выбора контейнера модели и пути квантизации с приоритетом рантайма

Например, проект llama.cpp требует GGUF и документирует несколько аппаратных бэкендов. Спецификация GGUF определяет контейнер для тензоров и метаданных. Transformers, напротив, загружает методы квантизации через конфигурацию, специфичную для бэкенда, как описано в его workflow квантизации. Ни один из этих источников не обещает, что подходящее расширение поддерживает любую архитектуру или хорошо работает на любом устройстве.

Математика квантизации задаёт нижнюю границу, а не планирование ёмкости

Для PP параметров весов с разрядностью bb необработанный объём хранения весов составляет примерно:

weight bytesP×b8\text{weight bytes} \approx \frac{P \times b}{8}

Модель на 13B с номинально четырёхбитными весами поэтому изначально занимает около 6,5 ГБ. Но это не означает, что она запустится в 6,5 ГБ. Память дополнительно расходуется на масштабы, zero points, тензоры с более высокой точностью, эмбеддинги, метаданные, буферы рантайма, KV cache и фрагментацию.

Контекст и конкурентность могут определять разницу между «загружается» и «обслуживает запросы». Измеряйте пиковое потребление памяти с реальной максимальной длиной последовательности, политикой батчинга, dtype кэша и параллелизмом.

Квантизация может уменьшить потребление памяти и иногда ускорить работу, но low-bit-ядра на неподдерживаемом железе могут оказаться медленнее. Сравнивайте качество на задаче и сквозной throughput, а не только размер файла. Специфичные для рантайма рецепты см. в руководстве по квантизации llama.cpp.

Внимательно расшифровывайте названия квантизации GGUF

В llama.cpp Q4_K_M обозначает рецепт квантизации на уровне файла, а не один тип тензоров, применённый повсюду. В вариантах llama-quantize Q4_K_M представлен как выбираемый тип, а --pure описан как отключение K-quant-миксов. В реализации квантизатора Q4_K используется как тип по умолчанию для этого рецепта, а к некоторым категориям тензоров применяются другие типы. Считайте суффикс названием рецепта llama.cpp, а не переносимой спецификацией разрядности.

Актуальная документация по квантизации llama.cpp также показывает, что рецепты могут различаться в зависимости от архитектуры и категории тензора. Матрица важности может определять, какие веса сохраняют более высокую точность.

Избегайте универсальных утверждений, будто Q4_K_M неотличим от BF16 или что большая модель Q3 всегда превосходит меньшую модель Q8. Для конкретного чекпоинта используйте небольшой ряд:

  1. артефакт высокой точности или проверенный эталонный артефакт
  2. один кандидат, близкий к ограничению по памяти
  3. один кандидат меньшего размера с большим запасом

Прогоните на всех трёх одинаковые промпты, проверки structured output, сценарии с длинным контекстом и тест латентности.

Процесс выбора, устойчивый к появлению новых форматов

Процесс выбора чекпоинта, рантайма и квантизацииПроцесс выбора чекпоинта, рантайма и квантизации

1. Зафиксируйте контракт задачи

Определите язык, модальность, длину контекста, интерфейс инструментов или схемы, ограничения безопасности, требования к лицензии и срезы эвалуации. Сравнивайте чекпоинты в представлении, достаточно точном для того, чтобы квантизация не определяла первый раунд.

2. Выберите чекпоинт

Выберите самый маленький чекпоинт, который проходит обязательные пороги качества и поведения. Зафиксируйте точный репозиторий и ревизию, токенизатор, chat template и необходимый парсер reasoning.

3. Выберите рантайм

Проверьте поддержку архитектуры, аппаратный бэкенд, параллелизм, ядра квантизации, structured output, адаптеры и операционный интерфейс. Для локального инференса GGUF эталонным рантаймом является llama.cpp. Для сервинга на GPU сравните актуальные vLLM, TGI, Transformers или специализированные движки с учётом конкретного артефакта.

4. Составьте измеренный бюджет памяти

Учтите веса, KV cache, рабочую область рантайма, ожидаемую конкурентность и запас для операционной системы или соседних процессов. То, что файл помещается в RAM или VRAM, необходимо, но недостаточно.

5. Выберите и проверьте представление

Предпочитайте артефакты от издателя с документированными калибровкой и происхождением. Если используете конверсию от сообщества, зафиксируйте исходную ревизию, ревизию конвертера, рецепт квантизации, калибровочные данные или данные важности и хэши.

6. Бенчмаркайте единицу релиза

Измеряйте качество на задаче, корректность schema/tool call, время до первого токена, throughput генерации, пиковое потребление памяти и ошибки при целевых контексте и конкурентности. Повторяйте измерения после изменения любого чекпоинта, рантайма, ядра или настройки квантизации.

Разбор названия на примере

Предположим, репозиторий называется:

Acme-32B-A3B-Instruct-AWQ

Разберите это название как набор вопросов:

  • Acme: какое семейство, лицензия и ревизия?
  • 32B: общий объём весов или другое соглашение издателя?
  • A3B: как это семейство определяет активные параметры?
  • Instruct: какой рецепт пост-трейнинга и chat template?
  • AWQ: какая разрядность, размер группы, калибровка и поддерживаемые ядра?
  • файлы репозитория: шарды Safetensors, конфигурации, токенизатор и кастомный код?
  • целевой рантайм: поддерживает ли зафиксированная версия именно эту архитектуру и квантизацию?

Название — это указатель на документацию, а не полная спецификация деплоя.

Заключение

Выбор модели становится понятнее, когда метки перестают смешивать разные категории. Роль в обучении показывает, какое поведение оптимизировалось. Архитектура показывает, как организованы вычисления. Квантизация описывает приближение некоторых тензоров, контейнеры — хранение артефактов, а рантаймы — что эффективно выполняется на вашем железе.

Выбирайте в таком порядке, сохраняйте точное происхождение и сравнивайте релизные артефакты на одной и той же задаче. Знакомый суффикс не доказывает, что модель поместится, будет работать быстро или сохранит нужное вам поведение.

Ссылки