Speculative Speculative Decoding

이 논문은 검증 과정 중 드래프트 모델이 검증 결과를 미리 예측하여 준비함으로써 기존 스펙큘레이티브 디코딩의 순차적 병목 현상을 해결하고, 이를 통해 오픈소스 추론 엔진 대비 최대 5 배, 최적화된 스펙큘레이티브 디코딩 대비 최대 2 배의 추론 속도를 달성하는 '사구아로 (Saguaro)' 알고리즘을 제안합니다.

Tanishq Kumar, Tri Dao, Avner May

게시일 2026-03-04
📖 4 분 읽기☕ 가벼운 읽기

Each language version is independently generated for its own context, not a direct translation.

🍽️ 배경: 왜 AI 는 느릴까요? (기존 방식의 문제)

지금까지 AI 가 글을 쓸 때는 **'한 번에 한 단어씩'**만 썼습니다.

  • 주 요리사 (Target Model): 아주 똑똑하지만 느립니다. "다음 단어는 뭐가 좋을까?"라고 고민해서 한 단어를 내면, 그걸 확인하고 다시 다음 단어를 고민합니다.
  • 문제: 요리사가 다음 단어를 고르는 동안, 모든 주방이 멈춰서 기다려야 합니다. (순차적 작업의 병목 현상)

🚀 기존 해결책: '추측적 디코딩 (Speculative Decoding)'

이 문제를 해결하기 위해 **'도우미 요리사 (Draft Model)'**를 고용했습니다. 도우미는 느린 주 요리사보다 훨씬 빠릅니다.

  1. 도우미: "다음 단어는 아마 '사과'일 거야! 아니, '바나나'일지도!" 하고 3~4 개를 미리 추측해서 준비합니다.
  2. 주 요리사: 도우미가 준비한 단어들을 한 번에 확인합니다. "오, '사과'와 '바나나'는 맞네. 근데 그다음은 '오렌지'가 더 맞겠다."
  3. 결과: 도우미가 맞춘 단어들은 바로 출력하고, 틀린 건 버립니다.

하지만 여기서도 문제가 생깁니다.
도우미가 다음 단어를 추측하려면, 주 요리사가 지금 단어를 확인하고 끝날 때까지 기다려야 합니다. 도우미는 "주 요리사가 확인 끝날 때까지 나는 쉬어야 해"라고 합니다. 즉, 도우미가 일을 할 때 주 요리사가 일하고, 주 요리사가 일할 때 도우미가 기다리는 비동기 (동시 작업) 가 안 되는 것입니다.


🌵 새로운 해결책: '사구아로 (SSD)'의 등장

이 논문은 **"도우미가 기다리는 시간을 아예 없애자!"**고 제안합니다. 바로 **SSD(Speculative Speculative Decoding)**입니다.

🌵 사구아로 (선인장) 의 비유

사구아로 선인장은 가시마다 다른 열매를 맺을 수 있습니다. 이 아이디어를 적용했습니다.

  1. 주 요리사가 확인하는 동안, 도우미는 '모든 가능성'을 미리 준비합니다.

    • 주 요리사가 "사과"를 맞췄을 때, 도우미는 "그럼 그다음은 '바나나'일 거야"라고 미리 준비해 둡니다.
    • 주 요리사가 "바나나"를 맞췀을 때, 도우미는 "그럼 그다음은 '오렌지'일 거야"라고 미리 준비해 둡니다.
    • 핵심: 도우미는 주 요리사가 어떤 단어를 맞출지 모든 경우의 수를 미리 계산해 준비해 둡니다.
  2. 결과가 나오면 즉시 전달!

    • 주 요리사가 확인을 끝내고 "자, 이번엔 '사과'가 맞았어!"라고 말하면, 도우미는 **"아! 내가 미리 준비해 둔 '바나나'가 있네!"**라고 바로 건네줍니다.
    • 도우미가 다시 계산할 필요가 없습니다. 0 초에 결과를 냅니다.
  3. 만약 예상과 다르다면?

    • 주 요리사가 "아니, 이번엔 '포도'였어!"라고 하면, 도우미가 준비한 '바나나'나 '오렌지'는 쓸모가 없습니다.
    • 이때는 도우미가 당황하지 않고, **즉시 (Just-in-time)**로 '포도' 다음 단어를 계산해서 보내면 됩니다. (이걸 '패백 (Fallback)'이라고 합니다.)

🎯 사구아로 (Saguaro) 알고리즘의 3 가지 핵심 전략

이론만 좋으면 안 되고, 실제로 잘 작동하게 하려면 3 가지 문제를 해결해야 했습니다.

  1. 어떤 경우를 미리 준비할까? (캐시 최적화)

    • 모든 경우를 다 준비할 수는 없습니다 (메모리 부족).
    • 해결: 통계적으로 "가장 자주 나오는 경우"에 집중해서 미리 준비합니다. 마치 식당에서 "손님이 가장 많이 시키는 메뉴"를 미리 준비해 두는 것과 같습니다. (기하급수적 분포 활용)
  2. 도우미의 추측을 어떻게 믿을 수 있을까? (샘플링 전략)

    • 도우미가 "바나나"라고 미리 준비했는데, 주 요리사가 "바나나"를 고를 확률이 낮으면 소용없습니다.
    • 해결: 도우미가 추측할 때, 주 요리사가 좋아할 만한 단어의 확률을 살짝 조작해서, 주 요리사가 그 단어를 고를 확률을 높입니다. (도우미가 주 요리사의 취향을 미리 맞춰주는 것)
  3. 예상과 달랐을 때 어떻게 할까? (백업 전략)

    • 손님이 많을 때 (배치 크기 증가) 는 예상과 다른 경우가 더 자주 발생합니다.
    • 해결: 손님이 적을 때는 똑똑한 도우미가 미리 준비하고, 손님이 너무 많으면 아주 빠르지만 똑똑하지 않은 도우미가 즉석에서 계산하게 합니다. 상황에 따라 도우미를 바꿔 쓰는 것입니다.

🏆 결과: 얼마나 빨라졌나요?

이 기술을 적용한 **사구아로 (Saguaro)**는 기존 방식보다 놀라운 속도를 보여줍니다.

  • 기존 AI (한 번에 한 단어): 100 점
  • 기존 도우미 방식 (추측적 디코딩): 200 점 (약 2 배 빠름)
  • 새로운 사구아로 방식 (SSD): 500 점 (약 5 배 빠름!)

특히, 여러 사람이 동시에 요청을 보낼 때 (대용량 배치) 도 더 강력하게 작동하며, 하드웨어 효율도 좋아졌습니다.

💡 요약

이 논문은 **"AI 가 글을 쓸 때, 다음 단어를 고민하는 시간을 아예 없애버리자"**는 아이디어를 제시합니다.
주 요리사가 확인하는 동안, 도우미가 "만약 A 라면 B 를, 만약 C 라면 D 를" 미리 다 준비해 두었다가, 정답이 나오면 즉시 건네주는 방식입니다. 마치 사구아로 선인장처럼 다양한 가지 (경우의 수) 를 미리 키워두었다가, 필요한 열매를 바로 따서 주는 것입니다.

이로 인해 AI 는 훨씬 더 빠르고 자연스럽게 대화를 이어갈 수 있게 되었습니다.

이런 논문을 받은편지함으로 받아보세요

관심사에 맞는 일간 또는 주간 다이제스트. Gist 또는 기술 요약을 당신의 언어로.

Digest 사용해 보기 →