Aggiungi competenze al tuo LLM senza mettere a punto nuovi adattatori

Immagine dell’autore – Realizzato con un’immagine da Pixabay

La messa a punto completa di un modello linguistico di grandi dimensioni (LLM) pre-addestrato per compiti diversi è molto costosa. Invece, possiamo congelare i parametri di LLM ottimizzando solo alcuni milioni di parametri addestrabili aggiunti tramite un adattatore LoRA.

In altre parole, dobbiamo solo mettere a punto un adattatore per fare in modo che il modello esegua un’attività target. Ad esempio, se vogliamo trasformare un LLM pre-addestrato in un modello di traduzione, ottimizzeremo un adattatore per la traduzione. Possiamo mettere a punto un adattatore per ciascuna richiesta che vogliamo che LLM esegua.

Ma possiamo combinare più adattatori per ottenere un unico adattatore multi-task?

Ad esempio, se disponiamo di un adattatore per la traduzione e un adattatore per il riepilogo, possiamo combinarli entrambi in modo che LLM possa eseguire la traduzione e il riepilogo?

In questo articolo mostro come combinare più adattatori LoRA in un unico adattatore multi-task. Vedremo che è molto semplice e che l’adattatore risultante può essere altrettanto valido degli adattatori utilizzati per la combinazione.

Utilizzando Llama 2 7B vedremo come abbinare un adattatore predisposto per la traduzione con un altro adattatore predisposto per la chat. Con l’adattatore risultante potremo realizzare un Llama 2 in grado di tradurre e chattare.

Ho anche implementato un notebook in grado di eseguire tutto il codice spiegato in questo articolo. Potete trovare qui:

Prendi il taccuino (#30)

Prima di combinare gli adattatori, dobbiamo aggiungerli al LLM di base.

Dobbiamo assicurarci che l’adattatore che vogliamo aggiungere sia stato messo a punto per il nostro LLM di base, ovvero Llama 2 7B. È possibile trovare queste informazioni nel file “adapter_config.json” che si trova nella directory dell’adattatore. Ad esempio, per adattatore kaitchup/Llama-2–7B-oasstguanaco (licenza MIT), il adattatore_config.json contiene i seguenti dati:

{
"auto_mapping": null,
"base_model_name_or_path": "meta-llama/Llama-2-7b-hf",
"bias": "none",
"fan_in_fan_out": false,
"inference_mode": true,
"init_lora_weights": true,
"layers_pattern": null…

Fonte: towardsdatascience.com

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *