提交 0c989203 编写于 作者: S ShiningZhang

update doc

上级 d098a23c
......@@ -449,5 +449,10 @@ op:
**三. 进阶参数配置**
更多进阶参数配置介绍,如单机多卡推理、异构硬件、低精度推理等请参考[Pipeline Serving 典型示例]()
更多进阶参数配置介绍,可以参照下表:如单机多卡推理、异构硬件、低精度推理等请参考[Pipeline Serving 典型示例]()
| 特性 | 文档 |
| ---- | ---- |
| 单机多卡推理| [Pipeline Serving]() |
| 异构硬件| [Pipeline Serving]() |
| 低精度推理| [Pipeline Serving]() |
\ No newline at end of file
# 稀疏参数索引服务 Cube
在稀疏参数索引场景,如推荐、广告系统中通常会使用大规模 Embedding 表。由于在工业级的场景中,稀疏参数的规模非常大,达到 10^9 数量级。因此在一台机器上启动大规模稀疏参数预测是不实际的,因此我们引入百度多年来在稀疏参数索引领域的工业级产品 Cube,提供分布式的稀疏参数服务
在稀疏参数索引场景,如推荐、广告系统中通常会使用大规模 Embedding 表。由于在工业级的场景中,稀疏参数的规模非常大,达到 10^9 数量级。因此在一台机器上启动大规模稀疏参数预测是不实际的,因此我们引入百度多年来在稀疏参数索引领域的工业级产品 Cube,用于部署大规模的稀疏参数模型,支持模型的分布式管理和快速更新,并且支持 Paddle Serving 进行低延迟的批量访问
<img src="images/8-1_Cube_Architecture_CN_1.png">
......@@ -8,7 +8,7 @@
**一. cube-builder**
cube-builder 是把模型生成分片文件和版本管理的工具。由于 cube 是用于分布式的稀疏参数服务,对于分布式当中的每一个节点,需要加载不同的分片,然而生成的稀疏参数文件往往一个大文件,就需要用哈希函数将其分割为不同的分片。与此同时,工业级的场景需要支持定期模型的配送和流式训练,因此对于模型的版本管理十分重要,这也是在训练保存模型时缺失的部分,因此 cube-builder 在生成分片的同时,也可以人为指定增加版本信息。
cube-builder 是把模型生成分片文件和版本管理的工具。由于稀疏参数文件往往是一个大文件,需要使用哈希函数将其分割为不同的分片,并使用分布式当中的每一个节点去加载不同的分片。与此同时,工业级的场景需要支持定期模型的配送和流式训练,因此对于模型的版本管理十分重要,这也是在训练保存模型时缺失的部分,因此 cube-builder 在生成分片的同时,也可以人为指定增加版本信息。
**二. cube-transfer**
......@@ -30,7 +30,7 @@ cube-cli 是 cube-server 的客户端,用于请求 cube-server 进行对应稀
一次完整的配送流程如下:
- 将训练好的模型存放到 FileServer 中,并在传输完成后生成完成标志;
- 将训练好的模型存放到 FileServer 中,并在传输完成后生成完成标志,这里 FileServer 可以使用 http 协议的文件传输服务
- cube-transfer 监测到完成标志后,从 FileServer 中下载对应模型文件;
- cube-transfer 使用 cube-builder 工具对稀疏参数模型进行分片;
- cube-transfer 向 cube-agent 进行文件配送;
......
# Cube 编译
## 概述
**Cube 一共有 4 个组件.**
- Cube-Server: Cube-Server 是 C++ 程序,是 Cube 套件的核心,负责稀疏参数索引服务的查询。
- Cube-Agent: Cube-Agent 是一段 Go 程序,负责稀疏参数配送。
- Cube-Transfer: Cube-Transfer 是一段 Go 程序,负责接受上游原始稀疏参数模型,做分片后分发给各个 Cube-Agent。
- Cube-Builder: Cube-Builder 是一段 C++ 程序,负责被 Cube-Transfer 调用并按配置生成相关分片。
## 编译依赖
**以下是主要组件及其编译依赖**
- Cube-Server: Cube-Server 最重要的编译依赖是 Baidu-RPC,其提供高效快速的 RPC 协议。这个依赖库可以复用 Paddle-Serving 的配置。
- Cube-Agent: Cube-Agent 需要 Go 环境支持,需要按照[编译文档]()安装相关 Go 依赖库。
- Cube-Transfer: Cube-Transfer 需要 Go 环境支持,需要按照[编译文档]()安装相关 Go 依赖库。
- Cube-Builder: Cube-Builder 依赖关系较为简单,不需要提前准备依赖项。
| 组件 | 说明 |
| :--------------------------: | :-------------------------------: |
| Cube-Server | C++程序,提供高效快速的 RPC 协议 |
| Cube-Agent | Go 程序,需要 Go 环境支持 |
| Cube-Transfer | Go 程序,需要 Go 环境支持 |
| Cube-Builder | C++程序 |
| Cube-Cli | C++组件,已集成进 C++ server 中,不需单独编译 |
## 编译方法
......@@ -64,8 +58,12 @@ cmake -DPYTHON_INCLUDE_DIR=$PYTHON_INCLUDE_DIR \
-DPYTHON_EXECUTABLE=$PYTHON_EXECUTABLE \
-DSERVER=ON \
-DWITH_GPU=OFF ..
make -j20
make -j
cd ..
```
最终我们会在`build_cube/core/cube`目录下看到 Cube 组件已经编译完成。
\ No newline at end of file
最终我们会在`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
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册