CUDA Academy · Lezione

Compromessi sulla stabilità numerica

Dove la precisione ridotta richiede attenzione

Lezione 4 di 413 passaggi

Compromessi sulla stabilità numerica è una lezione CUDA Academy gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento CUDA Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso CUDA Academy include 4 lezioni in totale.

La velocità ha un costo

I calcoli sui Tensor Core a precisione ridotta sono veloci, ma meno bit significano più errori di arrotondamento. La stabilità numerica è l'arte di mantenere risultati affidabili. ⚖️

Che cos'è l'errore di arrotondamento

Ogni valore a bassa precisione viene arrotondato al numero rappresentabile più vicino. Questo piccolo errore di arrotondamento è innocuo una volta, ma può accumularsi dopo molti passaggi.

Underflow di FP16

L'intervallo ristretto di FP16 fa sì che i numeri piccoli diventino zero: questo fenomeno si chiama underflow. Durante il training, gradienti e pesi molto piccoli possono semplicemente scomparire.

Overflow di FP16

Lo stesso intervallo ristretto causa l'overflow: un valore grande diventa infinito. Una singola somma errata può quindi compromettere tutti i risultati successivi.

Lo scaling della loss in soccorso

Una soluzione comune è il loss scaling: aumentare i valori prima dei calcoli in FP16, così da portarli fuori dalla zona di underflow, e poi ridimensionarli nuovamente.

Perché l'accumulo in formato più ampio è utile

I Tensor Core accumulano in FP32 per un motivo preciso. Questo accumulatore più ampio impedisce che migliaia di piccole somme si discostino eccessivamente dal valore corretto.

BF16 evita i problemi di intervallo

Poiché BF16 conserva l'esponente di FP32, raramente si verificano overflow o underflow. Il suo punto debole è la minore precisione, non un intervallo ridotto.

Cancellazione catastrofica

Sottrarre due numeri vicini elimina le cifre iniziali: questo fenomeno si chiama cancellazione. La bassa precisione rende molto più evidente l'errore residuo.

Mantenga le parti critiche in FP32

Un approccio sicuro è la precisione mista: esegua le moltiplicazioni principali in FP16 o BF16, ma mantenga somme sensibili, norme e aggiornamenti in FP32.

Convalidi sempre la precisione

Non dia mai per scontato che un kernel veloce sia corretto. Lo confronti con un riferimento in FP32 e verifichi che l'errore resti entro una tolleranza accettabile.

Misurare l'errore

Un controllo semplice consiste nel calcolare la differenza assoluta rispetto a un risultato attendibile. Confronti questo errore con una soglia bassa scelta da Lei.

float err = fabsf(gpu_result - cpu_result);

Controllo rapido

Perché i Tensor Core accumulano le somme parziali in FP32 anche quando gli input sono in FP16?

Riepilogo

Ha appreso i compromessi della precisione: presti attenzione a overflow e underflow in FP16, utilizzi il loss scaling e l'accumulo in FP32, e convalidi sempre il risultato rispetto a un riferimento. 🎯

Gratis per iniziare

Impara C++ con un tutor IA — gratis

Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.

Corsi
30
Lezioni
120

Domande Frequenti

La lezione «Compromessi sulla stabilità numerica» è gratuita?

Sì — il testo completo di «Compromessi sulla stabilità numerica» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso CUDA Academy, passa a CoddyKit PRO. Il corso CUDA Academy include 4 lezioni in totale.

Cosa imparerò in «Compromessi sulla stabilità numerica»?

Dove la precisione ridotta richiede attenzione Eserciti CUDA Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare CUDA Academy?

Non è richiesta alcuna esperienza precedente. CUDA Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.

Quanto tempo richiede la lezione «Compromessi sulla stabilità numerica»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione CUDA Academy?

Sì. Ogni lezione CUDA Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Cosa calcolano i Tensor Core
  2. Precisione mista: FP16, BF16, TF32
  3. L'API dei fragment WMMA
  4. Compromessi sulla stabilità numerica
← Torna a CUDA Academy