mirror of https://github.com/vladmandic/automatic
feat: add 4-step Nunchaku variants for Qwen-Lightning models
Add 4-step distilled Nunchaku SVDQuant entries for Qwen-Lightning and Qwen-Lightning-Edit alongside the existing 8-step variants. Step count is now shown in the reference name (e.g. "Qwen-Lightning (4-step)"). - Add subfolder parameter to load_qwen_nunchaku to distinguish 4-step (nunchaku-4step) from 8-step (nunchaku) variants - Route to correct safetensors: lightningv1.0-4steps vs lightningv1.1-8steps for gen, lightningv1.0-4steps vs lightningv1.0-8steps for edit - Strip nunchaku subfolder before pipeline from_pretrained since it does not exist in the base HuggingFace repospull/4634/head
parent
c8597ca84e
commit
33de04a0c7
|
|
@ -90,7 +90,7 @@
|
|||
"size": 0,
|
||||
"date": "2025 June"
|
||||
},
|
||||
"Qwen-Lightning Nunchaku SVDQuant": {
|
||||
"Qwen-Lightning (8-step) Nunchaku SVDQuant": {
|
||||
"path": "vladmandic/Qwen-Lightning",
|
||||
"subfolder": "nunchaku",
|
||||
"preview": "vladmandic--Qwen-Lightning.jpg",
|
||||
|
|
@ -102,6 +102,18 @@
|
|||
"size": 0,
|
||||
"date": "2025 June"
|
||||
},
|
||||
"Qwen-Lightning (4-step) Nunchaku SVDQuant": {
|
||||
"path": "vladmandic/Qwen-Lightning",
|
||||
"subfolder": "nunchaku-4step",
|
||||
"preview": "vladmandic--Qwen-Lightning.jpg",
|
||||
"desc": "Nunchaku SVDQuant quantization of Qwen-Lightning (4-step distilled) transformer with INT4 and SVD rank 128",
|
||||
"skip": true,
|
||||
"nunchaku": ["Model"],
|
||||
"tags": "nunchaku",
|
||||
"extras": "steps: 4",
|
||||
"size": 0,
|
||||
"date": "2025 June"
|
||||
},
|
||||
"Qwen-Image-Edit Nunchaku SVDQuant": {
|
||||
"path": "Qwen/Qwen-Image-Edit",
|
||||
"subfolder": "nunchaku",
|
||||
|
|
@ -113,7 +125,7 @@
|
|||
"size": 0,
|
||||
"date": "2025 June"
|
||||
},
|
||||
"Qwen-Lightning-Edit Nunchaku SVDQuant": {
|
||||
"Qwen-Lightning-Edit (8-step) Nunchaku SVDQuant": {
|
||||
"path": "vladmandic/Qwen-Lightning-Edit",
|
||||
"subfolder": "nunchaku",
|
||||
"preview": "vladmandic--Qwen-Lightning-Edit.jpg",
|
||||
|
|
@ -125,6 +137,18 @@
|
|||
"size": 0,
|
||||
"date": "2025 June"
|
||||
},
|
||||
"Qwen-Lightning-Edit (4-step) Nunchaku SVDQuant": {
|
||||
"path": "vladmandic/Qwen-Lightning-Edit",
|
||||
"subfolder": "nunchaku-4step",
|
||||
"preview": "vladmandic--Qwen-Lightning-Edit.jpg",
|
||||
"desc": "Nunchaku SVDQuant quantization of Qwen-Lightning-Edit (4-step distilled editing) transformer with INT4 and SVD rank 128",
|
||||
"skip": true,
|
||||
"nunchaku": ["Model"],
|
||||
"tags": "nunchaku",
|
||||
"extras": "steps: 4",
|
||||
"size": 0,
|
||||
"date": "2025 June"
|
||||
},
|
||||
"Qwen-Image-Edit-2509 Nunchaku SVDQuant": {
|
||||
"path": "Qwen/Qwen-Image-Edit-2509",
|
||||
"subfolder": "nunchaku",
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ def load_qwen(checkpoint_info, diffusers_load_config=None):
|
|||
diffusers.pipelines.auto_pipeline.AUTO_INPAINT_PIPELINES_MAPPING["qwen-image"] = diffusers.QwenImageInpaintPipeline
|
||||
|
||||
if model_quant.check_nunchaku('Model'):
|
||||
transformer = qwen.load_qwen_nunchaku(repo_id)
|
||||
transformer = qwen.load_qwen_nunchaku(repo_id, subfolder=repo_subfolder)
|
||||
|
||||
if 'Qwen-Image-Distill-Full' in repo_id:
|
||||
repo_transformer = repo_id
|
||||
|
|
@ -63,6 +63,8 @@ def load_qwen(checkpoint_info, diffusers_load_config=None):
|
|||
text_encoder = generic.load_text_encoder(repo_te, cls_name=transformers.Qwen2_5_VLForConditionalGeneration, load_config=diffusers_load_config)
|
||||
|
||||
repo_id, repo_subfolder = qwen.check_qwen_pruning(repo_id, repo_subfolder)
|
||||
if repo_subfolder is not None and repo_subfolder.startswith('nunchaku'):
|
||||
repo_subfolder = None
|
||||
pipe = cls_name.from_pretrained(
|
||||
repo_id,
|
||||
transformer=transformer,
|
||||
|
|
|
|||
|
|
@ -1,11 +1,12 @@
|
|||
from modules import shared, devices
|
||||
|
||||
|
||||
def load_qwen_nunchaku(repo_id):
|
||||
def load_qwen_nunchaku(repo_id, subfolder=None):
|
||||
import nunchaku
|
||||
nunchaku_precision = nunchaku.utils.get_precision()
|
||||
nunchaku_repo = None
|
||||
transformer = None
|
||||
four_step = subfolder is not None and '4step' in subfolder
|
||||
try:
|
||||
from nunchaku.models.transformers.transformer_qwenimage import NunchakuQwenImageTransformer2DModel
|
||||
except Exception:
|
||||
|
|
@ -14,15 +15,21 @@ def load_qwen_nunchaku(repo_id):
|
|||
if 'pruning' in repo_id.lower() or 'distill' in repo_id.lower():
|
||||
return None
|
||||
elif repo_id.lower().endswith('qwen-image'):
|
||||
nunchaku_repo = f"nunchaku-ai/nunchaku-qwen-image/svdq-{nunchaku_precision}_r128-qwen-image.safetensors" # r32 vs r128
|
||||
nunchaku_repo = f"nunchaku-ai/nunchaku-qwen-image/svdq-{nunchaku_precision}_r128-qwen-image.safetensors"
|
||||
elif repo_id.lower().endswith('qwen-lightning'):
|
||||
nunchaku_repo = f"nunchaku-ai/nunchaku-qwen-image/svdq-{nunchaku_precision}_r128-qwen-image-lightningv1.1-8steps.safetensors" # 8-step variant
|
||||
if four_step:
|
||||
nunchaku_repo = f"nunchaku-ai/nunchaku-qwen-image/svdq-{nunchaku_precision}_r128-qwen-image-lightningv1.0-4steps.safetensors"
|
||||
else:
|
||||
nunchaku_repo = f"nunchaku-ai/nunchaku-qwen-image/svdq-{nunchaku_precision}_r128-qwen-image-lightningv1.1-8steps.safetensors"
|
||||
elif repo_id.lower().endswith('qwen-image-edit-2509'):
|
||||
nunchaku_repo = f"nunchaku-ai/nunchaku-qwen-image-edit-2509/svdq-{nunchaku_precision}_r128-qwen-image-edit-2509.safetensors" # 8-step variant
|
||||
nunchaku_repo = f"nunchaku-ai/nunchaku-qwen-image-edit-2509/svdq-{nunchaku_precision}_r128-qwen-image-edit-2509.safetensors"
|
||||
elif repo_id.lower().endswith('qwen-image-edit'):
|
||||
nunchaku_repo = f"nunchaku-ai/nunchaku-qwen-image-edit/svdq-{nunchaku_precision}_r128-qwen-image-edit.safetensors" # 8-step variant
|
||||
nunchaku_repo = f"nunchaku-ai/nunchaku-qwen-image-edit/svdq-{nunchaku_precision}_r128-qwen-image-edit.safetensors"
|
||||
elif repo_id.lower().endswith('qwen-lightning-edit'):
|
||||
nunchaku_repo = f"nunchaku-ai/nunchaku-qwen-image-edit/svdq-{nunchaku_precision}_r128-qwen-image-edit-lightningv1.0-8steps.safetensors" # 8-step variant
|
||||
if four_step:
|
||||
nunchaku_repo = f"nunchaku-ai/nunchaku-qwen-image-edit/svdq-{nunchaku_precision}_r128-qwen-image-edit-lightningv1.0-4steps.safetensors"
|
||||
else:
|
||||
nunchaku_repo = f"nunchaku-ai/nunchaku-qwen-image-edit/svdq-{nunchaku_precision}_r128-qwen-image-edit-lightningv1.0-8steps.safetensors"
|
||||
else:
|
||||
shared.log.error(f'Load module: quant=Nunchaku module=transformer repo="{repo_id}" unsupported')
|
||||
if nunchaku_repo is not None:
|
||||
|
|
|
|||
Loading…
Reference in New Issue