fairseq - 在内存和预加载语言模型中运行 Fairseq
问题描述
我在命令行中运行 Fairseq。Fairseq 即时加载语言模型并进行翻译。它工作正常,但加载模型和进行翻译需要时间。我在想,如果我们将 Fairseq 作为内存服务运行并预加载所有语言模型,那么运行该服务并进行翻译会很快。
我的问题是,
- 如果我们将 Fairseq 作为内存服务运行并预加载语言模型,效率会更高吗?
- 我们可以期待多少效率提升?
- 实现这样一个内存中的 Fairseq 服务有多容易?
非常感谢您提供帮助。
解决方案
预加载模型存在问题:
https://github.com/pytorch/fairseq/issues/1694
对于自定义模型,下面的代码显示了如何在内存中预加载 fairseq 模型,这是一个官方示例,可以在以下位置找到:https ://github.com/pytorch/fairseq/tree/master/examples/translation#example-使用-torchhub
from fairseq.models.transformer import TransformerModel
zh2en = TransformerModel.from_pretrained(
'/path/to/checkpoints',
checkpoint_file='checkpoint_best.pt',
data_name_or_path='data-bin/wmt17_zh_en_full',
bpe='subword_nmt',
bpe_codes='data-bin/wmt17_zh_en_full/zh.code'
)
zh2en.translate('你好 世界')
# 'Hello World'
您可以通过源代码找到有关该方法的更多详细信息from_pretrained
:https ://github.com/pytorch/fairseq/blob/579a48f4be3876082ea646880061a98c94357af1/fairseq/models/fairseq_model.py#L237
预加载后,您可以在没有命令行的情况下重复使用。
如果要使用 gpu,请记住执行:model.to('cuda')
。
当然,如果您预加载它会更有效。对于一个相当大的模型,加载到内存需要几秒钟。
推荐阅读
- curl - 如何创建与 Curl 问题等效的 ColdFusion
- r - 在 R 中使用 doSNOW 和 foreach 时,您可以隐藏“类型:EXEC”和“类型:完成”输出吗?
- ruby - Chef powershell_out SystemCallError 文件名或扩展名太长。- CreateProcessAsUserW 失败
- python - 如何使用 Jupyter Notebook 读取本地 conf 文件?
- angular - 将焦点放在 Angular 上动态创建的输入上
- google-pay - google pay 的退款系统如何运作?
- c# - C# ASP.NET:“对象引用未设置为对象的实例。” System.Xml.Linq.XElement.Attribute(...) 返回 null
- java - 如何在字符串的每 3 个字符之后将给定的字符添加到字符串?
- sql - SQL 选择截至过去日期的记录
- flutter - 如何知道 Dio 库中的时间段服务器响应?