自定义任务模板 - tencentmusic/cube-studio GitHub Wiki

视频教程

job模板制作教程

1.job模板规范

1.1.模板目录结构

  
 -  job-template            # job模板合计
   - $job_template_name     # 自定义模板
     - src             # 项目代码
     - build.sh        # job镜像构建过程
     - Dockerfile      # 构建所需的Dockerfile
     - readme.md       # 使用方法,规定格式定义

可参照ray目录下的模板格式

1.2.关于构建:

1、 统一的构建脚本 sh job/$job_template_name/build.sh

2、 Dcokerfile文件定义镜像构建过程,构建路径为当前路径

1.3.关于代码:

不关注代码的实现,只要最终形成docker即可,镜像的输入参数统一为字符串

1.4.关于镜像

建议镜像的tag使用日期

ccr.ccs.tencentyun.com/cube-studio/$image_name:$image_tag

3.注册模板

3.1.模板注册入口

在 Cube Stdio页面上,训练->任务模板->添加按钮

3.2.注册仓库和镜像

在 Cube Stdio页面上,训练->仓库、镜像。先注册完仓库和镜像,再注册任务模板。

3.3 模板配置

1、模板的名称和描述:会显示在pipeline编排界面

2、模板版本: release版本的模板才会出现在pipeline编排界面

3、目录和启动命令:会覆盖Dockerfile中的启动目录和命令,比如Dockerfile中未定义启动命令,或多个模板使用同一个镜像时为了实现不同的功能配置不同的启动命令

4、挂载目录:会为使用此模板的任务自动添加此挂载配置。比如

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成文件夹

5、启动参数编写实例

{
    "group1":{               # 属性分组,仅做web显示使用
       "attr1":{             # 属性名
        "type":"str",        # int,str,text,bool,enum,float,multiple,date,datetime,file,dict,list
        "item_type": "",     # 在type为enum,multiple,list时每个子属性的类型
        "label":"属性1",      # 中文名
        "require":1,         # 是否必须
        "choice":[],         # type为enum/multiple时,可选值
        "range":"$min,$max", # 最小最大取值,在int,float时使用,包含$min,但是不包含$max
        "default":"",        # 默认值
        "placeholder":"",    # 输入提示内容
        "describe":"这里是这个字段的描述和备注",
        "editable":1        # 是否可修改
      },
      "attr2":{
       ...
      }
    },
    "group2":{
    }
}

6、环境变量:会为基于此模板的任务运行时均添加该环境变量。 同时可以通过一些特殊的环境变量来控制任务配置。

模板中特殊的环境变量

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卡

7、k8s账号:表示此类任务运行时所附带的k8s账号,主要是此类任务要启动一个分布式的pod集群,用来进行分布式数据处理或训练。

8、扩展:扩展是json格式,index用来控制在同一分组中,排序的位置,help_url用来表示此类模板的帮助文档

{
    "index": 1,
    "help_url": "https://github.com/tencentmusic/cube-studio/tree/master/job-template/job/pytorch"
}

3.4. 其他注册参数

参照页面上的说明