配置BERT运行环境
配置 BERT 运行环境
自然语言处理库 Transformers 包含了 BERT、GPT、GPT-2、Transformer-XL、XLNet、XLM 等模型的实现,近两年 Pytorch 生态日趋成熟。因此,本文中使用 Transformers 的 Pytorch 支持来调用 BERT 模型。
检查 cuda 版本
深度学习模型如果没有 GPU 加持,训练速度几乎是无法忍受的,因此,在使用模型前请先确认 GPU 正常工作;另外,最新版本的 Transformers 需要 Pytorch 1.5.0 及以上版本,而 Pytorch 1.5.0 底层又依赖 CUDA 10.2 以上版本。
使用以下命令查看 CUDA 版本
1 | $ nvidia-smi |
(查看右上角 CUDA Version: xx.x)
如果低于 10.2,可通过以下命令安装
1 | $ sudo apt-get install cuda-10-2 |
安装好后请重启系统
安装方法一:通用方法
由于安装依赖库可能干扰主机 Linux 系统中的 Python 环境,建议在 docker 中使用 Transformers 运行环境。
如果之前有比较常用的 docker image,可通过 pip 安装 transformers。
1 | $ pip install transformers |
推荐下载 transfromers 源码安装,以保持例程与系统中软件版本一致
1 | $ git clone https://github.com/huggingface/transformers.git |
安装方法二:标准方法
如果不考虑现有的 docker image,可利用官方提供的 Dockerfile 制做 transforms 镜像。
1 | $ git clone https://github.com/huggingface/transformers.git # README支持中文简体 |
(注意:在 transformers 目录下运行,否则 Dockerfile 中复制文件路径不对)
启动 docker
1 | $ nvidia-docker run --rm -v /exports:/exports -it transformers-pytorch-gpu:test1 bash |
(注意:使用 nvidia-docker 启动 docker,否则无法在 docker 内部使用 GPU)
测试 GPU 是否正常工作
在 docker 内运行以下 Python 程序,测试 GPU+CUDA+Pytorch 是否正常工作。
1 | import torch |
下载预训练好的中文 BERT 模型
1 | $ git clone https://huggingface.co/bert-base-chinese |
从浏览器下载 pytorch_model.bin 覆盖目录中的 pytorch_model.bin(用 393M 的文件覆盖 134K 的文件),或者复制 download 地址后用 wget 下载:
1 | $ wget https://huggingface.co/bert-base-chinese/resolve/main/pytorch_model.bin |
(使用模型时指定 bert-base-chinese,有些情况下模型可自动下载)
测试中文 BERT
1 | import torch |
语义相似度示例
源码的 transformers/examples/pytorch/目录下有各种例程,其中包含常用的问答,多选,分类等自然语言应用。
下面以语义相似度为例,看看如何使用 BERT 库解决实际问题。
GLUE(General Language Understanding Evaluation) 是用于评估 NLP 模型的一组标准,其中包含诸多项目,以语义相似度 STS-B(Semantic Textual Similarity)为目录,相关代码在:
transformers/examples/pytorch/text-classification/run_glue.py,可以该程序为入口学习如何使用 BERT 模型。
安装依赖库
1 | $ cd transformers/examples/pytorch/text-classification/ |
测试例程(具体请参考例程目录下的 README)
1 | $ export TASK_NAME=stsb |
此时程序将下载相似度训练数据,并按指定参数训练模型(外网时常连不通,请多试几次)。另外,也要以加参数 --cache_dir /exports/bert/ 来指定数据存放路径。如果 GPU 配置正常,几分钟即可训练完成。
参考
- PyTorch-Transformers: 最先进的自然语言处理库 (附带 python 代码)https://baijiahao.baidu.com/s?id=1640539349483912777&wfr=spider&for=pc
- transformers 安装 https://pytorchchina.com/2020/02/29/transformers-%E5%AE%89%E8%A3%85/
- 中文新闻情感分类 Bert-Pytorch-transformershttps://blog.csdn.net/qq_21749493/article/details/103703085