使用 LoRA 高效微调

使用 Llama 3 进行微调

Francesca Donadoni

Curriculum Manager, DataCamp

训练模型时会发生什么?

 

  • Token 是形成向量的输入数据
  • 矩阵(模型)乘法
  • 得到输出向量
  • 用误差更新模型权重
  • 模型大小决定训练难度

输入与模型矩阵的可视化表示

使用 Llama 3 进行微调

什么是 LoRA

 

  • 低秩分解
  • 减少训练参数
  • 维持性能
  • 具正则化效果

一个蓝色矩阵被分解为两个矩阵,相乘可重建原矩阵。

使用 Llama 3 进行微调

使用 PEFT 实现 LoRA 的方法

from peft import LoraConfig

lora_config = LoraConfig(
r=12,
lora_alpha=32,
lora_dropout=0.05,
bias="none",
task_type="CAUSAL_LM", target_modules=['q_proj', 'v_proj']
)
使用 Llama 3 进行微调

在训练中集成 LoRA 配置

trainer = SFTTrainer(
    model=model,

train_dataset=ds,
max_seq_length=250, dataset_text_field='conversation',
tokenizer=tokenizer, args=training_arguments
peft_config=lora_config,
)
trainer.train()
使用 Llama 3 进行微调

LoRA 与常规微调对比

 

  • TinyLlama/TinyLlama-1.1B-Chat-v1.0
  • 11 亿参数
  • 1.1 万条样本
  • 约 30 分钟

 

  • nvidia/Llama3-ChatQA-1.5-8B
  • 80 亿参数
  • 1.1 万条样本
  • 约 30 分钟
使用 Llama 3 进行微调

让我们来练习!

使用 Llama 3 进行微调

Preparing Video For Download...