Instructions to use saik0s/comfy_backup with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- llama-cpp-python
How to use saik0s/comfy_backup with llama-cpp-python:
# !pip install llama-cpp-python from llama_cpp import Llama llm = Llama.from_pretrained( repo_id="saik0s/comfy_backup", filename="ComfyUI/models/text_encoders/gemma-3-12b-it-q2_k.gguf", )
llm.create_chat_completion( messages = "No input example has been defined for this model task." )
- Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- llama.cpp
How to use saik0s/comfy_backup with llama.cpp:
Install (macOS, Linux)
curl -LsSf https://llama.app/install.sh | sh # Start a local OpenAI-compatible server with a web UI: llama serve -hf saik0s/comfy_backup:Q4_K_S # Run inference directly in the terminal: llama cli -hf saik0s/comfy_backup:Q4_K_S
Install from WinGet (Windows)
winget install llama.cpp # Start a local OpenAI-compatible server with a web UI: llama serve -hf saik0s/comfy_backup:Q4_K_S # Run inference directly in the terminal: llama cli -hf saik0s/comfy_backup:Q4_K_S
Use pre-built binary
# Download pre-built binary from: # https://github.com/ggerganov/llama.cpp/releases # Start a local OpenAI-compatible server with a web UI: ./llama-server -hf saik0s/comfy_backup:Q4_K_S # Run inference directly in the terminal: ./llama-cli -hf saik0s/comfy_backup:Q4_K_S
Build from source code
git clone https://github.com/ggerganov/llama.cpp.git cd llama.cpp cmake -B build cmake --build build -j --target llama-server llama-cli # Start a local OpenAI-compatible server with a web UI: ./build/bin/llama-server -hf saik0s/comfy_backup:Q4_K_S # Run inference directly in the terminal: ./build/bin/llama-cli -hf saik0s/comfy_backup:Q4_K_S
Use Docker
docker model run hf.co/saik0s/comfy_backup:Q4_K_S
- LM Studio
- Jan
- Ollama
How to use saik0s/comfy_backup with Ollama:
ollama run hf.co/saik0s/comfy_backup:Q4_K_S
- Unsloth Studio
How to use saik0s/comfy_backup with Unsloth Studio:
Install Unsloth Studio (macOS, Linux, WSL)
curl -fsSL https://unsloth.ai/install.sh | sh # Run unsloth studio unsloth studio -H 0.0.0.0 -p 8888 # Then open http://localhost:8888 in your browser # Search for saik0s/comfy_backup to start chatting
Install Unsloth Studio (Windows)
irm https://unsloth.ai/install.ps1 | iex # Run unsloth studio unsloth studio -H 0.0.0.0 -p 8888 # Then open http://localhost:8888 in your browser # Search for saik0s/comfy_backup to start chatting
Using HuggingFace Spaces for Unsloth
# No setup required # Open https://huggingface.co/spaces/unsloth/studio in your browser # Search for saik0s/comfy_backup to start chatting
- Pi
How to use saik0s/comfy_backup with Pi:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf saik0s/comfy_backup:Q4_K_S
Configure the model in Pi
# Install Pi: npm install -g @mariozechner/pi-coding-agent # Add to ~/.pi/agent/models.json: { "providers": { "llama-cpp": { "baseUrl": "http://localhost:8080/v1", "api": "openai-completions", "apiKey": "none", "models": [ { "id": "saik0s/comfy_backup:Q4_K_S" } ] } } }Run Pi
# Start Pi in your project directory: pi
- Hermes Agent new
How to use saik0s/comfy_backup with Hermes Agent:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf saik0s/comfy_backup:Q4_K_S
Configure Hermes
# Install Hermes: curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash hermes setup # Point Hermes at the local server: hermes config set model.provider custom hermes config set model.base_url http://127.0.0.1:8080/v1 hermes config set model.default saik0s/comfy_backup:Q4_K_S
Run Hermes
hermes
- Atomic Chat new
- OpenClaw new
How to use saik0s/comfy_backup with OpenClaw:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf saik0s/comfy_backup:Q4_K_S
Configure OpenClaw
# Install OpenClaw: npm install -g openclaw@latest # Register the local server and set it as the default model: openclaw onboard --non-interactive --mode local \ --auth-choice custom-api-key \ --custom-base-url http://127.0.0.1:8080/v1 \ --custom-model-id "saik0s/comfy_backup:Q4_K_S" \ --custom-provider-id llama-cpp \ --custom-compatibility openai \ --custom-text-input \ --accept-risk \ --skip-health
Run OpenClaw
openclaw agent --local --agent main --message "Hello from Hugging Face"
- Docker Model Runner
How to use saik0s/comfy_backup with Docker Model Runner:
docker model run hf.co/saik0s/comfy_backup:Q4_K_S
- Lemonade
How to use saik0s/comfy_backup with Lemonade:
Pull the model
# Download Lemonade from https://lemonade-server.ai/ lemonade pull saik0s/comfy_backup:Q4_K_S
Run and chat with the model
lemonade run user.comfy_backup-Q4_K_S
List all available models
lemonade list
| import torch | |
| import math | |
| import comfy.utils | |
| import logging | |
| def is_equal(x, y): | |
| if torch.is_tensor(x) and torch.is_tensor(y): | |
| return torch.equal(x, y) | |
| elif isinstance(x, dict) and isinstance(y, dict): | |
| if x.keys() != y.keys(): | |
| return False | |
| return all(is_equal(x[k], y[k]) for k in x) | |
| elif isinstance(x, (list, tuple)) and isinstance(y, (list, tuple)): | |
| if type(x) is not type(y) or len(x) != len(y): | |
| return False | |
| return all(is_equal(a, b) for a, b in zip(x, y)) | |
| else: | |
| try: | |
| return x == y | |
| except Exception: | |
| logging.warning("comparison issue with COND") | |
| return False | |
| class CONDRegular: | |
| def __init__(self, cond): | |
| self.cond = cond | |
| def _copy_with(self, cond): | |
| return self.__class__(cond) | |
| def process_cond(self, batch_size, **kwargs): | |
| return self._copy_with(comfy.utils.repeat_to_batch_size(self.cond, batch_size)) | |
| def can_concat(self, other): | |
| if self.cond.shape != other.cond.shape: | |
| return False | |
| if self.cond.device != other.cond.device: | |
| logging.warning("WARNING: conds not on same device, skipping concat.") | |
| return False | |
| return True | |
| def concat(self, others): | |
| conds = [self.cond] | |
| for x in others: | |
| conds.append(x.cond) | |
| return torch.cat(conds) | |
| def size(self): | |
| return list(self.cond.size()) | |
| class CONDNoiseShape(CONDRegular): | |
| def process_cond(self, batch_size, area, **kwargs): | |
| data = self.cond | |
| if area is not None: | |
| dims = len(area) // 2 | |
| for i in range(dims): | |
| data = data.narrow(i + 2, area[i + dims], area[i]) | |
| return self._copy_with(comfy.utils.repeat_to_batch_size(data, batch_size)) | |
| class CONDCrossAttn(CONDRegular): | |
| def can_concat(self, other): | |
| s1 = self.cond.shape | |
| s2 = other.cond.shape | |
| if s1 != s2: | |
| if s1[0] != s2[0] or s1[2] != s2[2]: #these 2 cases should not happen | |
| return False | |
| mult_min = math.lcm(s1[1], s2[1]) | |
| diff = mult_min // min(s1[1], s2[1]) | |
| if diff > 4: #arbitrary limit on the padding because it's probably going to impact performance negatively if it's too much | |
| return False | |
| if self.cond.device != other.cond.device: | |
| logging.warning("WARNING: conds not on same device: skipping concat.") | |
| return False | |
| return True | |
| def concat(self, others): | |
| conds = [self.cond] | |
| crossattn_max_len = self.cond.shape[1] | |
| for x in others: | |
| c = x.cond | |
| crossattn_max_len = math.lcm(crossattn_max_len, c.shape[1]) | |
| conds.append(c) | |
| out = [] | |
| for c in conds: | |
| if c.shape[1] < crossattn_max_len: | |
| c = c.repeat(1, crossattn_max_len // c.shape[1], 1) #padding with repeat doesn't change result | |
| out.append(c) | |
| return torch.cat(out) | |
| class CONDConstant(CONDRegular): | |
| def __init__(self, cond): | |
| self.cond = cond | |
| def process_cond(self, batch_size, **kwargs): | |
| return self._copy_with(self.cond) | |
| def can_concat(self, other): | |
| if not is_equal(self.cond, other.cond): | |
| return False | |
| return True | |
| def concat(self, others): | |
| return self.cond | |
| def size(self): | |
| return [1] | |
| class CONDList(CONDRegular): | |
| def __init__(self, cond): | |
| self.cond = cond | |
| def process_cond(self, batch_size, **kwargs): | |
| out = [] | |
| for c in self.cond: | |
| out.append(comfy.utils.repeat_to_batch_size(c, batch_size)) | |
| return self._copy_with(out) | |
| def can_concat(self, other): | |
| if len(self.cond) != len(other.cond): | |
| return False | |
| for i in range(len(self.cond)): | |
| if self.cond[i].shape != other.cond[i].shape: | |
| return False | |
| return True | |
| def concat(self, others): | |
| out = [] | |
| for i in range(len(self.cond)): | |
| o = [self.cond[i]] | |
| for x in others: | |
| o.append(x.cond[i]) | |
| out.append(torch.cat(o)) | |
| return out | |
| def size(self): # hackish implementation to make the mem estimation work | |
| o = 0 | |
| c = 1 | |
| for c in self.cond: | |
| size = c.size() | |
| o += math.prod(size) | |
| if len(size) > 1: | |
| c = size[1] | |
| return [1, c, o // c] | |