153 lines
6.3 KiB
Python
153 lines
6.3 KiB
Python
from typing_extensions import override
|
|
from comfy_api.latest import ComfyExtension, io
|
|
|
|
from .nodes.lora_merger import LoRAMultiMerge, LoRAMultiMergeDARE, LoRAMultiMergeDAREEnhanced
|
|
from .nodes.metakeys import (
|
|
ModelMetaKeys, TextEncoderMetaKeys, LoRAMetaKeys,
|
|
CheckpointMetaKeys, EmbeddingMetaKeys
|
|
)
|
|
from .nodes.renamekeys import (
|
|
ModelRenameKeys, TextEncoderRenameKeys, LoRARenameKeys,
|
|
CheckpointRenameKeys, EmbeddingRenameKeys
|
|
)
|
|
from .nodes.prunekeys import (
|
|
ModelPruneKeys, TextEncoderPruneKeys, LoRAPruneKeys,
|
|
CheckpointPruneKeys, EmbeddingPruneKeys
|
|
)
|
|
from .nodes.merger import (
|
|
ModelTwoMerger, TextEncoderTwoMerger, LoRATwoMerger,
|
|
CheckpointTwoMerger, EmbeddingTwoMerger,
|
|
ModelThreeMerger, TextEncoderThreeMerger, LoRAThreeMerger,
|
|
CheckpointThreeMerger, EmbeddingThreeMerger
|
|
)
|
|
from .nodes.consensus_merger import CWB_MERGER_NODES
|
|
from .nodes.cwb_model_graft import CWB_GRAFT_NODES
|
|
from .nodes.cwb_delta_lora_merger import DELTA_CWB_LORA_NODES
|
|
from .nodes.lodestone_merger import LODESTONE_MERGER_NODES
|
|
from .nodes.model_analysis import MODEL_ANALYSIS_NODES
|
|
from .nodes.lora_extract_svd import (
|
|
LoRAExtractFixed, LoRAExtractRatio, LoRAExtractQuantile,
|
|
LoRAExtractKnee, LoRAExtractFrobenius
|
|
)
|
|
from .nodes.dora_extract_wd import (
|
|
DoRAExtractFixed, DoRAExtractRatio, DoRAExtractQuantile,
|
|
DoRAExtractKnee, DoRAExtractFrobenius
|
|
)
|
|
from .nodes.dora_learned_wd import (
|
|
DoRALearnedExtractFixed, DoRALearnedExtractRatio, DoRALearnedExtractQuantile,
|
|
DoRALearnedExtractKnee, DoRALearnedExtractFrobenius
|
|
)
|
|
from .nodes.text_encoder_extract import (
|
|
TextEncoderLoRAExtractFixed, TextEncoderLoRAExtractRatio,
|
|
TextEncoderLoRAExtractQuantile, TextEncoderLoRAExtractKnee,
|
|
TextEncoderLoRAExtractFrobenius, TextEncoderDoRAExtractFixed,
|
|
TextEncoderDoRAExtractRatio, TextEncoderDoRAExtractQuantile,
|
|
TextEncoderDoRAExtractKnee, TextEncoderDoRAExtractFrobenius,
|
|
)
|
|
from .nodes.lora_resize import (
|
|
LoRANormalizeAlpha,
|
|
LoRAModifyAlpha,
|
|
LoRADenormalizeAlpha,
|
|
LoRAResizeFixed, LoRAResizeRatio,
|
|
LoRAResizeFrobenius, LoRAResizeCumulative,
|
|
LoRAMergeToModel
|
|
)
|
|
try:
|
|
from .nodes.downloader_nodes import (
|
|
CheckpointInfoMetaDownloader, DiffusionModelInfoMetaDownloader, LoRAInfoMetaDownloader, EmbeddingInfoMetaDownloader,
|
|
VAEInfoMetaDownloader, ControlNetInfoMetaDownloader, ManualPathInfoMetaDownloader
|
|
)
|
|
DOWNLOADER_NODES: list[type[io.ComfyNode]] = [
|
|
CheckpointInfoMetaDownloader, DiffusionModelInfoMetaDownloader, LoRAInfoMetaDownloader, EmbeddingInfoMetaDownloader,
|
|
VAEInfoMetaDownloader, ControlNetInfoMetaDownloader, ManualPathInfoMetaDownloader,
|
|
]
|
|
except ImportError:
|
|
DOWNLOADER_NODES = []
|
|
|
|
from .nodes.model_info_nodes import (
|
|
CheckpointInfoLoader, LoRAInfoLoader, EmbeddingInfoLoader,
|
|
VAEInfoLoader, ControlNetInfoLoader, DiffusionModelInfoLoader
|
|
)
|
|
|
|
|
|
from .nodes.lora_rename import AnimaLoraRename
|
|
from .nodes.minimax_h3_lora_convert import MiniMaxH3DiffusersLoRAConvert
|
|
from .nodes.minimax_h3_fold import MiniMaxH3FoldAdaLN, MiniMaxH3UnfoldAdaLN
|
|
from .nodes.dtype_conversion import DiffusionModelDtypeConversion
|
|
from .nodes.layer_parameters import LayerParameterConfiguration
|
|
from .nodes.lora_model_analysis import LoRAOnModelAnalysis
|
|
|
|
class ModelUtilsExtension(ComfyExtension):
|
|
@override
|
|
async def get_node_list(self) -> list[type[io.ComfyNode]]:
|
|
return [
|
|
LayerParameterConfiguration,
|
|
# MetaKeys
|
|
ModelMetaKeys, TextEncoderMetaKeys, LoRAMetaKeys,
|
|
CheckpointMetaKeys, EmbeddingMetaKeys,
|
|
# RenameKeys
|
|
ModelRenameKeys, TextEncoderRenameKeys, LoRARenameKeys,
|
|
CheckpointRenameKeys, EmbeddingRenameKeys,
|
|
# PruneKeys
|
|
ModelPruneKeys, TextEncoderPruneKeys, LoRAPruneKeys,
|
|
CheckpointPruneKeys, EmbeddingPruneKeys,
|
|
# Two-Model Mergers
|
|
ModelTwoMerger, TextEncoderTwoMerger, LoRATwoMerger,
|
|
CheckpointTwoMerger, EmbeddingTwoMerger,
|
|
# Three-Model Mergers
|
|
ModelThreeMerger, TextEncoderThreeMerger, LoRAThreeMerger,
|
|
CheckpointThreeMerger, EmbeddingThreeMerger,
|
|
# Dedicated CWB Mergers
|
|
*CWB_MERGER_NODES,
|
|
*CWB_GRAFT_NODES,
|
|
# Dedicated Delta CWB LoRA Mergers
|
|
*DELTA_CWB_LORA_NODES,
|
|
# Dedicated Lodestone LoRA Mergers
|
|
*LODESTONE_MERGER_NODES,
|
|
# Two-Model Analysis
|
|
*MODEL_ANALYSIS_NODES,
|
|
LoRAOnModelAnalysis,
|
|
# LoRA Extraction
|
|
LoRAExtractFixed, LoRAExtractRatio, LoRAExtractQuantile,
|
|
LoRAExtractKnee, LoRAExtractFrobenius,
|
|
# DoRA Extraction
|
|
DoRAExtractFixed, DoRAExtractRatio, DoRAExtractQuantile,
|
|
DoRAExtractKnee, DoRAExtractFrobenius,
|
|
# Learned DoRA Extraction
|
|
DoRALearnedExtractFixed, DoRALearnedExtractRatio, DoRALearnedExtractQuantile,
|
|
DoRALearnedExtractKnee, DoRALearnedExtractFrobenius,
|
|
# Text Encoder LoRA/DoRA Extraction
|
|
TextEncoderLoRAExtractFixed, TextEncoderLoRAExtractRatio,
|
|
TextEncoderLoRAExtractQuantile, TextEncoderLoRAExtractKnee,
|
|
TextEncoderLoRAExtractFrobenius, TextEncoderDoRAExtractFixed,
|
|
TextEncoderDoRAExtractRatio, TextEncoderDoRAExtractQuantile,
|
|
TextEncoderDoRAExtractKnee, TextEncoderDoRAExtractFrobenius,
|
|
# LoRA Resize
|
|
LoRANormalizeAlpha,
|
|
LoRAModifyAlpha,
|
|
LoRADenormalizeAlpha,
|
|
LoRAResizeFixed, LoRAResizeRatio,
|
|
LoRAResizeFrobenius, LoRAResizeCumulative,
|
|
# LoRA Multi-Merge
|
|
LoRAMultiMerge, LoRAMultiMergeDARE, LoRAMultiMergeDAREEnhanced,
|
|
# LoRA Merge To Model
|
|
LoRAMergeToModel,
|
|
# LoRA Utilities
|
|
AnimaLoraRename,
|
|
MiniMaxH3DiffusersLoRAConvert,
|
|
# Dtype Conversion & Folding
|
|
DiffusionModelDtypeConversion,
|
|
MiniMaxH3FoldAdaLN,
|
|
MiniMaxH3UnfoldAdaLN,
|
|
# Downloaders (available in manual git/source installations)
|
|
*DOWNLOADER_NODES,
|
|
# Info Loaders
|
|
CheckpointInfoLoader, LoRAInfoLoader, EmbeddingInfoLoader,
|
|
VAEInfoLoader, ControlNetInfoLoader, DiffusionModelInfoLoader,
|
|
]
|
|
|
|
|
|
async def comfy_entrypoint() -> ModelUtilsExtension:
|
|
return ModelUtilsExtension()
|
|
|