Phase 10: LLMs from Scratch

Việc giải mã giả định và EAGLE-3

Giai đoạn 7 · Bài học 16 chứng minh toán học: quy tắc từ chối Leviathan bảo tồn phân phối xác minh chính xác. Bài học này là quan điểm tập hợp đào tạo về việc giải mã đầu cơ sản xuất năm 2026. EAGLE-3 biến mô hình dự thảo từ một ước tính rẻ thành một mạng lưới nhỏ được xây dựng riêng được đào tạo trên các trạng thái ẩn của người xác minh, sau đó thêm một vòng kiểm tra thời gian đào tạo phù hợp với phân phối tàu và suy luận của nó. Kết quả: tăng tốc từ 3x đến 6.5x, chấp nhận tỷ lệ trên 0,9 trên mỗi token trên chat, không có sự thỏa hiệp phân phối. Mỗi đống suy luận sản xuất vào năm 2026 đều gửi theo mặc định.

Type: Build

Languages: Python (stdlib)

Prerequisites: Phase 7 · 16 (speculative decoding math), Phase 10 · 12 (inference optimization)

Time: ~75 minutes

Mục tiêu học tập

  • Giới thiệu định lý Leviathan trong một câu và chứng minh rằng vòng đầu cơ tạo ra các mẫu được phân phối giống nhau cho người xác minh.
  • Đi theo tiến trình hai năm từ việc giải mã đặc điểm vani (Leviathan 2023) qua EAGLE, EAGLE-2, và EAGLE-3 và đặt tên giới hạn chính xác từng bước được loại bỏ.
  • Lập toán tốc độ dự kiến từ tỷ lệ chấp nhận αvà tỷ lệ chi phí dự thảo đối với kiểm tra viên c, và chọn chiều dài dự thảo tối ưu Ncho mỗi chế độ.
  • Thực hiện vòng lặp đầu cơ hoàn toàn từ đầu: thảo, xác minh, từ chối-chví mẫu từ phần còn lại, xoay bộ nhớ cache KV trở lại khi từ chối, phát hành token tiền thưởng khi chấp nhận đầy đủ.

Vấn đề

Tính toán tự động xuống cấp trên mô hình 70B chạy với khoảng 35 token mỗi giây trên H100. GPU không gần như bão hòa. Độ băng thông bộ nhớ là trần: mỗi token tải 70B trọng từ HBM, thực hiện một bước toán học, và tạo ra một float. Các đơn vị tính toán ngồi hầu hết vô hiệu.

Việc giải mã dự đoán biến điều đó thành một vấn đề thông suất mà bạn có thể giải quyết.Ntoken trong NCác thẻ đi trước nhỏ.NNếu phân phối của người xác minh tại vị trí i(trong một nghĩa thống kê chúng ta sẽ làm chính xác), chúng ta chấp nhận; nếu không, chúng ta từ chối và lấy mẫu một sự điều chỉnh từ phân phối dư.N+1nhận token thay vì một.

Lý thuyết quan trọng là Leviathan, Kalman, Matias (ICML 2023): phân phối đầu ra giống như việc lấy mẫu từ người xác minh trực tiếp sẽ tạo ra. Không gần như.

Những gì giai đoạn 7 · Bài học 16 đã cung cấp cho bạn là toán học. Những gì bài học này cung cấp cho bạn là tập luyện. Một bản thảo tốt có giá trị tăng tốc gấp 2 lần so với một bản thảo rẻ. EAGLE, EAGLE-2, và EAGLE-3 (Li et al., 20242025) đã biến "đề án = phiên bản nhỏ hơn của cùng một mô hình" thành một ngành kỹ thuật chính xác.

Khái niệm

Các không biến đổi: lấy mẫu từ chối Leviathan

Để p(t)là phân phối bản thảo cho biểu tượng tiếp theo với một số tiền đề, và q(t)Hãy lấy mẫu một bản mã hóa.d ~ pHãy chấp nhận với khả năngmin(1, q(d) / p(d))Khi bị từ chối, mẫu từ phân phối dư thừa (q - p)_+ / ||(q - p)_+||_1Các mẫu được phân phối theo quy định của quy định:qĐiều này đúng bất kể xấu xí đến mức nào.plà càng tệ, bạn càng từ chối, nhưng kết quả vẫn chính xác.

Đọc Ncủa các cuộc gọi này trở lại trở lại sử dụng một xác minh chuyển tiếp chuyển tiếp prefix + d_1 + ... + d_N. Người xác minh trả lại q_1, q_2, ..., q_{N+1}cùng lúc. Đi từ trái sang phải.j, mẫu từ residual(q_j, p_j)Khi chấp nhận hoàn toàn, lấy một token tiền thưởng từq_{N+1}- Tôi không biết.

Điều gì quyết định tốc độ

Để αlà tỷ lệ chấp nhận dự kiến cho mỗi token được dự thảo.c = cost(draft) / cost(verifier)Số lượng token được chấp nhận được dự kiến cho mỗi người xác minh trước là:

E[accepted] = (1 - α^(N+1)) / (1 - α)

Thời gian tường dự kiến tổng cộng cho mỗi token được chấp nhận là (N * c + 1) / E[accepted]Giảm thiểu điều đó với sự quan tâm của Nvà anh sẽ có điểm thích hợp.α = 0.8, c = 0.05: tối ưu Nlà khoảng 57, tốc độ là 3.2x.α = 0.95, c = 0.02: tối ưu Nlà khoảng 8x10, tăng tốc đẩy 5x.

Lòng đòn bẩy lớn nhất làα- Từ α = 0.6(tạo bản vanilla) đến α = 0.9(Eagle-3) ở số cố định N = 5đưa bạn từ 2.2 dự kiến được chấp nhận token cho mỗi xác minh tiếp tục đến 4.1. gần 2x thông qua nhiều hơn từ cùng một xác minh.

Sự tiến triển hai năm

Vanilla speculative (Leviathan, 2023).Mô hình dự thảo là một LLM nhỏ hơn được đào tạo độc lập từ cùng một gia đình.α ≈ 0.6, tăng tốc khoảng 2x tối đa.

EAGLE-1 (Li et al., 2024).Draft là một bộ biến đổi nhỏ thường là một hoặc hai lớp lấy trạng thái ẩn lớp cuối cùng của người xác minh như là đầu vào và dự đoán mã thông báo tiếp theo trực tiếp. Bởi vì bản thảo nhìn thấy đại diện tính năng của người xác minh, phân phối của nó gần hơn nhiều với người xác minh. αtăng lên 0,70,8.

EAGLE-2 (Li et al., 2024).Thêm một cây dự thảo động: thay vì đề xuất một chuỗi đơn của Ncác token, đề xuất một cây nhỏ của ứng cử viên, ghi điểm mỗi người với xác minh trong một lần đi trước (tránh tâm cây), và đi theo con đường có khả năng cao nhất.αmỗi token đường được chấp nhận tăng lên trên 0,85.

EAGLE-3 (Li et al., 2025, NeurIPS).Hai thay đổi nữa. Đầu tiên, loại bỏ mất tính năng dự đoán hoàn toàn EAGLE-1/2 đào tạo bản thảo để phù hợp với các trạng thái ẩn của người xác minh, điều này giới hạn bao nhiêu dữ liệu giúp. Eagle-3 được đào tạo trực tiếp theo dự báo token. Thứ hai, kiểm tra thời gian đào tạo (TTT): trong quá trình đào tạo dự thảo, cung cấp lại dự đoán trước của dự thảo như đầu vào qua nhiều bước, giống như cách nó hoạt động khi suy luận. Điều này sắp xếp phân phối tàu và thử nghiệm và ngăn chặn sự tích lũy lỗi. Tốc độ đo lường: lên đến 6,5x trên chat, cải thiện thông qua 38% tại lô 64 trong SGLang trên H100.

KV cache rollback

Truyển chứng mở rộng cache KV của người xác minh bằng NNếu từ chối xảy ra ở vị trí j, cache chứa vị trí trước j-1Hai thực hiện phổ biến: viết cho một bộ đệm cào và cam kết khi chấp nhận (vLLM, TensorRT-LLM), hoặc giữ một bộ nhớ cache KV vật lý cộng với một chiều dài hợp lý và cắt giảm trên từ chối.

Để tìm kiếm cây EAGLE-2, người xác minh chạy sự chú ý bằng một mặt nạ không gây nguyên nhân tôn trọng topology cây.

Dự thảo kiến trúc vào năm 2026

StrategyDraft typeαSpeedupTraining cost
VanillaSeparate small LLM0.55-0.701.8-2.3×None (reuse existing small model)
MedusaExtra LM heads on verifier0.65-0.752-3×~1B SFT tokens
EAGLE-11-layer transformer on hidden states0.70-0.802.5-3×~60B tokens
EAGLE-2EAGLE-1 + dynamic draft tree0.80-0.883-4×~60B tokens
EAGLE-3Multi-layer feature fusion + TTT0.88-0.923.5-6.5×~60-200B tokens
LookaheadNo draft (Jacobi iteration)N/A1.3-1.6×None

Trong sản xuất năm 2026, vLLM và SGLang mặc định là EAGLE-3 khi có sẵn, EAGLE-2 nếu không. TensorRT-LLM có con đường Medusa nhanh nhất cho các mô hình công cộng Meta và NVIDIA. llama.cpp cung cấp vanilla draft cho việc triển khai CPU.

Hãy xây dựng nó

Nhìn xemcode/main.pyĐây là vòng đầu cơ Leviathan đầy đủ với tất cả các phần: draft-of-N, xác minh vượt qua song song, từ chối mỗi vị trí, lấy mẫu dư thừa, token tiền thưởng, KV rollback, và xác minh bằng chứng rằng phân phối đầu ra phù hợp với lấy mẫu trực tiếp từ q- Tôi không biết.

Bước 1: quy tắc từ chối

pythondef accept(q_prob, p_prob, u):
    if p_prob <= 0:
        return True
    return u < min(1.0, q_prob / p_prob)

Bước 2: phân phối dư

pythondef residual(q, p):
    raw = [max(0.0, qi - pi) for qi, pi in zip(q, p)]
    s = sum(raw)
    if s == 0:
        return list(q)
    return [r / s for r in raw]

Bước 3: một bước đầu cơ đầy đủ

  • spec_stepDự thảo chức năng Ntoken từ p, sau đó xác minh tất cả chúng trong một song songqđánh giá. Đối với mỗi token được soạn thảo, nó áp dụng quy tắc từ chối, và trên lần từ chối đầu tiên nó lấy mẫu sửa đổi từ phần còn lại. Nếu mọi thứ chấp nhận, nó phát hành một token thưởng từ q_{N+1}- Tôi không biết.

Bước 4: Cụ thể hóa kế toán KV

Máy mô phỏng theo dõi một logickv_lengthKhi chấp nhậnkDự thảo,kv_length += k. Về việc từ chối vị trí j, bộ nhớ cache đã được viết quá khứ j, nhưng chiều dài hợp lý được thiết lập đến prefix_length + j + 1 một vượt qua mã hiệu sửa chữa.

Bước 5: kiểm tra Leviathan

Thực hiện 50.000 bước đầu cơ. Đếm phân phối kinh nghiệm của các token được chấp nhận. So sánh với 50.000 mẫu trực tiếp từ qCác số liệu chi-quadrat nên là dưới giá trị quan trọng.

Bước 6: tăng tốc so với α

Thử chất lượng dự thảo bằng cách làm rối loạn pxa khỏi qở độ lớn khác nhau.α, sau đó lập biểu đồ các token dự kiến cho mỗi cuộc gọi xác minh như một hàm của αvà NMã in một bảng cho thấy cách chất lượng dự thảo lớp EAGLE-3 (α ≈ 0.9) mở khóa 45 token mỗi cuộc gọi xác minh.

Sử dụng nó

Mức sản xuất vllm servevới EAGLE-3:

bashvllm serve meta-llama/Llama-3.3-70B-Instruct \
  --speculative-config '{
    "model": "yuhuili/EAGLE3-LLaMA3.3-Instruct-70B",
    "num_speculative_tokens": 5,
    "method": "eagle3"
  }'

SGLang với EAGLE-3 tại lô 64 trên H100: khoảng 1,38x dung lượng hơn so với lô 64 decoding vanilla, theo giấy EAGLE-3.

Khi nào để tìm kiếm giải mã giả định:

  • Bất kỳ tải trọng làm việc trò chuyện tương tác nào mà độ trễ p50 quan trọng hơn là thông qua đỉnh.
  • Tạo mã và đầu ra cấu trúc (JSON, SQL). αlà trên 0,9 vì phân phối mục tiêu là rất dự đoán.
  • Tạo ra hình thức dài (người dùng hàng ngàn token) và tăng tốc được giảm giá vẫn tiếp tục trả tiền.

Khi nào không nên:

  • Mô hình rất nhỏ (< 3B).
  • Các bộ nhớ nhỏ của mô hình dự thảo có thể không đáng giá.
  • Tiêu chuẩn tạo mẫu nhiệt độ rất cao ở nơi αsụp đổ.

Chuyển nó

Bài học này sẽ mang lại kết quả outputs/skill-eagle3-tuner.md. Với khối lượng công việc suy luận (tiêu mẫu, kích thước lô, độ trễ mục tiêu, hồ sơ nhiệm vụ), nó khuyên bạn nên một chiến lược giải mã phỏng đoán và các tham số điều chỉnh (phát thảo, N, độ sâu cây, chuyển đổi nhiệt độ).

Các bài tập

  1. Đi chạycode/main.py- Đảm nhận số liệu chi-quad trên kiểm tra phân phối Leviathan ở dưới 95% giá trị quan trọng trên 50.000 mẫu.
  1. Tháo Ntừ 1 đến 10 với αđược giữ ở mức 0,9 và cđược giữ tại 0.04. Bước biểu tượng dự kiến cho mỗi cuộc gọi xác minh và thời gian tường thực tế cho mỗi token. Tìm NGiúp cho tôi biết hình dạng của đường cong.
  1. Thay đổi mã để mô phỏng tìm kiếm cây EAGLE-2: tại mỗi bước, bản thảo đề xuất một cây hình [2, 2, 2](tám con đường ứng cử viên). Người xác minh chạy một lần, và con đường được chấp nhận có khả năng cao nhất thắng.αmỗi lá và tổng số token mỗi cuộc gọi xác minh. So sánh với mã hóa kỹ thuật chuỗi tuyến tính với tính toán tương đương.
  1. Thực hiện mô phỏng quay lại KV đợt cho hai chuỗi đồng thời.kv_lengthđược cập nhật theo trình tự và không có công việc nào bị lãng phí.
  1. Đọc phần 4 (Thử nghiệm thời gian đào tạo) của bài báo EAGLE-3. Giải thích bằng hai câu tại sao việc đào tạo sơ đồ ngây thơ mà không có TTT bị thiên vị tiếp xúc, và tại sao việc cung cấp dự đoán của bản thân cho bản thảo trong quá trình đào tạo sẽ khắc phục nó. Kết nối điều này với các tài liệu lấy mẫu theo lịch trình trong seq2seq.

Các điều khoản chính

TermWhat people sayWhat it actually means
Leviathan rule"min(1, q over p)"Bernoulli accept/reject with probability min(1, q(d)/p(d)), preserves the verifier distribution exactly when you sample from the residual on rejection
Residual distribution"(q minus p) plus, normalized"(q - p)_+ clamped at zero and renormalized — the correct distribution to sample from on rejection
Acceptance rate α"how often the draft is right"Expected per-token Bernoulli-success probability under the rejection rule; governs all speedup math
EAGLE-1"hidden-state draft"Tiny transformer draft conditioned on the verifier's last-layer hidden state (Li et al., 2024)
EAGLE-2"dynamic draft tree"EAGLE-1 plus a tree of candidate continuations scored with tree attention in one verifier pass
EAGLE-3"training-time test"Drops the feature-prediction loss, trains on direct token prediction with the draft fed its own outputs during training
Training-time test (TTT)"exposure bias fix"Run the draft autoregressively during training so train and test input distributions match — the direct analog of scheduled sampling
KV rollback"undo rejected drafts"Bookkeeping that resets the verifier's KV cache to the accepted-prefix length after a rejection
Bonus token"the free one"When all N drafts accept, sample one extra from q_{N+1} at no additional verifier cost
Tree attention"verify many candidates at once"Attention with a non-causal mask that respects the topology of a draft tree; computes q_i for every node in the tree in one forward pass

Đọc thêm

This free lesson is part of the AI Engineering from Scratch curriculum. Read the full explanation, run the lesson code, and verify the result in the interactive reader or from the repository source.

Browse the complete course catalog or open this lesson on GitHub.