SpecOPD가 순차 롤아웃 없이 병렬 온폴리시 증류로 추측 디코딩을 가속한다
SpecOPD: Branch-Parallel On-Policy Distillation for Speculative Decoding
무엇인가
이 논문은 추측 디코딩(speculative decoding)의 실제 속도가 드래프터의 수락 길이(acceptance length)에 묶이는 문제를 다룬다. 병렬 드래프터는 한 번의 포워드로 토큰 블록 전체를 제안해 제안 비용을 줄이지만, 목표 모델이 그 제안을 얼마나 길게 받아들이는지가 최종 가속을 좌우한다. 기존 SFT나 오프폴리시 증류는 고정된 목표 모델 응답에 맞춰져 수락 길이가 정체되고, 온폴리시 증류(OPD)는 드래프터가 샘플한 문맥을 감독해 이를 넘어설 수 있지만 기존 파이프라인은 드래프트와 검증을 순차로 반복하는 롤아웃으로 감독을 모아야 했다. 저자들은 이 순차 의존성이 온폴리시 감독의 본질이 아니라고 본다.
어떻게 동작하나
핵심 관찰은 드래프트 블록 하나를 감독하는 데 전체 검증 응답이 필요 없고, 참조 접두사와 그 블록 안에서 드래프터가 샘플한 이력만 있으면 된다는 것이다. SpecOPD는 참조 응답을 공유 줄기로 두고 그 위에 B개의 앵커를 무작위로 잡은 뒤, 각 앵커에서 현재 드래프터가 W개 토큰의 브랜치를 샘플한다. 앵커별 브랜치는 서로 독립적으로 샘플링되므로 전체 응답 롤아웃을 기다리지 않고 병렬로 수집할 수 있으며, 브랜치 내부의 인과 의존성은 유지된다. 이때 온폴리시는 고정된 참조 문맥에서 현재 드래프터가 새로 샘플한 연속 토큰을 뜻한다.
무엇과 다른가
수집한 브랜치는 제안 트리로 묶여 목표 모델 채점에서 접두사 계산을 공유한다. 참조 줄기는 한 번만 프리필하고, 각 브랜치 노드는 부모 맵과 의미상 위치를 따라 자기 참조 접두사와 자기 샘플 이력만 보도록 배치된다. 완전 어텐션(GQA)에서는 조상 노드와 자기 자신만 허용하는 트리 어텐션 마스크를 쓰고, 패킹 순서가 아니라 의미상 위치로 로터리 위치를 준다. 희소 어텐션(QSA)에서는 앵커 이전의 완료된 인덱서 그룹은 공유하고, 앵커 이후 그룹은 브랜치별로 다시 만들어 브랜치 간 블록 선택이 섞이지 않게 한다. 선형 어텐션(GDN)에서는 마스크만으로 과거 순환 상태를 복원할 수 없으므로 참조 줄기의 체크포인트에서 앵커 상태를 재생하고, 브랜치별 순환 경로를 인덱스로 묶어 병렬로 진행한다. 이렇게 해서 전체 접두사 재실행 없이 브랜치별 이력을 보존한 채 목표 분포를 병렬로 계산한다.
어떻게 쓰나
학습 목표는 수락 길이를 직접 겨냥하는 E2E-TV 대리 목적함수다. 각 위치에서 드래프터 분포 q와 목표 분포 p의 중첩은 1에서 총변동거리(TV)를 뺀 값으로 표현되고, 손실은 각 브랜치와 위치 j에 대해 앞쪽 위치들의 수락 확률을 곱한 접두사 생존 확률의 평균을 최대화하는 형태다. 초기 불일치가 뒤쪽 접두사 항 전체에 영향을 주도록 설계됐고, 업데이트마다 브랜치를 다시 샘플링하되 샘플 토큰과 목표 분포는 고정하고 드래프터 확률과 접두사 곱을 미분한다. 논문은 조건부 제안에서 이 곱이 서빙 수락률의 비편향 추정치는 아니라는 점을 명시한다.
전제와 한계
실험은 Qwen3-8B 완전 어텐션(GQA), Qwen3.8-27B 완전-선형(GQA-GDN), Qwen3.8-Flash-Next-125B 희소-선형(QSA-GDN) 목표 모델과 DFlash, DSpark, DFlash V2 드래프터, 대화·코딩·수학·에이전트 작업을 아우른다. 훈련은 Open-PerfectBlend 참조로 진행하고, 평가는 MT-Bench, HumanEval, MATH-500, 기록된 SWE와 Terminal 상호작용 이력에서 T=0 그리디와 T=1 샘플링, 드래프트 토큰 7개로 수행한다. 수락 길이는 검증 라운드당 완성 토큰(보너스 토큰 포함)으로 세고 요청별 평균을 벤치마크에 동일 가중하며, 서빙 평가는 SGLang에서 이뤄진다. 서빙 비교에는 AR, MTP, DSpark, 원래 DFlash V2가 포함된다. 다섯 벤치마크 평균 수락 길이는 최대 41.45% 개선됐고, 8B DFlash는 Terminal에서 81.51% 개선을 보였다. 하이브리드 목표에서는 27B가 3.48%, 125B가 5.01% 개선에 그쳤고, 27B 에이전트 결과는 거의 변화가 없으며 T=1의 Terminal은 소폭 하락했다.
서빙 효율은 27B에서 자기회귀 디코딩 대비 최대 3.56배 속도를 기록했고, 다섯 워크로드 기하평균으로 동시성 1, 8, 32에서 각각 2.97배, 2.23배, 1.35배였다. 원래 DFlash V2 드래프터보다 기하평균 처리량이 최대 2.83% 높았지만 워크로드와 동시성에 따라 편차가 있고, 동시성 32의 SWE에서는 원래 드래프터보다 느렸다. 훈련 효율은 27B 목표와 고성능 GPU 8대의 네이티브 설정에서 순차 롤아웃 OPD인 Draft-OPD 대비 감독 토큰 처리량 16.09배를 보고하며, 이는 업데이트 처리량 4.95배와 업데이트당 감독 토큰 3.25배가 결합된 결과다. 같은 구간에서 GPU 활동률은 26.37%에서 77.23%로 올랐다. 오프폴리시 E2E-TV 대비 평균 수락 길이는 최대 15.71%, 오프폴리시 CE 대비 6.96% 높았고, 일곱 드래프트 위치 모두에서 접두사 생존율이 개선되어 7번 위치는 4.33%포인트 상승한 반면 오프폴리시 CE는 2.57%포인트 하락했다.
개발자 관점에서 SpecOPD는 병렬 드래프터를 이미 쓰지만 수락 길이가 정체된 서빙 파이프라인, 특히 롤아웃 수집이 학습 시간과 GPU 활용률을 갉아먹는 팀에 의미가 있다. 다만 목표 모델의 어텐션 유형(GQA, QSA, GDN 및 하이브리드)에 맞는 트리 마스크·인덱서 그룹·상태 재생 구현이 필요하고, 수락 길이와 실제 서빙 처리량을 동시성별로 확인해야 한다. 논문이 밝힌 한계도 분명하다. 온폴리시성은 각 브랜치 내부와 고정 참조 접두사에 한정되어 무제한 전체 응답 롤아웃과 다르고, E2E-TV 목적함수는 조건부 제안에서 편향된 대리값이며, 125B 드래프터는 에이전트 데이터 없이 사전학습되어 해당 영역 적응이 제한될 수 있다. 또한 27B 에이전트 작업의 정체와 높은 동시성에서의 SWE 역전, 네이티브 설정 훈련 효율 측정이 오프라인 참조 준비를 제외한다는 점, 비교 실험들이 서로 다른 연산 할당과 그래디언트 경로를 쓴 점은 실무 적용 전 확인할 전제다.