AutoTokenizer.from_pretrained 无法加载本地保存的预训练分词器 (PyTorch)

2024-02-20

我是 PyTorch 的新手,最近我一直在尝试使用 Transformers。我正在使用 HuggingFace 提供的预训练分词器。
我成功下载并运行它们。但如果我尝试保存它们并再次加载,则会发生一些错误。
如果我使用AutoTokenizer.from_pretrained下载分词器,然后它就可以工作了。

[1]:    tokenizer = AutoTokenizer.from_pretrained('distilroberta-base')
        text = "Hello there"
        enc = tokenizer.encode_plus(text)
        enc.keys()

Out[1]: dict_keys(['input_ids', 'attention_mask'])

但如果我使用保存它tokenizer.save_pretrained("distilroberta-tokenizer")并尝试在本地加载它,然后失败。

[2]:    tmp = AutoTokenizer.from_pretrained('distilroberta-tokenizer')


---------------------------------------------------------------------------
OSError                                   Traceback (most recent call last)
/opt/conda/lib/python3.7/site-packages/transformers/configuration_utils.py in get_config_dict(cls, pretrained_model_name_or_path, **kwargs)
    238                 resume_download=resume_download,
--> 239                 local_files_only=local_files_only,
    240             )

/opt/conda/lib/python3.7/site-packages/transformers/file_utils.py in cached_path(url_or_filename, cache_dir, force_download, proxies, resume_download, user_agent, extract_compressed_file, force_extract, local_files_only)
    266         # File, but it doesn't exist.
--> 267         raise EnvironmentError("file {} not found".format(url_or_filename))
    268     else:

OSError: file distilroberta-tokenizer/config.json not found

During handling of the above exception, another exception occurred:

OSError                                   Traceback (most recent call last)
<ipython-input-25-3bd2f7a79271> in <module>
----> 1 tmp = AutoTokenizer.from_pretrained("distilroberta-tokenizer")

/opt/conda/lib/python3.7/site-packages/transformers/tokenization_auto.py in from_pretrained(cls, pretrained_model_name_or_path, *inputs, **kwargs)
    193         config = kwargs.pop("config", None)
    194         if not isinstance(config, PretrainedConfig):
--> 195             config = AutoConfig.from_pretrained(pretrained_model_name_or_path, **kwargs)
    196 
    197         if "bert-base-japanese" in pretrained_model_name_or_path:

/opt/conda/lib/python3.7/site-packages/transformers/configuration_auto.py in from_pretrained(cls, pretrained_model_name_or_path, **kwargs)
    194 
    195         """
--> 196         config_dict, _ = PretrainedConfig.get_config_dict(pretrained_model_name_or_path, **kwargs)
    197 
    198         if "model_type" in config_dict:

/opt/conda/lib/python3.7/site-packages/transformers/configuration_utils.py in get_config_dict(cls, pretrained_model_name_or_path, **kwargs)
    250                 f"- or '{pretrained_model_name_or_path}' is the correct path to a directory containing a {CONFIG_NAME} file\n\n"
    251             )
--> 252             raise EnvironmentError(msg)
    253 
    254         except json.JSONDecodeError:

OSError: Can't load config for 'distilroberta-tokenizer'. Make sure that:

- 'distilroberta-tokenizer' is a correct model identifier listed on 'https://huggingface.co/models'

- or 'distilroberta-tokenizer' is the correct path to a directory containing a config.json file

目录中缺少“config.json”。在检查目录时,我得到这些文件的列表:

[3]:    !ls distilroberta-tokenizer

Out[3]: merges.txt  special_tokens_map.json  tokenizer_config.json  vocab.json

我知道这个问题之前已经发布过,但似乎都不起作用。我也尝试遵循docs https://huggingface.co/transformers/model_doc/auto.html#autotokenizer但仍然无法使其发挥作用。
任何帮助,将不胜感激。


目前有一个issue https://github.com/huggingface/transformers/issues/4197正在调查中,它仅影响 AutoTokenizers,但不会影响底层标记器,例如(RobertaTokenizer)。例如,以下内容应该有效:

from transformers import RobertaTokenizer

tokenizer = RobertaTokenizer.from_pretrained('YOURPATH')

要使用 AutoTokenizer,您还需要保存配置以离线加载它:

from transformers import AutoTokenizer, AutoConfig

tokenizer = AutoTokenizer.from_pretrained('distilroberta-base')
config = AutoConfig.from_pretrained('distilroberta-base')

tokenizer.save_pretrained('YOURPATH')
config.save_pretrained('YOURPATH')

tokenizer = AutoTokenizer.from_pretrained('YOURPATH')

我建议either对分词器和模型使用不同的路径or保留模型的 config.json,因为您应用于模型的一些修改将存储在 config.json 中,该修改是在model.save_pretrained()当您按照上述方式在模型后保存标记生成器时,该文件将被覆盖(即您将无法使用标记生成器 config.json 加载修改后的模型)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AutoTokenizer.from_pretrained 无法加载本地保存的预训练分词器 (PyTorch) 的相关文章

  • 使用 GIT_PS1_SHOWCOLORHINTS 自定义 __git_ps1 的颜色

    我尝试过的 我已更新我的提示以包含分支名称 git ps1 另外 我设置GIT PS1 SHOWCOLORHINTS 问题 提示正确显示 然而 树枝的颜色始终是绿色的 我预计肮脏的树枝会是红色的 文档指出 颜色基于 git status s
  • 主干关系有许多最佳实践

    我是 Backbone 关系新手 我不确定使用 HasMany 的正确方法是什么 我有一个Parent模型有很多children 许多 是指成千上万的孩子 为了避免性能问题 我通过外键查询子项 child parent 1 而不是创建一个巨
  • 我可以从 LDAP 更改自己的 Active Directory 密码(无需管理帐户)

    我没有 也不会 拥有管理员帐户 我想从 java 更改 Active Directory 中自己 用户 的密码 我怎样才能做到这一点 使用来自网络的代码 private void changePass throws Exception St
  • 下载位置 Selenium-webdriver Cucumber Chrome

    我正在使用 Cucumber 和 Ruby 当通过 Selenium Webdriver 在 Chrome 中运行测试时 我想将下载位置更改为测试文件夹而不是用户下载文件夹 我当前的 chrome 驱动程序设置如下 Capybara def
  • 设置 put 的行尾字符

    我有一系列想要打印的条目 Being arr数组 我只是用来写 puts arr 然后我需要使用DOS格式的行尾 r n 所以我写道 arr each e print e r n 这工作正常 但我想知道是否有一种方法可以指定要使用的行尾格式
  • Android Google Maps V2 当前位置纬度经度 NullPointerException

    有很多类似的问题 但我没有找到解决我的问题的方法 setUpMap方法是 private void setUpMap BitmapDescriptor iconm BitmapDescriptorFactory fromResource R
  • eclipse中终止调试/运行的快捷方式是什么?

    What is the shortcut in eclipse to terminate debugging running Looking under Preferences gt Keys says Ctrl F2 but it doe
  • PHP 命名空间 - 提升一个级别?

    示例1 命名空间 Inori Test 主测试类 示例2 命名空间 Inori Test SubTest SubTest 类扩展了 问题 有没有办法快速提升命名空间的级别 以便 SubTest 可以扩展 MainTest 就像是 MainT
  • 如果 netezza 中存在则删除

    我需要一个命令来删除表 如果存在 NETEZZA 类似这样的东西 drop table if exists xxx 我已经搜索并尝试了很多但没有成功 你能帮我一下吗 In netezza你可以使用这个语法 drop table table
  • iOS 所需的设备功能自动对焦相机

    我有一个 iOS 应用程序 我在其中设置Required Device Capabilities配置设置需要两者still camera and auto focus camera因为它需要在具有更好的自动对焦相机传感器的新一代设备上运行
  • Material-UI 中 IconButton 的悬停效果

    图标按钮悬停 https i stack imgur com lsYHX png 这是我正在使用的 Material UI 中的 iconButton 正如您所看到的 当您将鼠标悬停在图标上时 图标周围有一个轻微的灰色边框 禁用此功能的属性
  • 如何为单个函数设置 ICC 属性“fp-model precision”,以防止关联优化?

    我正在实施卡汉求和 http en wikipedia org wiki Kahan summation algorithm 在支持 gcc47 gcc48 clang33 icc13 和 icc14 编译的项目中 作为该算法的一部分 我想
  • 用于获取有关 SVN 存储库信息的 Python 库?

    我正在寻找一个可以从 SVN 存储库中提取 至少 以下信息的库 not工作副本 修订号及其作者和提交消息 每个修订版中的更改 添加 删除 修改文件 有Python库可以做到这一点吗 对于作者和提交消息 我可以解析 db revprops 0
  • 创建横幅交换算法来轮播广告

    我正在构建广告横幅轮播脚本基于印象整个月均匀地显示广告 每次请求显示广告时都会进行计算 所以这将是即时完成的 广告应显示为一个接一个轮流播放 而不是仅显示一个广告 1000 次展示 然后显示另一个广告 1000 次展示 大多数情况下 它应该
  • 尝试从输入流检索文本时应用程序挂起

    情况 我确实查看了您的代码 正如我怀疑的那样 您的问题与您发布的代码完全无关 您的 GUI 完全忽略 Swing 线程规则 并在主 Swing 事件线程 称为Event Dispatch T螺纹或EDT 由于该线程负责所有 Swing 绘图
  • Inno Setup:如何根据代码更改语言文件

    我使用自己的语言文件 isl 而不是使用 Inno Setup 的默认语言文件 它允许我自定义一些消息 但现在 我想要每种语言文件有两个版本 一个用于首次安装 一个用于更新 但是 是否可以从代码中选择一个文件 如果是 该怎么做 也许有一些比
  • Android 并获取 id 转换为字符串的视图

    在 Android 项目的 Java 代码中 如果您想要视图资源的引用 您可以执行以下操作 View addButton findViewById R id button 0 在上面的 R id button 0 不是一个字符串 是否可以通
  • @media查询和图像交换[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我希望在调整浏览器大小时网站中的图像完全改变 我一直在使用媒体查询 但我似乎无法正确使用它 有什么想法 建议吗 将来请添加您尝试过的代
  • IntelliJ:将“在路径中查找”范围限制为在 VCS 中跟踪的文件

    我想在 IntelliJ 中搜索整个项目目录 但将范围限制为在 VCS 中跟踪的文件 即我通过执行得到的结果相同git grep 我看到下面有一个自定义范围Find In Path gt Scope gt VCS Scopes gt Def
  • JQuery Mobile - 按钮

    如何使用 jquery mobile 禁用编码中的按钮 div Value div 注意 我想在编码中禁用该按钮 而不是在设计时 实例 http jsfiddle net LHG4L 5 http jsfiddle net LHG4L 5

随机推荐

  • 使用 PHP 和 preg_replace 拆分并替换内容而不是爆炸?

    我有一个 PHP HTML 代码作为包含函数的字符串 我希望用包含的内容替换一些函数调用 将多个文件合并为一个 简短示例 之前 h1 Content in between h1 简短示例 替换内容 h1 Content in between
  • 将 .NET 字符串中的制表符转换为空格

    我正在使用正则表达式构建一个文本解析器 我需要将字符串中的所有制表符转换为空格字符 我无法假设一个制表符应包含多少个空格 否则我可以用 4 个空格字符替换制表符 对于此类问题有什么好的解决办法吗 我需要在代码中执行此操作 因此无法使用外部工
  • 如何以普通用户身份运行捆绑安装

    我正在尝试使用bundle install 我不是 Ruby 用户 这是我第一次真正尝试运行 rake 我只是尝试使用 ThrowtheSwitch org 中使用 Rake 等的一些软件包 我几天前最初使用以下命令安装了 ruby sud
  • 是否可以使用谷歌计算引擎运行硒脚本?

    我想在云 在线 远程运行我的硒脚本 我被告知谷歌计算引擎可以允许这样做 如果可以确认这一点并且还需要给出额外的步骤 我们将不胜感激 任何其他建议的解决方案将不胜感激 唯一的区别是您的 GCE 实例没有显示屏 这对您的浏览器来说将是一个问题
  • 无法获取我的模板文件中的资源文件(使用 Restlet 和 Freemarker)

    我正在尝试使用 Restlet 开发一个 web 应用程序 但在访问 public css 和 public js 时遇到了一些问题 我在控制台中有这样的消息 INFO 2012 03 10 23 52 59 127 0 0 1 8182
  • 使用正则表达式匹配两个标签之间的所有内容?

    如何匹配 PCRE 两个标签之间的所有内容 我尝试过这样的事情 但对我来说效果不太好 我对正则表达式有点陌生 所以我希望有人能好心地向我解释如何实现这一点 如果正则表达式可能的话 Thanks string div text div reg
  • INotifyPropertyChanged:通知另一个类

    我有一堂课 我们称之为MyContainerClass 这是其他几个类的容器 我们称它们为ClassA to ClassF ClassA to ClassF继承相同的基类 我们称之为MyBaseClass In MyBaseClass我有一
  • React-router (v4) 如何返回?

    试图弄清楚如何返回上一页 我在用 react router v4 1 这是我在第一个登陆页面中配置的代码
  • 使用 HTTP Live Streaming 替代音轨

    当 HLS 流准备好播放时 我正在生成可用音轨的列表 我可以很好地访问可用的音轨 但我很难为每个轨道提取正确的 标题 我在用着苹果的测试流 https devimages apple com edgekey net streaming ex
  • 在 PageViewController 中导航不起作用

    我有 3 种类型的 VC 第一种 VC 第二种 VC 是PageViewController有 3 页 我添加了PageController正常ViewController在这里 第三个是FinalViewController 第一个 VC
  • 多个动态输入文本javascript

    我在使用 javascript 创建多个输入文本时遇到问题 我的观点是每次之前的输入完成后都会创建一个新的输入文本 家长 我有一些组合框的代码 但这次我只需要输入文本框 我怎样才能做到这一点 我找到了这段代码
  • WSAEWOULDBLOCK 处理

    我已经在使用winsock 的C CLI 中为服务器编写了一个套接字 套接字使用异步方法来发送 接收和接受连接 在生产环境中实现套接字后 发送函数停止工作 并给出错误 WSAEWOULDBLOCK 根据我在网上的研究 这意味着套接字 IO
  • NavigationLink 在 ScrollView 中显示错误

    我在Swift编程的时候也遇到过这个问题 我创建了这个长框架 就在这里 该框架的主要思想将用于不同视图中的水平滚动视图 如下所示 它将打开不同的视图 这就是问题所在 如果我们想转换到不同的视图 我们需要NavigationLink 为了工作
  • linux c语言中如何将绝对路径转换为相对路径

    我想知道如何在linux Ubuntu 操作系统上的c语言中根据给定目录 包括链接文件 将符号链接的绝对路径转换为相对路径 我想搜索相对路径的子字符串 但如果它已经存在于文件夹层次结构的更高位置怎么办 这是我想要做的更具体的描述 相对路径
  • Java 中的“代码太大”编译错误

    Java 代码有最大长度限制吗 我写了一个超过10000行的函数 实际上 每一行都为一个数组变量分配一个值 arts bag 10792 newyorkartworld arts bag 10793 leningradschool arts
  • 如何将 Javascript 文件导入 Typescript

    我想知道如何从 Typescript 启动 Twitter Bootstrap carousel carousel 我必须实施jquery d ts修复 sign 调用 但我仍然收到错误 carousel 在 jquery d ts 中找不
  • 为什么“async/await”在我的情况下不起作用?

    我读到async await 但我有一个关键问题 首先 我解释一个旧的例子来展示我的问题的基础 然后我问我的确切问题 大家都知道 console log 1 console log 2 console log 3 Ex 123 这很简单 但
  • 在IIS7上启用跨域资源共享

    我最近遇到向另一个域发布 Javascript 请求的情况 默认情况下 不允许 XHR 发布到其他域 按照以下指示http enable cors org http enable cors org 我在其他域上启用了此功能
  • 如何在 VS Code 中调试时关闭警告?

    我正在使用 XDebug 在 VS Code 中调试 PHP 应用程序PHP Debug扩展名 并收到如下错误 我知道问题是什么以及如何解决它 但解决方案是如此巨大 以至于修复此类错误是我目前无法做到的 我想开始使用 VS Code 进行
  • AutoTokenizer.from_pretrained 无法加载本地保存的预训练分词器 (PyTorch)

    我是 PyTorch 的新手 最近我一直在尝试使用 Transformers 我正在使用 HuggingFace 提供的预训练分词器 我成功下载并运行它们 但如果我尝试保存它们并再次加载 则会发生一些错误 如果我使用AutoTokenize