6.8 KiB
ComfyUI_LocalLLMNodes
A custom node pack for ComfyUI that allows you to run Large Language Models (LLMs) locally and use them for prompt generation and other text tasks directly within your ComfyUI workflows.
This pack provides nodes to connect to and utilize local LLMs in Hugging Face (PyTorch) or GGUF format, eliminating the need for external API calls. It's designed to integrate seamlessly with prompt generation workflows, such as those involving image description nodes like Florence-2.
Features
- Local LLM Execution (Hugging Face & GGUF): Run powerful LLMs directly on your machine (CPU or GPU) using either standard Hugging Face models or efficient GGUF models.
- Set Local LLM Service Connector Node (Hugging Face): Select and configure your local Hugging Face format LLM model (models must be placed in
ComfyUI/models/LLM/). - Set Local GGUF LLM Service Connector Node: Select and configure your local GGUF format LLM model file (
.gguffiles must be placed inComfyUI/models/LLM/). - Local Kontext Prompt Generator Node: Generate detailed image prompts by combining descriptions and edit instructions, leveraging your connected local LLM.
- User Preset Management: Add and remove custom prompt generation presets using dedicated nodes.
- Compatibility: Designed to work with the
LLMServiceConnectortype identifier, ensuring compatibility with standard MieNodes prompt generators (e.g.,KontextPromptGenerator) if needed. - VRAM Optimization (Hugging Face): Includes commented code examples for integrating Hugging Face model quantization (4-bit/8-bit) using
bitsandbytesto reduce memory footprint. - Efficient GGUF Models: GGUF models are inherently quantized, offering lower memory usage and often good performance, especially on CPU.
Installation
- Navigate to your ComfyUI installation directory.
- Go to the
custom_nodesfolder. - Clone this repository:
git clone https://github.com/your_username/ComfyUI_LocalLLMNodes.git # Or download the zip and extract it into a folder named ComfyUI_LocalLLMNodes - Install Dependencies: Navigate into the
ComfyUI_LocalLLMNodesdirectory and install the required Python packages.Note: Ensure you are installing these packages in the same Python environment that you use to run ComfyUI. *Note oncd ComfyUI_LocalLLMNodes pip install -r requirements.txtllama-cpp-python: Installing with GPU support (CUDA) requires specific environment variables during installation (e.g.,CMAKE_ARGS="-DLLAMA_CUBLAS=on" pip install llama-cpp-python --force-reinstall --no-cache-dir). See thellama-cpp-pythondocumentation for details. The CPU-only installation (pip install llama-cpp-python) is simpler and sufficient for CPU inference.
Usage
- Download a Local LLM:
- Hugging Face Format:
- Obtain a Hugging Face format LLM (e.g.,
TinyLlama/TinyLlama-1.1B-Chat-v1.0,microsoft/Phi-3-mini-4k-instruct,NousResearch/Hermes-2-Pro-Llama-3-8B). - Download the model files into a subdirectory within your
ComfyUI/models/LLM/folder.- Example:
ComfyUI/models/LLM/Phi-3-mini-4k-instruct/should containconfig.json,pytorch_model.bin(or.safetensors),tokenizer_config.json, etc.
- Example:
- Obtain a Hugging Face format LLM (e.g.,
- GGUF Format:
- Obtain a GGUF format LLM file (e.g.,
mistral-7b-instruct-v0.3.Q8_0.gguf). - Place the
.gguffile directly in yourComfyUI/models/LLM/folder, or within a subfolder (e.g.,ComfyUI/models/LLM/Mistral-7B-Instruct/containingmistral-7b-instruct-v0.3.Q8_0.gguf).
- Obtain a GGUF format LLM file (e.g.,
- Hugging Face Format:
- Restart ComfyUI to load the new nodes.
- Find the Nodes: Look for the new nodes in the ComfyUI node library under the category:
Local LLM Nodes/LLM Connectors
- Use the Nodes:
- For Hugging Face Models:
- Add the "Set Local LLM Service Connector 🐑 (HuggingFace)" node to your graph.
- Select your downloaded Hugging Face model directory from the dropdown menu.
- For GGUF Models:
- Add the "Set Local GGUF LLM Service Connector 🐑" node to your graph.
- Select your downloaded GGUF model file (or its containing directory) from the dropdown menu.
- Common Steps:
- Add the "Local Kontext Prompt Generator 🐑" node.
- Connect the output of the chosen "Set Local ... LLM Service Connector 🐑" node to the
llm_service_connectorinput of the "Local Kontext Prompt Generator 🐑" node. - Provide inputs like
image1_description(e.g., from Florence-2),edit_instruction, and select apreset. - Connect the
kontext_promptoutput to your desired node (e.g., an image generator).
- For Hugging Face Models:
Memory Optimization
Running large LLMs alongside large image models (like SDXL or Flux) can strain system resources (RAM/VRAM).
- Hugging Face Models:
- Quantization: The
local_llm_connector.pyfile includes commented code examples showing how to implement 4-bit or 8-bit quantization using thebitsandbyteslibrary. This can significantly reduce the LLM's VRAM usage.- To use quantization:
- Ensure
bitsandbytesis installed (pip install bitsandbytes). - Uncomment and adjust the quantization configuration section in the
_load_modelmethod withinlocal_llm_connector.py. - Restart ComfyUI.
- Ensure
- To use quantization:
- Quantization: The
- GGUF Models:
- GGUF models are pre-quantized (e.g., Q4, Q5, Q8). Choosing a more quantized version (like Q8_0 vs. f16) inherently uses less memory. For GPU acceleration with GGUF models, configure the
n_gpu_layersparameter during loading (if supported by yourllama-cpp-pythonbuild).
- GGUF models are pre-quantized (e.g., Q4, Q5, Q8). Choosing a more quantized version (like Q8_0 vs. f16) inherently uses less memory. For GPU acceleration with GGUF models, configure the
Nodes Included
SetLocalLLMServiceConnector: Selects and prepares a connection to a local Hugging Face format LLM model.SetLocalGGUFLLMServiceConnector: Selects and prepares a connection to a local GGUF format LLM model file.LocalKontextPromptGenerator: Generates prompts using a connected local LLM based on descriptions and instructions.AddUserLocalKontextPreset: Adds a custom preset for prompt generation.RemoveUserLocalKontextPreset: Removes a custom preset.
Requirements
- ComfyUI
- Python Libraries (see
requirements.txtfor versions):transformerstorchbitsandbytes(Optional, for Hugging Face model quantization)llama-cpp-python(Optional, for GGUF model support)- Other dependencies as listed in
requirements.txt
Acknowledgements
This node pack builds upon concepts and structures found in the excellent ComfyUI-MieNodes extension, particularly the KontextPromptGenerator and LLM service connector patterns.