如何减少 Transformer 的 Helsinki-NLP/opus-mt-es-en(翻译模型)的推理时间

sam*_*238 7 machine-translation pytorch huggingface-transformers

目前 Helsinki-NLP/opus-mt-es-en 模型从 Transformer 进行推理大约需要 1.5 秒。怎样才能减少呢?此外,当尝试将其转换为 onxx 运行时时出现此错误:

ValueError:无法识别此类 AutoModel 的配置类 <class 'transformers.models.marian.configuration_marian.MarianConfig'>:AutoModel。模型类型应为 RetriBertConfig、MT5Config、T5Config、DistilBertConfig、AlbertConfig、CamembertConfig、XLMRobertaConfig、BartConfig、LongformerConfig、RobertaConfig、LayoutLMConfig、SqueezeBertConfig、BertConfig、OpenAIGPTConfig、GPT2Config、MobileBertConfig、TransfoXLConfig、XLNetConfig、FlaubertConfig、FSMTConfig、XLMConfig、CTRLConfig 之一, ElectraConfig、ReformerConfig、FunnelConfig、LxmertConfig、BertGenerationConfig、DebertaConfig、DPRConfig、XLMProphetNetConfig、ProphetNetConfig、MPNetConfig、TapasConfig。

是否可以将其转换为 onxx 运行时?

Jin*_*ich 5

OPUS 模型最初是使用Marian进行训练的,Marian 是一个完全用 C++ 编写的高度优化的机器翻译工具包。与 PyTorch 不同的是,它确实有成为通用深度学习工具包的雄心,因此它可以专注于 MT 效率。Marian 配置和如何下载模型的说明位于https://github.com/Helsinki-NLP/OPUS-MT

Huggingface 变形金刚的 OPUS-MT 模型是从原始 Marian 模型转换而来,更多的是用于原型设计和分析模型,而不是在类似生产的设置中使用它们进行翻译。

在 Marian 中运行模型肯定会比在 Python 中快得多,而且肯定比破解 Transformers 使用 onxx 运行时运行要容易得多。Marian 还提供了进一步的技巧来加速翻译,例如通过模型量化,但这是以牺牲翻译质量为代价的。

对于 Marian 和 Transformers,如果您使用 GPU 或在解码期间缩小波束宽度( Transformers 方法num_beams中的属性),则可以加快速度。generate