服务器上用SQuAD进行Bert的fine-tune总结
一、pytorch版本的Bert
github上已经有现成的代码,拉取到本地(为了后续基于transformers的学习我将整个工程都拉取了):
git clone https://github.com/huggingface/transformers
1.1 中文预训练模型
地址:
抱抱脸
点击
list all files in model
可以看到全部的模型文件。
1.2 SQuAD1.0数据集
1、
train-v1.1.json
2、
dev-v1.1.json
3、
evaluate-v1.1.py
1.3 SQuAD2.0数据集
1、
train-v2.0.json
2、
dev-v2.0.json
3、
evaluate-v2.0.py
1.4 运行命令
python run_squad.py \
--model_type bert \
--model_name_or_path bert-base-uncased \
--do_train \
--do_eval \
--do_lower_case \
--train_file /home/lab-hwj/classicdemo/Bert/SQuAD/train-v1.1.json \
--predict_file /home/lab-hwj/classicdemo/Bert/SQuAD/dev-v1.1.json \
--per_gpu_train_batch_size 12 \
--learning_rate 3e-5 \
--num_train_epochs 2.0 \
--max_seq_length 384 \
--doc_stride 128 \
--output_dir /home/lab-hwj/classicdemo/out_squad
1.5 下游任务快速加载模型
from transformers import AutoTokenizer, AutoModelForMaskedLM
tokenizer = AutoTokenizer.from_pretrained("bert-base-chinese")
model = AutoModelForMaskedLM.from_pretrained("bert-base-chinese")
二、服务器运行代码出现问题及解决方法
2.1 no module named xxx
一般来讲是没有安装需要的包导致的,直接pip install xxx 即可。
2.2 RuntimeError: CUDA error: all CUDA-capable devices are busy or unavailable
由于是在实验室的服务器上跑代码,存在
多个显卡
情况。
1、检查当前服务器使用情况
nvidia-smi
显示当前显卡使用情况:
显卡2可使用,那么:
export CUDA_VISIBLE_DEVICES=2
指定使用编号为2的显卡。之后再运行代码即可。
三、测试结果
在dev上测试:
python /home/lab-hwj/classicdemo/Bert/SQuAD/evaluate-v1.1.py /home/lab-hwj/classicdemo/Bert/SQuAD/dev-v1.1.json /home/lab-hwj/classicdemo/out_squad/predictions_.json
结果:
Results: {'exact': 81.43803216650899, 'f1': 88.62932293097217, }
版权声明:本文为chloexxx原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。