Huggingface官方文档阅读——Transformers

量化模型配置信息 quantization-BitsAndBytesConfig

import bitsandbytes as bnb
from transformers import BitsAndBytesConfig
from transformers import GenerationConfig
from peft import (
    prepare_model_for_int8_training,
    LoraConfig,
    get_peft_model,
    get_peft_model_state_dict,
    prepare_model_for_kbit_training
)
from peft import PeftModel
from transformers import AutoTokenizer, AutoConfig, AutoModelForCausalLM, 

在使用PEFT参数高效微调库时有许多config信息,现在做一个梳理:

  • bitsandbytes:bitsandbytes 是一个集成了 Transformers 的量化库。通过此集成,您可以将模型量化为 8 位或 4 位,并通过配置 BitsAndBytesConfig 类来启用许多其他选项。
  • BitsAndBytesConfig 用于设置你想要量化的模型的配置信息
import torch
from transformers import BitsAndBytesConfig
config = BitsAndBytesConfig(
    load_in_4bit=True,
    bnb_4bit_quant_type="nf4",
    bnb_4bit_use_double_quant=True,
    bnb_4bit_compute_dtype=torch.bfloat16,
)
  • 在配置好 BitsAndBytesConfig后,将此配置传给 from_pretrained 方法,将此配置应用在模型上
from transformers import AutoModelForCausalLM
model = AutoModelForCausalLM.from_pretrained("mistralai/Mistral-7B-v0.1", quantization_config=config)
  • 接下来,调用 prepare_model_for_kbit_training() 函数来预处理用于训练的量化模型。
from peft import prepare_model_for_kbit_training
model = prepare_model_for_kbit_training(model)
  • 如果想使用Lora来微调模型的话,先做Lora的配置
from peft import LoraConfig
config = LoraConfig(
    r=16,
    lora_alpha=8,
    target_modules=["q_proj", "k_proj", "v_proj", "o_proj"],
    lora_dropout=0.05,
    bias="none",
    task_type="CAUSAL_LM"
)
  • 最后使用Lora的get_peft_model方法,加载集成了Lora的模型
from peft import get_peft_model

model = get_peft_model(model, config)

参考链接 | Quantize a model
参考链接 | BitsAndBytesConfig

  • 14
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值