{"id":14284,"url":"\/distributions\/14284\/click?bit=1&hash=82a231c769d1e10ea56c30ae286f090fbb4a445600cfa9e05037db7a74b1dda9","title":"\u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0444\u0438\u043d\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0430 \u0442\u0430\u043d\u0446\u044b \u0441 \u0441\u043e\u0431\u0430\u043a\u0430\u043c\u0438","buttonText":"","imageUuid":""}

Сравнение суммаризации в Mixtral-8x7B-Instruct при FP16, 8-bit, 4-bit + бонус примеры из Cloude 3

Насколько квантизация влияет на конечный результат генерации? Вопрос непраздный. Если верить публичным бенчмаркам, то квантизация 4-бит вроде не сильно влияет, особенно для больших моделей от 13B и выше. Но кто разберет эти десятые доли разницы. Лучше всего смотреть на конкретных задачах, для которых выбирается LLM. Я выбрал для теста - ненаглядную суммаризацию. Полный код и исходный текст опубликован на github.

Mixtral8х7B

Семейство моделей Mixtral из 8 экспертов было опубликовано в декабре 2023 года. Cогласно пресс-релизу соответствует или превосходит Llama 2 70B, а также GPT3.5 в большинстве бенчмарков.

Сравнение с Llama 2, GPT3.5
Сравнение с Llama 2

Mixtral-8x7B-Instruct-v0.1 была оптимизирована с помощью supervised fine-tuning (SFT) и direct preference optimization (DPO) для тщательного следования инструкциям. В MT-Bench она достигает 8,30 балла, что делает ее лучшей моделью с открытым исходным кодом, по производительности сопоставимой с GPT3.5.

Mixtral-8x7B-Instruct-v0.1 имеет длину контекста 32К токенов, что для русского языка примерно 15 тысяч слов и текст в 60 страниц. Llama 2 имеет 4К контекст в базовой модели.

Mixtral имеет 46,7B общих параметров, но использует только 12,9 B параметров на токен (2 активных эксперта). Поэтому он обрабатывает входные данные и генерирует выходные с той же скоростью и по той же стоимости, что и модель с 12,9 B.

Требования к видеопамяти

Mixtral-8x7B-Instruct-v0.1 при квантизации 4-бит потребляет около 34 Гб памяти при небольшом при контексте - 1800 русских слов (6-7 страниц), а при минимальном контексте около 27 Гб. 8-бит 50+ Гб памяти. 16-бит поместилась у меня в 95ГБ VRAM.

Это отличная новость, потому что мы получили модель качества Lamma-2 70B, которую можно запустить в FP16 на двух картах с 48 Гб памяти (для Lamma2 70B требуется 150+ Гб). Более того теперь можно с меньшими затратами ресурсов работать с более длинным контекстом.

Таким образом для запуска на видеокарте - потребуется 27Гб минимум. Но с помощью других инструментов инференса можно разгрузить на CPU.

Сравнение суммаризации FP16, 8-bit, 4-bit

Честно говоря не ожидал, что получится запустить 8-бит на двух RTX 8000, но свежий трансформер стал поддерживать этот режим. Также неожиданно запустился fp16, потому что при расчётном значении из таблицы выше - 104 Гб - не должно было хватить памяти.

В тесте используются методы инференса с HF - код и исходный текст запроса опубликовал на github. Наверное, есть и более быстрые методы инференса через другие библиотеки, но пока речь про нативку из HF и квантизации на лету.

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

Особенности 4-бит квантизации BitsAndBytes

В настройках HF - чертGPT инференс сломит ). Будем брать живьем. Самое интересно, что они влияют не только на ресурсы, но и на содержание генерации, что сильно удручает. Также бесит баловство с bfloat16.

Учтите, что приведенные ниже данные актуальны для моих видеокарт RT 8000, на вашем железе все может быть по-другому - тестируйте.

Вариант 1 - жрет меньше памяти (31.7Гб), на 7-8 секунд дольше выполняется (01:10)

bnb_config4 = BitsAndBytesConfig( load_in_4bit= True, bnb_4bit_quant_type= "nf4", bnb_4bit_compute_dtype= torch.bfloat16, bnb_4bit_use_double_quant= False, ) model = AutoModelForCausalLM.from_pretrained( MODEL_NAME, quantization_config=bnb_config4, device_map="auto", torch_dtype=torch.bfloat16, cache_dir=cache_dir )

Вариант 2 - жрет больше памяти 33.9Гб, выполняется быстрее (01:02)

bnb_config4 = BitsAndBytesConfig( load_in_4bit= True, bnb_4bit_quant_type= "nf4", bnb_4bit_compute_dtype= torch.float16, bnb_4bit_use_double_quant= False ) model = AutoModelForCausalLM.from_pretrained( MODEL_NAME, quantization_config=bnb_config4, device_map="auto", torch_dtype=torch.bfloat16, )

Вариант 3 - жрет меньше всего 27.4Гб, выполняется быстрее в 2 раза (0:30)

torch_dtype=torch.float16, bnb_4bit_compute_dtype= torch.float16

bnb_config4 = BitsAndBytesConfig( load_in_4bit= True, bnb_4bit_quant_type= "nf4", bnb_4bit_compute_dtype= torch.float16, bnb_4bit_use_double_quant= True, llm_int8_enable_fp32_cpu_offload= False ) model = AutoModelForCausalLM.from_pretrained( MODEL_NAME, quantization_config=bnb_config4, device_map="auto", torch_dtype=torch.float16, )

Задача для Mixtral - Составь 10 самых важных событий из книги.

Был взят отрезок книги Автостопом по галактике - первые 1800 слов.

В сравнении в столбце 4-бит указана генерация вариант настроек 2. Выделил его потому что возникла серьезная логическая ошибка. В таблице размещены пункты по смысловому содержанию.

FP16 должен выдавать наилучшее качество, 8-бит хуже, 4-бит еще хуже.

Из сравнения сразу видно что, 4-бит более скудный на слова - худой бродяга, а 8-бит считает себя более многословным, заговаривает зубы). Далее остановлюсь лишь на некоторых пунктах сравнения.

Красным отмечен ошибочный пункт. 

Модель в 4bit ошибочно пишет, что книга существует на этой планете (подразумевается Земля). Модель в fp16 пишет правильно "неземная книга, которую никогда не публиковали на Земле".

В исходнике:

Еще это история книги, называющейся "Путеводитель "Автостопом по Млечному Пути". Неземной книги, которую никогда не публиковали на Земле. Книги, которую до кошмарной катастрофы не видел, и о которой не слышал ни один землянин.

Пункт 6

В 6 пункте fp16 почему-то пишет "в одной из", в то время как в оригинале "Во многих патриархальных цивилизациях".

Пункт 7

А история того ужасного, бессмысленного четверга, его чрезвычайных последствий и того, как нерасторжимо они связаны с замечательной книгой, начиналась очень просто. Она началась с дома.

Дом стоял на пологом склоне, на самом краю городка. Он стоял себе и смотрел вдаль, на широкие просторы фермерских полей Западной Англии. Ничем не примечательный дом, построенный около тридцати лет назад. Приземистый, угловатый, сложенный из кирпича, дом нес на своем фасаде четыре окна, таких размеров и пропорций, которые, в большей или меньшей степени, не могли порадовать глаз.

Единственным человеком, для которого дом имел какое-то значение, был Артур Дент, да и то потому, что ему довелось там жить.

Пример генерации 4-бит для настроек Вариант 3

  1. На планете, вращающейся вокруг малозначительного желтого солнца, большинство жителей были несчастны.
  2. Было предложено множество решений этой проблемы, но ни одно из них не помогло.
  3. Однажды девушка в Рикмэнсуорсе поняла, в чем заключалась проблема и как ее решить.
  4. Однако прежде, чем она смогла рассказать об этом, разразилась ужасная катастрофа.
  5. Рассказ идет о этой катастрофе и ее последствиях.
  6. Рассказ также о неопубликованной книге Путеводитель по Галактике для автостопщиков, который был очень популярен и спорен.
  7. Эта книга была написана в издательской корпорации Малой Медведицы, о которой никогда не слышали земляне.
  8. История начинается с дома Артура Дента, который должен быть снесен, чтобы построить шоссе.
  9. Артур не знал о планах сноса своего дома и просыпается утром с бульдозером у окна.
  10. Артур протестует против сноса своего дома, но чиновник мистер Проссер настаивает на необходимости строительства шоссе.

Здесь своеобразный недочет в пункте 6 - "Рассказ также о неопубликованной книге". Ведь путеводитель не опубликован только на Земле.

Заключение по суммаризации Mixtral

В целом очевидно, что FP16 и 8-бит очень схожи по качеству, иногда даже 8-бит интереснее выдает формулировки.

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

Бонус - суммаризация от Cloude 3

В марте 2024 вышло новое семейство моделей онлайн-сервиса Claude 3 - Opus, Sonnet, Haiku.

Пример ответа Cloude 3 Opus

Вот 10 наиболее важных событий из приведённого отрывка книги "Автостопом по галактике":

  • В четверг, через 2000 лет после распятия Иисуса, на Земле почти разразилась ужасная катастрофа, но одна девушка поняла, как можно сделать мир добрым и счастливым местом. Однако она не успела никому об этом рассказать.
  • История повествует о книге "Путеводитель автостопом по Млечному Пути", которая была популярнее многих других известных книг. Ни один землянин о ней не слышал до катастрофы.
  • В четверг утром Артур Дент проснулся с похмелья и обнаружил у своего дома бульдозер.
  • Выяснилось, что городской совет хочет снести дом Артура, чтобы проложить на его месте шоссе. Артура об этом официально не известили.
  • Артур в знак протеста лёг перед бульдозером, мешая сносу своего дома.
  • Мистер Проссер, работник городского совета, пытался убедить Артура отойти и смириться со сносом дома.
  • Артур заявил, что планы строительства шоссе не были должным образом обнародованы - он с трудом нашёл их в подвале на дне запертого шкафа.
  • Мистер Проссер признал, что дом Артура не очень симпатичный, но Артуру он нравится.
  • Артур отказался уходить, заявив, что городской совет ничего не сможет сделать.
  • Проссер намекнул, что может пустить бульдозер прямо по Артуру, и это не повредит машину. Затем он отошёл в нервном потрясении.

Пример ответа Cloude 3 Sonnet

Вот 10 самых важных событий из представленного отрывка книги "Путеводитель "Автостопом по Галактике" Дугласа Адамса:

  • Описание желтого солнца и маленькой зелено-голубой планеты Земля, обитатели которой очень примитивны и большинство из них несчастны.
  • Упоминание замечательной книги "Путеводитель "Автостопом по Галактике"", которая была популярнее многих других книг.
  • Артур Дент просыпается и видит бульдозер перед своим домом, который должны снести для строительства новой дороги.
  • Артур Дент ложится перед бульдозером, чтобы помешать сносу своего дома.
  • Выясняется, что планы по сносу дома были опубликованы, но в таком месте, что Артур Дент не мог их найти.
  • Представитель городского совета мистер Проссер пытается убедить Артура Дента уйти, угрожая запустить бульдозер прямо на него.
  • Артур Дент отказывается уходить, заявляя, что ему нравится его дом.
  • Мистер Проссер представляет видения о том, как сжигает дом Артура Дента и убивает его копьями.
  • Выясняется, что ничего не случится с бульдозером, если он проедет прямо по Артуру Денту.
  • Отрывок заканчивается тем, что мистер Проссер в нервном потрясении от разговора с Артуром Дентом.

Пример ответа Cloude 3 Haiku

  • Артур Дент обнаруживает, что его дом должен быть снесен для постройки шоссе.
  • Городской чиновник мистер Проссер приходит, чтобы убедить Артура Дента покинуть дом.
  • Артур Дент отказывается уходить и ложится перед бульдозером, чтобы помешать сносу дома.
  • Мистер Проссер объясняет Артуру необходимость строительства шоссе, но Артур возражает, что планы не были должным образом обнародованы.
  • Выясняется, что объявление о планах строительства было спрятано в труднодоступном месте.
  • Артур говорит мистеру Проссеру, что тот ничего не сможет сделать и должен убраться.
  • Мистер Проссер на мгновение представляет, как дом Артура Дента сжигают, а самого Артура пронзают копьями, но отбрасывает эти мысли.
  • Мистер Проссер угрожает, что бульдозер ничего не повредит, если проедет прямо по Артуру.
  • Артур интересуется, какие повреждения получит бульдозер, но мистер Проссер отвечает, что никаких.
  • Мистер Проссер уходит в нервном состоянии, недоумевая, почему его мысли были заполнены кричащими всадниками.

Заключение по Cloude

Лично мне Mixtral fp16/8-bit больше понравился по формулировкам. Клод выделил важность событий по-своему. Opus заметно лучше своих младших.

Если нашли неточность в описании - буду рад поправкам. Также вы можете подписаться на мой ТГ-канал, где я делюсь своими находками и опытом.

0
2 комментария
miteigi nemoto
Автор

FractalGPT смог только по запрос "Составь 10 самых важных предложений из книги."

Из книги "Путеводитель "Автостопом по Млечному Пути" можно выделить следующие 10 самых важных предложений:

1. "Для ее разрешения было предложено много рецептов, большинство которых сводилось преимущественно к перемещению зеленых кусочков бумаги, что странно, потому что, вообще говоря, зеленые кусочки бумаги несчастными не были."
2. "И внезапно она поняла, что же было не так все это время. Теперь она знала, как можно было бы сделать свой мир добрым и счастливым местом."
3. "На этот раз все было верно, все могло бы получиться, и никого не нужно было бы ни к чему прибивать."
4. "Эта история не о ней. Это история ужасной, слепой катастрофы и некоторых из ее последствий."
5. "Еще это история книги, называющейся "Путеводитель "Автостопом по Млечному Пути"."
6. "Не только совершенно замечательной была книга, но еще и очень удачной."
7. "Она была популярнее, чем "Руководство по божественному уходу за домом", продавалась лучше, чем "Еще 53 способа проделать это при нулевой гравитации" и оказалась еще более спорной, чем трилогия философских супербоевиков Оолона Коллафида "В чем Бог был не прав", "Еще о величайших ошибках Бога" и "Да кто он такой, этот Бог, в конце концов?"
8. "Во многих патриархальных цивилизациях Внешнего восточного обода Галактики "Путеводитель "Автостопом по Млечному Пути" уже отнял у великой "Encyclopaedia Galactica" славу стандартного вместилища всего знания и мудрости."
9. "Хотя в Путеводителе много пробелов, и содержится масса недостоверного, или, по меньшей мере, ужасно неточного, он выигрывает по сравнению со старой, более прозаической, энциклопедией в двух существенных отношениях."
10. "А история того ужасного, бессмысленного четверга, его чрезвычайных последствий и того, как нерасторжимо они связаны с замечательной книгой, начиналась очень просто. Она началась с дома."

Ответить
Развернуть ветку
Mizzja

Божескую работу делаешь.
Аплодирую стоя

Ответить
Развернуть ветку
-1 комментариев
Раскрывать всегда