Non-determinism and non-reproducibility present significant challenges in deep learning, leading to inconsistent results across runs and platforms. These issues stem from two origins: random number generation and floating-point computation. While randomness can be controlled through deterministic configurations, floating-point inconsistencies remain largely unresolved. To address this, we introduce RepDL, an open-source library that ensures deterministic and bitwise-reproducible deep learning training and inference across diverse computing environments. RepDL achieves this by enforcing correct rounding and order invariance in floating-point computation. The source code is available at https://github.com/microsoft/RepDL .
- ID Articolo: 2510.09180
- Titolo: RepDL: Bit-level Reproducible Deep Learning Training and Inference
- Autori: Peichen Xie, Xian Zhang, Shuo Chen (Microsoft Research)
- Classificazione: cs.LG cs.SE
- Data di Pubblicazione: 10 ottobre 2024
- Link Articolo: https://arxiv.org/abs/2510.09180
- Link Codice: https://github.com/microsoft/RepDL
Il non-determinismo e l'irreproducibilità nell'apprendimento profondo causano risultati incoerenti tra esecuzioni e piattaforme diverse. Questi problemi derivano da due fonti fondamentali: la generazione di numeri casuali e le operazioni in virgola mobile. Sebbene la casualità possa essere controllata mediante configurazioni deterministiche, l'incoerenza in virgola mobile rimane un problema non risolto adeguatamente. Per questo motivo, gli autori introducono RepDL, una libreria open-source che garantisce l'addestramento e l'inferenza dell'apprendimento profondo deterministici e riproducibili a livello di bit attraverso l'applicazione dell'arrotondamento corretto e dell'invarianza dell'ordine in diversi ambienti computazionali.
L'apprendimento profondo affronta due problemi critici:
- Non-determinismo: L'esecuzione ripetuta dello stesso compito con gli stessi input e sistema produce risultati diversi (incoerenza tra esecuzioni)
- Irreproducibilità: L'esecuzione dello stesso compito su sistemi diversi produce risultati diversi (incoerenza tra piattaforme)
Questi problemi causano:
- Complicazioni nella distribuzione e nel debug dei modelli in ambienti di produzione
- Compromissione della correttezza delle applicazioni multipiattaforma
- Riduzione dell'affidabilità dei risultati pubblicati
- Impatto sulla credibilità dei sistemi di IA in settori sensibili
Sebbene l'industria e il mondo accademico abbiano proposto numerose soluzioni, l'incoerenza numerica rimane un problema aperto nell'apprendimento profondo. Gli approcci esistenti si concentrano principalmente sul controllo dei generatori di numeri casuali, ma affrontano insufficientemente i problemi dei calcoli in virgola mobile.
Gli autori identificano due fonti fondamentali del problema: i generatori di numeri casuali e i calcoli in virgola mobile. Rispetto al problema dei numeri casuali, che ha già soluzioni adeguate, il problema dei calcoli in virgola mobile è più complesso e richiede soluzioni specializzate.
- Analisi del Problema: Analisi sistematica delle fonti del non-determinismo e dell'irreproducibilità nell'apprendimento profondo, classificate in due categorie: generazione di numeri casuali e calcoli in virgola mobile
- Principi di Progettazione: Propone due principi di progettazione fondamentali: arrotondamento corretto (correct rounding) e invarianza dell'ordine (order invariance)
- Libreria RepDL: Sviluppa la libreria open-source RepDL che implementa l'addestramento e l'inferenza dell'apprendimento profondo riproducibili a livello di bit
- Compatibilità con PyTorch: Fornisce API compatibili con PyTorch, supportando operazioni di apprendimento profondo, funzioni differenziabili, moduli di reti neurali e ottimizzatori
- Utilizzo: Inizializzazione dei pesi, mescolamento dei dati, regolarizzazione dropout, aumento dei dati
- Problema: Semi diversi, algoritmi RNG incoerenti, sequenze di chiamate non deterministiche in ambienti multithreading
- Soluzione: Utilizzo di algoritmi RNG riproducibili (come MT19937), implementazione thread-safe, seed di base fisso
Problema più complesso, suddiviso in due sottocategorie:
2.1 Precisione delle Operazioni di Base
- Implementazioni diverse di funzioni matematiche di base tra sistemi diversi
- Differenze di precisione nelle istruzioni hardware (ad esempio, variazioni di precisione dell'istruzione RCP tra CPU x86)
2.2 Ordine di Calcolo
- Sensibilità all'ordine causata dalla non-associatività delle operazioni in virgola mobile
- Fattori di non-determinismo: operazioni atomiche, percorsi di codice dinamici, batch processing dinamico e caching
- Fattori di irreproducibilità: variabilità del software, ottimizzazioni del compilatore
- Conformità al principio di arrotondamento corretto dello standard IEEE-754
- Utilizzo delle regole di arrotondamento IEEE-754 standard per arrotondare i risultati di numeri reali a precisione infinita
- Eliminazione dell'ambiguità nella precisione numerica
- Mantenimento dell'invarianza dell'ordine per le combinazioni di operazioni di base
- Implementazione di ogni operazione utilizzando lo stesso tipo di operazioni di base e lo stesso ordine
- Assegnazione di API diverse per ordini di calcolo diversi
- Utilizzo di librerie matematiche con arrotondamento corretto o algoritmi ad alta precisione
- Implementazione di versioni con arrotondamento corretto per operazioni aritmetiche, radice quadrata, funzioni esponenziali, funzioni logaritmiche, ecc.
- Evitare differenze di implementazione dipendenti dall'hardware
Fornisce due ordini di sommatoria:
- Sommatoria Sequenziale: Versione predefinita, cache-friendly, adatta alla maggior parte dei casi
- Sommatoria Accoppiata: Versione alternativa, aumenta il parallelismo
Per l'analisi dei livelli completamente connessi e dei livelli di convoluzione bidimensionale:
- Livello completamente connesso:
t_fc = B × M compiti di sommatoria indipendenti, ogni compito somma n_fc = N elementi - Livello di convoluzione:
t_conv = B × O × W × H compiti di sommatoria indipendenti, ogni compito somma n_conv = I × K_w × K_h elementi
- Utilizzo del grafo di calcolo per definire esplicitamente l'ordine di calcolo
- Assegnazione di nomi API diversi per implementazioni di grafi di calcolo diversi della stessa funzione
- Evitare trasformazioni matematicamente equivalenti ma con risultati diversi in virgola mobile
- Disabilitazione delle opzioni che causano ottimizzazioni matematiche non sicure
- Abilitazione dell'opzione di contrazione dell'espressione in virgola mobile (operazioni FMA)
- Tipi di Dati: Supporto per virgola mobile a precisione singola (float32)
- Compatibilità: Fornisce API compatibili con PyTorch
- Supporto Operazioni: Operazioni di apprendimento profondo, funzioni differenziabili, moduli di reti neurali, ottimizzatori
Analisi con ResNet-50 come esempio:
- I livelli di convoluzione dominano la complessità computazionale
- Più livelli di convoluzione con
t_conv = B × 256 × 56 × 56 = B × 802816 - GPU NVIDIA A100 con 6912 core CUDA
- Anche con B=1, il numero di core è molto inferiore a t_conv, la sommatoria sequenziale è efficiente
RepDL implementa risultati coerenti a livello di bit, garantendo:
- Coerenza di esecuzioni multiple sullo stesso sistema
- Coerenza tra sistemi CPU o GPU diversi
- Riproducibilità completa dei processi di addestramento e inferenza
- Il passaggio da librerie non deterministiche a RepDL causa un lieve calo delle prestazioni
- Il degrado delle prestazioni è accettabile, le ottimizzazioni future possono mitigarlo
L'articolo cita numerosi studi in campi di ricerca correlati:
- Algoritmi di Sommatoria in Virgola Mobile Riproducibile: Algoritmi di sommatoria indipendenti dall'ordine di Ahrens et al.
- Riproducibilità dell'Apprendimento Profondo: Lavoro di Chen et al. sui modelli di apprendimento profondo riproducibili
- Librerie Matematiche con Arrotondamento Corretto: Libreria MPFR e librerie matematiche con arrotondamento corretto ad alte prestazioni
- Analisi della Precisione Numerica: Ricerca sulla precisione delle funzioni matematiche con diverse precisioni
RepDL, risolvendo i problemi dei calcoli in virgola mobile, fornisce una base per lo sviluppo affidabile dei modelli e la distribuzione coerente dei modelli. La libreria implementa con successo l'apprendimento profondo deterministico e riproducibile in diversi ambienti computazionali.
- Ottimizzazione delle Prestazioni Insufficiente: La versione attuale non è completamente ottimizzata, con perdite di prestazioni
- Supporto di Precisione Limitato: Supporta solo precisione singola (float32), il supporto per tipi a bassa precisione presenta sfide
- Specificità dell'Hardware: Caratteristiche non standard e specifiche dell'hardware dei calcoli a bassa precisione (come Tensor Cores)
- Ulteriore ottimizzazione delle prestazioni per ridurre il degrado delle prestazioni
- Supporto per tipi di dati in virgola mobile a bassa precisione
- Standardizzazione del comportamento numerico dei calcoli a bassa precisione
- Espansione dei contributi della comunità e delle funzionalità
- Identificazione Accurata del Problema: Analisi sistematica delle fonti dei problemi di riproducibilità nell'apprendimento profondo
- Soluzione Pratica: Fornisce una soluzione ingegneristica praticabile, non solo analisi teorica
- Principi di Progettazione Chiari: I due principi di arrotondamento corretto e invarianza dell'ordine sono semplici ed efficaci
- Buona Compatibilità: La compatibilità API con PyTorch riduce le barriere all'uso
- Contributo Open-Source: Fornisce implementazione open-source, promuovendo lo sviluppo della comunità
- Verifica Sperimentale Limitata: Mancanza di verifica sperimentale su larga scala e benchmark delle prestazioni
- Analisi Teorica Insufficiente: L'analisi teorica della perdita di prestazioni non è sufficientemente approfondita
- Ambito di Applicabilità Limitato: Supporta solo float32, limitando le applicazioni di apprendimento profondo moderno
- Mancanza di Esperimenti Comparativi: Mancanza di confronti con altre soluzioni di riproducibilità
- Valore Accademico: Fornisce un riferimento importante per la ricerca sulla riproducibilità dell'apprendimento profondo
- Valore Pratico: Fornisce soluzioni per scenari di applicazione che richiedono riproducibilità rigorosa
- Impatto Industriale: Potrebbe promuovere l'attenzione dei framework di apprendimento profondo sulla riproducibilità
- Ricerca Scientifica: Progetti di ricerca che richiedono risultati rigorosamente riproducibili
- IA Finanziaria: Applicazioni finanziarie con requisiti estremamente elevati di coerenza numerica
- IA Medica: Sistemi di diagnosi medica che richiedono risultati deterministici
- Verifica dei Modelli: Verifica della coerenza della distribuzione dei modelli multipiattaforma
L'articolo cita 15 riferimenti correlati, che coprono:
- Algoritmi di sommatoria in virgola mobile riproducibile
- Ricerca sulla riproducibilità dell'apprendimento profondo
- Librerie matematiche con arrotondamento corretto
- Standard IEEE per la virgola mobile
- Analisi della casualità e dell'incertezza nell'apprendimento profondo
Valutazione Complessiva: Questo è un articolo di ricerca pratico affrontando il problema della riproducibilità nell'apprendimento profondo. Sebbene presenti alcune insufficienze nella verifica sperimentale e nell'analisi teorica, la soluzione proposta ha un importante valore pratico, in particolare per scenari di applicazione che richiedono rigorosità numerica. Il rilascio open-source della libreria RepDL fornisce uno strumento prezioso alla comunità, con il potenziale di promuovere lo sviluppo della ricerca sulla riproducibilità dell'apprendimento profondo.