Skip to content

Commit 75288dc

Browse files
committed
Merge project of paddle-operator and elasticserving
1 parent e57d849 commit 75288dc

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

71 files changed

+12811
-108
lines changed

README-zh_CN.md

Lines changed: 124 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,124 @@
1+
# Paddle Operator
2+
3+
[English](./README.md) | 简体中文
4+
5+
## 概述
6+
7+
Paddle Operator 通过提供 PaddleJob 自定义资源让您可以很方便地在 kubernetes 集群运行 [paddle](https://www.paddlepaddle.org.cn/) 分布式训练任务。
8+
9+
## 快速上手
10+
### 前提条件
11+
12+
* Kubernetes >= 1.8
13+
* kubectl
14+
15+
### 安装
16+
17+
配置好 Kubernetes 集群后, 您可以使用 *deploy* 文件夹下的 yaml 配置文件来安装 Paddle Operator。
18+
(对于 kubernetes v1.16+ 的集群使用 *deploy/v1* 的配置文件, kubernetes 1.15- 的集群使用 *deploy/v1beta1*)。
19+
20+
创建 PaddleJob 自定义资源,
21+
```shell
22+
kubectl apply -f https://raw.githubusercontent.com/PaddleFlow/paddle-operator/main/deploy/v1/crd.yaml
23+
```
24+
25+
创建成功后,可以通过以下命令来查看创建的自定义资源
26+
```shell
27+
kubectl get crd
28+
NAME CREATED AT
29+
paddlejobs.batch.paddlepaddle.org 2021-02-08T07:43:24Z
30+
```
31+
32+
然后可以通过下面的命令来部署 controller
33+
34+
```shell
35+
kubectl apply -f https://raw.githubusercontent.com/PaddleFlow/paddle-operator/main/deploy/v1/operator.yaml
36+
```
37+
38+
通过以下命令可以查看部署在集群中的 controller
39+
```shell
40+
kubectl -n paddle-system get pods
41+
NAME READY STATUS RESTARTS AGE
42+
paddle-controller-manager-698dd7b855-n65jr 1/1 Running 0 1m
43+
```
44+
45+
paddle ccontroller 默认运行在命名空间 *paddle-system* 下,并且仅管理该命名空间中的作业。
46+
如果您需要在不同的命名空间下运行 paddle controller,您可以编辑文件 `charts/paddle-operator/values.yaml` 并安装该 helm chart。
47+
此外您还可以通过编辑 kustomization 文件或直接修改 `deploy/v1/operator.yaml` 来更改默认的命名空间。
48+
49+
### 运行 PaddleJob 示例
50+
51+
通过下面的命令来部署您的第一个 PaddleJob
52+
```shell
53+
kubectl -n paddle-system apply -f https://raw.githubusercontent.com/PaddleFlow/paddle-operator/main/deploy/examples/wide_and_deep.yaml
54+
```
55+
56+
查看 pods 状态
57+
```shell
58+
kubectl -n paddle-system get pods
59+
```
60+
61+
查看 PaddleJob 状态
62+
```shell
63+
kubectl -n paddle-system get pdj
64+
```
65+
66+
### 使用 Volcano 来调度作业
67+
68+
安装前在文件 *deploy/v1/operator.yaml* 中添加如下参数,可以开启使用 Volcano 调度器
69+
```
70+
containers:
71+
- args:
72+
- --leader-elect
73+
- --namespace=paddle-system # watch this ns only
74+
- --scheduling=volcano # enable volcano
75+
command:
76+
- /manager
77+
```
78+
79+
然后请参考文件 *deploy/examples/wide_and_deep_volcano.yaml* 编写 PaddleJob Yaml 文件.
80+
81+
### 弹性训练
82+
83+
弹性训练的功能依赖有 Etcd,并且在 paddle controller 中设置类似下述参数。
84+
```
85+
--etcd-server=paddle-elastic-etcd.paddle-system.svc.cluster.local:2379 # enable elastic
86+
```
87+
88+
然后请参考文件 *deploy/elastic/resnet.yaml* 编写 PaddleJob Yaml 文件.
89+
90+
### 数据缓存与加速
91+
92+
受到 [Fluid](https://github.com/fluid-cloudnative/fluid) 项目的启发,Paddle Operator 里添加了样本缓存组件,旨在将远程的样本数据缓存到训练集群本地,加速 PaddleJob 作业的执行效率。
93+
94+
样本缓存组件目前支持的功能有:
95+
96+
- __加速训练任务摄取样本数据__
97+
98+
Paddle Operator的样本缓存组件使用 [JuiceFS](https://github.com/juicedata/juicefs) 作为缓存引擎,能够加速远程样本的访问速度,尤其是在海量小文件的场景模型训练任务能有显著的提升。
99+
100+
- __缓存亲和性调度__
101+
102+
创建好样本数据集后,缓存组件会自动的将样本数据预热到训练集群中,当后续有训练任务需要使用这个样本集时,缓存组件能够将训练任务调度到有缓存的节点,大大缩短 PaddleJob 执行时间,一定程度也能提高 GPU 资源利用率。
103+
104+
- __支持多种数据管理作业__
105+
106+
缓存组件通过 SampleJob 自定义资源,为用户提供了多种数据集管理命令,包括将远程样本数据同步到缓存引擎的 sync 作业,用于数据预热的 warmup 作业,清理缓存数据的 clear 作业 和 淘汰历史数据的 rmr 作业。
107+
108+
更多关于样本缓存组件的信息请参考[扩展功能](./docs/zh_CN/ext-overview.md)
109+
110+
### 卸载
111+
112+
卸载 Paddle Operator 前,请确保命名空间 paddle-system 下的 PaddleJob 都被清理掉了。
113+
114+
```shell
115+
kubectl delete -f https://raw.githubusercontent.com/PaddleFlow/paddle-operator/main/deploy/v1/crd.yaml -f https://raw.githubusercontent.com/PaddleFlow/paddle-operator/main/deploy/v1/operator.yaml
116+
```
117+
118+
## 高级配置
119+
120+
您可以在 Makefile 文件中查看更多的设置,也可以 clone 该项目来进行修改。 如果您有任务问题或建议,欢迎联系我们。
121+
122+
## 更多资料
123+
124+
关于在 Kubernetes 集群使用 Paddle Operator 做分布式训练的更多示例可以参考 [FleetX](https://fleet-x.readthedocs.io/en/latest/paddle_fleet_rst/paddle_on_k8s.html),自定义 API 资源文档请查看[API docs](./docs/en/api_doc.md)

client/README.MD

Lines changed: 0 additions & 5 deletions
This file was deleted.

client/client.go

Lines changed: 0 additions & 93 deletions
This file was deleted.

0 commit comments

Comments
 (0)