DeepSeek’in Fire-Flyer File System’i
(github.com/deepseek-ai)- 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::shufflekullanımı nedeniyle derleyici sürümlerine göre ikili uyumluluk sorunları bulunur; bu yüzden-DSHUFFLE_METHODileg++10veyag++11yö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
fioadı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,
buildklasöründe CMake ile derlenir- C/C++ derleyici örnekleri
clang-14,clang++-14şeklindedir - Derleme türü olarak
RelWithDebInfoörneği kullanılır
- C/C++ derleyici örnekleri
-
Shuffle algoritması uyumluluğu
- Geçmişteki
std::shufflekullanımı nedeniyleg++10veg++11+gibi farklı derleyici sürümleriyle derlenen ikililer birbiriyle uyumlu olmayabilir - Derleme sırasında
-DSHUFFLE_METHODbelirtilerek 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++10veyag++11seç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
- Geçmişteki
Henüz yorum yok.