3FS的關鍵特性與優勢

Fire-Flyer文件系統(3FS)專為解決AI訓練和推理工作負載的挑戰而設計,具有以下關鍵特性:

性能與可用性

多樣化工作負載支持

3FS的性能表現

1. 峰值吞吐量

在一個由180個存儲節點組成的大型3FS集群上,每個節點配備2×200Gbps InfiniBand網卡和16個14TiB NVMe SSD,使用約500+客戶端節點進行讀取壓力測試(每個客戶端有1x200Gbps InfiniBand網卡),最終聚合讀取吞吐量達到約6.6 TiB/s,并且這一性能在有訓練作業的背景流量下仍然保持穩定。

2. GraySort基準測試

DeepSeek使用基于3FS的Smallpond進行GraySort基準測試,這是衡量大規模數據排序性能的標準測試。其實現采用兩階段方法:

  1. 1. 通過鍵的前綴位進行shuffle實現數據分區
  2. 2. 在分區內部進行排序

測試集群由25個存儲節點(每節點2個NUMA域/節點,每NUMA 1個存儲服務,2×400Gbps網卡)和50個計算節點(每節點2個NUMA域,192個物理核心,2.2 TiB RAM,1×200Gbps網卡)組成。對110.5 TiB數據進行8,192個分區的排序在30分14秒內完成,平均吞吐量達到3.66 TiB/分鐘。

3. KVCache性能

KVCache是優化LLM推理過程的技術,通過緩存解碼器層中之前token的鍵值向量避免重復計算。3FS的KVCache實現提供了顯著的性能優勢:

使用3FS

獲取源代碼

# 從GitHub克隆3FS倉庫
git clone https://github.com/deepseek-ai/3fs

# 初始化子模塊
cd 3fs
git submodule update --init --recursive
./patches/apply.sh

安裝依賴

# 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

# 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

還需要安裝其他構建前提條件:

構建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

可以按照設置指南的說明運行測試集群。

Smallpond數據處理框架

Smallpond是一個構建在DuckDB和3FS之上的輕量級數據處理框架,具有以下特點:

安裝Smallpond

Smallpond支持Python 3.8到3.12:

pip install smallpond

快速入門示例

首先下載示例數據:

# 下載示例數據
wget https://duckdb.org/data/prices.parquet

然后可以使用以下Python代碼處理數據:

import smallpond

# 初始化會話
sp = smallpond.init()

# 加載數據
df = sp.read_parquet("prices.parquet")

# 處理數據
df = df.repartition(3, hash_by="ticker")
df = sp.partial_sql("SELECT ticker, min(price), max(price) FROM {0} GROUP BY ticker", df)

# 保存結果
df.write_parquet("output/")
# 顯示結果
print(df.to_pandas())

Smallpond已在GraySort基準測試中進行了評估,在由50個計算節點和25個存儲節點組成的3FS集群上,成功在30分14秒內對110.5TiB數據進行排序,平均吞吐量達3.66TiB/分鐘。

本文轉載自:一文詳解:DeepSeek 第五天開源的 3FS 文件系統

上一篇:

DeepSeek 第四天開源的模型設計套件

下一篇:

DeepSeek 第二天開源的 DeepEP
#你可能也喜歡這些API文章!

我們有何不同?

API服務商零注冊

多API并行試用

數據驅動選型,提升決策效率

查看全部API→
??

熱門場景實測,選對API

#AI文本生成大模型API

對比大模型API的內容創意新穎性、情感共鳴力、商業轉化潛力

25個渠道
一鍵對比試用API 限時免費

#AI深度推理大模型API

對比大模型API的邏輯推理準確性、分析深度、可視化建議合理性

10個渠道
一鍵對比試用API 限時免費