Fire-Flyer File System dari DeepSeek
(github.com/deepseek-ai)- Fire-Flyer File System(3FS) adalah sistem file terdistribusi berkinerja tinggi untuk beban kerja pelatihan dan inferensi AI, yang memanfaatkan SSD modern dan jaringan RDMA untuk menyediakan lapisan penyimpanan bersama
- Arsitektur terpisah menggabungkan throughput ribuan SSD dan bandwidth jaringan dari ratusan node penyimpanan, sehingga aplikasi dapat mengakses sumber daya penyimpanan tanpa perlu sadar lokasi
- Model konsistensinya menyediakan konsistensi kuat berbasis CRAQ(Chain Replication with Apportioned Queries), sementara layanan metadata berarsitektur stateless dengan backend penyimpanan key-value transaksional seperti FoundationDB
- Beban kerja utamanya mencakup persiapan data, dataloader, checkpointing, dan KVCache untuk inferensi; dalam uji stres baca pada klaster berskala besar, tercatat throughput baca agregat sekitar 6,6 TiB/s
- Saat build, karena penggunaan
std::shuffledi masa lalu, ada masalah kompatibilitas biner antarversi compiler; metodeg++10ataug++11harus dinyatakan dengan-DSHUFFLE_METHOD, lalu pengaturan yang sama dipertahankan setelah deployment klaster
Masalah yang ingin diselesaikan 3FS
- Fire-Flyer File System(3FS) adalah sistem file terdistribusi berkinerja tinggi yang dirancang untuk menangani kebutuhan beban kerja pelatihan dan inferensi AI
- Memanfaatkan SSD modern dan jaringan RDMA untuk menyediakan lapisan penyimpanan bersama yang menyederhanakan pengembangan aplikasi terdistribusi
- Karena menyediakan antarmuka file, tidak perlu mempelajari API penyimpanan baru yang terpisah
Arsitektur dan konsistensi
- Arsitektur terpisah menggabungkan throughput ribuan SSD dan bandwidth jaringan dari ratusan node penyimpanan
- Aplikasi dapat mengakses sumber daya penyimpanan tanpa harus sadar lokasi
- Konsistensi kuat diimplementasikan dengan Chain Replication with Apportioned Queries(CRAQ)
- Bertujuan menghadirkan struktur yang menyederhanakan kode aplikasi dan mudah dinalar
- Layanan metadata dirancang stateless, dengan penyimpanan key-value transaksional seperti FoundationDB sebagai backend
Beban kerja yang didukung
-
Persiapan data
- Mengorganisasi output pipeline analisis data ke dalam struktur direktori hierarkis
- Mengelola keluaran antara dalam jumlah besar secara efisien
-
Dataloader
- Memungkinkan akses acak ke sampel pelatihan di seluruh node komputasi, sehingga menghilangkan kebutuhan prefetch dataset atau shuffle
-
Checkpointing
- Mendukung checkpointing paralel ber-throughput tinggi untuk pelatihan berskala besar
-
KVCache untuk inferensi
- Menyediakan kapasitas lebih besar dan throughput tinggi sebagai alternatif yang lebih hemat biaya dibanding caching berbasis DRAM
Hasil performa
-
Throughput puncak
- Dalam uji stres baca pada klaster 3FS berskala besar, throughput baca agregat mencapai sekitar 6,6 TiB/s
- Klaster uji terdiri dari 180 node penyimpanan
- Setiap node penyimpanan dilengkapi 2×200Gbps InfiniBand NIC dan 16 SSD NVMe 14TiB
- Digunakan sekitar 500+ node klien
- Setiap node klien terdiri dari 1×200Gbps InfiniBand NIC
- Hasil diukur saat terdapat traffic latar belakang dari pekerjaan pelatihan
- Untuk benchmark 3FS, engine USRBIO untuk
fiodapat digunakan
-
GraySort
- smallpond dievaluasi dengan benchmark GraySort
- Implementasinya terdiri dari dua tahap
- Partisi data berbasis shuffle menggunakan bit prefix dari key
- Pengurutan di dalam partisi
- Kedua tahap membaca data dari 3FS dan menulis data ke 3FS
- Konfigurasi klaster uji:
- 25 node penyimpanan
- 2 domain NUMA per node
- 1 layanan penyimpanan per NUMA
- 2×400Gbps NIC per node
- 50 node komputasi
- Node komputasi terdiri dari 2 domain NUMA, 192 core fisik, RAM 2,2TiB, dan 1×200Gbps NIC per node
- Pekerjaan mengurutkan data 110,5TiB ke dalam 8.192 partisi selesai dalam 30 menit 14 detik
- Throughput rata-ratanya adalah 3,66 TiB/min
-
KVCache
- KVCache adalah teknik dalam proses inferensi LLM yang menyimpan cache vektor key/value dari token sebelumnya pada layer decoder untuk menghindari komputasi berulang
- Klien KVCache menggunakan 1×400Gbps NIC per node
- Throughput baca mencapai hingga 40 GiB/s pada puncaknya
- IOPS operasi penghapusan oleh GC pada periode yang sama juga diukur
Dokumentasi dan build
- Dokumentasi yang disediakan:
- Design Notes
- Setup Guide
- USRBIO API Reference
- P Specifications
- Kode sumber dikloning dari GitHub, lalu submodule diinisialisasi dan patch diterapkan
git submodule update --init --recursive./patches/apply.sh
- Contoh instalasi dependensi yang didukung disediakan untuk lingkungan berikut
- Ubuntu 20.04
- Ubuntu 22.04
- openEuler 2403sp1
- OpenCloudOS 9
- TencentOS 4
- Prasyarat build tambahan:
- libfuse 3.16.1 atau lebih baru
- FoundationDB 7.1 atau lebih baru
- Rust toolchain minimal 1.75.0, disarankan 1.85.0 atau lebih baru, atau versi stabil terbaru
- 3FS dibuild dengan CMake di folder
build- Contoh compiler C/C++ adalah
clang-14,clang++-14 - Contoh tipe build yang digunakan adalah
RelWithDebInfo
- Contoh compiler C/C++ adalah
-
Kompatibilitas algoritme shuffle
- Karena penggunaan
std::shuffledi masa lalu, biner yang dibuild dengan versi compiler berbeda sepertig++10dang++11+mungkin tidak kompatibel - Saat build,
-DSHUFFLE_METHODharus dinyatakan untuk menetapkan algoritme shuffle yang konsisten - Klaster yang sudah ada harus menggunakan metode yang sesuai dengan versi compiler yang digunakan pada deployment sebelumnya
- Klaster baru dapat memilih salah satu dari
g++10ataug++11, tetapi setelah deployment harus mempertahankan pengaturan yang sama untuk semua build berikutnya - Image build Docker disediakan untuk TencentOS-4 dan OpenCloudOS-9
- Menjalankan klaster uji mengikuti Setup Guide
- Issue dilaporkan melalui GitHub Issues
- Karena penggunaan
Belum ada komentar.