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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Выводы

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Комментарии (4)


  1. MAXH0
    04.10.2024 12:42
    +1

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


  1. d-sh
    04.10.2024 12:42
    +1

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


  1. Ioldyz
    04.10.2024 12:42

    Некоторые словосочетания режут глаз. Месяц работы, скорее всего, сказывается.

    Интересно, как ваш ИИ поймёт такое словосочетание на татарском, как «Малай кара». ИИ, с которыми я пробовал, не очень справляются, и переводчики не совсем корректно переводят.


  1. ressiwage
    04.10.2024 12:42

    tl;dr: так мало ресурсов было, очень мало. мтс никого не дал. обучили kotype на переведённых датасетах. очень мало ресурсов было, было очень сложно