Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
Serving
提交
a3786b87
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看板
未验证
提交
a3786b87
编写于
5月 23, 2022
作者:
S
ShiningZhang
提交者:
GitHub
5月 23, 2022
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #1733 from ShiningZhang/dev-doc
update Offical_doc
上级
00d2d9d1
2a1eb8a5
变更
5
展开全部
显示空白变更内容
内联
并排
Showing
5 changed file
with
592 addition
and
0 deletion
+592
-0
doc/Offical_Docs/5-3_Serving_Configure_CN.md
doc/Offical_Docs/5-3_Serving_Configure_CN.md
+458
-0
doc/Offical_Docs/8-0_Cube_CN.md
doc/Offical_Docs/8-0_Cube_CN.md
+27
-0
doc/Offical_Docs/8-1_Cube_Architecture_CN.md
doc/Offical_Docs/8-1_Cube_Architecture_CN.md
+38
-0
doc/Offical_Docs/8-2_Cube_Compile_CN.md
doc/Offical_Docs/8-2_Cube_Compile_CN.md
+69
-0
doc/Offical_Docs/images/8-1_Cube_Architecture_CN_1.png
doc/Offical_Docs/images/8-1_Cube_Architecture_CN_1.png
+0
-0
未找到文件。
doc/Offical_Docs/5-3_Serving_Configure_CN.md
0 → 100644
浏览文件 @
a3786b87
此差异已折叠。
点击以展开。
doc/Offical_Docs/8-0_Cube_CN.md
0 → 100644
浏览文件 @
a3786b87
# 稀疏参数索引服务 Cube
在稀疏参数索引场景,如推荐、广告系统中通常会使用大规模 Embedding 表。由于在工业级的场景中,稀疏参数的规模非常大,达到 10^9 数量级。因此在一台机器上启动大规模稀疏参数预测是不实际的,因此我们引入百度多年来在稀疏参数索引领域的工业级产品 Cube,提供分布式的稀疏参数服务。
## Cube 工作原理
本章节介绍了 Cube 的基本使用方法和工作原理。请参考
[
Cube 架构
](
)
## Cube 编译安装
本章节介绍了 Cube 各个组件的编译以及安装方法。请参考
[
Cube 编译安装
](
)
## Cube 基础功能
本章节介绍了 Cube 的基础功能及使用方法。请参考
[
Cube 基础功能
](
)
## Cube 进阶功能
本章节介绍了 Cube 的高级功能使用方法。请参考
[
Cube 进阶功能
](
)
## 在 K8S 上使用 Cube
本章节介绍了在 K8S 平台上使用 Cube 的方法。请参考
[
在 K8S 上使用 Cube
](
)
## Cube 部署示例
本章节介绍了 Cube 的一个部署示例。请参考
[
Cube 部署示例
](
)
\ No newline at end of file
doc/Offical_Docs/8-1_Cube_Architecture_CN.md
0 → 100644
浏览文件 @
a3786b87
# 稀疏参数索引服务 Cube
在稀疏参数索引场景,如推荐、广告系统中通常会使用大规模 Embedding 表。由于在工业级的场景中,稀疏参数的规模非常大,达到 10^9 数量级。因此在一台机器上启动大规模稀疏参数预测是不实际的,因此我们引入百度多年来在稀疏参数索引领域的工业级产品 Cube,用于部署大规模的稀疏参数模型,支持模型的分布式管理和快速更新,并且支持 Paddle Serving 进行低延迟的批量访问。
<img
src=
"images/8-1_Cube_Architecture_CN_1.png"
>
## Cube 组件介绍
**一. cube-builder**
cube-builder 是把模型生成分片文件和版本管理的工具。由于稀疏参数文件往往是一个大文件,需要使用哈希函数将其分割为不同的分片,并使用分布式当中的每一个节点去加载不同的分片。与此同时,工业级的场景需要支持定期模型的配送和流式训练,因此对于模型的版本管理十分重要,这也是在训练保存模型时缺失的部分,因此 cube-builder 在生成分片的同时,也可以人为指定增加版本信息。
**二. cube-transfer**
cube-transfer 是调度管理服务。一方面 cube-transfer 会监测上游模型,当模型更新时进行模型下载。另一方面,会调用 cube-builder 将下载好的模型进行分片。而后与 cube-agent 进行对接完成分片文件配送。
**三. cube-agent**
cube-agent 是与cube-transfer 配套使用的调度管理服务。cube-agent 会接收来自 cube-transfer 传输来的分片文件。而后发送信号给 cube-server 对应接口完成配送操作。
**四. cube-server**
cube-server 基于 Cube 的 KV 能力,对外提供稀疏参数服务。它通过 brpc 提供高性能分布式查询服务,并支持 RestAPI 来进行远端调用。
**五. cube-cli**
cube-cli 是 cube-server 的客户端,用于请求 cube-server 进行对应稀疏参数查询功能。这部分组件已经被整合到 paddle serving 当中,当我们准备好 cube.conf 配置文件并在 server 的代码中指定kv_infer 相关的 op 时,cube-cli 就会在 server 端准备就绪。
## 配送过程
一次完整的配送流程如下:
-
将训练好的模型存放到 FileServer 中,并在传输完成后生成完成标志,这里 FileServer 可以使用 http 协议的文件传输服务;
-
cube-transfer 监测到完成标志后,从 FileServer 中下载对应模型文件;
-
cube-transfer 使用 cube-builder 工具对稀疏参数模型进行分片;
-
cube-transfer 向 cube-agent 进行文件配送;
-
cube-agent 向 cube-server 发送加载命令,通知 cube-server 热加载新的参数文件;
-
cube-server 响应 Paddle Serving 发送的查询请求。
\ No newline at end of file
doc/Offical_Docs/8-2_Cube_Compile_CN.md
0 → 100644
浏览文件 @
a3786b87
# Cube 编译
## 编译依赖
**以下是主要组件及其编译依赖**
| 组件 | 说明 |
| :--------------------------: | :-------------------------------: |
| Cube-Server | C++程序,提供高效快速的 RPC 协议 |
| Cube-Agent | Go 程序,需要 Go 环境支持 |
| Cube-Transfer | Go 程序,需要 Go 环境支持 |
| Cube-Builder | C++程序 |
| Cube-Cli | C++组件,已集成进 C++ server 中,不需单独编译 |
## 编译方法
推荐使用 Docker 编译,我们已经为您准备好了编译环境并配置好了上述编译依赖,详见
[
镜像环境
](
)。
**一. 设置 PYTHON 环境变量**
请按照如下,确定好需要编译的 Python 版本,设置对应的环境变量,一共需要设置三个环境变量,分别是
`PYTHON_INCLUDE_DIR`
,
`PYTHON_LIBRARIES`
,
`PYTHON_EXECUTABLE`
。以下我们以 python 3.7为例,介绍如何设置这三个环境变量。
```
# 请自行修改至自身路径
export PYTHON_INCLUDE_DIR=/usr/local/include/python3.7m/
export PYTHON_LIBRARIES=/usr/local/lib/x86_64-linux-gnu/libpython3.7m.so
export PYTHON_EXECUTABLE=/usr/local/bin/python3.7
export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin
python3.7 -m pip install -r python/requirements.txt
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct
go install github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway@v1.15.2
go install github.com/grpc-ecosystem/grpc-gateway/protoc-gen-swagger@v1.15.2
go install github.com/golang/protobuf/protoc-gen-go@v1.4.3
go install google.golang.org/grpc@v1.33.0
go env -w GO111MODULE=auto
```
环境变量的含义如下表所示。
| cmake 环境变量 | 含义 | 注意事项 | Docker 环境是否需要 |
|-----------------------|-------------------------------------|-------------------------------|--------------------|
| PYTHON_INCLUDE_DIR | Python.h 所在的目录,通常为
**
/include/python3.7/Python.h | 如果没有找到。说明 1)没有安装开发版本的 Python,需重新安装 2)权限不足无法查看相关系统目录。 | 是(/usr/local/include/python3.7) |
| PYTHON_LIBRARIES | libpython3.7.so 或 libpython3.7m.so 所在目录,通常为 /usr/local/lib | 如果没有找到。说明 1)没有安装开发版本的 Python,需重新安装 2)权限不足无法查看相关系统目录。 | 是(/usr/local/lib/x86_64-linux-gnu/libpython3.7m.so) |
| PYTHON_EXECUTABLE | python3.7 所在目录,通常为 /usr/local/bin | | 是(/usr/local/bin/python3.7) |
**二. 编译**
```
mkdir build_cube
cd build_cube
cmake -DPYTHON_INCLUDE_DIR=$PYTHON_INCLUDE_DIR \
-DPYTHON_LIBRARIES=$PYTHON_LIBRARIES \
-DPYTHON_EXECUTABLE=$PYTHON_EXECUTABLE \
-DSERVER=ON \
-DWITH_GPU=OFF ..
make -j
cd ..
```
最终我们会在
`build_cube/core/cube`
目录下看到 Cube 组件已经编译完成,其中:
-
Cube-Server:build_cube/core/cube/cube-server/cube
-
Cube-Agent:build_cube/core/cube/cube-agent/src/cube-agent
-
Cube-Transfer:build_cube/core/cube/cube-transfer/src/cube-transfer
-
Cube-Builder:build_cube/core/cube/cube-builder/cube-builder
\ No newline at end of file
doc/Offical_Docs/images/8-1_Cube_Architecture_CN_1.png
0 → 100644
浏览文件 @
a3786b87
754.3 KB
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录