微调llama 3 — PEFT微调和全量微调

Ref: 微调llama 3 — PEFT微调和全量微调_llama3 微调原理-CSDN博客

2. PEFT方法微调llama 3

1、QLoRA 是量化的 LoRA 与 LLMs 的结合。要使用这种方法对 Llama 3 8B 进行微调,我们需要安装

pip install --upgrade bitsandbytes transformers peft accelerate datasets trl

2、然后导入需要的pkgs

import torch, os
from datasets import load_dataset
from peft import LoraConfig, prepare_model_for_kbit_training
from transformers import (
    AutoModelForCausalLM,
    AutoTokenizer,
    BitsAndBytesConfig,
    TrainingArguments,
)
from trl import SFTTrainer

3、如果你拥有较新的GPU,就可以使用bfloat16数据类型以获得更好的训练稳定性,并使用FlashAttention来减少处理长序列时的内存消耗。下面的代码会自动检测GPU是否兼容bfloat16FlashAttention

#use bf16 and FlashAttention if supported
if torch.cuda.is_bf16_supported():
  os.system('pip install flash_attn')
  compute_dtype = torch.bfloat16
  attn_implementation = 'flash_attention_2'
# 传统的注意力计算在处理长序列时可能会非常耗时和占用大量内存。 FlashAttention 技术通过优化计算过程和内存使用,使得注意力机制能够更快、更高效地运行
else:
  compute_dtype = torch.float16
  attn_implementation = 'sdpa'

动态范围较小,可能在处理非常大或非常小的数值时遇到数值稳定性问题

float16具有5位指数和10位尾数,动态范围小(可表示的数值范围)、精度高;

bfloat16具有8位指数和7位尾数,动态范围大(数值稳定性高)、精度略低(但对于深度学习也足够了)

float32具有1位符号位,8位指数位和23位尾数位,动态范围大,精度更高。

# 精度上 bfloat16 float16 < float32

#占用内存上float16 bfloat16 = 0.5 * float32

4、然后,我们需要初始化并配

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值