DeepSeek开源周第五弹之一!3FS:支撑V3/R1模型数据访问的高性能分布式文件系统

本文涉及的产品
交互式建模 PAI-DSW,每月250计算时 3个月
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
模型训练 PAI-DLC,100CU*H 3个月
简介: 3FS是DeepSeek开源的高性能分布式文件系统,专为AI训练和推理任务设计,提供高达6.6 TiB/s的读取吞吐量,支持强一致性保障和通用文件接口,优化AI工作负载。

❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发感兴趣,我会每日分享大模型与 AI 领域的开源项目和应用,提供运行实例和实用教程,帮助你快速上手AI技术!

🥦 AI 在线答疑 -> 智能检索历史文章和开源项目 -> 尽在微信公众号 -> 搜一搜:蚝油菜花 🥦


🎧 “AI训练新利器!DeepSeek开源3FS文件系统,6.6 TiB/s读取吞吐量,推理效率提升40%”

大家好,我是蚝油菜花。你是否也遇到过——

  • 👉 AI训练数据加载慢,GPU利用率低
  • 👉 大规模数据处理效率低下,检查点耗时过长
  • 👉 推理任务重复计算,资源浪费严重...

今天揭秘的 DeepSeek 3FS,用高性能分布式文件系统彻底解决这些问题!这个基于现代SSD和RDMA网络技术的开源神器,专为AI训练和推理任务设计,提供高达6.6 TiB/s的读取吞吐量,支持强一致性保障和通用文件接口,优化AI工作负载。工程师们已经用它提升训练速度,项目经理靠它优化推理效率——你的AI项目准备好迎接性能革命了吗?

🚀 快速阅读

3FS是DeepSeek开源的高性能分布式文件系统,专为AI训练和推理任务设计。

  1. 核心功能:提供高达6.6 TiB/s的读取吞吐量,支持强一致性保障和通用文件接口。
  2. 技术原理:基于分离式架构和链式复制与分配查询(CRAQ)技术,优化数据访问和一致性。

3FS 是什么

3fs-cover

3FS(Fire-Flyer File System)是DeepSeek推出的高性能分布式文件系统,专为AI训练和推理任务设计。3FS利用现代SSD和RDMA网络技术,基于分离式架构聚合数千个SSD的吞吐量和数百个存储节点的网络带宽,提供高达6.6 TiB/s的读取吞吐量。

3FS提供强一致性保障,提供通用文件接口,无需学习新的存储API。3FS在大规模数据处理和推理优化中表现出色,在GraySort测试中达到3.66 TiB/min的吞吐量,KVCache读取吞吐量可达40 GiB/s。

3FS 的主要功能

  • 高性能数据访问:聚合数千个SSD的吞吐量和数百个存储节点的网络带宽,提供高达6.6 TiB/s的读取吞吐量。支持大规模集群中的高吞吐量并行读写,优化AI训练和推理任务中的数据加载效率。
  • 强一致性保障:实现链式复制与分配查询(CRAQ)技术,确保数据的强一致性,简化应用开发复杂性。
  • 通用文件接口:提供无状态元数据服务,支持事务性键值存储(如FoundationDB),用户无需学习新的存储API。
  • 优化AI工作负载
    • 数据准备:高效管理大量中间输出,支持层次化目录结构。
    • 数据加载:支持跨计算节点的随机访问,无需预取或数据集洗牌。
    • 检查点支持:为大规模训练提供高吞吐量并行检查点功能。
    • KVCache:为推理任务提供高吞吐量、大容量的缓存替代方案,优化推理效率。
  • 高扩展性和灵活性:支持大规模集群部署,适用于从单节点到数千节点的多样化应用场景。

3FS 的技术原理

  • 分离式架构:基于计算与存储分离的设计,将存储资源集中管理,用高速网络(如RDMA)实现数据的高效传输。让应用以“位置无关”的方式访问存储资源,简化资源管理。
  • 链式复制与分配查询(CRAQ):为实现强一致性,3FS基于CRAQ技术。基于链式复制确保数据在多个副本间的一致性,用分配查询优化读取性能,减少延迟。
  • 无状态元数据服务:3FS推出无状态的元数据服务,基于事务性键值存储(如FoundationDB),提高系统的可扩展性,降低元数据管理的复杂性。
  • Direct I/O与RDMA优化:基于Direct I/O直接访问SSD,避免使用文件缓存,减少CPU和内存开销,用RDMA技术实现高效的数据传输,进一步提升性能。
  • KVCache技术:在推理任务中,基于KVCache缓存关键中间结果,避免重复计算,显著提高推理效率。KVCache结合高吞吐量和大容量的优势,是DRAM缓存的低成本替代方案。
  • 数据局部性优化:基于优化数据布局和访问模式,减少数据传输的延迟和带宽消耗,特别是在大规模分布式训练和推理任务中表现出色。

如何运行 3FS

1. 克隆 3FS 仓库

git clone https://github.com/deepseek-ai/3fs
AI 代码解读

2. 安装依赖

# for Ubuntu 20.04.
apt install cmake libuv1-dev liblz4-dev liblzma-dev libdouble-conversion-dev libprocps-dev libdwarf-dev libunwind-dev \
  libaio-dev libgflags-dev libgoogle-glog-dev libgtest-dev libgmock-dev clang-format-14 clang-14 clang-tidy-14 lld-14 \
  libgoogle-perftools-dev google-perftools libssl-dev ccache libclang-rt-14-dev gcc-10 g++-10 libboost1.71-all-dev

# for Ubuntu 22.04.
apt install cmake libuv1-dev liblz4-dev liblzma-dev libdouble-conversion-dev libprocps-dev libdwarf-dev libunwind-dev \
  libaio-dev libgflags-dev libgoogle-glog-dev libgtest-dev libgmock-dev clang-format-14 clang-14 clang-tidy-14 lld-14 \
  libgoogle-perftools-dev google-perftools libssl-dev ccache gcc-12 g++-12 libboost-all-dev
AI 代码解读

3. 构建3FS

cmake -S . -B build -DCMAKE_CXX_COMPILER=clang++-14 -DCMAKE_C_COMPILER=clang-14 -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
cmake --build build -j 32
AI 代码解读

如何运行 3FS 分布式存储系统

接下来将介绍如何手动部署一个六节点的 3FS 分布式存储集群(Cluster ID 为 stage),并提供每一步的操作指导,包括服务安装、配置、启动以及客户端的挂载方法。

硬件与软件环境准备

硬件配置

以下是集群中各节点的硬件要求:

节点 操作系统 IP 地址 内存 SSD 配置 RDMA 支持
meta Ubuntu 22.04 192.168.1.1 128GB - RoCE
storage1 Ubuntu 22.04 192.168.1.2 512GB 14TB × 16 RoCE
storage2 Ubuntu 22.04 192.168.1.3 512GB 14TB × 16 RoCE
storage3 Ubuntu 22.04 192.168.1.4 512GB 14TB × 16 RoCE
storage4 Ubuntu 22.04 192.168.1.5 512GB 14TB × 16 RoCE
storage5 Ubuntu 22.04 192.168.1.6 512GB 14TB × 16 RoCE

RDMA 配置

  1. 为 RDMA 网卡分配 IP 地址。每个节点支持多个 RDMA 网卡(InfiniBand 或 RoCE)。
  2. 使用 ib_write_bw 检查节点间的 RDMA 连通性。

第三方依赖

生产环境中建议在专用节点上安装以下服务:

服务 节点
ClickHouse meta
FoundationDB meta

FoundationDB 配置

  1. 确保 FoundationDB 客户端版本与服务器版本一致,或者复制对应版本的 libfdb_c.so 以保持兼容性。
  2. 找到 fdb.cluster 文件和 libfdb_c.so 的路径:/etc/foundationdb/fdb.cluster/usr/lib/libfdb_c.so

Step 0: 编译 3FS

按照运行教程中构建3FS的说明编译 3FS,生成的二进制文件位于 build/bin

部署与运行步骤

Step 1: 创建 ClickHouse 表

导入 SQL 文件到 ClickHouse:

clickhouse-client -n < ~/3fs/deploy/sql/3fs-monitor.sql
AI 代码解读

Step 2: 部署监控服务

meta 节点上安装 monitor_collector 服务。

配置与启动

  • 复制二进制文件和配置文件:
    mkdir -p /opt/3fs/{
         bin,etc}
    mkdir -p /var/log/3fs
    cp ~/3fs/build/bin/monitor_collector_main /opt/3fs/bin
    cp ~/3fs/configs/monitor_collector_main.toml /opt/3fs/etc
    
    AI 代码解读
  • 更新 monitor_collector_main.toml 配置文件,添加 ClickHouse 连接信息:
    ```toml
    [server.monitor_collector.reporter]
    type = 'clickhouse'

[server.monitor_collector.reporter.clickhouse]
db = '3fs'
host = ''
passwd = ''
port = ''
user = ''

- 启动监控服务:
```bash
cp ~/3fs/deploy/systemd/monitor_collector_main.service /usr/lib/systemd/system
systemctl start monitor_collector_main
AI 代码解读

Step 3: 部署 Admin 客户端

在所有节点上安装 admin_cli

配置与启动

  • 复制二进制文件和配置文件:
    mkdir -p /opt/3fs/{
         bin,etc}
    rsync -avz meta:~/3fs/build/bin/admin_cli /opt/3fs/bin
    rsync -avz meta:~/3fs/configs/admin_cli.toml /opt/3fs/etc
    rsync -avz meta:/etc/foundationdb/fdb.cluster /opt/3fs/etc
    
    AI 代码解读
  • 更新 admin_cli.toml 配置文件:
    ```toml
    cluster_id = "stage"

[fdb]
clusterFile = '/opt/3fs/etc/fdb.cluster'


### Step 4: 部署 Mgmtd 服务
在 **meta** 节点上安装 `mgmtd` 服务。

#### 配置与启动
- 复制二进制文件和配置文件:
```bash
cp ~/3fs/build/bin/mgmtd_main /opt/3fs/bin
cp ~/3fs/configs/{mgmtd_main.toml,mgmtd_main_launcher.toml,mgmtd_main_app.toml} /opt/3fs/etc
AI 代码解读
  • 更新配置文件,设置 node_idcluster_id 和监控地址。
  • 初始化集群并启动服务:
    /opt/3fs/bin/admin_cli -cfg /opt/3fs/etc/admin_cli.toml "init-cluster --mgmtd /opt/3fs/etc/mgmtd_main.toml 1 1048576 16"
    systemctl start mgmtd_main
    
    AI 代码解读

Step 5: 部署 Meta 服务

meta 节点上安装 meta 服务。

配置与启动

  • 复制二进制文件和配置文件:
    cp ~/3fs/build/bin/meta_main /opt/3fs/bin
    cp ~/3fs/configs/{
         meta_main_launcher.toml,meta_main.toml,meta_main_app.toml} /opt/3fs/etc
    
    AI 代码解读
  • 更新配置文件,设置 node_idmgmtd 地址。
  • 上传配置文件并启动服务:
    /opt/3fs/bin/admin_cli -cfg /opt/3fs/etc/admin_cli.toml "set-config --type META --file /opt/3fs/etc/meta_main.toml"
    systemctl start meta_main
    
    AI 代码解读

Step 6: 部署 Storage 服务

storage 节点上安装 storage 服务。

配置与启动

  • 格式化并挂载 SSD:
    for i in {
         1..16}; do
      mkfs.xfs -L data${i} /dev/nvme${i}n1
      mount -o noatime,nodiratime -L data${i} /storage/data${i}
      mkdir -p /storage/data${i}/3fs
    done
    
    AI 代码解读
  • 更新配置文件,设置 node_id 和存储路径。
  • 上传配置文件并启动服务:
    /opt/3fs/bin/admin_cli -cfg /opt/3fs/etc/admin_cli.toml "set-config --type STORAGE --file /opt/3fs/etc/storage_main.toml"
    systemctl start storage_main
    
    AI 代码解读

Step 7: 创建管理员用户、存储目标和链表

  • 创建管理员用户:
    /opt/3fs/bin/admin_cli -cfg /opt/3fs/etc/admin_cli.toml "user-add --root --admin 0 root"
    
    AI 代码解读
  • 使用 Python 脚本生成存储目标和链表:
    python ~/3fs/deploy/data_placement/src/model/data_placement.py ...
    
    AI 代码解读
  • 创建存储目标并上传链表。

Step 8: 挂载 FUSE 客户端

meta 节点上挂载 FUSE 客户端。

配置与启动

  • 复制二进制文件和配置文件。
  • 创建挂载点并启动服务:
    mkdir -p /3fs/stage
    systemctl start hf3fs_fuse_main
    
    AI 代码解读

常见问题解答

如何排查 admin_cli init-cluster 错误?

如果 mgmtd 服务启动失败,可能是因为 mgmtd_main.toml 配置错误。修改配置文件后,需清空 FoundationDB 数据并重新运行 init-cluster

如何构建单节点集群?

单节点测试环境中,可以通过在一台机器上部署多个存储服务来绕过限制

资源


❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发感兴趣,我会每日分享大模型与 AI 领域的开源项目和应用,提供运行实例和实用教程,帮助你快速上手AI技术!

🥦 AI 在线答疑 -> 智能检索历史文章和开源项目 -> 尽在微信公众号 -> 搜一搜:蚝油菜花 🥦

相关实践学习
使用PAI-EAS一键部署ChatGLM及LangChain应用
本场景中主要介绍如何使用模型在线服务(PAI-EAS)部署ChatGLM的AI-Web应用以及启动WebUI进行模型推理,并通过LangChain集成自己的业务数据。
机器学习概览及常见算法
机器学习(Machine Learning, ML)是人工智能的核心,专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能,它是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。 本课程将带你入门机器学习,掌握机器学习的概念和常用的算法。
目录
打赏
0
1
2
1
359
分享
相关文章
|
8天前
|
SQL
【YashanDB知识库】手工迁移Doris数据到崖山分布式
【YashanDB知识库】手工迁移Doris数据到崖山分布式
数据分布式存储:在海量数据面前,我们如何站稳脚跟?
数据分布式存储:在海量数据面前,我们如何站稳脚跟?
74 1
大道至简-基于ACK的Deepseek满血版分布式推理部署实战
大道至简-基于ACK的Deepseek满血版分布式推理部署实战
【YashanDB 知识库】用 yasldr 配置 Bulkload 模式作单线程迁移 300G 的业务数据到分布式数据库,迁移任务频繁出错
问题描述 详细版本:YashanDB Server Enterprise Edition Release 23.2.4.100 x86_64 6db1237 影响范围: 离线数据迁移场景,影响业务数据入库。 外场将部分 NewCIS 的报表业务放到分布式数据库,验证 SQL 性能水平。 操作系统环境配置: 125G 内存 32C CPU 2T 的 HDD 磁盘 问题出现的步骤/操作: 1、部署崖山分布式数据库 1mm 1cn 3dn 单线启动 yasldr 数据迁移任务,设置 32 线程的 bulk load 模式 2、观察 yasldr.log 是否出现如下错
大道至简-基于ACK的Deepseek满血版分布式推理部署实战
本教程演示如何在ACK中多机分布式部署DeepSeek R1满血版。
DeepSeek进阶开发与应用4:DeepSeek中的分布式训练技术
随着深度学习模型和数据集规模的扩大,单机训练已无法满足需求,分布式训练技术应运而生。DeepSeek框架支持数据并行和模型并行两种模式,通过将计算任务分配到多个节点上并行执行,显著提高训练效率。本文介绍DeepSeek中的分布式训练技术,包括配置与启动方法,帮助用户轻松实现大规模模型训练。数据并行通过`MirroredStrategy`同步梯度,适用于大多数模型;模型并行则通过`ParameterServerStrategy`异步处理大模型。DeepSeek简化了分布式环境配置,支持单机多卡和多机多卡等场景。
基于Java的Hadoop文件处理系统:高效分布式数据解析与存储
本文介绍了如何借鉴Hadoop的设计思想,使用Java实现其核心功能MapReduce,解决海量数据处理问题。通过类比图书馆管理系统,详细解释了Hadoop的两大组件:HDFS(分布式文件系统)和MapReduce(分布式计算模型)。具体实现了单词统计任务,并扩展支持CSV和JSON格式的数据解析。为了提升性能,引入了Combiner减少中间数据传输,以及自定义Partitioner解决数据倾斜问题。最后总结了Hadoop在大数据处理中的重要性,鼓励Java开发者学习Hadoop以拓展技术边界。
88 7
|
5月前
|
Redis作为PHP缓存解决方案的优势、实现方式及注意事项。Redis凭借其高性能、丰富的数据结构、数据持久化和分布式支持等特点,在提升应用响应速度和处理能力方面表现突出
本文深入探讨了Redis作为PHP缓存解决方案的优势、实现方式及注意事项。Redis凭借其高性能、丰富的数据结构、数据持久化和分布式支持等特点,在提升应用响应速度和处理能力方面表现突出。文章还介绍了Redis在页面缓存、数据缓存和会话缓存等应用场景中的使用,并强调了缓存数据一致性、过期时间设置、容量控制和安全问题的重要性。
93 5

热门文章

最新文章