AI Sparkup

최신 AI 쉽게 깊게 따라잡기⚡

DFlash – 블록 확산으로 LLM 추론 속도를 최대 6배 높이는 투기적 디코딩 기법

DFlash는 경량 블록 확산(block diffusion) 모델을 드래프터(drafter)로 활용해 LLM 추론 속도를 최대 6배 가속하는 투기적 디코딩(speculative decoding) 프레임워크다. 기존 최신 기법인 EAGLE-3의 2–3× 속도를 크게 뛰어넘으며, Qwen3-8B 기준 벤치마크에서 EAGLE-3 대비 2.5배 이상 높은 가속비를 달성한다. Z Lab이 개발했으며 arXiv 프리프린트로 공개되어 있다(GitHub ★2.2k).

배경: 투기적 디코딩의 한계

LLM 추론은 본질적으로 순차적(sequential)이다. 토큰을 하나 생성해야 다음 토큰을 생성할 수 있기 때문에 병렬 처리의 이점을 온전히 살리기 어렵다.

투기적 디코딩은 이 병목을 해소하기 위해 고안된 기법이다. 소형 드래프트 모델이 여러 토큰을 먼저 제안하고, 대형 타깃 LLM이 이를 한 번에 병렬로 검증한다. 출력 품질은 보장되면서 처리 속도가 빨라진다.

그러나 EAGLE-3 같은 현재 최신 기법조차 드래프트 모델이 여전히 자기회귀(autoregressive) 방식으로 토큰을 순차 생성한다. 드래프팅 자체가 순차적이라 실용적인 가속 상한선이 2–3×에 머문다.

DFlash의 핵심 아이디어

블록 확산으로 병렬 드래프팅

DFlash는 드래프트 모델에 확산(diffusion) 방식을 도입해 이 병목을 우회한다. 자기회귀 방식과 달리 확산 드래프터는 단일 병렬 포워드 패스로 전체 토큰 블록을 한꺼번에 생성한다. 드래프팅 비용이 생성 토큰 수와 무관하게 사실상 일정해지므로, 더 깊고 표현력 높은 드래프트 모델을 쓸 수 있다.

예를 들어 16개 토큰을 생성하는 다층(multi-layer) DFlash 드래프터의 지연 시간(latency)이 8개 토큰을 생성하는 1층 EAGLE-3보다 오히려 낮다.

타깃 모델 피처 컨디셔닝

소형 드래프트 모델 혼자서는 미래 토큰을 정확히 예측하기 어렵다. DFlash는 이를 해결하기 위해 타깃 LLM의 히든 피처(hidden features)를 드래프트 모델에 주입한다.

  1. 피처 퓨전: 타깃 모델의 여러 레이어에서 히든 피처를 추출해 경량 프로젝션으로 합성
  2. KV 주입: 합성된 피처를 드래프트 모델 모든 레이어의 KV 캐시에 직접 주입
  3. 병렬 드래프팅: 이 풍부한 컨텍스트를 바탕으로 블록 확산이 다음 토큰 블록을 한 번에 예측

EAGLE-3는 타깃 피처를 첫 번째 레이어에만 전달해 깊어질수록 신호가 희석된다. DFlash는 모든 레이어에 주입하므로 깊이가 늘수록 수용 길이(acceptance length)도 함께 증가한다.

드래프트 모델은 타깃 모델의 임베딩·LM 헤드를 재사용하며, 소수의 중간 레이어만 추가로 학습한다.

성능 비교

Qwen3-8B 기준, 그리디 디코딩(temperature=0) 환경에서 주요 벤치마크 결과:

벤치마크Qwen3-8B (기본)EAGLE-3DFlash
GSM8K~2.8×5.9×
MATH-500~3.7×6.2×
AIME24~3.4×6.1×
HumanEval~5.2×5.8×

샘플링(temperature=1)과 사고 모드(thinking mode)에서도 약 4.5× 가속을 유지한다. Qwen3-4B, Qwen3-Coder-30B-A3B, LLaMA-3.1-8B에서도 유사한 결과가 보고됐다.

사용법

DFlash는 SGLang(프로덕션 서빙)과 Transformers(빠른 탐색) 두 경로를 지원한다.

SGLang 서버 실행 예시:

python -m sglang.launch_server \
    --model-path Qwen/Qwen3-Coder-30B-A3B-Instruct \
    --speculative-algorithm DFLASH \
    --speculative-draft-model-path z-lab/Qwen3-Coder-30B-A3B-DFlash \
    --tp-size 1 \
    --dtype bfloat16 \
    --attention-backend fa3

Transformers를 이용한 탐색:

from transformers import AutoModel, AutoModelForCausalLM, AutoTokenizer

model = AutoModel.from_pretrained("z-lab/Qwen3-8B-DFlash-b16", trust_remote_code=True, dtype="auto", device_map="cuda:0").eval()
target = AutoModelForCausalLM.from_pretrained("Qwen/Qwen3-8B", dtype="auto", device_map="cuda:0").eval()
tokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen3-8B")

generate_ids = model.spec_generate(
    input_ids=model_inputs["input_ids"],
    max_new_tokens=2048,
    temperature=0.0,
    target=target,
)

사전 훈련된 드래프트 모델은 HuggingFace z-lab 컬렉션에서 내려받을 수 있다.

누가 쓰면 좋은가

  • LLM 서빙 엔지니어: 출력 품질을 보장하면서 추론 처리량을 극대화하려는 경우
  • 비용 최적화 팀: 같은 GPU로 더 많은 요청을 처리해 단위 비용을 낮추려는 경우
  • 추론 연구자: 확산 기반 드래프팅의 최신 동향을 파악하고 실험하려는 경우

라이선스

오픈소스로 공개 (저장소에서 라이선스 확인 가능).

관련 문서

  • i-dlm — 확산 언어 모델로 AR 수준 품질 + 최대 4.1배 처리량 달성
  • inference-caching — KV 캐시·프리픽스 캐싱 등 추론 비용 절감 전략
  • qwen — DFlash 벤치마크에 사용된 Qwen3 모델 시리즈


AI Sparkup 구독하기

최신 게시물 요약과 더 심층적인 정보를 이메일로 받아 보세요! (무료)