FP8 (Float Point 8-bit)
iaDéfinition
FP8 (8-bit Floating Point) est un format de representation numerique ultra-compact utilise pour l'entrainement et l'inference des LLMs, introduit avec les GPU NVIDIA H100. Il existe en deux variantes : E4M3 (4 bits d'exposant, 3 bits de mantisse, plage jusqu'a 448) et E5M2 (5 bits d'exposant, 2 bits de mantisse, plage jusqu'a 57344). E4M3 est utilise pour les activations (plage plus petite mais plus de precision), E5M2 pour les gradients (plage plus grande pour les gradients qui varient beaucoup). L'avantage principal de FP8 : les tensor cores FP8 du H100 et H200 offrent 2x le throughput des tensor cores BF16 (1979 TFLOPS FP8 vs 989 TFLOPS BF16 sur H100 SXM). La memoire est reduite de 50% par rapport a BF16. Pour des LLMs a l'echelle de 70B-400B params, cette reduction de memoire est significative et le gain de throughput est considerable. L'entrainement en FP8 (Transformer Engine, NVIDIA) utilise un scaling dynamique par tenseur (delayed scaling) : un facteur d'echelle est calcule dynamiquement pour chaque tenseur afin de maximiser l'utilisation de la plage FP8 sans overflow. Les accumulations dans les matrix multiplications restent en FP32 pour la precision. Cette approche a ete validee sur des modeles jusqu'a 540B parametres (PaLM-2) avec des degradations negliGeables. En inference, FP8 via vLLM et TensorRT-LLM permet de doubler le throughput vs FP16/BF16 sur H100, a un cout de 0.3-1% de degradation sur les benchmarks standards. C'est le format recommande pour la production sur H100 quand la latence et le throughput sont critiques. Les GPU qui supportent FP8 nativement : NVIDIA H100/H200/B100/B200, AMD MI300X (avec ROCm 6+), Google TPU v5. Les GPU precedents (A100, etc.) ne supportent pas FP8 nativement et doivent utiliser INT8 ou BF16.
Entrainement FP8 avec Transformer Engine
import transformer_engine.pytorch as te
from transformer_engine.common.recipe import Format, DelayedScaling
# Remplacer les couches standard par des couches FP8-aware
model = te.TransformerLayer(
hidden_size=4096,
ffn_hidden_size=16384,
num_attention_heads=32,
fuse_qkv_params=True
)
# Configurer le format FP8
fp8_recipe = DelayedScaling(
fp8_format=Format.HYBRID, # E4M3 activations + E5M2 gradients
amax_history_len=16, # Historique pour scaling adaptatif
amax_compute_algo='max'
)
# Contexte d'entrainement FP8
with te.fp8_autocast(enabled=True, fp8_recipe=fp8_recipe):
loss = model(input_ids, attention_mask).loss
Articles liés
Expert en cybersécurité offensive et intelligence artificielle. Pentest, audit et développement IA sur-mesure.
Services
- Audit Infrastructure
- Audit Kubernetes
- Audit Microsoft 365
- Audit Sécurité Réseau
- Analyse de Risques
- Audit Active Directory
- Audit Application Web
- Audit Cloud (AWS/Azure/GCP)
- Audit Messagerie
- Audit API (OWASP Top 10)
- Audit DevSecOps & CI/CD
- Audit Code Source (SAST)
- Audit Postes de Travail
- Audit Sauvegarde & Résilience
- Audit OT/SCADA (IEC 62443)
- Développement IA
- Formations
Ressources
Projets & Outils
© 2026 Ayi NEDJIMI Consultants. Tous droits réservés.
Un projet cybersécurité ?
Expert dispo · Réponse 24h