本次实验使用swanlab作为训练过程跟踪的可视化工具,既可以在微信公众号Swanlab上查看,也可以在手机APP上随时跟踪,具体使用操作可以参考 手机上看SwanLab实验的两种方法。
什么是SwanLab?
SwanLab是一个深度学习实验管理与训练可视化工具,由西安电子科技大学创业团队打造,融合了Weights & Biases与Tensorboard的特点,可以记录整个实验的超参数、指标、训练环境、Python版本等,并可视化图表,帮助你分析训练的表现。
在训练过程中,你可能因为各种原因无法看到当前实验的最新情况,这个时候如果能够在手机、平板上看到实验的最新进展,及时发现训练的问题,能够节省很多的时间。
SwanLab也与绝大多数主流的训练框架进行了集成,包括PyTorch、HuggingFace Transformers、PyTorch Lightning、MMDetection、Ultralytics、fastai等等,可以开箱即用地与你的深度学习工作流轻松集成。
前言
之前在博客上查找些资料,想找一些能实现用bert进行古诗生成的代码进行训练,然后有利用tensorflow或者Paddlepaddle进行训练的,然后想用pytorch进行训练,于是就写了份用pytorch预训练的bert模型代码,然后使用swanlab进行日志管理,监控训练过程。
代码
数据集
诗词数据集使用的是Github上开源的数据集:简体中文诗词数据集
该数据集包含了25.4万条宋朝诗词数据,以及5.7万条唐朝诗词数据,内部数据如下:
[……,
{
"strains": [
"仄仄仄仄平仄仄,平平仄平○仄仄。",
"平平仄仄平仄平,仄仄平平?仄仄。"
],
"author": "宋太祖",
"paragraphs": [
"欲出未出光辣达,千山万山如火发。",
"须臾走向天上来,逐却残星赶却月。"
],
"title": "日诗"
},
……]
数据处理
首先对数据进行简单的处理。
# 指定文件夹路径
folder_path = './data' # 替换成你的文件夹路径
# 存储所有JSON文件的数据
all_data = []
# 列出文件夹中的所有文件
for filename in os.listdir(folder_path):
# 检查文件是否是JSON文件
if filename.endswith('.json'):
# 构建JSON文件的完整路径
file_path = os.path.join(folder_path, filename)
# 打开JSON文件并读取数据
with open(file_path, 'r', encoding='utf-8') as file:
data = json.load(file)
# 将读取的数据存储到列表中
# 每一个data是1000长度的
for data_len in data:
new_data = "".join(data_len["paragraphs"])
all_data.append(new_data)
然后是构造数据读取器,在构造读取器之前,我们可以先了解下BERT的数据输入结构是什么样子的。
输入到bert的数据分为三个部分,分别是Token Embeddings、Segement Embeddings、Position Embeddings,下面分别介绍是什么意思。