(StackOverflow)使用Huggingface Transformers从磁盘加载预训练模型

news/2025/1/18 12:55:38/

这是在Stack Overflow上的一个问答,链接如下:

Load a pre-trained model from disk with Huggingface Transformers - Stack Overflowicon-default.png?t=N7T8https://stackoverflow.com/questions/64001128/load-a-pre-trained-model-from-disk-with-huggingface-transformers从这个问答中,我们可以了解到

  • 使用from_pretrained方法加载预训练模型,无需每次下载权重数据。
  • 在加载模型时,需要确保提供的路径是正确的模型标识符或包含config.json文件的目录路径。
  • 使用相对路径或绝对路径。
  • 使用save_pretrained方法保存文件。
  • 示例代码展示了如何加载和保存预训练模型。

🚚🚒🚑🚎🚐🚌🛻🚙🛺🚕🚓🚗🚚🚒🚑🚎🚐🚌🛻🚙🛺🚕🚓🚗

问题描述:

根据from_pretrained的文档,我了解到我不必每次都下载预训练向量(权重数据),我可以使用以下语法将它们保存并从磁盘加载:

 - a path to a `directory` containing vocabulary files required by the tokenizer, for instance saved using the :func:`~transformers.PreTrainedTokenizer.save_pretrained` method, e.g.: ``./my_model_directory/``.- (not applicable to all derived classes, deprecated) a path or url to a single saved vocabulary file if and only if the tokenizer only requires a single vocabulary file (e.g. Bert, XLNet), e.g.: ``./my_model_directory/vocab.txt``.

- 一个指向包含分词器所需词汇文件的目录的路径,例如使用 :func:`~transformers.PreTrainedTokenizer.save_pretrained` 方法保存的目录,例如:``./my_model_directory/``。
  - (不适用于所有派生类,已弃用)仅当分词器仅需要单个词汇文件(例如Bert,XLNet)时,才适用于指向单个保存的词汇文件的路径或URL,例如:``./my_model_directory/vocab.txt``。 

所以,我去了模型中心:

https://huggingface.co/models

我找到了我想要的模型:

https://huggingface.co/bert-base-cased

我从他们提供的链接下载了它:

使用掩码语言建模(MLM)目标在英语语言上预训练的模型。它在这篇论文中被介绍,并在这个代码库中首次发布。该模型区分大小写:它区分英语和English。

存储在这个路径下:

  /my/local/models/cased_L-12_H-768_A-12/

 这个路径下包含

 ./../bert_config.jsonbert_model.ckpt.data-00000-of-00001bert_model.ckpt.indexbert_model.ckpt.metavocab.txt

 配置了路径,并加载分词器:

PATH = '/my/local/models/cased_L-12_H-768_A-12/'tokenizer = BertTokenizer.from_pretrained(PATH, local_files_only=True)

 结果报错:

>           raise EnvironmentError(msg)
E           OSError: Can't load config for '/my/local/models/cased_L-12_H-768_A-12/'. Make sure that:
E           
E           - '/my/local/models/cased_L-12_H-768_A-12/' is a correct model identifier listed on 'https://huggingface.co/models'
E           
E           - or '/my/local/models/cased_L-12_H-768_A-12/' is the correct path to a directory containing a config.json file

 同样的问题发生在我直接链接json文件时:

  PATH = '/my/local/models/cased_L-12_H-768_A-12/bert_config.json'tokenizer = BertTokenizer.from_pretrained(PATH, local_files_only=True)if state_dict is None and not from_tf:try:state_dict = torch.load(resolved_archive_file, map_location="cpu")except Exception:raise OSError(
>                   "Unable to load weights from pytorch checkpoint file. ""If you tried to load a PyTorch model from a TF 2.0 checkpoint, please set from_tf=True. ")
E               OSError: Unable to load weights from pytorch checkpoint file. If you tried to load a PyTorch model from a TF 2.0 checkpoint, please set from_tf=True.

 answer

相对路径?绝对路径?

文件相对于您的模型文件夹的位置在哪里? 我认为它必须是相对路径而不是绝对路径。 因此,如果您编写代码的文件位于'my/local/'中,则您的代码应如下所示:

```
PATH = 'models/cased_L-12_H-768_A-12/'
tokenizer = BertTokenizer.from_pretrained(PATH, local_files_only=True)
```

您只需要指定包含所有文件的文件夹,而不是直接指定文件。 我认为这绝对是与路径有关的问题。 尝试更改“斜杠”的样式:'/' vs'\',这些在不同的操作系统中是不同的。 还可以尝试使用“.”,例如./models/cased_L-12_H-768_A-12/等。

推荐【save_pretrained】方法保存文件。

不确定你从哪里获取这些文件。当我检查链接时,我可以下载以下文件:config.json,flax_model.msgpack,modelcard.json,pytorch_model.bin,tf_model.h5,vocab.txt。此外,最好通过tokenizer.save_pretrained('YOURPATH')和model.save_pretrained('YOURPATH')保存文件,而不是直接下载。- cronoik
2020年10月4日21:59

from transformers import AutoModelForCausalLM, AutoTokenizer
from transformers.generation import GenerationConfigYOURPATH = 'E:/workspace/Qwen/Qwen-7B-Chat'name = 'Qwen/Qwen-7B-Chat'
tokenizer = AutoTokenizer.from_pretrained(name, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(name, device_map="auto", trust_remote_code=True, bf16=True).eval()
tokenizer.save_pretrained(YOURPATH)
model.save_pretrained(YOURPATH)


http://www.ppmy.cn/news/1140042.html

相关文章

linux之/etc/default/useradd文件

/etc/default/useradd文件是在使用useradd添加用户时,一个需要调用的默认的配置文件之一,可以使用命令"useradd -D"进行修改。 useradd用法: [rootcentos79-3 mail]# useradd --help Usage: useradd [options] LOGINuseradd -Dus…

ubuntu 设置x11vnc服务

Ubuntu 18.04 设置x11vnc服务 自带的vino-server也可以用但是不好用,在ubuntu论坛上看见推荐的x11vnc(ubuntu关于vnc的帮助页面),使用设置一下,结果发现有一些坑需要填,所以写下来方便下次使用 转载请说明…

nodejs+vue快递管理服务系统elementui

电子商务改变了人们的传统经济活动中的交易方式和流通技术, 复杂的物流快递信息需要有效的进行处理,构建一个快递管理服务系统可以确保物流信息的一致性、员工登录:通过用户名和密码登录。这也间接带动了物流快递行业的高速发展。 &#xff0…

Python大数据之PySpark(七)SparkCore案例

文章目录 SparkCore案例PySpark实现SouGou统计分析 总结后记 SparkCore案例 PySpark实现SouGou统计分析 jieba分词: pip install jieba 从哪里下载pypi 三种分词模式 精确模式,试图将句子最精确地切开,适合文本分析;默认的方…

趣味工具箱小程序源码

趣味工具箱小程序源码,支持功能去水印,精选壁纸,图片压缩,文字生成二维码,图片加水印,模拟来电,手持弹幕,掷骰子…等 使用小工具,一个小程序有几十个功能。 源码下载&am…

科技云报道:押注向量数据库,为时过早?

科技云报道原创。 在大模型的高调火热之下,向量数据库也获得了前所未有的关注。 近两个月内,向量数据库迎来融资潮,Qdrant、Chroma、Weaviate先后获得融资,Pinecone宣布1亿美元B轮融资,估值达到7.5亿美元。 东北证券…

JavaScript 笔记 初识JavaScript(变量)

1 打开js文件方法 1.1 方法1&#xff1a;用html打开 第⼀步&#xff1a;把JS程序存储为⼀个扩展名为js的⽂本⽂件 第⼆步&#xff1a;把js⽂件关联到⼀个HTML⽂件上 <!DOCTYPE html> <html><body><script src1.js></script><body> </…

uboot启动流程-uboot代码重定位说明一

一. uboot启动流程 本文学习 uboot 的启动流程中涉及的 uboot 代码重定位部分。 _main 函数中会调用 relocate_code 函数&#xff0c;本文继续简单分析一下 relocate_code 函数。 relocate_code 函数分两个部分&#xff1a; 1. 拷贝 uboot 代码部分 2. 有关 " 重定…