QLoRA-finetuning
forkortelse for Quantized Low-Rank Adaptation fine-tuning
Teknik, der kombinerer modelkvantisering med LoRA for at finjustere store sprogmodeller med markant reduceret hukommelsesforbrug.
Kort fortalt
En metode til at finjustere meget store sprogmodeller på almindelige computere ved at komprimere modellen og kun opdatere en lille del af parametrene.
- Kategori
- teknik
- Niveau
- øvet
- Udtale
- /ˈkjuːlɔːrə ˈfaɪnˌtjuːnɪŋ/
Betydninger
1- 1
En finjusteringsmetode, hvor modelvægtene kvantiseres til lav præcision (fx 4-bit), og en lille mængde trænbare parametre i form af LoRA-adaptere tilføjes, hvilket muliggør effektiv finjustering med minimal hukommelsesbelastning.
- QLoRA-finetuning gjorde det muligt at tilpasse LLaMA-65B på en enkelt RTX 4090. — QLoRA: Efficient Finetuning of Quantized Language Models (2023)
- Ved brug af QLoRA-finetuning kan man bevare modelkvaliteten samtidig med at hukommelsesforbruget reduceres drastisk.
Hvornår bruges det
Bruges når man vil tilpasse en stor, præ-trænet model som LLaMA til en specifik opgave på en enkelt GPU med begrænset hukommelse. QLoRA muliggør finjustering af modeller med 65 milliarder parametre på 48 GB VRAM ved at kvantisere vægtene til 4-bit og anvende LoRA-adaptere.
Kodeeksempel
from transformers import AutoModelForCausalLM, BitsAndBytesConfig
import torch
from peft import LoraConfig, get_peft_model
bnb_config = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_use_double_quant=True,
bnb_4bit_quant_type="nf4",
bnb_4bit_compute_dtype=torch.bfloat16
)
model = AutoModelForCausalLM.from_pretrained("meta-llama/Llama-2-7b-hf", quantization_config=bnb_config)
lora_config = LoraConfig(r=8, lora_alpha=32, target_modules=["q_proj", "v_proj"], lora_dropout=0.05)
model = get_peft_model(model, lora_config)Eksempel på indlæsning af en 4-bit kvantiseret model og tilføjelse af LoRA-adaptere vha. Hugging Face Transformers og PEFT.
Oprindelse
QLoRA er en sammentrækning af 'Quantized Low-Rank Adaptation'. Teknikken blev introduceret af Tim Dettmers et al. i 2023.