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

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

相关推荐

  1. 中文bert训练

    2023-12-07 09:52:01       34 阅读
  2. Bert中文训练模型Bert-base-chinese)

    2023-12-07 09:52:01       32 阅读
  3. 训练模型分类,以及代表模型介绍

    2023-12-07 09:52:01       58 阅读
  4. NLP - 基于bert训练模型文本多分类示例

    2023-12-07 09:52:01       27 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-07 09:52:01       106 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-07 09:52:01       116 阅读
  3. 在Django里面运行非项目文件

    2023-12-07 09:52:01       95 阅读
  4. Python语言-面向对象

    2023-12-07 09:52:01       103 阅读

热门阅读

  1. go composite literal uses unkeyed fields错误

    2023-12-07 09:52:01       60 阅读
  2. css深度选择器>>>、/deep/ 、::v-deep 、:deep()

    2023-12-07 09:52:01       59 阅读
  3. rust高级 异步编程 一 future

    2023-12-07 09:52:01       48 阅读
  4. 开源 Linux 系统 KDE neon 20231109 中文正式版来了

    2023-12-07 09:52:01       60 阅读
  5. Spring 事务管理

    2023-12-07 09:52:01       66 阅读
  6. 如何写好PPT报告

    2023-12-07 09:52:01       79 阅读
  7. Qt5.15.2的镜像网址

    2023-12-07 09:52:01       65 阅读
  8. flink获取kafka的key value timestamp header

    2023-12-07 09:52:01       61 阅读
  9. 图论|684.冗余连接 685. 冗余连接 II

    2023-12-07 09:52:01       67 阅读
  10. React useCallback 详解

    2023-12-07 09:52:01       54 阅读
  11. Redis Reactor事件驱动模型源码

    2023-12-07 09:52:01       69 阅读
  12. Nginx之Openresty缓存解读

    2023-12-07 09:52:01       62 阅读