Transformers documentation
Unsloth
Unsloth
Unsloth, büyük dil modelleri için eğitimi hızlandıran ve bellek kullanımını azaltan bir ince ayar ve pekiştirmeli öğrenme çerçevesidir. Özel RoPE ve Triton çekirdekleriyle 4-bit, 8-bit ve 16-bit hassasiyette eğitim destekler. Unsloth; Llama, Mistral, Gemma, Qwen ve diğer model aileleriyle çalışır.
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()Transformers entegrasyonu
Unsloth, hız için Transformers API'lerini sarar ve dahili yöntemleri yamalar.
FastLanguageModel.from_pretrained, yapılandırmayı AutoConfig.from_pretrained() ile yükler. Ardından bir temel modeli AutoModelForCausalLM.from_pretrained() ile yükler. Yüklemeden önce Unsloth, bir Transformers modeli içindeki dikkat, decoder katmanı ve rotary embedding sınıflarını yamalar.UnslothTrainer, TRL’nin SFTTrainer sınıfını genişletir. Unsloth, eski Transformers sürümlerindeki gradyan biriktirme sorununu düzeltmek için compute_loss() ve training_step() fonksiyonlarını yamalar.
Kaynaklar
- Unsloth belgeleri
- Unsloth ve TRL ile LLM İnce Ayarını 2 Kat Hızlandırın blog yazısı