Transformers documentation

AutoRound

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.2).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

AutoRound

AutoRound — это продвинутый алгоритм квантования, обеспечивающий высокую точность даже при 2-битном разрешении. Он использует градиентный спуск по знакам для тонкой настройки значений округления и порогов обрезки min-max всего за 200 шагов. Алгоритм разработан для широкой совместимости: он бесшовно поддерживает широкий спектр LLM и активно расширяется, чтобы охватывать всё больше VLM. Также поддерживаются квантование и инференс на различных аппаратных платформах, включая CPU, XPU и CUDA.

AutoRound также предлагает ряд полезных функций, включая автоматическую настройку и инференс с использованием смешанной разрядности, поддержку типов данных MXFP4 и NVFP4, квантование без модели, экспорт в форматы, такие как GPTQ, AWQ, GGUF и LLM-Compressor, а также гибкие рецепты настройки. Для получения подробного обзора и последних обновлений ознакомьтесь с README AutoRound.

AutoRound изначально разрабатывался как часть Intel Neural Compressor и служил универсальной библиотекой сжатия моделей для глубокого обучения. Со временем он превратился в автономную библиотеку, сфокусированную на оптимизации с низкой точностью для больших языковых моделей (LLM). AutoRound по-прежнему полностью интегрирован с Intel Neural Compressor, и вы можете ознакомиться с репозиторием, чтобы узнать больше.

Установка

pip install auto-round

Поддерживаемые конфигурации квантования

AutoRound поддерживает следующие конфигурации квантования:

  1. INT2–INT8 Weight-Only
  2. Смешанная разрядность только для весов
  3. GGUF Q*_K
  4. MXFP (ограниченная поддержка)
  5. NVFP4 (ограниченная поддержка)

Совместимость с оборудованием

CPU, XPU и CUDA как для квантования, так и для инференса.

Квантование и сериализация (офлайн)

В настоящее время для генерации квантованных моделей поддерживается только офлайн-режим.

quantization cmd
auto scheme cmd
комбинации alg
quantization auto-round api
quantization auto-round-best
quantization auto-round-light

Использование командной строки

auto-round \
    --model Qwen/Qwen3-0.6B \
    --scheme "W4A16" \
    --group_size 128 \
    --output_dir ./tmp_autoround

AutoRound также предлагает ещё четыре рецепта: auto-round-best, auto-round-light, auto-round-opt-rtn, auto-round-rtn, предназначенные для оптимальной точности и повышенной скорости соответственно. Для 2 бит мы рекомендуем использовать auto-round-best с --enable_alg_ext.

Средняя точность W4G128 по 13 задачам (mmlu-pro, if_eval, gsm8k и др.) и результаты по времени (тестирование проводилось на Nvidia A100 80G с использованием версии PyTorch 2.6.0 с включенным enable_torch_compile):

МодельQwen2.5-0.5B-InstructFalcon3-3BQwen2.5-7B-InstructMeta-Llama-3.1-8B-InstructFalcon3-10BQwen2.5-72B-Instruct
16bits0.41920.52030.64700.62120.61510.7229
Лучший0.4137(7m)0.5142(23m)0.6426(58m)0.6116(65m)0.6092(81m)0.7242(575m)
По умолчанию0.4129(2m)0.5133(6m)0.6441(13m)0.6106(13m)0.6080(18m)0.7252(118m)
Светлый0.4052(2m)0.5108(3m)0.6453(5m)0.6104(6m)0.6063(6m)0.7243(37m)

Вывод

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

inference cpu
inference xpu
inference cuda
бэкенд инференса
конвертация формата

CPU

Поддерживаются 2, 4 и 8 бит. Для инференса рекомендуем использовать бэкенд AutoRound Kernel (ARK). Для работы с ARK требуется PyTorch 2.8.0 или более поздняя версия.

from transformers import AutoModelForCausalLM, AutoTokenizer

model_name = "OPEA/Qwen2.5-1.5B-Instruct-int4-sym-inc"
model = AutoModelForCausalLM.from_pretrained(model_name, device_map="cpu", dtype="auto")
tokenizer = AutoTokenizer.from_pretrained(model_name)
text = "There is a girl who likes adventure,"
inputs = tokenizer(text, return_tensors="pt").to(model.device)
print(tokenizer.decode(model.generate(**inputs, max_new_tokens=50, do_sample=False)[0]))

Проблемы

Если вы столкнётесь с какими-либо проблемами в интеграции с transformers, пожалуйста, создайте issue в репозитории transformers.
Если вы столкнётесь с какими-либо проблемами в auto-round, пожалуйста, создайте issue в репозитории AutoRound.

Благодарности

Особая благодарность открытым библиотекам с поддержкой низкого уровня точности, таким как AutoGPTQ, AutoAWQ, GPTQModel, Triton, Marlin и ExLLaMAV2, за предоставление CUDA-ядер с низкой точностью, которые используются в AutoRound.

Вклад

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

Update on GitHub