从BERT迁移到ALBERT

三行代码从BERT迁移到ALBERT

本文简单记录如何将使用BERT fine tuning 的代码转化为使用Albert进行训练,改动真的不要太多。

我使用的是谷歌官方的Albert https://github.com/google-research/ALBERT

如果你原来已经有BERT的fine tuning的代码,那么你只需要修改三行代码,我这里以https://github.com/macanv/BERT-BiLSTM-CRF-NER 中的NER为例

TensorFlow 版本要 >1.12,如果是1.12 需要修改albert中的tf.compat.v1改掉,进行兼容。

步骤1

下载albert pretrain 模型
解压后发现文件和bert有点不一样,所以在定义config, 词典,init_checkpoint的变量需要进行对应的文件名修改。
在BERT-BiLSTM-CRF-NER代码中,需要修改的传入的三个参数:

-bert_config_file $ALBERT_PATH/albert_config.json
-init_checkpoint $ALBERT_PATH/model.ckpt-best
-vocab_file $ALBERT_PATH/vocab_chinese.txt

步骤2

修改加载config文件的类
之前是

bert_config = modeling.BertConfig.from_json_file(FLAGES.bert_config_file)

现在

bert_config = modeling.AlbertConfig.from_json_file(FLAGES.bert_config_file)

例如在BERT-BiLSTM-CRF-NER代码中,需要修改
bert_base/train//bert_lstm_ner.py中的495行

bert_config = modeling.AlbertConfig.from_json_file(args.bert_config_file)

步骤3

修改加载Albert模型的类
之前是

model = modeling.BertModel()

现在

model = modeling.AlbertModel()

例如在BERT-BiLSTM-CRF-NER代码中,需要修改
bert_base/train//models.py中的82,83行

    from bert_base.albert import modeling
    model = modeling.AlbertModel(

== 注意,先把albert的代码下载下来,新建一个module,命名为albert,然后将所有的代码都放进去,修改import出错的代码即可 ==

步骤4

更改optimization为albert的
例如在BERT-BiLSTM-CRF-NER代码中,需要修改
bert_base/train/bert_lstm_ner.py的第24行

将
from bert_base.bert import optimization
替换为
from bert_base.albert import optimization

号外

如果报six.ensure_str 包找不到问题,升级一下six即可

pip install six --upgrade --ignore-installed six

结束

只需要三步,就可以完成bert到albert的迁移,base版本在i5 CPU上也可以跑

你可能感兴趣的:(nlp)