项目在肖涵老师的bert-as-service上添加了ALBERT
模型,总体使用与bert-as-service保持一致。
直接通过Bert Encode Server服务端获取输入特征(可以是字特征,也可以是句特征),此时的预训练语言模型仅作为通用的特征提取器,不参与下游模型的训练,可以显著降低任务的计算资源占用;从Bert Encode Server服务端提取特征需要一定的耗时,该耗时取决于服务端的计算性能
- 2020.03.03 新增样例。
- 2020-01-11 加载roberta系列模型时,不需要添加
-albert
参数,其网络结构与bert模型一致。 - 2020-01-11 修复BERT模型加载出现
AttributeError: 'BertConfig' object has no attribute 'embedding_size'
的错误,原因是对开启server的参数-albert
进行处理时出现错误;现在,-albert
参数被设置为store_true
的动作参数,默认为False
。
- 提高稳定性和并发性。
- 新增BERT系列改进模型,如Distill Bert,Tiny Bert。
- flask == 1.1.1
- GPUtil == 1.4.0
- termcolor == 1.1.0
- flask_cors == 3.0.8
- flask_json == 0.3.4
- tensorflow == 1.15.2
- flask_compress == 1.4.0
cd char_server
bash char_server.sh
注意修改.char_server.sh
中文件的相关内容:
- 如果使用
ALBERT
模型,应添加参数-albert
。 model_dir
,ckpt_name
和config_name
根据预训练语言模型的位置进行相应调整。- 如使用
cpu
,添加-cpu
参数;如使用gpu
,添加-device_map "0"
,其中"0"
为0号GPU。
cd sent_server
bash sent_server.sh
参数与字特征提取(服务端) 所示参数一致,但需注意:
-pooling_strategy
参数应删除或设置该参数为REDUCE_MEAN
。
import requests
r = requests.post(
"http://your_ip:your_port/encode",
json={
"id": 123,
"texts": ["啊","啥意思"],
"is_tokenized": False
}
)
其中,json
中的相关参数设置如下:
texts
字段为句子list时,is_tokenized
字段为False
。texts
字段为字符list时,is_tokenized
字段为True
。
BERT
ALBERT
- Google_albert_base
- Google_albert_large
- Google_albert_xlarge
- Google_albert_xxlarge
- Xuliang_albert_xlarge
- Xuliang_albert_large
- Xuliang_albert_base
- Xuliang_albert_base_ext
- Xuliang_albert_small
- Xuliang_albert_tiny
Roberta
- 项目参考了Han Xiao的工作:bert_as_service。我们仅仅在这基础上添加了
ALBERT
模型框架。