Transformers documentation
Chọn một phương pháp
Chọn một phương pháp
Nếu checkpoint của bạn đã được lượng tử hóa, checkpoint sẽ quyết định phương pháp. Hãy tải nó như được minh họa trong Tải checkpoint đã lượng tử hóa trước. Ngược lại, hãy chọn một phương pháp dựa trên phần cứng của bạn và những gì bạn cần làm với mô hình sau khi tải nó.
Bắt đầu từ mục tiêu của bạn
Mỗi hàng đề xuất một phương pháp đầu tiên để thử. Hãy kiểm tra bảng so sánh đầy đủ trước khi bạn quyết định chọn một phương pháp.
| Mục tiêu | Bắt đầu với | Tại sao |
|---|---|---|
| Đào tạo mô hình với ít bộ nhớ hơn và ít cấu hình nhất | bitsandbytes | Thực hiện lượng tử hóa xuống 4 hoặc 8 bit trong quá trình tải mà không cần hiệu chuẩn, chạy trên CUDA, XPU, HPU và CPU, đồng thời hỗ trợ lưu và tinh chỉnh. |
| Tinh chỉnh với QLoRA | bitsandbytes | Hỗ trợ 4-bit NF4 với PEFT. HQQ, EETQ, GPTQ, SINQ và Quanto cũng hỗ trợ fine-tuning. |
Tăng tốc suy luận với torch.compile | torchao | generate tự động biên dịch các mô hình torchao với bộ nhớ đệm tĩnh, và torchao có các phương án int4, int8 và FP8 cho CUDA, XPU và CPU. |
| Đạt độ chính xác 4-bit tốt nhất | GPTQ | Hiệu chuẩn trên một tập dữ liệu trong khi tải. Để sử dụng AWQ hoặc AutoRound thay thế, hãy lượng tử hóa bằng thư viện của chúng và tải checkpoint. |
| Chạy FP8 trên Ada, Hopper hoặc Intel XPU | FP8 chi tiết | Yêu cầu khả năng tính toán CUDA 8.9 trở lên, hoặc một XPU. FBGEMM FP8 yêu cầu khả năng tính toán 9.0 trở lên, hoặc một XPU. |
| Chạy FP4 trên Blackwell | NVFP4 | Thực hiện lượng tử hóa xuống định dạng số float 4-bit của NVIDIA trong khi tải. MXFP4 chạy trên compute capability 7.5 trở lên, XPU và CPU. |
| Chạy trên Apple silicon | Metal | Thực hiện lượng tử hóa xuống 2, 4 hoặc 8 bit trên MPS trong khi tải. Các tệp GGUF cũng được tải trên MPS. |
| Tải các checkpoint được tạo bằng llm-compressor | compressed-tensors | Tải các checkpoint FP8, int4 và int8 ở định dạng compressed-tensors. |
| Nén xuống dưới 4 bit | HQQ hoặc SINQ | Thực hiện lượng tử hóa xuống 2 hoặc 3 bit khi tải mà không cần hiệu chuẩn. Các checkpoint AQLM, VPTQ và SpQR có thể đạt mức thấp hơn nhưng phải được lượng tử hóa bằng thư viện riêng của chúng. |
Show the full comparison table
| Phương pháp | quant_method | Quy trình làm việc | Bits | Phần cứng | Lưu | Tinh chỉnh | Tự động biên dịch |
|---|---|---|---|---|---|---|---|
| AQLM | aqlm | Chỉ dành cho đã lượng tử hóa | 1–2 | CUDA, CPU | ✅ | ✅ với aqlm>=1.0.2 | ❌ |
| AutoRound | auto-round | Chỉ dành cho đã lượng tử hóa | 2–8 | CUDA, XPU, CPU | ✅ | ❌ | ❌ |
| AWQ | awq | Chỉ dành cho đã lượng tử hóa | 4 | CUDA, ROCm, XPU, CPU | ✅ ngoại trừ các backend ExLlama | ✅ với gptqmodel>=5.0.0 | ❌ |
| BitNet | bitnet | Chỉ dành cho đã lượng tử hóa | 1.58 | CUDA | ✅ | Chỉ autobitlinear ở chế độ online | ❌ |
| bitsandbytes | bitsandbytes | Trong khi tải | 4, 8 | CUDA, XPU, HPU, CPU | ✅ | ✅ | ❌ |
| compressed-tensors | compressed-tensors | Chỉ dành cho đã lượng tử hóa | Đặt theo checkpoint | CUDA, XPU, MPS, CPU | ✅ | ✅ ngoại trừ với các kernel FP8 | ✅ |
| EETQ | eetq | Trong khi tải | 8 | CUDA | ✅ | ✅ | ❌ |
| FBGEMM FP8 | fbgemm_fp8 | Trong khi tải | 8 | CUDA (khả năng tính toán 9.0+), XPU | ✅ | ❌ | ❌ |
| FP8 chi tiết | fp8, mxfp8 | Trong khi tải | 8 | CUDA (khả năng tính toán 8.9+), XPU | ✅ | ❌ | ✅ |
| Bốn trên Sáu | fouroversix | Trong khi tải | 4 | CUDA (nhanh nhất trên Blackwell), CPU | ✅ | Chỉ với keep_master_weights=True | ❌ |
| FP-Quant | fp_quant | Trong khi tải | 4 | CUDA, XPU | ✅ | Chỉ với store_master_weights=True | ❌ |
| GGUF | gguf | Chỉ dành cho đã lượng tử hóa | 1–8 | CUDA, MPS, XPU, CPU | ❌ | ❌ | ✅ |
| GPTQ | gptq | Trong khi tải, với hiệu chuẩn | 2, 3, 4, 8 | CUDA, ROCm, XPU, CPU | ✅ | ✅ | ❌ |
| HIGGS | higgs | Trong khi tải | 2, 3, 4 | CUDA | ✅ | ❌ | ❌ |
| HQQ | hqq | Trong khi tải | 1, 2, 3, 4, 8 | CUDA, XPU | ✅ | ✅ | ❌ |
| Metal | metal | Trong khi tải | 2, 4, 8 | MPS | ✅ | ❌ | ❌ |
| MXFP4 | mxfp4 | Trong khi tải | 4 | CUDA (khả năng tính toán 7.5+), XPU, CPU | ✅ | ❌ | ❌ |
| NVFP4 | nvfp4 | Trong khi tải | 4 | Một GPU Blackwell | ❌ | ❌ | ✅ |
| Quanto | quanto | Trong khi tải | 2, 4, 8 | CUDA, MPS, XPU, CPU | ❌ | ✅ | ❌ |
| Quark | quark | Chỉ dành cho đã lượng tử hóa | Đặt theo checkpoint | CUDA, ROCm, CPU | ❌ | ❌ | ❌ |
| SINQ | sinq | Trong khi tải | 2, 3, 4, 6, 8 | Một GPU CUDA, CPU | ✅ | ✅ | ❌ |
| SpQR | spqr | Chỉ dành cho đã lượng tử hóa | 3 | CUDA | ✅ | ❌ | ❌ |
| torchao | torchao | Trong khi tải | 4, 8 | CUDA, XPU, CPU | ✅ | Chỉ các phương án 8-bit | ✅ |
| VPTQ | vptq | Chỉ dành cho đã lượng tử hóa | 1–8 | CUDA | ✅ | ❌ | ❌ |
Kiểm tra bộ nhớ bằng trình chọn lượng tử hóa
Trình chọn lượng tử hóa ước tính xem một mô hình có vừa với phần cứng của bạn ở mỗi độ chính xác hay không, bao gồm cả bộ đệm KV. Hãy chọn một mô hình, phần cứng của bạn và những gì bạn cần phương pháp đó thực hiện, sau đó giao diện So sánh sẽ liệt kê các phương pháp phù hợp.
Benchmarks
Các benchmark dưới đây so sánh một số phương pháp trên Llama 3.1 8B và 70B. Chúng báo cáo độ chính xác, thông lượng tính bằng token mỗi giây, bộ nhớ đỉnh tính bằng GB và thời gian lượng tử hóa.
Llama 3.1 70B ở bf16 được chạy trên 2 GPU NVIDIA A100 80GB. Các phương pháp FP8 được chạy trên 1 GPU NVIDIA H100 80GB, và tất cả các phương pháp còn lại được chạy trên 1 GPU NVIDIA A100 80GB. Thông lượng được đo ở batch size 1, tạo ra 64 token. Kết quả bao gồm torch.compile và các kernel Marlin khi phương pháp hỗ trợ chúng.
Kết quả được nhóm thành ba khoảng bit.
| Bits | Các phương pháp được đánh giá | Bộ nhớ so với bf16 | Độ chính xác |
|---|---|---|---|
| 8 | bitsandbytes int8, HQQ, Quanto, torchao, FP8 | Nhỏ hơn khoảng 2 lần | Rất gần với bf16 |
| 4 | AWQ, GPTQ, HQQ, bitsandbytes NF4, SINQ | Nhỏ hơn khoảng 4 lần | Cao. AWQ và GPTQ thường dẫn đầu nhưng cần hiệu chuẩn. |
| Dưới 4 | VPTQ, AQLM, 2-bit GPTQ | Nhỏ hơn hơn 4 lần | Giảm hiệu suất rõ rệt, đặc biệt ở 2 bits. AQLM và VPTQ mất rất nhiều thời gian để lượng tử hóa. |
Update on GitHubĐo lường độ chính xác và tốc độ trên chính tác vụ và phần cứng của bạn trước khi chọn phương pháp cho môi trường sản xuất.