Changed CreateHookModelAsLoraTest to be the new CreateHookModelAsLora, rename old ones as 'direct' and will be removed prior to merge

This commit is contained in:
Jedrzej Kosinski 2024-10-25 19:58:38 -05:00
parent daeb2624a9
commit 2047bf211f
2 changed files with 32 additions and 9 deletions

View File

@ -1001,7 +1001,6 @@ class ModelPatcher:
current_patches: list[tuple] = current_hook_patches.get(key, []) current_patches: list[tuple] = current_hook_patches.get(key, [])
if is_diff: if is_diff:
# take difference between desired weight and existing weight to get diff # take difference between desired weight and existing weight to get diff
# TODO: try to implement diff via strength_path/strength_model diff
model_dtype = comfy.utils.get_attr(self.model, key).dtype model_dtype = comfy.utils.get_attr(self.model, key).dtype
if model_dtype in [torch.float8_e5m2, torch.float8_e4m3fn]: if model_dtype in [torch.float8_e5m2, torch.float8_e4m3fn]:
diff_weight = (patches[k].to(torch.float32)-comfy.utils.get_attr(self.model, key).to(torch.float32)).to(model_dtype) diff_weight = (patches[k].to(torch.float32)-comfy.utils.get_attr(self.model, key).to(torch.float32)).to(model_dtype)

View File

@ -340,8 +340,8 @@ class CreateHookLoraModelOnly(CreateHookLora):
def create_hook_model_only(self, lora_name: str, strength_model: float, prev_hooks: comfy.hooks.HookGroup=None): def create_hook_model_only(self, lora_name: str, strength_model: float, prev_hooks: comfy.hooks.HookGroup=None):
return self.create_hook(lora_name=lora_name, strength_model=strength_model, strength_clip=0, prev_hooks=prev_hooks) return self.create_hook(lora_name=lora_name, strength_model=strength_model, strength_clip=0, prev_hooks=prev_hooks)
class CreateHookModelAsLora: class CreateHookModelAsLoraDirect:
NodeId = 'CreateHookModelAsLora' NodeId = 'CreateHookModelAsLoraDirect'
NodeName = 'Create Hook Model as LoRA Direct' NodeName = 'Create Hook Model as LoRA Direct'
@classmethod @classmethod
def INPUT_TYPES(s): def INPUT_TYPES(s):
@ -379,8 +379,8 @@ class CreateHookModelAsLora:
strength_model=strength_model, strength_clip=strength_clip) strength_model=strength_model, strength_clip=strength_clip)
return (prev_hooks.clone_and_combine(hooks),) return (prev_hooks.clone_and_combine(hooks),)
class CreateHookModelAsLoraModelOnly: class CreateHookModelAsLoraDirectModelOnly:
NodeId = 'CreateHookModelAsLoraModelOnly' NodeId = 'CreateHookModelAsLoraDirectModelOnly'
NodeName = 'Create Hook Model as LoRA Direct (MO)' NodeName = 'Create Hook Model as LoRA Direct (MO)'
@classmethod @classmethod
def INPUT_TYPES(s): def INPUT_TYPES(s):
@ -401,11 +401,11 @@ class CreateHookModelAsLoraModelOnly:
def create_hook_model_only(self, model: 'ModelPatcher', ckpt_name: str, strength_model: float, def create_hook_model_only(self, model: 'ModelPatcher', ckpt_name: str, strength_model: float,
prev_hooks: comfy.hooks.HookGroup=None): prev_hooks: comfy.hooks.HookGroup=None):
return CreateHookModelAsLora.create_hook(self, model=model, clip=None, ckpt_name=ckpt_name, return CreateHookModelAsLoraDirect.create_hook(self, model=model, clip=None, ckpt_name=ckpt_name,
strength_model=strength_model, strength_clip=0, prev_hooks=prev_hooks) strength_model=strength_model, strength_clip=0, prev_hooks=prev_hooks)
class CreateHookModelAsLoraTest: class CreateHookModelAsLora:
NodeId = 'CreateHookModelAsLoraTest' NodeId = 'CreateHookModelAsLora'
NodeName = 'Create Hook Model as LoRA' NodeName = 'Create Hook Model as LoRA'
def __init__(self): def __init__(self):
@ -457,6 +457,29 @@ class CreateHookModelAsLoraTest:
hooks = comfy.hooks.create_hook_model_as_lora(weights_model=weights_model, weights_clip=weights_clip, hooks = comfy.hooks.create_hook_model_as_lora(weights_model=weights_model, weights_clip=weights_clip,
strength_model=strength_model, strength_clip=strength_clip) strength_model=strength_model, strength_clip=strength_clip)
return (prev_hooks.clone_and_combine(hooks),) return (prev_hooks.clone_and_combine(hooks),)
class CreateHookModelAsLoraModelOnly(CreateHookModelAsLora):
NodeId = 'CreateHookModelAsLoraModelOnly'
NodeName = 'Create Hook Model as LoRA (MO)'
@classmethod
def INPUT_TYPES(s):
return {
"required": {
"ckpt_name": (folder_paths.get_filename_list("checkpoints"), ),
"strength_model": ("FLOAT", {"default": 1.0, "min": -20.0, "max": 20.0, "step": 0.01}),
},
"optional": {
"prev_hooks": ("HOOKS",)
}
}
RETURN_TYPES = ("HOOKS",)
CATEGORY = "advanced/hooks/create"
FUNCTION = "create_hook_model_only"
def create_hook_model_only(self, ckpt_name: str, strength_model: float,
prev_hooks: comfy.hooks.HookGroup=None):
return self.create_hook(ckpt_name=ckpt_name, strength_model=strength_model, strength_clip=0.0, prev_hooks=prev_hooks)
#------------------------------------------ #------------------------------------------
########################################### ###########################################
@ -809,8 +832,9 @@ node_list = [
CreateHookLora, CreateHookLora,
CreateHookLoraModelOnly, CreateHookLoraModelOnly,
CreateHookModelAsLora, CreateHookModelAsLora,
CreateHookModelAsLoraTest,
CreateHookModelAsLoraModelOnly, CreateHookModelAsLoraModelOnly,
CreateHookModelAsLoraDirect, # TODO: remove before merge
CreateHookModelAsLoraDirectModelOnly, # TODO: remove before merge
# Register # Register
RegisterHookLora, RegisterHookLora,
RegisterHookLoraModelOnly, RegisterHookLoraModelOnly,