Как обучали компактные модели Firefox Translations

Для локального машинного перевода недостаточно просто перенести большую нейросеть в браузер. В разборе проекта Bergamot инженер Mozilla Евгений Павлов описал подходы к созданию компактной модели, рассчитанной на выполнение на CPU.

Качество данных

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

Сжатие модели и дистилляция

В качестве учителя использовали большую модель, которая генерировала целевые переводы для обучения меньшей модели‑студента — этот приём называют дистилляцией. Дополнительно применяли 8‑битную квантизацию для уменьшения размера и ускорения вывода.

В эксперименте на паре «английский—португальский» и тестовом наборе Flores размер модели сократился с 798 МБ до 17 МБ, а время декодирования на одном ядре — с 631 секунды до 17,9 секунды; значение метрики BLEU упало с 52,5 до 50,7. Эти цифры отражают конкретный эксперимент и не обязательно распространяются на все языковые пары или наборы данных.

Инфраструктура и ресурсы

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

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