add doc about admin/develop/module/example

This commit is contained in:
pengluan 2021-09-07 18:01:49 +08:00
parent ce4ead97c1
commit dec74e54db
7 changed files with 303 additions and 191 deletions

123
docs/admin.md Normal file
View File

@ -0,0 +1,123 @@
管理员管理注意事项:
# 权限管理
- oa登录开发。登录方式可通过project.py文件定义的方式自行修改或自行添加管理员专用接口。
- rbac的权限管理方式。所有菜单或者模块的增删改查以及所有的后端接口都是有权限控制的可以在Security中自由控制
- 用户登录后会自动创建以及绑定用户名同名的角色。同时绑定gamma角色加入public项目组
# 项目组->模板分类
expand字段
```bash
{
"index":2 # index 控制该分组下面的job模板在pipeline编排界面左侧的显示顺序
}
```
# 项目组->项目分组
### 跨k8s集群调度的支持
需要在config.py文件中配置CLUSTERS并通过ENVIRONMENT环境变量指定控制台所在的集群。其他集群为训练集群。
项目组/项目分组中可通过项目组的expand字段控制项目组的调度集群
{
"cluster": "dev"
}
### 机器划分项目组
机器通过label进行管理所有的调度机器由平台控制不由用户直接控制。
- 对于cpu的train/notebook/service会选择cpu=true的机器
- 对于gpu的train/notebook/service会选择gpu=true的机器
- 训练任务会选择train=true的机器
- notebook会选择notebook=true的机器
- 服务化会选择service=true的机器
- 不同项目的任务会选择对应org=xx的机器。默认为org=public
管理标注哪些机器属于哪些项目后可通过项目组的expand字段控制项目组的调度机器
{
"node_selector": "org=public"
}
# 在线开发->notebook
定时任务中配置了notebook的定时清理和提醒用户续期没有及时续期的notebook会被删除。容器消失后环境丢失
# 在线开发->镜像调试
在线调试镜像保存按钮会自动commit/push到仓库当晚也会自动释放
# 训练->仓库
仓库中的k8s hubsecret 以及账号密码在保存时会更新到配置的所有集群中的各个命名空间下。并且发生用户拉起pod的情况也会附带上用户配置的k8s hubsecret以及config.py中配置的公共k8s hubsecret。
建议仓库拉取秘钥均在config.py中全局配置
# 训练->任务模板
### 版本:
模板的release版本才能被用户看到
### 工作目录/启动命令:
如果配置,则会覆盖镜像的启动目录和启动命令
### 挂载目录:
会在task创建时添加模板的挂载项一般用户需要固定挂载的模板会配置该参数(比如docker in docker 需要 docker.socket)。目前支持hostpath/pvc/memory/configmap几种挂载的配置方式
```bash
kubeflow-user-workspace(pvc):/mnt pvc的挂载方式会自动在pvc下挂载个人子目录
/data/k8s/kubeflow/pipeline/workspace/xxxx(hostpath):/mnt 挂载主机目录的方式
4G(memory):/dev/shm 内存挂载为磁盘的书写方式
kubernetes-config(configmap):/root/.kube 挂载configmap成文件夹
```
### 环境变量:
会附加给每个使用该模板的task
模板中特殊的环境变量
```bash
NO_RESOURCE_CHECK=true 使用该模板的task不会进行资源配置的自动校验
TASK_RESOURCE_CPU=4 使用该模板的task 忽略用户的资源配置cpu固定配置资源为4核
TASK_RESOURCE_MEMORY=4G 使用该模板的task 忽略用户的资源配置mem固定配置资源为4G
TASK_RESOURCE_GPU=0 使用该模板的task 忽略用户的资源配置gpu固定配置资源为0卡
```
### k8s账号
为模板配置k8s账号主要为那些需要操控k8s集群的模板而设定的。比如临时分布式训练集群的launcher端
### 扩展
```bash
{
"index": 7, index控制在pipeline编排界面同一个模板分组中每个模板的显示顺序
"help_url": "http://xx.xx.xx.xx/xx" help_url 为pipeline编排界面每个模板的帮助文档的地址显示
}
```
# 训练->任务流
- 先调试单独的task再调试pipeline的原则。
- task包含debug/run/log/clear等功能通过run-id串联对应的pod和crd
- pipeline包含run/log/运行实例/定时调度记录/pod等功能。使用run-id串联所有的task
- 手动运行pipeline会先清空之前手动运行的pipeline实例workflow
- myapp/task/scheduler.py中会定时清理运行结束的pod避免pod堆积过多
- 在pieline正常运行10次以后定时任务会取其中真实使用的资源最大值再预留一定的空间动态的修改用户配置的资源项防止资源配置不合理而浪费算力
# 训练->定时调度记录
手动运行和定时运行同一个pipeline相互之间不干扰。

25
docs/develop.md Normal file
View File

@ -0,0 +1,25 @@
# 开发框架
平台控制端为fab框架可以参考https://github.com/tencentmusic/fab
# 登录方式/首页内容/消息推送
myapp/project.py中包含web首页的配置方式、登录的方式、推送消息的方式
# 定时任务的开发
启动配置config.py中CeleryConfig
代码开发myapp/tasks/schedules.py
# 监听crd变化
代码开发myapp/tools/watch_xx.py
# 数据库的更新迭代
myapp/migrations/versions
# 数据库结构和视图(增删改查界面)
myapp/models
myapp/views
# pipline编排界面前端
myapp/vision
# 权限管理的基础逻辑
myapp/security.py

View File

@ -10,13 +10,6 @@
ln -s /usr/bin/pip3 /usr/bin/pip
pip install pip --upgrade
# 容器内使用git clone
git clone [http://userName:password@](http://userName:password@/)链接
示例
git clone http://pengluan:xxxx@git.code.oa.com/tme-data-infra/dev.git
# ubuntu 容器基础工具的封装
RUN apt update
@ -72,64 +65,3 @@
cuda10.1-cuda10.0-cuda9.0-cudnn7.6
- ai.tencentmusic.com/tme-public/gpu:ubuntu18.04-python3.6-cuda10.1-cuda10.0-cuda9.0-cudnn7.6-base
### tlinux
- mirrors.tencent.com/star_library/tlinux-64bit-v2.2.20170418:latest
### python2.7
##### cuda
- mirrors.tencent.com/star_library/g-tlinux2.2-python2.7-cuda9.0-cudnn7.6:latest
- mirrors.tencent.com/star_library/g-tlinux2.2-python2.7-cuda10.0-cudnn7.4:latest
- mirrors.tencent.com/star_library/g-tlinux2.2-python2.7-cuda10.0-cudnn7.6:latest
- mirrors.tencent.com/star_library/g-tlinux2.2-python2.7-cuda10.1-cudnn7.6:latest
##### ttensorflow
- mirrors.tencent.com/star_library/g-tlinux2.2-python2.7-cuda10.1-cudnn7.6-nccl2.5.6-ttf1.15.2.1:latest
##### tensorflow
- mirrors.tencent.com/star_library/g-tlinux2.2-python2.7-cuda9.0-cudnn7.6-tf1.12:latest
- mirrors.tencent.com/star_library/g-tlinux2.2-python2.7-cuda10.0-cudnn7.4-tf1.13:latest
- mirrors.tencent.com/star_library/g-tlinux2.2-python2.7-cuda10.0-cudnn7.4-tf1.14:latest
- mirrors.tencent.com/star_library/g-tlinux2.2-python2.7-cuda10.0-cudnn7.6-tf1.15:latest
- mirrors.tencent.com/star_library/g-tlinux2.2-python2.7-cuda10.0-cudnn7.6-tf2.0:latest
- mirrors.tencent.com/star_library/g-tlinux2.2-python2.7-cuda10.1-cudnn7.6-tf2.1:latest
##### pytorch1.4
- mirrors.tencent.com/star_library/g-tlinux2.2-python2.7-cuda10.1-cudnn7.6-pytorch1.4-torchvision0.5:latest
##### horovod
- mirrors.tencent.com/star_library/g-tlinux2.2-python2.7-cuda9.0-cudnn7.6-tf1.12-openmpi4.0.3-nccl2.5.6-ofed4.6-horovod:latest
- mirrors.tencent.com/star_library/g-tlinux2.2-python2.7-cuda10.0-cudnn7.4-tf1.13-openmpi4.0.3-nccl2.5.6-ofed4.6-horovod:latest
- mirrors.tencent.com/star_library/g-tlinux2.2-python2.7-cuda10.0-cudnn7.4-tf1.14-openmpi4.0.3-nccl2.5.6-ofed4.6-horovod:latest
- mirrors.tencent.com/star_library/g-tlinux2.2-python2.7-cuda10.0-cudnn7.6-tf2.0-openmpi4.0.3-nccl2.5.6-ofed4.6-horovod:latest
- mirrors.tencent.com/star_library/g-tlinux2.2-python2.7-cuda10.1-cudnn7.6-tf2.1-openmpi4.0.3-nccl2.5.6-ofed4.6-horovod:latest
- mirrors.tencent.com/star_library/g-tlinux2.2-python2.7-cuda10.1-cudnn7.6-pytorch1.4-torchvision0.5-openmpi4.0.3-nccl2.5.6-ofed4.6-horovod:latest
### python3.6
##### cuda
- mirrors.tencent.com/star_library/g-tlinux2.2-python3.6-cuda9.0-cudnn7.6:latest
- mirrors.tencent.com/star_library/g-tlinux2.2-python3.6-cuda10.0-cudnn7.4:latest
- mirrors.tencent.com/star_library/g-tlinux2.2-python3.6-cuda10.0-cudnn7.6:latest
- mirrors.tencent.com/star_library/g-tlinux2.2-python3.6-cuda10.1-cudnn7.6:latest
##### cuda10.1-cuda10.0-cuda9.0-cudnn7.6
- csighub.tencentyun.com/tme-kubeflow/gpu:python3.6-cuda10.1-cuda10.0-cuda9.0-cudnn7.6-base
##### ttensorflow
- mirrors.tencent.com/star_library/g-tlinux2.2-python3.6-cuda10.1-cudnn7.6-nccl2.5.6-ttf1.15.2.1:latest
#### tensorflow
- mirrors.tencent.com/star_library/g-tlinux2.2-python3.6-cuda9.0-cudnn7.6-tf1.12:latest
- mirrors.tencent.com/star_library/g-tlinux2.2-python3.6-cuda10.0-cudnn7.4-tf1.13:latest
- mirrors.tencent.com/star_library/g-tlinux2.2-python3.6-cuda10.0-cudnn7.4-tf1.14:latest
- mirrors.tencent.com/star_library/g-tlinux2.2-python3.6-cuda10.0-cudnn7.6-tf1.15:latest
- mirrors.tencent.com/star_library/g-tlinux2.2-python3.6-cuda10.0-cudnn7.6-tf2.0:latest
- mirrors.tencent.com/star_library/g-tlinux2.2-python3.6-cuda10.1-cudnn7.6-tf2.1:latest
##### pytorch
- mirrors.tencent.com/star_library/g-tlinux2.2-python3.6-cuda10.1-cudnn7.6-pytorch1.4-torchvision0.5:latest
- mirrors.tencent.com/star_library/g-tlinux2.2-python3.6-cuda10.1-cudnn7.6-pytorch1.5-torchvision0.6:latest
- mirrors.tencent.com/star_library/g-tlinux2.2-python3.6-cuda10.1-cudnn7.6-pytorch1.6-torchvision0.7:latest
- mirrors.tencent.com/star_library/g-tlinux2.2-python3.6-cuda10.2-cudnn8.0-pytorch1.6-torchvision0.7:latest
- mirrors.tencent.com/star_library/g-tlinux2.2-python3.6-cuda10.2-cudnn8.0-pytorch1.5-torchvision0.6:latest
##### horovod
- mirrors.tencent.com/star_library/g-tlinux2.2-python3.6-cuda9.0-cudnn7.6-tf1.12-openmpi4.0.3-nccl2.5.6-ofed4.6-horovod:latest
- mirrors.tencent.com/star_library/g-tlinux2.2-python3.6-cuda10.0-cudnn7.4-tf1.13-openmpi4.0.3-nccl2.5.6-ofed4.6-horovod:latest
- mirrors.tencent.com/star_library/g-tlinux2.2-python3.6-cuda10.0-cudnn7.4-tf1.14-openmpi4.0.3-nccl2.5.6-ofed4.6-horovod:latest
- mirrors.tencent.com/star_library/g-tlinux2.2-python3.6-cuda10.0-cudnn7.6-tf2.0-openmpi4.0.3-nccl2.5.6-ofed4.6-horovod:latest
- mirrors.tencent.com/star_library/g-tlinux2.2-python3.6-cuda10.1-cudnn7.6-tf2.1-openmpi4.0.3-nccl2.5.6-ofed4.6-horovod:latest
- mirrors.tencent.com/star_library/g-tlinux2.2-python3.6-cuda10.1-cudnn7.6-pytorch1.4-torchvision0.5-openmpi4.0.3-nccl2.5.6-ofed4.6-horovod:latest

View File

@ -1,38 +0,0 @@
# 在线notebook开发
### notebook支持类型
1. Jupyter cpu/gpu
2. vscodecpu/gpu
### 支持功能
1. 代码开发/调试,上传/下载命令行git工蜂/github内网/外网tensorboard自主安装插件
### 添加notebook
路径:在线开发->notebook->添加
![](../pic/tapd_20424693_1630648630_29.png)
备注:
1. Running状态下方可进入
2. 无法进去时reset重新激活
3. notebook会自动挂载一下目录
- a个人工作目录到容器 /mnt/$username
- b个人归档目录到容器/archives/$username
### jupyter示例
![](../pic/tapd_20424693_1611142088_15.png)
### vscode示例
![](../pic/tapd_20424693_1615455976_85.png)
### 切换归档目录示例:
![](../pic/tapd_20424693_1619156218_75.png)
### tensorboard示例
进入到对应的日志目录再打开tensorboard按钮
![](../pic/tapd_20424693_1630381219_76.png)

View File

@ -1,69 +0,0 @@
# 配置/调试/定时运行pipeline
### 创建pipeline
路径:训练->任务流->新建
![](../pic/tapd_20424693_1630650436_41.png)
主要配置: 参考每个配置参数的描述
### 编排pipeline
![](../pic/tapd_20424693_1630651816_13.png)
task公共参数参考每个配置的描述
task的模板参数参考每个模板的链接教程文档
### 运行调试
##### task运行调试
使用task的run按钮和log按钮可单独调试一个task
![](../pic/tapd_20424693_1630652726_69.png)
##### pipeline运行调试
pipeline的运行按钮发起调度
![](../pic/tapd_20424693_1630652948_17.png)
##### pipeline日志效果
![](../pic/tapd_20424693_1606994509_86.png)
### pod查看示意图
![](../pic/tapd_20424693_1630652786_45.png)
pod效果
![](../pic/tapd_20424693_1630652346_97.png)
### 实例记录
![](../pic/tapd_20424693_1630652888_5.png)
调度实例记录。停止可以清除调度容器
![](../pic/tapd_20424693_1630652863_77.png)
### 定时调度
配置定时pipeline编辑界面
![](../pic/tapd_20424693_1630653430_19.png)
查看路径:训练-定时调度记录
![](../pic/tapd_20424693_1630567772_14.png)
字段说明执行时间为这个pipeline本次调度该发起的时间点
状态comed为调度配置已经产生。created为调度已经发起。
##### 操作说明
1、平台会根据pipeline的配置决定是否发起调度。
2、状态链接中可以看到本地调度发起的workflow的运行情况
3、日志链接中可以看到本地调度发起的日志

View File

@ -1,16 +1,11 @@
# 新手文档
### 平台地址:
http://kubeflow.tke.woa.com/
### 文档目录
# 文档目录
example
- notebook # 在线notebook使用
- job-template # 模板制作与使用
- pipeline: # 任务流使用
- images # 镜像制作 && 常用基础镜像
### 基础认识:
# 基础认识:
__容器__对于建模人员可以认为容器是一个轻量的虚拟机一个机器可以同时启动多个容器容器之间资源是隔离的。在平台上运行的任务最终都会以容器内进程的形式运行在实体机上。所有容器的/mnt目录下都是自己的个人工作目录容器重启后环境消失。
@ -24,23 +19,159 @@ __运行实例__任务流的一次运行。
__notebook__开启一个jupyter-notebook自动挂载个人工作目录。有jupyter、vscode两种模式
### 加入项目组
# 加入项目组
### 申请加入项目组
路径:项目组->项目分组oa联系creator将自己加入到项目组中
![](./pic/tapd_20424693_1630649794_35.png)
备注:
每个人自动都在public项目组中
可自行创建项目组
- 每个人自动都在public项目组中
- 可自行创建项目组
项目组控制调度集群(管理员学习)
### creator添加用户
路径:项目组->项目分组。编辑项目组添加组成员。creator角色的组成员可以添加其他用户进组
### 项目组控制调度集群(管理员学习)
平台支持跨集群调度。需要管理员创建集群并配置到系统配置后可通过项目组的expand字段控制项目组的调度集群
{
"cluster": "dev"
}
项目组控制调度机器(管理员学习)
### 项目组控制调度机器(管理员学习)
平台支持单集群中划分资源组。需要管理员配置不同机器所属的资源组后可通过项目组的expand字段控制项目组的调度机器
{
"node_selector": "org=public"
}
# 在线notebook开发
### notebook支持类型
1. Jupyter cpu/gpu
2. vscodecpu/gpu
### 支持功能
1. 代码开发/调试,上传/下载命令行git工蜂/github内网/外网tensorboard自主安装插件
### 添加notebook
路径:在线开发->notebook->添加
![](./pic/tapd_20424693_1630648630_29.png)
备注:
1. Running状态下方可进入
2. 无法进去时reset重新激活
3. notebook会自动挂载一下目录
- a个人工作目录到容器 /mnt/$username
- b个人归档目录到容器/archives/$username
### jupyter示例
![](./pic/tapd_20424693_1611142088_15.png)
### vscode示例
![](./pic/tapd_20424693_1615455976_85.png)
### 切换归档目录示例:
![](./pic/tapd_20424693_1619156218_75.png)
### tensorboard示例
进入到对应的日志目录再打开tensorboard按钮
![](./pic/tapd_20424693_1630381219_76.png)
# 在线构建镜像
![](./pic/tapd_20424693_1630748567_87.png)
### 常用基础镜像
### ubuntu
- ai.tencentmusic.com/tme-public/ubuntu-gpu:cuda10.1-cudnn7
- ai.tencentmusic.com/tme-public/ubuntu-gpu:cuda10.1-cudnn7-python3.6
- ai.tencentmusic.com/tme-public/ubuntu-gpu:cuda10.1-cudnn7-python3.7
- ai.tencentmusic.com/tme-public/ubuntu-gpu:cuda10.1-cudnn7-python3.8
- ai.tencentmusic.com/tme-public/gpu:ubuntu18.04-python3.6-cuda10.1-cuda10.0-cuda9.0-cudnn7.6-base
# 配置/调试/定时运行pipeline
### 创建pipeline
路径:训练->任务流->新建
![](./pic/tapd_20424693_1630650436_41.png)
主要配置: 参考每个配置参数的描述
### 编排pipeline
![](./pic/tapd_20424693_1630651816_13.png)
- task公共参数参考每个配置的描述
- task的模板参数参考每个模板的链接教程文档
### 运行调试
##### task运行调试
使用task的run按钮和log按钮可单独调试一个task
![](./pic/tapd_20424693_1630652726_69.png)
##### pipeline运行调试
pipeline的运行按钮发起调度
![](./pic/tapd_20424693_1630652948_17.png)
##### pipeline日志效果
![](./pic/tapd_20424693_1606994509_86.png)
### pod查看示意图
![](./pic/tapd_20424693_1630652786_45.png)
pod效果
![](./pic/tapd_20424693_1630652346_97.png)
### 实例记录
![](./pic/tapd_20424693_1630652888_5.png)
调度实例记录。停止可以清除调度容器
![](./pic/tapd_20424693_1630652863_77.png)
### 定时调度
配置定时pipeline编辑界面
![](./pic/tapd_20424693_1630653430_19.png)
查看路径:训练-定时调度记录
![](./pic/tapd_20424693_1630567772_14.png)
字段说明执行时间为这个pipeline本次调度该发起的时间点
状态comed为调度配置已经产生。created为调度已经发起。
##### 操作说明
1、平台会根据pipeline的配置决定是否发起调度。
2、状态链接中可以看到本地调度发起的workflow的运行情况
3、日志链接中可以看到本地调度发起的日志

8
docs/module.md Normal file
View File

@ -0,0 +1,8 @@
# 各pod功能
平台控制端为fab框架可以参考https://github.com/tencentmusic/fab
- deploy.yaml为前后端服务的容器
- deploy-schedule.yaml为产生平台celery任务的pod(非pipeline任务)
- deploy-worker.yaml为执行平台celery任务的pod(非pipeline任务)
- deploy-watch.yaml为监听容器会监听平台中的crd的状态变化进而更新数据库和推送消息