数据集动态加载服务

更新时间:
复制 MD 格式

数据集动态加载服务支持在 DSW 或 DLC 训练过程中按需加载和自动汰换数据,无需将全量数据集存放在高性能存储中,从而降低存储成本并保持高效训练。

说明

本功能目前处于邀测阶段,如需使用请联系您的客户经理(PDSA)。

背景介绍

大模型训练场景中,AI 数据规模已从 TB 级扩展至 PB 甚至数十 PB,带来存储成本与性能瓶颈的双重挑战。数据集动态加载服务的核心原理是:将全量数据集存放于低成本的对象存储 OSS,仅在训练需要时将数据子集动态拉取到高性能 CPFS 缓存中,在不牺牲性能的前提下大幅减少高性能存储的容量需求。

应用场景

  • 超大规模数据集:数据集总大小超出 CPFS 存储容量(如 100 PB 数据集仅通过 10 PB CPFS 缓存训练)。

  • 访问局部性明显:适用于视频、图像、音频等具有时空局部性访问模式的大文件数据。

  • 开发体验要求高:无需修改现有数据读取逻辑,兼容原生文件 API,代码改造成本低。

技术架构

系统组件

  • 对象存储 OSS:存储原始全量数据集,提供低成本、高可靠的基础存储层。

  • 文件存储 CPFS:作为高性能缓存介质,承载训练任务实时所需的数据子集。

  • CPFS 数据流动组件:根据调度指令从 OSS 按需拉取数据至 CPFS 缓存。

主要流程

image.png

项目代码集成步骤

以 DLC 训练任务为例,通过数据集挂载将 CPFS 挂载至 /mnt/data/

1. 初始化数据集文件预加载客户端

训练进程启动时,创建 DatasetFileLoaderClient 实例完成初始化:

import os
from dataset_file_loader import DatasetFileLoaderClient
from dataset_file_loader.model import DatasetFile

worker_id = int(os.environ.get('LOCAL_RANK', 0))  # 获取当前 Worker ID

client = DatasetFileLoaderClient(
    worker_id=worker_id,
    cpfs_mount_path="/mnt/data/",                   # 与训练任务一致的 CPFS 挂载路径
    persistence_file_path=".dataset_file_persistence/task_1/",  # 持久化元数据路径
    preload_request_buffer_size=20                  # 预加载缓冲区大小(建议 10–50)
)
说明
  • worker_id 需与分布式训练框架中的本地 rank 保持一致(如 PyTorch 的 LOCAL_RANK)。

  • cpfs_mount_path 和 persistence_file_path 必须与预加载服务配置完全一致。

2. 上报预加载需求(数据使用前)

在数据采样阶段,提前上报即将使用的文件路径,触发预加载:

# 查询当前可预加载的配额(避免过载)
quota = client.get_preload_dataset_files_quota(index)

for _ in range(quota):
    client.preload_dataset_file(
        DatasetFile(
            dataset_file_path=file_path, # 预加载的OSS文件夹(文件)相对路径
            sampler_index=index # 采样器索引
        )
    )

3. 标记数据使用状态(开始使用数据)

实际读取数据集文件时,通知系统”开始使用”,避免缓存被提前清理:

client.active_dataset_file(
    DatasetFile(
        dataset_file_path=file_path, # 预加载的OSS文件夹(文件)相对路径
        sampler_index=index # 采样器索引
    )
)

4. 释放数据资源(数据使用完毕)

数据读取完成后,释放资源以便系统清理缓存、腾出空间:

client.release_dataset_file(
    DatasetFile(
        dataset_file_path=file_path, # 预加载的OSS文件夹(文件)相对路径
        sampler_index=index # 采样器索引
    )
)

计费说明

当前 PAI 数据集动态加载服务免费使用,不会额外产生费用。