AI开发平台MODELARTS-创建Workflow数据集导入节点:使用案例

时间:2024-11-21 19:46:06

使用案例

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

  • 场景一:将指定存储路径下的数据导入到目标数据集中。适用于需要对数据集进行数据更新的操作。
    • 用户将指定路径下已标注的数据导入到数据集中(同时导入标签信息),后续可增加数据集版本发布节点进行版本发布。

      数据准备:提前在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]
    )

support.huaweicloud.com/usermanual-standard-modelarts/modelarts_workflow_0372.html