【大模型】Hugging Face下载大模型的相关文件说明

本文介绍了如何在HuggingFace官网下载和理解大模型微调文件,包括.gitignore、config.json、模型权重文件等,帮助初学者了解这些文件的作用和在实际项目中的使用方法。
摘要由CSDN通过智能技术生成

Alt
在这里插入图片描述

🙋大家好!我是毛毛张!
🌈个人首页: 神马都会亿点点的毛毛张

Alt

📌随着大模型的火热🔥,许多人开始纷纷入坑🕳️大模型,不过目前很多人都只是基于开源的大模型做微调,今天毛毛张要分享的是关于Hugging Face下载大模型微调文件的说明,有助于大家下载的微调文件的作用

文章目录

1.前言

在这里插入图片描述
  上图是毛毛张在HuggingFace的官网上的ChatGLM-6B大模型的所有文件,对于初学者来说,对于上面的文件是干什么的很多小伙伴是很迷糊的,根本不知道是干什么的,毛毛张接下来将简单讲述一下上面的每个文件的作用。

2.文件说明

Hugging Face的模型存储库中,这些文件通常用于表示预训练模型及其相关配置、模型权重、词汇表和分词器等。下面是这些文件的一般作用:

  • .gitignore :是一个纯文本文件,包含了项目中所有指定的文件和文件夹的列表,这些文件和文件夹是Git应该忽略和不追踪的
  • MODEL_LICENSE:模型商用许可文件
  • REDAME.md:略
  • config.json:模型配置文件,包含了模型的各种参数设置,例如层数、隐藏层大小、注意力头数及Transformers API的调用关系等,用于加载、配置和使用预训练模型。
  • configuration_chatglm.py:是该config.json文件的类表现形式,模型配置的Python类代码文件,定义了用于配置模型的 ChatGLMConfig 类。
  • modeling_chatglm.py:源码文件,ChatGLM对话模型的所有源码细节都在该文件中,定义了模型的结构和前向传播过程,例如 ChatGLMForConditionalGeneration 类。
  • model-XXXXX-of-XXXXX.safetensors:安全张量文件,保存了模型的权重信息。这个文件通常是 TensorFlow 模型的权重文件。
  • model.safetensors.index.json:模型权重索引文件,提供了 safetensors 文件的索引信息。
  • pytorch_model-XXXXX-of-XXXXX.binPyTorch模型权重文件,保存了模型的权重信息。这个文件通常是 PyTorch模型的权重文件。
  • pytorch_model.bin.index.jsonPyTorch模型权重索引文件,提供了 bin 文件的索引信息。

    说明1:

    在实际使用过程中不需要将这两种类型的权重文件都下载下来,只需要下载一类即可,还包括对应的.index.json;在使用过程中都是调用transformers包进行加载,两种格式都可以加载,即使在PyTorch环境中也可以下载.safetensors格式的模型权重进行加载,只要安装了transformers包即可。

    说明2:

    传统的,Pytorch会保存一个完整的文件,包含参数名到权重的映射关系。这个映射关系表称为state_dict

    # PyTorch文档给出的保存和加载模型代码示例
    # Save the model weights
    torch.save(my_model.state_dict(), 'model_weights.pth')
    
    # Reload them
    new_model = ModelClass()
    new_model.load_state_dict(torch.load('model_weights.pth'))
    

    在模型参数小于10亿时,上面代码一般运行没有问题。但是对于大模型(超过10亿参数),上面的代码就有点不能用了。像ChatGPT模型有1760亿个参数,就算使用全精度(bfloat16数据类型)来保存权重,它会消耗352GB的存储空间。对于超级计算机,可以完成加载、训练和保存的任务,但是对于用户侧的推理,这个存储需求就要另外想办法了。

    这个方法就是将模型权重文件切分为多个文件,如果模型.bin文件形式进行保存,会得到两种后缀格式的文件:

    • pytorch_model_xxxxx-of-000XX.bin:每个都是模型权重的一部分,通过这种文件格式切分,可以在内存中一个一个加载(不用全部加载,导致超出内存存储能力。可以实现加载部分权重到模型、移动到GPU或其他设备上进行计算、以及加载下一部分权重时,去除上一部分已加载的权重来释放内存或显存等)。与加载全部的模型不同,我们的机器只需要能够加载最大的一个checkpoint即可,这里称为分片。
    • pytorch_model.bin.index.json:参数名 与 模型bin文件的映射表。
  • quantization.py:量化代码文件,包含了模型量化的相关代码。
  • special_tokens_map.json:特殊标记映射文件,用于指定特殊标记(如起始标记、终止标记等)的映射关系。
  • tokenization_chatglm.py:分词器的Python类代码文件,用于chatglm3-6b模型的分词器,它是加载和使用模型的必要部分,定义了用于分词的 ChatGLMTokenizer 类。
  • tokenizer.model:包含了训练好的分词模型,保存了分词器的模型信息,用于将输入文本转换为标记序列;通常是二进制文件,使用pickle或其他序列化工具进行存储和读取。
  • tokenizer_config.json:含了分词模型的配置信息,用于指定分词模型的超参数和其他相关信息,例如分词器的类型、词汇表大小、最大序列长度、特殊标记等
  • LFSLarge File Storage,大文件存储

这些文件共同构成了一个完整的预训练模型及其相关组件,可以通过加载这些文件来实例化模型、配置模型、分词等操作。

  • 42
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

神马都会亿点点的毛毛张

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值