提交 3026a6b7 编写于 作者: G gongweibao

fix by comments

上级 9fbeb3e8
## 训练数据的存储和分发 ## 训练数据的存储和分发
### 概念解释
### 流程介绍 ### 流程介绍
生产环境中的训练数据集通常体积很大,并被存储在诸如Hadoop HDFS,Ceph,AWS S3之类的分布式存储之上。这些分布式存储服务通常会把数据切割成多个分片分布式的存储在多个节点之上。这样就可以在云端执行多种数据类计算任务,包括: 生产环境中的训练数据集通常体积很大,并被存储在诸如Hadoop HDFS,Ceph,AWS S3之类的分布式存储之上。这些分布式存储服务通常会把数据切割成多个分片分布式的存储在多个节点之上。这样就可以在云端执行多种数据类计算任务,包括:
* 数据预处理任务 * 数据预处理任务
* Paddle训练任务 * Paddle训练任务
* 在线模型预测服务 * 在线模型预测服务
<div style="align: center">
<img src="src/paddle-cloud-in-data-center.png" width="800"/>
</div>
<img src="src/paddle-cloud-in-data-center.png" width="500"/> 在上图中显示了在一个实际生产环境中的应用(人脸识别)的数据流图。生产环境的日志数据会通过实时流的方式(Kafka)和离线数据的方式(HDFS)存储,并在集群中运行多个分布式数据处理任务,比如流式数据处理(online data process),离线批处理(offline data process)完成数据的预处理,提供给paddle作为训练数据。用户也可以上传labeled data到分布式存储补充训练数据。在paddle之上运行的深度学习训练输出的模型会提供给在线人脸识别的应用使用。
在上图中显示了在一个实际生产环境中的应用(人脸识别)的数据流图。生产环境的日志数据会通过实时流的方式(Kafka)和离线数据的方式(HDFS)存储,并在集群中运行多个分布式数据处理任务,比如流式数据处理(online data process),离线批处理(offline data process)完成数据的预处理,提供给paddle作为训练数据。用于也可以上传labeled data到分布式存储补充训练数据。在paddle之上运行的深度学习训练输出的模型会提供给在线人脸识别的应用使用。
### 训练数据的存储
We select CephFS to store our data.
From the perspective of user program running in a Pod, it is mounted locally, as ### 训练数据存储
我们选择[CephFS](http://docs.ceph.com/docs/master/cephfs/)作为存储系统。
1. the home directory should have been mapped to the Pod-local directory `/home`, and - 无论是从[PFSClient](../file_manager/README.md)的角度,还是从[Pod](https://kubernetes.io/docs/concepts/workloads/pods/pod/)中运行任务的角度,统一用`/pfs/$DATACENTER/home/$USER`来访问用户自己的数据。
1. some shared directories, e.g., the pre-downloaded `paddle.v2.dataset` data, should have been mapped to the Pod-local directory `/common`. - `/pfs/$DATACENTER/Common`下存放公共数据集合
and from the perspective of our client tool `paddle`, it has to refer to files in the distributed filesystem in a special format, just like `/pfs/$DATACENTER/home/$USER/cifa/...`. <div style="align: center">
<img src="src/file_storage.png" width="700" align=center/>
</div>
### 文件预处理 ### 文件预处理
数据集可以被训练之前,文件需要预先被转换成PaddlePaddle集群内部的存储格式[RecordIO](https://github.com/PaddlePaddle/Paddle/issues/1947)。我们提供两个转换方式: 开始训练之前, 数据集需要预先被转换成PaddlePaddle分布式训练使用的存储格[RecordIO](https://github.com/PaddlePaddle/Paddle/issues/1947)。我们提供两个转换方式:
- 提供给用户本地转换的库,用户可以编写程序完成转换。 - 提供给用户本地转换的库,用户可以编写程序完成转换。
- 用户可以上传自己的数据集,在集群运行MapReduce job完成转换。 - 用户可以上传自己的数据集,在集群运行MapReduce job完成转换。
...@@ -136,5 +139,19 @@ userkey=wuyi-key.pem ...@@ -136,5 +139,19 @@ userkey=wuyi-key.pem
endpoint=datacenter2.paddlepaddle.org endpoint=datacenter2.paddlepaddle.org
``` ```
## TODO ## TODO
### 文件访问的权限
控制用户权限
- `Common`数据集合只读不能写
- 现在mount到本地以后读写权限
- 用户可以把自己的数据分享给别人
### 文件访问方式
不用mount的方式来访问数据,而是直接用API的接口远程访问
```
f = open('/pfs/datacenter/home/user/test1.dat')
```
### 支持用户自定义的数据预处理job ### 支持用户自定义的数据预处理job
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册