Non ti annoierò con complesse catene di prompt; mi limiterò invece a fornire alcuni esempi che miglioreranno immediatamente le prestazioni:
- “Pensiamo passo dopo passo” – funziona benissimo per ragionamenti o compiti logici..
- “Fai un respiro profondo e lavora su questo problema passo dopo passo”— una versione migliorata del punto precedente. Può aggiungere qualche percentuale in più di qualità.
- “Questo è molto importante per la mia carriera” — basta aggiungerlo alla fine del messaggio e noterai un miglioramento della qualità del 5–20%.
Inoltre, condividerò subito un utile modello di prompt:
Uniamo i nostri X comando e chiarezza di pensiero per decifrare rapidamente e accuratamente la risposta nell’approccio passo passo. Fornisci dettagli e includi le fonti nella risposta. Questo è molto importante per la mia carriera.
Dove X è il settore del compito che stai risolvendo, ad esempio la programmazione.
Consiglio vivamente di trascorrere alcune serate esplorando tecniche di ingegneria rapida. Ciò non solo ti consentirà di controllare meglio il comportamento del modello, ma aiuterà anche a migliorare la qualità e a ridurre le allucinazioni. Per questo consiglio la lettura del Guida alla progettazione rapida.
Link utili:
- prompttools — test e sperimentazione tempestivi, con supporto per entrambi i LLM (ad esempio OpenAI, LLaMA).
- promptfoo — testare e valutare la qualità dell’output LLM.
- Fantastici suggerimenti ChatGPT — Una raccolta di esempi di prompt da utilizzare con il modello ChatGPT.
RAG è una tecnica che combina il LLM con basi di conoscenza esterne. Ciò consente al modello di aggiungere al modello informazioni rilevanti o dati specifici non inclusi nel set di addestramento originale.
Nonostante il nome intimidatorio (a volte aggiungiamo la parola “reranker”), in realtà è una tecnica piuttosto vecchia e sorprendentemente semplice:
- Converti i documenti in numeri, li chiamiamo incastri.
- Quindi, converti anche la query di ricerca dell’utente in incorporamenti utilizzando lo stesso modello.
- Trova i primi K documenti più vicini, solitamente in base a somiglianza del coseno.
- Chiedi al LLM di generare una risposta basata su questi documenti.
Quando usare
- Necessità di informazioni attuali: Quando l’applicazione richiede informazioni in costante aggiornamento, come articoli di notizie.
- Applicazioni specifiche del dominio: Per applicazioni che richiedono conoscenze specializzate al di fuori dei dati di formazione di LLM. Ad esempio, documenti aziendali interni.
Quando NON utilizzare
- Applicazioni generali di conversazione: Dove le informazioni devono essere generali e non richiedono dati aggiuntivi.
- Scenari con risorse limitate: La componente di recupero di RAG prevede la ricerca in vaste basi di conoscenza, che può essere computazionalmente costosa e lenta, sebbene comunque più veloce e meno costosa della messa a punto.
Costruire un’applicazione con RAG
Un ottimo punto di partenza è utilizzare il file Libreria LlamaIndex. Ti consente di connettere rapidamente i tuoi dati ai LLM. Per questo hai solo bisogno di poche righe di codice:
from llama_index import VectorStoreIndex, SimpleDirectoryReader# 1. Load your documents:
documents = SimpleDirectoryReader("YOUR_DATA").load_data()
# 2. Convert them to vectors:
index = VectorStoreIndex.from_documents(documents)
# 3. Ask the question:
query_engine = index.as_query_engine()
response = query_engine.query("When's my boss's birthday?")
print(response)
Nelle applicazioni del mondo reale, le cose sono notevolmente più complesse. Come in ogni sviluppo, incontrerai molte sfumature. Ad esempio, i documenti recuperati potrebbero non essere sempre pertinenti alla domanda oppure potrebbero esserci problemi di velocità. Tuttavia, anche in questa fase, puoi migliorare significativamente la qualità del tuo sistema di ricerca.
Cosa leggere e link utili
La messa a punto è il processo di continuazione della formazione di un LLM pre-addestrato su un set di dati specifico. Potresti chiederti perché dobbiamo addestrare ulteriormente il modello se possiamo già aggiungere dati utilizzando RAG. La risposta semplice è che solo la messa a punto può personalizzare il modello per comprendere un dominio specifico o definirne lo stile. Per esempio, io ho creato una copia di me stesso mettendo a punto le corrispondenze personali:
Ok, se ti ho convinto della sua importanza, vediamo come funziona (spoiler — non è così difficile):
- Prendi un LLM addestrato, a volte chiamato Base LLM. Puoi scaricarli da Abbracciare il viso.
- Prepara i dati di allenamento. Devi solo compilare istruzioni e risposte. Ecco un esempio di un tale set di dati. Puoi anche generare dati sintetici utilizzando GPT-4.
- Scegliere un metodo di regolazione fine adatto. LoRA E QLoRA sono attualmente popolari.
- Ottimizzare il modello su nuovi dati.
Quando usare
- Applicazioni di nicchia: Quando l’applicazione tratta argomenti specializzati o non convenzionali. Ad esempio, applicazioni di documenti legali che devono comprendere e gestire il gergo legale.
- Stili di lingua personalizzati: Per applicazioni che richiedono un tono o uno stile specifico. Ad esempio, creando un file Personaggio dell’intelligenza artificiale che si tratti di una celebrità o di un personaggio di un libro.
Quando NON utilizzare
- Ampie applicazioni: Dove l’ambito dell’applicazione è generale e non richiede conoscenze specialistiche.
- Dati limitati: La messa a punto richiede una quantità significativa di dati rilevanti. Tuttavia, puoi sempre generarli con un altro LLM. Ad esempio, il Set di dati sull’alpaca Per creare la prima messa a punto sono state utilizzate 52.000 coppie istruzione-risposta generate da LLM Chiama v1 modello all’inizio di quest’anno.
Ottimizza il tuo LLM
Puoi trovare un vasto numero di articoli dedicati alla messa a punto del modello. Solo su Medium ce ne sono migliaia. Pertanto, non voglio approfondire troppo questo argomento e vi mostrerò una libreria di alto livello, Illuminato-GPTche nasconde tutta la magia al suo interno. Sì, non consente molta personalizzazione del processo di formazione, ma puoi condurre rapidamente esperimenti e ottenere risultati iniziali. Avrai bisogno solo di poche righe di codice:
# 1. Download the model:
python scripts/download.py --repo_id meta-llama/Llama-2-7b# 2. Convert the checkpoint to the lit-gpt format:
python scripts/convert_hf_checkpoint.py --checkpoint_dir checkpoints/llama
# 3. Generate an instruction tuning dataset:
python scripts/prepare_alpaca.py # it should be your dataset
# 4. Run the finetuning script
python finetune/lora.py \
--checkpoint_dir checkpoints/llama/
--data_dir your_data_folder/
--out_dir my_finetuned_model/
E questo è tutto! Il tuo processo di formazione inizierà:
Tieni presente che il processo può richiedere molto tempo. Ci vogliono circa 10 ore E 30 GB memoria per ottimizzare Falcon-7B su una singola GPU A100.
Naturalmente ho semplificato un po’ troppo e abbiamo solo scalfito la superficie. In realtà, il processo di messa a punto è molto più complesso e per ottenere risultati migliori dovrai comprendere i vari adattatori, i loro parametri e molto altro. Tuttavia, anche dopo un’iterazione così semplice, avrai un nuovo modello che segue le tue istruzioni.
Cosa leggere e link utili
A volte, tutto ciò che vogliamo è semplicemente premere un pulsante di “distribuzione”…
Fortunatamente, questo è abbastanza fattibile. Esiste un numero enorme di framework specializzati nella distribuzione di modelli linguistici di grandi dimensioni. Cosa li rende così buoni?
- Molti wrapper e integrazioni predefiniti.
- Una vasta scelta di modelli disponibili.
- Una moltitudine di ottimizzazioni interne.
- Prototipazione rapida.
Scegliere il quadro giusto
La scelta del framework per la distribuzione di un’applicazione LLM dipende da vari fattori, tra cui la dimensione del modello, i requisiti di scalabilità dell’applicazione e l’ambiente di distribuzione. Attualmente non esiste una grande diversità di framework, quindi non dovrebbe essere troppo difficile comprenderne le differenze. Di seguito, ho preparato per te un cheat sheet che ti aiuterà a iniziare rapidamente:
Fonte: towardsdatascience.com