Back to articles
Technology Insight

Tối ưu hóa Inference cho DeepSeek-R1 trên VPS chạy CPU AMD EPYC: Bí quyết tối đa hóa Token/s

May 30, 2026

Giới thiệu xu hướng chạy DeepSeek-R1 trên hạ tầng CPU

Sự bùng nổ của mô hình suy luận dòng DeepSeek-R1 đã mở ra một kỷ nguyên mới cho trí tuệ nhân tạo nguồn mở. Với khả năng tư duy chuỗi (Chain-of-Thought - CoT) mạnh mẽ ngang ngửa các mô hình thương mại đóng độc quyền, DeepSeek-R1 trở thành mục tiêu triển khai hàng đầu của nhiều doanh nghiệp. Tuy nhiên, việc vận hành các biến thể lớn của DeepSeek-R1 trên GPU chuyên dụng thường gặp rào cản lớn về chi phí và tình trạng khan hiếm phần cứng.

Trong bối cảnh đó, việc tận dụng hạ tầng VPS (Virtual Private Server) chạy CPU AMD EPYC nổi lên như một giải pháp thay thế tối ưu chi phí cực kỳ hiệu quả. Nhờ kiến trúc số lượng nhân lớn, băng thông bộ nhớ vượt trội và tập lệnh chuyên dụng, các vi xử lý AMD EPYC (đặc biệt là thế hệ Zen 3 và Zen 4) hoàn toàn có thể gánh vác tải công việc suy luận (inference) nếu được cấu hình đúng cách. Bài viết này sẽ hướng dẫn bạn chi tiết các bước tối ưu hóa phần mềm và cấu hình hệ thống để ép xung hiệu năng, đạt số lượng Token/s tối đa cho DeepSeek-R1 trên cấu hình CPU AMD EPYC.

---

Tại sao AMD EPYC là lựa chọn lý tưởng cho CPU Inference?

Khác với các tác vụ đồ họa, suy luận LLM (Large Language Model) trên CPU phụ thuộc rất lớn vào hai yếu tố cốt lõi: Băng thông bộ nhớ (Memory Bandwidth) và Tốc độ tính toán ma trận (Vector Math Operations). Dòng chip máy chủ AMD EPYC sở hữu những lợi thế phần cứng vượt trội để đáp ứng các yêu cầu này:

  • Hỗ trợ số kênh bộ nhớ cực lớn: Các dòng AMD EPYC thế hệ mới hỗ trợ lên đến 12 kênh bộ nhớ DDR5, mang lại băng thông dữ liệu khổng lồ giúp truyền tải các tham số mô hình vào CPU với độ trễ thấp nhất.
  • Tập lệnh AVX-512 và VNNI: Kể từ kiến trúc Zen 4, AMD đã tích hợp hoàn chỉnh phần cứng hỗ trợ AVX-512, giúp tăng tốc các phép toán số nguyên và số thực dấu phẩy động thường gặp trong các mô hình lượng tử hóa (Quantized Models).
  • Dung lượng bộ đệm L3 khổng lồ (Cache-rich architecture): Kiến trúc thiết kế chiplet mang lại bộ nhớ đệm L3 cực lớn, giữ cho các dữ liệu tính toán trung gian luôn nằm gần nhân xử lý, hạn chế tối đa việc phải truy xuất liên tục từ RAM hệ thống.
---

Chiến lược tối ưu hóa phần mềm: Sử dụng Llama.cpp và Lượng tử hóa K-Quant

Để chạy DeepSeek-R1 trên CPU một cách mượt mà, việc sử dụng các framework gốc Python như PyTorch nguyên bản là không tối ưu do overhead rất lớn. Thay vào đó, Llama.cpp (viết bằng C/C++) là công cụ bắt buộc phải sử dụng nhờ khả năng can thiệp trực tiếp vào phần cứng mức thấp.

1. Lựa chọn mức lượng tử hóa (Quantization) tối ưu

DeepSeek-R1 phiên bản gốc (Full Precision) tiêu tốn hàng trăm Gigabyte VRAM/RAM. Để chạy trên VPS, chúng ta cần sử dụng định dạng GGUF với các mức lượng tử hóa K-Quant phù hợp:

  • Q4_K_M (4-bit): Mức dung hòa hoàn hảo nhất giữa dung lượng bộ nhớ và chất lượng suy luận. Giảm đáng kể dung lượng RAM yêu cầu mà không làm mất đi độ chính xác của chuỗi tư duy (CoT).
  • Q5_K_M (5-bit): Lựa chọn tốt nếu VPS của bạn có dư dả RAM và bạn cần bảo toàn tối đa năng lực suy luận logic phức tạp của các phiên bản như DeepSeek-R1-Distill-Qwen-32B hoặc bản 70B.
Lưu ý quan trọng: Tránh sử dụng các mức lượng tử hóa quá thấp như Q2_K vì chúng sẽ làm hỏng khả năng kích hoạt cơ chế Chain-of-Thought đặc trưng của dòng DeepSeek-R1, khiến mô hình trả lời lặp đi lặp lại hoặc mất logic.

2. Biên dịch Llama.cpp tối ưu riêng cho AMD EPYC (Zen 3 / Zen 4)

Thay vì tải về bản build sẵn (pre-compiled binaries), bạn bắt buộc phải biên dịch trực tiếp từ mã nguồn ngay trên VPS để trình biên dịch tự động nhận diện và tối ưu các tập lệnh đặc thù của CPU AMD:

# Cập nhật hệ thống và cài đặt công cụ build
sudo apt update && sudo apt install -y build-essential cmake git

# Clone source code llama.cpp
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp

# Biên dịch với cờ tối ưu hóa cho kiến trúc Zen 4 (Hỗ trợ AVX-512)
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release -DGGML_AVX512=ON -DGGML_AVX512_VBMI=ON -DGGML_AVX512_VNNI=ON ..
cmake --build . --config Release

Việc bật các cờ GGML_AVX512 giúp kích hoạt nhân xử lý ma trận nâng cao (IQK quantized GEMM kernels), giúp tốc độ sinh văn bản tăng từ 30% đến 50% so với việc chỉ chạy trên tập lệnh AVX2 thông thường.

---

Cấu hình kỹ thuật Runtime: Bí quyết để chạm đỉnh Token/s

Sau khi đã có file thực thi được tối ưu, việc thiết lập các tham số khi chạy mô hình là yếu tố quyết định bạn sẽ nhận được 2 Token/s hay 15 Token/s. Hãy áp dụng nghiêm ngặt các quy tắc sau:

1. Quy tắc cấu hình số lượng Thread xử lý (--threads)

Trong kiến trúc đa nhân của AMD EPYC, việc cấu hình quá nhiều thread không những không tăng tốc mà còn gây nghẽn cổ chai do xung đột bộ nhớ đệm. Không bao giờ thiết lập số thread bằng tổng số luồng ảo (vCPU) nếu CPU bật Hyper-Threading (SMT).

  • Quy tắc vàng: Thiết lập số luồng bằng đúng số nhân vật lý (Physical Cores) thực tế được cấp phát cho VPS của bạn.
  • Nếu VPS của bạn được cấp 16 vCPU độc lập (không chia sẻ), hãy thử nghiệm trong khoảng từ 8 đến 12 threads để tìm ra điểm bão hòa băng thông RAM tốt nhất.

2. Xử lý kiến trúc NUMA (Non-Uniform Memory Access)

Các hệ thống máy chủ sử dụng chip AMD EPYC thường chia các nhân CPU thành nhiều vùng NUMA node, mỗi vùng quản lý một cụm RAM riêng. Nếu một luồng xử lý ở Node A phải truy cập dữ liệu RAM thuộc quyền quản lý của Node B, hiệu năng sẽ sụt giảm nghiêm trọng.

Để giải quyết triệt để vấn đề này, hãy luôn bổ sung tham số --numa numactl hoặc sử dụng lệnh hệ thống numactl khi khởi chạy mô hình:

# Chạy mô hình thông qua numactl để cố định vùng nhớ
numactl --interleave=all ./bin/llama-cli -m deepseek-r1-distill-qwen-14b-q4_k_m.gguf -t 12 --numa distribute -p "Giải bài toán sau: ..." 

Tham số --numa distribute giúp Llama.cpp chủ động phân bổ đều trọng số mô hình lên các vùng nhớ, tận dụng tối đa băng thông đa kênh của hệ thống AMD EPYC.

---

Bảng tổng hợp cấu hình tối ưu hóa tham khảo

Dưới đây là bảng cấu hình khuyến nghị dựa trên thực nghiệm hiệu năng tối ưu cho các dòng VPS AMD EPYC hiện nay khi chạy các biến thể của DeepSeek-R1:

Biến thể DeepSeek-R1 Cấu hình VPS Tối thiểu Số Luồng (-t) Khuyến Nghị Tham số Tối Ưu Bắt Buộc Tốc độ kỳ vọng (Token/s)
R1-Distill-Qwen-8B (Q4_K_M) 8 vCPU AMD EPYC / 16GB RAM 6 hoặc 8 --numa distribute 15 - 25 Token/s
R1-Distill-Qwen-14B (Q4_K_M) 16 vCPU AMD EPYC / 32GB RAM 12 --numa distribute --batch-size 512 10 - 15 Token/s
R1-Distill-Qwen-32B (Q4_K_M) 32 vCPU AMD EPYC / 64GB RAM 24 numactl --interleave=all 5 - 8 Token/s
---

Kết luận

Việc triển khai DeepSeek-R1 trên VPS CPU AMD EPYC hoàn toàn là một phương án khả thi và mang lại hiệu quả kinh tế cao nếu bạn làm chủ được các kỹ thuật tối ưu hóa phần cứng. Bằng cách áp dụng việc biên dịch native với cờ AVX-512, kiểm soát số lượng luồng xử lý chính xác và cấu hình quản lý bộ nhớ NUMA phù hợp, bạn có thể giải phóng toàn bộ sức mạnh ẩn giấu của kiến trúc AMD EPYC, biến một hệ thống CPU thuần túy thành một cỗ máy suy luận AI mạnh mẽ và bền bỉ.

Tối ưu hóa Inference cho DeepSeek-R1 trên VPS chạy CPU AMD EPYC: Bí quyết tối đa hóa Token/s | DPTCloud