【踩坑】单GPU微调BERT(SQuAD 1.1)

官方代码地址 https://github.com/google-research/bert

用SQuAD 1.1数据集fine fune时,遇到不少坑,在此分享一下

一、环境

1.报错:AttributeError: module ‘tensorflow._api.v2.train’ has no attribute ‘Optimizer’

问题为tensorflow版本不正确,必须使用1.x版本,我使用的是tensorflow1.15.0

注意:python3.8不支持tensorflow1.15.0,需创建python3.7环境

conda create -n py37 python=3.7
conda activate py37

2.※※大坑※※

接下来下载tensorflow1.15.0时,一定不要用pip install tensorflow-gpu==1.15.0,这样还是会用CPU跑,据说要跑120h

使用conda:

conda install tensorflow-gpu==1.15
二、参数

大体与官方参数一致,模型使用BERT-Base

报错:Resource exhausted: OOM when allocating tensor with shape[4608,3072] and type float on /job:localhost/replica:0/task:0/device:GPU:0 by allocator GPU_0_bfc

问题为显存不够,我使用的是GeForce RTX 2080 Ti,11G显存

将batch size由12调整到8即可

最终参数

python run_squad.py \
  --vocab_file=$BERT_BASE_DIR/vocab.txt \
  --bert_config_file=$BERT_BASE_DIR/bert_config.json \
  --init_checkpoint=$BERT_BASE_DIR/bert_model.ckpt \
  --do_train=True \
  --train_file=$SQUAD_DIR/train-v1.1.json \
  --do_predict=True \
  --predict_file=$SQUAD_DIR/dev-v1.1.json \
  --train_batch_size=8 \
  --learning_rate=3e-5 \
  --num_train_epochs=2.0 \
  --max_seq_length=384 \
  --doc_stride=128 \
  --output_dir=squad_base/

2h后即可完成训练,得到predictions.json

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值