Как за месяц научить нейросеть говорить на татарском: опыт MTS AI

Привет, Хабр! Меня зовут Настя Бурьянская, я занимаюсь координацией  LLM-проектов в MTS AI. Сегодня я расскажу вам о том, как мы силами пяти человек за месяц научили нашу большую языковую модель Cotype Lite общаться на татарском языке.Я лишь недавно пришла в компанию, проработав до этого несколько лет проджектом в e-com, поэтому сфера LLM для меня все еще немного в новинку. Поэтому, когда мне дали задание перевести нашу модель на татарский язык, я была воодушевлена и немного напугана, потому что лидировать разработку большой языковой модели мне довелось впервые. Эту статью сложно назвать классической историей успеха — скорее, вас ждет рассказ о том, чему я научилась, занимаясь этим проектом.

Зачем вообще понадобилась модель на татарском?

Забегая вперед, скажу, что мы представили нашу новую версию модели на форуме Kazan Digital Week, который проходил в Татарстане с 9 по 11 сентября. У нее почти тот же функционал, что и у версии на русском языке — может отвечать на общие вопросы, анализировать документы до 8 тысяч токенов и суммаризировать их.

06b43dbec2410cb4ed2bd9df25600703.jpg

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

e8da3a683651bc6a07f50aaee123b033.jpg

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

В результате я смогла отнять хоть какое-то количество рабочего времени у четырех человек. 

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

Как мы обучали модель

Прежде всего нам нужно было решить, какую именно генеративную модель мы будем использовать на форуме. Мы выбрали младшую версию Cotype Lite, которая содержит 8 млрд параметров. Во-первых, потому что нам нужно было лишь продемонстрировать общие возможности модели, а не создать нейросеть для конкретной бизнес-задачи. Во-вторых, на ее обучение потребовалось бы меньше ресурсов –, а значит, уйдет не так много времени. К тому же, при необходимости мы сможем создать LLM на татарском и с большим количеством параметров — до 70 млрд параметров, а также большим контекстным окном до 32 тысяч токенов, — чтобы модель умела выполнять такие задачи как перевод и генерация длинных текстов.

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

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

Однако проверить в такие сжатые сроки большой объем текстов им было бы трудно — самый крупный датаcет содержит около 300 000 строк, всего мы использовали для обучения около 50 тыс. пар вопрос-ответ. Поэтому из наших переведенных текстов мы сделали набор наиболее репрезентативных материалов для проверки.

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

dc1566554be1312e18dab33308a2ad1a.png

На этом этапе выяснилось множество специфических особенностей языка, которые были незаметны через переводчик — например, татарский язык имеет порядок слов SOV (подлежащее-дополнение-сказуемое), то есть глагол обычно стоит в конце предложения. Это может создавать впечатление, что числительные находятся ближе к концу предложения, если они связаны с объектом действия. Например, Мин өч китап укыдым. — «Я прочитал три книги.» 

Горящие дедлайны

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

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

9bad3c13caeb53dd05c1c6f13ed07630.png

В понедельник на форуме наша демо-модель запустилась и хорошо отработала все три дня. Конечно, не обошлось без мелких проблем, которые возникли из-за спешки –, но их мы быстро поправили еще в первый день мероприятия. 

Выводы

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

Какие еще выводы можно сделать из этой истории?  

Я еще больше убедилась в правильности всех стандартных принципов управления проектами. К ним относятся:  

  • составление детального плана проекта с указанием сроков и ответственных лиц;

  • регулярные встречи и отчёты для обеспечения прозрачности процесса;

  • выявление потенциальных рисков и разработка планов их минимизации.

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

В целом алгоритм распределения обязанностей выглядит следующим образом:  

  • назначить специалистов, которые будут отвечать за качественный и своевременный перевод необходимых данных;  

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

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

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

Теперь я также лучше понимаю, насколько важно определить, какое железо нужно для раскатки модели — GPU, CPU и другие. 

Эти конкретные шаги в дальнейшем помогут мне (, а теперь еще и вам) не только структурировать процесс дообучения большой языковой модели, но и обеспечить её успешное внедрение и функционирование.

© Habrahabr.ru