我正在命令行中运行Fairseq。Fairseq动态加载语言模型并进行翻译。它工作得很好,但是加载模型和进行转换需要时间。我在想,如果我们将Fairseq作为内存中的服务运行,并预加载所有的语言模型,那么运行服务和翻译就会很快了。
我的问题是,
如果我们将Fairseq作为内存中的服务运行并预加载语言模型,那么
。
非常感谢你的帮助。
发布于 2021-03-31 03:09:50
预压模型存在一个问题:
https://github.com/pytorch/fairseq/issues/1694
对于自定义模型,下面的代码显示了如何在内存中预加载整流罩模型,这是一个正式的示例,可以在:https://github.com/pytorch/fairseq/tree/master/examples/translation#example-usage-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')。
当然,如果您预先加载,它可能会更高效。对于一个相当大的大型号,它需要几秒钟才能加载到内存中。
https://stackoverflow.com/questions/66525973
复制相似问题