P小二 P小二
← 返回文章 AI Research 约 15 分钟

DeepSeek开源周第五天:3FS和Smallpond深度分析

感谢deepseek,实实在在开源了一些好东西

2月的最后一天,也是deepseek开源周的最后一天,deepseek开源了两个项目,他们是:3FS和smallpond。

2月的最后一天,也是deepseek开源周的最后一天,deepseek开源了两个

官方介绍,火萤文件系统 (3FS) 是 一种并行文件系统,充分利用现代 SSD 和 RDMA 网络的全部带宽。

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

  • 在 25 节点集群的 GraySort 基准测试中实现 3.66 TiB/分钟的吞吐量

  • 每个客户端节点在 KVCache 查找中实现 40+ GiB/s 的峰值吞吐量

  • 具有强一致性语义的分布式架构

  • 用于 V3/R1 的训练数据预处理、数据集加载、检查点保存/重新加载、嵌入向量搜索及推理中的 KVCache 查找

Smallpond ,则是一个基于 3FS 的数据处理框架。

Fire-Flyer File System (3FS)

3FS是deepseek开发的Fire-Flyer AI-HPC的一部分,在论文Fire-Flyer AI-HPC: A Cost-Effective Software-Hardware Co-Design for Deep Learning有详细的介绍。

Fire-Flyer AI-HPC有三个部分,HAI Platform 两年前就开源了,3FS今天也开源了,只剩下HaiScale还没开源。

Fire Flyer AI HPC有三个部分,HAI Platform 两年前就

总结来说,3FS有几个特点:

  • 高性能设计:3FS专为充分利用NVMe SSD的高输入输出操作每秒(IOPS)和高吞吐量以及RDMA网络而设计。通过这样的设计,3FS能够高效地处理大量数据请求,满足深度学习和大规模计算的需求。
  • 系统架构:3FS系统由四个角色组成:集群管理器、元服务、存储服务和客户端。元服务和存储服务定期向集群管理器发送心跳信号,确保系统稳定和高效运行。多个集群管理器的设置保证了系统的高可用性。
  • 请求控制机制:3FS实现了一种请求发送控制机制,以减轻网络拥塞。在客户端接收到读取请求后,存储服务会请求客户端允许传输数据。这种机制限制了并发发送者的数量,有助于在高负载情况下保持良好的性能。
  • 强一致性与链复制:3FS采用链复制和分配查询(CRAQ)方法,以提供强一致性。文件内容被切分为多个块,并在一系列存储目标上进行复制,这样可以充分释放所有SSD的吞吐量和IOPS。
  • 高吞吐量:通过优化批量写入和读取操作,3FS能够实现每个节点超过10 GiB/s的写入速度,从而加快了检查点保存和加载的过程,降低了训练过程中的延迟。
  • **3FS-KV系统:3FS还支持3FS-KV,这是一个基于3FS构建的共享存储分布式数据处理系统,支持键值存储、消息队列和对象存储模型,进一步提升了系统的灵活性和性能。

**

3FS在深度学习和大规模计算中提供了强大的存储支持,有效满足了高吞吐量和低延迟的需求。

论文的描述如下:

论文的描述如下

论文的描述如下

论文的描述如下

性能

峰值吞吐量

一个大型 3FS 集群的读压测吞吐情况。该集群由 180 个存储节点组成,每个存储节点配备 2×200Gbps InfiniBand 网卡和 16 个 14TiB NVMe SSD。大约 500+ 个客户端节点用于读压测,每个客户端节点配置 1x200Gbps InfiniBand 网卡。在训练作业的背景流量下,最终聚合读吞吐达到约 6.6 TiB/s

一个大型 3FS 集群的读压测吞吐情况。该集群由 180 个存储节点组成,每个存

排序性能

测试集群由 25 个存储节点(2 个 NUMA 域/节点、1 个存储服务/NUMA、2×400Gbps NIC/节点)和 50 个计算节点(2 个 NUMA 域、192 个物理核心、2.2 TiB RAM 和 1×200 Gbps NIC/节点)组成。对 8192 个分区中的 110.5 TiB 数据进行排序耗时 30 分 14 秒,平均吞吐量为3.66 TiB/分钟

测试集群由 25 个存储节点(2 个 NUMA 域/节点、1 个存储服务/NUM

KVCache

KVCache 是一种用于优化LLM推理过程。它通过在解码器层中缓存先前标记的键和值向量来避免冗余计算。上图展示了所有 KVCache 客户端的读取吞吐量,突出显示了峰值和平均值,峰值吞吐量高达 40 GiB/s。下图显示了同一时间段内垃圾收集 (GC) 中删除操作的 IOPS。

KVCache 是一种用于优化LLM推理过程。它通过在解码器层中缓存先前标记的键

为什么需要3FS这种特殊的文件系统?其实是因为在LLM 场景下需要高并发、高吞吐、可扩展的分布式文件系统,同时对一致性、智能路由、缓存管理等提出了更高要求。因此,像 3FS 这样能够提供面向 RDMA 与 SSD 的高性能解决方案、更灵活的元数据设计、以及异步零拷贝 IO 的系统,就显得很有价值。

代码分析

3FS这个高性能文件系统的实现中,有一点必须提一下,就是deepseek使用Rust来实现了chunk_engine。

chunk_engine是块引擎,是3FS存储服务底层的核心模块之一,负责磁盘物理块的管理、分配和回收,上层可以通过块引擎对块数据进行读写。

chunk_engine主要使用了cxx自动生成C++绑定,让C++代码直接调用Rust代码。

最近几年,Rust在mlsys领域使用频率越来越多,包括huggingface开发的tokenizers也是Rust实现的。deepseek团队选择Rust来实现chunk_engine可能也是觉得Rust的代码好维护,内存安全,性能也很好的优点。

deepseek团队应该在后台服务中也使用了Rust的框架 tokio,因为我在幻方AI的开源项目找到了几个Rust开源项目,而且包含了tokio。真心希望越来越多的团队多多使用Rust来开发机器学习系统。

Smalpond

Smalpond是一个轻量级的数据处理框架,构建于 DuckDB 和 3FS 之上,支持轻量级、高性能的数据处理,可扩展至 PB 级数据集。

安装和使用都比较简单,API不多,提供两种不同的API,分别支持动态和静态构建数据流图。

安装:

pip install smallpond


使用例子:

- - ```
# Download example datawget 

import smallpond# Initialize sessionsp = smallpond.init()# Load datadf = sp.read_parquet(“prices.parquet”)# Process datadf = df.repartition(3, hash_by=“ticker”)df = sp.partial_sql(“SELECT ticker, min(price), max(price) FROM {0} GROUP BY ticker”, df)# Save resultsdf.write_parquet(“output/”)# Show resultsprint(df.to_pandas())


性能可以参考3FS 排序的性能。

deepseek开源周,到今天算是结束了,感谢deepseek,实实在在拿出了好东西供大家学习和使用。

很多团队已经在行动,得到了实际的性能提升。比如:vLLM团队把TRITON_MLA换成了FLASHMLA,吞吐量提升了2-16%,真正得到了好的结果。

![很多团队已经在行动,得到了实际的性能提升。比如:vLLM团队把TRITON ML](https://img.pxiaoer.blog/wechat/0d631abd4682d4a2.png)

deepseek开源的这些项目,后面还持续影响着我们。我们的猛学之旅,还在继续。

关注我,明天继续。

往期分析文章:

- [DeepSeek开源周第四天:DualPipe&EPLB深度分析](https://mp.weixin.qq.com/s?__biz=MzAwNzc4MDgwNQ==&mid=2653126551&idx=1&sn=c6e77cfcbfbd8fd7b1644b34d95b3938&scene=21#wechat_redirect)

- [deepseek开源周第三天:DeepGEMM深度分析](https://mp.weixin.qq.com/s?__biz=MzAwNzc4MDgwNQ==&mid=2653126541&idx=1&sn=61bb2095ef386c9bfa8a83780c01d430&scene=21#wechat_redirect)

- [DeepSeek开源周第二天:DeepEP深度分析](https://mp.weixin.qq.com/s?__biz=MzAwNzc4MDgwNQ==&mid=2653126526&idx=1&sn=a65f1ebcd609553daf057a11423996f3&scene=21#wechat_redirect)

- [DeepSeek开源周第一天:FlashMLA 深度分析](https://mp.weixin.qq.com/s?__biz=MzAwNzc4MDgwNQ==&mid=2653126513&idx=1&sn=325c82d7c75a8ceb3f7bcfd63280d72e&scene=21#wechat_redirect)

- [开源周来袭:DeepSeek有哪些神秘技术即将公开?](https://mp.weixin.qq.com/s?__biz=MzAwNzc4MDgwNQ==&mid=2653126493&idx=1&sn=e0082b3ac23090cf9a363209f887c4e4&scene=21#wechat_redirect)

参考链接:

- https://github.com/deepseek-ai/3FS

- https://github.com/deepseek-ai/smallpond

- https://arxiv.org/abs/2408.14158

- https://github.com/huggingface/tokenizers

- https://github.com/HFAiLab/hai-platform

- https://x.com/vllm_project/status/1894994674630435123