Transformers documentation
量子化
量子化
Quantization(量子化)技術は、8ビット整数(int8)などの低精度データ型で重みと活性化を表現することで、メモリおよび計算コストを削減します。これにより、通常ではメモリに収まらない大きなモデルの読み込みが可能になり、推論の高速化も実現できます。Transformers は AWQ と GPTQ の量子化アルゴリズムをサポートしており、bitsandbytes を用いた 8 ビットおよび 4 ビットの量子化にも対応しています。
Transformers でサポートされていない量子化手法は、HfQuantizer クラスを追加することで利用できます。
Quantizationガイドで、モデルの量子化方法について学びましょう。
QuantoConfig
class transformers.QuantoConfig
< source >( weights = 'int8'activations = Nonemodules_to_not_convert: list | None = None**kwargs )
パラメータ
- weights (
str, optional, defaults to"int8") — The target dtype for the weights after quantization. Supported values are (“float8”,“int8”,“int4”,“int2”) - activations (
str, 任意) — 量子化後のアクティベーションのターゲット dtype。サポートされる値は (None,“int8”,“float8”) です。 - modules_to_not_convert (
list、任意、デフォルトはNone) — 量子化しないモジュールのリストです。一部のモジュールを元の精度のまま残すことが明示的に求められるモデル(Whisper エンコーダー、Llava エンコーダー、Mixtral のゲート層など)の量子化に役立ちます。
これは、quantoを使用して読み込まれたモデルで操作可能なすべての属性や機能に関するラッパークラスです。
引数が正しいことを確認するセーフティチェッカー
AqlmConfig
クラス transformers.AqlmConfig
< source >( in_group_size: int = 8out_group_size: int = 1num_codebooks: int = 1nbits_per_codebook: int = 16linear_weights_not_to_quantize: list[str] | None = None**kwargs )
パラメータ
- in_group_size (
int、任意、デフォルトは 8) — 入力次元に沿ったグループサイズ。 - out_group_size (
int、任意、デフォルトは 1) — 出力次元に沿ったグループサイズです。常に 1 を使用することをお勧めします。 - num_codebooks (
int, 任意、デフォルトは 1) — Additive Quantization 手順におけるコードブックの数。 - nbits_per_codebook (
int, 任意、デフォルトは 16) — 1 つのコードブックベクトルをエンコードするビット数です。コードブックのサイズは 2**nbits_per_codebook です。 - linear_weights_not_to_quantize (
Optional[list[str]]、省略可) — 量子化しないnn.Linearの重みパラメータのフルパスのリスト。 - kwargs (
dict[str, Any]、省略可) — 設定オブジェクトの初期化に使用する追加のパラメータ。
これはaqlmのパラメータに関するラッパークラスです。
引数が正しいことを確認するセーフティチェッカー。一部のNoneType引数をデフォルト値に置き換えることも行います。
VptqConfig
クラス transformers.VptqConfig
< source >( enable_proxy_error: bool = Falseconfig_for_layers: dict = {}shared_layer_config: dict = {}modules_to_not_convert: list | None = None**kwargs )
パラメータ
- enable_proxy_error (
bool、任意、デフォルトはFalse) — 各レイヤーの proxy error を計算します - config_for_layers (
Dict、省略可、デフォルトは{}) — 各レイヤーの量子化パラメータ - shared_layer_config (
Dict、任意、デフォルトは{}) — 各レイヤー間で共有される量子化パラメータ - modules_to_not_convert (
list、任意、デフォルトはNone) — 量子化しないモジュールのリストです。一部のモジュールを元の精度のまま残すことが明示的に求められるモデル(Whisper エンコーダー、Llava エンコーダー、Mixtral のゲート層など)の量子化に役立ちます。 - kwargs (
dict[str, Any]、省略可) — 設定オブジェクトの初期化に使用する追加のパラメータ。
これはvptqのパラメータに関するラッパークラスです。
引数が正しいことを確認するセーフティチェッカー
AwqConfig
class transformers.AwqConfig
< source >( bits: int = 4group_size: int = 128zero_point: bool = Truebackend: AwqBackend = <AwqBackend.AUTO: 'auto'>modules_to_not_convert: list | None = None**kwargs )
パラメータ
- bits (
int、任意、デフォルトは 4) — 量子化に使用するビット数です。 - group_size (
int, 任意、デフォルトは 128) — 量子化に使用するグループサイズです。推奨値は 128 で、-1 を指定するとカラムごとの量子化を使用します。 - zero_point (
bool、任意、デフォルトはTrue) — ゼロポイント量子化を使用するかどうかを指定します。 - backend (
AwqBackend、optional、デフォルトはAwqBackend.AUTO) — 量子化バックエンドです。 - modules_to_not_convert (
list、任意、デフォルトはNone) — 量子化しないモジュールのリストです。一部のモジュールを元の精度のまま残すことが明示的に必要なモデル(Whisper エンコーダー、Llava エンコーダー、Mixtral のゲート層など)の量子化に役立ちます。なお、transformers を直接使用して量子化することはできません。HF モデルの量子化については、AutoAWQのドキュメントを参照してください。
これは、auto-awq ライブラリの awq 量子化(auto_awq バックエンドに依存)によって読み込まれたモデルで操作可能なすべての属性や機能に関するラッパークラスです。
EetqConfig
クラス transformers.EetqConfig
< source >( weights: str = 'int8'modules_to_not_convert: list | None = None**kwargs )
これは、eetqを使用して読み込まれたモデルで操作可能なすべての属性や機能に関するラッパークラスです。
引数が正しいことを確認するセーフティチェッカー
GPTQConfig
クラス transformers.GPTQConfig
< source >( bits: inttokenizer: Any = Nonedataset: list[str] | str | None = Nonegroup_size: int = 128damp_percent: float = 0.1desc_act: bool = Falseact_group_aware: bool = Truesym: bool = Truetrue_sequential: bool = Trueformat: str = 'gptq'meta: dict[str, typing.Any] | None = Nonebackend: str | None = Nonemodel_seqlen: int | None = Noneblock_name_to_quantize: str | None = Nonemodule_name_preceding_first_block: list[str] | None = Nonebatch_size: int = 1pad_token_id: int | None = Nonemax_input_length: int | None = Nonecache_block_outputs: bool = Truemodules_in_block_to_quantize: list[list[str]] | None = None**kwargs )
パラメータ
- bits (
int) — 量子化に使用するビット数です。サポートされている値は (2, 3, 4, 8) です。 - tokenizer (
strまたはPreTrainedTokenizerBase, 省略可) — データセットを処理するために使用されるトークナイザー。以下を渡すことができます:- カスタムトークナイザーオブジェクト。
- huggingface.co上のモデルリポジトリにホストされている事前定義されたトークナイザーのmodel idを表す文字列。
- トークナイザーに必要とされる語彙ファイルを含むディレクトリへのパス。例えば、save_pretrained()メソッドを使用して保存されたものなど、
./my_model_directory/のようなパスを指定します。
- dataset (
Union[list[str]], 任意) — 量子化に使用するデータセットです。文字列のリストとして独自のデータセットを指定するか、GPTQ論文で使用された元のデータセット([‘wikitext2’,‘c4’,‘c4-new’])を使用できます。 - group_size (
int, 任意、デフォルトは 128) — 量子化に使用するグループサイズです。推奨値は 128 で、-1 を指定するとカラムごとの量子化を使用します。 - damp_percent (
float、任意、デフォルトは 0.1) — 減衰に使用するヘッセ行列の対角成分の平均値の割合です。推奨値は 0.1 です。 - desc_act (
bool、任意、デフォルトはFalse) — アクティベーションサイズが大きい順に列を量子化するかを指定します。False に設定すると推論が大幅に高速化されますが、パープレキシティがわずかに悪化することがあります。act-order としても知られています。 - act_group_aware (
bool、任意、デフォルトはTrue) — 量子化時に GAR(グループ認識アクティベーション順序)を使用します。量子化の品質に測定可能なプラスの影響があります。desc_act = Falseの場合のみ適用可能です。desc_act = Trueの場合は、Falseに強制されます。 - sym (
bool、省略可能、デフォルトはTrue) — 対称量子化を使用するかどうかを指定します。 - true_sequential (
bool、任意、デフォルトはTrue) — 単一の Transformer ブロック内でも、逐次量子化を実行するかどうかを指定します。ブロック全体を一度に量子化するのではなく、レイヤーごとに量子化を実行します。その結果、各レイヤーは、直前の量子化済みレイヤーを通過した入力を用いて量子化されます。 - format (
str、任意、デフォルトは"gptq") — GPTQ の重み形式です。gptq(v1) は gptqmodel によってサポートされています。gptq_v2は gptqmodel のみで利用可能です。 - meta (
dict[str, any], 省略可) — 量子化や量子化推論に直接寄与しないプロパティ(例: tooling:version)は、meta に格納されます。 例:meta.quantizer: [“optimum:version”, “gptqmodel:version”] - backend (
str, 省略可) — 使用するカーネルを制御します。gptqmodel の有効な値はauto、auto_trainableなどです。gptqmodel のバックエンドの詳細は、https://github.com/ModelCloud/GPTQModel/blob/main/gptqmodel/utils/backend.py を参照してください。 - model_seqlen (
int, 任意) — モデルが受け取れる最大シーケンス長です。 - block_name_to_quantize (
str, 任意) — 量子化対象の Transformers ブロック名です。None の場合、一般的なパターン(例: model.layers)を用いてブロック名を推論します。 - module_name_preceding_first_block (
list[str]、省略可) — 最初の Transformer ブロックの前にあるレイヤーです。 - batch_size (
int、任意、デフォルトは 1) — データセットを処理する際に使用するバッチサイズ - pad_token_id (
int, 任意) — パッドトークンのIDです。batch_size> 1 の場合、データセットの準備に必要です。 - max_input_length (
int, 任意) — 最大入力長です。最大予想入力長に依存するバッファを初期化するために必要です。act-order を使用する場合の exllama バックエンド固有の引数です。 - cache_block_outputs (
bool、任意、デフォルトはTrue) — ブロックの出力をキャッシュし、次のブロックの入力として再利用するかどうかを指定します。 - modules_in_block_to_quantize (
list[list[str]], 任意) — 指定されたブロック内で量子化対象とするモジュール名のリストのリストです。この引数は、特定の線形モジュールを量子化対象から除外する場合に便利です。 量子化対象のブロックは、block_name_to_quantizeを設定することで指定できます。各リストは順次量子化されます。設定されていない場合、すべての線形層が量子化対象となります。 例:modules_in_block_to_quantize =[["self_attn.k_proj", "self_attn.v_proj", "self_attn.q_proj"], ["self_attn.o_proj"]]。 この例では、q、k、v 層は相互に独立しているため、まずこれらを同時に量子化します。 次に、q、k、v 層が量子化された状態でself_attn.o_proj層を量子化します。これにより、モデルが量子化された際にself_attn.o_projが実際に受け取る入力を反映できるため、より良い結果が得られます。
これは、optimum API を用いて gptqmodel バックエンドに依存する GPTQ 量子化で読み込まれたモデルで操作可能な、すべての属性や機能に関するラッパークラスです。
optimum の gptq 設定辞書から互換クラスを取得します
引数が正しいことを確認するセーフティチェッカー
optimum の gptq 設定に互換性のある dict を取得します
BitsAndBytesConfig
class transformers.BitsAndBytesConfig
< source >( load_in_8bit = Falseload_in_4bit = Falsellm_int8_threshold = 6.0llm_int8_skip_modules = Nonellm_int8_enable_fp32_cpu_offload = Falsellm_int8_has_fp16_weight = Falsebnb_4bit_compute_dtype = Nonebnb_4bit_quant_type = 'fp4'bnb_4bit_use_double_quant = Falsebnb_4bit_quant_storage = None**kwargs )
パラメータ
- load_in_8bit (
bool、任意、デフォルトはFalse) — このフラグは、LLM.int8() による 8 ビット量子化を有効にするために使用されます。 - load_in_4bit (
bool、省略可、デフォルトはFalse) — このフラグを有効にすると、bitsandbytesの FP4/NF4 レイヤーで Linear レイヤーを置き換えることで、4 ビット量子化を有効にします。 - llm_int8_threshold (
float, 任意、デフォルトは 6.0) —LLM.int8() : 8-bit Matrix Multiplication for Transformers at Scale論文で説明されているアウター検出の閾値に対応します: https://huggingface.co/papers/2208.07339 この閾値を超える hidden states の値はアウターとみなされ、それらの値に対する演算は fp16 で行われます。値は通常、正規分布に従い、ほとんどの値は [-3.5, 3.5] の範囲内に収まりますが、大規模モデルでは分布が大きく異なる、例外となる系統的なアウターが存在します。これらのアウターは、多くの場合 [-60, -6] または [6, 60] の区間にあります。Int8 量子化は大きさ ~5 の値に対してはよく機能しますが、それを超えると、パフォーマンスに大きなペナルティが生じます。適切なデフォルトの閾値は 6 ですが、より不安定なモデル(小規模モデル、ファインチューニング)では、より低い閾値が必要になる場合があります。 - llm_int8_skip_modules (
list[str]、省略可) — 8-bit に変換しないモジュールの明示的なリストです。これは、Jukebox のように複数のヘッドが異なる位置に存在し、必ずしも最後の位置にあるとは限らないモデルに有用です。例えば、CausalLMモデルでは、最後のlm_headは元のdtypeのまま保持されます。 - llm_int8_enable_fp32_cpu_offload (
bool、任意、デフォルトはFalse) — このフラグは、高度なユースケースや、この機能について理解しているユーザー向けに使用されます。モデルを異なる部分に分割し、一部の部分を GPU で int8 として、別の部分を CPU で fp32 として実行したい場合に、このフラグを使用できます。これは、google/flan-t5-xxlのような大規模モデルのオフロードに有用です。なお、int8 演算は CPU 上では実行されません。 - llm_int8_has_fp16_weight (
bool、任意、デフォルトはFalse) — このフラグを指定すると、LLM.int8() が 16 ビットのメインウェイトで実行されます。バックワードパスのためにウェイトを往復変換する必要がないため、ファインチューニングに有用です。 - bnb_4bit_compute_dtype (
torch.dtypeまたは str、任意、デフォルトはtorch.float32) — 入力タイプとは異なる計算タイプを設定します。例えば、入力が fp32 であっても、高速化のために計算を bf16 に設定できます。 - bnb_4bit_quant_type (
str、任意、デフォルトは"fp4") — bnb.nn.Linear4Bit レイヤーにおける量子化データ型を設定します。オプションとして、fp4またはnf4で指定される FP4 および NF4 のデータ型があります。 - bnb_4bit_use_double_quant (
bool、任意、デフォルトはFalse) — このフラグは、最初の量子化で得られた量子化定数をさらに量子化するという、ネストされた量子化に使用されます。 - bnb_4bit_quant_storage (
torch.dtypeまたは str、任意、デフォルトはtorch.uint8) — 量子化された 4 ビットのパラメータをパックするためのストレージタイプを設定します。 - kwargs (
dict[str, Any]、省略可) — 設定オブジェクトの初期化に使用する追加のパラメータ。
これは、bitsandbytesを使用して読み込まれたモデルで操作可能なすべての属性や機能に関するラッパークラスです。
現在、LLM.int8()、FP4、およびNF4の量子化のみをサポートしています。bitsandbytesにさらにメソッドが追加された場合、このクラスにも引数が追加されます。
モデルが量子化可能であればTrueを、そうでなければFalseを返します。
引数が正しいことを確認するセーフティチェッカー。一部のNoneType引数をデフォルト値に置き換えることも行います。
このメソッドは、モデルに使用された量子化手法を返します。モデルが量子化できない場合、Noneを返します。
デフォルトの config 属性に対応するすべての属性を config から削除し、可読性を向上させます。その後、Python の辞書にシリアライズします。
HfQuantizer
class transformers.quantizers.HfQuantizer
< source >( quantization_config: QuantizationConfigMixin**kwargs )
HuggingFace の量子化器の抽象クラスです。現時点では、推論および/または量子化のための HF transformers モデルの量子化をサポートしています。 このクラスは transformers.PreTrainedModel.from_pretrained のみで使用され、現時点ではそのメソッドのスコープ外で簡単に使用することはできません。
Attributes
quantization_config (transformers.utils.quantization_config.QuantizationConfigMixin):
モデルの量子化パラメータを定義する量子化設定です。
requires_calibration (bool):
量子化手法が、モデルを使用する前にキャリブレーションを必要とするかどうかを示します。
量子化に追加のメモリが必要な場合は、infer_auto_device_map() の max_memory 引数を調整してください
モデルをデクアンタイズして元のモデルを復元できますが、精度やパフォーマンスが多少低下する可能性があります。 なお、すべての量子化方式がこの操作をサポートしているわけではありません。
{"deserialize": Mxfp4Deserialize, "dequantize": Mxfp4Dequantize} のように、シリアライズされたテンソルを読み込む Op クラスを指定します。
デシリアライズは 1 つのモジュールのパラメータを構築するため、汎用コンバーターでのみ実行されます。デクアンタイズも、モデルのコンバーターの Op、例えば per-expert merge の前に実行されます。
これは、テンソルがディスクからデバイスに送信されるマテリアライゼーション時に発生します。dtype は、事前量子化されたチェックポイントのテンソル param をキャストするための型です。
その param が量子化されていない(float 型)場合、初期化された nn.Module から渡される入力 dtype を使用します。
量子化手法にDeserializerまたはDequantizer(読み込み関数)がある場合、それらによって処理されるため、Noneを返します。
state dict とメタデータを取得します。量子化により state dict を少し修正する必要がある場合に便利です
モデルのコンバーターに一致しないパラメーターに対して実行されるローディングを返します
与えられたパラメータが量子化の対象であるかどうかを確認します。
postprocess_model
< source >( model: PreTrainedModel**kwargs )
重みの読み込み後にモデルを後処理します。
抽象メソッド_process_model_after_weight_loadingをオーバーライドすることを忘れないでください。
preprocess_model
< source >( model: PreTrainedModeldtype = None**kwargs )
重みの読み込み前にモデルの属性を設定し、またはモデルの変換を行います。この時点でモデルは meta デバイス上で初期化されているため、モジュールをインプレースで置き換える目的で、モデルのスケルトンを自由に操作できます。抽象メソッド _process_model_before_weight_loading をオーバーライドすることを忘れないでください。
モデルから量子化設定を削除します。
モデルが構築される前に要求されたattn_implementationを確認するため、クオンタイザーがデフォルト値を設定できます。
update_device_map
< source >( device_map: dict[str, typing.Any] | None )
既存の device map を新しいものに上書きして渡す場合は、このメソッドをオーバーライドしてください。例えば、accelerate は必須要件であるため、bitsandbytes の場合、device_map が渡されない場合は、device_map が `“auto”` に設定されます。
update_dtype
< source >( dtype: torch.dtype )
一部の量子化手法では、モデルのdtypeをターゲットのdtypeに明示的に設定する必要があります。その動作を維持したい場合は、このメソッドをオーバーライドする必要があります。
の「inv_scale」などのカスタムキーを考慮して、model.tp_plan または model.ep_plan(設定とすべてのサブ設定からマージされた完全なプラン)をその場で更新します
モデルのコンバーター(変換マッピングから)がシリアライズされた名前を読み込むようにします。モデルのパラメータが決定します。例えば、experts.*.gate_proj.weightをexperts.gate_up_projにマージする場合:
experts.gate_up_proj_scale_invはパラメータであり、コピーによってexperts.*.gate_proj.weight_scale_invがこれにマージされます。- そうしないと、コンバーターは
experts.*.gate_proj.weight_scale_invも収集してしまい、dequantize 演算が先に実行されてしまいます。
このメソッドは、from_pretrainedに渡される引数との潜在的な競合を、必要に応じてチェックするために使用されます。transformers に統合される将来のすべてのクアンタイザーに対して、このメソッドを定義する必要があります。明示的なチェックが不要な場合は、何も返さないようにしてください。
HiggsConfig
クラス transformers.HiggsConfig
< source >( bits: int = 4p: int = 2modules_to_not_convert: list[str] | None = Nonehadamard_size: int = 512group_size: int = 256tune_metadata: dict[str, typing.Any] | None = None**kwargs )
パラメータ
- bits (int, 任意、デフォルトは 4) — 量子化に使用するビット数です。2、3、4 のいずれかを指定できます。デフォルトは 4 です。
- p (int, optional, デフォルトは 2) — 量子化グリッドの次元です。1 と 2 がサポートされています。実際には 2 の方が常に優れています。デフォルトは 2 です。
- modules_to_not_convert (
list、任意、デフォルトは [“lm_head”]) — 量子化しないべき線形層のリスト。 - hadamard_size (int, 任意、デフォルトは 512) — HIGGS 法における Hadamard サイズ。デフォルトは 512 です。行列の入力次元は、この値にパディングされます。この値を 512 未満にすると、量子化の品質が低下します。
- group_size (int, 任意、デフォルトは 256) — HIGGS 手法のグループサイズです。64、128、256 のいずれかを指定できます。値を下げてもパフォーマンスへの影響はほとんどありません。デフォルトは 256 です。hadamard_size の約数である必要があります。
- tune_metadata (‘dict’、任意、デフォルトは {}) — カーネルチューニング結果を保存するためのモジュール単位のメタデータ(gemm ブロック形状、GPU メタデータなど)です。デフォルトは空の辞書です。チューニング中に自動的に設定されます。
HiggsConfig は、HIGGS 手法を用いた量子化のための設定クラスです。
引数が正しいことを確認するセーフティチェッカー。一部のNoneType引数をデフォルト値に置き換えることも行います。
HqqConfig
class transformers.HqqConfig
< source >( nbits: int = 4group_size: int = 64view_as_float: bool = Falseaxis: int | None = Nonedynamic_config: dict | None = Noneskip_modules: list = ['lm_head']**kwargs )
パラメータ
- nbits (
int、任意、デフォルトは 4) — ビット数です。サポートされる値は (8, 4, 3, 2, 1) です。 - group_size (
int、任意、デフォルトは 64) — グループサイズ値。サポートされる値は、weight.shape[axis] で割り切れる任意の値です。 - view_as_float (
bool、省略可能、デフォルトはFalse) —Trueに設定すると、量子化された重みを float として表示します(分散学習で利用されます)。 - axis (
Optional[int], 省略可) — グループ化を実行する軸。サポートされる値は 0 または 1 です。 - dynamic_config (dict, 任意) — 動的設定のパラメータです。キーはレイヤーの名前タグ、値は量子化設定です。 設定した場合、id で指定された各レイヤーは、それぞれ専用の量子化設定を使用します。
- skip_modules (
list[str]、任意、デフォルトは['lm_head']) — スキップするnn.Linearレイヤーのリスト。 - kwargs (
dict[str, Any]、省略可) — 設定オブジェクトの初期化に使用する追加のパラメータ。
これはhqqのBaseQuantizeConfigのラッパーです。
Override from_dict, used in AutoQuantizationConfig.from_dict in quantizers/auto.py
引数が正しいことを確認するセーフティチェッカー。一部のNoneType引数をデフォルト値に置き換えることも行います。
デフォルトの config 属性に対応するすべての属性を config から削除し、可読性を向上させます。その後、Python の辞書にシリアライズします。
MetalConfig
クラス transformers.MetalConfig
< source >( bits: int = 4group_size: int = 64modules_to_not_convert: list | None = Nonedequantize: bool = False**kwargs )
Apple Silicon (MPS) デバイスを対象とする Metal アフィン量子化用の設定クラスです。
この量子化手法は、Hugging Face Hub の mlx-quantization-metal-kernels Metal カーネルを使用して、ビット幅とグループサイズを設定可能なアフィン量子化(スケール + qbiases)を実行します。量子化された重みは uint32 テンソルにパッキングされ、フォワードパスでは融合されたデ量子化 + matmul Metal カーネルが使用されます。
Mxfp4Config
class transformers.Mxfp4Config
< source >( modules_to_not_convert: list | None = Nonedequantize: bool = False**kwargs )
これは、mxfp4量子化を使用して読み込まれたモデルで操作可能なすべての属性と機能に関するラッパークラスです。
NVFP4Config
クラス transformers.NVFP4Config
< source >( modules_to_not_convert: list[str] | None = None**kwargs )
オンザフライのNVFP4重み量子化の設定。
FbgemmFp8Config
class transformers.FbgemmFp8Config
< source >( activation_scale_ub: float = 1200.0modules_to_not_convert: list | None = None**kwargs )
これは、fbgemm fp8 量子化を使用して読み込まれたモデルで操作可能なすべての属性や機能に関するラッパークラスです。
CompressedTensorsConfig
class transformers.CompressedTensorsConfig
< source >( config_groups: dict[str, typing.Union[ForwardRef('QuantizationScheme'), list[str]]] | None = Noneformat: str = 'dense'quantization_status: QuantizationStatus = 'initialized'kv_cache_scheme: typing.Optional[ForwardRef('QuantizationArgs')] = Noneglobal_compression_ratio: float | None = Noneignore: list[str] | None = Nonequant_method: str = 'compressed-tensors'run_compressed: bool | None = Nonedequantize: bool = Falseuse_optimized_inference: bool = False**kwargs )
パラメータ
- config_groups (
typing.dict[str, typing.Union[ForwardRef('QuantizationScheme'), typing.list[str]]], 任意) — グループ名を量子化スキームの定義にマッピングする辞書 - format (
str、任意、デフォルトは"dense") — 重みが保存される形式。例:dense、float-quantized、pack-quantized - quantization_status (
QuantizationStatus、optional、デフォルトは"initialized") — 量子化ライフサイクルにおけるモデルのステータス。例: ‘initialized’、‘calibration’、‘frozen’ - kv_cache_scheme (
typing.Union[QuantizationArgs, NoneType]、省略可) — kv キャッシュの量子化を指定します。None の場合、kv キャッシュは量子化されません。 - global_compression_ratio (
typing.Union[float, NoneType]、省略可) — モデル圧縮率の0〜1の浮動小数点数 - ignore (
typing.Union[typing.list[str], NoneType], 省略可) — 量子化しないレイヤー名またはタイプを指定します。「re:」プレフィックス付きの正規表現に対応しています。 - quant_method (
str、省略可、デフォルトは"compressed-tensors") — 上書きしないでください。compressed-tensors である必要があります。 - run_compressed (
bool、省略可) — 非推奨です。dequantizeを使用してください。唯一の効果は、dequantizeをその逆の値に設定することです。run_compressed=Falseはdequantize=Trueを意味します。 - dequantize (
bool、任意、デフォルトはFalse) —Trueの場合、ロード時に量子化された重みがモデルの dtype(例: BF16)にデ量子化されます。これは、モデルのファインチューニングや元の dtype での保存に必要です。Falseの場合、重みは圧縮された形式のまま保持され、compressed-tensors が最初の forward pass でそれらをデコンプレスします。 - use_optimized_inference (
bool、省略可、デフォルトはFalse) —Trueの場合、カーネルが用意されているスキームのレイヤーは量子化された重みを保持したまま、それらのカーネルで実行されます(現在は CUDA SM89 以上、XPU、または torch >= 2.15 の MPS での W8A8 FP8)。推論専用であり、オプトイン方式です。これを指定しない場合、モデルは通常の compressed-tensors ルートで処理されます。dequantize=Trueの場合は無視されます。
これは、compressed-tensors の量子化設定オプションを処理するラッパークラスです。
compressed_tensors.QuantizationConfig のラッパーです。
from_dict
< source >( config_dictreturn_unused_kwargs = False**kwargs ) → QuantizationConfigMixin
Pythonのパラメータ辞書からCompressedTensorsConfigをインスタンス化します。 必要に応じて、ネストされたquantization_config内の引数を展開します。
config.json に追加する量子化設定
このインスタンスを Python の辞書にシリアライズします。戻り値: dict[str, Any]: この設定インスタンスを構成するすべての属性の辞書。
デフォルトの config 属性に対応するすべての属性を config から削除し、可読性を向上させます。その後、Python の辞書にシリアライズします。
TorchAoConfig
クラス transformers.TorchAoConfig
< source >( quant_type: AOBaseConfigmodules_to_not_convert: list | None = Noneinclude_input_output_embeddings: bool = Falseuntie_embedding_weights: bool = False**kwargs )
パラメータ
- quant_type (
AOBaseConfig) — 量子化の種類を指定する torchao のAOBaseConfigインスタンス。例:Int4WeightOnlyConfig(group_size=32)、Int8WeightOnlyConfig()、Int8DynamicActivationInt8WeightConfig()、Float8WeightOnlyConfig()など。 - modules_to_not_convert (
list、任意、デフォルトはNone) — 量子化しないモジュールのリストです。一部のモジュールを元の精度のまま残すことが明示的に求められるモデルの量子化に役立ちます。 - include_input_output_embeddings (
bool、任意、デフォルトはFalse) — 量子化に埋め込みを含めるかどうかを指定します。このフラグが設定されている場合、入力埋め込みは module_not_to_convert リストからも削除されます。 - untie_embedding_weights (
bool、任意、デフォルトはFalse) — 他の重みと共有されている入力埋め込みの重みを量子化する場合に、その重みを分離(untie)するかどうかを指定します。
torchaoの量子化/スパース化手法用の設定クラス。
例:
from torchao.quantization import Int4WeightOnlyConfig
quantization_config = TorchAoConfig(Int4WeightOnlyConfig(group_size=32))
model = AutoModelForCausalLM.from_pretrained(
model_id, device_map="cuda", torch_dtype=torch.bfloat16, quantization_config=quantization_config
)辞書から設定を作成します。
適用する量子化設定を返します。
設定を検証し、デフォルト値を設定します。
設定を辞書に変換します。
BitNetQuantConfig
class transformers.BitNetQuantConfig
< source >( modules_to_not_convert: list | None = Nonelinear_class: str = 'bitlinear'quantization_mode: str = 'offline'use_rms_norm: bool = Falserms_norm_eps: float | None = 1e-06**kwargs )
パラメータ
- modules_to_not_convert (
Optional[List]、任意) —nn.Linearの重みパラメータのフルパスのリストを指定して、量子化しない対象を定義できます。デフォルトは None です。 - linear_class (
str、任意、デフォルトは"bitlinear") — 使用する linear class の種類です。bitlinearまたはautobitlinearのいずれかを指定できます。 - quantization_mode (
str、任意、デフォルトは"offline") — 使用する量子化モードです。onlineまたはofflineのいずれかです。onlineモードでは、重みの量子化パラメータが各フォワードパス中に動的に計算されます(例:現在の重みの値に基づいて)。これにより、学習中の重みの変化に適応できます(Quantization-Aware Training - QAT)。offlineモードでは、量子化パラメータが推論の前に事前計算されます。これらのパラメータは固定され、量子化モデルに読み込まれます。これにより、オンライン量子化と比較して、ランタイムオーバーヘッドが一般的に低くなります。 - use_rms_norm (
bool、任意、デフォルトはFalse) — 量子化の前にアクティベーションに RMSNorm を適用するかどうか。これは、量子化/パッキングの前にアクティベーションを正規化する、元の BitNet 論文のアプローチと一致します。 - rms_norm_eps (
float, 任意、デフォルト値は 1e-06) — RMSNorm レイヤーで数値安定性のために使用される epsilon 値。 - kwargs (
dict[str, Any]、省略可) — 特定の量子化バックエンドや将来のバージョンで使用される可能性のある追加のキーワード引数。
BitNet量子化を適用するための設定クラス。
引数が正しいことを確認するセーフティチェッカー
SpQRConfig
class transformers.SpQRConfig
< source >( bits: int = 3beta1: int = 16beta2: int = 16shapes: dict[str, int] | None = Nonemodules_to_not_convert: list[str] | None = None**kwargs )
パラメータ
- bits (
int、任意、デフォルトは 3) — 重みおよび 1 次ゼロポイントとスケールのビット数を指定します。 現在サポートされているのは bits = 3 のみです。 - beta1 (
int、任意、デフォルト値は 16)— SpQR のタイル幅です。現在サポートされているのは beta1 = 16 のみです。 - beta2 (
int、任意、デフォルト値は 16)— SpQR タイルの高さです。現在サポートされているのは beta2 = 16 のみです。 - shapes (
Optional, 省略可) — 各オブジェクトの形状を保持する辞書です。bits、beta1、beta2 だけではパラメータの正確なサイズを推定できないため、この情報が必要です。 - modules_to_not_convert (
Optional[list[str]]、省略可) —nn.Linearの重みパラメータのフルパスのリストを指定し、量子化しない対象を定義できます。デフォルト値は None です。 - kwargs (
dict[str, Any]、省略可) — 設定オブジェクトの初期化に使用する追加のパラメータ。
これはspqrのパラメータに関するラッパークラスです。詳細については、元の論文を参照してください。
引数が正しいことを確認するセーフティチェッカー。一部のNoneType引数をデフォルト値に置き換えることも行います。
FineGrainedFP8Config
class transformers.FineGrainedFP8Config
< source >( activation_scheme: str = 'dynamic'weight_block_size: tuple = (128, 128)dequantize: bool = Falsemodules_to_not_convert: list | None = Nonemodules_to_convert: list | None = Nonescale_fmt: str = 'float'expert_dtype: str = 'fp8'**kwargs )
パラメータ
- activation_scheme (
str、任意、デフォルトは"dynamic") — アクティベーションに使用されるスキームです。デフォルトであり、現時点でサポートされている唯一のスキームは “dynamic” です。 - weight_block_size (
typing.tuple[int, int]、任意、デフォルトは(128, 128)) — 量子化用の重みブロックのサイズです。デフォルトは (128, 128) です。 - dequantize (
bool、省略可、デフォルトはFalse) — モデルの読み込み時にデクアンタイズを行うかどうかを指定します。 - modules_to_not_convert (
list, 省略可) — 量子化時に変換しないモジュール名のリストです。 - modules_to_convert (
list, 任意) — 量子化時に変換すべき追加のモジュール名(埋め込みテーブルなど)のリスト。 - scale_fmt (
str、任意、デフォルトは"float") — ブロックごとの重みスケールの保存用 dtype:"float"(fp32、V3 スタイル) または"ue8m0"(1 バイトのtorch.float8_e8m0fnu、V4 スタイル)。 - expert_dtype (
str、任意、デフォルトは"fp8") — MoEエキスパートの重みの形式:"fp8"、または DeepSeek-V4 の FP4 パック済みエキスパートには"fp4"。
FineGrainedFP8Config は、主に deepseek モデルで利用される、細粒度の FP8 量子化用の設定クラスです。
引数が正しいことを確認するセーフティチェッカー
QuarkConfig
FourOverSixConfig
class transformers.FourOverSixConfig
< source >( activation_dtype: str | None = Noneactivation_scale_rule: str | None = Nonedtype: str = 'nvfp4'gradient_dtype: str | None = Nonegradient_scale_rule: str | None = Nonekeep_master_weights: bool = Falsematmul_backend: str | None = Noneoutput_dtype: str | None = 'bfloat16'quantize_backend: str | None = Nonescale_rule: str = 'mse'weight_dtype: str | None = Noneweight_scale_2d: bool = Falseweight_scale_rule: str | None = Nonemodule_config_overrides: dict[str, dict[str, typing.Any]] | None = Nonemodules_to_not_convert: list[str] | None = ['lm_head']**kwargs )
パラメータ
- activation_dtype (
str、省略可) — アクティベーションテンソルを量子化するために使用するデータ型です。指定しない場合、dtypeが使用されます。 - activation_scale_rule (
str、省略可) — アクティベーションテンソルのブロックに対してスケールを選択する際に使用するスケーリングルールです。指定しない場合、scale_ruleが使用されます。 - dtype (
str、デフォルトは “nvfp4”、省略可、デフォルトは"nvfp4") — レイヤーの重み、活性化、テンソルに使用するデータ型です。"nvfp4"または"mxfp4"を指定できます。 - gradient_dtype (
str、省略可) — 勾配テンソルを量子化する際に使用するデータ型です。指定しない場合、dtypeが使用されます。 - gradient_scale_rule (
str, 省略可) — 勾配テンソルのブロックに対してスケールを選択する際に使用するスケーリングルールです。指定しない場合、scale_ruleが使用されます。 - keep_master_weights (
bool、デフォルトは False、任意、デフォルトはFalse) — マスターウェイトを保持するかどうか。Trueの場合、常に高精度のウェイトが保持され、各フォワードパスでウェイトがオンラインで量子化されます。これは量子化学習に有用です。 - matmul_backend (
str, 省略可) — 行列積に使用するバックエンドです。"cutlass"または"pytorch"を指定できます。指定しない場合、利用可能な場合はCUTLASSが、それ以外の場合はPyTorchが使用されます。 - output_dtype (
str、省略可能、デフォルトは"bfloat16") — レイヤーの出力に使用するデータ型です。"bfloat16"または"float16"を指定できます。 - quantize_backend (
str, 省略可) — 量子化に使用するバックエンドです。"cuda"、"triton"、または"pytorch"を指定できます。 指定しない場合、実行環境および各バックエンドがサポートするオプションに基づいて、最速のバックエンドが自動的に選択されます。 通常、推論には"cuda"、学習には"triton"、CUDA 以外のデバイスでは"pytorch"が使用されます。 - scale_rule (
str、デフォルト “mse”、任意、デフォルトは"mse") — ブロックスケールを選択する際に使用するルールです。Four Over Six には"mse"、"mae"、"abs_max"、デフォルトの NVFP4 量子化には"static_6"、すべてのブロックを最大値 4 にスケーリングするには"static_4"を指定できます。 - weight_dtype (
str, 省略可) — 重みテンソルを量子化する際に使用するデータ型です。指定しない場合、dtypeが使用されます。 - weight_scale_2d (
bool、デフォルトは False、任意、デフォルトはFalse) — 重みテンソルに対して 2D ブロック単位でスケール係数を計算するかどうか。これは学習中に実行すべきです。 - weight_scale_rule (
str, 任意) — 重みテンソルのブロックに対してスケールを選択する際に使用するスケーリングルールです。指定しない場合、scale_ruleが使用されます。 - module_config_overrides (
dict[str, dict[str, Any]], 省略可) — モジュール固有の設定オーバーライドを格納した辞書です。キーにはモジュール名を、値にはそのモジュールの量子化設定を含む辞書を指定します。これにより、特定のモジュールに対してデフォルトの設定を上書きできます。 - modules_to_not_convert (
list[str]、任意、デフォルトは['lm_head']) — 量子化から除外するモジュールのリストです。デフォルトでは、lm_headが除外されます。
これは fouroversix による量子化のすべてのオプションを含むラッパークラスです。簡単に説明すると、Four Over Six は NVFP4 量子化の改良版であり、16 個の FP4 値からなる各ブロック内の最大値を、4 または 6 に適応的にスケーリングします。スケーリングに 6 を選択すると FP4 値の全範囲を利用できますが、4 を選択すると量子化誤差の分布がより均一になります。詳細については、元の論文を参照してください: https://arxiv.org/abs/2512.02010。
FPQuantConfig
class transformers.FPQuantConfig
< source >( forward_dtype: str = 'nvfp4'forward_method: str = 'abs_max'backward_dtype: str = 'bf16'store_master_weights: bool = Falsehadamard_group_size: int | None = Nonepseudoquantization: bool = Falsetransform_init: str = 'hadamard'modules_to_not_convert: list[str] | None = None**kwargs )
パラメータ
- forward_dtype (
str、省略可、デフォルトは"nvfp4") — フォワードパスに使用する dtype です。 - forward_method (
str、省略可、デフォルトは"abs_max") — フォワードパスに使用するスケーリング。"abs_max"または"quest"を指定できます。"abs_max"は PTQ に適しており、"quest"は QAT に適しています。 - backward_dtype (
str、任意、デフォルトは"bf16") — バックワードパスに使用する dtype です。 - store_master_weights (
bool、省略可、デフォルトはFalse) — マスターウェイトを保存するかどうか。レイヤーウェイトに対する QAT に必要です。 - hadamard_group_size (
int, 任意) —"quest"の場合、量子化前の Hadamard 変換のグループサイズです。MXFP4 のグループサイズ(32)と一致します。Noneの場合、"nvfp4"では 16、"mxfp4"では 32 に設定されます。 - pseudoquantization (
bool、任意、デフォルトはFalse) — Triton ベースの疑似量子化を使用するかどうか。非 Blackwell GPU では必須です。速度向上の効果はありません。デバッグ目的で使用します。 - transform_init (
str、省略可、デフォルトは"hadamard") — 前処理行列を初期化する方法を指定します。"hadamard"、"identity"、または"gsr"を指定できます。 - modules_to_not_convert (
list, 任意) — 量子化しないモジュールのリストです。一部のモジュールを元の精度のまま残すことが明示的に必要なモデルの量子化に役立ちます。
FPQuantConfig は、FPQuant 手法による量子化用の設定クラスです。
引数が正しいことを確認するセーフティチェッカー。一部のNoneType引数をデフォルト値に置き換えることも行います。
AutoRoundConfig
class transformers.AutoRoundConfig
< source >( bits: int = 4group_size: int = 128sym: bool = Truebackend: str = 'auto'**kwargs )
パラメータ
- bits (
int、任意、デフォルトは 4) — 量子化に使用するビット数です。サポートされている値は (2, 3, 4, 5, 6, 7, 8) です。 - group_size (
int、任意、デフォルトは 128) — グループサイズ値 - sym (
bool、省略可能、デフォルトはTrue) — 対称量子化を行うかどうか - backend (
str、任意、デフォルトは"auto") — 推論バックエンドです。デフォルトでは、AutoRound がデバイス、量子化設定、インストール済みのライブラリに基づいて互換性のあるバックエンドを選択します。すべてのバックエンドオプションについては、推論バックエンドの指定を参照してください。
これは、AutoRound量子化によって読み込まれたモデルで操作可能なすべての属性と機能に関するラッパークラスです。
引数が正しいことを確認するセーフティチェッカー。
SinqConfig
class transformers.SinqConfig
< source >( nbits: int = 4group_size: int = 64tiling_mode: str = '1D'method: str = 'sinq'modules_to_not_convert: list[str] | None = None**kwargs: Any )
パラメータ
- nbits (
int、デフォルト 4) — 重みの量子化ビット数。 - group_size (
int, デフォルト 64) — SINQ 重み量子化で使用するグループサイズ(8 の倍数である必要があります)。 - tiling_mode (
str, デフォルト “1D”) — SINQ のタイルリングモード(通常は “1D”、バックエンドがサポートしている場合は “2D”)。 - method (
str, デフォルト “sinq”) — “sinq” – カリブレーション不要のウェイトのみ SINQ “asinq” – A-SINQ(アクティベーション認識型)。Hugging Face ではサポートされていません。公式の SINQ リポジトリを参照してください。 - modules_to_not_convert (
list[str]、省略可) — フル精度を維持するモジュール名/プレフィックスのリスト。 - **kwargs —
追加のユーザー引数(ラウンドトリップのために
_extra_kwargsに保持されます)。
SINQ / A-SINQ用のQuantization config。
これを渡す先:
AutoModel.from_pretrained(…, quantization_config=SinqConfig(…))
GgufConfig
クラス transformers.GgufConfig
< source >( gguf_file: str | None = Nonedequantize: bool = False**kwargs )
GGUFブロック内に重みを保持したまま、量子化されたGGUFチェックポイントをロードします。