NeMo è un framework open source e cloud-native di NVIDIA progettato per facilitare lo sviluppo, la personalizzazione e il deployment su larga scala di modelli di intelligenza artificiale generativa. Il progetto supporta una vasta gamma di applicazioni tra cui modelli linguistici di grandi dimensioni (più noti come LLM), modelli multimodali per la gestione di diverse tipologie di contenuti, modelli di riconoscimento vocale automatico, di sintesi vocale e di visione artificiale.
L'architettura di NeMo
NeMo adotta un'architettura modulare basata su PyTorch Lightning e integra componenti avanzati come Megatron Core e Transformer Engine per ottimizzare l'addestramento di LLM e modelli multimodali. La versione 2.0 introduce configurazioni basate su Python migliorando la flessibilità e la personalizzazione rispetto ai file YAML adottati in precedenza. Inoltre, NeMo-Run consente di gestire esperimenti su larga scala e facilita l'esecuzione su cluster multi-GPU e ambienti cloud.
Le componenti principali del progetto comprendono:
- NeMo Core: fornisce gli elementi fondamentali per l'addestramento e l'inferenza dei modelli e permette processi di sviluppo semplificati.
- NeMo Collections: include moduli specializzati per Natural Language Processing, Automatic Speech Recognition, Text to Speech e visione artificiale, con script di addestramento e modelli pre-addestrati per attività differenti.
- NeMo Curator e Retriever: strumenti per la gestione dei dati e il recupero di informazioni, essenziali per applicazioni di Retrieval-Augmented Generation.
- NeMo Guardrails: toolkit open source per aggiungere controlli programmabili a sistemi conversazionali basati su LLM, con un miglioramento per la sicurezza e l'affidabilità delle applicazioni.
Ottimizzazioni e tecniche di addestramento
NeMo supporta tecniche di training come l'addestramento a precisione mista, il parallelismo distribuito, FSDP (Fully Sharded Data Parallel) e le "ottimizzazioni dell'attenzione". Queste funzionalità consentono di gestire le risorse computazionali in modo efficiente e migliorano le prestazioni dei modelli su larga scala.
NeMo è progettato per essere integrato facilmente in ambienti enterprise. Supporta infatti il deployment su infrastrutture on-premise e cloud. È compatibile con NVIDIA AI Enterprise e offre un'esperienza di sviluppo e deployment ottimizzata per applicazioni di intelligenza artificiale generativa.