目前,赫尔辛基NLP/opus模型需要大约1.5秒的时间从变压器推断。怎样才能减少呢?同样,当尝试将其转换为onxx运行时,会得到以下错误:
'transformers.models.marian.configuration_marian.MarianConfig'>:这类AutoModel: AutoModel的未识别配置类
是否可以将其转换为onxx运行时?
发布于 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 ),您可以加快速度。
发布于 2022-01-10 13:56:54
加速翻译的一种方法是指示(如果可能的话)源语言:
导入库并按如下方式创建模型之后:
from easynmt import EasyNMT
model = EasyNMT('opus-mt')然后(如果可能),提供源语言如下:
translated_word = model.translate("Coucou!", source_lang="fr", target_lang="en" )
print(translated_word) # Hello!这将获得更好的翻译结果(对于短句子),并且比不提供源语言的翻译速度更快:
translated_word = model.translate("Coucou!", target_lang="en")
print(translated_word) # He's gone!官方页面的更多细节:https://github.com/UKPLab/EasyNMT
尽情享受
https://stackoverflow.com/questions/65541788
复制相似问题