BF16, FP16 czy FP8: w jakim formacie trenować?
Tłumaczenie automatyczne
Ten artykuł został automatycznie przetłumaczony z angielskiego oryginału.
Zacznij od BF16, jeśli GPU i oprogramowanie do treningu go obsługują. Użyj FP16 ze skalowaniem funkcji straty, gdy BF16 jest niedostępny lub pomiary dla danego obciążenia wskazują przewagę FP16. Testuj FP8 za pomocą obsługiwanej implementacji mieszanej precyzji, gdy przepustowość treningu uzasadnia dodatkowe kontrole numeryczne.
Mieszana precyzja wykorzystuje różne formaty dla różnych operacji i stanów. Wybór BF16 lub FP8 nie oznacza, że każdy tensor korzysta z tego formatu.
Zakres i precyzja rozwiązują różne problemy
Wykładnik określa zakres wartości. Bity części ułamkowej określają, jak blisko siebie mogą leżeć sąsiednie reprezentowalne wartości. BF16 zachowuje tę samą liczbę bitów wykładnika co FP32, ale ma mniej bitów części ułamkowej. FP16 oferuje większą precyzję niż BF16 w swoim węższym zakresie.
| Format | Bity wykładnika / części ułamkowej | Znaczenie praktyczne |
|---|---|---|
| BF16 | 8 / 7 | Szeroki zakres; zwykle nie wymaga skalowania funkcji straty |
| FP16 | 5 / 10 | Małe gradienty mogą być zbyt małe do reprezentacji; użyj skalowania funkcji straty |
| FP8 E4M3 | 4 / 3 | Większa precyzja niż E5M2, mniejszy zakres |
| FP8 E5M2 | 5 / 2 | Szerszy zakres dla tensorów takich jak gradienty |
W FP16 skalowanie funkcji straty mnoży jej wartość przed obliczeniami wstecznymi, a następnie odwraca skalowanie gradientów przed aktualizacją optymalizatora. Pomaga to zachować reprezentowalność małych gradientów. Nadal trzeba obsługiwać przepełnienia.
Dokumentacja Transformer Engine firmy NVIDIA opisuje typową konfigurację hybrydową FP8: E4M3 dla tensorów w przebiegu w przód i E5M2 dla tensorów w przebiegu wstecznym, ze skalowaniem dobranym do tensorów. Formaty Blackwell ze skalowaniem blokowym dodają inne konfiguracje; sama obsługa sprzętowa nie wybiera jednej z nich dla twojego modelu.
Ustal numeryczny punkt odniesienia
Uruchom reprezentatywny fragment treningu z tą samą kolejnością danych i ustawieniami optymalizatora. Porównaj maksymalne zużycie pamięci, czas kroku, przebieg funkcji straty, wartości nieskończone i NaN oraz jakość na danych odłożonych do ewaluacji. Zachowaj operacje wrażliwe numerycznie i stany optymalizatora w precyzji wymaganej przez implementację.
Szybszy przebieg, który staje się rozbieżny lub nie spełnia wymagania jakości, nie obniża kosztu treningu. Z drugiej strony stabilny punkt odniesienia w BF16 może wystarczyć bez dodatkowej pracy nad FP8.
Sekcja LLM Engineering Guide o treningu z mieszaną precyzją zawiera zakresy formatów i opublikowane wyniki treningu.