Всем привет! Я Толя Потапов, MLE в Т-Банке. Руковожу командой разработки фундаментальных моделей.
Почти два года мы плотно работаем с LLM, развиваем продукты на базе больших языковых моделей. Например, Вселенную ассистентов, которая входит Gen-T — семейство собственных специализированных языковых моделей.
Сегодня мы открываем две большие языковые модели — T-Lite и T-Pro, над которыми работали последние полгода, их можно скачать с huggingface. Они распространяются под лицензией Apache 2.0. Для адаптации моделей под бизнес-кейсы рекомендуем воспользоваться нашей библиотекой turbo-alignment с инструментами для полного цикла работы над LLM.
Сегодня я дам общие характеристики моделей и расскажу, что у нас получилось в новом релизе. Без сложностей тоже не обошлось, но об этом будет позже в отдельной статье.
Подход к дообучению и бенчмарки
T-Lite и T-Pro — модели на 7 и 32 млрд параметров соответственно, построенные на базе моделей Qwen 2.5 и дообученные на русский язык.
Технологически мы дообучали модель через несколько стадий:
-
Pre-train stage 1. 100B токенов, дообучение на разнообразные русскоязычные данные из Common Crawl, книг, кода и проприетарных датасетов, смешанных с re-play на английском языке (добавили часть данных на английском языке, поскольку это основной язык для базовой модели).
-
Pre-train stage 2. 40B токенов, дообучение на смеси инструктивных и претрейн данных.
-
SFT. 1B токенов. учим модель следовать разнообразным инструкциям.
-
Preference tuning. 1B токенов, тонкая настройка, обучаем модель быть полезной.
После дообучения позиции моделей:
-
T-Lite 7B модель. Лучшая русскоязычная опенсорс-модель по ряду индустриальных бенчмарков (в том числе MERA) в классе «до 10 млрд параметров». Модель заточена под дообучение на различные бизнес-задачи (fine-tuning).
-
T-Pro 32B модель. Лучшая русскоязычная опенсорс-модель по широкому ряду индустриальных бенчмарков. Модель может быть использована в режиме дообучения под бизнес-задачу (fine-tuning) и для использования в режиме «промптинга».
Замеряли на MERA, MaMuRAMu, ruMMLU, ruMMLU-Pro, ruMATH, ruGSM8k, ruMBPP, Ru Arena Hard, MT Bench и AlpacaEval. Модели обгоняют все открытые и большинство проприетарных моделей на русскоязычных бенчмарках, проверяющих как знания базовой модели, так и на диалоговых и инструктивных датасетах, проверяющих способности модели решать практические задачи (даты замеров от 10.12.2024).
ruMMLU-Pro. За основу был взят англоязычный бенчмарк MMLU-Pro, содержащий 12 032 вопроса по 14 доменам, и переведен с помощью GPT-4, сохраняя методологию оценивания, замер производился в 5-shot-режиме.
MERA |
ruMMLU-Pro |
|||
T-Lite |
0.552 |
0.775 |
0.664 |
0.497 |
GigaChat Pro * |
0.512 |
0.77 |
0.617 |
- |
Gemma-2-9B-it ** |
0.505 |
0.724 |
0.618 |
0.405 |
YandexGPT 4 Pro * |
0.488 |
0.771 |
0.623 |
0.381 |
Qwen2.5-7B-Instruct * |
0.482 |
0.711 |
0.61 |
0.481 |
Vikhr-Nemo-12B-Instruct-R-21-09-24 |
0.478 |
0.689 |
0.564 |
0.328 |
RuadaptQwen2.5-7B-Instruct |
0.468 |
0.7 |
0.595 |
0.448 |
IlyaGusev/saiga_nemo_12b_v3 |
0.428 |
0.648 |
0.528 |
0.386 |
allenai-Llama-3.1-Tulu-8B |
0.409 |
0.628 |
0.509 |
0.354 |
|
MERA |
MaMuRAMu |
ruMMLU |
ruMMLU-pro |
GPT-4o * |
0.642 |
0.874 |
0.792 |
0.713 |
T-Pro |
0.629 |
0.841 |
0.768 |
0.665 |
RuadaptQwen2.5-32B-Instruct * |
0.615 |
0.812 |
0.737 |
0.631 |
Nexusflow-Athene-V2-Chat (72B) |
0.606 |
0.85 |
0.784 |
0.692 |
Qwen-2.5-72B-Instruct * |
0.601 |
0.849 |
0.782 |
0.677 |
GigaChat Max * |
0.588 |
0.824 |
0.718 |
0.535 |
Qwen2.5-32B-Instruct |
0.578 |
0.824 |
0.747 |
0.637 |
Gemma-2-27B-it ** |
0.574 |
0.768 |
0.673 |
0.470 |
GPT-4o mini * |
0.57 |
0.779 |
0.652 |
0.573 |
Meta-Llama-3.3-70B-Instruct |
0.567 |
0.818 |
0.762 |
0.653 |
GigaChat Pro * |
0.512 |
0.77 |
0.617 |
- |
allenai-Llama-3.1-Tulu-3-70B |
0.574 |
0.805 |
0.709 |
0.579 |
Пояснение к таблице:
* Значения метрик были взяты из лидерборда MERA бенчмарка.
** Для семейства Gemma-2 значения метрик посчитаны без опций multi-turn, системной инструкции и чатового шаблона.
Математические и кодовые бенчмарки
ru MATH. Бенчмарк основан на англоязычном MATH, содержит 5 000 задач по различным предметам: алгебра, геометрия, теория вероятностей, теория чисел. Сложность варьируется от 1 до 5 в соответствии с AoPS. Перевели с помощью GPT-4, замеряли в 4-shot-режиме.
ru GSM8K. Бенчмарк, созданный на основе англоязычного датасета GSM8K, включает 1 319 задач со средней сложностью для школьников. Переводили с использованием модели GPT-4, а оценивали в режиме 8-shot.
ru MBPP (sanitized). Для проверки способностей модели генерировать код мы также перевели MBPP бенчмарк на русский язык с помощью GPT-4. Замеряли на очищенном (sanitized) подмножестве из 257 примеров кодовых задач в 0-shot-режиме.
В таблице — результаты измерений по перечисленным бенчмаркам. Так как ruMBPP, на наш взгляд, содержит достаточно мало примеров для оценивания кодовых возможностей моделей, дополнительно в таблицу вынесли ruCodeEval из бенчмарка MERA для более комплексной оценки.
Model |
ruGSM8K |
ruMATH |
ruMBPP |
ruCodeEval * |
T-pro (ours) |
94.1 |
77.6 |
0.805 |
0.432 / 0.626 / 0.677 |
Nexusflow-Athene-V2-Chat (72B) |
93.6 |
81.4 |
0.82 |
0 / 0 / 0 |
Qwen-2.5-72B-Instruct |
93.5 |
79.5 |
0.825 |
0 / 0 / 0 |
Qwen-2.5-32B-Instruct |
92.6 |
72.7 |
0.825 |
0.06 / 0.098 / 0.116 |
RuAdaptQwen-2.5-32B-Instruct |
92.3 |
74.2 |
0.813 |
0.426 / 0.561 / 0.598 |
GPT-4o 2024-08-06 |
93.1 |
77.1 |
0.802 |
0.529 / 0.649 / 0.683 |
allenai-Llama-3.1-Tulu-3-70B |
89.8 |
65.0 |
0.735 |
0.073 / 0.237 / 0.341 |
Gemma-2-27B-it |
89.4 |
53.8 |
0.708 |
0.259 / 0.586 / 0.689 |
GigaChat Max 1.0.26.20 |
89.2 |
58.9 |
0.626 |
0.077 / 0.093 / 0.098 |
GPT-4o mini 2024-07-18 |
88.8 |
72.4 |
0.790 |
0.704 / 0.753 / 0.768 |
Meta-Llama-3.3-70B-Instruct |
93.4 |
63.6 |
0.77 |
0.112 / 0.166 / 0.189 |
T-lite (ours) |
85.6 |
67.9 |
0.693 |
0.082 / 0.168 / 0.226 |
Qwen-2.5-7B-Instruct |
83.2 |
67.1 |
0.685 |
0.025 / 0.071 / 0.098 |
Gemma-2-9B-it |
82.3 |
47.3 |
0.63 |
0.215 / 0.494 / 0.561 |
RuAdaptQwen-2.5-7B-Instruct-v1 |
79.5 |
60.7 |
0.696 |
0.018 / 0.064 / 0.11 |
Vikhr-Nemo-12B-Instruct-R-21-09-24 |
78.5 |
36.6 |
0.56 |
0.165 / 0.42 / 0.506 |
allenai-Llama-3.1-Tulu-8B |
75.6 |
39.9 |
0.49 |
0 / 0 / 0 |
GigaChat Pro 1.0.26.15 |
75.2 |
41.8 |
0.412 |
0.056 / 0.068 / 0.073 |
IlyaGusev/saiga_nemo_12b_v3 |
72.3 |
37.0 |
0.440 |
0.006 / 0.027 / 0.049 |
YandexGPT 4 Pro 23.10.24 |
76.7 |
28.8 |
0.510 |
0 / 0 / 0 |
Пояснение к таблице:
* Значения метрик были взяты из лидерборда MERA бенчмарка
Диалоговые бенчмарки
Для оценки способности моделей вести диалог, следовать инструкциям и решать сложные задачи используют специализированные бенчмарки — арены. В офлайн-арене пользователи задают произвольные запросы и отдают предпочтения одному из двух вариантов (имена моделей скрыты).
Существуют синтетические онлайн-арены, которые можно выполнить быстрее, дешевле и при этом сохранить высокую корреляцию с человеческими предпочтениями.
Во всех диалоговых бенчмарках использовали методологию и код оригинального бенчмарка, а датасеты перевели на русский язык с помощью GPT-4. Ошибки и неточности переводов исправили асессорами.
Arena Hard Ru. Бенчмарк основан на англоязычном Arena Hard Auto, содержит 500 вопросов, в основном технического характера, полученных из запросов пользователей LMSYS Arena.
Модель-судья сравнивает генерации двух моделей и отдает предпочтение одной из моделей (похожим образом происходит в человеческой арене). На основе оценок строится ELO-рейтинг.
В качестве судьи используется GPT-4-0613.
Model |
Score |
95% CI |
Avg tokens |
Nexusflow-Athene-V2-Chat (72B) |
91.36 |
(-1.4, 1.1) |
1199 |
T-pro (ours) |
90.17 |
(-1.3, 1.5) |
906 |
Qwen-2.5-72B-Instruct |
86.08 |
(-1.6, 1.4) |
1119 |
allenai-Llama-3.1-Tulu-3-70B |
85.35 |
(-1.5, 1.7) |
952 |
GPT-4o 2024-08-06 |
84.87 |
(-1.8, 1.6) |
786 |
GPT-4o mini 2024-07-18 |
81 |
(-2.0, 1.7) |
841 |
RuAdaptQwen-2.5-32B-Instruct |
80.23 |
(-1.9, 1.8) |
896 |
Meta-Llama-3.3-70B-Instruct |
76.51 |
(-1.9, 2.3) |
1113 |
Qwen-2.5-32B-Instruct |
74.54 |
(-1.8, 2.2) |
793 |
GigaChat-Max-wo_filter |
73.3* |
(-1.5, 1.2)* |
943* |
Gemma-2-27B-it |
66.4 |
(-2.5, 2.4) |
806 |
T-lite (ours) |
64.38 |
(-2.1, 2.5) |
1116 |
IlyaGusev/saiga_nemo_12b_v3 |
64.3 |
(-2.2, 2.3) |
1016 |
Qwen-2.5-7B-Instruct |
54.29 |
(-2.0, 2.1) |
934 |
RuAdaptQwen-2.5-7B-Instruct-v1 |
52.77 |
(-2.8, 3.1) |
981 |
allenai-Llama-3.1-Tulu-8B |
51.99 |
(-2.6, 2.6) |
1010 |
T-lite-0.1 |
50.43 |
(-2.2, 2.5) |
1117 |
GPT-4-0613 |
50 |
(0.0, 0.0) |
518 |
GigaChat-Pro-wo_filter |
45.5* |
(-1.0, 2.1)* |
1012* |
Vikhr-Nemo-12B-Instruct-R-21-09-24 |
42.79 |
(-2.9, 3.1) |
947 |
YandexGPT 4 Pro 23.10.24 |
25.5 |
(-1.8, 1.9) |
702 |
Пояснение к таблице:
* Для моделей GigaChat скор взят из хабр-статьи GigaChat MAX. Методология бенчмарка и модель-судья совпадают с нашей конфигурацией, однако перевод оригинального датасета может отличаться.
MT Bench Ru. Бенчмарк на основе статьи, используется для оценки способностей модели поддерживать диалог и следовать инструкциям. Состоит из 80 вопросов с несколькими репликами, поделенные на 8 доменов, в каждом из которых по 10 вопросов.
В разделах математики код-судья сравнивает ответ модели с golden-ответом и оценивает от 0 до 10. В остальных разделах судья оценивает только ответ модели также от 0 до 10. Итоговая оценка — усреднение оценок по всем доменам
Модель-судья — GPT-4o:
Model |
Score |
GPT-4o 2024-08-06 |
8.706 |
T-pro |
8.7 |
GigaChat-Max-wo_filter |
8.53* |
GPT-4o mini 2024-07-18 |
8.45 |
RuAdapt-Qwen-2.5-32B-Instruct |
8.39 |
Meta-Llama-3.3-70B-Instruct |
8.26 |
GigaChat-Pro-wo_filter |
8.21* |
allenai-Llama-3.1-Tulu–3-70B |
8.19 |
Qwen-2.5-32B-Instruct |
8.15 |
Gemma-2-27B-it |
7.96 |
T-lite |
7.87 |
RuAdapt-Qwen-2.5-7B–Instruct-v1 |
7.62 |
Vikhr-Nemo-12B-Instruct-R-21-09-24 |
7.55 |
YandexGPT 4 Pro 23.10.24 |
7.54 |
IlyaGusev/saiga_nemo_12b_v3 |
7.48 |
Gemma-2-9B-it |
7.4 |
Qwen-2.5-7B-Instruct |
7.33 |
T-lite-0.1 |
7.21 |
allenai-Llama-3.1-Tulu-3-8B |
6.77 |
Пояснение к таблице
* Для моделей GigaChat скор взят из хабр-статьи GigaChat MAX. Методология бенчмарка и модель судья совпадает с нашей конфигурацией, однако перевод оригинального датасета может отличаться
Alpaca Eval Ru. Синтетическая арена на основе оригинального бенчмарка Alpaca Eval. Отличительная особенность Alpaca Eval — поддержка контроля длины при подсчете рейтинга и высокая корреляцией с чатбот-ареной.
К недостаткам человеческих и автоматических арен можно отнести смещение предпочтений к более длинным ответам. Из-за этого модели, которые выдают более короткий, но правильный ответ, будут недооценены. Такому смещению подвержены как люди, так и сильные модели-судьи. Но в бенчмарке Alpaca Eval процент побед рассчитывается с учетом длины ответа за счет добавления линейной модели в расчет вероятностей побед.
Модель-судья — GPT-4o:
Model |
Length-Controlled win-rate |
win-rate |
Avg symbols |
GPT-4o 2024-08-06 |
50 |
50 |
1666 |
T-Pro |
47.61 |
56.15 |
1586 |
GPT-4o mini 2024-07-18 |
45.51 |
45.1 |
1336 |
RuAdapt-Qwen-2.5-32B-Instruct-v1 |
43.15 |
45.4 |
1776 |
Qwen-2.5-72B-Instruct |
42.07 |
48.07 |
1591 |
T-lite |
39.61 |
45.95 |
1898 |
Gemma-2-27B-it |
38.82 |
39.37 |
1328 |
GigaChat Max 1.0.26.20 |
38.13 |
43.58 |
1498 |
Gemma-2-9B-it |
36.87 |
36.26 |
1281 |
IlyaGusev/saiga_nemo_12b_v3 |
35.56 |
47.06 |
1858 |
Qwen-2.5-32B-Instruct |
35.01 |
46.3 |
1942 |
GigaChat Pro 1.0.26.15 |
29.83 |
27.94 |
1173 |
RuAdapt-Qwen-2.5-7B-Instruct-v1 |
28.43 |
33 |
1736 |
Nexusflow-Athene-V2-Chat |
26.31 |
13.34 |
504 |
T-lite-0.1 |
27.12 |
47.72 |
2266 |
Qwen-2.5-7B-Instruct |
25.61 |
28.55 |
1486 |
Vikhr-Nemo-12B-Instruct-R-21-09-24 |
23.26 |
32.61 |
1723 |
YandexGPT 4 Pro 23.10.24 |
22.65 |
20.58 |
1144 |
Философия нашего подхода
Мы всегда стремились делать самые качественные продукты для наших пользователей.
Несмотря на то что открытые LLM с каждым следующим поколением становятся все лучше, их качество из коробки нас не устраивало. Даже идея, что можно запускать продукты поверх sota проприетарных моделей с промптингом вроде GPT-4, имеет множество ограничений.
Мы бы хотели уметь влиять на свойства LLM:
-
Иметь модель с правильным русским языком, которая не переходит непроизвольно на английский, не делает грамматические ошибки, правильно понимает устойчивые выражения и термины, не страдает англицизмами и артефактами дословного перевода.
-
У модели должны быть знания в доменах, которые важны для нас (домен поддержки, домен ecom, etc.).
-
Иметь возможность управлять плотностью токенизацией, чтобы оптимизировать эффективность инференса.
-
Закладывать в модель любые нужные нам навыки (например, tool calling, reasoning, классификация, суммаризация).
Обычно знания LLM закладываются на этапе pre-training, а обучение конкретным навыкам в instruct-режиме делается во время глубокого алаймента. Влиять на такие свойства модели только на этапе файн-тюнинга под задачу часто оказывается невозможно.
Современные LLM предобучаются на >15T токенов что составляет примерно 90 дней на 256H100 для 7B-модели, и это для одного эксперимента без учета падений, подбора гиперпараметров и т. д. В практических реалиях это оказывается чрезмерно дорого, особенно если планируется обучать модели больших размеров (30—70 млрд и более параметров).
Нам нужно было найти правильный баланс между полным предобучением своих LLM-моделей с нуля и использованием самых последних opensource-моделей. Обучение с нуля дает возможность полной кастомизации, но избыточно, сложно и дорого. Открытые модели могут не удовлетворять желаемым свойствам, но постоянно улучшаются и сокращают отставание от своих проприетарных аналогов.
Наша система ценностей в компании привела к созданию и развитию технологии continual-pretraining + general alignment, позволяющей брать открытые большие языковые модели и дообучать их на русский язык, на интересующие нас домены и навыки.
Подробнее об этом подходе я рассказывал на Turbo ML Conf в своем докладе и Никита Сурначев в докладе «Как делать LLM Alignment без тысячи ИИ-тренеров».
Наш подход, с одной стороны, позволяет использовать наработки мирового сообщества и тратить на 80—90% меньше, чем компании, сделавшие ставку на обучение с нуля. С другой стороны — получать лучшее качество в своих продуктах на русском языке.
Ограничения моделей. На всех стадиях тренировка проходила с базовой длиной контекста 8k. Мы не изучали, как себя поведет базовая модель на задачах, которые имеют длину контекста >8k токенов, хотя базовые модели Qwen 2.5 имеют базовую длину контекста 32k токенов.
В этом релизе мы не модифицировали оригинальный токенизатор базовой модели, поэтому плотность токенизации осталась как у моделей Qwen 2.5. Но вы можете самостоятельно адаптировать расширенный токенизатор поверх уже обученной модели с помощью техник, примененных авторами моделей RuAdapt.
Мы не фокусировались на задаче tool calling, планируем добавить это в наши следующие релизы.
Выводы
T-Lite — небольшая и эффективная в инференсе модель с отличными метриками, ее можно использовать для базовых задач или файнтюнинга на целевую задачу.
T-Pro подойдет для решения более широкого класса задач в промптинге или для решения более сложных задач в режиме файнтюнинга, где модели меньшего размера не справляются.
Любые LLM-модели склонны галлюцинировать факты, которые они не знают. Поэтому при создании продуктов на основе LLM используйте RAG или файнтюн модели под вашу целевую задачу.
Ответственность за безопасность моделей лежит на тех, кто открывает доступ модели конечным пользователям. На этой поверхности гораздо проще организовать вдумчивую защиту. Это можно делать и дообучением модели, и внешними контурами безопасности, и, в конце концов, модерацией ответов модели живым человеком.
Больше технологических деталей и сам «рецепт» дообучения подробнее раскроем в следующей статье. А пока — нам будет полезно получить от вас обратную связь в виде issues в hf. Напоминаю ссылки:
-
T-Lite и T-Pro на huggingface
Автор: anatolii-potapov