Transformers documentation
Unsloth
Unsloth
Unsloth adalah kerangka kerja fine-tuning dan reinforcement yang mempercepat pelatihan serta mengurangi penggunaan memori untuk large language models. Kerangka kerja ini mendukung pelatihan dalam presisi 4-bit, 8-bit, dan 16-bit dengan kernel RoPE dan Triton kustom. Unsloth bekerja dengan keluarga model Llama, Mistral, Gemma, Qwen, dan lainnya.
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()Integrasi Transformers
Unsloth membungkus API Transformers dan menambal metode internal untuk kecepatan.
FastLanguageModel.from_pretrainedmemuat config dengan AutoConfig.from_pretrained(). Kemudian, model dasar dimuat dengan AutoModelForCausalLM.from_pretrained(). Sebelum pemuatan, Unsloth mem-patch kelas attention, decoder layer, dan rotary embedding di dalam model Transformers.UnslothTrainermemperluas SFTTrainer dari TRL. Unsloth mem-patch compute_loss() dan training_step() untuk memperbaiki akumulasi gradien pada versi Transformers yang lebih lama.
Sumber daya
- Dokumentasi Unsloth
- postingan blog Jadikan Fine-tuning LLM 2x lebih cepat dengan Unsloth dan TRL