Transformers documentation
Tinh chỉnh một mô hình
Tinh chỉnh một mô hình
Trọng số đã lượng tử hóa không thể được cập nhật trực tiếp bằng gradient, do đó bạn tinh chỉnh một mô hình đã lượng tử hóa bằng cách huấn luyện một adapter nhỏ trên các trọng số lượng tử hóa đã đóng băng. Việc huấn luyện một adapter LoRA trên một mô hình 4-bit được gọi là QLoRA, và nó cho phép bạn tinh chỉnh một mô hình mà nếu ở dạng bf16 sẽ không đủ bộ nhớ để chứa.
Trainer kiểm tra mô hình trước khi huấn luyện để đảm bảo:
- Phương pháp lượng tử hóa hỗ trợ huấn luyện. Xem cột Fine-tune trong Chọn một phương pháp.
- Mô hình có một adapter có thể huấn luyện được gắn vào. Các phương pháp hỗ trợ huấn luyện nhận thức lượng hóa là ngoại lệ, được đề cập bên dưới.
- Mô hình không được biên dịch bằng
torch.compile.
Huấn luyện một adapter
Cài đặt PEFT.
pip install -U peft
Tải mô hình bằng một phương thức hỗ trợ huấn luyện, gắn bộ thích ứng LoRA bằng add_adapter() và truyền mô hình vào Trainer. Ví dụ bên dưới sử dụng 4-bit bitsandbytes và giả định train_dataset là một tập dữ liệu đã được token hóa.
import torch
from peft import LoraConfig
from transformers import AutoModelForCausalLM, BitsAndBytesConfig, Trainer, TrainingArguments
quantization_config = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_quant_type="nf4",
bnb_4bit_compute_dtype=torch.bfloat16,
)
model = AutoModelForCausalLM.from_pretrained(
"Qwen/Qwen3-0.6B",
quantization_config=quantization_config,
device_map="auto",
)
lora_config = LoraConfig(r=16, lora_alpha=32, target_modules="all-linear", task_type="CAUSAL_LM")
model.add_adapter(lora_config)
trainer = Trainer(
model=model,
args=TrainingArguments(output_dir="qwen3-qlora", bf16=True),
train_dataset=train_dataset,
)
trainer.train()Chỉ trọng số adapter được huấn luyện. Trọng số cơ sở đã lượng tử hóa vẫn được giữ nguyên.
Lưu adapter
save_pretrained() chỉ lưu các trọng số adapter, chỉ vài megabyte. Cách này hoạt động với mọi phương pháp, bao gồm cả những phương pháp không thể lưu trọng số đã lượng tử hóa của chúng.
model.save_pretrained("qwen3-qlora-adapter")Để sử dụng adapter, hãy tải mô hình cơ sở với cùng cấu hình lượng tử hóa và tải adapter lên trên nó. Xem Tải adapter để biết chi tiết.
Huấn luyện nhận thức lượng tử hóa
BitNet và compressed-tensors có thể huấn luyện toàn bộ mô hình mà không cần adapter, miễn là trọng số vẫn ở dạng có thể huấn luyện.
- BitNet cần
linear_class="autobitlinear"vàquantization_mode="online"trong BitNetQuantConfig. - compressed-tensors cần một checkpoint chưa được nén, hoặc
dequantize=Truetrong CompressedTensorsConfig. Các checkpoint sử dụng FP8 kernels không thể huấn luyện.
Xem Các khái niệm về lượng tử hóa để biết cách huấn luyện nhận thức lượng tử hóa khác với lượng tử hóa sau huấn luyện.
Update on GitHub