
【LLM·VLM 실전 학습 #6】 좋은 답변 사례로 AI의 행동을 변화시키기 — 파인튜닝(Fine-tuning)의 판단·데이터 설계·실전 절차
요약
LLM의 답변 형식 불일치와 행동 오류를 개선하기 위한 파인튜닝(Fine-tuning)의 판단 기준과 실전 절차를 다룹니다. 프롬프트 엔지니어링 및 RAG와의 차이점을 명확히 하고, 효과적인 학습 데이터 설계와 평가 방법론을 설명합니다.
핵심 포인트
- 파인튜닝은 지식 암기보다 반복적인 업무 패턴과 문체를 학습시키는 데 적합함
- 프롬프트 개선, RAG 활용, 파인튜닝의 적절한 사용 시점을 구분해야 함
- 학습 전 개선 목표를 수치화하거나 루브릭을 통한 평가 기준 수립이 필수적임
- 최신 정보 업데이트가 필요한 경우 파인튜닝 대신 RAG나 API 활용을 권장함
프롬프트를 고안해도 답변 형식이 매번 바뀐다. 자사다운 문체가 되지 않는다. 같은 분류 실수를 반복한다.
이러한 '행동의 불일치'를 개선하는 선택지가 파인튜닝 (Fine-tuning)입니다. 다만, 최신 정보를 기억시키고 싶을 때나 프롬프트만으로 해결될 문제에까지 사용하면 데이터 작성과 평가의 부담이 늘어납니다.
이 기사에서는 파인튜닝으로 바꿀 수 있는 것, 프롬프트나 RAG와의 구분 사용법, 학습 데이터 만드는 법, 실제로 시도할 때의 일련의 흐름을 설명합니다.
이 기사의 서비스·라이브러리에 관한 기술은 2026년 7월 시점의 공식 자료를 확인했습니다. 대응 모델이나 제공 상황은 실행 전에 재확인해 주십시오.
'LLM·VLM 실전 학습'은 사내 학습용으로 작성한 교재를 일반 공개할 수 있는 형태로 재구성한 시리즈입니다.
지금까지의 기사에서는 LLM의 구조부터 RAG, 외부 도구, 운용, 보안까지 다루었습니다.
- #1 LLM은 문장을 어떻게 이해하고 생성하는가
- #2 LLM에게 지식을 부여한다 — Embedding·벡터 검색·RAG
- #3 LLM에게 도구를 사용하게 한다 — Function Calling·MCP·Agent
- #4 LLM을 빠르고 안정적으로 구동한다 — 지연(Latency)·비용·실패
- #5 LLM 앱을 안전하게 공개한다 — Prompt Injection·권한·승인
제6회부터는 LLM 커스터마이징 편입니다. 우선 추가 학습을 사용해야 할 문제의 판별법부터 시작합니다.
파인튜닝 (Fine-tuning)은 학습 완료된 모델에 특정 용도의 데이터를 추가하여, 해당 용도에서 바람직한 출력이 나오기 쉽게 모델의 가중치(Weights)를 업데이트하는 방법입니다.
지식을 통째로 암기시키기보다, 반복하고 싶은 업무의 견본을 가르치는 이미지입니다.
예를 들어, 다음과 같은 입력과 이상적인 답변의 조합을 학습시킵니다.
| 입력 | 이상적인 답변 |
|---|---|
| 고객으로부터의 문의 | 자사 규칙에 따른 답변 |
| ... |
지도 학습 기반의 파인튜닝 (SFT)은 분류, 정해진 형식으로의 생성, 문체 조정, 지시 추종(Instruction Following)의 실패 수정에 사용됩니다. OpenAI의 SFT 가이드에서도 이것들이 대표적인 용도로 언급되고 있습니다.
파인튜닝을 검토하기 쉬운 것은 다음과 같은 문제입니다.
- 답변 형식이나 문체가 매번 들쭉날쭉하다
- 분류·추출·요약에서 같은 종류의 실수를 반복한다
- 긴 지시나 대량의 Few-shot 예시를 매번 보내고 있다
반면, 한 번의 지시 변경으로 해결되는 문제나 정답의 기준을 사람 사이에서도 통일할 수 없는 문제는 학습 데이터를 만들기 전에 요건을 정리해야 합니다.
파인튜닝은 모든 문제를 해결하는 수단이 아닙니다.
먼저 프롬프트를 개선하고, 변하는 지식은 참조하며, 반복되는 행동을 학습시킵니다.
| 개선하고 싶은 것 | 우선 검토할 수단 |
|---|---|
| 지시의 모호함 | 프롬프트 |
| ... |
요금, 재고, 뉴스처럼 업데이트되는 정보는 RAG나 API를 통해 답변 시에 취득합니다. 파인튜닝에 매립하면 정보가 바뀔 때마다 재학습이 필요하게 됩니다.
또한 프롬프트만으로 충분히 풀 수 있다면, 먼저 그 상태를 평가 기준으로 삼습니다. OpenAI의 정밀도 개선 가이드도 프롬프트 개선과 평가를 먼저 수행하고, 품질이 갖춰진 대표적인 예시부터 작게 시작할 것을 권장하고 있습니다. Optimizing LLM Accuracy
학습을 시작하기 전에 무엇을 개선하고 싶은지를 수치 또는 판정 기준으로 만듭니다.
문의 분류라면 정답률, JSON 생성이라면 형식 준수율, 정형 답변이라면 필요 항목 충족률 등이 후보입니다. 문체와 같이 자동 채점이 어려운 경우에는 사람이 동일한 기준으로 평가할 수 있는 루브릭 (Rubric)을 준비합니다.
평가 데이터가 없는 상태에서 학습하면 개선되었는지, 아니면 다른 능력이 악화되었는지를 판단할 수 없습니다.
학습 데이터에는 실제 현장에서 실제로 들어오는 입력과 기준을 통일한 이상적인 답변을 사용합니다.
- 실제 입력 형식이나 길이에 가깝게 만든다
- 이상적인 답변의 작성 방식과 판단 기준을 맞춘다
- 오류, 중복, 기밀 정보, 불필요한 개인 정보를 제외한다
- 희귀한 케이스뿐만 아니라 통상적인 케이스도 포함한다
대량의 모호한 답변 예시를 추가하면 모델은 모호함까지 학습합니다. 처음에는 대상 업무를 하나로 좁히고, 소량의 고품질 예시로 전 공정을 시도합니다.
데이터는 학습을 시작하기 전에 3개로 분할합니다.
| 데이터 | 용도 |
|---|---|
| Train | 모델의 가중치(Weights)를 업데이트함 |
| ... |
동일한 대화, 바꾸어 말하기(Paraphrasing), 동일한 문서에서 만든 근사 예시가 여러 분할(Split)에 포함되면, Test 결과가 실제 실력보다 높게 나타날 수 있습니다. Google의 데이터 분할 가이드에서도 Train·Validation·Test를 나누고, Test를 최종 평가에 사용하는 구성을 설명하고 있습니다.
채팅 형식의 SFT(Supervised Fine-tuning)에서는 하나의 학습 예시를 대화로 표현합니다. JSONL을 사용하는 경우, 한 줄에 하나의 대화를 배치합니다.
{"messages":[{"role":"system","content":"문의를 분류해 주세요"},{"role":"user","content":"청구서를 재전송해 줘"},{"role":"assistant","content":"청구|재전송 요청"}]}
이것은 설명을 위한 최소한의 예시입니다. 실제로는 운영 환경에서 사용하는 system 지시어, 입력 형식, 답변 형식을 학습 데이터에도 반영합니다.
파인튜닝(Fine-tuning)은 학습 작업(Job)을 실행했다고 해서 끝나는 것이 아닙니다.
- 대상 업무와 학습 전의 평가 결과를 결정한다
- 좋은 답변 예시를 수집하여 Train·Validation·Test로 나눈다
- 대응하는 서비스 또는 학습 환경에서 학습한다
- 학습 전과 학습 후를 동일한 Test로 비교한다
- 실패 사례를 분석하여 데이터를 수정하고 재학습한다
첫 번째 목표는 '대량의 데이터로 최고 성능을 내는 것'이 아니라, '작은 데이터로 일련의 공정을 재현할 수 있는 것'입니다.
실제 학습 방법은 크게 두 가지로 나뉩니다.
| 방법 | 적합한 경우 | 주요 확인 사항 |
|---|---|---|
| 매니지드 서비스 (Managed Service) | 인프라 없이 시도하고 싶을 때 | 대응 모델, 요금, 데이터 보유, 제공 상황 |
| 오픈 소스 (Open Source) | 모델이나 학습 조건을 제어하고 싶을 때 | GPU, 라이선스, 운용, 평가 |
2026년 7월 시점에서, OpenAI는 Fine-tuning Platform을 단계적으로 종료하며 신규 사용자에게는 제공하지 않는다고 안내하고 있습니다. 기존의 학습 완료된 모델도 기반 모델(Foundation Model)의 제공 종료 시점까지 이용할 수 있다는 설명입니다. 따라서 과거의 API 샘플을 그대로 전제로 삼지 말고, 최신 SFT 가이드를 통해 제공 상황을 확인하십시오.
오픈 소스에서는 Hugging Face TRL의 SFTTrainer를 사용하여 대화 데이터나 prompt-completion 데이터로부터 학습할 수 있습니다. 다음 회차에서는 이 방법으로 SFT를 실제로 구동해 보겠습니다.
파인튜닝에서는 입력과 기대하는 출력을 한 쌍으로 묶은 학습 데이터를 준비합니다. 학습 대상 모델이 스스로 만든 답변을 검증 없이 그대로 학습시키는 것을 전제로 하지 않습니다.
| 답변 예시를 만드는 법 | 품질을 통일하는 방법 |
|---|---|
| 사람이 모범 답안을 작성 | 공통된 판단 기준으로 리뷰 |
| ... |
동일한 모델에게 답변 예시를 생성하게 하는 방법도 있습니다. 다만, 오류나 습관을 그대로 학습하면 모델의 품질을 해칠 가능성이 있습니다. 생성 출처와 관계없이 학습 전에 정확성·일관성·안전성을 확인합니다.
파인튜닝은 좋은 답변 예시를 사용하여 LLM의 행동을 조정하는 방법입니다.
- 먼저 프롬프트(Prompt)로 수정 가능한지 확인한다
- 변하는 지식은 RAG·SQL·API를 통해 가져온다
- 반복되는 형식·문체·판단 실패에 파인튜닝을 사용한다
- 평가 데이터를 학습보다 먼저 만든다
- 운영 환경에 가까운 고품질 데이터를 사용한다
- Train·Validation·Test를 학습 전에 나눈다
- 작게 학습·평가·개선하는 과정을 한 바퀴 돌린 후 확장한다
다음 회차에서는 지도 학습 기반 파인튜닝(SFT)의 데이터 형식, 학습 설정, 평가를 오픈 소스 학습 환경에서 실제로 구동해 보겠습니다.
-
#1 LLM은 문장을 어떻게 이해하고 생성하는가
-
#2 LLM에게 지식을 부여하기 — Embedding·벡터 검색·RAG
-
#3 LLM에게 도구를 사용하게 하기 — Function Calling·MCP·Agent
-
#4 LLM을 빠르고 안정적으로 구동하기 — 지연 시간(Latency)·비용·실패
-
#5 LLM 앱을 안전하게 공개하기 — Prompt Injection·권한·승인
#6 좋은 답변 예시로 AI의 행동을 바꾸기 — 파인튜닝(Fine-tuning) (본 기사) -
OpenAI — 지도 미세 조정 (Supervised fine-tuning)
-
OpenAI — LLM 정확도 최적화 (Optimizing LLM Accuracy)
-
Hugging Face TRL — SFT Trainer
-
Google Machine Learning Crash Course — 데이터셋 분할 (Dividing datasets)
본 기사는 사내 학습 자료를 바탕으로 공개용으로 재검증하여 가필한 것입니다. 기사 내의 도표는 본 시리즈를 위해 제작한 오리지널 개념도입니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기