问题背景
清华数为大数据软件栈的算法库和模型库内部存储的算法各自包含了不同的参数设置,因此需要为这些算法动态生成参数设置的界面,动态参数框插件就是为这个目的而生的一个插件。动态参数插件可以根据目标对象的某个属性的取值,按照约定模式展示出一个临时性界面,用户填入具体取值以后,将取值的内容拼接成一个指定格式的字符串存储起来。
作用简介
例如:一个SSD机器学习算法,需要输入两个参数,分别为:bach_size和lr,在SSD算法对象的配置界面里,后台对应的取值如左边所示,当使用动态参数界面打开算法配置界面的时候,动态参数插件展示的样子如右边所示:
[ {"name": "batch_size", "type": "int", "default": 32}, {"name": "lr", "type": "float", "default": 0.0005} ]
基本概念
目标类,目标属性
动态参数插件是一个单对象属性插件,所以对应有一个目标类和目标属性,表示动态参数保存的位置
取值文本
取值文本是指一个具体的对象的属性,对应的动态参数的参数文本,例如上面例子中就是一个取值文本,取值文本最简单的形式是按名称值对的方式存储,例如:
[ {"name": "batch_size", "value": 32}, {"name": "lr", "value": 0.0005} ]
控件允许通过增加属性的方式,对取值文本进行扩展,以便指导动态参数插件展示的样式,例如:
[ {"name": "batch_size", "value": 33, "type": "int"}, {"name": "lr", "value": 0.01321, "type": "float"} ]
可增加的属性规范详见下文。
取值模板
如果不希望在取值文本中增加属性,可以在建模工具中增加取值模板,模板的基本格式按照以名称为单位配置,增加标准属性,例如:
[ {"name": "batch_size", "type": "int", "default": 32}, {"name": "lr", "type": "float", "default": 0.0005"} ]
存储格式
参数文本格式是指动态参数插件对应的对象属性在保存的时候,使用的数据格式,控件支持种格式:JSON数组。
布局方式
支持两种布局样式:水平浮动布局,垂直浮动布局
取值规范
动态参数插件的取值文本规范非常简单,分成必选属性和补充属性两类,可用的属性如下:
- 必选属性:动态参数控件可以识别的取值文本依照名称值对的方式组织,
- name:参数名称(name)
- value:参数取值(value)
- 补充属性:除了必选属性以外,可以在取值文本中添加补充属性以便修饰更丰富的展示语义,目前支持的补充属性如下
- type:数据类型,预计设计有如下的数据类型:
- int:整形
- long:长整形
- float:单精度
- double:双精度
- datetime:时间日期
- date:日期
- string:字符串
- default:缺省值,需要和数据类型匹配
- label:参数的显示名
- required:布尔值,表示对应参数是否必须填写
- tips:字符串,给用户的提示文本
- type:数据类型,预计设计有如下的数据类型:
展示优先级
- 对象取值文本>取值模板文本>系统缺省展示
在建模的时候用户可以选择填入一个符合取值规范的文本,用于在得到一个简单的动态参数文本时,展示更丰富的显示方式,如下面的表现:
取值模板
Modeler表单模板存储
[ {"name": "batch_size", "type": "int", "default": 32}, {"name": "lr", "type": "float", "default": 0.0005} ]
取值文本
App对象属性取值
[ {"name": "batch_size", "value": 21}, {"name": "lr", "value": 0.121} ]
展示效果
App对象属性表单