HISTORY
/
往期推荐
DeepSeek开源周 Day04:从DualPipe聊聊大模型分布式训练的并行策略
DeepSeek开源周 Day03:从DeepGEMM看大模型算力提速的矩阵乘法
DeepSeek开源周 Day02:从DeepEP开源趋势重新审视大模型Infra
DeepSeek开源周 Day01:从FlashMLA背后原理回顾KV Cache
3FS简介
今天是DeepSeek开源周的第五天,官方开源了一种高性能分布式文件系统Fire-Flyer File System,简称3FS,目的是解决人工智能训练和推理工作负载的挑战。
Fire-Flyer 文件系统 (3FS) - 一种并行文件系统,可利用现代 SSD 和 RDMA 网络的全部带宽。特点如下:
- ⚡ 180 节点集群中的 6.6 TiB/s 聚合读取吞吐量
- ⚡ 在 25 节点集群中,GraySort 基准测试的吞吐量为 3.66 TiB/min
- ⚡ 每个客户端节点 40+ GiB/s 峰值吞吐量,用于 KVCache 查找
- 🧬 具有强一致性语义的分解架构
- ✅
训练数据预处理,数据集加载,检查点保存/重新加载 , 嵌入向量搜索和KVCache查找以进行V3/R1中的推理
smallpond(小池塘)是基于DuckDB和3FS构建的轻量级数据处理框架。
下面我们聊一聊分布式文件系统吧
分布式文件系统
文件系统的定义
硬盘是计算机最主要的存储设备,数据按扇区存放在硬盘上。硬盘属于硬件,用户无法直接对其进行操作,由操作系统帮我们管理。文件系统是操作系统用于明确存储设备或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法。操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。文件系统由三部分组成:文件系统的接口,对对象操纵和管理的软件集合,对象及属性。从系统角度来看,文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。通俗地说,文件系统就是一个软件,它负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取,当用户不再使用时撤销文件等。
一般文件系统
在我们日常生活工作中,自己使用的电脑上都会安装操作系统,比如Windows。我们经常进行的操作如新建文件夹、新建文件、删除文件等等,都是文件系统在帮助我们工作,Windows文件系统有FATFS、VFATFS、NTFS等。除了Windows外,Linux也有ext、vfs等等文件系统,像这种一台计算机,单个存储节点、一个操作系统,一个具体的文件系统的场景称之为一般文件系统。
原图来源:https://blog.csdn.net/qq\_37862148/article/details/113999206
分布式文件系统
分布式文件系统(Distributed File System,DFS)中的数据存储在多台机器上,这些专门用来存储数据的机器称之为存储节点,由多个节点构成分布式集群,节点上的小的分布式文件系统组合成总的分布式文件系统,由主服务器对总的文件系统进行管理。用户任意访问某一台主机,都能获取到自己想要的目标文件
一般文件系统与分布式文件系统的比较
类别 | 一般文件系统 | 分布式文件系统 |
---|---|---|
存储方式 | ||
集中存储在一台机器 | ||
分散地存储在多台机器 | ||
访问方式 | ||
系统总线IO | ||
网络IO | ||
特点 | ||
系统级别的文件系统,数据集中存放在一台机器,对数据的访问,修改和删除比较方便快速,存储服务器成为系统性能的瓶颈,伸缩性较差,扩展有限 | ||
应用级别的文件系统,分布式网络存储系统采用可扩展的系统结构,利用多台存储服务器分担存储负荷,利用位置服务器定位存储信息,系统的可靠性、可用性和存取效率提高,且易于扩展 | ||
适用场景 | ||
小数据量的存储 | ||
海量数据的存储 | ||
设计目标 | ||
高性能、可用性 | ||
高性能、可伸缩性、可靠性以及可用性 | ||
常用的分布式文件系统
常用的分布式文件系统有: GFS、TFS、HDFS、MooseFs、FastDfs、MogileFs、GridFs、MinIO、SeaweedFS、GlusterFS、Ceph、GlusterFS等。 目前可用于文件存储的网络服务选择有很多,比如阿里云OSS、腾讯云、百度云等等,对于中小型企业,如果不选择存储上云,或者为了帮节约成本,可自行部署文件系统。 目前要找的分布式文件系统至少满足以下条件:
- 频繁读写、从不修改、基本不删除
- 能够存储图片、音频以及100MB以上的视频等文件
- 非常稳定、高可用、可扩容、可运维部署
- 上手简单、易于维护、社区相对活跃
常见分布式文件系统比对
- GFS(Google File System)
Google公司为满足公司需求而开发的基于Linux的可扩展的分布式文件系统,用于大型的、分布式的、对大数据进行访问和应用,成本低,应用于廉价的普通硬件上,但不开源,暂不考虑。
- TFS(Taobao File System)
阿里巴巴为满足了淘宝对小文件存储的需求而开发的一个可扩展、高可用、高性能、面向互联网服务、开源的分布式文件系统,主要针对海量的非结构化数据,它构筑在普通的Linux机器集群上,可为外部提供高可靠和高并发的存储访问。TFS为淘宝提供海量小文件存储,通常文件大小不超过1M,这个也暂不考虑。
- HDFS(Hadoop Distributed File System)
Hadoop分布式文件系统,适合运行在通用硬件上做分布式存储和计算,因为它具有高容错性和可扩展性的特点,可部署在廉价的机器上,适合大数据的处理,在离线批量处理大数据上有先天的优势。Hadoop是Apache Lucene创始人Doug Cutting开发的使用广泛的文本搜索库。它起源于Apache Nutch,后者是一个开源的网络搜索引擎,本身也是Luene项目的一部分。Apache Hadoop架构是MapReduce算法的一种开源应用,是Google开创其帝国的重要基石。
- MooseFS
MooseFS 是来自波兰的开源且具备冗余容错功能的分布式 POSIX 文件系统,也是参照了 GFS 的架构,实现了绝大部分 POSIX 语义和 API,它支持通过FUSE方式将文件挂载操作,同时其提供的web管理界面非常方便查看当前的文件存储状态,对master服务器有单点依赖,用perl编写,用于中、大型文件应用,但性能相对较差,由于可能会实时访问所以暂不考虑。
备注:POSIX表示可移植操作系统接口(Portable Operating System Interface of UNIX,缩写为 POSIX ),POSIX标准定义了操作系统应该为应用程序提供的接口标准。
- FastDFS
由淘宝的余庆先生所开发的一个开源分布式文件系统。它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。适合以文件为载体的在线服务,如相册网站、视频网站等等。FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS搭建一套高性能的文件服务器集群提供文件上传、下载等服务。但是FastDFS部署有点麻烦,且它的SDK是不全的。
- MogileFS
MogileFS是一套高效开源的文件自动备份组件,由Six Apart开发,广泛应用在包括LiveJournal等web2.0站点上。支持多节点冗余,可实现自动的文件复制。不需要RAID,应用层可以直接实现RAID,不共享任何东西,通过集群接口提供服务工作于应用层,没有特殊的组件要求。使用HTTP方式通信。
国内所知道的使用MogileFS的公司有图片托管网站yupoo又拍, digg, 土豆, 豆瓣, 1号店, 大众点评, 搜狗, 安居客等等网站,基本很多网站容量,图片都超过30T以上。
- GridFS
MongoDB是一种知名的NoSQL数据库,GridFS是MongoDB的一个内置功能,它用于存储和恢复那些超过16M(BSON文件限制)的文件(如:图片、音频、视频等),是文件存储的一种方式,但是它是存储在MongoDB的集合中。它可以直接利用已建立的复制或分片机制,所以对于文件存储来说故障恢复和扩展都容易,且GridFS不产生磁盘碎片。
- MinIO
MinIO 是一个基于Apache License v2.0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等。它也是一个非常轻量的服务,可以很简单的和其他应用的结合。MinIO的特色在于简单、轻量级,对开发者友好,学习成本低,安装运维简单,开箱即用。
- SeaweedFS
SeaweedFS是基于go语言开发高度可扩展开源的分布式存储系统,能存储数十亿文件(最终受制于你的硬盘大小)、并且速度快,内存占用小。上手使用比fastDFS要简单很多,自带Rest API。对于中小型文件效率非常高,但是单卷最大容量被程序限制到30G,建议存储文件以100MB以内为主。
- Ceph
Ceph是Red Hat旗下一个成熟的分布式文件系统,而且还是一个有企业级功能的对象存储生态环境。该系统具备高性能、高可用性、高可扩展性、实时存储性等特点。虽然Ceph很强大,但是学习成本高、安装运维复杂。Ceph用C++编写,存储容量可轻松达到PB级别。
- GlusterFS
GlusterFS 是由美国的 Gluster 公司开发的 POSIX 分布式文件系统(以 GPL 开源),它主要应用在集群系统中,具有高扩展性、高可用性、高性能、可横向扩展等特点,并且其没有元数据服务器的设计,让整个服务没有单点故障的隐患。该系统主要是为中大型文件设计的,存储容量可轻松达到PB。它存在扩容缩容影响服务器较多、遍历目录下文件耗时、小文件性能较差的缺点。
分布式文件系统对比
功能分类如下:
- 适合做通用文件系统的有 :Ceph、MooseFS、MinIO;
- 适合做中小文件存储的文件系统有 :Ceph、FastDFS、MinIO、SeaweedFS;
- 适合做大文件存储的文件系统有 :HDFS、MinIO、Ceph、GridFS;
- 轻量级文件系统有 :FastDFS、MinIO、SeaweedFS;
- 简单易用,用户活跃的文件系统有 :HDFS、FastDFS、MinIO; 综上:Ceph目前不够成熟稳定,官方也明确指出不要把Ceph用在生产环境中,暂不考虑; 经初步筛选剩下的文件系统有:HDFS、FastDFS、MinIO、GridFS。
- MinIO :学习成本低,部署容易,适合存储大容量非结构化的数据,且有详细的中文文档。
- FastDFS :功能精简,支持在线扩容、冗余备份,部分支持跨集群同步,不存在单点故障,性能较好。但是不支持FUSE挂载和POSIX访问接口,且学习成本相对MinIO较高,且部署也相对比较复杂点。
- HDFS :适合批量数据处理,可以部署在廉价的机器上。可以部署在廉价的机器上,但是不适合大量小文件,通过牺牲响应延时来换取高的吞吐量。
- GridFS :能够简化技术栈
下面让我们看看3FS的到底怎么回事?
3FS是DeepSeek模型训推的加速器
大模型(例如DeepSeek的V3或R1)通常具有数百亿甚至数千亿参数,训练和推理过程对计算资源、存储系统和数据访问效率提出了极高要求。具体来说,这些挑战包括:
- 海量数据处理 :大模型需要在预训练阶段处理数万亿级别的高质量token(如DeepSeek V3使用了14.8万亿token),这要求文件系统能够快速加载和预处理大规模数据集。
- 高吞吐量需求 :训练和推理过程中,数据必须以极高的速度传输到计算节点,避免I/O瓶颈拖慢计算效率。
- 一致性与可靠性 :分布式训练需要频繁保存和加载检查点(checkpoint),以支持故障恢复和训练延续,这要求文件系统提供强一致性。
- 推理优化 :推理阶段,尤其是大模型的实时生成任务(如对话系统),需要快速访问嵌入向量(embedding vectors)和键值缓存(KVCache),以降低延迟并提升吞吐量。
Fire-Flyer File System(3FS)正是针对这些需求设计的,其功能的每一点都直接服务于大模型的工作负载优化。
训练数据预处理
- 为什么重要 :大模型的预训练需要从原始数据中提取特征、分词、清洗并转换为适合模型输入的格式,这一过程涉及对海量数据的并行处理。3FS的高性能并行架构和6.6 TiB/s的聚合读取吞吐量,确保了数据预处理可以快速完成,避免了传统文件系统在面对TB级甚至PB级数据时的低效问题。
- 针对大模型的意义 :例如,DeepSeek V3的14.8万亿token训练数据,如果没有高效的文件系统支持,数据预处理可能成为整个训练流程的瓶颈。3FS通过利用现代SSD和RDMA网络的带宽,显著加速了这一环节。
数据集加载
- 为什么重要 :训练过程中,数据集需要分批加载到多个计算节点(如GPU集群)。对于大模型,单次加载的数据量可能达到数十TB甚至更多,传统的分布式文件系统(如HDFS)因面向磁盘设计,往往无法满足这种高带宽需求。3FS在25节点集群中实现了3.66 TiB/min的吞吐量,能够轻松应对这种负载。
- 针对大模型的意义 :快速数据集加载意味着训练迭代之间的等待时间大幅减少。对于分布式训练(例如数据并行或模型并行),3FS确保所有节点能够同步高效地获取数据,从而提升整体训练效率。
检查点保存/重新加载
- 为什么重要 :大模型训练通常需要数周甚至数月,期间可能因硬件故障或资源调度中断。检查点机制允许训练从中断处恢复,而检查点的保存和加载速度直接影响训练的容错能力和效率。3FS的强一致性语义(基于CRAQ实现)保证了检查点数据在分布式环境中的可靠性,同时高吞吐量支持快速读写。
- 针对大模型的意义 :以DeepSeek V3为例,其671亿参数的MoE架构生成的大量检查点文件需要高效存储和访问。3FS的分解架构和高性能特性,确保了检查点操作不会成为训练的瓶颈。
嵌入向量搜索
- 为什么重要 :在推理阶段,尤其是涉及语义搜索或推荐系统时,大模型需要快速检索嵌入向量(embedding vectors),这些向量通常存储为高维数据。3FS提供的40+ GiB/s峰值吞吐量支持了高效的向量搜索操作。
- 针对大模型的意义 :对于V3或R1这样的模型,嵌入向量搜索可能是对话生成或上下文理解的关键步骤。3FS的高带宽和低延迟特性,使得实时推理任务能够快速响应用户请求,提升用户体验。可能联网搜索会用到?比如各大厂商的搜索问答
KVCache查找以进行V3/R1中的推理
- 为什么重要 :KVCache(键值缓存)是大模型推理中常用的优化技术,用于缓存先前计算的键和值向量,避免重复计算。在生成长序列(如多轮对话)时,KVCache的访问速度直接影响推理延迟。3FS支持每个客户端节点40+ GiB/s的峰值吞吐量,特别适合KVCache的高频查找需求。
- 针对大模型的意义 :DeepSeek V3和R1在推理中广泛使用KVCache来加速生成过程。例如,V3的多token预测(Multi-Token Prediction)功能依赖于快速访问缓存数据。3FS的高性能设计允许将KVCache部分卸载到SSD而非全存于RAM,既降低了内存压力,又保持了推理速度。这对于资源受限环境尤为关键。
3FS的这些功能直接解决了大模型训练和推理中的核心痛点:
- 效率提升 :从数据预处理到推理阶段,3FS的高吞吐量(6.6 TiB/s)和低延迟(40+ GiB/s每节点)大幅缩短了I/O等待时间,使得计算资源得以充分利用。
- 成本优化 :通过支持KVCache卸载到SSD,3FS减少了对昂贵高容量RAM的依赖,降低了硬件成本,这对于大规模部署大模型尤为重要。
- 一致性与可扩展性 :分解架构和强一致性设计,使3FS能够无缝支持数百节点集群(如180节点实现6.6 TiB/s),满足大模型分布式训练和推理的扩展需求。
- 端到端支持 :从训练前期的数据准备,到推理阶段的实时生成,3FS提供了一个统一的存储层,简化了开发流程,降低了分布式系统的复杂性。
参考资料
-
分布式文件系统(Distributed File System,DFS)
-
常用的分布式文件系统