pile·
AI / ML·스캐터랩스캐터랩 (이루다)·

유저와 함께 만드는 LLM 2편 — 제타에 Online Learning 도입하기

스캐터랩 ML팀이 자체 LLM 서비스 '제타'에 GRPO 기반 온라인 강화학습을 도입한 과정을 다룬다. DPO는 기존 선호 데이터 분포 내 학습에 그치지만, GRPO는 모델 생성 응답을 리워드 모델이 실시간 평가해 분포 밖 탐색이 가능하다. 단순 알고리즘 적용이 아니라 비동기 인프라 설계, 확률 불일치 보정(TIS), reward hacking 해결까지 세 가지 도전을 통합한 결과, A/B 테스트에서 DPO 대비 이용시간과 리텐션 모두 유의미하게 개선됐다.

핵심 포인트
  • 동기식 단일 노드(순차 생성→채점→학습)에서 학습/추론 노드를 완전 분리한 비동기 GRPO 인프라로 전환해 GPU 유휴, 메모리 단편화, 리워드 모델 적재 불가 문제를 해결했다.
  • NCCL 기반 가중치 동기화로 HTTP 방식 수백 초 → 수 초로 단축, NVLink+RDMA로 FSDP 파라미터를 broadcast한다.
  • TIS(Truncated Importance Sampling)를 도입해 PPO clip(스텝 크기 제어)과 별도 가중치 w_t(분포 불일치 보정) 역할을 분리, 8bit 학습에서 신호 소멸을 방지했다.
  • GSPO의 sequence 단위 importance ratio가 띄어쓰기 생략 reward hacking을 유발했고, 토큰 단위로 전환해 해결했다.
  • 길이 편향(짧은 응답에 높은 점수) 문제는 채널별 분리 정규화(GDPO)와 목표 길이 대비 연속 감소 보상으로 안정화했다.
상세 정리
  • 배경: 이루다 서비스 제타의 DPO 모델 이후 추가 개선을 위해 GRPO 적용. DeepSeek이 소개한 GRPO는 리워드 모델이 생성 응답을 실시간 평가해 페어 데이터 없이 온라인 학습이 가능하다.
  • 동기 구조 한계: vLLM KV 캐시 CPU offload/reload 오버헤드, PyTorch 메모리 관리자와 vLLM 충돌로 OOM, 다수 리워드 모델 동시 적재 불가.
  • 비동기 설계 — 리워드 모델+생성 엔진 공동 배치: forward 연산만 수행해 메모리와 처리 시간이 학습 노드 대비 적으므로 동일 노드에 배치했다.
  • 비동기 설계 — NCCL 가중치 동기화: 학습 프로세스와 vLLM 프로세스를 NCCL 그룹으로 묶어 NVLink+RDMA로 broadcast, HTTP(수백 초) → 수 초로 단축했다.
  • 비동기 설계 — Staleness 제어: 샘플 생성 시점의 정책 버전을 기록, 현재 정책과 버전 차이가 허용치를 초과하면 해당 샘플을 폐기한다.
  • 확률 불일치 원인: vLLM과 학습 프레임워크의 커널 구현·연산 정밀도 차이로 동일 가중치에서도 logprob이 토큰당 평균 0.01~0.02씩 달라져, 수백 토큰 응답에서 학습 신호가 틀어진다.
  • TIS 도입: r_t = π_train/π_old(PPO clip, 스텝 크기 제어), w_t = min(π_train/π_vllm, C)(별도 가중치, 분포 불일치 보정)로 역할 분리. 단순 PPO-IS는 8bit 학습에서 정확도가 0에 수렴하는 문제가 있었다.
  • Reward hacking 1 — 띄어쓰기 생략: GSPO의 sequence 단위 ratio가 토큰별 신호를 응답 길이로 평균내 희석, 제동이 안 된 채 누적되어 '오늘 어디 가?'→'오늘어디가?' 현상 발생. 토큰 단위 GRPO로 전환 후 해소됐다.
  • Reward hacking 2 — 길이 디플레이션: 리워드 모델의 길이 편향으로 응답이 점점 짧아졌다. GDPO의 채널별 분리 정규화를 도입하고, binary 길이 보상 대신 목표 길이에서 벗어날수록 보상이 부드럽게 감소하는 연속 함수로 설계해 해결했다.
  • 최종 결과: GRPO 모델이 DPO 대비 이용시간·리텐션 유의미 개선, 반복 표현·띄어쓰기 이상 등 가드레일 지표 안정화, 평균 응답 길이 목표 범위 유지.
  • 향후 방향: 세션 전체(다중 턴) 흐름을 보상으로 활용하는 세션 수준 온라인 학습으로 확장 연구 중.
왜 읽나GRPO/RLHF를 프로덕션 LLM 서비스에 적용하려는 ML 엔지니어에게 비동기 인프라 설계, 수식 보정, reward hacking 해결까지 end-to-end 구현 노하우를 담은 드문 사례다.
스캐터랩
스캐터랩 (이루다) 블로그
원문은 여기서 이어서 읽을 수 있어요
원문 읽기
읽음 (0)

이 글과 비슷한

  1. AI / ML·인프랩 (인프런)인프런 (인프랩)·

    학습 에이전트 — AI 두뇌 구축하기

    인프런이 강의 학습 에이전트를 구축하며 겪은 기술 스택 선정, 컨텍스트·도구 설계, LLM-as-a-Judge 품질 개선, 비용 최적화 전략을 다룬다. LLM SSE 스트리밍 처리를 위해 Spring MVC + Virtual Thread + Spring AI를 선택하고, 명시적 프롬프트 캐싱으로 입력 토큰을 90% 절감하는 과정까지 실전 경험이 담겨 있다.

    #ai-agent#llm#llm-as-a-judge+2
  2. AI / ML·네이버 D2네이버 D2·

    AI 에이전트 회사 차리기: 설립부터 어디서든 동기화까지

    네이버 ENGINEERING DAY 2026 발표. Claude Code를 매일 쓰지만 매번 초기화되는 문제를 해결하기 위해 NaverMadCat이라는 다중 AI 에이전트 조직 프레임워크를 구축한 경험을 다룬다. 비서실장 역할의 에이전트가 10개 부서 에이전트를 조율하며, 어느 환경에서 접속해도 동일한 컨텍스트로 동작하도록 동기화 메커니즘을 구현했다.

    #claude-code#multi-agent#ai-agent+2
  3. AI / ML·vercel-blogVercel Blog·

    AI Gateway에서 실시간 음성 에이전트 구축하기

    Vercel AI Gateway가 음성·오디오 기능을 정식 지원한다. 실시간 대화 음성(Realtime Voice), 텍스트→음성(TTS), 음성→텍스트(STT) 세 가지를 기존 텍스트/이미지 모델과 동일한 라우팅·인증·모니터링 체계 위에서 사용할 수 있다. OpenAI gpt-realtime-2·Whisper와 xAI Grok 오디오 모델을 지원하며, AI SDK 7 베타로 제공된다.

    #llm-app#ai-sdk#realtime-voice+2