1 puan yazan GN⁺ 2025-03-01 | Henüz yorum yok. | WhatsApp'ta paylaş
  • Fire-Flyer File System(3FS), yapay zeka eğitimi ve çıkarım iş yükleri için yüksek performanslı dağıtık bir dosya sistemi olup, modern SSD’ler ve RDMA ağlarını kullanarak paylaşımlı bir depolama katmanı sunar
  • Ayrık mimari, binlerce SSD’nin iş hacmini ve yüzlerce depolama düğümünün ağ bant genişliğini birleştirerek uygulamaların konum farkındalığı olmadan depolama kaynaklarına erişmesini sağlar
  • Tutarlılık modeli, CRAQ(Chain Replication with Apportioned Queries) tabanlı güçlü tutarlılık sunar ve metadata hizmeti, FoundationDB gibi işlemsel anahtar-değer depolarını arka uç olarak kullanan durumsuz bir yapıdır
  • Başlıca iş yükleri veri hazırlama, data loader, checkpointing ve çıkarım için KVCache olup, büyük ölçekli küme okuma stres testinde yaklaşık 6.6 TiB/s toplam okuma iş hacmi kaydedilmiştir
  • Derleme sırasında geçmişteki std::shuffle kullanımı nedeniyle derleyici sürümlerine göre ikili uyumluluk sorunları bulunur; bu yüzden -DSHUFFLE_METHOD ile g++10 veya g++11 yöntemi belirtilmeli ve küme dağıtımından sonra aynı ayar korunmalıdır

3FS’nin çözmeyi hedeflediği sorun

  • Fire-Flyer File System(3FS), yapay zeka eğitimi ve çıkarım iş yüklerinin gereksinimlerini karşılamak için tasarlanmış yüksek performanslı bir dağıtık dosya sistemidir
  • Modern SSD’ler ve RDMA ağları kullanarak dağıtık uygulama geliştirmeyi basitleştiren paylaşımlı bir depolama katmanı sunar
  • Dosya arayüzü sağladığı için ayrıca yeni bir depolama API’si öğrenmek gerekmez

Mimari ve tutarlılık

  • Ayrık mimari, binlerce SSD’nin iş hacmini ve yüzlerce depolama düğümünün ağ bant genişliğini birleştirir
    • Uygulamalar depolama kaynaklarının konumunu bilmek zorunda kalmadan erişebilir
  • Güçlü tutarlılık, Chain Replication with Apportioned Queries(CRAQ) ile uygulanır
    • Amaç, uygulama kodunu basitleştirmek ve akıl yürütmesi daha kolay bir yapı sağlamaktır
  • Metadata hizmeti durumsuz olarak tasarlanmıştır ve FoundationDB gibi işlemsel anahtar-değer depolarını arka uç olarak kullanır

Desteklenen iş yükleri

  • Veri hazırlama

    • Veri analizi hattının çıktısını hiyerarşik dizin yapısı halinde düzenler
    • Büyük miktardaki ara çıktıları verimli şekilde yönetir
  • Data loader

    • Hesaplama düğümleri genelinde eğitim örneklerine rastgele erişim sağlayarak veri kümesi prefetch veya shuffle gereksinimini ortadan kaldırır
  • Checkpointing

    • Büyük ölçekli eğitim için yüksek iş hacimli paralel checkpointing’i destekler
  • Çıkarım için KVCache

    • DRAM tabanlı önbelleklemenin maliyet açısından verimli bir alternatifi olarak daha büyük kapasite ve daha yüksek iş hacmi sunar

Performans sonuçları

  • Tepe iş hacmi

    • Büyük ölçekli 3FS kümesi okuma stres testinde toplam okuma iş hacmi yaklaşık 6.6 TiB/s seviyesine ulaşmıştır
    • Test kümesi 180 depolama düğümünden oluşur
      • Her depolama düğümünde 2×200Gbps InfiniBand NIC ve 16 adet 14TiB NVMe SSD bulunur
      • Yaklaşık 500’den fazla istemci düğümü kullanılmıştır
      • Her istemci düğümü 1×200Gbps InfiniBand NIC ile yapılandırılmıştır
    • Sonuçlar, eğitim işlerinin arka plan trafiği varken ölçülmüştür
    • 3FS benchmark için fio adına USRBIO engine kullanılabilir
  • GraySort

    • smallpond, GraySort benchmark ile değerlendirilmiştir
    • Uygulama iki aşamadan oluşur
      • Anahtarların prefix bit’lerini kullanan shuffle tabanlı veri bölümleme
      • Bölüm içi sıralama
    • Her iki aşama da veriyi 3FS’den okuyup 3FS’ye yazar
    • Test kümesi yapılandırması:
      • 25 depolama düğümü
      • Düğüm başına 2 NUMA domain
      • NUMA başına 1 depolama hizmeti
      • Düğüm başına 2×400Gbps NIC
      • 50 hesaplama düğümü
      • Hesaplama düğümleri 2 NUMA domain, 192 fiziksel çekirdek, 2.2TiB RAM ve düğüm başına 1×200Gbps NIC ile yapılandırılmıştır
    • 110.5TiB verinin 8,192 bölüm boyunca sıralanması 30 dakika 14 saniye içinde tamamlanmıştır
    • Ortalama iş hacmi 3.66 TiB/dakika olmuştur
  • KVCache

    • KVCache, LLM çıkarımı sırasında önceki token’ların key/value vektörlerini decoder katmanlarında önbelleğe alarak yinelenen hesaplamalardan kaçınan bir tekniktir
    • KVCache istemcisi düğüm başına 1×400Gbps NIC kullanır
    • Okuma iş hacmi tepe noktada 40 GiB/s seviyesine ulaşmıştır
    • Aynı dönemde GC’nin temizleme işi IOPS değeri de ölçülmüştür

Belgeler ve derleme

  • Sunulan belgeler:
    • Design Notes
    • Setup Guide
    • USRBIO API Reference
    • P Specifications
  • Kaynak kod GitHub’dan klonlandıktan sonra submodule’ler başlatılır ve yamalar uygulanır
    • git submodule update --init --recursive
    • ./patches/apply.sh
  • Desteklenen bağımlılık kurulum örnekleri şu ortamlar için sunulmaktadır
    • Ubuntu 20.04
    • Ubuntu 22.04
    • openEuler 2403sp1
    • OpenCloudOS 9
    • TencentOS 4
  • Ek derleme önkoşulları:
    • libfuse 3.16.1 veya üzeri
    • FoundationDB 7.1 veya üzeri
    • Rust toolchain en az 1.75.0, önerilen 1.85.0 veya üzeri ya da en güncel kararlı sürüm
  • 3FS, build klasöründe CMake ile derlenir
    • C/C++ derleyici örnekleri clang-14, clang++-14 şeklindedir
    • Derleme türü olarak RelWithDebInfo örneği kullanılır
  • Shuffle algoritması uyumluluğu

    • Geçmişteki std::shuffle kullanımı nedeniyle g++10 ve g++11+ gibi farklı derleyici sürümleriyle derlenen ikililer birbiriyle uyumlu olmayabilir
    • Derleme sırasında -DSHUFFLE_METHOD belirtilerek tutarlı bir shuffle algoritması sabitlenmelidir
    • Mevcut kümeler, önceki dağıtımda kullanılan derleyici sürümüne uygun yöntemi kullanmalıdır
    • Yeni kümeler g++10 veya g++11 seçeneklerinden birini seçebilir, ancak dağıtımdan sonra gelecekteki tüm derlemelerde aynı ayar korunmalıdır
    • Docker derleme imajları TencentOS-4 ve OpenCloudOS-9 için sunulmaktadır
    • Test kümesinin çalıştırılması Setup Guide izlenerek yapılır
    • Sorunlar GitHub Issues üzerinden bildirilir

Henüz yorum yok.

Henüz yorum yok.