Nlp 在另一台机器上加载经过训练的模型-fastai、torch、huggingface

Nlp 在另一台机器上加载经过训练的模型-fastai、torch、huggingface,nlp,pytorch,huggingface-transformers,fast-ai,Nlp,Pytorch,Huggingface Transformers,Fast Ai,我正在使用fastai和pytorch从拥抱的脸上微调XLMRoberta。 我训练过模型,在我训练过的机器上一切都很好 但是当我尝试在另一台机器上加载模型时,我得到了OSError-未找到-没有指向.cache/torch/transformers/的文件或目录。问题是vocab_文件的路径 我曾使用fastai导出.pkl文件中的模型,但我不认为这个问题与fastai有关,因为我发现它出现在flairNLP中 培训期间存储vocab_文件的缓存文件夹路径似乎嵌入到.pkl文件中: 该错误来

我正在使用fastai和pytorch从拥抱的脸上微调XLMRoberta。 我训练过模型,在我训练过的机器上一切都很好


但是当我尝试在另一台机器上加载模型时,我得到了
OSError-未找到-没有指向
.cache/torch/transformers/
的文件或目录。问题是
vocab_文件的路径

我曾使用fastai导出
.pkl
文件中的模型,但我不认为这个问题与fastai有关,因为我发现它出现在flairNLP中

培训期间存储vocab_文件的缓存文件夹路径似乎嵌入到
.pkl
文件中:

该错误来自变压器的
\uuuu设置状态\uuuu

def\uu设置状态(self,d):
自我记录
self.sp_model=spm.SentencePieceProcessor()
self.sp_model.Load(self.vocab_文件)
它尝试使用文件中的路径加载vocab_文件

我已尝试使用以下方法修补此方法:

pretrained\u model\u name=“xlm罗伯塔基地”
vocab_file=xlmRoberTokenizer.from_pretrained(pretrained_model_name)。vocab_文件
def_设置状态(自,d):
自我记录
self.sp_model=spm.SentencePieceProcessor()
self.sp_model.Load(vocab_文件)
XLMRobertaTokenizer.\uuuuu setstate\uuuu=MethodType(\u setstate,XLMRobertaTokenizer(vocab_文件))
这成功地加载了模型,但导致了其他问题,如缺少模型属性和其他不需要的问题


有人能解释一下为什么路径嵌入到文件中,有没有办法在不重新导出模型的情况下对其进行配置,或者如果必须重新导出,如何使用fastai、torch和huggingface动态配置它。

。cache/torch/transformers
是默认缓存位置,不应用于加载模型。实际上,我并不完全确定您想要做什么,但是当fastai(从未使用过它)有一个导出时,为什么不使用相应的导入?存储hugginface模型和标记器的正确方法是使用
save\u pretrained(location)
。稍后,您可以使用\u pretrained
@cronoik中的
加载此操作中的标记器和模型谢谢您的评论。是的,我知道huggingface中的
预训练
函数,但所有库都交织在一起,我必须覆盖fastai导出的某些部分。无论如何,我会仔细看看,看看我能做些什么,但现在我通过创建Docker映像解决了这个问题。我以前问过你,但是fastai没有导入功能吗?