Ingegneria pratica del prompt per LLM più piccoli

Maud Nalpas
Maud Nalpas

L'efficacia di un modello linguistico di grandi dimensioni (LLM) dipende fortemente dalle istruzioni darlo. Il prompt engineering il processo di creazione delle domande in modo da ottenere il miglior output da un LLM. È un passaggio cruciale per l'implementazione di una funzionalità basata su LLM.

Il prompt engineering è un processo iterativo. Se hai sperimentato LLM diversi, avrai probabilmente notato che devi modificare il prompt ottenere un risultato migliore.

Questo vale anche per i modelli di dimensioni diverse.

Interfacce di Chat basate su LLM di grandi dimensioni, come Gemini o ChatGPT, può spesso produrre risultati soddisfacenti con il minimo sforzo di prompt. Tuttavia, quando lavori con un LLM predefinito più piccolo che non è ottimizzato, puoi devi adattare il tuo approccio.

Gli LLM più piccoli sono meno potenti e hanno un pool di informazioni più ridotto da cui attingere.

Cosa si intende con "LLM più piccoli"?

La definizione delle dimensioni LLM è complicata e non sempre divulgato dai produttori.

In questo documento, i "LLM più piccoli" indica qualsiasi modello con parametri di oltre 30 miliardi. A oggi, i modelli con pochi milioni o pochi miliardi di parametri essere eseguite in modo realistico nel browser, su dispositivi di livello consumer.

Dove vengono utilizzati gli LLM più piccoli?

  • IA generativa su dispositivo/in-browser, ad esempio se usi Gemma 2B con l'API LLM Inference di MediaPipe (adatto anche per dispositivi che utilizzano solo CPU) o DistilBert nel browser con Transformers.js. È possibile scaricare un modello ed eseguire l'inferenza sul dispositivo di un utente solo con questi LLM più piccoli, al fine di mantenere i download web ragionevoli e alla memoria e ai vincoli GPU/CPU di un dispositivo.
  • IA generativa lato server personalizzata. piccoli modelli aperti come Gemma 2B, Gemma 7B o Gemma 27B sono disponibili per l’esecuzione sul tuo server (e possono essere perfezionati).

Inizia

Le interfacce di Chat basate su LLM di grandi dimensioni, come Gemini o ChatGPT, possono spesso produrre risultati soddisfacenti con il minimo sforzo di prompt. Tuttavia, quando lavori con LLM più piccoli, devi adattare il tuo approccio. Gli LLM più piccoli sono meno potenti e hanno un pool di informazioni più ridotto da cui attingere.

Fornisci contesto e istruzioni precise per la formattazione

Per ottenere risultati ottimali con LLM di piccole dimensioni, crea prompt più dettagliati e specifici.

Ad esempio:

Based on a user review, provide a product rating as an integer between 1 and 5. \n
Only output the integer.

Review: "${review}"
Rating:
Input (revisione) Output (classificazione)
  LLM più grande (Gemini 1.5) LLM più piccolo (Gemma 2B)
Adoro la vestibilità. Distribuisce il peso bene e incredibilmente confortevole anche durante le escursioni di tutto il giorno. Lo consiglierei. 5 4 stelle su 5**
Le cinghie sono fragili e hanno iniziato a scavare nelle mie spalle sotto carichi pesanti. 1 2/5

Sebbene Gemini 1.5 fornisca l'output desiderato con questo semplice prompt, non è soddisfacente:

  • Il formato non è corretto. Abbiamo richiesto un numero intero per la valutazione.
  • La valutazione non sembra molto precisa. La prima recensione è abbastanza entusiasta da indicare una recensione con 5 stelle.

Per risolvere questo problema, dobbiamo usare tecniche di prompt engineering, Prompt one-, few-shot e multi-shot e proprietari della catena di pensiero. Dobbiamo inoltre fornire istruzioni di formato chiare e insistere che il modello debba utilizza l'intero intervallo di valutazioni.

Ad esempio:

`Analyze a product review, and then based on your analysis give me the
corresponding rating (integer). The rating should be an integer between 1 and
5. 1 is the worst rating, and 5 is the best rating. A strongly dissatisfied
review that only mentions issues should have a rating of 1 (worst). A strongly
satisfied review that only mentions positives and upsides should have a rating
of 5 (best). Be opinionated. Use the full range of possible ratings (1 to
5). \n\n
    \n\n
    Here are some examples of reviews and their corresponding analyses and
    ratings:
    \n\n
    Review: 'Stylish and functional. Not sure how it'll handle rugged outdoor
    use, but it's perfect for urban exploring.'
    Analysis: The reviewer appreciates the product's style and basic
    functionality. They express some uncertainty about its ruggedness but
    overall find it suitable for their intended use, resulting in a positive,
    but not top-tier rating.
    Rating (integer): 4
    \n\n
    Review: 'It's a solid backpack at a decent price. Does the job, but nothing
    particularly amazing about it.'
    Analysis: This reflects an average opinion. The backpack is functional and
    fulfills its essential purpose. However, the reviewer finds it unremarkable
    and lacking any standout features deserving of higher praise.
    Rating (integer): 3
    \n\n
    Review: 'The waist belt broke on my first trip! Customer service was unresponsive too. Would not recommend.'
    Analysis: A serious product defect and poor customer service experience naturally warrants the lowest possible rating. The reviewer is extremely unsatisfied with both the product and the company.
    Rating (integer): 1
    \n\n
    Review: 'Love how many pockets and compartments it has. Keeps everything organized on long trips. Durable too!'
    Analysis: The enthusiastic review highlights specific features the user loves (organization and durability), indicating great satisfaction with the product. This justifies the highest rating.
    Rating (integer): 5
    \n\n
    Review: 'The straps are a bit flimsy, and they started digging into my shoulders under heavy loads.'
    Analysis: While not a totally negative review, a significant comfort issue leads the reviewer to rate the product poorly. The straps are a key component of a backpack, and their failure to perform well under load is a major flaw.
    Rating (integer): 1
    \n\n
    Now, here is the review you need to assess:
    \n
    Review: "${review}" \n`;
Input (revisione) Output con un LLM più piccolo (Gemma 2B)

Adoro la vestibilità. Distribuisce il peso bene e in modo sorprendente confortevole anche durante le escursioni di tutto il giorno. Lo consiglierei.

Analisi: questa recensione è molto positiva e mette in evidenza i vestibilità e comfort, che indicano una grande soddisfazione per il prodotto. Questo giustifica una valutazione alta.

Valutazione (numero intero): 5

Le cinghie sono fragili e hanno iniziato a scavare nelle mie spalle sotto un carico elevato.

**Analisi:** la recensione evidenzia un significativo problema di comfort con le cinghie. Suggerisce inoltre che il prodotto potrebbe non essere adatto per carichi pesanti carichi di lavoro o gite prolungate.

**Valutazione:** 1 (peggiore)

Il nostro prompt più elaborato, combinato con le tecniche dei prompt few-shot e della catena di pensiero, fornisce valutazioni più accurate.

È prevista un'analisi manuale dell'output

Sebbene sia sempre necessario pulire e interpretare manualmente l'output di un LLM, in particolare per gli LLM più piccoli che potrebbero produrre risultati meno elaborati e può richiedere una catena di pensiero.

Nel primo esempio abbiamo usato i prompt Chain-of-Thought, quindi l'output includeva sia un'analisi sia una valutazione e dobbiamo analizzarla manualmente. Inoltre nota la formattazione incoerente nell'output nella sezione precedente: il modello a volte genera un output markdown, ma non ogni volta.

// Use try/catch to catch (parsing) errors
try {
  // Parse the output for a rating
  const int = /[1-5]/;
  const ratingAsString = llmOutput.match(int)[0];
  // Parse as int
  const ratingAsInt = parseInt(ratingAsString);
  // `checkRating` checks the rating is a number between 1 and 5, since the
  // regEx may catch a number like "100"
  const finalRating = checkRating(ratingAsInt);
} catch (e) {
  console.error('Error', e);
}

Tieni presenti le differenze delle API

le API cloud LLM come l'API Gemini o OpenAI, che in genere sono puntano a LLM più grandi, offrono pratiche funzionalità di prompt. Ad esempio, Gemini 1.5 Pro offre istruzioni di sistema e Modalità JSON.

Al momento, queste funzionalità non sono sempre disponibili per l'utilizzo di modelli personalizzati o per gli LLM più piccoli a cui si accede utilizzando le API di IA nel browser, come API MediaPipe LLM Inference o Transformers.js. Sebbene non si tratti necessariamente di un limite tecnico, le API di IA nel browser tendono a essere più snello.

Limiti di token di attenzione

Poiché il prompt per gli LLM più piccoli deve includere esempi o , l'operazione richiederà probabilmente più tempo e occuperà più del token di input limite, se presente.

Inoltre, i modelli più piccoli tendono ad avere un limite di token di input inferiore. Per Ad esempio, Gemini 1.5 Pro ha un limite di 1 milione di token di input. mentre i modelli Gemma hanno una finestra contestuale 8K.

Utilizzare le funzioni di conteggio dei token per evitare di raggiungere il limite.

Adatta le stime dei tempi

Prendi in considerazione la progettazione e il test dei prompt nelle stime dei tempi di progettazione.

A causa delle differenze API e dei limiti di token, probabilmente avrai bisogno di più tempo e impegno per creare il tuo prompt per un LLM più piccolo rispetto a uno più grande. Test e convalida l'output dell'LLM può anche richiedere un maggiore impegno.

Ingegnere del prompt e ottimizzazione?

Per gli sviluppatori web, il prompt engineering è il modo preferito AI generativa rispetto all'addestramento personalizzato e al perfezionamento. Tuttavia, anche l'ingegneria avanzata del prompt potrebbe non essere sufficiente in alcuni casi d'uso, soprattutto se utilizzi un LLM più piccolo.

Utilizza l'ottimizzazione quando:

  • Hai bisogno di un'accuratezza e di prestazioni eccellenti per un'attività specifica. Fini l'ottimizzazione consente di regolare direttamente i parametri interni del modello per ottenere risultati ottimali.
  • Disponi di dati ben curati, pertinenti alla tua attività e già etichettati con come output preferiti. Questi dati sono necessari per un'ottimizzazione efficace.
  • Utilizzerai il modello per lo stesso scopo più volte. È possibile eseguire il perfezionamento una volta sola e riutilizzate per un'attività specifica.