광고
~ / posts / developer
💻 개발자

LLM 파인튜닝 방식 고르기, SFT·DPO·GRPO 비용과 메모리 비교

모델 말투나 출력 형식을 바꾸려고 파인튜닝을 알아보면 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프롬프트 + 보상 모델매 스텝사람 선호를 보상 모델로 이미 학습해 둔 경우직접 구성
원하는 답을 직접 써 줄 수 있는지, 답을 코드로 채점할 수 있는지, 두 답 중 나은 쪽을 고를 수 있는지 차례로 물어 SFT·GRPO·DPO 중 하나로 가고, 모두 아니면 평가셋부터 만들라는 판단 순서도
위에서부터 답하고 처음 '예'가 나온 칸이 기본안이에요

자주 틀리는 곳은 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 모델 학습 방식별 H100 연산 시간 (5,000건 기준)
SFTSFT · 0.4GPU시간0.4GPU시간보상 모델 학습보상 모델 학습 · 0.81GPU시간0.81GPU시간DPODPO · 1.1GPU시간1.1GPU시간GRPOGRPO · 1.4GPU시간1.4GPU시간PPO(보상 모델 포함)PPO(보상 모델 포함) · 4GPU시간4GPU시간

시간당 3.99달러면 SFT 1.61달러, DPO 4.30달러, GRPO 5.74달러, PPO 16.14달러예요

단위: GPU시간 · 자료: 파라미터×토큰 FLOP 으로 직접 계산 (활용률 40% 가정, 2026-10-27)
표로 보기
구분연산 시간
SFT0.4
보상 모델 학습0.81
DPO1.1
GRPO1.4
PPO(보상 모델 포함)4

숫자에서 읽을 점은 셋이에요.

  1. DPO 는 SFT 의 약 2.7배예요. 시퀀스가 두 개(나은 답·못한 답)이고 참조 모델 순전파가 더해져서예요. TRL 의 precompute_ref_log_probs=True 로 참조 로그확률을 학습 전에 한 번만 계산하면 1.08시간이 0.90시간으로 줄고, 학습 중 참조 모델을 GPU 에 올려 둘 필요도 없어져요(TRL DPO 문서).
  2. RL 쪽 숫자는 낙관적인 하한이에요. 생성은 토큰을 하나씩 만들어 GPU 를 덜 채우니 GRPO·PPO 는 표보다 더 걸려요.
  3. 그래도 전부 수십 달러 안쪽이에요. 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만 토큰이에요.

Together AI 관리형 학습 요금, Llama 3.1 8B 5,000건 3에폭
LoRA전체 학습
05101520SFT · LoRA 4.1달러SFT · 전체 학습 4.6달러SFTDPO · LoRA 16.4달러DPO · 전체 학습 18.3달러DPO

작업마다 최소 요금 4달러가 붙어요. SFT 는 최소 요금과 거의 같아요

단위: 달러 · 자료: Together AI 가격표 단가 × 직접 계산한 토큰 수 (2026-10-27 확인)
표로 보기
구분LoRA전체 학습
SFT4.14.6
DPO16.418.3

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 캐시는 빠져 있으니 실제로는 더 필요해요.

SFT 는 정책 하나 약 128GB, DPO 는 정책과 고정 참조 약 144GB, GRPO 는 정책과 채점 함수에 β 가 0보다 클 때 참조가 더해져 128GB 와 생성 메모리, PPO 는 정책·가치 두 개를 학습하고 참조·보상을 고정해 약 288GB 가 필요하다는 비교 카드
PPO 는 학습하는 모델이 둘이라 메모리가 두 배가 돼요
8B 모델 학습 방식별 고정 메모리 (활성값 제외)
LoRA SFT·DPOLoRA SFT·DPO · 16GB16GBSFT 전체SFT 전체 · 128GB128GBDPO 참조 미리 계산DPO 참조 미리 계산 · 128GB128GBDPO 전체DPO 전체 · 144GB144GBGRPO(β=0)GRPO(β=0) · 128GB128GBPPO 전체PPO 전체 · 288GB288GB

GRPO 는 여기에 생성용 KV 캐시가 더해져요. vLLM 을 같은 GPU 에 띄우면 그 몫도 잡아야 해요

단위: GB · 자료: 학습 모델 16바이트/파라미터, 고정 모델 2바이트/파라미터로 직접 계산
표로 보기
구분메모리
LoRA SFT·DPO16
SFT 전체128
DPO 참조 미리 계산128
DPO 전체144
GRPO(β=0)128
PPO 전체288

결론은 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 문법 검사기로 확인해 두면 좋아요.

광고
광고

품질과 지연 — 논문 숫자와 답 길이 함정

아래는 논문 숫자라 우리 데이터에서도 같다는 보장은 없어요.

지연은 따로 봐야 해요. 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 토큰 비용 비교에서 다뤘어요.

상황별 추천

도입 체크리스트

  1. 평가셋을 먼저 만들어요. 학습 데이터와 겹치지 않는 프롬프트 100~300개와 "좋은 답의 기준"이 없으면 어느 방식이 나았는지 판단할 수 없어요.
  2. SFT 기준점을 만들어요. DPO·GRPO 는 그 위에서 시작해요. DPO 참조 모델은 SFT 결과로 둬요.
  3. 토큰 수를 실제 토크나이저로 세요. 요금과 GPU 시간이 토큰에 비례해요.
  4. DPO 쌍을 점검해요. 두 답이 거의 같거나 나은 답이 더 길기만 한 쌍은 빼요.
  5. 메모리를 미리 계산해요. 학습 모델 16바이트, 고정 모델 2바이트로 잡고 활성값 여유를 30% 이상 둬요. 모자라면 LoRA, 참조 로그확률 미리 계산 순서로 줄여요.
  6. 학습률을 낮게 시작해요. TRL 기본값은 SFT 2e-5, DPO·GRPO 1e-6 이에요. LoRA 로 DPO 를 하면 TRL 문서는 1e-5 정도를 권해요.
  7. 답 길이와 나은 답 로그확률을 같이 기록해요. 평균 출력 토큰이 늘거나 logps/chosen 이 계속 떨어지면 멈추고 데이터를 봐요.
  8. 추론 비용을 다시 계산해요. 모델을 띄우는 비용과 늘어난 답 길이까지 넣어 월 비용을 비교해요.
광고
광고

자주 묻는 질문

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 손실 흐름에서 도식과 코드로 단계별로 풀었어요.

참고한 자료

#SFT DPO 차이#DPO 비용#GRPO 메모리#PPO RLHF 비용#LLM 파인튜닝 방식#선호 학습 데이터#TRL DPOTrainer#파인튜닝 도입 체크리스트
← 이전 글JPA N+1 해결 방법 고르기, fetch join·배치 사이즈 판단표와 쿼리 수 계산다음 글 →LLM 서빙 KV 캐시 격리, 요청 간 데이터 노출 원인과 점검표
광고

더 둘러보기

💻 개발자 다른 도구

🔥 많이 찾는 도구

🔮 재미로 한 번 더

📝 읽어 볼 만한 글

글 전체 보기 →