Hasło słownika · · 2 min czytania
bfloat16
Chcesz przechowywać liczby treningu w połowie miejsca zajmowanego przez format 32-bitowy. Potrzebujesz szerokiego zakresu bardzo małych i dużych wartości, ale możesz zaakceptować rzadszą siatkę dokładnych liczb między nimi.
bfloat16 (BF16) to format 16-bitowy z zakresem rzędów wielkości zbliżonym do FP32, typowego formatu 32-bitowego, ale mniejszą precyzją zapisu. W porównaniu z innym formatem 16-bitowym, FP16, więcej bitów przeznacza na wykładnik — określający skalę liczby — kosztem szczegółów jej części znaczącej.
Na przykład 1,001 i 1,002 po zaokrągleniu do najbliższej liczby BF16 obie stają się 1. Nie znaczy to, że format nie zapisze ogromnej wartości: zakres i dokładność są odrębnymi cechami.
BF16 różni się od FP16 mimo identycznej liczby bitów. Szerszy zakres bywa użyteczny w Mixed Precision Training, lecz nie usuwa błędów zaokrągleń ani potrzeby dokładniejszych operacji w niektórych miejscach.
Mechanizm i szczegóły
Autorzy Cloud TPU opisują podział bitów w „Bfloat16 semantics”. Dla porównania:
| Format | Bity znaku | Bity wykładnika | Bity części ułamkowej |
|---|---|---|---|
| FP16 | 1 | 5 | 10 |
| bfloat16 | 1 | 8 | 7 |
| FP32 | 1 | 8 | 23 |
Dla liczb normalnych dochodzi wiodąca jedynka niewpisywana do tych pól. Siedem zapisanych bitów daje więc osiem bitów precyzji znaczącej.

Zasięg nie jest dokładnością
Własny eksperyment: liczba mieści się dokładnie w FP16, lecz w BF16 zaokrągla się do 1. Najbliższa większa od 1 liczba BF16 to . Za to przepełnia FP16, a BF16 zapisuje ją dokładnie. Mała znika w FP16 do zera, lecz jest normalną liczbą BF16.
Dwie wartości mogą zatem zajmować po dwa bajty, a zachowywać się inaczej. BF16 nie jest „dokładniejszym FP16”. Oszczędność dotyczy reprezentowanych tensorów, nie automatycznie całej pamięci treningu.
W Mixed Precision Training różne operacje mogą korzystać z różnych formatów. Cloud TPU mnoży wartości BF16, lecz sumuje iloczyny w FP32. Dokumentacja opisuje również konwersję: zaokrąglanie do najbliższej wartości, przy remisie do parzystej; na TPU wartości subnormalne BF16 są zerowane. Tego zachowania sprzętu nie należy utożsamiać ze wszystkimi implementacjami formatu.
Szeroki zakres zmniejsza potrzebę Loss Scaling znanego z FP16. Nie odzyskuje jednak szczegółu utraconego przez zaokrąglenie przy liczbie 1. Wybór formatu nadal wymaga sprawdzenia zachowania konkretnego modelu i operacji.