🚀 LoftQ初始化
LoftQ(LoRA微调感知量化)在给定全精度预训练权重W的情况下,提供量化后的主干网络Q以及LoRA适配器A和B。本项目旨在解决大语言模型在量化过程中与LoRA微调不兼容的问题,通过提供特定的量化主干和适配器,提升模型在微调时的性能和效率。
| 论文 | 代码 | PEFT示例 |
本模型Llama-2-7b-hf-4bit-64rank
源自 LLAMA-2-7b。主干网络存储于LoftQ/Llama-2-7b-hf-4bit-64rank
,LoRA适配器存储于subfolder='loftq_init'
。
✨ 主要特性
- 量化支持:提供量化后的主干网络和LoRA适配器,减少模型存储和计算资源需求。
- LoRA微调感知:专门为LoRA微调设计的量化方法,提高微调效率。
📦 安装指南
文档未提供具体安装步骤,暂不展示。
💻 使用示例
基础用法
以下是加载此模型并准备进行LoRA微调的示例:
import torch
from transformers import AutoModelForCausalLM, BitsAndBytesConfig
from peft import PeftModel
MODEL_ID = "LoftQ/Llama-2-7b-hf-4bit-64rank"
base_model = AutoModelForCausalLM.from_pretrained(MODEL_ID)
peft_model = PeftModel.from_pretrained(
base_model,
MODEL_ID,
subfolder="loftq_init",
is_trainable=True,
)
高级用法
以下是模型在 GSM8K 上微调后进行推理的示例代码:
import torch
from transformers import AutoModelForCausalLM, BitsAndBytesConfig
from peft import PeftModel
MODEL_ID = "LoftQ/Llama-2-7b-hf-4bit-64rank"
base_model = AutoModelForCausalLM.from_pretrained(
MODEL_ID,
torch_dtype=torch.bfloat16,
quantization_config=BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_compute_dtype=torch.bfloat16,
bnb_4bit_use_double_quant=False,
bnb_4bit_quant_type='nf4',
),
)
peft_model = PeftModel.from_pretrained(
base_model,
MODEL_ID,
subfolder="gsm8k",
is_trainable=True,
)
完整代码请见我们的 Github仓库
📚 详细文档
模型信息
主干网络
属性 |
详情 |
存储格式 |
bitsandbytes nf4 |
大小 |
~ 4.2 GiB |
加载格式 |
bitsandbytes nf4 |
GPU加载大小 |
~ 4.2 GiB |
LoRA适配器
属性 |
详情 |
秩 |
64 |
lora_alpha |
16 |
目标模块 |
["down_proj", "up_proj", "q_proj", "k_proj", "v_proj", "o_proj", "gate_proj"] |
实验结果
我们在 GSM8K 和 WikiText-2 的监督微调任务上进行了实验。
模型 |
比特数 |
秩 |
LoRA初始化 |
GSM8K |
WikiText-2 |
LLAMA-2-7b |
16 |
64 |
高斯分布 + 0 |
36.9 |
5.08 |
LLAMA-2-7b |
4 |
64 |
高斯分布 + 0 (QLoRA) |
35.1 |
5.70 |
LLAMA-2-7b |
4 |
64 |
LoftQ |
35.0 |
5.24 |
🔧 技术细节
文档未提供具体技术细节内容,暂不展示。
📄 许可证
本项目采用MIT许可证。
📖 引用
@article{li2023loftq,
title={Loftq: Lora-fine-tuning-aware quantization for large language models},
author={Li, Yixiao and Yu, Yifan and Liang, Chen and He, Pengcheng and Karampatziakis, Nikos and Chen, Weizhu and Zhao, Tuo},
journal={arXiv preprint arXiv:2310.08659},
year={2023}
}