Ultralytics YOLO27: Вступи в список ожидания.
Лицензия YOLO
Назад к глоссарию Ultralytics

Model Quantization

Квантование модели хранит веса и активации с пониженной точностью, например INT8, чтобы уменьшить размер модели и ускорить инференс. Разбираем принцип работы, PTQ и QAT.

Квантование модели преобразует веса нейронной сети, а часто и её активации, из 32-битных чисел с плавающей точкой (FP32) в форматы с меньшей точностью, например 16-битные числа с плавающей точкой (FP16), 8-битные целые числа (INT8) или 4-битные целые числа. Для хранения и передачи каждого значения требуется меньше битов, а целочисленная арифметика на большинстве процессоров выполняется быстрее и потребляет меньше энергии. Модель INT8 в четыре раза меньше исходной модели FP32, что позволяет моделям обнаружения объектов работать в реальном времени на телефонах, камерах и других устройствах периферийного AI, а большим языковым моделям (LLMs) — помещаться на одном GPU.

Как работает квантование#

Квантование отображает диапазон вещественных чисел на небольшое множество целочисленных уровней. В распространённой аффинной схеме каждое число с плавающей точкой x хранится как целое число q = round(x / scale) + zero_point и восстанавливается по формуле x ≈ (q - zero_point) × scale. Масштаб задаёт шаг между уровнями, а нулевая точка обеспечивает точное отображение значения 0 в целое число. Для INT8 доступны 256 уровней, поэтому диапазон нужно выбирать тщательно: слишком широкий диапазон расходует уровни на значения, которые никогда не встречаются, а слишком узкий обрезает выбросы. Веса известны заранее, поэтому их диапазоны можно получить непосредственно из обученной модели; часто они вычисляются отдельно для каждого выходного канала. Активации зависят от входных данных, поэтому их диапазоны измеряют во время калибровки, пропуская через модель небольшой набор репрезентативных изображений или текстовых примеров.

import numpy as np

rng = np.random.default_rng(0)
weights = rng.normal(0, 0.05, size=1000).astype(np.float32)

# Affine INT8 quantization maps the observed float range onto 256 integer levels
scale = (weights.max() - weights.min()) / 255
zero_point = np.round(-128 - weights.min() / scale)
q = np.clip(np.round(weights / scale + zero_point), -128, 127).astype(np.int8)

# Dequantize to measure the rounding error the model has to tolerate
restored = (q.astype(np.float32) - zero_point) * scale
print(f"Size: {weights.nbytes} -> {q.nbytes} bytes")
print(f"Max error: {np.abs(weights - restored).max():.5f} (half a step: {scale / 2:.5f})")

Выводится Size: 4000 -> 1000 bytes и максимальная ошибка 0.00068, равная половине шага квантования. Размер весов уменьшается в четыре раза, и ни одно значение не отклоняется от исходного больше чем на половину шага.

Посттренировочное квантование и обучение с учётом квантования#

  • Посттренировочное квантование (PTQ): преобразует уже обученную модель, используя небольшой калибровочный набор для задания диапазонов активаций. Процесс занимает несколько минут, и для него не нужны обучающие данные помимо этих примеров. Динамическое квантование — разновидность PTQ, при которой диапазоны активаций вычисляются на лету во время инференса; при квантовании только весов активации остаются в формате с плавающей точкой.
  • Обучение с учётом квантования (QAT): имитирует квантование во время обучения или дообучения, округляя значения при прямом проходе, чтобы веса научились переносить такое округление. Это позволяет восстановить большую часть точности, теряемой при PTQ, ценой дополнительных затрат на обучение.

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

Для LLM разработаны собственные методы. Схемы квантования только весов до 4 бит, например GPTQ и AWQ, сжимают миллиарды параметров, оставляя активации 16-битными; формат GGUF хранит квантованные модели для локального инференса, а современные GPU выполняют вычисления непосредственно в форматах с плавающей точкой низкой точности, например FP8.

  • Смешанная точность: метод обучения, при котором большинство операций выполняется в FP16 или BF16, а основная копия весов хранится в FP32, чтобы ускорить обучение. Квантование предназначено для инференса и снижает точность ещё сильнее, часто до целых чисел.
  • Прунинг модели: удаляет веса или целые каналы, чтобы сократить число операций; его часто сочетают с квантованием, которое удешевляет каждую оставшуюся операцию.
  • Дистилляция знаний: обучает небольшую модель-ученика имитировать большую модель-учителя. Перед развёртыванием модель-ученика часто дополнительно квантируют.

Квантование на практике#

Ускорение зависит от поддержки со стороны аппаратного обеспечения: модель INT8 работает быстрее только на процессорах с ядрами INT8, например на GPU NVIDIA с TensorRT, CPU Intel с OpenVINO и нейронных процессорах (NPUs) в телефонах. Ultralytics YOLO26 применяет PTQ при экспорте с помощью quantize=8, калибруя модель на изображениях из набора данных data, а model.train(quantize=8) вместо этого дообучает модель из контрольной точки с помощью QAT. В этом примере модель INT8 экспортируется для LiteRT — среды выполнения Google для Android и встраиваемых устройств:

from ultralytics import YOLO

# Загрузи предварительно обученную nano-модель YOLO26
model = YOLO("yolo26n.pt")

# Посттренировочное квантование INT8; изображения из coco8.yaml используются для калибровки диапазонов активаций
model.export(format="litert", quantize=8, data="coco8.yaml")

При измерении на COCO с использованием TensorRT PTQ INT8 снижает mAP50-95 модели YOLO26n лишь с 0.403 до 0.393, но сильнее влияет на YOLO26s: показатель падает с 0.479 до 0.441, а после QAT восстанавливается до 0.471.

Изучи решения

Компьютерное зрение в спорте

Компьютерное зрение в спорте

Узнай, как Ultralytics YOLO обеспечивает компьютерное зрение в спорте: отслеживание игроков и мяча, аналитика результатов, полезные выводы для тренеров и реабилитация спортсменов.
Подробнее
Компьютерное зрение для аэросъёмки

Компьютерное зрение для аэросъёмки

Превращай снимки с дронов и аэрофотоснимки в полезные данные в реальном времени для сельского хозяйства, аквакультуры, охраны природы и геопространственного анализа с Ultralytics YOLO.
Подробнее
Компьютерное зрение в аэрокосмической отрасли

Компьютерное зрение в аэрокосмической отрасли

Применяй компьютерное зрение в аэрокосмической отрасли с Ultralytics YOLO: для осмотра самолётов, обнаружения посторонних предметов на взлётно-посадочных полосах, наземного обслуживания аэропортов и выявления дефектов композитных материалов.
Подробнее
Компьютерное зрение в сфере безопасности

Компьютерное зрение в сфере безопасности

Защити любой объект с помощью моделей Ultralytics YOLO. ИИ на базе компьютерного зрения обеспечивает мониторинг периметра, обнаружение угроз, распознавание номерных знаков и безопасность на рабочем месте.
Подробнее
Компьютерное зрение в робототехнике

Компьютерное зрение в робототехнике

Создавай более интеллектуальные машины с моделями Ultralytics YOLO. ИИ на базе компьютерного зрения в робототехнике обеспечивает автономную навигацию, восприятие, отслеживание объектов и управление в реальном времени.
Подробнее
Компьютерное зрение в логистике

Компьютерное зрение в логистике

Оптимизируй логистику с моделями Ultralytics YOLO. Визуальный AI обеспечивает проверку посылок, сортировку, отслеживание транспорта и мониторинг безопасности на складе в реальном времени.
Подробнее
Компьютерное зрение в розничной торговле

Компьютерное зрение в розничной торговле

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

Компьютерное зрение в здравоохранении

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

Компьютерное зрение в производстве

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

Компьютерное зрение в автомобильной отрасли

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

Компьютерное зрение в сельском хозяйстве

Внедряй ИИ для компьютерного зрения в умное сельское хозяйство с моделями Ultralytics YOLO. Используй их для мониторинга посевов, отслеживания скота и точного земледелия, чтобы повысить урожайность и эффективность.
Подробнее

Давай вместе строить будущее ИИ!

Начни свой путь в будущее машинного обучения