Мы с коллегами из Yandex Research сделали новый метод квантизации LLM’ок -
AQLM. Он позволяет сжимать модели вплоть до 2 бит на параметр, что открывает тонну возможностей от запуска
Llama 2 70b на
RTX 3090 до, потенциально, меньших моделей на мобилках. Статья доступна на
arXiv, код лежит на
GitHub.
Про качество: AQLM бьет по качеству все существующие методы в диапазоне 2-3 бит на параметр:
AQLM 2 бита лучше чем
QuIP# 2 бита и даже мощнее
GPTQ 3 бита.
Про готовые модели: мы выложили готовые квантизованные модели на хаб. Лламы от 7b до 70b и Mixtral в разных конфигурациях. Для быстрого инференса мы написали несколько кернелов на
CUDA,
Triton и
Numba. Они оптимизированы под различные сетапы квантизации, и либо немного уступают, либо заметно превосходят
fp16 по скорости генерации.
Про использование: весь продвинутый код инференса завернут в одну либу, и устанавливается просто через pip install aqlm. После этого можно смело подгружать любые модели с хаба через .from_pretrained(..., trust_remote_code=True), и оптимальные кернелы будут выбираться и компилироваться на ходу за кулисами.
Про метод: мы применяем квантизацию групп соседних весов для эффективного использования их взаимной информации. Более конкретно, мы представляем все блоки весов (размером около 1x8) в матрице суммой некоторого количества векторов из небольшого обучаемого списка (
Additive Quantization). Детали и бэкграунд подробно описаны в статье.