1 poin oleh GN⁺ 2025-03-01 | Belum ada komentar. | Bagikan ke WhatsApp
  • 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::shuffle di masa lalu, ada masalah kompatibilitas biner antarversi compiler; metode g++10 atau g++11 harus 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 fio dapat 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
  • Kompatibilitas algoritme shuffle

    • Karena penggunaan std::shuffle di masa lalu, biner yang dibuild dengan versi compiler berbeda seperti g++10 dan g++11+ mungkin tidak kompatibel
    • Saat build, -DSHUFFLE_METHOD harus 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++10 atau g++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

Belum ada komentar.

Belum ada komentar.