首页 > 其他分享 >HuggingFace | HuggingFace中from_pretrained函数的加载

HuggingFace | HuggingFace中from_pretrained函数的加载

时间:2023-07-29 18:55:41浏览次数:36  
标签:chinese HuggingFace checkpoint json base model config pretrained 加载

我们使用huggingface的from_pretrained()函数加载模型和tokenizer,那么加载这些需要什么文件?

加载模型

测试代码:如果加载成功,就打印1

from transformers import AutoModelForMaskedLM

model = AutoModelForMaskedLM.from_pretrained("./bert-base-chinese")

print(1)

文件目录结构

|- bert-base-chinese
|-- 各种checkpoint文件
|- test.py

如果checkpoint文件只有pytorch_model.bin

OSError: ./bert-base-chinese does not appear to have a file named config.json. Checkout 'https://huggingface.co/./bert-base-chinese/None' for available files.

那么,如果checkpoint文件有pytorch_model.binconfig.json

Some weights of the model checkpoint at ./bert-base-chinese were not used when initializing BertForMaskedLM: ['cls.seq_relationship.bias', 'cls.seq_relationship.weight']
- This IS expected if you are initializing BertForMaskedLM from the checkpoint of a model trained on another task or with another architecture (e.g. initializing a BertForSequenceClassification model from a BertForPreTraining model).
- This IS NOT expected if you are initializing BertForMaskedLM from the checkpoint of a model that you expect to be exactly identical (initializing a BertForSequenceClassification model from a BertForSequenceClassification model).
1

说明

  • 使用from_pretrained()函数加载模型需要pytorch_model.binconfig.json文件。

加载tokenizer

测试代码:如果加载成功,就打印1

from transformers import AutoTokenizer

tokenizer = AutoTokenizer.from_pretrained("./bert-base-chinese")

print(1)

文件目录结构

|- bert-base-chinese
|-- 各种checkpoint文件
|- test.py

如果checkpoint文件只有tokenizer.json

OSError: ./bert-base-chinese does not appear to have a file named config.json. Checkout 'https://huggingface.co/./bert-base-chinese/None' for available files.

那么,如果checkpoint文件有tokenizer.jsonconfig.json

1

说明

  • 使用from_pretrained()函数加载模型需要tokenizer.jsonconfig.json文件。但是我们还需要把对应的tokenizer_config.json文件和vocab.txt文件也加进去,因为会在后续使用。

项目组件

一个完整的transformer模型主要包含三部分:

  1. Config,控制模型的名称、最终输出的样式、隐藏层宽度和深度、激活函数的类别等。将Config类导出时文件格式为 json格式,就像下面这样:
{
  "attention_probs_dropout_prob": 0.1,
  "hidden_act": "gelu",
  "hidden_dropout_prob": 0.1,
  "hidden_size": 768,
  "initializer_range": 0.02,
  "intermediate_size": 3072,
  "max_position_embeddings": 512,
  "num_attention_heads": 12,
  "num_hidden_layers": 12,
  "type_vocab_size": 2,
  "vocab_size": 30522
}

当然,也可以通过config.json来实例化Config类,这是一个互逆的过程。

  1. Tokenizer,这是一个将纯文本转换为编码的过程。注意,Tokenizer并不涉及将词转化为词向量的过程,仅仅是将纯文本分词,添加[MASK]标记、[SEP]、[CLS]标记,并转换为字典索引。Tokenizer类导出时将分为三个文件,也就是:
  • vocab.txt

    词典文件,每一行为一个词或词的一部分

  • special_tokens_map.json 特殊标记的定义方式

    {"unk_token": "[UNK]", "sep_token": "[SEP]", "pad_token": "[PAD]", "cls_token": "[CLS]", "mask_token": "[MASK]"}
    
  • tokenizer_config.json 配置文件,主要存储特殊的配置。

  1. Model,也就是各种各样的模型。除了初始的Bert、GPT等基本模型,针对下游任务,还定义了诸如BertForQuestionAnswering等下游任务模型。模型导出时将生成config.jsonpytorch_model.bin参数文件。前者就是1中的配置文件,这和我们的直觉相同,即config和model应该是紧密联系在一起的两个类。后者其实和torch.save()存储得到的文件是相同的,这是因为Model都直接或者间接继承了Pytorch的Module类。从这里可以看出,HuggingFace在实现时很好地尊重了Pytorch的原生API。

标签:chinese,HuggingFace,checkpoint,json,base,model,config,pretrained,加载
From: https://www.cnblogs.com/zhangxuegold/p/17590287.html

相关文章

  • Huggingface | 修改模型的embedding
    目标:在NLP领域,基于公开语料的预训练模型,在专业领域迁移时,会遇到专业领域词汇不在词汇表的问题,本文介绍如何添加专有名词到预训练模型。NLP的处理流程:对输入的句子进行分词,得到词语及下标通过embedding层获得词语对应的embeddingembedding送入到预训练模型,经过attention注意......
  • 进程掏空代码注入实现和使用威胁图的检测思路——本质上掏空就是在操作PE的加载,NtUnma
     在进程掏空代码注入技术中,攻击者创建一个处于挂起状态的新进程,然后从内存中取消映射其映像,改为写入恶意二进制文件,最后恢复程序状态以执行注入的代码。 注入步骤:步骤1:创建一个处于挂起状态的新进程:设置了CREATE_SUSPENDED标志的CreateProcessA()步骤2:交换其内存内容(取......
  • PysparkNote006---pycharm加载spark环境
    pycharm配置pyspark环境,本地执行pyspark代码spark安装、添加环境变量不提了File-Settings-Project-ProjectStructure-addcontentroot添加如下两个路径D:\code\spark\python\lib\py4j-0.10.7-src.zipD:\code\spark\python\lib\pyspark.zip                ......
  • SAP Fiori Elements 应用加载时的 url 参数 sap-ui-xx-viewCache=false
    SAPFioriElements是SAP提供的一种UI技术,其主要目的是提供一种快速、简单、一致且易于维护的方式来开发SAP用户界面。而sap-ui-xx-viewCache=false是一个URL参数,用于控制FioriElements应用的视图缓存。在SAPFioriElements中,视图缓存是一个可以提高应用性能的......
  • el-select 无限下拉滚动加载数据
     <template> <div>  <el-form   ref="saveParameter"   :model="saveParameter"   inline   inline-message   style="margin:10px"  >   <el-form-itemlabel="供应商"prop=&......
  • 前端性能优化策略:加速网页加载时间的关键技巧
    引言:在当今互联网时代,网页加载速度是提供出色用户体验的关键因素之一。快速加载的网页不仅可以吸引更多用户,还可以提高转化率和搜索引擎排名。因此,前端性能优化成为每个开发人员和网站所有者都应该关注的重要议题。本文将介绍一些关键的前端性能优化策略,帮助您加速网页加载时间并......
  • ajax动态加载JS不执行的解决办法
    //第一步:匹配加载的页面中是否含有jsvarregDetectJs=/<script(.|\n)*?>(.|\n|\r\n)*?<\/script>/ig;varjsContained=ajaxLoadedData.match(regDetectJs);//第二步:如果包含js,则一段一段的取出js再加载执行if(jsContained){ //分段取出js正则 varregGetJS=/<sc......
  • Cesium学习笔记5-加载城市建筑物火柴盒模型
    将shp文件转换为cesium可以加载的geojson文件,在线转换工具,使用cesium的GeoJsonDataSource接口类,根据建筑物高度上色加载geojson文件。注意shp文件包含_Height字段。代码如下:<!DOCTYPEhtml><htmllang="en"><head><metacharset="utf-8"/><metahttp-equiv=&......
  • WinForm RichTextBox 加载大量文本卡死和UTF-8乱码问题
    在RichTextBox控件的使用中我们会遇到加载TXT文件的问题,通常我们会有两种处理方式。一、加载TXT字符串,设置到RichTextBox//打开并且读取文件数据FileStreamfs=newFileStream(txtPath,FileMode.Open,FileAccess.Read);StreamReadersr=newStreamReader(fs,Encoding.U......
  • Java 加载图片
    Java加载图片概述在Java开发中,我们经常需要在程序中加载和显示图片。本文将介绍如何使用Java实现加载图片的步骤和相应的代码示例。加载图片的步骤加载图片的过程可以分为以下几个步骤:步骤描述1.选择图片文件需要加载的图片文件可以是本地文件或者网络上的资......