Uploaded sanitized BC250/ROCm Repository.

This commit is contained in:
Fabian
2026-08-20 00:45:43 +02:00
parent 7d2184f1e8
commit d7d22e93b3
678 changed files with 65963 additions and 1 deletions
+99
View File
@@ -0,0 +1,99 @@
#!/usr/bin/env python3
"""
BC-250: Quick test - load GGUF into model via ComfyUI's actual pipeline.
Run from ComfyUI directory with venv active.
"""
import os, sys, time
os.environ["HSA_OVERRIDE_GFX_VERSION"] = "10.1.0"
os.environ["HSA_ENABLE_SDMA"] = "0"
os.environ["HIP_VISIBLE_DEVICES"] = "0"
os.environ["BC250_SOFTMAX_THRESHOLD"] = "512"
sys.path.insert(0, "/home/fabian/ComfyUI")
print("[T] Importing patch...", flush=True)
import bc250_softmax_patch
print("[T] Importing comfy modules...", flush=True)
t0 = time.time()
import torch
import comfy.sd
import comfy.model_management
import comfy.utils
print(f"[T] Imports done in {time.time()-t0:.1f}s", flush=True)
# Load the GGUF model using ComfyUI's own loading
UNET_PATH = "/home/fabian/ComfyUI/models/unet/z_image_turbo-Q5_K_S.gguf"
print(f"\n[T] Loading GGUF unet...", flush=True)
t1 = time.time()
try:
# ComfyUI-GGUF has a hyphen, need to import differently
import importlib
gguf_nodes_path = "/home/fabian/ComfyUI/custom_nodes/ComfyUI-GGUF"
if gguf_nodes_path not in sys.path:
sys.path.insert(0, gguf_nodes_path)
# Re-check if GGUF patch got applied after import
import nodes as gguf_nodes_mod
import ops as gguf_ops_mod
import dequant as gguf_dequant_mod
# Register the dequant module so our patch can find it
sys.modules['custom_nodes.ComfyUI_GGUF.dequant'] = gguf_dequant_mod
sys.modules['custom_nodes.ComfyUI_GGUF.ops'] = gguf_ops_mod
bc250_softmax_patch._try_patch_gguf()
# Now load the model manually
from loader import gguf_sd_loader
from ops import GGMLOps, GGMLTensor
print(f"[T] Loading GGUF state dict...", flush=True)
t2 = time.time()
sd, extra = gguf_sd_loader(UNET_PATH)
print(f"[T] State dict loaded in {time.time()-t2:.1f}s ({len(sd)} keys, arch={extra.get('arch_str')})", flush=True)
# Now detect model config
import comfy.model_detection
print(f"[T] Detecting model config...", flush=True)
t3 = time.time()
# model_config_from_unet needs the state dict
parameters = comfy.utils.calculate_parameters(sd)
print(f"[T] Parameters: {parameters/1e9:.2f}B", flush=True)
unet_dtype = torch.float16
load_device = comfy.model_management.get_torch_device()
print(f"[T] Load device: {load_device}", flush=True)
model_config = comfy.model_detection.model_config_from_unet(sd, "")
print(f"[T] Model config: {type(model_config).__name__}", flush=True)
if model_config is None:
print(f"[T] ERROR: Could not detect model config!", flush=True)
else:
model_config.custom_operations = GGMLOps
print(f"[T] Creating model...", flush=True)
t4 = time.time()
model = model_config.get_model(sd, "", device=comfy.model_management.unet_offload_device())
print(f"[T] Model created in {time.time()-t4:.1f}s", flush=True)
print(f"[T] Loading state dict into model...", flush=True)
t5 = time.time()
model.load_model_weights(sd, "")
print(f"[T] Weights loaded in {time.time()-t5:.1f}s", flush=True)
print(f"\n[T] === UNET LOADED SUCCESSFULLY ===", flush=True)
except Exception as e:
print(f"[T] ERROR: {type(e).__name__}: {e}", flush=True)
import traceback
traceback.print_exc()
print(f"[T] Total: {time.time()-t0:.1f}s", flush=True)
os._exit(0)