高性能文件存储内置BucketLink数据联动功能,高性能文件存储内的文件系统可以绑定容量层的对象桶(Bucket),用户无需手工部署外部迁移工具即可实现在对象存储和高性能文件存储两个分布式存储服务之间进行高速数据流动,存储各节点均可参与数据导入、导出,数据流转比人工带外工具方式更加简洁高效。
Al训练场景中,通过高性能文件系统来加速对象存储中的数据访问,用户通过指定高性能文件存储文件系统内的目录与对象存储桶进行关联,然后通过创建数据导入导出任务实现数据同步,训练开始前可以将对象存储数据湖中的Al训练集数据高速预热到高性能文件缓存加速层中,实现训练时数据集高速读取,避免AI芯片因存储I/O等待产生空闲,提升AI芯片利用率。大模型训练过程中周期性产生的CheckPoint数据可以高速写入高性能文件缓存,减少对上层训练任务的中断和阻塞,可以提高CheckPoint保存频率,减少训练任务故障时需要从最近一次CheckPoint重新训练的损失,最后,高性能文件存储通过配置缓存数据淘汰功能,及时将长期未访问的数据从缓存中淘汰,释放高性能缓存空间。
数据联动技术包含以下功能:
元数据导入(Lazyload)
高性能文件系统绑定对象桶后,可以使用元数据导入功能。元数据导入功能仅会导入文件元数据,文件内容会在首次访问时从对象存储桶中加载并缓存在高性能文件存储中,后续重复访问会直接命中高性能文件存储缓存,无需再从对象存储桶中加载数据。元数据导入(Lazyload)方式下,初次访问时需要从对象存储中加载数据内容,对文件的第一次读取操作可能耗时较长,适合对首次数据访问时延不太敏感的业务场景。
元数据(Metadata)是指描述其他数据的数据,它提供了关于数据的上下文、属性、特性和结构的信息。元数据在各种系统中扮演着重要的角色,帮助用户和系统更好地理解、管理和使用数据。
数据预热(Preload)
高性能文件系统绑定对象桶后,也可以使用数据预热功能。数据预热(Preload)功能会同时导入元数据和数据内容到高性能文件存储中,上层业务访问数据时可以从高性能文件存储中直接命中,最大程度减少业务访问数据时的时延。如果上层业务对数据访问时延比较敏感,比如AI训练等场景涉及海量小文件,可以选择数据预热(Preload)方式。
数据导出
高性能文件系统绑定对象桶后,可以使用数据导出功能。当上层业务在数据联动目录里创建一些文件,需要将这些文件存储到对象桶里,可以使用数据导出功能。数据导出支持手工导出和配置成自动导出到对象桶。数据导出为异步方式,即上层业务将数据同步写入高性能文件存储,高性能文件存储以异步方式将数据导出到对象桶,不阻塞上层业务。
缓存数据淘汰
高性能文件系统绑定对象桶之后,可以配置数据淘汰功能,自动释放设定时间内没有访问过的文件数据内容,仅保留文件元数据,数据内容释放后不占用高性能文件存储的缓存空间,再次访问该文件时,将重新从对象存储中加载文件数据内容。数据缓存淘汰功能可以减少冷数据对高性能缓存空间的占用。
三级缓存加速技术
高性能文件缓存加速层存储提供L1服务端内存缓存,L2客户端内存缓存,及专门针对CheckPoint快存快恢的SDK,形成三级缓存加速技术,加速AI训练过程中的训练数据集读取,CheckPoint快速保存及故障时的CheckPoint快速恢复。
训练数据集访问加速:Al训练过程中一般存在多轮epoch,在每个epoch内,首先需要对数据集进行随机打散,然后将打散后的数据划分为若干batch,每读取一个batch的数据,进行一次训练迭代,每轮epoch都会完整读取一遍数据集。因此多轮epoch之间,读取的都是重复的数据,只是访问顺序不同,而且AI训练数据集一般都是KB级海量小文件,数据总量较小,因此Al训练访问数据集时存在缓存友好特征。
在业务访问数据集文件时,高性能文件存储会将NvmeSSD存储池中的数据文件缓存到L1服务端分布式内存缓存中,减小Al训练访问数据集的时延,同时在大规模训练集群并发访问数据集时,可以充分发挥L1服务端内存缓存带宽优势,实现比NvmeSSD硬盘层更大的吞吐能力。另外高性能文件存储的分布式元数据,可以支撑百亿级小文件扩展,也进一步缩短了海量小文件元数据操作的时延,提升了海量小文件操作的1OPS吞吐。
一个epoch指的是对整个训练数据集进行一次完整的迭代或遍历。在一次epoch中,模型会看到数据集中的每个样本一次,并根据这些样本进行学习。
在训练过程中,由于内存和计算能力的限制,通常不会一次性处理整个数据集。相反,数据集被分成更小的部分,称为批次(batch)。每个批次包含多个样本,模型会同时处理这些样本。
一个epoch由多个batch组成。在每次迭代中,模型首先处理一个batch的数据,然后移动到下一个batch,直到处理完所有batch,完成一个epoch。然后,这个过程会重复多次,直到模型达到满意的性能或完成预定的训练周期。
批次大小是指每个batch中包含的样本数量。批次大小是一个重要的超参数,它影响模型训练的效率和效果。较小的批次大小通常会导致更不稳定的梯度估计,但可能有助于模型探索参数空间的不同区域。较大的批次大小可以提供更稳定的梯度估计,但可能需要更多的内存和计算资源。
训练模型时,通常会设置一个目标epoch次数,这是完成训练所需的epoch迭代次数。在实际训练中,可能会根据验证集上的性能来提前停止训练,以避免过拟合。
一个训练周期(trainingcycle)指的是模型对一个batch的数据进行一次前向传播和反向传播的过程。
CheckPoint保存及恢复加速:L3CheckPoint速写加速SDK组件针对进程級故障和JOB任多级故障等场景,对接
Pytorch/Mindspore/Deepspeed等主流大语言模型训练框架,专门针对Al训练中的CheckPoint保存及恢复过程进行加速,实现Checkpoint先高速同步写到本机L2客户端内存缓存,再异步持久化到服务端存储,最大程度减少CheckPoint同步保存耗时,减少了训练任务中断阻塞。
AI训练任务发生进程级故障时,利用本机L2客户端内存缓存实现CheckPoint原地秒级快恢复,发生节点故障及JOB任务重调度场景下,利用客户端节点间高速参数面网络实现CheckPoint广播技术加速CheckPoint恢复速度,最大程度减少CheckPoint并发恢复耗时,避免训练任务故障恢复时由于远端存储带宽瓶颈导致长期阻塞。通过L3CheckPoint读写加速SDK及L2客户端内存缓存技术,可以有效加速CheckPoint保存及恢复速度,可以提高CheckPoint保存频率,大大减少了故障恢复时需要从上一次CheckPoint重新训练的损失。