Разработчики машинного перевода часто рассказывают об использовании предварительно обученных моделей. Захотелось дообучить такую модель самому, но пришлось приложить усилия, чтобы найти понятный пример. Поэтому после того, как код заработал, решил поделиться скриптами.
В качестве предварительно обученной модели взял m2m100.
Дообучал языковую пару с языка хауса на английский. Для этого воспользовался корпусом mafand.
Весь код завязан на работу с моделями и датасетами через huggingface.
Скрипты, на базе которых собирал свои, подсмотрел у ребят из TartuNLP.
Финальный код доступен на гитхабе. В colab можно посмотреть, как запустить дообучение, а потом и перевод.
Итак, что же получается. Предварительно обученная модель фразу на хауса
Wannan dai shi ne karo na 3 da birnin Landan ke karɓar baƙuncin gasar wasanni ta ƙasa da ƙasa da dama.
переводит на английский так:
This is the day of the day of the day of the day of the day of the day of the day of the day of the day.
Проверить это можно, запустив код translate_m2m.py с моделью base_model
.
После дообучения, при помощи кода m2m_multiling_tune_epochs.py, перевод стал, пусть и не идеальным, но гораздо приятнее:
This is the third place for Landan to take a large number of passport disputes across the country.
Чтобы воспроизвести этот перевод, нужно запустить всё тот же translate_m2m.py, но уже с моделью local_model
.
Стоит отметить, что подобные истории очень требовательны к ресурсам, и не на каждой видеокарте данный код запустится. Воспользовался Yandex Cloud, запускался на Nvidia A100. Все эксперименты обошлись примерно в 1000 рублей.
Постарался написать кратко и по существу. Спасибо!
AigizK