您的位置:首页 > 房产 > 家装 > 牙科医院网站推广方案_互联网运营在线培训_今日军事新闻最新消息中国_免费的黄冈网站代码

牙科医院网站推广方案_互联网运营在线培训_今日军事新闻最新消息中国_免费的黄冈网站代码

2025/1/1 12:15:57 来源:https://blog.csdn.net/shizheng_Li/article/details/144796784  浏览:    关键词:牙科医院网站推广方案_互联网运营在线培训_今日军事新闻最新消息中国_免费的黄冈网站代码
牙科医院网站推广方案_互联网运营在线培训_今日军事新闻最新消息中国_免费的黄冈网站代码

加载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大模型辅助下完成。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com