Apprendimento con pochi esempi nella pratica GPT-Neo e l’API di inferenza accelerata di 🤗
'Apprendimento con pochi esempi nella pratica con GPT-Neo e l'API di inferenza accelerata di 🤗.'
In molte applicazioni di Machine Learning, la quantità di dati etichettati disponibili costituisce un ostacolo alla creazione di un modello ad alte prestazioni. Gli ultimi sviluppi in NLP mostrano che è possibile superare questa limitazione fornendo alcuni esempi al momento dell’infarenza con un grande modello di linguaggio – una tecnica nota come Few-Shot Learning. In questo post del blog, spiegheremo cos’è il Few-Shot Learning e esploreremo come un grande modello di linguaggio chiamato GPT-Neo e l’API di Inferenza Accelerata di 🤗 possono essere utilizzati per generare le tue previsioni.
Cos’è il Few-Shot Learning?
Il Few-Shot Learning si riferisce alla pratica di alimentare un modello di apprendimento automatico con una quantità molto piccola di dati di addestramento per guidare le sue previsioni, come ad esempio alcuni esempi al momento dell’infarenza, a differenza delle tecniche standard di accordatura fine che richiedono una quantità relativamente grande di dati di addestramento affinché il modello pre-addestrato si adatti al compito desiderato con precisione.
Questa tecnica è stata principalmente utilizzata nella visione artificiale, ma con alcuni dei più recenti modelli di linguaggio, come GPT-Neo di EleutherAI e OpenAI GPT-3, ora possiamo utilizzarla anche nell’Elaborazione del Linguaggio Naturale (NLP).
Nell’NLP, il Few-Shot Learning può essere utilizzato con grandi modelli di linguaggio, che hanno imparato a svolgere un’ampia serie di compiti implicitamente durante il loro pre-addestramento su grandi dataset di testo. Questo consente al modello di generalizzare, cioè di comprendere compiti correlati ma precedentemente non visti, con solo alcuni esempi.
- Trasformatori di Frasi nell’Hugging Face Hub
- Benvenuto spaCy nell’Hugging Face Hub
- Presentando Optimum Il toolkit di ottimizzazione per i Transformers su larga scala
Gli esempi Few-Shot NLP sono composti da tre componenti principali:
- Descrizione del Compito: Una breve descrizione di ciò che il modello dovrebbe fare, ad esempio “Tradurre dall’inglese al francese”
- Esempi: Alcuni esempi che mostrano al modello ciò che ci si aspetta che preveda, ad esempio “lontra marina => sea otter”
- Prompt: L’inizio di un nuovo esempio, che il modello dovrebbe completare generando il testo mancante, ad esempio “formaggio => “
Immagine tratta da “I modelli di linguaggio sono apprendisti Few-Shot”
Creare questi esempi few-shot può essere complicato, poiché è necessario articolare il “compito” che si desidera che il modello esegua attraverso di essi. Un problema comune è che i modelli, specialmente quelli più piccoli, sono molto sensibili al modo in cui gli esempi sono scritti.
Un approccio per ottimizzare il Few-Shot Learning in produzione è quello di apprendere una rappresentazione comune per un compito e quindi addestrare classificatori specifici del compito su questa rappresentazione.
OpenAI ha dimostrato nel paper GPT-3 che la capacità di rispondere ai few-shot migliorando con il numero di parametri del modello di linguaggio.
Immagine tratta da “I modelli di linguaggio sono apprendisti Few-Shot”
Ora diamo uno sguardo a come GPT-Neo e l’API di Inferenza Accelerata di 🤗 possono essere utilizzati per generare le tue previsioni Few-Shot Learning!
Cos’è GPT-Neo?
GPT-Neo è una famiglia di modelli di linguaggio basati su trasformatori di EleutherAI basati sull’architettura GPT. L’obiettivo principale di EleutherAI è quello di addestrare un modello equivalente per dimensioni a GPT-3 e renderlo disponibile al pubblico sotto una licenza aperta.
Tutti i checkpoint attualmente disponibili di GPT-Neo sono addestrati con il dataset Pile, un grande corpus di testo che è ampiamente documentato in (Gao et al., 2021). Pertanto, ci si aspetta che funzioni meglio sul testo che corrisponde alla distribuzione del testo di addestramento; raccomandiamo di tenerlo presente durante la progettazione dei tuoi esempi.
API di Inferenza Accelerata di 🤗
L’API di Inferenza Accelerata è il nostro servizio ospitato per eseguire inferenze su oltre 10.000 modelli disponibili pubblicamente su 🤗 Model Hub o sui tuoi modelli privati, tramite semplici chiamate API. L’API include l’accelerazione su CPU e GPU con un aumento prestazionale fino a 100 volte rispetto alla distribuzione predefinita dei Transformers.
Per integrare le previsioni Few-Shot Learning con GPT-Neo
nelle tue applicazioni, puoi utilizzare l’API di Inferenza Accelerata di 🤗 con il frammento di codice qui sotto. Puoi trovare il tuo token API qui, se non hai un account, puoi iniziare qui.
import json
import requests
API_TOKEN = ""
def query(payload='',parameters=None,options={'use_cache': False}):
API_URL = "https://api-inference.huggingface.co/models/EleutherAI/gpt-neo-2.7B"
headers = {"Authorization": f"Bearer {API_TOKEN}"}
body = {"inputs":payload,'parameters':parameters,'options':options}
response = requests.request("POST", API_URL, headers=headers, data= json.dumps(body))
try:
response.raise_for_status()
except requests.exceptions.HTTPError:
return "Errore:"+" ".join(response.json()['error'])
else:
return response.json()[0]['generated_text']
parameters = {
'max_new_tokens':25, # numero di token generati
'temperature': 0.5, # controllo della casualità delle generazioni
'end_sequence': "###" # sequenza di fine per la generazione
}
prompt="...." # prompt few-shot
data = query(prompt,parameters,options)
Insight pratici
Ecco alcuni insight pratici che ti aiuteranno ad iniziare ad utilizzare GPT-Neo
e l’API di Inferenza Accelerata 🤗.
Dato che GPT-Neo
(2.7B) è circa 60 volte più piccolo di GPT-3
(175B), non generalizza altrettanto bene ai problemi di zero-shot e ha bisogno di 3-4 esempi per ottenere buoni risultati. Quando fornisci più esempi, GPT-Neo
comprende il compito e tiene conto della end_sequence
, il che ci consente di controllare abbastanza bene il testo generato.
I parametri iperparametrici End Sequence
, Token Length
e Temperature
possono essere utilizzati per controllare la generazione-di-testo
del modello e puoi utilizzarli a tuo vantaggio per risolvere il compito di cui hai bisogno. La Temperature
controlla la casualità delle tue generazioni, una temperatura più bassa produce generazioni meno casuali e una temperatura più alta produce generazioni più casuali.
Nell’esempio, puoi vedere quanto sia importante definire i tuoi parametri iperparametrici. Questi possono fare la differenza tra risolvere il tuo compito o fallire miseramente.
Utilizzo responsabile
L’apprendimento con pochi esempi è una tecnica potente ma presenta anche insidie uniche che devono essere prese in considerazione durante la progettazione dei casi di utilizzo. Per illustrare questo, consideriamo l’impostazione predefinita di Analisi del Sentimento
fornita nel widget. Dopo aver visto tre esempi di classificazione del sentimento, il modello fa le seguenti previsioni 4 volte su 5, con temperature
impostata su 0.1:
Tweet: “Sono una persona disabile felice” Sentimento: Negativo
Cosa potrebbe andare storto? Immagina di utilizzare l’analisi del sentimento per aggregare le recensioni dei prodotti su un sito di shopping online: un possibile risultato potrebbe essere che gli articoli utili alle persone con disabilità verrebbero automaticamente declassati, una forma di discriminazione automatizzata. Per saperne di più su questo problema specifico, ti consigliamo l’articolo ACL 2020 Social Biases in NLP Models as Barriers for Persons with Disabilities. Poiché l’apprendimento con pochi esempi si basa più direttamente sulle informazioni e le associazioni apprese durante il pre-training, diventa più sensibile a questo tipo di errori.
Come minimizzare il rischio di danni? Ecco alcune raccomandazioni pratiche.
Migliori pratiche per l’utilizzo responsabile
- Assicurarsi che le persone sappiano quali parti della loro esperienza utente dipendono dagli output del sistema di ML
- Se possibile, dare agli utenti la possibilità di opt-out
- Fornire un meccanismo per consentire agli utenti di fornire feedback sulla decisione del modello e di annullarla
- Monitorare i feedback, in particolare i fallimenti del modello, per gruppi di utenti che potrebbero essere colpiti in modo sproporzionato
Ciò che deve essere evitato il più possibile è utilizzare il modello per prendere automaticamente decisioni per o riguardo a un utente, senza la possibilità per un umano di fornire input o correggere l’output. Diverse normative, come il GDPR in Europa, richiedono che agli utenti venga fornita un’esplicazione delle decisioni automatiche prese su di loro.
Per utilizzare GPT-Neo o qualsiasi modello di Hugging Face nella tua applicazione, puoi avviare una prova gratuita dell’API di Inference Accelerata di 🤗. Se hai bisogno di aiuto nel mitigare il bias nei modelli e nei sistemi di intelligenza artificiale, o nel sfruttare l’apprendimento a pochi esempi, il 🤗 Expert Acceleration Program può offrire al tuo team un supporto premium diretto dal team di Hugging Face.