有人说,deepseek一个搞AI的公司,不干正事,开源一个文件系统,有啥值得吹的。今天来简单聊聊3FS,包懂。
1. 3FS是什么?
3FS,Fire-Flyer File System,是一个用C++写的高性能分布式文件系统。
画外音:幻方官网给出的翻译是“萤火”。
2. deepseek为什么要重写分布式文件系统?
主要两个原因。
其一,技术已经全面升级。
- 传统的分布式文件系统设计之初基本,大部分基本基于HDD与NFS TCP/IP;
- 而AI训练与推理大范围使用SSD与RDMA;
画外音:RDMA,Remote Direct Memory Access ,远程直接内存访问,最新高性能网络通讯技术。
其二,AI训练与推理的业务需求传统分布式文件系统已经难以满足。
- 海量数据顺序读(语料输入);
- 检查点(分步骤重算);
- 顺序写(模型参数保存);
- 随机读(特征查询);
任何脱离业务的架构设计都是耍流氓。Deepseek说,已有的分布式文件系统无法满足我的需求时,我就自己重写一个。
3. 如何重写一个分布式文件系统?
核心架构选型,基本是两条路。
其一,重写Linux内核的文件管理模块。
这条路似乎走不通:
- 不能使用C++ STL等成熟库;
- 不能使用用户态下的编译,调试工具(例如:Valgrind);
画外音:额,最烦用Valgrind查内存泄露。
- 要考虑大量的兼容性;
- 编译,测试周期长;
- 容易导致系统崩溃;
- …
还有很重要的一点,deepseek没有搞Linux内核编程的人。
其二,正好Linux提供了FUSE机制,允许用户在不修改内核代码的情况下,在用户空间实现自己的文件系统。
画外音:FUSE,Filesystem in Userspace,允许用户通过接口与Linux虚拟文件系统VFS对接。
这样的话,deepseek就能用高效的语言,高效的工具,高效的开发适配自己业务的分布式系统了。
这里,除了说一声deepseek流弊,也让我们大声喊出:Linux流弊!
4. 作为一个分布式文件系统,3FS有哪些特点?
(1) 高性能:所有组件都采用RDMA网络连接,零拷贝。
(2) 低耦合:元数据与存储分离。
额,分布式文件系统一般都这么搞,不值得吹。
(3) 一致性:基于FoundationDB不同场景支持不同的一致性模型:
- 常规写入:强一致,链式复制;
- 文件更新:最终一致,定期同步;
很少有文件系统这么搞,这是一个一致性与性能的折衷。
(4) 均衡性:智能数据分片;
(5) 可靠性:多副本。
额,分布式文件系统一般都这么搞。
(6) 灵活性:物理块大小分级,从64K到64M,适配不同AI训练与推理场景。
减少了碎片,提高了SSD效率,但需要维护更多层级的资源池,分配复杂度提升。这是一个存储效率与存储复杂度的折衷。
(7) 快速恢复:全量替换。
额,这是一个偷懒的设计,不用复杂的回放恢复,简化了恢复流程,数据恢复期间比较占流量。往好的方面吹,只能说恢复速度快了=_=。或者这么说,文件损坏是小概率事件,不值得因此把整体设计搞复杂,这是一个概率与复杂性的折衷。
总的来说,针对AI训练与推理的场景,3FS做了非常多针对性的优化。
画外音:代码还在看,看完再和大家细致交流。
5. 最终3FS达到了什么效果?
上面是3FS官网git给出的数据,并附上了实验复现步骤。
幻方官网,最显著的位置,说明了3FS是他们最大的三大核心竞争力之一。
画外音:还有算子库+分布式训练通讯框架。
- 读:8T/s
- 写:500G/s
- IO响应:18亿次/s
- 集群使用率:96%
- GPU使用率:85%
看到这里,你还会说,“一个文件系统而已”了吗?
补充阅读材料:
- https://github.com/deepseek-ai/3FS
- https://www.high-flyer.cn/blog/3fs/
来自官方git与官方blog,可参考。