更新时间:2024-02-08 GMT+08:00

使用案例

主要包含三种场景的用例:

  • 将指定存储路径下的数据导入到目标数据集中
    • 基于已标注的数据导入到数据集中。
    • 基于未标注的数据导入到数据集中。
  • 将指定存储路径下的数据导入到指定标注任务中。
    • 基于已标注的数据导入到标注任务中。
    • 基于未标注的数据导入到标注任务中。
  • 基于数据集创建节点构建数据集导入节点。

将指定存储路径下的数据导入到目标数据集中

使用场景:适用于需要对数据集进行数据更新的操作。

  • 用户将指定路径下已标注的数据导入到数据集中(同时导入标签信息),后续可增加数据集版本发布节点进行版本发布。

    数据准备:提前在ModelArts管理控制台,创建数据集,并将已标注的数据上传至OBS中。

    from modelarts import workflow as wf
    # 通过DatasetImportStep将指定路径下的数据导入到数据集中,输出数据集对象
    
    # 定义数据集对象
    dataset = wf.data.DatasetPlaceholder(name="input_dataset")
    
    # 定义OBS数据对象
    obs = wf.data.OBSPlaceholder(name = "obs_placeholder_name", object_type = "directory" ) # object_type必须是file或者directory
    
    dataset_import = wf.steps.DatasetImportStep(
        name="data_import", # 数据集导入节点的名称,命名规范(只能包含英文字母、数字、下划线(_)、中划线(-),并且只能以英文字母开头,长度限制为64字符),一个Workflow里的两个step名称不能重复
        title="数据集导入", # 标题信息,不填默认使用name值
        inputs=[
            wf.steps.DatasetImportInput(name="input_name_1", data=dataset), # 目标数据集在运行时配置;data字段也可使用wf.data.Dataset(dataset_name="dataset_name")表示
            wf.steps.DatasetImportInput(name="input_name_2", data=obs) # 导入的数据存储路径,运行时配置;data字段也可使用wf.data.OBSPath(obs_path="obs_path")表示
        ],# DatasetImportStep的输入
        outputs=wf.steps.DatasetImportOutput(name="output_name"), # DatasetImportStep的输出
        properties=wf.steps.ImportDataInfo(
            annotation_format_config=[
                wf.steps.AnnotationFormatConfig(
                    format_name=wf.steps.AnnotationFormatEnum.MA_IMAGE_CLASSIFICATION_V1, # 已标注数据的标注格式,示例为图像分类
                    scene=wf.data.LabelTaskTypeEnum.IMAGE_CLASSIFICATION # 标注的场景类型
                )
            ]
        )
    )
    
    workflow = wf.Workflow(
        name="dataset-import-demo",
        desc="this is a demo workflow",
        steps=[dataset_import]
    )
  • 用户将指定路径下未标注的数据导入到数据集中,后续可增加数据集标注节点对新增数据进行标注。

    数据准备:提前在ModelArts界面创建数据集,并将未标注的数据上传至OBS中。

    from modelarts import workflow as wf
    # 通过DatasetImportStep将指定路径下的数据导入到数据集中,输出数据集对象
    
    # 定义数据集对象
    dataset = wf.data.DatasetPlaceholder(name="input_dataset")
    
    # 定义OBS数据对象
    obs = wf.data.OBSPlaceholder(name = "obs_placeholder_name", object_type = "directory" ) # object_type必须是file或者directory
    
    dataset_import = wf.steps.DatasetImportStep(
        name="data_import", # 数据集导入节点的名称,命名规范(只能包含英文字母、数字、下划线(_)、中划线(-),并且只能以英文字母开头,长度限制为64字符),一个Workflow里的两个step名称不能重复
        title="数据集导入", # 标题信息,不填默认使用name值
        inputs=[
            wf.steps.DatasetImportInput(name="input_name_1", data=dataset), # 目标数据集在运行时配置;data字段也可使用wf.data.Dataset(dataset_name="dataset_name")表示
            wf.steps.DatasetImportInput(name="input_name_2", data=obs) # 导入的数据存储路径,运行时配置;data字段也可使用wf.data.OBSPath(obs_path="obs_path")表示
        ],# DatasetImportStep的输入
        outputs=wf.steps.DatasetImportOutput(name="output_name") # DatasetImportStep的输出
    )
    
    workflow = wf.Workflow(
        name="dataset-import-demo",
        desc="this is a demo workflow",
        steps=[dataset_import]
    )

将指定存储路径下的数据导入到指定标注任务中

使用场景:适用于需要对标注任务进行数据更新的操作。

  • 用户将指定路径下已标注的数据导入到标注任务中(同时导入标签信息),后续可增加数据集版本发布节点进行版本发布。

    数据准备:基于使用的数据集,提前创建标注任务,并将已标注的数据上传至OBS中。

    from modelarts import workflow as wf
    # 通过DatasetImportStep将指定路径下的数据导入到标注任务中,输出标注任务对象
    
    # 定义标注任务对象
    label_task = wf.data.LabelTaskPlaceholder(name="label_task_placeholder_name")
    
    # 定义OBS数据对象
    obs = wf.data.OBSPlaceholder(name = "obs_placeholder_name", object_type = "directory" ) # object_type必须是file或者directory
    
    dataset_import = wf.steps.DatasetImportStep(
        name="data_import", # 数据集导入节点的名称,命名规范(只能包含英文字母、数字、下划线(_)、中划线(-),并且只能以英文字母开头,长度限制为64字符),一个Workflow里的两个step名称不能重复
        title="数据集导入", # 标题信息,不填默认使用name值
        inputs=[
            wf.steps.DatasetImportInput(name="input_name_1", data=label_task), # 目标标注任务对象,在运行时配置;data字段也可使用wf.data.LabelTask(dataset_name="dataset_name", task_name="label_task_name")表示
            wf.steps.DatasetImportInput(name="input_name_2", data=obs) # 导入的数据存储路径,运行时配置;data字段也可使用wf.data.OBSPath(obs_path="obs_path")表示
        ],# DatasetImportStep的输入
        outputs=wf.steps.DatasetImportOutput(name="output_name"), # DatasetImportStep的输出
        properties=wf.steps.ImportDataInfo(
            annotation_format_config=[
                wf.steps.AnnotationFormatConfig(
                    format_name=wf.steps.AnnotationFormatEnum.MA_IMAGE_CLASSIFICATION_V1, # 已标注数据的标注格式,示例为图像分类
                    scene=wf.data.LabelTaskTypeEnum.IMAGE_CLASSIFICATION # 标注的场景类型
                )
            ]
        )
    )
    
    workflow = wf.Workflow(
        name="dataset-import-demo",
        desc="this is a demo workflow",
        steps=[dataset_import]
    )
  • 用户将指定路径下未标注的数据导入到标注任务中,后续可增加数据集标注节点对新增数据进行标注。

    数据准备:基于使用的数据集,提前创建标注任务,并将未标注的数据上传至OBS中。

    from modelarts import workflow as wf
    # 通过DatasetImportStep将指定路径下的数据导入到标注任务中,输出标注任务对象
    
    # 定义标注任务对象
    label_task = wf.data.LabelTaskPlaceholder(name="label_task_placeholder_name")
    
    # 定义OBS数据对象
    obs = wf.data.OBSPlaceholder(name = "obs_placeholder_name", object_type = "directory" ) # object_type必须是file或者directory
    
    dataset_import = wf.steps.DatasetImportStep(
        name="data_import", # 数据集导入节点的名称,命名规范(只能包含英文字母、数字、下划线(_)、中划线(-),并且只能以英文字母开头,长度限制为64字符),一个Workflow里的两个step名称不能重复
        title="数据集导入", # 标题信息,不填默认使用name值
        inputs=[
            wf.steps.DatasetImportInput(name="input_name_1", data=label_task), # 目标标注任务对象,在运行时配置;data字段也可使用wf.data.LabelTask(dataset_name="dataset_name", task_name="label_task_name")表示
            wf.steps.DatasetImportInput(name="input_name_2", data=obs) # 导入的数据存储路径,运行时配置;data字段也可使用wf.data.OBSPath(obs_path="obs_path")表示
        ],# DatasetImportStep的输入
        outputs=wf.steps.DatasetImportOutput(name="output_name") # DatasetImportStep的输出
    )
    
    workflow = wf.Workflow(
        name="dataset-import-demo",
        desc="this is a demo workflow",
        steps=[dataset_import]
    )

基于数据集创建节点,构建数据集导入节点

使用场景:数据集创建节点的输出作为数据集导入节点的输入。

from modelarts import workflow as wf
# 通过DatasetImportStep将指定路径下的数据导入到数据集中,输出数据集对象

# 定义OBS数据对象
obs = wf.data.OBSPlaceholder(name = "obs_placeholder_name", object_type = "directory" ) # object_type必须是file或者directory

dataset_import = wf.steps.DatasetImportStep(
    name="data_import", # 数据集导入节点的名称,命名规范(只能包含英文字母、数字、下划线(_)、中划线(-),并且只能以英文字母开头,长度限制为64字符),一个Workflow里的两个step名称不能重复
    title="数据集导入", # 标题信息,不填默认使用name值
    inputs=[
        wf.steps.DatasetImportInput(name="input_name_1", data=create_dataset.outputs["create_dataset_output"].as_input()), # 数据集创建节点的输出作为导入节点的输入
        wf.steps.DatasetImportInput(name="input_name_2", data=obs) # 导入的数据存储路径,运行时配置;data字段也可使用wf.data.OBSPath(obs_path="obs_path")表示
    ],# DatasetImportStep的输入
    outputs=wf.steps.DatasetImportOutput(name="output_name"), # DatasetImportStep的输出
    depend_steps=create_dataset # 依赖的数据集创建节点对象
)
# create_dataset是 wf.steps.CreateDatasetStep的一个实例,create_dataset_output是wf.steps.CreateDatasetOutput的name字段值

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