PyTorch ha recentemente lanciato la sua versione 2.2, introducendo importanti novità per migliorare l’efficienza e la velocità dei calcoli. Tra le principali innovazioni c’è l’integrazione di FlashAttention-v2, che rende certi calcoli fino a due volte più veloci rispetto al passato. Inoltre, è stata introdotta l’AOTInductor, una funzionalità che permette la compilazione anticipata dei programmi PyTorch, rendendoli utilizzabili anche in ambienti privi di Python. Questo aspetto è fondamentale per l’esecuzione efficiente di modelli di intelligenza artificiale in vari contesti, come sui server web.
Una delle principali sfide della versione precedente di FlashAttention era l’aumento quadratico del tempo di esecuzione e dell’uso della memoria con l’incremento della lunghezza delle sequenze elaborate dai modelli AI. FlashAttention-v2 ha superato questa sfida ottimizzando l’uso della memoria, passando da una scala quadratica a una lineare e accelerando il runtime di 2-4 volte rispetto ai benchmark ottimizzati, senza approssimazioni.
La nuova versione raggiunge il 50-73% delle massime prestazioni teoriche sulle GPU A100, avvicinandosi notevolmente all’efficienza delle operazioni di moltiplicazione matriciale ottimizzate.
Tra gli altri aggiornamenti di PyTorch 2.2 ci sono miglioramenti in torch.compile per gli ottimizzatori, nuove ottimizzazioni dell’induttore e l’introduzione di un meccanismo di registrazione chiamato TORCH_LOGS. Questa sarà anche l’ultima versione a supportare macOS x64, in quanto il supporto per macOS x86 verrà gradualmente eliminato.
La versione 2.2 include 3.628 commit da 521 contributori e presenta numerosi miglioramenti e nuove funzionalità. Tra queste, vi è Device_mesh in torch.distributed, uno strumento che facilita l’organizzazione e la gestione dell’esecuzione dei modelli AI su diverse parti di un computer o su più computer.
TORCH_LOGS è un nuovo sistema di registrazione che aiuta gli sviluppatori a monitorare l’esecuzione dei loro programmi AI e a identificare eventuali problemi.
Ulteriori miglioramenti riguardano torch.compile per gli ottimizzatori, che facilita l’apprendimento dei modelli AI dai dati, e TorchInductor, che ottimizza la gestione degli ottimizzatori e l’elaborazione dei programmi.
Infine, sono state introdotte nuove ottimizzazioni dell’induttore, ottimizzazioni aarch64 e supporto per FlashAttention-2 in torch.nn.functional.scaled_dot_product_attention, offrendo significative accelerazioni sulle GPU A100.