GPT-4, Claude 3, Gemini Pro или опенсорс — как выбрать LLM под свою задачу?

image

Несмотря на то, что сейчас из каждого утюга рекламируется доступ к ChatGPT и GPT-4, вообще говоря, в мире существует несколько больше разных поставщиков LLM (больших языковых моделей), и некоторые из которых могут гораааздо более эффективнее решать какие-то конкретные задачи.

Я уже полгода веду проект 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 8×7B от французского стартапа 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, что стало целой новостью в тематических каналах)

image

Ну, а теперь давайте перейдем к конкретным рекомендациям.

Конкретные задачи


В качестве примеров я обычно буду приводить модели, доступные на VseGPT — просто потому, что я с ними сам работал.

Для начала…


Я бы предложил поработать с:

  • Старым добрым ChatGPT
  • Google Gemini Pro (модель у Гугла получилась неплохая и недорогая)
  • Claude 3 Sonnet (последний Claude 3 выдает очень приличные эмоциональные ответы)


Если с нейросетью работает бизнес и нельзя передавать данные зарубеж…


…то надо обратиться к провайдерам, которые держат обработку в России — предполагаю, что сейчас это в основном Яндекс c YaGPT и Сбер с GigaChat.

Либо использовать опенсорсные нейросети с хорошей поддержкой русского. Из того, что знаю:

  • OpenChat 7B (пробовал, очень приличная опенсорс для 7B модели, сравнима с ChatGPT),
  • Starling 7B DPO (не пробовал, но слышал хорошие отзывы),
  • Сайга-Мистраль-7B (имхо, несколько устарела, но делалась нашим разработчиком),
  • Mixtral 8×7B (на удивление неплохо обрабатывает русский)


Если есть требование «не выпускать данные за контур предприятия», то вообще останутся только указанные выше опенсорсные сети.

Если нужно максимально дешево…


…используйте:

  • 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 проходит нормально, а раньше вызывал срабатывание фильтра.

image

Если вы уверены, что вы не затронете чувствительные темы в своем диалоге — моя рекомендация — 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 8×7B, Noromaid Mixtral 8×7B Instruct, Nous: Hermes 2 Mixtral 8×7B DPO — 8×7B модели, хорошо следуют инструкциям, но креативность у них, на мой взгляд, не очень.
  • 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 — по моему опыту русские ответы там значительно хуже.

Примеры:

image

Также можно попросить проанализировать ссылку:

image

Интересный факт:

На сайте Peprlexity в своем собственном интерфейсе выдает ответы на вопросы со ссылками на источники — так, что можно проверить, откуда сеть взяла свои факты. Пользователи очень просят добавить возможность получать список источников при вызове по API —, но пока, несмотря на все просьбы, этой функциональности нет.

Если нужно решать задачи SEO и копирайтинга…


…я бы рекомендовал попробовать модели с неплохим русским языком, отличные от ChatGPT — например, Google Gemini Pro или Claude 3 Sonnet.

Попробуйте несколько и посмотрите, что вам лучше подойдет.

А что дальше?


В LLM-сообществе ожидаются 2 вещи:

Во-первых, OpenAI не будут мириться с тем, что Anthropic со своим Opus отнимает у них рынок и выкатят GPT-5, которая, вероятно, вновь станет лучшей сеткой. Учитывая, что GPT-4 была выпущена в марте 2023, у них был целый год, чтобы натренировать новую модель — и думаю, характеристики у неё будут высокие.

Во-вторых, LLama3, как новый базис для опенсорсных сетей, обещают в июне-июле. По слухам, для тренировок закупают какие-то тонны GPU, и вычислительных мощностей на новую Ламу потратят чуть ли не больше чем на GPT-4, что положительно скажется на качестве. Как только выпустят, вероятно, большинство энтузиастов возьмут свои собранные датасеты, быстро затюнят новые Ламы и выложат свои модели уже на новой базе — и придется подключать, подключать, подключать…

Модели, конечно, будут меняться, а, значит, этот туториал будет устаревать, но, надеюсь, базовые принципы подбора сеток под свои задаче, указанные вначале — искать больше и свежее — останутся неизменными.

Если есть какие-то вопросы по сетям — задавайте в комментариях, постараюсь по мере своего скромного опыта ответить.


Возможно, захочется почитать и это:

Новости, обзоры продуктов и конкурсы от команды Timeweb.Cloud — в нашем Telegram-канале


b5pjofdoxth14ro-rjsrn7sbmiy.png

© Habrahabr.ru