TRL documentation
Unsloth Entegrasyonu
Unsloth Entegrasyonu
Unsloth, LLM'leri (Llama, OpenAI gpt-oss, Mistral, Gemma, DeepSeek ve diğerleri gibi) en fazla %80 daha az VRAM ile 2 katına kadar daha hızlı eğiten, ince ayar ve pekiştirmeli öğrenme için açık kaynak bir çerçevedir. Unsloth, eğitim, değerlendirme, çalıştırma ve llama.cpp, Ollama ve vLLM gibi diğer çıkarım motorlarıyla dağıtım imkânı sunar.
Kütüphane, eğitim, değerlendirme, çıkarım ve dağıtım için akıcı, Hugging Face ile uyumlu bir iş akışı sağlar ve SFTTrainer ile tam olarak uyumludur.
Öne Çıkan Özellikler
- Tüm transformer uyumlu modeller için eğitim desteği: Metinden seslendirme (TTS), çok modlu, BERT, RL ve daha fazlası
- Tam ince ayar, ön eğitim, LoRA, QLoRA, 8-bit eğitim ve daha fazlasını destekler
- Linux, Windows, Colab, Kaggle üzerinde çalışır; NVIDIA GPU'ları, yakında AMD & Intel yapılandırmaları
- TRL'in desteklediği çoğu özelliği, RLHF (GSPO, GRPO, DPO vb.) dahil olmak üzere destekler
- El yazımı Triton çekirdekleri ve manuel geri yayılım motoru, doğruluk kaybının (0% yaklaşım hatası) yaşanmadığını garanti eder
Kurulum
pip install
Yerel Kurulum (Linux önerilir):
pip install unsloth
unsloth paketini resmiyi belgelere göre de yükleyebilirsiniz. Yükleme tamamlandıktan sonra unsloth'u iş akışınıza çok basit bir şekilde entegre edebilirsiniz; AutoModelForCausalLM yerine aşağıdaki gibi bir FastLanguageModel yüklemeniz yeterlidir:
import torch
from trl import SFTConfig, SFTTrainer
from unsloth import FastLanguageModel
max_length = 2048 # Supports automatic RoPE Scaling, so choose any number
# Load model
model, tokenizer = FastLanguageModel.from_pretrained(
model_name="unsloth/mistral-7b",
max_seq_length=max_length,
dtype="auto", # For auto-detection. Float16 for Tesla T4, V100, Bfloat16 for Ampere+
load_in_4bit=True, # Use 4bit quantization to reduce memory usage. Can be False
)
# Do model patching and add fast LoRA weights
model = FastLanguageModel.get_peft_model(
model,
r=16,
target_modules=[
"q_proj",
"k_proj",
"v_proj",
"o_proj",
"gate_proj",
"up_proj",
"down_proj",
],
lora_alpha=16,
lora_dropout=0, # Dropout = 0 is currently optimized
bias="none", # Bias = "none" is currently optimized
use_gradient_checkpointing=True,
random_state=3407,
)
training_args = SFTConfig(output_dir="./output", max_length=max_length)
trainer = SFTTrainer(
model=model,
args=training_args,
train_dataset=dataset,
)
trainer.train()Kaydedilen model, Hugging Face'in transformers kütüphanesiyle tam olarak uyumludur. unsloth hakkında daha fazla bilgiyi resmi deposunda bulabilirsiniz.
Docker Kurulumu
docker run -d -e JUPYTER_PASSWORD="mypassword" \
-p 8888:8888 -p 2222:22 \
-v $(pwd)/work:/workspace/work \
--gpus all \
unsloth/unslothJupyter Lab'e http://localhost:8888 adresinden erişin ve ince ayara başlayın!
Eğitim
Eğitimden önce açılıp kapatılabilen bazı temel ayarlar şunlardır:
max_seq_length = 2048– Bağlam uzunluğunu kontrol eder. Llama-3 8192'yi desteklese de testler için 2048 öneririz. Unsloth, 4 kat daha uzun bağlamda ince ayar yapmayı mümkün kılar.dtype = "auto"– Otomatik algılama için; daha yeni GPU'lar için torch.float16 veya torch.bfloat16 kullanın.load_in_4bit = True– 4-bit kuantizasyonu etkinleştirir, ince ayar için bellek kullanımını 4 kat azaltır. Devre dışı bırakılması, LoRA 16-bit ince ayarının etkinleştirilmesine olanak tanır.- Tamamı ince ayar (FFT) etkinleştirmek için
full_finetuning = Truedeğerini ayarlayın. 8-bit ince ayar içinload_in_8bit = Truedeğerini ayarlayın. Not: Aynı anda yalnızca bir eğitim yöntemi True olarak ayarlanabilir.
Unsloth'un hiperparametrelerini ve özelliklerini yapılandırmaya ilişkin daha fazla bilgi için buradaki dokümantasyon kılavuzlarını okuyun.
Modeli kaydetme
Unsloth, ince ayar yapılmış modeli doğrudan LoRA adaptörü adı verilen küçük bir dosya olarak kaydetmenizi sağlar. Modelinizi yüklemek isterseniz, bunun yerine Hugging Face hub'a da gönderebilirsiniz! Bir Hugging Face token edinmeyi ve token'ınızı eklemeyi unutmayın!
GGUF olarak kaydetme
GGUF olarak kaydetmek için Unsloth, llama.cpp kullanır. Yerel olarak kaydetmek için:
model.save_pretrained_gguf("directory", tokenizer, quantization_method = "q4_k_m")
model.save_pretrained_gguf("directory", tokenizer, quantization_method = "q8_0")
model.save_pretrained_gguf("directory", tokenizer, quantization_method = "f16")Hub'a göndermek için:
model.push_to_hub_gguf("hf_username/directory", tokenizer, quantization_method = "q4_k_m")
model.push_to_hub_gguf("hf_username/directory", tokenizer, quantization_method = "q8_0")vLLM'ye Kaydetme
vLLM için 16-bit olarak kaydetmek için şunu kullanın:
model.save_pretrained_merged("model", tokenizer, save_method = "merged_16bit",)
model.push_to_hub_merged("hf/model", tokenizer, save_method = "merged_16bit", token = "")