Deixando modelos menores com quantização

Ajuste Fino com Llama 3

Francesca Donadoni

Curriculum Manager, DataCamp

O que é quantização?

 

  • Reduzir a precisão do modelo
  • De float 32 bits para:
    • inteiro 8 bits
    • inteiro 4 bits
  • Treino ciente de quantização (QAT)

bloco abstrato.jpg

Ajuste Fino com Llama 3

Tipos de quantização

 

  • Quantização de pesos: reduz a precisão dos pesos
  • Quantização de ativações: reduz a precisão dos valores de ativação
  • Quantização pós-treino: reduz a precisão após o treino
Ajuste Fino com Llama 3

Configurando quantização com bitsandbytes

from transformers import BitsAndBytesConfig

bnb_config = BitsAndBytesConfig(
  • definir precisão (load_in_4_bit, load_in_8_bit)
    load_in_4bit=True,
  • definir tipo de quantização ('fp4' ou float de 4 bits, 'nf4' ou float normalizado de 4 bits)
    bnb_4bit_quant_type="nf4",
  • definir precisão de cálculo (float 32 bits ou bfloat 16 bits)
    bnb_4bit_compute_dtype=torch.bfloat16)
Ajuste Fino com Llama 3

Carregando modelo com quantização

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
)
Ajuste Fino com Llama 3

Usando um modelo quantizado

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)
Aqui vai um breve histórico de Marte:
- Há 4,6 bilhões de anos: Marte se formou como parte do sistema solar.
- Há 3,8 bilhões de anos: Marte tinha atmosfera densa e água líquida na superfície.
- De 3,8 a 3,5 bilhões de anos atrás: Marte perdeu o campo magnético e a atmosfera
e virou um planeta frio e seco.
- De 3,5 bilhões de anos atrás até hoje: Marte segue frio e seco, com atmosfera fina.
Ajuste Fino com Llama 3

Fazer fine-tuning em modelo quantizado

  • Quantização total não permite fine-tuning
  • Adaptação com LoRA
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()
Ajuste Fino com Llama 3

Vamos praticar!

Ajuste Fino com Llama 3

Preparing Video For Download...