From 1471144c89445d49c7d819f766eed2d5eeb2a8ea Mon Sep 17 00:00:00 2001 From: Jiawei Wang Date: Mon, 30 Mar 2020 20:46:57 +0800 Subject: [PATCH] Update README_CN.md --- README_CN.md | 139 +++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 125 insertions(+), 14 deletions(-) diff --git a/README_CN.md b/README_CN.md index 106aac6e..2ee4c3bf 100644 --- a/README_CN.md +++ b/README_CN.md @@ -38,12 +38,42 @@ wget --no-check-certificate https://paddle-serving.bj.bcebos.com/uci_housing.tar tar -xzf uci_housing.tar.gz ``` -Paddle Serving provides HTTP and RPC based service for users to access -Paddle Serving 提供了 HTTP 和 RPC 的 +Paddle Serving 为用户提供了基于 HTTP 和 RPC 的服务 -Python客户端请求 + +### HTTP服务 + +Paddle Serving提供了一个名为`paddle_serving_server.serve`的内置python模块,可以使用单行命令启动RPC服务或HTTP服务。如果我们指定参数`--name uci`,则意味着我们将拥有一个HTTP服务,其URL为$IP:$PORT/uci/prediction`。 + +``` shell +python -m paddle_serving_server.serve --model uci_housing_model --thread 10 --port 9292 --name uci +``` +
+ +| Argument | Type | Default | Description | +|--------------|------|-----------|--------------------------------| +| `thread` | int | `4` | Concurrency of current service | +| `port` | int | `9292` | Exposed port of current service to users| +| `name` | str | `""` | Service name, can be used to generate HTTP request url | +| `model` | str | `""` | Path of paddle model directory to be served | + +我们使用 `curl` 命令来发送HTTP POST请求给刚刚启动的服务。用户也可以调用python库来发送HTTP POST请求,请参考英文文档 [requests](https://requests.readthedocs.io/en/master/)。 +
+ +``` shell +curl -H "Content-Type:application/json" -X POST -d '{"x": [0.0137, -0.1136, 0.2553, -0.0692, 0.0582, -0.0727, -0.1583, -0.0584, 0.6283, 0.4919, 0.1856, 0.0795, -0.0332], "fetch":["price"]}' http://127.0.0.1:9292/uci/prediction +``` + +### RPC service + +用户还可以使用`paddle_serving_server.serve`启动rpc服务。 尽管用户需要基于Paddle Serving的python客户端API进行一些开发,但是RPC服务通常比HTTP服务更快。需要指出的是这里我们没有指定`--name`。 + +``` shell +python -m paddle_serving_server.serve --model uci_housing_model --thread 10 --port 9292 +``` ``` python +# A user can visit rpc service through paddle_serving_client API from paddle_serving_client import Client client = Client() @@ -55,24 +85,105 @@ fetch_map = client.predict(feed={"x": data}, fetch=["price"]) print(fetch_map) ``` +在这里,`client.predict`函数具有两个参数。 `feed`是带有模型输入变量别名和值的`python dict`。 `fetch`被要从服务器返回的预测变量赋值。 在该示例中,在训练过程中保存可服务模型时,被赋值的tensor名为`"x"`和`"price"`。 + +

Paddle Serving预装的服务

+ +

中文分词模型

+ +- **介绍**: +``` shell +本示例为中文分词HTTP服务一键部署 +``` + +- **下载服务包**: +``` shell +wget --no-check-certificate https://paddle-serving.bj.bcebos.com/lac/lac_model_jieba_web.tar.gz +``` +- **启动web服务**: +``` shell +tar -xzf lac_model_jieba_web.tar.gz +python lac_web_service.py jieba_server_model/ lac_workdir 9292 +``` +- **客户端请求示例**: +``` shell +curl -H "Content-Type:application/json" -X POST -d '{"words": "我爱北京天安门", "fetch":["word_seg"]}' http://127.0.0.1:9292/lac/prediction +``` +- **返回结果示例**: +``` shell +{"word_seg":"我|爱|北京|天安门"},如未安装字符集则返回 {"word_seg":"\u6211|\u7231|\u5317\u4eac|\u5929\u5b89\u95e8"} +``` + +

图像分类模型

+ +- **介绍**: +``` shell +图像分类模型由Imagenet数据集训练而成,该服务会返回一个标签及其概率 +``` + +- **下载服务包**: +``` shell +wget --no-check-certificate https://paddle-serving.bj.bcebos.com/imagenet-example/imagenet_demo.tar.gz +``` +- **启动web服务**: +``` shell +tar -xzf imagenet_demo.tar.gz +python image_classification_service_demo.py resnet50_serving_model +``` +- **客户端请求示例**: + +

+
+ +
+

+ +``` shell +curl -H "Content-Type:application/json" -X POST -d '{"url": "https://paddle-serving.bj.bcebos.com/imagenet-example/daisy.jpg", "fetch": ["score"]}' http://127.0.0.1:9292/image/prediction +``` +- **返回结果示例**: +``` shell +{"label":"daisy","prob":0.9341403245925903} +``` + +

文档

+ +### 新手教程 +- [怎样保存用于Paddle Serving的模型?](doc/SAVE_CN.md) +- [端到端完成从训练到部署全流程](doc/TRAIN_TO_SERVICE_CN.md) +- [十分钟构建Bert-As-Service](doc/BERT_10_MINS_CN.md) + +### 开发者教程 +- [如何配置Server端的计算图?](doc/SERVER_DAG_CN.md) +- [如何开发一个新的General Op?](doc/NEW_OPERATOR_CN.md) +- [如何在Paddle Serving使用Go Client?](doc/IMDB_GO_CLIENT_CN.md) +- [如何编译PaddleServing](doc/COMPILE_CN.md) + +### 关于Paddle Serving性能 +- [如何测试Paddle Serving性能?](https://github.com/PaddlePaddle/Serving/tree/develop/python/examples/util) +- [CPU版Benchmarks](doc/BENCHMARKING.md) +- [GPU版Benchmarks](doc/GPU_BENCHMARKING.md) + +### FAQ +- [常见问答](doc/deprecated/FAQ.md) -## 文档 +### 设计文档 +- [Paddle Serving设计文档](doc/DESIGN_DOC_CN.md) -[开发文档](doc/DESIGN.md) +

社区

-[如何在服务器端配置本地Op?](doc/SERVER_DAG.md) +### Slack -[如何开发一个新的Op?](doc/NEW_OPERATOR.md) +想要同开发者和其他用户沟通吗?欢迎加入我们的 [Slack channel](https://paddleserving.slack.com/archives/CUBPKHKMJ) -[Golang 客户端](doc/IMDB_GO_CLIENT.md) +### 贡献代码 -[从源码编译](doc/COMPILE.md) +如果您想为Paddle Serving贡献代码,请参考 [Contribution Guidelines](doc/CONTRIBUTE.md) -[常见问答](doc/FAQ.md) +### 反馈 -## 加入社区 -如果您想要联系其他用户和开发者,欢迎加入我们的 [Slack channel](https://paddleserving.slack.com/archives/CUBPKHKMJ) +如有任何反馈或是bug,请在 [GitHub Issue](https://github.com/PaddlePaddle/Serving/issues)提交 -## 如何贡献代码 +### License -如果您想要贡献代码给Paddle Serving,请参考[Contribution Guidelines](doc/CONTRIBUTE.md) +[Apache 2.0 License](https://github.com/PaddlePaddle/Serving/blob/develop/LICENSE) -- GitLab