Concetti - Ottimizzare i modelli linguistici per i flussi di lavoro di intelligenza artificiale e Machine Learning
Questo articolo illustra come ottimizzare i modelli linguistici, inclusi alcuni metodi comuni, e come l'applicazione dei risultati dell'ottimizzazione può migliorare le prestazioni dei flussi di lavoro di intelligenza artificiale e Machine Learning nel servizio Azure Kubernetes.
Modelli linguistici con training preliminare
I modelli linguistici con training preliminare offrono un modo accessibile per iniziare a usare l'inferenza con l’intelligenza artificiale e sono ampiamente usati nell'elaborazione del linguaggio naturale. I modelli linguistici con training preliminare vengono sottoposti a training su corpora di testi su larga scala provenienti da Internet utilizzando reti neurali profonde e possono essere ottimizzati su set di dati più piccoli per attività specifiche. Questi modelli sono in genere costituiti da miliardi di parametri, o pesi, appresi durante il processo di training preliminare.
I modelli linguistici con training preliminare possono apprendere rappresentazioni del linguaggio universale che colgono le proprietà statistiche del linguaggio naturale, ad esempio la probabilità delle parole o le sequenze di parole che si presentano in un determinato contesto. Queste rappresentazioni possono essere trasferite alle attività downstream, ad esempio la classificazione del testo, il riconoscimento delle entità denominate e la risposta alle domande, ottimizzando il modello in set di dati specifici dell'attività.
Vantaggi e svantaggi
La tabella seguente elenca alcuni vantaggi e svantaggi dell'uso dei modelli linguistici con training preliminare nei flussi di lavoro di intelligenza artificiale e Machine Learning:
Vantaggi | Svantaggi |
---|---|
• Iniziare rapidamente a usare la distribuzione nel ciclo di vita di Machine Learning. • Evitare costi di calcolo elevati associati al training del modello. • Riduce la necessità di archiviare set di dati con etichetta di grandi dimensioni. |
• Potrebbe fornire risposte generalizzate o obsolete in base alle origini dati del training preliminare. • Potrebbe non essere adatto per tutte le attività o i domini. • Le prestazioni possono variare a seconda del contesto di inferenza. |
Metodi di ottimizzazione
Ottimizzazione efficiente dei parametri
L’ottimizzazione efficiente dei parametri è un metodo per ottimizzare i modelli linguistici con training preliminare in set di dati relativamente piccoli con risorse di calcolo limitate. L’ottimizzazione efficiente dei parametri si avvale di una combinazione di tecniche, ad esempio metodi additivi e selettivi per aggiornare i pesi, per migliorare le prestazioni del modello in attività specifiche. L’ottimizzazione efficiente dei parametri richiede risorse di calcolo minime e quantità flessibili di dati, il che la rende adatta alle impostazioni a basso consumo. Questo metodo mantiene la maggior parte dei pesi del modello con training preliminare originale e aggiorna i pesi rimanenti in base ai dati con etichetta specifici del contesto.
Adattamento a rango basso
L’adattamento a basso rango (LoRA) è un metodo di ottimizzazione efficiente dei parametri comunemente usato per personalizzare modelli linguistici di grandi dimensioni per le nuove attività. Questo metodo tiene traccia delle modifiche apportate ai pesi del modello e archivia in modo efficiente matrici di peso più piccole che rappresentano solo i parametri sottoponibili a training del modello, riducendo l'utilizzo della memoria e la potenza di calcolo necessaria per l'ottimizzazione. LoRA crea risultati di ottimizzazione, noti come livelli di adattatore, che possono essere archiviati temporaneamente e inseriti nell'architettura del modello per i nuovi processi di inferenza.
L’adattamento a basso rango quantizzato (QLoRA) è un'estensione di LoRA che riduce ulteriormente l'utilizzo della memoria introducendo la quantizzazione ai livelli dell'adattatore. Per altre informazioni, vedere Rendere ancora più accessibili gli LLM con bitsandbites, quantizzazione a 4 bit e QLoRA.
Sperimentare modelli linguistici di ottimizzazione nel servizio Azure Kubernetes
Kubernetes AI Toolchain Operator (KAITO) è un operatore open source che automatizza le distribuzioni di modelli linguistici di piccole e grandi dimensioni nei cluster Kubernetes. Il componente aggiuntivo dell'operatore toolchain IA sfrutta KAITO per semplificare l'onboarding, risparmiare sui costi dell'infrastruttura e ridurre il tempo di inferenza per i modelli open source in un cluster del servizio Azure Kubernetes. Il componente aggiuntivo effettua automaticamente il provisioning dei nodi GPU di dimensioni appropriate e configura il server di inferenza associato come server endpoint al modello scelto.
Con KAITO versione 0.3.0 o successiva, è possibile ottimizzare in modo efficiente i modelli con licenza MIT e Apache 2.0 supportati con le funzionalità seguenti:
- Archiviare i dati per la ripetizione del training come immagine del contenitore in un registro contenitori privato.
- Ospitare la nuova immagine del livello adattatore in un registro contenitori privato.
- Eseguire in modo efficiente il pull dell'immagine per l'inferenza con i livelli di adattatore in nuovi scenari.
Per indicazioni su come iniziare a ottimizzare su KAITO, vedere la documentazione dell'API dell'area di lavoro di ottimizzazione di Kaito. Per altre informazioni sulla distribuzione di modelli linguistici con KAITO nei cluster del servizio Azure Kubernetes, vedere il repository GitHub del modello KAITO.
Importante
Il software open source è citato nella documentazione e negli esempi di Azure Kubernetes. Il software distribuito viene escluso dai contratti di servizio del servizio Azure Kubernetes, dalla garanzia limitata e supporto tecnico di Azure. Quando si usa la tecnologia open source insieme al servizio Azure Kubernetes, consultare le opzioni di supporto disponibili dalle rispettive community e dai gestori di progetti per sviluppare un piano.
Ad esempio, il repository GitHub Ray descrive diverse piattaforme che variano in tempo di risposta, scopo e livello di supporto.
Microsoft si assume la responsabilità di creare i pacchetti open source distribuiti nel servizio Azure Kubernetes. Tale responsabilità include la proprietà completa del processo di compilazione, analisi, firma, convalida e hotfix, oltre al controllo sui file binari nelle immagini del contenitore. Per altre informazioni, vedere Gestione delle vulnerabilità per il servizio Azure Kubernetes e Copertura del supporto del servizio Azure Kubernetes.
Passaggi successivi
Per altre informazioni sui carichi di lavoro di Intelligenza artificiale e sull’apprendimento automatico in contenitori nel servizio Azure Kubernetes, vedere gli articoli seguenti:
Azure Kubernetes Service