본문 바로가기
🚀 AI 연구소/AI 활용 가이드

SFT란? LLM이 지시를 따르고 도구를 쓰게 만드는 지도 미세조정

by 노마드데이터랩 2026. 7. 28.

SFT 지도 미세조정과 LoRA QLoRA 차이

사전학습을 마친 언어모델은 문장을 이어 쓰는 능력은 뛰어나지만, 사용자의 요청을 ‘업무 지시’로 받아들이는 법까지 저절로 익히지는 않는다. 질문을 받았는데 웹 문서처럼 말을 이어 가거나, 계산기가 필요한 순간에도 그럴듯한 숫자를 만들어 낼 수 있다. SFT(Supervised Fine-Tuning, 지도 미세조정)는 이 간극을 입력과 모범 출력의 짝으로 메운다. 핵심은 지식을 새로 주입하는 것보다 “이 상황에서는 어떤 형식과 행동이 정답인가”를 반복해서 보여 주는 데 있다.

여기서 자주 생기는 오해가 있다. SFT와 LoRA를 같은 종류의 기술로 보는 것이다. 둘은 답하는 질문이 다르다. SFT는 무엇을 정답으로 삼아 학습할 것인가라는 학습 목적이고, LoRA와 QLoRA는 그 목적을 달성할 때 어떤 파라미터를 어떤 메모리 비용으로 바꿀 것인가라는 업데이트 방법이다. 따라서 “SFT 대신 LoRA”가 아니라 “SFT 목적을 LoRA 방식으로 수행한다”가 정확한 표현이다.

SFT가 실제로 최적화하는 것

하나의 학습 샘플은 보통 시스템 지침, 사용자 입력, 모범 답변으로 구성된다. 모델은 앞에 놓인 토큰들을 보고 다음 토큰의 확률을 예측한다. 정답 답변에 실제로 등장한 토큰의 확률이 커지도록 교차엔트로피 손실을 줄인다. 대화형 학습에서는 사용자 문장까지 암기하지 않도록 사용자·시스템 구간의 손실을 가리고, 어시스턴트가 생성해야 하는 구간에만 손실을 주는 경우가 많다. 어느 구간을 가릴지는 학습 구현에 따라 달라지므로 데이터 포맷만 보고 단정해서는 안 된다.

가령 입력이 “회의 시간을 표로 정리해 줘”이고 모범 출력이 마크다운 표라면, SFT는 ‘표가 좋다’라는 추상 규칙을 직접 배우는 것이 아니다. 비슷한 요청 뒤에 표 머리글, 행, 구분자가 이어질 확률을 높인다. 충분히 다양하고 일관된 예시가 쌓이면 결과적으로 지시 준수, 말투, 출력 스키마, 거절 방식이 행동 패턴으로 자리 잡는다.

구분 결정하는 것 학습 중 바뀌는 부분 주의할 점
SFT 모범 출력 토큰의 확률을 높이는 학습 목적 업데이트 방식에 따라 다름 데이터의 오류와 문체도 함께 모방
전체 미세조정 SFT 등을 수행하는 파라미터 업데이트 방식 기본 모델의 대부분 또는 전부 메모리와 체크포인트 비용이 큼
LoRA 기존 가중치는 고정하고 저랭크 행렬을 학습 작은 어댑터 파라미터 SFT, 선호학습 등 여러 목적과 결합 가능
QLoRA 4비트로 양자화한 고정 모델을 통과해 LoRA를 학습 LoRA 어댑터 학습 메모리를 줄이는 방법이지 별도 정답 체계가 아님

LoRA 논문은 GPT-3 175B 사례에서 학습 가능한 파라미터를 1만 배 줄이고 GPU 메모리 요구량을 3배 낮출 수 있다고 보고했다. 이는 특정 실험 설정의 결과이지 모든 모델의 보장값은 아니다. QLoRA 논문은 고정된 4비트 기본 모델을 통해 역전파하고 LoRA 어댑터만 갱신해, 단일 48GB GPU에서 65B 모델을 미세조정한 실험을 제시했다. 두 연구가 말하는 혁신은 정답의 의미가 아니라 업데이트 비용이다.

도구를 쓰는 에이전트는 ‘정답 한 줄’이 아니라 궤적을 배운다

에이전트 SFT에서는 최종 답만 저장하면 부족하다. 모델이 언제 어떤 도구를 어떤 인자로 호출해야 하는지 배우려면 행동과 관찰이 이어지는 도구 호출 궤적이 필요하다. 다음은 배송 조회 에이전트의 축약된 학습 예다.

[사용자]
“주문 A-1842가 오늘 도착하는지 확인해 줘.”

[어시스턴트: tool_call]
{"name":"get_order","arguments":{"order_id":"A-1842"}}

[도구 결과]
{"status":"in_transit","eta":"2026-07-21","carrier":"한빛택배"}

[어시스턴트]
“주문 A-1842는 배송 중이며 예정일은 7월 21일입니다. 다만 배송사 사정으로 바뀔 수 있습니다.”

이 샘플에서 학습시킬 핵심은 두 군데다. 첫째, 주문 상태를 추측하지 않고 get_order를 선택하며 필수 인자 order_id를 맞춘다. 둘째, 도구가 돌려준 날짜와 상태만 근거로 최종 문장을 만든다. 보통 도구 결과는 모델이 생성할 정답이 아니라 다음 행동의 조건으로 제공되고, 어시스턴트의 도구 호출과 최종 답에 손실을 준다. 반대로 잘못된 주문 번호, 존재하지 않는 도구명, 도구 결과에 없는 확정 표현이 섞이면 그 실수도 학습된다.

ReAct 연구는 추론 흔적과 행동, 관찰을 번갈아 배치하면 계획을 갱신하고 예외를 처리할 수 있음을 보였다. 특히 작은 PaLM 모델을 올바른 답에 도달한 3,000개 ReAct 궤적으로 미세조정한 실험도 보고했다. 다만 내부 추론을 길게 노출하는 포맷이 언제나 필요한 것은 아니다. 실제 제품에서는 짧은 행동 근거, 구조화된 도구 호출, 관찰, 최종 답처럼 검증 가능한 경계를 설계하는 편이 안전하다.

작은 데이터셋을 설계하는 실전 기준

고객지원 봇이 환불 정책을 정확히 인용하게 만들고 싶다고 하자. “환불해 주세요 → 처리했습니다” 같은 성공 예시만 모으면 모델은 권한 확인 없이 완료를 선언할 수 있다. 데이터에는 최소한 정상 처리, 주문번호 누락, 환불 기간 초과, 조회 도구 실패, 사람에게 넘겨야 하는 고위험 사례가 함께 있어야 한다. 동일 요청을 존댓말·오타·짧은 문장으로 바꿔 입력 다양성도 확보한다. 출력은 정책 버전, 도구 스키마, 금지 표현이 서로 충돌하지 않게 검수한다.

판단 순서는 단순하다. 원하는 행동이 프롬프트와 몇 개 예시만으로 안정되면 먼저 프롬프트를 쓴다. 형식 오류가 반복되고 같은 종류의 요청이 충분히 쌓이면 SFT를 검토한다. 전체 미세조정 비용이 부담스럽거나 여러 고객별 어댑터가 필요하면 LoRA가 실용적이다. 큰 모델을 제한된 GPU에서 학습해야 할 때 QLoRA를 고려한다. 반면 최신 사실을 기억시키려는 목적이라면 SFT보다 검색·RAG가 우선이다. 자주 바뀌는 배송 상태나 가격을 가중치에 넣으면 업데이트가 늦고 출처 추적도 어렵다.

학습 전에 만들어야 할 평가지표

앞의 배송 예시를 실제로 학습한다면 평가를 “답변이 자연스러운가” 하나로 끝내서는 안 된다. 최소한 도구 선택 정확도, 필수 인자 정확도, 도구를 부르지 말아야 할 때의 불필요 호출률, 반환값과 최종 답의 일치율을 따로 잰다. 예를 들어 테스트 200건 중 올바른 도구를 고른 사례가 184건이면 선택 정확도는 184÷200=92%다. 그중 인자를 틀린 12건이 있다면 최종 성공률은 172÷200=86%로 내려간다. “92% 정확도”만 보고 배포하면 실제 사용자는 나머지 8%가 아니라 14%의 실패를 경험할 수 있는 셈이다.

또 학습 데이터와 비슷한 임의 분할만으로 평가하면 템플릿 암기를 실력으로 착각하기 쉽다. 새로운 도구 조합, 존재하지 않는 주문번호, 빈 결과, 시간 초과, 서로 충돌하는 관찰을 별도 세트로 둔다. 도구 API가 바뀌면 모델 문제가 아니어도 호출이 깨질 수 있으므로 스키마 버전과 평가 시점을 함께 기록해야 한다. 오프라인 정확도가 높아도 실제 배포에서는 권한, 지연, 재시도 때문에 실패하므로 소규모 트래픽에서 관찰 가능한 로그와 중단 조건을 먼저 마련한다.

SFT가 해결하지 못하는 것

SFT는 보지 못한 상황에서의 진실성을 보장하지 않는다. 데이터가 좁으면 표현을 외우고, 서로 다른 규칙이 섞이면 평균적인 답을 내며, 긴 도구 연쇄에서는 초반의 작은 오류가 누적된다. 모범 답안이 하나뿐이면 여러 개의 괜찮은 답 중 무엇을 더 선호하는지도 알려 주기 어렵다. 그래서 학습 전에는 스키마 유효성·도구 성공률·근거 일치율을 별도로 정의하고, 학습 후에는 데이터에 없던 조합과 실패 상황으로 평가해야 한다. SFT의 성패는 “얼마나 많이 학습했는가”보다 “제품에서 원하는 행동을 데이터와 평가로 얼마나 정확히 번역했는가”에 달려 있다.

원문 자료

포스트 트레이닝 시리즈

댓글