Lượng tử hoá model: giảm VRAM khi tự host mà vẫn kiểm soát chất lượng
Playbook chọn và đánh giá quantization cho model tự host: dùng Quantization Picker để lọc theo phần cứng, tính cả KV cache, rồi so sánh các ứng viên như FP16/BF16, 8-bit, 4-bit hoặc GGUF theo workload thực tế.
Một model “vừa VRAM” chưa chắc đã là model phù hợp để vận hành. Khi tự host, bạn vẫn cần trả lời ba câu hỏi: bản nào nạp được trên phần cứng hiện có, có đáp ứng chất lượng nghiệp vụ hay không, và có phù hợp với runtime đang dùng không.
Lượng tử hoá (quantization) giúp thu hẹp danh sách ứng viên. Nhưng “4-bit” không phải một kết luận triển khai — đó chỉ là điểm bắt đầu để kiểm tra.
Lượng tử hoá giảm gì?
Theo tài liệu Transformers, quantization giảm nhu cầu bộ nhớ khi nạp và sử dụng model bằng cách lưu trọng số ở độ chính xác thấp hơn, đồng thời cố gắng giữ lại độ chính xác nhiều nhất có thể.
Trọng số model thường được lưu ở dạng dấu chấm động đầy đủ như fp32. Với model lớn, fp16 và bf16 cũng là các kiểu dữ liệu phổ biến. Một số phương pháp tiếp tục hạ độ chính xác xuống biểu diễn số nguyên, chẳng hạn int8 hoặc int4.
Với đội hạ tầng, có thể hiểu ngắn gọn:
FP16/BF16: ứng viên tham chiếu khi phần cứng đủ bộ nhớ.
8-bit và 4-bit: các lựa chọn giảm bộ nhớ cần được đánh giá theo model, phần cứng và tác vụ cụ thể.
Các phương pháp quantization khác nhau không mặc định tương đương, dù cùng được gắn nhãn số bit giống nhau.
Transformers hỗ trợ nhiều phương pháp lượng tử hoá. Một số phương pháp cần calibration để đạt độ chính xác cao hơn hoặc mức nén rất mạnh, kể cả 1–2 bit. Một số phương pháp khác hỗ trợ quantization khi nạp model.
> Đừng chọn bản quantized chỉ vì tên format hoặc số bit. Hãy chọn theo khả năng tương thích và kết quả kiểm thử trên workload của bạn.
Bắt đầu với Quantization Picker
Transformers cung cấp Quantization Picker để lọc phương pháp theo:
Model cần dùng.
Phần cứng.
Nhu cầu triển khai, như quantization khi nạp model, fine-tune với PEFT, dùng torch.compile() hoặc lưu kết quả quantized.
Picker cho biết model có vừa bộ nhớ ở từng precision hay không, bao gồm cả KV cache. Chế độ Compare liệt kê các phương pháp phù hợp với lựa chọn đó.
Điểm này đặc biệt hữu ích khi sizing tài nguyên: không nên chỉ nhìn dung lượng trọng số model mà bỏ qua phần bộ nhớ được Picker đưa vào phép tính.
Chọn danh sách ứng viên để đánh giá
Tài liệu không đưa ra một công thức chung để kết luận format nào luôn tốt nhất. Cách thực tế hơn là lập một danh sách ngắn, sau đó kiểm tra trên phần cứng và workload mục tiêu.
| Mục tiêu | Ứng viên có thể đưa vào danh sách đánh giá |
|---|---|
| Cần mốc tham chiếu về chất lượng | FP16 hoặc BF16, nếu hạ tầng đáp ứng |
| Muốn đánh giá quantization 8-bit hoặc 4-bit | bitsandbytes, được bảng tương thích liệt kê cho 4/8 bit |
| Stack phục vụ dùng hệ sinh thái llama.cpp | GGUF/GGML, được bảng tương thích liệt kê trong nhóm llama.cpp |
| Cần nén mạnh hoặc yêu cầu riêng về phần cứng | Xem các phương pháp khác trong bảng tương thích và Picker |
Ngoài bitsandbytes và GGUF/GGML, tài liệu còn liệt kê nhiều lựa chọn như AQLM, AutoRound, AWQ, GPT-QModel, HQQ, optimum-quanto, torchao và Quark.
Bảng tương thích của Transformers cho phép đối chiếu các tiêu chí như:
CPU, CUDA GPU, ROCm GPU, Metal và Intel GPU.
Quantization khi nạp model.
Khả năng dùng với torch.compile().
Fine-tune với PEFT.
Khả năng tuần tự hoá kết quả quantized bằng Transformers.
Vì vậy, không nên suy luận rằng một phương pháp phù hợp với một loại GPU thì sẽ tự động phù hợp với mọi runtime hoặc mục tiêu triển khai.
Playbook đánh giá trước khi self-host
1. Chốt workload cần phục vụ
Trước khi chọn format, hãy mô tả endpoint theo tác vụ thực tế, chẳng hạn:
Hỏi đáp tài liệu nội bộ.
Trích xuất trường thông tin.
Phân loại yêu cầu hỗ trợ.
Hỗ trợ lập trình.
Chatbot có ngữ cảnh dài.
Mỗi workload nên có bộ dữ liệu đánh giá và tiêu chí đạt riêng. Một model tạo câu trả lời trôi chảy chưa đủ để kết luận rằng model đáp ứng yêu cầu nghiệp vụ.
2. Lọc theo model, phần cứng và mục tiêu
Dùng Quantization Picker để chọn model, phần cứng và nhu cầu triển khai. Từ kết quả đó, tạo danh sách ứng viên nhỏ thay vì thử ngẫu nhiên mọi format.
Ví dụ, danh sách đánh giá có thể gồm:
Một bản FP16 hoặc BF16 làm mốc tham chiếu, nếu khả thi.
Một ứng viên 8-bit.
Một ứng viên 4-bit.
GGUF/GGML nếu stack của bạn dùng llama.cpp.
Một phương pháp khác được Picker cho thấy phù hợp với yêu cầu cụ thể.
3. So sánh trong cùng điều kiện
Để kết quả có ý nghĩa, nên giữ ổn định các yếu tố như model gốc, phần cứng, tập prompt, độ dài ngữ cảnh và cấu hình phục vụ. Khi đó, thay đổi chính giữa các lần thử mới là precision hoặc phương pháp quantization.
Các mục có thể ghi nhận trong mỗi lần đánh giá:
Model có nạp được trên hạ tầng mục tiêu hay không.
Mức dùng bộ nhớ trong điều kiện thử nghiệm.
Kết quả trên bộ test nghiệp vụ.
Khả năng đáp ứng các yêu cầu về định dạng đầu ra.
Các lỗi đầu ra cần theo dõi với tác vụ của bạn.
Tài liệu Transformers không công bố benchmark chung để kết luận FP16, 8-bit, 4-bit hay GGUF luôn nhanh hơn hoặc giữ chất lượng tốt hơn trong mọi trường hợp. Vì thế, số liệu từ chính môi trường triển khai là căn cứ phù hợp hơn để ra quyết định.
4. Chấm chất lượng bằng tiêu chí nghiệp vụ
Với tác vụ trích xuất, bộ test có thể yêu cầu model trả về đúng trường dữ liệu và báo rõ khi thông tin không có trong đầu vào.
text
Yêu cầu:
Trả về trường <trườngcầntríchxuất> theo định dạng <địnhdạng>.
Không suy đoán nếu văn bản không nêu rõ.
Tiêu chí chấm nên phản ánh lỗi mà nghiệp vụ thực sự quan tâm. Nếu một ứng viên giảm đáng kể bộ nhớ nhưng không còn đáp ứng tiêu chí đầu ra, đó chưa phải lựa chọn phù hợp cho endpoint này.
Checklist chọn bản quantized
[ ] Đã xác định model, phần cứng và workload cần phục vụ.
[ ] Đã dùng Quantization Picker để kiểm tra khả năng phù hợp, gồm cả KV cache.
[ ] Đã đối chiếu bảng tương thích với runtime và yêu cầu triển khai.
[ ] Có một mốc tham chiếu phù hợp để so sánh chất lượng.
[ ] Đã đánh giá các ứng viên 8-bit, 4-bit hoặc phương pháp khác phù hợp.
[ ] Đã kiểm tra đầu ra bằng bộ test đại diện cho nghiệp vụ.
[ ] Ghi lại model, phương pháp quantization và cấu hình đã chọn để có thể lặp lại đánh giá.
Kết luận
Lượng tử hoá không chỉ là giảm số bit để model “vừa GPU”. Đây là quá trình chọn cách lưu và nạp trọng số phù hợp với model, phần cứng và mục tiêu sử dụng.
Hãy bắt đầu từ Quantization Picker của Transformers, dùng bảng tương thích để lọc phương pháp, rồi kiểm chứng bằng workload của chính bạn. Bản quantized đáng chọn là bản đáp ứng yêu cầu triển khai với mức dùng bộ nhớ phù hợp và chất lượng đủ cho tác vụ cần phục vụ.