2023, anno degli LLM aperti

2023, l'anno dei LLM aperti

Nel 2023 si è riscontrato un aumento del interesse pubblico nei confronti dei Large Language Models (LLM), e ora che la maggior parte delle persone ha un’idea di cosa siano e di cosa possano fare, anche i dibattiti pubblici tra open source e closed source hanno raggiunto un vasto pubblico. Da parte di Hugging Face, seguiamo con grande interesse i modelli open, in quanto consentono la riproducibilità della ricerca, permettono alla comunità di partecipare allo sviluppo dei modelli di intelligenza artificiale, consentono una facile verifica dei pregiudizi e delle limitazioni dei modelli e riducono il consumo di energia complessivo del nostro settore favorendo il riutilizzo degli checkpoint (tra molti altri vantaggi).

Quindi facciamo una retrospettiva dell’anno dei LLM open!

Per mantenere questo documento di dimensioni gestibili, non esamineremo i modelli di codice.

Ricetta per un Large Language Model preaddestrato

Prima di tutto, come si ottiene un Large Language Model? (Sentiti libero di dare solo un’occhiata a questa sezione se già sai come fare!)

L’architettura del modello (il suo codice) descrive la sua implementazione specifica e forma matematica: è un elenco di tutti i suoi parametri, nonché di come interagiscono con gli input. Al momento, la maggior parte dei LLM ad alte prestazioni sono variazioni dell’architettura “solo decoder” del Transformer (maggiori dettagli nell’originale paper sui transformers). Il dataset di addestramento contiene tutti gli esempi e i documenti su cui il modello viene addestrato (cioè vengono appresi i parametri), quindi i modelli appresi. La maggior parte delle volte, questi documenti contengono testo, sia in linguaggio naturale (ad esempio francese, inglese, cinese), un linguaggio di programmazione (ad esempio Python, C) o qualsiasi tipo di dati strutturati esprimibili come testo (ad esempio tabelle in markdown o latex, equazioni, …). Un tokenizer definisce come il testo del dataset di addestramento viene convertito in numeri (poiché un modello è una funzione matematica e quindi ha bisogno di numeri come input). La tokenizzazione viene effettuata trasformando il testo in sottounità chiamate token (che possono essere parole, sub-parole o caratteri, a seconda dei metodi di tokenizzazione). La dimensione del vocabolario del tokenizer indica quanti diversi token conosce, tipicamente tra 32k e 200k. La dimensione di un dataset viene spesso misurata come il numero di token che contiene una volta divisi in una sequenza di queste unità individuali “atomiche” e al giorno d’oggi varia da diversi cento miliardi a diversi trilioni di token! Poi ci sono gli iperparametri di addestramento che definiscono come il modello viene addestrato. Quanto dovrebbero cambiare i parametri per adattarsi a ogni nuovo esempio? Con quale velocità dovrebbe essere aggiornato il modello?

Una volta selezionati questi parametri, hai solo bisogno di 1) molta potenza di calcolo per addestrare il modello e 2) persone competenti (e gentili) per eseguire e monitorare l’addestramento. L’addestramento stesso consisterà nell’istanziare l’architettura (creando le matrici sull’hardware utilizzato per l’addestramento) ed eseguire l’algoritmo di addestramento sul dataset di addestramento con gli iperparametri sopra citati. Il risultato è un insieme di pesi del modello. Questi sono i parametri del modello dopo l’apprendimento e a cui la maggior parte delle persone si riferisce quando si discute dell’accesso a un modello preaddestrato aperto. Questi pesi possono quindi essere utilizzati per inferenza, ossia per la predizione su nuovi input, ad esempio per generare testo.

I LLM preaddestrati possono anche essere specializzati o adattati per una specifica attività dopo la preaddestrazione, soprattutto quando i pesi vengono rilasciati pubblicamente. Vengono quindi utilizzati come punto di partenza per casi d’uso e applicazioni attraverso un processo chiamato “fine-tuning”. Il fine-tuning consiste nell’applicare ulteriori passaggi di addestramento sul modello su un dataset diverso – spesso più specializzato e più piccolo – per ottimizzarlo per una specifica applicazione. Nonostante questa operazione richieda una certa potenza di calcolo, è di solito molto meno costosa rispetto all’addestramento di un modello da zero, sia dal punto di vista finanziario sia ambientale. Questo è uno dei motivi per cui i modelli preaddestrati open-source di alta qualità sono molto interessanti, in quanto possono essere liberamente utilizzati e utilizzati dalla comunità anche quando i praticanti hanno solo accesso a un budget di calcolo limitato.

2022: dalla corsa alle dimensioni alla corsa ai dati

Quali modelli open erano disponibili alla comunità prima del 2023?

Fino all’inizio del 2022, la tendenza nell’apprendimento automatico era che più grande era un modello (cioè più parametri aveva), migliori erano le sue prestazioni. In particolare, sembrava che i modelli che superavano determinate soglie di dimensione aumentassero le loro capacità, due concetti che venivano chiamati abilità emergenti e leggi di scala. Le famiglie di modelli open-source preaddestrati pubblicate nel 2022 seguivano principalmente questo paradigma.

  1. BLOOM (BigScience Large Open-science Open-access Multilingual Language Model) BLOOM è una famiglia di modelli rilasciati da BigScience, un’organizzazione collaborativa che coinvolge 1000 ricercatori provenienti da 60 paesi e 250 istituzioni, coordinata da Hugging Face, in collaborazione con le organizzazioni francesi GENCI e IDRIS. Questi modelli utilizzano dei trasformatori con solo decoder, con delle modifiche minori (normalizzazione post-embedding,[^1] e l’utilizzo di posizioni ALiBi [^2]). Il modello più grande di questa famiglia è un modello con 176 miliardi di parametri, addestrato su 350 miliardi di token di dati multilingue in 46 lingue umane e 13 lingue di programmazione. La maggior parte dei dati di addestramento è stata resa pubblica e sono stati pubblicati dettagli sulle fonti, la curatela e l’elaborazione dei dati. È il modello open source multilingue più grande mai realizzato fino ad oggi.

  2. OPT (Open Pre-trained Transformer) La famiglia di modelli OPT è stata rilasciata da Meta. Questi modelli utilizzano un’architettura di trasformatori con solo decoder, seguendo i trucchi del paper GPT-3 (una specifica inizializzazione dei pesi, pre-normalizzazione), con alcune modifiche al meccanismo di attenzione (strati di attenzione densi e a bande locali alternati). Il modello più grande di questa famiglia è un modello con 175 miliardi di parametri addestrato su 180 miliardi di token di dati provenienti per lo più da fonti pubbliche (libri, dati sociali tramite Reddit, notizie, Wikipedia e altre fonti Internet). Questa famiglia di modelli ha prestazioni comparabili ai modelli GPT-3, utilizzando ottimizzazioni del codice per renderlo meno intensivo in termini di calcolo.

  3. GLM-130B (General Language Model) GLM-130B è stato rilasciato dall’Università Tsinghua e da Zhipu.AI. Utilizza un’architettura completa di trasformatori con alcune modifiche (normalizzazione post-layer con DeepNorm, incorporazioni rotative). Il modello con 130 miliardi di parametri è stato addestrato su 400 miliardi di token di dati provenienti da Internet in inglese e cinese (The Pile, Wudao Corpora e altre corpora cinesi). Anche questo modello aveva prestazioni comparabili ai modelli GPT-3.

  4. LLM aperti di dimensioni più piccole o più specializzati Alcuni modelli open source di dimensioni più piccole sono stati rilasciati, principalmente a scopo di ricerca: Meta ha rilasciato la serie Galactica, LLM con fino a 120 miliardi di parametri, pre-addestrato su 106 miliardi di token di letteratura scientifica, e EleutherAI ha rilasciato il modello GPT-NeoX-20B, un modello di decoder transformer completamente open source (architettura, pesi, dati inclusi) addestrato su 500 miliardi di token (utilizzando RoPE e alcune modifiche all’attenzione e all’inizializzazione), per fornire un’intero artefatto per investigazioni scientifiche.

Questi modelli enormi sono stati entusiasmanti ma anche molto costosi da eseguire! Durante l’esecuzione dell’infertaza (calcolando le previsioni da un modello), il modello deve essere caricato nella memoria, ma un modello con 100 miliardi di parametri richiederà tipicamente 220GB di memoria per essere caricato (spieghiamo questo processo di seguito), il che è molto grande e non accessibile alla maggior parte delle organizzazioni e dei praticanti!

Tuttavia, nel marzo 2022, è uscito un nuovo articolo di DeepMind che indagava quale fosse il rapporto ottimale tra token e parametri del modello per un determinato budget di calcolo. In altre parole, se hai solo una quantità X di denaro da spendere per l’addestramento del modello, quali dovrebbero essere rispettivamente le dimensioni del modello e dei dati? Gli autori hanno scoperto che, in generale, per il budget di calcolo medio speso per i LLM, i modelli dovrebbero essere più piccoli ma addestrati su quantità considerevolmente più elevate di dati. Il loro modello, Chinchilla (non open source), era un modello con 70 miliardi di parametri (un terzo delle dimensioni dei modelli sopra citati), ma addestrato su 1,4 trilioni di token di dati (tra 3 e 4 volte più dati). Aveva prestazioni simili o migliori rispetto ai suoi corrispettivi più grandi, sia open source che proprietari.

Questo cambiamento di paradigma, che probabilmente era già noto nei laboratori chiusi, ha sorpreso la comunità della scienza aperta.

2023, un anno di rilasci aperti

L’ascesa dei modelli di linguaggio piccoli e grandi

🌊 Nel 2023 si è verificato un’ondata di decoder transformer, con nuovi modelli preaddestrati rilasciati ogni mese, e presto ogni settimana o addirittura ogni giorno: LLaMA (di Meta) a febbraio, Pythia (di Eleuther AI) ad aprile, MPT (di MosaicML) a maggio, X-GEN (di Salesforce) e Falcon (di TIIUAE) a giugno, Llama 2 (di Meta) a luglio. Qwen (di Alibaba) e Mistral (di Mistral.AI) a settembre, Yi (di 01-ai) a novembre, DeciLM (di Deci), Phi-2 e SOLAR (di Upstage) a dicembre. Tutti questi rilasci a) includono pesi del modello (con licenze aperte varie) e b) hanno buone prestazioni per modelli di dimensioni più ridotte (tra 3 miliardi e 70 miliardi di parametri), e quindi sono stati immediatamente adottati dalla comunità. Quasi tutti questi modelli utilizzano l’architettura del decoder transformer, con varie aggiustamenti (come ALiBi o RoPe, RMS pre-normalization, SwiGLU), così come alcune modifiche alle funzioni di attenzione (Flash-Attention, GQA, finestre scorrevoli) e diverse implementazioni del codice per ottimizzare la velocità di addestramento o inferenza. Questi aggiustamenti probabilmente influenzano le prestazioni e la velocità di addestramento fino a un certo punto; tuttavia, poiché tutte le architetture sono state rilasciate pubblicamente con i relativi pesi, le differenze principali che rimangono sono i dati di addestramento e le licenze dei modelli.

🦙,🔮 La prima famiglia di modelli di questa serie è stata la famiglia LLaMA, rilasciata da Meta AI. L’obiettivo esplicito dei ricercatori era quello di addestrare un insieme di modelli di varie dimensioni con le migliori prestazioni possibili per un determinato budget di calcolo. Per una delle prime volte, il team di ricerca ha deciso esplicitamente di considerare non solo il budget di addestramento ma anche il costo di inference (per un determinato obiettivo di prestazioni, quanto costa eseguire l’inferenza con il modello). In questa prospettiva, hanno deciso di addestrare modelli più piccoli su ancora più dati e per più passaggi rispetto a quanto solitamente si faceva, raggiungendo così prestazioni superiori a una dimensione di modello più piccola (con il compromesso della efficienza di calcolo per l’addestramento). Il modello più grande della famiglia Llama 1 è un modello con 65 miliardi di parametri addestrato su 1,4T token, mentre i modelli più piccoli (risp. 6 e 13 miliardi di parametri) sono stati addestrati su 1T token. Il piccolo modello LLaMA da 13 miliardi ha superato GPT-3 su gran parte dei benchmark, e il modello LLaMA più grande era all’avanguardia quando è stato rilasciato. Tuttavia, i pesi sono stati rilasciati con una licenza non commerciale, limitando l’adozione da parte della comunità. I modelli Pythia sono stati rilasciati dal laboratorio open-source no-profit Eleuther AI e sono una suite di LLMs di diverse dimensioni, addestrate su dati completamente pubblici, forniti per aiutare i ricercatori a comprendere i diversi passaggi dell’addestramento di LLM.

📂,🦅 I modelli MPT, che sono arrivati qualche mese dopo, rilasciati da MosaicML, erano simili in termini di prestazioni ma con una licenza che consentiva un uso commerciale e dettagli sul mix di addestramento. Il primo modello MPT era un modello da 7 miliardi, seguito da versioni da 30 miliardi a giugno, entrambi addestrati su 1T token di inglese e codice (utilizzando dati da C4, CommonCrawl, The Stack, S2ORC). I modelli MPT sono stati rapidamente seguiti dai modelli da 7 e 30 miliardi della serie Falcon, rilasciati da TIIUAE e addestrati su 1 a 1,5T token di inglese e codice (RefinedWeb, Project Gutemberg, Reddit, StackOverflow, Github, arXiv, Wikipedia, tra le altre fonti) – successivamente, è stato rilasciato anche un gigantesco modello da 180 miliardi. I modelli Falcon, i dati e il processo di addestramento sono stati descritti in un rapporto tecnico e in una ricerca successiva.

Dove i modelli precedenti erano pubblici riguardo ai loro dati, a partire da allora, le successive release hanno fornito pochissime informazioni su quello che è stato utilizzato per addestrare i modelli e i loro sforzi non possono essere riprodotti – tuttavia, forniscono punti di partenza per la comunità attraverso i pesi rilasciati.

✖️,🦙🦙 All’inizio dell’estate sono arrivati i modelli X-Gen di Salesforce, modelli con 7 miliardi di parametri addestrati su 1,5 trilioni di token di “linguaggio naturale e codice”, in diverse fasi, seguendo un sistema di pianificazione dei dati (non tutti i dati vengono introdotti contemporaneamente nel modello). X-Gen è stato un po’ oscurato dai nuovi modelli molto visibili della famiglia LLaMA-2 di Meta, una serie di modelli da 7 a 70 miliardi addestrati su 2 trilioni di token “da fonti pubblicamente disponibili”, con una licenza comunitaria permissiva e un processo esteso di raffinamento delle preferenze umane (RLHF), chiamato procedura di allineamento.

🍃,🔟,☀️ Un paio di mesi dopo, è stato rilasciato il primo modello della startup appena creata Mistral, chiamato Mistral-7B, addestrato su un numero non divulgato di token provenienti da dati “estratti dal Web aperto”. La fine del 2023 è stata movimentata con il rilascio di un secondo modello più grande da Mistral (Mixtral 8x7B), un primo impressionante modello di Deci.AI chiamato DeciLM, nonché una fusione più ampia di modelli da parte di upstage, SOLAR, addestrato anche su una quantità non divulgata e fonti di dati. Tutti questi modelli hanno portato consistenti miglioramenti nelle classifiche e nei benchmark aperti.

🇨🇳 Parallelamente, un evento rilevante alla fine del 2023 è stato l’aumento delle prestazioni e il numero di modelli addestrati in Cina e pubblicamente rilasciati. Sono state rilasciate due serie di modelli bilingue inglese-cinese: Qwen da Alibaba, modelli di 7 a 70 miliardi di parametri addestrati su 2,4 trilioni di token, e Yi da 01-AI, modelli da 6 a 34 miliardi di parametri addestrati su 3 trilioni di token. Le prestazioni di questi modelli hanno superato quelli precedenti sia nelle classifiche aperte come la classifica Open LLM sia in alcuni dei benchmark più difficili come Skill-Mix. Un altro forte concorrente di fine 2023 è stato il modello di coding DeepSeek di DeepSeek AI, addestrato da zero su 2 trilioni di token, con una composizione del 87% di codice e il 13% di linguaggio naturale sia in inglese che in cinese (principalmente un modello di codice).

Modelli di dialogo ovunque

Rispetto al 2022, quasi tutti i modelli pre-addestrati rilasciati nel 2023 sono stati dotati di una versione pre-addestrata e di una versione adattata al dialogo, utilizzando uno dei vari approcci esistenti. Mentre gli approcci per adattare i modelli alla conversazione sono stati sviluppati nel 2022 e prima, l’ampia adozione di queste tecniche è decollata davvero nel 2023, sottolineando l’uso crescente di questi modelli di chat da parte del pubblico e la crescente valutazione manuale dei modelli chattando con loro (valutazione “vibe-check”). Illustreremo qui di seguito gli approcci più noti per adattare i modelli pre-addestrati alla chat, ma esistono molte variazioni!

💬 Addestramento mirato alla chat è una variante dell’addestramento supervisionato, in cui i dati annotati sono dati di chat (dati di dialogo multiturno simili a quelli che si trovano sui social media) su cui adatti il tuo modello. Utilizzi la stessa tecnica dell’addestramento del tuo modello: per i transformer decoder, insegni al tuo modello a prevedere le parole successive uno alla volta (approccio auto-regressivo). 🗣️ Addestramento basato su istruzioni (IFT) segue lo stesso approccio, ma con dataset di istruzioni, che comprendono una serie di prompt simili a query più risposte (con ulteriori input opzionali, se necessario). Questi dataset insegnano ai modelli come seguire un’istruzione e possono essere umani o generati da LLM. Utilizzare dataset sintetici di output di modelli su larga scala (dataset composti da generazioni di modelli, ad esempio generazioni da GPT-4, sia da istruzioni che da interazioni tra utenti e detto modello) è uno dei modi per ottenere istruzioni e adattamenti alla chat. Questo viene spesso chiamato distillazione perché comporta l’acquisizione delle conoscenze da un modello ad alte prestazioni per addestrare o raffinare un modello più piccolo.

Entrambi questi metodi sono relativamente facili da implementare: è sufficiente trovare o generare dataset correlati e quindi raffinare il modello utilizzando la stessa tecnica dell’addestramento. Lo scorso anno è stato pubblicato un gran numero di dataset di istruzioni, che hanno migliorato le prestazioni del modello in situazioni di dialogo. Per ulteriori informazioni su questo argomento, puoi leggere un blog di introduzione qui. Tuttavia, i modelli, sebbene migliori, non riescono ancora a soddisfare le aspettative umane.

🏅 Apprendimento per rinforzo dal feedback umano (RLHF) è un approccio specifico che mira a allineare ciò che il modello prevede con ciò che piace agli esseri umani (a seconda di criteri specifici). Era (all’inizio dell’anno) una nuova tecnica per il raffinamento. Da un determinato prompt, il modello genera diverse possibili risposte; gli esseri umani classificano queste risposte; le classifiche vengono utilizzate per addestrare ciò che viene chiamato un modello di preferenza (che impara a fornire un punteggio che riflette la preferenza umana per le risposte); il modello di preferenza viene quindi utilizzato per addestrare ulteriormente il modello di linguaggio utilizzando l’apprendimento per rinforzo. Per informazioni più dettagliate, consulta questo post del blog, l’articolo originale su RLHF o l’articolo di Anthropic su RLHF. Si tratta di un metodo costoso (annotazione/classificazione + addestramento di un nuovo modello + raffinamento è piuttosto costoso) che è stato utilizzato principalmente per allineare i modelli per gli obiettivi di sicurezza. È stata sviluppata una variante di questo metodo meno costosa che utilizza un LLM di alta qualità per classificare gli output del modello al posto degli esseri umani: apprendimento per rinforzo dal feedback delle IA (RLAIF).

👍 ottimizzazione diretta delle preferenze (DPO) è un’altra variante di RLHF, ma non richiede la formazione e l’uso di un modello di preferenza separato: il metodo richiede lo stesso dataset di classificazione umana o da IA ma utilizza tali dati per aggiornare direttamente il modello guardando la differenza tra la sua politica originale (modo di prevedere) e quella ottimale (che prevederebbe le risposte migliore classificate). In altre parole, il modello allineato è anche il modello di preferenza, il che rende la procedura di ottimizzazione molto più semplice pur ottenendo prestazioni finali equivalenti a quanto pare.

Quindi, per tornare alla nostra ondata di modelli leggeri a pesi aperti da (principalmente) aziende private, molti di questi sono stati rilasciati con controparti raffinate: MPT-7B è arrivato con una versione di istruzioni e di chat, sono state rilasciate versioni di Falcon e XGen addestrate con istruzioni alla fine dell’anno, Llama-2, Qwen e Yi sono state rilasciate con versioni di chat e DeciLM con una versione di istruzioni. Il rilascio di Llama-2 è stato particolarmente notevole per l’attenzione dedicata alla sicurezza, sia nel pre-addestramento che nel raffinamento dei modelli.

E la comunità?

Mentre i modelli di chat e i modelli di istruzioni finemente ottimizzati erano di solito forniti direttamente con i nuovi modelli rilasciati, la comunità e i ricercatori non li davano per scontati, e una vasta e sana comunità di ottimizzatori di modelli fiorì sui terreni fertili forniti da questi modelli di base. Solitamente creavano nuovi set di dati e finetunavano i modelli su di essi per mostrare buone performance e qualità dei dati appena rilasciati.

All’inizio del 2023 erano già stati rilasciati alcuni set di dati per il finetuning di istruzioni/chat. Ad esempio, per le preferenze umane, il dataset WebGPT di OpenAI, il dataset HH-RLHF di Anthropic, e Summarize di OpenAI sono stati pionieri in questa direzione. Esempi di dataset di istruzioni sono il Public Pool of Prompts di BigScience, FLAN 1 e 2 di Google, Natural Instructions di AllenAI, Self Instruct, un framework per generare istruzioni automatiche sviluppato da ricercatori di diverse affiliazioni, SuperNatural instructions, un benchmark di istruzioni creato dagli esperti utilizzato talvolta come dati per il finetuning, Unnatural instructions, un dataset di istruzioni generato automaticamente da Tel Aviv University e Meta, tra gli altri.

❄️ Inverno 2022/2023: A gennaio di quest’anno è stato rilasciato il corpus di istruzioni per chat GPT umano (HC3) dai ricercatori cinesi di varie istituzioni, contenente risposte di umani rispetto alle risposte dei modelli a diverse domande. Marzo è stato pieno di rilasci: Stanford ha aperto il modello Alpaca, che è stato il primo modello LLaMA di seguimento delle istruzioni (7B), e il relativo set di dati, 52.000 istruzioni generate con un LLM. LAION (un laboratorio open source senza scopo di lucro) ha rilasciato il dataset Open Instruction Generalist (OIG), 43 milioni di istruzioni create sia con l’aumento dei dati sia compilati da altre fonti dati preesistenti. Lo stesso mese, LMSYS org (all’UC Berkeley) ha rilasciato Vicuna, anche un finetune LLaMA (13B), questa volta su dati di chat: conversazioni tra utenti e ChatGPT, condivise pubblicamente dagli stessi utenti su ShareGPT. È stato inoltre rilasciato il dataset Guanaco, un’estensione del dataset Alpaca (contenente 500.000 nuove voci in altre lingue), nonché il relativo finetune LLaMA-7B.

🌱 Primavera: Ad aprile, BAIR (Berkeley AI Research lab) ha rilasciato Koala, un modello LLaMA finetuned per la chat, utilizzando diversi dei dataset precedenti (Alpaca, HH-RLHF, WebGPT, ShareGPT), e DataBricks ha rilasciato il dataset Dolly, un grande sforzo umano di 15.000 istruzioni generate manualmente, nonché il modello associato, un finetune Pythia. A maggio, Tsinghua University ha rilasciato UltraChat, un dataset di 1,5 milioni di conversazioni contenenti istruzioni, e UltraLLaMA, un finetune su detto dataset. Microsoft ha quindi rilasciato il dataset/framework GPT4-LLM per generare istruzioni con GPT4, e a giugno la ricerca Microsoft ha condiviso un nuovo metodo, Orca, per costruire dataset di istruzioni utilizzando la traccia di ragionamento dei modelli più grandi (che spiegano la loro ragionamento passo dopo passo): è stato presto riprodotto dalla comunità (notabilmente Alignementlab.ai), che ha creato Open Orca, diversi milioni di voci, successivamente usate per il finetuning di numerosi modelli (Llama, Mistral, …). A maggio e giugno, Camel-AI ha rilasciato numerosi dataset di istruzioni o chat su argomenti diversi (più di 20.000 esempi in ciascun dominio, fisica, biologia, chimica, …) ottenuti con GPT4. A giugno, inoltre, è stato rilasciato il framework Airoboros per finetunare i modelli utilizzando dati generati dal modello stesso (seguendo l’approccio self-instruct), insieme a diversi dataset di istruzioni.

🌻 Estate: Ad agosto, è stato rilasciato da OpenBMB (un’organizzazione no-profit cinese) UltraLM (un chat fine-tuning di LLaMA ad alta performance), mentre a settembre è stato rilasciato il dataset di preferenze correlato UltraFeedback, un dataset di feedback di input confrontati da GPT4 (con annotazioni). Durante l’estate, NousResearch, un collettivo, ha rilasciato diversi fine-tuning (in particolare le collezioni Hermes e Capybara) basati su diversi dataset di istruzioni privati e pubblici. A settembre, un team di studenti dell’Università di Tsinghua ha rilasciato OpenChat, un fine-tuning di LLaMA che utilizza una nuova strategia di fine-tuning RL.

🍂 Autunno: A ottobre, Hugging Face ha rilasciato [Zephyr](https://huggingface.co/Hugging FaceH4/zephyr-7b-beta), un fine-tuning di Mistral che utilizza DPO e AIF su UltraChat e UltraFeedback, mentre i membri della comunità hanno rilasciato OpenHermes 2, un fine-tuning di Mistral-7B basato su 900K voci prese dal web o generate con Axolotl. Lmsys ha rilasciato LMSYS-Chat-1M, conversazioni di utenti reali con 25 LLM. A novembre, OpenBuddy ha rilasciato OpenBuddy-Zephyr, un dialogo a più turni fine-tuning di Zephyr. A novembre, NVIDIA ha rilasciato HelpSteer, un dataset di fine-tuning di allineamento che fornisce prompt, risposte modello associate e valutazioni di tali risposte su diversi criteri, mentre Microsoft Research ha rilasciato il modello Orca-2, un fine-tuning di Llama 2 su un nuovo dataset di ragionamento sintetico. A dicembre, Berkeley ha rilasciato Starling, un fine-tuning di RLAIF di Open-Chat, e il dataset correlato, Nectar, con 200K voci di dati di confronto.

Come possiamo vedere, lo sviluppo di quest’anno si basa sia sulla creazione di nuovi dataset attraverso l’uso di LLM pre-addestrati di alta qualità, sia su tutti i modelli aperti rilasciati dalla comunità, facendo avanzare il settore a passi da gigante! E se ora vedete uno di questi nomi in un nome di modello, potrete avere un’idea di dove viene 🤗

Alcuni dataset più specializzati (come MetaMath o MathInstruct dataset di fine-tuning di problemi matematici, Evol-Instruct, istruzioni matematiche e di codice, CodeAlpaca e CodeCapybara istruzioni di codice) sono stati anche rilasciati, ma non li copriremo in dettaglio qui, anche se sono stati utilizzati per migliorare le prestazioni del modello su compiti specifici. È possibile consultare anche l’awesome instructions dataset per una raccolta di altri dataset pertinenti.

Democratizzazione dell’accesso

Fusione: Personalizzazione estrema

In tipico stile open-source, uno dei tratti distintivi della comunità è la fusione di modelli e dati. Con ogni fusione/commit, diventa sempre più difficile tracciare sia i dati utilizzati (poiché molti dataset rilasciati sono compilazioni di altri dataset) sia la storia dei modelli, poiché i modelli ad alte prestazioni sono versioni fine-tuned di versioni fine-tuned di modelli simili (vedi l’albero dei “modelli figli” di Mistral qui). In questo riassunto, non abbiamo ancora avuto il tempo di parlare di questa incredibile tecnica, quindi dedichiamo un paio di parole finali ad essa.

Ma cosa significa fondere un modello?

Fondere i modelli è un modo per combinare i pesi di diversi modelli in un unico modello per (idealemente) unire i punti di forza di ciascun modello in un unico modello unificato. Esistono diverse tecniche per farlo che sono state sviluppate e spesso pubblicate principalmente nei forum della comunità, un caso eclatante di ricerca completamente decentralizzata che avviene in tutto il mondo tra una comunità di praticanti, ricercatori ed appassionati. Uno dei metodi più semplici pubblicati consiste nella media dei parametri di un insieme di modelli che condividono un’architettura comune (esempio 1, esempio 2), ma esistono anche combinazioni di parametri più complesse, come stabilire quali parametri sono più influenti in ciascun modello per un determinato compito (media pesata), o prendere in considerazione l’interferenza dei parametri tra i modelli prima di selezionare quali parametri mantenere durante la fusione (fusione dei legami).

Queste tecniche permettono a chiunque di generare facilmente combinazioni di modelli e sono particolarmente semplici grazie al fatto che la maggior parte dei modelli attuali sono variazioni della stessa architettura. Questa è la ragione per cui alcuni modelli presentati nella classifica open LLM hanno nomi come llama2-zephyr-orca-ultra. Questo particolare esempio è probabilmente una fusione dei modelli llama2 e zephyr, ottimizzati su set di dati orca e ultra. Di solito, maggiori dettagli possono essere trovati sulla pagina specifica del modello nell’Hugging Face hub.

PEFT: Personalizzazione a portata di mano

A volte, potresti desiderare una personalizzazione più controllata, senza abbastanza memoria per caricare interamente un modello in memoria per un’ottimizzazione più fine. Sai che non è necessario utilizzare un intero modello durante l’ottimizzazione più fine?

Potresti voler utilizzare ciò che viene chiamato ottimizzazione più efficiente dei parametri (PEFT). Questa tecnica congela innanzitutto i parametri del modello pre-addestrato di tuo interesse, quindi aggiunge un certo numero di nuovi parametri sopra di esso, chiamati adattatori. Quello su cui successivamente ottimizzi per il tuo compito sono solo i pesi degli adattatori (leggeri), considerevolmente più piccoli rispetto al modello originale. Quindi ti basta condividere solo i tuoi piccoli pesi degli adattatori (e il modello di base)! Puoi trovare un elenco di approcci interessanti per PEFT qui.

Quantizzazione: Modelli che funzionano ovunque

Abbiamo visto che i modelli che hanno delle prestazioni di rilievo ora si presentano in tutte le forme e dimensioni… ma anche così, non significa che siano accessibili a tutti! Un modello con 30 miliardi di parametri può richiedere più di 66G di RAM solo per caricarlo in memoria (senza nemmeno usarlo), e non tutti nella comunità hanno l’hardware necessario per farlo.

Ecco dove entra in gioco la quantizzazione! La quantizzazione è una tecnica speciale che riduce la dimensione di un modello modificando la precisione dei suoi parametri.

Cosa significa?

In un computer, i numeri vengono memorizzati con una precisione data (come float32, float16, int8, eccetera). Una precisione indica sia il tipo di numero (se è un numero in virgola mobile o un intero) sia quanto spazio di memoria richiede il numero: float32 memorizza numeri in virgola mobile su 32 bit. Per una spiegazione più approfondita, vedi questo link. Quindi, maggiore è la precisione, maggiore è la memoria fisica che un numero richiede poiché verrà memorizzato su più bit.

Se riduci la precisione, riduci la memoria che ciascun parametro del modello occupa nello storage, riducendo quindi la dimensione del modello! Ciò significa anche che riduci… la precisione effettiva dei calcoli, il che può ridurre le prestazioni del modello. Tuttavia, abbiamo scoperto che su modelli più grandi, questo degrado delle prestazioni è in realtà molto limitato.

Per tornare al nostro esempio precedente, il nostro modello 30B parameters in float16 richiede un po’ meno di 66G di RAM, in 8bit ne richiede solo la metà, quindi 33G di RAM, e in 4bit raggiungiamo anche la metà di questo, quindi circa 16G di RAM, rendendolo considerevolmente più accessibile.

Ci sono molti modi per passare da una precisione all’altra, con molti diversi schemi di “traduzione” esistenti, ognuno con i suoi vantaggi e svantaggi. Approcci popolari includono bitsandbytes, GPTQ, e AWQ. Alcuni utenti, come TheBloke, stanno addirittura convertendo modelli popolari per renderli accessibili alla comunità. Tutti sono molto recenti e ancora in sviluppo, e speriamo di vedere ancora più progressi su questo in futuro.

Cosa succederà?

L’anno non è ancora finito! E questi ultimi mesi giorni ore sono già stati ricchi di sorprese: una nuova architettura finalmente supererà il semplice ed efficiente Transformer?

Le nuove uscite includono

  • Un misto di esperti:
    • Mixtral, il modello è composto da 8 sub-modelli (decodificatori transformer), e per ogni input, un router seleziona i 2 migliori sub-modelli e somma le loro uscite.
  • Diversi modelli di spazio di stato (modelli che mappano l’input all’output attraverso uno spazio latente e che possono essere espressi sia come RNN che come CNN a seconda dei compiti):
    • Mamba, un modello di spazio di stato con un meccanismo di selezione aggiunto
    • Striped Hyena, un modello di spazio di stato con kernel di convoluzione veloce

È ancora un po’ presto per dire se questi nuovi approcci prenderanno il sopravvento sul Transformer, ma i modelli di spazio di stato sono molto promettenti!

Punti chiave

  • Quest’anno ha visto un aumento delle uscite aperte da parte di attori di ogni tipo (grandi aziende, start-up, laboratori di ricerca), che hanno dato potere alla comunità di iniziare a sperimentare ed esplorare a un ritmo mai visto prima.
  • La trasparenza nell’annuncio dei modelli ha avuto alti e bassi, dalle prime uscite di quest’anno molto aperte (miscugli di dataset, pesi, architetture) alle ultime uscite che non indicano nulla sui dati di addestramento, rendendole quindi non riproducibili.
  • I modelli aperti sono emersi da molte nuove realtà, compresa la Cina, con diversi nuovi attori che si posizionano come forti contendenti nel campo dell’LLM.
  • Le possibilità di personalizzazione hanno raggiunto livelli mai visti prima, con nuove strategie per il fine-tuning (RLHF, adattatori, fusione), che sono solo all’inizio.
  • Dimensioni dei modelli più piccole e miglioramenti nella quantizzazione hanno reso gli LLM accessibili a molte più persone!
  • Sono comparse anche nuove architetture – sostituiranno finalmente il Transformer?

Ecco tutto! Spero che abbiate apprezzato la rassegna di quest’anno, che abbiate imparato qualcosa e che siate entusiasti quanto me di quanto il progresso dell’IA ora si basi sull’open source e sull’impegno della comunità! 🤗

[^1]: La normalizzazione dell’incorporamento dei post è un trucco per rendere l’apprendimento più stabile. [^2]: Gli incapsulamenti posizionali ALiBi introducono una penalità quando i token troppo distanti in una sequenza sono collegati insieme dal modello (mentre gli incapsulamenti posizionali normali memorizzerebbero solo informazioni sull’ordine e sulla posizione relativa dei token in una sequenza).