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)は、精度を犠牲にすることなく、大規模言語モデルに対して最先端の性能を実現する、高速でプラグアンドプレイ、モデル非依存の量子化手法です。

🔍 ここにあるもの

📊 機能比較: SINQ vs HQQ (キャリブレーション不要) および A-SINQ vs AWQ (キャリブレーション済み)

機能SINQHQQA-SINQAWQ
🎯 較正キャリブレーション不要キャリブレーション不要キャリブレーション済みキャリブレーション済み
🧮 量子化タイプ対称と非対称非対称のみ対称と非対称対称 & 非対称
📦 NF4 対応はいいいえはいいいえ
⚡ 量子化の速度HQQより約2倍高速遅いAWQより約4倍高速遅い
📈 モデルの品質より高い下より高い下

📄 さらに詳しく知りたいですか?

  • arXiv に掲載されている論文をご覧ください。
  • 公式のSINQ GitHub リポジトリを確認してください

1. SINQで任意のLLMを量子化

セットアップとクイックスタート

まず、パッケージをインストールします。インストールには2つの方法があります。

  • 公式の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_convert量子化されないレイヤーのリスト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 にプッシュし、ベースの 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ビットで量子化されており、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