更新时间:2026-08-05 GMT+08:00
分享

创建自定义数据处理作业

本节介绍如何使用自定义数据处理作业,用户可参考创建数据处理任务

运行自定义作业时,重点关注两个环境变量:

  • SOURCE_DATASET_PATH:容器内挂载数据集路径,例如:{"dataset-1":"/tmp/source/dataset/1"}
  • TARGET_DATASET_PATH:容器内产物存储路径,请将数据处理的产物保存到该环境变量对应的目录下,例如:/tmp/target/dataset。

前提条件

  • 已上传数据到空间资产或OBS存储。
  • 已上传自定义镜像到空间资产。
  • 根据自定义镜像创建自定义算法。

操作步骤

参考创建数据处理任务,在选择“处理算法”时选择“空间资产-算法”或“OBS算法”,其余步骤无差异。

单容器作业示例

  1. 制作镜像。

    创建一个Dockerfile_HelloWorld文件。
    # 拉取 Python 基础镜像
    FROM python:3.11-slim
    # 设置容器内的工作目录
    WORKDIR /app
    
    # 将当前目录下的脚本复制到容器的工作目录中
    COPY hello_world.py /app
    
    # 指定容器启动时执行的命令
    ENTRYPOINT ["python", "/app/hello_world.py"]
    上面的hello_world.py脚本参考:
    import os
    
    print("hello_world")
    print(os.getenv("SOURCE_DATASET_PATH"))
    print(os.getenv("TARGET_DATASET_PATH"))

  2. 将上述镜像上传到SWR平台后,先根据注册镜像操作,例如hello_world:1.0,然后再根据创建算法操作。启动命令设置为python hello_world.py。
  3. 创建任务,在算法栏选择“空间资产-算法”并选择步骤2创建的算法资产。

  4. 创建任务后,在详情可查看用户日志。

分布式作业示例

平台分布式作业内部使用Ray作为引擎,用户可提交编排好的Ray作业流程在启动脚本中,适用于批处理任务、AI模型训练与评估等分布式任务。

  1. 基于本地开发者环境,制作作业镜像。

    FROM rayproject/ray:latest
    
    # ray作业默认健康检查会调用curl命令检查当前容器内ray进程状态,需要安装curl命令
    USER root
    RUN apt update -y && apt install -y curl
    
    USER ray
    COPY cal.py /home/ray
    
    WORKDIR /home/ray
    上述dockerfile中的参考脚本cal.py:
    import os
    import ray
    import socket
    import time
    
    # 1. 连接到 Ray 集群(如果在集群节点上运行,可省略 address) 
    ray.init()  
    
    # 2. 定义一个分布式远程函数 (Task) 
    @ray.remote 
    def square(x): 
        return x * x  
    
    @ray.remote
    def summary(x):
        print(x)
        time.sleep(30)
        print(socket.gethostname())
        print(os.getenv("SOURCE_DATASET_PATH"))
        print(os.getenv("TARGET_DATASET_PATH"))
    
    # 3. 并行执行任务 
    futures = [square.remote(i) for i in range(10)]  
    
    # 4. 获取结果 
    results = ray.get(futures) 
    print("计算结果:", results)  
    
    # 5. 并行任务2:打印host信息和数据集挂载信息
    futures = [summary.remote(i) for i in range(10)]
    results = ray.get(futures)
    
    # 6. 断开连接 
    ray.shutdown()

  2. 在空间资产-镜像页面,注册上述构建的镜像,具体操作可参照注册自定义镜像
  3. 在空间资产-算法页面,单击“创建算法”,选择步骤2中创建的“空间资产镜像”,具体操作可参照创建自定义算法,启动命令可参照具体应用场景,在该示例场景下填写python cal.py。
  4. 在数据准备-数据处理页面,单击“创建任务”,选择 步骤3中创建的空间资产-算法,添加数据集输入。作业类型选择分布式作业。配置资源规格,当选择2个worker及以上时会将作业分发到不同的作业节点。选择输出数据集名称或OBS存储位置,单击“立即创建”提交作业。
  5. 单击步骤4中创建的数据处理任务,进入任务详情页,再切换到日志页,可观察运行过程中日志信息。用户可参考当前示例或Ray官方文档编排数据处理作业,将任务调度到不同节点上运行。

相关文档