### Step4:关闭serving 使用关闭命令即可关闭启动的serving, ```shell $ hub serving stop --port XXXX ``` **参数**: |参数|用途| |-|-| |--port/-p|指定要关闭的服务端口,默认为8866| ## Demo——部署一个在线lac分词服务 ### Step1:部署lac在线服务 现在,我们要部署一个lac在线服务,以通过接口获取文本的分词结果。 首先,任意选择一种启动方式,两种方式分别为: ```shell $ hub serving start -m lac ``` 或 ```shell $ hub serving start -c serving_config.json ``` 其中`serving_config.json`的内容如下: ```json { "modules_info": { "lac": { "init_args": { "version": "1.1.0" }, "predict_args": { "batch_size": 1, "use_gpu": false } } }, "port": 8866, "use_multiprocess": false, "workers": 2 } ``` 启动成功界面如图:
这样我们就在8866端口成功部署了lac的在线分词服务。 *此处warning为Flask提示,不影响使用* ### Step2:访问lac预测接口 在服务部署好之后,我们可以进行测试,用来测试的文本为`今天是个好日子`和`天气预报说今天要下雨`。 客户端代码如下 ```python # coding: utf8 import requests import json if __name__ == "__main__": # 指定用于用于预测的文本并生成字典{"text": [text_1, text_2, ... ]} text_list = ["今天是个好日子", "天气预报说今天要下雨"] text = {"text": text_list} # 指定预测方法为lac并发送post请求 url = "http://127.0.0.1:8866/predict/text/lac" r = requests.post(url=url, data=text) # 打印预测结果 print(json.dumps(r.json(), indent=4, ensure_ascii=False)) ``` 运行后得到结果 ```python { "results": [ { "tag": [ "TIME", "v", "q", "n" ], "word": [ "今天", "是", "个", "好日子" ] }, { "tag": [ "n", "v", "TIME", "v", "v" ], "word": [ "天气预报", "说", "今天", "要", "下雨" ] } ] } ``` ### Step3:停止serving服务 由于启动时我们使用了默认的服务端口8866,则对应的关闭命令为: ```shell $ hub serving stop --port 8866 ``` 或不指定关闭端口,则默认为8866。 ```shell $ hub serving stop ``` 等待serving清理服务后,提示: ```shell $ PaddleHub Serving will stop. ``` 则serving服务已经停止。 此Demo的具体信息和代码请参见[LAC Serving](../../demo/serving/module_serving/lexical_analysis_lac)。另外,下面展示了一些其他的一键服务部署Demo。 ## Demo——其他模型的一键部署服务 获取其他PaddleHub Serving的一键服务部署场景示例,可参见下列demo * [图像分类-基于vgg11_imagent](../../demo/serving/module_serving/classification_vgg11_imagenet) 该示例展示了利用vgg11_imagent完成图像分类服务化部署和在线预测,获取图像分类结果。 * [图像生成-基于stgan_celeba](../../demo/serving/module_serving/GAN_stgan_celeba) 该示例展示了利用stgan_celeba生成图像服务化部署和在线预测,获取指定风格的生成图像。 * [文本审核-基于porn_detection_lstm](../../demo/serving/module_serving/text_censorship_porn_detection_lstm) 该示例展示了利用porn_detection_lstm完成中文文本黄色敏感信息鉴定的服务化部署和在线预测,获取文本是否敏感及其置信度。 * [中文词法分析-基于lac](../../demo/serving/module_serving/lexical_analysis_lac) 该示例展示了利用lac完成中文文本分词服务化部署和在线预测,获取文本的分词结果,并可通过用户自定义词典干预分词结果。 * [目标检测-基于yolov3_darknet53_coco2017](../../demo/serving/module_serving/object_detection_yolov3_darknet53_coco2017) 该示例展示了利用yolov3_darknet53_coco2017完成目标检测服务化部署和在线预测,获取检测结果和覆盖识别框的图片。 * [中文语义分析-基于simnet_bow](../../demo/serving/module_serving/semantic_model_simnet_bow) 该示例展示了利用simnet_bow完成中文文本相似度检测服务化部署和在线预测,获取文本的相似程度。 * [图像分割-基于deeplabv3p_xception65_humanseg](../../demo/serving/module_serving/semantic_segmentation_deeplabv3p_xception65_humanseg) 该示例展示了利用deeplabv3p_xception65_humanseg完成图像分割服务化部署和在线预测,获取识别结果和分割后的图像。 * [中文情感分析-基于senta_lstm](../../demo/serving/module_serving/sentiment_analysis_senta_lstm) 该示例展示了利用senta_lstm完成中文文本情感分析服务化部署和在线预测,获取文本的情感分析结果。 ## 客户端请求新版模型的方式 对某些新版模型,客户端请求方式有所变化,更接近本地预测的请求方式,以降低学习成本。 以lac(2.1.0)为例,使用上述方法进行请求将提示: ```python { "Warnning": "This usage is out of date, please use 'application/json' as content-type to post to /predict/lac. See 'https://github.com/PaddlePaddle/PaddleHub/blob/release/v1.6/docs/tutorial/serving.md' for more details." } ``` 对于lac(2.1.0),请求的方式如下: ```python # coding: utf8 import requests import json if __name__ == "__main__": # 指定用于预测的文本并生成字典{"text": [text_1, text_2, ... ]} text = ["今天是个好日子", "天气预报说今天要下雨"] # 以key的方式指定text传入预测方法的时的参数,此例中为"data" # 对应本地部署,则为lac.analysis_lexical(texts=[text1, text2]) data = {"texts": text, "batch_size": 2} # 指定预测方法为lac并发送post请求 url = "http://127.0.0.1:8866/predict/lac" # 指定post请求的headers为application/json方式 headers = {"Content-Type": "application/json"} r = requests.post(url=url, headers=headers, data=json.dumps(data)) # 打印预测结果 print(json.dumps(r.json(), indent=4, ensure_ascii=False)) ``` 此Demo的具体信息和代码请参见[LAC Serving_2.1.0](../../demo/serving/module_serving/lexical_analysis_lac/lac_2.1.0_serving_demo.py)。 ## Bert Service 除了预训练模型一键服务部署功能之外,PaddleHub Serving还具有`Bert Service`功能,支持ernie_tiny、bert等模型快速部署,对外提供可靠的在线embedding服务,具体信息请参见[Bert Service](./bert_service.md)。