Transformers documentation

Ikhtisar

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

Ikhtisar

Quantization menyimpan bobot model, dan kadang-kadang aktivasinya, dalam jumlah bit yang lebih sedikit sehingga model membutuhkan lebih sedikit memori. Model biasanya dimuat dalam bf16, yang membutuhkan 2 byte per parameter. Model 8B membutuhkan sekitar 16GB untuk bobotnya dalam bf16, sekitar 8GB pada 8 bit, dan sekitar 4–5GB pada 4 bit. Jumlah bit yang lebih sedikit mengorbankan sedikit akurasi, dan setiap metode quantization membuat tradeoff yang berbeda antara memori, kecepatan, dan akurasi.

Transformers mengintegrasikan lebih dari 20 metode kuantisasi melalui from_pretrained(), sehingga Anda menggunakan kode pemuatan yang sama terlepas dari metode yang Anda pilih.

Dua cara untuk menggunakan model terkuantisasi

Cara Anda menggunakan kuantisasi bergantung pada apakah checkpoint Anda sudah terkuantisasi.

Anda memilikiApa yang Anda lakukanMetode
Checkpoint presisi penuhLewatkan konfigurasi kuantisasi ke from_pretrained, dan bobot akan dikuantisasi saat dimuat.Kuantisasi model saat memuat
Checkpoint yang sudah dikuantisasiPanggil from_pretrained tanpa konfigurasi kuantisasi. Transformers membaca metode dari config.json checkpoint, atau dari file GGUF yang Anda tentukan.Memuat checkpoint yang sudah dikuantisasi

Beberapa metode, seperti AWQ, AutoRound, AQLM, compressed-tensors, dan GGUF, hanya dapat dimuat dari checkpoint. Anda terlebih dahulu mengkuantisasi model dengan pustaka milik metode tersebut, lalu memuat hasilnya di Transformers.

Kuantisasi model saat memuat

Buat kelas konfigurasi untuk metode tersebut dan teruskan ke quantization_config. Contoh di bawah memuat model 8B dalam 4 bit menggunakan 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",
)

Setiap metode dalam grup ini memiliki kelas konfigurasinya sendiri, seperti TorchAoConfig atau BitsAndBytesConfig. Sebagian besar dari mereka tidak memerlukan dataset kalibrasi. GPTQ adalah pengecualian karena melakukan kalibrasi pada dataset saat model dimuat.

Muat checkpoint yang sudah dikuantisasi

Checkpoint yang sudah dikuantisasi menyimpan quantization_config di config.json. Ketika from_pretrained menemukannya, kuantizer yang sesuai akan dipilih secara otomatis.

from transformers import AutoModelForCausalLM

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

Instal pustaka yang menjadi dependensi metode sebelum memuat checkpoint. Setiap halaman metode mencantumkan apa yang perlu diinstal. Untuk mengubah opsi pemuatan, seperti kernel backend yang dijalankan, lewati config dengan tipe yang sama. Opsi-opsinya akan digabungkan dengan opsi yang tersimpan di dalam checkpoint.

Checkpoint GGUF

Checkpoint GGUF adalah satu file yang menyimpan bobot, konfigurasi, dan tokenizer, dan tidak memiliki config.json untuk dibaca oleh from_pretrained. Beri nama file tersebut dengan gguf_file.

from transformers import AutoModelForCausalLM

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

Sebagian besar model GGUF didekuantisasi ke presisi penuh saat dimuat, sehingga menggunakan memori sebanyak model yang tidak dikuantisasi. Bobot tetap ter-packing hanya di MPS dengan paket kernels yang terpasang, untuk Qwen3.5 dan Qwen3.5 MoE. Lihat GGUF untuk detailnya.

Simpan model terkuantisasi

Panggil save_pretrained() atau push_to_hub() untuk menyimpan bobot terkuantisasi beserta quantization_config-nya. Tidak semua metode dapat menyimpan bobot terkuantisasinya.

Pilih metode

Pilih metode merekomendasikan titik awal untuk tujuan umum dan membandingkan setiap metode berdasarkan perangkat keras, lebar bit, penghematan, penyesuaian halus, dan dukungan torch.compile. Gunakan pemilih kuantisasi untuk memeriksa apakah model muat di memori perangkat keras Anda pada setiap presisi.

Alat lain

Perangkat ini mengkuantisasi model di luar Transformers.

  • Optimum melakukan kuantisasi model untuk perangkat keras dan runtime tertentu, seperti CPU Intel dan ONNX Runtime.
  • Hub Spaces mengkuantisasi model dan mendorong hasilnya ke akun Anda: bitsandbytes, GGUF, dan MLX.

Sumber daya

Langkah selanjutnya

Update on GitHub