OpenArchLabOpen Architecture — From Models to Systems

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.

LESSON ID quant GROUP Kiến trúc Inference
Mục lục bài họ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

Sơ đồ luồng (4 bước)
  1. Weights hoặc state gốc

    Chọn phần cần giảm dung lượng.

  2. Chọn format và scales

    Dựa trên hardware và dữ liệu.

  3. Kernel chạy biểu diễn mới

    Tính hoặc chuyển đổi phù hợp.

  4. Đá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.

7Bài liên quan

8Nguồn