Skip to main content
Summary

SFT는 무엇을 학습시키는가

지도 파인튜닝(Supervised Fine-Tuning, SFT)은 사전학습된 LLM에 라벨이 있는 예시를 추가로 보여 주는 과정이다. 여기서 라벨은 보통 "이 입력에는 이렇게 답해야 한다"는 정답 응답이다. 즉, 모델에 프롬프트와 모범 답변 쌍을 반복해서 보여 주며 특정 작업 방식, 말투, 응답 형식, 도메인 표현을 익히게 한다.1

중요한 점은 SFT가 단순히 지식을 넣는 작업이 아니라는 것이다. 고객 문의를 어떻게 분류할지, 보고서를 어떤 순서로 작성할지, 모호한 질문에 언제 되물을지 같은 행동 패턴을 조정하는 일에 가깝다. 그래서 좋은 SFT 데이터는 정답만 담지 않는다. 지시를 따르는 방식, 답변의 길이, 금지 표현, 예외 상황 처리까지 함께 보여 준다.

지도 파인튜닝의 기본 원리와 실습 흐름AI 생성 이미지

데이터 형식은 일관되어야 한다

SFT 데이터는 보통 instruction, input, response 구조로 만든다. 예를 들어 instruction에는 "다음 상담 내용을 요약하라", input에는 실제 상담 로그, response에는 기대하는 요약문을 넣는다. 챗봇처럼 대화형 모델을 만들 때는 system, user, assistant 역할을 나눈 챗 템플릿을 사용한다. 학습 때 사용한 템플릿과 추론 때 사용하는 템플릿이 다르면 모델은 역할 경계를 헷갈릴 수 있다.

현대 SFT는 한 가지 작업만 학습시키지 않는 경우가 많다. 요약, 분류, 질의응답, 변환, 대화 응답 등 여러 유형의 예시를 섞어 모델이 다양한 사용자 의도에 대응하도록 만든다. 다만 섞는 것 자체가 목적은 아니다. 각 예시의 출력 품질과 형식이 일관되어야 모델도 안정적으로 배운다.

모델은 정답 응답을 중심으로 배운다

SFT의 기본 학습 목표는 다음 토큰 예측이다. 모델은 정답 응답의 앞부분을 보고 다음에 올 토큰을 맞히도록 학습한다. 이때 손실 함수로는 주로 교차엔트로피가 쓰인다. 쉽게 말해 모델이 정답 토큰에 낮은 확률을 주면 손실이 커지고, 높은 확률을 주면 손실이 작아진다.

실무에서는 프롬프트 전체가 아니라 응답 구간에만 손실을 계산하는 방식이 자주 쓰인다. 이를 response masking 또는 loss masking이라고 한다. instruction과 input은 조건으로 제공하고, 모델이 실제로 배워야 하는 부분은 assistant의 답변이라는 뜻이다.2 이 처리를 하지 않으면 모델이 사용자 입력 형식까지 그대로 따라 쓰는 방향으로 학습될 수 있다.

하이퍼파라미터는 작게 시작해 확인한다

SFT에서 자주 조정하는 값은 학습률, 에폭 수, 시퀀스 길이, 배치 크기다. 학습률은 모델 가중치를 한 번에 얼마나 크게 바꿀지 정한다. 너무 크면 학습이 불안정하고, 너무 작으면 거의 변하지 않는다. 일반적인 SFT에서는 사전학습보다 낮은 학습률을 사용한다.

배치 크기도 중요하다. 실제 학습에서 보는 유효 배치 크기는 장치당 배치 크기 × GPU 수 × gradient accumulation steps로 계산한다. gradient accumulation은 작은 배치를 여러 번 처리한 뒤 한 번에 업데이트하는 방법이다. 메모리가 부족할 때 큰 배치처럼 학습시키는 데 유용하다. 일부 실험에서는 작은 LLM의 SFT에서 더 큰 유효 배치와 낮은 학습률 조합이 좋은 결과를 보였지만, 모든 프로젝트에 그대로 적용할 수 있는 공식은 아니다.3 먼저 작은 실험으로 안정적인 범위를 찾는 것이 안전하다.

학습 중에는 손실만 보지 않는다

훈련 손실이 내려가는 것은 필요하지만 충분하지 않다. 검증 손실도 함께 봐야 한다. 훈련 손실은 계속 내려가는데 검증 손실이 올라가면 과적합일 수 있다. 모델이 학습 데이터의 표현을 외우고, 새로운 입력에는 약해지는 상태다.

또 다른 위험은 기존 능력 저하다. 특정 상담 말투를 강하게 학습한 뒤 일반 질문에 대한 답변 품질이 떨어질 수 있다. 이를 catastrophic forgetting이라고 부른다. 반복적이고 획일적인 문장만 늘어나는지도 확인해야 한다. 예를 들어 모든 답변이 같은 문구로 시작하거나, 불필요한 안내문을 계속 붙인다면 응답 다양성이 줄어든 것이다.

따라서 학습 중에는 손실 그래프, 검증 샘플 응답, 고정 평가 프롬프트를 함께 본다. 숫자가 좋아도 실제 답변이 나빠지면 좋은 모델이 아니다.

기본 실습 흐름

Hugging Face 기반 SFT 실습은 보통 다음 순서로 진행한다.4

  1. datasets로 학습·평가 데이터를 불러온다.

  2. Transformers로 tokenizer와 causal LM을 로드한다.

  3. 데이터에 챗 템플릿을 적용하고 토큰화한다.

  4. 필요한 경우 response/loss masking을 적용한다.

  5. TRL의 SFTTrainer 또는 Trainer로 학습 설정을 만든다.

  6. 학습 중 훈련 손실, 검증 손실, learning rate, gradient norm을 확인한다.

  7. 체크포인트를 저장하고 고정 평가 프롬프트로 추론 테스트를 한다.

  8. 실패 사례를 모아 데이터를 수정한 뒤 다시 학습한다.

처음부터 큰 모델과 큰 데이터로 시작할 필요는 없다. 100~500개의 고품질 예시로 작은 실험을 먼저 돌리고, 모델이 원하는 형식과 기준을 배우는지 확인하는 편이 낫다. SFT의 목적은 한 번에 완벽한 모델을 만드는 것이 아니다. 데이터, 학습 설정, 평가 결과를 연결해 모델 행동을 조금씩 안정화하는 것이다.

참고

1Supervised Fine-Tuning · Hugging Face

2SFT Fine-Tuning: Transform Base LLM to Chat Model

3Unveiling the Secret Recipe: A Guide For Supervised Fine-Tuning Small LLMs

4Supervised Fine-Tuning · Hugging Face Practical Workflow

책 목록

LLM 파인튜닝 실전 가이드: 데이터 설계부터 배포·운영까지

전체 목차 보기

이 노트는 보도·비평·교육·연구 목적으로 작성되었습니다. 저작권 문의가 있으시면 에서 알려주세요.

틸노트는 사용자가 AI를 활용해 노트를 쉽게 작성하거나 편집할 수 있는 서비스입니다.

AI 스퀘어 단톡방에 함께해요

AI 활용과 틸노트 사용 팁을 나누는 오픈채팅방입니다. 입장 비밀번호는 tilnote입니다.

참여하기