Warn and disable quantized matmul if triton is not available

This commit is contained in:
Disty0
2025-11-29 01:34:54 +03:00
parent 3e52009a4f
commit 01a0f6b356
5 changed files with 19 additions and 3 deletions
+10
View File
@@ -166,6 +166,11 @@ def create_sdnq_config(kwargs = None, allow: bool = True, module: str = 'Model',
from modules import shared
if allow and (shared.opts.sdnq_quantize_mode in {'pre', 'auto'}) and (module == 'any' or module in shared.opts.sdnq_quantize_weights):
from modules.sdnq import SDNQConfig
from modules.sdnq.common import use_torch_compile as sdnq_use_torch_compile
if shared.opts.sdnq_use_quantized_matmul and not sdnq_use_torch_compile:
shared.log.warning('SDNQ Quantized MatMul requires a working Triton install. Disabling Quantized MatMul.')
shared.opts.sdnq_use_quantized_matmul = False
if weights_dtype is None:
if module in {"TE", "LLM"} and shared.opts.sdnq_quantize_weights_mode_te not in {"Same as model", "default"}:
@@ -492,6 +497,11 @@ def sdnq_quantize_model(model, op=None, sd_model=None, do_gc: bool = True, weigh
global quant_last_model_name, quant_last_model_device # pylint: disable=global-statement
from modules import devices, shared, timer
from modules.sdnq import sdnq_post_load_quant
from modules.sdnq.common import use_torch_compile as sdnq_use_torch_compile
if shared.opts.sdnq_use_quantized_matmul and not sdnq_use_torch_compile:
shared.log.warning('SDNQ Quantized MatMul requires a working Triton install. Disabling Quantized MatMul.')
shared.opts.sdnq_use_quantized_matmul = False
if weights_dtype is None:
if (op is not None) and ("text_encoder" in op or op in {"TE", "LLM"}) and (shared.opts.sdnq_quantize_weights_mode_te not in {"Same as model", "default"}):
+4
View File
@@ -167,6 +167,10 @@ def set_diffuser_options(sd_model, vae=None, op:str='model', offload:bool=True,
for module_name in get_module_names(sd_model):
module = getattr(sd_model, module_name, None)
if hasattr(module, "quantization_config") and getattr(module.quantization_config, "quant_method", None) == "sdnq":
from modules.sdnq.common import use_torch_compile as sdnq_use_torch_compile
if shared.opts.sdnq_use_quantized_matmul and not sdnq_use_torch_compile:
shared.log.warning('SDNQ Quantized MatMul requires a working Triton install. Disabling Quantized MatMul.')
shared.opts.sdnq_use_quantized_matmul = False
if module.quantization_config.use_quantized_matmul != shared.opts.sdnq_use_quantized_matmul:
from modules.sdnq.loader import apply_sdnq_options_to_model
shared.log.debug(f'Setting {op} {module_name}: sdnq_use_quantized_matmul={shared.opts.sdnq_use_quantized_matmul}')
+1 -1
View File
@@ -5,7 +5,7 @@ import torch
from modules import shared, devices
sdnq_version = "0.1.0"
sdnq_version = "0.1.1"
dtype_dict = {
"int32": {"min": -2147483648, "max": 2147483647, "num_bits": 32, "sign": 1, "exponent": 0, "mantissa": 31, "target_dtype": torch.int32, "torch_dtype": torch.int32, "storage_dtype": torch.int32, "is_unsigned": False, "is_integer": True, "is_packed": False},
+3 -1
View File
@@ -3,7 +3,7 @@ import json
import torch
from diffusers.models.modeling_utils import ModelMixin
from .common import dtype_dict, use_tensorwise_fp8_matmul
from .common import dtype_dict, use_tensorwise_fp8_matmul, use_torch_compile
from .quantizer import SDNQConfig, sdnq_post_load_quant, prepare_weight_for_matmul, prepare_svd_for_matmul, get_quant_args_from_config
from .forward import get_forward_func
from .file_loader import load_files
@@ -206,6 +206,8 @@ def apply_sdnq_options_to_module(model, dtype: torch.dtype = None, dequantize_fp
def apply_sdnq_options_to_model(model, dtype: torch.dtype = None, dequantize_fp32: bool = None, use_quantized_matmul: bool = None):
if use_quantized_matmul and not use_torch_compile:
raise ValueError("SDNQ Quantized MatMul requires a working Triton install.")
model = apply_sdnq_options_to_module(model, dtype=dtype, dequantize_fp32=dequantize_fp32, use_quantized_matmul=use_quantized_matmul)
if hasattr(model, "quantization_config"):
if use_quantized_matmul is not None:
+1 -1
View File
@@ -909,7 +909,7 @@ class SDNQConfig(QuantizationConfigMixin):
Safety checker that arguments are correct
"""
if self.use_quantized_matmul and not use_torch_compile:
raise ValueError("Quantized MatMul requires a working Triton install.")
raise ValueError("SDNQ Quantized MatMul requires a working Triton install.")
if self.weights_dtype not in accepted_weight_dtypes:
raise ValueError(f"SDNQ only support weight dtypes in {accepted_weight_dtypes} but found {self.weights_dtype}")
if self.quantized_matmul_dtype is not None and self.quantized_matmul_dtype not in accepted_matmul_dtypes: