오프라인 데이터 정제: 시간 제약 없이 여러 번 거른다
온라인의 짐이 이만큼 무겁다면, 오프라인은 그 짐을 피하는 것 말고 무엇을 얻는가? 오프라인의 진짜 강점은 "한 번 만들면 끝"이 아니라, 시간 제약 없이 데이터를 정제할 수 있다는 것이다.
오프라인 데이터셋 구축 — 실제 파이프라인의 여러 패스(pass)
오프라인 선호 데이터셋은 보통 한 번에 만들지 않고 여러 번 걸러서 만든다. 한 번 거르는 단계를 패스라고 부른다. 흔히 쓰는 순서는 아래 여섯 패스다.
| 패스 | 하는 일 | 왜 하나 |
|---|---|---|
| 1 후보 생성 | 프롬프트 하나당 응답 N개를 모델에서 샘플링한다. 샘플링 온도(temperature)를 높여 다양성을 확보한다. Llama 3는 프롬프트마다 보통 10~30개, SimPO 실험은 5개, JoyCaption은 10개를 뽑았다 | 고를 거리가 있어야 좋은 쌍이 나온다 |
| 2 중복 제거 | 거의 동일한 응답을 뺀다. 코사인 유사도, n-gram 오버랩(겹치는 낱말 묶음), 임베딩 기반 클러스터링을 쓴다 | 같은 말을 다르게 한 것뿐인 응답 쌍은 학습 신호(시그널)가 약하다 |
| 3 1차 거르기 | 명백히 나쁜 응답을 걸러 낸다. 반복 루프(n-gram 반복 비율), 형식 위반(지시를 따르지 않은 응답), 길이 이상치(너무 짧거나 너무 긴 응답) | 쓸모없는 데이터를 뺀다 |
| 4 심사 | 남은 응답을 심사 모델(응답을 채점하는 다른 언어모델)에 통과시킨다. 단순 쌍비교(“A가 나은가 B가 나은가”)보다 응답마다 1~10점을 매기게 한다 | 점수가 있으면 두 응답의 차이(마진)까지 안다. 여러 심사 모델을 섞으면 한 모델의 심사 편향을 다른 모델이 상쇄할 수 있다 |
| 5 마진 기반 고르기 | 점수 차이가 작은 쌍을 버린다 | DPO가 방향을 잡으려면 마진이 넓어야 한다. 비슷비슷한 응답 쌍으로는 모델이 무엇을 올리고 내릴지 모른다 |
| 6 사람의 표본 확인 | 자동 파이프라인을 통과한 데이터셋에서 무작위로 뽑은 표본을 사람이 직접 읽는다 | 심사 지시문의 버그, 체계적 편향, 예상치 못한 패턴을 찾는다 |
3번 패스에는 단서가 하나 붙는다. 너무 쉽게 걸러지는 응답(완전히 망가진 출력)만 비선호로 남기면 배울 것이 적다. 모델이 거의 내놓지 않는 답을 비선호로 두면 이미 낮은 확률을 더 낮출 뿐이기 때문이다. 걸러 내는 것은 쓸모없는 데이터이지, 모델의 전형적 실수가 아니다.
5번 패스의 효과는 생각보다 크다. 덩(Xun Deng)과 동료들의 BeeS(2025)는 보상 마진이 큰 쌍을 골라 공개 선호 데이터셋 UltraFeedback의 약 10%만으로 DPO를 돌렸다. 그랬더니 사람 선호를 흉내 내는 자동 평가 AlpacaEval 2에서 전체 데이터로 학습할 때보다 오히려 3~8% 높았다. 핵심은 "많은 데이터"가 아니라 "강한 데이터"다.
이 전체 과정은 학습과 따로 돈다. 시간 제약이 없으므로 각 패스를 독립적으로 실행하고, 패스마다 남은 결과를 검사할 수 있다. 데이터 분포를 그려 보고 태스크별 균형을 조정할 수도 있다. 전체를 버리고 처음부터 다시 만들어도 모델은 영향받지 않는다. 온라인에서는 이 모든 일이 배치마다, 학습이 도는 동안 일어나야 한다.
ML에서: DPO가 폭발적으로 퍼진 이유
오프라인 DPO에는 장점이 두 가지 더 있다. 첫째, 학습은 일반적인 미세조정과 같다. 기존 학습 인프라를 그대로 쓰고, 생성과 학습이 분리되어 있어 자원 관리가 쉽다. 둘째, 재현성이 높다. 같은 데이터와 같은 하이퍼파라미터면 같은 결과가 나온다. 온라인은 생성·평가·학습 루프에 확률적 요소가 끼어 있어 재현이 어렵다.
이것이 DPO가 폭발적으로 인기를 얻은 이유다. DPO 논문(라파일로프(Rafael Rafailov)와 동료들, 2023)이 내세운 것도 이 점이었다. 미세조정하는 동안 모델에서 응답을 뽑을 필요가 없고, 실험한 과제에서 PPO 기반 RLHF와 같거나 나은 결과를 냈다. PPO의 성능을 미세조정의 편의로 얻는 것, 그것이 DPO의 약속이었다.
문제 3 — 버그는 사흘 뒤에 보였다
온라인 학습을 사흘 돌린 뒤에야 심사 지시문에 버그가 있었다는 것을 알았다. 목록으로 된 답에 내용과 상관없이 2점씩 더 주고 있었다. 생성한 응답과 받은 점수는 배치마다 모두 기록해 두었다. (가) 기록 가운데 지시문을 고쳐 다시 쓸 수 있는 것은 무엇인가? (나) 같은 버그가 오프라인 파이프라인의 4번 패스(심사)에 있었다면, 여섯 패스 가운데 무엇을 다시 돌리면 되는가?










정리 (가) 거의 없다. 온라인 응답은 그것을 뽑은 순간의 모델에 묶여 있고, 첫 배치 뒤의 모델은 모두 버그 점수로 학습한 모델이다. 점수를 다시 매겨도 응답 자체가 목록 쪽으로 쏠려 있다. (나) 4번 심사부터 5번, 6번 패스를 다시 돌리고 학습만 다시 한다. 1~3번 패스의 결과는 학습 전 모델이 뽑은 응답이라 그대로 쓴다. 오프라인의 강점은 데이터의 양이 아니라, 시간 제약 없이 패스마다 결과를 남기고 고칠 수 있다는 것이다.