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