Несмотря на то, что сейчас
Я уже полгода веду проект VseGPT.ru с доступом к разным LLM из России по OpenAI API (ну, и через вебчат). Львиная доля работы — подключение новых нейросетей. Сейчас их уже свыше 60, и каждую я попробовал хотя бы раз, ну, когда подключал.
Правда, сайт LLMExplorer, собирающий данные об опенсорс нейросетях с портала Hugging Face, говорит, что их там уже более 33 000 штук. М-да.
В общем, вероятно, я не знаю о текстовых сетках всё, но определенно знаю кое-что — хотя бы в пределах своего скромного опыта в 60 сеток. Так что кому интересно — прошу под кат.
❯ Небольшие вводные
Коротко для тех, кто не знает: текстовые нейросети делятся на проприетарные и опенсорсные.
Проприетарные предоставляются соответствующими компаниями по API (т.е. веса для них недоступны, запустить их у себя нельзя). Самые известные из них это:
- OpenAI: ChatGPT, GPT-4, GPT-4-Turbo
- Claude: 1, 2, 3 Haiku, Sonnet, Opus
- Google: Palm, Gemini Pro
- ну и некоторые другие, например Mistral, Perplexity.
Компании эти запускают эти модели на своих серверах (это быстро, это плюс), но под своими условиями доступа к API (это минус, условия бывают очень разные).
Также есть опенсорсные текстовые нейросети — веса для них выложены, любой желающий может их дотюнить (дотренировать) под свои задачи, и запускать совершенно независимо от оригинального автора (детали лицензий мы сейчас опускаем)
Это конечно, несомненный плюс, но несомненным минусом является то, что предоставлять инстанс (т.е. сервер, обрабатывающий модель) никто не будет, и нужно запускать её самостоятельно — что часто очень дорого (т.к. надо арендовать машину с GPU) или медленно (если вы используете оптимизации и гоняете модель на CPU).
В опенсорсе также есть понятие базовых моделей и дотюненных моделей.
Базовая модель тренируется с нуля какой-то большой компанией (потому что затраты на тренировку с нуля велики), а затем выкладывается в опенсорс. Дальше, уже небольшими усилиями энтузиасты дотренировывают базовую модель на своих данных под конкретные задачи.
Наиболее известные и часто используемые базовые модели сейчас это:
- Llama2 7B, 13B, 70B от компании Meta* (признана экстремистской и запрещена в России)
- Mistral 7B, Mixtral 8x7B от французского стартапа Mistral
- Yi-34B (от китайской компании 01.ai с фокусом на английском и китайских языках)
Цифры в конце означают число параметров в модели — чем больше, тем модель в целом умнее в плане следования логике, но тем дороже обходится её дотренировка и запуск. Дотюненные модели обычно сохраняют имена или размеры базовых моделей в своем названии, так что обычно всегда можно понять, на какой базе дотренировывалась модель.
Давайте теперь быстро по общим принципам подбора.
❯ Общие принципы подбора моделей под свои задачи
Больше — лучше, но дороже и медленнее
Как правило, у компаний есть более слабые и более сильные модели (тот же ChatGPT против GPT-4) — и это связано с числом параметром в них.
Если вам нужно максимальное качество, нужно выбирать самую дорогую модель (или модель с большим числом параметров в опенсорсе, и там она обычно тоже будет дорогой — т.к. чем больше модель, тем дороже аренда сервера для её запуска)
Если вы решаете массово какие-то простые задачи в духе “определи тональность этого текста”, имеет смысл выбрать более дешевые и простые модели.
Выбирайте свежее
Как правило, чем позже была выпущена модель, тем на большем числе данных и с большими известными оптимизациями она тренировалась (например, более поздняя Mistral 7B находится на уровне более крупной Lllama 13B). Также обычно более поздние модели предоставляются дешевле, т.к. для них уже придуманы какие-то оптимизации.
Исключение — OpenAI со своими моделями; более поздние они “затачивают” под какие-то одни задачи (вроде как под то, что нужно пользователям), но иногда происходит ухудшение на каких-то других задачах. Например, более поздняя GPT-4-Turbo на некоторых задачах рассуждения уступает оригинальной GPT-4; но в часто встречающихся задачах кодинга она показывает лучшие результаты.
Не стоит СЛИШКОМ доверять бенчмаркам
Уже есть достаточно много стандартизированных бенчмарков для сравнения моделей — например, для решения математических задач, задач программирования, общих вопросов по специальным сферам и пр.
Вроде надо выбирать лучшее по бенчмаркам, нет?
По моему личному опыту — скорее, нет.
Во-первых, бенчмарки, как правило, опираются на английские, а не на русские тесты.
Во-вторых, в бенчмарках, задача, как правило, ставится очень узко и конкретно. Конечно, если у вас задача один-в-один повторяет какие-то задачи бенчмарка, то, конечно, имеет смысл его учитывать. Но, к сожалению, я видел ситуации, когда модель хорошо показывает себя на бенчмарках, но при этом плохо себя показывает в реальных условиях (Google Gemma 7B, привет!)
Есть, правда, один рейтинг, который имеют хорошую репутацию в профессиональных кругах — это Arena Leaderboard. Там юзеры сами делают запрос к двум нейросетям, а затем оценивают, какой ответ лучше. Возникает набор оценок “выиграл-проиграл”, на основании которых считается рейтинг ЭЛО — и чем выше рейтинг, тем выше вероятность того, что модель ответит лучше, чем другая модель с более низким рейтингом.
Однако число моделей в этом рейтинге невелико (иначе было бы слишком сложно все это поддерживать), и часто к нему прибегают только, чтобы поспорить о том, какая модель “самая лучшая” (сейчас верхние строки таблицы занимают Claude 3 Opus и GPT-4-Turbo, причем за время написания этой статьи Опус успел обогнать GPT-4, что стало целой новостью в тематических каналах)
Ну, а теперь давайте перейдем к конкретным рекомендациям.
❯ Конкретные задачи
В качестве примеров я обычно буду приводить модели, доступные на VseGPT — просто потому, что я с ними сам работал.
Для начала…
Я бы предложил поработать с:
- Старым добрым ChatGPT
- Google Gemini Pro (модель у Гугла получилась неплохая и недорогая)
- Claude 3 Sonnet (последний Claude 3 выдает очень приличные эмоциональные ответы)
Если с нейросетью работает бизнес и нельзя передавать данные зарубеж…
…то надо обратиться к провайдерам, которые держат обработку в России — предполагаю, что сейчас это в основном Яндекс c YaGPT и Сбер с GigaChat.
Либо использовать опенсорсные нейросети с хорошей поддержкой русского. Из того, что знаю:
- OpenChat 7B (пробовал, очень приличная опенсорс для 7B модели, сравнима с ChatGPT),
- Starling 7B DPO (не пробовал, но слышал хорошие отзывы),
- Сайга-Мистраль-7B (имхо, несколько устарела, но делалась нашим разработчиком),
- Mixtral 8x7B (на удивление неплохо обрабатывает русский)
Если есть требование “не выпускать данные за контур предприятия”, то вообще останутся только указанные выше опенсорсные сети.
Если нужно максимально дешево…
…используйте:
- Google Gemini Pro
- Claude 3 Haiku
- OpenChat 7B (можно дать этой опенсорсной сети шанс)
При работе с этими сетями генерации получаются в 1.5-2 раза дешевле, чем с самым последним ChatGPT (01-25).
Если нужно решать задачи программирования…
…я использую GPT-4-Turbo. Возможно, Opus или опенсорсная сеть типа Codellama 70B Instruct также решила бы мои задачи, но это надо сидеть и экспериментировать — а времени очень не хватает.
Полгода назад я использовал для программирования простой ChatGPT и очень об этом жалею — мне приходилось править мелкие недостатки в коде руками, но тогда я считал это нормальным. GPT-4-Turbo при хорошей постановке задачи сразу пишет весьма хороший объемный код.
Если нужно обработать большие файлы…
…то надо смотреть, какой размер контекста у модели. Чем больше контекст, тем больше данных влезет в модель для обработки.
Но тут эволюция идет очень быстро, имеет смысл следить за изменениями.
Где-то в июне 2023, базовая ChatGPT имела контекст в 4096 токенов, 16к-версия была прилично дороже, а базовая GPT-4 имела контекст в 8000 токенов. Опенсорсные модели же запускались на 2К контекста, и пользователи жаловались, что диалог туда почти не влезает.
Сейчас же базовая ChatGPT имеет контекст на 16К токенов, опенсорс варьируется от 4К до 32К, а GPT-4-Turbo использует контекст в 128К (хотя это дорого).
Так что — если вы обрабатываете небольшие статьи, то вы обычно можете выбирать модель по своему вкусу.
Если же все-таки нужен большой контекст, то рекомендую смотреть в сторону вышедшей в начале марта Claude 3.
Anthropic, компания, выпускающая Claude, пытается конкурировать с OpenAI на поле “у кого больше контекст”.
Сейчас самый большой доступный контекст у серии Claude 3 — 200К токенов, при этом можно выбрать из нескольких моделей:
- Haiku позволит обработать этот контекст очень дешево (несравнимо с GPT-4), но достаточно тупо.
- Sonnet — средняя по качеству
- Opus — самая качественная
В общем, рекомендую.
Также, из альтернатив есть:
- GPT-4-Turbo на 128К контекста (но выйдет дорого)
- Google Gemini Pro 1.5 на 1M контекста — де факто, конечно, самый большой контекст у неё. Но она только что вышла, и не очень недоступна в сторонних API, только у самого Гугла (не в России) и вообще там очень жесткие ограничения на число запросов. Но отзывы я слышал хорошие.
Совет: если будете отправлять большой текст в Claude в качестве контекста — обрамляйте его в XML-теги, как рекомендует официальная инструкция. Без этого конкретно модели Claude, по опыту, работают несколько хуже.
Если нужен перевод…
…то можно ознакомиться с бенчмарком по переводам, который лично я веду в рамках своего опенсорс проекта, и в котором тестирую всё свежевыходящее.
Коротко — чем умнее сеть, тем лучше перевод.
Но особенно могу рекомендовать Claude 3 Opus. Сложно сказать, что у Claude с логическим мышлением, но именно с художественностью текста они работают на прекрасном уровне.
По бенчмарку Claude 3 Opus сопоставим с хитрым агрегатором, который выбирал лучшие из переводов Яндекс.Переводчика, DeepL и Claude 2 (добавление в эту тройку Google Translate даже понижало метрики).
Если же вам нужен самый дешевый переводчик — рекомендую взять Google Gemini Pro или Claude 3 Haiku; или даже бесплатный совершенно обычный Google Translate — по моим метрикам он вполне на уровне.
Если нужен сторителлинг (написание художественного текста) или ролеплей (взаимодействие с выдуманным персонажем)…
…то есть два пути.
Официальные модели от больших компании используют фильтры, чтобы не отвечать на некоторые вопросы по “чувствительным” темам.
Например, сейчас запрос про попа в ChatGPT проходит нормально, а раньше вызывал срабатывание фильтра.
Если вы уверены, что вы не затронете чувствительные темы в своем диалоге — моя рекомендация — Claude 3 Sonnet или более дорогая Opus.
Я до этого пробовал ролеплеить с ChatGPT и было несколько… механистично. Ролевики посоветовали Claude и, должен сказать, художественный текст у неё получается сильно лучше.
Кроме того, контекст в 200К для больших текстов — это прям конечно очень хорошо. Я в своей практике добирался до 20К в диалоге, и было очень приятно, когда модель помнила что-то из самого начала.
Если же на ваш запрос вы получаете постоянно что-то в духе “Я большая языковая модель, и мне некомфортно говорить на эту тему, давайте о чем-нибудь другом” — имеет смысл обратиться к опенсорсным моделям.
Но тут есть нюанс — как правило, эти модели тренировались на английском языке. И, опять же, возможны несколько вариантов:
- Взаимодействовать на английском. Качество хорошее, но лично мне несколько некомфортно в качестве развлечения писать и читать на иностранном.
- Взаимодействовать на русском. Большие модели (70B) это даже потянут, но качество будет просто на порядок хуже, чем на английском.
- Встроить в середину переводчик — переводить весь вход на английский язык, а генерации модели — на русский. На мой взгляд, этот вариант работает лучше всего.
Например, в довольно известной программе для ролеплея Silly Tavern вариант с переводчиком можно включить с помощью плагинов — потому что много пользователей по всему миру просило. На VseGPT я напрягся и сделал для большинства open source-моделей их translate-версии — когда сервис при вызове генерации переводит весь вход на английский, а выход — на русский.
Что из моделей можно посоветовать? (Буду писать только то, что на сервисе, и что я немного пробовал)
- Toppy M 7B, Mythomist 7B — 7B модели, к сожалению, глуповаты по поводу фактов, но у них большой контекст — 32000 токенов. Квазихудожественный текст генерируют неплохо.
- Mythalion 13B, Psyfighter 13B — 13B модели, которые тренировались в том числе на фанфиках. Неплохо выдают художественный текст, но хуже следуют инструкциям.
- Dolphin 2.6 Mixtral 8x7B, Noromaid Mixtral 8x7B Instruct, Nous: Hermes 2 Mixtral 8x7B DPO — 8x7B модели, хорошо следуют инструкциям, но креативность у них, на мой взгляд, не очень.
- lzlv 70B, Midnight Rose 70B — довольно хорошие 70B модели с балансом между следованию промту и художественности текста. lzlv более склонна к коротким ответам, и тренировалась довольно давно. Midnight Rose склонна к более длинным художественным описаниям, и довольно свежая.
Совет: опенсорс модели более капризные в настройке, чем проприетарные. Я рекомендую при взаимодействии с ними сразу устанавливать температуру меньше 1 — от 0.7 до 0.95, а также задавать штраф за повторы — очень любят повторяться.
Если нужно получать в ответе актуальную информацию…
…используйте модели Perplexity.
Нет, понятно, что если вы работаете руками, можно воспользоваться онлайновым Google Bard или Bing — они тоже по запросу попытаются найти информацию в интернете. Но если нужно сделать в вашем приложении запрос по API и получить ответ на основе актуальной информации — такую фичу предоставляет только Perplexity. (Я слышал, что Сбер хочет выпустить GigaSearch с подобной функцией, но пока он не доступен)
Совет: из всех предложенных Perplexity моделей используйте pplx-70b-online — она лучше всего отвечает на русском языке. Еще у Perplexity есть 7b-модель, а также модели sonar — по моему опыту русские ответы там значительно хуже.
Примеры:
Также можно попросить проанализировать ссылку:
Интересный факт:
На сайте Peprlexity в своем собственном интерфейсе выдает ответы на вопросы со ссылками на источники — так, что можно проверить, откуда сеть взяла свои факты. Пользователи очень просят добавить возможность получать список источников при вызове по API — но пока, несмотря на все просьбы, этой функциональности нет.
Если нужно решать задачи SEO и копирайтинга…
…я бы рекомендовал попробовать модели с неплохим русским языком, отличные от ChatGPT — например, Google Gemini Pro или Claude 3 Sonnet.
Попробуйте несколько и посмотрите, что вам лучше подойдет.
❯ А что дальше?
В LLM-сообществе ожидаются 2 вещи:
Во-первых, OpenAI не будут мириться с тем, что Anthropic со своим Opus отнимает у них рынок и выкатят GPT-5, которая, вероятно, вновь станет лучшей сеткой. Учитывая, что GPT-4 была выпущена в марте 2023, у них был целый год, чтобы натренировать новую модель — и думаю, характеристики у неё будут высокие.
Во-вторых, LLama3, как новый базис для опенсорсных сетей, обещают в июне-июле. По слухам, для тренировок закупают какие-то тонны GPU, и вычислительных мощностей на новую Ламу потратят чуть ли не больше чем на GPT-4, что положительно скажется на качестве. Как только выпустят, вероятно, большинство энтузиастов возьмут свои собранные датасеты, быстро затюнят новые Ламы и выложат свои модели уже на новой базе — и придется подключать, подключать, подключать…
Модели, конечно, будут меняться, а, значит, этот туториал будет устаревать, но, надеюсь, базовые принципы подбора сеток под свои задаче, указанные вначале — искать больше и свежее — останутся неизменными.
Если есть какие-то вопросы по сетям — задавайте в комментариях, постараюсь по мере своего скромного опыта ответить.
Возможно, захочется почитать и это:
- ➤ Нейросеть мне в помощь или как я сделал телеграм бота, который умеет переводить песни
- ➤ MiniGPT-4, ты что за зверь такой?
- ➤ Подбор цветов для проекта: советы и сервисы
- ➤ Сам себе экосистема. Часть 4: как я реализовал клиент Telegram на Android-смартфоне 14-летней давности?
- ➤ Лучшее время для инди-игр и скандал со Sweet Baby Inc: что происходит с игровой индустрией
Новости, обзоры продуктов и конкурсы от команды Timeweb.Cloud — в нашем Telegram-канале ↩
Комментарии (19)
ainu
08.04.2024 09:17+3Больше месяца назад перешёл с GPT4 на Opus, доволен, чаще всего это замена гугла и кодогенерация.
JenyaNorilsk
08.04.2024 09:17Спасибо, нашёл обзор полезным, но, лично мне, не хватило такого же абзаца про RAG на русском языке при условии опенсорса: какие модели трогать не стоит, какие могут быть полезны и т.п. Посоветуете что-нибудь?
janvarev Автор
08.04.2024 09:17+1Если опенсорс, то в целом рекомендую вышеуказанные модели про "опенсорс на русском" в самом начале статьи. Выбирать не так много из чего, к сожалению.
Но вообще RAG сейчас это да - скорее искусство, потому что уж очень много подходов. Можно по эмбеддингам фрагменты вытаскивать, можно искать разделы документов или целые документы и т.д.
Имхо простейший оптимальный способ - забить документ в 200к токенов контекста Клауд 3 Хайку, и все ок. Но, конечно, на очень больших базах такое не работает - и тут надо придумывать. Ну, и конечно, Хайку не опенсорс, локально не поставишь.
Kristaller486
08.04.2024 09:17+1Рекомендую попробовать Cohere Command-R и Command-R+ (последняя 104B, очень дорого запускать). Модель отдельно дообучена для RAG и у неё в pretrain датасете был русский язык. Одно но - лицензия запрещает коммерческое использование, но "для дома" самое оно.
janvarev Автор
08.04.2024 09:17Да, она у меня тоже есть, но запускается через API Cohere, в соответствии с их лицензией.
Для дома да, к сожалению, тяжелая...
AlexeyPi
08.04.2024 09:17Кто-нибудь знает как получать summary из YouTube видео на русском если субтитры есть?
Gemini делает это видео на английском, но не русском.
janvarev Автор
08.04.2024 09:17https://pypi.org/project/youtube-transcript-api/ - для получения сабов. Потом объединяем все в один текст и скармливаем в OpenAI API, просим сделать summary.
venanen
08.04.2024 09:17https://300.ya.ru/
На удивление очень прикольно работает, и субтитры не нужны.
Tihron
08.04.2024 09:17Очень долго интересуюсь нейронными сетями, пытаюсь реализовывать кодом некоторые структуры и обучать их.Это весело, но очень часто бывают проблемы с тем, чтобы найти подходящий датасет для обучения.
Сейчас пишу трансформер, sequence2sequence, но не знаю, где можно взять датасет, а, главное, как его читать. Читал про токены, часть текста заменить некоторым числом, но не могу найти внятной информации по тому, как превращать текст в токены
С числами было проще, их самому можно было нарисовать и расписать по разным папкам для классификатора. Есть ли какие-то рекомендации? Заранее спасибо.
venanen
08.04.2024 09:17Можно взять конкретный токенизатор, готовый и обученный. Например, на hugging face, какой-нибудь от BERTa.
Extender
08.04.2024 09:17Gemini Pro 1.5 пишет классные рассказы на русском. В стиле Пелевина ваще угар. Claude почему то пишет на русском скучно и тупо. Но зато программирует лучше! Даже Haiku пишет код лучше чем я
Malyok
08.04.2024 09:17Что бы вы посоветовали взять за основу для реализации системы вопрос-ответ на базе своих текстов? Задача обучить модель по своим текстам/инструкциям и в дальнейшем использовать как условный чат-бот для ответов по данной выборке. Минимизация ресурсов очень важна, выход за контекст дообученного материала не нужен и не приветствуется.
janvarev Автор
08.04.2024 09:17Вы задаете вопрос про RAG, я про него писал комментарий: https://habr.com/ru/companies/timeweb/articles/805261/comments/#comment_26701343
В целом вы ищете "серебряную пулю" - минимизация ресурсов и точность ответов. Как сваять - никто не знает.
APXEOLOG
Большая часть из них - файт-тюны других открытых моделей под конкретные задачи (в духе "лучше сочиняет стихи о желтых бабочках")
ChatGPT это не модель, это сайт. Общаться там можно с разными моделями (gpt-3.5, gpt-4, gpt-4-vision, etc)
У них вроде нет "своей" модели, просто файн-тюн и инфраструктура вокруг GPT/Claude
Число моделей там невелико именно потому, что моделей, которые имеет смысл тестировать (т.е. это модели общего назначения, способные сгенерировать хоть что-то вменяемое при zero-shot), довольно мало. Натренировать модель уровня GPT 3.5 стоит несколько миллионов долларов, мало кто может себе позволить такие вложения
janvarev Автор
Я в курсе, но, увы, приходится частично использовать терминологию широкой публики (упоминание в виде модели ChatGPT 4 меня вообще коробит)
М-м. Ну вообще-то нет. Своя модель у них натренирована сначала поверх Llama (я новость писал даже на Хабре), потом Sonar. Да, файнтюн опенсорса, но под задачи "ответить на вопрос по результатам поиска в Интернете" - имхо достойно. Под капотом там не Клауд/GPT-3.5 - во всяком случае, по заявлениям, потому что свечку я не держал.
Файнтюны имеет смысл тестировать, они, как правило, лучше исходных моделей - иногда СИЛЬНО лучше. Впрочем, тут возможны разные мнения, и я бы предпочел не погружаться в этот спор. В основном, конечно, сайт тестирует всякий топ.
APXEOLOG
Вот тут они предлагают возможность использовать Claude/GPT, что наталкивает меня на мысль о том, что у них просто обвязка вокруг LLM.
janvarev Автор
Нет, там же написано "Our default model has been optimised for the fastest results and for web browsing with dedicated fine tuning to ensure it performs best with quick searches. "
А так они предлагают купить подписку, и кроме их собственных моделей юзать еще Claude/GPT - но не для поиска, а просто так.
К тому же говорю - у них под капотом кроме модели еще веб-поиск, чего нет в других моделях по API, что приятно.