Transformers documentation
Unsloth
Unsloth
Unsloth là một framework tinh chỉnh và tăng cường, giúp tăng tốc quá trình huấn luyện và giảm mức sử dụng bộ nhớ cho các mô hình ngôn ngữ lớn. Nó hỗ trợ huấn luyện ở độ chính xác 4-bit, 8-bit và 16-bit với các kernel RoPE và Triton tùy chỉnh. Unsloth hoạt động với các dòng mô hình Llama, Mistral, Gemma, Qwen và nhiều dòng khác.
from datasets import load_dataset
from transformers import TrainingArguments
from unsloth import FastLanguageModel
from unsloth.trainer import UnslothTrainer
model, tokenizer = FastLanguageModel.from_pretrained(
model_name="unsloth/Llama-3.2-1B-Instruct",
max_seq_length=2048,
load_in_4bit=True,
)
model = FastLanguageModel.get_peft_model(
model,
r=16,
lora_alpha=16,
target_modules=["q_proj", "k_proj", "v_proj", "o_proj", "gate_proj", "up_proj", "down_proj"],
)
dataset = load_dataset("trl-lib/Capybara", split="train[:500]")
dataset = dataset.map(lambda x: {"text": x["conversations"][0]["value"]})
trainer = UnslothTrainer(
model=model,
tokenizer=tokenizer,
train_dataset=dataset,
dataset_text_field="text",
max_seq_length=2048,
args=TrainingArguments(
output_dir="outputs",
per_device_train_batch_size=2,
num_train_epochs=1,
),
)
trainer.train()Tích hợp Transformers
Unsloth bọc các API của Transformers và vá các phương thức bên trong để tăng tốc độ.
FastLanguageModel.from_pretrainednạp config bằng AutoConfig.from_pretrained(). Sau đó, nó nạp một mô hình cơ sở bằng AutoModelForCausalLM.from_pretrained(). Trước khi nạp, Unsloth vá các lớp attention, decoder layer và rotary embedding bên trong một mô hình Transformers.UnslothTrainerkế thừa SFTTrainer của TRL. Unsloth vá compute_loss() và training_step() để sửa lỗi gradient accumulation trong các phiên bản Transformers cũ hơn.
Tài nguyên
- Tài liệu Unsloth
- bài đăng blog Tăng tốc Fine-tuning LLM gấp 2 lần với Unsloth và TRL