Parametri e modelli di linguaggio

banner

Capire il funzionamento dei parametri associati all’utilizzo di un modello linguistico è fondamentale per sfruttare al meglio le potenzialità dei più recenti LLM. In questo articolo, esploreremo il modo in cui influenzano la generazione delle risposte da parte dei modelli di linguaggio, spiegando il funzionamento di max_tokens, temperature e top_p, e forniremo consigli su quando e come utilizzarli per ottenere i risultati desiderati.

max_tokens

Il parametro max_tokens indica il numero massimo di token che il modello può generare in risposta a una richiesta. Un token può essere una parola, un simbolo o un frammento di parola, a seconda del modello utilizzato. Impostare un valore più alto per max_tokens consente al modello di generare risposte più lunghe, mentre un valore più basso limita la lunghezza della risposta. Ad esempio, se si imposta max_tokens a 100, il modello genererà al massimo 100 token in risposta alla richiesta. Questo parametro è utile per controllare la lunghezza delle risposte e per evitare che il modello generi output troppo lunghi o troppo brevi, a seconda delle esigenze dell’applicazione.

Ad esempio, in Python, è possibile utilizzare max_tokens in questo modo:

response = openai.Completion.create(
    model="text-davinci-003",
    prompt="Scrivi una breve descrizione di un gatto.",
    max_tokens=50
)
print(response.choices[0].text.strip())

Questo vuol dire che il modello genererà una risposta che non supererà i 50 token, garantendo così una descrizione concisa del gatto.

Perché è importante utilizzare questo parametro, e quando? Utilizzare max_tokens è importante quando si desidera avere un controllo preciso sulla lunghezza delle risposte generate dal modello. Ad esempio, se si sta sviluppando un’applicazione che richiede risposte concise, come un assistente virtuale o un chatbot, impostare un valore basso per max_tokens può aiutare a garantire che le risposte siano brevi e dirette. D’altra parte, se si desidera ottenere risposte più dettagliate o approfondite, come in un’applicazione di scrittura creativa o di generazione di contenuti, impostare un valore più alto per max_tokens può consentire al modello di fornire risposte più complete e articolate. In generale, bisogna tener conto che questo numero influenza la quantità di testo generato, e quindi potrebbe troncare risposte che potrebbero essere utili se impostato troppo basso, o generare risposte troppo lunghe e potenzialmente non pertinenti se impostato troppo alto.

temperature

Per quanto riguarda il parametro temperature, questo controlla la creatività o la casualità delle risposte generate dal modello. Un valore più basso per temperature (ad esempio, 0.2) tende a produrre risposte più conservative e prevedibili, mentre un valore più alto (ad esempio, 0.8) può generare risposte più creative e variegate. Impostare temperature a 0.0 farà sì che il modello scelga sempre la parola più probabile, mentre valori più alti permetteranno al modello di esplorare opzioni meno probabili, aumentando così la diversità delle risposte.

Per impostare la temperatura in Python, si può fare così:

response = openai.Completion.create(
    model="text-davinci-003",
    prompt="Scrivi una breve descrizione di un gatto.",
    temperature=0.9
)
print(response.choices[0].text.strip())

In questo modo, il modello genererà una risposta che potrebbe essere più creativa e variegata rispetto a una risposta generata con una temperatura più bassa.

Questo parametro è particolarmente utile quando si desidera ottenere risposte più originali o quando si vuole evitare che il modello generi sempre le stesse risposte in situazioni simili. Solitamente, si usa un valore più basso (minore di 0.3) quando si vogliono delle risposte prevedibile, ideali per compiti come descrizione di fatti o scrittura di codice, mentre si preferisce un valore più alto (maggiore di 0.7) quando si desidera stimolare la creatività, come nella scrittura creativa o nella generazione di idee.

top_p

Il parametro top_p, noto anche come “nucleus sampling”, controlla la diversità delle risposte generando solo dalle parole più probabili fino a raggiungere una certa soglia di probabilità cumulativa. In altre parole si parla di “nucleus sampling” perché il modello considera solo le parole che insieme rappresentano una certa percentuale della probabilità totale: questo vuol dire che si seleziona un nucleo delle parole più probabili, la cui somma delle probabilità è pari o superiore al valore di top_p impostato.

Ad esempio, se si imposta top_p a 0.9, il modello considererà solo le parole che insieme rappresentano il 90% della probabilità totale. Questo significa che le parole meno probabili, che rappresentano il restante 10%, non saranno considerate nella generazione della risposta.

In Python, questo si traduce in questo modo:

response = openai.Completion.create(
    model="text-davinci-003",
    prompt="Scrivi una breve descrizione di un gatto.",
    top_p=0.9
)
print(response.choices[0].text.strip())

Utilizzare top_p è utile quando si desidera ottenere risposte più varie e creative, ma si vuole comunque mantenere un certo livello di coerenza. Impostare un valore più basso per top_p (ad esempio, 0.5) può portare a risposte più prevedibili e meno variegate, mentre un valore più alto (ad esempio, 0.9) può generare risposte più diverse e interessanti. In generale, top_p è spesso utilizzato in combinazione con temperature per bilanciare la creatività e la coerenza delle risposte generate dal modello.

Un consiglio: OpenAI consiglia di utilizzare top_p in combinazione con temperature per ottenere risultati ottimali. Ad esempio, se si imposta temperature a un valore più alto per stimolare la creatività, è possibile impostare top_p a un valore più basso per mantenere un certo livello di coerenza nelle risposte generate. Al contrario, se si desidera risposte più prevedibili, è possibile impostare temperature a un valore più basso e top_p a un valore più alto per consentire al modello di esplorare una gamma più ampia di parole probabili.

Quando utilizzare questi parametri?

L’utilizzo di max_tokens, temperature e top_p dipende dalle esigenze specifiche dell’applicazione e dal tipo di risposte desiderate. Ecco alcuni scenari comuni in cui questi parametri possono essere utili:

  • Attività fattuali, scrittura di codice o riassunti: In questi casi, è consigliabile impostare temperature a un valore più basso (ad esempio, 0.2) per ottenere risposte più precise e prevedibili. Inoltre, è possibile impostare top_p a un valore più alto (ad esempio, 0.9) per consentire al modello di esplorare una gamma più ampia di parole probabili, mantenendo comunque un certo livello di coerenza.
  • Scrittura creativa, generazione di idee o conversazioni informali: In questi casi, è consigliabile impostare temperature a un valore più alto (ad esempio, 0.8) per stimolare la creatività e ottenere risposte più variegate. Inoltre, è possibile impostare top_p a un valore più basso (ad esempio, 0.5) per mantenere un certo livello di coerenza nelle risposte generate, evitando che il modello esplori parole troppo improbabili che potrebbero risultare incoerenti o non pertinenti, oppure ad un valore alto (ad esempio, 0.9) per consentire al modello di esplorare una gamma più ampia di parole probabili, tenendo conto che questo potrebbe portare a risposte potenzialmente meno coerenti.

🔗 Leggi anche:

TheRedCode.it - Il mondo #tech a piccoli #bit

Partners

Community, aziende e persone che supportano attivamente il blog

Logo di GrUSP
Logo di Python Milano
Logo di Schrodinger Hat
Logo di Python Biella Group
Logo di Fuzzy Brains
Logo di Django Girls Italy
Logo di Improove
Logo de Il Libro Open Source
Logo di NgRome
Logo de La Locanda del Tech
Logo di Tomorrow Devs
Logo di DevDojo

Vuoi diventare #tech content creator? 🖊️

Se vuoi raccontare la tua sul mondo #tech con dei post a tema o vuoi condividere la tua esperienza con la community, sei nel posto giusto! 😉

Manda una mail a collaborazioni[at]theredcode.it con la tua proposta e diventa la prossima penna del blog!

Ma sì, facciamolo!