Transformers documentation

Tổng quan

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Tổng quan

Quantization lưu trữ trọng số của mô hình, và đôi khi cả các kích hoạt, bằng ít bit hơn để mô hình cần ít bộ nhớ hơn. Các mô hình thường được nạp ở định dạng bf16, chiếm 2 byte cho mỗi tham số. Một mô hình 8B cần khoảng 16GB cho trọng số ở bf16, khoảng 8GB ở 8 bit, và khoảng 4–5GB ở 4 bit. Việc giảm số bit sẽ làm giảm một phần độ chính xác, và mỗi phương pháp lượng tử hóa tạo ra một sự đánh đổi khác nhau giữa bộ nhớ, tốc độ và độ chính xác.

Transformers tích hợp hơn 20 phương pháp lượng tử hóa thông qua from_pretrained(), vì vậy bạn sử dụng cùng một mã tải bất kể phương pháp nào bạn chọn.

Hai cách để sử dụng mô hình lượng tử hóa

Cách bạn sử dụng lượng tử hóa phụ thuộc vào việc checkpoint của bạn đã được lượng tử hóa hay chưa.

Bạn cóNhững gì bạn làmPhương thức
Điểm kiểm tra độ chính xác đầy đủTruyền một cấu hình lượng tử hóa vào from_pretrained, và các trọng số sẽ được lượng tử hóa khi chúng được tải.Thực hiện lượng tử hóa mô hình trong khi tải
Một checkpoint đã được lượng tử hóaGọi from_pretrained mà không có cấu hình lượng tử hóa. Transformers sẽ đọc phương pháp từ config.json của checkpoint, hoặc từ tệp GGUF mà bạn chỉ định.Tải checkpoint đã lượng tử hóa trước

Một số phương pháp, chẳng hạn như AWQ, AutoRound, AQLM, compressed-tensors và GGUF, chỉ có thể được nạp từ một checkpoint. Bạn cần lượng tử hóa mô hình bằng thư viện riêng của phương pháp đó trước, sau đó nạp kết quả trong Transformers.

Lượng tử hóa mô hình khi tải

Tạo lớp cấu hình của phương thức và truyền nó vào quantization_config. Ví dụ bên dưới tải một mô hình 8B ở 4 bit bằng bitsandbytes.

import torch
from transformers import AutoModelForCausalLM, BitsAndBytesConfig

quantization_config = BitsAndBytesConfig(
    load_in_4bit=True,
    bnb_4bit_compute_dtype=torch.bfloat16,
)
model = AutoModelForCausalLM.from_pretrained(
    "meta-llama/Llama-3.1-8B-Instruct",
    quantization_config=quantization_config,
    device_map="auto",
)

Mỗi phương thức trong nhóm này có lớp cấu hình riêng, chẳng hạn như TorchAoConfig hoặc BitsAndBytesConfig. Hầu hết chúng không cần bộ dữ liệu hiệu chuẩn. GPTQ là ngoại lệ vì nó hiệu chuẩn trên một bộ dữ liệu trong khi mô hình được tải.

Tải checkpoint đã lượng tử hóa

Checkpoint đã được lượng tử hóa trước lưu trữ quantization_config trong config.json của nó. Khi from_pretrained tìm thấy cấu hình này, bộ lượng tử hóa tương ứng sẽ được chọn tự động.

from transformers import AutoModelForCausalLM

model = AutoModelForCausalLM.from_pretrained(
    "TheBloke/zephyr-7B-alpha-AWQ",
    device_map="auto",
)
print(model.config.quantization_config.quant_method)

Cài đặt thư viện mà phương pháp phụ thuộc vào trước khi tải checkpoint. Mỗi trang phương pháp liệt kê những gì cần cài đặt. Để thay đổi các tùy chọn tải, chẳng hạn như backend kernel nào sẽ chạy, hãy truyền một config cùng loại. Các tùy chọn của nó sẽ được gộp với các tùy chọn được lưu trong checkpoint.

Các checkpoint GGUF

Checkpoint GGUF là một tệp duy nhất chứa trọng số, cấu hình và tokenizer, và không có config.json để from_pretrained đọc. Đặt tên tệp bằng gguf_file.

from transformers import AutoModelForCausalLM

model = AutoModelForCausalLM.from_pretrained(
    "unsloth/Qwen3.5-4B-GGUF",
    gguf_file="Qwen3.5-4B-Q4_K_M.gguf",
)

Hầu hết các mô hình GGUF được khử lượng hóa lên độ chính xác đầy đủ khi tải, do đó chúng sử dụng bộ nhớ nhiều như một mô hình chưa được lượng hóa. Các trọng số chỉ được giữ ở dạng nén trên MPS khi đã cài đặt gói kernels, dành cho Qwen3.5 và Qwen3.5 MoE. Xem GGUF để biết chi tiết.

Lưu một mô hình đã lượng tử hóa

Gọi save_pretrained() hoặc push_to_hub() để lưu các trọng lượng đã lượng tử hóa cùng quantization_config của chúng. Không phải phương pháp nào cũng có thể lưu trọng lượng đã lượng tử hóa của nó.

Chọn một phương pháp

Chọn một phương pháp đề xuất điểm khởi đầu cho các mục tiêu phổ biến và so sánh mọi phương pháp theo phần cứng, độ rộng bit, mức tiết kiệm, tinh chỉnh và hỗ trợ torch.compile. Sử dụng trình chọn lượng tử hóa để kiểm tra xem một mô hình có vừa với bộ nhớ phần cứng của bạn ở mỗi độ chính xác hay không.

Công cụ khác

Các công cụ này thực hiện lượng tử hóa mô hình bên ngoài Transformers.

  • Optimum lượng tử hóa các mô hình cho phần cứng và runtime cụ thể, chẳng hạn như CPU Intel và ONNX Runtime.
  • Hub Spaces lượng tử hóa một mô hình và đẩy kết quả vào tài khoản của bạn: bitsandbytes, GGUF và MLX.

Tài nguyên

Các bước tiếp theo

Update on GitHub