DeepSeek并行文件系统3FS


发布于 2025-03-02 / 18 阅读 / 0 评论 /
2025年2月28日,DeepSeek开源周最后一天,DeepSeek开源了全生命周期数据访问引擎Fire-Flyer File System(3FS),以及基于3FS的数据处理框架Smallpond。

1.3FS概述

3FS全称Fire-Flyer File System,是DeepSeek全生命周期数据访问引擎。

官网定义为:A high-performance distributed file system designed to address the challenges of AI training and inference workloads.

译为:专为应对人工智能训练和推理任务挑战而设计的高性能分布式文件系统。

3FS采用现代固态硬盘(SSD)和远程直接内存访问(RDMA)网络技术,构建了共享存储层,极大简化了分布式应用的开发过程。

1.1.开源项目

开源项目地址:https://github.com/deepseek-ai/3FS

项目主要是通过C++来实现。

1.2.3FS特点

3FS是一个充分利用现代SSD和RDMA网络带宽的并行文件系统,其特点有:

(1)在180节点集群中实现了6.6 TiB/s的总读取吞吐量

(2)在25节点集群的GraySort基准测试中达到了3.66 TiB/min 的吞吐量

(3)每个客户端节点的KVCache查询峰值吞吐量超过40+ GiB/s

(4)采用分离式架构,确保了强一致性

(5)全面支持V3/R1的训练数据预处理、数据集加载、检查点保存/重载、嵌入向量搜索和KVCache查询推理

1.3.3FS核心优势

主要有以下几点

1.3.1.性能与易用性

表现在以下三点。

(1)分布式架构

该系统整合了数千个SSD的高吞吐量和数百个存储节点的网络带宽,使得应用程序能够无视位置差异,高效访问存储资源。

(2)强一致性保证

通过采用链式复制与分配查询(CRAQ)技术,确保了数据的一致性,使得应用程序代码更加简洁易懂。

(3)标准文件接口

系统提供了基于事务性键值存储(如FoundationDB)的无状态元数据服务,使用的文件接口通用且易于上手,无需学习新的存储API。

1.3.2.多样化工作负载支持

表现在以下四点。

(1)数据准备

系统有效地将数据分析管道的输出组织成分层目录结构,并高效管理大量的中间数据。

(2)数据加载优化

通过支持计算节点间对训练样本的随机访问,无需进行数据预取或洗牌操作,提升了数据处理效率。

(3)高效检查点支持

为大规模训练任务提供高吞吐量的并行检查点功能。

(4)KVCache推理加速

提供了一种成本效益高的DRAM缓存替代方案,具有高吞吐量和更大的存储容量,适用于推理任务。

2.3FS设计与实现

3FS系统由四个主要部分组成:集群管理器、元数据服务、存储服务和客户端。这些组件通过RDMA网络(InfiniBand或RoCE)相互连接。

元数据和存储服务定期向集群管理器发送心跳信号,以报告其状态。集群管理器负责处理集群成员的变更,并将集群的配置信息分发到其他服务和客户端。

系统中部署了多个集群管理器,其中一个被选为主管理器。当主管理器发生故障时,另一个管理器会被提升为主管理器。

集群配置信息通常存储在一个可靠的分布式协调服务中,例如ZooKeeper或etcd。在生产环境中,为了减少依赖性,我们使用与文件元数据相同的键值存储来保存集群配置。

文件元数据操作(如打开或创建文件/目录)被发送到元数据服务,由其实现文件系统的语义。由于文件元数据是存储在一个事务性键值存储(例如FoundationDB)中的,因此元数据服务是无状态的,客户端可以连接到任何元数据服务。

每个存储服务管理一些本地SSD,并提供一个块存储接口。

为了确保强一致性,存储服务实现了链式复制与分配查询(CRAQ)机制。CRAQ的写入全部读取任意的方法有助于充分利用SSD和RDMA网络的高吞吐量。在3FS中,一个文件被分割成相等大小的数据块,并在多个SSD上复制。