Sebbene la "L" in modelli linguistici di grandi dimensioni (LLM) suggerisca una scala enorme, la realtà è più sfumata. Alcuni LLM contengono trilioni di parametri, mentre altri funzionano efficacemente con molti meno.
Dai un'occhiata ad alcuni esempi reali e alle implicazioni pratiche di diversi modelli.
Dimensioni e classi di dimensioni degli LLM
In qualità di sviluppatori web, tendiamo a pensare alle dimensioni di una risorsa come alle dimensioni del download. Le dimensioni documentate di un modello si riferiscono invece al numero di parametri. Ad esempio, Gemma 2B indica Gemma con 2 miliardi di parametri.
Gli LLM possono avere centinaia di migliaia, milioni, miliardi o addirittura trilioni di parametri.
I modelli linguistici di grandi dimensioni hanno più parametri rispetto alle loro controparti più piccole, il che consente loro di acquisire relazioni linguistiche più complesse e gestire prompt più sfumati. Inoltre, vengono spesso addestrati su set di dati più grandi.
Potresti aver notato che determinate dimensioni dei modelli, ad esempio 2 miliardi o 7 miliardi, sono comuni. Ad esempio, Gemma 2B, Gemma 7B o Mistral 7B. Le classi di dimensioni del modello sono raggruppamenti approssimativi. Ad esempio, Gemma 2B ha circa 2 miliardi di parametri, ma non esattamente.
Le classi di dimensioni dei modelli offrono un modo pratico per valutare le prestazioni degli LLM. Pensali come alle categorie di peso nella boxe: i modelli all'interno della stessa categoria di taglia sono più confrontabili. Due modelli 2B dovrebbero offrire prestazioni simili.
Detto questo, un modello più piccolo può avere le stesse prestazioni di un modello più grande per attività specifiche.
Sebbene le dimensioni dei modelli per i più recenti LLM all'avanguardia, come GPT-4 e Gemini Pro o Ultra, non siano sempre divulgate, si ritiene che siano nell'ordine di centinaia di miliardi o trilioni di parametri.
Non tutti i modelli indicano il numero di parametri nel nome. Ad alcuni modelli viene aggiunto un suffisso con il numero di versione. Ad esempio, Gemini 1.5 Pro si riferisce alla versione 1.5 del modello (che segue la versione 1).
LLM o meno?
Quando un modello è troppo piccolo per essere un LLM? La definizione di LLM può essere alquanto variabile all'interno della community di AI e ML.
Alcuni considerano veri LLM solo i modelli più grandi con miliardi di parametri, mentre i modelli più piccoli, come DistilBERT, sono considerati semplici modelli di NLP. Altri includono nella definizione di LLM modelli più piccoli, ma comunque efficaci, come DistilBERT.
LLM più piccoli per i casi d'uso on-device
Gli LLM di grandi dimensioni richiedono molto spazio di archiviazione e molta potenza di calcolo per l'inferenza. Devono essere eseguiti su server potenti e dedicati con hardware specifico (come le TPU).
In qualità di sviluppatori web, ci interessa sapere se un modello è abbastanza piccolo da essere scaricato ed eseguito sul dispositivo di un utente.
Ma è una domanda difficile a cui rispondere. Al momento non esiste un modo semplice per sapere "questo modello può essere eseguito sulla maggior parte dei dispositivi di fascia media", per diversi motivi:
- Le funzionalità dei dispositivi variano notevolmente in base alla memoria, alle specifiche di GPU/CPU e altro ancora. Uno smartphone Android di fascia bassa e un laptop NVIDIA® RTX sono molto diversi. Potresti avere alcuni punti dati sui dispositivi di cui dispongono i tuoi utenti. Non abbiamo ancora una definizione per un dispositivo di riferimento utilizzato per accedere al web.
- Un modello o il framework in cui viene eseguito potrebbe essere ottimizzato per funzionare su determinate piattaforme hardware.
- Non esiste un modo programmatico per determinare se un modello LLM specifico può essere scaricato e eseguito su un dispositivo specifico. La capacità di download di un dispositivo dipende, tra gli altri fattori, dalla quantità di VRAM presente sulla GPU.
Tuttavia, abbiamo alcune conoscenze empiriche: oggi, alcuni modelli con da alcuni milioni a qualche miliardo di parametri possono essere eseguiti nel browser su dispositivi di uso consumer.
Ad esempio:
- Gemma 2B con l'API MediaPipe LLM Inference (adatta anche per dispositivi solo CPU). Prova.
- DistilBERT con Transformers.js.
Si tratta di un campo nascente. Il panorama continuerà a evolversi:
- Grazie alle innovazioni di WebAssembly e WebGPU, il supporto di WebGPU sarà disponibile in più librerie, nuove librerie e ottimizzazioni, pertanto i dispositivi degli utenti saranno sempre più in grado di eseguire in modo efficiente LLM di varie dimensioni.
- Prevediamo che gli LLM più piccoli e ad alte prestazioni diventeranno sempre più comuni grazie alle tecniche di riduzione emergenti.
Considerazioni per i modelli LLM più piccoli
Quando utilizzi LLM più piccoli, devi sempre considerare le prestazioni e le dimensioni del download.
Prestazioni
La funzionalità di qualsiasi modello dipende in gran parte dal caso d'uso. Un LLM più piccolo ottimizzato per il tuo caso d'uso potrebbe avere un rendimento migliore di un LLM generico più grande.
Tuttavia, all'interno della stessa famiglia di modelli, gli LLM più piccoli sono meno capaci rispetto alle loro controparti più grandi. Per lo stesso caso d'uso, in genere è necessario eseguire più lavorazioni di ingegneria quando si utilizza un LLM più piccolo.
Dimensione download
Più parametri significano dimensioni di download maggiori, il che influisce anche sul fatto che un modello, anche se considerato di piccole dimensioni, possa essere scaricato in modo ragionevole per i casi d'uso on-device.
Sebbene esistano tecniche per calcolare le dimensioni di download di un modello in base al numero di parametri, questa operazione può essere complessa.
All'inizio del 2024, le dimensioni dei download dei modelli sono raramente documentate. Pertanto, per i casi d'uso sul dispositivo e nel browser, ti consigliamo di esaminare empiricamente le dimensioni del download nel riquadro Rete di Chrome DevTools o con altri strumenti per sviluppatori del browser.
Gemma viene utilizzata con l'API di inferenza LLM MediaPipe. DistilBERT viene utilizzato con Transformers.js.
Tecniche di riduzione del modello
Esistono diverse tecniche per ridurre notevolmente i requisiti di memoria di un modello:
- LoRA (Low-Rank Adaptation): tecnica di ottimizzazione fine in cui i pesi preaddestrati sono bloccati. Scopri di più su LoRa.
- Potatura: rimuovi dal modello i pesi meno importanti per ridurne le dimensioni.
- Quantizzazione: riduzione della precisione dei pesi da numeri in virgola mobile (ad es. 32 bit) a rappresentazioni a bit inferiori (ad es. 8 bit).
- Distillazione delle conoscenze: addestramento di un modello più piccolo per imitare il comportamento di un modello preaddestrato più grande.
- Condivisione dei parametri: utilizzo degli stessi pesi per più parti del modello, riducendo il numero totale di parametri univoci.