任务模板使用 - tencentmusic/cube-studio GitHub Wiki

!!! 使用方法也可参考 job-template/job下对应模板中的 readme

基础命令

自定义镜像

用户可以创建自定义镜像的基础算力,使用自己的镜像和代码运行任务,debug单任务节点,确保模板任务可以正常运行并执行模板所具有的功能。

入参:
images:要调试的镜像
workdir:启动目录
command:启动命令

逻辑节点

用户可以创建逻辑节点和下游节点,通过逻辑节点的打印输出来控制下游执行的任务。比如下图中,上游节点为模型A及模型B,数据可同时过两个模型,然后对比两个模型的评估结果auc,根据判断条件来输出响应的内容。

输入图片说明

入参:
code:逻辑判断的代码

python节点

用户可以创建python节点,直接配置python代码来运行任务。有一些任务需要写的代码非常简短,几行可搞定,就不需要再封装一个镜像后拖拽使用了。

入参:
code:需要执行的python代码

数据预处理

drop-duplicate

drop_duplicate模板可以去除重复样本。

入参:
input_dataset_path:需要去重的样本路径,如'data/fin_data.csv'
save_dataset_path:去重之后结果保存的路径,如'data/fin_data_r.csv'

drop-missing

drop_missing模板可以删除缺失值过高的特征。

入参:
input_dataset_path:需要处理的样本路径,如'data/fin_data.csv'
save_dataset_path:处理之后结果保存的路径,如'data/fin_data_r.csv'
missing_ratio:门限值,比如设置0.3,表示缺失率>30%时删除该列

drop-stablize

drop-stablize模板可以删除值过于单一的特征。

入参:
input_dataset_path:需要处理的样本路径,如'data/fin_data.csv'
save_dataset_path:处理之后结果保存的路径,如'data/fin_data_r.csv'
stable_threshold:门限值,比如设置0.95,表示当该特征95%的值都集中在同一个值时,删除该列

fill-missing

fill-missing模板可以填充缺失值。

入参:
input_dataset_path:需要处理的样本路径,如'data/fin_data.csv'
save_dataset_path:处理之后结果保存的路径,如'data/fin_data_r.csv'
fill_type:mean表示用均值填充缺失值,median表示中位数填充,modes表示众数填充

one-hot

one-hot模板可以对枚举型特征做one-hot编码,转换成数值型变量。

入参:
input_dataset_path:需要处理的样本路径,如'data/fin_data.csv'
save_dataset_path:处理之后结果保存的路径,如'data/fin_data_r.csv'
categorical_cols:需要进行one-hot编码的列的列名,可以是多列,用英文逗号分隔

calculate_metric

calculate_metric可以计算数据统计量,比如每个特征的非空值个数、分位数、均值、方差等。

入参:
input_dataset_path:需要处理的样本路径,如'data/fin_data.csv'
metric_path:统计值结果保存的路径,如'data/fin_data_r.csv'

outlier-detection

outlier-detection可以做异常值检测。

入参:
input_dataset_path:需要处理的样本路径,如'data/fin_data.csv'
save_dataset_path:处理之后结果保存的路径,如'data/fin_data_r.csv'
detection_type:异常值检测的类型,stddev表示3倍标准差法,box_line表示箱线图法,Tukey表示Tukey方法,Z-score表示Z-score法
delete_or_not:是否删除检测出的异常值,yes表示删除异常值,no表示不删除

pca

pca模板可以做主成分分析,完成pca降维。

入参:
input_dataset_path:需要处理的样本路径,如'data/fin_data.csv'
save_dataset_path:处理之后结果保存的路径,如'data/fin_data_r.csv'
label_columns:目标向量的列名,可以有多列,用英文逗号分隔
feature_columns:特征向量的列名,可以有多列,用英文逗号分隔
dimension:降维到多少维

数据处理

discretization

特征离散化,有等宽、等频、聚类几种可选

入参: input_dataset_path:数据集来源,如"/mnt/admin/pipeline/data/data-test1.csv" save_dataset_path:输出数据集保存路径,如"/mnt/admin/pipeline/data/r.csv" params:特征工程参数配置,json格式

等宽离散化

等宽离散化的params配置示例:

[
    {
        "process_type":"width_dist",
        "col_name":"age",
        "col_map":{"age":"age1"},
        "bins":5,
        "keep":1
    }
]

--process_type表示处理类型,width_dist表示等宽离散化 --col_name表示需要处理的列的列名,可以有多列,用英文逗号分隔,不写表示处理所有列 --col_map表示需要重命名的列的列名,比如age重命名为age1 --bins表示每个特征离散化到几个区间 --keep表示是否要保留原始数据,如果为1,则原数据会加后缀_origin,拼接在离散化之后的数据前面

等频离散化

等宽频散化,即按分位数来做离散化,params配置示例:

[
    {
        "process_type":"freq_dist",
        "col_name":"age,duration",
        "col_map":{"age":"age1"},
        "bins":5,
        "keep":1
    }
]

--process_type表示处理类型,freq_dist表示等宽离散化 --col_name表示需要处理的列的列名,可以有多列,用英文逗号分隔,不写表示处理所有列 --col_map表示需要重命名的列的列名,比如age重命名为age1 --bins表示每个特征离散化到几个区间 --keep表示是否要保留原始数据,如果为1,则原数据会加后缀_origin,拼接在离散化之后的数据前面

聚类离散化

等宽频散化,即按分位数来做离散化,params配置示例:

[
    {
        "process_type":"kbinsdiscretizer",
        "col_name":"",
        "col_map":{},
        "encode":"ordinal",
        "strategy":"kmeans",
        "n_bins":4,
        "keep":1
    }
]

--process_type表示处理类型,kbinsdiscretizer表示k箱离散化,默认是kmeans聚类离散化 --col_name表示需要处理的列的列名,可以有多列,用英文逗号分隔,不写表示处理所有列 --col_map表示需要重命名的列的列名,比如age重命名为age1 --encode表示做离散化 --strategy表示通过kmeans做聚类离散化 --n_bins表示每个特征离散化到几个区间 --keep表示是否要保留原始数据,如果为1,则原数据会加后缀_origin,拼接在离散化之后的数据前面

standardize-normalize

标准化及正则化,有最大绝对值归一化、最大最小归一化等等。

入参: input_dataset_path:数据集来源,如"/mnt/admin/pipeline/data/data-test1.csv" save_dataset_path:输出数据集保存路径,如"/mnt/admin/pipeline/data/r.csv" params:特征工程参数配置,json格式

maxabsscaler

最大绝对值归一化,params配置示例:

[
    {
    "process_type":"maxabsscaler",
    "col_name":"",
    "col_map":{},
    "keep":0
    }
]

--process_type表示处理类型,maxabsscaler表示最大绝对值归一化 --col_name表示需要处理的列的列名,可以有多列,用英文逗号分隔,不写表示处理所有列 --col_map表示需要重命名的列的列名,比如age重命名为age1 --keep表示是否要保留原始数据,如果为1,则原数据会加后缀_origin,拼接在离散化之后的数据前面

minmaxscaler

最大最小值归一化,params配置示例:

[
    {
    "process_type":"minmaxscaler",
    "col_name":"",
    "col_map":{},
    "keep":0
    }
]

--process_type表示处理类型,minmaxscaler表示最大最小值归一化 --col_name表示需要处理的列的列名,可以有多列,用英文逗号分隔,不写表示处理所有列 --col_map表示需要重命名的列的列名,比如age重命名为age1 --keep表示是否要保留原始数据,如果为1,则原数据会加后缀_origin,拼接在离散化之后的数据前面

standardscaler

标准化,params配置示例:

[
    {
    "process_type":"standardscaler",
    "col_name":"",
    "col_map":{},
    "keep":0
    }
]

--process_type表示处理类型,standardscaler表示标准化 --col_name表示需要处理的列的列名,可以有多列,用英文逗号分隔,不写表示处理所有列 --col_map表示需要重命名的列的列名,比如age重命名为age1 --keep表示是否要保留原始数据,如果为1,则原数据会加后缀_origin,拼接在离散化之后的数据前面

normalizer

正则化,params配置示例:

[
    {
    "process_type":"normalizer",
    "col_name":"",
    "col_map":{},
    "keep":0
    }
]

--process_type表示处理类型,normalizer表示正则化 --col_name表示需要处理的列的列名,可以有多列,用英文逗号分隔,不写表示处理所有列 --col_map表示需要重命名的列的列名,比如age重命名为age1 --keep表示是否要保留原始数据,如果为1,则原数据会加后缀_origin,拼接在离散化之后的数据前面

z_score

z-score标准化,params配置示例:

[
    {
    "process_type":"z_score",
    "col_name":"",
    "col_map":{},
    "keep":0
    }
]

--process_type表示处理类型,z_score表示z_score标准化 --col_name表示需要处理的列的列名,可以有多列,用英文逗号分隔,不写表示处理所有列 --col_map表示需要重命名的列的列名,比如age重命名为age1 --keep表示是否要保留原始数据,如果为1,则原数据会加后缀_origin,拼接在离散化之后的数据前面

time_format

时间列格式化,params配置示例:

[
    {
    "process_type":"time_format",
    "col_name":"time1,time2,time3",
    "col_map":{}
    }
]

--process_type表示处理类型,time_format表示时间格式化 --col_name表示需要处理的列的列名,可以有多列,用英文逗号分隔,不写表示处理所有列 --col_map表示需要重命名的列的列名,比如age重命名为age1

sample

采样,包括随机采样、分层采样、过采样、欠采样等等。

入参: input_dataset_path:数据集来源,如"/mnt/admin/pipeline/data/data-test1.csv" save_dataset_path:输出数据集保存路径,如"/mnt/admin/pipeline/data/r.csv" params:特征工程参数配置,json格式

random_sample

随机采样,params配置示例:

[
    {
    "process_type":"random_sample",
    "ratio":0.5,
    "keep":0
    }
]

--process_type表示处理类型,random_sample表示随机采样 --ratio表示采样的比例,比如0.5表示随机采样50% --keep表示是否要保留原始数据,如果为1,则原数据会加后缀_origin,拼接在离散化之后的数据前面

weight_sample

加权采样,params配置示例:

[
    {
    "process_type":"weight_sample",
    "ratio":0.5,
    "weights_path":"/mnt/admin/pipeline/data/weight.csv",
    "keep":0
    }
]

--process_type表示处理类型,weight_sample表示加权采样 --ratio表示采样的比例,比如0.5表示随机采样50% --weights_path表示样本权重文件 --keep表示是否要保留原始数据,如果为1,则原数据会加后缀_origin,拼接在离散化之后的数据前面

level_sample

分层采样,params配置示例:

[
    {
    "process_type":"level_sample",
    "ratio":0.5,
    "level_path":"/mnt/admin/pipeline/data/level.csv",
    "keep":0
    }
]

--process_type表示处理类型,level_sample表示分层采样 --ratio表示采样的比例,比如0.5表示随机采样50% --level_path表示样本属于哪个分层文件 --keep表示是否要保留原始数据,如果为1,则原数据会加后缀_origin,拼接在离散化之后的数据前面

over_under_sample

过采样及欠采样,params配置示例:

[
    {
    "process_type":"over_under_sample",
    "col_y":"y",
    "type":"over_SMOTE",
    "keep":0
    }
]

--process_type表示处理类型,over_under_sample表示过采样或欠采样 --col_y表示目标列的名称 --type表示过采样或欠采样的类型,可选类型有over_random、over_SMOTE、over_ADASYN、over_BorderlineSMOTE、under_random、under_NearMiss、under_TomekLinks --keep表示是否要保留原始数据,如果为1,则原数据会加后缀_origin,拼接在离散化之后的数据前面

dimensionality-reduction

降维,包括pca降维和卡方降维。

入参: input_dataset_path:数据集来源,如"/mnt/admin/pipeline/data/data-test1.csv" save_dataset_path:输出数据集保存路径,如"/mnt/admin/pipeline/data/r.csv" params:特征工程参数配置,json格式

pca

过采样及欠采样,params配置示例:

[
    {
    "process_type":"pca",
    "col_name":"",
    "n_components":3,
    "col_map":{"age":"age1","duration":"duration2"},
    "prefix":"pca_",
    "keep":0
    }
]

--process_type表示处理类型,pca表示pca降维 --col_name表示需要处理的列的列名,可以有多列,用英文逗号分隔,不写表示处理所有列 --n_components表示选出几个主成分 --col_map表示需要重命名的列的列名,比如age重命名为age1 --prefix表示pca之后的列名前缀 --keep表示是否要保留原始数据,如果为1,则原数据会加后缀_origin,拼接在离散化之后的数据前面

chi_

卡方降维,params配置示例:

[
    {
    "process_type":"chi_",
    "col_name":"",
    "col_y":"y",
    "k":3
    }
]

--process_type表示处理类型,chi_表示卡方降维 --col_name表示需要处理的列的列名,可以有多列,用英文逗号分隔,不写表示处理所有列 --col_y表示目标列的名称 --k表示需要根据卡方值选出几列需要的特征列

data-split

数据拆分,包括列内拆分、列间拆分、行间拆分。

入参: input_dataset_path:数据集来源,如"/mnt/admin/pipeline/data/data-test1.csv" save_dataset_path:输出数据集保存路径,如"/mnt/admin/pipeline/data/r.csv" params:特征工程参数配置,json格式

split_column

列内拆分,拆分某列为'a-b'格式的列,拆为'a'和'b'两列,params配置示例:

[
    {
    "process_type":"split_column",
    "split_map":{"a":",","b":"|"},
    "prefix":""
    }
]

--process_type表示处理类型,split_column表示分列 --split_map表示哪一列用哪个分隔符来拆分,可以有多列 --prefix表示拆分后每列的前缀

split_data

[{'process_type':'split_data','col_split_map':{'r_a':'age,duration','r_b':'age,pdays'},'row_split_map':{'c':'(0:100)','d':'(99:1002)'},'split_outpath':'split_r/','overlap':'False'}] 列间或行间拆分,params配置示例:

[
    {
    "process_type":"split_data",
    "col_split_map":{"r_a":"age,duration","r_b":"age,pdays"},
    "row_split_map":{"c":"(0:100)","d":"(99:1002)"},
    "split_outpath":"split_r/"
    }
]

--process_type表示处理类型,split_data表示行列间拆分,拆成不同的文件 --col_split_map表示拆分后哪几列属于哪个文件,列名间用英文逗号分隔,"r_a":"age,duration"表示age和duration列属于文件r_a --row_split_map表示拆分后哪几行属于哪个文件,"c":"(0:100)"表示第1到100行属于文件c --split_outpath表示拆分后的文件存到哪个文件夹下

svd

奇异值分解,params配置示例:

[
    {
    "process_type":"svd",
    "col_name":"",
    "svd_outpath":"svd/"
    }
]

--process_type表示处理类型,svd表示奇异值分解 --col_name表示需要处理的列的列名,可以有多列,用英文逗号分隔,不写表示处理所有列 --svd_outpath表示分解后的文件存到哪个文件夹下

data-tranform

数据转换,包括boxcox转换、二值化、数据类型转换、根据函数转换等。

入参: input_dataset_path:数据集来源,如"/mnt/admin/pipeline/data/data-test1.csv" save_dataset_path:输出数据集保存路径,如"/mnt/admin/pipeline/data/r.csv" params:特征工程参数配置,json格式

boxcox

boxcox转换,只针对非负连续变量进行,params配置示例:

[
    {
    "process_type":"boxcox",
    "col_name":"age,duration",
    "col_map":{"age":"age1","duration":"duration2"},
    "keep":1
    }
]

--process_type表示处理类型,boxcox表示boxcox转换 --col_name表示需要处理的列的列名,可以有多列,用英文逗号分隔,不写表示处理所有列 --col_map表示需要重命名的列的列名,比如age重命名为age1 --keep表示是否要保留原始数据,如果为1,则原数据会加后缀_origin,拼接在离散化之后的数据前面

binarization

二值化,将特征转换为0或1,params配置示例:

[
    {
    "process_type":"binarization",
    "col_name":"age,duration",
    "col_map":{"age":"age1","duration":"duration2"},
    "threshold":0.4,
    "keep":1
    }
]

--process_type表示处理类型,boxcox表示boxcox转换 --col_name表示需要处理的列的列名,可以有多列,用英文逗号分隔,不写表示处理所有列 --col_map表示需要重命名的列的列名,比如age重命名为age1 --threshold表示转换门限,0.4表示小于0.4为0,大于0.4为1 --keep表示是否要保留原始数据,如果为1,则原数据会加后缀_origin,拼接在离散化之后的数据前面

dct

dct变换,params配置示例:

[
    {
    "process_type":"dct_transform",
    "col_name":"age,duration",
    "col_map":{"age":"age1","duration":"duration2"},
    "keep":1
    }
]

--process_type表示处理类型,dct表示dct变换 --col_name表示需要处理的列的列名,可以有多列,用英文逗号分隔,不写表示处理所有列 --col_map表示需要重命名的列的列名,比如age重命名为age1 --keep表示是否要保留原始数据,如果为1,则原数据会加后缀_origin,拼接在离散化之后的数据前面

func_transfer

根据函数转换,params配置示例:

[
    {
    "process_type":"func_transfer",
    "func_map":{"lambda x:x+1":"age,duration"}
    }
]

--process_type表示处理类型,func_transfer表示lambda函数转换 --func_map表示哪些列做什么转换,比如{"lambda x:x+1":"age,duration"}表示age和duration列每个值加1

ma

移动平均,params配置示例:

[
    {
    "process_type":"ma",
    "col_map":{},
    "time_col":"",
    "col_name":"age,duration",
    "window":3,
    "keep":0
    }
]

--process_type表示处理类型,ma表示对特征做移动平均 --col_map表示需要重命名的列的列名,比如age重命名为age1 --time_col表示时间列,若有时间列,依据时间列对数据做从前往后的排序后再做移动平均,若无,则直接对数据做移动平均 --col_name表示需要处理的列的列名,可以有多列,用英文逗号分隔,不写表示处理所有列 --window表示移动平均的窗口大小 --keep表示是否要保留原始数据,如果为1,则原数据会加后缀_origin,拼接在离散化之后的数据前面

type_transfer

数据类型转换,params配置示例:

[
    {
    "process_type":"type_transfer",
    "col_trans_map":{"sex":"to_str","family":"str_to_bool","education":"eval"}
    }
]

--process_type表示处理类型,type_transfer表示对特征做类型转换 --col_trans_map表示哪列需要做什么类型转换,可以转换的类型有str_to_int、str_to_float、str_to_bool、to_str、eval(字符串变为列表、字典、集合)

polynomialfeatures

多项式展开,params配置示例:

[
    {
    "process_type":"polynomialfeatures",
    "col_name":"",
    "col_map":{},
    "degree":2,
    "prefix":"expand_",
    "keep":0
    }
]

--process_type表示处理类型,polynomialfeatures表示多项式展开 --col_name表示需要处理的列的列名,可以有多列,用英文逗号分隔,不写表示处理所有列 --col_map表示需要重命名的列的列名,比如age重命名为age1 --degree表示展开的阶数 --prefix表示展开后列名的前缀,默认是expand_ --keep表示是否要保留原始数据,如果为1,则原数据会加后缀_origin,拼接在离散化之后的数据前面

objective-type-process

非数值型变量的处理,包括hash、根据统计量转换等

入参: input_dataset_path:数据集来源,如"/mnt/admin/pipeline/data/data-test1.csv" save_dataset_path:输出数据集保存路径,如"/mnt/admin/pipeline/data/r.csv" params:特征工程参数配置,json格式

featurehasher

对非数值型变量做hash,params配置示例:

[
    {
    "process_type":"featurehasher",
    "col_name":"",
    "col_map":{},
    "prefix":"hash_",
    "n_features":3,
    "keep":0
    }
]

--process_type表示处理类型,featurehasher表示对非数值型变量做hash --col_name表示需要处理的列的列名,可以有多列,用英文逗号分隔,不写表示处理所有列 --col_map表示需要重命名的列的列名,比如age重命名为age1 --prefix表示hash后列名的前缀,默认是hash_ --n_features表示hash的阶数 --keep表示是否要保留原始数据,如果为1,则原数据会加后缀_origin,拼接在离散化之后的数据前面

label_encoding

非数值型变量依据统计量或指定map做数值转换,params配置示例:

[
    {
    "process_type":"label_encoding",
    "col_name":"sex",
    "map":{"sex":{"f":1,"m":2}},
    "type":"order"
    }
]

--process_type表示处理类型,label_encoding表示对非数值型变量做数值转换 --col_name表示需要处理的列的列名,可以有多列,用英文逗号分隔,不写表示处理所有列 --map表示当type为order时,可以指定映射的map,比如{"sex":{"f":1,"m":2}},表示sex列的f转换为1,m转换为2,其余type不需要指定map,map为空即可 --type表示转换的类别,random表示随机映射,order表示可以根据用户指定的map来映射,counting表示把每个类别出现的次数映射为数值,target表示二分类中,每个类别映射为该类别y=1的个数

index-process

索引处理,比如增加索引、索引转列、列索引重命名

入参: input_dataset_path:数据集来源,如"/mnt/admin/pipeline/data/data-test1.csv" save_dataset_path:输出数据集保存路径,如"/mnt/admin/pipeline/data/r.csv" params:特征工程参数配置,json格式

col_rename

列名重命名,params配置示例:

[
    {
    "process_type":"col_rename",
    "col_map":{"age":"age1"},
    "keep":1
    }
]

--process_type表示处理类型,col_rename表示列名重命名 --col_map表示需要重命名的列的列名,比如age重命名为age1 --keep表示是否要保留原始数据,如果为1,则原数据会加后缀_origin,拼接在离散化之后的数据前面

index_to_col

将索引转换为列,params配置示例:

[
    {
    "process_type":"index_to_col",
    "index_name":"order",
    "to_str":"fase"
    }
]

--process_type表示处理类型,index_to_col表示将索引转换为列 --index_name表示索引转换为列之后的列名 --to_str表示转列后是否转为字符串型

add_index

[{'process_type':'add_index','index_path':'level.csv','save_index_path':'save_index_path.csv'}] 增加行索引,params配置示例:

[
    {
    "process_type":"add_index",
    "index_path":"/mnt/admin/pipeline/data/level.csv",
    "save_index_path":"save_index_path.csv"
    }
]

--process_type表示处理类型,add_index表示增加行索引 --index_path表示需要增加的行索引存放的位置 --save_index_path表示需要保存索引的数据结果的位置

sort

排序

入参: input_dataset_path:数据集来源,如"/mnt/admin/pipeline/data/data-test1.csv" save_dataset_path:输出数据集保存路径,如"/mnt/admin/pipeline/data/r.csv" params:特征工程参数配置,json格式

params配置示例:

[
    {
    "process_type":"sort",
    "col_name":"a,c",
    "col_map":{},
    "ascending":"False"
    }
]

--process_type表示处理类型,sort表示排序 --col_name表示根据哪几列来排序,多列间用英文逗号分隔 --col_map表示需要重命名的列的列名,比如age重命名为age1 --ascending为True表示升序,False表示降序

run-sql

在数据集上执行sql语句

入参: input_dataset_path:数据集来源,如"/mnt/admin/pipeline/data/data-test1.csv" save_dataset_path:输出数据集保存路径,如"/mnt/admin/pipeline/data/r.csv" params:特征工程参数配置,json格式

params配置示例:

[
    {
    "process_type":"runsql",
    "query":"select * from data where age>30"
    }
]

--process_type表示处理类型,runsql表示在数据集上执行sql语句 --query表示要执行的sql语句

union-join-data

合并数据集,union或join

入参: data:数据集来源,可以有多个表,表名用|分隔,如"/mnt/admin/pipeline/data/a.csv|/mnt/admin/pipeline/data/b.csv|/mnt/admin/pipeline/data/c.csv" merge_type:数据合并类型,有row_union/column_union/left_jon/right_join/inner_join/outer_join,分别表示行拼接、列拼接、根据指定的主键列做left_join等 ignore_index:合并时是否忽略索引,如果是自增索引,忽略索引会从头开始,如"True" join_columns:如果是join,需要指定此参数,当作主键用于连接 save_dataset_path:输出数据集保存路径

hadamard-multiply

hadamard乘积

入参: data1:数据来源1 data2:数据来源2 save_dataset_path:hadamard乘积结果保存路径

feature-importance

通过随机森林、逻辑回归、xgboost等模型计算特征重要性,还可以计算特征的iv值、互信息值、方差等

入参: model_path:如果要用已有模型来评估特征重要性,则输入模型的路径 method:logistic_regression|random_forest|xgb|iv|mutual_if|chi|variance,分别表示逻辑回归特征参数绝对值、随机森林特征重要性、xgboost特征重要性、iv值、互信息值、卡方值、方差(计算方差时先做了归一化) input_dataset_path:输入数据集的路径 col_name:需要计算重要性的列的列名,英文逗号分隔,不输入默认计算全部 target:目标变量列的列名,可以有多列,英文逗号分隔 save_dataset_path:输出所有特征的特征重要性等信息的保存路径

feature-combine

特征组合,用于衍生特征

入参: params:特征衍生参数配置 input_dataset_path:输入数据集文件路径 save_dataset_path:输出数据集文件路径

params示例: { "cross":"age,duration,campaign,emp_var_rate", "polynomial":"age,duration,campaign,emp_var_rate", "hashing":"age,duration,campaign,emp_var_rate", "aggregation":"age,duration,campaign,emp_var_rate", "statistics":"age,duration,campaign,emp_var_rate" }

params的key表示用什么方法做特征衍生,5种方法可选,cross表示特征相乘,polynomial表示多项式特征,hashing两列做hash,aggregation表示根据A列对B列做聚合之后得到的统计量作为组合特征,statistics表示两列均值做组合特征

params的value表示方法作用于哪些列,英文逗号分隔

特征工程

calculate-correlation

calculate-correlation模板可以做特征向量间的相关性计算。

入参:
input_dataset_path:需要处理的样本路径,如'data/fin_data.csv'
result_path:处理之后结果保存的路径,如'data/fin_data_r.csv'
corr_type:corr表示计算特征之间的相关系数矩阵
feature_columns:需要计算相关性的特征列,用英文逗号分隔

机器学习算法

random-forest

随机森林算法模板

入参:
train_dataset:训练数据集路径,如'data/fin_data_train.csv'
val_dataset:验证数据集名称,如'data/fin_data_val.csv'
feature_columns:特征列,英文逗号分隔
label_columns:标签列,英文逗号分隔
save_model_dir:模型保存的路径,如'model/',不用写到pkl级别,文件夹级别即可
inference_dataset:测试数据集路径,如'data/fin_data_test.csv'
model_params:模型的输入参数,如{"n_estimators": 300}

lr

逻辑回归算法模板

入参:
train_dataset:训练数据集路径,如'data/fin_data_train.csv'
val_dataset:验证数据集名称,如'data/fin_data_val.csv'
feature_columns:特征列,英文逗号分隔
label_columns:标签列,英文逗号分隔
save_model_dir:模型保存的路径,如'model/',不用写到pkl级别,文件夹级别即可
inference_dataset:测试数据集路径,如'data/fin_data_test.csv'
model_params:模型的输入参数,如{"C": 2,"fit_intercept": True}

lightgbm

lightgbm算法模板

入参:
train_dataset:训练数据集路径,如'data/fin_data_train.csv'
val_dataset:验证数据集名称,如'data/fin_data_val.csv'
feature_columns:特征列,英文逗号分隔
label_columns:标签列,英文逗号分隔
save_model_dir:模型保存的路径,如'model/',不用写到pkl级别,文件夹级别即可
inference_dataset:测试数据集路径,如'data/fin_data_test.csv'
model_params:模型的输入参数,如{"max_depth": 5,"reg_lambda": 2}

knn

knn算法模板

入参:
train_dataset:训练数据集路径,如'data/fin_data_train.csv'
val_dataset:验证数据集名称,如'data/fin_data_val.csv'
feature_columns:特征列,英文逗号分隔
label_columns:标签列,英文逗号分隔
save_model_dir:模型保存的路径,如'model/',不用写到pkl级别,文件夹级别即可
inference_dataset:测试数据集路径,如'data/fin_data_test.csv'
model_params:模型的输入参数,如{"n_neighbors": 200,"algorithm": "ball_tree"}

kmean

kmean算法模板

入参:
train_dataset:训练数据集路径,如'data/fin_data_train.csv'
val_dataset:验证数据集名称,如'data/fin_data_val.csv'
feature_columns:特征列,英文逗号分隔
label_columns:标签列,英文逗号分隔
save_model_dir:模型保存的路径,如'model/',不用写到pkl级别,文件夹级别即可
inference_dataset:测试数据集路径,如'data/fin_data_test.csv'
model_params:模型的输入参数,如{"n_clusters": 3,"max_iter": 200}

gbdt

gbdt算法模板

入参:
train_dataset:训练数据集路径,如'data/fin_data_train.csv'
val_dataset:验证数据集名称,如'data/fin_data_val.csv'
feature_columns:特征列,英文逗号分隔
label_columns:标签列,英文逗号分隔
save_model_dir:模型保存的路径,如'model/',不用写到pkl级别,文件夹级别即可
inference_dataset:测试数据集路径,如'data/fin_data_test.csv'
model_params:模型的输入参数,如{"n_estimators": 150,"learning_rate": 0.1}

decision-tree

决策树算法模板

入参:
train_dataset:训练数据集路径,如'data/fin_data_train.csv'
val_dataset:验证数据集名称,如'data/fin_data_val.csv'
feature_columns:特征列,英文逗号分隔
label_columns:标签列,英文逗号分隔
save_model_dir:模型保存的路径,如'model/',不用写到pkl级别,文件夹级别即可
inference_dataset:测试数据集路径,如'data/fin_data_test.csv'
model_params:模型的输入参数,如{"max_depth": 3,"min_samples_split": 5}

bayesian

朴素贝叶斯算法模板

入参:
train_dataset:训练数据集路径,如'data/fin_data_train.csv'
test_dataset:验证数据集名称,如'data/fin_data_val.csv'
save_model_dir:模型保存路径,不用写到pkl级别,文件夹级别即可
inference_dataset:测试数据集路径,如'data/fin_data_test.csv'

xgb

xgb单机训练模板

入参: train_dataset:训练数据集路径,如'data/fin_data_train.csv'
val_dataset:验证数据集名称,如'data/fin_data_val.csv'
feature_columns:特征列,英文逗号分隔
label_columns:标签列,英文逗号分隔
model_params:模型的输入参数,如{ "booster": "gbtree", "eta": 0.1, "gamma": 0, "max_depth": 6, "objective": "binary:logistic", "eval_metric": "auc" }
save_model_dir:模型保存的路径,如'model/',不用写到pkl级别,文件夹级别即可
inference_dataset:测试数据集路径,如'data/fin_data_test.csv'

adaboost

adaboost算法模板

入参:
train_dataset:训练数据集路径,如'data/fin_data_train.csv'
val_dataset:验证数据集名称,如'data/fin_data_val.csv'
feature_columns:特征列,英文逗号分隔
label_columns:标签列,英文逗号分隔
save_model_dir:模型保存的路径,如'model/',不用写到pkl级别,文件夹级别即可
inference_dataset:测试数据集路径,如'data/fin_data_test.csv'
model_params:模型的输入参数,如{"n_estimators": 100,"learning_rate": 0.05}

hyperparam-search

超惨搜索模板

入参:
command:运行算法模板的命令,比如python /mnt/admin/cube-studio/job-template/job/kmeans/launcher.py --save_model_dir /mnt/admin/pipeline/kmeans/ --train_dataset /mnt/admin/pipeline/data/data-test.csv --label_columns y --feature_columns age,duration,campaign,pdays,previous,emp_var_rate,cons_price_idx,cons_conf_idx,euribor3m,nr_employed
params:需要进行超惨搜索的超参数,如{"n_clusters": tune.grid_search([2,3,4]),"max_iter": tune.grid_search([50,100,200])}
outfile:超参搜索评估结果,mnt/admin/pipeline/kmeans/val_result.json
metric:超参搜索中的模型评估方式,如silhouette_avg_train,表示训练集的轮廓系数
mode:表示评估参数是越大越好还是越小越好,max表示越大越好,min表示越小越好 num_samples:超参搜索用的样本,默认1
result_save_path:输出结果地址,如'/mnt/admin/pipeline/ray_hyperparams/hyperparams_r_kmeans.csv'

ar

时间序列算法,AR

入参: train_dataset:训练数据集来源 feature_col:特征列,只能有一个列名 save_model_dir:模型相关输出文件保存的文件夹,到文件夹层面即可 time_col:时间列的列名 start:开始预测的位置 end:结束预测的位置 lag:AR算法的参数,窗口大小

arima

时间序列算法,arima

入参: train_dataset:训练数据集来源 feature_col:特征列,只能有一个列名 save_model_dir:模型相关输出文件保存的文件夹,到文件夹层面即可 time_col:时间列的列名 start:开始预测的位置 end:结束预测的位置 order:ARIMA算法的参数,阶数大小

rf-regression

随机森林回归模型

入参: train_dataset:训练数据集路径,如'data/fin_data_train.csv'
val_dataset:验证数据集名称,如'data/fin_data_val.csv'
feature_columns:特征列,英文逗号分隔
label_columns:标签列,英文逗号分隔
save_model_dir:模型保存的路径,如'model/',不用写到pkl级别,文件夹级别即可
inference_dataset:测试数据集路径,如'data/fin_data_test.csv'
model_params:模型的输入参数,如{"n_estimators": 300}

深度学习

tfjob

TensorFlow分布式训练模板

入参:
image:worker镜像,直接运行你代码的环境镜像、基础镜像,如“kubeflow/tf-mnist-with-summaries:latest”
working_dir:命令的启动目录,如“/mnt/admin/pipeline/example/tf/”
command:启动命令,如“python /var/tf_mnist/mnist_with_summaries.py”
num_worker:分布式训练worker的数目,如“2”

pytorchjob

pytorch分布式训练模板

入参:
image:worker镜像,直接运行你代码的环境镜像、基础镜像,如“ccr.ccs.tencentyun.com/cube-studio/ubuntu-gpu:cuda11.8.0-cudnn8-python3.9”
working_dir:命令的启动目录,如“/mnt/admin/pipeline/example/pytorch/”
command:启动命令,如“bash start.sh”
num_worker:分布式训练worker的数目,如“3”

mxnet

mxnet分布式训练模板

入参:
image:worker镜像,直接运行你代码的环境镜像,如“mxjob/mxnet:gpu”
working_dir:命令的启动目录,如“/mnt/admin/pipeline/example/mxnet/”
command:启动命令,如“bash start.sh”
num_worker:分布式训练worker的数目,如“1”
num_ps:分布式训练ps的数目,如“1”

paddlejob

paddle分布式训练模板

入参:
image:worker镜像,直接运行你代码的环境镜像,如“registry.baidubce.com/\paddlepaddle/paddle:2.4.0rc0-gpu-cuda11.2-cudnn8.1-trt8.0”
working_dir:命令的启动目录,如“/mnt/admin/pipeline/example/paddlejob/”
command:启动命令,如“python -m paddle.distributed.launch run_check”
num_worker:分布式训练worker的数目,如“2”
num_ps:分布式训练ps的数目,如“0”

mindspore

mindspore分布式训练模板

入参:
image:worker镜像,直接运行你代码的环境镜像,如“lyd911/mindspore-cpu-example:0.2.0”
working_dir:启动目录,如“/mnt/admin/pipeline/example/mindspore/”
command:启动命令,如“python /tmp/lenet.py”
num_worker:占用机器个数,如“3”

模型处理

model-evaluation

传统机器学习模型评估模板

入参:
true_dataset_path:真实数据集地址,如“/mnt/admin/pipeline/example/ml/train.csv”
true_label_column:真实数据集label列,如“y”
pred_dataset_path:预测数据集地址,如“/mnt/admin/pipeline/example/ml/inference_result.csv”
pred_label_column:预测数据集label列,如“y”
save_result_path:评估结果保存地址,如“/mnt/admin/pipeline/example/ml/evaluation.json”
eval_type:评估类型,如“分类-accuracy”
model_type:模型类型,如“classify”

模型转换

实现将PyTorch模型导出成ONNX格式

入参:
model-path:模型保存文件夹路径,文件夹中包括模型参数文件和config文件
onnx-path:onnx模型输出目录,必须为一个空文件夹,不存在会自动创建
framework:模型加载框架,如“pt”
supported-pipelines:支持的模型类型
opset:pytorch版本,ONNX转换中设置opset

模型服务化

model-offline-predict

支持模型弹性分布式推理

入参:
image:worker镜像,直接运行你代码的环境镜像基础镜像,如“ccr.ccs.tencentyun.com/cube-studio/ubuntu-gpu:cuda11.8.0-cudnn8-python3.9”
working_dir:启动目录,如“/mnt/admin/pipeline/example/offline-inference/”
command:环境安装和任务启动命令,如“bash start.sh”
num_worker:占用机器个数,如“3”

deploy-service

服务部署模板,将训练模型注册到推理服务管理模块并自动部署推理服务。

入参:
project_name:项目组名称,如“public”
label:推理服务描述,如“demo推理服务”
model_name:模型名
model_version:模型版本号,如“v2022.10.01.1”
model_path:模型地址
service_type:推理服务类型
images:推理服务镜像
working_dir:推理容器工作目录,个人工作目录/mnt/$username
command:推理容器启动命令
args:推理容器启动参数
env:推理容器环境变量
host:部署域名,留空自动生成
ports:推理容器暴露端口,如“80”
replicas:pod副本数,如“1”
resource_memory:每个pod占用内存,如“2G”
resource_cpu:每个pod占用cpu,如“2”
resource_gpu:每个pod占用gpu,如“0”
volume_mount:容器的挂载,支持pvc/hostpath/configmap三种形式,格式示例:$pvc_name1(pvc):/$container_path1,$hostpath1(hostpath):/$container_path2,注意pvc会自动挂载对应目录下的个人rtx子目录,如“kubeflow-user-workspace(pvc):/mnt”
metrics:请求指标采集,配置端口+url,示例:8080:/metrics
health:健康检查接口,使用http接口或者shell命令,示例:8080:/health或者 shell:python health.py

model-register

模型注册模板,将训练后的模型注册到模型管理中。

入参:
project_name:部署项目名,如“public”
model_name:模型名(a-z0-9-字符组成,最长54个字符),如“mnist”
model_version:模型版本号,如“{{ datetime.datetime.now().strftime('v%Y.%m.%d.1') }}”
model_path:模型地址,如“https://docker-76009.sz.gfp.tencent-cloud.com/github/cube-studio/inference/tf-mnist.tar.gz”
model_metric:模型指标,如“accuracy:0.8”
describe:模型描述,如“mnist模型”
framework:模型框架
inference_framework:推理框架

多媒体类模板

media-download

分布式媒体文件下载

入参:
num_worker:分布式任务的worker数目,如“3”
download_type:下载类型
input_file:下载信息文件地址,如“/mnt/admin/pipeline/example/media/video_url.txt”,url类型,每行格式:$url$local_path

video-image

分布式提取视频图片

入参:
num_workers:worker数量,如“3”
input_file:配置文件地址,每行格式:$local_video_path $des_img_dir $frame_rate,如“/mnt/admin/pipeline/example/media/video_image.txt”

video-audio

分布式提取视频音频

入参:
num_workers:worker数量,如“3”
input_file:配置文件地址,每行格式:$local_video_path $des_audio_path,如“/mnt/admin/pipeline/example/media/video_audio.txt”

分布式加速

horovod

horovod分布式训练模板

入参:
work_images:worker的运行镜像,如“horovod/horovod:0.20.0-tf2.3.0-torch1.6.0-mxnet1.5.0-py3.7-cpu”
working_dir:命令的启动目录,如“/mnt/admin/pipeline/example/horovod/”
command:训练启动命令,如“python /examples/tensorflow2_mnist.py”
num_worker:分布式worker的数目,如“2”