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

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

용어 짚고 가기

  • SFT(Supervised Fine-Tuning): 질문과 모범 답변의 쌍을 보여 주며 모델을 조금 더 가르치는 일입니다. supervised 는 "정답을 보여 주며", fine-tuning 은 "미세하게 다듬기"라는 뜻입니다. 모범 답안으로 상담 연습을 시키는 것과 같습니다.
  • SFT 데이터(SFT data): (사용자 요청, 모범 답변) 쌍의 모음입니다. 표로 치면 질문 열과 답변 열이 있는 DataFrame 입니다.
  • 페르소나(persona): 모델이 연기하는 인물의 성격과 말투입니다. 이 장의 데이터는 "냉소적인 절대 군주" 페르소나입니다.
  • 환각(hallucination): 모델이 모르는 내용을 사실처럼 지어내는 일입니다.
  • RAG(Retrieval-Augmented Generation): 검색한 문서를 질문과 함께 넣어 답하게 하는 방법입니다. 참고서를 쥐여 주는 것과 같습니다.
  • JSONL(JSON Lines): 한 줄에 JSON 예시 하나씩 적는 파일 형식입니다. 표의 한 행이 파일의 한 줄입니다.
  • Instruction 형식: instruction(지시), input(입력), output(답) 칸에 나눠 적는 형식입니다. Alpaca 데이터가 쓴 꼴이라 Alpaca 스타일이라고도 합니다.
  • messages 형식(conversational): role(누가)과 content(무엇을 말했나)를 담은 사전의 목록입니다. 대화형 모델의 표준 형식입니다.
  • role: 말한 사람의 역할입니다. system(규칙을 적는 자리), user(사용자), assistant(모델) 셋이 있습니다.
  • prompt-completion 형식: 질문(prompt)과 답(completion)을 따로 담는 형식입니다. completion 은 "채워 넣을 나머지"라는 뜻입니다.
  • TRL(Transformer Reinforcement Learning): Hugging Face 가 만든 LLM 후속 학습 라이브러리입니다. 이름과 달리 SFT 에도 씁니다. 8장의 SFTTrainer 가 여기에 있습니다.
  • Dataset, DatasetDict: Hugging Face datasets 라이브러리의 표 객체입니다. Dataset 은 표 하나, DatasetDict 는 train, valid, test 처럼 이름 붙인 표 여러 개를 담은 사전입니다.
  • 학습 데이터(train): 모델의 가중치를 고치는 데 쓰는 데이터입니다. 문제집입니다.
  • 검증 데이터(valid, validation): 학습 중에 과적합을 살피고 설정을 견주는 데이터입니다. 모의고사입니다.
  • 평가 데이터(test): 모든 설정을 정한 뒤 마지막에 한 번 보는 데이터입니다. 실전 시험입니다.
  • 과적합(overfitting): 학습 데이터만 외워서 새 질문에 약해지는 일입니다. 문제집 답만 외운 학생과 같습니다.
  • Chat Template: messages 를 모델이 학습 때 본 문자열 모양으로 바꾸는 규칙입니다. 누가 말하는지 머리표를 붙이는 대본 양식입니다.
  • ChatML: Qwen 이 쓰는 대본 양식의 이름입니다. <|im_start|>역할 로 시작하고 <|im_end|> 로 끝냅니다.
  • 특수 토큰(special token): 글자가 아니라 표시를 위해 정해 둔 토큰입니다. <|im_start|>(ID 151644), <|im_end|>(151645), <|endoftext|>(151643)가 있습니다.
  • add_generation_prompt: 문자열 끝에 <|im_start|>assistant 머리표를 붙일지 정하는 옵션입니다. 답을 생성시킬 때 켭니다.
  • input_ids: 템플릿을 입힌 대화 전체를 토큰 ID 로 바꾼 숫자 목록입니다. 상품 번호 열과 같습니다.
  • attention_mask: 실제 토큰은 1, 패딩은 0 으로 적은 목록입니다. "이 칸은 보지 마라"는 표시입니다.
  • labels: 각 위치에서 맞혀야 할 정답 토큰 목록입니다. -100 인 칸은 손실 계산에서 뺍니다. 채점에서 빼는 문제입니다.
  • 패딩(padding): 길이가 다른 예시를 한 묶음으로 계산하려고 짧은 쪽에 채우는 빈칸입니다.
  • 배치(batch): GPU 가 한 번에 계산하는 예시 묶음입니다.
← 이전 절7장 · 먼저 큰 그림부터다음 절 →7장 · SFT 데이터란