You need to enable JavaScript to run this app.
导航
模型训练
最近更新时间:2025.04.22 20:02:58首次发布时间:2025.04.22 20:02:58
我的收藏
有用
有用
无用
无用

场景描述

在数据预处理的完整工作流中,经过清洗、标注、增强等处理后的数据最终将流向模型训练阶段。模型训练根据具体场景和需求,主要可以划分为基模训练和微调训练两大类。
基模训练通常采用大规模的多样化数据集,数据量往往达到 TB 甚至 PB 级别。这种训练模式需要借助专业的分布式训练平台,利用多机多卡的并行计算能力来完成。训练平台需要具备以下关键能力:首先,要支持大规模数据的高效存储和快速访问,通常采用分布式文件系统(如 HDFS)或对象存储(如 S3);其次,要有强大的数据预处理能力,包括数据加载、格式转换、特征提取等;最后,需要支持分布式训练框架(如 TensorFlow、PyTorch)的无缝对接。
相比之下,微调训练通常基于已经训练好的基模型,通过较小规模的数据集进行针对性优化。这类训练场景对数据平台的要求体现在两个关键能力:首先是高效的数据集加载能力,需要支持多种数据格式(如 CSV、JSON、Parquet)的快速读取,以及数据加载的并行化处理;其次是完善的数据混洗(Shuffle)能力,这包括随机混洗(Random Shuffle)和分布混洗(Distributed Shuffle),以确保数据分布的均匀性和训练的稳定性。此外,数据平台还需要支持数据增强(Data Augmentation)、数据切分(Data Splitting)等高级功能,以满足不同训练场景的需求。
在实际应用中,数据平台需要根据不同训练场景的特点,灵活配置数据处理策略。对于基模训练,通常需要采用批处理(Batch Processing)的方式,确保数据处理的吞吐量;而对于微调训练,则更注重数据处理的实时性和响应速度,以便快速迭代优化模型性能。

当前方案

Image
常见的微调模型的数据格式为Parquet或者WebDataset对应图像数据集,jsonl对于文本数据集。
使用PyTorch Dataloader接口对数据进行训练的时候,会将这些数据都加载到内存中,进行数据的混洗。
然后再按照模型的Batch size大小,将数据送到GPU中进行训练。

Lance方案

Image
Lance能够对接PyTorch的Dataloaer,使用Lance数据直接使用PyTorch dataloader提供的随机iterm算法即可完成Shuffle操作。

方案对比

维度

当前方案

Lance方案

数据加载

  • 需要将数据加载内存后,才能开始训练
  • 分配完RowId即可开始训练。

数据随机度

  • 单节点的随机,无法完成全量数据的随机,除非单数据集能在单机上加载完毕
  • 全局Shuffle,不在乎单节点资源。

内存消耗

  • 内存消耗大,需要将数据集完全加载到内存中。
  • 对内存消耗低, 只有batch size的内存消耗。

GPU使用率

  • 加载阶段,GPU一直空闲。
  • IO阶段分散在训练过程中,无GPU长期等待时间。

存储介质

  • 一般在本地磁盘上,放到对象存储上需要特殊适配
  • 无缝切换本地和对象存储模式

样例代码

参考使用 Lance 数据格式训练 CLIP 多模模型