출처

개요

개요

하드웨어 인식 동적 추측 디코딩(DSD)은 추측 디코딩의 초안 토큰 수 K를 고정하지 않고 배치 크기와 모델·하드웨어 상태에 따라 동적으로 조절하는 방법이다. 작은 배치에서는 메모리 대역폭 병목으로 남는 연산 자원을 활용하기 위해 K를 늘리고, 큰 배치에서는 연산 병목으로 추가 검증 비용이 커지므로 K를 줄인다. Cohere는 goodput = 수용 길이(AL) / 토큰 간 지연(ITL) 지표와 오프라인 프로파일링·룩업 테이블을 사용해 적절한 K를 선택했다. vLLM에 DSD를 통합하는 과정에서는 비동기 스케줄링과 Full CUDA Graph가 기존에 가정하던 고정 토큰 수 구조를 수정해야 했다.

핵심 포인트

  • 추측 디코딩은 작은 초안 모델이 여러 토큰을 제안하고, 큰 타겟 모델이 이를 한 번에 검증해 순차적 디코딩의 지연을 줄인다.
  • 작은 배치에서는 메모리 대역폭이 병목이어서 GPU 연산 자원이 남을 수 있으므로 추측 디코딩이 유리하다. 반대로 큰 배치에서는 연산 병목이 강해져 고정된 K의 추가 검증 비용이 성능 저하로 이어질 수 있다.
  • 밀집(Dense) 모델은 배치 크기가 커질수록 최적 K가 대체로 단조 감소한다. 실험한 Command A에서는 동시성 16까지 K=3, 32에서 K=2, 128부터 K=1을 선택했다.
  • MoE 모델은 전문가 로딩 상태의 영향 때문에 최적 K가 비단조적으로 변할 수 있다. Command A+에서는 중간 동시성 구간에서 K=5까지 증가한 뒤 높은 배치 크기에서 다시 감소했다.
  • Cohere의 Command A 실험에서 DSD는 배치 크기 128과 256에서 고정 K=3 추측 디코딩보다 약 23% 빨랐고, 각각 바닐라 디코딩보다 7.5%, 1.82% 빠른 결과를 보였다.
  • Command A+에서는 DSD가 대부분의 구간에서 K=3을 선택해 고정 K 방식과 비슷한 성능을 냈다. 중간 배치에서 K=5를 선택했지만, 사용한 EAGLE 헤드의 수용률 한계로 추가 가속으로 이어지지는 않았다.
  • vLLM 통합에서는 매 타임스텝의 num_draft와 num_verify가 달라질 수 있도록 비동기 스케줄러와 모델 러너의 장부 관리를 조정하고, Full CUDA Graph가 여러 K 조합을 캡처하도록 확장했다.

왜 중요한가

  • 실제 서비스에서는 배치 크기가 트래픽에 따라 변하므로, 고정된 K보다 하드웨어 병목 상태에 맞춰 동작하는 방식이 실용적이다.
  • DSD는 추측 디코딩이 유리한 구간에서는 가속을 활용하고, 불리한 높은 배치 구간에서는 바닐라 디코딩 수준으로 성능이 후퇴하도록 만들어 고정 K 방식의 성능 퇴보를 완화한다.
  • 강화학습 롤아웃처럼 롱테일 생성과 높은 추론 비용이 발생하는 환경에서도, 워크로드별 배치 크기 분포를 고려한 추론 최적화 수단으로 활용될 가능성이 있다.
  • 다만 MoE에서의 효과는 모델 구조와 초안 헤드의 수용률에 영향을 받으므로, DSD의 이득을 일반화하기보다 각 모델·하드웨어·워크로드에서 별도 프로파일링해야 한다.

후속 링크 및 키워드

원문 보존 위치

원문 전체는 raw source: web-2026-07-12-pytorchkr-topic-11200-dsd-feat-coheresource_url 및 HTML 원문과 함께 저장되어 있습니다.