Движок Bergamot для дополнения Firefox Translations выполнял перевод на компьютере пользователя. В техническом разборе Mozilla описала, как систему на базе C++‑фреймворка Marian адаптировали для работы в браузере через WebAssembly.
От прототипа к загрузке по требованию
Первый прототип включал модели и словари в виртуальную файловую систему Emscripten, из‑за чего при добавлении языков увеличивался весь пакет: пользователь загружал и ненужные модели. Разработчики заменили такую упаковку API, принимающим отдельные байтовые буферы, — благодаря этому дополнение стало загружать только нужные языковые пары независимо от движка.
Где искали ускорение
Профилирование показало узкие места в матричных умножениях с 8‑битными операндами и накладные расходы при обработке исключений. Команда оптимизировала эти участки и инструментальную цепочку сборки. В одном из приведённых тестов перевод с английского на немецкий ускорился примерно с 95 до 870 слов в секунду на той же конфигурации ноутбука.
Это измерения разработчиков дополнения и конкретных моделей; они не гарантируют такой же скорости на других устройствах или для других языковых пар. Описанные экспериментальные инструкции и отключённая многопоточность относятся к этой реализации, а не к универсальным ограничениям WebAssembly.