Свой ChatGPT: обзорный лонгрид про большие языковые модели

Смотрим и тестируем нейросети, которые можно запустить на собственном компьютере или сервере

Отношение роста количества параметров и задач, с которыми может работать модель.

Важно: этот материал очень сильно устарел. Лучше читайте r/LocalLLaMA для получения актуальной информации

Как можно запустить языковую модель локально?

Не люблю долгие вступления, про GPT и языковые модели сейчас существует предостаточно материалов, на том же DTF было пару статеек, а более углубленно можно почитать на Хабре. Так вот, к сути — есть два пути: легкий, в один клик и сложный, но с большим контролем.

text-generation-webui

Авторы этого проекта хотят сделать для языковых моделей тоже самое, что сделал webui от automatic1111 для Stable Diffusion.

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

А ещё он поддерживает квантование моделей до 8 бит, поэтому все приведенные цифры по видеопамяти вы можете смело делить на два.

Свой ChatGPT: обзорный лонгрид про большие языковые модели

А есть второй путь. Для того, чтобы идти им вам будет нужны некоторые знания в области Machine Learning и python. Это библиотека huggingface transformers, относительно других инструментов для работы с нейросетями она очень проста и я должен был о ней упомянуть.

Свой ChatGPT: обзорный лонгрид про большие языковые модели

В этой статье я буду использовать webui, потому что так проще вставлять скриншоты с диалогом. Webui поддерживает как «сырой» ввод запроса, так и режим чата. Ниже я ничего не буду писать про контекст чата, но почти везде я его ставил таким же, как будет описано в разделе про LLaMA, уж больно он получился удачным.

BLOOM

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

Дальше — печаль. Она огромная, на домашнем компьютере её не запустить, в колабе — тоже, а онлайн демка жутко перегружена, хоть что-то туда написать мне, увы, не удалось. Но помимо огромной модели есть варианты и поменьше, которые мне уже получилось пощупать.

Свой ChatGPT: обзорный лонгрид про большие языковые модели

Самой крупной моделью из семейства BLOOM, которую мне удалось запустить локально стала BLOOM-7b1.

Мое мнение — она плоха. Нет, отвечает довольно реалистично и связно, но совсем не по теме.

Свой ChatGPT: обзорный лонгрид про большие языковые модели

>Привет, кто ты?
>Я — чатбот с искусственным интеллектом, и я помогу вам узнать то, что вы хотите знать о языках программирования. Для того чтобы я мог это сделать, мне нужно ваше имя и возраст. Пожалуйста, введите эти две части информации в мою форму ниже:

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

Синим выделен запрос. Начиная с того, что панаграмм не десять, заканчитвая тем, что ни одно из сгенерированных предложений не панаграмма :)
Синим выделен запрос. Начиная с того, что панаграмм не десять, заканчитвая тем, что ни одно из сгенерированных предложений не панаграмма :)

Мой вердикт — одна из худших протестированных моделей, увы. Возможно, самая большая версия генерирует лучше, но возможностей её протестировать у меня так и не появилось.

GPT-J-6B

Появившейся ещё в далёком 2021 год GPT-J пророчили статус убийцы GPT-3. И действительно, она хороша! Но, к сожалению не во всём. Например, она очень хорошо генерирует код, но в остальном сильно отстаёт от GPT-3. С другой стороны, 6 миллиардов параметров против 175 дают о себе знать. Сами «веса» модели занимают около 24 гигабайт памяти и чуть больше на устройстве для выполнения, будь то процессор или GPU. Увы, протестировать не удалось, даже в восьмибитном режиме.

GPT-JT-6B

Разработчики называют её форком GPT-J-6B, по их заявлениям в задачах классификации данных она находится на том же уровне, что и GPT-3. К сожалению, с другими задачами дела обстоят сложнее. Для запуска нужно около 24 гигабайт видеопамяти. Аналогично J загрузить модель не получилось.

GPT-NEOX

Строго говоря, сам NEOX это не нейросеть, а целый инструмент для создания больших языковых моделей, с которым мы ещё обязательно столкнемся. Оригинал требует 40+ гигабайт видеопамяти в fp16 или около 20 с восьмибитной точностью. Стоит ли говорить, что столько у меня нет?

Pythia

Честно говоря, классическая Pythia нам мало интересна — разработчики прямо пишут, что она не подходит для «общения», потому что не умеет генерировать длинные последовательности. Но знаете, чем прекрасны открытые нейросети? Конечно тем, что они открытые!

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

Лишь маленький кусочек от пользовательских моделей
Лишь маленький кусочек от пользовательских моделей

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

Pythia-deduped-synthetic-instruct

Instruct в названии говорит о том, что оригинальная Pythia-deduped была дообучена на парах вопрос-ответ, прямо как ChatGPT. В отличие от трёх предыдущих моделей, эта подходит для создания чат-ботов. Нормальная поддержка русского языка отсутствует

К сожалению, тут онлайн-демки нет. Для запуска самой большой модели, на 12 миллиардов параметров, нужно около 24 гигабайт видеопамяти, но есть и модели поменьше, например 6.9B (17гб VRAM) или 2.8B (7гб VRAM) . Самую маленькую модель можно запустить даже на GTX 1060.

Примеры генерации на 2.8B модели

Как видно из примеров, даже небольшая 2.8B модель выдает связный текст и правильный ответы.

Ну, относительно правильные. Очень относительно.
Ну, относительно правильные. Очень относительно.

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

Она даже кое-как понимает русский, хоть и генерирует полную бредятину.

Свой ChatGPT: обзорный лонгрид про большие языковые модели

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

А вот примеры генерации от большой 6.9B модели

На самом деле модели из этой серии стоит использовать со строго определенным форматом запроса. Для 6.9B я использовал именно его, чтобы полностью раскрыть потенциал.

Да, так можно приготовить рис. Не знаю, правда, зачем там масло.
Да, так можно приготовить рис. Не знаю, правда, зачем там масло.

>Как приготовить рис?
>Чтобы приготовить рис, начните с его промывки, а затем отмерьте 1 чашку риса. Разогрейте кастрюлю или сковороду на средне-высоком огне и добавьте 1 столовую ложку масла. Когда масло нагреется, добавьте рис и перемешайте, чтобы он равномерно покрылся маслом. Добавьте 1 ½ стакана воды и доведите смесь до кипения. Уменьшите огонь до низкого, накройте кастрюлю и варите около 18 минут. По истечении времени выключите огонь и дайте рису настояться в течение 10 минут перед подачей на стол.

Свой ChatGPT: обзорный лонгрид про большие языковые модели

>Почему Call of Duty так популярна?
>Call of Duty широко популярна, потому что предлагает убедительный и увлекательный опыт, отличную графику и звук, а также захватывающий сюжет и игровой процесс. В игре представлен широкий выбор оружия и снаряжения, что позволяет игроку выбрать наиболее подходящий вариант, а динамичные карты и режимы предоставляют бесконечные возможности для взаимодействия с другими игроками. Кроме того, в игре присутствуют социальные элементы, которые делают игру с друзьями по сети еще более приятной.

Chip-instruct-alpha

Ещё дообученная на диалогах модели, она вдохновлены дружелюбными роботами из фантастических фильмов. 1.4B версия отвечает намного охотнее, а 7B чаще говорит, что не знает ответа.

Вот как-то так будет готовить пасту алла норма Chip 1.4B

+1 миска рис. Нет, это не паста алла норма
+1 миска рис. Нет, это не паста алла норма

>Привет, можешь рассказать мне как приготовить пасту алла норма?
>Конечно! Сначала мне понадобятся некоторые ингредиенты, такие как мука и масло для приготовления; соль вода или овощной бульон, в зависимости от того, если используется домашний рецепт с нуля (я предпочитаю использовать консервированный) Затем добавьте ваш любимый соус, такой как сальса верде или песто оливковое масло, а затем, наконец, положите приготовленную лапшу на горячую сковороду, пока она не станет аль денте в соответствии с нашими вкусовыми предпочтениями…(дальше с китайского) Затем приправы удалить все специи добавить соль и немного перца положить внутрь контейнера тушить вверх и готовить до итальянской крошки красного цвета на нем. Как сделать персонализированный код программы также так точно, чтобы ответить на вопросы, не следуя пересылки запросов сети или непосредственно вернуть информацию и другие случаи очень удобно Oh ~.

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

Свой ChatGPT: обзорный лонгрид про большие языковые модели

>Привет, можешь рассказать мне как приготовить пасту алла норма?
>Я извиняюсь, но я не знаю этого рецепта. Пожалуйста, поищите «паста алла норма» и посмотрите, если найдете что-то полезное

Но потом всё-таки отвечает, и конечно лучше, чем младший брат. Хотя потребовалось несколько попыток, а ещё пришлось немного изменить запрос.

Свой ChatGPT: обзорный лонгрид про большие языковые модели

>Привет, скажите пожалуйста, как приготовить пасту алла норма? Дай мне пошаговый рецепт
>Ингредиенты:- 1 чашка сухих макарон (например, спагетти) - 2 столовые ложки оливкового масла- 3 зубчика чеснока, измельченного- соль и перец по вкусу- 1/2 чашки нарезанного кубиками лука- 1 28-унцовая банка измельченных помидоров- 1 столовая ложка томатной пасты- 1 чайная ложка сахара- 1/4 чайной ложки хлопьев красного перца- 1/8 чайной ложки молотого мускатного орехаИнструкции:- Доведите до кипения большую кастрюлю подсоленной воды. - Добавьте макароны в кипящую воду и варите в соответствии с инструкциями на упаковке до готовности. Тем временем разогрейте оливковое масло в кастрюле на среднем огне. - Добавьте чеснок, лук и нарезанные кубиками помидоры, приправьте солью, перцем и любыми другими желаемыми травами или специями. - Тушите 10 минут. - Уменьшите огонь до низкого и добавьте томатную пасту, сахар, хлопья красного перца и мускатный орех. - Готовьте еще 5 минут, периодически помешивая. - Слейте воду с готовой пасты и добавьте ее в кастрюлю вместе с соусом. - Перемешайте все вместе.

Это, конечно, не совсем паста алла норма, но не слишком ли мы многого хотим?

7B выдает действительно хорошо связные и приятные на глаз ответы. Вот, например, я спросил у неё как работает лампочка накаливания

Свой ChatGPT: обзорный лонгрид про большие языковые модели

>Привет, можешь объяснить как работает лампочка накаливания?
>Конечно! Лампы накаливания состоят из нити, которая нагревается и светится, когда через нее проходит электричество. Нить обычно изготавливается из вольфрама или других материалов, например, молибдена. Когда через нить проходит ток, электроны перемещаются внутри материала, создавая световые волны, которые мы видим как свет. Это происходит потому, что атомы в нити накаливания имеют разные энергетические уровни, чем атомы вне ее. Когда к одному атому притекает больше электронов, его энергетический уровень повышается, заставляя его излучать фотоны (частицы света) на более высоких частотах. Затем эти фотоны отражаются от соседних атомов, пока не попадают в наши глаза, где они создают ощущение света.

Для симуляции каких-то очень простых диалогов, конечно, хватит и 1.4B, тем более, что работать она будет на любой консервной банке. Но из-за слишком большого потока бреда и очень сомнительного качества информации как бота-помощника маленькую модельку использовать не получиться. Зато 7B в целом, справляется с этим на относительно приемлемом уровне.

YALM-100B

Онлайн-демка (В балабобе используется маленькая YALM-3B)

Это самая крупная модель обученная на русскоязычных данных, хотя и в английский тоже умеет. Есть статья на русском языке от разработчиков, про то как всё это работает. Для запуска требует 250 гигабайт видеопамяти. Из плюсов — реально хорошо понимает русский язык.

Примеры генерации от разработчиков в формате вопрос-ответ

OPT

Флагман открытых языковых моделей, по крайней мере по количеству параметров. Самая крупная имеет 175B, а это столько же, и у GPT-3. Хотя количество параметров напрямую и не говорит о качестве генерации, но может дать примерно представление. В теории умеет говорить по-русски, но очень плохо.

Есть мнение, что OPT — плоха для своего размера, и возможно, это недалеко от правды.

Я вот не знаю о таком. А вы?
Я вот не знаю о таком. А вы?

В по-настоящему открытом доступе только модель 66B, 175B выдают по запросу. Но смысла печалиться по этому поводу тут я не вижу, потому что даже для запуска 66B вам понадобится сильно больше сотни гигабайт видеопамяти, а для 175B — 350.

А вот это уже больше похоже на правду 
А вот это уже больше похоже на правду 

Относительно недавно группа разработчиков из разных компаний и университетов представила инструмент для запуска OPT на «домашних» графических процессорах — FlexGen. Например, модель OPT-175B удалось запустить на Nvidia Tesla T4 с 16 гигабайтами видеопамяти.

Но не спешите радоваться, помимо «домашней» видеокарты, вроде RTX 3090, потребуется ещё 200-300 гигабайт оперативной памяти и большой быстрый SSD, потому что магии не существует.

LLaMA

Модель, созданная исследователями из злой экстремистской Meta, как и OPT. По многим тестам самая большая из моделей превосходит GPT-3 и находится на уровне флагманских моделей из тёмных лабораторий Google, вроде PaLM-540B.

Больше цифра - лучше. Жирным шрифтов выделены самые высокие результаты.
Больше цифра - лучше. Жирным шрифтов выделены самые высокие результаты.

В открытый доступ модель не выложили, но её можно было получить для исследовательских целей, поэтому она быстро утекла в сеть.

Версию на 65 миллиардов параметров мы на домашнем компьютере конечно запустить не сможем, но вот с некоторыми ухищрениями, вроде квантования до 4 бит, самую маленькую 7B модель можно запустить на видеокарте от 6-8 гигабайт видеопамяти. Энтузиастам удалось её запустить даже на Raspberry Pi 4 с 4 гигабайтами обычной оперативной памяти.

А мне удалось запустить на Orange Pi 5 с 8 гб RAM. Не 4, но тоже неплохо.
А мне удалось запустить на Orange Pi 5 с 8 гб RAM. Не 4, но тоже неплохо.

Я запустил 7B модель у себя на компьютере. В режиме чата её очень сложно разговорить: если неправильно задать контекст модель выдает короткие сухие ответы или просит перефразировать вопрос. После некоторого количества экспериментов контекст я установил такой

Свой ChatGPT: обзорный лонгрид про большие языковые модели

>LLaMA — это чат-бот с искусственным интеллектом, который отвечает на вопросы человека максимально подробно. Он не отвечает ссылками в интернете. Он отвечает так, чтобы объяснить ответ шаг за шагом. Если его просят написать программный код, он пишет его, комментируя алгоритм.

LLaMA очень хорошо обучена не отвечать всяким похожим на правду бредом, если она «не знает» ответа.

У неё какие-то проблемы с терминами из области машинного обучения (время строить теории заговора)
У неё какие-то проблемы с терминами из области машинного обучения (время строить теории заговора)

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

OpenChatKit (GPT-NEOXT)

Вот прямо на днях Togethercomputer анонсировала и выпустила открытую модель для создания чат-ботов по типу GhatGPT на основе GPT-NEOX. Одновременно с моделью была создана онлайн демо для обратной связи и доработки модели. Работает очень шустро и совершенно свободно, всем рекомендую попробовать.

Свой ChatGPT: обзорный лонгрид про большие языковые модели

CodeGen

Модель для генерации кода по описанию. Будет интересна в основном программистам. Есть варианты на 350M, 2B, 6B и 16B.

Pygmalion

Модель, обученная изображать персонажей. Была создана анонами с 4chan как аналог CharacterAI после того, как там ввели цензуру, и поэтому она хорошо умеет в NSFW. Сделана на основе pythia, отдельно поддерживается в text-generation-webui.

Попробовал создать тысячелетнего эльфа в типичном фентези и поболтать с ним. Да, у меня нет фантазии.

Осуждаем дискриминацию темных эльфов!
Осуждаем дискриминацию темных эльфов!

Персона Таала: Таал — эльф, который уже потерял счет своему возрасту. Он спокойный и не слишком разговорчив.
<START>
Вы: Нечасто увидишь здесь эльфа. Что привело тебя сюда?
Таал: Я направляюсь на север, вот и решил остановиться на ночь в этом трактире.

Ты: Что ты думаешь о том, что произошло недавно в темном лесу?
Таал: *вздох* Эти проклятые темные эльфы продолжают все портить! Почему они не могут просто спрятаться, как нормальные эльфы… Если уж на то пошло, я уверен, что именно эти темные эльфы виноваты во всех этих монстрах, появившихся в последнее время. Будь они прокляты!
Ты: Так это темные эльфы? Городские власти обвиняют повстанцев из западных земель.
Таал: Да, наверное, так оно и есть. Они всегда пытаются обвинить кого-то другого в своих проблемах, когда что-то идет не так. Но, как обычно, настоящим виновником оказываются они сами. Никто никогда ни в чем не винит себя. Вот откуда мы, люди, знаем, что для нас еще есть надежда. Мы быстро показываем пальцем, но медленно берем на себя ответственность за свои поступки.
Ты: *просит, принести еще пива* Да, я с тобой согласен.
Таал: Благодарю вас. *Наливает себе еще эля. * Но, как я уже говорил, даже если темные эльфы и были причиной всех этих нападений монстров, почему они выбрали именно это время, чтобы выйти и начать сеять хаос? Конечно, они могли бы подождать до восхода солнца или чего-то подобного? Или, может быть, они просто проверяли пределы возможностей героев и хотели посмотреть, как хорошо отреагируют армии и полиция, прежде чем выступить против истинного могущества мира.

GALACTICA

Обучен на большом корпусе научных текстов, основан на OPT. Есть варианты моделей на 125M, 1.3B, 6.7B, 30B и 120B параметров. Наверное, будет полезен как карманная энциклопедия. Тестировать не стал, потому что слишком глуп, чтобы спросить у нее что-то умное.

Умный пример от умных людей
Умный пример от умных людей

OpenAssistant

Это сервис от LAION — товарищей, которые собрали самый крупный датасет картинок, целых 5 миллиардов штук, на котором обучали Stable Diffusion. В описании проекта они говорят, что хотя сделать для языковых моделей то, что сделала для txt2img та самая Stable Diffusion.

Свой ChatGPT: обзорный лонгрид про большие языковые модели

Разработка пока находится на ранней стадии, но цели уже очень амбициозны. Они обещают выпустить модели, которые будет можно запускать на домашнем оборудовании, а буквально 10 дней назад появились первые тестовые модели на основе Pythia-12B. Вероятнее всего это не финальная архитектура и модели, но в целом даже такие результаты радуют.

Что по итогу?

Коротко о главном:

  • Лучшая относительно открытая модель для запуска на домашних ПК — LLaMA-7B в 4-bit режиме. Но открытость относительная.
  • Лучшая открытая модель для чат-ботов — GPT-NEOXT-20B, но запустить её получится разве что на RTX 3090/4090. Энтузиасты уже научились квантовать до веса 4 бит, что позволит сократить требования к памяти до 4 раз, поэтому возможно получится запускать её на более слабом железе, но пока это сложно для обычного пользователя.
  • Лучшая открытая модель для действительно слабых систем — Pythia и разные её модификации.
  • Именно своего бота-ассистента пока поднять сложно и ресурсозатратно, но вот что-то вроде CharapterAI или AI Dungeon — вполне реально.
  • Для генерации на русском всё печально. YALM запустить можно разве что на мощном сервере с десятком GPU, а англоязычные модели очень плохо с русским дружат по причине малого количества данных для обучения — даже крутейшая LLaMA cправляется с пониманием русских запросов плохо.
  • Скорость развития отрасли - бешеная. Только за время написания этой статьи появилось еще несколько интересных открытых моделей, например китайская ChatGLM.
105105
33 комментария

Жаль он так на самом деле не отвечает. А то порой смотришь че народ у него спрашивает и вот такое вот само на ум приходит.

6

Кратко - нейросетки бесплатного аналога ChatGPT, чтоб была на уровне эффективности Stable Diffusion ещё нет, покупайте подписку на GPT

8

Ну вообще есть, LLaMA

1

А зачем покупать подписку, если весь функционал бесплатен?