Unsloth

Unsloth

Unsloth은 대규모 언어 모델의 학습을 빠르게 하고 메모리 사용을 줄여주는 파인튜닝·강화 학습 프레임워크예요. Transformers 모델을 4-bit, 8-bit, 16-bit 정밀도로 학습하는 방법을 살펴볼게요.

출처: 문서

본문

Unsloth은 대규모 언어 모델의 학습 속도를 높이고 메모리 사용을 줄여주는 파인튜닝·강화 프레임워크예요. 커스텀 RoPE와 Triton 커널로 4-bit, 8-bit, 16-bit 정밀도 학습을 지원해요. Unsloth는 Llama, Mistral, Gemma, Qwen 및 다른 모델군과 함께 동작해요.

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 통합

Unsloth는 Transformers API를 감싸고 속도를 위해 내부 메서드를 패치해요.

리소스 (Resources)

더 알아보기 (Learn more)