Gemma 4 E2B / E4B gán cho mỗi từ một "nhúng theo từng lớp" (PLE) riêng biệt ở mỗi lớp, chiếm 35.2% tham số trong E4B và 5.64 GB ở định dạng BF16. OPTIC chỉ lưu một bộ mã lượng hóa dùng chung cho tất cả các lớp đối với mỗi từ, sau đó sử dụng một bộ giải mã affine nhỏ ở mỗi lớp để khôi phục dữ liệu; bảng mã và bộ giải mã được tối ưu hóa dựa trên sai số tại phép chiếu đầu ra của PLE, thay vì dựa trên chính các vector đã lưu.
Lượt thích 14 · Số sao mã nguồn 5
Lý do
- Tác giả tuyên bố rằng với mức nén khoảng 100 lần, mô hình E4B ở định dạng BF16 vẫn giữ được 97.8% hiệu suất trên 7 bộ chuẩn đánh giá, trong khi phương pháp mạnh nhất trong sáu phương pháp thông thường là lượng hóa tích chỉ giữ được 66.3%; mức nén tương tự cũng giữ được 96.9% hiệu suất trên phiên bản chính thức W4A16 (trọng số 4 bit).
- Các mức nén cực đoan hơn cũng có số liệu cụ thể: nén 594 lần giữ được 90.5%, nén 1002 lần giữ được 84.1%, và ở mức nén 1002 lần, phần PLE của E4B chỉ còn 5.6 MB (theo tác giả).
- Tiết kiệm bộ nhớ VRAM nhưng hầu như không làm chậm tốc độ: README cho biết trên một card RTX 4090 với bộ nhớ đệm KV cố định 1 GiB, bộ nhớ VRAM cho trọng số BF16 giảm 29.7%, W4A16 giảm 43.1%, thời gian xử lý tăng tối đa 0.40% / 0.69%; vLLM báo cáo bộ nhớ VRAM của mô hình giảm từ 15.3 GiB xuống còn khoảng 10 GiB.
- Liên quan trực tiếp đến triển khai trên thiết bị biên: dòng E của Gemma 4 vốn được thiết kế cho các thiết bị có bộ nhớ VRAM nhỏ, và bảng nhúng chính là phần chiếm nhiều dung lượng nhất nhưng lại khó nén nhất bằng các phương pháp lượng hóa thông thường.
Cách sử dụng
- Mã nguồn: github.com/VILA-Lab/optic (giấy phép Apache-2.0); sản phẩm nén: Hugging Face zcahjl3/gemma-4-E4B-it-OPTIC-100x (apache-2.0, gồm một tệp compressed_ple.npz duy nhất), sẽ tự động tải xuống cùng với mô hình gốc Gemma 4 E4B phiên bản được chỉ định khi chạy lần đầu.
- Yêu cầu Python 3.12 và card đồ họa CUDA, README cho biết 24 GiB VRAM là đủ để chạy sinh văn bản ngắn với E4B BF16: sau khi chạy pip install -r requirements-inference.txt && pip install -e ., hãy chạy python examples/generate.py --prompt "…", thêm --image để thực hiện hỏi đáp hình ảnh.
- vLLM (tài liệu yêu cầu 0.19.1): chỉ biến môi trường PLE_OPTIC_ARTIFACT vào tệp npz đã tải, sau đó chạy bình thường vllm serve google/gemma-4-E4B-it; plugin được cài đặt từ kho lưu trữ sẽ thay thế bảng PLE dày đặc khi tải mô hình; các mô hình đã tải cũng có thể tích hợp bằng cách gọi install_compact_ple(model, artifact).
- Để tái tạo bài báo: chạy ple-eval evaluate --gpus 0 --run-id optic-e4b để đánh giá trên 7 bộ chuẩn; để nén phiên bản của riêng bạn, hãy xem docs/fitting.md.
Rủi ro
- Chỉ áp dụng cho các mô hình có nhúng theo từng lớp như Gemma 4 E2B / E4B, các trọng số khác không được nén; mới chỉ cung cấp sản phẩm nén 100 lần cho E4B BF16, còn E2B và các mức nén cao hơn cần tự thực hiện nén.
- Trong môi trường vLLM, PLE nén chỉ hỗ trợ song song tensor 1; các số liệu về bộ nhớ và tốc độ chỉ được đo trên một card RTX 4090 và đều do tác giả báo cáo.
Biên tập: Lưu ý rằng "nén 100 lần" đề cập đến bảng nhúng, không phải toàn bộ mô hình; mức tiết kiệm bộ nhớ VRAM tổng thể là khoảng ba mươi phần trăm.