Computerarithmetiek
Wat is de belangrijkste reden dat bij AI-training met gemengde precisie het grootste deel van de berekeningen in FP16 of bfloat16 gebeurt, terwijl de oorspronkelijke waarde van de gewichten (master weights) in FP32 wordt bewaard?
- ABij het optellen van kleine bijwerkingen bij de gewichten verdwijnt de bijwerking door informatieverlies in een formaat met lage precisie
- BFP32 is sneller dan FP16, dus alle berekeningen met gewichten worden aan FP32 overgelaten
- CFP16 en bfloat16 mogen volgens de afspraak geen gewichtswaarden in het geheugen opslaan
Antwoord en toelichting tonen
Antwoord: A. Bij het optellen van kleine bijwerkingen bij de gewichten verdwijnt de bijwerking door informatieverlies in een formaat met lage precisie
Bij training wordt telkens een zeer kleine waarde, "leersnelheid × gradiënt", bij de gewichten opgeteld. FP16 en bfloat16 hebben een korte mantisse; als de bijwerking te klein is ten opzichte van het gewicht, blijft de som door afronding gelijk aan het oorspronkelijke gewicht en verdwijnt de bijwerking (informatieverlies). Daarom worden de gewichten in FP32 bewaard, zodat de bijwerkingen correct worden opgebouwd, en wordt voor de voorwaartse en achterwaartse berekeningen een kopie met lagere precisie gebruikt. Rekenen gaat sneller bij lagere precisie, en waarden met lage precisie kunnen wel worden opgeslagen.