更新时间:2024-10-24 GMT+08:00

创建Workflow数据集版本发布节点

功能介绍

通过对ModelArts数据集能力进行封装,实现数据集的版本自动发布的功能。数据集版本发布节点主要用于将已存在的数据集或者标注任务进行版本发布,每个版本相当于数据的一个快照,可用于后续的数据溯源。主要应用场景如下:

  • 对于数据标注这种操作,可以在标注完成后自动帮助用户发布新的数据集版本,结合as_input的能力提供给后续节点使用。
  • 当模型训练需要更新数据时,可以使用数据集导入节点先导入新的数据,然后再通过该节点发布新的版本供后续节点使用。

属性总览

您可以使用ReleaseDatasetStep来构建数据集版本发布节点,ReleaseDatasetStep结构如下:

表1 ReleaseDatasetStep

属性

描述

是否必填

数据类型

name

数据集版本发布节点的名称,命名规范(只能包含英文字母、数字、下划线(_)、中划线(-),并且只能以英文字母开头,长度限制为64字符),一个Workflow里的两个step名称不能重复

str

inputs

数据集版本发布节点的输入列表

ReleaseDatasetInput或者ReleaseDatasetInput的列表

outputs

数据集版本发布节点的输出列表

ReleaseDatasetOutput或者ReleaseDatasetOutput的列表

title

title信息,主要用于前端的名称展示

str

description

数据集版本发布节点的描述信息

str

policy

节点执行的policy

StepPolicy

depend_steps

依赖的节点列表

Step或者Step的列表

表2 ReleaseDatasetInput

属性

描述

是否必填

数据类型

name

数据集版本发布节点的输入名称,命名规范(只能包含英文字母、数字、下划线(_)、中划线(-),并且只能以英文字母开头,长度限制为64字符)。同一个Step的输入名称不能重复

str

data

数据集版本发布节点的输入数据对象

数据集或标注任务相关对象,当前仅支持Dataset,DatasetConsumption,DatasetPlaceholder,LabelTask,LabelTaskPlaceholder,LabelTaskConsumption,DataConsumptionSelector

表3 ReleaseDatasetOutput

属性

描述

是否必填

数据类型

name

数据集版本发布节点的输出名称,命名规范(只能包含英文字母、数字、下划线(_)、中划线(-),并且只能以英文字母开头,长度限制为64字符)。同一个Step的输出名称不能重复

str

dataset_version_config

数据集版本发布相关配置信息

DatasetVersionConfig

表4 DatasetVersionConfig

属性

描述

是否必填

数据类型

version_name

数据集版本名称,推荐使用类似V001的格式,不填则默认从V001往上递增。

str或者Placeholder

version_format

版本格式,默认为"Default",也可支持"CarbonData"。

str

train_evaluate_sample_ratio

训练-验证集比例,默认值为"1.00"。取值范围为0-1.00, 例如"0.8"表示训练集比例为80%,验证集比例为20%。

str或者Placeholder

clear_hard_property

是否清除难例,默认为“True”。

bool或者Placeholder

remove_sample_usage

是否清除数据集已有的usage信息,默认为“True”。

bool或者Placeholder

label_task_type

标注任务的类型。当输入是数据集时,该字段必填,用来指定数据集版本的标注场景。输入是标注任务时该字段不用填写。

LabelTaskTypeEnum

支持以下几种类型:

  • IMAGE_CLASSIFICATION (图像分类)
  • OBJECT_DETECTION = 1 (物体检测)
  • IMAGE_SEGMENTATION (图像分割)
  • TEXT_CLASSIFICATION (文本分类)
  • NAMED_ENTITY_RECOGNITION (命名实体)
  • TEXT_TRIPLE (文本三元组)
  • AUDIO_CLASSIFICATION (声音分类)
  • SPEECH_CONTENT (语音内容)SPEECH_SEGMENTATION (语音分割)
  • TABLE (表格数据)
  • VIDEO_ANNOTATION (视频标注)

description

版本描述信息。

str

如果您没有特殊需求,则可直接使用内置的默认值,例如example = DatasetVersionConfig()

使用案例

场景一:基于数据集发布版本

使用场景:当数据集更新了数据时,可以通过该节点发布新的数据集版本供后续的节点使用。

from modelarts import workflow as wf
# 通过ReleaseDatasetStep将输入的数据集对象发布新的版本,输出带有版本信息的数据集对象

# 定义数据集对象
dataset = wf.data.DatasetPlaceholder(name="input_dataset")

# 定义训练验证切分比参数
train_ration = wf.Placeholder(name="placeholder_name", placeholder_type=wf.PlaceholderType.STR, default="0.8")

release_version = wf.steps.ReleaseDatasetStep(
    name="release_dataset", # 数据集发布节点的名称,命名规范(只能包含英文字母、数字、下划线(_)、中划线(-),并且只能以英文字母开头,长度限制为64字符),一个Workflow里的两个step名称不能重复
    title="数据集版本发布", # 标题信息,不填默认使用name值
    inputs=wf.steps.ReleaseDatasetInput(name="input_name", data=dataset), # ReleaseDatasetStep的输入,数据集对象在运行时配置;data字段也可使用wf.data.Dataset(dataset_name="dataset_name")表示
    outputs=wf.steps.ReleaseDatasetOutput(
        name="output_name", 
        dataset_version_config=wf.data.DatasetVersionConfig(
            label_task_type=wf.data.LabelTaskTypeEnum.IMAGE_CLASSIFICATION,  # 数据集发布版本时需要指定标注任务的类型
            train_evaluate_sample_ratio=train_ration # 数据集的训练验证切分比
            )
    ) # ReleaseDatasetStep的输出
)

workflow = wf.Workflow(
    name="dataset-release-demo",
    desc="this is a demo workflow",
    steps=[release_version]
)

场景二:基于标注任务发布版本

当标注任务更新了数据或者标注信息时,可以通过该节点发布新的数据集版本供后续的节点使用。

from modelarts import workflow as wf
# 通过ReleaseDatasetStep将输入的标注任务对象发布新的版本,输出带有版本信息的数据集对象

# 定义标注任务对象
label_task = wf.data.LabelTaskPlaceholder(name="label_task_placeholder_name")

# 定义训练验证切分比参数
train_ration = wf.Placeholder(name="placeholder_name", placeholder_type=wf.PlaceholderType.STR, default="0.8")

release_version = wf.steps.ReleaseDatasetStep(
    name="release_dataset", # 数据集发布节点的名称,命名规范(只能包含英文字母、数字、下划线(_)、中划线(-),并且只能以英文字母开头,长度限制为64字符),一个Workflow里的两个step名称不能重复
    title="数据集版本发布", # 标题信息,不填默认使用name值
    inputs=wf.steps.ReleaseDatasetInput(name="input_name", data=label_task), # ReleaseDatasetStep的输入,
标注任务对象在运行时配置;data字段也可使用wf.data.LabelTask(dataset_name="dataset_name", task_name="label_task_name")表示
    outputs=wf.steps.ReleaseDatasetOutput(name="output_name", dataset_version_config=wf.data.DatasetVersionConfig(train_evaluate_sample_ratio=train_ration)), # 数据集的训练验证切分比
)

workflow = wf.Workflow(
    name="dataset-release-demo",
    desc="this is a demo workflow",
    steps=[release_version]
)

场景三:基于数据集标注节点,构建数据集版本发布节点

使用场景:数据集标注节点的输出作为数据集版本发布节点的输入。

from modelarts import workflow as wf
# 通过ReleaseDatasetStep将输入的标注任务对象发布新的版本,输出带有版本信息的数据集对象

# 定义训练验证切分比参数
train_ration = wf.Placeholder(name="placeholder_name", placeholder_type=wf.PlaceholderType.STR, default="0.8")

release_version = wf.steps.ReleaseDatasetStep(
    name="release_dataset", # 数据集发布节点的名称,命名规范(只能包含英文字母、数字、下划线(_)、中划线(-),并且只能以英文字母开头,长度限制为64字符),一个Workflow里的两个step名称不能重复
    title="数据集版本发布", # 标题信息,不填默认使用name值
    inputs=wf.steps.ReleaseDatasetInput(name="input_name", data=labeling_step.outputs["output_name"].as_input()), # ReleaseDatasetStep的输入,
标注任务对象在运行时配置;data字段也可使用wf.data.LabelTask(dataset_name="dataset_name", task_name="label_task_name")表示
    outputs=wf.steps.ReleaseDatasetOutput(name="output_name", dataset_version_config=wf.data.DatasetVersionConfig(train_evaluate_sample_ratio=train_ration)), # 数据集的训练验证切分比
    depend_steps = [labeling_step] # 依赖的数据集标注节点对象
)
# labeling_step是wf.steps.LabelingStep的实例对象,output_name是wf.steps.LabelingOutput的name字段值

workflow = wf.Workflow(
    name="dataset-release-demo",
    desc="this is a demo workflow",
    steps=[release_version]
)