Thực hànhNâng cao

Quantization: giảm số bit, đo lại sai số

Tự lượng tử hóa một trọng số, phân biệt lượng tử hóa trọng số với activation và kiểm tra lợi ích trên phần cứng thực tế.

Trong bài viết này

Từ được đánh dấu có giải thích. Di chuột hoặc chạm để xem, hay mở từ điển AI.

Trọng số 0,37 có thể được lưu bằng một mã số nguyên rồi khôi phục gần đúng thành 0,40. Sai lệch 0,03 nhìn nhỏ, nhưng hàng tỷ phép tính có thể truyền và khuếch đại ảnh hưởng khác nhau. Lượng tử hóa là bài toán chọn biểu diễn và quản lý sai số, không chỉ đổi tên kiểu dữ liệu.

Trước khi học, bạn nên hiểu ma trận trọng số, activation và phép nhân ma trận. Các con số trong bài đều giả định. Chúng giải thích cơ chế, không dự đoán chất lượng của một checkpoint cụ thể.

Một phép lượng tử hóa đủ nhỏ để tính tay

Với dạng tuyến tính đơn giản, mã lượng tử q = clamp(round(w/s) + z). s là scale, z là zero point; clamp giữ mã trong khoảng cho phép. Khi tính gần đúng, khôi phục w_hat = s(q − z). Dạng đối xứng thường chọn zero point phù hợp để biểu diễn số âm và dương quanh không.

Lấy s = 0,1, z = 0 và w = 0,37. Ta làm tròn 3,7 thành q = 4, rồi khôi phục 0,4. Nếu w = 0,04, mã trở thành không. Việc giảm độ chính xác khiến các trọng số khác nhau có thể chung mã.

Một giá trị ngoại lệ rất lớn có thể buộc scale tăng, làm độ phân giải của nhiều giá trị nhỏ kém đi. Dùng scale theo nhóm hoặc theo kênh cho phép thích nghi tốt hơn nhưng thêm metadata và chi phí xử lý. Các định dạng không đồng đều cũng không tuân theo đúng công thức tuyến tính này.

Trọng số, activation và cache là ba đối tượng

Weight-only quantization giảm bộ nhớ chứa trọng số; activation có thể vẫn ở độ chính xác cao hơn khi nhân. Lượng tử hóa activation tác động thêm đến giá trị sinh ra trong lúc chạy. Lượng tử hóa KV cache xử lý trạng thái attention và cần đánh giá riêng trên độ dài ngữ cảnh.

Giả sử mô hình có 8 tỷ tham số. Chỉ tính dữ liệu trọng số, 16 bit mỗi tham số tương đương 16 tỷ byte; 4 bit tương đương 4 tỷ byte. Đây là mức giảm bốn lần cho thành phần ấy, chưa gồm scale, các tensor giữ nguyên kiểu, cache và vùng nhớ tạm.

Nếu bộ nhớ thực giảm ít hơn bốn lần, chưa thể kết luận triển khai sai. Trước hết hãy tách các thành phần. Ngược lại, tệp nén nhỏ không chứng minh bộ nhớ chạy nhỏ tương ứng, vì định dạng có thể cần giải nén hoặc chuyển đổi khi nạp.

Dữ liệu hiệu chỉnh giúp chọn phép xấp xỉ

Post-training quantization xử lý mô hình đã huấn luyện. Một số phương pháp dùng dữ liệu đại diện để đánh giá hoặc giảm sai số của đầu ra lớp. GPTQ là nghiên cứu về lượng tử hóa trọng số sau huấn luyện sử dụng thông tin bậc hai gần đúng. Các kết quả của paper gắn với mô hình và phần cứng được thử, không phải cam kết cho mọi tệp 4-bit.

Dữ liệu hiệu chỉnh nên phản ánh đầu vào dự kiến: ngôn ngữ, độ dài và loại nhiệm vụ. Chỉ dùng đoạn tiếng Anh ngắn để chuẩn bị mô hình phục vụ tài liệu tiếng Việt dài là một giả định cần kiểm chứng. Tập đánh giá cuối cùng phải tách khỏi dữ liệu dùng chọn cấu hình.

Nhìn để hiểuMột điểm số chưa đủ để chọn mô hình

Chạy các mô hình trên cùng bộ thử, đọc cả điểm tổng lẫn kiểu lỗi, rồi cân nhắc tốc độ và chi phí. Một chênh lệch nhỏ chưa chứng minh mô hình nào luôn tốt hơn.

Đọc điểm số cùng loại lỗi và chi phíVí dụ hoàn toàn giả định trên cùng 20 tình huống: A đúng 18, B đúng 17. Ô có dấu chéo biểu thị ca sai. Cần xem loại lỗi, như sai tên hay quá dài, và đo độ trễ, chi phí, số lần thử lại. Những con số này không phải benchmark thật và không chứng minh A luôn tốt hơn B.Cùng 20 tình huốngA18/20B17/20Lỗi: sai tên ngườiLỗi: vượt độ dàiĐo thêm: độ trễ · chi phí · số lần thử lại

↔ Vuốt ngang để xem toàn bộ sơ đồ.

  1. 01 / Cùng bộ thử

    Dùng cùng các trường hợp và quy tắc chấm đã xác định trước cho cả hai mô hình.

  2. 02 / Đọc điểm số

    Trong ví dụ giả định, A đúng 18/20, B đúng 17/20. Chênh lệch một trường hợp chưa đủ kết luận chung.

  3. 03 / Xem kiểu lỗi

    Mở các trường hợp thất bại: sai tên người và vượt độ dài có mức ảnh hưởng khác nhau.

  4. 04 / Đánh giá nhiều chiều

    Đo thêm tốc độ, chi phí và độ ổn định trên dữ liệu phù hợp với công việc thực tế.

A đúng 18/20 và B đúng 17/20 là số liệu giả định để giải thích cách đọc kết quả, không phải benchmark của mô hình có thật.

Sơ đồ đánh giá cung cấp cách so đầu ra với tiêu chí. Nó không mô phỏng mã số nguyên hay kernel lượng tử hóa; với bài toán này, cần thêm phép đo bộ nhớ và thời gian bên cạnh độ đúng.

Ít bit chưa chắc ít thời gian

Tốc độ phụ thuộc việc phần cứng và kernel có thực hiện hiệu quả định dạng đó hay không. Chi phí giải lượng tử hóa, kích thước batch và lượng dữ liệu phải đọc đều tham gia. Nếu một bước đã bị giới hạn bởi thành phần khác, giảm trọng số có thể không tạo mức tăng tốc rõ rệt.

Hãy đo riêng prefill và decode, giữ cùng chiều dài đầu vào, đầu ra và cách giải mã. Kiểm tra thêm các lỗi nhạy cảm như số liệu, định dạng JSON hoặc tên riêng. Điểm trung bình ổn định có thể che một nhóm yêu cầu bị suy giảm đáng kể.

Bài tập: lập bảng sai số có điều kiện

Lượng tử hóa ba số 0,04; 0,37; −0,26 với scale 0,1 và zero point không, giả sử không bị clamp. Kết quả khôi phục phải là 0; 0,4; −0,3. Sai số tuyệt đối tương ứng là 0,04; 0,03; 0,04.

Sau đó viết một kế hoạch so mô hình gốc với bản lượng tử hóa: cùng 30 câu giả định, có nhóm số liệu và nhóm văn bản, ghi số lỗi từng nhóm cùng peak memory. Tiêu chí hoàn thành là phân biệt phép tính minh họa, kế hoạch chưa chạy và kết quả đo thật. Đọc QLoRA để thấy lượng tử hóa có thể kết hợp với huấn luyện adapter.

Bạn muốn hiểu điều gì?

Khám phá tất cả bài viết esc để đóng