onPanda 토큰단위 교정으로 온폴리시 정렬데이터·에이전트궤적을 빠르게 주석한다.
onPanda: Efficient Annotation of On-Policy Alignment Data for LLMs and Agents via Token-Level Correction
무엇인가
LLM 정렬과 에이전트 학습에서 고품질 데이터 확보는 여전히 가장 큰 병목이다. 논문은 기존 파이프라인이 주석 비용, 온폴리시 충실도, 감독 신호의 세밀도라는 세 가지를 동시에 만족시키지 못한다고 지적한다. 사람이 응답을 처음부터 쓰거나 수동 후편집하는 방식은 비용이 크고 오프폴리시 데이터를 만들어내며, 선호 데이터는 상대적으로 저렴하지만 응답 수준의 거친 감독만 주고 모델이 이미 샘플링할 수 있는 후보에 갇혀 있어 모델이 좋은 응답을 생성하지 못하는 상황에서는 교정 신호를 거의 주지 못한다. 에이전트 궤적은 더 어렵다. 궤적은 여러 단계의 환경 상호작용에서 나오므로, 교정이 실제로 도구를 실행하고 진짜 피드백을 받은 뒤에야 생성이 이어질 수 있기 때문이다.
어떻게 동작하나
onPanda의 핵심 상호작용은 토큰 단위 교정이다. 주석자는 모델 응답을 읽다가 처음으로 부적절한 토큰을 찾고, 그 위치에서 모델의 후보 토큰(기본 top-k 20개)과 확률을 보고 적절한 대체 토큰을 클릭하거나, 후보에 정답 방향이 없으면 토큰을 더블클릭해 임의 텍스트를 직접 입력한다. 교정이 일어나면 시스템은 그 지점 이후를 모두 잘라내고, 교정된 접두사를 어시스턴트 메시지 접두사로 삼아 모델이 생성을 이어가게 한다. 교정 지점 이전의 토큰은 재생성되지 않고 그대로 유지된다. 주석자는 응답 전체를 다시 읽을 필요 없이 이 '찾기-교정-이어가기' 루프를 반복한다. 생성 요청은 logprobs와 함께 스트리밍되며, 시스템은 각 토큰의 샘플링 확률과 top-k 후보를 기록하고 토큰 아래에 확률을 색으로 표시한다. 토크나이저가 멀티바이트 문자나 이모지를 여러 토큰으로 쪼갤 수 있으므로 UI는 토큰 스트림을 문자소 경계 기준의 최소 읽기 단위인 청크로 묶는다. 상호작용은 청크 단위로 하지만 기록은 토큰 정밀도로 남긴다. 자유 입력으로 들어온 텍스트는 처음에 확률 정보가 없는데, prompt_logprobs 요청 한 번으로 응답 전체의 토큰별 확률과 후보를 다시 계산한다. 이 새로고침은 외부 텍스트나 모델 교체 상황에도 적용되어, onPanda는 모델 검사 도구로도 쓸 수 있다.
무엇과 다른가
주석 세션은 대화를 노드로 하는 주석 트리로 조직된다. 각 교정은 교정 전 대화를 부모로 하는 새 노드를 만들고, 모든 중간 버전이 자동 저장되므로 주석자가 버전 관리를 할 필요가 없다. 각 노드는 작업 유형, 타임스탬프, 교정 내용, 온폴리시 표시 여부, 샘플링 설정 스냅샷을 담은 작업 로그를 가진다. 동봉된 파이썬 라이브러리 onpanda는 .panda.json을 학습 데이터로 파싱하는데, is_good=Y인 노드는 SFT 샘플로 내보내고 같은 프롬프트 아래의 긍정-부정 노드 쌍은 응답 수준 선호 데이터로 묶는다. 이때 부정 응답은 보통 긍정 응답의 조상이라 교정 지점 이전 접두사를 공유하고 정확히 그 지점에서 갈라지므로, 어떤 토크나이저에서도 (부정 샘플, 거부된 토큰과 위치, 선택된 토큰) 삼중항을 계산할 수 있다. 추론 모델과 에이전트의 응답은 순수 텍스트가 아니라 reasoning, content, tool_calls를 담은 구조화 메시지라 직접 토큰 교정이 어려운데, onPanda는 응답 템플릿 메커니즘으로 구조화 메시지와 모델의 네이티브 토큰 스트림을 양방향 변환한다. 특수 토큰이 화면에 보이고 교정 가능하므로 추론 체인, 본문, 도구 호출 인자까지 토큰 교정이 균일하게 적용된다. 외부 환경과 도구는 MCP로 연결하고, harness_to_mcp 어댑터가 Claude Code, Codex, OpenClaw 같은 하네스를 MCP 서버로 감싼다. 도구 호출은 주석자 승인 후 실행하도록 설정할 수 있고, 거부된 궤적은 자동으로 부정 샘플로 보관된다. 이미지, 오디오, 비디오 메시지도 입력·표시·주석할 수 있다.
어떻게 쓰나
효율 실험은 주석자 3명이 이미지 설명 프롬프트 21개를 3개 그룹으로 나눠 라틴 방격 설계로 수행했다. 비교 대상은 수동 후편집(POTATO)과 선호 순위 매기기(Argilla)다. 초기 롤아웃은 Qwen3.5-35B-A3B(instruct 모드)로 temperature 0.7, top-p 0.8에서 생성했다. 결과는 중앙값 기준 onPanda 330초로 POTATO 681초보다 51.5% 짧고 Argilla 336초와 비슷했으며, 평균은 onPanda 515.6초로 POTATO 711.1초보다 27.5%, Argilla 684.5초보다 24.7% 낮았다. Argilla는 평균이 중앙값을 크게 웃돌았는데 어려운 프롬프트에서 긴 응답 네 개를 검토하는 긴 꼬리 때문이다. GPT-5.5가 양방향으로 평가한 쌍대 승률은 onPanda가 66.7%로 가장 높았고, 사람 평가자도 POTATO 대비 54.8%에서 onPanda를 선호했다. 온폴리시 충실도는 롤아웃 모델 기준 응답 혼란도로 측정했는데, 기준선 1.171에 대해 onPanda 1.181(+0.86%), Argilla 1.161(-0.83%)로 둘 다 1% 이내이자 재샘플링 잡음(프롬프트별 약 ±2.8%) 범위 안이었고, POTATO는 1.596(+36.31%)이었다. SFT 커버리지는 Argilla가 21개 중 11개(52%)에 그친 반면 편집 기반인 POTATO와 onPanda는 설계상 100%를 달성했다. 프롬프트당 선호 쌍은 onPanda 7.43개로 Argilla 6개, POTATO 0.95개보다 많았다. NASA-TLX 기반 주관적 작업부하는 onPanda 3.1, Argilla 5.4, POTATO 6.8이었다.
전제와 한계
실제 배포에서 onPanda는 비전 25,596건, 오디오 105,143건, 에이전트 1,257건의 주석 세션을 만들었고 약 38만 8천 건의 토큰 단위 교정을 자동으로 산출했다. 품질 기준을 통과한 응답 전체에서 토큰의 97.0%는 모델이 생성한 것이고, 2.1%는 후보에서 선택, 0.9%만 사람이 직접 입력한 것으로 나타나 사람 개입이 매우 드물게 일어난다. 함께 공개하는 Panda-CVL은 주로 중국어 비전-언어 데이터셋으로, .panda.json 형식의 주석 세션 7,491건(학습 6,839건, 테스트 652건)을 담고 있으며 보조 롤아웃은 32B dense VLM인 step-1o-turbo로 생성했다. 벤치마크는 사람의 토큰 교정을 세 하위 작업, 즉 응답이 SFT 품질 기준을 만족하는지 판정하고, 아니면 첫 부적절 토큰을 찾고, 그것을 후보 선택 또는 직접 편집으로 교정하는 것으로 분해한다. 모델은 find-and-replace 형식으로 교정을 출력해야 하며, 테스트 대화 652개를 2,126개 평가 인스턴스(좋음 652, 나쁨 1,474)로 확장해 Qwen3.6 토크나이저로 교정 삼중항을 비교하는 토크나이저 독립 평가를 한다. 지표는 Format, GoodAcc, Loc.-NG, Corr.-NG와 이들의 조화평균인 F1이며 ProcessBench를 따른다. 항상 is_good만 내거나 항상 교정만 시도하는 자명한 전략은 두 구성 지표 중 하나에서 0점이 되어 F1이 0이 된다.
개발자 관점에서 이 도구의 실무적 가치는 두 가지다. 첫째, SFT 데이터를 만들 때 응답 전체를 다시 쓰는 대신 모델 분포를 거의 유지하면서 소수의 오류 위치만 손볼 수 있고, 그 과정에서 위치가 정확한 토큰 수준 긍정-부정 쌍이 자동으로 쌓여 보상 모델, DPO, PRM 학습 데이터로 변환할 수 있다. 둘째, 에이전트 궤적을 실제 환경에서 주석하려는 경우 MCP와 하네스 어댑터를 통해 도구 호출을 승인·교정·거부하는 흐름을 그대로 쓸 수 있다. 도입 전에 확인할 것은 추론 API가 어시스턴트 메시지 접두사로부터의 생성 이어가기(예: vLLM의 continue_final_message)와 토큰별 top-k 후보 및 logprobs 반환을 지원하는지, 그리고 자유 편집 텍스트의 확률 재계산 기능을 쓰려면 prompt_logprobs 지원이 필요한지다. 배포 형태는 데이터베이스 없이 정적 호스팅으로 쓰는 경량 웹 앱과 기존 데이터 플랫폼에 컴포넌트로 삽입하는 방식 두 가지이며, 세션 산출물은 단일 .panda.json으로 직렬화된다.
저자들이 밝힌 전제와 한계도 분명하다. 효율 비교는 두 플랫폼의 인터페이스와 주석 패러다임이 모두 달라 완전한 워크플로 단위로 평가되었기 때문에, 관찰된 이득이 인터페이스 때문인지 패러다임 때문인지 아니면 둘의 조합 때문인지 분리하기 어렵다고 논문은 인정한다. 실험 규모도 주석자 3명, 프롬프트 21개로 작은 통제 연구다. 자유 입력 편집은 모델 자체 분포를 벗어나지만 모델이 스스로 샘플링할 수 없는 소수 위치에서만 발생하는 최소한의 분포 비용이라는 것이 저자들의 설명이다. 또한 onPanda는 범용 주석 도구이므로 산출 데이터의 성질은 사용자의 주석 가이드라인에 의존하며, 책임 있는 데이터 큐레이션 관행을 따를 것을 권고한다.