Upload 2 files
Browse files- quantized/combine.py +17 -9
- quantized/metadata.json +14 -6
quantized/combine.py
CHANGED
|
@@ -37,16 +37,16 @@ if os.path.isfile(metadata_file):
|
|
| 37 |
try:
|
| 38 |
with open(metadata_file, "r", encoding="utf-8") as f:
|
| 39 |
metadata = json.load(f)
|
| 40 |
-
# Convert nested objects to JSON strings
|
| 41 |
for k, v in metadata.items():
|
| 42 |
if isinstance(v, dict):
|
| 43 |
metadata[k] = json.dumps(v)
|
| 44 |
except Exception as e:
|
| 45 |
print(f"⚠️ Failed to load metadata from {metadata_file}: {e}")
|
| 46 |
print("⏳ Falling back to hardcoded metadata...")
|
| 47 |
-
metadata = {}
|
| 48 |
|
| 49 |
-
#
|
| 50 |
if not metadata:
|
| 51 |
metadata = {
|
| 52 |
"model_class": "NunchakuFluxTransformer2dModel",
|
|
@@ -71,11 +71,6 @@ if not metadata:
|
|
| 71 |
"vec_in_dim": 768
|
| 72 |
}
|
| 73 |
}),
|
| 74 |
-
"quantization_config": json.dumps({
|
| 75 |
-
"method": "svdquant",
|
| 76 |
-
"weight": {"dtype": "int4", "scale_dtype": None, "group_size": 64},
|
| 77 |
-
"activation": {"dtype": "int4", "scale_dtype": None, "group_size": 64}
|
| 78 |
-
}),
|
| 79 |
"config": json.dumps({
|
| 80 |
"_class_name": "FluxTransformer2DModel",
|
| 81 |
"_diffusers_version": "0.34.0.dev0",
|
|
@@ -91,10 +86,23 @@ if not metadata:
|
|
| 91 |
"out_channels": None,
|
| 92 |
"patch_size": 1,
|
| 93 |
"pooled_projection_dim": 768
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 94 |
})
|
| 95 |
}
|
| 96 |
|
| 97 |
-
# Save the combined
|
| 98 |
safetensors.torch.save_file(combined_state_dict, output_file, metadata=metadata)
|
| 99 |
|
| 100 |
print(f"\n✅ Combined model saved to: {output_file}")
|
|
|
|
| 37 |
try:
|
| 38 |
with open(metadata_file, "r", encoding="utf-8") as f:
|
| 39 |
metadata = json.load(f)
|
| 40 |
+
# Convert nested objects to JSON strings
|
| 41 |
for k, v in metadata.items():
|
| 42 |
if isinstance(v, dict):
|
| 43 |
metadata[k] = json.dumps(v)
|
| 44 |
except Exception as e:
|
| 45 |
print(f"⚠️ Failed to load metadata from {metadata_file}: {e}")
|
| 46 |
print("⏳ Falling back to hardcoded metadata...")
|
| 47 |
+
metadata = {}
|
| 48 |
|
| 49 |
+
# Hardcoded FP4 metadata fallback
|
| 50 |
if not metadata:
|
| 51 |
metadata = {
|
| 52 |
"model_class": "NunchakuFluxTransformer2dModel",
|
|
|
|
| 71 |
"vec_in_dim": 768
|
| 72 |
}
|
| 73 |
}),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 74 |
"config": json.dumps({
|
| 75 |
"_class_name": "FluxTransformer2DModel",
|
| 76 |
"_diffusers_version": "0.34.0.dev0",
|
|
|
|
| 86 |
"out_channels": None,
|
| 87 |
"patch_size": 1,
|
| 88 |
"pooled_projection_dim": 768
|
| 89 |
+
}),
|
| 90 |
+
"quantization_config": json.dumps({
|
| 91 |
+
"method": "svdquant",
|
| 92 |
+
"weight": {
|
| 93 |
+
"dtype": "fp4_e2m1_all",
|
| 94 |
+
"scale_dtype": [None, "fp8_e4m3_nan"],
|
| 95 |
+
"group_size": 16
|
| 96 |
+
},
|
| 97 |
+
"activation": {
|
| 98 |
+
"dtype": "fp4_e2m1_all",
|
| 99 |
+
"scale_dtype": "fp8_e4m3_nan",
|
| 100 |
+
"group_size": 16
|
| 101 |
+
}
|
| 102 |
})
|
| 103 |
}
|
| 104 |
|
| 105 |
+
# Save the combined file
|
| 106 |
safetensors.torch.save_file(combined_state_dict, output_file, metadata=metadata)
|
| 107 |
|
| 108 |
print(f"\n✅ Combined model saved to: {output_file}")
|
quantized/metadata.json
CHANGED
|
@@ -21,11 +21,6 @@
|
|
| 21 |
"vec_in_dim": 768
|
| 22 |
}
|
| 23 |
},
|
| 24 |
-
"quantization_config": {
|
| 25 |
-
"method": "svdquant",
|
| 26 |
-
"weight": {"dtype": "int4", "scale_dtype": null, "group_size": 64},
|
| 27 |
-
"activation": {"dtype": "int4", "scale_dtype": null, "group_size": 64}
|
| 28 |
-
},
|
| 29 |
"config": {
|
| 30 |
"_class_name": "FluxTransformer2DModel",
|
| 31 |
"_diffusers_version": "0.34.0.dev0",
|
|
@@ -41,5 +36,18 @@
|
|
| 41 |
"out_channels": null,
|
| 42 |
"patch_size": 1,
|
| 43 |
"pooled_projection_dim": 768
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 44 |
}
|
| 45 |
-
}
|
|
|
|
| 21 |
"vec_in_dim": 768
|
| 22 |
}
|
| 23 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 24 |
"config": {
|
| 25 |
"_class_name": "FluxTransformer2DModel",
|
| 26 |
"_diffusers_version": "0.34.0.dev0",
|
|
|
|
| 36 |
"out_channels": null,
|
| 37 |
"patch_size": 1,
|
| 38 |
"pooled_projection_dim": 768
|
| 39 |
+
},
|
| 40 |
+
"quantization_config": {
|
| 41 |
+
"method": "svdquant",
|
| 42 |
+
"weight": {
|
| 43 |
+
"dtype": "fp4_e2m1_all",
|
| 44 |
+
"scale_dtype": [null, "fp8_e4m3_nan"],
|
| 45 |
+
"group_size": 16
|
| 46 |
+
},
|
| 47 |
+
"activation": {
|
| 48 |
+
"dtype": "fp4_e2m1_all",
|
| 49 |
+
"scale_dtype": "fp8_e4m3_nan",
|
| 50 |
+
"group_size": 16
|
| 51 |
+
}
|
| 52 |
}
|
| 53 |
+
}
|