You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

README_CN.md 7.4 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  1. # MindSpore Serving
  2. [View English](./README.md)
  3. - [概述](#概述)
  4. - [安装部署](#安装部署)
  5. - [安装MindSpore Serving](#安装MindSpore-Serving)
  6. - [配置环境变量](#配置环境变量)
  7. - [部署MindSpore Serving](#部署MindSpore-Serving)
  8. - [快速入门](#快速入门)
  9. - [导出模型](#导出模型)
  10. - [部署Serving推理服务](#部署serving推理服务)
  11. - [执行推理](#执行推理)
  12. - [文档](#文档)
  13. - [开发者教程](#开发者教程)
  14. - [社区](#社区)
  15. - [治理](#治理)
  16. - [交流](#交流)
  17. - [贡献](#贡献)
  18. - [版本说明](#版本说明)
  19. - [许可证](#许可证)
  20. ## 概述
  21. MindSpore Serving是一个轻量级、高性能的服务模块,旨在帮助MindSpore开发者在生产环境中高效部署在线推理服务。当用户使用MindSpore完成模型训练后,导出MindSpore模型,即可使用MindSpore Serving创建该模型的推理服务。
  22. **MindSpore Serving架构:**
  23. 当前MindSpore Serving服务节点分为client,master和worker。client为用户节点,下发推理服务命令。执行机worker部署了模型服务。当前仅支持Ascend 310和Ascend 910,后续会逐步支持GPU和CPU场景。master节点用来管理所有的执行机worker及其部署的模型信息,并进行任务管理与分发。master和worker可以部署在一个进程中,也可以部署在不同进程中。
  24. <img src="docs/image/architecture.png" alt="MindSpore Architecture" width="600"/>
  25. **MindSpore Serving提供以下功能:**
  26. - 支持客户端gRPC和RESTful接口
  27. - 支持组装模型的前处理和后处理
  28. - 支持batch功能
  29. - 提供客户端python简易接口
  30. ## 安装部署
  31. MindSpore Serving依赖MindSpore训练推理框架,安装完[MindSpore](https://gitee.com/mindspore/mindspore#%E5%AE%89%E8%A3%85) ,再安装MindSpore Serving。
  32. ### 安装MindSpore Serving
  33. 使用pip命令安装,安装方式如下:
  34. **1、请从MindSpore Serving下载页面下载并安装whl包。**
  35. ```python
  36. pip install mindspore_serving-1.0.0-cp37-cp37m-linux_x86_64.whl
  37. ```
  38. **2、源码安装。**
  39. 下载[源码](https://gitee.com/mindspore/serving)。
  40. 方式一,使用已安装或编译的MindSpore包:
  41. ```shell
  42. sh build.sh -p $MINDSPORE_LIB_PATH
  43. ```
  44. $MINDSPORE_LIB_PATH为mindspore软件包的安装路径下的lib路径,例:softwarepath/mindspore/lib,该路径包含mindspore运行依赖的库文件。
  45. 方式二,编译Serving时编译配套的MindSpore包,需要配置MindSpore编译时的[环境变量](https://gitee.com/mindspore/docs/blob/master/install/mindspore_ascend_install_source.md#配置环境变量) :
  46. ```shell
  47. # ascend 310
  48. sh build.sh -eacl
  49. # ascend 910
  50. sh build.sh -ed
  51. ```
  52. 编译完后,在output/目录下找到安装包进行安装:
  53. ```python
  54. pip install mindspore_serving-0.1.0-cp37-cp37m-linux_x86_64.whl
  55. ```
  56. ### 配置环境变量
  57. Asend 910环境上安装mindspore,需要完成[环境变量配置](https://gitee.com/mindspore/docs/blob/master/install/mindspore_ascend_install_pip.md#%E9%85%8D%E7%BD%AE%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F)。
  58. 运行MindSpore Serving,还需要增加额外mindspore软件包的安装路径下的lib路径到LD_LIBRARY_PATH。
  59. ```shell
  60. export LD_LIBRARY_PATH=$MINDSPORE_LIB_PATH:${LD_LIBRARY_PATH}
  61. ```
  62. ### 部署MindSpore Serving
  63. MindSpore Serving提供两种部署方式,用户可根据需要进行选择部署。
  64. **轻量级部署:**
  65. 服务端调用python接口直接启动推理进程(master和worker共进程),客户端直接连接推理服务后下发推理任务。
  66. 启动服务:
  67. ```python
  68. import os
  69. from mindspore_serving import master
  70. from mindspore_serving import worker
  71. servable_dir = os.path.abspath(".")
  72. worker.start_servable_in_master(servable_dir, "xxx", device_id=0)
  73. master.start_grpc_server("127.0.0.1", 5500)
  74. ```
  75. **集群部署:**
  76. 服务端由master进程和worker进程组成,master用来管理集群内所有的worker节点,并进行推理任务的分发。
  77. 启动worker:
  78. ```python
  79. import os
  80. from mindspore_serving import worker
  81. servable_dir = os.path.abspath(".")
  82. worker.start_servable(servable_dir, "lenet", device_id=0,
  83. master_ip="127.0.0.1", master_port=5500,
  84. host_ip="127.0.0.1", host_port=5600)
  85. ```
  86. 启动master:
  87. ```python
  88. from mindspore_serving import master
  89. master.start_grpc_server("127.0.0.1", 5500)
  90. ```
  91. 完成服务端部署后,即可启用客户端程序执行推理操作。
  92. ## 快速入门
  93. 以一个简单的Add网络为例,演示MindSpore Serving如何使用。
  94. ### 导出模型
  95. 使用[add_model.py](https://gitee.com/mindspore/serving/blob/master/mindspore_serving/example/add/export_model/add_model.py),构造一个只有Add算子的网络,并导出MindSpore推理部署模型。
  96. ```python
  97. python add_model.py
  98. ```
  99. 执行脚本,生成`tensor_add.mindir`文件,该模型的输入为两个shape为[2,2]的二维Tensor,输出结果是两个输入Tensor之和。
  100. ### 部署Serving推理服务
  101. 执行以下[python程序](https://gitee.com/mindspore/serving/blob/master/mindspore_serving/example/add/master_with_worker.py),启动服务:
  102. ```bash
  103. import os
  104. from mindspore_serving import master
  105. from mindspore_serving import worker
  106. def start():
  107. servable_dir = os.path.abspath(".")
  108. worker.start_servable_in_master(servable_dir, "add", device_id=0)
  109. master.start_grpc_server("127.0.0.1", 5500)
  110. ```
  111. 启动过程需要使用servable_dir路径下的模型文件和配置文件,文件目录结果如下图所示:
  112. <pre><font color="#268BD2"><b>add/</b></font>
  113. ├── <font color="#268BD2"><b>1</b></font>
  114. │   └── tensor_add.mindir
  115. └── servable_config.py
  116. </pre>
  117. 其中,模型文件为上一步网络生成的,即`tensor_add.mindir`文件。配置文件为[servable_config.py](https://gitee.com/mindspore/serving/blob/master/mindspore_serving/example/add/add/servable_config.py),其定义了模型的处理函数,包含前处理和后处理过程。
  118. 当服务端打印日志`Serving gRPC start success, listening on 0.0.0.0:5500`时,表示Serving服务已加载推理模型完毕。
  119. ### 执行推理
  120. 使用[client.py](https://gitee.com/mindspore/serving/blob/master/mindspore_serving/example/add/client.py),启动Python客户端。
  121. ```bash
  122. python client.py
  123. ```
  124. 显示如下返回值说明Serving服务已正确执行Add网络的推理。
  125. ```bash
  126. [{'y': array([[2. , 2.],
  127. [2., 2.]], dtype=float32)}]
  128. [{'y': array([[2. , 2.],
  129. [2., 2.]], dtype=float32)}]
  130. ```
  131. ## 文档
  132. ### 开发者教程
  133. - [如何使用python接口开发客户端?](docs/GRPC.md)
  134. - [如何启动Restful服务进行推理?](docs/RESTful.md)
  135. - [如何实现模型前处理和后处理?](docs/MODEL.md)
  136. 有关安装指南、教程和API的更多详细信息,请参阅[用户文档](https://gitee.com/mindspore/serving/docs)。
  137. ## 社区
  138. ### 治理
  139. 查看MindSpore如何进行[开放治理](https://gitee.com/mindspore/community/blob/master/governance.md)。
  140. ### 交流
  141. - [MindSpore Slack](https://join.slack.com/t/mindspore/shared_invite/zt-dgk65rli-3ex4xvS4wHX7UDmsQmfu8w) 开发者交流平台。
  142. - `#mindspore`IRC频道(仅用于会议记录)
  143. - 视频会议:待定
  144. - 邮件列表:<https://mailweb.mindspore.cn/postorius/lists>
  145. ## 贡献
  146. 欢迎参与贡献。
  147. ## 版本说明
  148. 版本说明请参阅[RELEASE](RELEASE.md)。
  149. ## 许可证
  150. [Apache License 2.0](LICENSE)

A lightweight and high-performance service module that helps MindSpore developers efficiently deploy online inference services in the production environment.