Uh oh!
There was an error while loading. Please reload this page.
Conversation
sayakpaul
commented
Aug 21, 2025
Let me outline the stage where we're currently at, as this will help us understand the current blockers: This is for quantizing a pre-trained non-quantized model checkpoint as opposed to trying to directly load a quantized checkpoint.
If you have suggestions, please LMK. |
sayakpaul
commented
Aug 21, 2025
Discussed with @SunMarc internally. We will also try to first supported pre-quantized checkpoints from https://huggingface.co/nunchaku-tech/nunchaku and see how it goes. |
sayakpaul
commented
Aug 22, 2025
Tried a bit for loading pre-quantized checkpoints. The issues currently are:
CodefromdiffusersimportDiffusionPipeline, FluxTransformer2DModel, NunchakuConfigfromnunchaku.models.linearimportSVDQW4A4Linearfromsafetensorsimportsafe_openfromhuggingface_hubimporthf_hub_downloadimporttorchdefmodules_without_qweight(safetensors_path: str):
no_qweight=set()
withsafe_open(safetensors_path, framework="pt", device="cpu") asf:
forkeyinf.keys():
ifkey.endswith(".weight"):
# module name is everything except the last piece after "."module_name=".".join(key.split(".")[:-1])
no_qweight.add(module_name)
returnsorted(no_qweight)
ckpt_id="black-forest-labs/FLUX.1-dev"state_dict_path=hf_hub_download(repo_id="nunchaku-tech/nunchaku-flux.1-dev", filename="svdq-int4_r32-flux.1-dev.safetensors")
modules_to_not_convert=modules_without_qweight(state_dict_path)
# print(f"{modules_to_convert=}")model=FluxTransformer2DModel.from_single_file(
state_dict_path,
config=ckpt_id, subfolder="transformer",
torch_dtype=torch.bfloat16, quantization_config=NunchakuConfig(
weight_dtype="int4",
weight_group_size=64,
activation_dtype="int4",
activation_group_size=64,
modules_to_not_convert=modules_to_not_convert
)
).to("cuda")
has_svd=any(isinstance(module, SVDQW4A4Linear) for_, moduleinmodel.named_modules())
asserthas_svdpipe=DiffusionPipeline.from_pretrained(
ckpt_id, transformer=model, torch_dtype=torch.bfloat16
).to("cuda")
image=pipe(
"A cat holding a sign that says hello world", num_inference_steps=50, guidance_scale=3.5,
generator=torch.manual_seed(0),
).images[0]
image.save(f"nunchaku.png")Cc: @SunMarc |
lmxyy
commented
Aug 22, 2025
dxqb
commented
Sep 25, 2025
I raised this issue with them here nunchux-ai/nunchaku#687 and they referred to https://github.com/nunchaku-tech/deepcompressor having the quantization helper functions. I have not looked into it further, because there were more blocking issues, such as memory corruptions, and I am unsure whether AWQW4A16Linear is currently a general purpose tool that can be used outside of nunchaku. |
This issue has been automatically marked as stale because it has not had recent activity. If you think this still needs to be addressed please comment on this thread. Please note that issues that do not follow the contributing guidelines are likely to be ignored. |
What does this PR do?
Caution
Doesn't work yet.
Test code:
diffusers-cli env:@lmxyy I am going to outline the stage we're currently at in this integration as that will help us better understand the blockers.
Cc: @SunMarc