gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 15:10:45 29 4
gpt4 key购买 nike

我正在使用 fastai 和 pytorch 从 huggingface 微调 XLMRoberta。我已经训练了模型,并且在我训练它的机器上一切正常。

但是当我尝试在另一台机器上加载模型时,我得到 OSError - Not Found - No such file or directory pointing to .cache/torch/transformers/。问题是 vocab_file 的路径。

我用过 fastai 的 Learner.export将模型导出到 .pkl 文件中,但我不认为这个问题与 fastai 有关,因为我发现了 the same issue出现在 flairNLP 中。

在训练期间存储 vocab_file 的缓存文件夹的路径似乎嵌入到 .pkl 文件中: enter image description here

错误来自变压器的XLMRobertaTokenizer __setstate__:

def __setstate__(self, d):
self.__dict__ = d
self.sp_model = spm.SentencePieceProcessor()
self.sp_model.Load(self.vocab_file)

它尝试使用文件中的路径加载 vocab_file。

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

pretrained_model_name = "xlm-roberta-base"
vocab_file = XLMRobertaTokenizer.from_pretrained(pretrained_model_name).vocab_file

def _setstate(self, d):
self.__dict__ = d
self.sp_model = spm.SentencePieceProcessor()
self.sp_model.Load(vocab_file)

XLMRobertaTokenizer.__setstate__ = MethodType(_setstate, XLMRobertaTokenizer(vocab_file))

这成功加载了模型,但导致了其他问题,例如缺少模型属性和其他不需要的问题。

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

最佳答案

我遇到了同样的错误。我在 fastai 版本 = 1.0.61 的下游分类任务上对 XLMRoberta 进行了微调。我正在 docker 中加载模型。

我不确定为什么要嵌入路径,但我找到了解决方法。发布给可能正在寻找解决方法的 future 读者,因为通常不可能进行再培训。

  1. 我在 docker 镜像中创建了/home/.cache/torch/transformer/。
RUN mkdir -p /home/<username>/.cache/torch/transformers
  1. 将文件(在 docker 中找不到)从我的本地/home/.cache/torch/transformer/复制到 docker image/home/.cache/torch/transformer/
 COPY filename:/home/<username>/.cache/torch/transformers/filename

关于nlp - 在另一台机器上加载经过训练的模型——fastai、torch、huggingface,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65249790/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com