Как я могу конвертировать модели Opus-MT в тензорный поток SavedModel? - PullRequest
0 голосов
/ 29 апреля 2020

Проект Opus-MT предоставляет большой выбор моделей нейронного перевода с предварительной подготовкой .

Opus-MT основан на Marian-NMT , который является чистой кодовой базой C ++, тесно связанной с nematus . Наконец, nematus основан на тензорном потоке.

По соображениям развертывания я хотел бы преобразовать модель Opus-MT в тензорный поток SavedModel. Я очень надеюсь, что это как-то возможно:

  • предварительно подготовленные модели Opus-MT сохраняют веса слоев в красиво отформатированных .npy файлах
  • по умолчанию, команды Marian-NMT Для обучения новых моделей создайте совместимые с Nematus модели.

1 Ответ

0 голосов
/ 30 апреля 2020

К сожалению, это не легко возможно.

RNN на Marian по-прежнему сохраняет обратную совместимость с моделями Nematus, но с устаревшей версией , реализованной в Theano, которая, кажется, больше не поддерживается. Нет никакой совместимости между Marian и текущей версией TensorFlow Nematus.

Модели в Opus-MT являются Transformers, Transformer никогда не был реализован в версии Nematus для Theano, только в TensorFlow.

Marian сохраняет параметры в двоичном формате, который можно загрузить с помощью Numpy. Теоретически, вы можете построить точно такую ​​же архитектуру в TensorFlow (я сомневаюсь, что текущий Nematus будет точно таким же, будут некоторые незначительные различия в операциях брекетинга, некоторые матрицы могут быть транспонированы, и т. Д. c.) И назначить значения параметров переменным TensorFlow. Но это была бы очень утомительная работа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...