트랜스포머·PEFT 2일 과정7장 · SFT 데이터 구성과 Chat Template17 / 18← 이전목차다음 →MetaContents

7장. SFT 데이터 구성과 Chat Template

정리

SFT 데이터, 데이터 준비, Chat Template 의 세 칸으로 7장을 요약한 인포그래픽
  • SFT 데이터는 (사용자 요청, 모범 답변) 쌍의 모음입니다. SFT 는 말투, 출력 형식, 업무 절차처럼 "어떻게 답하는가"를 잘 가르치고, 사실 지식은 RAG 로 주는 편이 낫습니다.
  • 좋은 SFT 데이터의 조건은 정확성, 일관성, 다양성, 적정 길이, 깨끗하고 안전한 데이터입니다. 양보다 질이 중요해, 좁은 목표라면 깨끗한 예시 수백 개로도 효과를 봅니다.
  • 같은 문답을 Instruction, messages, prompt-completion 형식으로 담을 수 있습니다. prompt-completion 으로 주면 SFTTrainer 가 답(completion) 부분만 학습합니다.
  • 페르소나 데이터 327쌍은 빈값과 중복이 없고, 답변은 18~56자(13~47 토큰)입니다. 섞은 뒤 잘라 test 32, valid 32, train 263 으로 나눴습니다.
  • 모델은 messages 를 직접 읽지 못합니다. apply_chat_template 이 <|im_start|>역할 ... <|im_end|> 대본 양식으로 바꾸고, system 을 안 주면 Qwen 기본 문구가 들어갑니다.
  • 학습 입력은 답변과 <|im_end|> 까지, 추론 입력은 add_generation_prompt=True 로 assistant 머리표까지 넣습니다. 예시 문답은 질문 쪽 42 토큰 + 답 15 토큰 = 57 토큰이었습니다.
  • labels 는 질문 구간과 패딩을 -100 으로 가려 답변만 채점합니다. 패딩 자리는 input_ids 151643, attention_mask 0, labels -100 이고, 학습은 오른쪽, 배치 생성은 왼쪽에 패딩합니다.
← 이전 절7장 · 프로젝트 1 — 고객 문의를 SFT 데이터로 바꾸기다음 절 →7장 · 확인문제와 해답