포스트 트레이닝은 사전학습만 마친 base 모델을 대화하고 지시를 따르는 어시스턴트로 다듬는 과정으로, 보통 SFT로 대화 형식을 가르친 다음 RLHF·DPO로 사람이 선호하는 답에 맞춘다. 같은 base 모델이라도 이 과정에 따라 말투·안전성·추론 능력이 크게 달라지며, 공개 모델을 내 용도에 맞게 길들일 때 쓴다.
| 단계 | 무엇을 배우나 | 필요한 데이터 |
|---|---|---|
| SFT | 지시를 따르고 대화 형식을 지키는 법 | 지시-응답 쌍 |
| 선호 학습 (RLHF/DPO) | 사람이 더 좋아하는 답을 고르는 법 | 좋은 답과 나쁜 답 쌍 |
| 추론 RL (GRPO 등) | 정답을 확인할 수 있는 문제를 끝까지 푸는 법 | 자동 채점이 되는 문제 |
| 안전성 학습 | 유해한 요청을 거절하는 법 | 거절 예시, 선호 데이터 |
Llama 같은 공개 모델은 보통 base 모델과 instruct(chat) 모델을 함께 내놓는다. base 모델은 질문을 받으면 답하기보다 문장을 이어 쓰는 경우가 많고, instruct 모델은 질문에 답하는 형식을 익힌 상태다. 두 모델의 차이가 곧 포스트 트레이닝의 결과다.
그래서 직접 미세조정할 때는 어느 모델에서 출발할지부터 정한다. 대화형 서비스라면 instruct 모델에 덧붙여 학습시키는 편이 쉽다. 나만의 대화 방식을 처음부터 입히고 싶을 때만 base 모델에서 SFT부터 시작한다.
직접 파이프라인을 만들 때는 Hugging Face의 trl 라이브러리를 많이 쓴다. 단계마다 트레이너가 따로 있어서 순서대로 이어 붙이면 된다. GPU 메모리가 부족하면 LoRA 같은 경량 미세조정을 같이 쓴다.
| 순서 | trl 트레이너 | 끝나고 확인할 것 |
|---|---|---|
| 1 | SFTTrainer | 채팅 템플릿에 맞게 답하는지 |
| 2 | DPOTrainer | 선호하는 쪽으로 답이 나아졌는지 |
| 3 (선택) | GRPOTrainer | 수학·코드 정답률이 올랐는지 |
단계마다 eval을 꼭 돌린다. 앞 단계에서 떨어진 품질은 뒤 단계에서 잘 회복되지 않는다.
| 방식 | 방법 | 장점 | 단점 |
|---|---|---|---|
| RLHF | 보상 모델을 만든 뒤 강화학습 | 세밀하게 조정 가능 | 복잡하고 불안정 |
| DPO | 선호 쌍으로 바로 학습 | 단순하고 안정적 | 데이터 밖 상황에 약함 |
| GRPO | 여러 답을 비교해 보상 | 추론 능력 강화 | 자동 채점 가능한 문제 필요 |
처음 시도한다면 DPO가 무난하다. 수학이나 코드처럼 답이 맞았는지 자동으로 확인할 수 있는 작업이면 GRPO 같은 추론 RL을 그 뒤에 더한다.
포스트 트레이닝은 데이터 준비와 GPU 비용이 많이 든다. 말투나 출력 형식만 바꾸려면 시스템 프롬프트로, 최신 지식이 필요하면 RAG로 먼저 해결되는지 확인한다. 학습은 새 지식을 넣는 것보다 행동 방식을 바꾸는 데 효과가 크다.
학습 뒤에는 원래 잘하던 능력이 떨어지기도 하므로 일반 능력 eval도 같이 본다. 선호 데이터가 한쪽으로 치우치면 장황한 답이나 아첨하는 답이 늘 수 있다.
가장 흔한 건 공개 instruct 모델에 내 데이터를 덧붙여 학습시키는 방식이다. 프롬프트만으로는 형식이나 행동이 잘 고정되지 않을 때 SFT로 시작하고, 답의 질을 더 다듬고 싶으면 DPO를 더한다.
| 어디서 | 어떻게 쓰나 |
|---|---|
| 도메인 전용 어시스턴트 | 사내 지시-응답 데이터로 SFT해 정해진 말투와 출력 형식을 지키게 한다 |
| 수학·코드 추론 모델 | 자동 채점되는 문제로 GRPO를 돌려 끝까지 푸는 능력을 높인다 |
| 답변 품질 개선 | 좋은 답·나쁜 답 쌍을 모아 DPO로 선호하는 쪽에 맞춘다 |
| 안전성 조정 | 거절 예시와 선호 데이터로 유해한 요청을 거절하도록 학습시킨다 |