Словарь ИИ

Что такое квантизация в машинном обучении

Что такое квантизация в машинном обучении

Квантизация — это уменьшение точности чисел, с которыми работает модель. В контексте машинного обучения она обычно переводит веса и активации из форматов высокой точности, например FP32 или FP16, в более компактные представления вроде INT8 или INT4. Это снижает требования к памяти и вычислениям, но может добавить ошибку округления.

Содержание статьи

Зачем нужна квантизация

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

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

На практике квантизация применяется там, где важны скорость вывода, снижение потребления памяти и запуск модели на более слабом оборудовании. При этом цель обычно одна: сократить затраты без заметной потери качества ответа.

Что именно квантизируют в нейросети

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

Если говорить проще, модель постоянно перемножает и преобразует большие массивы чисел. Когда эти числа представлены в FP32, каждая операция требует больше памяти и ресурсов. Если часть вычислений перевести в INT8, нагрузка снижается.

Высокая точность вроде FP32 или FP16 ценится за более аккуратное представление значений. Но за это приходится платить объёмом памяти и временем вычислений. Квантизация сжимает числа до более узкого диапазона значений, поэтому некоторая точность теряется.

Как работает квантизация

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

Разница между форматами большая. У FP32 набор возможных значений очень широк, а у INT8 он сильно ограничен. У INT8 всего 256 возможных значений, обычно в диапазоне от -128 до 127 или от -127 до 127 в зависимости от схемы представления. Из-за этого вычисления с такими числами выполняются быстрее, но точность ниже.

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

Квантизация по абсолютному максимуму

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

Идея простая: если известно наибольшее по модулю число, можно растянуть весь диапазон так, чтобы он поместился в INT8. После этого каждое значение получает ближайшее целое представление. Метод понятный, но округление даёт потерю точности.

Если в данных есть редкие очень большие выбросы, они могут исказить масштаб. Тогда большая часть обычных значений займёт слишком узкий участок диапазона, и ошибка станет заметнее.

Аффинная квантизация

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

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

Этот подход полезен, когда данные распределены неравномерно. Он даёт более гибкое отображение, чем простая схема по абсолютному максимуму.

Почему важны выбросы

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

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

Какие бывают виды квантизации

Основные варианты — посттренировочная квантизация, квантизация с учётом обучения, а также динамическая и статическая схемы. Они отличаются тем, на каком этапе применяется метод и как выбираются диапазоны значений.

Посттренировочная квантизация

Посттренировочная квантизация, или PTQ, применяется к уже обученной модели. Она переводит параметры из вещественного представления в более компактный формат без повторного обучения.

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

Квантизация с учётом обучения

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

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

Динамическая и статическая квантизация

Разница между динамической и статической квантизацией связана с выбором диапазона значений для активаций. При динамической схеме диапазон вычисляется во время работы модели, а при статической задаётся заранее.

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

Какие форматы точности встречаются чаще всего

В машинном обучении часто встречаются FP32, FP16, INT8 и INT4. Чем ниже точность, тем меньше памяти нужно, но тем выше риск ошибки квантизации.

Формат Что означает Типичное применение
FP32 32-битное число с плавающей точкой Обучение и запуск моделей с высокой точностью
FP16 16-битное число с плавающей точкой Ускорение вычислений и снижение расхода памяти
INT8 8-битное целое число Частый формат для квантизированного вывода
INT4 4-битное целое число Более агрессивное сжатие с большим риском потери качества

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

Что даёт квантизация большим языковым моделям

Для больших языковых моделей квантизация обычно даёт две вещи: снижение вычислительной нагрузки и ускорение вывода. Это особенно важно там, где модель приходится запускать много раз подряд.

Когда модель отвечает на запрос, она выполняет большой объём матричных операций. Если числа представлены компактнее, обработка идёт быстрее. Одновременно уменьшается объём памяти, необходимый для хранения весов и промежуточных данных.

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

Какие ограничения и риски есть у квантизации

Главный риск квантизации — потеря точности. Чем сильнее сжимаются значения, тем выше вероятность, что модель начнёт хуже воспроизводить поведение исходной версии.

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

Есть и другой момент: разные методы квантизации требуют разного объёма ресурсов. PTQ обычно дешевле и проще, а QAT даёт больше контроля, но обходится дороже по вычислениям и по самому процессу подготовки модели.

Когда выбирают PTQ, а когда QAT

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

  • PTQ подходит для готовых моделей, когда важны скорость внедрения и меньшие затраты.
  • QAT подходит, когда есть данные и вычислительные ресурсы для обучения с учётом будущей квантизации.
  • PTQ проще в применении, но чаще даёт больший риск потери качества.
  • QAT обычно требует больше времени и инфраструктуры.

Как кратко понять квантизацию без формул

Если совсем коротко, квантизация — это перевод модели на более грубую числовую сетку. За счёт этого модель занимает меньше памяти и работает быстрее, но часть точности теряется.

Это похоже на сжатие изображения с уменьшением числа оттенков. Картинка остаётся узнаваемой, но мелкие переходы становятся менее точными. В нейросети происходит похожий обмен: компактность и скорость получают преимущество, а идеальная точность уходит на второй план.

Ключевые термины по теме

Ниже — короткие определения терминов, которые чаще всего встречаются рядом с квантизацией.

Вес модели — числовой параметр нейросети, полученный в процессе обучения и влияющий на итоговый ответ модели.

Активация — промежуточное значение, которое появляется в нейросети во время обработки входных данных.

FP32 — 32-битный формат чисел с плавающей точкой, который даёт высокую точность ценой больших вычислительных затрат.

INT8 — 8-битный целочисленный формат, часто используемый для ускорения вывода модели и уменьшения потребления памяти.

PTQ — посттренировочная квантизация уже обученной модели без повторного обучения.

QAT — квантизация с учётом обучения, при которой модель адаптируется к сниженной точности в ходе обучения или донастройки.