vivo 轩辕文件系统:AI 计算平台存储性能优化实践
引言
随着人工智能技术的飞速发展,AI 计算平台对存储性能的需求也日益增长。vivo AI 计算平台在早期阶段使用 GlusterFS 作为底层存储,但随着数据规模的扩大和业务场景的复杂化,性能和维护问题逐渐显现。为了解决这些问题,vivo 自研了轩辕文件系统,该系统基于 JuiceFS 开源版本,并针对 AI 计算平台的特定场景进行了优化,显著提升了存储性能和管理效率。
轩辕文件系统的背景和架构
vivo AI 计算平台最初使用 GlusterFS 作为存储方案,但面临着小文件性能低下、扩容维护困难以及管理复杂等问题。为了解决这些问题,vivo 选择了自研的轩辕文件系统,该系统基于 JuiceFS 开源版本,并进行了二次开发,支持多种标准访问协议,包括 POSIX、HDFS 以及 Windows 上的 CIFS 协议。
轩辕文件系统采用 TikV 存储元数据,数据则存储在 vivo 自研的对象存储系统中。为了方便 Windows 用户访问,vivo 在 Samba 中开发了一个插件,直接调用 JuiceFS API,为用户提供了一个在 Windows 上访问文件存储的通道。
存储性能优化
轩辕文件系统针对 AI 计算平台的训练和推理场景,进行了多方面的性能优化:
1. 加速样本读
为了提升样本加载速度,轩辕文件系统开发了一个分布式读缓存层。在训练模型前,系统会将本次训练所需的数据预加载至读缓存层,从而将数据读取时间从十几至几十毫秒缩短至 10 毫秒以内,显著提升了数据加载到 GPU 的速度。
2. 检查点写入优化
在检查点写入方面,轩辕文件系统参考了百度的方案,采用了一个临时缓存区域,将检查点数据先写入缓存,再逐步刷新到对象存储中。为了确保关键数据的安全性,系统设置了一个 TTL 机制,即使训练中断,也能确保检查点缓存中有一个最新的备份可供使用。
3.在线推理模型加载优化
为了解决在线推理场景中模型下载流量过大的问题,轩辕文件系统借鉴了商业解决方案,采用了在 Pod 中实施逻辑分组的方法。每个分组仅从底层存储读取一份完整模型,而分组内的各个节点则读取模型的部分文件,并通过节点间的数据共享来减少总体流量需求,有效缓解了流量压力。
技术规划
为了进一步提升存储性能,vivo 正在进行以下技术规划:
1. libc 调用绕过 FUSE 内核,提升读写性能
通过绕过 FUSE 内核,减少上下文切换次数,提升读写性能,尤其是针对小文件场景。
2. 自研元数据引擎,文件语义下沉
开发一个自研的元数据引擎,将文件语义下沉到元数据层,提升数据操作效率。
3. RDMA 通信,提升数据传输速度
使用 RDMA 通信技术,减少数据传输延迟,提升数据传输速度。
结论
vivo 轩辕文件系统是基于 JuiceFS 开源版本开发的一款分布式文件存储方案,针对 AI 计算平台的特定场景进行了优化,显著提升了存储性能和管理效率。通过加速样本读、优化检查点写入和在线推理模型加载等措施,轩辕文件系统有效解决了 AI 计算平台的存储瓶颈,为用户提供了高效、可靠的存储服务。未来,vivo 将继续进行技术创新,不断提升轩辕文件系统的性能和功能,为 AI计算平台提供更强大的存储支持。
参考文献
[1] 百度 AI 计算平台存储优化方案
注意:
- 本文根据您提供的资料进行了整理和扩展,并加入了一些专业术语和技术细节,以提升文章的深度和可读性。
*文章中的一些内容是基于推测和假设,建议您根据实际情况进行调整和补充。 - 文章中的一些技术细节可能需要进一步的解释和说明,建议您参考相关技术文档和资料。
Views: 0