Combina più adattatori LoRA per Llama 2

Accoppiamento di più adattatori LoRA per Llama 2

Aggiungi competenze alla tua LLM senza aggiustare nuovi adattatori

Immagine dell'autore - Realizzata con un'immagine da Pixabay

Regolare completamente un grande language model (LLM) pre-addestrato per diversi compiti è molto costoso. Invece, possiamo congelare i parametri del LLM e regolare solo alcuni milioni di parametri addestrabili aggiunti attraverso un adattatore LoRA.

In altre parole, è sufficiente regolare un adattatore per far eseguire al modello un compito specifico. Ad esempio, se vogliamo trasformare un LLM pre-addestrato in un modello di traduzione, regoleremo un adattatore per la traduzione. Possiamo regolare un adattatore per ogni compito che vogliamo far eseguire al LLM.

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

Ad esempio, se abbiamo un adattatore per la traduzione e uno per la sintesi, possiamo combinarli in modo che il LLM possa fare entrambe le cose?

In questo articolo, spiegherò come combinare più adattatori LoRA in un unico adattatore multi-task. Vedremo che è molto semplice e che il risultante adattatore può essere altrettanto valido degli adattatori utilizzati singolarmente.

Utilizzando Llama 2 7B, vedremo come combinare un adattatore regolato per la traduzione con un altro adattatore regolato per la chat. Con il risultante adattatore, saremo in grado di creare una Llama 2 che può tradurre e chattare.

Ho anche implementato un notebook che può eseguire tutto il codice spiegato in questo articolo. Puoi trovarlo qui:

Ottieni il notebook (#30)

Aggiungi più adattatori a Llama 2

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

Dobbiamo assicurarci che l’adattatore che vogliamo aggiungere sia stato regolato per la nostra base LLM, ovvero Llama 2 7B. Puoi trovare questa informazione nel file “adapter_config.json” che si trova nella directory degli adattatori. Ad esempio, per kaitchup/Llama-2–7B-oasstguanaco-adapter (licenza MIT), il file adapter_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…