开发算法模板 - 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、挂载目录:会为使用此模板的任务自动添加此挂载配置。比如添加4G(memory):/dev/shm 共享内存的配置

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,        # 是否可修改
        "condition":"",      # 显示的条件
        "sub_args": {        # 如果type是dict或者list对应下面的参数
        }
      },
      "attr2":{
       ...
      }
    },
    "group2":{
    }
}

6、环境变量:会为此类任务都添加这个环境变量。比如TASK_RESOURCE_GPU=0表示此类任务绝不占用gpu

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_distributed_train_k8s"
}

3.4. 其他注册参数

参照页面上的说明

开源模板贡献

需提交

  • 1、算法的代码
  • 2、算法的build.sh和Dockerfile
  • 3、算法的帮助文档,以及注册参数
  • 4、算法的示例代码