C.W.K.
Stream
Lesson 03 of 05 · published

SFTTrainer: 고수준 API

~24 min · trl, sft-trainer, sft-config, supervised-fine-tuning

Level 0관찰자
0 XP0/43 lessons0/11 achievements
0/120 XP to next level120 XP to go0% complete

추천 경로

TRL의 SFTTrainer가 supervised fine-tuning 추천 방법. 토큰화, 포맷팅, loss masking, chat template, 학습 루프를 깔끔한 API 하나로 처리. 너는 모델, LoRA config, 데이터셋, SFTConfig 제공 — 트레이너가 나머지 다.

중요한 SFTConfig 파라미터

파라미터컨트롤 대상전형 값
max_seq_length학습 max 시퀀스 길이.1024~4096
packing여러 짧은 예제를 한 시퀀스로 패킹.True — 학습 시간 절약
dataset_text_field어느 필드가 텍스트 가지는지.chat 포맷 자동 감지엔 None
gradient_checkpointing저장 대신 activation 재계산.큰 모델엔 True
bf16bfloat16 mixed precision 사용.Ampere+ GPU에선 True

Code

End-to-end SFTTrainer setup·python
from trl import SFTConfig, SFTTrainer
from peft import LoraConfig
from datasets import load_dataset

# Load dataset (many formats supported)
dataset = load_dataset("json", data_files="training_data.jsonl", split="train")
eval_dataset = load_dataset("json", data_files="val.jsonl", split="train")

# LoRA config
peft_config = LoraConfig(
    r=16, lora_alpha=32,
    target_modules="all-linear",
    lora_dropout=0.05, bias="none",
    task_type="CAUSAL_LM",
)

# Training config (TRL v1.0: SFTConfig extends TrainingArguments)
training_args = SFTConfig(
    output_dir="./results",
    num_train_epochs=3,
    per_device_train_batch_size=4,
    gradient_accumulation_steps=4,    # effective batch = 4 * 4 = 16
    learning_rate=2e-4,
    lr_scheduler_type="cosine",
    warmup_ratio=0.1,
    logging_steps=10,
    save_strategy="epoch",
    eval_strategy="epoch",
    bf16=True,
    gradient_checkpointing=True,
    max_seq_length=2048,
    packing=True,
    dataset_text_field=None,           # auto-detect 'messages'
    dataset_kwargs={"assistant_only_loss": True},  # train only on assistant tokens
)

trainer = SFTTrainer(
    model=model,
    args=training_args,
    train_dataset=dataset,
    eval_dataset=eval_dataset,
    processing_class=tokenizer,
    peft_config=peft_config,
)

trainer.train()
trainer.save_model("./final-adapter")

External links

Exercise

위 설정으로 SFTTrainer를 200예제 데이터셋에 셋업. 3 epoch 돌려. W&B나 콘솔에서 eval loss 봐. 학습한 adapter 출력이랑 베이스 모델 출력을 5개 held-out 테스트 프롬프트에서 비교. 질적 차이 문서화.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.