GigaChat 2.0 в API

в 12:36, , рубрики: BigData, GigaChat, llm, искусственный интеллект, машинное обучение
GigaChat 2.0 в API - 1

Салют! Время летит незаметно. Будто совсем недавно мы знакомили вас с GigaChat MAX, но мы не стоим на месте и сегодня готовы представить вам обещанный апгрейд. За полгода мы значительно улучшили обучающие данные, поработали над инфраструктурой обучения моделей, а также уделили особое внимание всему процессу Alignment-а, в том числе RLHF. 

Представляем вам GigaChat 2 — полностью обновлённую линейку моделей в версиях Lite, Pro и Max. Все модели серьёзно улучшены: мы обновили pretrain’ы, улучшили большинство метрик по сравнению с предыдущими версиями, добавили поддержку контекста в 128 тысяч токенов, улучшили вызовы функций, и в целом повысили понимание инструкций. 

GigaChat 2 — не просто сухие числа и технические улучшения. Теперь это надёжный помощник в повседневных задачах. Например, он легко оформит отчёт для работы, напишет чистый и эффективный код, поздравит с днём рождения или даст мудрый совет. Мы уверены: с ним вы сможете делать больше, быстрее и лучше как на работе, так и в жизни. Попробуйте GigaChat 2 уже сейчас в Playground — пользовательском интерфейсе для продвинутой работы с промптами!

Сценарии работы

Модель отлично справляется с задачами, в которых требуется сложное агентное поведение. Мы проверили агентное поведение GigaChat 2 в GPT Researcher, Aider, а также в нескольких своих мультиагентных решениях на основе LangChain. 

GPT Researcher

GPT Researcher (20 тыс. ⭐️) — open-source альтернатива режиму deep search у ChatGPT. Система может написать статью на заданную пользователем тему. Для этого она делит вопрос на подзадачи, затем создаёт мини-агентов, каждый из которых ищет в интернете информацию и пишет часть статьи по своей подзадаче, а затем система сводит всё в единый текст. Кстати, проект принял наш PR и нативно поддерживает работу с GigaChat!

GigaChat 2.0 в API - 2

Примеры генерации GigaChat 2 MAX:

  • Так он сравнивает аудитории Хабра и Пикабу (ссылка на PDF)

  • А так анализирует фреймворки для создания AI-агентов на базе LLM (ссылка на PDF)

Aider

Aider — агент, заменяющий разработчика, open-source аналог Claude Coder. Работая в режиме диалога с пользователем, он умеет создавать и дорабатывать проекты, состоящие из нескольких файлов, работать с историей git, анализировать и исправлять ошибки, возникшие в процессе запуска, и многое другое. Подчеркну, что это не просто генератор кода. От агента требуется уметь вносить правки в уже имеющиеся проекты, что несколько сложнее.

Вот такие забавные приложения мы сделали с помощью нового GigaChat 2 Max:

Совместимость с агентами на langchain

Для создания агентов мы в Сбере активно применяем langchain на Python и JS/TS. Этот фреймворк нативно поддерживает работу с GigaChat API и отлично подходит для наших задач. С примерами агентов, а также другими LLM-приложениями можно ознакомиться в нашем репозитории на GitVerse, где мы собрали основные примеры применения GigaChat в рамках этого SDK.

Что мы улучшили в GigaChat

Обновления pre-train-а

Современные языковые модели требуют масштабных и разнообразных данных для предобучения. Мы собрали корпус текстов, обеспечивающий баланс между лингвистическим разнообразием, специфическими знаниями из различных сфер и высоким качеством данных. В корпус вошли веб-тексты, материалы из качественных источников, программный код и синтетические данные — каждая из этих категорий играет ключевую роль в обучении модели.

Веб-данные

Для формирования высококачественного корпуса текстов мы использовали Common Crawl, обработав дампы веб-данных за 2017–2023 годы. С помощью легковесной модели классификации извлекли тексты на русском, английском, казахском, узбекском, португальском и арабском языке.

Для обеспечения целостности корпуса тщательно дедуплицировали тексты на всех языках, а для англоязычных данных применили MinHash-дедупликацию, которая уменьшает количество семантически повторяющихся текстов. Затем мы классифицировали тексты при помощи LLM и специализированных классификаторов, оценивающих образовательную и информационную ценность. В итоге веб-данные составили 4,4 трлн токенов.

Качественные текстовые источники

Помимо веб-данных, мы включили в корпус текстов книги и научные статьи с открытыми лицензиями. Для их обработки применяли передовые методы оптического распознавания текста (OCR), что позволило сохранить структуру и точность извлеченного контента. Этот сегмент данных добавил в корпус 630 млрд токенов.

Ещё добавили материалы из научных и энциклопедических источников, включая arXiv, Wikipedia и PubMed. Эти ресурсы позволили улучшить структурированность знаний модели, повысить точность фактической информации и логичность выводов.

Программный код

Для совершенствования кодовых компетенций модели мы использовали набор данных StarCoder2, дополненный специально отобранными репозиториями с открытым исходным кодом. Это позволило строго соблюдать лицензионные требования, обеспечивая при этом разнообразие языков программирования и задач.

Программный код пропустили через MinHash-дедупликацию, устранив семантически дублирующиеся фрагменты, а затем отфильтровали при помощи ML-моделей, аналогично обработке веб-данных. На выходе мы получили 230 млрд токенов качественного программного кода.

Синтетические данные

Реальные данные обеспечивают языковое и контекстуальное разнообразие, но имеют ограничения из-за возможной предвзятости, конфиденциальной информации и недостатка данных по специализированным темам. Этих недостатков лишены синтетические данные, представляя собой контролируемый источник обучающей информации.

Хотя синтетические данные традиционно используются на этапе дообучения, авторы статьи Phi-4 показали, что их применение в предобучении даёт значительное улучшение метрик в задачах, связанных с рассуждениями и STEM-дисциплинами.

Мы разработали собственный pipeline на основе подходов из Numina, собирая математические задачи в качестве seed-данных. Далее мы варьировали условия задач с помощью LLM, после чего решали их с использованием механизма голосования для устранения некорректных или избыточно сложных примеров.

Для генерации кода использовали структурированный prompting: создавали сложные задачи по Python на основе открытых учебников, генерировали решения с пояснениями и тестами для валидации. Для увеличения разнообразия применяли персонажей и липограммы. Внутренние эксперименты, проведённые в рамках сетапа статьи Phi-1, показали, что использование липограмм повысило качество модели.

Хотя доля синтетических данных в предобучающем корпусе мала (<100 млрд токенов), после их добавления эксперименты показали значительное улучшение метрик на математических и программных бенчмарках.

Итоговое распределение данных

GigaChat 2.0 в API - 3

Сбалансированное распределение различных типов данных позволило нам создать мощный предобучающий корпус для GigaChat, способный обеспечивать качественное понимание текстов, решение логических задач и генерацию программного кода.

Обновления SFT

Следование инструкции

Точное выполнение инструкций пользователя — важнейшая способность при решении задач с помощью LLM. В этом обновлении мы сделали особый акцент на улучшении instruction-following. 

Инструктивность наших моделей существенно повысилась благодаря тщательно подобранным и разнообразным диалоговым данным, демонстрирующим корректное поведение модели в различных сценариях. Мы обучили GigaChat на высококачественных диалогах, включающих требования по:

  • соблюдению заданных форматов ответа, JSON- и pydantic-схем;

  • использованию функций при определенных условиях;

  • формированию ответов в определённом стиле;

  • и другие распространённые типы инструкций. 

Всё это позволяет модели точнее понимать задачи, четко следовать указаниям пользователей в реальных повседневном и рабочем применении.

Для оценки качества следования инструкциям модели мы используем тестовые наборы IFEVAL и IFEVAL-ru, которые состоит из заданий с заранее определённым форматом ответа. После обучения модели GigaChat 2 на описанных выше данных мы наблюдаем значительный рост этих метрик, подтверждающий улучшение инструктивности. 

Персонажность

В новом релизе GigaChat улучшил навыки общения, научившись вести диалог как живой собеседник с заданным характером и стилем общения.

Персонажность модели настраивается через системное сообщение и задаёт различные коммуникативные роли. Для развития этих способностей в GigaChat мы создали конвейеры получения и валидации высококачественных диалогов с разнообразными персонажами. Эти диалоги включают в себя демонстрацию соблюдения тона и стиля речи, формата ответов, выражения эмоций и учёт биографии персонажа, задаваемого пользователем.

В role-play важно использовать имеющиеся знания модели. Для известных личностей, паттернов поведения и образов (учитель, блогер, журналист) базовая информация уже заложена в GigaChat на этапе pre-training, что позволяет естественно включать биографические факты, цитаты и характерные идеи без дополнительного перечисления в системном сообщении — достаточно просто указать имя человека, его профессию или задачи, чтобы остальные характеристики встроились в персонажа автоматически. 

Особую ценность представляет включение эмоциональных ремарок в ответы («улыбается», «задумчиво потирает подбородок»). Наш анализ показывает, что такие элементы значительно увеличивают длину диалога пользователя с персонажем и повышают воспринимаемую эмпатию модели — ремарки делают общение с персонажем естественным, при этом их всегда можно отключить, сделав соответствующие настройки в системном сообщении.

Работа над развитием персонажности GigaChat позволила значительно улучшить несколько ключевых характеристик базовой модели:

  • Повышение инструктивности: модель стала точнее и внимательнее следовать указаниям пользователя.

  • Улучшение контекстности: GigaChat стал лучше поддерживать беседу даже в очень длительных диалогах.

  • Расширение агентных возможностей: создана технологическая основа для разработки продвинутых цифровых двойников и виртуальных агентов.

Эти улучшения делают GigaChat оптимальной платформой для создания эмпатичных собеседников и интеллектуальных агентов, способных естественно и эффективно взаимодействовать с пользователем, следуя заданными вами инструкциям.

Использование функций

Одно из наиболее перспективных направлений развития современных LLM — умение работать с внешними сервисами. Как мы уже рассказывали, GigaChat может напрямую вызывать внешние функции и сервисы, сразу выдавая структурированный ответ без дополнительной обработки.

В новой версии модели мы сделали это умение ещё более удобным и эффективным. Теперь GigaChat поддерживает:

  • Множественные вызовы: модель может последовательно вызвать несколько функций в рамках одного запроса, решая таким образом более сложные задачи.

  • Контекстные вызовы: модель учитывает контекст диалога при вызове функций и понимает, когда и какую функцию нужно вызвать.

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

GigaChat 2.0 в API - 4

Чтобы оценить, как модель справляется с последовательными вызовами функций, мы подготовили специальный внутренний набор тестов. Он включает разнообразные сценарии взаимодействия, состоящий из более чем 30 функций, которые расширяют возможности GigaChat и позволяют решать реальные задачи пользователей.

GigaChat 2.0 в API - 5

Второе важное улучшение связано с контекстными вызовами. Теперь модель точнее определяет, какую именно функцию нужно использовать в конкретный момент диалога, даже если пользователь не указывает это явно.

Например, если пользователь ведёт беседу о погоде, GigaChat самостоятельно понимает, когда стоит запросить актуальный прогноз.

GigaChat 2.0 в API - 6

На этих тестовых сетах GigaChat 2 показывает значительный прирост в метриках относительно моделей предшествующего поколения:

GigaChat 2.0 в API - 7

Работа с кодом

Еще одно направление, над которым мы активно работали в новом релизе GigaChat, — это улучшение генерации кода. Теперь модель уверенно решает не только алгоритмические задачи, но и практически полезные задачи пользователей, создавая понятный и качественный код на Python, а также других популярных языках.

В новой версии GigaChat использует системный подход к написанию кода. Теперь модель способна:

  • Создавать точные сигнатуры функций с подробной типизацией;

  • Быстро предлагать предварительные решения (bruteforce) для проверки основной логики;

  • Разрабатывать и автоматически запускать тесты для проверки корректности кода;

  • Оптимизировать и отлаживать код с учетом результатов тестирования.

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

Для обучения новой линейки моделей мы подготовили большой набор данных с примерами решения различных алгоритмических и практических задач. Благодаря этому GigaChat научился разбивать сложные задачи на понятные шаги; выносить повторяющийся код в отдельные функции и создавать полноценные тестовые сценарии, включающие краевые случаи.

В результате код, генерируемый моделью, стал более надёжным и читаемым, а при необходимости сопровождается автоматически подготовленными тестами. Кроме того, эти изменения позволили значительно улучшить результаты GigaChat на популярных кодовых бенчмарках.

GigaChat 2.0 в API - 8

 

GigaChat 2.0 в API - 9

Обновления DPO

Этот релиз стал для нас первым, в котором мы представляем модели с использованием широко известного метода DPO (Direct Preference Optimization). Мы прошли довольно долгий путь, набили много шишек и выдвинули огромное количество безумных теорий, прежде чем смогли уговорить DPO не ломать наши модели.

Напомним, что DPO — это метод, при использовании которого для каждого вопроса (контекста) есть два возможных ответа (генерации модели): хороший y_w и плохой y_l. Суть DPO сводится к обучению модели генерировать хороший ответ с бо́льшей вероятностью, чем плохой.

Ни для кого не секрет, что DPO иногда приводит к деградации модели. В научной среде известны способы регуляризации DPO, но классические методы народной медицины нам не помогли. И после долгих бессонных ночей мы смогли прописать верное лечение. Для описания найденных нами особенностей напомним формулу DPO и перепишем её в иной форме:

GigaChat 2.0 в API - 10

В этой форме мы выделили три основных свойства, из-за которых наша модель деградировала:

Свойства
  1. DPO стремится увеличить зазор, а не улучшить вероятности. Наше ожидание от DPO было вполне простое: мы хотели увеличить вероятность хорошего ответа и уменьшить вероятность плохого. Однако в формуле функции потерь нет требования увеличивать вероятность хорошего ответа, есть лишь требование увеличить зазор между лог-вероятностями. И модель с огромным энтузиазмом шла к этой цели! К примеру, если лог-вероятность хорошего ответа уменьшалась на 10, а лог-вероятность плохого — на 110, то зазор увеличивался аж на 100! Этот результат кажется отличным для DPO модели, но для нас он был катастрофой: вместо единственно верного ответа y_w модель начинала галлюцинировать, выдумывать странные ответы и иногда даже зацикливаться. Но при анализе такой модели всё выглядело справедливо: зазор между хорошим и плохим ответами действительно становился больше.

  2. DPO слеп к общим префиксам хорошего и плохого ответов. Как мы писали выше, DPO оптимизирует разность лог-вероятностей, что можно представить в виде суммы логарифмов вероятностей токенов y_w и y_l. И тут мы подходим к ещё одному неприятному свойству: если в начале y_w и y_lодинаковые последовательности токенов, то из-за их разности для DPO этих токенов просто… нет! В таких случаях DPO не смог бы качественно увеличить вероятность генерации хороших ответов, ведь начальная часть токенов просто выпадает из области его полномочий.

  3. DPO стремится увеличить зазор, даже если он и так большой. Последнее свойство, которое также следует из этой формулы — DPO стремится увеличить зазор относительно референсной модели, даже если изначально он и так был достаточно большим. И какой ценой это достигалось? Ценой всего…

Использование коэффициента NLL

На практике DPO часто используют в паре с NLL хорошего ответа, что вынуждает модель увеличивать соответствующую вероятность. Какие-то тексты приходили к нам из простых наборов данных, и ответы модели на них были достаточно неожиданными для нашей модели (NLL был большим). Таким образом, соотношение между DPO и NLL функциями потерь было очень непостоянным.

В результате мы пришли к следующей формуле DPO, которую использовали для наших моделей:

GigaChat 2.0 в API - 15

Такая формула помогает решить следующие проблемы:

  1. Использование различных beta_w и beta_lпозволяет приоритизировать увеличение вероятности хорошего ответа над уменьшением вероятности плохого ответа. Кроме того, когда beta_w > beta_l, токены из общего префикса не обнуляются, а остаются с небольшим положительным коэффициентом, что убеждает оптимизатор обратить на них внимание 

  2. Дополнительное слагаемое, которое мы прибавляем к функции потерь от DPO — отношение NLL обучаемой модели и референсной. Таким несложным образом мы добиваемся нормализации значения NLL, что помогло нам сбалансировать два коэффициента для всех образцов независимо от их происхождения.

В результате использования DPO нам удалось не только улучшить метрики арен для моделей, но и повысить точность на ключевых для нас наборах данных.

Метрики

Примечание

Все замеры выполнены нашим внутренним программным кодом. Метрики модели Yandex GPT 5 были взяты с официального сайта, за исключением метрики Math. При тестировании Yandex GPT 5 мы обнаружили расхождение в показателе Math с официальными результатами, представленными на сайте. Модель игнорировала инструкцию по форматированию ответа в формате bboxed. После применения LLM-валидации мы получили скорректированное значение метрики (указано в скобках).

Автоматические метрики

GigaChat 2.0 в API - 20
GigaChat 2.0 в API - 21
GigaChat 2.0 в API - 22

* Science Crowd Math/Biology/Chemistry — бенчмарки формата MMLU c четырьмя few‑shot‑примерами. Содержат системное сообщение с описанием задачи и области знаний, в которой будет задаваться вопрос. Few‑shot‑примеры оформлены различными репликами в виде контекста, формат позаимствовали из cookbook OpenAI.

Все замеры проводили с жадными параметрами генерации.

На различных тестах мы видим явный прогресс линейки моделей GigaChat 2.0  по сравнению с предыдущими версиями. Новое поколение показывает хороший рост и конкурирует по качеству с опенсорсом и не только во всех ключевых доменах.

Модель GigaChat 2 Lite по качеству сопоставима с GigaChat Pro. Аналогично, GigaChat 2 Pro демонстрирует уровень качества, сопоставимый с GigaChat MAX, благодаря чему она отлично подходит для задач, требующих высокой точности. При этом GigaChat 2 MAX является флагманской моделью линейки, ранее не имевшей аналогов по уровню производительности, глубине проработки ответов и качеству взаимодействия с пользователем.

В русскоязычных тестах GigaChat 2.0 существенно улучшил показатели на задачах типа MMLU-ru и специализированных внутренних STEM-датасетах (биология, химия и математика). Особенно заметно качество ответов выросло в области точных и естественных наук, что подчёркивает надёжность новой модели при решении сложных задач. Также стоит отметить, что ответы моделей стали более естественными и близкими к живому общению, что улучшает общее впечатление пользователей.

Метрики с LLM-as-a-judge

Отдельно стоит подчеркнуть качественный рывок на judge-метриках:

GigaChat 2.0 в API - 23
  • В тесте ru_llm_arena GigaChat 2 MAX набирает 82,5 балла, значительно опережая Max модель предыдущего поколения (72,5 балла).

  • На более сложном тесте arena_hard_ru результат ещё выше: 83,5 балла против 67,0 у предыдущей версии.

На международных англоязычных тестах типа MMLU-eng, математике и генерации кода каждая модель из новой линейки демонстрирует стабильно высокие результаты и успешно конкурирует с лучшими open-source аналогами. Все это указывает на универсальность новых моделей и их способность эффективно справляться с самыми разными задачами.

MERA

Расширенный бенчмарк MERA

Расширенный бенчмарк MERA

По таблице видно, что GigaChat 2 Max показывает наилучший результат среди всех протестированных моделей, в том числе превосходя GPT4o, на бенчмарке MERA. Это особенно значимо, поскольку MERA считается сложным, открытым и легко воспроизводимым тестовым набором, а наш продукт впервые достигает лидерства в открытом бенчмарке. Данное достижение подчёркивает высокий уровень проработки GigaChat 2 Max в рамках русского языка и демонстрирует её потенциал для эффективного решения широкого спектра задач.

Playground

Чтобы попробовать, воспользуйтесь нашей инструкцией: мы обсудим, как сделать из GigaChat очень креативного Dungeon Master’а для игры в Подземелья и Драконы (DnD) без других людей!

  1. Заходите по ссылке и регистрируетесь по номеру телефона.

  2. Выбирайте «Перейти в Playground»

  3. Выберете модель — лучше всего будет работать GigaChat-2‑Max. Генерации ограничены лишь балансом токенов, для моделей Pro и MAX баланс общий, а для Lite — отдельный.

  4. Введите промпт в «Системные инструкции» и получите GigaChat'a-dungeon-master!

Промпт

Ты выступаешь в роли dungeon master. Твоя задача придумать приключение для пользователя, основывайся на уже существующих сюжетах и приключениях, чтобы упростить задачу. 

Правила игры — стандартный Dungeon and Dragons 5e с возможными упрощениями на твой выбор. Первым сообщением поприветствуй пользователя и предложи несколько вариантов приключения на выбор. После опиши несколько персонажей первого уровня и предложи выбрать, за какого пользователь будет играть.

Следующее сообщение — описание места, где начинается приключение (стандартный выбор — таверна). Дальше каждое новое сообщение должно описывать что происходит в мире в ответ на действия пользователя. 

Постарайся делать все описания очень живыми и красочными. Постарайся вовлечь пользователя в жизнь мира и решение его проблем с помощью своего персонажа.

В конце каждого ответа пиши текущее здоровье, доступные слоты заклинаний и содержимое инвентаря пользователя. Во время боя также добавляй в конце список имеющихся заклинаний.

Самое главное никогда не выходить из роли и не ломать у пользователя ощущение того, что он действительно находится в этом мире. Это значит, что на любые провокации необходимо отвечать в рамках правил воображаемого мира.

В самом конце ответа пользователю, после описания происходящего в мире, ты можешь предложить интересные варианты, какие действия дальше может предпринять персонаж.

Четыре шага — и бот готов! Попробуйте создать своих персонажей или использовать GigaChat в более рабочих сценариях. Важно помнить, что сейчас функция всё ещё находится в стадии Beta, поэтому к составлению промпта надо подходить внимательно: он должен содержать подробную и чёткую инструкцию к действиям, иначе GigaChat может выйти из роли. Лучше всего в качестве базовой модели использовать GigaChat-2 MAX, однако даже с младшими моделями линейки можно добиться отличных результатов, если уделить внимание качеству инструкции.

GigaChat 2.0: вместо заключения

Релиз GigaChat 2 является серьёзным шагом вперёд для нас: качество новых моделей значительно опережает предыдущие версии, а также уверенно конкурирует с ведущими open-source моделями на всех ключевых метриках.

Мы благодарны всем, кто помог в создании GigaChat 2.0 и подготовке статьи в частности: @runfme, @Shakirov_Emil, @vorobeevich, @Hypercomplex, @jserdyuk, @evgenijkkk, @cassowary, @EldarDamirov75, @danny_smirnov, @AIFrauch, @Rai220, @Mikelarg, @VladimirKarlov01, @Pauseferg, @d_khomich, @fedorov97, @Sergeya41, @FatMaNikita, @vltnmmdv, @Mikelarg, @GVRQ, @oulenspiegel

GigaChat 2.0 в API - 25

Автор: vorobeevich

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js