L3 · Representation
Dùng ít bit hơn để lưu và tính các giá trị của mô hình
Kỹ thuật nén trọng số, KV cache hoặc kích hoạt xuống định dạng ít bit hơn (INT8, INT4, FP8) để giảm bộ nhớ và tăng tốc.
1Định nghĩa
Quantization (lượng tử hóa) là kỹ thuật chuyển đổi các số thực dấu phẩy động (như FP16/BF16, tốn 16 bit mỗi số) sang định dạng dùng ít bit hơn (như FP8, INT8 hoặc INT4) kèm theo các hệ số tỉ lệ (scale factors). Kỹ thuật này có thể áp dụng cho trọng số mô hình (weights), KV cache hoặc cả các tensor kích hoạt trong lúc tính toán.
Lợi ích kỹ thuật trực tiếp là giảm dung lượng HBM cần thiết và giảm lượng byte phải truyền vào nhân tính toán ở mỗi bước decode, hoặc tận dụng các nhân Tensor Core INT8/FP8 tốc độ cao. Đổi lại, làm tròn số luôn tạo ra sai số số học, nên mọi cấu hình lượng tử hóa phải được đo kiểm lại về cả độ trễ thực tế lẫn chất lượng đầu ra.
Ví dụ đời thường: Quantization giống như việc ghi giá tiền hoặc kích thước đồ đạc bằng số làm tròn (ví dụ ghi 20 nghìn thay vì 19.987,65 đồng, hoặc đóng gói quần áo theo các cỡ S, M, L, XL thay vì đo từng milimét). Cách ghi gọn này giúp cuốn sổ kho mỏng đi một nửa và đọc nhanh hơn hẳn, miễn là sai số làm tròn được kiểm soát để khách mặc vẫn vừa vặn.
2Luồng
- Weights hoặc state gốc
Chọn phần cần giảm dung lượng.
- Chọn format và scales
Dựa trên hardware và dữ liệu.
- Kernel chạy biểu diễn mới
Tính hoặc chuyển đổi phù hợp.
- Đánh giá chất lượng và tốc độ
So với reference trên cùng workload.
Mã Mermaid
flowchart TD
step1["Weights hoặc state gốc"]
step2["Chọn format và scales"]
step3["Kernel chạy biểu diễn mới"]
step4["Đánh giá chất lượng và tốc độ"]
step1 --> step2
step2 --> step3
step3 --> step4 3Giải pháp
Chọn cấu hình theo format mà thiết bị và engine hỗ trợ. Đánh giá weight quantization và cache quantization riêng vì chúng ảnh hưởng các phần khác nhau.
Cần kiểm tra tác vụ nhạy cảm và long context, không chỉ một chỉ số trung bình. Nếu không đạt yêu cầu chất lượng, giữ precision cao hơn ở phần đó.
Để xem trọng số INT8 giảm dung lượng bao nhiêu và sai số khôi phục nằm trong nửa scale ra sao, hãy chạy khối 9 (KV / weight precision) trong Bài Lab tổng hợp.
4Profiling
- Memory và latency
So lượng memory, thời gian và throughput ở cùng mức tải và latency mục tiêu.
- Sai số và chất lượng
Đo logits/outputs hoặc điểm tác vụ trên tập dữ liệu cố định.
Mẹo đo lường: ghim số liệu trên workload thật, ghi cả p50/p95/p99 thay vì chỉ trung bình, và luôn ghi lại điều kiện chạy (batch, cache, đồng thời, phần cứng) trước và sau khi tối ưu. Số đo thiếu điều kiện chạy thì không so sánh được.
5Ví dụ
Model không vừa một thiết bị
Weights ít bit hơn có thể làm model vừa bộ nhớ, tránh phải chia thiết bị chỉ vì capacity.
Nhiều request context dài
Cache ít bit hơn có thể cho giữ nhiều active tokens, nhưng cần kiểm tra khả năng đọc context và chất lượng.
6Thuật ngữ
- Calibration
- Đo phân phối giá trị trên dữ liệu đại diện để chọn cách lượng tử hóa.
- Dequantization
- Khôi phục giá trị xấp xỉ từ biểu diễn ít bit và scale.
- Accumulation precision
- Độ chính xác của phần cộng dồn trong phép tính, có thể khác precision lưu trữ.
Glossary (7)
- Model weights
- Các tham số số học được học và lưu trong checkpoint.
- Cache
- Bộ nhớ giữ kết quả có thể dùng lại; trong attention thường giữ key/value vectors.
- Logits
- Điểm số chưa chuẩn hóa cho các token ứng viên trước khi chọn token.
- Kernel
- Hàm tính toán chạy trên thiết bị; thường xử lý nhiều phần tử song song.
- Latency
- Thời gian chờ để nhận một kết quả hoặc một bước kết quả.
- Throughput
- Lượng công việc được xử lý trong một đơn vị thời gian.
- Context
- Chuỗi token trước vị trí hiện tại mà model được phép sử dụng.