Buckets:
| # Quantização | |
| 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. | |
| > [!TIP] | |
| > Aprenda como quantizar modelos no guia [Quantization](../quantization/overview). | |
| ## PipelineQuantizationConfig[[diffusers.PipelineQuantizationConfig]] | |
| #### diffusers.PipelineQuantizationConfig[[diffusers.PipelineQuantizationConfig]] | |
| ```python | |
| diffusers.PipelineQuantizationConfig(quant_backend: str = None, quant_kwargs: dict[str, str | float | int | dict] = None, components_to_quantize: list[str] | str | None = None, quant_mapping: dict[str, DiffQuantConfigMixin | 'TransformersQuantConfigMixin'] = None) | |
| ``` | |
| [Fonte](https://github.com/huggingface/diffusers/blob/main/src/diffusers/quantizers/pipe_quant_config.py#L34) | |
| **Parâmetros:** | |
| quant_backend (`str`) : Backend de quantização a ser usado. Ao usar esta opção, assumimos que o backend está disponível tanto para o `diffusers` quanto para o `transformers`. | |
| quant_kwargs (`dict`) : Parâmetros para inicializar a classe do backend de quantização. | |
| components_to_quantize (`list`) : Componentes de um pipeline a ser quantizado. | |
| quant_mapping (`dict`) : Mapeamento que define as especificações de quantização a serem usadas para os componentes do pipeline. Ao usar este argumento, não se espera que os usuários forneçam `quant_backend`, `quant_kawargs` e `components_to_quantize`. | |
| Classe de configuração a ser usada ao aplicar quantização em tempo de execução no [from_pretrained()](/docs/diffusers/main/pt/api/pipelines/overview#diffusers.DiffusionPipeline.from_pretrained). | |
| ## BFLQuantizationConfig[[diffusers.BFLQuantizationConfig]] | |
| #### diffusers.BFLQuantizationConfig[[diffusers.BFLQuantizationConfig]] | |
| ```python | |
| diffusers.BFLQuantizationConfig(compute_dtype: 'torch.dtype' | None = None) | |
| ``` | |
| [Fonte](https://github.com/huggingface/diffusers/blob/main/src/diffusers/quantizers/quantization_config.py#L427) | |
| **Parâmetros:** | |
| compute_dtype (`torch.dtype`, padrão `torch.bfloat16`) : O dtype das ativações e das camadas não quantizadas. Dispositivos sem kernels FP8 ou NVFP4 fundidos desquantizam os pesos para este dtype em cada passagem de frente. | |
| Config para carregar checkpoints quantizados com os esquemas `fp8r` e `nvfp4` da Black Forest Labs. | |
| Ambos os esquemas são lidos do checkpoint por meio de `~FromSingleFileMixin.from_single_file`; a quantização de um modelo em tempo de execução não é suportada. Uma camada linear é quantizada quando seu peso vem acompanhado de tensores de escala: | |
| - `fp8r`: `weight` é `float8_e4m3fn` com forma `[N, K]` e `weight_scale` é uma escala fp32 por linha `[N]`. | |
| - `nvfp4`: `weight` é `uint8` com forma `[N, K/2]` (dois valores E2M1 por byte), `weight_scale` é uma escala de bloco `float8_e4m3fn` `[N, K/16]`, e `weight_scale_2` e `input_scale` são escalares fp32 que armazenam a escala global de peso e a escala de ativação calibrada (o layout NVFP4 do ModelOpt). | |
| ## BitsAndBytesConfig[[diffusers.BitsAndBytesConfig]] | |
| #### diffusers.BitsAndBytesConfig[[diffusers.BitsAndBytesConfig]] | |
| ```python | |
| diffusers.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) | |
| ``` | |
| [Fonte](https://github.com/huggingface/diffusers/blob/main/src/diffusers/quantizers/quantization_config.py#L171) | |
| **Parâmetros:** | |
| load_in_8bit (`bool`, *opcional*, padrão `False`) : Esta flag é usada para habilitar a quantização de 8 bits com LLM.int8(). | |
| load_in_4bit (`bool`, *opcional*, padrão `False`) : Esta flag é usada para habilitar a quantização de 4 bits, substituindo as camadas Linear por camadas FP4/NF4 do `bitsandbytes`. | |
| llm_int8_threshold (`float`, *opcional*, padrão 6.0) : Isso corresponde ao limiar de outliers para a detecção de outliers, conforme descrito no artigo `LLM.int8() : 8-bit Matrix Multiplication for Transformers at Scale`: https://huggingface.co/papers/2208.07339 Qualquer valor de estado oculto 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 são distribuídos de forma 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 o Jukebox, que possui várias cabeças em diferentes posições e não necessariamente na última posição. Por exemplo, para modelos `CausalLM`, o último `lm_head` é tipicamente mantido em seu `dtype` original. | |
| llm_int8_enable_fp32_cpu_offload (`bool`, *opcional*, padrão `False`) : Esta flag é usada 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 esta flag. Isso é útil para descarregar modelos grandes, como `google/flan-t5-xxl`. Observe que as operações int8 não serão executadas na CPU. | |
| llm_int8_has_fp16_weight (`bool`, *opcional*, padrão `False`) : Este sinal executa o LLM.int8() com pesos principais de 16 bits. Isso é útil para ajuste fino, pois os pesos não precisam ser convertidos de volta e para frente para a passagem reversa. | |
| bnb_4bit_compute_dtype (`torch.dtype` ou str, *opcional*, padrão `torch.float32`) : Isso define o tipo computacional, que pode ser diferente do tipo de entrada. Por exemplo, as entradas podem ser fp32, mas a computação pode ser definida como bf16 para ganhos de velocidade. | |
| bnb_4bit_quant_type (`str`, *opcional*, padrão `"fp4"`) : Isso 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 por `fp4` ou `nf4`. | |
| bnb_4bit_use_double_quant (`bool`, *opcional*, padrão `False`) : Esta flag é usada para quantização aninhada, em que as constantes de quantização da primeira quantização são quantizadas novamente. | |
| bnb_4bit_quant_storage (`torch.dtype` ou str, *opcional*, padrão `torch.uint8`) : Isso define o tipo de armazenamento para empacotar os parâmetros quânticos 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`. | |
| Isso substitui `load_in_8bit` ou `load_in_4bit`, portanto, ambas as opções são mutuamente exclusivas. | |
| Atualmente, apenas suporta quantização `LLM.int8()`, `FP4` e `NF4`. Se mais métodos forem adicionados ao `bitsandbytes`, mais argumentos serão adicionados a esta classe. | |
| #### is_quantizable[[diffusers.BitsAndBytesConfig.is_quantizable]] | |
| ```python | |
| is_quantizable() | |
| ``` | |
| [Fonte](https://github.com/huggingface/diffusers/blob/main/src/diffusers/quantizers/quantization_config.py#L343) | |
| Retorna `True` se o modelo for quantizável, `False` caso contrário. | |
| #### post_init[[diffusers.BitsAndBytesConfig.post_init]] | |
| ```python | |
| post_init() | |
| ``` | |
| [Fonte](https://github.com/huggingface/diffusers/blob/main/src/diffusers/quantizers/quantization_config.py#L313) | |
| Verificador de segurança que os argumentos estão corretos - também substitui alguns argumentos do tipo NoneType pelos seus valores padrão. | |
| #### quantization_method[[diffusers.BitsAndBytesConfig.quantization_method]] | |
| ```python | |
| quantization_method() | |
| ``` | |
| [Fonte](https://github.com/huggingface/diffusers/blob/main/src/diffusers/quantizers/quantization_config.py#L349) | |
| 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[[diffusers.BitsAndBytesConfig.to_diff_dict]] | |
| ```python | |
| to_diff_dict() | |
| ``` | |
| [Fonte](https://github.com/huggingface/diffusers/blob/main/src/diffusers/quantizers/quantization_config.py#L380) | |
| **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 melhor legibilidade e serializa para um dicionário Python. | |
| ## GGUFQuantizationConfig[[diffusers.GGUFQuantizationConfig]] | |
| #### diffusers.GGUFQuantizationConfig[[diffusers.GGUFQuantizationConfig]] | |
| ```python | |
| diffusers.GGUFQuantizationConfig(compute_dtype: 'torch.dtype' | None = None) | |
| ``` | |
| [Fonte](https://github.com/huggingface/diffusers/blob/main/src/diffusers/quantizers/quantization_config.py#L404) | |
| **Parâmetros:** | |
| compute_dtype : (`torch.dtype`, padrão `torch.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. | |
| Esta é uma classe de configuração para técnicas de quantização GGUF. | |
| ## NunchakuLiteQuantizationConfig[[diffusers.NunchakuLiteQuantizationConfig]] | |
| #### diffusers.NunchakuLiteQuantizationConfig[[diffusers.NunchakuLiteQuantizationConfig]] | |
| ```python | |
| diffusers.NunchakuLiteQuantizationConfig(compute_dtype: 'torch.dtype' | str | None = None, svdq_w4a4: dict[str, Any] | None = None, awq_w4a16: dict[str, Any] | None = None, **kwargs) | |
| ``` | |
| [Fonte](https://github.com/huggingface/diffusers/blob/main/src/diffusers/quantizers/quantization_config.py#L451) | |
| **Parâmetros:** | |
| compute_dtype (`torch.dtype`, padrão `torch.bfloat16`) : dtype de tempo de execução usado pelos buffers de ponto flutuante nos módulos quantizados. | |
| svdq_w4a4 (`dict`, *opcional*) : Configuração explícita do alvo SVDQ W4A4 com `precision`, `group_size`, `rank` e `targets`. | |
| awq_w4a16 (`dict`, *opcional*) : Configuração explícita de destino AWQ W4A16 com `precision`, `group_size` e `targets`. | |
| Configuração para carregar checkpoints do Nunchaku Lite. | |
| O suporte do Nunchaku Lite no Diffusers carrega checkpoints pré-quantizados. Para criar um checkpoint compatível, use [`diffuse-compressor`](https://github.com/rootonchair/diffuse-compressor) para escolher ou adaptar uma configuração de destino para a arquitetura do modelo, quantizar e exportar o transformer, e empacotá-lo como um pipeline do Diffusers com a configuração compacta `quantization_config` armazenada em `config.json`. | |
| O state dict exportado deve corresponder exatamente à arquitetura do modelo Diffusers de destino. Checkpoints quantizados com projeções QKV fundidas não serão carregados em uma configuração de modelo que espera módulos de projeção Q, K e V separados. | |
| Exemplo de configuração compacta `config.json`: | |
| ```json | |
| { | |
| "_class_name": "ErnieImageTransformer2DModel", | |
| "quantization_config": { | |
| "quant_method": "nunchaku_lite", | |
| "compute_dtype": "bfloat16", | |
| "svdq_w4a4": { | |
| "precision": "nvfp4", | |
| "group_size": 16, | |
| "rank": 32, | |
| "targets": ["layers.0.self_attention.to_q"] | |
| }, | |
| "awq_w4a16": { | |
| "precision": "int4", | |
| "group_size": 64, | |
| "targets": ["final_linear"] | |
| } | |
| } | |
| } | |
| ``` | |
| ## QuantoConfig[[diffusers.QuantoConfig]] | |
| #### diffusers.QuantoConfig[[diffusers.QuantoConfig]] | |
| ```python | |
| diffusers.QuantoConfig(weights_dtype: str = 'int8', modules_to_not_convert: list[str] | None = None, **kwargs) | |
| ``` | |
| [Fonte](https://github.com/huggingface/diffusers/blob/main/src/diffusers/quantizers/quantization_config.py#L669) | |
| **Parâmetros:** | |
| weights_dtype (`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") | |
| 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`. | |
| `QuantoConfig` está obsoleto e será removido na versão 1.0.0. Considere migrar para um dos outros backends de quantização suportados, como [BitsAndBytesConfig](/docs/diffusers/main/pt/api/quantization#diffusers.BitsAndBytesConfig) ou [TorchAoConfig](/docs/diffusers/main/pt/api/quantization#diffusers.TorchAoConfig). | |
| modules_to_not_convert (`list`, *opcional*, padrão `None`): 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 codificador do Whisper, o codificador do Llava, as camadas de gate do Mixtral). | |
| #### post_init[[diffusers.QuantoConfig.post_init]] | |
| ```python | |
| post_init() | |
| ``` | |
| [Fonte](https://github.com/huggingface/diffusers/blob/main/src/diffusers/quantizers/quantization_config.py#L703) | |
| Verificador de segurança que os argumentos estão corretos | |
| ## SDNQConfig[[diffusers.SDNQConfig]] | |
| #### diffusers.SDNQConfig[[diffusers.SDNQConfig]] | |
| ```python | |
| diffusers.SDNQConfig(*args, **kwargs) | |
| ``` | |
| [Fonte](https://github.com/huggingface/diffusers/blob/main/src/diffusers/quantizers/quantization_config.py#L981) | |
| **Parâmetros:** | |
| weights_dtype (`str`, *opcional*, padrão `"int8"`) : O dtype de destino para os pesos após a quantização, por exemplo, `"int8"`, `"uint4"`, `"float8_e4m3fn"`. Consulte `sdnq.common.accepted_weight_dtypes` para todos os valores suportados. | |
| group_size (`int`, *opcional*, padrão `0`) : Quantos elementos de um tensor compartilham o mesmo grupo de quantização. `0` seleciona automaticamente com base em `weights_dtype`, `-1` desativa o agrupamento e usa quantização por linha. | |
| use_svd (`bool`, *opcional*, padrão `False`) : Se deve aplicar o algoritmo SVDQuant por cima da quantização SDNQ. | |
| use_quantized_matmul (`bool`, *opcional*, padrão `False`) : Se deve usar matmul quantizado INT8 / FP8 / FP16 na passagem direta em vez de BF16 / FP16. | |
| modules_to_not_convert (`list`, *opcional*, padrão `None`) : A lista de módulos a serem ignorados durante a quantização. | |
| kwargs (`dict[str, Any]`, *opcional*) : Argumentos de palavra-chave adicionais encaminhados para `sdnq.SDNQConfig` (por exemplo, `quantized_matmul_dtype`, `svd_rank`, `use_hadamard`, `quant_conv`, `quant_embedding`, `modules_dtype_dict`). | |
| Classe de configuração para SDNQ (SD.Next Quantization). | |
| A biblioteca `sdnq` inclui seu próprio config e quantizer compatíveis com diffusers; esta classe é uma fábrica fina que delega a eles para que checkpoints com `quant_method="sdnq"` sejam carregados nativamente com diffusers. Todos os argumentos são encaminhados para `sdnq.SDNQConfig`. Requer a biblioteca `sdnq`: `pip install sdnq`. | |
| Referência: https://github.com/Disty0/sdnq | |
| ## TorchAoConfig[[diffusers.TorchAoConfig]] | |
| #### diffusers.TorchAoConfig[[diffusers.TorchAoConfig]] | |
| ```python | |
| diffusers.TorchAoConfig(quant_type: 'AOBaseConfig', modules_to_not_convert: list[str] | None = None, **kwargs) | |
| ``` | |
| [Fonte](https://github.com/huggingface/diffusers/blob/main/src/diffusers/quantizers/quantization_config.py#L572) | |
| **Parâmetros:** | |
| quant_type (`AOBaseConfig`) : Uma instância de uma subclasse de `AOBaseConfig` que especifica o tipo de quantização. Consulte a [documentação do torchao](https://docs.pytorch.org/ao/main/api_ref_quantization.html#inference-apis-for-quantize) para as classes de configuração disponíveis (por exemplo, `Int4WeightOnlyConfig`, `Int8WeightOnlyConfig`, `Float8WeightOnlyConfig`, `Float8DynamicActivationFloat8WeightConfig`, etc.). | |
| modules_to_not_convert (`list[str]`, *opcional*, padrão `None`) : 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 de configuração para técnicas de quantização/esparcidade do torchao. | |
| Exemplo: | |
| ```python | |
| from diffusers import FluxTransformer2DModel, TorchAoConfig | |
| from torchao.quantization import Int8WeightOnlyConfig | |
| quantization_config = TorchAoConfig(Int8WeightOnlyConfig()) | |
| transformer = FluxTransformer2DModel.from_pretrained( | |
| "black-forest-labs/Flux.1-Dev", | |
| subfolder="transformer", | |
| quantization_config=quantization_config, | |
| torch_dtype=torch.bfloat16, | |
| ) | |
| ``` | |
| #### from_dict[[diffusers.TorchAoConfig.from_dict]] | |
| ```python | |
| from_dict(config_dict, return_unused_kwargs = False, **kwargs) | |
| ``` | |
| [Fonte](https://github.com/huggingface/diffusers/blob/main/src/diffusers/quantizers/quantization_config.py#L637) | |
| Crie uma configuração a partir de um dicionário. | |
| #### get_apply_tensor_subclass[[diffusers.TorchAoConfig.get_apply_tensor_subclass]] | |
| ```python | |
| get_apply_tensor_subclass() | |
| ``` | |
| [Fonte](https://github.com/huggingface/diffusers/blob/main/src/diffusers/quantizers/quantization_config.py#L659) | |
| Crie o método de quantização apropriado com base na configuração. | |
| #### to_dict[[diffusers.TorchAoConfig.to_dict]] | |
| ```python | |
| to_dict() | |
| ``` | |
| [Fonte](https://github.com/huggingface/diffusers/blob/main/src/diffusers/quantizers/quantization_config.py#L623) | |
| Converte a configuração em um dicionário. | |
| ## DiffusersQuantizer[[diffusers.DiffusersQuantizer]] | |
| #### diffusers.DiffusersQuantizer[[diffusers.DiffusersQuantizer]] | |
| ```python | |
| diffusers.DiffusersQuantizer(quantization_config: QuantizationConfigMixin, **kwargs) | |
| ``` | |
| [Fonte](https://github.com/huggingface/diffusers/blob/main/src/diffusers/quantizers/base.py#L34) | |
| Classe abstrata do quantizador do HuggingFace. Atualmente, suporta a quantização de modelos do HF diffusers para inferência e/ou quantização. Esta classe é usada apenas em diffusers.models.modeling_utils.ModelMixin.from_pretrained e ainda não pode ser facilmente utilizada fora do escopo desse método. | |
| Attributes quantization_config (`diffusers.quantizers.quantization_config.QuantizationConfigMixin`): A configuração de quantização que define os parâmetros de quantização do seu modelo que você deseja quantizar. modules_to_not_convert (`list[str]`, *opcional*): A lista de nomes de módulos que não devem ser convertidos ao quantizar o modelo. required_packages (`list[str]`, *opcional*): A lista de pacotes pip necessários para instalar antes de usar o quantizador requires_calibration (`bool`): Se o método de quantização requer calibrar o modelo antes de usá-lo. | |
| #### adjust_max_memory[[diffusers.DiffusersQuantizer.adjust_max_memory]] | |
| ```python | |
| adjust_max_memory(max_memory: dict[str, int | str]) | |
| ``` | |
| [Fonte](https://github.com/huggingface/diffusers/blob/main/src/diffusers/quantizers/base.py#L133) | |
| ajuste o argumento max_memory para infer_auto_device_map() se for necessária memória extra para quantização | |
| #### adjust_target_dtype[[diffusers.DiffusersQuantizer.adjust_target_dtype]] | |
| ```python | |
| adjust_target_dtype(torch_dtype: torch.dtype) | |
| ``` | |
| [Fonte](https://github.com/huggingface/diffusers/blob/main/src/diffusers/quantizers/base.py#L91) | |
| **Parâmetros:** | |
| torch_dtype (`torch.dtype`, *opcional*) : O torch_dtype usado para calcular o device_map. | |
| Substitua este método se você quiser ajustar a variável `target_dtype` usada em `from_pretrained` para calcular o device_map, caso o device_map seja um `str`. Por exemplo, para bitsandbytes, definimos forçadamente `target_dtype` como `torch.int8` e, para 4 bits, passamos um enum personalizado `accelerate.CustomDtype.int4`. | |
| #### check_if_quantized_param[[diffusers.DiffusersQuantizer.check_if_quantized_param]] | |
| ```python | |
| check_if_quantized_param(model: ModelMixin, param_value: torch.Tensor, param_name: str, state_dict: dict[str, typing.Any], **kwargs) | |
| ``` | |
| [Fonte](https://github.com/huggingface/diffusers/blob/main/src/diffusers/quantizers/base.py#L137) | |
| verifica se um componente de state_dict carregado faz parte de um parâmetro quantizado + algumas validações; definido apenas para métodos de quantização que exigem a criação de novos parâmetros para a quantização. | |
| #### check_quantized_param_shape[[diffusers.DiffusersQuantizer.check_quantized_param_shape]] | |
| ```python | |
| check_quantized_param_shape(*args, **kwargs) | |
| ``` | |
| [Fonte](https://github.com/huggingface/diffusers/blob/main/src/diffusers/quantizers/base.py#L157) | |
| verifica se o parâmetro quantizado tem a forma esperada. | |
| #### create_quantized_param[[diffusers.DiffusersQuantizer.create_quantized_param]] | |
| ```python | |
| create_quantized_param(*args, **kwargs) | |
| ``` | |
| [Fonte](https://github.com/huggingface/diffusers/blob/main/src/diffusers/quantizers/base.py#L151) | |
| obtem os componentes necessários de state_dict e cria o parâmetro quantizado. | |
| #### dequantize[[diffusers.DiffusersQuantizer.dequantize]] | |
| ```python | |
| dequantize(model) | |
| ``` | |
| [Fonte](https://github.com/huggingface/diffusers/blob/main/src/diffusers/quantizers/base.py#L219) | |
| 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. | |
| #### get_cuda_warm_up_factor[[diffusers.DiffusersQuantizer.get_cuda_warm_up_factor]] | |
| ```python | |
| get_cuda_warm_up_factor() | |
| ``` | |
| [Fonte](https://github.com/huggingface/diffusers/blob/main/src/diffusers/quantizers/base.py#L232) | |
| O fator a ser usado em `caching_allocator_warmup` para obter o número de bytes a serem pré-alocados para aquecer a cuda. Um fator de 2 significa que alocamos todos os bytes no modelo vazio (já que alocamos em fp16), um fator de 4 significa que alocamos metade da memória dos pesos residentes no modelo vazio, etc... | |
| #### get_special_dtypes_update[[diffusers.DiffusersQuantizer.get_special_dtypes_update]] | |
| ```python | |
| get_special_dtypes_update(model, torch_dtype: torch.dtype) | |
| ``` | |
| [Fonte](https://github.com/huggingface/diffusers/blob/main/src/diffusers/quantizers/base.py#L113) | |
| **Parâmetros:** | |
| model (`~diffusers.models.modeling_utils.ModelMixin`) : O modelo a ser quantizado | |
| torch_dtype (`torch.dtype`) : O dtype passado no método `from_pretrained`. | |
| retorna os dtypes para módulos que não são quantizados - usado para o cálculo do device_map caso se passe um str como device_map. O método usará o `modules_to_not_convert` que é modificado em `_process_model_before_weight_loading`. Modelos do `diffusers` ainda não possuem nenhum atributo `modules_to_not_convert`, mas isso pode mudar em breve no futuro. | |
| #### postprocess_model[[diffusers.DiffusersQuantizer.postprocess_model]] | |
| ```python | |
| postprocess_model(model: ModelMixin, **kwargs) | |
| ``` | |
| [Fonte](https://github.com/huggingface/diffusers/blob/main/src/diffusers/quantizers/base.py#L206) | |
| **Parâmetros:** | |
| model (`~diffusers.models.modeling_utils.ModelMixin`) : O modelo a ser quantizado | |
| kwargs (`dict`, *opcional*) : Os argumentos de palavra-chave que são passados ao `_process_model_after_weight_loading`. | |
| 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[[diffusers.DiffusersQuantizer.preprocess_model]] | |
| ```python | |
| preprocess_model(model: ModelMixin, **kwargs) | |
| ``` | |
| [Fonte](https://github.com/huggingface/diffusers/blob/main/src/diffusers/quantizers/base.py#L190) | |
| **Parâmetros:** | |
| model (`~diffusers.models.modeling_utils.ModelMixin`) : O modelo a ser quantizado | |
| kwargs (`dict`, *opcional*) : Os argumentos de palavra-chave que são passados ao `_process_model_before_weight_loading`. | |
| Definindo atributos do modelo e/ou convertendo 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`. | |
| #### update_device_map[[diffusers.DiffusersQuantizer.update_device_map]] | |
| ```python | |
| update_device_map(device_map: dict[str, typing.Any] | None) | |
| ``` | |
| [Fonte](https://github.com/huggingface/diffusers/blob/main/src/diffusers/quantizers/base.py#L79) | |
| **Parâmetros:** | |
| device_map (`dict | str`, *opcional*) : O device_map que é passado pelo método `from_pretrained`. | |
| 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_missing_keys[[diffusers.DiffusersQuantizer.update_missing_keys]] | |
| ```python | |
| update_missing_keys(model, missing_keys: list[str], prefix: str) | |
| ``` | |
| [Fonte](https://github.com/huggingface/diffusers/blob/main/src/diffusers/quantizers/base.py#L103) | |
| **Parâmetros:** | |
| missing_keys (`list[str]`, *opcional*) : A lista de chaves ausentes no checkpoint em comparação com o state dict do modelo | |
| Substitua este método se você quiser ajustar o `missing_keys`. | |
| #### update_torch_dtype[[diffusers.DiffusersQuantizer.update_torch_dtype]] | |
| ```python | |
| update_torch_dtype(torch_dtype: torch.dtype) | |
| ``` | |
| [Fonte](https://github.com/huggingface/diffusers/blob/main/src/diffusers/quantizers/base.py#L68) | |
| **Parâmetros:** | |
| torch_dtype (`torch.dtype`) : O dtype de entrada que é passado em `from_pretrained` | |
| 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 | |
| #### validate_environment[[diffusers.DiffusersQuantizer.validate_environment]] | |
| ```python | |
| validate_environment(*args, **kwargs) | |
| ``` | |
| [Fonte](https://github.com/huggingface/diffusers/blob/main/src/diffusers/quantizers/base.py#L163) | |
| 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 diffusers. Se nenhuma verificação explícita for necessária, basta não retornar nada. | |
Xet Storage Details
- Size:
- 26.4 kB
- Xet hash:
- c47acf597344fbcf13ce235e20904fd2152d78329efeb1df737d2a27fd4e7701
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.