Привет! Меня зовут Настя Бурьянская, я занимаюсь координацией 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 и другие.
Эти конкретные шаги в дальнейшем помогут мне ( а теперь еще и вам) не только структурировать процесс дообучения большой языковой модели, но и обеспечить её успешное внедрение и функционирование.
Автор: a_burianskaia