Quay lại danh sách
Tin tức công nghệ

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

30 tháng 5, 2026

Giới thiệu: Xu hướng dịch chuyển sang Inference trên CPU Enterprise

Trong kỷ nguyên trí tuệ nhân tạo, việc triển khai các mô hình ngôn ngữ lớn (LLM) cấu trúc MoE (Mixture-of-Experts) như DeepSeek-R1 luôn là một bài toán chi phí đau đầu đối với các doanh nghiệp. Mặc dù GPU vẫn là 'vị vua' về hiệu năng thuần túy, nhưng sự khan hiếm và chi phí vận hành đắt đỏ của phần cứng tăng tốc đã thúc đẩy một xu hướng mới: Tận dụng cơ sở hạ tầng CPU máy chủ hiện có.

Các dòng CPU vi xử lý AMD EPYC™ thế hệ mới sở hữu mật độ lõi cực cao và băng thông bộ nhớ vượt trội, biến các hệ thống VPS (Virtual Private Server) cao cấp trở thành một nền tảng thay thế hoàn hảo. Bài viết này sẽ hướng dẫn bạn các kỹ thuật chuyên sâu để cấu hình và tối ưu hóa tối đa số lượng Token trên giây (Token/s) khi chạy cụm mô hình suy luận DeepSeek-R1 trên kiến trúc CPU AMD EPYC.

---

1. Bản chất kiến trúc DeepSeek-R1 và Thách thức Băng thông Bộ nhớ (Memory Bandwidth)

DeepSeek-R1 là một mô hình suy luận mạnh mẽ nhưng đi kèm cấu trúc tham số khổng lồ (lên tới 671B tham số đối với phiên bản đầy đủ, hoặc các phiên bản Distilled nhỏ gọn hơn như Qwen-32B). Đối với các mô hình dạng này, giai đoạn Autoregressive Decoding (sinh từng token tiếp theo) phụ thuộc hoàn toàn vào băng thông bộ nhớ (Memory Bandwidth bound) chứ không hẳn là sức mạnh tính toán thuần túy (Compute bound).

Quy luật cốt lõi: Để sinh ra một token, CPU phải nạp toàn bộ trọng số (weights) của mô hình từ RAM vào bộ nhớ đệm (Cache). Do đó, tốc độ sinh token tỷ lệ thuận với tốc độ truyền tải dữ liệu của hệ thống RAM nội bộ.

Các dòng CPU AMD EPYC (đặc biệt là thế hệ 4 và thế hệ 5) hỗ trợ lên tới 12 kênh bộ nhớ DDR5, mang lại băng thông cực lớn. Tuy nhiên, nếu không cấu hình đúng cách, bạn sẽ gặp hiện tượng nghẽn cổ chai nghiêm trọng do kiến trúc đa chip (MCM) và thiết kế NUMA của dòng CPU này.

---

2. Kỹ thuật cấu hình NUMA: Chìa khóa vàng tránh sụt giảm hiệu năng

Kiến trúc bộ nhớ không đồng nhất (NUMA - Non-Uniform Memory Access) trên máy chủ AMD EPYC chia CPU và bộ nhớ thành các 'Node' khác nhau. Nếu một luồng xử lý ở Node 0 phải truy cập dữ liệu RAM thuộc quản lý của Node 1, độ trễ (latency) sẽ tăng vọt và làm giảm nghiêm trọng số lượng Token/s.

Chiến lược phân chia Instance và Core Binding

Thay vì chạy một tiến trình duy nhất (ví dụ: một server vLLM hoặc Llama.cpp) bao phủ toàn bộ các lõi của CPU (ví dụ: 128 cores), việc phân tách tài nguyên sẽ đem lại hiệu năng tối ưu hơn nhiều. Thực tế cấu hình cho thấy việc ép xung chéo các node gây nghẽn liên lạc (inter-socket barrier).

Hãy sử dụng công cụ numactl để ràng buộc chặt chẽ tiến trình xử lý vào một CPU Node cố định:

  • Xác định kiến trúc NUMA: Chạy lệnh numactl --hardware để xem danh sách lõi và các vùng bộ nhớ tương ứng.
  • Khởi chạy phân tách: Chia tải thành các instance độc lập, mỗi instance xử lý một phần lượng request và được cố định vào các core cục bộ.

Ví dụ câu lệnh khởi chạy tối ưu hóa liên kết vùng nhớ:

numactl --cpunodebind=0 --membind=0 vllm serve "deepseek-ai/DeepSeek-R1-Distill-Qwen-32B" --port 8000

Bằng cách ép tiến trình chỉ đọc/ghi trên các thanh RAM có kết nối trực tiếp với lõi CPU đang chạy, bạn giảm thiểu được độ trễ truyền tải dữ liệu nội bộ qua Bus dẫn.

---

3. Kích hoạt Sức mạnh Phần mềm: AMD ZenDNN và Tối ưu hóa vLLM Engine

Để tận dụng tối đa tập lệnh AVX-512 hoặc AMX-like trên các dòng CPU AMD, việc sử dụng các cấu hình phần mềm mặc định là chưa đủ. Bạn cần tích hợp hệ sinh thái phần mềm tối ưu hóa chuyên biệt.

Tận dụng thư viện ZenDNN

Thư viện AMD ZenDNN (Zen Deep Neural Network) được thiết kế đặc biệt để tăng tốc các thư viện Deep Learning trên kiến trúc lõi Zen. Phiên bản ZenDNN mới hỗ trợ tích hợp sâu vào backend của llama.cpp và vLLM (thông qua ZenTorch Plugin).

  • Giúp tăng tốc các phép toán nhân ma trận (GEMM) nhờ tối ưu hóa kích thước khối dữ liệu phù hợp với bộ nhớ đệm L3 Cache của AMD EPYC.
  • Cải thiện hiệu năng xử lý lên tới 200%+ so với các backend PyTorch mặc định không qua tối ưu.

Cấu hình Biến môi trường quan trọng cho vLLM và Llama.cpp

Khi chạy DeepSeek-R1 trên môi trường vLLM phiên bản mới, hãy luôn kích hoạt tính năng đóng băng tham số (Parameter Freezing). Tính năng này hướng dẫn runtime đối xử với trọng số mô hình như một vùng dữ liệu bất biến, cho phép trình biên dịch thực hiện tối ưu hóa cấu trúc đồ thị tính toán.

Hãy thiết lập biến môi trường sau trước khi vận hành:

export TORCHINDUCTOR_FREEZING=1

Ngoài ra, đối với các công cụ dựa trên GGML như llama.cpp, số lượng luồng (-t hoặc --threads) không nên đặt bằng tổng số luồng logic (SMT/Hyperthreading). Quy tắc tối ưu là đặt số luồng bằng đúng số lõi vật lý (Physical Cores) thuộc một NUMA node duy nhất để tránh tranh chấp tài nguyên luồng xử lý ảo.

---

4. Lựa chọn Định dạng Quantization (Định lượng hóa) Phù hợp

Do CPU bị giới hạn bởi tốc độ RAM, việc giảm dung lượng mô hình thông qua Quantization là bắt buộc để đạt số lượng Token/s ở mức chấp nhận được trong môi trường thương mại.

Định dạng Quantize Mức độ nén dung lượng Đánh giá hiệu năng trên AMD EPYC Mức độ suy giảm độ chính xác (Perplexity)
Q4_K_M / INT4 Rất cao (~4-bit) Tốc độ Token/s cao nhất, tận dụng tốt tập lệnh vector. Thấp, hoàn hảo cho môi trường production chi phí thấp.
Q8_0 / INT8 Trung bình (~8-bit) Cân bằng tốt giữa tốc độ và độ chính xác của lập luận logic. Hầu như không nhận ra sự khác biệt với bản gốc.
BF16 Không nén (16-bit) Rất chậm trên CPU do nghẽn băng thông RAM nghiêm trọng. Nguyên bản gốc.

Đối với dòng DeepSeek-R1 chắt lọc (Distilled 32B hoặc 70B), định dạng Q4_K_M hoặc các gói định lượng hóa INT4 tối ưu bởi ZenDNN mang lại điểm ngọt (Sweet Spot): Đảm bảo khả năng suy luận logic (Reasoning CoT) của mô hình không bị phá hủy mà vẫn duy trì được tốc độ phản hồi thời gian thực.

---

5. Tổng kết checklist thiết lập hệ thống tối ưu

Để đạt được số lượng Token/s cao nhất cho DeepSeek-R1 trên VPS AMD EPYC, hãy đảm bảo bạn tuân thủ quy trình thiết lập sau:

  1. Lựa chọn nhà cung cấp VPS cho phép truy cập đầy đủ thông tin NUMA và phân bổ tài nguyên CPU chuyên dụng (Dedicated Cores), không dùng chung (Shared vCPU).
  2. Sử dụng hệ điều hành Linux với nhân (Kernel) mới nhất để hỗ trợ đầy đủ các tập lệnh tối ưu của kiến trúc AMD Zen.
  3. Cách ly tiến trình bằng numactl để tránh hiện tượng giao tiếp chéo vùng nhớ (Cross-node memory latency).
  4. Luôn cấu hình số lượng Thread trùng khớp với số Physical Cores trên một Socket hoặc một Node được chỉ định.
  5. Sử dụng các phiên bản mô hình đã được Quantize ở mức 4-bit hoặc 8-bit nhằm giảm tải cho băng thông RAM.

Tận dụng đúng cách nguồn tài nguyên phần cứng mạnh mẽ từ CPU AMD EPYC phối hợp cùng chiến lược tối ưu hóa phần mềm chuẩn xác sẽ giúp doanh nghiệp tiết kiệm hàng ngàn USD chi phí hạ tầng GPU mà vẫn sở hữu hệ thống AI nội bộ vận hành mượt mà, bảo mật tối đa.

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