Transformers documentation

SINQ

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