bert之预训练(pretrain)

一、数据准备

document: 每个样本是document粒度的,每个document用空行分隔
sentence:每个document又拆分为sentence,用换行符区分
每个document包含n个(n>=1)sentence

具体实例如下:
在这里插入图片描述
二、tfrecord生成

(1)利用 create_pretraining_data.py 即可生成tfrecord
代码传送门

python create_pretraining_data.py \
--input_file=./tmp/zh_test.txt \
--output_file=./tmp/output.record \
--vocab_file=./model_bert/chinese_L-12_H-768_A-12/vocab.txt

参数说明:

  • input_file:前面预处理好的数据文件
  • output_file:输出的tf-record
  • vocab_file:字词典,下载的模型中包含这个文件

(2)代码中dupe_factor=10会让一条数据不同mask10次,如果像减少tfrecord生成时间,可将其设置为1
(3)要做好心里准备,生成时间比较长(35M输入文件,用了十几分钟生成完毕),而且如果不修改dupe_factor参数,生成的tfrecord文件占用内存,会比input_fille大很多倍
(4)真正想做预训练,肯定需要几十G的数据,采用上面写的方式生成tfrecord肯定在时间和内存上,都无法满足需求,后面专门写一期通过spark生成tfrecord的博客

三、开始预训练
预训练需要用到GPU,GPU版本tf安装教程,前面写过,传送门
(1)预训练命令

python run_pretraining.py \
--input_file=./tmp/output.txt \
--output_dir=./tmp/model_out \
--do_train=True \
--do_eval=True \
--bert_config_file=./model_bert/chinese_L-12_H-768_A-12/bert_config.json \
--init_checkpoint=./model_bert/chinese_L-12_H-768_A-12/bert_model.ckpt \
--train_batch_size=32 \
--max_seq_length=128 \
--max_predictions_per_seq=20 \
--num_train_steps=50 \
--num_warmup_steps=10 \
--learning_rate=2e-5

(2)可能遇到问题
在初次运行时,遇到OOM问题,此时,将train_batch_size设置小一点即可,比如将32改为16
(3)查看GPU占用情况:watch -n 1 nvidia-smi
在这里插入图片描述
(4)运行结果
时间:用35M文本生成的tfrecord去预训练,用GPU时间一分钟内能跑完
跑完结果:
在这里插入图片描述

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值