Transformers 文件

量化

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

量化

量化技術透過使用較低精度的資料型別(如 8 位整數 int8)來表示權重和啟用值,從而降低記憶體和計算成本。這使得你可以載入通常無法放入記憶體的更大模型,並加快推理速度。Transformers 支援 AWQ 和 GPTQ 量化演算法,並且支援使用 bitsandbytes 進行 8 位和 4 位量化。

Transformers 中不支援的量化技術可以透過 HfQuantizer 類新增。

量化指南中學習如何量化模型。

QuantoConfig

class transformers.QuantoConfig

< >

( weights = 'int8' activations = None modules_to_not_convert: typing.Optional[list] = None **kwargs )

引數

  • weights (str, 可選, 預設為 "int8") — 量化後權重的目標資料型別。支援的值為(“float8”,“int8”,“int4”,“int2”)
  • activations (str, 可選) — 量化後啟用值的目標資料型別。支援的值為 (None,“int8”,“float8”)
  • modules_to_not_convert (list, 可選, 預設為 None) — 不進行量化的模組列表,這對於量化那些明確要求某些模組保持原始精度的模型很有用(例如 Whisper 編碼器、Llava 編碼器、Mixtral 門控層)。

這是一個封裝類,包含了所有在使用 quanto 載入的模型中可以調整的屬性和功能。

post_init

< >

( )

檢查引數是否正確的安全檢查器

AqlmConfig

class transformers.AqlmConfig

< >

( in_group_size: int = 8 out_group_size: int = 1 num_codebooks: int = 1 nbits_per_codebook: int = 16 linear_weights_not_to_quantize: typing.Optional[list[str]] = None **kwargs )

引數

  • in_group_size (int, 可選, 預設為 8) — 沿輸入維度的分組大小。
  • out_group_size (int, 可選, 預設為 1) — 沿輸出維度的分組大小。建議始終使用 1。
  • num_codebooks (int, 可選, 預設為 1) — 加性量化(Additive Quantization)過程中的碼本數量。
  • nbits_per_codebook (int, 可選, 預設為 16) — 編碼單個碼本向量的位數。碼本大小為 2**nbits_per_codebook。
  • linear_weights_not_to_quantize (Optional[list[str]], 可選) — 不應被量化的 nn.Linear 權重引數的完整路徑列表。
  • kwargs (dict[str, Any], 可選) — 用於初始化配置物件的附加引數。

這是一個關於 aqlm 引數的封裝類。

post_init

< >

( )

檢查引數是否正確的安全檢查器 - 同時會將一些 NoneType 引數替換為其預設值。

VptqConfig

class transformers.VptqConfig

< >

( enable_proxy_error: bool = False config_for_layers: dict = {} shared_layer_config: dict = {} modules_to_not_convert: typing.Optional[list] = None **kwargs )

引數

  • enable_proxy_error (bool, 可選, 預設為 False) — 計算每層的代理誤差
  • config_for_layers (Dict, 可選, 預設為 {}) — 每層的量化引數
  • shared_layer_config (Dict, 可選, 預設為 {}) — 層之間共享的量化引數
  • modules_to_not_convert (list, 可選, 預設為 None) — 不進行量化的模組列表,這對於量化那些明確要求某些模組保持原始精度的模型很有用(例如 Whisper 編碼器、Llava 編碼器、Mixtral 門控層)。
  • kwargs (dict[str, Any], 可選) — 用於初始化配置物件的附加引數。

這是一個關於 vptq 引數的封裝類。

post_init

< >

( )

檢查引數是否正確的安全檢查器

AwqConfig

class transformers.AwqConfig

< >

( bits: int = 4 group_size: int = 128 zero_point: bool = True version: AWQLinearVersion = <AWQLinearVersion.GEMM: 'gemm'> backend: AwqBackendPackingMethod = <AwqBackendPackingMethod.AUTOAWQ: 'autoawq'> do_fuse: typing.Optional[bool] = None fuse_max_seq_len: typing.Optional[int] = None modules_to_fuse: typing.Optional[dict] = None modules_to_not_convert: typing.Optional[list] = None exllama_config: typing.Optional[dict[str, int]] = None **kwargs )

引數

  • bits (int, 可選, 預設為 4) — 量化到的位數。
  • group_size (int, 可選, 預設為 128) — 用於量化的分組大小。推薦值為 128,-1 表示使用逐列量化。
  • zero_point (bool, 可選, 預設為 True) — 是否使用零點量化。
  • version (AWQLinearVersion, 可選, 預設為 AWQLinearVersion.GEMM) — 使用的量化演算法版本。GEMM 對於大批次大小(例如 >= 8)更好,否則 GEMV 更好(例如 < 8)。GEMM 模型與 Exllama 核心相容。
  • backend (AwqBackendPackingMethod, 可選, 預設為 AwqBackendPackingMethod.AUTOAWQ) — 量化後端。一些模型可能使用 llm-awq 後端進行量化。這對於使用 llm-awq 庫量化自己模型的使用者很有用。
  • do_fuse (bool, 可選, 預設為 False) — 是否將注意力和 mlp 層融合在一起以加快推理速度
  • fuse_max_seq_len (int, 可選) — 使用融合時生成的最長序列長度。
  • modules_to_fuse (dict, 可選, 預設為 None) — 使用使用者指定的融合方案覆蓋原生支援的融合方案。
  • modules_to_not_convert (list, 可選, 預設為 None) — 不進行量化的模組列表,這對於量化那些明確要求某些模組保持原始精度的模型很有用(例如 Whisper 編碼器、Llava 編碼器、Mixtral 門控層)。請注意,您不能直接使用 transformers 進行量化,請參閱 AutoAWQ 文件以量化 HF 模型。
  • exllama_config (dict[str, Any], 可選) — 您可以透過 version 鍵指定 exllama 核心的版本,透過 max_input_len 鍵指定最大序列長度,以及透過 max_batch_size 鍵指定最大批次大小。如果未設定,則預設為 {"version": 2, "max_input_len": 2048, "max_batch_size": 8}

這是一個封裝類,包含了所有在使用 auto-awq 庫的 awq 量化(依賴 auto_awq 後端)載入的模型中可以調整的屬性和功能。

post_init

< >

( )

檢查引數是否正確的安全檢查器

EetqConfig

class transformers.EetqConfig

< >

( weights: str = 'int8' modules_to_not_convert: typing.Optional[list] = None **kwargs )

引數

  • weights (str, 可選, 預設為 "int8") — 權重的目標資料型別。僅支援 “int8”。
  • modules_to_not_convert (list, 可選, 預設為 None) — 不進行量化的模組列表,這對於量化那些明確要求某些模組保持原始精度的模型很有用。

這是一個封裝類,包含了所有在使用 eetq 載入的模型中可以調整的屬性和功能。

post_init

< >

( )

檢查引數是否正確的安全檢查器

GPTQConfig

class transformers.GPTQConfig

< >

( bits: int tokenizer: typing.Any = None dataset: typing.Union[list[str], str, NoneType] = None group_size: int = 128 damp_percent: float = 0.1 desc_act: bool = False sym: bool = True true_sequential: bool = True checkpoint_format: str = 'gptq' meta: typing.Optional[dict[str, typing.Any]] = None backend: typing.Optional[str] = None use_cuda_fp16: bool = False model_seqlen: typing.Optional[int] = None block_name_to_quantize: typing.Optional[str] = None module_name_preceding_first_block: typing.Optional[list[str]] = None batch_size: int = 1 pad_token_id: typing.Optional[int] = None use_exllama: typing.Optional[bool] = None max_input_length: typing.Optional[int] = None exllama_config: typing.Optional[dict[str, typing.Any]] = None cache_block_outputs: bool = True modules_in_block_to_quantize: typing.Optional[list[list[str]]] = None **kwargs )

引數

  • bits (int) — 量化的位數,支援的數字為 (2, 3, 4, 8)。
  • tokenizer (strPreTrainedTokenizerBase, optional) — 用於處理資料集的 tokenizer。您可以傳遞以下任一型別:
    • 一個自定義的 tokenizer 物件。
    • 一個字串,即託管在 huggingface.co 模型倉庫中的預定義 tokenizer 的模型 ID
    • 一個包含 tokenizer 所需詞彙檔案的目錄路徑,例如使用 save_pretrained() 方法儲存的目錄,例如 ./my_model_directory/
  • dataset (Union[list[str]], optional) — 用於量化的資料集。您可以提供自己的字串列表形式的資料集,或者直接使用 GPTQ 論文中使用的原始資料集 [‘wikitext2’,‘c4’,‘c4-new’]。
  • group_size (int, optional, defaults to 128) — 用於量化的分組大小。推薦值為 128,-1 表示使用逐列量化。
  • damp_percent (float, optional, defaults to 0.1) — 用於阻尼的平均海森矩陣對角線百分比。推薦值為 0.1。
  • desc_act (bool, optional, defaults to False) — 是否按啟用值大小降序量化列。將其設定為 False 可以顯著加快推理速度,但困惑度可能會略有下降。也稱為 act-order。
  • sym (bool, optional, defaults to True) — 是否使用對稱量化。
  • true_sequential (bool, optional, defaults to True) — 是否在單個 Transformer 塊內也執行順序量化。我們不一次性量化整個塊,而是執行逐層量化。因此,每一層都使用透過先前量化層的輸入進行量化。
  • checkpoint_format (str, optional, defaults to "gptq") — GPTQ 權重格式。gptq(v1) 同時被 gptqmodel 和 auto-gptq 支援。gptq_v2 僅 gptqmodel 支援。
  • meta (dict[str, any], optional) — 不直接影響量化或量化推理的屬性(如 tooling:version)儲存在 meta 中。例如 meta.quantizer: [“optimum:version”, “gptqmodel:version”]
  • backend (str, optional) — 控制使用哪個 gptq 核心。對於 gptqmodel,有效值為 autoauto_trainable 等。對於 auto-gptq,有效值僅為 None 和 auto_trainable。參考 gptqmodel 後端: https://github.com/ModelCloud/GPTQModel/blob/main/gptqmodel/utils/backend.py
  • use_cuda_fp16 (bool, optional, defaults to False) — 是否為 fp16 模型使用最佳化的 CUDA 核心。需要模型為 fp16 格式。僅 auto-gptq 支援。
  • model_seqlen (int, optional) — 模型可以接受的最大序列長度。
  • block_name_to_quantize (str, optional) — 要量化的 transformers 塊名稱。如果為 None,將使用通用模式(例如 model.layers)推斷塊名稱。
  • module_name_preceding_first_block (list[str], optional) — 在第一個 Transformer 塊之前的層。
  • batch_size (int, optional, defaults to 1) — 處理資料集時使用的批大小。
  • pad_token_id (int, optional) — 填充標記的 ID。當 batch_size > 1 時,準備資料集需要此引數。
  • use_exllama (bool, optional) — 是否使用 exllama 後端。如果未設定,預設為 True。僅在 bits = 4 時有效。
  • max_input_length (int, optional) — 最大輸入長度。需要此引數來初始化一個依賴於最大預期輸入長度的緩衝區。此引數特定於使用 act-order 的 exllama 後端。
  • exllama_config (dict[str, Any], optional) — exllama 配置。您可以透過 version 鍵指定 exllama 核心的版本。如果未設定,預設為 {"version": 1}
  • cache_block_outputs (bool, optional, defaults to True) — 是否快取塊輸出,以作為後續塊的輸入重用。
  • modules_in_block_to_quantize (list[list[str]], optional) — 在指定塊中要量化的模組名稱列表的列表。此引數可用於排除某些線性模組不被量化。要量化的塊可以透過設定 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 載入模型時,所有可以用於 gptq 量化(依賴於 auto_gptq 後端)的屬性和功能。

from_dict_optimum

< >

( config_dict )

從 optimum gptq 配置字典獲取相容的類

post_init

< >

( )

檢查引數是否正確的安全檢查器

to_dict_optimum

< >

( )

獲取與 optimum gptq 配置相容的字典

BitsAndBytesConfig

class transformers.BitsAndBytesConfig

< >

( load_in_8bit = False load_in_4bit = False llm_int8_threshold = 6.0 llm_int8_skip_modules = None llm_int8_enable_fp32_cpu_offload = False llm_int8_has_fp16_weight = False bnb_4bit_compute_dtype = None bnb_4bit_quant_type = 'fp4' bnb_4bit_use_double_quant = False bnb_4bit_quant_storage = None **kwargs )

引數

  • load_in_8bit (bool, optional, defaults to False) — 此標誌用於透過 LLM.int8() 啟用 8 位量化。
  • load_in_4bit (bool, optional, defaults to False) — 此標誌用於透過將 Linear 層替換為 bitsandbytes 中的 FP4/NF4 層來啟用 4 位量化。
  • llm_int8_threshold (float, optional, defaults to 6.0) — 這對應於論文 `LLM.int8() : 8-bit Matrix Multiplication for Transformers at Scale` 中描述的用於離群點檢測的離群點閾值:https://huggingface.co/papers/2208.07339。任何高於此閾值的隱藏狀態值都將被視為離群點,對這些值的操作將以 fp16 進行。值通常呈正態分佈,即大多數值在 [-3.5, 3.5] 範圍內,但對於大型模型,存在一些分佈非常不同的系統性離群點。這些離群點通常在 [-60, -6] 或 [6, 60] 區間內。Int8 量化對於幅度約為 5 的值效果很好,但超過這個範圍,效能會顯著下降。一個好的預設閾值是 6,但對於更不穩定的模型(小模型、微調),可能需要更低的閾值。
  • llm_int8_skip_modules (list[str], optional) — 一個明確的模組列表,我們不希望將其轉換為 8 位。這對於像 Jukebox 這樣在不同位置有多個頭的模型很有用,這些頭不一定在最後的位置。例如,對於 CausalLM 模型,最後的 lm_head 會保持其原始的 dtype
  • llm_int8_enable_fp32_cpu_offload (bool, optional, defaults to False) — 此標誌用於高階用例和了解此功能的使用者。如果你想將模型分成不同的部分,一部分在 GPU 上以 int8 執行,另一部分在 CPU 上以 fp32 執行,你可以使用此標誌。這對於解除安裝大型模型如 google/flan-t5-xxl 很有用。請注意,int8 操作不會在 CPU 上執行。
  • llm_int8_has_fp16_weight (bool, optional, defaults to False) — 此標誌使用 16 位主權重執行 LLM.int8()。這對於微調很有用,因為權重在反向傳播時不必來回轉換。
  • bnb_4bit_compute_dtype (torch.dtype 或 str, optional, defaults to torch.float32) — 這設定了計算型別,可能與輸入型別不同。例如,輸入可能是 fp32,但計算可以設定為 bf16 以加速。
  • bnb_4bit_quant_type (str, optional, defaults to "fp4") — 這設定了 bnb.nn.Linear4Bit 層中的量化資料型別。選項是 FP4 和 NF4 資料型別,由 fp4nf4 指定。
  • bnb_4bit_use_double_quant (bool, optional, defaults to False) — 此標誌用於巢狀量化,即第一次量化的量化常數再次被量化。
  • bnb_4bit_quant_storage (torch.dtype 或 str, optional, defaults to torch.uint8) — 這設定了用於打包量化後 4 位引數的儲存型別。
  • kwargs (dict[str, Any], optional) — 用於初始化配置物件的附加引數。

這是一個包裝類,包含了在使用 bitsandbytes 載入模型時,所有可以使用的屬性和功能。

這將替換 load_in_8bitload_in_4bit,因此這兩個選項是互斥的。

目前僅支援 LLM.int8()FP4NF4 量化。如果 bitsandbytes 中增加了更多方法,則會向此類新增更多引數。

is_quantizable

< >

( )

如果模型可以量化,則返回 True,否則返回 False

post_init

< >

( )

檢查引數是否正確的安全檢查器 - 同時會將一些 NoneType 引數替換為其預設值。

quantization_method

< >

( )

此方法返回模型使用的量化方法。如果模型不可量化,則返回 None

to_diff_dict

< >

( ) dict[str, Any]

返回

dict[str, Any]

所有構成此配置例項的屬性的字典,

從配置中刪除所有與預設配置屬性對應的屬性,以提高可讀性,並序列化為 Python 字典。

HfQuantizer

class transformers.quantizers.HfQuantizer

< >

( quantization_config: QuantizationConfigMixin **kwargs )

HuggingFace 量化器的抽象類。目前支援對 HF transformers 模型進行推理和/或量化。此類僅用於 transformers.PreTrainedModel.from_pretrained,目前尚不能輕易在該方法範圍之外使用。

屬性 quantization_config (transformers.utils.quantization_config.QuantizationConfigMixin):定義要量化的模型的量化引數的配置。 modules_to_not_convert (list[str], optional):量化模型時不轉換的模組名稱列表。 required_packages (list[str], optional):在使用量化器之前需要安裝的 pip 包列表。 requires_calibration (bool):量化方法是否需要在模型使用前對其進行校準。 requires_parameters_quantization (bool):量化方法是否需要建立新的引數。例如,對於 bitsandbytes,需要建立新的 xxxParameter 才能正確量化模型。

adjust_max_memory

< >

( max_memory: dict )

如果量化需要額外記憶體,則調整 infer_auto_device_map() 的 max_memory 引數

adjust_target_dtype

< >

( torch_dtype: torch.dtype )

引數

  • torch_dtype (torch.dtype, optional) — 用於計算 device_map 的 torch_dtype。

如果你想調整 from_pretrained 中用於計算 device_map 的 target_dtype 變數(當 device_map 是 str 時),請重寫此方法。例如,對於 bitsandbytes,我們強制將 target_dtype 設定為 torch.int8,對於 4 位量化,我們傳遞一個自定義列舉 accelerate.CustomDtype.int4

check_quantized_param

< >

( model: PreTrainedModel param_value: torch.Tensor param_name: str state_dict: dict **kwargs )

檢查載入的 state_dict 元件是否是量化引數的一部分,並進行一些驗證;僅在 requires_parameters_quantization == True 的量化方法(需要為量化建立新引數)中定義。

create_quantized_param

< >

( *args **kwargs )

從 state_dict 中獲取所需元件並建立量化引數;僅當 requires_parameters_quantization == True 時適用。

dequantize

< >

( model )

可能會將模型反量化以恢復原始模型,但會帶來一些準確性/效能上的損失。請注意,並非所有量化方案都支援此操作。

get_cuda_warm_up_factor

< >

( )

用於 caching_allocator_warmup 的因子,以獲取預分配的位元組數來預熱 CUDA。因子為 2 表示我們分配空模型中的所有位元組(因為我們在 fp16 中分配),因子為 4 表示我們分配空模型中權重佔用記憶體的一半,依此類推……

get_special_dtypes_update

< >

( model torch_dtype: torch.dtype )

引數

  • model (~transformers.PreTrainedModel) — 要量化的模型
  • torch_dtype (torch.dtype) — 在 from_pretrained 方法中傳遞的 dtype。

返回未量化模組的 dtypes - 用於在將 str 作為 device_map 傳遞時計算 device_map。該方法將使用在 _process_model_before_weight_loading 中修改的 modules_to_not_convert

postprocess_model

< >

( model: PreTrainedModel **kwargs )

引數

  • model (~transformers.PreTrainedModel) — 要量化的模型
  • kwargs (dict, optional) — 傳遞給 _process_model_after_weight_loading 的關鍵字引數。

在權重載入後對模型進行後處理。請確保重寫抽象方法 _process_model_after_weight_loading

preprocess_model

< >

( model: PreTrainedModel **kwargs )

引數

  • model (~transformers.PreTrainedModel) — 要量化的模型
  • kwargs (dict, optional) — 傳遞給 _process_model_before_weight_loading 的關鍵字引數。

在權重載入前設定模型屬性和/或轉換模型。此時模型應在元裝置上初始化,以便您可以自由地操作模型的主體結構,從而原地替換模組。請確保重寫抽象方法 _process_model_before_weight_loading

update_device_map

< >

( device_map: typing.Optional[dict[str, typing.Any]] )

引數

  • device_map (Union[dict, str], optional) — 透過 from_pretrained 方法傳遞的 device_map。

如果您想用新的裝置對映覆蓋現有的裝置對映,請重寫此方法。例如,對於 bitsandbytes,由於 accelerate 是一個硬性要求,如果沒有傳遞 device_map,則 device_map 會被設定為 `“auto”`

update_expected_keys

< >

( model expected_keys: list loaded_keys: list )

引數

  • expected_keys (list[str], optional) — 初始化模型中預期鍵的列表。
  • loaded_keys (list[str], optional) — 檢查點中已載入鍵的列表。

如果您想調整 update_expected_keys,請重寫此方法。

update_missing_keys

< >

( model missing_keys: list prefix: str )

引數

  • missing_keys (list[str], optional) — 檢查點中與模型 state dict 相比缺失的鍵的列表

如果您想調整 missing_keys,請重寫此方法。

update_missing_keys_after_loading

< >

( model missing_keys: list prefix: str )

引數

  • missing_keys (list[str], optional) — 檢查點中與模型 state dict 相比缺失的鍵的列表

如果您想在載入模型引數後但在模型後處理前調整 missing_keys,請重寫此方法。

update_torch_dtype

< >

( torch_dtype: torch.dtype )

引數

  • torch_dtype (torch.dtype) — 在 from_pretrained 中傳遞的輸入 dtype

某些量化方法需要顯式地將模型的 dtype 設定為目標 dtype。如果您想確保保留該行為,則需要重寫此方法

update_tp_plan

< >

( config )

更新縮放的張量並行(tp)計劃

update_unexpected_keys

< >

( model unexpected_keys: list prefix: str )

引數

  • unexpected_keys (list[str], optional) — 檢查點中與模型 state dict 相比非預期的鍵的列表

如果您想調整 unexpected_keys,請重寫此方法。

validate_environment

< >

( *args **kwargs )

此方法用於檢查與 from_pretrained 中傳遞的引數可能存在的衝突。您需要為所有未來與 transformers 整合的量化器定義此方法。如果不需要顯式檢查,只需返回即可。

HiggsConfig

class transformers.HiggsConfig

< >

( bits: int = 4 p: int = 2 modules_to_not_convert: typing.Optional[list[str]] = None hadamard_size: int = 512 group_size: int = 256 tune_metadata: typing.Optional[dict[str, typing.Any]] = None **kwargs )

引數

  • bits (int, optional, defaults to 4) — 用於量化的位數。可以是 2、3 或 4。預設為 4。
  • p (int, optional, defaults to 2) — 量化網格維度。支援 1 和 2。實際上 2 總是更好。預設為 2。
  • modules_to_not_convert (list, optional, default to [“lm_head”]) — 不應被量化的線性層列表。
  • hadamard_size (int, optional, defaults to 512) — HIGGS 方法的哈達瑪大小。預設為 512。矩陣的輸入維度會被填充到此值。將其減少到 512 以下會降低量化質量。
  • group_size (int, optional, defaults to 256) — HIGGS 方法的組大小。可以是 64、128 或 256。減小它對效能影響甚微。預設為 256。必須是 hadamard_size 的除數。
  • tune_metadata (‘dict’, optional, defaults to {}) — 用於儲存核心調優結果的模組級元資料(gemm 塊形狀、GPU 元資料等)。預設為空字典。在調優期間自動設定。

HiggsConfig 是一個使用 HIGGS 方法進行量化的配置類。

post_init

< >

( )

檢查引數是否正確的安全檢查器 - 同時會將一些 NoneType 引數替換為其預設值。

HqqConfig

class transformers.HqqConfig

< >

( nbits: int = 4 group_size: int = 64 view_as_float: bool = False axis: typing.Optional[int] = None dynamic_config: typing.Optional[dict] = None skip_modules: list = ['lm_head'] **kwargs )

引數

  • nbits (int, optional, defaults to 4) — 位元數。支援的值為 (8, 4, 3, 2, 1)。
  • group_size (int, optional, defaults to 64) — 組大小值。支援任何可以被 weight.shape[axis] 整除的值。
  • view_as_float (bool, optional, defaults to False) — 如果設定為 True,則將量化權重視為浮點數(用於分散式訓練)。
  • axis (Optional[int], optional) — 執行分組的軸。支援的值為 0 或 1。
  • dynamic_config (dict, optional) — 動態配置引數。鍵是層的名稱標籤,值是量化配置。如果設定,每個由其 id 指定的層將使用其專用的量化配置。
  • skip_modules (list[str], optional, defaults to ['lm_head']) — 要跳過的 nn.Linear 層列表。
  • kwargs (dict[str, Any], optional) — 用於初始化配置物件的附加引數。

這是對 hqq 的 BaseQuantizeConfig 的包裝。

from_dict

< >

( config: dict )

重寫 from_dict,在 quantizers/auto.py 中的 AutoQuantizationConfig.from_dict 中使用

post_init

< >

( )

檢查引數是否正確的安全檢查器 - 同時會將一些 NoneType 引數替換為其預設值。

to_diff_dict

< >

( ) dict[str, Any]

返回

dict[str, Any]

所有構成此配置例項的屬性的字典,

從配置中刪除所有與預設配置屬性對應的屬性,以提高可讀性,並序列化為 Python 字典。

FbgemmFp8Config

class transformers.FbgemmFp8Config

< >

( activation_scale_ub: float = 1200.0 modules_to_not_convert: typing.Optional[list] = None **kwargs )

引數

  • activation_scale_ub (float, optional, defaults to 1200.0) — 啟用縮放上限。用於量化輸入啟用。
  • modules_to_not_convert (list, optional, default to None) — 不進行量化的模組列表,對於明確要求某些模組保持原始精度的模型量化很有用。

這是一個包裝類,包含了你可以對使用 fbgemm fp8 量化載入的模型進行操作的所有可能屬性和功能。

CompressedTensorsConfig

class transformers.CompressedTensorsConfig

< >

( config_groups: typing.Optional[dict[str, typing.Union[ForwardRef('QuantizationScheme'), list[str]]]] = None format: str = 'dense' quantization_status: QuantizationStatus = 'initialized' kv_cache_scheme: typing.Optional[ForwardRef('QuantizationArgs')] = None global_compression_ratio: typing.Optional[float] = None ignore: typing.Optional[list[str]] = None sparsity_config: typing.Optional[dict[str, typing.Any]] = None quant_method: str = 'compressed-tensors' run_compressed: bool = True **kwargs )

引數

  • config_groups (typing.dict[str, typing.Union[ForwardRef('QuantizationScheme'), typing.list[str]]], optional) — 將組名對映到量化方案定義的字典
  • format (str, optional, defaults to "dense") — 模型表示的格式。如果不是 dense,將 run_compressed 設定為 True 以壓縮格式執行模型
  • quantization_status (QuantizationStatus, optional, defaults to "initialized") — 模型在量化生命週期中的狀態,例如 ‘initialized’(已初始化)、‘calibration’(校準中)、‘frozen’(已凍結)
  • kv_cache_scheme (typing.Union[QuantizationArgs, NoneType], optional) — 指定 kv 快取的量化。如果為 None,則不對 kv 快取進行量化。
  • global_compression_ratio (typing.Union[float, NoneType], optional) — 模型壓縮的 0-1 浮點百分比
  • ignore (typing.Union[typing.list[str], NoneType], optional) — 不量化的層名稱或型別,支援以 ‘re:’ 為字首的正則表示式
  • sparsity_config (typing.dict[str, typing.Any], optional) — 稀疏性壓縮的配置
  • quant_method (str, optional, defaults to "compressed-tensors") — 不應覆蓋,應為 compressed-tensors
  • run_compressed (bool, optional, defaults to True) — 如果為 True,則更改子模組(通常是線性層)以模擬壓縮模型的執行,否則使用預設子模組

這是一個處理 compressed-tensors 量化配置選項的包裝類。它是 compressed_tensors.QuantizationConfig 的一個包裝器

from_dict

< >

( config_dict return_unused_kwargs = False **kwargs ) QuantizationConfigMixin

引數

  • config_dict (dict[str, Any]) — 將用於例項化配置物件的字典。
  • return_unused_kwargs (bool,optional, defaults to False) — 是否返回一個未使用的關鍵字引數列表。用於 PreTrainedModel 中的 from_pretrained 方法。
  • kwargs (dict[str, Any]) — 用於初始化配置物件的其他引數。

返回

QuantizationConfigMixin

從這些引數例項化的配置物件。

從一個 Python 引數字典例項化一個 CompressedTensorsConfig。可選擇性地從巢狀的 quantization_config 中解包任何引數

to_dict

< >

( )

要新增到 config.json 的量化配置

將此例項序列化為 Python 字典。返回:dict[str, Any]:構成此配置例項的所有屬性的字典。

to_diff_dict

< >

( ) dict[str, Any]

返回

dict[str, Any]

所有構成此配置例項的屬性的字典,

從配置中刪除所有與預設配置屬性對應的屬性,以提高可讀性,並序列化為 Python 字典。

TorchAoConfig

class transformers.TorchAoConfig

< >

( quant_type: typing.Union[str, ForwardRef('AOBaseConfig')] modules_to_not_convert: typing.Optional[list] = None include_input_output_embeddings: bool = False untie_embedding_weights: bool = False **kwargs )

from_dict

< >

( config_dict return_unused_kwargs = False **kwargs )

從字典建立配置。

get_apply_tensor_subclass

< >

( )

根據配置建立適當的量化方法。

post_init

< >

( )

驗證配置並設定預設值。

to_dict

< >

( )

將配置轉換為字典。

BitNetQuantConfig

class transformers.BitNetQuantConfig

< >

( modules_to_not_convert: typing.Optional[list] = None linear_class: typing.Optional[str] = 'bitlinear' quantization_mode: typing.Optional[str] = 'offline' use_rms_norm: typing.Optional[bool] = False rms_norm_eps: typing.Optional[float] = 1e-06 **kwargs )

引數

  • modules_to_not_convert (Optional[List], optional) — 可選地,提供一個不應量化的 nn.Linear 權重引數的完整路徑列表。預設為 None。
  • linear_class (str, optional, defaults to "bitlinear") — 使用的線性類的型別。可以是 bitlinearautobitlinear
  • quantization_mode (str, optional, defaults to "offline") — 使用的量化模式。可以是 onlineoffline。在 online 模式下,權重 quantization 引數在每次前向傳播期間動態計算(例如,基於當前的權重值)。這可以適應訓練期間的權重變化(量化感知訓練 - QAT)。在 offline 模式下,量化引數在推理 *之前* 預先計算。然後這些引數被固定並載入到量化模型中。與線上量化相比,這通常會帶來更低的執行時開銷。
  • use_rms_norm (bool, optional, defaults to False) — 是否在量化前對啟用值應用 RMSNorm。這與原始 BitNet 論文在量化/打包前對啟用值進行歸一化的方法相匹配。
  • rms_norm_eps (float, optional, defaults to 1e-06) — RMSNorm 層中用於數值穩定性的 epsilon 值。
  • kwargs (dict[str, Any], optional) — 可能由特定量化後端或未來版本使用的其他關鍵字引數。

用於應用 BitNet 量化的配置類。

post_init

< >

( )

檢查引數是否正確的安全檢查器

SpQRConfig

class transformers.SpQRConfig

< >

( bits: int = 3 beta1: int = 16 beta2: int = 16 shapes: typing.Optional[dict[str, int]] = None modules_to_not_convert: typing.Optional[list[str]] = None **kwargs )

引數

  • bits (int, optional, defaults to 3) — 指定權重和一階零點及縮放的位元數。目前僅支援 bits = 3。
  • beta1 (int, optional, defaults to 16) — SpQR 瓦片寬度。目前僅支援 beta1 = 16。
  • beta2 (int, optional, defaults to 16) — SpQR 瓦片高度。目前僅支援 beta2 = 16。
  • shapes (Optional, optional) — 一個包含每個物件形狀的字典。我們需要這個是因為僅從 bits, beta1, beta2 無法推斷出引數的確切大小。
  • modules_to_not_convert (Optional[list[str]], optional) — 可選地,提供一個不應量化的 `nn.Linear` 權重引數的完整路徑列表。預設為 None。
  • kwargs (dict[str, Any], optional) — 用於初始化配置物件的其他引數。

這是一個關於 spqr 引數的包裝類。有關更多詳細資訊,請參閱原始出版物。

post_init

< >

( )

檢查引數是否正確的安全檢查器 - 同時會將一些 NoneType 引數替換為其預設值。

FineGrainedFP8Config

class transformers.FineGrainedFP8Config

< >

( activation_scheme: str = 'dynamic' weight_block_size: tuple = (128, 128) modules_to_not_convert: typing.Optional[list] = None **kwargs )

引數

  • activation_scheme (str, optional, defaults to "dynamic") — 用於啟用的方案,目前預設且唯一支援的方案是 “dynamic”。
  • weight_block_size (typing.tuple[int, int], optional, defaults to (128, 128)) — 用於量化的權重塊大小,預設為 (128, 128)。
  • modules_to_not_convert (list, optional) — 在量化過程中不應轉換的模組名稱列表。

FineGrainedFP8Config 是一個用於細粒度 FP8 量化的配置類,主要用於 deepseek 模型。

post_init

< >

( )

檢查引數是否正確的安全檢查器

QuarkConfig

class transformers.QuarkConfig

< >

( **kwargs )

AutoRoundConfig

class transformers.AutoRoundConfig

< >

( bits: int = 4 group_size: int = 128 sym: bool = True backend: str = 'auto' **kwargs )

引數

  • bits (int, optional, defaults to 4) — 量化的位元數,支援的數字為 (2, 3, 4, 8)。
  • group_size (int, optional, defaults to 128) — 組大小值
  • sym (bool, optional, 預設為 True) — 是否進行對稱量化
  • backend (str, optional, 預設為 "auto") — 要使用的核心,例如 ipex、marlin、exllamav2、triton 等。請參閱 https://github.com/intel/auto-round?tab=readme-ov-file#specify-backend

這是一個包裝類,包含了所有可以用於已載入 AutoRound 量化模型的可能屬性和功能。

post_init

< >

( )

用於檢查引數是否正確的安全檢查器。

< > 在 GitHub 上更新

© . This site is unofficial and not affiliated with Hugging Face, Inc.