Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
Serving
提交
a154e30d
S
Serving
项目概览
PaddlePaddle
/
Serving
大约 1 年 前同步成功
通知
186
Star
833
Fork
253
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
105
列表
看板
标记
里程碑
合并请求
10
Wiki
2
Wiki
分析
仓库
DevOps
项目成员
Pages
S
Serving
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
105
Issue
105
列表
看板
标记
里程碑
合并请求
10
合并请求
10
Pages
分析
分析
仓库分析
DevOps
Wiki
2
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
a154e30d
编写于
3月 30, 2020
作者:
J
Jiawei Wang
提交者:
GitHub
3月 30, 2020
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Update DESIGN_CN.md
上级
2e6aab53
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
17 addition
and
17 deletion
+17
-17
doc/DESIGN_CN.md
doc/DESIGN_CN.md
+17
-17
未找到文件。
doc/DESIGN_CN.md
浏览文件 @
a154e30d
...
...
@@ -4,7 +4,7 @@
## 1. 项目背景
PaddlePaddle是
公司开源的机器学习框架,广泛支持各种深度学习模型的定制化开发; Paddle s
erving是Paddle的在线预测部分,与Paddle模型训练环节无缝衔接,提供机器学习预测云服务。本文将从模型、服务、接入等层面,自底向上描述Paddle Serving设计方案。
PaddlePaddle是
百度开源的机器学习框架,广泛支持各种深度学习模型的定制化开发; Paddle S
erving是Paddle的在线预测部分,与Paddle模型训练环节无缝衔接,提供机器学习预测云服务。本文将从模型、服务、接入等层面,自底向上描述Paddle Serving设计方案。
1.
模型是Paddle Serving预测的核心,包括模型数据和推理计算的管理;
2.
预测框架封装模型推理计算,对外提供RPC接口,对接不同上游;
...
...
@@ -14,23 +14,23 @@ PaddlePaddle是公司开源的机器学习框架,广泛支持各种深度学
## 2. 名词解释
-
baidu-rpc
百度官方开源RPC框架,支持多种常见通信协议,提供基于protobuf的自定义接口体验
-
Variant
Paddle Serving架构对一个最小预测集群的抽象,其特点是内部所有实例(副本)完全同质,逻辑上对应一个model的一个固定版本
-
Endpoint
多个Variant组成一个Endpoint,逻辑上看,Endpoint代表一个model,Endpoint内部的Variant代表不同的版本
-
OP
PaddlePaddle用来封装一种数值计算的算子,Paddle Serving用来表示一种基础的业务操作算子,核心接口是inference。OP通过配置其依赖的上游OP,将多个OP串联成一个workflow
-
Channel
一个OP所有请求级中间数据的抽象;OP之间通过Channel进行数据交互
-
Bus
对一个线程中所有channel的管理,以及根据DAG之间的DAG依赖图对OP和Channel两个集合间的访问关系进行调度
-
Stage
Workflow按照DAG描述的拓扑图中,属于同一个环节且可并行执行的OP集合
-
Node 由某个Op算子类结合参数配置组成的Op
算子实例,也是Workflow中的一个执行单元
-
Workflow
按照DAG描述的拓扑,有序执行每个OP的inference接口
-
DAG/Workflow 由若干个相互依赖的Node组成,每个Node均可通过特定接口获得Request对象,节点Op
通过依赖关系获得其前置Op的输出对象,最后一个Node的输出默认就是Response对象
-
Service 对一次pv
的请求封装,可配置若干条Workflow,彼此之间复用当前PV的Request对象,然后各自并行/串行执行,最后将Response写入对应的输出slot中;一个Paddle-serving进程可配置多套Service接口,上游根据ServiceName决定当前访问的Service接口。
-
**baidu-rpc**
:
百度官方开源RPC框架,支持多种常见通信协议,提供基于protobuf的自定义接口体验
-
**Variant**
:
Paddle Serving架构对一个最小预测集群的抽象,其特点是内部所有实例(副本)完全同质,逻辑上对应一个model的一个固定版本
-
**Endpoint**
:
多个Variant组成一个Endpoint,逻辑上看,Endpoint代表一个model,Endpoint内部的Variant代表不同的版本
-
**OP**
:
PaddlePaddle用来封装一种数值计算的算子,Paddle Serving用来表示一种基础的业务操作算子,核心接口是inference。OP通过配置其依赖的上游OP,将多个OP串联成一个workflow
-
**Channel**
:
一个OP所有请求级中间数据的抽象;OP之间通过Channel进行数据交互
-
**Bus**
:
对一个线程中所有channel的管理,以及根据DAG之间的DAG依赖图对OP和Channel两个集合间的访问关系进行调度
-
**Stage**
:
Workflow按照DAG描述的拓扑图中,属于同一个环节且可并行执行的OP集合
-
**Node**
: 由某个Op算子类结合参数配置组成的OP
算子实例,也是Workflow中的一个执行单元
-
**Workflow**
:
按照DAG描述的拓扑,有序执行每个OP的inference接口
-
**DAG/Workflow**
: 由若干个相互依赖的Node组成,每个Node均可通过特定接口获得Request对象,节点OP
通过依赖关系获得其前置Op的输出对象,最后一个Node的输出默认就是Response对象
-
**Service**
: 对一次PV
的请求封装,可配置若干条Workflow,彼此之间复用当前PV的Request对象,然后各自并行/串行执行,最后将Response写入对应的输出slot中;一个Paddle-serving进程可配置多套Service接口,上游根据ServiceName决定当前访问的Service接口。
## 3. Python Interface设计
### 3.1 核心目标:
一
套Paddle Serving的动态库,支持Paddle保存的通用模型的远程预估服务,通过Python Interface调用PaddleServing底层的各种功能。
完成一整
套Paddle Serving的动态库,支持Paddle保存的通用模型的远程预估服务,通过Python Interface调用PaddleServing底层的各种功能。
### 3.2 通用模型:
...
...
@@ -38,10 +38,10 @@ PaddlePaddle是公司开源的机器学习框架,广泛支持各种深度学
### 3.3 整体设计:
用户通过Python Client启动Client和Server,Python API有检查互联和待访问模型是否匹配的功能
Python API背后调用的是Paddle Serving实现的client和server对应功能的pybind,互传的信息通过RPC实现
Client Python API当前有两个简单的功能,load_inference_conf和predict,分别用来执行加载待预测的模型和预测
Server Python API主要负责加载预估模型,以及生成Paddle Serving需要的各种配置,包括engines,workflow,resource等
-
用户通过Python Client启动Client和Server,Python API有检查互联和待访问模型是否匹配的功能
-
Python API背后调用的是Paddle Serving实现的client和server对应功能的pybind,互传的信息通过RPC实现
-
Client Python API当前有两个简单的功能,load_inference_conf和predict,分别用来执行加载待预测的模型和预测
-
Server Python API主要负责加载预估模型,以及生成Paddle Serving需要的各种配置,包括engines,workflow,resource等
### 3.4 Server Inferface
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录