使用13亿中文大模型对罪犯减刑时长进行预测。 赛题地址:https://www.datafountain.cn/competitions/611/ranking?isRedance=0&sch=2086
代码地址:https://github.com/ganzhiruyi/ustc_ml2023
采用封神榜开源的中文最大Bert类模型Erlangshen-MegatronBert-1.3B ,作为中文底座大模型,将时长转化成34分类问题,交叉验证的方法进行模型训练。
Encoder结构为主的双向语言模型,专注于解决各种自然语言理解任务。 采用了Megatron-LM的工作,使用了32张A100,总共耗时14天在悟道语料库(180 GB版本)上训练了十亿级别参数量的BERT。同时,鉴于中文语法和大规模训练的难度,使用四种预训练策略来改进BERT:1) 整词掩码, 2) 知识动态遮掩, 3) 句子顺序预测, 4) 层前归一化.
- 初始化:开始时,所有分类的被初始化。
- 数据切分:1%的数据作为验证集,99%的数据作为训练集
- 迭代多个Epoch:
- 对于每一个step:
- 学习率采用先线性warmup,然后再cosine decay的schedule
- 计算总的训练分类loss,即当前模型预测与真实标签之间的差异。
- 采用adam进行参数更新。
- 过程中在验证集进行loss, accuracy, precise,recall,f1等多个指标验证。
- 对于每一个step:
- 预测:所有迭代完成后,进行测试集的预测。
调参后主要参数设置如下
--model_max_length 512 \
--num_train_epochs 4 \
--per_device_train_batch_size 32 \
--gradient_accumulation_steps 1 \
--learning_rate 1e-5 \
--lr_scheduler_type cosine \
--adam_beta1 0.9 \
--adam_beta2 0.98 \
--adam_epsilon 1e-8 \
--max_grad_norm 1.0 \
--weight_decay 1e-1 \
--warmup_ratio 0.01 \
--logging_steps 1 \
--log_level "debug" \
--bf16 True \
--deepspeed $CONFIG_JSON \
--do_train \
--do_eval \
--evaluation_strategy "steps" \
--save_steps 5000 \
--eval_steps 200 \
--run_name $run_name \
--gradient_checkpointing False \