본문 바로가기
C.W.K.
Stream
Lesson 02 of 08 · published

Data Collator: Padding 과 그 너머

~22 min · training, collator

Level 0스카우트
0 XP0/50 lessons0/10 achievements
0/120 XP to next level120 XP to go0% complete

collator는 길이가 다른 예제를 한 batch로 묶어

Data collator는 토큰 수가 제각각인 예제 목록을 같은 크기의 tensor로 만들어.

  • DataCollatorWithPadding은 batch에서 가장 긴 입력까지 채워.
  • DataCollatorForLanguageModeling은 masked 또는 causal language modeling용 label을 준비해.
  • DataCollatorForSeq2Seq는 encoder와 decoder 쪽을 따로 padding해.
  • TRL의 DataCollatorForCompletionOnlyLM은 prompt를 loss에서 가리고 assistant 응답만 학습시켜.

대화 학습에서는 어디에 loss를 줄지 정해야 해

completion-only collator 없이 대화를 학습하면 모델이 사용자 prompt까지 예측하는 데 gradient를 써. 지시 수행을 학습시키려는 목적이라면 assistant 응답 구간에만 loss가 흐르도록 하는 편이 기본값이야.

Code

Padding collator (분류)·python
from transformers import DataCollatorWithPadding
collator = DataCollatorWithPadding(tokenizer=tok, padding="longest")  # or "max_length"
Completion-only collator (instruction tuning)·python
from trl import DataCollatorForCompletionOnlyLM

# assistant header 마크 — loss 가 그 뒤에만 흐름
response_template = "<|start_header_id|>assistant<|end_header_id|>\n\n"
collator = DataCollatorForCompletionOnlyLM(
    response_template=response_template,
    tokenizer=tok,
)
MLM collator (BERT-스타일 pre-training)·python
from transformers import DataCollatorForLanguageModeling
collator = DataCollatorForLanguageModeling(
    tokenizer=tok,
    mlm=True,
    mlm_probability=0.15,  # 15% masking, BERT 디폴트
)

External links

Exercise

작은 instruction-tuning 데이터셋 (예: HuggingFaceH4/no_robots) 가져와. chat template 적용으로 토크나이즈. Trainer 둘 셋업: DataCollatorWithPadding 하나, DataCollatorForCompletionOnlyLM 하나. 100 step 학습. loss 곡선 + 최종 출력 비교.

Progress

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

댓글 0

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

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