Downloads · 30 days
32
1% of all-time downloads
LoftQ/phi-2-4bit-64rank
phi-2-4bit-64rank is a text generation model from LoftQ. Use it when you need the model to write or continue text. It is set up for transformers. The card lists the license as mit.
LoftQ (LoRA-fine-tuning-aware Quantization) provides a quantized backbone Q and LoRA adapters A and B, given a full-precision pre-trained weight W.
Downloads · 30 days
32
1% of all-time downloads
All-time downloads
2.1K
Public
Parameters
2.8B
7.3 GB on disk
Likes
0
Public
Click a slice to open those files.
.safetensors7.2 GB · 97%
From the Hugging Face model README
| Paper | Code | PEFT Example |
LoftQ (LoRA-fine-tuning-aware Quantization) provides a quantized backbone Q and LoRA adapters A and B, given a full-precision pre-trained weight W.
This model, phi-2-4bit-64rank, is obtained from phi-2.
The backbone is under LoftQ/phi-2-4bit-64rank and LoRA adapters are under the subfolder='loftq_init'.
torch.float16Training Here's an example of loading this model and preparing for the LoRA fine-tuning.
import torch
from transformers import AutoModelForCausalLM, BitsAndBytesConfig
from peft import PeftModel
MODEL_ID = "LoftQ/phi-2-4bit-64rank"
base_model = AutoModelForCausalLM.from_pretrained(
MODEL_ID,
torch_dtype=torch.float32, # you may change it with different models
quantization_config=BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_compute_dtype=torch.float32, # float32 is tested and veryfied
bnb_4bit_use_double_quant=False,
bnb_4bit_quant_type='nf4',
),
)
peft_model = PeftModel.from_pretrained(
base_model,
MODEL_ID,
subfolder="loftq_init",
is_trainable=True,
)
# Do training with peft_model ...
We have conducted experiments on supervised fine-tuning of GSM8K.
| Model | Bits | Rank | LoRA Initial | GSM8K |
|---|---|---|---|---|
| Phi-2 | 16 | - | Full model fine-tuning | 66.8±1.2 |
| Phi-2 | 16 | 64 | Gaussian + 0 (LoRA) | 64.8±0.5 |
| Phi-2 | 4 | 64 | Gaussian + 0 (QLoRA) | 60.2±0.6 |
| Phi-2 | 4 | 64 | LoftQ | 64.1±0.7 |
Inference Here is an example code for inference after the model has been fine-tuned on GSM8K.
import torch
from transformers import AutoModelForCausalLM, BitsAndBytesConfig
from peft import PeftModel
MODEL_ID = "LoftQ/phi-2-4bit-64rank"
base_model = AutoModelForCausalLM.from_pretrained(
MODEL_ID,
torch_dtype=torch.float32, # you may change it with different models
quantization_config=BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_compute_dtype=torch.float32, # float32 is tested and veryfied
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,
)
# Do inference with peft_model ...
See the full code at our Github Repo
@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}
}