Presentando Optimum Il toolkit di ottimizzazione per i Transformers su larga scala

Introducing Optimum Il toolkit di ottimizzazione per i Transformers su larga scala.

Questo post è il primo passo di un viaggio per Hugging Face per democratizzare le prestazioni di produzione di Machine Learning all’avanguardia. Per raggiungere questo obiettivo, lavoreremo a stretto contatto con i nostri partner hardware, come abbiamo fatto con Intel qui sotto. Unisciti a noi in questo viaggio e segui Optimum, la nostra nuova libreria open source!

Perché 🤗 Optimum?

🤯 Scalare i Transformers è difficile

Cosa hanno in comune Tesla, Google, Microsoft e Facebook? Beh, molte cose, ma una di queste è che tutti eseguono miliardi di previsioni di modelli Transformer ogni giorno. I Transformers per AutoPilot per guidare la tua Tesla (che fortuna!), per Gmail per completare le tue frasi, per Facebook per tradurre i tuoi post al volo, per Bing per rispondere alle tue query in linguaggio naturale.

I Transformers hanno portato un miglioramento significativo nell’accuratezza dei modelli di Machine Learning, hanno conquistato l’NLP e si stanno espandendo ad altre modalità a partire dalla Speech e dalla Visione. Ma portare questi modelli massicci in produzione e farli funzionare velocemente su larga scala è una sfida enorme per qualsiasi team di ingegneria del Machine Learning.

E se non hai centinaia di ingegneri di Machine Learning altamente qualificati in azienda come le società sopra citate? Attraverso Optimum, la nostra nuova libreria open source, miriamo a costruire il toolkit definitivo per le prestazioni di produzione dei Transformers e a consentire l’efficienza massima per addestrare ed eseguire modelli su hardware specifici.

🏭 Optimum mette i Transformers al lavoro

Per ottenere prestazioni ottimali nell’addestramento e nel servizio dei modelli, le tecniche di accelerazione del modello devono essere specificamente compatibili con l’hardware mirato. Ogni piattaforma hardware offre strumenti software specifici, funzionalità e regolatori che possono avere un enorme impatto sulle prestazioni. Allo stesso modo, per sfruttare tecniche avanzate di accelerazione del modello come la sparsetà e la quantizzazione, i kernel ottimizzati devono essere compatibili con gli operatori sul silicio e specifici per il grafo di rete neurale derivato dall’architettura del modello. Approfondire questa matrice di compatibilità tridimensionale e imparare a utilizzare le librerie di accelerazione del modello è un lavoro difficile che pochi ingegneri di Machine Learning hanno esperienza.

Optimum mira a semplificare questo lavoro, fornendo strumenti di ottimizzazione delle prestazioni che mirano all’efficienza dell’hardware AI, costruiti in collaborazione con i nostri partner hardware, e trasformando gli ingegneri di Machine Learning in maghi dell’ottimizzazione di ML.

Con la libreria Transformers, abbiamo reso facile per i ricercatori e gli ingegneri utilizzare modelli all’avanguardia, astrazione delle complessità dei framework, delle architetture e dei flussi di lavoro.

Con la libreria Optimum, stiamo rendendo facile per gli ingegneri sfruttare tutte le funzionalità hardware disponibili a loro disposizione, astrazione delle complessità dell’accelerazione del modello sulle piattaforme hardware.

🤗 Optimum in pratica: come quantizzare un modello per Intel Xeon CPU

🤔 Perché la quantizzazione è importante ma difficile da fare correttamente

I modelli di linguaggio pre-addestrati come BERT hanno raggiunto risultati all’avanguardia su una vasta gamma di compiti di elaborazione del linguaggio naturale, altri modelli basati su Transformer come ViT e Speech2Text hanno raggiunto risultati all’avanguardia su visione artificiale e compiti di speech rispettivamente: i transformer sono ovunque nel mondo del Machine Learning e sono qui per restare.

Tuttavia, mettere in produzione modelli basati su transformer può essere difficile ed costoso in quanto richiedono molta potenza di calcolo per funzionare. Per risolvere questo problema esistono molte tecniche, la più popolare delle quali è la quantizzazione. Purtroppo, nella maggior parte dei casi, quantizzare un modello richiede molto lavoro, per molte ragioni:

  1. Il modello deve essere modificato: alcune operazioni devono essere sostituite con le loro controparti quantizzate, nuove operazioni devono essere inserite (nodi di quantizzazione e dequantizzazione) e altre devono essere adattate al fatto che pesi e attivazioni saranno quantizzati.

Questa parte può richiedere molto tempo perché i framework come PyTorch lavorano in modalità eager, il che significa che le modifiche sopra menzionate devono essere aggiunte all’implementazione del modello stesso. PyTorch fornisce ora uno strumento chiamato torch.fx che consente di tracciare e trasformare il modello senza dover effettivamente modificare l’implementazione del modello, ma è difficile da usare quando il tracciamento non è supportato per il tuo modello di base.

Oltre alla modifica effettiva, è anche necessario individuare quali parti del modello devono essere modificate, quali operazioni hanno una controparte del kernel quantizzato disponibile e quali operazioni non lo hanno, e così via.

  1. Una volta che il modello è stato modificato, ci sono molti parametri con cui giocare per trovare le migliori impostazioni di quantizzazione:

    • Quali tipi di osservatori devo usare per la calibrazione del range?
    • Quale schema di quantizzazione dovrei usare?
    • Quali tipi di dati correlati alla quantizzazione (int8, uint8, int16) sono supportati sul mio dispositivo di destinazione?
  2. Bilanciare il compromesso tra quantizzazione e perdita di accuratezza accettabile.

  3. Esportare il modello quantizzato per il dispositivo di destinazione.

Anche se PyTorch e TensorFlow hanno compiuto grandi progressi nel rendere le cose facili per la quantizzazione, le complessità dei modelli basati su trasformatori rendono difficile utilizzare gli strumenti forniti e ottenere un risultato funzionante senza un grande sforzo.

💡 Come Intel sta risolvendo la quantizzazione e altro con Neural Compressor

Intel® Neural Compressor (precedentemente noto come Low Precision Optimization Tool o LPOT) è una libreria open-source in Python progettata per aiutare gli utenti a implementare soluzioni di inferenza a bassa precisione. Quest’ultima applica ricette a bassa precisione per modelli di deep learning al fine di raggiungere obiettivi produttivi ottimali, come prestazioni di inferenza e utilizzo della memoria, con criteri di prestazione previsti. Neural Compressor supporta la quantizzazione post-training, l’addestramento consapevole della quantizzazione e la quantizzazione dinamica. Per specificare l’approccio di quantizzazione, l’obiettivo e i criteri di prestazione, l’utente deve fornire un file di configurazione yaml in cui specificare i parametri di ottimizzazione. Il file di configurazione può essere ospitato sul Model Hub di Hugging Face o può essere fornito tramite un percorso di directory locale.

🔥 Come quantizzare facilmente i Transformers per i processori Intel Xeon con Optimum

Segui 🤗 Optimum: un percorso per democratizzare le prestazioni della produzione di ML

⚡️Stato dell’arte dell’Hardware

Optimum si concentrerà nel raggiungere prestazioni produttive ottimali su hardware dedicato, in cui possono essere applicate tecniche di accelerazione software e hardware per massimizzare l’efficienza. Lavoreremo a stretto contatto con i nostri partner hardware per abilitare, testare e mantenere l’accelerazione, e consegnarla in modo facile e accessibile tramite Optimum, come abbiamo fatto con Intel e Neural Compressor. Presto annunceremo nuovi partner hardware che si sono uniti a noi nel nostro percorso verso l’efficienza del Machine Learning.

🔮 Modelli all’avanguardia

La collaborazione con i nostri partner hardware produrrà configurazioni e artefatti di modelli ottimizzati specifici per l’hardware, che metteremo a disposizione della comunità AI tramite l’Hugging Face Model Hub. Speriamo che Optimum e i modelli ottimizzati per l’hardware accelerino l’adozione dell’efficienza nei carichi di lavoro di produzione, che rappresentano la maggior parte dell’energia impiegata nel Machine Learning. E soprattutto, speriamo che Optimum acceleri l’adozione dei Transformers su larga scala, non solo per le grandi aziende tecnologiche, ma per tutti noi.

🌟 Un percorso di collaborazione: unisciti a noi, segui i nostri progressi

Ogni percorso inizia con un primo passo, e il nostro è stato il rilascio pubblico di Optimum. Unisciti a noi e fai il tuo primo passo mettendo una stella alla libreria, così potrai seguirci mentre introduciamo nuovi hardware supportati, tecniche di accelerazione e modelli ottimizzati.

Se desideri vedere nuovi hardware e funzionalità supportati da Optimum, o sei interessato a unirti a noi per lavorare all’intersezione tra software e hardware, contattaci all’indirizzo [email protected]