Files
Sinphaltimus-comfyui_fedcom…/Workflow/FEDCOMS-ModelDataInfo_Example_01.json
T

1 line
15 KiB
JSON

{"id":"d7c4707c-7a95-49c0-aeba-5d63b2566655","revision":0,"last_node_id":33,"last_link_id":30,"nodes":[{"id":25,"type":"ModelDataExtractor","pos":[-1195.51171875,389.5708923339844],"size":[365.4000244140625,58],"flags":{},"order":0,"mode":0,"inputs":[{"localized_name":"model_path","name":"model_path","type":"STRING","widget":{"name":"model_path"},"link":null}],"outputs":[{"localized_name":"STRING","name":"STRING","type":"STRING","links":[]}],"properties":{"Node name for S&R":"ModelDataExtractor"},"widgets_values":["D:\\ai\\ComfyUI_windows_portable\\ComfyUI\\models\\checkpoints\\SD15\\sd_v1_5_fp16.ckpt"]},{"id":7,"type":"LF_DisplayString","pos":[-738.5134887695312,180.94131469726562],"size":[662.815185546875,1074.5087890625],"flags":{},"order":6,"mode":0,"inputs":[{"localized_name":"string","name":"string","type":"STRING","link":30},{"localized_name":"ui_widget","name":"ui_widget","shape":7,"type":"LF_CODE","widget":{"name":"ui_widget"},"link":null}],"outputs":[{"localized_name":"string","name":"string","type":"STRING","links":null}],"title":"Extracted Model Info (Display string).","properties":{"cnr_id":"lf-nodes","ver":"561a9953186548321e6d13ed23fd642d4c734f01","Node name for S&R":"LF_DisplayString"},"widgets_values":["📌 Starting Metadata Extraction: 2025-05-10 10:00:23\n🔎 Checking model path: D:\\ai\\ComfyUI_windows_portable\\ComfyUI\\models\\inswapper_128.onnx\n📂 Metadata extraction method: Direct Binary Parsing\n✅ Extraction Complete: 2025-05-10 10:00:31\n\n{\n \"warning\": \"No structured metadata found.\"\n}\n\n🔍 Extracted Raw Text:\npytorch\n1.12.1:\ntarget\nonnx::Pad_122\ninput\nPad_39\"\nPad*\nmode\"\nreflect\ninput\nonnx::Conv_833\nonnx::Conv_834\ninput.7\nConv_40\"\nConv*\ndilations@\ngroup\nkernel_shape@\npads@\nstrides@\ninput.7\nonnx::Conv_126\nLeakyRelu_41\"\nLeakyRelu*\nalpha\nonnx::Conv_126\nonnx::Conv_836\nonnx::Conv_837\ninput.15\nConv_42\"\nConv*\ndilations@\ngroup\nkernel_shape@\npads@\nstrides@\ninput.15\nonnx::Conv_129\nLeakyRelu_43\"\nLeakyRelu*\nalpha\nonnx::Conv_129\nonnx::Conv_839\nonnx::Conv_840\ninput.23\nConv_44\"\nConv*\ndilations@\ngroup\nkernel_shape@\npads@\nstrides@\ninput.23\nonnx::Conv_132\nLeakyRelu_45\"\nLeakyRelu*\nalpha\nonnx::Conv_132\nonnx::Conv_842\nonnx::Conv_843\ninput.31\nConv_46\"\nConv*\ndilations@\ngroup\nkernel_shape@\npads@\nstrides@\ninput.31\nonnx::Pad_135\nLeakyRelu_47\"\nLeakyRelu*\nalpha\nonnx::Pad_135\nonnx::Pad_157\ninput.35\nPad_61\"\nPad*\nmode\"\nreflect\ninput.35\nstyles.0.conv1.1.weight\nstyles.0.conv1.1.bias\nonnx::ReduceMean_159\nConv_62\"\nConv*\ndilations@\ngroup\nkernel_shape@\npads@\nstrides@\nonnx::ReduceMean_159\nonnx::Sub_160\nReduceMean_63\"\nReduceMean*\naxes@\nkeepdims\nonnx::ReduceMean_159\nonnx::Sub_160\nonnx::Mul_161\nSub_64\"\nonnx::Mul_161\nonnx::Mul_161\nonnx::ReduceMean_162\nMul_65\"\nonnx::ReduceMean_162\nonnx::Add_163\nReduceMean_66\"\nReduceMean*\naxes@\nkeepdims\nonnx::Add_163\nonnx::Add_164\nonnx::Sqrt_165\nAdd_68\"\nonnx::Sqrt_165\nonnx::Div_166\nSqrt_69\"\nSqrt\nonnx::Div_167\nonnx::Div_166\nonnx::Mul_168\nDiv_71\"\nonnx::Mul_161\nonnx::Mul_168\nonnx::Mul_169\nMul_72\"\nsource\nstyles.0.style1.linear.weight\nstyles.0.style1.linear.bias\nonnx::Unsqueeze_170\nGemm_73\"\nGemm*\nalpha\nbeta\ntransB\nonnx::Unsqueeze_170\nonnx::Unsqueeze_171\nUnsqueeze_74\"\nUnsqueeze*\naxes@\nonnx::Unsqueeze_171\nonnx::Shape_172\nUnsqueeze_75\"\nUnsqueeze*\naxes@\nonnx::Shape_172\nonnx::Slice_176\nonnx::Slice_182\nonnx::Gather_174\nonnx::Mul_183\nSlice_86\"\nSlice\nonnx::Shape_172\nonnx::Slice_182\nonnx::Slice_185\nonnx::Gather_174\nonnx::Add_186\nSlice_89\"\nSlice\nonnx::Mul_183\nonnx::Mul_169\nonnx::Add_187\nMul_90\"\nonnx::Add_187\nonnx::Add_186\ninput.39\nAdd_91\"\ninput.39\nonnx::Pad_189\nRelu_92\"\nRelu\nonnx::Pad_189\nonnx::P"]},{"id":27,"type":"Note","pos":[-1344.232177734375,493.7350158691406],"size":[588.1671752929688,770.885986328125],"flags":{},"order":1,"mode":0,"inputs":[],"outputs":[],"title":"Read Me","properties":{},"widgets_values":["Workflow Guide: Extracting Model Metadata\n\nThis workflow begins with running Model_Lister_with_paths.ps1, which lists all available model files along with their paths. Use this output to copy-paste the file paths into each node above for metadata extraction.\n\nYou can preload requirements if you like.\n.\\ComfyUI_windows_portable\\python_embeded\\python.exe -m pip install -r requirements.txt\n(For Windows ComfyUI Portable as an example)\n\nSimply copy from the mocel_list.txt file and paste it into one or all nodes above. Connect the String Outputs from anyone of the three nodes to the string input connector of the Display String Node.\n\nClick RUN and wait. As you progess to Enahnced and Advanced nodes, the data extraction times will increase. Also, for large models, expect log extraction times. Please be patient and let the workflow finish.\n\n1️⃣ Model Metadata Reader\nPurpose:\n\nExtract basic metadata from models in various formats, including Safetensors, Checkpoints (.ckpt, .pth, .pt, .bin).\n\nProvides a structured metadata report for supported model formats.\n\nDetects the model format automatically and applies the correct extraction method.\n\nHow It Works: ✔ Reads metadata from Safetensors models using safetensors.safe_open(). ✔ Extracts available keys from Torch-based models (ckpt, .bin, .pth). ✔ Returns structured metadata when available, otherwise reports unsupported formats. ✔ Logs errors in case extraction fails.\n\nUse this node for a quick overview of model metadata without deep metadata parsing.\n\n2️⃣ Enhanced Model Metadata Reader\nPurpose:\n\nExtract deep metadata from models, including structured attributes and raw text parsing.\n\nFocuses heavily on ONNX models, using direct binary parsing to retrieve metadata without relying on the ONNX Python package.\n\nHow It Works: ✔ Reads ONNX files as raw binary, searching for readable metadata like author, description, version, etc. ✔ Extracts ASCII-readable strings directly from the binary file if structured metadata isn't available. ✔ Provides warnings when metadata is missing but still displays raw extracted text. ✔ Enhanced logging for debugging failed extractions and unsupported formats.\n\nThis node is ideal for ONNX models, offering both metadata and raw text extraction for deeper insights.\n\n3️⃣ Advanced Model Data Extractor\nPurpose:\n\nExtract structured metadata and raw text together from various model formats.\n\nSupports Safetensors, Checkpoints (.ckpt, .pth, .bin, .gguf, .onnx).\n\nHow It Works: ✔ Extracts metadata for Safetensors using direct access to model properties. ✔ Retrieves Torch model metadata such as available keys. ✔ Attempts raw text extraction from the binary file using character encoding detection (chardet). ✔ Limits raw text output for readability while keeping detailed extraction logs.\n\nThis node provides both metadata and raw text from models, making it the most comprehensive extraction tool in the workflow.\n\n🚀 Final Notes\nRun Model_Lister_with_paths.ps1 first, then copy a model path into each node.\n\nUse ModelMetadataReader for quick metadata lookup.\n\nUse EnhancedModelMetadataReader for deep metadata parsing, especially for ONNX models.\n\nUse AdvancedModelDataExtractor for full metadata + raw text extraction."],"color":"#432","bgcolor":"#653"},{"id":24,"type":"ModelMetadataReader","pos":[-1188.88818359375,151.13705444335938],"size":[358.05047607421875,58],"flags":{},"order":2,"mode":0,"inputs":[{"localized_name":"model_path","name":"model_path","type":"STRING","widget":{"name":"model_path"},"link":null}],"outputs":[{"localized_name":"STRING","name":"STRING","type":"STRING","links":[]}],"properties":{"Node name for S&R":"ModelMetadataReader"},"widgets_values":["D:\\ai\\ComfyUI_windows_portable\\ComfyUI\\models\\inswapper_128.onnx"]},{"id":26,"type":"EnhancedModelMetadataReader","pos":[-1189.9920654296875,268.146240234375],"size":[352.6112365722656,58],"flags":{},"order":3,"mode":0,"inputs":[{"localized_name":"model_path","name":"model_path","type":"STRING","widget":{"name":"model_path"},"link":null}],"outputs":[{"localized_name":"STRING","name":"STRING","type":"STRING","links":[30]}],"properties":{"Node name for S&R":"EnhancedModelMetadataReader"},"widgets_values":["D:\\ai\\ComfyUI_windows_portable\\ComfyUI\\models\\inswapper_128.onnx"]},{"id":33,"type":"Note","pos":[-54.29273223876953,562.1318969726562],"size":[581.9251708984375,693.9595336914062],"flags":{},"order":4,"mode":0,"inputs":[],"outputs":[],"title":"Tests","properties":{},"widgets_values":["Tested on:\nOS Name\tMicrosoft Windows 11 Pro\nVersion\t10.0.26100 Build 26100\nProcessor\tAMD Ryzen 9 9900X 12-Core Processor, 4400 Mhz, 12 Core(s), 24 Logical Processor(s)\nBaseBoard Product\tPRIME B650M-A AX6\nInstalled Physical Memory (RAM)\t128 GB\nName\tNVIDIA GeForce RTX 4090\nHDDs:\nSystem Drive:Model\tPatriot M.2 P300 2048GB\nApps&Data Drives (x2):Model\tSamsung SSD 870 EVO 4TB\n\n\n528.58 MB \\ComfyUI\\models\\inswapper_128.onnx\nModel Metadat Reader\ngot prompt\nPrompt executed in 0.00 seconds\n📌 Starting Metadata Extraction: 2025-05-09 19:03:14\n🔎 Checking model path: \\ComfyUI\\models\\inswapper_128.onnx\n⚠ Unsupported model format detected.\n✅ Extraction Complete: 2025-05-09 19:03:14\n\n{\n\"error\": \"Unsupported model format\"\n}----------------------------------\nEnhanced Model Metadata Reader\ngot prompt\nPrompt executed in 8.67 seconds\nmarkdown\n📌 Starting Metadata Extraction: 2025-05-09 19:04:43\n🔎 Checking model path: \\ComfyUI\\models\\inswapper_128.onnx\n📂 Metadata extraction method: Direct Binary Parsing\n✅ Extraction Complete: 2025-05-09 19:04:52\n\n{\n\"warning\": \"No structured metadata found.\"\n}\n\n🔍 Extracted Raw Text:\npytorch\n1.12.1:\ntarget\nonnx::Pad_122\ninput\nPad_39\"\nPad*\nmode\"\nreflect\ninput\nonnx::Conv_833\nonnx::Conv_834\ninput.7\nConv_40\"\nConv*\ndilations@\ngroup\nkernel_shape@\npads@\nstrides@\ninput.7\nonnx::Conv_126\nLeakyRelu_41\"\nLeakyRelu*\nalpha\nonnx::Conv_126\nonnx::Conv_836\nonnx::Conv_837\ninput.15\nConv_42\"\nConv*\ndilations@\ngroup\nkernel_shape@\npads@\nstrides@\ninput.15\nonnx::Conv_129\nLeakyRelu_43\"\nLeakyRelu*\nalpha\nonnx::Conv_129\nonnx::Conv_839\nonnx::Conv_840\ninput.23\nConv_44\"\nConv*\ndilations@\ngroup\nkernel_shape@\npads@\nstrides@\ninput.23\nonnx::Conv_132\nLeakyRelu_45\"\nLeakyRelu*\nalpha\nonnx::Conv_132\nonnx::Conv_842\nonnx::Conv_843\ninput.31\nConv_46\"\nConv*\ndilations@\ngroup\nkernel_shape@\npads@\nstrides@\ninput.31\nonnx::Pad_135\nLeakyRelu_47\"\nLeakyRelu*\nalpha\nonnx::Pad_135\nonnx::Pad_157\ninput.35\nPad_61\"\nPad*\nmode\"\nreflect\ninput.35\nstyles.0.conv1.1.weight\nstyles.0.conv1.1.bias\nonnx::ReduceMean_159\nConv_62\"\nConv*\ndilations@\ngroup\nkernel_shape@\npads@\nstrides@\nonnx::ReduceMean_159\nonnx::Sub_160\nReduceMean_63\"\nReduceMean*\naxes@\nkeepdims\nonnx::ReduceMean_159\nonnx::Sub_160\nonnx::Mul_161\nSub_64\"\nonnx::Mul_161\nonnx::Mul_161\nonnx::ReduceMean_162\nMul_65\"\nonnx::ReduceMean_162\nonnx::Add_163\nReduceMean_66\"\nReduceMean*\naxes@\nkeepdims\nonnx::Add_163\nonnx::Add_164\nonnx::Sqrt_165\nAdd_68\"\nonnx::Sqrt_165\nonnx::Div_166\nSqrt_69\"\nSqrt\nonnx::Div_167\nonnx::Div_166\nonnx::Mul_168\nDiv_71\"\nonnx::Mul_161\nonnx::Mul_168\nonnx::Mul_169\nMul_72\"\nsource\nstyles.0.style1.linear.weight\nstyles.0.style1.linear.bias\nonnx::Unsqueeze_170\nGemm_73\"\nGemm*\nalpha\nbeta\ntransB\nonnx::Unsqueeze_170\nonnx::Unsqueeze_171\nUnsqueeze_74\"\nUnsqueeze*\naxes@\nonnx::Unsqueeze_171\nonnx::Shape_172\nUnsqueeze_75\"\nUnsqueeze*\naxes@\nonnx::Shape_172\nonnx::Slice_176\nonnx::Slice_182\nonnx::Gather_174\nonnx::Mul_183\nSlice_86\"\nSlice\nonnx::Shape_172\nonnx::Slice_182\nonnx::Slice_185\nonnx::Gather_174\nonnx::Add_186\nSlice_89\"\nSlice\nonnx::Mul_183\nonnx::Mul_169\nonnx::Add_187\nMul_90\"\nonnx::Add_187\nonnx::Add_186\ninput.39\nAdd_91\"\ninput.39\nonnx::Pad_189\nRelu_92\"\nRelu\nonnx::Pad_189\nonnx::P\n-----------------------------------------\nAdvanced Model Data Extractor\n1,594.64 MB \\ComfyUI\\models\\AnimateDiff\\mm-Stabilized_high.pth\ngot prompt\nPrompt executed in 978.35 seconds\n📌 Starting Data Extraction: 2025-05-09 19:06:34\n🔎 Checking model path:\\ComfyUI\\models\\inswapper_128.onnx\n📂 Metadata extraction method: Checkpoint/Torch\n📂 Attempting raw text extraction.\n✅ Extraction Complete: 2025-05-09 19:22:52\n\n{\n\"structured_metadata\": {\n\"error\": \"Torch model extraction failed: Weights only load failed. In PyTorch 2.6, we changed the default value of the\n`weights_only`\n***************************************************************************************************\n2,034.24 MB \\ComfyUI\\models\\checkpoints\\SD15\\sd_v1_5_fp16.ckpt\nModel Metadat Reader\ngot prompt\nPrompt executed in 4.23 seconds\n📌 Starting Metadata Extraction: 2025-05-09 19:30:51\n🔎 Checking model path: \\ComfyUI\\models\\checkpoints\\SD15\\sd_v1_5_fp16.ckpt\n📂 Metadata extraction method: Checkpoint/Torch\n✅ Extraction Complete: 2025-05-09 19:30:55\n\n{\n\"metadata_keys\": [\n\"state_dict\"\n]\n}\n----------------------------------------------\nEnhanced Model Metadata Reader\ngot prompt\nPrompt executed in 21.99 seconds\n📌 Starting Metadata Extraction: 2025-05-09 19:31:12\n🔎 Checking model path: \\ComfyUI\\models\\checkpoints\\SD15\\sd_v1_5_fp16.ckpt\n📂 Metadata extraction method: Direct Binary Parsing\n✅ Extraction Complete: 2025-05-09 19:31:34\n\n{\n\"error\": \"Failed to extract metadata: name 'key' is not defined\"\n}\n\n🔍 Extracted Raw Text:\n----------------------------------------------\nAdvanced Model Data Extractor\ngot prompt\nPrompt executed in 3447.42 seconds\n{\n\"structured_metadata\": {\n\"metadata_keys\": [\n\"state_dict\"\n]\n},\n\"raw_text\": \"Encoding not detected\"\n}\n"],"color":"#432","bgcolor":"#653"},{"id":30,"type":"Note","pos":[-58.45747756958008,178.5707244873047],"size":[602.0357055664062,332.4227600097656],"flags":{},"order":5,"mode":0,"inputs":[],"outputs":[],"title":"Attribution Statement","properties":{},"widgets_values":["This node pack, ComfyUI FedComs Node Pack, is free for all to use, modify, and distribute, provided that attribution to the original author is maintained.\n\n📌 Credits\nDeveloped by: Reverend Pope of the Poconos Doktor Sinphaltimus Exmortus of the First Ever Digital Church Of Mind Slack, Destroyer of Chairs, Splitter of Aircraft, Raiser of Packs, Pixel Pushing, Sound Dabbling, AI Fondling Enabler of AiRTwerx, Yeti Bellowing, Ambassador of Slack.\n\nLicense: MIT License Repository: (Add your GitHub URL here) Description: A collection of ComfyUI custom nodes designed for comprehensive model metadata extraction, including basic metadata, deep ONNX metadata parsing, and raw text analysis.\n\n📝 Usage & Attribution\nYou are free to use, modify, and share this node pack in any project. However, please include attribution in derivative works and distributions using the following format:\n\nComfyUI FedComs Node Pack by Reverend Pope of the Poconos Doktor Sinphaltimus Exmortus of the First Ever Digital Church Of Mind Slack, Destroyer of Chairs, Splitter of Aircraft, Raiser of Packs, Pixel Pushing, Sound Dabbling, Pencil Sketching, cermaics painting, AI Fondling Enabler of AiRTwerx, Yeti Bellowing, Ambassador of Slack - Licensed under MIT\n"],"color":"#432","bgcolor":"#653"}],"links":[[30,26,0,7,0,"STRING"]],"groups":[],"config":{},"extra":{"ds":{"scale":0.21135879384583353,"offset":[5738.083550714703,3309.3549194335938]},"frontendVersion":"1.17.11"},"version":0.4}