首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从变压器减少赫尔辛基-NLP/opus-mt-es-en(翻译模型)的推理时间

如何从变压器减少赫尔辛基-NLP/opus-mt-es-en(翻译模型)的推理时间
EN

Stack Overflow用户
提问于 2021-01-02 17:06:02
回答 2查看 1.9K关注 0票数 5

目前,赫尔辛基NLP/opus模型需要大约1.5秒的时间从变压器推断。怎样才能减少呢?同样,当尝试将其转换为onxx运行时,会得到以下错误:

'transformers.models.marian.configuration_marian.MarianConfig'>:这类AutoModel: AutoModel的未识别配置类

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-01-13 10:10:17

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

Huggingface的变形金刚的作品-MT模型是从原始的玛丽安模型转换而来的,它更多的是用于原型和模型的分析,而不是在类似于生产的安装中使用它们来翻译。

在Marian中运行这些模型肯定要比在Python中快得多,当然也比用onxx运行时攻击Transformers要容易得多。玛丽安还提供了进一步的技巧,以加快翻译,例如,通过模型量化,但这是以牺牲翻译质量。

使用Marian和Transformers,如果您使用GPU或在解码过程中缩小光束宽度(变形金刚中的num_beams方法中的属性generate ),您可以加快速度。

票数 5
EN

Stack Overflow用户

发布于 2022-01-10 13:56:54

加速翻译的一种方法是指示(如果可能的话)源语言:

导入库并按如下方式创建模型之后:

代码语言:javascript
复制
from easynmt import EasyNMT
model = EasyNMT('opus-mt')

然后(如果可能),提供源语言如下:

代码语言:javascript
复制
translated_word = model.translate("Coucou!", source_lang="fr", target_lang="en" )
print(translated_word)  # Hello!

这将获得更好的翻译结果(对于短句子),并且比不提供源语言的翻译速度更快:

代码语言:javascript
复制
translated_word = model.translate("Coucou!", target_lang="en")
print(translated_word)  # He's gone!

官方页面的更多细节:https://github.com/UKPLab/EasyNMT

尽情享受

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65541788

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档