加载Tokenizer和基础模型的解析及文件介绍:from_pretrained到底加载了什么?

加载Tokenizer和基础模型的解析及文件介绍

在使用Hugging Face的transformers库加载Tokenizer和基础模型时,涉及到许多文件的调用和解析。这篇博客将详细介绍这些文件的功能和它们在加载过程中的作用,同时结合代码片段进行解析。

下图是我本地下载好模型之后的样子:
在这里插入图片描述

下面结合上图进行解释。


1. 加载 Tokenizer

代码示例:

from transformers import AutoTokenizermodel_path = "你的模型路径"
tokenizer = AutoTokenizer.from_pretrained(model_path)

AutoTokenizer.from_pretrained(model_path) 的作用是加载一个Tokenizer对象,用于将文本转换为模型可识别的输入格式(token ID)。在加载过程中,它会依赖模型路径下的一些关键文件。

加载的文件:
  1. tokenizer.json

    • 作用:定义了词汇表和分词规则,是Tokenizer的核心文件。
    • 格式:通常是JSON格式,包含了以下内容:
      • vocab: 词汇表,每个词汇对应一个唯一的token ID。
      • merges: 如果是基于BPE(Byte Pair Encoding)的Tokenizer,会有合并规则。
      • special_tokens: 特殊标记(如<pad><unk><eos>等)。
  2. tokenizer_config.json

    • 作用:定义了Tokenzier的配置,比如是否使用特殊token、分词方式等。
    • 常见字段
      • do_lower_case: 是否将文本转为小写。
      • bos_token/eos_token: 开始和结束标记。
      • pad_token: 填充标记。
  3. special_tokens_map.json

    • 作用:映射特殊token(如<pad><unk>)到词汇表中的实际标记。
    • 常见字段
      • pad_token: <pad>
      • unk_token: <unk>
      • cls_token: <cls>
加载流程:
  1. 优先加载tokenizer.json来获取分词规则和词汇表。
  2. 使用tokenizer_config.json设置额外的配置参数。
  3. 如果存在special_tokens_map.json,会根据该文件映射特殊标记。

2. 加载基础模型(预训练权重)

代码示例:

from transformers import AutoModelForCausalLMbase_model = AutoModelForCausalLM.from_pretrained("meta-llama/Llama-3.1-8b",  # 替换为基础模型路径torch_dtype=torch.float16,device_map="auto"
)

AutoModelForCausalLM.from_pretrained 的作用是加载预训练的基础模型,用于执行因果语言建模任务(如生成文本)。在加载时,它会调用模型路径中的一系列文件。

加载的文件:
  1. config.json

    • 作用:定义模型的结构配置,例如层数、隐藏单元数量、注意力头数等。
    • 常见字段
      • hidden_size: 隐藏层的大小。
      • num_attention_heads: 注意力头的数量。
      • num_hidden_layers: 模型的层数。
      • max_position_embeddings: 最大序列长度。
  2. generation_config.json

    • 作用:定义生成任务的配置,例如生成文本时的最大长度、温度等。
    • 常见字段
      • max_length: 生成文本的最大长度。
      • temperature: 生成时的多样性控制参数。
      • top_k/top_p: 生成时的采样策略。
  3. model.safetensorsmodel-xxxx-of-xxxx.safetensors

    • 作用:保存模型的权重。
    • 文件名解析:权重文件可能被分片存储,文件名中会标注分片信息,例如:
      • model-00001-of-00004.safetensors: 表示这是四个权重分片中的第一个。
    • 格式safetensors格式是优化的序列化格式,安全且高效。
  4. model.safetensors.index.json

    • 作用:如果权重文件被分片存储,该文件记录了每个分片的索引和分布信息。
加载流程:
  1. 解析config.json,构建基础模型的结构。
  2. 加载权重文件(safetensors.bin格式)到模型中。
  3. 如果有分片,则根据index.json加载完整的权重。

3. 总结文件作用
文件名作用加载阶段
tokenizer.json定义词汇表和分词规则加载Tokenizer
tokenizer_config.json配置Tokenizer的额外参数加载Tokenizer
special_tokens_map.json映射特殊标记到词汇表中的实际标记加载Tokenizer
config.json定义模型的结构配置加载基础模型
generation_config.json定义生成任务的配置参数加载基础模型
model.safetensors保存模型权重加载基础模型
model-xxxx-of-xxxx.safetensors分片保存的模型权重加载基础模型
model.safetensors.index.json记录分片权重的索引和分布信息加载基础模型

4. 示例:加载和评估模型

以下是一个完整的代码示例,展示如何加载本地的模型文件并进行简单的评估:

from transformers import AutoTokenizer, AutoModelForCausalLM# 模型路径
model_path = "xxx/models--meta-llama--Llama-3.1-8B/snapshots/d04e592b4f6aa9cfee91e2e20afa771667e1d4b"# 1. 加载Tokenizer
tokenizer = AutoTokenizer.from_pretrained(model_path)# 2. 加载基础模型
model = AutoModelForCausalLM.from_pretrained(model_path,torch_dtype=torch.float16,device_map="auto"
)# 3. 测试生成
input_text = "你好,欢迎使用LLaMA模型。"
inputs = tokenizer(input_text, return_tensors="pt").to("cuda")
outputs = model.generate(**inputs, max_length=50)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))

5. 注意事项
  1. 模型文件完整性:确保config.jsonsafetensors等文件都在路径中,否则可能加载失败。
  2. 设备配置:根据硬件资源调整device_map参数。
  3. 特殊Token:如果生成结果中出现<unk>等标记,可以检查special_tokens_map.json文件是否正确配置。

通过这篇博客,希望读者对加载Tokenizer和基础模型涉及的文件及其作用有了全面的了解,并能够在自己的任务中正确调用这些文件。

后记

2024年12月28日22点58分于上海,在GPT4o大模型辅助下完成。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/497234.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

链式二叉树的基本操作,前序、中序以及后序遍历(递归实现,非递归实现)【有图解】

文章目录 结点设置二叉树的遍历前序、中序以及后序遍历 递归实现前序、中序以及后序遍历 非递归实现层序遍历 结点的个数叶子结点的个数第k层结点的个数值为x的结点树的最大深度二叉树的销毁 结点设置 既然是链式二叉树&#xff0c;那必须得有自己的结点类型&#xff0c;以下是…

使用 Docker 搭建 Hadoop 集群

1.1. 启用 WSL 与虚拟机平台 1.1.1. 启用功能 启用 WSL并使用 Moba 连接-CSDN博客 1.2 安装 Docker Desktop 最新版本链接&#xff1a;Docker Desktop: The #1 Containerization Tool for Developers | Docker 指定版本链接&#xff1a;Docker Desktop release notes | Do…

3.若依前端项目拉取、部署、访问

因为默认RuoYi-Vue是使用的Vue2,所以需要另外去下载vue3来部署。 拉取代码 git clone https://gitee.com/ys-gitee/RuoYi-Vue3.git 安装node才能执行npm相关的命令 执行命令npm install 如果npm install比较慢的话&#xff0c;需要添加上国内镜像 npm install --registrhttp…

Docker安装体验kuboard-k8s多集群管理工具

文章目录 1.kuboard是什么&#xff1f;2.docker安装命令2.1 Linux上docker环境安装命令2.2 Windows上docker环境安装命令 3.登录访问3.1首页访问地址3.2 默认账号密码3.3 登录页3.4 首页 4总结 1.kuboard是什么&#xff1f; 参看官网: https://kuboard.cn/gitHub项目地址&…

重学设计模式-责任链模式

责任链模式&#xff08;Chain of Responsibility Pattern&#xff09;是一种行为设计模式&#xff0c;它通过将请求沿着链传递&#xff0c;使多个对象都有机会处理该请求&#xff0c;从而避免了请求的发送者与接收者之间的耦合关系。本文将详细介绍责任链模式的定义、优缺点、应…

SuperMap iClient3D for Cesium等高线标注

kele 前言 在三维地形分析中&#xff0c;等高线分析是一种非常重要的分析方法&#xff0c;它能直观的表达出地形的高低起伏特征&#xff0c;在三维系统中受到广泛应用。在SuperMap iClient3D for Cesium中&#xff0c;等高线分析是前端GPU分析&#xff0c;能够分析并渲染出等高…

简易共享屏幕工具改进版

昨天心血来潮写了一篇关于简易共享屏幕工具的文章&#xff0c;发现也有一些阅读量&#xff0c;并且我对于它的效果不是很满意 &#xff0c;实际呈现的帧率还是太低了。所以我今天换了更高效的方式来实现。 50 行代码简易屏幕共享工具 改进 降低分辨率 昨天那个测试的帧率低&a…

4.银河麒麟V10(ARM) 离线安装 MySQL

1. 系统版本 [rootga-sit-cssjgj-db-01u ~]# nkvers ############## Kylin Linux Version ################# Release: Kylin Linux Advanced Server release V10 (Lance)Kernel: 4.19.90-52.39.v2207.ky10.aarch64Build: Kylin Linux Advanced Server release V10 (SP3) /(La…

图像处理-Ch5-图像复原与重建

Ch5 图像复原 文章目录 Ch5 图像复原图像退化与复原(Image Degradation and Restoration)噪声模型(Noise Models)i.i.d.空间随机噪声(Generating Spatial Random Noise with a Specified Distribution)周期噪声(Periodic Noise)估计噪声参数(Estimating Noise Parameters) 在仅…

「下载」智慧园区及重点区域安全防范解决方案:框架统一规划,建设集成管理平台

智慧园区在基础设施建设和管理上仍存在诸多挑战。园区内场景碎片化、系统独立化、数据无交互、应用无联动等问题普遍存在&#xff0c;导致管理效率低下&#xff0c;安全隐患频发。 各安保系统如视频监控系统、报警管理系统、门禁管理系统等独立运行&#xff0c;数据不共享&…

LeetCode - Google 校招100题 第6天 回溯法(Backtracking) (8题)

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/144743505 LeetCode 合计最常见的 112 题: 校招100题 第1天 链表(List) (19题)校招100题 第2天 树(Tree) (21题)校招100题 第3天 动态规划(DP) (20题)

Elasticsearch检索之三:官方推荐方案search_after检索实现(golang)

Elasticsearch8.17.0在mac上的安装 Kibana8.17.0在mac上的安装 Elasticsearch检索方案之一&#xff1a;使用fromsize实现分页 快速掌握Elasticsearch检索之二&#xff1a;滚动查询(scrool)获取全量数据(golang) 1、search_after检索 在前面的文章介绍了fromsize的普通分页…

网易企业邮箱登陆:保障数据安全

网易企业邮箱是一款为企业提供安全可靠的电子邮件服务的工具。通过网易企业邮箱&#xff0c;企业可以实现员工之间的高效沟通和信息共享&#xff0c;同时保障数据的安全性。 企业邮箱的安全性是企业信息保护的重要组成部分。网易企业邮箱采用了多层加密技术&#xff0c;确保邮件…

3.银河麒麟V10 离线安装Nginx

1. 下载nginx离线安装包 前往官网下载离线压缩包 2. 下载3个依赖 openssl依赖&#xff0c;前往 官网下载 pcre2依赖下载&#xff0c;前往Git下载 zlib依赖下载&#xff0c;前往Git下载 下载完成后完整的包如下&#xff1a; 如果网速下载不到请使用网盘下载 通过网盘分享的文件…

Hive其十,优化和数据倾斜

目录 Hive优化 1、开启本地模式 2、explain分析SQL语句 3、修改Fetch操作 4、开启hive的严格模式【提高了安全性】 5、JVM重用 6、分区、分桶以及压缩 7、合理设置map和reduce的数量 合理设置map数量&#xff1a; 设置合理的reducer的个数 8、设置并行执行 9、CBO优…

uniapp通过v-if进行判断时,会出现闪屏?【已解决】

1.问题&#xff1a;按钮切换时&#xff0c;通过v-if来判断&#xff0c;会出现闪烁情况&#xff0c;影响用户体验 2.v-if 闪烁问题可能的原因 ‌条件切换频繁‌&#xff1a;如果 v-if 指令的条件在短时间内频繁切换&#xff0c;会导致元素不断被销毁和重新创建&#xff0c;从而…

ida的使用

一.ida的基本设置 在IDA的安装根目录下有许多文件夹&#xff0c;各个文件夹存储不同的内容 1.目录结构 cfg&#xff1a;包含各种配置文件&#xff0c;基本IDA配置文件ida.cfg,GUI配置文件idagui.cfg&#xff0c;文本模式用户界面配置文件idatui.cfg, idc&#xff1a;包含…

Faster R-CNN

文章目录 摘要Abstract1. 引言2. 框架2.1 RPN2.1.1 网络结构2.1.2 损失函数2.1.3 训练细节 2.2 训练过程 3. 创新点和不足3.1 创新点3.2 不足 参考总结 摘要 Faster R-CNN是针对Fast R-CNN缺点改进的目标检测模型。为了解决候选区域生成耗时长的问题&#xff0c;Faster R-CNN提…

嵌入式AI STM32部署卷积神经网络的魔法棒

基于STM32部署卷积神经网络控制设备方案-AI项目-STM32部署卷积神经网络方案-红外信号复制方案-轨迹识别 项目包含下述内容 硬件部分、PCB制板、BOM表文件等等 (Hardware)外壳、3D打印文件 (3D_print)软件程序、用于电子法棒的软件程序 AI Keil等等(Software)QT上位机动作识别…

GCP Cloud Observability 是什么,有什么使用场景

GCP Cloud Observability 是 Google Cloud Platform (GCP) 提供的一组工具和服务&#xff0c;用于监控、日志记录、追踪和调试应用程序和基础设施的健康和性能。通过收集和分析遥测数据&#xff08;如指标、日志和追踪信息&#xff09;&#xff0c;Cloud Observability 有助于理…