초록
대규모 언어 모델(LLM)은 다양한 과제에서 좋은 성능을 내지만 autoregressive 생성 방식 때문에 추론 지연이 크다. Speculative Decoding(SPD)은 더 작은 draft model이 만든 후보 token들을 병렬로 검증해 이 문제를 완화한다. 그러나 SPD의 엄격한 exact-match 검증은 의미상 아무 문제 없는 continuation까지 버린다. 기존의 학습 기반 SPD 기법들은 out-of-distribution(OOD) 과제에서 성능이 떨어지는 일도 잦다.
이에 우리는 Training-Free Loosely Speculative Decoding(FLy) 을 제안한다. FLy는 target model이 스스로 오류를 교정하려는 성질(self-corrective behavior)을 이용한다. draft와 target이 어긋난 자리가 의미상으로도 틀린 것인지 판단해 경직된 검증 기준을 느슨하게 만든다. FLy의 장치는 두 층으로 되어 있다. 하나는 지금 위치의 token이 여러 대안을 허용하는 자리인지 사실상 하나로 정해진 자리인지 가려내는 entropy-level gate이고 다른 하나는 진짜 오류와 표현만 다를 뿐 의미는 맞는 변형을 구분해 주는 token-level deferred window다. 지연을 더 줄이기 위해 target model뿐 아니라 drafter 자체까지 빠르게 만드는 multi-level acceleration 전략도 함께 설계했다.
학습이 필요 없는 설계 덕분에 FLy는 어떤 draft–target 조합에도 그대로 붙고 hyperparameter를 다시 맞추지 않아도 모델과 도메인을 넘나들며 일반화한다. 실험 결과 FLy는 target model 정확도의 99% 이상을 유지하면서 Llama-3.1-70B-Instruct에서 평균 2.81배, 405B 변형에서 5.07배의 speedup을 얻었다. 특히 out-of-domain 데이터셋에서도 효과가 그대로 살아남아 학습 기반 기법인 EAGLE-3보다 1.62배 빨랐다. 코드는 https://github.com/AMD-AGI/FLy 에 공개했다.
1. 서론
LLM(Vaswani et al., 2017)은 인상적인 능력을 보여 왔지만(Dubey et al., 2024; Anil et al., 2023; DeepSeek-AI et al., 2025) auto-regressive 추론 방식 때문에 지연이 상당하고 모델이 커질수록 그 부담이 더 두드러진다. Speculative decoding(SPD)(Stern et al., 2018)은 생성 품질을 해치지 않으면서 속도를 올리는 해법으로 떠올랐다. SPD에서는 가벼운 draft model이 후보 token 여러 개를 차례로 내놓고 더 큰 target model이 이를 병렬로 검증해 자기 예측과 일치하는 것만 받아들인다. 이 절차가 target model의 분포를 그대로 보존한다는 사실은 증명돼 있다. 그러면서도 처리량은 크게 오른다.
문제는 표준 SPD가 exact-match 규칙에 근본적으로 묶여 있다는 점이다. target은 draft token이 자기 생성 결과와 완전히 같을 때만 받아들인다. 이 경직된 요구 때문에 의미가 통하는 continuation, 심지어 의미가 정확히 맞는 것까지 무더기로 버려지고 그만큼 speedup의 상한도 낮아진다. 최근 연구(Bachmann et al., 2025)에 따르면 사람이 쓴 문장처럼 품질이 높은 draft조차 이 규칙 아래에서는 acceptance가 낮다. draft model이 계속 좋아지는 흐름을 생각하면 이런 식의 엄격한 기각은 갈수록 비효율적인 병목이 되고 더 유연한 검증 전략의 가치는 그만큼 커진다.
엄격한 검증 규칙을 완화하는 "loose" SPD 변형은 이미 제안되어 있다. 대표적인 예가 JudgeDecoding(Bachmann et al., 2025)으로, draft token이 문맥상 타당한지 판정하는 보조 classifier를 학습시킨다. 효과는 있지만 공들여 선별한 학습 데이터와 학습 과정이 필요해 annotation 비용이 크다. 지도 학습으로 만든 classifier는 여러 도메인이나 과제를 넘어가면 잘 작동하지 않는 경우도 많아 OOD 상황에서 방법 전체가 취약해진다.
이런 한계를 풀기 위해 우리는 Training-Free Loosely Speculative Decoding(FLy) 을 제안한다. FLy는 추가 학습 없이 의미상 맞는 draft를 받아들여 검증을 느슨하게 만든다. 핵심 통찰은 이렇다. LLM은 진짜로 잘못된 token을 조건으로 받으면 스스로 고치려 드는 self-corrective behavior를 보이지만 표현만 다를 뿐 의미는 맞는 대안 앞에서는 그런 행동을 보이지 않는다(Pan et al., 2023; Bachmann et al., 2025). FLy는 이 성질을 발판 삼아 target model 자신의 행동으로 해로운 불일치와 의미가 같은 continuation을 갈라낸다.
구체적으로 FLy는 불일치를 처리하는 두 층짜리 장치를 둔다. 첫 번째는 entropy-level gate다. target model의 token-level entropy를 보고 불일치가 난 자리를 ambiguous(타당한 대안이 여럿)한 자리와 deterministic(그럴듯한 token이 하나뿐)한 자리로 나눈다. entropy가 임계값 아래로 떨어지면 수치 계산처럼 사실상 답이 정해진 경우이므로 불일치를 곧바로 기각한다. 반대로 entropy가 임계값을 넘으면 FLy는 뒤이어 오는 몇 개 token에 걸친 token-level deferred window를 켠다. 이 window 안에서 해당 불일치는 잠정적으로 받아들여진다. window 안에서 또 다른 불일치가 나타나면 모델이 앞선 오류를 되돌리려 한다는 신호이므로 처음 token을 소급해 기각한다. 그렇지 않으면 의미상 유효한 continuation으로 보고 그대로 유지한다.
의미가 맞는 불일치까지 받아들이면 평균 accepted token 수(τ)가 눈에 띄게 올라간다. 그러면 drafter는 라운드마다 더 많은 token을 제안해야 하고 그 결과 drafter의 생성 비용이 흔히 쓰이는 SPD 기법들(Cai et al., 2024; Li et al., 2025b)에 견줘 무시할 수 없는 수준까지 커지면서 전체 speedup을 깎아먹는다. 이 문제를 덜려고 우리는 target model만이 아니라 drafter 자체도 가속하는 multi-level acceleration 방식을 제안한다. τ가 커져도 drafting 단계가 지배적 병목이 되지 않게 막아 주는 장치다.
FLy는 데이터 수집도 학습도 필요 없는 plug-and-play 기법이고 모델에도 구애받지 않는다. drafter 하나로 서로 다른 target을 가속할 수 있고 같은 target에 다른 drafter를 붙여도 재학습이 필요 없다. 학습 데이터에 기대지 않으니 분포 변화에도 강하다. 학습 데이터에 의존하는 방법은 OOD 테스트 데이터에서 일반화에 실패할 수 있다(그림 1 참조). 실험 결과 FLy는 70B급 모델에서 out-of-domain 데이터셋 평균 2.53배(EAGLE-3보다 1.62배 빠름), in-domain 데이터셋 평균 2.69배(EAGLE-2보다 1.05배 빠름)의 speedup을 달성했고 405B급 모델에서는 평균 5.07배를 기록했다. 모든 조건에서 70B·405B 모델의 target 정확도를 99% 이상 보존했다.
그림 1. out-of-domain(OOD) 데이터셋에서의 speedup. 학습 기반 기법인 EAGLE-3는 OOD 조건에서 성능이 크게 떨어진다. 우리 방법은 의미상 유효한 token을 더 많이 받아들여 데이터셋과 모델 전반에서 기존 기법들을 앞서며 SOTA 성능을 달성한다.
2. 방법
이 절에서는 먼저 2.1에서 Speculative Decoding(SPD)의 기초를 정리한다. 이어 2.2에서 표준 SPD의 경직된 exact match 검증 규칙을 학습 없이 완화하는 방법인 Training-Free Loosely Speculative Decoding(FLy) 을 제안한다(그림 2). 기존 장치들과 달리 FLy는 표현은 다르지만 의미는 맞는 token을 받아들일 수 있다. 그래서 정확도 손실을 최소로 억제하면서 평균 accepted token(τ)과 speedup 비율을 함께 끌어올린다. 알고리즘의 상세 절차는 부록 A에 실었다. 마지막으로 2.3에서 최종 speedup 비율을 더 밀어 올리는 multi-level acceleration을 다룬다.
그림 2. 제안 기법 FLy의 전체 구조. (1) draft token과 target token이 다를 때, 기존 SPD처럼 곧바로 기각하지 않는다. 대신 두 층짜리 장치로 그 불일치가 의미상 유효한지 판단하고 정말로 유효하지 않은 경우만 기각한다. (2) entropy gate는 target 예측이 결정적인 경우, 즉 h < θ인 자리를 기각하고 모호한 불일치는 판단을 미룬다. (3) 이어서 token-level deferral window(W = 6)가 발산이 계속되는지 지켜본다. (4) 최종 생성 결과를 보면 표준 SPD가 첫 불일치에서 기각했을 자리들을 FLy는 의미상 유효한 continuation으로 더 많이 받아들인다.
2.1 예비 지식
각 SPD 라운드 t에서 drafter 는 K개의 draft token 을 차례로 제안한다. target model 는 이 token들을 라운드 t−1에서 마지막으로 생성된 token(로 표기)과 함께 묶어 단 한 번의 forward pass로 병렬 검증하며 logits를 만든다.
여기서 는 vocabulary 집합, 는 그 크기다. 위치 K+1의 token은 bonus token이다. target model은 softmax로 logits를 정규화한 뒤 그 값이 가장 큰 token을 출력 token으로 고른다.
는 위치 에서 target model 가 vocabulary 위에 만든 정규화 예측 분포이고 는 그에 대응하는 의 출력 token이다. 그다음 draft model의 위치 i 예측이 target model의 예측과 일치하는지 판정하는 match indicator 를 정의한다.
은 조건이 참이면 1, 아니면 0인 indicator function이다. 이면 위치 i에서 draft와 target의 출력 token이 같으므로 이 되고 반대의 경우도 마찬가지다. 이후 문단에서는 표기를 간단히 하려고 위 첨자 t를 생략하고 만 쓴다.
표준 SPD의 검증 전략은 불일치가 처음 발생하는 위치까지의 draft token을 모두 받아들이고 나머지는 버린다. 여기에 target model이 생성한 token 하나를 bonus로 더 받는다. 형식적으로 각 draft 라운드에서 accepted token 수 는 다음과 같다.
2.2 Training-Free Loosely Speculative Decoding (FLy)
FLy는 표준 SPD에서 오직 검증 전략만 바꾼다. 한 draft 라운드에 K개의 draft token이 주어지면 여러 위치에서 불일치가 발생할 수 있다.
각 불일치 위치 마다 그 자리에서 target model이 낸 정규화 logits로 normalized entropy를 계산한다.
entropy 은 위치 j에서 target model이 느끼는 불확실성을 재는 값이다. 가 크면 그 자리에서 여러 token이 타당한 대안이 될 수 있고 작으면 target model이 최상위 token만 받아들이려는 경향이 강하다.
Entropy-level gate. 식 (5)를 바탕으로 불일치 위치 j에 entropy gate를 적용해 그 불일치를 곧바로 기각할지 결정한다. 구체적으로 entropy 임계값 을 정의한다. 이 gate는 target model이 직접 구동하는 가벼운 per-token ambiguity detector 역할을 한다. target model이 확신하는 경우, 즉 이면 산술 연산의 숫자처럼 최상위 token을 강하게 선호한다. 이때는 표준 SPD 규칙으로 되돌아가 불일치 위치부터의 token 을 모두 기각한다. 반대로 이면 그 자리는 ambiguous하다. 공지시 대명사처럼 여러 token이 거의 맞바꿔 쓸 수 있는 상황이므로 뒤에서 소개할 token-level deferred window를 켠다.
불일치 위치 j에서 임계값 θ를 쓰는 Gate를 적용해 deferral을 발동할지 판단한다.
Strict는 위치 j 이후의 token을 기각하는 표준 SPD 규칙을, Defer는 token-level deferred window를 써서 기각 판단을 미루고 이어지는 몇 개 token에서 target의 행동을 지켜보는 것을 뜻한다. 이렇게 나눠 두면 잘못된 token이 정확성을 망가뜨릴 법한 자리에서는 deferral이 일어나지 않는다. Defer 연산을 잠정적 accept로 볼 때, entropy-level gate까지 적용한 accepted token 수 는 다음과 같다.
Token-level deferred window. 불일치 인덱스 j에서 Defer가 켜지면 FLy는 W개 token에 걸친 look-ahead window로 그 불일치가 무해한지 판단한다. 이어지는 W개 token에서 발생한 불일치의 총 개수를 센다.
이 window 안에서 또 다른 불일치가 나타나는지에 따라 위치 j의 불일치를 받아들일지 기각할지 정한다.
이 결정 규칙은 target LLM 자신의 행동을 이용한다. 의미상 잘못된 token을 조건으로 받으면 target model은 이어지는 생성에서 대개 교정 행동을 보인다. 뒤집어 말해 target model이 불일치 token에서 출발해 더 이상 발산 없이 생성을 이어 간다면 첫 발산 token은 의미상 맞을 가능성이 높으므로 받아들여도 된다. 반대로 target이 계속 다른 판단을 내놓으며 불일치를 되돌리려 하고 그 과정에서 또 다른 발산이 생긴다면 위치 j의 불일치와 그 뒤의 draft token들을 기각한다.
한 라운드에 draft token은 최대 K개뿐이다. 따라서 는 경계 상황을 가리킨다. 첫 불일치 인덱스 j가 마지막 W개 위치 안에 들어와 look-ahead window의 크기가 W보다 작아지는 상황이다. 그러면 남은 token만으로 불일치의 의미적 정합성을 판단하기에 부족하므로 위치 j의 불일치를 즉시 기각한다. 이때 버려지는 것은 뒤쪽 몇 개 token뿐이므로 즉시 기각의 비용은 무시할 만하다. 우리는 정확도를 지키고 구현을 단순하게 유지하려고 이 보수적인 규칙을 택했다.
deferred window까지 적용한 accepted token 수 는 다음과 같다.
각 SPD 라운드에서 FLy의 최종 출력은 첫 기각이 어디서 일어나는지에 달려 있다. FLy의 accepted token 수 는 다음과 같다.
SPD 라운드를 로 인덱싱하고 라운드 t에서 받아들인 token 수를 라 하면 실행 전체의 평균 accepted token 수 τ는 다음과 같다.
FLy는 forward pass를 추가로 요구하지 않는다. 대신 이미 확보해 둔 logits에서 per-token entropy를 곧바로 계산한다. 그 결과 계산 오버헤드는 draft·target model의 추론 비용에 비하면 무시할 수준이다. 그 수치는 표 1의 마지막 행에 있다.
2.3 Multi-level acceleration
entropy-level gate와 token-level deferred window 덕분에 FLy는 훨씬 긴 acceptance length(τ)를 얻는다. acceptance length가 길어지면 target 검증 횟수가 줄고 전체 지연에서 검증이 차지하는 비중도 낮아진다. 그 반작용으로 draft model의 auto-regressive 비용이 런타임의 지배적 병목으로 부각된다(표 1). 여기서 우리의 또 다른 기여가 나온다. 표준 SPD처럼 target model만 가속하는 것이 아니라 draft model에도 speculative 가속을 적용하는 Multi-Level Acceleration(MLA) 전략이다. drafting 단계의 오버헤드를 줄임으로써 MLA는 end-to-end 효율을 더 끌어올린다.
구성 요소 | L3 70B (MLA 없음) | L3 70B (MLA 적용) | L3 405B (MLA 없음) | L3 405B (MLA 적용) |
Draft time | 245.51 | 197.45 | 428.30 | 363.01 |
Target verification | 58.62 | 58.62 | 200.97 | 200.97 |
Gate & Window activation | 0.45 | 0.45 | 0.57 | 0.57 |
표 1. SPD 라운드 한 번의 구성 요소별 wall time(ms).
multi-level acceleration을 다룬 선행 연구가 몇 편 있지만(Georganas et al., 2025; Sun et al., 2024), 대체로 quantized 변형이나 small language model(SLM)처럼 파라미터가 있는 mini-draft model에 의존한다. 우리는 적용 범위를 넓히려고 MLA의 draft 가속 단계를 parameter-free하고 plug-and-play하게 설계했다. 그 덕에 FLy와 매끄럽게 결합된다. 구체적으로는 MLA를 Prompt Lookup Decoding(PLD)(Saxena, 2023)으로 구현했다. 매우 빠르고 학습이 필요 없는 단순한 n-gram 검색 기법이라 별도 bias를 들이지 않고 도메인 간 일반화도 지킬 수 있다. 그 결과 MLA는 draft 쪽 오버헤드를 줄이고 더 높은 end-to-end speedup을 얻는다(표 1과 표 5).
MLA는 검증 방식과 서로 독립적(orthogonal)이다. 주된 목적은 drafting 단계 자체를 빠르게 만드는 데 있다. 특히 우리 설정에서 효과가 크다. 알고리즘이 긴 draft sequence를 안전하게 제안할 수 있어 target model의 검증 시간보다 drafting 시간이 주된 병목이 되기 때문이다. target model의 검증 단계가 런타임을 지배하던 기존 접근들과 뚜렷하게 대비되는 지점이다.
역자 주 (표 1 읽는 법) 원문 표에서 Target verification과 Gate & Window activation 값은 MLA 적용 여부와 무관하게 동일하므로 두 열에 걸쳐 하나의 값으로 표기되어 있다. 위 표에서는 같은 값을 두 열에 반복해 옮겼다. 핵심은 Gate & Window의 비용이 0.45~0.57 ms에 그쳐 draft time(수백 ms)에 비하면 사실상 무시할 수준이라는 점이다.
3. 실험
이 절은 3.1의 실험 설정에서 출발한다. 이어 3.2에서 FLy를 현재 SOTA 기법들과 비교하고 3.3에서는 target model의 성능을 얼마나 지켜 내는지 보려고 accuracy preservation 벤치마크를 수행한다. 마지막으로 3.4에서 각 구성 요소의 효과를 확인하는 ablation study를 진행한다.
3.1 실험 설정
모델. 학습이 필요 없는 baseline에는 draft model로 Llama-3.1-8B-Instruct(Dubey et al., 2024)를, target model로 Llama-3.1-70B-Instruct와 Llama-3.1-405B-Instruct를 썼다. EAGLE-2와 비교할 때는 target model이 Meta-Llama-3-Instruct-70B, 그 draft model이 Meta-Llama-3-Instruct-8B였다. EAGLE-3와 비교할 때는 target model로 Llama-3.3-70B-Instruct를, draft model로 Llama-3.1-8B-Instruct를 썼다.
Baseline. 학습 기반과 학습 비기반 SPD 기법을 모두 비교 대상으로 삼았다. 학습 기반 쪽에서는 직전 state-of-the-art인 EAGLE-2(Li et al., 2024b)와 EAGLE-3(Li et al., 2025b)를 주로 다뤘다. 학습 비기반 쪽에서는 Speculative Sampling(Xia et al., 2023)(SpS), REST(He et al., 2023), TokenRecycling(Luo et al., 2024)을 대표 baseline으로 골랐다.
벤치마크. 분포 변화에 얼마나 강건한지 보려고, EAGLE-3가 쓴 학습 데이터를 기준으로 평가 데이터셋을 out-of-domain(OOD)과 in-domain(ID)으로 나눴다. OOD 그룹에는 ACP-prog-gen(Kokel et al., 2025)(Action, Change, and Planning), NIAH-multivalue(Hsieh et al., 2024), MGSM(Shi et al., 2022)이 들어간다. ACP-prog-gen은 계획 유형 추론에 초점을 둔다. NIAH-multivalue는 고전적인 Needle-in-a-Haystack 테스트를 needle의 종류와 개수를 다양화해 확장했고 MGSM은 Multilingual Grade School Math 벤치마크다. ID 그룹으로는 널리 쓰이는 GSM8K(Cobbe et al., 2021), HumanEval(Chen et al., 2021), MBPP(Austin et al., 2021)를 채택했다.
구현 세부 사항. 모든 실험에서 deferred window 길이는 W = 6, entropy gate 임계값은 θ = 0.3으로 뒀다. 라운드당 draft token 수 K는 70B target에서 15, 405B target에서 25로 설정했다. 실험은 모두 AMD Instinct MI355X GPU에서 돌렸다. 70B 모델은 GPU 한 장에서 평가했고 405B 모델은 GPU 네 장에 분산해 평가했다.
3.2 성능 비교
OOD 데이터셋에서 FLy는 표 2에서 보듯 성능이 뛰어나다. Llama-3.1-70B-Instruct 기준으로 temperature = 0(= 1)에서 평균 2.74배(2.62배) speedup을 얻어 기존 학습 비기반 baseline을 모두 앞섰다. Llama-3.3 변형에서는 학습 기반 SOTA인 EAGLE-3보다 1.62배(1.77배) 빨랐다. 이 우위는 모델이 커질수록 더 벌어진다. 405B 변형에서는 평균 4.80배(5.21배)의 speedup을 얻는다. token당 지연이 커서 draft token이 받아들여질 때 아끼는 시간이 그만큼 크고 비싼 target model 호출도 줄어들기 때문이다.
L31과 L33은 각각 Llama-3.1-Instruct와 Llama-3.3-Instruct를 가리킨다. Mean은 이들 데이터셋 전체의 평균 성능이다. 최고 성능은 굵게 표시했다. Training 열의 ✓는 학습 기반 기법, ✗는 학습 비기반 기법을 뜻한다.
Temperature = 0
Model | Training | Method | ACP prog_gen Speedup | ACP τ | NIAH multivalue Speedup | NIAH τ | MGSM de Speedup | MGSM de τ | MGSM fr Speedup | MGSM fr τ | MGSM th Speedup | MGSM th τ | Mean Speedup | Mean τ |
L33 70B | ✓ | EAGLE-3 | 1.52× | 3.92 | 2.15× | 2.43 | 1.57× | 2.23 | 1.72× | 2.65 | 0.84× | 1.26 | 1.56× | 2.50 |
L33 70B | ✗ | FLy (Ours) | 1.88× | 10.95 | 3.34× | 13.53 | 2.64× | 11.41 | 2.18× | 10.29 | 2.60× | 10.58 | 2.53× | 11.35 |
L31 70B | ✗ | SpS | 1.69× | 10.94 | 3.33× | 15.82 | 1.79× | 9.23 | 1.62× | 8.72 | 1.78× | 9.84 | 2.04× | 10.91 |
L31 70B | ✗ | REST | 1.35× | 1.57 | 2.63× | 3.03 | 1.44× | 1.47 | 1.28× | 1.54 | 1.43× | 1.44 | 1.62× | 1.81 |
L31 70B | ✗ | TokenRecycling | 1.76× | 4.22 | 1.99× | 3.10 | 2.31× | 3.31 | 2.15× | 3.35 | 2.18× | 3.39 | 2.08× | 3.47 |
L31 70B | ✗ | FLy (Ours) | 2.02× | 12.30 | 3.57× | 14.85 | 2.76× | 11.45 | 2.39× | 11.02 | 2.96× | 12.14 | 2.74× | 12.41 |
L31 405B | ✗ | SpS | 2.32× | 14.02 | 3.72× | 24.13 | 2.47× | 11.01 | 2.63× | 11.22 | 3.01× | 12.51 | 2.83× | 14.58 |
L31 405B | ✗ | REST | 1.94× | 2.09 | 2.77× | 3.02 | 1.40× | 1.46 | 1.43× | 1.53 | 1.39× | 1.44 | 1.79× | 1.91 |
L31 405B | ✗ | TokenRecycling | 1.53× | 3.52 | 1.60× | 3.12 | 1.72× | 3.21 | 1.79× | 3.34 | 1.78× | 3.35 | 1.68× | 3.31 |
L31 405B | ✗ | FLy (Ours) | 2.72× | 15.08 | 4.07× | 24.15 | 5.16× | 14.49 | 5.67× | 15.75 | 6.37× | 16.18 | 4.80× | 17.13 |
Temperature = 1
Model | Training | Method | ACP prog_gen Speedup | ACP τ | NIAH multivalue Speedup | NIAH τ | MGSM de Speedup | MGSM de τ | MGSM fr Speedup | MGSM fr τ | MGSM th Speedup | MGSM th τ | Mean Speedup | Mean τ |
L33 70B | ✓ | EAGLE-3 | 1.43× | 3.60 | 1.99× | 2.27 | 1.47× | 2.05 | 1.58× | 2.45 | 0.81× | 1.18 | 1.45× | 2.31 |
L33 70B | ✗ | FLy (Ours) | 1.89× | 11.02 | 3.37× | 13.78 | 2.72× | 11.97 | 2.21× | 10.99 | 2.61× | 11.01 | 2.56× | 11.75 |
L31 70B | ✗ | SpS | 1.71× | 11.28 | 3.33× | 15.73 | 1.79× | 9.14 | 1.59× | 8.64 | 1.58× | 8.74 | 2.00× | 10.71 |
L31 70B | ✗ | REST | 1.29× | 1.50 | 2.51× | 2.89 | 1.37× | 1.40 | 1.22× | 1.47 | 1.36× | 1.38 | 1.55× | 1.73 |
L31 70B | ✗ | TokenRecycling | 1.83× | 4.38 | 2.02× | 3.15 | 2.30× | 3.33 | 2.17× | 3.36 | 2.17× | 3.38 | 2.10× | 3.52 |
L31 70B | ✗ | FLy (Ours) | 1.81× | 11.69 | 3.64× | 15.83 | 2.56× | 11.77 | 2.35× | 11.27 | 2.71× | 11.63 | 2.62× | 12.44 |
L31 405B | ✗ | SpS | 1.97× | 11.70 | 3.13× | 20.15 | 2.10× | 9.19 | 2.20× | 9.38 | 2.55× | 10.45 | 2.39× | 12.17 |
L31 405B | ✗ | REST | 1.81× | 1.95 | 2.58× | 2.82 | 1.31× | 1.36 | 1.33× | 1.43 | 1.30× | 1.34 | 1.67× | 1.78 |
L31 405B | ✗ | TokenRecycling | 1.53× | 3.54 | 1.59× | 3.10 | 1.73× | 3.22 | 1.79× | 3.34 | 1.78× | 3.34 | 1.68× | 3.31 |
L31 405B | ✗ | FLy (Ours) | 2.74× | 15.44 | 4.10× | 24.09 | 6.08× | 17.97 | 6.42× | 18.84 | 6.71× | 18.10 | 5.21× | 18.89 |
ID 데이터셋에서도 표 3에서 보듯 FLy는 충분히 경쟁력 있다. 70B 모델에서 평균 2.88배(2.59배) speedup을 얻어 다른 모든 학습 비기반 기법을 앞섰다. 특히 학습 기반인 EAGLE-2보다 1.05배(1.12배) 빨랐다. 고도로 최적화된 EAGLE-3보다는 조금 느리지만 plug-and-play 방식의 학습 비기반 접근으로서는 예상 범위 안에 있고 납득할 만한 결과다. 더 큰 405B 모델에서는 5.34배(5.31배)라는 두드러진 speedup을 얻어 모든 baseline을 크게 앞질렀다. 대규모 모델 가속에서 이 방법의 잠재력이 분명히 드러난다. EAGLE-3 같은 학습 기반 기법은 405B 모델용 drafter를 학습시키는 데 감당하기 어려운 자원이 든다. 그래서 이 규모에서는 공식 지원 모델이 아예 없는 경우가 많다. 반면 학습이 필요 없는 우리 접근은 그런 부담 없이 뛰어난 성능을 낸다.
L3, L31, L33은 각각 Meta-Llama-3-Instruct, Llama-3.1-Instruct, Llama-3.3-Instruct를 뜻한다. Mean은 이들 데이터셋 전체의 평균 성능이다. 최고 성능은 굵게 표시했다. ✓는 학습 기반, ✗는 학습 비기반 기법이다.
Temperature = 0
Model | Training | Method | GSM8K Speedup | GSM8K τ | HumanEval Speedup | HumanEval τ | MBPP Speedup | MBPP τ | Mean Speedup | Mean τ |
L3 70B | ✓ | EAGLE-2 | 2.54× | 3.74 | 2.56× | 4.24 | 2.61× | 3.90 | 2.57× | 3.96 |
L3 70B | ✗ | FLy (Ours) | 2.94× | 11.67 | 2.60× | 12.74 | 2.53× | 11.21 | 2.69× | 11.87 |
L33 70B | ✓ | EAGLE-3 | 3.72× | 5.64 | 3.97× | 5.73 | 3.80× | 5.47 | 3.83× | 5.61 |
L33 70B | ✗ | FLy (Ours) | 2.68× | 11.65 | 2.75× | 12.20 | 2.47× | 11.76 | 2.63× | 11.87 |
L31 70B | ✗ | SpS | 2.13× | 9.87 | 1.64× | 9.89 | 1.72× | 10.47 | 1.83× | 10.08 |
L31 70B | ✗ | REST | 1.79× | 2.00 | 1.89× | 2.22 | 2.03× | 2.34 | 1.90× | 2.19 |
L31 70B | ✗ | TokenRecycling | 2.10× | 3.04 | 2.12× | 3.07 | 2.13× | 3.01 | 2.12× | 3.04 |
L31 70B | ✗ | FLy (Ours) | 2.98× | 12.57 | 2.86× | 12.61 | 2.79× | 12.84 | 2.88× | 12.67 |
L31 405B | ✗ | SpS | 2.59× | 10.98 | 2.84× | 11.62 | 3.03× | 12.67 | 2.82× | 11.76 |
L31 405B | ✗ | REST | 2.07× | 2.13 | 2.14× | 2.41 | 2.36× | 2.46 | 2.19× | 2.33 |
L31 405B | ✗ | TokenRecycling | 1.47× | 2.83 | 1.54× | 2.88 | 1.66× | 2.92 | 1.56× | 2.88 |
L31 405B | ✗ | FLy (Ours) | 4.61× | 17.02 | 5.15× | 15.83 | 6.26× | 18.56 | 5.34× | 17.14 |
Temperature = 1
Model | Training | Method | GSM8K Speedup | GSM8K τ | HumanEval Speedup | HumanEval τ | MBPP Speedup | MBPP τ | Mean Speedup | Mean τ |
L3 70B | ✓ | EAGLE-2 | 2.36× | 3.48 | 2.38× | 3.95 | 2.43× | 3.63 | 2.39× | 3.69 |
L3 70B | ✗ | FLy (Ours) | 2.91× | 11.55 | 2.53× | 12.67 | 2.59× | 11.37 | 2.68× | 11.86 |
L33 70B | ✓ | EAGLE-3 | 3.50× | 5.31 | 3.74× | 5.40 | 3.58× | 5.15 | 3.61× | 5.29 |
L33 70B | ✗ | FLy (Ours) | 2.85× | 12.40 | 2.75× | 12.55 | 2.69× | 12.33 | 2.76× | 12.43 |
L31 70B | ✗ | SpS | 2.13× | 9.70 | 1.07× | 6.29 | 1.00× | 6.08 | 1.40× | 7.36 |
L31 70B | ✗ | REST | 1.71× | 1.91 | 1.81× | 2.13 | 1.94× | 2.24 | 1.82× | 2.09 |
L31 70B | ✗ | TokenRecycling | 2.08× | 3.02 | 2.15× | 3.06 | 2.15× | 3.01 | 2.13× | 3.03 |
L31 70B | ✗ | FLy (Ours) | 2.67× | 11.93 | 2.52× | 11.96 | 2.59× | 12.57 | 2.59× | 12.15 |
L31 405B | ✗ | SpS | 2.18× | 9.25 | 2.39× | 9.78 | 2.55× | 10.67 | 2.37× | 9.90 |
L31 405B | ✗ | REST | 1.78× | 1.82 | 1.83× | 2.07 | 2.02× | 2.11 | 1.88× | 2.00 |
L31 405B | ✗ | TokenRecycling | 1.48× | 2.85 | 1.56× | 2.91 | 1.67× | 2.92 | 1.57× | 2.89 |
L31 405B | ✗ | FLy (Ours) | 4.97× | 19.40 | 5.00× | 16.29 | 5.97× | 17.80 | 5.31× | 17.83 |
실험 결과를 보면 FLy는 분포 변화에 더 강건하다. EAGLE-3는 in-distribution(ID) 데이터셋에서 평균 3.83배의 speedup을 얻지만 out-of-distribution(OOD) 데이터에서는 1.56배까지 떨어진다. 반면 Llama-3.3-70B를 target model로 쓴 FLy는 ID에서 평균 2.63배, OOD에서 2.53배를 유지한다. 분포가 바뀌어도 성능이 훨씬 덜 떨어진다.
3.3 정확도 보존(Accuracy preservation)
우리 방법은 loose한 SPD이므로 가속된 target model의 출력이 원래 출력과 완전히 같지는 않다. 따라서 FLy 적용 후 원래 target model 대비 정확도 보존율을 보고한다(그림 3). 원래 target model의 점수를 100%로 정규화한 뒤, 성능이 얼마나 유지되는지를 recovery ratio로 나타냈다. 정규화하지 않은 원점수는 부록 B에 실었다. 데이터셋과 모델 규모를 가리지 않고 우리 방법은 99%를 넘는 recovery score를 일관되게 유지한다. 학습 기반 loose SPD 기법인 JudgeDecoding(Bachmann et al., 2025)과 대등한 수준이다. 여기 실린 JudgeDecoding의 정확도 보존 수치는 해당 방법이 공개되지 않았기 때문에 원 논문에서 그대로 가져온 값이다. JudgeDecoding도 학습–테스트 도메인 불일치에 민감하다는 점을 스스로 인정한다. 학습 데이터에서 코딩 예시를 빼면 HumanEval 성능이 99.4%에서 92.3%로 크게 떨어진다. 분포가 달라졌을 때 성능 저하가 얼마나 큰지 보여 주는 사례다.
그림 3. 정확도 보존 결과. target model의 성능을 100으로 정규화한 뒤, 성능이 얼마나 보존되는지를 recovery ratio로 나타냈다.
3.4 Ablation study
이 절에서는 우리 방법의 각 구성 요소가 전체 성능에 얼마나 기여하는지 평가한다. 구체적으로 네 가지 축에서 ablation을 수행한다. (1) 핵심 hyper-parameter, 즉 window 길이(W), entropy gate 임계값(θ), draft token 수(K). (2) drafter 단계까지 가속하는 효과를 재는 multi-level acceleration 장치. (3) 용량–지연 사이의 절충을 보는 drafter 모델 크기. (4) LLM 계열과 규모를 넘나드는 강건성을 보는 cross-model draft–target 조합. 따로 언급이 없으면 target LLM은 Llama-3.1-70B-Instruct, drafter는 Llama-3.1-8B-Instruct, 평가 데이터셋은 HumanEval, temperature는 0으로 고정했다.
Hyper-parameter. window 길이(W)는 deferred 결정 과정에서 target model의 행동을 관찰할 후속 위치를 몇 개나 둘지 정한다. 표 4의 (1)에서 보듯 W ∈ {0, 4, 6, 8}로 바꿔 가며 실험했다. window를 끄면(W = 0) deferred 상태의 모든 불일치를 받아들이므로 speedup과 τ는 최대가 되지만 정확도를 대가로 치른다. 짧은 window(W = 4)는 정확도를 조금 내주는 대신 더 높은 speedup을 낸다. W = 6은 speedup을 아주 조금만 잃으면서 recovery를 완전히 회복하기에 기본값으로 삼았다. W = 8은 지나치게 엄격해 τ와 end-to-end speedup을 모두 떨어뜨린다.
entropy gate 임계값(θ)은 어떤 위치를 유일한 선택지(낮은 entropy, 불일치를 즉시 기각)로 볼지, 그럴듯한 후보가 여럿인 자리(높은 entropy, deferral 허용)로 볼지를 조절한다. 표 4의 (2)처럼 θ ∈ {0, 0.3, 0.6, 1}을 살펴봤다. gate를 끄면(θ = 0) 모든 불일치를 defer하므로 speedup과 τ가 최대가 되지만 정확도가 나빠진다. θ = 0.3은 강한 speedup과 함께 완전한 recovery를 달성해 기본값으로 삼았다. 더 엄격한 gate(θ = 0.6)는 deferral을 줄이고 대부분의 불일치를 기각하므로 speedup과 τ가 낮아진다. θ = 1이면 모든 불일치를 기각해 표준 SPD로 되돌아간다.
draft token 수 K는 drafter가 한 라운드에 몇 개의 token을 생성할지 정한다. 표 4의 (3)처럼 K ∈ {10, 15, 20, 25}를 평가했다. τ는 K에 따라 단조 증가하지만 speedup은 올라갔다가 다시 떨어진다. 받아들여지지 않은 token(K − τ)에 drafter가 쓰는 비용이 병목이 되기 때문이다. 그래서 70B target에는 K = 15(최고 speedup)를, 검증 비용이 더 비싼 405B target에는 K = 25를 쓴다. 405B의 상세 ablation은 부록 C에 있다.
Hyper-parameter | 값 | Speedup | τ | Recovery(%) |
(1) Window 길이 W | 0 | 3.42× | 15.59 | 93.7 |
ㅤ | 4 | 2.91× | 13.27 | 97.9 |
ㅤ | 6 | 2.86× | 12.61 | 100 |
ㅤ | 8 | 2.61× | 11.96 | 100 |
(2) Entropy 임계값 θ | 0 | 2.98× | 12.76 | 97.7 |
ㅤ | 0.3 | 2.86× | 12.61 | 100 |
ㅤ | 0.6 | 2.76× | 12.20 | 100 |
ㅤ | 1 | 1.64× | 9.89 | 100 |
(3) Draft token K | 10 | 2.75× | 9.04 | 100 |
ㅤ | 15 | 2.86× | 12.61 | 100 |
ㅤ | 20 | 2.59× | 15.60 | 100 |
ㅤ | 25 | 2.58× | 18.56 | 100 |
Multi-level acceleration 효과. multi-level acceleration의 ablation 결과는 표 5에 있다. MLA를 켜면 speedup이 2.69배에서 2.86배로 오른다. drafter 단계를 가속하면 target만 가속해서는 닿을 수 없는 수준까지 end-to-end 지연이 줄어든다.
ㅤ | MLA 없음 | MLA 적용 |
Speedup | 2.69× | 2.86× |
Draft model 크기. 표 6처럼 draft model 크기를 1B부터 8B까지 바꿔 봤다. 평균 accepted token τ는 drafter의 용량에 따라 단조 증가하지만 전체 speedup은 단조롭지 않다. 모델이 커질수록 drafter의 계산 비용도 함께 늘기 때문이다. τ에서 얻는 이득이 충분히 크지 않으면 그 비용에 잠식된다. 정확도와 처리량 사이의 균형이 가장 좋은 8B 모델을 기본 drafter로 채택한 이유다.
Draft model 크기 | 1B | 3B | 8B |
Speedup | 2.80× | 2.47× | 2.86× |
τ | 8.98 | 10.71 | 12.61 |
Recovery(%) | 99.23 | 100 | 100 |
Cross-model draft–target 조합. FLy가 특정 모델 쌍을 넘어 일반화되는지 확인하려고 표 7처럼 이질적인 draft–target 조합 세 가지를 추가로 평가했다. 계열이 다른 경우와 규모가 다른 경우를 모두 포함한다. (1) 가벼운 Qwen2.5-Coder-0.5B-Instruct(Hui et al., 2024; Yang et al., 2024) drafter에 Mistral-Large-Instruct-2411 target, (2) DeepSeek-R1-Distill-Qwen-7B(DeepSeek-AI, 2025) drafter에 Mistral-Large-Instruct-2411 target, (3) DeepSeek-R1-Distill-Qwen-1.5B drafter로 더 큰 Llama 변형을 가속하는 구성이다. 모든 설정에서 FLy는 target model 정확도의 99% 이상을 지키면서 1.85배에서 3.54배의 speedup을 얻었다. FLy가 재학습 없이 여러 draft–target 쌍에 매끄럽게 결합되는 model-agnostic한 방법임을 보여 주는 결과다.
Draft model | Target model | Speedup | τ | Recovery (%) |
Qwen2.5-Coder-0.5B-Instruct | Mistral-Large-Instruct-2411 | 3.54× | 12.34 | 99.1 |
DeepSeek-R1-Distill-Qwen-7B | Mistral-Large-Instruct-2411 | 2.35× | 9.60 | 100 |
DeepSeek-R1-Distill-Qwen-1.5B | DeepSeek-R1-Distill-Llama-70B | 1.85× | 10.28 | 100 |
4. 관련 연구
Speculative decoding(SPD)은 작은 drafter가 다음 token 여러 개를 차례로 제안하고 target model이 이를 병렬로 검증하게 해 autoregressive LLM의 속도를 올린다(Xia et al., 2023).
Training-based SPD. 상당수의 연구(Li et al., 2025a; Liu et al., 2024; Xiao et al., 2024; Ankner et al., 2024)는 drafter와 target을 더 잘 맞추는 보조 예측기를 학습시켜 speculation 정확도를 높이는 방향으로 SPD를 확장한다. 대개는 target의 행동을 흉내 내는 추가 모듈을 학습시켜 acceptance rate와 speedup을 끌어올린다. Medusa(Cai et al., 2024)는 base LLM의 hidden state를 여러 개의 가벼운 MLP head에 입력해 각 head가 미래 token 하나씩을 예측하게 한다. GLIDE(Du et al., 2024)는 cross-attention으로 target model의 KV cache를 재사용하고 제안 범위를 적응적으로 넓혀 디코딩을 가속한다. HASS(Zhang et al., 2024b)는 학습 목표를 추론 시 행동에 맞춰 acceptance rate를 높인다. EAGLE(Li et al., 2024a)은 가벼운 Transformer 예측기와 token–state 쌍의 결합으로 이 설계를 일반화했다. EAGLE-2(Li et al., 2024b)는 동적 tree 기반 후보 선택 장치로 효율을 개선했다. EAGLE-3(Li et al., 2025b)는 중간 hidden state까지 활용해 디코딩 가속을 한층 키웠다. 보조 모듈을 붙이는 방식과 결이 다르게, LayerSkip(Elhoushi et al., 2024)은 target 자체를 활용해 초기 layer가 draft를 제안하도록 학습시키고 이를 전체 모델이 검증하게 한다. 효과는 분명하지만 이런 접근들은 과제별 지도 신호가 필요하다. 학습 분포를 벗어나면 일반화가 잘 되지 않는 일이 많아 out-of-distribution 상황에서 강건성이 제한된다.
Training-free SPD. 반대로 학습 비기반 접근은 추가 학습을 하지 않는다. Speculative Sampling(Chen et al., 2023)은 수정된 rejection sampling 기법으로 손실 없는 생성을 보장하면서 디코딩을 가속하는 draft-then-verify 패러다임을 처음 세웠다. 검색 기반 기법들(Zhao et al., 2024; He et al., 2023)은 datastore를 유지하며 n-gram continuation을 draft token으로 가져와 파라미터가 있는 drafter 없이도 임의의 target에 적용할 수 있는 plug-and-play 가속기를 제공한다. Draft&Verify(Zhang et al., 2024a)는 Bayesian optimization으로 최적의 정적 skip layer 집합을 찾아 이 흐름을 형식화했다. SWIFT(Xia et al., 2025)는 여기서 더 나아가 입력 문맥에 따라 skip layer 집합을 실시간으로 최적화한다. KNN-SSD(Song et al., 2026)는 nearest neighbor search로 도메인별 skip 설정을 검색해 데이터 분포 변화에 민감한 문제를 다룬다. 다만 이런 방식들은 draft의 품질이 대체로 낮고 target과의 정렬도 약해 학습 기반 기법보다 낮은 speedup에 머무는 경향이 있다.
Loosely SPD. 엄격한 검증은 의미상 유효한 draft를 자주 기각해 달성 가능한 speedup을 제한한다. "loose" 변형들(Garipov et al., 2025; Wang et al., 2025c)은 이 문제를 두고 기준을 완화해 token 수준의 편차를 허용한다. JudgeDecoding(Bachmann et al., 2025)은 가벼운 보조 모델을 학습시켜 의미는 맞지만 일치하지 않는 draft를 알아보게 한다. 이런 지도 학습은 out-of-domain 일반화를 제약한다. Reflective Verification(Wang et al., 2025b)은 학습 없는 경로를 택했다. LLM의 성찰 능력을 활용해 draft의 정합성을 의미 수준에서 살핀다. SPRINTER(Zhong et al., 2025)는 불일치가 났을 때만 target의 acceptance를 근사하는 가벼운 verifier를 써서 target 호출을 줄이고 지연을 더 낮춘다. Alignment-sampling 계열(Wang et al., 2025a)은 prefilling 단계의 분포 정보를 활용해 더 잘 정렬된 draft를 제안한다. 여기에 유연한 thresholding 전략을 결합해 완벽하지는 않아도 품질 높은 후보를 적응적으로 받아들인다. 이런 흐름을 보면 엄격한 token 수준 동일성을 완화하려는 관심이 커졌다. 정확성을 일부 내주고 효율을 얻는 절충 위에서 학습 기반과 학습 비기반 설계 사이의 균형을 탐색하려는 시도이기도 하다.
우리 FLy도 loose 계열의 철학을 따르지만 기존 기법들과는 다르다. 학습된 verifier나 느슨해진 acceptance 규칙에 기대는 대신 완전히 학습 없는 상태를 유지한 채 검증을 미루는 방식으로 draft를 판정한다. 무해한 발산과 진짜 오류는 target 자신의 행동과 entropy 신호로 갈라낸다.
5. 한계
FLy는 높은 정확도를 지키면서 상당한 speedup을 얻지만 완전히 학습이 없는 방식이라 과제별 벤치마크에 맞춰 검증 정책을 최적화하지는 않는다. 그래서 EAGLE-3처럼 학습 기반 speculative decoding에 맞춰진 데이터셋에서는 성능 격차가 생길 수 있다. FLy는 token 수준의 정확한 일치가 아니라 target model과의 의미적 일관성을 지키도록 설계되었다. 긴 지문을 그대로 반복하거나 시를 암송하는 것처럼 글자 그대로의 재현이 필요한 응용에는 최적이 아닐 수 있다.
6. 결론
이 논문은 새로운 학습 비기반 알고리즘 Training-Free Loosely Speculative Decoding(FLy) 을 소개했다. 표준 SPD의 경직된 exact-match 기준을 의미가 맞는 token을 받아들이는 느슨한 검증 방식으로 대체하는 알고리즘이다. 불일치가 발생하면 FLy는 두 층짜리 장치로 진짜 오류와 의미상 유효한 경우를 구분한다. 먼저 entropy-level gate가 느슨한 검증이 적절한 상황인지, 즉 지금 문맥이 여러 대안 token을 유효하다고 볼 만큼 충분히 불확실한지 판단한다. 이어 token-level deferred window가 뒤따르는 token들에서 target model의 행동을 지켜본다. 더 이상의 발산 없이 생성이 이어지면 처음의 불일치를 표현만 다른 의미상 맞는 continuation으로 보고 받아들인다. 반대로 불일치가 더 나타나면 교정 행동으로 해석해 처음 불일치를 소급 기각한다. 여기에 drafter 자체를 가속해 지연을 더 줄이는 multi-level acceleration 장치도 함께 제안했다. 실험 결과 우리 접근은 target model의 정확도(≥ 99%)를 지키면서 평균 accepted token(τ)과 전체 speedup을 크게 끌어올렸다. 강한 일반화 능력도 함께 보여 주었다.
References
원문의 참고문헌 목록은 번역하지 않았다. 전체 목록은 원문(arXiv:2511.22972) 9~14쪽에서 확인할 수 있다.
부록 A. 상세 알고리즘
2.2절에서 제안한 FLy를 단계별로 풀어 각 구성 요소와 절차를 더 깊이 이해하도록 정리한다.
Algorithm 1: Training-Free Loosely Speculative Decoding (FLy)
- 입력: prompt x, draft model , target model , draft token 수 K, 임계값 θ, window 크기 W, vocabulary V.
- 출력: 생성 sequence y, 평균 accepted token τ.
1 t ← 0, s ← 0 // SPD 라운드 t와 accepted token 수 s 초기화 2 y ← x 3 while not EOS do 4 {ŷ_i^t}_{i=1..K} ← M_D(y; K) // (Step 1) K개 token을 순차 draft 5 {ℓ_i^t}_{i=1..K+1} ← M_T.forward(concat(y_{-1}^{t-1}, {ŷ_i^t}_{i=1..K})) // (Step 2) 단일 forward pass로 target 검증 6 for i ← 1 to K do 7 p_{M_T,i}(v) ← softmax(ℓ_i^t)_v for v ∈ V , y_i^t ← argmax_{v∈V} p_{M_T,i}(v) 8 Δ_i^t ← 1[ŷ_i^t = y_i^t] 9 p_{M_T,K+1}(v) ← softmax(ℓ_{K+1}^t)_v for v ∈ V , y_{K+1}^t ← argmax_{v∈V} p_{M_T,K+1}(v) 10 J ← { i | Δ_i^t = 0 } 11 if J = ∅ then // 전부 일치, 모두 accept 12 y ← concat(y, {ŷ_i^t}_{i=1..K}, y_{K+1}^t) 13 t ← t + 1 14 s ← s + K + 1 15 continue 16 accept_all ← True 17 for j ∈ J do 18 h_j ← ( −Σ_{v∈V} p_{M_T,j}(v) log p_{M_T,j}(v) ) / log|V| // (Step 3) 불일치 j에서 entropy gate 19 if h_j < θ then // Strict 모드, 기각 20 accept_all ← False 21 y ← concat(y, {ŷ_i^t}_{i=1..j-1}, y_j^t) 22 s ← s + j 23 break 24 else // (Step 4) 이후 W개 token에 대한 deferred window 판정 25 M_W ← Σ_{i=j+1..j+W} (1 − Δ_i^t) 26 if M_W = 0 and j + W ≤ K then 27 continue // 위치 j의 불일치는 표현만 다르고 의미는 맞음 → accept 28 else 29 accept_all ← False // 해롭다고 보고 기각 30 y ← concat(y, {ŷ_i^t}_{i=1..j-1}, y_j^t) 31 s ← s + j 32 break 33 if accept_all then 34 y ← concat(y, {ŷ_i^t}_{i=1..K}, y_{K+1}^t) 35 s ← s + K + 1 36 t ← t + 1 37 τ ← s / t
부록 B. 정규화하지 않은 원 정확도 점수
여기서는 3.3절의 정확도 보존 결과에 대응하는 원점수를 정규화 없이 제시한다. 표 8은 모델과 데이터셋별 원래 평가 지표를 담고 있어 절대 성능을 바로 확인할 수 있다.
L31은 Llama-3.1-Instruct, L33은 Llama-3.3-Instruct, L3는 Meta-Llama-3-Instruct를 뜻하며 FLy는 우리가 제안한 방법이다.
Model Family | Model | GSM8K | HumanEval | MBPP | MGSM | NIAH | ACP |
Llama-3.1-Instruct | L31 8b | 85.06 | 66.46 | 74.87 | 73.20 | 99.42 | 42.30 |
ㅤ | FLy 70b | 94.69 | 79.26 | 89.15 | 88.41 | 99.93 | 60.37 |
ㅤ | L31 70b | 95.45 | 79.26 | 89.42 | 88.67 | 99.97 | 60.77 |
ㅤ | FLy 405b | 96.21 | 87.20 | 90.48 | 92.27 | 100 | 69.31 |
ㅤ | L31 405b | 96.51 | 87.80 | 91.00 | 92.80 | 100 | 70.00 |
Llama-3.3-Instruct | FLy 70b | 94.84 | 84.54 | 88.62 | 90.2 | 100 | 59.23 |
ㅤ | L33 70b | 95.60 | 85.37 | 89.15 | 90.4 | 100 | 57.69 |
Meta-Llama-3-Instruct | L3 8b | 79.30 | 60.37 | 75.40 | / | / | / |
ㅤ | FLy 70b | 91.75 | 78.55 | 84.39 | / | / | / |
ㅤ | L3 70b | 92.34 | 79.27 | 84.93 | / | / | / |
부록 C. 405B 변형에서의 draft token 수 K에 대한 ablation study
Llama-3.1-405B-Instruct를 가속할 때 draft token 수 K가 FLy의 성능에 미치는 영향을 살펴봤다. 표 9에서 보듯 K를 키우면 평균 accepted token(τ)과 speedup이 함께 올라가지만 정확도 recovery가 조금씩 낮아지는 대가가 따른다. 이 절충을 감안해 405B 모델에는 K = 25를 택했다. 정확도 저하를 최소로 억제하면서(99.3% recovery) 5.15배 speedup을 얻었다.
Draft token K | Speedup | τ | Recovery(%) |
15 | 4.60× | 11.43 | 99.7% |
20 | 4.89× | 13.64 | 99.7% |
25 | 5.15× | 15.83 | 99.3% |
30 | 5.67× | 17.57 | 97.9% |
부록 D. vLLM 기반 대규모 batch size에서의 speedup
널리 쓰이는 프로덕션급 프레임워크 vLLM과 AMD Instruct MI250 GPU 네 장을 써서 큰 batch size에서 FLy가 처리량에 미치는 영향을 평가했다. 결과는 표 10과 같다.
speculative sampling을 쓰지 않은 모델의 추론 속도를 기준선(1.00×)으로 삼았다.
Batch size | 2 | 4 | 8 | 16 |
Llama-3.1-70b-Instruct | 2.39× | 2.09× | 1.96× | 1.78× |
부록 E. 사례 연구(Case study)
그림 4는 Llama-3.1-405B-Instruct로 GSM8K 데이터셋의 한 사례를 다룬다. 표준 SPD라면 기각했을 의미상 유효한 draft token을 FLy가 제대로 받아들이는 모습이다. 그림에서 보듯 drafter와 target의 불일치는 여러 token에서 나타난다. 표준 SPD처럼 draft를 통째로 기각하는 대신, FLy는 의미상 유효한 대안을 살려 스텝당 acceptance rate를 높이고 디코딩을 가속한다.
그림 4. Llama-3.1-405B-Instruct로 GSM8K 데이터셋의 한 샘플에 FLy를 적용한 사례 연구. 파란색 token은 drafter의 출력, 초록색 token은 target의 출력이다. 표준 speculative decoding에서는 모든 불일치가 기각된다. 반면 FLy는 취소선으로 표시된 불일치만 골라 기각하고 나머지는 의미상 유효하므로 그대로 유지한다.
부록 F. LLM 사용
이 원고를 준비하면서 대규모 언어 모델(LLM)은 오직 문장을 다듬고 문법을 교정하는 용도로만 사용했다.
그림 심층 분석 (역자 작성)
아래는 원문에 없는 역자의 분석이다. 추출한 네 개 그림이 논문의 논증 구조에서 어떤 몫을 맡는지 정리했다.
그림 1 — OOD speedup 막대그래프: 논문의 문제 제기를 수치로 못 박는 그림
무엇을 보여 주는가. 패널 세 개는 각각 Llama-3.3-70B-Instruct, Llama-3.1-70B-Instruct, Llama-3.1-405B-Instruct에 대응한다. 패널마다 MGSM·NIAH·ACP 세 OOD 데이터셋의 speedup을 방법별 막대로 비교했다. 세로축은 speedup 배수, 기준선은 speculative decoding을 쓰지 않은 원래 모델이다.
논문에서 맡는 역할. 이 그림은 서론에 놓여 논문의 출발 전제를 눈으로 확인시킨다. 왼쪽 패널의 빗금 막대(EAGLE-3)가 1.4~2.2배에 머무는 반면 FLy는 1.9~3.3배를 낸다. 학습 기반 기법의 강점이 학습 분포 안에서만 유효하다는 주장, 학습을 없앤 설계가 분포 변화에 강하다는 주장. 표 2·표 3의 숫자를 읽기 전에 이 둘을 미리 요약해 주는 셈이다.
읽을 때 주의할 점. 세 패널의 방법 구성이 서로 다르다. 왼쪽 패널만 EAGLE-3와 견주고 가운데·오른쪽 패널은 학습 비기반 baseline(REST, Token Recycling, Speculative Sampling)과 견준다. 패널을 가로질러 막대 높이를 직접 비교하면 안 된다. 봐야 할 것은 각 패널 안에서의 상대 순위다. 오른쪽 405B 패널에서 FLy가 MGSM 5.7배로 튀는 것은 target model의 token당 지연이 클수록 accepted token 하나가 절약해 주는 시간도 커지기 때문이다.
핵심 수치. EAGLE-3의 ID 평균 3.83배 대비 OOD 평균 1.56배(약 59% 하락) ↔ FLy의 ID 2.63배 대비 OOD 2.53배(약 4% 하락). 이 대비가 논문 전체의 판매 포인트다.
그림 2 — FLy 파이프라인 개요도: 방법론 전체를 한 장으로 압축한 그림
무엇을 보여 주는가. "What is the overfitting phenomena?"라는 prompt 하나를 따라가며 네 단계를 순서대로 보여 준다. ① draft와 target의 token 비교, ② entropy-level gate 판정, ③ token-level deferred window 관찰, ④ 최종 생성 결과다. 파란 상자는 일치 token, 주황 상자는 불일치 token이다.
논문에서 맡는 역할. 2절의 수식 (5)~(11)을 말로 옮긴 그림이자, FLy의 두 층 구조가 왜 필요한지를 한눈에 납득시키는 장치다. 세 불일치를 서로 다르게 처리하는 대비가 핵심이다.
After(target) ↔When(draft): entropy가 θ 이상 → Defer → window 안에서 재정렬 성공 → Accept
training↔testing: entropy가 θ 미만 → Strict → 즉시 Reject
generalize↔perform: entropy가 θ 이상 → Defer → window 안에서 또 불일치 발생 → Reject
설계 의도가 드러나는 지점. 두 번째 사례가 gate의 존재 이유를 설명한다. "training data"와 "testing data"는 표면이 대칭이라 window만으로는 걸러 내기 어렵다. 하지만 target이 확신하는 자리(낮은 entropy)이므로 gate가 먼저 잘라 낸다. 세 번째 사례는 반대로 gate만으로는 부족한 경우다. entropy가 높아 통과했지만 이어지는 token에서 target이 계속 다른 판단을 내놓으며 교정하려 들기 때문에 window가 뒤늦게 기각한다. 두 장치는 서로를 보완한다. 어느 하나만 남기면 표 4의 ablation에서 정확도나 속도가 무너진다.
읽을 때 주의할 점. ④의 최종 결과는 draft를 그대로 옮긴 것이 아니다.
When은 draft 쪽 표현이 살아남았고 training은 target 쪽 표현이 채택됐다. FLy의 출력은 draft도 target도 아닌, 검증을 통과한 혼합 sequence다. 5절 한계에서 말하는 "글자 그대로의 재현이 필요한 응용에는 부적합"의 근거가 여기 있다.그림 3 — 정확도 보존 막대그래프: 속도 주장의 안전장치
무엇을 보여 주는가. 위 패널은 70B, 아래 패널은 405B 규모다. 세로축은 원래 target model 점수를 100으로 둔 recovery ratio(%)이고 가로축은 GSM8K·HumanEval·MBPP·MGSM·NIAH·ACP 여섯 데이터셋이다. 각 그룹에는 draft model 단독(Llama-8b), JudgeDecoding, FLy, 그리고 기준이 되는 target model이 나란히 놓인다.
논문에서 맡는 역할. loose SPD는 출력이 원본과 완전히 같지 않다. 속도를 얼마나 얻었는지만 보고해서는 주장이 서지 않는다. 이 그림이 "느슨하게 받아들여도 답은 그대로다"라는 반대편 축을 맡는다. FLy는 70B에서 99.2~100%, 405B에서 99.0~99.7%를 유지한다.
가장 중요한 대비. 각 그룹 맨 왼쪽의 draft model 단독 막대다. Llama-8b는 ACP에서 69.6%(70B 패널), 60.4%(405B 패널)에 그친다. draft model 혼자서는 target 성능에 한참 못 미친다. FLy가 얻는 99% 이상은 draft를 무비판적으로 받아들여서 나온 값이 아니라 검증 장치가 실제로 작동한 결과다. 이 막대가 없으면 "그냥 draft를 다 받아들인 것 아니냐"는 반론을 막을 길이 없다.
한 가지 더. HumanEval 그룹의 빗금 막대는 JudgeDecoding의 학습 데이터에서 코딩 예시를 뺐을 때의 값(92.3%)이다. 학습 기반 loose SPD가 도메인 불일치에 취약하다는 사실을 경쟁 기법 스스로의 데이터로 보여 준다. 논문 입장에서는 꽤 효율적인 배치다.
주의할 점. 세로축이 60%부터 시작하므로 막대 높이 차이가 실제 차이보다 크게 보인다. 원점수가 아니라 보존율이라 절대 성능은 부록 B의 표 8을 함께 보는 편이 낫다. 예컨대 Llama-3.3-70B의 ACP에서는 FLy가 59.23으로 target model 57.69보다 오히려 높다. loose 검증이 성능을 올려서가 아니라 이 지표의 측정 편차 범위 안에 있다고 읽는 편이 안전하다.
그림 4 — GSM8K 사례 연구: 주장의 질적 근거
무엇을 보여 주는가. GSM8K 확률 문제 하나의 입력 prompt와 출력 전문이다. 파란 token은 drafter가 낸 것, 괄호 안 초록 token은 같은 자리에서 target이 낸 것이다. 취소선이 그어진 것은 FLy가 실제로 기각한 불일치다.
논문에서 맡는 역할. 표 2·표 3이 "얼마나 빨라졌는가"를 답한다면, 이 그림은 "무엇을 받아들이길래 빨라졌는가"를 답한다. 받아들여진 불일치는 성격이 뚜렷하다.
Ellen↔There, Then↔So, sodas↔ones, express↔convert처럼 문장의 사실관계를 전혀 바꾸지 않는 표현 선택의 차이다. 취소선이 그어진 자리는 반대로 문장의 논리 구조를 흔들 만한 곳이다.논증 구조에서의 위치. 이 사례가 GSM8K, 즉 수식 계산이 섞인 데이터셋에서 뽑혔다는 점이 중요하다. 숫자(12 − 1 = 11, 2/8 = 0.25, 0.25 × 100 = 25%)는 전부 불일치 없이 통과했다. entropy gate가 "산술 연산의 숫자처럼 사실상 답이 정해진 자리"를 지키도록 설계됐다는 2.2절의 주장이 실제 생성에서 어떻게 작동하는지 보여 주는 셈이다. 이 그림은 그림 3의 정량 지표(정확도 99% 이상)에 대응하는 정성적 증거다.
주의할 점. 잘 작동한 사례 하나를 고른 것이므로 실패 사례가 어떤 모습인지는 이 그림으로 알 수 없다. 논문에도 실패 사례 분석은 실려 있지 않다.
역자 종합 노트
이 논문의 핵심 아이디어 한 문장. target model이 스스로 오류를 고치려 드는 성질을 판정 신호로 삼으면 별도 학습 없이도 "표현만 다르고 의미는 맞는 draft"를 골라낼 수 있다.
왜 학습을 없앤 것이 성능이 아니라 강건성의 문제인가. JudgeDecoding이나 EAGLE-3는 in-domain에서 FLy보다 빠르다(표 3에서 EAGLE-3 3.83배 vs FLy 2.63배). 논문은 그 사실을 숨기지 않고 5절 한계에서 인정한다. 대신 그 우위가 학습 분포 안에서만 성립한다는 점을 그림 1과 표 2로 공격한다. 실제 서비스에서 들어오는 요청이 학습 분포를 따르리라 가정하기 어렵다면, 평균적으로 조금 느리지만 어디서도 무너지지 않는 쪽이 낫다는 논리다.
두 층 구조가 서로를 보완하는 방식. entropy gate는 사전 필터(들어가기 전에 위험한 자리를 차단), deferred window는 사후 검증(들여보낸 뒤 행동을 보고 소급 기각)이다. 표 4에서 gate를 끄면(θ = 0) recovery가 97.7%로, window를 끄면(W = 0) 93.7%로 떨어진다. window 쪽 손실이 더 크다. 실제 판별력의 상당 부분은 deferred window가 담당한다고 읽을 수 있다.
MLA가 필요해진 이유. τ가 12를 넘어가면 target 검증 횟수가 줄어드는 만큼 drafter의 순차 생성이 전체 지연을 지배한다. 표 1에서 70B 기준 draft time 245.51 ms 대 target verification 58.62 ms로, 이미 draft 쪽이 4배 이상 비싸다. 가속의 대상이 target에서 drafter로 옮겨 갔다. SPD가 충분히 잘 작동하기 시작하면 병목이 이동한다는 일반적 관찰이기도 하다.
적용을 검토할 때 확인할 것. ① 출력이 원문과 글자 단위로 같아야 하는가(그렇다면 부적합). ② 목표 batch size는 얼마인가(부록 D에서 batch 16일 때 1.78배로, batch가 커질수록 이득이 줄어든다). ③ target model이 충분히 큰가(405B에서 5배 이상, 70B에서 3배 안팎으로 규모가 클수록 유리하다).
