Как экспортировать строфу в формат ONNX?

#machine-learning #nlp #onnx #onnxruntime #stanza

#машинное обучение #nlp #onnx #onnxruntime #stanza

Вопрос:

Как экспортировать строфу в формат ONNX? Кажется невозможным просто обучить модель.

Ответ №1:

Здесь есть объяснение: https://pytorch.org/tutorials/advanced/super_resolution_with_onnxruntime.html

Я создал форк из stanza для этого эксперимента здесь https://github.com/vivkvv/stanza . Смотрите также Мои коммиты https://github.com/vivkvv/stanza/commits?author=vivkvv .

Я использовал pipeline_demo.py для тестирования. Главное, что я добавил, — это код только внутри models/tokanization/trainer.py ниже строки 77

pred = self.model(units, features)

В связи с объяснением я добавил

         torch.onnx.export(
            self.model,
            (units, features),
            onnx_export_file_name,
            opset_version=9,
            export_params=True,
            do_constant_folding=True,
            input_names=['input'],
            output_names=['output'],
            dynamic_axes={
                'input': {0: 'batch_size'},
                'output': {0: 'batch_size'}
            }
        )
 

и это работает для токенизации. Но то же самое не работает, например, для pos или lemmatizer (см. Мой коммит для PartOfSpeech). И я получаю разные ошибки для разных opset_version.

Я создал вопрос на github / stanza, и вы могли видеть там https://github.com/stanfordnlp/stanza/issues/893

Комментарии:

1. Кроме того, я создал проблему для ONNX, см. github.com/onnx/onnx/issues/3887