Presisi Angka: Dari FP32, FP16, BF16 hingga FP8 & FP4
I0 — Fondasi Hardware & Komputasi GPU untuk LLM
Format Angka Floating Point & Dampaknya pada VRAM
Format presisi numerik menentukan berapa byte memori yang dibutuhkan untuk menyimpan satu parameter bobot model dan satu token KV cache.
FP32 (32-bit): [1 sign] [8 exponent] [23 mantissa] --> 4 Bytes per param
FP16 (16-bit): [1 sign] [5 exponent] [10 mantissa] --> 2 Bytes per param
BF16 (16-bit): [1 sign] [8 exponent] [7 mantissa] --> 2 Bytes per param
FP8 (8-bit): [1 sign] [4/5 exp] [3/2 mantissa] --> 1 Byte per param
FP4 (4-bit): [1 sign] [2/3 exp] [1/0 mantissa] --> 0.5 Byte per param
1. Mengapa BF16 Menggantikan FP16 pada LLM Modern?
- FP16: Memiliki rentang eksponen sempit ( hingga ). Sangat rentan mengalami overflow (angka menjadi Infinity) atau underflow (angka menjadi 0) saat mengalikan matriks atensi besar.
- BF16 (Bfloat16): Mengorbankan presisi desimal (mantissa) demi mempertahankan rentang eksponen 8-bit yang sama persis dengan FP32 ( hingga ). Hasilnya: stabil tanpa perlu teknik scaling loss yang rumit.
2. Revolusi FP8 di Arsitektur Modern (Hopper & Blackwell)
- Mengurangi kebutuhan memori VRAM hingga 50% dibanding FP16/BF16.
- Menggandakan throughput pemrosesan Tensor Cores secara hardware.
- Tersedia dalam dua format: E4M3 (untuk bobot dan aktivasi dengan akurasi lebih presisi) dan E5M2 (untuk gradien dengan dynamic range lebih luas).
I0