Hacker News Nổi bật (buzzing.cc bản dịch tiếng Trung)
92

Thủ thuật

Chạy DeepSeek V4 Flash trên một GPU AMD MI300X duy nhất

(giờ Việt Nam)

Tóm tắt AI

Một kho lưu trữ mã nguồn mở cho phép vận hành mô hình 304B tham số DeepSeek-V4-Flash trên một GPU MI300X duy nhất mà không cần lượng tử hóa, đạt tốc độ ấn tượng 168.6 tok/s và hỗ trợ ngữ cảnh 256K.

Bản dịch AI

GitHub - ryanzhou/deepseek-v4-flash-mi300x

DeepSeek V4 Flash trên một card AMD MI300X duy nhất

Kho lưu trữ này chứa cấu hình và các bản vá tôi sử dụng để chạy deepseek-ai/DeepSeek-V4-Flash-0731 trên một card AMD MI300X trong môi trường sản xuất. Nó bao gồm Docker Compose stack, các file overlay được ghim theo mã SHA-256, các bản diff tham chiếu so với upstream và các bảng tinh chỉnh. Checkpoint chạy nguyên bản như được cung cấp, không cần thêm kỹ thuật lượng tử hóa trọng số (weight quantization) hay offload.

Kết quả từ stack đã ghim (vLLM ROCm nightly 0.26.1rc1.dev229+g124154a88.rocm723, AITER 0.1.19):

Công thức (recipe) vLLM chính thức nhắm đến phần cứng NVIDIA và các dòng AMD mới hơn. Việc chạy mô hình ổn định trên MI300X đòi hỏi phải sửa lỗi cho định dạng FP8, định tuyến MoE ở mức độ đồng thời cao, xác thực suy luận nhân quả (causal speculative verification), đồng bộ hóa CPU-KV và một số hình dạng kernel chưa được tinh chỉnh. Kho lưu trữ này tập hợp các bản sửa lỗi đó và ghim các phiên bản được sử dụng trong môi trường sản xuất.

Tại sao lại là MI300X

MI300X có 192 GB HBM3 và băng thông bộ nhớ 5,3 TB/s, với dung lượng HBM gấp 2,4 lần so với H100 SXM5 (AMD). Bài viết của Doubleword ước tính rằng chi phí của nó chỉ bằng khoảng một nửa giá niêm yết. Đối với checkpoint 304B tham số này, dung lượng bộ nhớ cho phép triển khai đơn giản trên một GPU duy nhất:

MI300X (CDNA3) triển khai biến thể E4M3 fnuz của AMD/Graphcore, trong khi MI325X và các dòng mới hơn sử dụng FP8 chuẩn OCP (thông tin nền). Một kernel giả định ngữ nghĩa OCP trên MI300X có thể sai lệch gấp đôi trong miền tỷ lệ (scale domain). Tính chính xác trên bản triển khai FP8 này là ưu tiên hàng đầu; việc tinh chỉnh hiệu năng được thực hiện sau đó.

Các công trình trước đây và những gì kho lưu trữ này bổ sung

Nhật ký làm việc về MI300X của Fergus Finn và kho lưu trữ Doubleword đi kèm đã xác định được sự không tương thích FP8, các đường dẫn nhanh (fast paths) AITER bị thiếu trên gfx942, các lỗi HIP-graph trong giải mã MLA thưa (sparse MLA decode) và các lỗi định tuyến MoE. Công thức vLLM chính thức bao phủ phần cứng NVIDIA và các GPU AMD mới hơn (MI325X ở ngữ cảnh 4K và MI355X), nhưng không bao gồm cấu hình sản xuất cho một card MI300X duy nhất đối với checkpoint 0731.

Kho lưu trữ này bổ sung:

Cấu trúc kho lưu trữ

Cấu hình runtime

Stack này sử dụng bản vLLM ROCm nightly chính thức được ghim theo mã digest với:

Triển khai

1. Điều kiện tiên quyết về máy chủ (Host)

Một card MI300X (gfx942, 304 CUs, ~192 GiB HBM), driver kernel AMD đang hoạt động, Docker Compose phiên bản mới, ~235 GiB RAM cho tầng CPU KV và ~500 GB dung lượng đĩa (chỉ riêng bộ nhớ đệm mô hình đã là ~156 GB).

2. Tải runtime và mô hình đã ghim

3. Chuẩn bị các tệp tin

4. Khởi động

Một quá trình khởi động bình thường mất khoảng 5 phút và phải hiển thị đầy đủ các thông tin sau:

Sau khi chụp đồ thị (graph capture), hãy chạy lệnh rocm-smi --showmeminfo vram. Mức sử dụng cao nhất sau khi khởi động là ~204,5 GB trên tổng số 205,8 GB. Nếu chỉ còn lại vài trăm MB, máy chủ có thể khởi động được nhưng sẽ thất bại ở yêu cầu đầu tiên.

5. Kiểm tra sơ bộ (Smoke-test)

Các bản vá

Mỗi tệp patches/*.py là một overlay toàn bộ tệp được gắn ở chế độ chỉ đọc (read-only) đè lên tệp tương ứng trong container; file compose.yaml chứa các đường dẫn đích. Các tệp diffs/*.patch tương ứng ghi lại sự thay đổi so với base upstream. Image gốc vẫn được ghim theo mã digest, vì vậy việc nâng cấp đòi hỏi phải thay đổi tham chiếu image và xác thực lại stack.

Hai bản sửa lỗi quan trọng về tính chính xác

Định tuyến MXFP4. Kernel ma trận bit MoE đệm các cột khối của nó theo kích thước khối Triton, nhưng các làn đệm (padding lanes) lại bị mask theo giới hạn tensor toàn cục thay vì kích thước khối logic. Dưới tải trọng cao, các làn đệm này làm hỏng ma trận định tuyến, dẫn đến tên công cụ bị khớp sai và mất lược đồ (schema) trong các prompt dài. Bản sửa lỗi một dòng là mask = (offs_local < BLOCK_SIZE) & (offs_global < nonzero_indx_size), được lấy từ commit c32932bb9 của Doubleword. Overlay cũng bao gồm các thay đổi về fused-SiLU và định tuyến nhanh cho các chuyên gia (experts) MXFP4 được nhóm lại.

Định dạng FP8. Bộ nhớ đệm Lightning Indexer của DeepSeek V4 sử dụng FP8. Trình ghi mặc định phát ra các byte OCP E4M3 theo thứ tự hàng chính (row-major), trong khi AITER trên MI300X tiêu thụ các byte AMD FNUZ E4M3 theo bố cục tile 16×16 đã được xáo trộn trước. Trong trường hợp xấu nhất, việc diễn giải định dạng này thành định dạng kia tạo ra sai số tỷ lệ gấp đôi. Overlay chọn float8e4b8 với FP8_MAX=224.0 và các offset ghi đã xáo trộn trên ROCm, trong khi vẫn giữ nguyên đường dẫn OCP ở các nơi khác.

Giải mã suy đoán (Speculative decoding)

Stack này sử dụng phương pháp dự thảo xác suất (probabilistic drafting) với cơ chế từ chối khối (block rejection). Hai overlay Gumbel giữ cho nhiễu dự thảo đề xuất độc lập với nhiễu từ chối và phục hồi.

Hiệu năng

Các tối ưu hóa chính trong cấu hình sản xuất:

Quét độ đồng thời cuối cùng

Các prompt ~400 từ riêng biệt, streaming, temperature=1.0, top_p=0.95; C1–C8 ở mức 512 output tokens, C64 ở mức 256:

Khả năng chấp nhận DSpark phụ thuộc vào prompt; hãy coi đây là các ngưỡng cho chính image này, không phải là điểm chuẩn mô hình phổ quát.

Prefill

Với các kernel đã tinh chỉnh, prefill không lưu bộ nhớ đệm đạt 7,9–8,5K tok/s, tùy thuộc vào ngân sách bộ lập lịch: 7,90–7,99K tại C1 với ngân sách 8.192 token và 8,46–8,51K tại C4. Cấu hình sản xuất sử dụng ngân sách 2.048 token để cô lập độ trễ, đạt 6.988–7.019 tok/s trên các prompt mới. Với giới hạn prefill dài 1.024 token, một prompt 8,9K token đạt 5,20–5,29K tok/s tại C1. Đổi lại, TTFT cho một yêu cầu ngắn xếp hàng sau một prefill lạnh 52K giảm từ 8,2 giây xuống 0,5 giây. Việc truy xuất nóng 380K token đã lưu trong bộ nhớ đệm mất 0,64–2,65 giây sau một prefill lạnh 120–125 giây.

Ghi chú sản xuất

Giấy phép và nguồn gốc

Stack, tài liệu và các overlay bắt nguồn từ vLLM đều theo giấy phép Apache-2.0 (xem LICENSE); overlay bắt nguồn từ AITER giữ nguyên tiêu đề MIT của nó. Các phiên bản base upstream cho mỗi bản diff được ghi lại trong patches/README.md. Bản thân mô hình được cấp phép theo giấy phép MIT.

AMDDeepSeekMI300XLLMTối ưu hóa
Đọc bài gốc

Bài viết được AI dịch và tổng hợp tự động từ Hacker News Nổi bật (buzzing.cc bản dịch tiếng Trung). Liên kết bài gốc ở phía trên. Dữ liệu đồng bộ qua API công khai được ghi nguồn tại AI HOT (canonical) ↗. AIHOT.vn luôn dẫn nguồn đầy đủ — nếu bạn thấy điểm cần chỉnh sửa, hãy gửi ý kiến tại trang phản hồi.