基于BERT的中文问答微调训练
需要安装以下内容:
torch
transformers
swanlab
本文的代码测试于torch==2.2.2、transformers==4.40.0、swanlab==0.3.0,更多库版本可查看SwanLab记录的Python环境
BERT模型我们直接下载来自HuggingFace上由Google发布的bert-base-chinese预训练模型。
当然也可以直接执行下面的代码,会自动下载模型权重并加载模型:
from transformers import AutoTokenizer, AutoModelForSequenceClassification, Trainer, TrainingArguments
model = AutoModelForSequenceClassification.from_pretrained('bert-base-chinese')
本次训练使用的是CMRC2018数据集,CMRC2018是第二届[讯飞杯]中文机器阅读理解颁奖研讨会中相关赛事所使用的资料集,它主要用于中文机器阅读理解的跨度提取资料集,以增加该领域的语言多样性.
该资料集有人类专家在维基百科段落上注释的近20000个真实问题组成。
同时也注释了一个挑战集,其中包含需要在整个上下文中进行全面理解和多句推理的问题。
代码链接:ymcui/cmrc2018
# 加载数据集
with open("./data/cmrc2018_train.json", encoding="utf-8") as f:
train = json.load(f)
with open("./data/cmrc2018_dev.json", encoding="utf-8") as f:
dev = json.load(f)
# 可视化部署
swanlab.init(
project="Bert_fine-tuning",
experiment_name="epoch-5",
workspace=None,
description="基于BERT的问答模型",
config={'epochs': args.epochs, 'learning_rate': args.lr}, # 通过config参数保存输入或超参数
logdir="./logs", # 指定日志文件的保存路径
)
想了解更多关于SwanLab的知识,请看SwanLab官方文档。
训练过程可视化:BERT-QA-Swanlab
在首次使用SwanLab时,需要去官网注册一下账号,然后在用户设置复制一下你的API Key。
然后在终端输入swanlab login
:
swanlab login
把API Key粘贴进去即可完成登录,之后就不需要再次登录了。