Transformers documentation

개요

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

개요

Quantization은 모델의 가중치, 경우에 따라 활성화 값까지 더 적은 비트로 저장하여 모델이 필요한 메모리 용량을 줄입니다. 모델은 일반적으로 1개 매개변수당 2바이트를 사용하는 bf16으로 로드됩니다. 8B 모델의 가중치는 bf16 기준 약 16GB, 8비트 기준 약 8GB, 4비트 기준 약 4~5GB가 필요합니다. 비트 수가 줄어들면 정확도가 일부 저하되며, 각 양자화 방식은 메모리, 속도, 정확도 사이에서 서로 다른 트레이드오프를 제공합니다.

Transformers는 from_pretrained()를 통해 20개 이상의 양자화 방법을 통합하고 있으므로, 선택한 방법에 관계없이 동일한 로딩 코드를 사용할 수 있습니다.

양자화 모델을 사용하는 두 가지 방법

quantization을 사용하는 방법은 체크포인트가 이미 양자화되어 있는지 여부에 따라 달라집니다.

다음과실시 내용메서드
전체 정밀도 체크포인트from_pretrained에 quantization config를 전달하면, 가중치가 로드되는 동안 양자화됩니다.모델 로드 시 양자화
이미 양자화된 체크포인트from_pretrained를 양자화 설정 없이 호출합니다. Transformers는 체크포인트의 config.json 또는 사용자가 지정한 GGUF 파일에서 메서드를 읽습니다.사전 양자화 체크포인트 로드

AWQ, AutoRound, AQLM, compressed-tensors, GGUF와 같은 일부 메서드는 체크포인트에서만 로드할 수 있습니다. 먼저 해당 메서드 자체의 라이브러리를 사용하여 모델을 양자화한 다음, Transformers에서 결과를 로드합니다.

모델 로드 시 양자화

해당 메서드의 config 클래스를 생성하고 quantization_config에 전달합니다. 아래 예제는 bitsandbytes를 사용하여 8B 모델을 4비트로 로드합니다.

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",
)

이 그룹의 각 메서드는 TorchAoConfig 또는 BitsAndBytesConfig와 같은 자체 설정 클래스를 가집니다. 대부분은 교정 데이터셋이 필요하지 않습니다. GPTQ는 모델 로딩 중에 데이터셋으로 교정을 수행하기 때문에 예외입니다.

pre-quantized 체크포인트 로드

사전 양자화 체크포인트에는 config.json에 quantization_config가 저장되어 있습니다. from_pretrained가 이를 발견하면 해당 양자화기가 자동으로 선택됩니다.

from transformers import AutoModelForCausalLM

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

체크포인트를 로드하기 전에 해당 메서드가 의존하는 라이브러리를 설치하세요. 각 메서드 페이지에는 설치할 항목이 나열되어 있습니다. 어떤 커널 백엔드가 실행되는지와 같은 로드 옵션을 변경하려면, 동일한 유형의 config를 전달하세요. 이 옵션은 체크포인트에 저장된 옵션과 병합됩니다.

GGUF 체크포인트

GGUF 체크포인트는 가중치, 설정, 토크나이저를 하나의 파일에 담고 있으며, from_pretrained가 읽을 config.json이 없습니다. 파일 이름을 gguf_file로 지정하세요.

from transformers import AutoModelForCausalLM

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

대부분의 GGUF 모델은 로드 시 풀 정밀도로 디퀀트화되므로, 퀀트화되지 않은 모델과 동일한 양의 메모리를 사용합니다. kernels 패키지가 설치된 MPS 환경에서만 Qwen3.5 및 Qwen3.5 MoE의 가중치가 패킹된 상태로 유지됩니다. 자세한 내용은 GGUF를 참고하세요.

양자화된 모델 저장

quantization_config와 양자화된 가중치를 저장하려면 save_pretrained() 또는 push_to_hub()를 호출하세요. 모든 메서드가 양자화된 가중치를 저장할 수 있는 것은 아닙니다.

방법 선택

방법 선택은 일반적인 목표를 위한 시작점을 제안하고, 하드웨어, 비트 폭, 저장, 파인튜닝, torch.compile 지원 기준으로 모든 방법을 비교합니다. 양자화 선택기를 사용하여 각 정밀도에서 모델이 하드웨어의 메모리에 맞는지 확인하세요.

기타 도구

이 도구들은 Transformers 외부에서 모델을 양자화합니다.

  • Optimum은 Intel CPU, ONNX Runtime과 같은 특정 하드웨어 및 런타임에 맞게 모델을 양자화합니다.
  • Hub Spaces는 모델을 양자화한 후 결과를 사용자의 계정에 업로드합니다: bitsandbytes, GGUF, MLX.

리소스

다음 단계

  • 양자화 스킴, 그라놀라리티, 기법이 어떻게 작동하는지 확인하려면 Quantization concepts를 읽어보세요.
  • quantized cache를 사용하여 KV 캐시를 양자화하면 긴 생성 과정에서 메모리를 절약할 수 있습니다.
  • Quantizing exports를 사용하여 내보내는 동안 모델을 양자화합니다.
  • 양자화 방법 기여하기를 통해 새로운 방법을 기여할 수 있습니다.
Update on GitHub