零、模型概述
BERT是一个迁移能力很强的通用语义表示模型,以Transformer为网络基本组件,以Masked Bi-Language Model和Next Sentence Prediction为训练目标,通过预训练得到通用语义表示,再结合简单的输出层,应用到下游的NLP任务,在多个任务上取得了SOTA的结果。chinese_bert_wwm是支持中文的BERT模型,它采用全词遮罩(Whole Word Masking)技术,考虑到了中文分词问题。预训练数据集为中文维基百科。该PaddleHub Module只支持Fine-tune。当该PaddleHub Module用于Fine-tune时,其输入是单文本(如Fine-tune的任务为情感分类等)或文本对(如Fine-tune任务为文本语义相似度匹配等),可用于文本分类、序列标注、阅读理解等任务。
一、准备工作
1、下载
- 下载goole-bert:https://github.com/google-research/bert
- 下载anaconda: https://www.anaconda.com/products/distribution#macos
- 下载pycharm:https://www.jetbrains.com/pycharm/download/#section=windows
2、conda换源
在anaconda prompt 里执行:
conda config --set show_channel_urls yes
在用户目录下建立了.condarc文件,地址为C:\Users(你的用户名).condarc添加清华源
添加如下字段:
channels:
- http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
- http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
- http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
show_channel_urls: true
二、anaconda配置
打开anaconda prompt
1、新建虚拟环境
conda create --name Bert python=3.9
2、进入虚拟环境
conda activate Bert
三、下载tensorflow、pytorch及模型
1、下载tensorflow(以下教程为下载2.x版本,但bert需要1.x版本才能用,请自行在官网搜寻1.x版本安装方法)
以下教程为下载2.x版本,但bert需要1.x版本才能用,请自行在官网搜寻1.x版本安装方法(1.x版本区分cpu和gpu)
1)查看是否支持cuda
在命令行输入如下代码:
nvidia-smi
本机CUDA版本为12.1,支持cuda,可以使用gpu
2)官网查看安装信息
网址为: https://www.tensorflow.org/install?hl=zh-cn
# Requires the latest pip
pip install --upgrade pip
# Current stable release for CPU and GPU
pip install tensorflow
# Or try the preview build (unstable)
pip install tf-nightly
新版TensorFlow
tensorflow
:支持 CPU 和 GPU 的最新稳定版(适用于 Ubuntu 和 Windows)tf-nightly
:预览 build(不稳定)。Ubuntu 和 Windows 均包含 GPU 支持。
旧版 TensorFlow
对于 TensorFlow 1.x,CPU 和 GPU 软件包是分开的:
tensorflow==1.15
:仅支持 CPU 的版本tensorflow-gpu==1.15
:支持 GPU 的版本(适用于 Ubuntu 和 Windows)
系统要求
- Python 3.6–3.9
- 若要支持 Python 3.9,需要使用 TensorFlow 2.5 或更高版本。
- 若要支持 Python 3.8,需要使用 TensorFlow 2.2 或更高版本。
- pip 19.0 或更高版本(需要
manylinux2010
支持) - Ubuntu 16.04 或更高版本(64 位)
- macOS 10.12.6 (Sierra) 或更高版本(64 位)(不支持 GPU)
- macOS 要求使用 pip 20.3 或更高版本
- Windows 7 或更高版本(64 位)
- GPU 支持需要使用支持 CUDA® 的卡(适用于 Ubuntu 和 Windows)
注意:必须使用最新版本的 pip
,才能安装 TensorFlow 2。
3)更新pip
pip install --upgrade pip
4)安装tensorflow
pip install tensorflow
下载完成
3)查看是否安装成功
conda list|findstr tensorflow
4)测试pytorch是否可以使用
进入python环境,导入tensorflow包,如果没有报错或出现以下warning,则说明可以正常使用
1-1、转用pytorch
1)下载pytorch
2、下载Bert模型
到Pre-Training with Whole Word Masking for Chinese BERT(中文BERT-wwm系列模型)下载所需模型
中文模型下载块中的模型都是以tensorflow1.x为基础的,tensorflow1.x,tensorflow1.x,tensorflow1.x
如果使用pytorch,可以在GitHub下方找到pytorch模型下载方法或tensorflow转pytorch方法(我选择使用tensorflow转pytorch方法)
但是我是先下载了tensorflow2.x, 后选择的模型,tensorflow、bert模型、Bert服务器全都下载安装好之后才发现bert模型只能用tensorflow1.x版本的...简直气死我了,安装这些都搞了一上午了,所以放弃tensorflow,转用pytorch了(之前安装过)
提前放pytorch版本描述
我使用的是BERT-wwm, Chinese,下载链接为tensorflow中文维基https://drive.google.com/file/d/1RoTQsXp2hkQ1gSRVylRIJfQxJUgkfJMW/view
为方便大家下载,此模型已共享至阿里云盘资源库,可自行搜素下载,名称为chinese_wwm_L-12_H-768_A-12.zip
也可以私聊我使用阿里云盘快传链接下载
3、下载bert服务器
pip install bert-serving-server
pip install bert-serving-client
3、启动bert
我把上面下载的中文预训练模型放置在F:\PycharmProjects\Bert\model\chinese_wwm_L-12_H-768_A-12\publish
此时需要在命令行中输入
bert-serving-start -model_dir F:\PycharmProjects\Bert\model\chinese_wwm_L-12_H-768_A-12\publish -num_worker=2
出现如下错误:经搜查得知,tensorflow需要1.x版本,故弃用tensorflow,转用pytorch
出现下图界面则表示成功(此处为其他博主的图,图源见水印)
4、使用转换器将模型转至pytorch版本
请自行通过🤗Transformers提供的转换脚本进行转换
修改BERT_BASE_DIR
Linux命令:
# 安装依赖
pip3 install tensorflow transformers
export BERT_BASE_DIR=~F:\PycharmProjects\Bert\model\chinese_wwm_L-12_H-768_A-12\publish
transformers-cli convert --model_type bert \
--tf_checkpoint $BERT_BASE_DIR/bert_model.ckpt \
--config $BERT_BASE_DIR/bert_config.json \
--pytorch_dump_output $BERT_BASE_DIR/pytorch_model.bin
windows命令:
# 安装依赖
pip3 install tensorflow transformers
set BERT_BASE_DIR=F:\PycharmProjects\Bert\model\chinese_wwm_L-12_H-768_A-12\publish
transformers-cli convert --model_type bert ^
--tf_checkpoint %BERT_BASE_DIR%\bert_model.ckpt ^
--config %BERT_BASE_DIR%\bert_config.json ^
--pytorch_dump_output %BERT_BASE_DIR%\pytorch_model.bin
转换成功
文件:
不管怎么说,乱七八糟的安装是结束了,如果有看不懂的地方欢迎留言或者私信,后续抽时间再整理文章吧,我先去尝试使用了。
因为安装实在是有点乱,所以使用另开一篇。
参考文章: