Сайга-Мистраль — третья русская нейросеть после YaGPT и GigaChat, публично доступная по API

Я уже недавно писал на Хабре, что понемногу пилю свой сервис 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. (Дисклаймер: все дальше — исключительно личное предвзятое мнение, да)

YandexGPT — страница описания

Ключевые моменты, которые меня не очень порадовали:

  1. Доступ на стадии Preview, по запросу, количество мест для тестирования ограничено (во всяком случае на момент написания этой статьи) (Из плюсов: вроде как на этапе Preview запросы не тарифицируются).

  2. «Чтобы повышать качество генерируемых ответов, YandexGPT логирует промпты пользователей. Не передавайте в запросах чувствительную информацию и персональные данные.» (не очень, но я их в целом понимаю)

  3. Интерфейс частично не совместим с OpenAI API (для меня, пожалуй, самое критичное). chat вместо chat/completions, параметры генерации передаются по-другому.

GigaChat — страница описания

  1. Большой плюс — почти полная совместимость с OpenAI API, за это прям спасибо.

  2. Легкий минус — API ключи в OpenAI обычно стабильные, но тут сделан «корпоративный» вариант, и токен доступа живет только 30 минут, после чего надо отдельным запросом его обновлять. Для частной разработки, имхо, это очень неудобно.

  3. Пока тоже в Preview-режиме, и «доступ только для юрлиц и ИП после заключения договора»

Сайга-Мистраль у нас (просто для сравнения)

  1. Полная совместимость с OpenAI API

  2. Достаточно бесплатно зарегистрироваться и получить API ключ; он постоянен до тех пор, пока вы его сами не смените.

Заключение

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

Поэтому если есть возможность и желание — расскажите другим про этот проект, дайте ссылку на эту статью. Если не хотите рассказывать про сервис — расскажите про опенсорсную Сайгу. Небольшие проекты никогда не смогут давать о себе столько рекламы, сколько корпорации — поэтому если вы хотите их поддержать, пожалуйста, говорите про них. Спасибо.

© Habrahabr.ru