Transformers documentation
Quantização
Quantização
As técnicas de quantização reduzem os custos de memória e computacionais ao representar pesos e ativações com tipos de dados de menor precisão, como inteiros de 8 bits (int8). Isso permite carregar modelos maiores que normalmente não caberiam na memória e acelerar a inferência. O Transformers suporta os algoritmos de quantização AWQ e GPTQ e suporta quantização de 8 bits e 4 bits com bitsandbytes.
Técnicas de quantização que não são suportadas no Transformers podem ser adicionadas com a classe HfQuantizer.
Aprenda como quantizar modelos no guia de Quantização.
QuantoConfig
classe transformers.QuantoConfig
< source >( weights = 'int8'activations = Nonemodules_to_not_convert: list | None = None**kwargs )
Parâmetros
- weights (
str, opcional, padrão"int8") — O dtype de destino para os pesos após a quantização. Os valores suportados são (“float8”,“int8”,“int4”,“int2”) - activations (
str, opcional) — O dtype de destino para as ativações após a quantização. Os valores suportados são (None,“int8”,“float8”) - modules_to_not_convert (
list, opcional, padrãoNone) — A lista de módulos que não devem ser quantizados, útil para quantizar modelos que exigem explicitamente que alguns módulos permaneçam em sua precisão original (por exemplo, o encoder do Whisper, o encoder do Llava, as camadas de gate do Mixtral).
Esta é uma classe wrapper sobre todos os atributos e recursos possíveis com os quais você pode interagir em um modelo que foi carregado usando quanto.
Verificador de segurança que os argumentos estão corretos
AqlmConfig
classe 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 )
Parâmetros
- in_group_size (
int, opcional, padrão 8) — O tamanho do grupo ao longo da dimensão de entrada. - out_group_size (
int, opcional, padrão 1) — O tamanho do grupo ao longo da dimensão de saída. É recomendável usar sempre 1. - num_codebooks (
int, opcional, padrão 1) — Número de codebooks para o procedimento de Quantização Aditiva. - nbits_per_codebook (
int, opcional, padrão 16) — Número de bits que codificam um único vetor de codebook. O tamanho dos codebooks é 2**nbits_per_codebook. - linear_weights_not_to_quantize (
Optional[list[str]], opcional) — Lista dos caminhos completos dos parâmetros de peso denn.Linearque não devem ser quantizados. - kwargs (
dict[str, Any], opcional) — Parâmetros adicionais a partir dos quais inicializar o objeto de configuração.
Esta é uma classe wrapper sobre os parâmetros de aqlm.
Verificador de segurança que garante que os argumentos estão corretos — também substitui alguns argumentos do tipo NoneType pelos seus valores padrão.
VptqConfig
classe transformers.VptqConfig
< source >( enable_proxy_error: bool = Falseconfig_for_layers: dict = {}shared_layer_config: dict = {}modules_to_not_convert: list | None = None**kwargs )
Parâmetros
- enable_proxy_error (
bool, opcional, padrãoFalse) — calcula o erro de proxy para cada camada - config_for_layers (
Dict, opcional, padrão{}) — parâmetros de quantização para cada camada - shared_layer_config (
Dict, opcional, padrão{}) — parâmetros de quantização compartilhados entre as camadas - modules_to_not_convert (
list, opcional, padrãoNone) — A lista de módulos que não devem ser quantizados, útil para quantizar modelos que exigem explicitamente que alguns módulos permaneçam em sua precisão original (por exemplo, o encoder do Whisper, o encoder do Llava, as camadas de gate do Mixtral). - kwargs (
dict[str, Any], opcional) — Parâmetros adicionais a partir dos quais inicializar o objeto de configuração.
Esta é uma classe wrapper sobre os parâmetros de vptq.
Verificador de segurança que os argumentos estão corretos
AwqConfig
classe transformers.AwqConfig
< source >( bits: int = 4group_size: int = 128zero_point: bool = Truebackend: AwqBackend = <AwqBackend.AUTO: 'auto'>modules_to_not_convert: list | None = None**kwargs )
Parâmetros
- bits (
int, opcional, padrão 4) — O número de bits para quantização. - group_size (
int, opcional, padrão 128) — O tamanho do grupo a ser usado para quantização. O valor recomendado é 128 e -1 usa quantização por coluna. - zero_point (
bool, opcional, padrãoTrue) — Se deve usar quantização com ponto zero. - backend (
AwqBackend, opcional, padrãoAwqBackend.AUTO) — O backend de quantização. - modules_to_not_convert (
list, opcional, padrãoNone) — A lista de módulos que não devem ser quantizados, útil para quantizar modelos que exigem explicitamente que alguns módulos permaneçam em sua precisão original (por exemplo, o encoder do Whisper, o encoder do Llava, as camadas de gate do Mixtral). Observe que não é possível quantizar diretamente com o transformers; consulte a documentação doAutoAWQpara quantizar modelos do HF.
Esta é uma classe wrapper sobre todos os atributos e recursos possíveis com os quais você pode interagir com um modelo que foi carregado usando a quantização awq da biblioteca auto-awq, com base no backend auto_awq.
EetqConfig
classe transformers.EetqConfig
< source >( weights: str = 'int8'modules_to_not_convert: list | None = None**kwargs )
Parâmetros
- weights (
str, opcional, padrão"int8") — O dtype de destino para os pesos. O único valor suportado é “int8” - modules_to_not_convert (
list, opcional, padrãoNone) — A lista de módulos que não devem ser quantizados, útil para quantizar modelos que exigem explicitamente que alguns módulos permaneçam em sua precisão original.
Esta é uma classe wrapper sobre todos os atributos e recursos possíveis com os quais você pode interagir em um modelo que foi carregado usando eetq.
Verificador de segurança que os argumentos estão corretos
GPTQConfig
classe 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 )
Parâmetros
- bits (
int) — O número de bits para quantização, os valores suportados são (2, 3, 4, 8). - tokenizer (
strouPreTrainedTokenizerBase, opcional) — O tokenizer usado para processar o conjunto de dados. Você pode passar:- Um objeto de tokenizer personalizado.
- Uma string, o model id de um tokenizer predefinido hospedado em um repositório de modelos no huggingface.co.
- Um caminho para um diretório contendo os arquivos de vocabulário necessários para o tokenizer, por exemplo, salvos usando o método save_pretrained(), como
./my_model_directory/.
- dataset (
Union[list[str]], opcional) — O dataset usado para quantização. Você pode fornecer seu próprio dataset em uma lista de strings ou simplesmente usar os datasets originais utilizados no paper do GPTQ [‘wikitext2’,‘c4’,‘c4-new’] - group_size (
int, opcional, padrão 128) — O tamanho do grupo a ser usado para quantização. O valor recomendado é 128 e -1 usa quantização por coluna. - damp_percent (
float, opcional, padrão 0.1) — A porcentagem da diagonal média da Hessiana a ser usada para amortecimento. O valor recomendado é 0.1. - desc_act (
bool, opcional, padrãoFalse) — Se as colunas devem ser quantizadas em ordem decrescente de tamanho de ativação. Definir como False pode acelerar significativamente a inferência, mas a perplexidade pode ficar ligeiramente pior. Também conhecido como act-order. - act_group_aware (
bool, opcional, padrãoTrue) — Usa GAR (ordem de ativação consciente de grupo) durante a quantização. Tem impacto positivo mensurável na qualidade da quantização. Aplicável apenas quandodesc_act = False. Será forçado aFalsequandodesc_act = True. - sym (
bool, opcional, padrãoTrue) — Indica se deve ser usada quantização simétrica. - true_sequential (
bool, opcional, padrãoTrue) — Se deve realizar a quantização sequencial mesmo dentro de um único bloco Transformer. Em vez de quantizar o bloco inteiro de uma vez, realizamos a quantização camada por camada. Como resultado, cada camada passa por quantização usando entradas que já passaram pelas camadas quantizadas anteriormente. - format (
str, opcional, padrão"gptq") — Formato de pesos GPTQ.gptq(v1) é suportado pelo gptqmodel.gptq_v2é exclusivo do gptqmodel. - meta (
dict[str, any], opcional) — Propriedades, como tooling:version, que não contribuem diretamente para a quantização ou para a inferência quantizada são armazenadas em meta. Por exemplo,meta.quantizer: [“optimum:version”, “gptqmodel:version”] - backend (
str, opcional) — Controla qual kernel usar. Os valores válidos para gptqmodel sãoauto,auto_trainablee outros. Ref backends do gptqmodel: https://github.com/ModelCloud/GPTQModel/blob/main/gptqmodel/utils/backend.py - model_seqlen (
int, opcional) — O comprimento máximo de sequência que o modelo pode aceitar. - block_name_to_quantize (
str, opcional) — O nome do bloco do transformers a ser quantizado. Se for None, inferiremos o nome do bloco usando padrões comuns (por exemplo, model.layers). - module_name_preceding_first_block (
list[str], opcional) — As camadas que antecedem o primeiro bloco do Transformer. - batch_size (
int, opcional, padrão 1) — O tamanho do lote usado ao processar o conjunto de dados - pad_token_id (
int, opcional) — O id do token de preenchimento. Necessário para preparar o conjunto de dados quandobatch_size> 1. - max_input_length (
int, opcional) — O comprimento máximo da entrada. Isso é necessário para inicializar um buffer que depende do comprimento máximo esperado da entrada. Específico para o backend exllama com act-order. - cache_block_outputs (
bool, opcional, padrãoTrue) — Se deve armazenar em cache as saídas dos blocos para reutilizá-las como entradas do bloco subsequente. - modules_in_block_to_quantize (
list[list[str]], opcional) — Lista de listas de nomes de módulos a serem quantizados no bloco especificado. Este argumento é útil para excluir certos módulos lineares da quantização. O bloco a ser quantizado pode ser especificado definindoblock_name_to_quantize. Cada lista será quantizada sequencialmente. Se não for definido, todas as camadas lineares serão quantizadas. Exemplo:modules_in_block_to_quantize =[["self_attn.k_proj", "self_attn.v_proj", "self_attn.q_proj"], ["self_attn.o_proj"]]. Neste exemplo, primeiro quantizamos as camadas q, k e v simultaneamente, pois são independentes. Em seguida, quantizamos a camadaself_attn.o_projcom as camadas q, k e v já quantizadas. Dessa forma, obtemos melhores resultados, pois isso reflete a entrada real queself_attn.o_projreceberá quando o modelo for quantizado.
Esta é uma classe wrapper que abrange todos os atributos e recursos possíveis com os quais você pode interagir com um modelo carregado usando a API optimum para quantização GPTQ, com base no backend gptqmodel.
Obter a classe compatível com o dicionário de configuração gptq do optimum
Verificador de segurança que os argumentos estão corretos
Obter um dicionário compatível para a configuração gptq do optimum
BitsAndBytesConfig
classe 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 )
Parâmetros
- load_in_8bit (
bool, opcional, padrãoFalse) — Este sinalizador é usado para habilitar a quantização de 8 bits com LLM.int8(). - load_in_4bit (
bool, opcional, padrãoFalse) — Esta flag é usada para habilitar a quantização de 4 bits, substituindo as camadas Linear por camadas FP4/NF4 dobitsandbytes. - llm_int8_threshold (
float, opcional, padrão 6.0) — Corresponde ao limiar de outliers para a detecção de outliers, conforme descrito no artigoLLM.int8() : 8-bit Matrix Multiplication for Transformers at Scale: https://huggingface.co/papers/2208.07339 Qualquer valor de estados ocultos que esteja acima desse limiar será considerado um outlier e a operação sobre esses valores será realizada em fp16. Os valores geralmente seguem uma distribuição normal, ou seja, a maioria dos valores está no intervalo [-3.5, 3.5], mas existem alguns outliers sistemáticos excepcionais que possuem uma distribuição muito diferente em modelos grandes. Esses outliers frequentemente estão no intervalo [-60, -6] ou [6, 60]. A quantização Int8 funciona bem para valores de magnitude ~5, mas, além disso, há uma penalidade significativa de desempenho. Um bom limiar padrão é 6, mas um limiar menor pode ser necessário para modelos mais instáveis (modelos pequenos, fine-tuning). - llm_int8_skip_modules (
list[str], opcional) — Uma lista explícita dos módulos que não queremos converter para 8 bits. Isso é útil para modelos como Jukebox, que possui várias cabeças em diferentes posições e não necessariamente na última posição. Por exemplo, para modelosCausalLM, o últimolm_headé mantido em seudtypeoriginal. - llm_int8_enable_fp32_cpu_offload (
bool, opcional, padrãoFalse) — Este sinalizador é usado para casos de uso avançados e para usuários que conhecem esse recurso. Se você deseja dividir seu modelo em diferentes partes e executar algumas partes em int8 na GPU e outras em fp32 na CPU, você pode usar este sinalizador. Isso é útil para descarregar modelos grandes, comogoogle/flan-t5-xxl. Observe que as operações int8 não serão executadas na CPU. - llm_int8_has_fp16_weight (
bool, opcional, padrãoFalse) — Este sinal executa o LLM.int8() com pesos principais de 16 bits. Isso é útil para fine-tuning, pois os pesos não precisam ser convertidos de volta para o passo de retropropagação. - bnb_4bit_compute_dtype (
torch.dtypeou str, opcional, padrãotorch.float32) — Define o tipo de cálculo, que pode ser diferente do tipo de entrada. Por exemplo, as entradas podem ser fp32, mas o cálculo pode ser definido como bf16 para ganhos de velocidade. - bnb_4bit_quant_type (
str, opcional, padrão"fp4") — Define o tipo de dados de quantização nas camadas bnb.nn.Linear4Bit. As opções são os tipos de dados FP4 e NF4, especificados porfp4ounf4. - bnb_4bit_use_double_quant (
bool, opcional, padrãoFalse) — Este sinalizador é usado para quantização aninhada, na qual as constantes de quantização da primeira quantização são quantizadas novamente. - bnb_4bit_quant_storage (
torch.dtypeou str, opcional, padrãotorch.uint8) — Define o tipo de armazenamento para empacotar os parâmetros quantizados de 4 bits. - kwargs (
dict[str, Any], opcional) — Parâmetros adicionais a partir dos quais inicializar o objeto de configuração.
Esta é uma classe wrapper sobre todos os atributos e recursos possíveis com os quais você pode interagir em um modelo que foi carregado usando bitsandbytes.
Atualmente, apenas a quantização LLM.int8(), FP4 e NF4 são suportadas. Se mais métodos forem adicionados ao bitsandbytes,
novos argumentos serão adicionados a esta classe.
Retorna True se o modelo for quantizável, False caso contrário.
Verificador de segurança que garante que os argumentos estão corretos — também substitui alguns argumentos do tipo NoneType pelos seus valores padrão.
Este método retorna o método de quantização usado para o modelo. Se o modelo não for quantizável, ele retorna None.
to_diff_dict
< source >( ) → dict[str, Any]
Retorna
dict[str, Any]
Dicionário de todos os atributos que compõem esta instância de configuração,
Remove todos os atributos de config que correspondem aos atributos padrão de config para melhorar a legibilidade e serializa para um dicionário Python.
HfQuantizer
classe transformers.quantizers.HfQuantizer
< source >( quantization_config: QuantizationConfigMixin**kwargs )
Classe abstrata do quantizador do HuggingFace. Atualmente, suporta a quantização de modelos do HF transformers para inferência e/ou quantização. Esta classe é usada apenas em transformers.PreTrainedModel.from_pretrained e ainda não pode ser facilmente utilizada fora do escopo desse método.
Atributos
quantization_config (transformers.utils.quantization_config.QuantizationConfigMixin):
A configuração de quantização que define os parâmetros de quantização do seu modelo que você deseja quantizar.
requires_calibration (bool):
Se o método de quantização requer calibrar o modelo antes de usá-lo.
ajuste o argumento max_memory de infer_auto_device_map() se for necessária memória extra para a quantização
Potencialmente desquantize o modelo para recuperar o modelo original, com alguma perda de precisão / desempenho. Observe que nem todos os esquemas de quantização suportam isso.
Classes de Op que carregam os tensors serializados, por exemplo, {"deserialize": Mxfp4Deserialize, "dequantize": Mxfp4Dequantize}.
A desserialização constrói os parâmetros de um módulo, portanto, é executada apenas nos conversores gerais. A desquantização
também é executada antes das ops dos conversores do modelo, por exemplo, antes de um merge por expert.
Isso ocorre no momento da materialização, quando o tensor é enviado do disco para o dispositivo. dtype para converter o tensor do checkpoint pré-quantizado param.
Se esse parâmetro não estiver quantizado (tipo float), usamos o dtype de entrada que vem do nn.Module inicializado.
Se o método de quantização possui um Deserializer ou Dequantizer (função de carregamento), retornamos None para que seja tratado por eles.
Obtém o state dict e os metadados. Útil quando precisamos modificar um pouco o state dict devido à quantização
Retorna o carregamento a ser executado em qualquer parâmetro que não corresponder aos conversores do modelo
Verifique se um determinado parâmetro precisa ser quantizado.
postprocess_model
< source >( model: PreTrainedModel**kwargs )
Faça o pós-processamento do modelo após o carregamento dos pesos.
Certifique-se de sobrescrever o método abstrato _process_model_after_weight_loading.
preprocess_model
< source >( model: PreTrainedModeldtype = None**kwargs )
Definir atributos do modelo e/ou converter o modelo antes do carregamento dos pesos. Neste ponto, o modelo deve estar inicializado no dispositivo meta, para que você possa manipular livremente a estrutura do modelo a fim de substituir módulos in-place. Certifique-se de sobrescrever o método abstrato _process_model_before_weight_loading.
Remova a configuração de quantização do modelo.
Visualiza o attn_implementation solicitado antes de o modelo ser construído, para que um quantizador possa definir um valor padrão.
update_device_map
< source >( device_map: dict[str, typing.Any] | None )
Sobrescreva este método se você deseja substituir o device map existente por um novo. Por exemplo, para bitsandbytes, como accelerate é um requisito obrigatório, se nenhum device_map for passado, o device_map será definido como `“auto”`.
update_dtype
< source >( dtype: torch.dtype )
Alguns métodos de quantização exigem que o dtype do modelo seja definido explicitamente para um dtype de destino. Você precisa sobrescrever este método caso queira garantir que esse comportamento seja preservado
Atualiza model.tp_plan ou model.ep_plan (os planos completos, mesclados a partir da configuração e de todas as subconfigurações) para levar em consideração as chaves personalizadas do quantizador, como 'inv_scale'
Faz com que os conversores do modelo (do mapeamento de conversão) carreguem os nomes serializados. Os parâmetros do modelo decidem, por exemplo, para uma mesclagem de experts.*.gate_proj.weight em experts.gate_up_proj:
experts.gate_up_proj_scale_invé um parâmetro: uma cópia mesclaexperts.*.gate_proj.weight_scale_invnele- caso contrário, o conversor também coleta
experts.*.gate_proj.weight_scale_inv, a operação de desquantização é executada primeiro
Este método é usado para verificar possíveis conflitos com os argumentos passados em from_pretrained. Você precisa defini-lo para todos os quantizadores futuros que forem integrados ao transformers.
Se nenhuma verificação explícita for necessária, basta não retornar nada.
HiggsConfig
classe 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 )
Parâmetros
- bits (int, opcional, padrão 4) — Número de bits a serem usados para quantização. Pode ser 2, 3 ou 4. O padrão é 4.
- p (int, opcional, padrão 2) — Dimensão da grade de quantização. 1 e 2 são suportados. 2 é sempre melhor na prática. O padrão é 2.
- modules_to_not_convert (
list, opcional, padrão [“lm_head”]) — Lista de camadas lineares que não devem ser quantizadas. - hadamard_size (int, opcional, padrão 512) — Tamanho de Hadamard para o método HIGGS. O padrão é 512. A dimensão de entrada das matrizes é preenchida até esse valor. Reduzir esse valor para menos de 512 diminuirá a qualidade da quantização.
- group_size (int, opcional, padrão 256) — Tamanho do grupo para o método HIGGS. Pode ser 64, 128 ou 256. Diminuir esse valor tem pouco impacto no desempenho. O padrão é 256. Deve ser um divisor de hadamard_size.
- tune_metadata (‘dict’, opcional, padrão {}) — Metadados por módulo (formas de bloco de gemm, metadados de GPU, etc.) para salvar os resultados de ajuste de kernel. O padrão é um dicionário vazio. É definido automaticamente durante o ajuste.
HiggsConfig é uma classe de configuração para quantização usando o método HIGGS.
Verificador de segurança que garante que os argumentos estão corretos — também substitui alguns argumentos do tipo NoneType pelos seus valores padrão.
HqqConfig
classe 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 )
Parâmetros
- nbits (
int, opcional, padrão 4) — Número de bits. Os valores suportados são (8, 4, 3, 2, 1). - group_size (
int, opcional, padrão 64) — Valor do tamanho do grupo. Os valores suportados são quaisquer valores divisíveis por weight.shape[axis]). - view_as_float (
bool, opcional, padrãoFalse) — Exibe o peso quantizado como float (usado em treinamento distribuído) se definido comoTrue. - axis (
Optional[int], opcional) — Eixo ao longo do qual o agrupamento é realizado. Os valores suportados são 0 ou 1. - dynamic_config (dict, opcional) — Parâmetros para configuração dinâmica. A chave é a tag de nome da camada e o valor é uma configuração de quantização. Se definido, cada camada especificada pelo seu id usará sua configuração de quantização dedicada.
- skip_modules (
list[str], opcional, padrão['lm_head']) — Lista de camadasnn.Lineara serem ignoradas. - kwargs (
dict[str, Any], opcional) — Parâmetros adicionais a partir dos quais inicializar o objeto de configuração.
Este é um wrapper em torno do BaseQuantizeConfig do hqq.
Override from_dict, used in AutoQuantizationConfig.from_dict in quantizers/auto.py
Verificador de segurança que garante que os argumentos estão corretos — também substitui alguns argumentos do tipo NoneType pelos seus valores padrão.
to_diff_dict
< source >( ) → dict[str, Any]
Retorna
dict[str, Any]
Dicionário de todos os atributos que compõem esta instância de configuração,
Remove todos os atributos de config que correspondem aos atributos padrão de config para melhorar a legibilidade e serializa para um dicionário Python.
MetalConfig
classe transformers.MetalConfig
< source >( bits: int = 4group_size: int = 64modules_to_not_convert: list | None = Nonedequantize: bool = False**kwargs )
Classe de configuração para quantização afim Metal direcionada a dispositivos Apple Silicon (MPS).
Esse método de quantização usa os kernels Metal mlx-quantization-metal-kernels do Hugging Face Hub
para executar quantização afim (escalas + qbiases) com largura de bits e tamanho de grupo configuráveis.
Os pesos quantizados são empacotados em tensores uint32 e a passagem direta usa kernels Metal
fused de dequantização + matmul.
Mxfp4Config
classe transformers.Mxfp4Config
< source >( modules_to_not_convert: list | None = Nonedequantize: bool = False**kwargs )
Parâmetros
- modules_to_not_convert (
list, opcional, padrãoNone) — A lista de módulos que não devem ser quantizados, útil para quantizar modelos que exigem explicitamente que alguns módulos permaneçam em sua precisão original. - dequantize (
bool, opcional, padrãoFalse) — Se devemos desquantizar o modelo para precisão bf16 ou não
Esta é uma classe wrapper sobre todos os atributos e recursos possíveis com os quais você pode interagir em um modelo que foi carregado usando quantização mxfp4.
NVFP4Config
classe transformers.NVFP4Config
< source >( modules_to_not_convert: list[str] | None = None**kwargs )
Configuração para quantização de pesos NVFP4 em tempo real.
FbgemmFp8Config
classe transformers.FbgemmFp8Config
< source >( activation_scale_ub: float = 1200.0modules_to_not_convert: list | None = None**kwargs )
Parâmetros
- activation_scale_ub (
float, opcional, padrão 1200.0) — O limite superior da escala de ativação. Isso é usado ao quantizar a ativação de entrada. - modules_to_not_convert (
list, opcional, padrãoNone) — A lista de módulos que não devem ser quantizados, útil para quantizar modelos que exigem explicitamente que alguns módulos permaneçam em sua precisão original.
Esta é uma classe wrapper sobre todos os atributos e recursos possíveis com os quais você pode interagir em um modelo que foi carregado usando quantização fp8 do fbgemm.
CompressedTensorsConfig
classe 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 )
Parâmetros
- config_groups (
typing.dict[str, typing.Union[ForwardRef('QuantizationScheme'), typing.list[str]]], opcional) — dicionário que mapeia o nome do grupo para uma definição de esquema de quantização - format (
str, opcional, padrão"dense") — formato em que os pesos são armazenados, por exemplo,dense,float-quantizedoupack-quantized - quantization_status (
QuantizationStatus, opcional, padrão"initialized") — status do modelo no ciclo de vida da quantização, ou seja, ‘initialized’, ‘calibration’, ‘frozen’ - kv_cache_scheme (
typing.Union[QuantizationArgs, NoneType], opcional) — especifica a quantização do kv cache. Se for None, o kv cache não é quantizado. - global_compression_ratio (
typing.Union[float, NoneType], opcional) — porcentagem de compressão do modelo, um float entre 0 e 1 - ignore (
typing.Union[typing.list[str], NoneType], opcional) — nomes ou tipos de camadas que não devem ser quantizadas, suporta regex prefixado por ‘re:’ - quant_method (
str, opcional, padrão"compressed-tensors") — não substitua, deve ser compressed-tensors - run_compressed (
bool, opcional) — descontinuado, usedequantizeem vez disso. Seu único efeito é definirdequantizepara o seu oposto,run_compressed=Falsesignificadequantize=True. - dequantize (
bool, opcional, padrãoFalse) — quandoTrue, os pesos quantizados são desquantizados de volta para o dtype do modelo (por exemplo, BF16) no momento do carregamento, o que é necessário para o fine-tuning ou para salvar o modelo em seu dtype original. QuandoFalse, os pesos são mantidos em sua forma comprimida e o compressed-tensors os descomprime na primeira passagem de forward. - use_optimized_inference (
bool, opcional, padrãoFalse) — quandoTrue, as camadas para as quais temos kernels mantêm seus pesos quantizados e são executadas por meio desses kernels (atualmente W8A8 FP8, em CUDA SM89+, XPU ou MPS com torch >= 2.15). Somente para inferência e opcional: sem ele, o modelo segue o caminho regular de compressed-tensors. Ignorado quandodequantize=True.
Esta é uma classe de encapsulamento que gerencia as opções de configuração de quantização do compressed-tensors.
É um encapsulamento de compressed_tensors.QuantizationConfig
from_dict
< source >( config_dictreturn_unused_kwargs = False**kwargs ) → QuantizationConfigMixin
Parâmetros
- config_dict (
dict[str, Any]) — Dicionário que será usado para instanciar o objeto de configuração. - return_unused_kwargs (
bool,opcional, padrãoFalse) — Indica se deve ou não retornar uma lista de argumentos de palavra-chave não utilizados. Utilizado pelo métodofrom_pretrainedemPreTrainedModel. - kwargs (
dict[str, Any]) — Parâmetros adicionais a partir dos quais inicializar o objeto de configuração.
Retorna
QuantizationConfigMixin
O objeto de configuração instanciado a partir desses parâmetros.
Instancia um CompressedTensorsConfig a partir de um dicionário Python de parâmetros. Opcionalmente, desembrulha quaisquer args da quantization_config aninhada
Configuração de quantização a ser adicionada ao config.json
Serializa esta instância em um dicionário Python. Retorna: dict[str, Any]: Dicionário de todos os atributos que compõem esta instância de configuração.
to_diff_dict
< source >( ) → dict[str, Any]
Retorna
dict[str, Any]
Dicionário de todos os atributos que compõem esta instância de configuração,
Remove todos os atributos de config que correspondem aos atributos padrão de config para melhorar a legibilidade e serializa para um dicionário Python.
TorchAoConfig
classe transformers.TorchAoConfig
< source >( quant_type: AOBaseConfigmodules_to_not_convert: list | None = Noneinclude_input_output_embeddings: bool = Falseuntie_embedding_weights: bool = False**kwargs )
Parâmetros
- quant_type (
AOBaseConfig) — Uma instância deAOBaseConfigdo torchao que especifica o tipo de quantização, por exemplo,Int4WeightOnlyConfig(group_size=32),Int8WeightOnlyConfig(),Int8DynamicActivationInt8WeightConfig(),Float8WeightOnlyConfig(), etc. - modules_to_not_convert (
list, opcional, padrãoNone) — A lista de módulos que não devem ser quantizados, útil para quantizar modelos que exigem explicitamente que alguns módulos permaneçam em sua precisão original. - include_input_output_embeddings (
bool, opcional, padrãoFalse) — Indica se as camadas de embedding devem ser incluídas na quantização. Se essa flag estiver definida, a input embedding também será removida da lista module_not_to_convert. - untie_embedding_weights (
bool, opcional, padrãoFalse) — Se as pesos devem ser desvinculados ao quantizar pesos de incorporação de entrada que estão vinculados a outros pesos.
Classe de configuração para técnicas de quantização/esparcidade do torchao.
Exemplo:
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
)Crie uma configuração a partir de um dicionário.
Retorne a configuração de quantização a ser aplicada.
Valide a configuração e defina os padrões.
Converte a configuração em um dicionário.
BitNetQuantConfig
classe 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 )
Parâmetros
- modules_to_not_convert (
Optional[List], opcional) — Opcionalmente, fornece uma lista de caminhos completos dos parâmetros de peso denn.Linearque não devem ser quantizados. O valor padrão é None. - linear_class (
str, opcional, padrão"bitlinear") — O tipo de classe linear a ser usado. Pode serbitlinearouautobitlinear. - quantization_mode (
str, opcional, padrão"offline") — O modo de quantização a ser utilizado. Pode seronlineouoffline. No modoonline, os parâmetros de quantização dos pesos são calculados dinamicamente durante cada passagem de frente (por exemplo, com base nos valores atuais dos pesos). Isso permite se adaptar às alterações nos pesos durante o treinamento (Quantization-Aware Training - QAT). No modooffline, os parâmetros de quantização são pré-calculados antes da inferência. Esses parâmetros são então fixados e carregados no modelo quantizado. Isso geralmente resulta em menor sobrecarga em tempo de execução em comparação com a quantização online. - use_rms_norm (
bool, opcional, padrãoFalse) — Indica se o RMSNorm deve ser aplicado às ativações antes da quantização. Isso corresponde à abordagem do artigo original do BitNet de normalizar as ativações antes da quantização/empacotamento. - rms_norm_eps (
float, opcional, padrão 1e-06) — O valor de epsilon usado na camada RMSNorm para estabilidade numérica. - kwargs (
dict[str, Any], opcional) — Argumentos de palavra-chave adicionais que podem ser usados por backends específicos de quantização ou por versões futuras.
Classe de configuração para aplicar a quantização BitNet.
Verificador de segurança que os argumentos estão corretos
SpQRConfig
classe transformers.SpQRConfig
< source >( bits: int = 3beta1: int = 16beta2: int = 16shapes: dict[str, int] | None = Nonemodules_to_not_convert: list[str] | None = None**kwargs )
Parâmetros
- bits (
int, opcional, padrão 3) — Especifica a contagem de bits para os pesos e os zero-points e escalas de primeira ordem. Atualmente, apenas bits = 3 é suportado. - beta1 (
int, opcional, padrão 16) — Largura do tile SpQR. Atualmente, apenas beta1 = 16 é suportado. - beta2 (
int, opcional, padrão 16) — Altura do tile SpQR. Atualmente, apenas beta2 = 16 é suportado. - shapes (
Optional, opcional) — Um dicionário contendo a forma de cada objeto. Precisamos disso porque é impossível deduzir o tamanho exato dos parâmetros apenas a partir de bits, beta1, beta2. - modules_to_not_convert (
Optional[list[str]], opcional) — Opcionalmente, fornece uma lista de caminhos completos dos parâmetros de peso denn.Linearque não devem ser quantizados. O valor padrão é None. - kwargs (
dict[str, Any], opcional) — Parâmetros adicionais a partir dos quais inicializar o objeto de configuração.
Esta é uma classe de envoltório para os parâmetros do spqr. Consulte a publicação original para mais detalhes.
Verificador de segurança que garante que os argumentos estão corretos — também substitui alguns argumentos do tipo NoneType pelos seus valores padrão.
FineGrainedFP8Config
classe 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 )
Parâmetros
- activation_scheme (
str, opcional, padrão"dynamic") — O esquema usado para ativação; o padrão e o único esquema suportado por enquanto é “dynamic”. - weight_block_size (
typing.tuple[int, int], opcional, padrão(128, 128)) — O tamanho dos blocos de pesos para quantização, o padrão é (128, 128). - dequantize (
bool, opcional, padrãoFalse) — Se deve desquantizar o modelo durante o carregamento. - modules_to_not_convert (
list, opcional) — Uma lista de nomes de módulos que não devem ser convertidos durante a quantização. - modules_to_convert (
list, opcional) — Uma lista de nomes de módulos adicionais, como tabelas de incorporação, que devem ser convertidos durante a quantização. - scale_fmt (
str, opcional, padrão"float") — dtype de armazenamento das escalas de peso por bloco:"float"(fp32, estilo V3) ou"ue8m0"(1 bytetorch.float8_e8m0fnu, estilo V4). - expert_dtype (
str, opcional, padrão"fp8") — Formato dos pesos dos especialistas do MoE:"fp8"ou"fp4"para os especialistas FP4-packed do DeepSeek-V4.
FineGrainedFP8Config é uma classe de configuração para quantização FP8 de grão fino, usada principalmente para modelos deepseek.
Verificador de segurança que os argumentos estão corretos
QuarkConfig
FourOverSixConfig
classe 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 )
Parâmetros
- activation_dtype (
str, opcional) — Tipo de dados a ser usado ao quantizar os tensores de ativação. Se não for fornecido,dtypeé usado. - activation_scale_rule (
str, opcional) — Regra de escala a ser usada ao selecionar uma escala para blocos em tensores de ativação. Se não for fornecida,scale_ruleé utilizada. - dtype (
str, padrão “nvfp4”, opcional, padrão"nvfp4") — O tipo de dados a ser usado para os pesos, as ativações e os tensores da camada. Pode ser"nvfp4"ou"mxfp4". - gradient_dtype (
str, opcional) — Tipo de dados a ser usado ao quantizar os tensores de gradiente. Se não for fornecido,dtypeé usado. - gradient_scale_rule (
str, opcional) — Regra de escala a ser usada ao selecionar uma escala para blocos em tensores de gradiente. Se não for fornecida,scale_ruleé usada. - keep_master_weights (
bool, padrão False, opcional, padrãoFalse) — Se deve manter os pesos mestres. SeTrue, os pesos de alta precisão são mantidos o tempo todo e os pesos são quantizados online em cada passagem de frente. Isso é útil para treinamento quantizado. - matmul_backend (
str, opcional) — O backend a ser usado para multiplicações de matrizes. Pode ser"cutlass"ou"pytorch". Se não for fornecido, o CUTLASS será usado se estiver disponível e o PyTorch será usado caso contrário. - output_dtype (
str, opcional, padrão"bfloat16") — O tipo de dados a ser usado para a saída da camada. Pode ser"bfloat16"ou"float16". - quantize_backend (
str, opcional) — O backend a ser usado para quantização. Pode ser"cuda","triton"ou"pytorch". Se não for fornecido, o backend mais rápido será selecionado com base no seu ambiente e nas opções suportadas por cada backend. Tipicamente,"cuda"será usado para inferência,"triton"será usado para treinamento e"pytorch"será usado em dispositivos não-CUDA. - scale_rule (
str, padrão “mse”, opcional, padrão"mse") — Regra a ser usada ao selecionar as escalas dos blocos. Pode ser"mse","mae"ou"abs_max"para Four Over Six,"static_6"para quantização NVFP4 padrão, ou"static_4"para escalar todos os blocos para um valor máximo de 4. - weight_dtype (
str, opcional) — Tipo de dados a ser usado ao quantizar os tensores de pesos. Se não for fornecido,dtypeé usado. - weight_scale_2d (
bool, padrão False, opcional, padrãoFalse) — Se deve calcular fatores de escala nos tensores de peso em blocos 2D. Isso deve ser feito durante o treinamento. - weight_scale_rule (
str, opcional) — Regra de escala a ser usada ao selecionar uma escala para blocos em tensores de peso. Se não for fornecida,scale_ruleé usada. - module_config_overrides (
dict[str, dict[str, Any]], opcional) — Um dicionário de substituições de configuração específicas de módulo. As chaves devem ser nomes de módulos, e os valores devem ser dicionários contendo a configuração de quantização para aquele módulo. Isso pode ser usado para substituir a configuração padrão de módulos específicos. - modules_to_not_convert (
list[str], opcional, padrão['lm_head']) — A lista de módulos a serem excluídos da quantização. Por padrão, olm_headé excluído.
Esta é uma classe wrapper que contém todas as opções para quantização com fouroversix. Em resumo,
Four Over Six é uma modificação da quantização NVFP4 que escala adaptativamente o maior valor
em cada bloco de 16 valores FP4 para 4 ou 6. A seleção de uma escala de 6 utiliza a faixa completa de
valores FP4, mas a seleção de uma escala de 4 permite uma distribuição mais uniforme do erro de
quantização. Consulte a publicação original para mais detalhes: https://arxiv.org/abs/2512.02010.
FPQuantConfig
classe 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 )
Parâmetros
- forward_dtype (
str, opcional, padrão"nvfp4") — O dtype a ser usado na passagem direta (forward pass). - forward_method (
str, opcional, padrão"abs_max") — A escala a ser usada para a passagem direta. Pode ser"abs_max"ou"quest"."abs_max"é melhor para PTQ,"quest"é melhor para QAT. - backward_dtype (
str, opcional, padrão"bf16") — O dtype a ser usado na etapa de retropropagação. - store_master_weights (
bool, opcional, padrãoFalse) — Se as master weights devem ser armazenadas. Necessário para QAT sobre pesos de camada. - hadamard_group_size (
int, opcional) — O tamanho do grupo para a transformada de hadamard antes da quantização para"quest", que corresponde ao tamanho do grupo do MXFP4 (32). SeNone, será definido como 16 para"nvfp4"e 32 para"mxfp4". - pseudoquantization (
bool, opcional, padrãoFalse) — Se deve usar pseudo-quantização baseada em Triton. É obrigatório para GPUs que não são Blackwell. Não oferece nenhum ganho de velocidade. Para fins de depuração. - transform_init (
str, opcional, padrão"hadamard") — um método para inicializar a matriz de pré-processamento. Pode ser"hadamard","identity"ou"gsr". - modules_to_not_convert (
list, opcional) — A lista de módulos que não devem ser quantizados, útil para quantizar modelos que exigem explicitamente que alguns módulos permaneçam em sua precisão original.
FPQuantConfig é uma classe de configuração para quantização usando o método FPQuant.
Verificador de segurança que garante que os argumentos estão corretos — também substitui alguns argumentos do tipo NoneType pelos seus valores padrão.
AutoRoundConfig
classe transformers.AutoRoundConfig
< source >( bits: int = 4group_size: int = 128sym: bool = Truebackend: str = 'auto'**kwargs )
Parâmetros
- bits (
int, opcional, padrão 4) — O número de bits para quantização, os valores suportados são (2, 3, 4, 5, 6, 7, 8). - group_size (
int, opcional, padrão 128) — Valor do tamanho do grupo - sym (
bool, opcional, padrãoTrue) — Se a quantização é simétrica ou não - backend (
str, opcional, padrão"auto") — O backend de inferência. Por padrão, o AutoRound seleciona um backend compatível com base no dispositivo, nas configurações de quantização e nas bibliotecas instaladas. Consulte Especificar backend de inferência para todas as opções de backend.
Esta é uma classe wrapper sobre todos os atributos e recursos possíveis com os quais você pode interagir em um modelo que foi carregado com quantização AutoRound.
Verificador de segurança que os argumentos estão corretos.
SinqConfig
classe 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 )
Parâmetros
- nbits (
int, padrão 4) — Bits de quantização para os pesos. - group_size (
int, padrão 64) — Tamanho do grupo usado na quantização de pesos SINQ (deve ser múltiplo de 8). - tiling_mode (
str, padrão “1D”) — Modo de tiling para SINQ (geralmente “1D”; “2D” se suportado pelo seu backend). - method (
str, default “sinq”) — “sinq” – SINQ apenas de pesos, sem calibração “asinq” – A-SINQ (com consciência de ativação), não suportado no Hugging Face. Consulte o repositório oficial do SINQ. - modules_to_not_convert (
list[str], opcional) — Lista de nomes/prefixos de módulos a manter em precisão total. - **kwargs —
Argumentos extras do usuário (mantidos em
_extra_kwargspara ida e volta).
Configuração de quantização para SINQ / A-SINQ.
Passe isso para:
AutoModel.from_pretrained(…, quantization_config=SinqConfig(…))
GgufConfig
classe transformers.GgufConfig
< source >( gguf_file: str | None = Nonedequantize: bool = False**kwargs )
Parâmetros
- gguf_file (
str, opcional) — caminho para o arquivo.ggufque contém os pesos. Pode ser omitido quando o nome é especificado por meio defrom_pretrained(..., gguf_file=...), que preenche esse valor. - dequantize (
bool, opcional, padrãoFalse) — Desempacota todos os pesos no momento do carregamento para um modelo denso comum. Sempre correto, mas abre mão da economia de memória; este também é o fallback automático quando não há kernel de matmul disponível para os tipos de quantização do arquivo.
Carregue um checkpoint quantizado GGUF com seus pesos mantidos em blocos GGUF.