Я уже недавно писал на Хабре, что понемногу пилю свой сервис VseGPT с доступом по OpenAI API и чатом к различным нейросетям - ChatGPT, Claude, LLama и пр. (Коротко: потому что вендорлок - зло, разнообразие и опенсорс - добро)
Большая часть работы - это, конечно, роутинг запросов на разные сервера, которые осуществляют обработку нейросетевых моделей; свой у меня скорее общий универсальный интерфейс, который сглаживает разницу между моделями, ну и некоторые прикольные фишечки.
Но я давно задумывался развернуть что-то собственное, чего нет у других - в особенности опенсорсную Сайгу.
Краткая справка: есть следующие нейросети
Зарубежные закрытые (ChatGPT, GPT-4, Claude 1,2, Google Palm) - которые, хотя и натренированы в основном на английском, выдают очень хорошие результаты и на других языках, включая русский.
Отечественные закрытые - YandexGPT, GigaChat. (Для последнего доступна базовая сеть в опенсорсе, за что Сберу большое спасибо). Эти - с фокусом на русский язык, но обычно до GPT-4 не дотягивают.
Зарубежные опенсорсные - народ там тренирует сети под самые разные задачи, но, как вы понимаете, в первую очередь на английских датасетах. Русский язык зарубежные опенсорс модели понимают относительно плохо.
У нас есть замечательный товарищ, Илья Гусев (на Хабре @Takagi), который берёт некоторые из выходящих зарубежных сетей, и дотренировывает их на русских датасетах (которые он же частично и собрал).
Как результат - у него вышла целая серия опенсорс нейросетей Сайга, в основе которых лежат разные базовые модели:
Сайга 7B, 13B, 65B на основе LLama от Meta (признана экстремистской организацией в России)
Сайга2 7B, 13B, 70B на основе LLama2 оттуда же
ГигаСайга (Лора, т.е. адаптер) поверх ruGPT-3.5-13B от Сбера (ruGPT-3.5-13B по описанию лежит в основе ГигаЧат)
Сайга-Мистраль 7B поверх модели Мистраль, выложенная 9 октября (меньше 10 дней назад) о которой и пойдет речь дальше.
По понятным причинам за рубежом Сайгу никто профессионально с OpenAI совместимым API не хостит, так что дело спасение утопающих российских пользователей - дело рук самих утопающих российских пользователей.
Что это за Mistral такой?
Базовая нейросеть для тренировки появилась совсем недавно и довольно неожиданно.
Новая компания Mistral.AI 27 сентября анонсировала свою натренированную нейросеть Mistral 7B.
Из пресс-релиза:
Mistral 7B - это модель с параметрами 7.3B, которая:
Превосходит Llama 2 13B во всех бенчмарках
Превосходит Llama 1 34B во многих бенчмарках
Приближается к производительности CodeLlama 7B на коде, оставаясь при этом хорошей в англоязычных задачах
Использует Grouped-query attention (GQA) для более быстрой обработки
Использует Sliding Window Attention (SWA) для обработки длинных последовательностей токенов с меньшими затратами
Получить модель в 7B параметров, которая сопоставима, а то и круче модели на 13B параметров (т.е. более тяжелой и долгой) - дорогого стоит; кроме того, авторы обещали, что дотренировывать её относительно просто.
Сайга-Мистраль меньше чем через две недели после анонса
Оригинальный Мистраль меня заинтересовал; у него довольно быстро появился инференс, к которому я подключился и потестировал.
Скорость высокая, результаты неплохие, но... английский как основной, как всегда.
Ну, покрутил и забыл - много других дел есть, в конце концов.
Какого же было моё удивление, когда спустя меньше чем через две недели я обнаружил новость, что Илья дотренировал Мистраль на датасетах Сайги, и выложил результат в открытый доступ.
Результаты - достаточно прикольные. Илья также успел сделать оценку получившейся модели на Russiansuperglue
ЛОРА, специально дотренированная на датасете, обгоняет остальные модели и занимает первое место после человеческого результата - ну как бы ОЧЕНЬ крутое достижение.
Но меня даже интересовал другой результат - как Сайга-Мистраль показывает себя без дотренировки на специфичных данных, as-is?
Нас интересуют варианты zero-shot, т.е. как показывают себя модели без специфичной дотренировки (finetune, Lora), если им подан единственный пример к задаче.
7B Mistral сравним (хотя и несколько хуже) 70B модели на базе Llama2 - и это при том, что параметров в 10 раз меньше!
В общем, я настолько впечатлился результатами, что понял, что хочу сделать эту модель доступной. 70B я пробовал - она давала неплохие результаты - но хостить её дорого, генерация долгая, а вот 7B - другое дело.
Запускаем инференс модели меньше чем через две недели
Для запуска пришлось решить несколько технических сложностей.
Пришлось делать реализацию OpenAI API сервера для запуска Сайги - стандартные не подошли, там нет нужной токенизации, которая используется в Сайге, её надо делать самостоятельно.
Потом запуск, и тесты. После тестов оказалось следующее:
Модель имхо не очень хорошо работает при температуре 1.0 - стандартной для ChatGPT, и выставленной у нас по умолчанию; бред получается слишком часто. Обычно опенсорсные модели неплохо себя чувствуют при параметре 0.7, но тут я решил выставить аж 0.1, для четких ответов.
Также оказалось, что модель склонна к повторению, и ей по дефолту желательно выставить штраф за повторение frequence_penalty=1.3
Стало понятно, что в дефолтовом чате у пользователей слишком часто будут получаться нерелевантные результаты - и я сделал на сайте отдельный чат с уже настроенными параметрами специально для Сайги. Получилось как-то так:
Ну, и естественно, модель доступна и через стандартный OpenAI API (model="gusev/saiga-mistral-7b"
)
Как работает?
Да в целом, неплохо. Давайте по пунктам:
Скорость около 70 символов в секунду, крайне быстро - т.к. развернул инстанс на GPU. (Если не будет пользоваться популярностью, может вернусь на машину с CPU, будет помедленнее, но дешевле для меня)
-
Задачи разных типов:
Вопрос-ответ - хорошие результаты
Кодогенерация - в общем, тоже хорошие результаты
Суммаризация - не очень. Думаю, это связано с тем, что сеть всего 7B, а также с тем, что вроде в датасетах Сайги не очень много данных на суммаризацию.
Knowledge (общие знания без контекста) - также не очень, но тут и сеть всего-то 7B параметров, не удивительно, что специальных знаний там нет.
Креативность - на мой взгляд, не очень (хотя я интуитивно сравниваю с ChatGPT). При температуре=0.1 отвечает сухо, при 1.0 часто возможен бред; да и вообще стилистика не очень.
Имхо, для вопросно-ответных задач модель очень даже подходит.
К слову - что там с API для российских нейросетей?
Хотя я и сказал, что развернутая Сайга-Мистраль - это третья русская нейросеть, публично доступная по API, но мне бы хотелось на пару минут обратиться к тому, на каких условиях предоставляются API к YaGPT и GigaChat. (Дисклаймер: все дальше - исключительно личное предвзятое мнение, да)
Ключевые моменты, которые меня не очень порадовали:
Доступ на стадии Preview, по запросу, количество мест для тестирования ограничено (во всяком случае на момент написания этой статьи) (Из плюсов: вроде как на этапе Preview запросы не тарифицируются).
"Чтобы повышать качество генерируемых ответов, YandexGPT логирует промпты пользователей. Не передавайте в запросах чувствительную информацию и персональные данные." (не очень, но я их в целом понимаю)
Интерфейс частично не совместим с OpenAI API (для меня, пожалуй, самое критичное). chat вместо chat/completions, параметры генерации передаются по-другому.
Большой плюс - почти полная совместимость с OpenAI API, за это прям спасибо.
Легкий минус - API ключи в OpenAI обычно стабильные, но тут сделан "корпоративный" вариант, и токен доступа живет только 30 минут, после чего надо отдельным запросом его обновлять. Для частной разработки, имхо, это очень неудобно.
Пока тоже в Preview-режиме, и "доступ только для юрлиц и ИП после заключения договора"
Сайга-Мистраль у нас (просто для сравнения)
Полная совместимость с OpenAI API
Достаточно бесплатно зарегистрироваться и получить API ключ; он постоянен до тех пор, пока вы его сами не смените.
Заключение
Заходите, пробуйте. Не знаю точно зачем, но я очень доволен тем, что запустил для общего пользования ещё одну русскоязычную нейросеть. По моему мнению, альтернативы - это всегда хорошо, и сообществу стоит прикладывать усилия, чтобы поддерживать их существование.
Поэтому если есть возможность и желание - расскажите другим про этот проект, дайте ссылку на эту статью. Если не хотите рассказывать про сервис - расскажите про опенсорсную Сайгу. Небольшие проекты никогда не смогут давать о себе столько рекламы, сколько корпорации - поэтому если вы хотите их поддержать, пожалуйста, говорите про них. Спасибо.
Комментарии (19)
wesker_96
18.10.2023 12:43Круто, сервисом пользуюсь, спасибо! Какая GPU используется (и сколько)? Сервер на личных мощностях развернут или арендованные?
janvarev Автор
18.10.2023 12:43Спасибо :) GPU арендованная серверная, A10. Пробовал гонять на старой Nvidia T4 - получилось почему-то оооочень медленно.
Вообще история с GPU - это так скажем, показать модель. Я не думаю, что я отобью её аренду при таких ценах на генерацию, это скорее про фан :)
wesker_96
18.10.2023 12:43+1Да, это вам спасибо, можно сказать, что на практике с нейронками я познакомился с вашего проекта "Ирина":) Да, цены на сервера с GPU, скажем так, не радуют... Одно время сам присматривался, арендовать на поиграться, но по итогу отказался, для меня слишком дорогое удовольствие.
С такими ценами на генерацию, я полагаю, через модель нужно пропустить порядка 1М символов для достижения окупаемости.) Штош, кто знает, кто знает...
janvarev Автор
18.10.2023 12:43Там 0.04 руб за 1000 символов - т.е. 40 р за 1М - это где-то 1.5 часа аренды сервера ))) так что по-моему, без шансов ) Вот если бы 1000М знаков, то да, но я что-то слабо себе представляю желающих столько генерировать.
С другой стороны, куча сетей вообще раздают генерации бесплатно ради набора пользователей, и приходится соответствовать. Правда, у OpenAI и Antropic инвестора...
iamoblomov
18.10.2023 12:43А сколько памяти надо? В 11 гигабайт реально уместить?
janvarev Автор
18.10.2023 12:43Вроде да. GGUF 4 бит квантование точно, 8 бит вроде тоже да - но там впритык.
QtRoS
18.10.2023 12:43Есть ли GGML/GGUF версия этой модельки?
janvarev Автор
18.10.2023 12:43Есть - https://huggingface.co/IlyaGusev/saiga_mistral_7b_gguf - только вроде классический запуск не учитывает специфичные токены модели, и поэтому качество может проседать.
Filipp42
18.10.2023 12:43+1Скажите, есть ли у вас соображения, почему такая маленькая модель показала такие успехи? Можно ли масштабировать? Ходят слухи, что Open Assistant 70B должен будет обогнать ChatGPT. Это возможно?
janvarev Автор
18.10.2023 12:43Сложно сказать, но пример Мистраль воодушевляющий.
Насчет обгона ChatGPT - думаю, в ближайшем будущем это будет сделано, так или иначе. Вот даже картинка из статьи Ильи: https://habr.com/ru/articles/759386/
Где показано, что Сайга2_70b уже выигрывает в оценках пользователей по сравнению с ChatGPT (turbo). Так что результат, в общем-то, не за горами.
zartdinov
Интересно, действительно ли надо реализовывать свой API, может как-то с помощью LiteLLM или Oobabooga можно, пока не очень понимаю.
janvarev Автор
Можно, но там проблемы с токенизацией. У Ильи сделаны спецсимволы на end message.
Впрочем, можно и обычным способом запустить, да - просто качество будет похуже без точного следованию паттерну, на котором тренировалась модель. Я видел, так запускают, результаты тоже есть.
zartdinov
Похоже у людей с Oobabooga такая же проблема:
https://github.com/oobabooga/text-generation-webui/issues/4111
janvarev Автор
Мистраль, я думаю, допилят - уж очень популярна.
А вот у Сайги - опять же, по описанию что я видел у Ильи - вообще кастомные токены < /s >, так что вроде там их только ручками пока расставлять.
alex50555
У MistralOrca такие токены видел. И она вроде немного лучше дефолтной Mistral, по крайней мере, участвовал в LLM examle на Kaggle, там она давала немного лучший скор.