16 con số để chạy mô hình ngàn tỉ tham số
FP4, định dạng số thực 4-bit với đúng 16 giá trị, đang là chuẩn mặc định để chạy các mô hình ngôn ngữ lớn trên GPU Blackwell của NVIDIA.

Hồi mới vào làm, tôi nghĩ ai đó nói đùa khi bảo người ta đang nghiêm túc dùng số thực 8-bit để chạy mạng nơ-ron. Tám bit. Đủ để lưu một ký tự ASCII. Rồi tôi thấy benchmark và thôi hết nói.
Bây giờ thì đến FP4. Bốn bit. Mười sáu giá trị. Cả một không gian tham số của mô hình ngôn ngữ, được biểu diễn bằng một bảng tra cứu ngắn hơn menu quán cà phê.
Câu chuyện trong một dòng
John Cook viết một bài toán học cực ngắn, cực gọn về FP4 - định dạng số thực 4-bit đang được NVIDIA tích hợp vào phần cứng Blackwell - và hoá ra toàn bộ định dạng này có thể mô tả bằng một bảng 16 hàng.
FP4 là gì, thật sự
Kiểu phổ biến nhất là E2M1: 1 bit dấu, 2 bit số mũ, 1 bit mantissa. Bốn bit thôi, đúng 16 giá trị khác nhau:
±0, ±0.5, ±1, ±1.5, ±2, ±3, ±4, ±6
Đó là toàn bộ “trục số” của bạn.
Cái khoảng cách không đều giữa các giá trị không phải lỗi - đó là chủ ý. Bit số mũ cho phép dày đặc hơn gần số 0, đúng chỗ mà các tham số mạng nơ-ron thường phân bố. Nếu dùng số nguyên 4-bit thông thường thì bạn chỉ có 0, 1, 2, ..., 15 - phẳng lì, không phản ánh thực tế phân bố tham số chút nào.
Có nhiều cách chia bit: E3M0 thì toàn số mũ (tương đương bảng luỹ thừa của 2), E0M3 thì toàn mantissa (tuyến tính). E2M1 là điểm cân bằng thực tế nhất cho mạng nơ-ron.
Tại sao bài này lên được HN
Bài của Cook ngắn và không có một chút hype. Anh ấy chỉ liệt kê đúng 16 giá trị, giải thích cách tính, đính kèm code Python để thử. Kiểu viết mà nếu có người hỏi “FP4 là gì?” thì bạn dán link là xong.
Nó lên top vì quantization đang là cuộc đua vũ trang thực sự. Mỗi tham số trong một mô hình lớn chiếm FP32 thì tốn 4 byte, FP16 thì 2 byte, FP8 thì 1 byte, FP4 thì nửa byte - hai tham số nhét vào chỗ một tham số FP16. Với mô hình 400 tỉ tham số, phép nhân đó cho ra một con số khổng lồ - theo nghĩa đen, hàng tỉ đô la chi phí hạ tầng.
NVIDIA chip Blackwell (B200, GB300) đã có tensor core FP4 ngay từ silicon. Định dạng NVFP4 của họ thêm một lớp hiệu chỉnh: mỗi nhóm 16 giá trị có một hệ số tỉ lệ FP8 riêng. Cơ chế hai tầng này bù lại phần lớn độ chính xác bị mất khi nhét một tham số vào 4 bit. Kết quả: tốc độ gấp 6 lần FP16, mức giảm độ chính xác dưới 1% so với FP8.
DeepSeek-R1 671 tỉ tham số chạy FP4 trên B200 nhanh hơn 3 lần so với chạy FP8 trên H200. Ba lần. Với mô hình to đó, “3 lần” là con số của nhiều tỉ đô.
HN đang tranh luận gì
Hai trường phái rõ ràng.
Trường phái thứ nhất: đây là kỹ thuật đẹp. Việc mất độ chính xác có giới hạn và có thể đo được. Bình luận tràn đầy người thử nghiệm so sánh E2M1 với E3M0, E1M2, xem cái nào phù hợp hơn cho từng loại lớp trong mạng. Có người viết code sinh bảng giá trị cho cả ba kiểu và dán lên - cả bảng đó không dài hơn một đoạn code Python bình thường.
Trường phái thứ hai: mười sáu giá trị là điên. Phe hoài nghi chỉ ra rằng FP4 vô dụng hoàn toàn cho bất kỳ phép tính số học thông thường nào. Cộng hai số FP4 lại thôi là có thể ra sai ngay. Không làm tích phân, không tích luỹ gradient, không làm gì mà cần độ chính xác tương đối.
Cả hai đều đúng. FP4 chỉ có nghĩa khi bạn nghĩ tham số mô hình là một mục tra cứu trong bộ nhớ nén, không phải một biến trong phương trình toán học. Nó không phải định dạng để tính toán - nó là định dạng để lưu trữ.
Bảng tóm tắt để dành
| Định dạng | Số bit | Giá trị khác nhau | Dùng ở đâu trong ML |
|---|---|---|---|
| FP32 | 32 | ~4,3 tỉ | Huấn luyện, gradient |
| BF16 | 16 | ~65.536 | Huấn luyện mixed-precision |
| FP8 | 8 | 256 | Suy luận, activations |
| FP4 | 4 | 16 | Lưu tham số, suy luận |
Bảng này cũng là lịch sử tám năm ngành hack xung quanh giới hạn bộ nhớ GPU.
Cái điều hơi khó chịu
Có gì đó hơi kỳ lạ khi nhận ra điều này.
Nhiều thế kỷ toán học xây dựng số thực dấu phẩy động để biểu diễn số một cách đủ chính xác cho khoa học và kỹ thuật. Rồi các nhà nghiên cứu phát hiện ra rằng bạn có thể mô tả một tham số hữu ích của mạng nơ-ron với lượng thông tin bằng đáp án một câu trắc nghiệm bốn lựa chọn.
Mạng không quan tâm số đó không chính xác. Sau khi huấn luyện với đủ dữ liệu, tham số đó chưa bao giờ thực sự là một số thực chính xác - nó chỉ là một vị trí gần đúng trong không gian nhiều chiều. Làm tròn nó về phần tử gần nhất trong ±0, ±0.5, ±1, ±1.5, ±2, ±3, ±4, ±6 và tiếp tục - thực nghiệm cho thấy là được.
Điều đó hoặc là một thắng lợi của chủ nghĩa thực dụng, hoặc là nhận xét khá thú vị về bản chất của mô hình ngôn ngữ lớn. Có lẽ là cả hai.
Thảo luận trên Hacker News · Nguồn: johndcook.com · Đăng bởi chmaynard
Bài viết liên quan
AutoResearch Giải Thích: Vì Sao Karpathy Đóng Góp Cho AI Scientist Này
Mổ xẻ AutoResearch: kiến trúc AI scientist đa mô hình, cơ chế Ralph loop hồi phục trạng thái và lý do Karpathy trực tiếp đóng góp vào repo.
TimesFM: Nhà Tiên Tri Số Của Google Không Cần Train
Foundation model dự báo chuỗi thời gian của Google Research - zero-shot, 200M tham số, kèm dải quantile, không cần bake-off mô hình.
Kiến trúc đơn giản đến khó tin đứng sau cơn sốt AI
Một bài bóc tách từ gốc cách các LLM transformer thật sự hoạt động: token, embedding, attention và vòng lặp đoán từ kế tiếp - không phương trình.
Anthropic Đang Train Model Trên Máy Chủ Của Elon
Anthropic mở rộng sang Colossus2 của xAI, dùng GPU GB200 - sau khi đã dùng toàn bộ Colossus1. HN hỏi: xAI đang bỏ cuộc hay chuyển sang làm thầu?