В последние годы большие языковые модели (LLM) стали важной частью бизнес-решений на базе ИИ, применяемых для генерации текста и анализа данных. Однако, большинство разработок ориентированы на англоязычные проекты, что создает сложности для компаний, работающих с русскоязычными данными.
Готовые LLM для русского языка часто показывают низкую точность и ограниченные возможности. Проблемы конфиденциальности также вынуждают компании выбирать локальные модели.
Наша компания давно занимается искусственным интеллектом и стала часто получать подобные запросы от клиентов — создание ИИ-решения с локальной обработкой данных. Мы задались вопросом, какие LLM хороши для таких решений, что мы можем предложить заказчику? Всё это вылилось в большой рисеч разных языковых моделей.
В статье рассмотрим, какие LLM подходят для задач на русском языке, протестируем их по разным параметрам и выявим лидеров. Мы оценили генерацию текста, ответы на вопросы, исправление ошибок и другие функции.
Содержание (лонгрид)
Задачи исследования
Цель данного исследования — оценить несколько больших языковых моделей (LLM), которые могут быть использованы для проектов, связанных с русским языком, и выбрать оптимальное решение для локальной работы с документами и текстами.
Мы выбрали следующие аспекты работы с текстом и данными, для выявления наилучшей LLM:
-
Генерация текста:
Генерация связного текста
Ответы на известные вопросы
Ответы на вопросы в формате диалога
Исправление грамматических ошибок
-
Структуризация текста:
Краткий пересказ текста
Ответы на вопросы по тексту
Извлечение структурированных данных
Написание SQL-запросов
Для применения LLM на практике модель должна не только хорошо генерировать текст, но и справляться с различными типами запросов: от корректировки грамматики до создания сложных SQL-запросов. Навыки составления SQL-запросов крайне важна, потому что помогает LLM доставать нужную информацию из БД, ведь не всегда у заказчика в качестве входных данных используются документы.
Поэтому каждую модель мы тестировали по этим задачам и оценивали, насколько она готова к применению в реальных бизнес-задачах.
Какие модели мы тестировали?
В рамках исследования были протестированы 6 самых перспективных на наш взгляд больших языковых моделей (LLM), доступных для работы с русским языком. Каждая из которых имеет свои уникальные особенности.
OpenChat 3.5 — мультиязычная модель с открытым исходным кодом, обученная на множестве данных с различных языков, включая русский. Модель предназначена для обработки запросов, генерации текста и выполнения других задач, связанных с естественным языком.
YandexGPT — разработка компании Яндекс, оптимизированная для работы с русским языком. Модель доступна через платное API, что ограничивает её использование в локальных системах.
GigaChat — модель, разработанная компанией Сбербанк для мультиязычной поддержки, в том числе и русского языка. Она ориентирована на обработку текстов и генерацию контента.
Mistral — модель от одноимённого французского стартапа. На конец сентября 2023 года была лучшей LLM с размером 7 млрд параметров. Она используется для различных целей, от написания кода до генерации контента на множестве языков, включая русский.
Saiga-Mistral-7b-Lora — это версия модели Mistral, дообученная на русском датасете с использованием технологии LoRA (Low-Rank Adaptation). Модель специально адаптирована для задач на русском языке.
Saiga-Llama3-8b — версия модели Llama3, дообученная на русском датасете. Это мощная модель, способная выполнять задачи различной сложности, связанные с текстом.
Методология исследования
Все протестированные модели оценивались в одинаковых условиях по широкому спектру задач, чтобы объективно оценить их способности.
Сценарии
Для каждой задачи был разработан уникальный сценарий, часть из них была основана на реальных бизнес-кейсах. Это позволило имитировать ситуации, с которыми компании сталкиваются в повседневной работе с документами на русском языке.
Генерация текста: мы предложили моделям создать текст на заданную тему, например, описание дня туриста на Марсе или формальный приказ для юридической компании. Оценивались связность текста, грамматика и отсутствие вставок на английском языке.
Ответы на вопросы: моделям задавались простые вопросы (например, "Кто написал 'Ромео и Джульетту'?" или "Что такое теория относительности?"). Оценивалась точность и краткость ответов.
Ответы в диалоге: здесь проверялась способность моделей удерживать контекст разговора, когда несколько связанных вопросов задавались последовательно. Например: "Сколько весит Луна?" — "А Марс?" — "А в фунтах?" — "Какое расстояние между ними?".
Исправление ошибок: моделям предлагались тексты с ошибками, которые они должны были исправить, сохраняя оригинальный смысл и структуру текста.
Краткий пересказ текста: Мы предложили моделям пересказать длинные тексты (как художественные, так и юридические) в сжатой форме, сохраняя их основную суть.
Ответы на вопросы по тексту: мы предложили моделям ответить на три фактологических вопроса по различным текстам — художественному и юридическому документу.
Извлечение данных: моделям был представлен юридический текст, из которого они должны были извлечь такие данные, как имена, даты, суммы, типы документов, и представить их в формате JSON.
Написание SQL-запросов: модели должны были сгенерировать SQL-запросы на основе описания базы данных и условий запроса. Оценивались правильность синтаксиса и логика запроса.
Критерии оценки
Для каждой задачи были разработаны следующие критерии оценки:
Точность ответов — насколько правильно модель выполнила задачу.
Связность текста — насколько логичен и структурирован был текст, созданный моделью.
Ясность изложения — насколько ответ понятен человеку.
Грамматическая корректность — проверка на наличие грамматических и стилистических ошибок.
Креативность — насколько модель проявляет оригинальность в своих ответах.
Умение суммаризировать — насколько модель хорошо умеет составлять резюме на основе текста.
Общение на русском языке — насколько модели удается понимать контекст на русском языке.
Каждый критерий оценивался от 0 до 5, где 5 — наивысший балл, который может получить модель, если отлично выполнит поставленную перед ней задачу.
Также мы оценивали в целом выполнение задачи, насколько хорошо модели справились с поставленными задачами: 0 – модель вообще не справилась с задачей, 1 – справилась, но со значительными помарками, 2 – справилась почти идеально.
Среда тестирования
Все тестирования проводились в одинаковых условиях, используя Google Collab с заданными ресурсами:
ОЗУ: 53 GB
GPU: L4 GPU с объемом памяти 22.5 GB
Диск: 201.2 GB
Такой подход позволил обеспечить равные условия для каждой модели и оценить их производительность на одинаковом оборудовании.
Однако, если модель не справлялась с задачей с первого раза, промт редактировался для получения более точного результата. Это позволяло проверить гибкость и адаптивность моделей к изменениям запросов.
Результаты тестирования
Поскольку каждая модель тестировалась по определенной задаче, будет логично рассмотреть все 6 моделей в разрезе каждой задачи.
1. Генерация связного текста
Задача: модели должны были сгенерировать связный текст по заданной теме. В этой задаче хотели протестировать качество сгенерированного текста: грамматику, наличие вставок английских слов или букв, связность текста, стиль повествования и соответствие теме.
Использовалось два промта:
Второй промт предлагал составить юридический документ:
YandexGPT: Показала высокую связность и грамматическую правильность текста. Текст был логичным, стилистически правильным и без ошибок. Модель не использовала вставки английских слов, что сделало её результат почти идеальным для русскоязычных проектов (2 балла за выполнение).
Saiga-Mistral-7b-Lora: Также показала отличные результаты, генерируя текст высокого качества с хорошей структурой и минимальными ошибками. Текст был креативным и полностью соответствовал заданной теме (2 балла за выполнение).
OpenChat3.5: Результаты были удовлетворительными, однако встречались вставки английских слов и недочеты в структуре текста. Текст мог быть связанным, но не всегда соответствовал стилю или контексту (1 балл за выполнение).
GigaChat: Модель показала хорошие результаты. Текст был менее структурированным и встречались ошибки в согласовании предложений, но все равно модель заслужила высокий балл (2 балла за выполнение).
Mistral: Генерация текста была неплохой, но в некоторых случаях модель допускала синтаксические ошибки и не всегда удачно выбирала стиль текста (2 балла за выполнение).
Saiga-Llama3-8b: Текст был грамматически правильным, но менее связным по сравнению с лидерами. Иногда наблюдались небольшие несоответствия в стиле (1 балл за выполнение).
Лучшими моделями для генерации связного текста оказались YandexGPT и Saiga-Mistral-7b-Lora, обе модели обеспечили высокий уровень грамматической точности и стилевого соответствия.
2. Ответы на общеизвестные вопросы
Задача: модели должны были кратко и точно отвечать на вопросы, требующие общих знаний. Мы оценивали точность ответа и связность текста.
YandexGPT: Показала превосходные результаты. Модель отвечала кратко, точно и без ошибок. Поддерживался правильный стиль ответа без лишних отклонений (2 балла за выполнение).
Saiga-Mistral-7b-Lora: Хорошо справилась с задачей, давая точные ответы, однако иногда ответы были немного длиннее, чем требовалось (2 балла за выполнение).
OpenChat3.5: Модель часто повторяла вопрос в ответе, что делало ответы менее эффективными. Были недочеты в краткости и точности (1 балл за выполнение).
GigaChat: Ответы были неплохими, но иногда модель отклонялась от темы или давала излишне подробные ответы (2 балла за выполнение).
Mistral: Ответы были точными, но не всегда краткими. Модель иногда предоставляла дополнительные данные, что не требовалось (1 балл за выполнение).
Saiga-Llama3-8b: В целом справилась с задачей, дала хорошие ответы (2 балла за выполнение).
Лучшими моделями для точных и кратких ответов на вопросы стали YandexGPT и Saiga-Llama3-8b.
3. Ответы на вопросы в формате диалога
Задача: Модели должны были удерживать контекст и продолжать отвечать на вопросы в формате диалога. Мы задавали вопрос в несколько итераций, поскольку хотели проверить, насколько хорошо модель держит контекст. Оценивали точность ответа и связность текста.
YandexGPT: Отлично справилась с задачей. Модель удерживала контекст на протяжении всего диалога, четко и последовательно отвечала на вопросы, не теряя нить разговора (2 балла за выполнение).
Saiga-Mistral-7b-Lora: Показала хорошие результаты, удерживая контекст и отвечая на вопросы последовательно. Лишь в редких случаях ответы могли быть немного отклонены от основной темы (1 балл за выполнение).
OpenChat3.5: Модель плохо справлялась с диалогом, иногда теряла контекст, особенно при длинной последовательности вопросов (0 баллов за выполнение).
GigaChat: Результаты были средними. Модель иногда теряла контекст и давала ответы, которые не соответствовали предыдущим вопросам (1 балл за выполнение).
Mistral: Модель не хранит контекст, если задавать вопросы последовательно. Но отвечает на вопросы, заданные в одном промте (0 баллов за выполнение).
Saiga-Llama3-8b: Модель потеряла контекст при длинных диалогах и допускала ошибки в последовательности ответов (0 баллов за выполнение).
Лучшими моделями для ведения диалога оказались YandexGPT, GigaChat и Saiga-Mistral-7b-Lora, благодаря их способности точно поддерживать контекст.
4. Исправление грамматических ошибок
Задача: Исправить грамматические ошибки в тексте, сохраняя оригинальный смысл. Оценивали соответствие грамматическим нормам русского языка.
YandexGPT: Модель справилась практически идеально. Ошибки были исправлены грамотно и текст стал полностью правильным, однако присутствовали англоязычные слова (1 балл за выполнение).
Saiga-Mistral-7b-Lora: Показала высокие результаты. Модель успешно исправила ошибки и выдала грамматически правильный текст (2 балла за выполнение).
OpenChat3.5: Модель исправила текст, но оставила множество ошибок и недочетов, из чего сделан вывод, что она не справилась (0 баллов за выполнение).
GigaChat: Результаты были почти идеальными — все ошибки были исправлены (2 балла за выполнение).
Mistral: Исправила часть ошибок, но не все корректно, сделан вывод, что модель не справилась (0 баллов за выполнение).
Saiga-Llama3-8b: Справилась с задачей, но иногда оставляла ошибки в тексте (2 балла за выполнение).
GigaChat, Saiga-Mistral-7b-Lora и Saiga-Llama3-8b показали лучшие результаты в исправлении грамматических ошибок.
5. Краткий пересказ текста
Задача: модель должна пересказать длинный текст, сохраняя его основную суть. Здесь мы оценивали связность текста и то, ухватит ли модель основную суть. Моделям предлагался отрывок из произведенич "Идиот" Ф. М. Достоевского почти на тысячу знаков.
В качестве второго промта предлагали текст из юридического документа.
Saiga-Mistral-7b-Lora: Показала отличные результаты в кратком пересказе текста, сохраняя основные моменты и делая текст лаконичным (2 балла за выполнение).
Saiga-Llama3-8b: Хорошо справлялась с задачей, сокращая текст, но иногда упуская некоторые важные детали (1 балл за выполнение).
YandexGPT: Пересказы были точными, но иногда длились чуть больше необходимого (2 балла за выполнение).
OpenChat3.5: Модель в целом пересказывала текст, но иногда пропускала важные моменты или делала текст менее связным и некрасивым (0 баллов за выполнение).
GigaChat: Результаты были средними — пересказ был либо слишком коротким, либо терял ключевые элементы текста (1 балл за выполнение).
Mistral: Пересказ был недостаточно точным и текст мог терять важные аспекты (1 балл за выполнение).
Лидерами в этой категории стали YandexGPT, Saiga-Mistral-7b-Lora и Saiga-Llama3-8b.
6. Вопросы по тексту
Задача: модели, прочитав заданный текст, должны были ответить на вопросы, связанные с его содержанием. Вопросы касались ключевых деталей, фактов или выводов, изложенных в тексте. Важно было оценить, насколько точно и кратко модель может извлечь нужную информацию и ответить на вопрос, сохраняя контекст.
Мы предложили моделям те же тексты, которые использовали для краткого пересказа. Вопросы по текстам выглядели следующим образом:
YandexGPT: Показала отличные результаты. Модель давала точные и краткие ответы на вопросы по тексту, чётко следуя контексту и сохраняя логику (2 балла за выполнение).
Saiga-Mistral-7b-Lora: Хорошо справляется с ответами, поддерживает контекст и даёт точные ответы, но иногда склонна к избыточным деталям в ответах (2 балла за выполнение).
Saiga-Llama3-8b: Достаточно точна в ответах на вопросы, но иногда упускает детали или дает менее чёткие ответы по сравнению с лидерами (2 балла за выполнение).
OpenChat3.5: Модель отвечает на вопросы, но с недочетами, вроде некрасивого текста и стиля языка (1 балл за выполнение).
GigaChat: отличные результаты (2 балла за выполнение).
Mistral: Показала слабые результаты. Часто давала неточные или неполные ответы, особенно на более сложные вопросы по тексту (1 балл за выполнение).
Наилучшие результаты в решении этой задачи показала YandexGPT. Модель демонстрировала высокую точность и краткость ответов, уверенно удерживала контекст и справлялась как с простыми, так и с более сложными вопросами. Saiga-Mistral-7b-Lora также показала хорошие результаты, но иногда давала избыточно детализированные ответы, что могло быть излишним.
7. Извлечение структурированных данных
Задача: извлечь ключевые данные (имена, даты, суммы и т.д.) из юридического текста и представить их в формате JSON.
Saiga-Llama3-8b: Модель продемонстрировала хорошие результаты, однако извлекла не все данные (1 балл за выполнение).
YandexGPT: Также хорошо справилась с извлечением данных, но иногда могла допускать ошибки при сложных запросах (1 балл за выполнение).
Saiga-Mistral-7b-Lora: Показала хорошие результаты, но в сложных случаях иногда могла пропустить важные детали (1 балл за выполнение).
OpenChat3.5: Модель не справилась с задачей совсем (0 баллов за выполнение).
GigaChat: Результаты были идеальными, модель всегда извлекала данные корректно (2 балла за выполнение).
Mistral: Модель справилась хуже остальных, часто теряя данные и предоставляя их в некорректной форме (0 баллов за выполнение).
GigaChat стала лучшей моделью для извлечения структурированных данных.
8. Написание SQL-запросов
Задача: Генерация SQL-запросов на основе текстового описания базы данных и условий запроса.
YandexGPT: Продемонстрировала высокие результаты, генерируя SQL-запросы с минимальными ошибками. Модель понимала структуру базы данных и могла писать логически корректные запросы (2 балла за выполнение).
Saiga-Mistral-7b-Lora: Также показала хорошие результаты, но иногда допускала незначительные ошибки в синтаксисе (2 балла за выполнение).
OpenChat3.5: Модель не справлялась с задачей, даже если мы начинали общение на английском языке (0 баллов за выполнение).
GigaChat: Модель решала задачу, результаты были хорошими (2 балла за выполнение).
Mistral: SQL-запросы были неправильными, модель не решала задачу (0 баллов за выполнение).
Saiga-Llama3-8b: Модель справилась с задачей (2 балла за выполнение).
YandexGPT, GigaChat, Saiga-Llama3-8b и Saiga-Mistral-7b-Lora лучше всего справлялись с задачей написания SQL-запросов.
Выводы
Результаты тестирования показали, что каждая из протестированных моделей обладает своими уникальными преимуществами и недостатками. В зависимости от специфики задачи, одна модель может быть более подходящей, чем другая.
Мы протестировали 4 LLM модели, которые можно поднять локально, и 2 облачных решения (YandexGPT и GigaChat) на ряде синтетических задач, которые показывают возможности моделей с разных сторон: генерация новых текстов, либо работа с уже готовыми текстами, их анализ и систематизация.
Оценка на основе критериев
Мы свели оценки по каждому критерию и решаемой задаче в общую таблицу для наглядности. Оценка по каждому критерию может иметь оценку от 0 до 5. Ниже представлена таблица с критериями, по которым мы оценили данную модель (в качестве эталонных ответов взяли ответы YandexGPT):
Оба облачных решения хорошо справились с синтетическими задачами, и только 2 локальных модели из 5 локальных показали сравнимый по качеству результат: Saiga-Mistral-7b-Lora и Saiga-Llama3-8b.
Оценка на основе задач
Ниже приведена таблица с результатами по всем моделям, насколько хорошо они справились с поставленными задачами: 0 – модель вообще не справилась с задачей, 1 – справилась, но со значительными помарками, 2 – справилась почти идеально.
По результатам этой таблицы Saiga-Mistral-7b-Lora является лучшим выбором в качестве локальной языковой модели.
Заключение
На основе двух вариантов оценки мы делаем вывод, что лучшие решения для работы с русскоязычными документами - облачные платформы YandexGPT и GigaChat.
Но в ситуациях, когда необходимо использовать локальную языковую модель, стоит рассмотреть Saiga-Mistral-7b-Lora.
Модели YandexGPT и Saiga-Mistral-7b-Lora показали наилучшие результаты в большинстве задач, связанных с генерацией текста, диалогами и исправлением ошибок.
Saiga-Llama3-8b стала лучшим выбором для задач извлечения данных и анализа документов, что делает её отличным инструментом для автоматизации обработки документов.
В будущем, с развитием технологий NLP, можно ожидать появления ещё более точных и производительных языковых моделей, которые смогут решать задачи на ещё более высоком уровне.
Кроме того, возможность дообучения моделей на специализированных датасетах (как это было сделано с Saiga-Mistral-7b-Lora и Saiga-Llama3-8b) позволит адаптировать их под конкретные нужды компаний, работающих с русским языком.
Комментарии (15)
ArtyomO
06.11.2024 10:02Когда захотели не обидеть отечественных производителей и сравнили недешёвые API Gigachat и Yandex GPT с локальными моделями 7-8B, которые работают даже на MacBook M1 в реальном времени.
akdengi
06.11.2024 10:02Сравнивать мини-модели на 8b, в которых у исходных моделей изначально русский и не заявлен и дотренированные энтузиастом и модели на сотни миллиардов параметров некорректно. Причем непонятно с какими версиями того же GigaChat сравнивали - light или max? То же Яндексу - у них есть light и pro.
Если уж сравнивать, то с 70B и выше моделями и с теми, где есть русский по дефолту, то й же aya- expance или хотя бы gemma2 на 27B где есть NLP и которая русский в разы лучше Mistral и Llama умеет.
AlexBogatyrev
06.11.2024 10:02У Вас какой-то странный выбор вариантов моделей. И непонятно какой Гигачат использовался, а их 4 исполнения - стандартный, Плюс, Про и Макс. Судя по результатам Вы использовали обычный (7-8 миллиардный)
Версия Макс как минимум в 10 раз больше по параметрам, и дает совсем другого качества результаты.
EriIaz
06.11.2024 10:02Согласен! Тут ещё помимо API, очень странная подборка локальных моделей. Навскидку, что я бы протестировал с открытым весом:
Google Gemma 2 27B - лучшая локальная модель по владению русским языком из тех, которыми я пользовался. Прямо из коробки, даже без файн-тюнов. Это точно лучше, чем старая Сайга на Мистрале 7B
Есть ещё C4AI Aya-expance 32B, с ней не сравнивал, она должна быть на сопоставимом уровне с той Геммой, но я не проверял, потому что она уже тяжеловата для моих ресурсов. Прошлая модель от этих разработчиков до выхода Геммы была лучшей, а это многоязычный файн-тюн от них же.
Saiga Mistral Nemo 12B, причем уже есть вторая версия. На данный момент это сильнейший тюн от Ильи Гусева, по тестам самого уважаемого авгура. Вроде был ещё его тюн Gemma 2 9B, можно было тестировать его. Или первую версию Сайги-Немо, но зачем сравнивать API со бородатым тюном третьей Ламы 8B? И тем более Mistral 7B Lora! Она же устарела в хлам, вы бы ещё ruGPT-2 сюда приплели. Почему так, не понятно))
И вообще нет Вихря. Никакого. А зря, у них тюны примерно на уровне Сайги - иногда чуть лучше, иногда чуть хуже, в зависимости от версии, здоровая конкуренция, короче.
sanneo22
06.11.2024 10:02Gemma2 Неплохо говорит по русски, даже 2B версия. Использую в HomeAssistant в качестве Assistant LLM, со своими задачами справляется, даже анекдоты рассказывает)) Однако как модель справится с тестами из статьи я не берусь сказать.
burstmode
06.11.2024 10:02Реклама нейронок Яндекса и Сбера или чё? Вы их с нормальными моделями сравните, которые хотя бы есть в первой десятке в топе на LMArena
syrupsweety
06.11.2024 10:02Подборка моделей заставляет взгрустнуть. В выборке из доступных по API не представлены самые передовые модели: GPT-4o и Claude. То же самое можно сказать и про локальные модели, из которых отсутствуют вполне подходящие сюда Qwen2.5 14B, Gemma 2 9B, Mistral NeMo, зато присутствуют кустарные finetune модели saiga.
Надеялся прочитать свежий анализ работы языковых моделей с русским языком, коего в интернете критически мало, вместо этого получил напоминание, что GigaChat существует. 2/10 за попытку.
akdengi
06.11.2024 10:02Илья Гусев неплохо натаскивает модели на русский, но вот та же saiga лучше работает на основе gemma2 (я ее в ollama добавил в модели, поэтому можно попробовать), так как llama3.1 все-таки изначально не про русский язык и NLP. Надо будет на диктантах для третьего класса сравнить :)
EriIaz
06.11.2024 10:02Проблема представленных версий Сайги не в том, что они "кустарные", к компетенции Ильи Гусева лично у меня вопросов нет никаких.
Проблемы в том, что это ОЧЕНЬ старые версии Сайги. На момент их релиза они били то, что предлагал Яндекс и Сбер, но это старые модели. То есть, если хотите тестировать Сайгу, тестируйте актуальную Сайгу, а не бородатую Mistral-7B Lora. Тогда будет честное сравнение. Сейчас Сайга может уступить Яндексу и Сберу, у них качество выросло значительно и появились новые опции моделей, моя претензия в том, что нет смысла тестировать старьё, значительно уступающее актуальным моделям за счёт новой базы тюна и его методологии, что подтверждается самим автором.
Это всё равно как если бы OpenAI была здесь представлена какой-нибудь GPT-3.
liquiddeath13
06.11.2024 10:02Интересно, какой используется у word-ai. У них бот в телеге, тоже проверяют как-то грамматику и не только
Zoolander
06.11.2024 10:02У малых нейронок можно повысить качество, если заставлять их читать собственную выдачу и прорабатывать ошибки в предыдущем ответе.
У больших это тоже работает. Но у малых это особенно заметно, а ещё у малых можно дёшево повторять эти этапы работы над ошибками.
CherryPieHSE
Спасибо за исследование!
Я не до конца понял про среду тестирования, про то как оценивалась производительность моделей. Ведь гигачат и яндекс-гпт закрытые модели, их тестировали при помощи апи, правильно?
И ещё очень интересно, как эти модели оцениваются в сравнении с GPT-4o, который тоже очень хорошо знает русский.