Generazione di testo open-source e ecosistema LLM presso Hugging Face

Open-source text generation and LLM ecosystem at Hugging Face

La generazione di testo e le tecnologie conversazionali esistono da molto tempo. Le sfide precedenti nel lavorare con queste tecnologie riguardavano il controllo della coerenza e della diversità del testo attraverso i parametri di inferenza e i pregiudizi discriminativi. Le uscite più coerenti erano meno creative, più vicine ai dati di addestramento originali e suonavano meno umane. Sviluppi recenti hanno superato queste sfide e interfacce utente user-friendly hanno reso possibile per chiunque provare questi modelli. Servizi come ChatGPT hanno recentemente messo in evidenza modelli potenti come GPT-4 e causato un’esplosione di alternative open-source come LLaMA diventando mainstream. Crediamo che queste tecnologie saranno presenti per molto tempo e si integreranno sempre di più nei prodotti di tutti i giorni.

Questo post è diviso nelle seguenti sezioni:

  1. Breve introduzione alla generazione di testo
  2. Licenze
  3. Strumenti nell’Ecosistema Hugging Face per LLM Serving
  4. Parameter Efficient Fine Tuning (PEFT)

Breve Introduzione alla Generazione di Testo

I modelli di generazione di testo sono essenzialmente addestrati con l’obiettivo di completare un testo incompleto o generare testo da zero come risposta a un’istruzione o una domanda specifica. I modelli che completano un testo incompleto vengono chiamati modelli linguistici causali, e famosi esempi sono GPT-3 di OpenAI e LLaMA di Meta AI.

Un concetto che devi conoscere prima di procedere è il fine-tuning. Questo è il processo di prendere un modello molto grande e trasferire le conoscenze contenute in questo modello base in un altro caso d’uso, che chiamiamo un’attività secondaria. Queste attività possono presentarsi sotto forma di istruzioni. Man mano che la dimensione del modello aumenta, può generalizzare meglio su istruzioni che non esistono nei dati di pre-addestramento, ma che sono state apprese durante il fine-tuning.

I modelli linguistici causali vengono adattati utilizzando un processo chiamato apprendimento per rinforzo dal feedback umano (RLHF). Questa ottimizzazione viene principalmente effettuata sulla naturalezza e coerenza del testo piuttosto che sulla validità della risposta. Spiegare come funziona RLHF esula dallo scopo di questo post sul blog, ma puoi trovare ulteriori informazioni su questo processo qui.

Ad esempio, GPT-3 è un modello base linguistico causale, mentre i modelli nel backend di ChatGPT (che è l’interfaccia utente per i modelli della serie GPT) vengono addestrati tramite RLHF su prompt che possono consistere in conversazioni o istruzioni. È una distinzione importante da fare tra questi modelli.

Sul Hugging Face Hub, puoi trovare sia modelli linguistici causali che modelli linguistici causali addestrati su istruzioni (a cui forniremo i link più avanti in questo post sul blog). LLaMA è uno dei primi LLM open-source che ha superato o raggiunto i modelli closed-source. Un gruppo di ricerca guidato da Together ha creato una riproduzione del dataset di LLaMA, chiamato Red Pajama, e ha addestrato modelli LLM e modelli addestrati su istruzioni su di esso. Puoi leggere di più al riguardo qui e trovare i checkpoint del modello su Hugging Face Hub. Al momento della stesura di questo post sul blog, tre dei più grandi modelli linguistici causali con licenze open-source sono MPT-30B di MosaicML, XGen di Salesforce e Falcon di TII UAE, disponibili completamente in open-source su Hugging Face Hub.

Il secondo tipo di modello di generazione di testo è comunemente chiamato modello di generazione di testo a testo. Questi modelli vengono addestrati su coppie di testo, che possono essere domande e risposte o istruzioni e risposte. I più popolari sono T5 e BART (che al momento non sono all’avanguardia). Google ha recentemente rilasciato la serie di modelli FLAN-T5. FLAN è una tecnica recente sviluppata per il fine-tuning delle istruzioni, e FLAN-T5 è essenzialmente T5 addestrato tramite FLAN. Al momento, la serie di modelli FLAN-T5 è all’avanguardia e open-source, disponibile sul Hugging Face Hub. Nota che questi sono diversi dai modelli linguistici causali addestrati su istruzioni, anche se il formato input-output potrebbe sembrare simile. Qui di seguito puoi vedere un’illustrazione di come funzionano questi modelli.

Avere una maggiore varietà di modelli di generazione di testo open-source consente alle aziende di mantenere riservati i propri dati, adattare i modelli ai propri domini più velocemente e ridurre i costi di inferenza anziché fare affidamento su API a pagamento chiuse. Puoi trovare tutti i modelli linguistici causali open-source su Hugging Face Hub qui e i modelli di generazione di testo a testo qui.

Modelli creati con amore da Hugging Face con BigScience e BigCode 💗

Hugging Face ha co-coordinato due iniziative scientifiche, BigScience e BigCode. Come risultato di queste iniziative, sono stati creati due grandi modelli di linguaggio, BLOOM 🌸 e StarCoder 🌟. BLOOM è un modello di linguaggio causale addestrato su 46 lingue e 13 linguaggi di programmazione. È il primo modello open-source ad avere più parametri di GPT-3. Puoi trovare tutti i checkpoint disponibili nella documentazione di BLOOM.

StarCoder è un modello di linguaggio addestrato su codice permessivo da GitHub (con oltre 80 linguaggi di programmazione 🤯) con un obiettivo Fill-in-the-Middle. Non è ottimizzato per le istruzioni e quindi funge più da assistente di codifica per completare un codice dato, ad esempio tradurre Python in C++, spiegare concetti (cosa significa ricorsione) o agire come un terminale. Puoi provare tutti i checkpoint di StarCoder in questa applicazione. È dotato anche di un’estensione per VSCode.

I frammenti per utilizzare tutti i modelli menzionati in questo post del blog sono forniti sia nel repository del modello che nella pagina di documentazione di quel tipo di modello in Hugging Face.

Licenze

Molti modelli di generazione di testo sono o closed-source o la licenza limita l’uso commerciale. Fortunatamente, stanno iniziando ad apparire alternative open-source che vengono abbracciate dalla comunità come mattoni fondamentali per ulteriori sviluppi, fine-tuning o integrazione con altri progetti. Di seguito puoi trovare una lista di alcuni dei grandi modelli di linguaggio causale con licenze completamente open-source:

  • Falcon 40B
  • XGen
  • MPT-30B
  • Pythia-12B
  • RedPajama-INCITE-7B
  • OpenAssistant (variante Falcon)

Ci sono due modelli di generazione di codice, StarCoder di BigCode e Codegen di Salesforce. Sia per entrambi i modelli che per i checkpoint del modello ci sono varie dimensioni e licenze open-source o open RAIL, ad eccezione di Codegen ottimizzato per l’istruzione.

L’Hugging Face Hub ospita anche vari modelli ottimizzati per l’istruzione o l’uso in chat. Sono disponibili in vari stili e dimensioni a seconda delle tue esigenze.

  • MPT-30B-Chat, di Mosaic ML, utilizza la licenza CC-BY-NC-SA, che non consente l’uso commerciale. Tuttavia, MPT-30B-Instruct utilizza la licenza CC-BY-SA 3.0, che può essere utilizzata a fini commerciali.
  • Falcon-40B-Instruct e Falcon-7B-Instruct utilizzano entrambi la licenza Apache 2.0, quindi è consentito anche l’uso commerciale.
  • Un’altra famiglia popolare di modelli è OpenAssistant, alcuni dei quali sono basati sul modello LLaMA di Meta utilizzando un set di dati di istruzioni personalizzato. Poiché il modello LLaMA originale può essere utilizzato solo per scopi di ricerca, i checkpoint di OpenAssistant basati su LLaMA non hanno licenze open-source complete. Tuttavia, ci sono modelli OpenAssistant basati su modelli open-source come Falcon o pythia che utilizzano licenze permissive.
  • StarChat Beta è la versione ottimizzata per l’istruzione di StarCoder e ha la licenza BigCode Open RAIL-M v1, che consente l’uso commerciale. Il modello di codifica ottimizzato per l’istruzione di Salesforce, modello XGen, consente solo l’uso per la ricerca.

Se stai cercando di ottimizzare un modello su un set di dati di istruzioni esistente, è necessario conoscere come è stato compilato il set di dati. Alcuni dei set di dati di istruzioni esistenti sono ottenuti tramite crowd-sourcing o utilizzano output di modelli esistenti (ad esempio, i modelli dietro ChatGPT). Il set di dati ALPACA creato da Stanford è creato tramite gli output dei modelli dietro ChatGPT. Inoltre, ci sono vari set di dati di istruzioni crowd-sourced con licenze open-source, come oasst1 (creato da migliaia di persone volontariamente!) o databricks/databricks-dolly-15k. Se desideri creare un set di dati tu stesso, puoi consultare la scheda del set di dati di Dolly su come creare un set di dati di istruzioni. I modelli ottimizzati su questi set di dati possono essere distribuiti.

Puoi trovare una tabella esaustiva di alcuni modelli open-source di seguito.

Strumenti nell’ecosistema Hugging Face per il servizio LLM

Inferenza di Generazione di Testo

Il tempo di risposta e la latenza per gli utenti simultanei sono una grande sfida per il servizio di questi grandi modelli. Per affrontare questo problema, Hugging Face ha rilasciato text-generation-inference (TGI), una soluzione di servizio open-source per grandi modelli di linguaggio costruita su Rust, Python e gRPc. TGI è integrato nelle soluzioni di inferenza di Hugging Face, Inference Endpoints e Inference API, quindi puoi creare direttamente un endpoint con un’elaborazione ottimizzata con pochi clic, oppure inviare semplicemente una richiesta all’Inference API di Hugging Face per beneficiarne, anziché integrare TGI nella tua piattaforma.

TGI attualmente alimenta HuggingChat, l’interfaccia di chat open-source di Hugging Face per LLM. Questo servizio utilizza attualmente uno dei modelli di OpenAssistant come modello backend. Puoi chattare quanto vuoi con HuggingChat e abilitare la funzione di ricerca Web per risposte che utilizzano elementi dalle pagine Web attuali. Puoi anche fornire feedback su ciascuna risposta per permettere agli autori del modello di addestrare modelli migliori. L’interfaccia di HuggingChat è anche open-source e stiamo lavorando su ulteriori funzionalità per HuggingChat per consentire più funzioni, come la generazione di immagini all’interno della chat.

Recentemente, è stato rilasciato un modello Docker per HuggingChat per Hugging Face Spaces. Ciò consente a chiunque di distribuire la propria istanza basata su un grande modello di linguaggio con pochi clic e personalizzarla. Puoi creare la tua istanza di un grande modello di linguaggio qui.

Come trovare il miglior modello?

Hugging Face ospita una classifica LLM. Questa classifica viene creata valutando i modelli sottomessi dalla comunità su benchmark di generazione di testi su cluster di Hugging Face. Se non riesci a trovare la lingua o il dominio che stai cercando, puoi filtrarli qui.

Puoi anche consultare la classifica delle prestazioni LLM, che mira a valutare la latenza e la velocità di modelli di grandi dimensioni disponibili su Hugging Face Hub.

Parameter Efficient Fine Tuning (PEFT)

Se desideri ottimizzare uno dei modelli di grandi dimensioni esistenti sul tuo set di dati di istruzioni, è quasi impossibile farlo su hardware per consumatori e successivamente distribuirli (poiché i modelli di istruzioni hanno le stesse dimensioni dei checkpoint originali utilizzati per l’ottimizzazione). PEFT è una libreria che ti consente di utilizzare tecniche di ottimizzazione efficienti dei parametri. Ciò significa che anziché addestrare l’intero modello, puoi addestrare un numero molto piccolo di parametri aggiuntivi, consentendo un addestramento molto più veloce con una perdita di prestazioni molto ridotta. Con PEFT, puoi fare adattamento a basso rango (LoRA), ottimizzazione del prefisso, ottimizzazione del prompt e p-ottimizzazione.

Puoi consultare ulteriori risorse per ulteriori informazioni sulla generazione di testi.

Risorse aggiuntive

  • Insieme ad AWS abbiamo rilasciato contenitori di deep learning per l’implementazione di LLM basati su TGI chiamati LLM Inference Containers. Leggi di più su di essi qui.
  • Pagina del compito di generazione di testi per saperne di più sul compito stesso.
  • Post sul blog sull’annuncio di PEFT.
  • Leggi come gli endpoint di inferenza utilizzano TGI qui.