LoRA
base는 고정하고 low-rank update를 학습
rank·module별 품질/메모리 곡선을 측정할 때분류: Layer 11 - AI 기초 & 머신러닝 | 선수지식: L11-30 (ML 패러다임), L11-40 (신경망), L11-50 (트랜스포머), L11-60 (Pre-training), L11-80 (평가)
Post-training은 사전학습된 base 모델을 목표 작업·사람의 선호·안전 정책에 맞게 조정하는 단계다. SFT(Supervised Fine-Tuning, 모범 답안을 따라 하게 만드는 지도 fine-tuning), 선호 최적화, scalar reward를 이용한 online RL(Reinforcement Learning, 강화학습) 등을 필요에 따라 조합한다. PEFT(Parameter-Efficient Fine-Tuning) 는 이들과 경쟁하는 별도 정렬 단계가 아니라, 선택한 목적함수를 적은 학습 파라미터로 최적화하는 직교적인 구현 선택이다.
처음 읽을 때는 알고리즘 이름을 연대순으로 외우지 말고 세 축을 분리한다.
첫 회독에서는 알고리즘 이름을 한꺼번에 외우지 않는다. 먼저 모범 응답을 보여 주는 단계, 고정된 선호 데이터를 비교하는 단계, 현재 policy의 응답을 reward로 갱신하는 단계를 구분한다. 적은 파라미터만 학습하는 구현 선택은 이 학습 신호들과 별도 축으로 둔다. 각 약어는 아래에서 해당 신호가 실제로 등장할 때 나눠 정의한다.
이 문서의 핵심 질문은 하나다.
base 모델이 이미 똑똑한데도,왜 다시 학습해야 하고,어떤 학습 신호를 넣으면 어떤 행동이 바뀌는가?선행 단계인 pretraining만 한 base 모델은 다음 토큰 분포를 잘 맞추지만, “주어진 지시를 따른다”, “거절 경계를 지킨다”, “검산 가능한 답을 탐색한다” 같은 행동을 직접 목표로 삼지 않는다. InstructGPT (Ouyang et al., 2022)는 labeler demonstration으로 SFT한 뒤, 사람의 응답 순위를 reward model로 학습하고 PPO(Proximal Policy Optimization, value estimate를 쓰고 한 번의 policy update가 지나치게 커지지 않게 제한하는 방식) 로 policy를 갱신했다. 이 파이프라인은 중요한 기준점이지만 모든 post-training이 반드시 통과하는 고정 3단계는 아니다.
그 뒤의 방법들은 하나가 앞 방법을 폐기한 진화 계보라기보다, 어떤 신호를 어떤 비용으로 이용할지에 대한 병렬 해법이다.
RLHF(Reinforcement Learning from Human Feedback, 사람 피드백을 이용한 강화학습)라는 말의 경계도 주의한다. 좁게는 사람 선호 → reward model → PPO 파이프라인을 가리키지만, 넓게는 사람 feedback을 이용하는 정렬 전체를 뜻하기도 한다. DPO 원 논문도 표준 RLHF 목적을 classification loss로 푼다고 설명한다. 따라서 RLHF vs DPO를 비교할 때는 RLHF가 feedback 출처인지, reward-model-plus-RL 구현인지 먼저 명시해야 한다.
반례: DPO는 offline, GRPO는 verifiable reward라고 한 줄로 외우면 틀린다. Online DPO는 현재 policy의 응답을 새로 비교해 갱신하고, GRPO는 학습된 reward model도 받을 수 있다. offline/online은 알고리즘 이름만이 아니라 학습 중 현재 policy의 응답과 feedback을 새로 만드는지로 판정하고, RLVR 여부는 reward를 독립적으로 검증할 수 있는지로 판정한다.
이 토픽이 사라지면 무엇이 깨지는가: base 모델만 배포하면 지시 형식, 안전 경계, 검증 가능한 문제 해결이 제품 요구와 어긋날 수 있다. 그러나 이를 SFT → DPO → GRPO로 자동 연결하면 데이터가 없는 단계를 억지로 추가하거나, verifier가 없는 주관적 과제에 RLVR을 적용하게 된다. 먼저 바꿀 행동과 사용 가능한 신호를 정의해야 한다.
2026-07-14에 확인한 Hugging Face TRL(Transformer Reinforcement Learning) main taxonomy는 GRPO·RLOO·Online DPO·PPO를 online, SFT·DPO·KTO·ORPO를 offline으로 병렬 분류한다. 여기서 main은 개발 문서이고, 같은 페이지가 안내한 당시 최신 stable release는 별도의 v1.8.0이다. 아래 분류는 확인일의 main 상태를 요약한 것이므로 설치 버전의 지원 범위와 같다고 단정하지 않는다. 다음 표는 이 taxonomy에 학습 신호와 reward 검증 가능성 축을 더한 학습용 지도다.
| 방법군 | 직접 받는 학습 신호 | 데이터 시점 | reward 검증 가능성 | 대표 실패 신호 |
|---|---|---|---|---|
| SFT | 모범 응답 demonstration | 보통 offline | reward를 직접 쓰지 않음 | 일반 능력 회귀, 포맷만 모방 |
| DPO·ORPO | 같은 prompt의 chosen/rejected 선호쌍 | 보통 offline | 선호 라벨의 품질에 의존 | 길이·스타일 편향, 분포 밖 응답 취약 |
| KTO | 응답별 desirable/undesirable binary signal | offline | binary 라벨의 품질에 의존 | 클래스 불균형, 라벨 기준 불일치 |
| PPO·RLOO·GRPO | 생성 응답마다 계산한 scalar reward | online rollout | reward model도 verifier도 가능 | reward hacking, rollout 비용, 분산 |
| Online DPO | 현재 policy 응답 사이의 갱신된 선호 | online feedback | annotator·judge의 신뢰도에 의존 | judge 편향, feedback 지연 |
| RLVR과 결합한 online optimizer | 정답·테스트·환경이 계산한 scalar reward | 보통 online rollout | 높지만 verifier coverage에 한정 | 허술한 테스트 exploit, 비검증 품질 저하 |
| PEFT adapter 구현 | 위 목적함수 중 하나 | 목적함수에 따라 다름 | 목적함수에 따라 다름 | adapter 용량·적용 위치 부족, 양자화 회귀 |
여기서 gold set은 학습 후 성능을 비교하는 고정 평가셋, reward model은 응답을 scalar 점수로 바꾸는 학습 모델, verifier는 정답·테스트·환경 규칙으로 점수를 재현하는 검사기다. reward hacking은 모델이 진짜 목표 대신 이 점수 함수의 빈틈을 이용하는 실패다.
목표 행동을 직접 보여줄 수 있는가? └─ yes: demonstration으로 SFT 후보
응답의 좋고 나쁨을 비교하거나 binary label로 남길 수 있는가? ├─ 고정 데이터: DPO·KTO·ORPO 같은 offline 방법 후보 └─ 현재 policy 응답을 계속 채점: Online DPO 또는 online RL 후보
각 생성 응답에 scalar reward를 계산할 수 있는가? ├─ 학습 reward model·AI judge: PPO·RLOO·GRPO 후보 └─ 정답·테스트·환경 verifier: PPO·RLOO·GRPO + RLVR 후보이 분기는 순서를 강제하지 않는다. 이미 instruction-following 모델을 도메인 선호에 맞추면 SFT 없이 preference 단계부터 시작할 수 있고, 좋은 demonstration만 충분하면 SFT에서 멈출 수도 있다. SFT 후 online RL을 하다가 검증된 좋은 trace를 다시 SFT 데이터로 증류하는 반복도 가능하다. 각 단계의 채택 여부는 이름이 아니라 추가된 평가 이득, 회귀, 총 학습 비용으로 결정한다.
SFT는 (instruction, response) 쌍으로 next-token loss를 학습하는 단계다. L11-30의 지도학습과 같은 구조지만, label이 spam/not spam 같은 class가 아니라 모범 답변 전체다.
등장한 문제: base 모델은 언어 패턴을 잘 알아도 “사용자 지시를 읽고 정해진 형식으로 답한다”는 행동을 자동으로 배우지 않는다. SFT는 좋은 답안을 많이 보여 주어 기본 응답 습관을 만든다.
작은 데이터 예시
{ "messages": [ { "role": "user", "content": "환불 정책을 고객에게 짧게 안내해줘. 반드시 JSON으로 답해." }, { "role": "assistant", "content": "{\"summary\":\"구매 후 7일 이내 미사용 상품은 환불 가능합니다.\",\"next_action\":\"주문번호를 확인해 주세요.\"}" } ]}이 샘플에서 모델은 “환불 정책 지식”만 배우는 것이 아니라 짧게, 고객에게, JSON으로라는 행동 패턴까지 같이 모방한다. 그래서 SFT 데이터는 정답 내용뿐 아니라 말투, 길이, 거절 방식, 도구 호출 포맷까지 일관돼야 한다.
SFTTrainer는 language-modeling과 prompt-completion 형식을 지원한다. 어떤 trainer를 쓰든 chat template, loss를 계산할 token 범위, 중복·오염 정책이 같아야 비교가 성립한다경계: SFT는 “좋은 답안 하나를 따라 하게 만드는” 데 강하다. 두 답 중 어느 쪽을 사람이 더 선호하는지, 안전 정책상 어디까지 거절해야 하는지는 SFT만으로 안정화하기 어렵다. 이런 잔여 문제가 평가에서 확인되고 신뢰할 feedback이 있을 때 preference 학습이나 online reward 최적화를 추가한다.
실패 신호: training loss는 내려가는데 gold set의 일반 질의, 코딩, 다국어 점수가 떨어지면 catastrophic forgetting을 의심한다. 포맷 준수율만 올랐고 해결률이 그대로라면 데이터가 표면 형식만 가르쳤을 가능성이 크다.
PEFT(Parameter-Efficient Fine-Tuning)는 전체 가중치를 학습하는 대신 소수의 추가 파라미터만 학습하는 계열이다 (L11-40 §3.9 참고). 핵심 철학은 “base 모델의 일반 능력은 보존하고, 바꾸고 싶은 행동만 작은 adapter에 담자”다.
LoRA(Low-Rank Adaptation) 는 큰 가중치 변화량 ΔW를 작은 두 행렬 A, B의 곱으로 근사한다.
full fine-tuning: W 전체를 업데이트LoRA: W는 freeze, ΔW ≈ A B, A와 B만 학습d_in × d_out projection의 full update는 d_in × d_out개 값을 학습한다. LoRA rank가 r이면 추가 학습 값은 d_in × r + r × d_out개다. r이 projection 차원보다 훨씬 작을 때 optimizer state와 gradient 메모리가 줄어드는 이유가 이 식에 있다. 구체 수치는 §3.14의 측정 예시에서 계산한다.
QLoRA(Quantized LoRA) 는 base model을 4-bit로 저장하고 LoRA adapter만 학습한다. 줄이는 대상은 “학습되는 adapter”가 아니라 base parameter 저장량이다. DoRA(Weight-Decomposed LoRA) 는 LoRA 변화량을 direction과 magnitude로 나눠 더 안정적인 표현을 노린다.
뒤의 비교표에 나오는 rsLoRA(rank-stabilized LoRA) 는 rank가 커질 때 scaling을 alpha/r 대신 alpha/sqrt(r)로 바꿔 gradient scale을 안정화한다. LoRA-FA(LoRA with Frozen-A) 는 저랭크 행렬 A를 고정하고 B만 학습해 rank 증가에 따른 activation memory 부담을 줄이는 변형이다. 둘 다 보편 우위가 아니라 rank·메모리·품질 sweep의 후보로 읽는다.
base는 고정하고 low-rank update를 학습
rank·module별 품질/메모리 곡선을 측정할 때양자화한 base에 LoRA adapter를 학습
base 저장 메모리가 제약이고 양자화 회귀를 검증할 때update를 direction과 magnitude로 분해
같은 parameter budget에서 LoRA 대비 이득을 측정할 때rank 증가 시 scaling을 안정화
여러 rank의 최적화 안정성을 비교할 때A 행렬을 고정해 activation memory를 줄임
메모리 절감과 품질 손실을 함께 측정할 때block 사이에 별도 작은 module을 추가
배포 구조와 adapter 교체성이 더 중요할 때LoRA target modules란 무엇인가: LoRA를 어느 선형층에 붙일지 정하는 목록이다. LLaMA 계열의 q_proj, k_proj, v_proj, o_proj는 attention projection이고, gate_proj, up_proj, down_proj는 MLP projection이다. 다른 architecture는 이름과 구조가 다르므로 이 일곱 이름을 그대로 “표준 module”로 옮기면 안 된다. PEFT는 architecture를 아는 경우 target을 자동 선택할 수 있고, 모르는 구조에는 명시적 설정을 요구한다.
rank와 target module은 함께 용량을 결정한다. attention 일부만 target한 채 rank만 높이는 것과 모든 linear layer를 낮은 rank로 target하는 것은 trainable parameter 수가 비슷해도 표현 가능한 update가 다르다. TRL의 LoRA Without Regret 재현은 특정 SmolLM3 수학 RL 설정에서 all-linear, r=1을 사용했고, 같은 문서는 SFT와 RL의 적정 rank가 다를 수 있다고 설명한다. 이는 r=1 또는 all-linear가 모든 과제의 기본값이라는 뜻이 아니라, 모델·목적함수·데이터에 맞춰 module coverage와 rank를 따로 측정해야 한다는 반례다.
선택 순서는 다음과 같다.
경계와 실패 신호: LoRA는 base 모델 능력 밖의 문제를 자동으로 새로 만드는 도구가 아니다. 학습 loss는 내려가는데 고정 평가셋이 base와 거의 같으면 adapter 용량뿐 아니라 데이터 중복, chat template, loss masking, 평가셋 민감도를 함께 의심한다. QLoRA는 base 저장 메모리를 줄이지만 양자화 오차와 kernel 제약을 추가하므로 같은 gold set과 token budget에서 비양자화 LoRA와 비교한다.
RLHF(Reinforcement Learning from Human Feedback)는 사람의 feedback으로 모델 행동을 조정하는 큰 범주다. InstructGPT가 사용한 좁은 의미의 대표 파이프라인은 다음 세 단계다.
1. SFT: instruction tuning (위 §3.2)2. Reward model 학습: - 데이터: (prompt, chosen, rejected) preference triplet - 손실: pairwise preference (Bradley-Terry)3. PPO로 SFT 모델 fine-tune: - 보상 = reward model 점수 - β × KL(π || π_ref) - KL이 커지면 reward exploit·일반 능력 회귀 위험을 별도 평가여기서 reward model은 선호 데이터를 보고 응답을 scalar 점수로 바꾸는 모델이다. PPO(Proximal Policy Optimization) 는 policy update 비율을 clip하고 value estimate를 사용해 online rollout의 분산을 다룬다. reference model은 정렬 전 기준 policy이고, KL(Kullback-Leibler divergence) penalty는 새 policy가 기준 분포에서 과도하게 멀어지는 것을 제한한다.
메모리 모델
| 구성요소 | 역할 | 왜 필요한가 |
|---|---|---|
| policy model | 실제 업데이트되는 모델 | reward를 높이는 방향으로 학습 |
| reference model | KL 기준점 | 원래 모델에서 너무 멀어지는 것 방지 |
| reward model | 사람 선호 점수 예측 | 텍스트 응답을 scalar reward로 변환 |
| critic/value | PPO의 value 추정 | policy-gradient variance 완화 |
이 표는 논리적 역할을 센 것이지 항상 네 개의 full model copy가 GPU에 상주한다는 뜻이 아니다. 실제 구현은 value head 공유, PEFT adapter, quantization, sharding, offload를 쓸 수 있다. peak memory에는 gradient·optimizer state·activation·rollout KV cache까지 포함해 측정한다. 단순화한 수치 예시는 §3.14에 둔다.
DPO=offline이라는 이름 기반 분류의 반례다.선택 기준: learned reward나 verifier를 현재 policy 응답에 적용해 탐색할 가치가 있고 rollout 비용을 감당할 때 online 방법을 검토한다. value estimation이 필요하고 PPO의 clipping 특성을 검증하려면 PPO, 더 단순한 sequence-level baseline을 원하면 RLOO, 같은 prompt의 group-relative 비교가 과제에 맞으면 GRPO가 후보다. 어느 방법도 reward 품질 문제를 대신 해결하지 않는다.
실패 신호: train reward는 오르는데 gold set, 응답 길이, 안전 거절, 다양성이 나빠지면 optimizer보다 reward misspecification을 먼저 의심한다. KL 제약을 켠 run에서 KL이 거의 0이고 제품 지표도 그대로면 제약이 너무 강하거나 reward가 구분력을 잃었을 수 있다. KL과 길이가 급증하면 policy가 reference 밖의 reward 빈틈을 탐색하는지 확인한다. KL 항을 끈 구성은 같은 진단을 그대로 적용하지 않고 policy drift와 gold set 회귀를 직접 측정한다.
DPO(Direct Preference Optimization)는 고정 preference pair에서 policy를 직접 학습하는 offline 방법이다. Rafailov et al. (2023, arXiv:2305.18290)은 KL-제약 reward 최적화를 닫힌 형태로 정리해 별도 reward model 학습과 training-time rollout을 제거했다.
Loss(DPO) = -log σ(β · [log(π(y_w|x)/π_ref(y_w|x)) - log(π(y_l|x)/π_ref(y_l|x))])
y_w: chosen (선호되는 답)y_l: rejected (덜 선호)β: reference 대비 선호 log-ratio의 scale을 정하는 계수y_w는 reference보다 policy에서 더 그럴듯해져야 하고, rejected 답변 y_l은 덜 그럴듯해져야 한다. 단, policy가 reference에서 너무 멀어지면 β가 제동을 건다.RLHF와 DPO 메모리 비교
PPO/RLHF: policy + reference + reward model + critic/valueDPO: policy + reference (구현에 따라 adapter·reference 공유 가능)좁은 의미의 PPO-based RLHF는 “선호 → reward model → online RL”로 가고, offline DPO는 “고정 선호쌍 → preference loss”로 간다. 전자는 현재 policy가 새로 만든 응답을 탐색하고, 후자는 이미 수집한 데이터의 coverage 안에서 싸고 재현 가능하게 반복한다. 팀 크기가 아니라 feedback freshness의 가치, rollout/reward 비용, fixed dataset coverage로 고른다.
β 손계산 직관
chosen 개선폭 = log π(chosen) - log π_ref(chosen)rejected 개선폭 = log π(rejected) - log π_ref(rejected)DPO가 키우는 값 = chosen 개선폭 - rejected 개선폭원래 KL-regularized 유도에서 β는 reference에서 벗어나는 비용과 연결되지만, 실제 DPO loss에서는 logit scale과 gradient에도 함께 작용한다. 따라서 “작으면 항상 reward hacking, 크면 항상 학습 정지”라는 단일 규칙으로 쓰지 않는다. β sweep에서는 preference accuracy·KL·응답 길이·gold set 회귀를 함께 보고, 관측된 방향만 해당 model/data/run의 근거로 사용한다.
| 기법 | 데이터 신호 | reference | 학습 시점 | 핵심 경계 |
|---|---|---|---|---|
| DPO | paired chosen/rejected | 필요 | offline | 별도 RM·rollout 없이 pair를 직접 학습 |
| KTO | unpaired desirable/undesirable | 필요 | offline | pair가 없어도 되지만 binary label 필요 |
| ORPO | paired preference + favored response | 불필요 | offline | SFT NLL과 odds-ratio penalty를 결합 |
| IPO | paired chosen/rejected | 필요 | offline | squared objective로 inductive bias 변경 |
| CPO | paired chosen/rejected | 불필요 | offline | contrastive objective |
| SimPO | paired chosen/rejected | 불필요 | offline | length-normalized reward와 margin |
KTO(Kahneman-Tversky Optimization) 는 같은 prompt의 chosen/rejected 쌍을 반드시 요구하지 않고 각 응답의 desirable/undesirable binary feedback을 쓴다. ORPO(Odds Ratio Preference Optimization) 는 favored response의 NLL 학습과 preference penalty를 한 목적함수에 결합한다. pairwise 비교의 신뢰도가 높으면 DPO·ORPO류, pair를 만들기 어렵지만 응답별 binary label이 믿을 만하면 KTO류가 후보지만, 데이터 형태만으로 승자를 정하지 않고 같은 gold set에서 비교한다. KTO 원 논문도 모든 상황에 보편적으로 우월한 하나의 loss는 없다고 명시한다.
GRPO(Group Relative Policy Optimization)는 DeepSeekMath (2024)에서 제안된 online policy optimization 방법이다. 같은 prompt에서 나온 여러 응답의 reward를 그룹 안에서 상대화해 advantage를 만들며, PPO의 별도 critic/value model을 요구하지 않는다. 그러나 reward model을 제거한다는 뜻은 아니다. DeepSeekMath 실험은 학습된 outcome reward model과 process reward model을 사용했고, iterative RL에서는 새 policy의 표본으로 reward model도 다시 학습했다. TRL GRPOTrainer는 학습된 reward model, custom reward function, 환경이 제공하는 reward를 모두 받을 수 있다.
1. 같은 prompt에 N개 응답 생성 (group)2. 각 응답의 scalar reward 계산 (학습 RM 또는 verifier 가능)3. group reward의 평균·표준편차로 relative advantage 계산4. clipped policy update (별도 critic/value model 없음) - 원 GRPO 목적함수: reference policy에 대한 KL penalty 포함 - TRL main 기본값(beta=0): KL 항을 끄고 reference model도 적재하지 않음작은 계산 예시
prompt: "2x + 3 = 11을 풀어라"응답 4개 reward: [1.0, 1.0, 0.0, 0.5]group 평균 baseline: (1.0 + 1.0 + 0.0 + 0.5) / 4 = 0.625group reward 표준편차: 약 0.415
standardized relative advantage = (reward - 0.625) / 0.415: 응답 A: 약 +0.90 -> 더 밀어준다 응답 B: 약 +0.90 -> 더 밀어준다 응답 C: 약 -1.51 -> 줄인다 응답 D: 약 -0.30 -> 약하게 줄인다PPO는 learned value로 advantage를 추정하지만, GRPO는 같은 prompt의 group reward를 상대화한다. RLOO도 별도 value model이 없지만, 각 completion에 대해 나머지 completion reward의 평균을 leave-one-out baseline으로 쓴다. GRPO의 표준편차 정규화는 reward scale을 맞추는 장점이 있지만, 모든 reward가 같은 group에서는 signal이 0이 되고 문제 난이도별 편향이 생길 수 있다. optimizer 선택은 “critic 제거”만이 아니라 baseline bias·variance와 rollout 수를 함께 본다.
-β KL(policy || reference) 항으로 policy drift를 제약한다. 반면 2026-07-14에 확인한 TRL main의 GRPOConfig는 beta=0.0이 기본이며, 이때 KL 항을 쓰지 않고 reference model도 적재하지 않는다. beta>0으로 켜면 reference가 다시 필요하다. 따라서 “GRPO는 항상 reference가 필요하다”와 “GRPO에는 reference 제약이 없다”는 모두 부정확하다beta>0 구성은 reference가 필요하고 TRL main 기본 beta=0 구성은 필요하지 않다. learned reward model 대신 program verifier를 쓰는지도 메모리를 바꾼다. 최종 peak memory는 policy, rollout KV cache, 선택한 reference·reward 구성, PEFT, sharding을 포함해 측정한다이 사례는 SFT → GRPO가 보편 pipeline이라는 뜻이 아니다. 특정 모델의 데이터와 reward 조합이므로 다른 모델에는 각 단계의 추가 이득을 ablation으로 확인한다.
DeepSeek-R1 paper가 제공한 하나의 비교 사례다.
학습 흐름으로 읽기: 이 사례의 큰 R1 teacher 모델은 RLVR/GRPO로 reasoning trace를 만들고, 작은 student 모델은 그 trace를 SFT 데이터처럼 따라 배운다. 작은 모델 입장에서는 어려운 RL 환경을 직접 탐험하는 것이 아니라, 이미 좋은 풀이 흔적을 모방하는 문제로 바뀐다.
경계: distillation은 teacher가 할 수 있는 행동을 압축하는 데 강하다. teacher가 틀리는 도메인, 회사 내부 지식, 최신 정책은 그대로 증류되지 않는다. 이 경우에는 RAG, 도메인 SFT, 별도 gold set 검증이 필요하다.
운영자가 외주 LoRA 결과나 여러 도메인 모델을 합칠 때 검토할 수 있는 별도 선택지다.
mergekit-yaml 설정 파일로 merge 조건 기록 가능경계와 실패 신호: model merging은 “각 모델의 장점만 자동으로 합쳐진다”가 아니다. 한국어 LoRA와 코드 LoRA가 같은 layer에서 서로 다른 방향으로 가중치를 밀었다면 단순 평균이 둘 다 약하게 만들 수 있다. merge 후에는 각 도메인 gold set을 따로 돌려야 하며, 한 도메인은 좋아지고 다른 도메인이 떨어지면 TIES/DARE 같은 충돌 완화나 adapter routing을 검토한다.
RLVR(Reinforcement Learning with Verifiable Rewards)는 검증 가능한 scalar reward를 쓰는 RL 설정이다. optimizer 이름이 아니라 reward의 출처와 검증 성질을 가리킨다. PPO·RLOO·GRPO 중 무엇으로 policy를 갱신하든 reward가 정답·테스트·환경 규칙으로 재현 가능하면 RLVR로 볼 수 있다.
경계: RLVR은 “사람 평가가 필요 없다”가 아니라 “정답 검증이 가능한 좁은 영역에서는 사람 선호보다 더 깨끗한 reward를 만들 수 있다”는 뜻이다. 고객 상담, 글쓰기, 정책 해석처럼 품질 기준이 다축인 영역은 여전히 preference data, judge, gold set이 필요하다.
실패 신호: 코드 테스트 pass rate는 오르는데 hidden test나 설명 품질이 나빠지면 공개 테스트를 exploit했거나 verifier coverage가 좁은 것이다. group reward가 자주 전부 같아 advantage가 0이 되면 문제 난이도·sampling 다양성·reward granularity를 확인한다. 수학 성능은 좋아졌지만 일반 대화와 안전성이 나빠지면 RLVR만으로 alignment가 끝났다고 보면 안 된다.
offline/online과 별도로 누가 feedback을 만드는가도 구분한다. 사람, AI judge, 명시적 원칙, 기계 verifier는 서로 다른 편향과 비용을 만든다.
경계: AI가 평가한다고 객관적이라는 뜻은 아니다. RLAIF는 annotation 비용을 줄이지만, judge 모델의 선호·거절 성향·언어 편향을 증폭할 수 있다. 그래서 Constitutional AI나 RLAIF를 쓰더라도 gold set, red-team set, 사람 spot-check를 분리해야 한다.
Alignment 실패가 어려운 이유는 에러가 크게 터지지 않는 경우가 많기 때문이다. 학습 loss는 내려가고 reward 점수도 오르는데, 실제 제품에서는 거절률·길이·동조·안전성 중 하나가 조용히 망가진다.
| 실패 유형 | 첫 정의 | 주로 생기는 위치 | 관측 신호 |
|---|---|---|---|
| Reward hacking | 모델이 진짜 목표가 아니라 reward proxy만 exploit | scalar reward 최적화, preference 학습 | reward는 오르지만 gold set/제품 지표 하락 |
| Refusal overtrigger | 정상 질문까지 과하게 거절 | safety SFT, RLHF/RLAIF | refusal rate 증가, 재문의율 증가 |
| Sycophancy | 사실보다 사용자 의견에 맞장구치는 성향 | preference alignment | 반대 근거 제시 실패, 잘못된 전제 수용 |
| Verbosity inflation | 짧아도 되는 답이 길어지는 현상 | preference 학습, LLM-as-judge 평가 | 평균 길이는 증가하지만 해결률 정체 |
| Catastrophic forgetting | post-training 후 일반 능력(수학·코드·다국어)이 하락 | full SFT, continual pretraining | target 점수는 오르지만 일반 평가 하락 |
| Mode collapse | 다양한 답변이 사라지고 비슷한 문장만 반복 | 과한 preference 최적화 | entropy 감소, n-best 다양성 감소 |
| Jailbreak 취약 | alignment를 우회하는 prompt 패턴에 안전 정책이 뚫림 | safety 데이터 부족, guardrail 부재 | red-team set 통과율 증가 |
| Sleeper agents | 학습 때는 숨어 있다가 trigger에서 발현되는 백도어 | 오염 데이터, 악의적 fine-tuning | 특정 trigger에서만 정책 이탈 |
한 증상에 원인을 하나만 붙이지 않는다. 먼저 학습 policy와 inference 설정을 분리하고, 아래 가설을 작은 ablation으로 확인한다.
| 증상 | 먼저 비교할 가설 | 확인·대응 |
|---|---|---|
| 답변이 짧고 무성의 | reward의 길이 proxy, KL, decoding 설정 | reward component·KL·정답률을 비교하고 원인 축만 수정 |
| 정상 질문 거절 | safety 경계 데이터 불균형, judge 거절 편향 | 허용/거절 경계쌍과 category별 refusal 평가 |
| 사용자 의견에 무조건 동조 | preference label·judge의 sycophancy bias | 반대 근거가 있는 preference와 사람 disagreement 검수 |
| 일반 능력 하락 | forgetting, template·tokenizer mismatch | loss mask 확인 후 replay·PEFT·학습량 ablation |
| 응답 다양성 감소 | policy collapse, inference sampling 변경 | train entropy와 동일 decoding 조건의 n-best 다양성 분리 |
| 특정 prompt에 jailbreak | 학습 coverage 부족, 배포 guardrail 우회 | held-out red-team 유형별 평가와 defense-in-depth |
post-training에서는 optimizer를 바꿔도 학습 신호가 목표 행동을 대표하지 못하면 결과가 좋아지지 않는다. 특히 SFT demonstration, preference label, scalar reward는 서로 역할이 다르다.
SFT 데이터: "이 상황에서는 이런 답을 하라"Preference 데이터: "두 답 중 이 답이 더 낫다"Safety 데이터: "이 요청은 거절하되, 이 정상 요청은 도와라"Gold set: "학습 후 실제로 좋아졌는지 고정 평가셋으로 확인하라"작은 반례: 안전 데이터가 “위험 요청은 거절” 예시만 많고 “정상 보안 학습 질문은 허용” 예시가 적으면 refusal overtrigger가 생긴다. 반대로 helpfulness 데이터만 많고 red-team 데이터가 부족하면 jailbreak 취약이 남는다. preference 데이터는 많을수록 좋은 것이 아니라, 원하는 행동 경계 양쪽을 모두 포함해야 한다.
절대 비용은 model size, sequence length, 생성 길이, hardware, parallelism, kernel, API 단가에 따라 바뀐다. 그래서 $K, 2×, 50% 절감을 방법의 속성으로 외우지 않고 다음 항목을 같은 단위로 센다.
| 비용 항목 | 주로 커지는 방법 | 측정 기준 |
|---|---|---|
| trainable state | full FT, 큰 adapter | parameter·gradient·optimizer byte |
| 고정 model state | reference·reward·value model 사용 | resident/offload/shard별 peak memory |
| rollout 생성 | PPO·RLOO·GRPO·Online DPO | 생성 token 수, tokens/s, KV cache peak |
| feedback 계산 | learned RM·AI judge·사람 annotation | 응답당 지연·호출비·label agreement |
| verifier 실행 | RLVR 코드·agent 환경 | test/sandbox 실행 시간, timeout·실패율 |
| 평가와 재시도 | 모든 방법 | gold set 호출 수, seed 수, failed run 비용 |
offline DPO는 training-time rollout과 별도 reward model을 생략할 수 있어 같은 model/data 조건에서 단순해질 가능성이 크다. GRPO·RLOO는 PPO의 별도 value model을 피하지만 rollout과 reward 계산은 남는다. GRPO의 reference 비용은 원 논문식 KL 항을 켰는지, TRL main 기본처럼 beta=0으로 껐는지에 따라 달라진다. PEFT는 trainable state를 줄이지만 rollout token 비용을 자동으로 줄이지 않는다. 최종 선택은 목표 지표 1단위 개선당 총 GPU-hour·비용으로 비교한다.
L11-30 §3.5에서 다룬 결정 프레임을 post-training 시점으로 정밀화한다. 고정 sample 수 하나로 분기하지 말고 무엇을 바꾸는가, 요구가 얼마나 안정적인가, 학습 curve가 계속 오르는가를 본다.
이 결정 트리는 “무엇을 바꾸는가”로 읽으면 흔들리지 않는다. 지식을 바꾸면 RAG가 먼저이고, 행동 습관을 바꾸면 SFT가 후보이며 LoRA 같은 PEFT는 그 학습의 구현 선택이다. 선호와 안전 경계를 바꾸면 preference 데이터나 scalar reward를 이용하는 방법이 후보가 된다. 요구사항이 자주 바뀌거나 데이터가 적으면 prompt와 orchestration으로 시작한다.
Reasoning post-training도 단일 알고리즘이 아니다. demonstration trace를 모방하는 SFT·distillation, 정답 후보를 골라 다시 학습하는 rejection sampling, verifier reward로 탐색하는 online RL을 조합할 수 있다.
아래 값은 보편 default나 release 표준이 아니다. 기존 문서의 수치 감각을 보존하기 위한 가상 실험 시작점이며, model architecture·task 난도·domain shift·dataset 품질·hardware가 바뀌면 grid와 subset을 다시 설계한다. 행 수 하나로 prompt, LoRA, full SFT를 고르지 않는다.
보존한 손계산 예시: 4096 × 4096 projection 하나의 full update는 약 1,678만 개 값을 학습한다. LoRA r=16이면 4096 × 16 + 16 × 4096 = 131,072개로, 이 projection만 보면 약 1/128이다. 실제 절감률은 target layer 수와 optimizer·activation 구성까지 포함해 다시 잰다.
보존한 메모리 상한 예시: 7B dense model의 fp16/bf16 weight를 약 14GB로 단순화하고, 같은 크기의 policy·reference·reward·value가 각각 별도 상주한다고 가정하면 weight만 4 × 14GB = 56GB다. value head 공유, adapter, quantization, sharding을 쓰는 실제 PPO의 고정 요구량이 아니라 구성요소별 예산을 빠뜨리지 않기 위한 사고 실험이다.
논문 결과의 경계: LIMA의 1K 선별 demonstration 결과는 데이터 품질의 중요성을 보여 주는 사례이지 SFT 최소량이 아니다. DeepSeek-R1의 cold-start·RL·rejection sampling·2차 RL 구성도 해당 모델의 사례이며 단계별 기본 sample 수를 제공하지 않는다.
| 측정 대상 | 첫 sweep 예시 | 함께 고정할 것 | 판단 지표 |
|---|---|---|---|
| LoRA rank | r=8, 16, 32, 64 | target modules, token budget | gold score 대비 trainable byte·peak memory |
| target modules | attention 일부 vs all-linear | rank 또는 parameter budget | 같은 비용에서 task별 회귀·이득 |
| QLoRA | 4-bit vs 16-bit base | adapter, data order, seed | peak memory와 quantization-induced regression |
| DPO β | 0.1, 0.3, 0.5 | model, preference split, loss type | KL·preference accuracy·길이·gold score |
| GRPO group size | G=4, 8, 16 | prompt batch, 총 rollout token | zero-variance group 비율·reward 분산·GPU-hour |
| replay mix | 0%, 10%, 30% | 총 token budget | target gain과 일반 능력 회귀 |
| 데이터 크기 | 로그 간격 subset learning curve | 중복 제거·held-out split | 추가 1K sample 또는 1M token당 marginal gain |
예를 들어 r=16~32, 일곱 projection, alpha=2r는 LLaMA류 실험의 후보 grid로는 쓸 수 있지만 운영 표준은 아니다. 최근 TRL 재현처럼 RL에서 all-linear, r=1이 강한 반례도 있고, SFT에서는 더 큰 rank가 필요한 연구 결과도 있다. 값 자체보다 동일 token budget과 seed에서 어느 축이 병목인지를 확인하는 것이 목적이다.
다음 임계값도 예시다. baseline 분산과 제품 위험 허용도에서 alert를 보정하기 전에는 배포 차단 규칙으로 쓰지 않는다.
| 관측 예시 | 가능한 가설 | 다음 확인 |
|---|---|---|
| 평균 응답 길이 50% 감소 | reward 길이 proxy exploit | β 하나만 탓하지 말고 reward·KL·정답률·거절률 함께 비교 |
| 평균 응답 길이 30% 증가 | preference/judge의 장문 선호 | length-controlled 평가와 길이-matched holdout |
| 일반 benchmark 30% 감소 | forgetting 또는 template mismatch | replay·학습률·loss mask·tokenizer를 분리 ablation |
| n-best entropy 50% 감소 | 과최적화·sampling 설정 변화 | train policy entropy와 inference sampling 분리 |
| 정상 질의 refusal 30% 증가 | safety boundary 한쪽 데이터 과대표집 | 허용/거절 경계쌍을 추가하고 category별 평가 |
| red-team attack success 50% | safety coverage 부족 | 공격 유형별 held-out set과 defense-in-depth |
post-training의 핵심 — “base 모델 + 행동 정렬 + verifiable reward” — 는 다른 시스템에서도 반복.
| Post-training 구성요소 | 일반 시스템 매핑 |
|---|---|
| Base model + SFT | base library + customization layer |
| LoRA (rank-r adapter) | plugin·extension·middleware |
| Reference model (KL 제약) | original baseline·circuit breaker |
| Reward model | quality metric·linter·CI gate |
| RLHF (사람 선호) | A/B test 사용자 피드백 loop |
| RLVR (verifiable rewards) | unit test·integration test 자동화 |
| Model merging (TIES, DARE) | code merge·dependency resolution·feature toggle |
| Catastrophic forgetting | regression·deprecation |
일반 공식: “기본 행동 + 정책 정렬 + 검증 + 회귀 방어”의 4단계가 ML·소프트웨어·시스템 전반에 공통이다.
다음은 β의 보편 동작을 주장하는 결과가 아니라, 하나의 가상 run에서 여러 지표를 함께 읽는 방법을 보여 주는 worked example이다. 다른 model·dataset에서는 값과 변화 방향이 달라질 수 있다.
상황: 한국어 챗봇 SFT 끝남. preference 1K로 DPO 적용 검토도구: TRL DPOTrainer, gold 100, judge=Claude Sonnet
β sweep: - β=0.1: 평균 응답 길이 -45% (reward hacking 의심), refusal +20% - β=0.3: 평균 응답 길이 +5%, refusal stable, gold 점수 +12% - β=0.5: 평균 응답 길이 +15%, gold 점수 -3% (학습 부족)
선택: β=0.3.대안 비선택: β=0.1은 reward hacking, β=0.5는 학습 미진.
silent failure 모니터링: - 평균 응답 길이 ↓ 50%+ → reward·KL·정답률을 함께 보고 β 또는 reward 수정 - MMLU 한국어 폭락 → catastrophic forgetting → replay buffer↑ - jailbreak 통과율 30%+ → red-team fine-tune
결과 (가상): gold 점수 65 → 77, refusal 8% → 11% (acceptable).이 예시는 β를 “높을수록 좋다” 또는 “낮을수록 학습이 빠르다”로 보지 않는다. 원래 유도에서 β는 reference model과의 거리 제약에 연결되지만, 실제 선택은 해당 run의 KL·길이·preference accuracy·gold score를 함께 본다.
| 후보 | 관측 | 해석 | 결정 |
|---|---|---|---|
| β=0.1 | 길이 -45%, refusal +20% | reward를 좁게 exploit. 짧은 거절 쪽으로 이동 | 제외 |
| β=0.3 | 길이 +5%, refusal stable, gold +12% | 행동은 바뀌지만 reference에서 과도 이탈 없음 | 선택 |
| β=0.5 | 길이 +15%, gold -3% | KL 제약이 강해 도메인 선호 학습이 약함 | 제외 또는 재시도 |
여기서 gold 100은 빠른 smoke test 수준이다. 실제 release gate라면 L11-80의 gold dataset 기준처럼 표본 수, judge bias, 사람이 보는 disagreement sample을 따로 확인한다. §3.5 DPO, §3.14 구성 sweep, §3.15 가상 alert의 경계를 모두 적용한다.
엔지니어가 LLM 운영할 때 post-training 직관이 다음에 도움 된다.
| 개념 A | 개념 B | 차이점 |
|---|---|---|
| Pre-training | Post-training | scratch 학습 vs 사람 의도 정렬 |
| SFT | 선호·reward 학습 | demonstration 모방 vs 응답 간 좋고 나쁨 최적화 |
| PPO-based RLHF | offline DPO | reward model + online RL vs 고정 pair loss |
| DPO | KTO | paired (chosen, rejected) vs binary feedback |
| DPO | ORPO | pairwise loss vs NLL+preference 단일 목적함수 |
| PPO | RLOO/GRPO | learned value 사용 vs completion 간 상대 baseline |
| RLHF | RLAIF | 사람 reward vs AI reward |
| RLHF | RLVR | 선호 reward vs 검증 가능한 정답 reward |
| LoRA | QLoRA | 16-bit base vs 4-bit base + LoRA |
| LoRA | DoRA | low-rank vs +direction·magnitude 분해 |
| Full FT | LoRA | 모든 가중치 vs 일부 rank-r adapter |
| Catastrophic forgetting | Sycophancy | 일반 능력 손실 vs 사용자 동조 |
아래 값은 작은 재현 실험의 비교점을 만들기 위한 예시다. 모델·데이터·GPU가 달라지면 메모리 한도 안에서 grid를 다시 정하고, 절대 점수보다 동일 조건의 상대 차이를 본다.
main의 beta=0 기본도 구분해야 한다.공식 문서의 trainer 분류·지원 범위는 2026-07-14에 다시 확인했다. 아래 main taxonomy와 trainer 문서는 개발 브랜치 문서이며, 당시 페이지가 안내한 최신 stable release는 별도의 v1.8.0이다. main의 기본값을 설치된 stable 버전의 동작으로 단정하지 말고, 구현 시 실제 설치 버전 문서를 함께 본다.
최종 수정: 2026-07-14