Giải mã Speculative Decoding trên CPU: Tăng tốc sinh token gần 4 lần với DFlash
Kỹ thuật speculative decoding đang biến sức mạnh CPU nhàn rỗi thành tốc độ sinh token vượt trội mà không làm thay đổi chất lượng đầu ra của mô hình. Bài viết phân tích cơ chế hoạt động của DFlash, một phương pháp giải mã suy đoán tiên tiến, qua thử nghiệm thực tế trên vLLM với mô hình Qwen3.5-9B và bộ xử lý Intel Xeon 6. Kết quả cho thấy tốc độ tăng gấp 3,92 lần so với phương pháp tự hồi quy truyền thống, đồng thời giảm tới 74% chi phí cho mỗi token tạo ra, mở ra hướng đi mới cho việc tối ưu hóa suy luận AI trên nền tảng CPU.

Giải mã Speculative Decoding trên CPU: Tăng tốc sinh token gần 4 lần với DFlash
Trong bối cảnh các mô hình ngôn ngữ lớn (LLM) ngày càng phổ biến, việc tối ưu hóa tốc độ suy luận (inference) trên CPU đang trở thành một bài toán quan trọng, đặc biệt khi chi phí GPU ngày càng đắt đỏ. Kỹ thuật speculative decoding (giải mã suy đoán) nổi lên như một giải pháp đột phá, cho phép tận dụng tối đa sức mạnh tính toán còn dư thừa của CPU để tăng tốc quá trình sinh token mà không làm thay đổi kết quả đầu ra của mô hình. Theo thử nghiệm mới nhất từ Intel, phương pháp DFlash được tích hợp trong vLLM v0.25.0 đã đạt được hiệu suất ấn tượng: tốc độ sinh token trung bình tăng lên 3,92 lần so với phương pháp tự hồi quy (autoregressive) truyền thống trên mô hình Qwen3.5-9B, đồng thời giảm tới 74% chi phí cho mỗi token tạo ra.
Speculative Decoding là gì?
Một bộ giải mã tự hồi quy điển hình hoạt động theo cơ chế tuần tự: nó tạo ra một token, thêm vào ngữ cảnh, rồi chạy lại để dự đoán token tiếp theo. Quá trình này tạo ra sự phụ thuộc chuỗi (serial dependency) khiến việc tối ưu hóa bằng kernel trở nên bất khả thi. Mỗi bước sinh token yêu cầu chuyển toàn bộ tham số của mô hình từ bộ nhớ đến đơn vị tính toán, khiến hoạt động này bị giới hạn bởi băng thông bộ nhớ (memory bound) và để lại phần lớn sức mạnh tính toán ở trạng thái nhàn rỗi, đặc biệt ở mức độ đồng thời (concurrency) thấp.
Speculative decoding giải quyết vấn đề này bằng cách sử dụng một mô hình "draft" (mô hình nháp) nhẹ để đề xuất nhiều token tương lai cùng lúc. Mô hình chính (target model) sẽ kiểm tra tất cả các token này trong một lượt xử lý duy nhất, chấp nhận chuỗi tiền tố dài nhất hợp lệ, sửa token sai đầu tiên, và nếu tất cả đều được chấp nhận, sẽ tạo thêm một token thưởng.
Khác với các kỹ thuật tối ưu có mất mát (lossy) như lượng tử hóa (quantization), speculative decoding là một kỹ thuật không mất mát (lossless) bởi vì cơ chế lấy mẫu bác bỏ (rejection sampling) sẽ đảm bảo phân phối đầu ra cuối cùng khớp với mô hình gốc.
Mô tả chu trình speculative decoding
Hình 1: Giải mã thông thường phải trả phí cho một lượt xử lý target cho mỗi token. Speculative decoding dành một lượt draft rẻ tiền, xác minh các ứng viên cùng nhau, và cam kết chỉ theo tiền tố được target chấp thuận cùng với token sửa lỗi hoặc token thưởng.
Kỹ thuật này đặc biệt phù hợp với suy luận trên nền tảng Intel Xeon. Khi batch size nhỏ, quá trình giải mã thường mất nhiều thời gian để di chuyển trọng số mô hình từ bộ nhớ, trong khi khối lượng công việc trên mỗi trọng số lại rất ít. Quá trình xác minh (verification) biến các phép toán ma trận-vector (vốn dựa trên Intel AVX-512) thành các phép toán ma trận-ma trận (được gia tốc bởi Intel AMX). Điều này có nghĩa là trọng số của mô hình target, sau khi được tải, sẽ được tái sử dụng cho nhiều vị trí ứng viên khác nhau, tối ưu hóa việc sử dụng băng thông bộ nhớ.
DFlash: Kết hợp Block Diffusion và KV Injection
DFlash là một phương pháp speculative decoding mới được phát triển bởi phòng thí nghiệm Z Lab. Thay vì sinh token draft tuần tự như các thuật toán cũ, DFlash dự đoán cả một khối (block) token trong một lượt xử lý duy nhất sử dụng một mô hình draft dạng block-diffusion nhỏ gọn. Điểm đặc biệt là DFlash còn tiêm các đặc trưng (features) ẩn từ mô hình target vào bộ nhớ đệm KV (KV cache) của mô hình draft, giúp cải thiện chất lượng draft mà không cần mô hình draft phải tự tái tạo toàn bộ ngữ cảnh.
Kiến trúc hệ thống DFlash
Hình 2: Thiết kế suy luận DFlash. Các đặc trưng ngữ cảnh ẩn từ mô hình target được kết hợp và tiêm vào bộ đệm KV của từng lớp draft.
Tỷ lệ chấp nhận (acceptance rate) phụ thuộc vào mô hình và thường cao hơn đối với các prompt có cấu trúc (như code hoặc toán học) so với hội thoại thông thường. Nếu mô hình target là mô hình chuyên biệt cho một lĩnh vực, tỷ lệ chấp nhận sẽ giảm khi phải xử lý các prompt không liên quan. Do đó, không nên kỳ vọng hiệu suất tăng khi benchmark một mô hình viết code trên tập dữ liệu hội thoại thông thường.
Để kích hoạt DFlash với vLLM, người dùng chỉ cần thêm một cờ cấu hình đơn giản:
docker run --rm \
--name vllm-cpu-server \
--network host --ipc host --security-opt seccomp=unconfined --cap-add SYS_NICE \
-e VLLM_TARGET_DEVICE=cpu \
-e VLLM_CPU_KVCACHE_SPACE=40 \
-v ~/.cache/huggingface:/root/.cache/huggingface \
vllm/vllm-openai-cpu:latest \
Qwen/Qwen3.5-9B \
--dtype bfloat16 \
--trust-remote-code \
--speculative-config '{"method": "dflash", "model": "z-lab/Qwen3.5-9B-DFlash", "num_speculative_tokens": 15}'
Số lượng token draft (tham số num_speculative_tokens) là một tham số máy chủ, giá trị tối ưu phụ thuộc vào nhiều yếu tố như mô hình target, mô hình draft, bộ dữ liệu benchmark, mức độ đồng thời và cả phần cứng của bạn.
So sánh tốc độ sinh token
Hình 3: Qwen3.5-9B tạo cùng một phản hồi bằng phương pháp tự hồi quy (trái) và DFlash với 15 token dự đoán (phải) trên instance r8i.16xlarge sử dụng Intel Xeon 6. So sánh đơn prompt này chỉ mang tính minh họa; Bảng 1 báo cáo kết quả trên các tập dữ liệu rộng hơn.
Kết quả thử nghiệm và phân tích chi tiết
Intel đã tiến hành thử nghiệm trên instance AWS r8i.16xlarge với vi xử lý Intel Xeon 6975P-C, một CPU với 32 lõi (core). Kết quả cho mô hình Qwen3.5-9B ở mức độ đồng thời bằng 1 và độ dài đầu ra 128 token như sau:
| Bộ dữ liệu | Baseline (tok/s) | DFlash (tok/s) | Tăng tốc | Độ dài chấp nhận | Giảm chi phí |
|---|---|---|---|---|---|
| GSM8K (Toán) | 9,95 | 41,42 | 4,16x | 7,08 | 75,98% |
| HumanEval (Code) | 9,88 | 39,41 | 3,99x | 6,93 | 74,93% |
| MT-Bench (Hội thoại) | 9,95 | 35,89 | 3,61x | 6,01 | 72,28% |
| Trung bình | 9,93 | 38,91 | 3,92x | 6,67 | 74,40% |
Bảng 1: Tốc độ và mức giảm chi phí. Việc giảm chi phí sinh token được đo ở mức độ đồng thời cố định trên cùng một instance, do đó không phụ thuộc vào giá thuê theo giờ.
Hiểu các số liệu của Speculative Decoding
vLLM báo cáo nhiều thống kê mô tả mức độ hiệu quả của việc chấp nhận các đề xuất của DFlash. Xem xét quá trình chạy trên tập HumanEval với num_speculative_tokens là 15:
- Tỷ lệ chấp nhận (%): 39,56
- Độ dài chấp nhận: 6,93
- Số lượt draft (Drafts): 381
- Số token draft: 5715
- Số token được chấp nhận: 2261
Con số 381 lượt draft nghĩa là có 381 bước xác minh đã tạo ra tổng cộng 2560 token đầu ra. Nếu dùng phương pháp tự hồi quy, ta sẽ cần khoảng 2560 lượt xử lý tuần tự. Vì mỗi khối chứa 15 đề xuất, tổng số token draft là 15 x 381 = 5715. Trong đó, mô hình target đã chấp nhận 2261 token, tạo ra tỷ lệ chấp nhận 39,56%. Trung bình mỗi lượt xử lý tạo ra 5,93 token draft được chấp nhận. Cộng với một token target (dùng để sửa lỗi hoặc token thưởng), ta có độ dài chấp nhận là 6,93.
Các số liệu theo vị trí cho thấy xác suất sống sót của các đề xuất:
- Vị trí 0: 85,83%
- Vị trí 4: 51,44%
- Vị trí 14: 11,81%
Đây là xác suất sống sót (hay chấp nhận). Một vị trí n được chấp nhận nghĩa là mô hình target đã chấp nhận toàn bộ tiền tố speculative qua vị trí n, vì vậy cột này giảm dần theo cấu trúc. Độ dài chấp nhận trung bình 6,93 không có nghĩa là nên rút ngắn khối xuống còn 6 token, vì phân phối này bị lệch: 14% số khối bị bác bỏ toàn bộ và 12% được chấp nhận hoàn toàn. Việc rút ngắn sẽ loại bỏ tất cả các vòng mà target có thể chấp nhận các tiền tố dài hơn. Tuy nhiên, cũng không thể tăng kích thước khối vô hạn vì phần đuôi bị bác bỏ vẫn tiêu tốn tài nguyên drafting và verification.
Bài học chính và tương lai của kỹ thuật này
Speculative decoding không làm cho sự phụ thuộc tự hồi quy biến mất; nó chuyển công việc tương lai không chắc chắn vào một quá trình đề xuất song song rẻ hơn và cho phép mô hình target xác thực nhiều vị trí cùng một lúc. Việc lấy mẫu bác bỏ đảm bảo rằng một đề xuất kém chỉ tốn thời gian chứ không ảnh hưởng đến chất lượng đầu ra.
DFlash cải thiện quá trình đề xuất theo hai cách bổ sung: Block diffusion thay thế nhiều lần gọi draft tuần tự bằng một lần gọi khối song song, và KV injection cung cấp cho mỗi lớp draft quyền truy cập trực tiếp vào biểu diễn ngữ cảnh của target, tăng khả năng chấp nhận mà không biến drafter thành một LLM lớn khác. Sự kết hợp này là lựa chọn tự nhiên cho suy luận CPU ở batch nhỏ, nơi việc di chuyển trọng số của mô hình target chiếm ưu thế.
Những lợi ích này càng trở nên rõ rệt trong các tác vụ agentic (tác tử AI), nơi mô hình được gọi nhiều lần trong các vòng lặp đa bước. Chính vì vậy, speculative decoding là nền tảng cho các bộ công cụ agentic mã nguồn mở của Intel như Intel AI for Enterprise Agent Toolkit và Intel AI SuperClaw.
Lời khuyên từ tác giả: Hãy sử dụng độ dài chấp nhận (acceptance length) thay vì tỷ lệ chấp nhận (acceptance rate) để so sánh tiến trình của mỗi vòng xác minh, nhưng hãy chọn kích thước khối dựa trên thông lượng hoặc độ trễ đo được thực tế. Để tối ưu
num_speculative_tokens, bạn nên benchmark nhiều kích thước khối khác nhau trên bộ mô hình, dữ liệu, phần cứng và mức độ đồng thời dự kiến.
Các nghiên cứu về kỹ thuật draft song song đang tiến triển vượt xa DFlash. DSpark bổ sung giai đoạn sửa lỗi bán tự hồi quy và xác minh độ dài biến đổi, trong khi DFlash 2 sử dụng bộ chọn đường dẫn nhẹ để theo dõi một con đường mạch lạc xuyên qua các ứng viên hàng đầu của mỗi vị trí và các phép tích chập cục bộ để giảm hiện tượng suy giảm độ chính xác của draft ở cuối mỗi khối. Đây là một lĩnh vực đáng để các kỹ sư và nhà phát triển AI tại Việt Nam theo dõi, bởi nó mở ra hướng tối ưu hóa mạnh mẽ cho hạ tầng suy luận AI mà không cần phụ thuộc hoàn toàn vào GPU đắt tiền.
Tham khảo
- Jian Chen, Yesheng Liang, and Zhijian Liu, DFlash: Block Diffusion for Flash Speculative Decoding (2026), PMLR 306
- Inco AI, DFlash 2: Keep Drafting Parallel (2026)
- DFlash Model Checkpoints on Hugging Face
- vLLM DFlash CPU Support
- vLLM Speculative Decoding Documentation
Lưu ý: Thông số cấu hình thử nghiệm: 1 nút, Amazon EC2 r8i.16xlarge, 1x Intel Xeon 6975P-C, 32 lõi, HT On, Turbo On, tổng bộ nhớ 512GB DDR5 7200MT/s, Ubuntu 24.04.4 LTS, vLLM 0.26.1rc1.dev124+gb88916617. Kiểm thử bởi Intel vào tháng 7/2026. Hiệu suất có thể thay đổi tùy theo cách sử dụng, cấu hình và các yếu tố khác.


