AI-решения
Подробнее
Журнал Gerwin
Журнал Gerwin

Татарский язык для GPT-3: файнтюнинг DaVinci. История из эпохи «до ChatGPT»

Небольшой технический отчет о файнтюнинге LLM для генерации текстов на татарском языке в 2022 году
Татарский язык для GPT-3: файнтюнинг DaVinci. История из эпохи «до ChatGPT»Татарский язык для GPT-3: файнтюнинг DaVinci. История из эпохи «до ChatGPT»

Путешествие в 2022 год, или мир до языкового хайпа

Давайте на минуту вернемся в начало 2022 года. Мир технологий еще не был охвачен лавиной под названием ChatGPT, а большие языковые модели (LLM) оставались инструментом для энтузиастов и исследовательских команд.

В то время флагманская модель OpenAI, GPT-3 davinci, считалась самой мощной из доступных на рынке трансформерных архитектур, но ее возможности были далеки от сегодняшних стандартов. Она неплохо справлялась с английским, но даже для генерации качественного контента на русском языке требовала серьезного дообучения. О поддержке малоресурсных языков не было и речи.

Для нас в компании Gerwin поддержка языкового разнообразия России всегда была важным направлением. Так перед нами встала задача: адаптировать модель для генерации текстов на татарском языке для пользователей нашего сервиса Gerwin AI.

В этой статье мы расскажем, как мы подошли к решению этой задачи с помощью полного файнтюнинга (full fine-tuning). Опишем структуру нашего проприетарного датасета, покажем примеры работы модели. Это наш кейс об одном из ранних примеров адаптации LLM для малоресурсного языка.

Почему полный файнтюнинг? Выбор технологии в прошлом

В 2021–2022 годах выбор подходов к адаптации моделей был ограничен. Методы параметро-эффективного обучения (PEFT), такие как LoRA, еще не стали индустриальным стандартом. Если стояла задача не просто скорректировать стиль, а фундаментально внедрить в модель лексику, грамматику и синтаксис нового языка, по сути, был один основной путь — полный файнтюнинг (full fine-tuning).

Анатомия нашего датасета

Перед нами стояла прагматичная задача: не научить модель философствовать на татарском, а дать ей возможность качественно выполнять конкретные задачи пользователей нашего сервиса Gerwin AI. В нашем арсенале было около 70 инструментов копирайтинга: «Описание товара», «Преимущества», «Абзац для статьи» и другие. Именно под эти сценарии мы и формировали наш обучающий датасет.

Наш внутренний датасет, на котором обучалась финальная модель, насчитывал почти сто тысяч качественных примеров. Но его сила была не столько в объеме, сколько в структуре. Ключевым элементом нашей методологии стало многоязычное инструктирование — мы подавали команды (промпты) на разных языках, чтобы добиться максимальной эффективности обучения.

Наша формула распределения языков в промптах выглядела так:

  • ~50% промптов состоящих из английского-татарского языков.** Английский был «родным» языком для DaVinci, и инструкции на нем модель понимала наиболее точно. Это был наш способ научить ее сложным командам и гарантировать предсказуемое поведение.
  • ~30% промптов состоящих из русского-татарского языков.** Это был основной язык наших пользователей. Обучение на русскоязычных инструкциях делало модель более удобной и понятной для локального рынка.
  • ~20% промптов полностью на татарском языке. Это был самый тонкий этап. Такие примеры должны были научить модель не столько выполнять команду, сколько улавливать внутренние паттерны самого языка: структуру вопросно-ответных пар, контекстную связность и стилистику.

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

{"prompt": "Наил исеме нәрсәне аңлата? ->", "completion": "Наил гарәпчә «ирешүче, максатына җитүче, уңышлы» мәгънәсен белдерә."}
{"prompt": "Переведи на татарский: Привет! ->", "completion": " Сәлам!"}
{"prompt": "Түләү алынуы турында автохәбәр ->", "completion": " Түләвегез уңышлы алынды. Квитанция шушы хатка теркәлгән. Сораулар булса, җавап хаты итеп языгыз."}
{"prompt": "Составь официальное уведомление на татарском о вакцинации домашних животных против бешенства 14–16 декабря с 09:00 до 13:00 на ветеринарном пункте села Түбән Мата ->", "completion": "Хөрмәтле Түбән Мата авылы халкы!\n14, 15 һәм 16 декабрь көннәрендә 09:00 – 13:00 сәгатьтә ветеринар пунктында йорт хайваннарын котыру чиренә каршы бушлай вакцинацияләү үткәреләчәк.\nӨч айдан өлкән эт-мәчеләрне китерү мәҗбүри.\nПаспортлар һәм муенчаклар булырга тиеш.\nСораулар буенча телефон: 8-800-000-00-00.\nТүбән Мата район ветеринария берләшмәсе"}

Такой сбалансированный подход позволил нам «двумя руками» вести модель: одной рукой мы давали ей четкие команды на понятном ей языке, а другой — погружали в языковую среду, чтобы она сама начала улавливать необходимые закономерности.

Основной сложностью была стоимость. Файнтюнинг и последующий инференс (использование дообученной модели) обходились заметно дороже работы с базовой версией. Это накладывало жесткое ограничение: мы не могли позволить себе использовать миллионы случайных текстов для обучения. Датасет должен был быть максимально эффективным и концентрированным, чтобы каждый пример работал на конечную цель. Это и определило наш подход к подготовке данных.

Модель в действии: примеры генерации из 2022 года

Лучший способ продемонстрировать результат нашей работы — показать модель в действии, решающую реальные задачи пользователей в интерфейсе Gerwin AI. Приведенные ниже примеры взяты непосредственно из нашего анонса от 9 июля 2022 года, чтобы в точности передать возможности системы на тот момент.

Представим, что пользователю нужно написать статью в блог на тему «Традиции праздника Курбан-Байрам».

Пример: создание вводного абзаца для статьи

Запрос:* Корбан бәйрәме традицияләре бөтен дөньядан

Результат, сгенерированный Gerwin AI:

Корбан бәйрәме-бөтен дөнья мөселманнары тарафыннан билгеләп үтелә торган үзенчәлекле бәйрәм. Бу бәйрәм Ибраһимнең улы Ягъкубны корбан итүгә әзерлегенә багышлана. Бу бәйрәм төрлечә үткәрелсә дә, мөселманнарны бөтен дөньяда бүлешүче кайбер традицияләр бар. Бу хәбәр блоге без карарыбыз кайбер гореф-гадәтләрен бәйрәм итү Корбан-Байрам бөтен дөнья.

Генерация на татарском языке
Генерация на татарском языке
09.07.2022

В переводе на русский: «Курбан-Байрам — особый праздник, который отмечают мусульмане всего мира. Этот праздник посвящен подготовке Авраама к жертвоприношению его сына… Несмотря на то, что этот праздник проводится по-разному, существуют некоторые традиции, общие для мусульман во всем мире. В этом сообщении в блоге мы рассмотрим некоторые традиции празднования Курбан-Байрам…»

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

Пример: генерация плана статьи

Результат, сгенерированный Gerwin AI:*

  1. Корбан бәйрәме-бөтен дөнья мөселманнары тарафыннан билгеләп үтелә торган үзенчәлекле бәйрәм.
  2. Бу бәйрәм улыңны Аллаһ ризалыгы өчен корбан итәргә әзерлегенә багышлана.
  3. Бу көнне мөселманнар хайваннарны суялар һәм ярлыларга ит тараталар.
  4. Корбан бәйрәме шулай ук хаҗ тәмамлануны, Мәккәгә ел саен хаҗ кылуны да билгеләп үтә.
  5. Мөселманнар Корбан бәйрәмен бәйрәмнәр, догалар һәм гаиләсе һәм дуслары белән аерым чаралар белән билгеләп үтә.
Генерация на татарском языке
Генерация на татарском языке
09.07.2022

Возможности модели не ограничивались только статьями. Система была обучена под разные форматы контента.

Короткие посты для соцсетей:

 Запрос: «Я сегодня иду на „Татнефть-Арену“ отмечать Курбан-Байрам со всей моей семьей»  

Результат: Бүген мин «Татнефть арена» га, Корбан гаетен бөтен гаиләм белән бәйрәм итү өчен барам. Мин шулай шат отпраздновать бу үзенчәлекле көнне кешеләр белән, алар мин яратам барысыннан.

Генерация на татарском языке
Генерация на татарском языке
09.07.2022

Творческие задачи, например, «Интересная история»:

 Запрос: «Моя жизнь в столице Татарстана»  > Результат: Мин Татарстан башкаласы Казанда тудым һәм үстем. Яшь чагымнан бирле мин һәрвакыт шәһәрнең бай тарихы һәм уникаль мәдәнияте белән шаккаттым…

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

Генерация на татарском языке
Генерация на татарском языке
09.07.2022

Открытый пример сборки датасета

Для предметной иллюстрации описанной методологии мы публикуем репрезентативную выборку из нашего проприетарного обучающего датасета 2022 года.

Этот датасет содержит 540 примеров в формате JSONL, каждый из которых представляет собой пару prompt -> completion. Выборка охватывает различные сценарии использования, которые были реализованы в Gerwin AI: от генерации коротких постов для соцсетей до составления планов статей и описаний товаров.

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

 Датасет доступен на Hugging Face

{"prompt": "Чабрец кушылган татар чәе турында кыскача тасвирлама яз ->", "completion": "Чабрецлы татар чәе җылы, бераз борычлы хуш исле. Чабрец үләне тәнне җылыта, салкын тиюдән саклый. Кискен булмаган тәме көндәлек эчү өчен уңай."}
{"prompt": "Липа чәчәге кушылган татар чәе турында кыскача тасвирлама яз ->", "completion": "Липа чәчәге салынган чәйнең тәме баллы-йомшак, хуш исе тынычландыра. Ул тамак авыртканда файдалы, йокы алдыннан эчәргә киңәш ителә. Организмны җылытучы табигый эчемлек."}
{"prompt": "Душица (кыргый бәрхет) кушылган татар чәенә тасвирлама бир ->", "completion": "Душица кушылган чәйне ачып җибәргәндә, сагышлы-татлы ис тарала. Ул ашкайнатуны яхшырта, баш авыртуын җиңеләйтә. Тәме йомшак, бераз хуш әче."}
{"prompt": "Мәтрүшкә (мята) кушылган татар чәе өчен кыска тасвирлама ->", "completion": "Мяталы татар чәе салкынлык бирә, авызны сергетә. Мәтрүшкә нерв системасын йомшарта, ашкайнатуга ярдәм итә. Җәй көне салкынча итеп эчәргә дә уңай."}
{"prompt": "Шалфей кушылган кара татар чәе турында аңлатма яз ->", "completion": "Шалфейле кара чәйнең төсе куе, тәме бераз әче-борычлы. Шалфей тамак ялкынсынуын киметә, иммунитетны ныгыта. Сыегайткыч бал белән парлап эчсәң, файдасы арта."}
{"prompt": "Кура җиләге яфрагы салынган татар чәе турында кыскача тасвир ->", "completion": "Кура җиләге яфраклы чәй җәй исен хәтерләтә. Ул С витаминына бай, тирләтә һәм температура төшөрә. Тәме җиңел-җилкен, эчүе рәхәт."}
{"prompt": "Бал кушып ясалган татлы кара татар чәе өчен тасвирлама ->", "completion": "Баллы кара чәйдә шикәр урынына табигый бал кулланыла, шуңа күрә тәме нәзакәтле, файдалы. Бал тамакны йомшарта, энергия бирә. Иртә белән эчү аеруча әйбәт."}
{"prompt": "Кыр үләннәреннән җыелган татар чәе турында кыска тасвирлама ->", "completion": "Кыр үләннәре чәе берничә үлән кушылмасыннан тора: ромашка, бәрхет, каен яфрагы. Тәме күпкатлы, исe әйтеп бетергесез хуш. Организмны чистарта, көч өсти."}
{"prompt": "Миләш җимеше кушылган татар чәе турында кыскача яз ->", "completion": "Миләшле чәйдә җимешләр чәйгә алсу төс һәм бераз әче тәм бирә. Миләш кан тамырларын ныгыта, салкын вакытында С витамины чыганагы. Көз көне аеруча популяр."}
{"prompt": "Ромашка кушылган җиңел татар чәе тасвирламасы ->", "completion": "Ромашкалы чәйнең төсе ачык, тәме йомшак-баллы. Ромашка эчәкләрне тынычландыра, йокыны яхшырта. Көннең теләсә кайсы вакытында эчәргә мөмкин."}

Контекст исследований 2019–2022: NMT и NLG

Чтобы оценить новизну нашего подхода в 2022 году, полезно посмотреть на состояние академических исследований того времени. Большинство работ было сфокусировано на решении классической задачи Машинного Перевода (NMT).

Например, в знаковой статье исследователей из Университета Иннополис от 2019 года, посвященной русско-татарской языковой паре arXiv:1910.00368v1, отмечалась крайняя нехватка данных и неисследованность направления. Их работа была направлена на улучшение качества перевода с помощью методов Transfer Learning (с использованием родственного казахского языка) и Back-Translation. Основной метрикой качества выступал BLEU score, оценивающий точность перевода.

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

По сути, в 2022 году мы уже применяли Instruction Fine-Tuning на базе гигантской Foundation Model (DaVinci), что позволяло решать десятки творческих задач, а не одну узкую задачу перевода. Этот подход, опередивший фокус многих академических работ того времени, и позволил нам первыми вывести на рынок генеративный ИИ для татарского языка.

От Full Fine-Tuning к PEFT

Подход с полным файнтюнингом, который мы применяли в 2022 году, был на тот момент самым мощным инструментом для глубокой адаптации. Однако сегодня для подавляющего большинства задач он считается устаревшим и неэффективным. Примерно с начала 2023 года индустрия массово перешла на методы параметро-эффективной дообучения (Parameter-Efficient Fine-Tuning, PEFT).

Наиболее популярным PEFT-методом является LoRA (Low-Rank Adaptation).

Кроме того, для языков с очень низким представительством в исходном датасете сегодня может применяться и продолженное дообучение (continued pre-training). Это промежуточный этап, на котором модель продолжает свое базовое, неструктурированное обучение (pre-training) на большом моноязычном корпусе (например, на всех текстах татарской Википедии), чтобы лучше усвоить лексику и синтаксис. И только после этого применяется целевой файнтюнинг (LoRA) на датасете инструкций.

Реальные результаты и ограничения

Мы не ставили перед собой цель создать академический бенчмарк или идеальный «цифровой носитель» языка. Наш проект был прагматичным R&D, реализованным без грантов и госпрограмм. Главным мерилом успеха для нас была субъективная оценка пользователей и внутренние тесты.

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

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

Тем не менее, успех нашего запуска подтвердили и публикации в СМИ, среди которых «Реальное Время», «Рамблер» и другие. Это было первое в мире решение, позволившее генерировать осмысленный контент на татарском языке с помощью нейросетей.