Где первый член - это дважды квантованный вес, а второй - низкоранговая добавка. Double dequant - расквантование скейлов с последующим расквантованием весов.
4) Отдельного упоминания и уважения заслуживает валидация их модели и конкуретных на ряде бенчмарков.
Сначала авторы демонстрируют, что при finetuning, QLoRA имеет примерно такое же качество, как и дообучение всей модели и LoRA для модели с весами с плавающей точкой (без квантования).
Сначала авторы демонстрируют, что при finetuning, QLoRA имеет примерно такое же качество, как и дообучение всей модели и LoRA для модели с весами с плавающей точкой (без квантования).
Далее авторы дообучают квантованную сеть на различных датасетах, и замеряют качество работы на бенчмарках, тестирующих language understanding и качество ответов модели на чатбот-бенчмарках, замеренное с помощью GPT-4 и человеками. Среди датасетов берутся доступные публично данные:
- Self-Instruct
- Longform
- Chip2
- HH-RLHF
- Unnatural Instruct
- OASST1 (и конечная модель Guanaco обучается именно на нем)
- Alpaca
- Flan v2
- Self-Instruct
- Longform
- Chip2
- HH-RLHF
- Unnatural Instruct
- OASST1 (и конечная модель Guanaco обучается именно на нем)
- Alpaca
- Flan v2
Для замеров способности модели понимать языки используется стандартный MMLU бенчмарк. При обучении на датасете FLAN v2 (здоровенная смесь из множества разнообразных задач на инструкции) конечная модель выдает наилучшее качество (вероятно из-за количества данных и их структуры).
Потом авторы проводят замеры на Vicuna Benchmark (наборе инструкций) против ChatGPT используя в качестве арбитра GPT4. В этом случае небольшой OASST1 оказывается наилучшим для instruction finetuning. Самая большая модель практически сравнивается по качеству с ChatGPT.
Однако делается примечание, что разброс довольно существеннен от запуска к запуски и ранжирование у GPT-4 и людей не всегда совпадает, хоть корреляция и существенна.
Далее качество работы оценивается на запросах из Vicuna и OpenAssistant с агреграцией оценок через Elo Score (методики, придуманной для шамхатных турниров) уже непосредственно “кожаными мешками”. И версии Guanaco-{33B,65B} опережают конкуретные open-source модели и ChatGPT.
Далее качество работы оценивается на запросах из Vicuna и OpenAssistant с агреграцией оценок через Elo Score (методики, придуманной для шамхатных турниров) уже непосредственно “кожаными мешками”. И версии Guanaco-{33B,65B} опережают конкуретные open-source модели и ChatGPT.
Таким образом, с одной стороны авторы получают довольно качественного чатбота. И заодно делают вывод про то, что в разные датасеты заточены под разные свойства модели. Скажем, FLANv2, лучший для прокачки модели под понимание языка, не столь хорош для создания чатбота, и наоборот для OpenAssistant.
И самое приятное, для обучения самой большой версии Guanaco не требуется значительных ресурсов. Всего день на одной RTX A6000 (хоть и много больше бесплатного колаба).
Есть демка модели на huggingface и несколько нотбуков на странице проекта. Примечателен ноутбук с файнтьюном GPTNeoX-20B на колабовской T4 c 16GIB, которая так-то весит 40 Гигов (или 20 в 8-битной квантизации).
Введеный в работе формат квантизации имплементирован в библиотеке bitsandbytes и некоторые модели (не только лишь все) можно подгружать в данном формате
И самое приятное, для обучения самой большой версии Guanaco не требуется значительных ресурсов. Всего день на одной RTX A6000 (хоть и много больше бесплатного колаба).
Есть демка модели на huggingface и несколько нотбуков на странице проекта. Примечателен ноутбук с файнтьюном GPTNeoX-20B на колабовской T4 c 16GIB, которая так-то весит 40 Гигов (или 20 в 8-битной квантизации).
Введеный в работе формат квантизации имплементирован в библиотеке bitsandbytes и некоторые модели (не только лишь все) можно подгружать в данном формате
model_id = "EleutherAI/gpt-neox-20b"
bnb_config = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_use_double_quant=True, # квантовать ли скейлы
bnb_4bit_quant_type="nf4", # использовать NF4
bnb_4bit_compute_dtype=torch.bfloat16 # тип в котором проводятся вычисления
)
model = AutoModelForCausalLM.from_pretrained(model_id, quantization_config=bnb_config, device_map={"":0})Ах, да, маленький нюанс. 😅 Формат используется для хранения весов, а в момент вычислений веса материализуется в обычный тип с плавающей точкой (fp16, bf16). Потому ускорения пока нет, и даже некоторые накладные расходы на квантизацию и деквантизацию, но в будущем, вероятно, с развитием карточек и разработкой ядер, возможно, и добавится еще и ускорение.
В общем, весьма сильный и практически полезный результат.
В общем, весьма сильный и практически полезный результат.
Memory-Efficient Fine-Tuning of Compressed Large Language Models via sub-4-bit Integer Quantization
TL;DR в данной работе авторы предложили простой и дешевый эффективный по памяти способ дообучения квантованной модели для восстановления качества и под instruction finetuning.
https://teletype.in/@spiridon_sun_rotator/UJ6lixASXjN
TL;DR в данной работе авторы предложили простой и дешевый эффективный по памяти способ дообучения квантованной модели для восстановления качества и под instruction finetuning.
https://teletype.in/@spiridon_sun_rotator/UJ6lixASXjN
Teletype
Memory-Efficient Fine-Tuning of Compressed Large Language Models via sub-4-bit Integer Quantization
Значится, есть у нас квантованная модель, скажем, в 4-бита с некоторой просадкой в качестве на целевой задаче. И мы хотим каким-то...
Intriguing Properties of Quantization at Scale
TL;DR В данной статье авторы исследуют влияние факторов и гиперпараметров обучения на изменение качества квантованной модели по сравнению с ее исходной версией в числах с плавающей точкой.
https://teletype.in/@spiridon_sun_rotator/yBDfCaCH98R
TL;DR В данной статье авторы исследуют влияние факторов и гиперпараметров обучения на изменение качества квантованной модели по сравнению с ее исходной версией в числах с плавающей точкой.
https://teletype.in/@spiridon_sun_rotator/yBDfCaCH98R
Teletype
Intriguing Properties of Quantization at Scale
[Статья]
🔥2
Understanding Optimization of Deep Learning
Данный пост будет в необычном формате.
Обзор на обзор, он же обзор 2-го порядка.
https://teletype.in/@spiridon_sun_rotator/W08b5vufRRo
Данный пост будет в необычном формате.
Обзор на обзор, он же обзор 2-го порядка.
https://teletype.in/@spiridon_sun_rotator/W08b5vufRRo
Teletype
Обзор на обзор Understanding Optimization of Deep Learning
Данный пост будет в необычном формате.
🔥3
Snap Diffusion: Text-to-Image Diffusion Model on Mobile Devices within Two Seconds
История про диффузионку, генерирующую картинки на уровне Stable Diffusion, менее чем за 2с на мобилке.
https://teletype.in/@spiridon_sun_rotator/sA5t3J0p7eu
История про диффузионку, генерирующую картинки на уровне Stable Diffusion, менее чем за 2с на мобилке.
https://teletype.in/@spiridon_sun_rotator/sA5t3J0p7eu
Teletype
Snap Diffusion
Все мы любим генерировать причудливые картинки с помощью диффузионных генеративных моделей: Midjourney, Stable Diffusion, Шедеврум...
👍2
https://teletype.in/@spiridon_sun_rotator/ZoDH4frsx7e
Еще одна статья про квантование LLM на основе Фишерского приближения Гессиана и разбиения весов на выбросы и не-выбросы.
Еще одна статья про квантование LLM на основе Фишерского приближения Гессиана и разбиения весов на выбросы и не-выбросы.
Teletype
SqueezeLLM
[Cтатья][Репозиторий]