Transformers documentation

SINQ

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

arXiv License GitHub stars hf-space

SINQ

Sinkhorn-Normalized Quantization (SINQ)은 정확도를 희생하지 않으면서 Large Language Models에 대해 최첨단 성능을 제공하는 빠르고, 플러그 앤 플레이 방식의, 모델에 무관한 양자화 기법입니다.

🔍 여기서 만나볼 수 있는 내용

📊 기능 비교: SINQ vs HQQ(교정 없음) 및 A-SINQ vs AWQ(교정됨)

기능SINQHQQA-SINQAWQ
🎯 보정교정 불필요교정 불필요보정됨보정됨
🧮 양자화 유형대칭 & 비대칭비대칭 전용대칭 & 비대칭대칭 & 비대칭
📦 NF4 지원예아니요예아니요
⚡ 양자화 속도HQQ보다 2배 빠름느림AWQ보다 4배 빠름느림
📈 모델 품질높음낮추기높음낮음

📄 더 알고 싶으신가요?

  • arXiv에서 저희 논문을 읽어보세요
  • 공식 SINQ GitHub 저장소를 확인하세요

1. SINQ로 모든 LLM 양자화

설정 및 빠른 시작

먼저 패키지를 설치합니다. 두 가지 방법으로 설치할 수 있습니다:

  • 공식 Github 저장소 SINQ에서 소스로 설치 [권장]
  • pip 패키지를 사용하여:
pip install sinq

몇 줄로 양자화

SINQ를 사용하여 🤗 Hugging Face 모델을 양자화하는 것은 간단하며, 몇 줄의 코드만으로 가능합니다. 먼저, SinqConfig를 생성하고 다음 매개변수를 지정합니다:

플래그설명유형옵션기본값
--nbits가중치 양자화를 위한 비트 폭int2, 3, 4, 5, 6, 84
--tiling_mode가중치 행렬 타일링 전략str1D, 2D1D
--group_size양자화 그룹당 가중치int64, 12864
--method양자화 방법strsinq, asinqsinq
--modules_to_not_convertquantize되지 않은 레이어 목록str의 목록[lm_head, …][lm_head]

이후 양자화할 모델을 지정하고 SinqConfig를 양자화 구성 옵션으로 전달합니다

import torch
from transformers import AutoTokenizer, AutoModelForCausalLM, SinqConfig

model_name = "Qwen/Qwen3-1.7B"

cfg = SinqConfig(
    nbits=4,
    group_size=64,
    tiling_mode="1D",
    method="sinq",
    modules_to_not_convert=["lm_head"]
)

tok = AutoTokenizer.from_pretrained(model_name)
qmodel = AutoModelForCausalLM.from_pretrained(
    model_name,
    quantization_config=cfg,
    dtype=torch.bfloat16
)

✅ 이제 SINQ로 양자화된 모델을 추론하거나 저장할 수 있습니다.

최신 정보를 확인하시려면 공식 SINQ GitHub 저장소를 확인하세요!


저장 및 다시 로드

나중에 양자화된 모델을 재사용하려면 디스크에 저장하거나 HuggingFace Hub에 push한 후, base FP 가중치 없이 다시 로드할 수 있습니다. 소스에서 SINQ를 설치한 경우, 양자화된 모델을 다시 로드할 때 patch_hf_pretrained_io 함수를 호출해야 합니다:

# Save sinq quantized model
model.save_pretrained("/path/to/save/qwen3-1.7B-sinq-4bit")
model.push_to_hub("HF_Hub_username/qwen3-1.7B-sinq-4bit")
tokenizer.push_to_hub("HF_Hub_username/qwen3-1.7B-sinq-4bit")
from sinq.hf_io import patch_hf_pretrained_io
patch_hf_pretrained_io()
# Reload a sinq quantized model
hf_hub_model = "HF_Hub_username/qwen3-1.7B-sinq-4bit"
tokenizer  = AutoTokenizer.from_pretrained(hf_hub_model)
model = AutoModelForCausalLM.from_pretrained(hf_hub_model)

그렇지 않은 경우, pip를 통해 SINQ를 설치했다면 HF 내장 함수를 그대로 사용할 수 있습니다:

# --- Save to a folder (sharded safetensors) ---

# 'model' must already be SINQ-quantized
# Locally save
qmodel.save_pretrained("/path/to/save/qwen3-1.7B-sinq-4bit")
# Push to the Hub
qmodel.push_to_hub("HF_Hub_username/qwen3-1.7B-sinq-4bit")
tok.push_to_hub("HF_Hub_username/qwen3-1.7B-sinq-4bit")

# --- Reload later--

save_dir = "/path/to/save/qwen3-1.7B-sinq-4bit"
hf_hub_model = "HF_Hub_username/qwen3-1.7B-sinq-4bit"

# From local directory
tok = AutoTokenizer.from_pretrained(save_dir)
qmodel = AutoModelForCausalLM.from_pretrained(save_dir)

# From HF Hub
tok = AutoTokenizer.from_pretrained(hf_hub_model)
qmodel = AutoModelForCausalLM.from_pretrained(hf_hub_model)

✅ 이제 모델이 로드되어 추론을 준비했습니다!

참고: 모델이 4 bit으로 양자화되어 있고 gemlite 라이브러리가 설치된 경우, 추론을 실행하기 위해 gemlite의 더 빠른 커널이 사용됩니다.


lm-eval 평가 프레임워크와 호환

다음은 벤치마크 데이터셋에서 SINQ 양자화 모델을 평가하는 최소 예시입니다:

import torch
from lm_eval import evaluator
from lm_eval.models.huggingface import HFLM

device = torch.accelerator.current_accelerator().type if torch.accelerator.is_available() else "cpu"

# Wrap the already quantized model and tokenizer with HFLM
lm = HFLM(pretrained=qmodel, tokenizer=tok, device=device)

# Evaluate (many tasks available on lm-eval such as MMLU and HellaSwag)
results = evaluator.simple_evaluate(
    model=lm,
    tasks=["wikitext"],  # small and fast benchmark
    device=device
)

2. 이 작업을 인용하는 방법

연구나 애플리케이션에서 SINQ를 유용하게 활용하신 경우

  • SINQ GitHub 저장소에 별 ⭐️을 달아 주셔서 저희 프로젝트를 지원해 주세요
  • 다음 논문을 인용해 주세요:
@misc{muller2025sinq,
      title={SINQ: Sinkhorn-Normalized Quantization for Calibration-Free Low-Precision LLM Weights}, 
      author={Lorenz K. Muller and Philippe Bich and Jiawei Zhuang and Ahmet Celik and Luca Benfenati and Lukas Cavigelli},
      year={2025},
      eprint={2509.22944},
      archivePrefix={arXiv},
      primaryClass={cs.LG},
      url={http://arxiv.org/abs/2509.22944}
}

3. 현재 한계

현재 Hugging Face에서는 A-SINQ 방법을 지원하지 않습니다. 이 전략으로 모델을 양자화하려면 공식 SINQ 저장소를 참고하세요. 현재 SINQ 양자화 전략과 SINQ 양자화 모델은 Multi-GPU 옵션을 지원하지 않으므로, 시스템에 여러 GPU가 있는 경우 사용할 GPU를 지정해야 합니다.

Update on GitHub