finetune with keras
为什么想要自己实现实现一个finetune代码框架:
采用tensorflow的keras实现,目前仅支持tensorflow1.13.1+。本文实现很多参考了transformers和bert4keras,在此表示感谢。
由于时间限制,更新不会太快,需要读懂论文,然后实现和测试等,基本保持一个月支持一个模型
2020:
examples/finetune_ner
2019:
model | dataset | dev acc | test acc | batch size | learing rate | train epoch |
---|---|---|---|---|---|---|
bert | chnsenticorp | 94.00 | 94.08 | 32 | 3e-5 | 4 |
bert | LCQMC | 88.74 | 86.11 | 32 | 3e-5 | 4 |
albert | chnsenticorp | 93.17 | 93.58 | 32 | 3e-5 | 6 |
albert | LCQMC | 87.25 | 87.06 | 32 | 3e-5 | 4 |
distillbert | sst-2 | 90.71 | 90.38 | 32 | 4e-5 | 4 |
测试结果未精调,仅供测试模型是否正确,能否达到预期的效果
dataset | description |
---|---|
chnsenticorp | 中文情感正负面分析语料,包含三类:旅馆、书籍、商品评论 |
LCQMC | 中文句对相似度任务 |
chinadaily | 中文实体标注数据 |
sst-2 | 英文正负面情绪分类任务 |
需要提前安装依赖包,参考requirement.txt
git clone https://github.com/mkavim/finetune_bert.git
cd finetune_bert
pip install .
1、下载Bert中文预训练模型:chinese_L-12_H-768_A-12.zip
2、finetune
支持classification和ner任务,参考examples
python finetune_classifier.py --train \
--model_name bert \
--task chnsenticorp \
--pretrained_path=./chinese_L-12_H-768_A-12/ \
--lr 3e-5 \
--batch_size 32 \
--epochs 3 \
--save_dir ./checkpoint
3、test
python finetune_classifier.py --test \
--task chnsenticorp \
--pretrained_path=./chinese_L-12_H-768_A-12/vocab.txt \
--batch_size 32 \
--save_dir ./checkpoint/xxx.hdf5
4、 将keras bert 模型转化 tensorflow serving 的格式,即可上线
python tools/keras_to_tf_serving.py \
--model_path ./checkpoint/xxx.hdf5 \
--export_model_dir ./tfserving_model/ \
--model_version keras_bert_xxx
为什么只支持tf.keras?
一是keras未来的趋势是与tensorflow整合,因此直接使用tf.keras实现。低版本keras不支持sublayers,具体可参考issues。
另外tf2.0版本太高,实际环境中还不敢使用
是否可以提交代码和issues?
个人精力和能力有限,欢迎提交代码和issues
模型支持计划?
待定