环境构建
pip install bert-serving-server
pip install bert-serving-client
及其依赖,如tensorflow>=1.10
源码地址:github链接
预训练模型:chinese_L-12_H-768_A-12.zip
如果想省事,可直接通过docker方式构建,具体示例代码如下:
Dockerfile(cpu)
FROM tensorflow/tensorflow:1.12.0-py3
RUN pip install bert-serving-server
COPY ./ /app
WORKDIR /app
ENTRYPOINT ["/app/entrypoint.sh"]
CMD []
服务端启动命令样例
bert-serving-start -num_worker=4 -model_dir /data/tools/chinese_L-12_H-768_A-12 -max_seq_len=20
服务端可配置参数
-cpu:指定GPU/CPU计算,默认为false,即使用GPU进行计算;
-num_worker:支持设置工作线程数,最好设置为对应的cpu或gpu核数
-model_dir:指定预训练模型的路径,通常将预训练好的BERT模型下载下来放到该目录,该项是必须指定的
-tuned_model_dir:指定微调模型路径,通常将微调好的BERT模型生成到该目录
-ckpt_name:指定checkpoint文件,默认文件名为bert_model.ckpt,常与预训练模型在同一目录
-config_name:指定配置文件,默认文件名为bert_config.json,常与预训练模型在同一目录
-graph_tmp_dir:指定临时的graph文件,默认是/tmp/XXXXXX
-max_seq_len:指定最大序列长度,使用None来动态加载(mini)batch做为最大序列长度,默认取值25,实际在我的机器上面设置20即可,否则服务启动的时候会卡住
-max_batch_size:指定每个worker能够处理的最大序列数,默认256
-priority_batch_size:指定高优先级处理的batch大小,默认值16
-port:指定客户端向服务端push数据的端口号,默认5555
-port_out:指定服务端向客户端发布结果的的端口号,默认5556
-http_port:指定服务端接受http请求的端口号,无默认值
-pooling_strategy:指定池化-采样策略,默认取值REDUCE_MEAN,取值限制在:NONE, REDUCE_MEAN, REDUCE_MAX, REDUCE_MEAN_MAX, CLS_TOKEN, FIRST_TOKEN, SEP_TOKEN, LAST_TOKEN ,为了获取sequence中的每个token应该将其置为NONE
-pooling_layer:指定池化-采样层,默认取值[-2], -1表示最后一层, -2 倒数第二层, [-1, -2] 表示连接最后两层的结果
-xla:指定XLA compiler 进行graph的优化,默认取值false
客户端可配置参数
-ip:指定bert服务端的ip,默认是localhost
-port:指定客户端向服务端push数据的端口号,默认5555,需与服务端配置一致
-port_out:指定服务端向客户端发布结果的端口号,默认5556,需与服务端配置一致
-output_fmt:指定 sentence编码格式,默认ndarray,也可使用list
-show_server_config:指定是否在开始连接的时候显示服务端配置
-check_version:指定是否要求服务端与客户端版本保持一致性,默认取值false
-identity:指定multi-casting模式下客户端的uuid以对多个客户端进行区分,默认取值None
网友评论