Orthrus: 모델의 출력을 변경하지 않는 병렬 토큰 생성 기술
요약
Orthrus는 모델의 출력 분포를 유지하면서 토큰을 병렬로 생성하는 새로운 연구 방향을 제시합니다. 기존 추측적 디코딩의 오버헤드 없이 확산 어텐션 모듈을 통해 단일 순전파로 최대 32개의 토큰을 생성할 수 있습니다.
핵심 포인트
- 베이스 모델의 출력 분포를 수학적으로 동일하게 보존
- 확산 어텐션 모듈을 통한 병렬 토큰 생성 방식
- 별도의 초안 모델 없이 단일 모델 내에서 속도 향상 구현
- 기존 KV 캐시를 직접 재사용하여 메모리 효율성 증대
추측적 디코딩 (Speculative decoding)은 여러 개의 토큰을 미리 예측하고 이를 베이스 모델 (base model)로 검증함으로써 LLM 추론 지연 시간 (inference latency)을 단축합니다. 이 방식은 효과적이지만, 별도의 초안 모델 (draft model), 두 번째 KV 캐시 (KV cache), 그리고 초안 모델이 분포를 잘못 읽을 때 떨어지는 수락률 (acceptance rates)이라는 비용을 지불해야 합니다. Orthrus는 이러한 오버헤드 없이 동일한 속도 향상을 목표로 하는 연구 방향입니다. 이는 고정된 자기회귀 트랜스포머 (autoregressive Transformer)의 각 레이어에 학습 가능한 확산 어텐션 모듈 (diffusion attention module)을 결합하여, 이를 통해 토큰 블록을 병렬로 방출합니다.
개발자의 눈길을 끌 만한 주장은 다음과 같습니다: 베이스 모델의 출력 분포가 수학적으로 동일하게 유지되면서, 단 한 번의 순전파 (forward pass)당 32개의 토큰을 생성한다는 것입니다. 만약 이 수학적 원리가 실제로 작동한다면, 추측적 디코딩의 특징인 "초안 모델이 타겟과 일치하는가"에 대한 고민 없이 병렬 생성을 얻을 수 있습니다.
이것은 아직 초기 연구 단계이며, pip install로 설치할 수 있는 단계는 아닙니다. 그럼에도 불구하고 이 아키텍처는 이해할 가치가 있는데, 왜냐하면 이는 셀프 호스팅 추론 (self-hosted inference)을 위한 다른 설계 공간을 제시하기 때문입니다. 즉, 속도 향상이 옆에서 실행되는 별도의 초안 모델이 아니라 모델 내부에서 발생하는 방식입니다.
Orthrus가 토큰을 병렬로 생성하는 방법
베이스 트랜스포머 (Transformer)는 고정된 상태를 유지합니다. Orthrus는 각 레이어에 플레이스홀더 위치 (placeholder positions) 세트에서 작동하는 확산 어텐션 모듈 (diffusion attention module)을 삽입합니다. 공개된 설정에 따르면 이 위치는 32개의 미래 토큰 블록입니다. 추론 과정에서 확산 모듈은 기존 레이어 활성화 값 (layer activations)을 공유하는 적은 수의 디노이징 단계 (denoising steps)를 통해 해당 플레이스홀더들을 구체적인 토큰으로 반복적으로 정제합니다.
"출력 분포를 정확하게 보존한다"는 주장은 이례적인 부분입니다. 추측적 디코딩 (Speculative decoding)은 거부 샘플링 (rejection sampling)을 통해 분포 보존을 달성합니다. 즉, 초안 작성 모델 (drafter)이 제안하면 타겟 모델이 검증하고, 불일치가 발생하면 롤백(rollback)하는 방식입니다. Orthrus는 다른 메커니즘을 통해 동일한 보증을 달성합니다. 디퓨전 모듈 (diffusion module)은 동결된 모델 (frozen model)의 은닉 상태 (hidden states)를 조건으로 하며 이를 수렴 신호 (convergence signal)로 사용하므로, 수락된 출력은 동일한 온도 (temperature)에서 토큰을 하나씩 샘플링했을 때 자기회귀 (AR) 모델이 생성했을 결과와 동일합니다. 비용의 측면이 "때때로 초안이 틀려 더 적은 토큰을 수락하게 되는 것"에서 "때때로 디노이징 (denoising)이 수렴하기 위해 더 많은 단계가 필요한 것"으로 이동합니다.
공유 KV 캐시 (KV cache)는 이 기술을 자체 호스팅 배포 (self-hosted deploys)에 매력적으로 만드는 요소입니다. Medusa나 Eagle과 같은 추측적 디코딩 구현체들은 일반적으로 별도의 초안 작성 모델용 캐시를 요구하거나, 메인 캐시에 초안 작성 모델 전용 항목을 확장해야 합니다. Orthrus는 동결된 모델의 KV 캐시를 직접 재사용하므로, 메모리 점유율 (memory footprint)을 '모델+초안 모델' 쌍보다 단일 모델에 더 가깝게 유지할 수 있습니다.
Orthrus는 연구 자료에 기술되어 있으며, 프로덕션 라이브러리로 출시된 상태가 아닙니다. 아래의 특성들은 독립적인 벤치마크가 아닌, 아키텍처 설계 및 보고된 설정에서 기인한 것입니다. 이를 인프라 구축의 근거로 삼기 전에, 귀하의 워크로드에서 직접 검증해야 할 가설로 취급하십시오.
추측적 디코딩 (Speculative decoding)과의 비교
추측적 디코딩은 이미 한동안 프로덕션 환경에서 사용되어 왔습니다. vLLM, TensorRT-LLM, llama.cpp 모두 다양한 형태의 추측적 디코딩을 지원합니다. 작동 방식은 다음과 같습니다. 작은 초안 모델 (때로는 튜닝된 Medusa head, 때로는 별도의 1B급 모델)을 로드하면, 초안 모델이 K개의 토큰을 제안하고, 타겟 모델이 단 한 번의 순전파 (forward pass)를 수행하여 K개 전체를 한꺼번에 검증하며, 런타임은 가장 길게 일치하는 접두사 (prefix)를 수락합니다.
Orthrus가 변경하는 요소들은 다음과 같습니다:
- Drafter 비용 (Drafter cost). 별도의 모델을 로드, 학습 또는 유지 관리할 필요가 없습니다. 확산 모듈 (diffusion modules)은 기본 모델 (base model)의 레이어 일부로 포함되어 제공됩니다.
- KV 메모리 (KV memory). 기본 모델과 공유되며, 사이드카 형태의 Drafter에 의해 두 배로 늘어나지 않습니다.
- 수락 동작 (Acceptance behavior). 출력값은 거부 샘플링 (rejection sampling)을 통한 확률적 동일성이 아니라, 구조적으로 기본 AR 샘플과 분포적으로 동일 (distributionally identical)합니다.
- 학습 비용 (Training cost). 확산 어텐션 모듈 (diffusion attention modules)은 기본 모델당 한 번 학습해야 합니다. 비용이 전혀 들지 않는 것은 아니지만, 해당 체크포인트의 모든 배포 과정에 걸쳐 분할 상환 (amortized)됩니다.
잘 알려진 기본 모델에 대한 구현이 발표되고 표준 하드웨어에서 재현 가능한 벤치마크가 나오기 전까지는, Eagle-2 또는 Medusa-2 대비 실제 실행 시간 (wall-clock) 속도 향상을 수치로 단정하기 어렵습니다. 구조적 논거는 강력하지만, 실증적인 비교는 아직 남아 있습니다.
직접 호스팅할 경우의 의미
개발자 도구 뒤에서 로컬 LLM을 실행하는 경우, 중요한 지연 시간 (latency)은 디코딩 (decode) 측면에서의 첫 번째 토큰 생성 시간 (time-to-first-token)과 초당 토큰 수 (tokens-per-second)입니다. 투기적 디코딩 (Speculative decoding)은 주로 디코딩 측면을 공략합니다. Orthrus는 다른 비용 프로필 (cost profile)을 통해 동일한 지표를 목표로 합니다.
계속해서 주시해야 할 몇 가지 실질적인 질문들은 다음과 같습니다:
- 양자화 (Quantization). 대부분의 자체 호스팅 (self-hosted) 설정은 4비트 또는 8비트 가중치를 사용합니다. 훈련된 확산 모듈 (diffusion modules)이 공격적인 양자화 (quantization)를 견뎌낼 수 있을지는 미지수입니다. fp16에서 훈련된 모듈이 GPTQ 또는 AWQ를 통해 항상 깔끔하게 다시 돌아오지는(round-trip) 않기 때문입니다.
- 배치 크기 (Batch size) 상호작용. 추측적 디코딩 (Speculative decoding)의 속도 향상은 배치 크기가 커질수록 줄어듭니다. 검증 단계 (verifier pass)가 이미 연산 자원을 포화시키고 있기 때문입니다. Orthrus의 병렬 블록 생성은 디노이징 단계 (denoising steps)가 스케줄링되는 방식에 따라 배치 (batching)와 다르게 상호작용하며, 현재 발표된 자료에는 멀티 배치 (multi-batch) 비교 결과가 아직 없습니다.
- 긴 문맥 디코딩 (Long-context decoding). 32개 토큰 블록은 짧은 응답의 경우 쉬운 사례입니다. 수천 개의 토큰이 출력되는 경우에는 100개 이상의 블록이 연속적으로 필요하며, 이러한 영역에서는 피크 병렬성 (peak parallelism)보다 블록당 수렴 비용 (per-block convergence cost)이 더 중요합니다.
만약 로컬 추론 서버 (local inference server)를 대상으로 실행되는 AI 코딩 도구를 사용하고 있다면, 이 계열의 기술들이 가져오는 실제 시간 (wall-clock) 개선 사항은 로컬 모델이 편집 지연 시간 (edit latency) 측면에서 클라우드 API와 경쟁할 수 있게 만드는 핵심 요소입니다.
주의 사항 및 누락된 부분
아키텍처에 관한 논의는 해결되지 않은 질문들을 명확하게 드러냅니다. 개발자가 기존 추론 런타임 (inference runtime)에 바로 적용할 수 있는 인기 있는 베이스 모델 (Llama, Qwen, Mistral) 기반의 공개된 체크포인트 (checkpoint)가 없습니다. 동일한 하드웨어와 프롬프트 분포에서 Eagle-2 또는 Medusa-2와 직접 비교한 벤치마크도 없습니다. 도구 사용 (tool-use) 또는 함수 호출 (function-calling) 출력에 대한 문서화된 동작 방식도 없는데, 이러한 프롬프트들은 다음 토큰 분포 (next-token distribution)가 구조적으로 제약되어 있어 추측적 디코딩이 가장 성능이 저하되는 경향이 있습니다.
이 중 어느 것도 연구 자체를 비판하는 것은 아닙니다. 이는 초기 아키텍처 단계에서 나타나는 일반적인 격차입니다. 다만, 향후 2분기 동안 자체 호스팅 LLM 인프라를 계획하고 있다면, 여전히 추측적 디코딩 (speculative decoding)이 기본값이라는 것을 의미합니다. Orthrus는 아직 확신을 가지고 베팅할 대상이 아니라, 계속해서 추적해야 할 대상입니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기