VPTQ: экстремальное квантование векторов LLM с низким битрейтом от Microsoft

МЕНЮ


Главная страница
Поиск
Регистрация на сайте
Помощь проекту
Архив новостей

ТЕМЫ


Новости ИИРазработка ИИВнедрение ИИРабота разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика

Авторизация



RSS


RSS новости


Vector Post-Training Quantization (VPTQ) - экспериментальный метод, который использует векторное квантование LLM c сохранением высокой точности при сверхнизкой битовой ширине (<2 бит).

VPTQ позволяет сжать 70B до 1-2 бит без переобучения и запустить ее на потребительской 4090.

VPTQ использует технику оптимизации второго порядка для векторного квантования в LLM. Ключевым алгоритмом VPTQ является "Channel-Independent Second-Order Optimization" - квантование каждого столбца матрицы весов независимо и использование взвешенной по матрице Гессе инициализации центроидов.

Оптимизация в VPTQ состоит из применения взвешенных К-средних для центроидов, остаточного векторного квантования (RVQ) в качестве балансировщика ошибки и исключения выбросов в весах для повышения точности .

Эксперименты на моделях LLaMA-2, LLaMA-3 и Mistral-7B показали, что в сравнении с существующими методами, VPTQ обеспечивает сопоставимую или более высокую точность при 2-битном квантовании, уменьшая перплексию на 0.01-0.34, 0.38-0.68 и 4.41-7.34 соответственно.

VPTQ отличается низкими вычислительными затратами процесса квантования (10.4-18.6% от времени аналогичных алгоритмов) и высокой пропускной способностью при инференсе (в 1.6-1.8 раза выше, чем у SOTA)

В сообществе VPTQ на Huggingface (https://huggingface.co/VPTQ-community) выложена 41 модель в разрядностях VPTQ-квантования от 1.375 до 4 bits:

Llama 3.1 Instruct (8B (https://huggingface.co/collections/VPTQ-community/vptq-llama-31-8b-instruct-without-finetune-66f2b70b1d002ceedef02d2e), 70B (https://huggingface.co/collections/VPTQ-community/vptq-llama-31-70b-instruct-without-finetune-66f2bf454d3dd78dfee2ff11) и 405B (https://huggingface.co/collections/VPTQ-community/vptq-llama-31-405b-instruct-without-finetune-66f4413f9ba55e1a9e52cfb0));

Qwen 2.5 Instruct (7B (https://huggingface.co/collections/VPTQ-community/vptq-qwen-25-7b-instruct-without-finetune-66f3e9866d3167cc05ce954a), 14B (https://huggingface.co/collections/VPTQ-community/vptq-qwen-25-14b-instruct-without-finetune-66f827f83c7ffa7931b8376c) и 72B (https://huggingface.co/collections/VPTQ-community/vptq-qwen-25-72b-instruct-without-finetune-66f3bf1b3757dfa1ecb481c0)) .

Посчитать битность и размер модели по названию на примере Meta-Llama-3.1-70B-Instruct-v8-k65536-256-woft:

v8 - длина вектора, равная 8

k65536 - количество центроидов (2^16)

256 - количество остаточных центроидов (2^8)

woft - маркировка without finetune, в расчете не участвует.

Расчет итоговой битности: индекс: log2(65536) = 16 / 8 = 2 bits, остаточный индекс: log2(256) = 8 / 8 = 1 bit, итоговое значение 2 bits+1 bit, = 3 bits.

Расчет размера модели (без учета codebook): 70B * 3 bits / 8 bits = 26.25 GB.

Локальная установка и примеры инференса в разных режимах:

  

# Set up CUDA PATH:

export PATH=/usr/local/cuda-12/bin/:$PATH

# Clone repo:

pip install git+https://github.com/microsoft/VPTQ.git —no-build-isolation

# Simple generation:

python -m vptq —model=VPTQ-community/Meta-Llama-3.1-70B-Instruct-v8-k65536-0-woft —prompt="..."

# Chatbot example:

python -m vptq —model=VPTQ-community/Meta-Llama-3.1-70B-Instruct-v8-k65536-0-woft —chat

# Gradio Web App

python -m vptq.app

Лицензирование кода : MIT License.

Лицензирование моделей: cогласно родительской модели.

Коллекция моделей на HF (https://huggingface.co/collections/VPTQ-community/vptq-llama-31-70b-instruct-without-finetune-66f2bf454d3dd78dfee2ff11)

Arxiv (https://arxiv.org/pdf/2409.17066)

Сообщество в HF (https://huggingface.co/VPTQ-community)

GitHub (https://github.com/microsoft/vptq)


Источник: github.com

Комментарии: