모델 말투나 출력 형식을 바꾸려고 파인튜닝을 알아보면 SFT, DPO, RLHF, GRPO 같은 이름이 한꺼번에 나와서 무엇부터 해야 할지 막히기 쉬워요. 결론부터 말하면 방식은 "가진 학습 신호"로 고르고, 순서는 거의 항상 SFT 가 먼저예요. 모범 답이 있으면 SFT, 두 답 중 나은 쪽을 고를 수 있으면 DPO, 정답을 코드로 채점할 수 있으면 GRPO, PPO 는 보상 모델이 이미 있을 때만 봐요. 8B 모델 기준 계산 비용은 SFT 가 1달러대, PPO 도 10달러대라서 실제 예산은 GPU 가 아니라 데이터 만들기와 평가에 들어가요.
이 글은 고를 때 필요한 숫자만 다뤄요. 단가는 2026-10-27 에 Together AI 가격표, Lambda GPU 가격표, Claude API 가격표에서 확인했고, 연산량은 파라미터 수와 토큰 수로 직접 계산했어요. 가격은 자주 바뀌니 쓰기 전에 다시 확인해 주세요.
학습 방식 판단표 — 데이터가 방식을 정해요
네 방식은 "모델에게 무엇을 보여 주느냐"가 달라요. 같은 모델이라도 데이터 모양이 다르면 쓸 수 있는 방식이 정해져요.
| 방식 | 필요한 데이터 | 학습 중 생성 | 잘 맞는 목표 | 대표 도구 |
|---|---|---|---|---|
| SFT | 프롬프트 + 모범 답 | 없음 | 형식·말투·도메인 용어 | TRL SFTTrainer, 관리형 SFT |
| DPO | 프롬프트 + 나은 답 + 못한 답 | 없음 | 장황함 줄이기, 거절 기준, 취향 | TRL DPOTrainer, 관리형 DPO |
| GRPO | 프롬프트 + 채점 함수 | 프롬프트당 여러 개 | 수학·코드·추출처럼 정답이 있는 일 | TRL GRPOTrainer |
| PPO | 프롬프트 + 보상 모델 | 매 스텝 | 사람 선호를 보상 모델로 이미 학습해 둔 경우 | 직접 구성 |
자주 틀리는 곳은 DPO 를 SFT 대신 쓰는 경우예요. DPO 는 기준점보다 나은 쪽으로 미는 방식이라 기준점이 엉뚱하면 효과가 약해요. Together AI 선호 학습 문서도 도메인 밖 과제에서는 SFT 다음 DPO 가 DPO 단독보다 눈에 띄게 낫다고 적었어요.
GRPO 는 DeepSeekMath 논문(arXiv 2402.03300)에서 나온 방식으로, PPO 에서 정책만 한 크기의 가치 모델을 빼고 같은 프롬프트에 대한 여러 답의 평균 점수를 기준선으로 써요. 이 논문에서 GRPO 로 7B 모델의 MATH 정답률이 46.8%에서 51.7%로, GSM8K 가 82.9%에서 88.2%로 올랐어요.
연산 비용 직접 계산 — 8B 모델, 5,000건
조건을 하나로 맞추고 연산량을 셌어요.
- 모델 8B, 예시 5,000건, 프롬프트 300토큰·답 500토큰, 3에폭
- 학습하는 모델은 토큰당 6×파라미터 FLOP(순전파 2 + 역전파 4), 고정 모델 순전파와 생성은 토큰당 2×파라미터
- DPO 는 나은 답·못한 답 두 시퀀스를 정책으로 학습하고 참조로 한 번씩 더 읽어요
- GRPO·PPO 는 같은 5,000개 프롬프트에 생성 답 4만 개(프롬프트당 8개)를 기준으로 맞췄어요. GRPO 는 TRL 기본값처럼 KL 항(β)을 0으로 두고, 채점은 규칙 함수라 비용 0으로 봤어요
- PPO 는 생성·정책·가치 모델 학습·참조·보상 모델 순전파에 앞 단계인 보상 모델 학습도 더했어요
- H100 bf16 밀집 연산은 NVIDIA H100 사양의 희소성 기준 1,979TFLOPS 의 절반인 약 989TFLOPS, 실제 활용률 40%, 단가는 Lambda H100 SXM 8장 인스턴스의 장당 시간당 3.99달러
숫자에서 읽을 점은 셋이에요.
- DPO 는 SFT 의 약 2.7배예요. 시퀀스가 두 개(나은 답·못한 답)이고 참조 모델 순전파가 더해져서예요. TRL 의
precompute_ref_log_probs=True로 참조 로그확률을 학습 전에 한 번만 계산하면 1.08시간이 0.90시간으로 줄고, 학습 중 참조 모델을 GPU 에 올려 둘 필요도 없어져요(TRL DPO 문서). - RL 쪽 숫자는 낙관적인 하한이에요. 생성은 토큰을 하나씩 만들어 GPU 를 덜 채우니 GRPO·PPO 는 표보다 더 걸려요.
- 그래도 전부 수십 달러 안쪽이에요. InstructGPT 논문(arXiv 2203.02155)도 175B 모델 기준 SFT 에 4.9 페타플롭/s-일, PPO-ptx 에 60 페타플롭/s-일이 들었고 GPT-3 사전학습 3,640 에 비하면 작다고 적었어요. 사후학습 방식끼리는 10배 넘게 차이 나도, 결정을 가르는 건 다음 절의 데이터 비용이에요.
LoRA 와 전체 학습의 메모리·비용 차이는 LoRA 파인튜닝 언제 쓰나에서 따로 계산했어요.
관리형 서비스 요금 — SFT 와 DPO 단가 차이
직접 GPU 를 빌리지 않고 관리형 서비스에 맡기면 토큰 단위로 과금돼요. Together AI 과금 문서는 처리 토큰을 "에폭 수 × 학습 데이터 토큰 + 평가 횟수 × 검증 데이터 토큰"으로 센다고 적어요. 가격표의 Llama 3.1 8B 단가는 100만 토큰당 LoRA SFT 0.34달러·DPO 0.84달러, 전체 학습 SFT 0.38달러·DPO 0.94달러예요.
DPO 데이터의 한 줄은 프롬프트 300 + 나은 답 500 + 못한 답 500 = 1,300토큰으로 잡았어요(프롬프트를 한 번만 센다고 가정 — 문서에 따로 적혀 있지 않아요). 그러면 SFT 는 5,000 × 800 × 3 = 1,200만 토큰, DPO 는 5,000 × 1,300 × 3 = 1,950만 토큰이에요.
DPO 가 SFT 의 약 4배인 건 토큰 단가 2.5배에 한 줄에 답이 두 개라 토큰도 1.6배여서예요. 그래도 둘 다 작은 금액이라 예산은 "몇 번 돌려 보느냐"가 정해요. 설정을 바꿔 다섯 번 돌리면 DPO 는 80달러를 넘어요.
RL 은 관리형 선택지가 좁아요. OpenAI API 가격표에는 o4-mini 강화 파인튜닝(RFT)이 학습 1시간당 100달러, 채점 모델 토큰은 별도라고 나오지만, 같은 표에 파인튜닝 플랫폼을 정리 중이라 신규 사용자는 쓸 수 없다고 적혀 있어요(2026-10-27 확인).
학습 메모리 — GPU 에 몇 개의 모델이 올라가나
방식마다 동시에 올라가는 모델 수가 달라요. 학습하는 모델은 bf16 가중치·기울기에 fp32 원본 가중치와 Adam 상태 두 개를 더해 파라미터당 약 16바이트, 고정 모델은 bf16 으로 2바이트로 계산했어요. 활성값과 KV 캐시는 빠져 있으니 실제로는 더 필요해요.
결론은 H100 80GB 한 장으로는 8B 전체 학습이 어느 방식이든 안 들어간다는 거예요. 한 장이면 LoRA 가 사실상 필수이고, LoRA 에서는 어댑터를 끈 기본 모델이 곧 DPO 참조라 별도 사본이 필요 없어요. Llama 3 논문(arXiv 2407.21783)도 PPO 를 시험한 뒤 "대형 모델에서 계산이 덜 들고 IFEval 같은 지시 따르기 평가에서 더 잘 나왔다"며 DPO 를 택했어요.
데이터 비용 — 판정 쌍과 채점 함수
GPU 비용이 작으니 진짜 비용은 데이터에서 나와요. 방식별로 만들어야 하는 데이터가 달라요.
SFT 는 모범 답을 사람이 쓰거나 고쳐야 해서 건당 가장 비싸요(InstructGPT 의 SFT 데이터는 약 1만 3천 개 프롬프트였어요). DPO 는 두 답 중 나은 쪽만 고르면 되니 훨씬 빠르고 LLM 판정으로 대신할 수도 있어요. GRPO 는 프롬프트와 채점 함수만 있으면 돼요.
LLM 판정 비용을 계산해 봤어요. 판정 지시 400 + 프롬프트 300 + 답 두 개 1,000 = 입력 1,700토큰, 판정 이유와 결론으로 출력 200토큰이고, 순서 편향을 줄이려고 A·B 순서를 바꿔 두 번 물어 5,000쌍에 1만 번 호출해요.
| 판정 모델 (100만 토큰당 입력/출력) | DPO 쌍 5,000개 | 배치 API(50% 할인) | GRPO 답 4만 개를 LLM 이 채점할 때 |
|---|---|---|---|
| Claude Sonnet 5.5 ($2 / $10) | 54달러 | 27달러 | 136달러 |
| Claude Haiku 5.5 ($0.10 / $0.50) | 2.7달러 | 1.35달러 | 6.8달러 |
| 규칙 함수 (정답 비교) | — | — | 0달러 |
GRPO 채점은 답 하나당 입력 1,200토큰·출력 100토큰으로 잡았어요. 판정 비용도 GPU 비용과 같은 자릿수예요. 다만 GRPO 에 LLM 판정을 보상으로 쓰면 학습 스텝마다 API 응답을 기다려야 해요. 코드로 채점되는 과제에 GRPO 가 잘 맞는 이유는 돈보다 이 지연이에요.
사람이 판정하면 한 쌍에 1분으로 가정해도 5,000쌍은 약 83시간이에요. 학습 데이터는 보통 JSONL 이라 한 줄만 깨져도 작업이 실패하니, 몇 줄을 뽑아 JSON 문법 검사기로 확인해 두면 좋아요.
품질과 지연 — 논문 숫자와 답 길이 함정
아래는 논문 숫자라 우리 데이터에서도 같다는 보장은 없어요.
- 사후학습의 효과: InstructGPT 논문에서 SFT·PPO 를 한 1.3B 모델이 175B GPT-3 보다 사람 평가에서 더 선호됐어요.
- DPO 와 PPO: DPO 논문(arXiv 2305.18290)의 요약 과제에서 GPT-4 판정 승률이 DPO 약 61%(온도 0), PPO 는 가장 좋은 온도에서 57%였어요. 학습 중 샘플링이 필요 없다는 점도 함께 강조해요.
지연은 따로 봐야 해요. SFT·DPO·GRPO·PPO 모두 모델 구조를 바꾸지 않아서 토큰 하나를 만드는 시간은 같아요. 바뀌는 건 답 길이예요. 길이와 품질을 분리한 연구(arXiv 2403.19159)는 DPO 가 장황한 답을 선호하는 편향을 크게 이용한다고 보고했어요. 답이 1.5배 길어지면 출력 토큰 비용과 응답 시간도 1.5배가 돼요. TRL 은 길이로 정규화하는 loss_type="sigmoid_norm" 을, Together AI 는 dpo_normalize_logratios_by_length 옵션을 제공하니, 학습 전후로 평균 출력 토큰 수를 꼭 같이 재요. 한국어 답의 토큰 수가 토크나이저마다 어떻게 다른지는 한국어 LLM 토큰 비용 비교에서 다뤘어요.
상황별 추천
- 사내 문서 형식으로 답하게 하고 싶다: SFT 하나면 돼요.
- SFT 뒤 답이 장황하거나 거절 기준이 들쭉날쭉하다: DPO 를 얹어요. β 는 기본값 0.1 에서 시작해요(TRL·Together AI 모두 0.1). TRL 문서는 β 가 클수록 참조에서 덜 벗어난다고 설명해요.
- 수학 풀이, SQL 생성, 정해진 JSON 추출처럼 정답 확인이 된다: SFT 로 형식을 맞춘 뒤 GRPO 를 써요. TRL
GRPOConfig기본값은 프롬프트당 생성 8개, 최대 답 길이 512, β 0이에요. - 한 장의 GPU 로 끝내야 한다: LoRA + SFT 또는 LoRA + DPO 예요. 8B 전체 학습은 어느 방식이든 80GB 를 넘어요.
- 보상 모델과 RL 인프라가 이미 있다: 그때 PPO 를 검토해요.
- 큰 모델의 답을 작은 모델로 옮기고 싶다: 선호 학습보다 지식 증류가 맞을 수 있어요. 방식별 비용은 지식 증류 방식 고르기에 정리했어요.
도입 체크리스트
- 평가셋을 먼저 만들어요. 학습 데이터와 겹치지 않는 프롬프트 100~300개와 "좋은 답의 기준"이 없으면 어느 방식이 나았는지 판단할 수 없어요.
- SFT 기준점을 만들어요. DPO·GRPO 는 그 위에서 시작해요. DPO 참조 모델은 SFT 결과로 둬요.
- 토큰 수를 실제 토크나이저로 세요. 요금과 GPU 시간이 토큰에 비례해요.
- DPO 쌍을 점검해요. 두 답이 거의 같거나 나은 답이 더 길기만 한 쌍은 빼요.
- 메모리를 미리 계산해요. 학습 모델 16바이트, 고정 모델 2바이트로 잡고 활성값 여유를 30% 이상 둬요. 모자라면 LoRA, 참조 로그확률 미리 계산 순서로 줄여요.
- 학습률을 낮게 시작해요. TRL 기본값은 SFT 2e-5, DPO·GRPO 1e-6 이에요. LoRA 로 DPO 를 하면 TRL 문서는 1e-5 정도를 권해요.
- 답 길이와 나은 답 로그확률을 같이 기록해요. 평균 출력 토큰이 늘거나
logps/chosen이 계속 떨어지면 멈추고 데이터를 봐요. - 추론 비용을 다시 계산해요. 모델을 띄우는 비용과 늘어난 답 길이까지 넣어 월 비용을 비교해요.
자주 묻는 질문
SFT 없이 바로 DPO 를 해도 되나요?
돌아가긴 하지만 권하지 않아요. DPO 는 참조 모델 대비 변화를 학습하니 기준점이 원하는 형식과 멀면 효과가 약해요. 이미 지시를 잘 따르는 인스트럭트 모델의 말투만 손볼 때는 바로 DPO 를 해도 괜찮은 편이에요.
DPO 데이터는 몇 쌍이 필요한가요?
정해진 숫자는 없어요. 1,000쌍으로 먼저 돌려 평가셋 점수가 움직이는지 보고 늘리는 쪽이 싸요. 쌍의 수보다 두 답의 차이가 분명한지가 결과를 더 크게 좌우해요.
GRPO 와 PPO 는 무엇이 다른가요?
PPO 는 정책만 한 가치 모델을 함께 학습해 기준선을 예측하고, GRPO 는 같은 프롬프트에서 뽑은 여러 답의 평균 점수를 기준선으로 써요. 학습하는 모델이 하나라 메모리가 절반 가까이 줄지만, 프롬프트마다 답을 여러 개 생성해야 해요.
파인튜닝하면 응답 속도가 느려지나요?
모델 구조가 그대로라 토큰당 속도는 같아요. LoRA 어댑터를 합치지 않고 띄우면 약간의 추가 연산이 생기고, 답이 길어지면 그만큼 느려져요. 학습 전후 평균 출력 토큰 수를 비교해요.
β 값은 어떻게 정하나요?
TRL 과 Together AI 모두 기본값이 0.1 이에요. β 가 클수록 참조에서 덜 벗어나니, 말투가 무너지면 키우고 변화가 너무 작으면 낮춰요. Together AI 문서는 0.05~0.9 를 쓸 만한 범위로 적었어요.
정리
방식은 데이터로 정해요. 모범 답이면 SFT, 답 쌍이면 DPO, 코드로 채점되면 GRPO, 보상 모델이 이미 있을 때만 PPO 예요. 8B·5,000건 기준 GPU 비용은 모두 수십 달러 안쪽이라 결정 요인이 아니고, 갈리는 건 GPU 메모리(전체 학습 128~288GB), 데이터 비용, 학습 뒤 답 길이예요. 평가셋과 SFT 기준점을 먼저 만들고 한 방식씩 얹으며 평가 점수와 출력 길이를 같이 재요.
더 깊이 읽기
이 글은 실무에서 판단할 때 필요한 것 위주로 정리했어요. 같은 주제의 내부 동작 원리는 devboi 기술 블로그의 LLM 학습 단계 원리 — 사전학습·SFT·RLHF·DPO 손실 흐름에서 도식과 코드로 단계별로 풀었어요.