diff --git a/demo/serving/README.md b/demo/serving/README.md index 11467beb57042d08aa28fb6994fce21fad45de64..368048a3bb9acbc12d9cfd184d91a0425a5c5786 100644 --- a/demo/serving/README.md +++ b/demo/serving/README.md @@ -1,54 +1,56 @@ -# PaddleHub-Serving -## 1. 简介 -### 1.1 什么是PaddleHub-Serving -PaddleHub-Serving是基于PaddleHub的一键模型服务部署工具,能够通过简单的Hub命令行工具轻松启动一个模型预测在线服务。 +# PaddleHub Serving +## 简介 +### 背景 +使用PaddleHub能够完成预训练模型的管理和预测,但开发者还经常面临将模型部署上线以对外提供服务的需求,而利用PaddleHub Serving可便捷的将模型部署上线,开发者只需要关注如何处理输入数据和输出结果即可。 +### 主要功能 +PaddleHub Serving是基于PaddleHub的一键模型服务部署工具,能够通过简单的Hub命令行工具轻松启动一个模型预测在线服务。 -### 1.2 为什么使用PaddleHub-Serving -使用PaddleHub能够完成预训练模型的管理和一键预测,但开发者还经常面临将模型部署上线以对外提供服务的需求,而利用PaddleHub-Serving可便捷的将模型部署上线,开发者只需要关注如何处理输入数据和输出结果即可。 +PaddleHub Serving主要包括利用Bert Service实现embedding服务化,以及利用预测模型实现预训练模型预测服务化两大功能,未来还将支持开发者使用PaddleHub Fine-tune API的模型服务化。 -### 1.3 PaddleHub-Serving的组成 -PaddleHub-Serving主要包括利用Bert Service实现embedding服务化,以及利用预测模型实现预训练模型预测服务化,未来还将支持开发者利用PaddleHub自己finetune后的模型服务化。 +## Bert Service +Bert Service是基于[Paddle Serving](https://github.com/PaddlePaddle/Serving)框架的快速部署模型远程计算服务方案,可将embedding过程通过调用API接口的方式实现,减少了对机器资源的依赖。使用PaddleHub可在服务器上一键部署`Bert Service`服务,在另外的普通机器上通过客户端接口即可轻松的获取文本对应的embedding数据。 -## 2. Bert Service -Bert Service是基于Paddle Serving框架的快速部署模型远程计算服务方案,可将embedding过程通过调用API接口的方式实现,减少了对机器资源的依赖。使用PaddleHub可在服务器上一键部署`Bert Service`服务,在另外的普通机器上通过客户端接口即可轻松的获取文本对应的embedding数据。 - -关于Bert Service的具体信息和示例请参阅[Bert Service](./bert_service) +关于Bert Service的具体信息和demo请参见[Bert Service](../../tutorial/bert_service.md) 该示例展示了利用Bert Service进行远程embedding服务化部署和在线预测,并获取文本embedding结果。 -## 3. PaddleHub-Serving -预训练模型预测服务化能够一键完成模型服务部署,包括以下示例: +## 预训练模型一键服务部署 +预训练模型一键服务部署是基于PaddleHub的预训练模型快速部署的服务化方案,能够将模型预测以API接口的方式实现。 + +关于预训练模型一键服务部署的具体信息请参见[PaqddleHub Serving](../../tutorial/serving.md) + +预训练模型一键服务部署包括以下示例: -* [图像分类-基于vgg11_imagent](serving/classification_vgg11_imagenet) +* [图像分类-基于vgg11_imagent](module_serving/classification_vgg11_imagenet) -该示例展示了利用vgg11_imagent完成图像分类服务化部署和在线预测,获取图像分类结果。 + 该示例展示了利用vgg11_imagent完成图像分类服务化部署和在线预测,获取图像分类结果。 -* [图像生成-基于stgan_celeba](serving/GAN_stgan_celeba) +* [图像生成-基于stgan_celeba](module_serving/GAN_stgan_celeba) -该示例展示了利用stgan_celeba生成图像服务化部署和在线预测,获取指定风格的生成图像。 + 该示例展示了利用stgan_celeba生成图像服务化部署和在线预测,获取指定风格的生成图像。 -* [文本审核-基于porn_detection_lstm](serving/text_censorship_porn_detection_lstm) +* [文本审核-基于porn_detection_lstm](module_serving/text_censorship_porn_detection_lstm) -该示例展示了利用porn_detection_lstm完成中文文本黄色敏感信息鉴定的服务化部署和在线预测,获取文本是否敏感及其置信度。 + 该示例展示了利用porn_detection_lstm完成中文文本黄色敏感信息鉴定的服务化部署和在线预测,获取文本是否敏感及其置信度。 -* [中文词法分析-基于lac](serving/lexical_analysis_lac) +* [中文词法分析-基于lac](module_serving/lexical_analysis_lac) -该示例展示了利用lac完成中文文本分词服务化部署和在线预测,获取文本的分词结果,并可通过用户自定义词典干预分词结果。 + 该示例展示了利用lac完成中文文本分词服务化部署和在线预测,获取文本的分词结果,并可通过用户自定义词典干预分词结果。 -* [目标检测-基于yolov3_darknet53_coco2017](serving/object_detection_yolov3_darknet53_coco2017) +* [目标检测-基于yolov3_darknet53_coco2017](module_serving/object_detection_yolov3_darknet53_coco2017) -该示例展示了利用yolov3_darknet53_coco2017完成目标检测服务化部署和在线预测,获取检测结果和覆盖识别框的图片。 + 该示例展示了利用yolov3_darknet53_coco2017完成目标检测服务化部署和在线预测,获取检测结果和覆盖识别框的图片。 -* [中文语义分析-基于simnet_bow](serving/semantic_model_simnet_bow) +* [中文语义分析-基于simnet_bow](module_serving/semantic_model_simnet_bow) -该示例展示了利用simnet_bow完成中文文本相似度检测服务化部署和在线预测,获取文本的相似程度。 + 该示例展示了利用simnet_bow完成中文文本相似度检测服务化部署和在线预测,获取文本的相似程度。 -* [图像分割-基于deeplabv3p_xception65_humanseg](serving/semantic_segmentation_deeplabv3p_xception65_humanseg) +* [图像分割-基于deeplabv3p_xception65_humanseg](module_serving/semantic_segmentation_deeplabv3p_xception65_humanseg) -该示例展示了利用deeplabv3p_xception65_humanseg完成图像分割服务化部署和在线预测,获取识别结果和分割后的图像。 + 该示例展示了利用deeplabv3p_xception65_humanseg完成图像分割服务化部署和在线预测,获取识别结果和分割后的图像。 -* [中文情感分析-基于simnet_bow](serving/semantic_model_simnet_bow) +* [中文情感分析-基于simnet_bow](module_serving/semantic_model_simnet_bow) -该示例展示了利用senta_lstm完成中文文本情感分析服务化部署和在线预测,获取文本的情感分析结果。 + 该示例展示了利用senta_lstm完成中文文本情感分析服务化部署和在线预测,获取文本的情感分析结果。 -关于Paddle-Serving一键模型部署功能的具体信息请参与[serving](./serving) +关于Paddle Serving预训练模型一键服务部署功能的具体信息请参见[serving](module_serving) diff --git a/demo/serving/serving/GAN_stgan_celeba/README.md b/demo/serving/module_serving/GAN_stgan_celeba/README.md similarity index 81% rename from demo/serving/serving/GAN_stgan_celeba/README.md rename to demo/serving/module_serving/GAN_stgan_celeba/README.md index 45fe9a87523bbeb02a7affc29c70c87579022e87..840ca02eecff5df9bad4973b93408d8d808bc68e 100644 --- a/demo/serving/serving/GAN_stgan_celeba/README.md +++ b/demo/serving/module_serving/GAN_stgan_celeba/README.md @@ -1,35 +1,36 @@ # 部署图像生成服务-以stgan_celeba为例 -## 1 简介 -图像生成是指根据预先设置的标签,生成对应图像的过程。stgan_celeba通过在GAN中加入encoder-decoder,可实现人脸属性的转换。关于stgan_celeba的具体信息请参阅[stgan_celeba](https://paddlepaddle.org.cn/hubdetail?name=stgan_celeba&en_category=GANs)。 +## 简介 +图像生成是指根据预先设置的标签,生成对应图像的过程。stgan_celeba通过在GAN中加入encoder-decoder,可实现人脸属性的转换。关于stgan_celeba的具体信息请参见[stgan_celeba](https://paddlepaddle.org.cn/hubdetail?name=stgan_celeba&en_category=GANs)。 -使用PaddleHub-Serving可以轻松部署一个在线图像生成服务API,可将此API接入自己的web网站,也可接入应用程序,如美图类应用,实现传照片修饰脸的功能。 +使用PaddleHub Serving可以轻松部署一个在线图像生成服务API,可将此API接入自己的web网站,也可接入应用程序,如美图类应用,实现传照片修饰脸的功能。 -下面就带领大家使用PaddleHub-Serving,通过简单几步部署一个图像生成服务。 +下面就带领大家使用PaddleHub Serving,通过简单几步部署一个图像生成服务。 -## 2 启动PaddleHub-Serving -启动命令如下 +## Step1:启动PaddleHub Serving +启动命令如下: ```shell $ hub serving start -m stgan_celeba ``` -启动时会显示加载模型过程,启动成功后显示 +启动时会显示加载模型过程,启动成功后显示: ```shell Loading stgan_celeba successful. ``` 这样就完成了一个图像生成服务化API的部署,默认端口号为8866。 -## 3 测试图像生成在线API -我们用来测试的样例图片为 +## Step2:测试图像生成在线API +我们用来测试的样例图片为:
@@ -28,24 +28,26 @@ Loading vgg11_imagenet successful.
@@ -36,7 +36,7 @@ Loading yolov3_darknet53_coco2017 successful. ```python files = [("image", file_1), ("image", file_2)] ``` -注意文件列表每个元素第一个参数为"image"。 +**NOTE:** 文件列表每个元素第一个参数为"image"。 代码如下 ```python @@ -44,6 +44,8 @@ files = [("image", file_1), ("image", file_2)] >>> file_list = ["../img/cat.jpg", "../img/dog.jpg"] >>> files = [("image", (open(item, "rb"))) for item in file_list] ``` + +## Step3:获取并验证结果 然后就可以发送请求到目标检测服务API,并得到结果,代码如下 ```python >>> # 指定检测方法为yolov3_darknet53_coco2017并发送post请求 diff --git a/demo/serving/serving/object_detection_yolov3_darknet53_coco2017/output/cat.jpg b/demo/serving/module_serving/object_detection_yolov3_darknet53_coco2017/output/cat.jpg similarity index 100% rename from demo/serving/serving/object_detection_yolov3_darknet53_coco2017/output/cat.jpg rename to demo/serving/module_serving/object_detection_yolov3_darknet53_coco2017/output/cat.jpg diff --git a/demo/serving/serving/object_detection_yolov3_darknet53_coco2017/output/dog.jpg b/demo/serving/module_serving/object_detection_yolov3_darknet53_coco2017/output/dog.jpg similarity index 100% rename from demo/serving/serving/object_detection_yolov3_darknet53_coco2017/output/dog.jpg rename to demo/serving/module_serving/object_detection_yolov3_darknet53_coco2017/output/dog.jpg diff --git a/demo/serving/serving/object_detection_yolov3_darknet53_coco2017/yolov3_darknet53_coco2017_serving_demo.py b/demo/serving/module_serving/object_detection_yolov3_darknet53_coco2017/yolov3_darknet53_coco2017_serving_demo.py similarity index 100% rename from demo/serving/serving/object_detection_yolov3_darknet53_coco2017/yolov3_darknet53_coco2017_serving_demo.py rename to demo/serving/module_serving/object_detection_yolov3_darknet53_coco2017/yolov3_darknet53_coco2017_serving_demo.py diff --git a/demo/serving/serving/semantic_model_simnet_bow/README.md b/demo/serving/module_serving/semantic_model_simnet_bow/README.md similarity index 85% rename from demo/serving/serving/semantic_model_simnet_bow/README.md rename to demo/serving/module_serving/semantic_model_simnet_bow/README.md index 05e72cf41e91586758f968e608ae2d7fd5ee549f..e9dae4cff7d276075ce404d6b1d12b4c9404453f 100644 --- a/demo/serving/serving/semantic_model_simnet_bow/README.md +++ b/demo/serving/module_serving/semantic_model_simnet_bow/README.md @@ -1,12 +1,12 @@ # 部署语义模型服务-以simnet_bow为例 -## 1 简介 -`simnet_bow`是一个计算短文本相似度的模型,可以根据用户输入的两个文本,计算出相似度得分。关于`simnet_bow`的具体信息请参阅[simnet_bow](https://paddlepaddle.org.cn/hubdetail?name=simnet_bow&en_category=SemanticModel)。 +## 简介 +`simnet_bow`是一个计算短文本相似度的模型,可以根据用户输入的两个文本,计算出相似度得分。关于`simnet_bow`的具体信息请参见[simnet_bow](https://paddlepaddle.org.cn/hubdetail?name=simnet_bow&en_category=SemanticModel)。 -使用PaddleHub-Serving可以部署一个在线语义模型服务,可以将此接口用于在线文本相似度分析、智能问答检索等应用。 +使用PaddleHub Serving可以部署一个在线语义模型服务,可以将此接口用于在线文本相似度分析、智能问答检索等应用。 -这里就带领大家使用PaddleHub-Serving,通过简单几步部署一个语义模型在线服务。 +这里就带领大家使用PaddleHub Serving,通过简单几步部署一个语义模型在线服务。 -## 2 启动PaddleHub-Serving +## Step1:启动PaddleHub Serving 启动命令如下 ```shell $ hub serving start -m simnet_bow @@ -17,14 +17,14 @@ Loading lac successful. ``` 这样就完成了一个语义模型服务化API的部署,默认端口号为8866。 -## 3 测试语义模型在线API +## Step2:测试语义模型在线API 在服务部署好之后,我们可以进行测试,用来测试的文本对分别为`[这道题太难了:这道题是上一年的考题], [这道题太难了:这道题不简单], [这道题太难了:这道题很有意思]`。 准备的数据格式为 ```python {"text_1": [text_a1, text_a2, ... ], "text_2": [text_b1, text_b2, ... ]} ``` -注意字典的key分别为"text_1"和"text_2",与`simnet_bow`模型使用的输入数据一致。 +**NOTE:** 字典的key分别为"text_1"和"text_2",与`simnet_bow`模型使用的输入数据一致。 根据文本和数据格式,代码如下 ```python @@ -35,6 +35,8 @@ Loading lac successful. >>> "text_2": ["这道题是上一年的考题", "这道题不简单", "这道题很有意思"] >>> } ``` + +## Step3:获取并验证结果 接下来发送请求到语义模型API,并得到结果,代码如下 ```python >>> # 指定匹配方法为simnet_bow并发送post请求 diff --git a/demo/serving/serving/semantic_model_simnet_bow/simnet_bow_serving_demo.py b/demo/serving/module_serving/semantic_model_simnet_bow/simnet_bow_serving_demo.py similarity index 100% rename from demo/serving/serving/semantic_model_simnet_bow/simnet_bow_serving_demo.py rename to demo/serving/module_serving/semantic_model_simnet_bow/simnet_bow_serving_demo.py diff --git a/demo/serving/serving/semantic_segmentation_deeplabv3p_xception65_humanseg/README.md b/demo/serving/module_serving/semantic_segmentation_deeplabv3p_xception65_humanseg/README.md similarity index 86% rename from demo/serving/serving/semantic_segmentation_deeplabv3p_xception65_humanseg/README.md rename to demo/serving/module_serving/semantic_segmentation_deeplabv3p_xception65_humanseg/README.md index 3a1a11535c8b069329c2b1268d917fc867d7b785..2a17ee34b5b54c425fb52ea6c19e7311cb87f9d8 100644 --- a/demo/serving/serving/semantic_segmentation_deeplabv3p_xception65_humanseg/README.md +++ b/demo/serving/module_serving/semantic_segmentation_deeplabv3p_xception65_humanseg/README.md @@ -1,12 +1,12 @@ # 部署图像分割服务-以deeplabv3p_xception65_humanseg为例 -## 1 简介 -图像分割是深度学习的常见任务。使用`deeplabv3p_xception65_humanseg`模型可以进行人像分割任务,关于`deeplabv3p_xception65_humanseg`的具体信息请参阅[deeplabv3p_xception65_humanseg](https://paddlepaddle.org.cn/hubdetail?name=deeplabv3p_xception65_humanseg&en_category=ImageSegmentation)。 +## 简介 +图像分割是深度学习的常见任务。使用`deeplabv3p_xception65_humanseg`模型可以进行人像分割任务,关于`deeplabv3p_xception65_humanseg`的具体信息请参见[deeplabv3p_xception65_humanseg](https://paddlepaddle.org.cn/hubdetail?name=deeplabv3p_xception65_humanseg&en_category=ImageSegmentation)。 -使用PaddleHub-Serving可以轻松部署一个在线图像分割服务API,可将此API接入自己的web网站进行在线图像分割,也可接入移动端应用程序,实现拍照分割等功能。 +使用PaddleHub Serving可以轻松部署一个在线图像分割服务API,可将此API接入自己的web网站进行在线图像分割,也可接入移动端应用程序,实现拍照分割等功能。 -下面就带领大家使用PaddleHub-Serving,通过简单几步部署一个目标检测服务。 +下面就带领大家使用PaddleHub Serving,通过简单几步部署一个目标检测服务。 -## 2 启动PaddleHub-Serving +## Step1:启动PaddleHub Serving 启动命令如下 ```shell $ hub serving start -m deeplabv3p_xception65_humanseg @@ -17,7 +17,7 @@ Loading deeplabv3p_xception65_humanseg successful. ``` 这样就完成了一个图像分割服务化API的部署,默认端口号为8866。 -## 3 测试图像分割在线API +## Step2:测试图像分割在线API 我们用来测试的样例图片为
@@ -30,7 +30,7 @@ Loading deeplabv3p_xception65_humanseg successful.
```python
files = [("image", file_1), ("image", file_2)]
```
-注意文件列表每个元素第一个参数为"image"。
+**NOTE:** 文件列表每个元素第一个参数为"image"。
代码如下
```python
@@ -38,6 +38,8 @@ files = [("image", file_1), ("image", file_2)]
>>> file_list = ["../img/girl.jpg"]
>>> files = [("image", (open(item, "rb"))) for item in file_list]
```
+
+## Step3:获取并验证结果
然后就可以发送请求到图像分割服务API,并得到结果,代码如下
```python
>>> # 指定检测方法为deeplabv3p_xception65_humanseg并发送post请求
diff --git a/demo/serving/serving/semantic_segmentation_deeplabv3p_xception65_humanseg/deeplabv3p_xception65_humanseg_serving_demo.py b/demo/serving/module_serving/semantic_segmentation_deeplabv3p_xception65_humanseg/deeplabv3p_xception65_humanseg_serving_demo.py
similarity index 100%
rename from demo/serving/serving/semantic_segmentation_deeplabv3p_xception65_humanseg/deeplabv3p_xception65_humanseg_serving_demo.py
rename to demo/serving/module_serving/semantic_segmentation_deeplabv3p_xception65_humanseg/deeplabv3p_xception65_humanseg_serving_demo.py
diff --git a/demo/serving/serving/semantic_segmentation_deeplabv3p_xception65_humanseg/output/girl.png b/demo/serving/module_serving/semantic_segmentation_deeplabv3p_xception65_humanseg/output/girl.png
similarity index 100%
rename from demo/serving/serving/semantic_segmentation_deeplabv3p_xception65_humanseg/output/girl.png
rename to demo/serving/module_serving/semantic_segmentation_deeplabv3p_xception65_humanseg/output/girl.png
diff --git a/demo/serving/serving/Sentiment_Analysis_senta_lstm/README.md b/demo/serving/module_serving/sentiment_analysis_senta_lstm/README.md
similarity index 84%
rename from demo/serving/serving/Sentiment_Analysis_senta_lstm/README.md
rename to demo/serving/module_serving/sentiment_analysis_senta_lstm/README.md
index be187024b153b51b7992912b83bcead3d39c3f5c..958f412e85134e7f176baf948684985f446db69e 100644
--- a/demo/serving/serving/Sentiment_Analysis_senta_lstm/README.md
+++ b/demo/serving/module_serving/sentiment_analysis_senta_lstm/README.md
@@ -1,12 +1,13 @@
# 部署情感分析服务-以senta_lstm为例
-## 1 简介
-情感分析针对带有主观描述的中文文本,可自动判断该文本的情感极性类别并给出相应的置信度。利用`senta_lstm`模型可以完成中文情感分析任务,关于`senta_lstm`的具体信息请参阅[senta_lstm](https://paddlepaddle.org.cn/hubdetail?name=senta_lstm&en_category=SentimentAnalysis)。
+## 简介
+情感分析针对带有主观描述的中文文本,可自动判断该文本的情感极性类别并给出相应的置信度。利用`senta_lstm`模型可以完成中文情感分析任务,关于`senta_lstm`的具体信息请参见[senta_lstm]
+(https://paddlepaddle.org.cn/hubdetail?name=senta_lstm&en_category=SentimentAnalysis)。
-使用PaddleHub-Serving可以部署一个在线情感分析服务,可以将此接口用于分析评论、智能客服等应用。
+使用PaddleHub Serving可以部署一个在线情感分析服务,可以将此接口用于分析评论、智能客服等应用。
-这里就带领大家使用PaddleHub-Serving,通过简单几步部署一个情感分析在线服务。
+这里就带领大家使用PaddleHub Serving,通过简单几步部署一个情感分析在线服务。
-## 2 启动PaddleHub-Serving
+## Step1:启动PaddleHub Serving
启动命令如下
```shell
$ hub serving start -m senta_lstm
@@ -17,14 +18,14 @@ Loading senta_lstm successful.
```
这样就完成了一个词法分析服务化API的部署,默认端口号为8866。
-## 3 测试词法分析在线API
+## Step2:测试词法分析在线API
在服务部署好之后,我们可以进行测试,用来测试的文本为`我不爱吃甜食`和`我喜欢躺在床上看电影`。
准备的数据格式为
```python
{"text": [text_1, text_2, ...]}
```
-注意字典的key为"text"。
+**NOTE:** 字典的key为"text"。
根据文本和数据格式,代码如下
```python
@@ -32,6 +33,8 @@ Loading senta_lstm successful.
>>> text_list = ["我不爱吃甜食", "我喜欢躺在床上看电影"]
>>> text = {"text": text_list}
```
+
+## Step3:获取并验证结果
接下来发送请求到词法分析API,并得到结果,代码如下
```python
# 指定预测方法为lac并发送post请求
diff --git a/demo/serving/serving/Sentiment_Analysis_senta_lstm/senta_lstm_serving_demo.py b/demo/serving/module_serving/sentiment_analysis_senta_lstm/senta_lstm_serving_demo.py
similarity index 100%
rename from demo/serving/serving/Sentiment_Analysis_senta_lstm/senta_lstm_serving_demo.py
rename to demo/serving/module_serving/sentiment_analysis_senta_lstm/senta_lstm_serving_demo.py
diff --git a/demo/serving/serving/text_censorship_porn_detection_lstm/README.md b/demo/serving/module_serving/text_censorship_porn_detection_lstm/README.md
similarity index 83%
rename from demo/serving/serving/text_censorship_porn_detection_lstm/README.md
rename to demo/serving/module_serving/text_censorship_porn_detection_lstm/README.md
index fcdbb36ad61972fa68762b071da3455cf6fe392a..0b273ae0df562bc9e6ad048d9f086696ce547283 100644
--- a/demo/serving/serving/text_censorship_porn_detection_lstm/README.md
+++ b/demo/serving/module_serving/text_censorship_porn_detection_lstm/README.md
@@ -1,12 +1,13 @@
# 部署文本审核服务-以porn_detection_lstm为例
-## 1 简介
-在网站建设等场景中经常需要对敏感信息进行鉴定和过滤,采用文本审核模型`porn_detection_lstm`可自动判别文本是否涉黄并给出相应的置信度,关于`porn_detection_lstm`的具体信息请参阅[porn_detection_lstm](https://paddlepaddle.org.cn/hubdetail?name=porn_detection_lstm&en_category=TextCensorship)
+## 简介
+在网站建设等场景中经常需要对敏感信息进行鉴定和过滤,采用文本审核模型`porn_detection_lstm`可自动判别文本是否涉黄并给出相应的置信度,关于`porn_detection_lstm`的具体信息请参见[porn_detection_lstm](https://paddlepaddle.org
+.cn/hubdetail?name=porn_detection_lstm&en_category=TextCensorship)
-使用PaddleHub-Serving可以部署一个在线文本审核服务,可以将此接口用于防止低俗交友、色情文本等应用。
+使用PaddleHub Serving可以部署一个在线文本审核服务,可以将此接口用于防止低俗交友、色情文本等应用。
-这里就带领大家使用PaddleHub-Serving,通过简单几步部署一个文本审核在线服务。
+这里就带领大家使用PaddleHub Serving,通过简单几步部署一个文本审核在线服务。
-## 2 启动PaddleHub-Serving
+## Step1:启动PaddleHub Serving
启动命令如下
```shell
$ hub serving start -m porn_detection_lstm
@@ -17,14 +18,14 @@ Loading porn_detection_lstm successful.
```
这样就完成了一个文本审核服务化API的部署,默认端口号为8866。
-## 3 测试文本审核在线API
+## Step2:测试文本审核在线API
在服务部署好之后,我们可以进行测试,用来测试的文本为`黄片下载`和`中国黄页`。
准备的数据格式为
```python
{"text": [text_1, text_2, ...]}
```
-注意字典的key为"text"。
+**NOTE:** 字典的key为"text"。
根据文本和数据格式,代码如下
```python
@@ -32,6 +33,7 @@ Loading porn_detection_lstm successful.
>>> text_list = ["黄片下载", "中国黄页"]
>>> text = {"text": text_list}
```
+## Step3:获取并验证结果
接下来发送请求到文本审核API,并得到结果,代码如下
```python
# 指定预测方法为lac并发送post请求
diff --git a/demo/serving/serving/text_censorship_porn_detection_lstm/porn_detection_lstm_serving_demo.py b/demo/serving/module_serving/text_censorship_porn_detection_lstm/porn_detection_lstm_serving_demo.py
similarity index 100%
rename from demo/serving/serving/text_censorship_porn_detection_lstm/porn_detection_lstm_serving_demo.py
rename to demo/serving/module_serving/text_censorship_porn_detection_lstm/porn_detection_lstm_serving_demo.py
diff --git a/demo/serving/serving/README.md b/demo/serving/serving/README.md
deleted file mode 100644
index 03df13d55ce4b3e7c5066dfa9ddbe24fa83b3f45..0000000000000000000000000000000000000000
--- a/demo/serving/serving/README.md
+++ /dev/null
@@ -1,230 +0,0 @@
-# Hub-Serving一键服务部署
-## 1 简介
-### 1.1 什么是PaddleHub-Serving一键服务部署
-PaddleHub-Serving是基于PaddleHub的一键模型服务部署工具,能够通过简单的Hub命令行工具轻松启动一个模型预测在线服务,开发者可利用PaddleHub-Serving快速得到一个预测服务API。
-
-### 1.2 支持模型
-目前PaddleHub-Serving支持PaddleHub所有可直接用于预测的模型进行服务部署,包括`lac`、`senta_bilstm`等nlp类模型,以及`yolov3_coco2017`、`vgg16_imagenet`等cv类模型,未来还将支持开发者使用自己finetune后的模型用于快捷服务部署。
-
-### 1.3 所需环境
-下表是使用PaddleHub-Serving的环境要求及注意事项。
-
-|项目|建议版本|说明|
-|:-:|:-:|:-:|
-|操作系统|Linux/Darwin/Windows|建议使用Linux或Darwin,对多线程启动方式支持性较好|
-|PaddleHub|>=1.4.0|无|
-|PaddlePaddle|>=1.6.1|若使用GPU计算,则对应使用PaddlePaddle-gpu版本|
-
-## 2 使用
-### 2.1 启动Hub-Serving服务端部署
-Hub-Serving有两种启动方式,分别是使用命令行命令启动,以及使用配置文件启动。
-
-#### 2.1.1 命令行命令启动
-启动命令
-```shell
-$ hub serving start --modules [Module1==Version1, Module2==Version2, ...] \
- --port XXXX \
- --use_gpu \
- --use_multiprocess
-```
-
-**参数**:
-
-|参数|用途|
-|-|-|
-|--modules/-m|Hub-Serving预安装模型,以多个Module==Version键值对的形式列出
-
-
-
-
+
+
+
+
*`当不指定Version时,默认选择最新版本`*|
-|--port/-p|服务端口,默认为8866|
-|--use_gpu|使用GPU进行预测,必须安装paddlepaddle-gpu|
-|--use_multiprocess|是否启用并发方式,默认为单进程方式|
-
-#### 2.1.2 配置文件启动
-启动命令
-```shell
-$ hub serving start --config config.json
-```
-`config.json`格式如下:
-
-```json
-{
- "modules_info": [
- {
- "module": "MODULE_NAME_1",
- "version": "MODULE_VERSION_1",
- "batch_size": "BATCH_SIZE_1"
- },
- {
- "module": "MODULE_NAME_2",
- "version": "MODULE_VERSION_2",
- "batch_size": "BATCH_SIZE_2"
- }
- ],
- "use_gpu": false,
- "port": 8866,
- "use_multiprocess": false
-}
-```
-
-**参数**:
-
-|参数|用途|
-|-|-|
-|--modules_info|Hub-Serving预安装模型,以字典列表形式列出,其中:
`module`为预测服务使用的模型名
`version`为预测模型的版本
`batch_size`为预测批次大小
-|--use_gpu|使用GPU进行预测,必须安装paddlepaddle-gpu|
-|--port/-p|服务端口,默认为8866|
-|--use_multiprocess|是否启用并发方式,默认为单进程方式,推荐多核CPU机器使用此方式|
-
-### 2.2 访问PaddleHub-Serving服务端
-
-在使用PaddleHub-Serving部署服务端的模型预测服务后,就可以在客户端访问预测接口以获取结果了,接口url格式为:
-
-http://0.0.0.0:8866/predict/\
-
-
-
-
lac分词结果
-
- ```python
- {
- "results": [
- {
- "tag": [
- "TIME",
- "v",
- "q",
- "n"
- ],
- "word": [
- "今天",
- "是",
- "个",
- "好日子"
- ]
- },
- {
- "tag": [
- "n",
- "v",
- "TIME",
- "v",
- "v"
- ],
- "word": [
- "天气预报",
- "说",
- "今天",
- "要",
- "下雨"
- ]
- }
- ]
- }
- ```
-
-
-
-获取其他PaddleHub-Serving的一键服务部署场景示例,可参阅下列demo
-
-* [图像分类-基于vgg11_imagent](serving/classification_vgg11_imagenet)
-
-该示例展示了利用vgg11_imagent完成图像分类服务化部署和在线预测,获取图像分类结果。
-
-* [图像生成-基于stgan_celeba](serving/GAN_stgan_celeba)
-
-该示例展示了利用stgan_celeba生成图像服务化部署和在线预测,获取指定风格的生成图像。
-
-* [文本审核-基于porn_detection_lstm](serving/text_censorship_porn_detection_lstm)
-
-该示例展示了利用porn_detection_lstm完成中文文本黄色敏感信息鉴定的服务化部署和在线预测,获取文本是否敏感及其置信度。
-
-* [中文词法分析-基于lac](serving/lexical_analysis_lac)
-
-该示例展示了利用lac完成中文文本分词服务化部署和在线预测,获取文本的分词结果,并可通过用户自定义词典干预分词结果。
-
-* [目标检测-基于yolov3_darknet53_coco2017](serving/object_detection_yolov3_darknet53_coco2017)
-
-该示例展示了利用yolov3_darknet53_coco2017完成目标检测服务化部署和在线预测,获取检测结果和覆盖识别框的图片。
-
-* [中文语义分析-基于simnet_bow](serving/semantic_model_simnet_bow)
-
-该示例展示了利用simnet_bow完成中文文本相似度检测服务化部署和在线预测,获取文本的相似程度。
-
-* [图像分割-基于deeplabv3p_xception65_humanseg](serving/semantic_segmentation_deeplabv3p_xception65_humanseg)
-
-该示例展示了利用deeplabv3p_xception65_humanseg完成图像分割服务化部署和在线预测,获取识别结果和分割后的图像。
-
-* [中文情感分析-基于simnet_bow](serving/semantic_model_simnet_bow)
-
-该示例展示了利用senta_lstm完成中文文本情感分析服务化部署和在线预测,获取文本的情感分析结果。
diff --git a/demo/serving/bert_service/README.md b/tutorial/bert_service.md
similarity index 81%
rename from demo/serving/bert_service/README.md
rename to tutorial/bert_service.md
index 192950128fedc63752424e2a711f641cb5a89bd4..90703dcf75ce6d4c9ab759a91b056851e822559c 100644
--- a/demo/serving/bert_service/README.md
+++ b/tutorial/bert_service.md
@@ -1,17 +1,17 @@
# Bert Service
-## 1. 简介
-### 1.1 什么是Bert Service
-`Bert Service`是基于Paddle Serving框架的快速部署模型远程计算服务方案,可将embedding过程通过调用API接口的方式实现,减少了对机器资源的依赖。使用PaddleHub可在服务器上一键部署`Bert Service`服务,在另外的普通机器上通过客户端接口即可轻松的获取文本对应的embedding数据。
+## 简介
+### 什么是Bert Service
+`Bert Service`是基于[Paddle Serving](https://github.com/PaddlePaddle/Serving)框架的快速部署模型远程计算服务方案,可将embedding过程通过调用API接口的方式实现,减少了对机器资源的依赖。使用PaddleHub可在服务器上一键部署`Bert Service`服务,在另外的普通机器上通过客户端接口即可轻松的获取文本对应的embedding数据。
整体流程图如下:
+
*`当不指定Version时,默认选择最新版本`*|
+|--port/-p|服务端口,默认为8866|
+|--use_gpu|使用GPU进行预测,必须安装paddlepaddle-gpu|
+|--use_multiprocess|是否启用并发方式,默认为单进程方式|
+
+#### 配置文件启动
+启动命令
+```shell
+$ hub serving start --config config.json
+```
+`config.json`格式如下:
+
+```json
+{
+ "modules_info": [
+ {
+ "module": "MODULE_NAME_1",
+ "version": "MODULE_VERSION_1",
+ "batch_size": "BATCH_SIZE_1"
+ },
+ {
+ "module": "MODULE_NAME_2",
+ "version": "MODULE_VERSION_2",
+ "batch_size": "BATCH_SIZE_2"
+ }
+ ],
+ "use_gpu": false,
+ "port": 8866,
+ "use_multiprocess": false
+}
+```
+
+**参数**:
+
+|参数|用途|
+|-|-|
+|--modules_info|Hub-Serving预安装模型,以字典列表形式列出,其中:
`module`为预测服务使用的模型名
`version`为预测模型的版本
`batch_size`为预测批次大小
+|--use_gpu|使用GPU进行预测,必须安装paddlepaddle-gpu|
+|--port/-p|服务端口,默认为8866|
+|--use_multiprocess|是否启用并发方式,默认为单进程方式,推荐多核CPU机器使用此方式|
+
+### Step2:访问服务端
+
+在使用PaddleHub Serving部署服务端的模型预测服务后,就可以在客户端访问预测接口以获取结果了,接口url格式为:
+
+http://0.0.0.0:8866/predict/
+
+
+
+