FP8
FP8'in ne olduğunu, E4M3 ile E5M2'nin nasıl çalıştığını ve ölçeklendirme, donanım desteği ile karma duyarlılığın AI eğitimini ve çıkarımını nasıl iyileştirdiğini öğren.
FP8 veya 8-bit kayan noktalı sayı, her değeri sekiz bitte saklayan düşük hassasiyetli bir sayısal biçimdir. Yapay zeka sistemleri, uyumlu donanımlarda bellek trafiğini azaltmak ve matris çarpımlarını, evrişimleri (konvolüsyonları) ve diğer maliyetli işlemleri hızlandırmak için FP8 kullanır. FP16 veya FP32 ile karşılaştırıldığında daha az farklı değer temsil eder; bu nedenle başarılı FP8 iş akışları, model kalitesini korumak için hızlı düşük hassasiyetli hesaplamayı ölçeklendirme ve seçmeli daha yüksek hassasiyetli işlemlerle birleştirir.
Link to this sectionFP8 Sayıları Nasıl Temsil Eder?#
Kayan noktalı bir değer; bir işaret, aralığı kontrol eden bir üs ve ayrıntıyı kontrol eden bir mantis (kesir kısmı) içerir. FP8, yaygın olarak PyTorch floating-point data types belgesinde belirtilen iki biçimde ortaya çıkar:
- E4M3: Bir işaret biti, dört üs biti ve üç mantis biti. Daha fazla sayısal ayrıntı ancak daha dar bir aralık sağlar.
- E5M2: Bir işaret biti, beş üs biti ve iki mantis biti. Daha geniş bir aralığı kapsar ancak değerleri daha agresif bir şekilde yuvarlar.
E4M3 genellikle ağırlıklar ve aktivasyonlar için uygundur; E5M2 ise geniş değer aralıklarına sahip gradyanları daha iyi barındırabilir. Kesin varyantlar, AMD low-precision floating-point documentation sayfasında gösterildiği gibi platformlar arasında farklılık gösterir; bu nedenle bir FP8 modeli, her hızlandırıcı ve çalışma zamanı (runtime) arasında otomatik olarak taşınabilir değildir.
Sekiz bit bir tensörün orijinal aralığını ve ayrıntısını tam olarak temsil edemediğinden, çerçeveler genellikle dönüştürme öncesinde değerleri bir ölçeklendirme faktörüyle çarpar. NVIDIA’s FP8 scaling primer, gelecekteki ölçekleri önceden gözlemlenen maksimum değerlerden türeten gecikmeli ölçeklendirme gibi stratejileri tanımlar. Ölçeklendirme; her işlemin daha yüksek hassasiyette çalışmasını gerektirmeden taşmayı (overflow), yetersiz akmayı (underflow) ve doygunluğu (saturation) sınırlandırır.
Link to this sectionFP8 ve İlgili Biçimler#
FP8, yaygın yapay zeka veri türleri arasında orta bir noktada yer alır:
- FP16 veya yarım hassasiyet: İki kat daha fazla bit kullanarak daha yüksek sayısal ayrıntı ve genellikle daha basit bir eğitim sunar. FP8, depolama alanını ve bant genişliğini daha da azaltabilir ancak daha dikkatli bir ölçeklendirme gerektirir.
- BF16: FP16'ya göre daha az kesirli ayrıntı sağlarken geniş bir üs aralığını korur. Genellikle FP8 eğitiminde daha yüksek hassasiyetli yardımcı olarak kullanılır.
- INT8: Kayan noktalı değerler yerine tam sayıları temsil eder. INT8 model quantization süreci, gerçek değerleri sabit tam sayı seviyelerine eşlemek için normalde ölçeklere güvenirken, FP8 doğal olarak düzensiz aralıklar için bir üssü korur.
- FP4: Yalnızca dört bit kullanır ve daha yüksek sıkıştırma sağlayabilir, ancak son derece sınırlı aralığı ve ayrıntı düzeyi genellikle doğruluğun korunmasını daha zor hale getirir.
FP8, her tensör için kullanılan veri türü olmaktan ziyade sıklıkla bir mixed-precision iş akışının bir parçasını oluşturur. Biriktirme (accumulation), normalleştirme, iyileştirici (optimizer) durumu veya hassas katmanlar BF16, FP16 veya FP32'de kalabilir. Ayrıca sayısal hassasiyet, doğru model tahminlerinin sayısını ölçen precision evaluation metric kavramından farklıdır.
Link to this sectionGerçek Dünya Uygulamaları#
İki pratik uygulama, FP8'in neden önemli olduğunu gösterir:
-
Büyük model eğitimi: Transformer eğitimi, defalarca büyük matris çarpımları gerçekleştirir. FP8 bilincine sahip bir çerçeve, kararlılık gerektiren yerlerde daha yüksek hassasiyeti korurken uygun ağırlıkları ve aktivasyonları FP8'e dönüştürebilir. Bu, bant genişliği talebini düşürür ve eğitim verimini artırabilir. TorchAO quantized-training workflow iş akışı, maksimum hızı aykırı değerlerin (outliers) daha iyi ele alınmasıyla takas eden tensör tabanlı ve satır tabanlı ölçeklendirme seçenekleri içerir.
-
Yüksek verimli vizyon çıkarımı (inference): Bir veri merkezi, yüzlerce perakende, trafik veya üretim video akışında nesne tespiti çalıştırabilir. FP8 uyumlu çekirdekler, uygun model katmanlarının kullandığı süreyi ve belleği azaltabilir; bu da potansiyel olarak inference latency değerini düşürebilir ve eşzamanlı akış kapasitesini artırabilir. TensorRT quantized-types guide kılavuzu, açık nicemleme (quantize) ve nicemlemesizleştirme (dequantize) işlemlerinin FP8 yürütmesini nasıl tanımladığını açıklar.
Link to this sectionSayısal Riskler ve Donanım Desteği#
Zayıf ölçeklendirme, büyük değerlerin doygunluğa ulaşmasına ve küçük değerlerin sıfıra yuvarlanmasına neden olabilir. Tek bir ölçek tüm bir tensörü kapsadığında aykırı değerler özellikle sorunlu hale gelir. Bu etkiler güven puanlarını değiştirebilir, eğitimi istikrarsızlaştırabilir veya algılama doğruluğunu azaltabilir; bu nedenle geliştiriciler dönüştürülen modeli daha yüksek hassasiyetli taban çizgisiyle (baseline) doğrulmalıdır.
Yerel donanım desteği de aynı derecede önemlidir. NVIDIA Hopper architecture mimarisi FP8 Tensor Core hızlandırmasını sunarken, daha eski olan NVIDIA A100 GPU ise FP16, BF16 ve INT8'i destekler ancak yerel FP8 hesaplamasını desteklemez. Bu nedenle bir dağıtım hassasiyeti seçilmeden önce TensorRT hardware support matrix tablosu kontrol edilmelidir.
Link to this sectionPratikte FP8 ile Çalışmak#
Bu küçük PyTorch örneği, E4M3 dönüşümünü ve FP8 değerleri FP32'ye geri yüklendiğinde ortaya çıkan yuvarlama hatasını gösterir:
import torch
values = torch.tensor([0.1, 1.0, 3.14, 100.0], dtype=torch.float32)
# Convert to E4M3 FP8, then restore the values for comparison.
fp8_values = values.to(torch.float8_e4m3fn)
restored = fp8_values.to(torch.float32)
absolute_error = (restored - values).abs()
print(torch.stack((values, restored, absolute_error), dim=1))The documented Ultralytics TensorRT export workflow provides FP16 and calibrated INT8 options for Ultralytics YOLO rather than a one-argument FP8 export. FP8 deployment therefore requires a compatible downstream conversion toolchain. Whatever precision is selected, use Ultralytics benchmark mode on the target GPU to compare latency, throughput, memory use, and task accuracy before production deployment.






