中文BERT模型预训练参数总结以及转化为pytorch的方法

2023-12-13 21:40:52

1.目前针对中文的bert预训练模型有三家:

谷歌发布的chinese_L-12_H-768_A-12
还有哈工大的chinese-bert-wwm / chinese-bert-wwm-ext
以及HuggingFace上的bert-base-chinese(由清华大学基于谷歌的BERT在中文数据集上训练开发的模型,上传在HuggingFace) 我好像记得谷歌也开源过bert-base-chinese?

谷歌的是tf写的,需要借助转换脚本将其转化为pytorch的,哈工大的既有tf版本又有pytorch版本。hugging face 包罗万象,估计tf和pytorch也会都有。

1. 谷歌发布的 chinese_L-12_H-768_A-12
地址:https://github.com/google-research/bert 找到中文模型并下载
在这里插入图片描述
其中包含5个文件,这是用tensorflow1.11训练得到的。
在这里插入图片描述

2. 哈工大的 chinese-bert-wwm / chinese-bert-wwm-ext
wwm为whole world mask的缩写,译为全词遮蔽,是针对中文词语针对熊训练的一种遮蔽模型。
这个是是哈工大讯飞联合实验室发布的中文预训练bert模型,包含tf和pytorch两种版本。wwm指的全词匹配策略,这是和谷歌bert最大的区别。ext指的是用了更大的数据集,RoBERT是bert的改良版本,并在不断更新。
疑问:这里为什么只有Google下载提供了pytorch版本? 既然有了pytorch版本为什么他们官网还提供了hugging face 将tf权重转化为torch权重的脚本链接?
地址:https://github.com/ymcui/Chinese-BERT-wwm
在这里插入图片描述

3. HuggingFace的 bert-base-chinese
这里边包含了许多模型,有bert-base-chinese,也有哈工大的chinese-bert-wwm-ext
bert-base-chinese模型
哈工大的chinese-bert-wwm-ext :在这里插入图片描述

2. 将谷歌发布的tf版本的预训练全权重转化为pytorch版本的

转换脚本链接1为:https://github.com/YaoXinZhi/Convert-Bert-TF-checkpoint-to-Pytorch,对应的博客讲解为https://www.jianshu.com/p/2df27f66eec9
要运行转换脚本1,需要安装TensorFlow和PyTorch,转换命令:

# 依赖自行下载
# $checkpoint_path 为TF-checkpoint路径
# $save_file 为pytorch-checkpoint 保存文件
python3 convert_bert_tf_checkpoint_to_pytorch.py --tf_checkpoint_path $checkpoint_path/model.ckpt --bert_config_file $checkpoint_path/bert_config.json --pytorch_dump_path $save_file

也可以参考博客https://blog.csdn.net/sarracode/article/details/109060358
转换脚本2为hugging face的 :https://huggingface.co/docs/transformers/v4.28.1/en/converting_tensorflow_models

当然也可以直接下载现成的pytorch权重:
哈工大的:https://github.com/ymcui/Chinese-BERT-wwm
hugging face的:https://huggingface.co/bert-base-chinese/tree/main
以及 https://huggingface.co/hfl/chinese-bert-wwm-ext/tree/main

但是谷歌、哈工大、清华这三家发布的模型权重是否通用,能否用一套代码调用,以及在hugging face和哈工大两个地方发布的chinese-bert-wwm-ext模型是否是一模一样的,还有待验证。

我测试的使用hugging face 的bert-base-chinese的权重来代替谷歌chinese_L-12_H-768_A-12的权重是可行的,就是不知道效果会不会变差。起码在一定程度上是通用的吧,这样就省去了使用脚本转换的麻烦。

参考博客
将TF-checkpoint 文件转换为 pytorch-checkpoint 踩坑 https://www.jianshu.com/p/2df27f66eec9
bert中文使用总结 https://blog.csdn.net/sarracode/article/details/109060358

文章来源:https://blog.csdn.net/weixin_45747396/article/details/134833924
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。