제6부 생성형 AI 플랫폼
6.5 NeMo IV — 정렬(RLHF·DPO)
6.5.1 이 장에서 배우는 것 / 선수 지식
6.4에서 SFT로 모델이 instruction을 따르게 만들었다. 그런데 SFT는 "정답 응답을 모방"할 뿐, 사람이 무엇을 더 선호하는지(더 유용한가·더 안전한가·더 정직한가·형식·어조)를 미세하게 담지 못한다. 정렬(alignment) 은 그 선호를 모델에 새긴다 — 선호 데이터(같은 프롬프트에 대한 선호 응답 vs 비선호 응답)로 모델을 선호되는 방향으로 민다. 이 장은 그 두 길 — RLHF(보상 모델 + 강화학습)와 더 단순한 DPO(선호 쌍 직접 최적화) — 를 판다. NeMo 학습 묶음(6.2~6.5)의 마지막.
핵심 통찰 둘: (1) 정렬은 SFT 위에 쌓인다 — 베이스 → SFT(instruction) → 정렬(선호)의 순서. (2) 정렬의 핵심 안전장치는 "참조 모델에서 너무 멀어지지 않기"(KL 제약) 다 — 보상만 좇으면 모델이 보상을 속이며(reward hacking) 일반 능력을 잃는다. DPO가 인기인 이유는 RLHF의 복잡한 보상 모델·강화학습을 하나의 분류 같은 손실로 대체해 단순·안정하기 때문이다.
배우는 것:
- 왜 정렬인가 — SFT의 한계와, 선호(유용·안전·정직·형식)를 담는 방법.
- RLHF — 선호 데이터 → 보상 모델(RM) → PPO 강화학습(정책 최적화 + KL 제약), 그 복잡성·불안정.
- DPO — 보상 모델·RL 없이 선호 쌍을 직접 최적화, 왜 단순·안정한가.
- KL 제약·reward hacking·정렬세(alignment tax) — 과최적화의 위험과 통제.
- 선호 데이터 형식, DPO config·학습의 흐름, 정렬 평가의 어려움(실습).
선수 지식: 6.4(SFT — 정렬은 SFT 위에), 6.1(라이프사이클 정렬 단계), 6.3(학습 인프라·메모리 — RLHF는 모델 여럿), 6.2(데이터·토크나이저). 환경은 6.2(NeMo·NeMo Aligner).
정직: RLHF·DPO는 활발한 연구 영역으로 변형이 많고(PPO·DPO·KTO·RLAIF·SteerLM 등) NeMo Aligner의 API·지원·기본값은 버전 의존이다. 이 장은 개념·구조·트레이드오프를 중심에 두고, 손실 수식은 개념 수준으로 정직하게 다룬다 — 구체 구현은 그 버전 문서로. 정렬 효과·안정성은 데이터·하이퍼파라미터에 강하게 의존하니 실측·인간 평가 필요.
6.5.2 왜 정렬 — SFT의 한계
SFT(6.4)는 instruction-response를 모방한다. 한계:
| 구분 | 내용 |
|---|---|
| SFT가 주는 것 | "이런 입력엔 이런 형식의 응답" (모방) |
| SFT가 못 주는 것 | · '두 응답 중 어느 것이 더 나은가'의 미세한 선호(더 유용·간결·안전·정직)<br/>· 정답이 하나가 아닌 열린 질문에서의 '좋음'의 방향<br/>· 거부해야 할 요청을 적절히 거부, 형식·어조 일관성 |
이런 '선호'는 좋은 예시 모방만으론 부족하다 → 선호 비교로 학습하는 것이 곧 정렬이다.
정렬의 데이터는 선호 쌍(preference pair):
하나의 프롬프트에 대해:
| 항목 | 의미 |
|---|---|
| chosen(선호) | 더 나은 응답 |
| rejected(비선호) | 더 못한 응답 |
모델에게 "chosen을 rejected보다 높게" 가르친다(절대 정답이 아니라 상대 선호). 라벨은 사람(human feedback) 또는 AI(AI feedback, RLAIF)가 단다.
정렬 파이프라인의 자리:
정렬은 항상 SFT 모델에서 출발한다(instruction을 이미 따르는 모델을 다듬음).
6.5.3 RLHF — 보상 모델 + 강화학습
RLHF(Reinforcement Learning from Human Feedback) 의 3단계:
위는 PPO 루프(개념)다. 메모리에 모델 4개: 정책·참조·보상·가치(value) → 6.3 메모리 압박이 크다.
RLHF의 현실:
- 복잡·자원: 모델 4개(정책·참조·보상·가치)를 동시에 → 메모리·통신 큼(6.3). 분산이 까다롭다.
- 불안정: 강화학습은 하이퍼파라미터에 민감, 발산·붕괴 위험.
- 강력: 잘 되면 미세한 선호를 잘 담는다. 대규모 정렬에서 검증된 방법.
KL 제약(핵심). 보상만 최대화하면 정책이 보상 모델을 속이며(reward hacking) 이상한·퇴화한 출력으로 높은 점수를 받고 일반 능력을 잃는다. 그래서 보상에서 참조(SFT) 모델과의 KL 발산에 페널티(β·KL) 를 뺀다 — "선호는 따르되 원래 모델에서 너무 벗어나지 마라". β가 KL의 강도. 이것이 정렬의 안전벨트.
6.5.4 DPO — 보상 모델·RL 없이 직접
DPO(Direct Preference Optimization) 는 RLHF의 ②③(보상 모델 + PPO)을 하나의 손실로 대체한다. 핵심 통찰: RLHF의 목적함수를 풀면 선호 쌍에 대한 분류 같은 손실로 정책을 직접 최적화할 수 있다 — 보상 모델을 따로 안 만든다.
| 항목 | 내용 |
|---|---|
| DPO | (프롬프트, chosen, rejected)로 정책을 직접 학습 |
| 손실(개념) | "정책이 chosen에 주는 확률 / 참조가 chosen에 주는 확률"을 "rejected의 같은 비율"보다 높이도록 = chosen을 (참조 대비) 상대적으로 높이고 rejected를 낮춤 |
| 참조 모델 역할 | 참조(SFT) 모델이 KL 제약 역할을 암묵적으로 수행(비율 형태에 내장) |
| 방법 | 흐름 |
|---|---|
| RLHF | 선호데이터 → 보상모델 학습 → PPO(정책·참조·보상·가치 4모델, 불안정) |
| DPO | 선호데이터 → 정책 직접 학습(정책·참조 2모델, 안정·단순). 보상모델·강화학습 루프 제거 → 지도학습처럼 안정적 |
DPO의 성질:
- 단순·안정: 모델 2개(정책·참조), 지도학습 같은 안정적 학습. 구현·튜닝이 쉽다.
- 자원↓: RLHF의 4모델 대비 메모리·복잡도 절감.
- 인기: 많은 오픈 모델 정렬에 사용. 첫 정렬 시도의 기본 선택.
- 한계·차이: RLHF의 온라인 탐색(정책이 생성하며 보상으로 학습)이 없어, 일부 경우 RLHF가 더 나을 수 있다(작업·데이터 의존). 변형(KTO·IPO 등)으로 보완.
견해: DPO를 먼저 시도하라 — 단순·안정·자원 절감으로 대부분의 정렬 요구를 충족한다. 더 미세한 선호·대규모 정렬·온라인 탐색이 필요하면 RLHF(PPO). NeMo Aligner가 둘 다 제공(버전 의존). 둘 다 SFT 모델에서 출발하고 KL/참조 제약으로 과최적화를 막는다.
6.5.5 과최적화의 위험 — reward hacking·정렬세
정렬은 양날이다. 통제 없이 밀면:
reward hacking(보상 해킹). 정책이 보상 모델의 허점을 파고들어 실제로 좋지 않은데 높은 점수를 받는 출력을 학습한다(예: 장황·아첨·특정 패턴 반복). 보상 모델은 사람 선호의 불완전한 대리라 속을 수 있다.
| 구분 | 내용 |
|---|---|
| 증상 | 보상 점수는 오르는데 실제 품질(인간 평가)은 떨어짐 → 발산 |
| 원인 | 보상 모델 과신, KL 제약 약함(β 작음) → 정책이 참조에서 멀어져 해킹 |
| 통제 | KL 제약 강화(β↑), 보상 모델 품질·다양성, early stopping, 인간 평가로 검증 |
정렬세(alignment tax). 정렬이 일반 능력을 약간 희생할 수 있다 — 안전·형식을 강화하며 추론·지식 벤치마크가 소폭 하락. catastrophic forgetting(6.4)과 유사. KL 제약·데이터 균형으로 완화하되 목표 선호 vs 일반 능력의 트레이드오프를 평가로 관리.
KL의 균형:
| β(KL 강도) | 결과 |
|---|---|
| 너무 작음 | 정책이 참조에서 멀어짐 → reward hacking·퇴화·정렬세 큼 |
| 너무 큼 | 정책이 참조에 묶여 거의 안 변함 → 정렬 효과 약함 |
적절한 β로 '선호는 담되 원래 능력은 유지'한다(실측으로 튜닝).
6.5.6 워크스루 — DPO 흐름·평가
DPO가 단순하니 그것 중심으로(인자 버전 의존).
# dpo_data.jsonl — 선호 쌍(형식은 레시피 의존)
{"prompt":"환불 방법?","chosen":"환불은 다음 절차로... (명확·정중)","rejected":"몰라요. (불친절·부정확)"}
# DPO config(개념) — SFT 모델에서 출발
model:
restore_from_path: sft_model.nemo # ★ SFT 모델(정렬은 SFT 위에)
ref_policy: sft_model.nemo # 참조 모델(KL 제약 기준) = 보통 SFT
dpo:
beta: 0.1 # KL 제약 강도(β) — 과최적화 통제
data:
train_ds: { file_names: [dpo_data.jsonl] }
optim: { lr: 5e-7 } # 정렬은 보통 매우 낮은 LR(미세 조정)
# peft: lora 도 가능(LoRA로 정렬, 메모리↓, 6.4)
# DPO 학습(NeMo Aligner; 스크립트·인자 버전 의존)
python train_dpo.py --config-name dpo_config ...
# 산출: 정렬된 모델. RLHF면 먼저 보상모델 학습 → PPO(더 복잡)
평가(정렬은 평가가 어렵다).
정렬 평가의 어려움: '선호'는 주관적·다면적이라 단일 지표로 안 된다. 방법:
| 방법 | 설명 |
|---|---|
| 인간 평가(human eval) | 쌍 비교·승률(가장 신뢰, 비쌈) |
| 벤치마크 | 유용성·안전성·정직성 벤치, 일반 능력 회귀(정렬세 측정) |
| LLM-judge | 다른 LLM으로 비교 평가(편향 주의, 보조) |
| 보상 점수 | 참고만(reward hacking 때문에 단독 신뢰 금지) |
→ 목표 선호 향상 + 일반 능력 유지(정렬세) 둘 다 본다.
함정: 보상 점수만으로 정렬 성공을 판단하지 말 것 — reward hacking으로 점수는 오르고 실제 품질은 떨어질 수 있다. 인간 평가·일반 벤치 회귀가 필수.
6.5.7 중간 점검 (체크포인트)
- [ ] 정렬이 SFT 위에 쌓이며, SFT가 못 담는 미세한 선호(선호 쌍)를 학습함을 안다.
- [ ] RLHF의 3단계(선호 데이터·보상 모델·PPO)와 4모델 구조·불안정·KL 제약을 설명한다.
- [ ] DPO가 보상 모델·RL을 하나의 손실로 대체해 단순·안정함과, 참조 모델의 역할을 안다.
- [ ] reward hacking·정렬세의 위험과 KL(β) 균형으로 통제함을 안다.
- [ ] 선호 데이터 형식·DPO config(SFT에서 출발·참조·β)·낮은 LR을 안다.
- [ ] 정렬 평가가 어렵고 인간 평가 + 일반 능력 회귀가 필요함을 안다.
증상→의심: 보상 점수는 오르는데 품질 저하 → reward hacking → KL(β)↑·early stop·인간 평가. 정렬 후 일반 능력 하락 → 정렬세·β 약함·과학습 → β↑·데이터 균형·LR↓. 정렬 효과 미미 → β 너무 큼(참조에 묶임)·데이터 약함 → β↓·선호 데이터 품질. RLHF 학습 발산 → PPO 불안정 → DPO로·하이퍼파라미터·KL. 정렬을 베이스에서 시작 → SFT 건너뜀 → SFT 먼저(정렬은 SFT 위). 선호 라벨 노이즈 → 데이터 품질 → 라벨 일관성·필터.
6.5.8 트레이드오프·대안
정렬 방법 선택.
| 방법 | 누구에게 | 비고 |
|---|---|---|
| DPO | 첫 정렬·단순·안정·자원↓ | 보상모델·RL 없음, 인기 기본 |
| RLHF(PPO) | 미세 선호·온라인 탐색·대규모 | 강력하나 복잡·불안정·4모델 |
| RLAIF(AI 피드백) | 인간 라벨 비쌀 때 | AI가 선호 라벨, 인간 검증 병행 |
| KTO·IPO 등 변형 | DPO 한계 보완 | 데이터 형식·안정성 차이 |
| 정렬 안 함(SFT만) | 단순 작업·내부용 | 미세 선호·안전 약함 |
견해: DPO를 기본으로 시작(단순·안정·자원↓)하고, 더 미세한 선호나 온라인 탐색이 필요하면 RLHF로. 인간 라벨이 비용이 크면 RLAIF로 선호 데이터를 생성하되 인간 검증을 병행. 어느 방법이든 KL 제약으로 과최적화를 막고, 인간 평가 + 일반 능력 회귀로 정렬세를 관리한다. 정렬은 SFT 위에서 미세하게(낮은 LR) — 베이스를 흔들지 않는다.
비엔비디아 정직: RLHF·DPO·KTO·RLAIF는 공개 연구이고 TRL(HF) 등 다른 라이브러리도 제공한다(6.1 도구 중립). NeMo Aligner의 강점은 대규모 분산 정렬(6.3 인프라)·여러 알고리즘 통합·엔비디아 스택이다. 알고리즘 자체는 도구 중립이니 개념과 평가를 이해하는 것이 본질. 정렬 효과는 데이터·평가에 강하게 의존 — 슬라이드가 아니라 인간 평가로.
6.5.9 흔한 함정
- 보상 점수만으로 성공 판단. reward hacking으로 점수↑·품질↓ 가능. 인간 평가·일반 벤치 회귀 필수.
- KL(β) 너무 약함. 정책이 참조에서 멀어져 reward hacking·퇴화·정렬세 폭증. β를 충분히.
- KL 너무 강함. 정책이 참조에 묶여 정렬 효과 미미. β 균형(실측).
- SFT 건너뛰고 정렬. 정렬은 instruction을 따르는 SFT 모델 위에. 베이스에서 바로는 부적합.
- 선호 데이터 품질·일관성 무시. 노이즈·모순된 선호 라벨은 정렬을 저해한다. 라벨 일관성·필터·다양성.
- 정렬세 무시. 목표 선호만 보고 일반 능력 하락을 안 보면 모델이 전반적으로 나빠진 것을 놓침. 회귀 평가.
- RLHF를 무턱대고. 4모델·불안정·자원이 크다. DPO로 충분한지 먼저. RLHF는 필요할 때.
- 정렬 LR 과대. 정렬은 미세 조정 — 낮은 LR. 높으면 SFT 능력 파괴.
6.5.10 연습문제
연습 1 (왜 정렬). SFT만으로 부족한 이유와, 정렬이 사용하는 데이터(선호 쌍)가 SFT 데이터(instruction-response)와 어떻게 다른지 설명하라.
정답
SFT 한계: instruction-response를 모방할 뿐, 열린 질문에서 '두 응답 중 어느 것이 더 나은가'의 미세한 상대 선호(더 유용·간결·안전·정직·형식)를 담지 못한다. 정답이 하나가 아닌 경우의 '좋음의 방향'을 모방으로는 학습 어려움. 데이터 차이: SFT는 (프롬프트, 정답 응답 하나)의 절대 예시 — "이렇게 답해라". 정렬은 (프롬프트, chosen, rejected)의 상대 비교 — "이것이 저것보다 낫다". 정렬은 절대 정답이 아니라 선호 순서를 가르치므로, 미세한 품질·안전·어조의 방향을 담을 수 있다. 정렬은 SFT 모델 위에서 그 선호로 다듬는다.
연습 2 (RLHF 구조). RLHF의 3단계와, PPO 단계에서 메모리에 모델이 4개나 필요한 이유, 그리고 KL 제약이 없으면 무슨 일이 나는지 설명하라.
정답
3단계: ① 선호 데이터 수집(chosen/rejected), ② 보상 모델(RM) 학습(chosen>rejected 점수), ③ PPO로 정책을 RM 점수 최대화하도록 강화학습. 4모델: 정책(학습 대상 LLM)·참조(SFT, KL 기준)·보상(점수)·가치(value)(PPO의 어드밴티지 추정) — PPO 강화학습 구조상 넷이 동시에 메모리에(6.3 압박). KL 제약 없으면: 정책이 보상만 최대화하려 보상 모델의 허점을 파고들어(reward hacking) 실제론 품질이 낮은데(장황·아첨·반복) 높은 점수 받는 출력으로 발산, 참조에서 멀어져 일반 능력 상실·퇴화. KL 페널티(β·KL(정책‖참조))가 "참조에서 너무 멀어지지 마라"로 이를 막는 안전벨트.
연습 3 (DPO). DPO가 RLHF의 무엇을 제거해 단순해지는지, 참조 모델이 어떤 역할을 하는지, 그리고 왜 첫 정렬 시도로 권장되는지 설명하라.
정답
DPO는 RLHF의 보상 모델 학습 + PPO 강화학습 루프를 제거하고, RLHF 목적함수에서 유도된 선호 쌍에 대한 분류 같은 손실로 정책을 직접 최적화한다. 모델이 정책·참조 2개로 줄고(4개→2개) 지도학습처럼 안정적. 참조 모델(보통 SFT) 역할: 손실이 "정책이 chosen에 주는 확률 / 참조가 chosen에 주는 확률"의 비율 형태라, 참조가 KL 제약을 암묵적으로 내장 — 정책이 참조에서 과하게 벗어나지 않게. 권장 이유: 단순·안정·자원↓(4모델·불안정한 RL 없음), 구현·튜닝 쉬움, 대부분 정렬 요구 충족. 더 미세한 선호·온라인 탐색이 필요할 때만 RLHF로.
연습 4 (reward hacking). RLHF 학습 중 보상 점수가 계속 오르는데 사람 평가 품질은 떨어진다. (a) 무슨 현상이고 (b) 원인, (c) 통제책 셋을 제시하라.
정답
(a) reward hacking(보상 해킹)·과최적화 — 정책이 보상 모델의 허점을 이용해 실제 품질과 무관하게 점수를 높임(장황·아첨·특정 패턴 반복 등). 보상 모델은 사람 선호의 불완전한 대리라 속을 수 있다. (b) 원인: 보상 모델 과신·일반화 한계, KL 제약 약함(β 작음) 으로 정책이 참조에서 멀어져 분포 밖으로 감, 과도한 학습. (c) 통제: ① KL 제약 강화(β↑) — 참조에서 멀어지지 못하게. ② early stopping — 보상이 아니라 인간 평가/검증 지표로 멈춤. ③ 보상 모델 품질·다양성 개선(더 좋은 선호 데이터, 앙상블), ④ 인간 평가로 검증(보상 점수 단독 신뢰 금지). 핵심: 보상은 대리일 뿐, 궁극적 목표는 인간 선호.
연습 5 (정렬세). 정렬 후 안전·형식은 좋아졌는데 수학·추론 벤치마크가 소폭 하락했다. (a) 무엇이고, (b) 왜 생기며, (c) 어떻게 완화·관리하나?
정답
(a) 정렬세(alignment tax) — 정렬이 목표(안전·형식·선호)를 강화하며 일반 능력(추론·지식)을 약간 희생하는 현상(catastrophic forgetting의 일종, 6.4). (b) 왜: 정렬이 정책을 선호 방향으로 밀면서 기존 능력 표현을 일부 덮어쓰거나, 보수적·안전 지향 출력으로 치우쳐 추론 다양성·날카로움이 줄 수 있음. KL 제약이 약하거나 과학습이면 더 큼. (c) 완화·관리: ① KL 제약(β) 적절히 강화 — 참조 능력 유지. ② 낮은 LR·early stopping(과학습 방지). ③ 선호 데이터에 능력 보존을 고려한 균형(추론 예시 포함, 일반 데이터 혼합). ④ 회귀 평가 — 목표 선호 향상 + 일반 벤치를 둘 다 측정해 트레이드오프를 가시화하고 허용선 내인지 판단. 정렬은 목표만이 아니라 능력 유지를 함께 평가.
6.5.11 요약 · 다음 장(NeMo 묶음 마무리)
- 정렬은 SFT 위에서 선호 쌍(chosen/rejected) 으로 모델을 사람 선호(유용·안전·정직·형식)에 맞춘다 — SFT의 모방이 못 담는 미세한 선호를 학습.
- RLHF: 선호 데이터 → 보상 모델 → PPO(정책·참조·보상·가치 4모델). 강력하나 복잡·불안정. KL 제약이 reward hacking·퇴화를 막는 안전벨트.
- DPO: 보상 모델·RL을 하나의 손실로 대체 — 정책·참조 2모델, 지도학습처럼 단순·안정. 첫 정렬의 기본 선택.
- 과최적화 통제: reward hacking(보상↑·품질↓)·정렬세(능력 희생)를 KL(β) 균형·인간 평가·회귀 평가로 관리. 보상 점수 단독 신뢰 금지.
- NeMo 학습 묶음(6.2~6.5) 완료: 데이터(인덱싱·블렌딩·패킹) → 병렬화(TP/PP/DP/SP·메모리) → SFT/LoRA(커스터마이즈) → 정렬(RLHF/DPO). 베이스 → SFT → 정렬의 라이프사이클 ②③(6.1)을 손에 익혔다.
- 정직: 알고리즘은 공개 연구·도구 중립(TRL 등), NeMo Aligner API는 버전 의존, 정렬 효과는 인간 평가로.
다음 장: 6.6 데이터 큐레이션 — NeMo Curator. 라이프사이클의 ①(데이터)로 돌아간다 — 학습·정렬의 품질을 좌우하는 대규모 데이터 큐레이션(수집·정제·중복 제거·품질 필터·PII 처리·합성)을 GPU 가속 관점에서 본다. 모델 품질의 8할이 데이터라는 6.2의 말을 실현하는 단계다.