Modellen verkleinen met kwantisatie

Fijn-afstemmen met Llama 3

Francesca Donadoni

Curriculum Manager, DataCamp

Wat is kwantisatie?

 

  • Precisie van het model verlagen
  • 32-bit float naar:
    • 8-bit integer
    • 4-bit integer
  • Kwantisatie tijdens training

abstract block.jpg

Fijn-afstemmen met Llama 3

Typen kwantisatie

 

  • Gewichtskwantisatie: gewichtsprecisie verlagen
  • Activatiekwantisatie: precisie van activaties verlagen
  • Post-training kwantisatie: precisie na training verlagen
Fijn-afstemmen met Llama 3

Kwantisatie configureren met bitsandbytes

from transformers import BitsAndBytesConfig

bnb_config = BitsAndBytesConfig(
  • stel precisie in (load_in_4_bit, load_in_8_bit)
    load_in_4bit=True,
  • stel kwantisatietype in ('fp4' of 4-bit float, 'nf4' of genormaliseerde 4-bit float)
    bnb_4bit_quant_type="nf4",
  • stel rekenprecisie in (32-bit float of 16-bit bfloat)
    bnb_4bit_compute_dtype=torch.bfloat16)
Fijn-afstemmen met Llama 3

Model laden met kwantisatie

from transformers import BitsAndBytesConfig, AutoModelForCausalLM

bnb_config = BitsAndBytesConfig(
    load_in_4bit=True,
    bnb_4bit_quant_type="nf4",
    bnb_4bit_compute_dtype=torch.bfloat16
)

model = AutoModelForCausalLM.from_pretrained( "nvidia/Llama3-ChatQA-1.5-8B",
quantization_config=bnb_config
)
Fijn-afstemmen met Llama 3

Een gekwantiseerd model gebruiken

promptstr = """System: You are a helpful chatbot who answers questions about planets.
User: Explain the history of Mars
Assistant: """

inputs = tokenizer.encode(promptstr, return_tensors="pt")
outputs = model.generate(inputs, max_length=200)
decoded_outputs = tokenizer.decode(outputs[0, inputs.shape[1]:], skip_special_tokens = True)
print(decoded_outputs)
Hier is een korte geschiedenis van Mars:
- 4,6 miljard jaar geleden: Mars vormde zich als deel van het zonnestelsel.
- 3,8 miljard jaar geleden: Mars had een dikke atmosfeer en vloeibaar water aan het oppervlak.
- 3,8–3,5 miljard jaar geleden: Mars verloor zijn magnetisch veld en atmosfeer
en werd koud en droog.
- 3,5 miljard jaar geleden tot nu: Mars is koud en droog met een dunne atmosfeer.
Fijn-afstemmen met Llama 3

Een gekwantiseerd model finetunen

  • Volledige kwantisatie ondersteunt geen fine-tuning
  • LoRA-adaptatie
trainer = SFTTrainer(
    model=model,

peft_config=peft_config,
train_dataset=ds, max_seq_length=250, dataset_text_field='conversation', tokenizer=tokenizer, args=training_arguments
)
trainer.train()
Fijn-afstemmen met Llama 3

Laten we oefenen!

Fijn-afstemmen met Llama 3

Preparing Video For Download...