From d185a18d01a6bdccc58eac0fb8ca0508285bb621 Mon Sep 17 00:00:00 2001 From: claptrap0 <220574675+claptrap0@users.noreply.github.com> Date: Sun, 13 Jul 2025 12:05:38 +0200 Subject: [PATCH] Initial commit --- .gitattributes | 2 + .gitignore | 181 +++++++++++++++++++ LICENSE | 21 +++ LLM_Hub.py | 446 +++++++++++++++++++++++++++++++++++++++++++++++ README.md | 103 +++++++++++ __init__.py | 1 + img/usage.png | Bin 0 -> 130885 bytes requirements.txt | 5 + web/js/output.js | 26 +++ web/js/utils.js | 8 + 10 files changed, 793 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 LICENSE create mode 100644 LLM_Hub.py create mode 100644 README.md create mode 100644 __init__.py create mode 100644 img/usage.png create mode 100644 requirements.txt create mode 100644 web/js/output.js create mode 100644 web/js/utils.js diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..dfe0770 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +# Auto detect text files and perform LF normalization +* text=auto diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..dd15ec4 --- /dev/null +++ b/.gitignore @@ -0,0 +1,181 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ +cover/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +.pybuilder/ +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +# For a library or package, you might want to ignore these files since the code is +# intended to run in multiple environments; otherwise, check them in: +# .python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# UV +# Similar to Pipfile.lock, it is generally recommended to include uv.lock in version control. +# This is especially recommended for binary packages to ensure reproducibility, and is more +# commonly ignored for libraries. +#uv.lock + +# poetry +# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. +# This is especially recommended for binary packages to ensure reproducibility, and is more +# commonly ignored for libraries. +# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control +#poetry.lock + +# pdm +# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. +#pdm.lock +# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it +# in version control. +# https://pdm.fming.dev/latest/usage/project/#working-with-version-control +.pdm.toml +.pdm-python +.pdm-build/ + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +# pytype static type analyzer +.pytype/ + +# Cython debug symbols +cython_debug/ + +# PyCharm +# JetBrains specific template is maintained in a separate JetBrains.gitignore that can +# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore +# and can be added to the global gitignore or merged into this file. For a more nuclear +# option (not recommended) you can uncomment the following to ignore the entire idea folder. +#.idea/ + +# Ruff stuff: +.ruff_cache/ + +# PyPI configuration file +.pypirc + +# Cursor +# Cursor is an AI-powered code editor.`.cursorignore` specifies files/directories to +# exclude from AI features like autocomplete and code analysis. Recommended for sensitive data +# refer to https://docs.cursor.com/context/ignore-files +.cursorignore +.cursorindexingignore \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..a1bc6a2 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2025 claptrap0 + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/LLM_Hub.py b/LLM_Hub.py new file mode 100644 index 0000000..b553f91 --- /dev/null +++ b/LLM_Hub.py @@ -0,0 +1,446 @@ +import os +import torch +import random +import importlib +import folder_paths + +from transformers import AutoModelForCausalLM, AutoTokenizer, AutoConfig, BitsAndBytesConfig, StoppingCriteria, StoppingCriteriaList, set_seed + +GLOBAL_MODELS_DIR = os.path.join(folder_paths.models_dir, "text_encoders", "LLMs") + +WEB_DIRECTORY = "./web/js" + +try: + Llama = importlib.import_module("llama_cpp_cuda").Llama +except ImportError: + Llama = importlib.import_module("llama_cpp").Llama + + +try: + from transformers import pipeline, AutoModelForCausalLM, AutoTokenizer +except ImportError: + print("Transformers library not found. Please install it to use safetensors models: pip install transformers torch sentencepiece") + AutoModelForCausalLM = None + AutoTokenizer = None + pipeline = None + + +_loaded_model = None +_loaded_tokenizer = None +_current_model_id = None +_model_is_on_gpu = False + +def free_gpu_memory(): + global _loaded_model, _loaded_tokenizer, _current_model_id, _model_is_on_gpu + if _loaded_model is not None: + del _loaded_model + _loaded_model = None + if _loaded_tokenizer is not None: + del _loaded_tokenizer + _loaded_tokenizer = None + _current_model_id = None + _model_is_on_gpu = False + if torch.cuda.is_available(): + torch.cuda.empty_cache() + print("GPU memory freed.") + + +class AnyType(str): + + def __ne__(self, __value: object) -> bool: + return False + + +anytype = AnyType("*") + + +class LLM_Hub: + @classmethod + def INPUT_TYPES(cls): + model_options = [] + if os.path.isdir(GLOBAL_MODELS_DIR): + listed_items = set() + for root, dirs, files in os.walk(GLOBAL_MODELS_DIR): + + for file in files: + if file.endswith('.gguf'): + relative_path_to_file = os.path.relpath(os.path.join(root, file), GLOBAL_MODELS_DIR) + if os.path.dirname(relative_path_to_file) == ".": + display_name = os.path.splitext(relative_file_path)[0] + else: + clean_name = os.path.relpath(root, GLOBAL_MODELS_DIR) + if clean_name not in listed_items: + model_options.append(clean_name) + listed_items.add(clean_name) + + if root == GLOBAL_MODELS_DIR: + for d in dirs: + current_dir_path = os.path.join(root, d) + + if any(f.endswith(('.json', '.safetensors', '.bin')) for f in os.listdir(current_dir_path)): + clean_name = os.path.relpath(current_dir_path, GLOBAL_MODELS_DIR) + if clean_name not in listed_items: + model_options.append(clean_name) + listed_items.add(clean_name) + + if not model_options: + model_options = ["No models found in text_encoders/LLMs/"] + + return { + "required": { + "text": ("STRING", {"multiline": True, "dynamicPrompts": True, "default": ""}), + "seed": ("INT", {"default": 1234567890, "min": 0, "max": 0xffffffffffffffff}), + "model": (model_options, {"tooltip": "Select an LLM. Store your models in text_encoders/LLMs/model_name for clarity."}), + "max_tokens": ("INT", {"default": 512, "min": 1, "max": 8192, "tooltip": "The maximum number of tokens to generate. Higher values mean longer responses while also increasing generation time and VRAM usage."}), + "context_window": ("INT", {"default": 2048, "min": 256, "max": 8192, "step": 128, "tooltip": "The total context window size (input + generated response). Lower values reduce VRAM."}), + "apply_system_prompt": ("BOOLEAN", {"default": False, "tooltip": "When enabled your system prompt in 'system_prompt' will be used. When disabled there is a basic fallback system prompt."}), + "load_in_8bit": ("BOOLEAN", {"default": False, "label_on": "8bit", "label_off": "Full Precision", "tooltip": "When enabled to (8bit), HuggingFace models will load in 8-bit to reduce VRAM usage. GGUF models are not affected, as they have their own quantization."}), + "stay_on_gpu": ("BOOLEAN", {"default": False, "tooltip": "If enabled, the model will remain on the GPU until you restart ComfyUI or you disable this option. If disabled, the model will offload from the GPU after each run."}), + "system_prompt": ("STRING", {"multiline": True, "default": "You are a prompt engineer for a text-to-image AI system based on \"{prompt}\" (caption only, no instructions like \"create an image\")."}), + }, + "optional": { + "settings": ("SETTINGS_FOR_LLM", {"tooltip": "Control settings for the LLM."}), + } + } + + CATEGORY = "LLM_Hub" + FUNCTION = "main" + RETURN_TYPES = ("STRING", "STRING",) + RETURN_NAMES = ("generated", "original",) + + + def main(self, text, seed, model, max_tokens, context_window, apply_system_prompt, load_in_8bit, stay_on_gpu, system_prompt, settings=None): + model_full_path = os.path.join(GLOBAL_MODELS_DIR, model) + if os.path.exists(model_full_path + ".gguf"): + model_full_path += ".gguf" + elif os.path.exists(model_full_path + ".safetensors"): + model_full_path += ".safetensors" + + + generate_kwargs = { + 'max_tokens': max_tokens, + 'temperature': 0.8, + 'top_p': 0.8, + 'top_k': 10, + 'repeat_penalty': 1.3, + "stop": ["\n\n", "\n<|", "###", "<|im_end|>", "<|endoftext|>", "<|language_code|>en-US=eng", "Here is the caption:",] + } + + if settings: + for option in ['temperature', 'top_p', 'top_k', 'repeat_penalty']: + if option in settings: + generate_kwargs[option] = settings[option] + + + if apply_system_prompt: + messages_for_llm = [ + {"role": "system", "content": system_prompt}, + {"role": "user", "content": f"Description : {text}"}, + ] + else: + messages_for_llm = [ + {"role": "system", "content": f"You are a prompt engineer for a text-to-image AI system (caption only, no instructions like \"create an image\"). Do not include any meta-commentary or length indicators (e.g., 'approximately X words/characters'). Your output must be a single, detailed, yet concise caption, **aiming for approximately 400 to 500 characters in total**. Prioritize rich visual descriptions. Respond EXCLUSIVELY in English. Your task is to create detailed, visually descriptive captions based on user descriptions. Your output must be only the caption itself, no instructions or extra formatting. Give detailed visual descriptions of characters (ethnicity, skin tone, expression, hair and eye color etc.). Imagine using keywords for someone with aphantasia. Describe the image style, photographic or art techniques utilized. Fully describe all aspects of the cinematography, with abundant technical details and visual descriptions. Incorporate a specific visual style. Describe the lighting setup in detail (type, color, placement). Always frame the scene, including details about color grading, camera placement."}, + {"role": "user", "content": f"Description : {text}"}, + ] + + global _loaded_model, _loaded_tokenizer, _current_model_id, _model_is_on_gpu + actual_model_path = None + model_type = None + potential_path = os.path.join(GLOBAL_MODELS_DIR, model) + + + if os.path.isfile(potential_path + '.gguf'): + actual_model_path = potential_path + '.gguf' + model_type = 'gguf' + elif os.path.isdir(potential_path): + gguf_files_in_dir = [f for f in os.listdir(potential_path) if f.endswith('.gguf')] + if gguf_files_in_dir: + actual_model_path = os.path.join(potential_path, gguf_files_in_dir[0]) + model_type = 'gguf' + elif any(f.endswith(('.safetensors', '.bin', '.json')) for f in os.listdir(potential_path)): + actual_model_path = potential_path + model_type = 'hf_dir' + + if not actual_model_path or not model_type: + return (f"Error: {model} not found or unsupported format. Please check the model file name and directory structure under {GLOBAL_MODELS_DIR}.", text) + + + current_model_key = f"{actual_model_path}_offload:{stay_on_gpu}" + + should_reload = False + if _loaded_model is None or _current_model_id != current_model_key: + should_reload = True + if _loaded_model is not None: + print("Model or GPU setting changed, freeing existing model.") + free_gpu_memory() + elif _model_is_on_gpu and stay_on_gpu: + + pass + elif not _model_is_on_gpu and not stay_on_gpu: + + pass + + + if not _loaded_model or _current_model_id != current_model_key: + print(f"Loading {model}...") + + try: + if model_type == 'gguf': + if not Llama: + return ("Error: llama_cpp or llama_cpp_cuda not imported. Cannot load GGUF model.", text) + + n_gpu_layers_val = 0 + if torch.cuda.is_available(): + n_gpu_layers_val = -1 + else: + print("⚠️ Warning: No GPU available. GGUF model will run on CPU.") + + model_to_use = Llama( + model_path=actual_model_path, + n_gpu_layers=n_gpu_layers_val, + seed=int(seed % (2**32 - 1)), + verbose=False, + n_ctx=context_window, + ) + _loaded_model = model_to_use + _model_is_on_gpu = (n_gpu_layers_val != 0) + _current_model_id = current_model_key + + elif model_type == 'hf_dir': + if not (AutoModelForCausalLM and AutoTokenizer and pipeline): + return ("Error: Transformers library not found. Cannot load safetensors model. Please install it: pip install transformers torch sentencepiece", text) + + hf_model_dir = actual_model_path + tokenizer = AutoTokenizer.from_pretrained(hf_model_dir) + device_map_setting = "auto" if torch.cuda.is_available() else "cpu" + + if torch.cuda.is_available() and load_in_8bit: + quantization_status = "8bit" + print(f"Loading {model} on GPU with {quantization_status}") + quant_config = BitsAndBytesConfig(load_in_8bit=True) + model_hf = AutoModelForCausalLM.from_pretrained( + hf_model_dir, + torch_dtype="auto", + device_map=device_map_setting, + quantization_config=quant_config + ) + _model_is_on_gpu = True + elif torch.cuda.is_available() and not load_in_8bit: + model_hf = AutoModelForCausalLM.from_pretrained( + hf_model_dir, + torch_dtype="auto", + device_map=device_map_setting + ) + _model_is_on_gpu = True + actual_dtype_str = str(model_hf.dtype).replace('torch.', '') + print(f"Loading {model} on GPU in {actual_dtype_str} precision") + else: + print(f"Loading {model} on CPU (no GPU available)") + model_hf = AutoModelForCausalLM.from_pretrained(hf_model_dir, torch_dtype=torch.float32, device_map="cpu") + _model_is_on_gpu = False + + _loaded_model = model_hf + _loaded_tokenizer = tokenizer + _current_model_id = current_model_key + + device_str = "GPU" if _model_is_on_gpu else "CPU" + precision_display_part = "" + + if model_type == 'hf_dir': + if _model_is_on_gpu: + if load_in_8bit: + precision_display_part = "8bit" + else: + precision_display_part = str(model_hf.dtype).replace('torch.', '') + else: + precision_display_part = str(model_hf.dtype).replace('torch.', '') + + if precision_display_part: + print("\n---------------------------------") + print(f"Loaded successfully on {device_str} in {precision_display_part}") + print("\n---------------------------------") + else: + print("\n---------------------------------") + print(f"Loaded successfully on {device_str}") + print("\n---------------------------------") + else: + print("\n---------------------------------") + print(f"Loaded successfully on {device_str}") + print("\n---------------------------------") + + + except Exception as e: + free_gpu_memory() + return (f"Error loading {model} from {actual_model_path}: {e}", text) + + + llm_result_content = "" + try: + capped_seed = seed % (2**32 - 1) + set_seed(capped_seed) + + if model_type == 'gguf': + llm_result = _loaded_model.create_chat_completion(messages_for_llm, **generate_kwargs) + llm_result_content = llm_result['choices'][0]['message']['content'].strip() + + elif model_type == 'hf_dir': + + if _model_is_on_gpu: + generator = pipeline( + "text-generation", + model=_loaded_model, + tokenizer=_loaded_tokenizer, + ) + else: + generator = pipeline( + "text-generation", + model=_loaded_model, + tokenizer=_loaded_tokenizer, + ) + + + if hasattr(_loaded_tokenizer, 'apply_chat_template') and _loaded_tokenizer.chat_template: + chat_prompt = _loaded_tokenizer.apply_chat_template(messages_for_llm, tokenize=False, add_generation_prompt=True) + + else: + chat_prompt = "" + for message in messages_for_llm: + if message["role"] == "system": + chat_prompt += f"<|system|>{message['content']}\n" + elif message["role"] == "user": + chat_prompt += f"<|user|>{message['content']}\n" + elif message["role"] == "assistant": + chat_prompt += f"<|assistant|>{message['content']}\n" + chat_prompt += "<|assistant|>" + + + stop_list = generate_kwargs.get('stop', []) + if stop_list: + class StopGenerationCriteria(StoppingCriteria): + def __init__(self, stops=[], encounters=1): + super().__init__() + global _loaded_tokenizer + self.stops = [torch.tensor(_loaded_tokenizer.encode(stop_token, add_special_tokens=False), dtype=torch.long) for stop_token in stops] + self.encounters = encounters + + def __call__(self, input_ids: torch.LongTensor, scores: torch.FloatTensor): + for stop in self.stops: + if len(input_ids[0]) >= len(stop) and torch.all(stop.to(input_ids.device) == input_ids[0][-len(stop):]).item(): + self.encounters -= 1 + if self.encounters == 0: + return True + return False + + stop_criteria_list = StoppingCriteriaList([StopGenerationCriteria(stops=stop_list)]) + else: + stop_criteria_list = None + + + hf_generate_kwargs = { + 'max_new_tokens': generate_kwargs.get('max_tokens', 512), + 'temperature': generate_kwargs.get('temperature', 0.8), + 'top_p': generate_kwargs.get('top_p', 0.8), + 'top_k': generate_kwargs.get('top_k', 10), + 'repetition_penalty': generate_kwargs.get('repeat_penalty', 1.3), + 'do_sample': True if generate_kwargs.get('temperature', 1.0) > 0 else False, + 'stopping_criteria': stop_criteria_list, + 'pad_token_id': _loaded_tokenizer.eos_token_id, + 'eos_token_id': _loaded_tokenizer.eos_token_id, + + } + + result = generator(chat_prompt, **hf_generate_kwargs) + generated_text = result[0]['generated_text'] + + if generated_text.startswith(chat_prompt): + llm_result_content = generated_text[len(chat_prompt):].strip() + else: + llm_result_content = generated_text.strip() + + + except Exception as e: + free_gpu_memory() + return (f"Error during inference with '{model}': {e}", text) + + + if not stay_on_gpu and _model_is_on_gpu: + print(f"Offloading {model} from GPU after run as stay on GPU is disabled.") + free_gpu_memory() + elif stay_on_gpu and _model_is_on_gpu: + print(f"{model} remains on GPU.") + elif not _model_is_on_gpu: + print(f"{model} remains on CPU.") + + + return (llm_result_content, text) + +class Generated_Output: + @classmethod + def INPUT_TYPES(cls): + return { + "required": { + "text": (anytype, {}), + }, + "hidden": { + "unique_id": "UNIQUE_ID", "extra_pnginfo": "EXTRA_PNGINFO", + }, + } + + CATEGORY = "LLM_Hub" + FUNCTION = "main" + RETURN_TYPES = () + RETURN_NAMES = () + OUTPUT_NODE = True + + def main(self, text, unique_id=None, extra_pnginfo=None): + if unique_id is not None and extra_pnginfo is not None and len(extra_pnginfo) > 0: + workflow = None + if "workflow" in extra_pnginfo: + workflow = extra_pnginfo["workflow"] + node = None + if workflow and "nodes" in workflow: + node = next((x for x in workflow["nodes"] if str(x["id"]) == unique_id), None) + if node: + node["widgets_values"] = [str(text)] + return {"ui": {"text": (str(text),)}} + + +class LLM_Settings: + @classmethod + def INPUT_TYPES(cls): + return { + "required": { + "temperature": ("FLOAT", {"default": 0.8, "min": 0.1, "step": 0.01, "tooltip": "How creative or crazy the text is. High means wild text, low means boring text."}), + "top_p": ("FLOAT", {"default": 0.8, "min": 0.1, "step": 0.01, "tooltip": "Picks words that are good enough. High means more choices, low means very few choices."}), + "top_k": ("INT", {"default": 10, "min": 0, "tooltip": "Picks from the best X words. High X means many choices, low X means few choices. X = value"}), + "repetition_penalty": ("FLOAT", {"default": 1.3, "min": 0.1, "step": 0.01, "tooltip": "Stops the text from saying the same thing too many times. High means less repeating."}), + } + } + + CATEGORY = "LLM_Hub" + FUNCTION = "main" + RETURN_TYPES = ("SETTINGS_FOR_LLM",) + RETURN_NAMES = ("settings",) + + def main(self, temperature=0.8, top_p=0.8, top_k=10, repetition_penalty=1.3): + options_config = { + "temperature": temperature, + "top_p": top_p, + "top_k": top_k, + "repetition_penalty": repetition_penalty, + } + + return (options_config,) + + +NODE_CLASS_MAPPINGS = { + "LLM_Hub": LLM_Hub, + "LLM_Settings": LLM_Settings, + "Generated_Output": Generated_Output, +} + +NODE_DISPLAY_NAME_MAPPINGS = { + "LLM_Hub": "LLM Hub", + "LLM_Settings": "LLM Settings", + "Generated_Output": "Generated Output", +} \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..26c9e27 --- /dev/null +++ b/README.md @@ -0,0 +1,103 @@ +## 🧠 LLM Hub + +Utilize the power of an LLM into ComfyUI to transform your text-to-image and text-to-video ideas into highly detailed prompts for generation while giving you full control. + +## 🤖 Usage + +LLM Hub for ComfyUI + +## 📝 Requirements + +- Create a directory named **`LLMs`** inside **`ComfyUI/models/text_encoders/`** +- Create a another new directory for each LLM with the model name inside **`LLMs`**. +- Place your LLM models in their respective directory. +- Every .safetensors model needs the .json files and the model should be named **`model.safetensors`** + +How your directory structure should look like: +``` +ComfyUI/ +└── models/ + └── text_encoders/ + └── LLMs/ + └── GGUF_model/ + └── model.gguf + └── safetensors_model/ + └── model.safetensors + └── config.json + └── tokenizer.json + └── tokenizer_config.json + └── generation_config.json (Optional) + └── special_tokens_map.json (Optional) +``` + +GGUF models don't need to be named "model.gguf". + +## 🛠️ Installation + +- Run the following commands: + +For activating venv: +``` +cd path/to/your/ComfyUI +``` +Linux: +``` +source venv/bin/activate +``` + +Windows: +``` +.venv\Scripts\activate +``` + +Go to your custom nodes folder: +``` +cd custom_nodes +``` + +Afterwards clone the repo: +``` +git clone https://github.com/X/ComfyUI_LLM_Hub +``` + +Go inside the node folder: +``` +cd ComfyUI_LLM_Hub +``` + +If you are using a venv: +``` +pip install -r --verbose requirements.txt +``` +- You can delete **`"--verbose"`** if you don't want to see the process of the compiling. + +For the portable version of ComfyUI: +``` +C:/path/to/your/ComfyUI_portable/python_embedded/Scripts/pip.exe install -r requirements.txt +``` + +## ⚙️ LLM Settings + +It offers a range of configurable parameters allowing for precise control over the text generation process and model behavior. + +The values on this node are also the defaults that `LLM Hub` uses when `LLM Settings` isn't connected. + +Breif overview of the parameters: + +- **`temperature:`** Controls the randomness of the output. Lower values (**e.g., 0.2-0.5**): Make the output more focused, predictable, and deterministic. + Ideal for tasks requiring factual, precise, or consistent responses. Higher values (**e.g., 0.7-1.0**): Increase creativity and randomness, allowing the model to take more risks. Can lead to more imaginative but potentially less coherent results. + `Default: 0.8` +- **`top_p:`** Filters the set of possible next tokens by cumulative probability. The model only considers tokens whose cumulative probability sum up to `top_p`.Lower values (**e.g., 0.5**): Narrows the selection to only the most probable tokens, improving coherence and reducing the chance of irrelevant words. + Higher values (**e.g., 0.9**): Allows for a broader range of tokens, increasing randomness. `Default: 0.8` +- **`top_k:`** Limits the sampling pool to the k most probable next tokens. Lower values (**e.g., 5-20**): Focuses generation on the top choices, making output more predictable. + Higher values (**e.g., 50-100**): Expands the options, outputing more creative text. `Default: 10` +- **`repetition_penalty:`** Discourages the model from repeating words or phrases that have already appeared in the generated text. Values greater than 1 (**e.g., 1.1-1.5**): Penalize repeated tokens, making them less likely to be chosen again. Essential for preventing repetitive loops or boilerplate text. + A value of 1: No penalty applied. `Default: 1.3` + +## 📚 Resources + +- Parameter settings +- System prompts, instructions, etc. + +## 📄 License +Released under the MIT License. Feel free to use and modify it for your projects, commercial or personal. diff --git a/__init__.py b/__init__.py new file mode 100644 index 0000000..217630c --- /dev/null +++ b/__init__.py @@ -0,0 +1 @@ +from .LLM_Hub import * diff --git a/img/usage.png b/img/usage.png new file mode 100644 index 0000000000000000000000000000000000000000..2379f887646667ec2af28367a122fe95fc30946d GIT binary patch literal 130885 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 DP*umI literal 0 HcmV?d00001 diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..08e53fd --- /dev/null +++ b/requirements.txt @@ -0,0 +1,5 @@ +transformers +torch +accelerate +bitsandbytes +llama-cpp-python --config-settings=cmake.args="-DGGML_CUDA=on" \ No newline at end of file diff --git a/web/js/output.js b/web/js/output.js new file mode 100644 index 0000000..833cf8b --- /dev/null +++ b/web/js/output.js @@ -0,0 +1,26 @@ +import {app} from "../../scripts/app.js"; +import {createTextWidget} from "./utils.js" + +app.registerExtension({ + name: "LLM_Hub.Generated_Output", + async beforeRegisterNodeDef(nodeType, nodeData, app) { + if (nodeData.name === "Generated_Output") { + const onNodeCreated = nodeType.prototype.onNodeCreated; + + nodeType.prototype.onNodeCreated = function () { + const result = onNodeCreated?.apply(this, arguments); + const text = createTextWidget(app, this, "text"); + const nodeWidth = this.size[0]; + const nodeHeight = this.size[1]; + this.setSize([nodeWidth, nodeHeight * 3]); + return result; + }; + + const onExecuted = nodeType.prototype.onExecuted; + nodeType.prototype.onExecuted = function (message) { + onExecuted?.apply(this, arguments); + this.widgets.find(obj => obj.name === "text").value = message.text; + }; + } + }, +}); \ No newline at end of file diff --git a/web/js/utils.js b/web/js/utils.js new file mode 100644 index 0000000..0730383 --- /dev/null +++ b/web/js/utils.js @@ -0,0 +1,8 @@ +import {ComfyWidgets} from "../../scripts/widgets.js"; + +export function createTextWidget(app, node, widgetName, styles = {}) { + const widget = ComfyWidgets["STRING"](node, widgetName, ["STRING", {multiline: true}], app).widget; + widget.inputEl.readOnly = true; + Object.assign(widget.inputEl.style, styles); + return widget; +} \ No newline at end of file