This commit is contained in:
PeterTF656 2024-07-09 13:17:02 +08:00
parent 6c6a39251f
commit 81631456ed
7 changed files with 7885 additions and 53 deletions

View File

@ -0,0 +1,655 @@
import os
import sys
import asyncio
import traceback
import nodes
import folder_paths
import execution
import uuid
import urllib
import json
import glob
import struct
import ssl
from PIL import Image, ImageOps
from PIL.PngImagePlugin import PngInfo
from io import BytesIO
import aiohttp
from aiohttp import web
import logging
import mimetypes
from comfy.cli_args import args
import comfy.utils
import comfy.model_management
from app.user_manager import UserManager
class BinaryEventTypes:
PREVIEW_IMAGE = 1
UNENCODED_PREVIEW_IMAGE = 2
async def send_socket_catch_exception(function, message):
try:
await function(message)
except (aiohttp.ClientError, aiohttp.ClientPayloadError, ConnectionResetError) as err:
logging.warning("send error: {}".format(err))
@web.middleware
async def cache_control(request: web.Request, handler):
response: web.Response = await handler(request)
if request.path.endswith('.js') or request.path.endswith('.css'):
response.headers.setdefault('Cache-Control', 'no-cache')
return response
def create_cors_middleware(allowed_origin: str):
@web.middleware
async def cors_middleware(request: web.Request, handler):
if request.method == "OPTIONS":
# Pre-flight request. Reply successfully:
response = web.Response()
else:
response = await handler(request)
response.headers['Access-Control-Allow-Origin'] = allowed_origin
response.headers['Access-Control-Allow-Methods'] = 'POST, GET, DELETE, PUT, OPTIONS'
response.headers['Access-Control-Allow-Headers'] = 'Content-Type, Authorization'
response.headers['Access-Control-Allow-Credentials'] = 'true'
return response
return cors_middleware
class PromptServer():
def __init__(self, loop):
PromptServer.instance = self
mimetypes.init()
mimetypes.types_map['.js'] = 'application/javascript; charset=utf-8'
self.user_manager = UserManager()
self.supports = ["custom_nodes_from_web"]
self.prompt_queue = None
self.loop = loop
self.messages = asyncio.Queue()
self.number = 0
middlewares = [cache_control]
if args.enable_cors_header:
middlewares.append(create_cors_middleware(args.enable_cors_header))
max_upload_size = round(args.max_upload_size * 1024 * 1024)
self.app = web.Application(client_max_size=max_upload_size, middlewares=middlewares)
self.sockets = dict()
self.web_root = os.path.join(os.path.dirname(
os.path.realpath(__file__)), "web")
routes = web.RouteTableDef()
self.routes = routes
self.last_node_id = None
self.client_id = None
self.on_prompt_handlers = []
@routes.get('/ws')
async def websocket_handler(request):
ws = web.WebSocketResponse()
await ws.prepare(request)
sid = request.rel_url.query.get('clientId', '')
if sid:
# Reusing existing session, remove old
self.sockets.pop(sid, None)
else:
sid = uuid.uuid4().hex
self.sockets[sid] = ws
try:
# Send initial state to the new client
await self.send("status", { "status": self.get_queue_info(), 'sid': sid }, sid)
# On reconnect if we are the currently executing client send the current node
if self.client_id == sid and self.last_node_id is not None:
await self.send("executing", { "node": self.last_node_id }, sid)
async for msg in ws:
if msg.type == aiohttp.WSMsgType.ERROR:
logging.warning('ws connection closed with exception %s' % ws.exception())
finally:
self.sockets.pop(sid, None)
return ws
@routes.get("/")
async def get_root(request):
return web.FileResponse(os.path.join(self.web_root, "index.html"))
@routes.get("/embeddings")
def get_embeddings(self):
embeddings = folder_paths.get_filename_list("embeddings")
return web.json_response(list(map(lambda a: os.path.splitext(a)[0], embeddings)))
@routes.get("/extensions")
async def get_extensions(request):
files = glob.glob(os.path.join(
glob.escape(self.web_root), 'extensions/**/*.js'), recursive=True)
extensions = list(map(lambda f: "/" + os.path.relpath(f, self.web_root).replace("\\", "/"), files))
for name, dir in nodes.EXTENSION_WEB_DIRS.items():
files = glob.glob(os.path.join(glob.escape(dir), '**/*.js'), recursive=True)
extensions.extend(list(map(lambda f: "/extensions/" + urllib.parse.quote(
name) + "/" + os.path.relpath(f, dir).replace("\\", "/"), files)))
return web.json_response(extensions)
def get_dir_by_type(dir_type):
if dir_type is None:
dir_type = "input"
if dir_type == "input":
type_dir = folder_paths.get_input_directory()
elif dir_type == "temp":
type_dir = folder_paths.get_temp_directory()
elif dir_type == "output":
type_dir = folder_paths.get_output_directory()
return type_dir, dir_type
def image_upload(post, image_save_function=None):
image = post.get("image")
overwrite = post.get("overwrite")
image_upload_type = post.get("type")
upload_dir, image_upload_type = get_dir_by_type(image_upload_type)
if image and image.file:
filename = image.filename
if not filename:
return web.Response(status=400)
subfolder = post.get("subfolder", "")
full_output_folder = os.path.join(upload_dir, os.path.normpath(subfolder))
filepath = os.path.abspath(os.path.join(full_output_folder, filename))
if os.path.commonpath((upload_dir, filepath)) != upload_dir:
return web.Response(status=400)
if not os.path.exists(full_output_folder):
os.makedirs(full_output_folder)
split = os.path.splitext(filename)
if overwrite is not None and (overwrite == "true" or overwrite == "1"):
pass
else:
i = 1
while os.path.exists(filepath):
filename = f"{split[0]} ({i}){split[1]}"
filepath = os.path.join(full_output_folder, filename)
i += 1
if image_save_function is not None:
image_save_function(image, post, filepath)
else:
with open(filepath, "wb") as f:
f.write(image.file.read())
return web.json_response({"name" : filename, "subfolder": subfolder, "type": image_upload_type})
else:
return web.Response(status=400)
@routes.post("/upload/image")
async def upload_image(request):
post = await request.post()
return image_upload(post)
@routes.post("/upload/mask")
async def upload_mask(request):
post = await request.post()
def image_save_function(image, post, filepath):
original_ref = json.loads(post.get("original_ref"))
filename, output_dir = folder_paths.annotated_filepath(original_ref['filename'])
# validation for security: prevent accessing arbitrary path
if filename[0] == '/' or '..' in filename:
return web.Response(status=400)
if output_dir is None:
type = original_ref.get("type", "output")
output_dir = folder_paths.get_directory_by_type(type)
if output_dir is None:
return web.Response(status=400)
if original_ref.get("subfolder", "") != "":
full_output_dir = os.path.join(output_dir, original_ref["subfolder"])
if os.path.commonpath((os.path.abspath(full_output_dir), output_dir)) != output_dir:
return web.Response(status=403)
output_dir = full_output_dir
file = os.path.join(output_dir, filename)
if os.path.isfile(file):
with Image.open(file) as original_pil:
metadata = PngInfo()
if hasattr(original_pil,'text'):
for key in original_pil.text:
metadata.add_text(key, original_pil.text[key])
original_pil = original_pil.convert('RGBA')
mask_pil = Image.open(image.file).convert('RGBA')
# alpha copy
new_alpha = mask_pil.getchannel('A')
original_pil.putalpha(new_alpha)
original_pil.save(filepath, compress_level=4, pnginfo=metadata)
return image_upload(post, image_save_function)
@routes.get("/view")
async def view_image(request):
if "filename" in request.rel_url.query:
filename = request.rel_url.query["filename"]
filename,output_dir = folder_paths.annotated_filepath(filename)
# validation for security: prevent accessing arbitrary path
if filename[0] == '/' or '..' in filename:
return web.Response(status=400)
if output_dir is None:
type = request.rel_url.query.get("type", "output")
output_dir = folder_paths.get_directory_by_type(type)
if output_dir is None:
return web.Response(status=400)
if "subfolder" in request.rel_url.query:
full_output_dir = os.path.join(output_dir, request.rel_url.query["subfolder"])
if os.path.commonpath((os.path.abspath(full_output_dir), output_dir)) != output_dir:
return web.Response(status=403)
output_dir = full_output_dir
filename = os.path.basename(filename)
file = os.path.join(output_dir, filename)
if os.path.isfile(file):
if 'preview' in request.rel_url.query:
with Image.open(file) as img:
preview_info = request.rel_url.query['preview'].split(';')
image_format = preview_info[0]
if image_format not in ['webp', 'jpeg'] or 'a' in request.rel_url.query.get('channel', ''):
image_format = 'webp'
quality = 90
if preview_info[-1].isdigit():
quality = int(preview_info[-1])
buffer = BytesIO()
if image_format in ['jpeg'] or request.rel_url.query.get('channel', '') == 'rgb':
img = img.convert("RGB")
img.save(buffer, format=image_format, quality=quality)
buffer.seek(0)
return web.Response(body=buffer.read(), content_type=f'image/{image_format}',
headers={"Content-Disposition": f"filename=\"{filename}\""})
if 'channel' not in request.rel_url.query:
channel = 'rgba'
else:
channel = request.rel_url.query["channel"]
if channel == 'rgb':
with Image.open(file) as img:
if img.mode == "RGBA":
r, g, b, a = img.split()
new_img = Image.merge('RGB', (r, g, b))
else:
new_img = img.convert("RGB")
buffer = BytesIO()
new_img.save(buffer, format='PNG')
buffer.seek(0)
return web.Response(body=buffer.read(), content_type='image/png',
headers={"Content-Disposition": f"filename=\"{filename}\""})
elif channel == 'a':
with Image.open(file) as img:
if img.mode == "RGBA":
_, _, _, a = img.split()
else:
a = Image.new('L', img.size, 255)
# alpha img
alpha_img = Image.new('RGBA', img.size)
alpha_img.putalpha(a)
alpha_buffer = BytesIO()
alpha_img.save(alpha_buffer, format='PNG')
alpha_buffer.seek(0)
return web.Response(body=alpha_buffer.read(), content_type='image/png',
headers={"Content-Disposition": f"filename=\"{filename}\""})
else:
return web.FileResponse(file, headers={"Content-Disposition": f"filename=\"{filename}\""})
return web.Response(status=404)
@routes.get("/view_metadata/{folder_name}")
async def view_metadata(request):
folder_name = request.match_info.get("folder_name", None)
if folder_name is None:
return web.Response(status=404)
if not "filename" in request.rel_url.query:
return web.Response(status=404)
filename = request.rel_url.query["filename"]
if not filename.endswith(".safetensors"):
return web.Response(status=404)
safetensors_path = folder_paths.get_full_path(folder_name, filename)
if safetensors_path is None:
return web.Response(status=404)
out = comfy.utils.safetensors_header(safetensors_path, max_size=1024*1024)
if out is None:
return web.Response(status=404)
dt = json.loads(out)
if not "__metadata__" in dt:
return web.Response(status=404)
return web.json_response(dt["__metadata__"])
@routes.get("/system_stats")
async def get_queue(request):
device = comfy.model_management.get_torch_device()
device_name = comfy.model_management.get_torch_device_name(device)
vram_total, torch_vram_total = comfy.model_management.get_total_memory(device, torch_total_too=True)
vram_free, torch_vram_free = comfy.model_management.get_free_memory(device, torch_free_too=True)
system_stats = {
"system": {
"os": os.name,
"python_version": sys.version,
"embedded_python": os.path.split(os.path.split(sys.executable)[0])[1] == "python_embeded"
},
"devices": [
{
"name": device_name,
"type": device.type,
"index": device.index,
"vram_total": vram_total,
"vram_free": vram_free,
"torch_vram_total": torch_vram_total,
"torch_vram_free": torch_vram_free,
}
]
}
return web.json_response(system_stats)
@routes.get("/prompt")
async def get_prompt(request):
return web.json_response(self.get_queue_info())
def node_info(node_class):
obj_class = nodes.NODE_CLASS_MAPPINGS[node_class]
info = {}
info['input'] = obj_class.INPUT_TYPES()
info['output'] = obj_class.RETURN_TYPES
info['output_is_list'] = obj_class.OUTPUT_IS_LIST if hasattr(obj_class, 'OUTPUT_IS_LIST') else [False] * len(obj_class.RETURN_TYPES)
info['output_name'] = obj_class.RETURN_NAMES if hasattr(obj_class, 'RETURN_NAMES') else info['output']
info['name'] = node_class
info['display_name'] = nodes.NODE_DISPLAY_NAME_MAPPINGS[node_class] if node_class in nodes.NODE_DISPLAY_NAME_MAPPINGS.keys() else node_class
info['description'] = obj_class.DESCRIPTION if hasattr(obj_class,'DESCRIPTION') else ''
info['category'] = 'sd'
if hasattr(obj_class, 'OUTPUT_NODE') and obj_class.OUTPUT_NODE == True:
info['output_node'] = True
else:
info['output_node'] = False
if hasattr(obj_class, 'CATEGORY'):
info['category'] = obj_class.CATEGORY
return info
@routes.get("/object_info")
async def get_object_info(request):
out = {}
for x in nodes.NODE_CLASS_MAPPINGS:
try:
out[x] = node_info(x)
except Exception as e:
logging.error(f"[ERROR] An error occurred while retrieving information for the '{x}' node.")
logging.error(traceback.format_exc())
return web.json_response(out)
@routes.get("/object_info/{node_class}")
async def get_object_info_node(request):
node_class = request.match_info.get("node_class", None)
out = {}
if (node_class is not None) and (node_class in nodes.NODE_CLASS_MAPPINGS):
out[node_class] = node_info(node_class)
return web.json_response(out)
@routes.get("/history")
async def get_history(request):
max_items = request.rel_url.query.get("max_items", None)
if max_items is not None:
max_items = int(max_items)
return web.json_response(self.prompt_queue.get_history(max_items=max_items))
@routes.get("/history/{prompt_id}")
async def get_history(request):
prompt_id = request.match_info.get("prompt_id", None)
return web.json_response(self.prompt_queue.get_history(prompt_id=prompt_id))
@routes.get("/queue")
async def get_queue(request):
queue_info = {}
current_queue = self.prompt_queue.get_current_queue()
queue_info['queue_running'] = current_queue[0]
queue_info['queue_pending'] = current_queue[1]
return web.json_response(queue_info)
@routes.post("/prompt")
async def post_prompt(request):
logging.info("got prompt")
resp_code = 200
out_string = ""
json_data = await request.json()
json_data = self.trigger_on_prompt(json_data)
if "number" in json_data:
number = float(json_data['number'])
else:
number = self.number
if "front" in json_data:
if json_data['front']:
number = -number
self.number += 1
if "prompt" in json_data:
prompt = json_data["prompt"]
valid = execution.validate_prompt(prompt)
extra_data = {}
if "extra_data" in json_data:
extra_data = json_data["extra_data"]
if "client_id" in json_data:
extra_data["client_id"] = json_data["client_id"]
if valid[0]:
prompt_id = str(uuid.uuid4())
outputs_to_execute = valid[2]
self.prompt_queue.put((number, prompt_id, prompt, extra_data, outputs_to_execute))
response = {"prompt_id": prompt_id, "number": number, "node_errors": valid[3]}
return web.json_response(response)
else:
logging.warning("invalid prompt: {}".format(valid[1]))
return web.json_response({"error": valid[1], "node_errors": valid[3]}, status=400)
else:
return web.json_response({"error": "no prompt", "node_errors": []}, status=400)
@routes.post("/queue")
async def post_queue(request):
json_data = await request.json()
if "clear" in json_data:
if json_data["clear"]:
self.prompt_queue.wipe_queue()
if "delete" in json_data:
to_delete = json_data['delete']
for id_to_delete in to_delete:
delete_func = lambda a: a[1] == id_to_delete
self.prompt_queue.delete_queue_item(delete_func)
return web.Response(status=200)
@routes.post("/interrupt")
async def post_interrupt(request):
nodes.interrupt_processing()
return web.Response(status=200)
@routes.post("/free")
async def post_free(request):
json_data = await request.json()
unload_models = json_data.get("unload_models", False)
free_memory = json_data.get("free_memory", False)
if unload_models:
self.prompt_queue.set_flag("unload_models", unload_models)
if free_memory:
self.prompt_queue.set_flag("free_memory", free_memory)
return web.Response(status=200)
@routes.post("/history")
async def post_history(request):
json_data = await request.json()
if "clear" in json_data:
if json_data["clear"]:
self.prompt_queue.wipe_history()
if "delete" in json_data:
to_delete = json_data['delete']
for id_to_delete in to_delete:
self.prompt_queue.delete_history_item(id_to_delete)
return web.Response(status=200)
def add_routes(self):
self.user_manager.add_routes(self.routes)
self.app.add_routes(self.routes)
for name, dir in nodes.EXTENSION_WEB_DIRS.items():
self.app.add_routes([
web.static('/extensions/' + urllib.parse.quote(name), dir),
])
self.app.add_routes([
web.static('/', self.web_root),
])
def get_queue_info(self):
prompt_info = {}
exec_info = {}
exec_info['queue_remaining'] = self.prompt_queue.get_tasks_remaining()
prompt_info['exec_info'] = exec_info
return prompt_info
async def send(self, event, data, sid=None):
if event == BinaryEventTypes.UNENCODED_PREVIEW_IMAGE:
await self.send_image(data, sid=sid)
elif isinstance(data, (bytes, bytearray)):
await self.send_bytes(event, data, sid)
else:
await self.send_json(event, data, sid)
def encode_bytes(self, event, data):
if not isinstance(event, int):
raise RuntimeError(f"Binary event types must be integers, got {event}")
packed = struct.pack(">I", event)
message = bytearray(packed)
message.extend(data)
return message
async def send_image(self, image_data, sid=None):
image_type = image_data[0]
image = image_data[1]
max_size = image_data[2]
if max_size is not None:
if hasattr(Image, 'Resampling'):
resampling = Image.Resampling.BILINEAR
else:
resampling = Image.ANTIALIAS
image = ImageOps.contain(image, (max_size, max_size), resampling)
type_num = 1
if image_type == "JPEG":
type_num = 1
elif image_type == "PNG":
type_num = 2
bytesIO = BytesIO()
header = struct.pack(">I", type_num)
bytesIO.write(header)
image.save(bytesIO, format=image_type, quality=95, compress_level=1)
preview_bytes = bytesIO.getvalue()
await self.send_bytes(BinaryEventTypes.PREVIEW_IMAGE, preview_bytes, sid=sid)
async def send_bytes(self, event, data, sid=None):
message = self.encode_bytes(event, data)
if sid is None:
sockets = list(self.sockets.values())
for ws in sockets:
await send_socket_catch_exception(ws.send_bytes, message)
elif sid in self.sockets:
await send_socket_catch_exception(self.sockets[sid].send_bytes, message)
async def send_json(self, event, data, sid=None):
message = {"type": event, "data": data}
if sid is None:
sockets = list(self.sockets.values())
for ws in sockets:
await send_socket_catch_exception(ws.send_json, message)
elif sid in self.sockets:
await send_socket_catch_exception(self.sockets[sid].send_json, message)
def send_sync(self, event, data, sid=None):
self.loop.call_soon_threadsafe(
self.messages.put_nowait, (event, data, sid))
def queue_updated(self):
self.send_sync("status", { "status": self.get_queue_info() })
async def publish_loop(self):
while True:
msg = await self.messages.get()
await self.send(*msg)
async def start(self, address, port, verbose=True, call_on_start=None):
runner = web.AppRunner(self.app, access_log=None)
await runner.setup()
ssl_ctx = None
scheme = "http"
if args.tls_keyfile and args.tls_certfile:
ssl_ctx = ssl.SSLContext(protocol=ssl.PROTOCOL_TLS_SERVER, verify_mode=ssl.CERT_NONE)
ssl_ctx.load_cert_chain(certfile=args.tls_certfile,
keyfile=args.tls_keyfile)
scheme = "https"
site = web.TCPSite(runner, address, port, ssl_context=ssl_ctx)
await site.start()
if verbose:
logging.info("Starting server\n")
logging.info("To see the GUI go to: {}://{}:{}".format(scheme, address, port))
if call_on_start is not None:
call_on_start(scheme, address, port)
def add_on_prompt_handler(self, handler):
self.on_prompt_handlers.append(handler)
def trigger_on_prompt(self, json_data):
for handler in self.on_prompt_handlers:
try:
json_data = handler(json_data)
except Exception as e:
logging.warning(f"[ERROR] An error occurred during the on_prompt_handler processing")
logging.warning(traceback.format_exc())
return json_data

View File

@ -0,0 +1,198 @@
import logging
import argparse
import enum
import comfy.options
class EnumAction(argparse.Action):
"""
Argparse action for handling Enums
"""
def __init__(self, **kwargs):
# Pop off the type value
enum_type = kwargs.pop("type", None)
# Ensure an Enum subclass is provided
if enum_type is None:
raise ValueError(
"type must be assigned an Enum when using EnumAction")
if not issubclass(enum_type, enum.Enum):
raise TypeError("type must be an Enum when using EnumAction")
# Generate choices from the Enum
choices = tuple(e.value for e in enum_type)
kwargs.setdefault("choices", choices)
kwargs.setdefault("metavar", f"[{','.join(list(choices))}]")
super(EnumAction, self).__init__(**kwargs)
self._enum = enum_type
def __call__(self, parser, namespace, values, option_string=None):
# Convert value back into an Enum
value = self._enum(values)
setattr(namespace, self.dest, value)
parser = argparse.ArgumentParser()
parser.add_argument("--listen", type=str, default="127.0.0.1", metavar="IP", nargs="?", const="0.0.0.0",
help="Specify the IP address to listen on (default: 127.0.0.1). If --listen is provided without an argument, it defaults to 0.0.0.0. (listens on all)")
parser.add_argument("--port", type=int, default=8188,
help="Set the listen port.")
parser.add_argument("--tls-keyfile", type=str,
help="Path to TLS (SSL) key file. Enables TLS, makes app accessible at https://... requires --tls-certfile to function")
parser.add_argument("--tls-certfile", type=str,
help="Path to TLS (SSL) certificate file. Enables TLS, makes app accessible at https://... requires --tls-keyfile to function")
parser.add_argument("--enable-cors-header", type=str, default=None, metavar="ORIGIN", nargs="?", const="*",
help="Enable CORS (Cross-Origin Resource Sharing) with optional origin or allow all with default '*'.")
parser.add_argument("--max-upload-size", type=float,
default=100, help="Set the maximum upload size in MB.")
parser.add_argument("--extra-model-paths-config", type=str, default=None, metavar="PATH",
nargs='+', action='append', help="Load one or more extra_model_paths.yaml files.")
parser.add_argument("--output-directory", type=str,
default=None, help="Set the ComfyUI output directory.")
parser.add_argument("--temp-directory", type=str, default=None,
help="Set the ComfyUI temp directory (default is in the ComfyUI directory).")
parser.add_argument("--input-directory", type=str,
default=None, help="Set the ComfyUI input directory.")
parser.add_argument("--auto-launch", action="store_true",
help="Automatically launch ComfyUI in the default browser.")
parser.add_argument("--disable-auto-launch", action="store_true",
help="Disable auto launching the browser.")
parser.add_argument("--cuda-device", type=int, default=None, metavar="DEVICE_ID",
help="Set the id of the cuda device this instance will use.")
cm_group = parser.add_mutually_exclusive_group()
cm_group.add_argument("--cuda-malloc", action="store_true",
help="Enable cudaMallocAsync (enabled by default for torch 2.0 and up).")
cm_group.add_argument("--disable-cuda-malloc",
action="store_true", help="Disable cudaMallocAsync.")
fp_group = parser.add_mutually_exclusive_group()
fp_group.add_argument("--force-fp32", action="store_true",
help="Force fp32 (If this makes your GPU work better please report it).")
fp_group.add_argument("--force-fp16", action="store_true", help="Force fp16.")
fpunet_group = parser.add_mutually_exclusive_group()
fpunet_group.add_argument("--bf16-unet", action="store_true",
help="Run the UNET in bf16. This should only be used for testing stuff.")
fpunet_group.add_argument(
"--fp16-unet", action="store_true", help="Store unet weights in fp16.")
fpunet_group.add_argument("--fp8_e4m3fn-unet", action="store_true",
help="Store unet weights in fp8_e4m3fn.")
fpunet_group.add_argument(
"--fp8_e5m2-unet", action="store_true", help="Store unet weights in fp8_e5m2.")
fpvae_group = parser.add_mutually_exclusive_group()
fpvae_group.add_argument("--fp16-vae", action="store_true",
help="Run the VAE in fp16, might cause black images.")
fpvae_group.add_argument("--fp32-vae", action="store_true",
help="Run the VAE in full precision fp32.")
fpvae_group.add_argument(
"--bf16-vae", action="store_true", help="Run the VAE in bf16.")
parser.add_argument("--cpu-vae", action="store_true",
help="Run the VAE on the CPU.")
fpte_group = parser.add_mutually_exclusive_group()
fpte_group.add_argument("--fp8_e4m3fn-text-enc", action="store_true",
help="Store text encoder weights in fp8 (e4m3fn variant).")
fpte_group.add_argument("--fp8_e5m2-text-enc", action="store_true",
help="Store text encoder weights in fp8 (e5m2 variant).")
fpte_group.add_argument("--fp16-text-enc", action="store_true",
help="Store text encoder weights in fp16.")
fpte_group.add_argument("--fp32-text-enc", action="store_true",
help="Store text encoder weights in fp32.")
parser.add_argument("--directml", type=int, nargs="?",
metavar="DIRECTML_DEVICE", const=-1, help="Use torch-directml.")
parser.add_argument("--disable-ipex-optimize", action="store_true",
help="Disables ipex.optimize when loading models with Intel GPUs.")
class LatentPreviewMethod(enum.Enum):
NoPreviews = "none"
Auto = "auto"
Latent2RGB = "latent2rgb"
TAESD = "taesd"
parser.add_argument("--preview-method", type=LatentPreviewMethod, default=LatentPreviewMethod.NoPreviews,
help="Default preview method for sampler nodes.", action=EnumAction)
attn_group = parser.add_mutually_exclusive_group()
attn_group.add_argument("--use-split-cross-attention", action="store_true",
help="Use the split cross attention optimization. Ignored when xformers is used.")
attn_group.add_argument("--use-quad-cross-attention", action="store_true",
help="Use the sub-quadratic cross attention optimization . Ignored when xformers is used.")
attn_group.add_argument("--use-pytorch-cross-attention", action="store_true",
help="Use the new pytorch 2.0 cross attention function.")
parser.add_argument("--disable-xformers",
action="store_true", help="Disable xformers.")
upcast = parser.add_mutually_exclusive_group()
upcast.add_argument("--force-upcast-attention", action="store_true",
help="Force enable attention upcasting, please report if it fixes black images.")
upcast.add_argument("--dont-upcast-attention", action="store_true",
help="Disable all upcasting of attention. Should be unnecessary except for debugging.")
vram_group = parser.add_mutually_exclusive_group()
vram_group.add_argument("--gpu-only", action="store_true",
help="Store and run everything (text encoders/CLIP models, etc... on the GPU).")
vram_group.add_argument("--highvram", action="store_true",
help="By default models will be unloaded to CPU memory after being used. This option keeps them in GPU memory.")
vram_group.add_argument("--normalvram", action="store_true",
help="Used to force normal vram use if lowvram gets automatically enabled.")
vram_group.add_argument("--lowvram", action="store_true",
help="Split the unet in parts to use less vram.")
vram_group.add_argument("--novram", action="store_true",
help="When lowvram isn't enough.")
vram_group.add_argument("--cpu", action="store_true",
help="To use the CPU for everything (slow).")
parser.add_argument("--disable-smart-memory", action="store_true",
help="Force ComfyUI to agressively offload to regular ram instead of keeping models in vram when it can.")
parser.add_argument("--deterministic", action="store_true",
help="Make pytorch use slower deterministic algorithms when it can. Note that this might not make images deterministic in all cases.")
parser.add_argument("--dont-print-server", action="store_true",
help="Don't print server output.")
parser.add_argument("--quick-test-for-ci",
action="store_true", help="Quick test for CI.")
parser.add_argument("--windows-standalone-build", action="store_true",
help="Windows standalone build: Enable convenient things that most people using the standalone windows build will probably enjoy (like auto opening the page on startup).")
parser.add_argument("--disable-metadata", action="store_true",
help="Disable saving prompt metadata in files.")
parser.add_argument("--multi-user", action="store_true",
help="Enables per-user storage.")
parser.add_argument("--verbose", action="store_true",
help="Enables more debug prints.")
if comfy.options.args_parsing:
args = parser.parse_args()
else:
args = parser.parse_args([])
if args.windows_standalone_build:
args.auto_launch = True
if args.disable_auto_launch:
args.auto_launch = False
logging_level = logging.INFO
if args.verbose:
logging_level = logging.DEBUG
logging.basicConfig(format="%(message)s", level=logging_level)

View File

@ -1,18 +1,22 @@
import logging
import argparse
import enum
import comfy.options
class EnumAction(argparse.Action):
"""
Argparse action for handling Enums
"""
def __init__(self, **kwargs):
# Pop off the type value
enum_type = kwargs.pop("type", None)
# Ensure an Enum subclass is provided
if enum_type is None:
raise ValueError("type must be assigned an Enum when using EnumAction")
raise ValueError(
"type must be assigned an Enum when using EnumAction")
if not issubclass(enum_type, enum.Enum):
raise TypeError("type must be an Enum when using EnumAction")
@ -33,51 +37,83 @@ class EnumAction(argparse.Action):
parser = argparse.ArgumentParser()
parser.add_argument("--listen", type=str, default="127.0.0.1", metavar="IP", nargs="?", const="0.0.0.0", help="Specify the IP address to listen on (default: 127.0.0.1). If --listen is provided without an argument, it defaults to 0.0.0.0. (listens on all)")
parser.add_argument("--port", type=int, default=8188, help="Set the listen port.")
parser.add_argument("--enable-cors-header", type=str, default=None, metavar="ORIGIN", nargs="?", const="*", help="Enable CORS (Cross-Origin Resource Sharing) with optional origin or allow all with default '*'.")
parser.add_argument("--max-upload-size", type=float, default=100, help="Set the maximum upload size in MB.")
parser.add_argument("--listen", type=str, default="127.0.0.1", metavar="IP", nargs="?", const="0.0.0.0",
help="Specify the IP address to listen on (default: 127.0.0.1). If --listen is provided without an argument, it defaults to 0.0.0.0. (listens on all)")
parser.add_argument("--port", type=int, default=8188,
help="Set the listen port.")
parser.add_argument("--tls-keyfile", type=str,
help="Path to TLS (SSL) key file. Enables TLS, makes app accessible at https://... requires --tls-certfile to function")
parser.add_argument("--tls-certfile", type=str,
help="Path to TLS (SSL) certificate file. Enables TLS, makes app accessible at https://... requires --tls-keyfile to function")
parser.add_argument("--enable-cors-header", type=str, default=None, metavar="ORIGIN", nargs="?", const="*",
help="Enable CORS (Cross-Origin Resource Sharing) with optional origin or allow all with default '*'.")
parser.add_argument("--max-upload-size", type=float,
default=100, help="Set the maximum upload size in MB.")
parser.add_argument("--extra-model-paths-config", type=str, default=None, metavar="PATH", nargs='+', action='append', help="Load one or more extra_model_paths.yaml files.")
parser.add_argument("--output-directory", type=str, default=None, help="Set the ComfyUI output directory.")
parser.add_argument("--temp-directory", type=str, default=None, help="Set the ComfyUI temp directory (default is in the ComfyUI directory).")
parser.add_argument("--input-directory", type=str, default=None, help="Set the ComfyUI input directory.")
parser.add_argument("--auto-launch", action="store_true", help="Automatically launch ComfyUI in the default browser.")
parser.add_argument("--disable-auto-launch", action="store_true", help="Disable auto launching the browser.")
parser.add_argument("--cuda-device", type=int, default=None, metavar="DEVICE_ID", help="Set the id of the cuda device this instance will use.")
parser.add_argument("--extra-model-paths-config", type=str, default=None, metavar="PATH",
nargs='+', action='append', help="Load one or more extra_model_paths.yaml files.")
parser.add_argument("--output-directory", type=str,
default=None, help="Set the ComfyUI output directory.")
parser.add_argument("--temp-directory", type=str, default=None,
help="Set the ComfyUI temp directory (default is in the ComfyUI directory).")
parser.add_argument("--input-directory", type=str,
default=None, help="Set the ComfyUI input directory.")
parser.add_argument("--auto-launch", action="store_true",
help="Automatically launch ComfyUI in the default browser.")
parser.add_argument("--disable-auto-launch", action="store_true",
help="Disable auto launching the browser.")
parser.add_argument("--cuda-device", type=int, default=None, metavar="DEVICE_ID",
help="Set the id of the cuda device this instance will use.")
cm_group = parser.add_mutually_exclusive_group()
cm_group.add_argument("--cuda-malloc", action="store_true", help="Enable cudaMallocAsync (enabled by default for torch 2.0 and up).")
cm_group.add_argument("--disable-cuda-malloc", action="store_true", help="Disable cudaMallocAsync.")
cm_group.add_argument("--cuda-malloc", action="store_true",
help="Enable cudaMallocAsync (enabled by default for torch 2.0 and up).")
cm_group.add_argument("--disable-cuda-malloc",
action="store_true", help="Disable cudaMallocAsync.")
parser.add_argument("--dont-upcast-attention", action="store_true", help="Disable upcasting of attention. Can boost speed but increase the chances of black images.")
fp_group = parser.add_mutually_exclusive_group()
fp_group.add_argument("--force-fp32", action="store_true", help="Force fp32 (If this makes your GPU work better please report it).")
fp_group.add_argument("--force-fp32", action="store_true",
help="Force fp32 (If this makes your GPU work better please report it).")
fp_group.add_argument("--force-fp16", action="store_true", help="Force fp16.")
fpunet_group = parser.add_mutually_exclusive_group()
fpunet_group.add_argument("--bf16-unet", action="store_true", help="Run the UNET in bf16. This should only be used for testing stuff.")
fpunet_group.add_argument("--fp16-unet", action="store_true", help="Store unet weights in fp16.")
fpunet_group.add_argument("--fp8_e4m3fn-unet", action="store_true", help="Store unet weights in fp8_e4m3fn.")
fpunet_group.add_argument("--fp8_e5m2-unet", action="store_true", help="Store unet weights in fp8_e5m2.")
fpunet_group.add_argument("--bf16-unet", action="store_true",
help="Run the UNET in bf16. This should only be used for testing stuff.")
fpunet_group.add_argument(
"--fp16-unet", action="store_true", help="Store unet weights in fp16.")
fpunet_group.add_argument("--fp8_e4m3fn-unet", action="store_true",
help="Store unet weights in fp8_e4m3fn.")
fpunet_group.add_argument(
"--fp8_e5m2-unet", action="store_true", help="Store unet weights in fp8_e5m2.")
fpvae_group = parser.add_mutually_exclusive_group()
fpvae_group.add_argument("--fp16-vae", action="store_true", help="Run the VAE in fp16, might cause black images.")
fpvae_group.add_argument("--fp32-vae", action="store_true", help="Run the VAE in full precision fp32.")
fpvae_group.add_argument("--bf16-vae", action="store_true", help="Run the VAE in bf16.")
fpvae_group.add_argument("--fp16-vae", action="store_true",
help="Run the VAE in fp16, might cause black images.")
fpvae_group.add_argument("--fp32-vae", action="store_true",
help="Run the VAE in full precision fp32.")
fpvae_group.add_argument(
"--bf16-vae", action="store_true", help="Run the VAE in bf16.")
parser.add_argument("--cpu-vae", action="store_true", help="Run the VAE on the CPU.")
parser.add_argument("--cpu-vae", action="store_true",
help="Run the VAE on the CPU.")
fpte_group = parser.add_mutually_exclusive_group()
fpte_group.add_argument("--fp8_e4m3fn-text-enc", action="store_true", help="Store text encoder weights in fp8 (e4m3fn variant).")
fpte_group.add_argument("--fp8_e5m2-text-enc", action="store_true", help="Store text encoder weights in fp8 (e5m2 variant).")
fpte_group.add_argument("--fp16-text-enc", action="store_true", help="Store text encoder weights in fp16.")
fpte_group.add_argument("--fp32-text-enc", action="store_true", help="Store text encoder weights in fp32.")
fpte_group.add_argument("--fp8_e4m3fn-text-enc", action="store_true",
help="Store text encoder weights in fp8 (e4m3fn variant).")
fpte_group.add_argument("--fp8_e5m2-text-enc", action="store_true",
help="Store text encoder weights in fp8 (e5m2 variant).")
fpte_group.add_argument("--fp16-text-enc", action="store_true",
help="Store text encoder weights in fp16.")
fpte_group.add_argument("--fp32-text-enc", action="store_true",
help="Store text encoder weights in fp32.")
parser.add_argument("--directml", type=int, nargs="?", metavar="DIRECTML_DEVICE", const=-1, help="Use torch-directml.")
parser.add_argument("--directml", type=int, nargs="?",
metavar="DIRECTML_DEVICE", const=-1, help="Use torch-directml.")
parser.add_argument("--disable-ipex-optimize", action="store_true",
help="Disables ipex.optimize when loading models with Intel GPUs.")
parser.add_argument("--disable-ipex-optimize", action="store_true", help="Disables ipex.optimize when loading models with Intel GPUs.")
class LatentPreviewMethod(enum.Enum):
NoPreviews = "none"
@ -85,36 +121,63 @@ class LatentPreviewMethod(enum.Enum):
Latent2RGB = "latent2rgb"
TAESD = "taesd"
parser.add_argument("--preview-method", type=LatentPreviewMethod, default=LatentPreviewMethod.NoPreviews, help="Default preview method for sampler nodes.", action=EnumAction)
parser.add_argument("--preview-method", type=LatentPreviewMethod, default=LatentPreviewMethod.NoPreviews,
help="Default preview method for sampler nodes.", action=EnumAction)
attn_group = parser.add_mutually_exclusive_group()
attn_group.add_argument("--use-split-cross-attention", action="store_true", help="Use the split cross attention optimization. Ignored when xformers is used.")
attn_group.add_argument("--use-quad-cross-attention", action="store_true", help="Use the sub-quadratic cross attention optimization . Ignored when xformers is used.")
attn_group.add_argument("--use-pytorch-cross-attention", action="store_true", help="Use the new pytorch 2.0 cross attention function.")
attn_group.add_argument("--use-split-cross-attention", action="store_true",
help="Use the split cross attention optimization. Ignored when xformers is used.")
attn_group.add_argument("--use-quad-cross-attention", action="store_true",
help="Use the sub-quadratic cross attention optimization . Ignored when xformers is used.")
attn_group.add_argument("--use-pytorch-cross-attention", action="store_true",
help="Use the new pytorch 2.0 cross attention function.")
parser.add_argument("--disable-xformers",
action="store_true", help="Disable xformers.")
upcast = parser.add_mutually_exclusive_group()
upcast.add_argument("--force-upcast-attention", action="store_true",
help="Force enable attention upcasting, please report if it fixes black images.")
upcast.add_argument("--dont-upcast-attention", action="store_true",
help="Disable all upcasting of attention. Should be unnecessary except for debugging.")
parser.add_argument("--disable-xformers", action="store_true", help="Disable xformers.")
vram_group = parser.add_mutually_exclusive_group()
vram_group.add_argument("--gpu-only", action="store_true", help="Store and run everything (text encoders/CLIP models, etc... on the GPU).")
vram_group.add_argument("--highvram", action="store_true", help="By default models will be unloaded to CPU memory after being used. This option keeps them in GPU memory.")
vram_group.add_argument("--normalvram", action="store_true", help="Used to force normal vram use if lowvram gets automatically enabled.")
vram_group.add_argument("--lowvram", action="store_true", help="Split the unet in parts to use less vram.")
vram_group.add_argument("--novram", action="store_true", help="When lowvram isn't enough.")
vram_group.add_argument("--cpu", action="store_true", help="To use the CPU for everything (slow).")
vram_group.add_argument("--gpu-only", action="store_true",
help="Store and run everything (text encoders/CLIP models, etc... on the GPU).")
vram_group.add_argument("--highvram", action="store_true",
help="By default models will be unloaded to CPU memory after being used. This option keeps them in GPU memory.")
vram_group.add_argument("--normalvram", action="store_true",
help="Used to force normal vram use if lowvram gets automatically enabled.")
vram_group.add_argument("--lowvram", action="store_true",
help="Split the unet in parts to use less vram.")
vram_group.add_argument("--novram", action="store_true",
help="When lowvram isn't enough.")
vram_group.add_argument("--cpu", action="store_true",
help="To use the CPU for everything (slow).")
parser.add_argument("--disable-smart-memory", action="store_true", help="Force ComfyUI to agressively offload to regular ram instead of keeping models in vram when it can.")
parser.add_argument("--deterministic", action="store_true", help="Make pytorch use slower deterministic algorithms when it can. Note that this might not make images deterministic in all cases.")
parser.add_argument("--disable-smart-memory", action="store_true",
help="Force ComfyUI to agressively offload to regular ram instead of keeping models in vram when it can.")
parser.add_argument("--deterministic", action="store_true",
help="Make pytorch use slower deterministic algorithms when it can. Note that this might not make images deterministic in all cases.")
parser.add_argument("--dont-print-server", action="store_true", help="Don't print server output.")
parser.add_argument("--quick-test-for-ci", action="store_true", help="Quick test for CI.")
parser.add_argument("--windows-standalone-build", action="store_true", help="Windows standalone build: Enable convenient things that most people using the standalone windows build will probably enjoy (like auto opening the page on startup).")
parser.add_argument("--dont-print-server", action="store_true",
help="Don't print server output.")
parser.add_argument("--quick-test-for-ci",
action="store_true", help="Quick test for CI.")
parser.add_argument("--windows-standalone-build", action="store_true",
help="Windows standalone build: Enable convenient things that most people using the standalone windows build will probably enjoy (like auto opening the page on startup).")
parser.add_argument("--disable-metadata", action="store_true", help="Disable saving prompt metadata in files.")
parser.add_argument("--disable-metadata", action="store_true",
help="Disable saving prompt metadata in files.")
parser.add_argument("--multi-user", action="store_true", help="Enables per-user storage.")
parser.add_argument("--multi-user", action="store_true",
help="Enables per-user storage.")
parser.add_argument("--verbose", action="store_true", help="Enables more debug prints.")
parser.add_argument("--verbose", action="store_true",
help="Enables more debug prints.")
if comfy.options.args_parsing:
@ -128,7 +191,6 @@ if args.windows_standalone_build:
if args.disable_auto_launch:
args.auto_launch = False
import logging
logging_level = logging.INFO
if args.verbose:
logging_level = logging.DEBUG

6413
comfyui_6006.log Normal file

File diff suppressed because it is too large Load Diff

246
comfyui_6006.prev.log Normal file
View File

@ -0,0 +1,246 @@
** ComfyUI startup time: 2024-07-04 23:22:02.847062
[2024-07-04 23:22] ** Platform: Linux
[2024-07-04 23:22] ** Python version: 3.10.8 (main, Nov 24 2022, 14:13:03) [GCC 11.2.0]
[2024-07-04 23:22] ** Python executable: /root/miniconda3/bin/python
[2024-07-04 23:22] ** Log path: /root/ComfyUI/comfyui.log
[2024-07-04 23:22]
Prestartup times for custom nodes:
[2024-07-04 23:22] 0.3 seconds: /root/ComfyUI/custom_nodes/ComfyUI-Manager
[2024-07-04 23:22]
Total VRAM 24217 MB, total RAM 515689 MB
[2024-07-04 23:22] xformers version: 0.0.22.post4
[2024-07-04 23:22] Set vram state to: NORMAL_VRAM
[2024-07-04 23:22] Device: cuda:0 NVIDIA GeForce RTX 4090 : cudaMallocAsync
[2024-07-04 23:22] VAE dtype: torch.bfloat16
[2024-07-04 23:22] Using xformers cross attention
[2024-07-04 23:22] Adding extra search path checkpoints /root/autodl-tmp/models/checkpoint
[2024-07-04 23:22] Adding extra search path configs /root/autodl-tmp/models/checkpoint
[2024-07-04 23:22] Adding extra search path vae /root/autodl-tmp/models/vae
[2024-07-04 23:22] Adding extra search path loras /root/autodl-tmp/models/lora
[2024-07-04 23:22] Adding extra search path loras /root/autodl-tmp/models/ip_adapter_faceid/lora
[2024-07-04 23:22] Adding extra search path upscale_models /root/autodl-tmp/models/upscaler
[2024-07-04 23:22] Adding extra search path embeddings /root/autodl-tmp/models/embeddings
[2024-07-04 23:22] Adding extra search path hypernetworks /root/autodl-tmp/models/embeddings
[2024-07-04 23:22] Adding extra search path controlnet /root/autodl-tmp/models/controlnet
[2024-07-04 23:22] Adding extra search path ipadapter /root/autodl-tmp/models/ip_adapter_faceid/models
[2024-07-04 23:22] Adding extra search path ipadapter /root/autodl-tmp/models/ip_adapter
[2024-07-04 23:22] Adding extra search path clip_vision /root/autodl-tmp/models/clip_vision
[2024-07-04 23:22] Adding extra search path checkpoints /root/autodl-fs/models/checkpoint
[2024-07-04 23:22] Adding extra search path configs /root/autodl-fs/models/checkpoint
[2024-07-04 23:22] Adding extra search path vae /root/autodl-fs/models/vae
[2024-07-04 23:22] Adding extra search path loras /root/autodl-fs/models/lora
[2024-07-04 23:22] Adding extra search path loras /root/autodl-fs/models/ip_adapter_faceid/lora
[2024-07-04 23:22] Adding extra search path upscale_models /root/autodl-fs/models/upscaler
[2024-07-04 23:22] Adding extra search path embeddings /root/autodl-fs/models/embeddings
[2024-07-04 23:22] Adding extra search path hypernetworks /root/autodl-fs/models/embeddings
[2024-07-04 23:22] Adding extra search path controlnet /root/autodl-fs/models/controlnet
[2024-07-04 23:22] Adding extra search path ipadapter /root/autodl-fs/models/ip_adapter_faceid/models
[2024-07-04 23:22] Adding extra search path ipadapter /root/autodl-fs/models/ip_adapter
[2024-07-04 23:22] Adding extra search path clip_vision /root/autodl-fs/models/clip_vision
[2024-07-04 23:22] ### Loading: ComfyUI-Impact-Pack (V4.85.2)
[2024-07-04 23:22] ### Loading: ComfyUI-Impact-Pack (Subpack: V0.4)
[2024-07-04 23:22] [Impact Pack] Wildcards loading done.
[2024-07-04 23:22] WAS Node Suite: BlenderNeko's Advanced CLIP Text Encode found, attempting to enable `CLIPTextEncode` support.
[2024-07-04 23:22] WAS Node Suite: `CLIPTextEncode (BlenderNeko Advanced + NSP)` node enabled under `WAS Suite/Conditioning` menu.
[2024-07-04 23:22] WAS Node Suite: OpenCV Python FFMPEG support is enabled
[2024-07-04 23:22] WAS Node Suite Warning: `ffmpeg_bin_path` is not set in `/root/ComfyUI/custom_nodes/was-node-suite-comfyui/was_suite_config.json` config file. Will attempt to use system ffmpeg binaries if available.
[2024-07-04 23:22] WAS Node Suite: Finished. Loaded 212 nodes successfully.
[2024-07-04 23:22]
"Life is 10% what happens to us and 90% how we react to it." - Charles R. Swindoll
[2024-07-04 23:22]
[2024-07-04 23:22] /root/miniconda3/lib/python3.10/site-packages/numba/np/ufunc/parallel.py:371: NumbaWarning: The TBB threading layer requires TBB version 2021 update 6 or later i.e., TBB_INTERFACE_VERSION >= 12060. Found TBB_INTERFACE_VERSION = 12050. The TBB threading layer is disabled.
warnings.warn(problem)
[2024-07-04 23:22] [tinyterraNodes] Loaded
[2024-07-04 23:22] [comfyui_controlnet_aux] | INFO -> Using ckpts path: /root/ComfyUI/custom_nodes/comfyui_controlnet_aux/ckpts
[2024-07-04 23:22] [comfyui_controlnet_aux] | INFO -> Using symlinks: False
[2024-07-04 23:22] [comfyui_controlnet_aux] | INFO -> Using ort providers: ['CUDAExecutionProvider', 'DirectMLExecutionProvider', 'OpenVINOExecutionProvider', 'ROCMExecutionProvider', 'CPUExecutionProvider', 'CoreMLExecutionProvider']
[2024-07-04 23:22] /root/miniconda3/lib/python3.10/site-packages/diffusers/models/unet_2d_blocks.py:249: FutureWarning: `AutoencoderTinyBlock` is deprecated and will be removed in version 0.29. Importing `AutoencoderTinyBlock` from `diffusers.models.unet_2d_blocks` is deprecated and this will be removed in a future version. Please use `from diffusers.models.unets.unet_2d_blocks import AutoencoderTinyBlock`, instead.
deprecate("AutoencoderTinyBlock", "0.29", deprecation_message)
[2024-07-04 23:22] /root/miniconda3/lib/python3.10/site-packages/diffusers/models/unet_2d_blocks.py:254: FutureWarning: `UNetMidBlock2D` is deprecated and will be removed in version 0.29. Importing `UNetMidBlock2D` from `diffusers.models.unet_2d_blocks` is deprecated and this will be removed in a future version. Please use `from diffusers.models.unets.unet_2d_blocks import UNetMidBlock2D`, instead.
deprecate("UNetMidBlock2D", "0.29", deprecation_message)
[2024-07-04 23:22] /root/miniconda3/lib/python3.10/site-packages/diffusers/models/unet_2d_blocks.py:259: FutureWarning: `UNetMidBlock2DCrossAttn` is deprecated and will be removed in version 0.29. Importing `UNetMidBlock2DCrossAttn` from `diffusers.models.unet_2d_blocks` is deprecated and this will be removed in a future version. Please use `from diffusers.models.unets.unet_2d_blocks import UNetMidBlock2DCrossAttn`, instead.
deprecate("UNetMidBlock2DCrossAttn", "0.29", deprecation_message)
[2024-07-04 23:22] /root/miniconda3/lib/python3.10/site-packages/diffusers/models/unet_2d_blocks.py:264: FutureWarning: `UNetMidBlock2DSimpleCrossAttn` is deprecated and will be removed in version 0.29. Importing `UNetMidBlock2DSimpleCrossAttn` from `diffusers.models.unet_2d_blocks` is deprecated and this will be removed in a future version. Please use `from diffusers.models.unets.unet_2d_blocks import UNetMidBlock2DSimpleCrossAttn`, instead.
deprecate("UNetMidBlock2DSimpleCrossAttn", "0.29", deprecation_message)
[2024-07-04 23:22] /root/miniconda3/lib/python3.10/site-packages/diffusers/models/unet_2d_blocks.py:269: FutureWarning: `AttnDownBlock2D` is deprecated and will be removed in version 0.29. Importing `AttnDownBlock2D` from `diffusers.models.unet_2d_blocks` is deprecated and this will be removed in a future version. Please use `from diffusers.models.unets.unet_2d_blocks import AttnDownBlock2D`, instead.
deprecate("AttnDownBlock2D", "0.29", deprecation_message)
[2024-07-04 23:22] /root/miniconda3/lib/python3.10/site-packages/diffusers/models/unet_2d_blocks.py:274: FutureWarning: `CrossAttnDownBlock2D` is deprecated and will be removed in version 0.29. Importing `AttnDownBlock2D` from `diffusers.models.unet_2d_blocks` is deprecated and this will be removed in a future version. Please use `from diffusers.models.unets.unet_2d_blocks import CrossAttnDownBlock2D`, instead.
deprecate("CrossAttnDownBlock2D", "0.29", deprecation_message)
[2024-07-04 23:22] /root/miniconda3/lib/python3.10/site-packages/diffusers/models/unet_2d_blocks.py:279: FutureWarning: `DownBlock2D` is deprecated and will be removed in version 0.29. Importing `DownBlock2D` from `diffusers.models.unet_2d_blocks` is deprecated and this will be removed in a future version. Please use `from diffusers.models.unets.unet_2d_blocks import DownBlock2D`, instead.
deprecate("DownBlock2D", "0.29", deprecation_message)
[2024-07-04 23:22] /root/miniconda3/lib/python3.10/site-packages/diffusers/models/unet_2d_blocks.py:284: FutureWarning: `AttnDownEncoderBlock2D` is deprecated and will be removed in version 0.29. Importing `AttnDownEncoderBlock2D` from `diffusers.models.unet_2d_blocks` is deprecated and this will be removed in a future version. Please use `from diffusers.models.unets.unet_2d_blocks import AttnDownEncoderBlock2D`, instead.
deprecate("AttnDownEncoderBlock2D", "0.29", deprecation_message)
[2024-07-04 23:22] /root/miniconda3/lib/python3.10/site-packages/diffusers/models/unet_2d_blocks.py:289: FutureWarning: `AttnSkipDownBlock2D` is deprecated and will be removed in version 0.29. Importing `AttnSkipDownBlock2D` from `diffusers.models.unet_2d_blocks` is deprecated and this will be removed in a future version. Please use `from diffusers.models.unets.unet_2d_blocks import AttnSkipDownBlock2D`, instead.
deprecate("AttnSkipDownBlock2D", "0.29", deprecation_message)
[2024-07-04 23:22] /root/miniconda3/lib/python3.10/site-packages/diffusers/models/unet_2d_blocks.py:294: FutureWarning: `SkipDownBlock2D` is deprecated and will be removed in version 0.29. Importing `SkipDownBlock2D` from `diffusers.models.unet_2d_blocks` is deprecated and this will be removed in a future version. Please use `from diffusers.models.unets.unet_2d_blocks import SkipDownBlock2D`, instead.
deprecate("SkipDownBlock2D", "0.29", deprecation_message)
[2024-07-04 23:22] /root/miniconda3/lib/python3.10/site-packages/diffusers/models/unet_2d_blocks.py:299: FutureWarning: `ResnetDownsampleBlock2D` is deprecated and will be removed in version 0.29. Importing `ResnetDownsampleBlock2D` from `diffusers.models.unet_2d_blocks` is deprecated and this will be removed in a future version. Please use `from diffusers.models.unets.unet_2d_blocks import ResnetDownsampleBlock2D`, instead.
deprecate("ResnetDownsampleBlock2D", "0.29", deprecation_message)
[2024-07-04 23:22] /root/miniconda3/lib/python3.10/site-packages/diffusers/models/unet_2d_blocks.py:304: FutureWarning: `SimpleCrossAttnDownBlock2D` is deprecated and will be removed in version 0.29. Importing `SimpleCrossAttnDownBlock2D` from `diffusers.models.unet_2d_blocks` is deprecated and this will be removed in a future version. Please use `from diffusers.models.unets.unet_2d_blocks import SimpleCrossAttnDownBlock2D`, instead.
deprecate("SimpleCrossAttnDownBlock2D", "0.29", deprecation_message)
[2024-07-04 23:22] /root/miniconda3/lib/python3.10/site-packages/diffusers/models/unet_2d_blocks.py:309: FutureWarning: `KDownBlock2D` is deprecated and will be removed in version 0.29. Importing `KDownBlock2D` from `diffusers.models.unet_2d_blocks` is deprecated and this will be removed in a future version. Please use `from diffusers.models.unets.unet_2d_blocks import KDownBlock2D`, instead.
deprecate("KDownBlock2D", "0.29", deprecation_message)
[2024-07-04 23:22] /root/miniconda3/lib/python3.10/site-packages/diffusers/models/unet_2d_blocks.py:314: FutureWarning: `KCrossAttnDownBlock2D` is deprecated and will be removed in version 0.29. Importing `KCrossAttnDownBlock2D` from `diffusers.models.unet_2d_blocks` is deprecated and this will be removed in a future version. Please use `from diffusers.models.unets.unet_2d_blocks import KCrossAttnDownBlock2D`, instead.
deprecate("KCrossAttnDownBlock2D", "0.29", deprecation_message)
[2024-07-04 23:22] /root/miniconda3/lib/python3.10/site-packages/diffusers/models/unet_2d_blocks.py:319: FutureWarning: `AttnUpBlock2D` is deprecated and will be removed in version 0.29. Importing `AttnUpBlock2D` from `diffusers.models.unet_2d_blocks` is deprecated and this will be removed in a future version. Please use `from diffusers.models.unets.unet_2d_blocks import AttnUpBlock2D`, instead.
deprecate("AttnUpBlock2D", "0.29", deprecation_message)
[2024-07-04 23:22] /root/miniconda3/lib/python3.10/site-packages/diffusers/models/unet_2d_blocks.py:324: FutureWarning: `CrossAttnUpBlock2D` is deprecated and will be removed in version 0.29. Importing `CrossAttnUpBlock2D` from `diffusers.models.unet_2d_blocks` is deprecated and this will be removed in a future version. Please use `from diffusers.models.unets.unet_2d_blocks import CrossAttnUpBlock2D`, instead.
deprecate("CrossAttnUpBlock2D", "0.29", deprecation_message)
[2024-07-04 23:22] /root/miniconda3/lib/python3.10/site-packages/diffusers/models/unet_2d_blocks.py:329: FutureWarning: `UpBlock2D` is deprecated and will be removed in version 0.29. Importing `UpBlock2D` from `diffusers.models.unet_2d_blocks` is deprecated and this will be removed in a future version. Please use `from diffusers.models.unets.unet_2d_blocks import UpBlock2D`, instead.
deprecate("UpBlock2D", "0.29", deprecation_message)
[2024-07-04 23:22] /root/miniconda3/lib/python3.10/site-packages/diffusers/models/unet_2d_blocks.py:334: FutureWarning: `UpDecoderBlock2D` is deprecated and will be removed in version 0.29. Importing `UpDecoderBlock2D` from `diffusers.models.unet_2d_blocks` is deprecated and this will be removed in a future version. Please use `from diffusers.models.unets.unet_2d_blocks import UpDecoderBlock2D`, instead.
deprecate("UpDecoderBlock2D", "0.29", deprecation_message)
[2024-07-04 23:22] /root/miniconda3/lib/python3.10/site-packages/diffusers/models/unet_2d_blocks.py:339: FutureWarning: `AttnUpDecoderBlock2D` is deprecated and will be removed in version 0.29. Importing `AttnUpDecoderBlock2D` from `diffusers.models.unet_2d_blocks` is deprecated and this will be removed in a future version. Please use `from diffusers.models.unets.unet_2d_blocks import AttnUpDecoderBlock2D`, instead.
deprecate("AttnUpDecoderBlock2D", "0.29", deprecation_message)
[2024-07-04 23:22] /root/miniconda3/lib/python3.10/site-packages/diffusers/models/unet_2d_blocks.py:344: FutureWarning: `AttnSkipUpBlock2D` is deprecated and will be removed in version 0.29. Importing `AttnSkipUpBlock2D` from `diffusers.models.unet_2d_blocks` is deprecated and this will be removed in a future version. Please use `from diffusers.models.unets.unet_2d_blocks import AttnSkipUpBlock2D`, instead.
deprecate("AttnSkipUpBlock2D", "0.29", deprecation_message)
[2024-07-04 23:22] /root/miniconda3/lib/python3.10/site-packages/diffusers/models/unet_2d_blocks.py:349: FutureWarning: `SkipUpBlock2D` is deprecated and will be removed in version 0.29. Importing `SkipUpBlock2D` from `diffusers.models.unet_2d_blocks` is deprecated and this will be removed in a future version. Please use `from diffusers.models.unets.unet_2d_blocks import SkipUpBlock2D`, instead.
deprecate("SkipUpBlock2D", "0.29", deprecation_message)
[2024-07-04 23:22] /root/miniconda3/lib/python3.10/site-packages/diffusers/models/unet_2d_blocks.py:354: FutureWarning: `ResnetUpsampleBlock2D` is deprecated and will be removed in version 0.29. Importing `ResnetUpsampleBlock2D` from `diffusers.models.unet_2d_blocks` is deprecated and this will be removed in a future version. Please use `from diffusers.models.unets.unet_2d_blocks import ResnetUpsampleBlock2D`, instead.
deprecate("ResnetUpsampleBlock2D", "0.29", deprecation_message)
[2024-07-04 23:22] /root/miniconda3/lib/python3.10/site-packages/diffusers/models/unet_2d_blocks.py:359: FutureWarning: `SimpleCrossAttnUpBlock2D` is deprecated and will be removed in version 0.29. Importing `SimpleCrossAttnUpBlock2D` from `diffusers.models.unet_2d_blocks` is deprecated and this will be removed in a future version. Please use `from diffusers.models.unets.unet_2d_blocks import SimpleCrossAttnUpBlock2D`, instead.
deprecate("SimpleCrossAttnUpBlock2D", "0.29", deprecation_message)
[2024-07-04 23:22] /root/miniconda3/lib/python3.10/site-packages/diffusers/models/unet_2d_blocks.py:364: FutureWarning: `KUpBlock2D` is deprecated and will be removed in version 0.29. Importing `KUpBlock2D` from `diffusers.models.unet_2d_blocks` is deprecated and this will be removed in a future version. Please use `from diffusers.models.unets.unet_2d_blocks import KUpBlock2D`, instead.
deprecate("KUpBlock2D", "0.29", deprecation_message)
[2024-07-04 23:22] /root/miniconda3/lib/python3.10/site-packages/diffusers/models/unet_2d_blocks.py:369: FutureWarning: `KCrossAttnUpBlock2D` is deprecated and will be removed in version 0.29. Importing `KCrossAttnUpBlock2D` from `diffusers.models.unet_2d_blocks` is deprecated and this will be removed in a future version. Please use `from diffusers.models.unets.unet_2d_blocks import KCrossAttnUpBlock2D`, instead.
deprecate("KCrossAttnUpBlock2D", "0.29", deprecation_message)
[2024-07-04 23:22] /root/miniconda3/lib/python3.10/site-packages/diffusers/models/unet_2d_blocks.py:375: FutureWarning: `KAttentionBlock` is deprecated and will be removed in version 0.29. Importing `KAttentionBlock` from `diffusers.models.unet_2d_blocks` is deprecated and this will be removed in a future version. Please use `from diffusers.models.unets.unet_2d_blocks import KAttentionBlock`, instead.
deprecate("KAttentionBlock", "0.29", deprecation_message)
[2024-07-04 23:22] FizzleDorf Custom Nodes: Loaded
[2024-07-04 23:22] ### Loading: ComfyUI-Inspire-Pack (V0.69.2)
[2024-07-04 23:22] [Power Noise Suite]: 🦚🦚🦚 Sup. 🦚🦚🦚
[2024-07-04 23:22] [Power Noise Suite]: Tamed 11 wild nodes.
[2024-07-04 23:22] (pysssss:WD14Tagger) [DEBUG] Available ORT providers: TensorrtExecutionProvider, CUDAExecutionProvider, AzureExecutionProvider, CPUExecutionProvider
[2024-07-04 23:22] (pysssss:WD14Tagger) [DEBUG] Using ORT providers: CUDAExecutionProvider, CPUExecutionProvider
[2024-07-04 23:22] Use STYLE:weight_interpretation:normalization at the start of a prompt to use advanced encodings
[2024-07-04 23:22] Weight interpretations available: comfy,A1111,compel,comfy++,down_weight,perp
[2024-07-04 23:22] Normalization types available: none,mean,length,length+mean
[2024-07-04 23:22] Total VRAM 24217 MB, total RAM 515689 MB
[2024-07-04 23:22] xformers version: 0.0.22.post4
[2024-07-04 23:22] Set vram state to: NORMAL_VRAM
[2024-07-04 23:22] Device: cuda:0 NVIDIA GeForce RTX 4090 : cudaMallocAsync
[2024-07-04 23:22] VAE dtype: torch.bfloat16
[2024-07-04 23:22] ### Loading: ComfyUI-Manager (V2.13.1)
[2024-07-04 23:22] ### ComfyUI Revision: 2096 [6c6a3925] | Released on '2024-04-02'
[2024-07-04 23:22] Efficiency Nodes: Attempting to add Control Net options to the 'HiRes-Fix Script' Node (comfyui_controlnet_aux add-on)...Success!
[2024-07-04 23:22] [Crystools INFO] Crystools version: 1.12.0
[2024-07-04 23:22] [Crystools INFO] CPU: AMD EPYC 7T83 64-Core Processor - Arch: x86_64 - OS: Linux 5.4.0-153-generic
[2024-07-04 23:22] [Crystools INFO] GPU/s:
[2024-07-04 23:22] [Crystools INFO] 0) NVIDIA GeForce RTX 4090
[2024-07-04 23:22] [Crystools INFO] NVIDIA Driver: 535.54.03
[2024-07-04 23:22] ------------------------------------------
[2024-07-04 23:22] Comfyroll Studio v1.76 :  175 Nodes Loaded
[2024-07-04 23:22] ------------------------------------------
[2024-07-04 23:22] ** For changes, please see patch notes at https://github.com/Suzie1/ComfyUI_Comfyroll_CustomNodes/blob/main/Patch_Notes.md
[2024-07-04 23:22] ** For help, please see the wiki at https://github.com/Suzie1/ComfyUI_Comfyroll_CustomNodes/wiki
[2024-07-04 23:22] ------------------------------------------
[2024-07-04 23:22] #fix sys.stdout.isatty
[2024-07-04 23:22] --------------
[2024-07-04 23:22]  ### Mixlab Nodes: Loaded
[2024-07-04 23:22] ChatGPT.available True
[2024-07-04 23:22] edit_mask.available False
[2024-07-04 23:22] ## lama torchscript model not found: /root/ComfyUI/models/lama/big-lama.pt,pls download from https://github.com/enesmsahin/simple-lama-inpainting/releases/download/v0.1.0/big-lama.pt
[2024-07-04 23:22] LaMaInpainting.available True
[2024-07-04 23:22] ## clip_interrogator_model not found: /root/ComfyUI/models/clip_interrogator/Salesforce/blip-image-captioning-base, pls download from https://huggingface.co/Salesforce/blip-image-captioning-base
[2024-07-04 23:22] ClipInterrogator.available True
[2024-07-04 23:22] ## text_generator_model not found: /root/ComfyUI/models/prompt_generator/text2image-prompt-generator, pls download from https://huggingface.co/succinctly/text2image-prompt-generator/tree/main
[2024-07-04 23:22] ## zh_en_model not found: /root/ComfyUI/models/prompt_generator/opus-mt-zh-en, pls download from https://huggingface.co/Helsinki-NLP/opus-mt-zh-en/tree/main
[2024-07-04 23:22] PromptGenerate.available True
[2024-07-04 23:22] ChinesePrompt.available True
[2024-07-04 23:22] RembgNode_.available True
[2024-07-04 23:22] TripoSR.available
[2024-07-04 23:22]  -------------- 
[2024-07-04 23:22] Looking in indexes: http://mirrors.aliyun.com/pypi/simple
[2024-07-04 23:22] [2024-07-04 23:22] WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
[2024-07-04 23:22] Looking in indexes: http://mirrors.aliyun.com/pypi/simple
[2024-07-04 23:22] WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
[2024-07-04 23:22]
Import times for custom nodes:
[2024-07-04 23:22] 0.0 seconds: /root/ComfyUI/custom_nodes/websocket_image_save.py
[2024-07-04 23:22] 0.0 seconds: /root/ComfyUI/custom_nodes/AIGODLIKE-COMFYUI-TRANSLATION
[2024-07-04 23:22] 0.0 seconds: /root/ComfyUI/custom_nodes/ComfyUI-AutomaticCFG
[2024-07-04 23:22] 0.0 seconds: /root/ComfyUI/custom_nodes/ComfyUi_NNLatentUpscale
[2024-07-04 23:22] 0.0 seconds: /root/ComfyUI/custom_nodes/ComfyUI_ADV_CLIP_emb
[2024-07-04 23:22] 0.0 seconds: /root/ComfyUI/custom_nodes/ComfyUi_PromptStylers
[2024-07-04 23:22] 0.0 seconds: /root/ComfyUI/custom_nodes/ComfyUI-WD14-Tagger
[2024-07-04 23:22] 0.0 seconds: /root/ComfyUI/custom_nodes/masquerade-nodes-comfyui
[2024-07-04 23:22] 0.0 seconds: /root/ComfyUI/custom_nodes/PowerNoiseSuite
[2024-07-04 23:22] 0.0 seconds: /root/ComfyUI/custom_nodes/comfyui-portrait-master
[2024-07-04 23:22] 0.0 seconds: /root/ComfyUI/custom_nodes/ComfyUI-Custom-Scripts
[2024-07-04 23:22] 0.0 seconds: /root/ComfyUI/custom_nodes/Derfuu_ComfyUI_ModdedNodes
[2024-07-04 23:22] 0.0 seconds: /root/ComfyUI/custom_nodes/ComfyUI-Advanced-ControlNet
[2024-07-04 23:22] 0.0 seconds: /root/ComfyUI/custom_nodes/ComfyUI-Frame-Interpolation
[2024-07-04 23:22] 0.0 seconds: /root/ComfyUI/custom_nodes/comfyui-browser
[2024-07-04 23:22] 0.0 seconds: /root/ComfyUI/custom_nodes/ComfyUI-Coziness
[2024-07-04 23:22] 0.0 seconds: /root/ComfyUI/custom_nodes/ComfyUI_UltimateSDUpscale
[2024-07-04 23:22] 0.0 seconds: /root/ComfyUI/custom_nodes/ComfyUI-AnimateDiff-Evolved
[2024-07-04 23:22] 0.0 seconds: /root/ComfyUI/custom_nodes/ComfyUI-KJNodes
[2024-07-04 23:22] 0.0 seconds: /root/ComfyUI/custom_nodes/efficiency-nodes-comfyui
[2024-07-04 23:22] 0.0 seconds: /root/ComfyUI/custom_nodes/ComfyUI_IPAdapter_plus
[2024-07-04 23:22] 0.0 seconds: /root/ComfyUI/custom_nodes/comfyui_controlnet_aux
[2024-07-04 23:22] 0.0 seconds: /root/ComfyUI/custom_nodes/ComfyUI_Comfyroll_CustomNodes
[2024-07-04 23:22] 0.0 seconds: /root/ComfyUI/custom_nodes/ComfyUI_smZNodes
[2024-07-04 23:22] 0.1 seconds: /root/ComfyUI/custom_nodes/ComfyUI-VideoHelperSuite
[2024-07-04 23:22] 0.1 seconds: /root/ComfyUI/custom_nodes/ComfyUI-Manager
[2024-07-04 23:22] 0.1 seconds: /root/ComfyUI/custom_nodes/ComfyUI-Inspire-Pack
[2024-07-04 23:22] 0.1 seconds: /root/ComfyUI/custom_nodes/comfyui-prompt-control
[2024-07-04 23:22] 0.1 seconds: /root/ComfyUI/custom_nodes/ComfyUI-layerdiffuse
[2024-07-04 23:22] 0.1 seconds: /root/ComfyUI/custom_nodes/ComfyUI-Gemini
[2024-07-04 23:22] 0.1 seconds: /root/ComfyUI/custom_nodes/comfyui_segment_anything
[2024-07-04 23:22] 0.4 seconds: /root/ComfyUI/custom_nodes/ComfyUI_FizzNodes
[2024-07-04 23:22] 0.4 seconds: /root/ComfyUI/custom_nodes/ComfyUI_tinyterraNodes
[2024-07-04 23:22] 1.1 seconds: /root/ComfyUI/custom_nodes/comfyui-mixlab-nodes
[2024-07-04 23:22] 1.2 seconds: /root/ComfyUI/custom_nodes/ComfyUI-Impact-Pack
[2024-07-04 23:22] 1.4 seconds: /root/ComfyUI/custom_nodes/was-node-suite-comfyui
[2024-07-04 23:22] 2.4 seconds: /root/ComfyUI/custom_nodes/ComfyUI-Crystools
[2024-07-04 23:22] 3.2 seconds: /root/ComfyUI/custom_nodes/ComfyUi-Ollama-YN
[2024-07-04 23:22] 3.2 seconds: /root/ComfyUI/custom_nodes/comfyui-ollama
[2024-07-04 23:22]
https_key OK: /root/ComfyUI/custom_nodes/comfyui-mixlab-nodes/https/certificate.crt /root/ComfyUI/custom_nodes/comfyui-mixlab-nodes/https/private.key
[2024-07-04 23:22]
[2024-07-04 23:22]
Starting server
[2024-07-04 23:22] To see the GUI go to: http://127.0.0.1:6006
[2024-07-04 23:22] To see the GUI go to: https://127.0.0.1:6008
[2024-07-04 23:22] [ComfyUI-Manager] default cache updated: https://raw.githubusercontent.com/ltdrdata/ComfyUI-Manager/main/model-list.json
[2024-07-04 23:22] [ComfyUI-Manager] default cache updated: https://raw.githubusercontent.com/ltdrdata/ComfyUI-Manager/main/extension-node-map.json
[2024-07-04 23:22] [ComfyUI-Manager] default cache updated: https://raw.githubusercontent.com/ltdrdata/ComfyUI-Manager/main/custom-node-list.json
[2024-07-04 23:22] [ComfyUI-Manager] default cache updated: https://raw.githubusercontent.com/ltdrdata/ComfyUI-Manager/main/alter-list.json
[2024-07-04 23:22] FETCH DATA from: /root/ComfyUI/custom_nodes/ComfyUI-Manager/extension-node-map.json
[2024-07-04 23:22] #clip_model_path chatml None
[2024-07-04 23:22] #model
[2024-07-04 23:22] start_local_llm error
[2024-07-04 23:22] data_path: /root/ComfyUI/custom_nodes/comfyui-mixlab-nodes/data
[2024-07-04 23:22] #read_workflow_json_files_all /root/ComfyUI/custom_nodes/comfyui-mixlab-nodes/app/
[2024-07-04 23:27] Use Proxy: http://172.20.0.113:12798
[2024-07-04 23:27] FETCH DATA from: /root/ComfyUI/custom_nodes/ComfyUI-Manager/.cache/1514988643_custom-node-list.json
[2024-07-04 23:27] FETCH DATA from: /root/ComfyUI/custom_nodes/ComfyUI-Manager/.cache/1742899825_extension-node-map.json
[2024-07-04 23:27] FETCH DATA from: /root/ComfyUI/custom_nodes/ComfyUI-Manager/.cache/1742899825_extension-node-map.json
[2024-07-04 23:27] Install custom node 'ComfyUI Essentials'
[2024-07-04 23:27] install: ['https://github.com/cubiq/ComfyUI_essentials']
[2024-07-04 23:27] Download: git clone 'https://github.com/cubiq/ComfyUI_essentials'
[2024-07-04 23:27] 0it [00:00, ?it/s] 100%|█████████████████████████████████████| 133.0/133.0 [00:23<00:00, 5.76it/s] 100%|█████████████████████████████████████| 133.0/133.0 [00:23<00:00, 5.76it/s] 100%|███████████████████████████████████████| 58.0/58.0 [00:23<00:00, 2.51it/s] 100%|███████████████████████████████████████| 58.0/58.0 [00:23<00:00, 2.51it/s] 100%|█████████████████████████████████████| 292.0/292.0 [00:23<00:00, 12.41it/s] 100%|█████████████████████████████████████| 292.0/292.0 [00:23<00:00, 12.41it/s] 100%|█████████████████████████████████████| 167.0/167.0 [00:23<00:00, 7.09it/s] 100%|█████████████████████████████████████| 167.0/167.0 [00:23<00:00, 7.09it/s] 100%|█████████████████████████████████████| 167.0/167.0 [00:23<00:00, 7.08it/s]
[2024-07-04 23:27] Install: pip packages
[2024-07-04 23:27]
## ComfyUI-Manager: EXECUTE => ['/root/miniconda3/bin/python', '-m', 'pip', 'install', 'numba']
[2024-07-04 23:27] Looking in indexes: http://mirrors.aliyun.com/pypi/simple
[2024-07-04 23:27] [2024-07-04 23:27] [!] WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
[2024-07-04 23:27]
## ComfyUI-Manager: EXECUTE => ['/root/miniconda3/bin/python', '-m', 'pip', 'install', 'colour-science']
[2024-07-04 23:27] Looking in indexes: http://mirrors.aliyun.com/pypi/simple
[2024-07-04 23:27] [!] WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
[2024-07-04 23:27]
## ComfyUI-Manager: EXECUTE => ['/root/miniconda3/bin/python', '-m', 'pip', 'install', 'rembg']
[2024-07-04 23:27] Looking in indexes: http://mirrors.aliyun.com/pypi/simple
[2024-07-04 23:27] [!] WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
[2024-07-04 23:27]
## ComfyUI-Manager: EXECUTE => ['/root/miniconda3/bin/python', '-m', 'pip', 'install', 'pixeloe']
[2024-07-04 23:28] Looking in indexes: http://mirrors.aliyun.com/pypi/simple
[2024-07-04 23:28] [!] WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
[2024-07-04 23:28] Installation was successful.
[2024-07-04 23:28] After restarting ComfyUI, please refresh the browser.
[2024-07-04 23:28] FETCH DATA from: /root/ComfyUI/custom_nodes/ComfyUI-Manager/.cache/1514988643_custom-node-list.json
[2024-07-04 23:28] FETCH DATA from: /root/ComfyUI/custom_nodes/ComfyUI-Manager/.cache/1742899825_extension-node-map.json
[2024-07-04 23:28] FETCH DATA from: /root/ComfyUI/custom_nodes/ComfyUI-Manager/.cache/1742899825_extension-node-map.json

249
comfyui_6006.prev2.log Normal file
View File

@ -0,0 +1,249 @@
** ComfyUI startup time: 2024-07-04 23:16:15.674671
[2024-07-04 23:16] ** Platform: Linux
[2024-07-04 23:16] ** Python version: 3.10.8 (main, Nov 24 2022, 14:13:03) [GCC 11.2.0]
[2024-07-04 23:16] ** Python executable: /root/miniconda3/bin/python
[2024-07-04 23:16] ** Log path: /root/ComfyUI/comfyui.log
[2024-07-04 23:16]
#######################################################################
[2024-07-04 23:16] [ComfyUI-Manager] Starting dependency installation/(de)activation for the extension
[2024-07-04 23:16]
[2024-07-04 23:16] Install: pip packages for '/root/ComfyUI/custom_nodes/ComfyUI_essentials'
[2024-07-04 23:16]
[ComfyUI-Manager] Startup script completed.
[2024-07-04 23:16] #######################################################################
[2024-07-04 23:16]
[2024-07-04 23:16]
Prestartup times for custom nodes:
[2024-07-04 23:16] 1.1 seconds: /root/ComfyUI/custom_nodes/ComfyUI-Manager
[2024-07-04 23:16]
Total VRAM 24217 MB, total RAM 515689 MB
[2024-07-04 23:16] xformers version: 0.0.22.post4
[2024-07-04 23:16] Set vram state to: NORMAL_VRAM
[2024-07-04 23:16] Device: cuda:0 NVIDIA GeForce RTX 4090 : cudaMallocAsync
[2024-07-04 23:16] VAE dtype: torch.bfloat16
[2024-07-04 23:16] Using xformers cross attention
[2024-07-04 23:16] Adding extra search path checkpoints /root/autodl-tmp/models/checkpoint
[2024-07-04 23:16] Adding extra search path configs /root/autodl-tmp/models/checkpoint
[2024-07-04 23:16] Adding extra search path vae /root/autodl-tmp/models/vae
[2024-07-04 23:16] Adding extra search path loras /root/autodl-tmp/models/lora
[2024-07-04 23:16] Adding extra search path loras /root/autodl-tmp/models/ip_adapter_faceid/lora
[2024-07-04 23:16] Adding extra search path upscale_models /root/autodl-tmp/models/upscaler
[2024-07-04 23:16] Adding extra search path embeddings /root/autodl-tmp/models/embeddings
[2024-07-04 23:16] Adding extra search path hypernetworks /root/autodl-tmp/models/embeddings
[2024-07-04 23:16] Adding extra search path controlnet /root/autodl-tmp/models/controlnet
[2024-07-04 23:16] Adding extra search path ipadapter /root/autodl-tmp/models/ip_adapter_faceid/models
[2024-07-04 23:16] Adding extra search path ipadapter /root/autodl-tmp/models/ip_adapter
[2024-07-04 23:16] Adding extra search path clip_vision /root/autodl-tmp/models/clip_vision
[2024-07-04 23:16] Adding extra search path checkpoints /root/autodl-fs/models/checkpoint
[2024-07-04 23:16] Adding extra search path configs /root/autodl-fs/models/checkpoint
[2024-07-04 23:16] Adding extra search path vae /root/autodl-fs/models/vae
[2024-07-04 23:16] Adding extra search path loras /root/autodl-fs/models/lora
[2024-07-04 23:16] Adding extra search path loras /root/autodl-fs/models/ip_adapter_faceid/lora
[2024-07-04 23:16] Adding extra search path upscale_models /root/autodl-fs/models/upscaler
[2024-07-04 23:16] Adding extra search path embeddings /root/autodl-fs/models/embeddings
[2024-07-04 23:16] Adding extra search path hypernetworks /root/autodl-fs/models/embeddings
[2024-07-04 23:16] Adding extra search path controlnet /root/autodl-fs/models/controlnet
[2024-07-04 23:16] Adding extra search path ipadapter /root/autodl-fs/models/ip_adapter_faceid/models
[2024-07-04 23:16] Adding extra search path ipadapter /root/autodl-fs/models/ip_adapter
[2024-07-04 23:16] Adding extra search path clip_vision /root/autodl-fs/models/clip_vision
[2024-07-04 23:16] ### Loading: ComfyUI-Impact-Pack (V4.85.2)
[2024-07-04 23:16] ### Loading: ComfyUI-Impact-Pack (Subpack: V0.4)
[2024-07-04 23:16] [Impact Pack] Wildcards loading done.
[2024-07-04 23:16] WAS Node Suite: BlenderNeko's Advanced CLIP Text Encode found, attempting to enable `CLIPTextEncode` support.
[2024-07-04 23:16] WAS Node Suite: `CLIPTextEncode (BlenderNeko Advanced + NSP)` node enabled under `WAS Suite/Conditioning` menu.
[2024-07-04 23:16] WAS Node Suite: OpenCV Python FFMPEG support is enabled
[2024-07-04 23:16] WAS Node Suite Warning: `ffmpeg_bin_path` is not set in `/root/ComfyUI/custom_nodes/was-node-suite-comfyui/was_suite_config.json` config file. Will attempt to use system ffmpeg binaries if available.
[2024-07-04 23:16] WAS Node Suite: Finished. Loaded 212 nodes successfully.
[2024-07-04 23:16]
"The biggest risk is not taking any risk. In a world that is changing quickly, the only strategy that is guaranteed to fail is not taking risks." - Mark Zuckerberg
[2024-07-04 23:16]
[2024-07-04 23:16] /root/miniconda3/lib/python3.10/site-packages/numba/np/ufunc/parallel.py:371: NumbaWarning: The TBB threading layer requires TBB version 2021 update 6 or later i.e., TBB_INTERFACE_VERSION >= 12060. Found TBB_INTERFACE_VERSION = 12050. The TBB threading layer is disabled.
warnings.warn(problem)
[2024-07-04 23:16] [tinyterraNodes] Loaded
[2024-07-04 23:16] [comfyui_controlnet_aux] | INFO -> Using ckpts path: /root/ComfyUI/custom_nodes/comfyui_controlnet_aux/ckpts
[2024-07-04 23:16] [comfyui_controlnet_aux] | INFO -> Using symlinks: False
[2024-07-04 23:16] [comfyui_controlnet_aux] | INFO -> Using ort providers: ['CUDAExecutionProvider', 'DirectMLExecutionProvider', 'OpenVINOExecutionProvider', 'ROCMExecutionProvider', 'CPUExecutionProvider', 'CoreMLExecutionProvider']
[2024-07-04 23:16] /root/miniconda3/lib/python3.10/site-packages/diffusers/models/unet_2d_blocks.py:249: FutureWarning: `AutoencoderTinyBlock` is deprecated and will be removed in version 0.29. Importing `AutoencoderTinyBlock` from `diffusers.models.unet_2d_blocks` is deprecated and this will be removed in a future version. Please use `from diffusers.models.unets.unet_2d_blocks import AutoencoderTinyBlock`, instead.
deprecate("AutoencoderTinyBlock", "0.29", deprecation_message)
[2024-07-04 23:16] /root/miniconda3/lib/python3.10/site-packages/diffusers/models/unet_2d_blocks.py:254: FutureWarning: `UNetMidBlock2D` is deprecated and will be removed in version 0.29. Importing `UNetMidBlock2D` from `diffusers.models.unet_2d_blocks` is deprecated and this will be removed in a future version. Please use `from diffusers.models.unets.unet_2d_blocks import UNetMidBlock2D`, instead.
deprecate("UNetMidBlock2D", "0.29", deprecation_message)
[2024-07-04 23:16] /root/miniconda3/lib/python3.10/site-packages/diffusers/models/unet_2d_blocks.py:259: FutureWarning: `UNetMidBlock2DCrossAttn` is deprecated and will be removed in version 0.29. Importing `UNetMidBlock2DCrossAttn` from `diffusers.models.unet_2d_blocks` is deprecated and this will be removed in a future version. Please use `from diffusers.models.unets.unet_2d_blocks import UNetMidBlock2DCrossAttn`, instead.
deprecate("UNetMidBlock2DCrossAttn", "0.29", deprecation_message)
[2024-07-04 23:16] /root/miniconda3/lib/python3.10/site-packages/diffusers/models/unet_2d_blocks.py:264: FutureWarning: `UNetMidBlock2DSimpleCrossAttn` is deprecated and will be removed in version 0.29. Importing `UNetMidBlock2DSimpleCrossAttn` from `diffusers.models.unet_2d_blocks` is deprecated and this will be removed in a future version. Please use `from diffusers.models.unets.unet_2d_blocks import UNetMidBlock2DSimpleCrossAttn`, instead.
deprecate("UNetMidBlock2DSimpleCrossAttn", "0.29", deprecation_message)
[2024-07-04 23:16] /root/miniconda3/lib/python3.10/site-packages/diffusers/models/unet_2d_blocks.py:269: FutureWarning: `AttnDownBlock2D` is deprecated and will be removed in version 0.29. Importing `AttnDownBlock2D` from `diffusers.models.unet_2d_blocks` is deprecated and this will be removed in a future version. Please use `from diffusers.models.unets.unet_2d_blocks import AttnDownBlock2D`, instead.
deprecate("AttnDownBlock2D", "0.29", deprecation_message)
[2024-07-04 23:16] /root/miniconda3/lib/python3.10/site-packages/diffusers/models/unet_2d_blocks.py:274: FutureWarning: `CrossAttnDownBlock2D` is deprecated and will be removed in version 0.29. Importing `AttnDownBlock2D` from `diffusers.models.unet_2d_blocks` is deprecated and this will be removed in a future version. Please use `from diffusers.models.unets.unet_2d_blocks import CrossAttnDownBlock2D`, instead.
deprecate("CrossAttnDownBlock2D", "0.29", deprecation_message)
[2024-07-04 23:16] /root/miniconda3/lib/python3.10/site-packages/diffusers/models/unet_2d_blocks.py:279: FutureWarning: `DownBlock2D` is deprecated and will be removed in version 0.29. Importing `DownBlock2D` from `diffusers.models.unet_2d_blocks` is deprecated and this will be removed in a future version. Please use `from diffusers.models.unets.unet_2d_blocks import DownBlock2D`, instead.
deprecate("DownBlock2D", "0.29", deprecation_message)
[2024-07-04 23:16] /root/miniconda3/lib/python3.10/site-packages/diffusers/models/unet_2d_blocks.py:284: FutureWarning: `AttnDownEncoderBlock2D` is deprecated and will be removed in version 0.29. Importing `AttnDownEncoderBlock2D` from `diffusers.models.unet_2d_blocks` is deprecated and this will be removed in a future version. Please use `from diffusers.models.unets.unet_2d_blocks import AttnDownEncoderBlock2D`, instead.
deprecate("AttnDownEncoderBlock2D", "0.29", deprecation_message)
[2024-07-04 23:16] /root/miniconda3/lib/python3.10/site-packages/diffusers/models/unet_2d_blocks.py:289: FutureWarning: `AttnSkipDownBlock2D` is deprecated and will be removed in version 0.29. Importing `AttnSkipDownBlock2D` from `diffusers.models.unet_2d_blocks` is deprecated and this will be removed in a future version. Please use `from diffusers.models.unets.unet_2d_blocks import AttnSkipDownBlock2D`, instead.
deprecate("AttnSkipDownBlock2D", "0.29", deprecation_message)
[2024-07-04 23:16] /root/miniconda3/lib/python3.10/site-packages/diffusers/models/unet_2d_blocks.py:294: FutureWarning: `SkipDownBlock2D` is deprecated and will be removed in version 0.29. Importing `SkipDownBlock2D` from `diffusers.models.unet_2d_blocks` is deprecated and this will be removed in a future version. Please use `from diffusers.models.unets.unet_2d_blocks import SkipDownBlock2D`, instead.
deprecate("SkipDownBlock2D", "0.29", deprecation_message)
[2024-07-04 23:16] /root/miniconda3/lib/python3.10/site-packages/diffusers/models/unet_2d_blocks.py:299: FutureWarning: `ResnetDownsampleBlock2D` is deprecated and will be removed in version 0.29. Importing `ResnetDownsampleBlock2D` from `diffusers.models.unet_2d_blocks` is deprecated and this will be removed in a future version. Please use `from diffusers.models.unets.unet_2d_blocks import ResnetDownsampleBlock2D`, instead.
deprecate("ResnetDownsampleBlock2D", "0.29", deprecation_message)
[2024-07-04 23:16] /root/miniconda3/lib/python3.10/site-packages/diffusers/models/unet_2d_blocks.py:304: FutureWarning: `SimpleCrossAttnDownBlock2D` is deprecated and will be removed in version 0.29. Importing `SimpleCrossAttnDownBlock2D` from `diffusers.models.unet_2d_blocks` is deprecated and this will be removed in a future version. Please use `from diffusers.models.unets.unet_2d_blocks import SimpleCrossAttnDownBlock2D`, instead.
deprecate("SimpleCrossAttnDownBlock2D", "0.29", deprecation_message)
[2024-07-04 23:16] /root/miniconda3/lib/python3.10/site-packages/diffusers/models/unet_2d_blocks.py:309: FutureWarning: `KDownBlock2D` is deprecated and will be removed in version 0.29. Importing `KDownBlock2D` from `diffusers.models.unet_2d_blocks` is deprecated and this will be removed in a future version. Please use `from diffusers.models.unets.unet_2d_blocks import KDownBlock2D`, instead.
deprecate("KDownBlock2D", "0.29", deprecation_message)
[2024-07-04 23:16] /root/miniconda3/lib/python3.10/site-packages/diffusers/models/unet_2d_blocks.py:314: FutureWarning: `KCrossAttnDownBlock2D` is deprecated and will be removed in version 0.29. Importing `KCrossAttnDownBlock2D` from `diffusers.models.unet_2d_blocks` is deprecated and this will be removed in a future version. Please use `from diffusers.models.unets.unet_2d_blocks import KCrossAttnDownBlock2D`, instead.
deprecate("KCrossAttnDownBlock2D", "0.29", deprecation_message)
[2024-07-04 23:16] /root/miniconda3/lib/python3.10/site-packages/diffusers/models/unet_2d_blocks.py:319: FutureWarning: `AttnUpBlock2D` is deprecated and will be removed in version 0.29. Importing `AttnUpBlock2D` from `diffusers.models.unet_2d_blocks` is deprecated and this will be removed in a future version. Please use `from diffusers.models.unets.unet_2d_blocks import AttnUpBlock2D`, instead.
deprecate("AttnUpBlock2D", "0.29", deprecation_message)
[2024-07-04 23:16] /root/miniconda3/lib/python3.10/site-packages/diffusers/models/unet_2d_blocks.py:324: FutureWarning: `CrossAttnUpBlock2D` is deprecated and will be removed in version 0.29. Importing `CrossAttnUpBlock2D` from `diffusers.models.unet_2d_blocks` is deprecated and this will be removed in a future version. Please use `from diffusers.models.unets.unet_2d_blocks import CrossAttnUpBlock2D`, instead.
deprecate("CrossAttnUpBlock2D", "0.29", deprecation_message)
[2024-07-04 23:16] /root/miniconda3/lib/python3.10/site-packages/diffusers/models/unet_2d_blocks.py:329: FutureWarning: `UpBlock2D` is deprecated and will be removed in version 0.29. Importing `UpBlock2D` from `diffusers.models.unet_2d_blocks` is deprecated and this will be removed in a future version. Please use `from diffusers.models.unets.unet_2d_blocks import UpBlock2D`, instead.
deprecate("UpBlock2D", "0.29", deprecation_message)
[2024-07-04 23:16] /root/miniconda3/lib/python3.10/site-packages/diffusers/models/unet_2d_blocks.py:334: FutureWarning: `UpDecoderBlock2D` is deprecated and will be removed in version 0.29. Importing `UpDecoderBlock2D` from `diffusers.models.unet_2d_blocks` is deprecated and this will be removed in a future version. Please use `from diffusers.models.unets.unet_2d_blocks import UpDecoderBlock2D`, instead.
deprecate("UpDecoderBlock2D", "0.29", deprecation_message)
[2024-07-04 23:16] /root/miniconda3/lib/python3.10/site-packages/diffusers/models/unet_2d_blocks.py:339: FutureWarning: `AttnUpDecoderBlock2D` is deprecated and will be removed in version 0.29. Importing `AttnUpDecoderBlock2D` from `diffusers.models.unet_2d_blocks` is deprecated and this will be removed in a future version. Please use `from diffusers.models.unets.unet_2d_blocks import AttnUpDecoderBlock2D`, instead.
deprecate("AttnUpDecoderBlock2D", "0.29", deprecation_message)
[2024-07-04 23:16] /root/miniconda3/lib/python3.10/site-packages/diffusers/models/unet_2d_blocks.py:344: FutureWarning: `AttnSkipUpBlock2D` is deprecated and will be removed in version 0.29. Importing `AttnSkipUpBlock2D` from `diffusers.models.unet_2d_blocks` is deprecated and this will be removed in a future version. Please use `from diffusers.models.unets.unet_2d_blocks import AttnSkipUpBlock2D`, instead.
deprecate("AttnSkipUpBlock2D", "0.29", deprecation_message)
[2024-07-04 23:16] /root/miniconda3/lib/python3.10/site-packages/diffusers/models/unet_2d_blocks.py:349: FutureWarning: `SkipUpBlock2D` is deprecated and will be removed in version 0.29. Importing `SkipUpBlock2D` from `diffusers.models.unet_2d_blocks` is deprecated and this will be removed in a future version. Please use `from diffusers.models.unets.unet_2d_blocks import SkipUpBlock2D`, instead.
deprecate("SkipUpBlock2D", "0.29", deprecation_message)
[2024-07-04 23:16] /root/miniconda3/lib/python3.10/site-packages/diffusers/models/unet_2d_blocks.py:354: FutureWarning: `ResnetUpsampleBlock2D` is deprecated and will be removed in version 0.29. Importing `ResnetUpsampleBlock2D` from `diffusers.models.unet_2d_blocks` is deprecated and this will be removed in a future version. Please use `from diffusers.models.unets.unet_2d_blocks import ResnetUpsampleBlock2D`, instead.
deprecate("ResnetUpsampleBlock2D", "0.29", deprecation_message)
[2024-07-04 23:16] /root/miniconda3/lib/python3.10/site-packages/diffusers/models/unet_2d_blocks.py:359: FutureWarning: `SimpleCrossAttnUpBlock2D` is deprecated and will be removed in version 0.29. Importing `SimpleCrossAttnUpBlock2D` from `diffusers.models.unet_2d_blocks` is deprecated and this will be removed in a future version. Please use `from diffusers.models.unets.unet_2d_blocks import SimpleCrossAttnUpBlock2D`, instead.
deprecate("SimpleCrossAttnUpBlock2D", "0.29", deprecation_message)
[2024-07-04 23:16] /root/miniconda3/lib/python3.10/site-packages/diffusers/models/unet_2d_blocks.py:364: FutureWarning: `KUpBlock2D` is deprecated and will be removed in version 0.29. Importing `KUpBlock2D` from `diffusers.models.unet_2d_blocks` is deprecated and this will be removed in a future version. Please use `from diffusers.models.unets.unet_2d_blocks import KUpBlock2D`, instead.
deprecate("KUpBlock2D", "0.29", deprecation_message)
[2024-07-04 23:16] /root/miniconda3/lib/python3.10/site-packages/diffusers/models/unet_2d_blocks.py:369: FutureWarning: `KCrossAttnUpBlock2D` is deprecated and will be removed in version 0.29. Importing `KCrossAttnUpBlock2D` from `diffusers.models.unet_2d_blocks` is deprecated and this will be removed in a future version. Please use `from diffusers.models.unets.unet_2d_blocks import KCrossAttnUpBlock2D`, instead.
deprecate("KCrossAttnUpBlock2D", "0.29", deprecation_message)
[2024-07-04 23:16] /root/miniconda3/lib/python3.10/site-packages/diffusers/models/unet_2d_blocks.py:375: FutureWarning: `KAttentionBlock` is deprecated and will be removed in version 0.29. Importing `KAttentionBlock` from `diffusers.models.unet_2d_blocks` is deprecated and this will be removed in a future version. Please use `from diffusers.models.unets.unet_2d_blocks import KAttentionBlock`, instead.
deprecate("KAttentionBlock", "0.29", deprecation_message)
[2024-07-04 23:16] FizzleDorf Custom Nodes: Loaded
[2024-07-04 23:16] ### Loading: ComfyUI-Inspire-Pack (V0.69.2)
[2024-07-04 23:16] [Power Noise Suite]: 🦚🦚🦚 Cock-a-doodle-dooo! 🦚🦚🦚
[2024-07-04 23:16] [Power Noise Suite]: Tamed 11 wild nodes.
[2024-07-04 23:16] (pysssss:WD14Tagger) [DEBUG] Available ORT providers: TensorrtExecutionProvider, CUDAExecutionProvider, AzureExecutionProvider, CPUExecutionProvider
[2024-07-04 23:16] (pysssss:WD14Tagger) [DEBUG] Using ORT providers: CUDAExecutionProvider, CPUExecutionProvider
[2024-07-04 23:16] Use STYLE:weight_interpretation:normalization at the start of a prompt to use advanced encodings
[2024-07-04 23:16] Weight interpretations available: comfy,A1111,compel,comfy++,down_weight,perp
[2024-07-04 23:16] Normalization types available: none,mean,length,length+mean
[2024-07-04 23:16] Total VRAM 24217 MB, total RAM 515689 MB
[2024-07-04 23:16] xformers version: 0.0.22.post4
[2024-07-04 23:16] Set vram state to: NORMAL_VRAM
[2024-07-04 23:16] Device: cuda:0 NVIDIA GeForce RTX 4090 : cudaMallocAsync
[2024-07-04 23:16] VAE dtype: torch.bfloat16
[2024-07-04 23:16] ### Loading: ComfyUI-Manager (V2.13.1)
[2024-07-04 23:16] ### ComfyUI Revision: 2096 [6c6a3925] | Released on '2024-04-02'
[2024-07-04 23:16] Efficiency Nodes: Attempting to add Control Net options to the 'HiRes-Fix Script' Node (comfyui_controlnet_aux add-on)...Success!
[2024-07-04 23:16] [Crystools INFO] Crystools version: 1.12.0
[2024-07-04 23:16] [Crystools INFO] CPU: AMD EPYC 7T83 64-Core Processor - Arch: x86_64 - OS: Linux 5.4.0-153-generic
[2024-07-04 23:16] [Crystools INFO] GPU/s:
[2024-07-04 23:16] [Crystools INFO] 0) NVIDIA GeForce RTX 4090
[2024-07-04 23:16] [Crystools INFO] NVIDIA Driver: 535.54.03
[2024-07-04 23:16] ------------------------------------------
[2024-07-04 23:16] Comfyroll Studio v1.76 :  175 Nodes Loaded
[2024-07-04 23:16] ------------------------------------------
[2024-07-04 23:16] ** For changes, please see patch notes at https://github.com/Suzie1/ComfyUI_Comfyroll_CustomNodes/blob/main/Patch_Notes.md
[2024-07-04 23:16] ** For help, please see the wiki at https://github.com/Suzie1/ComfyUI_Comfyroll_CustomNodes/wiki
[2024-07-04 23:16] ------------------------------------------
[2024-07-04 23:16] #fix sys.stdout.isatty
[2024-07-04 23:16] --------------
[2024-07-04 23:16]  ### Mixlab Nodes: Loaded
[2024-07-04 23:16] ChatGPT.available True
[2024-07-04 23:16] edit_mask.available False
[2024-07-04 23:16] ## lama torchscript model not found: /root/ComfyUI/models/lama/big-lama.pt,pls download from https://github.com/enesmsahin/simple-lama-inpainting/releases/download/v0.1.0/big-lama.pt
[2024-07-04 23:16] LaMaInpainting.available True
[2024-07-04 23:16] ## clip_interrogator_model not found: /root/ComfyUI/models/clip_interrogator/Salesforce/blip-image-captioning-base, pls download from https://huggingface.co/Salesforce/blip-image-captioning-base
[2024-07-04 23:16] ClipInterrogator.available True
[2024-07-04 23:16] ## text_generator_model not found: /root/ComfyUI/models/prompt_generator/text2image-prompt-generator, pls download from https://huggingface.co/succinctly/text2image-prompt-generator/tree/main
[2024-07-04 23:16] ## zh_en_model not found: /root/ComfyUI/models/prompt_generator/opus-mt-zh-en, pls download from https://huggingface.co/Helsinki-NLP/opus-mt-zh-en/tree/main
[2024-07-04 23:16] PromptGenerate.available True
[2024-07-04 23:16] ChinesePrompt.available True
[2024-07-04 23:16] RembgNode_.available True
[2024-07-04 23:16] TripoSR.available
[2024-07-04 23:16]  -------------- 
[2024-07-04 23:16] Looking in indexes: http://mirrors.aliyun.com/pypi/simple
[2024-07-04 23:16] [2024-07-04 23:16] WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
[2024-07-04 23:16] Looking in indexes: http://mirrors.aliyun.com/pypi/simple
[2024-07-04 23:16] WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
[2024-07-04 23:16] Traceback (most recent call last):
File "/root/ComfyUI/nodes.py", line 1889, in load_custom_node
module_spec.loader.exec_module(module)
File "<frozen importlib._bootstrap_external>", line 883, in exec_module
File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
File "/root/ComfyUI/custom_nodes/ComfyUI_essentials/__init__.py", line 2, in <module>
from .image import IMAGE_CLASS_MAPPINGS, IMAGE_NAME_MAPPINGS
File "/root/ComfyUI/custom_nodes/ComfyUI_essentials/image.py", line 5, in <module>
from node_helpers import pillow
ModuleNotFoundError: No module named 'node_helpers'
[2024-07-04 23:16] Cannot import /root/ComfyUI/custom_nodes/ComfyUI_essentials module for custom nodes: No module named 'node_helpers'
[2024-07-04 23:16]
Import times for custom nodes:
[2024-07-04 23:16] 0.0 seconds: /root/ComfyUI/custom_nodes/websocket_image_save.py
[2024-07-04 23:16] 0.0 seconds: /root/ComfyUI/custom_nodes/ComfyUI-AutomaticCFG
[2024-07-04 23:16] 0.0 seconds: /root/ComfyUI/custom_nodes/AIGODLIKE-COMFYUI-TRANSLATION
[2024-07-04 23:16] 0.0 seconds: /root/ComfyUI/custom_nodes/ComfyUi_NNLatentUpscale
[2024-07-04 23:16] 0.0 seconds: /root/ComfyUI/custom_nodes/ComfyUi_PromptStylers
[2024-07-04 23:16] 0.0 seconds: /root/ComfyUI/custom_nodes/masquerade-nodes-comfyui
[2024-07-04 23:16] 0.0 seconds: /root/ComfyUI/custom_nodes/ComfyUI-WD14-Tagger
[2024-07-04 23:16] 0.0 seconds: /root/ComfyUI/custom_nodes/comfyui-portrait-master
[2024-07-04 23:16] 0.0 seconds: /root/ComfyUI/custom_nodes/ComfyUI_ADV_CLIP_emb
[2024-07-04 23:16] 0.0 seconds: /root/ComfyUI/custom_nodes/PowerNoiseSuite
[2024-07-04 23:16] 0.0 seconds (IMPORT FAILED): /root/ComfyUI/custom_nodes/ComfyUI_essentials
[2024-07-04 23:16] 0.0 seconds: /root/ComfyUI/custom_nodes/ComfyUI-Custom-Scripts
[2024-07-04 23:16] 0.0 seconds: /root/ComfyUI/custom_nodes/Derfuu_ComfyUI_ModdedNodes
[2024-07-04 23:16] 0.0 seconds: /root/ComfyUI/custom_nodes/ComfyUI-Frame-Interpolation
[2024-07-04 23:16] 0.0 seconds: /root/ComfyUI/custom_nodes/comfyui-browser
[2024-07-04 23:16] 0.0 seconds: /root/ComfyUI/custom_nodes/ComfyUI_UltimateSDUpscale
[2024-07-04 23:16] 0.0 seconds: /root/ComfyUI/custom_nodes/ComfyUI-Advanced-ControlNet
[2024-07-04 23:16] 0.0 seconds: /root/ComfyUI/custom_nodes/ComfyUI-Coziness
[2024-07-04 23:16] 0.0 seconds: /root/ComfyUI/custom_nodes/ComfyUI-AnimateDiff-Evolved
[2024-07-04 23:16] 0.0 seconds: /root/ComfyUI/custom_nodes/ComfyUI-KJNodes
[2024-07-04 23:16] 0.0 seconds: /root/ComfyUI/custom_nodes/efficiency-nodes-comfyui
[2024-07-04 23:16] 0.0 seconds: /root/ComfyUI/custom_nodes/ComfyUI_IPAdapter_plus
[2024-07-04 23:16] 0.0 seconds: /root/ComfyUI/custom_nodes/ComfyUI_Comfyroll_CustomNodes
[2024-07-04 23:16] 0.0 seconds: /root/ComfyUI/custom_nodes/comfyui_controlnet_aux
[2024-07-04 23:16] 0.0 seconds: /root/ComfyUI/custom_nodes/ComfyUI_smZNodes
[2024-07-04 23:16] 0.0 seconds: /root/ComfyUI/custom_nodes/ComfyUI-VideoHelperSuite
[2024-07-04 23:16] 0.1 seconds: /root/ComfyUI/custom_nodes/ComfyUI-Manager
[2024-07-04 23:16] 0.1 seconds: /root/ComfyUI/custom_nodes/ComfyUI-Inspire-Pack
[2024-07-04 23:16] 0.1 seconds: /root/ComfyUI/custom_nodes/comfyui-prompt-control
[2024-07-04 23:16] 0.1 seconds: /root/ComfyUI/custom_nodes/ComfyUI-layerdiffuse
[2024-07-04 23:16] 0.1 seconds: /root/ComfyUI/custom_nodes/comfyui_segment_anything
[2024-07-04 23:16] 0.1 seconds: /root/ComfyUI/custom_nodes/ComfyUI-Gemini
[2024-07-04 23:16] 0.3 seconds: /root/ComfyUI/custom_nodes/ComfyUI_FizzNodes
[2024-07-04 23:16] 0.4 seconds: /root/ComfyUI/custom_nodes/ComfyUI_tinyterraNodes
[2024-07-04 23:16] 1.1 seconds: /root/ComfyUI/custom_nodes/comfyui-mixlab-nodes
[2024-07-04 23:16] 1.3 seconds: /root/ComfyUI/custom_nodes/ComfyUI-Impact-Pack
[2024-07-04 23:16] 1.4 seconds: /root/ComfyUI/custom_nodes/was-node-suite-comfyui
[2024-07-04 23:16] 2.4 seconds: /root/ComfyUI/custom_nodes/ComfyUI-Crystools
[2024-07-04 23:16] 3.2 seconds: /root/ComfyUI/custom_nodes/comfyui-ollama
[2024-07-04 23:16] 3.2 seconds: /root/ComfyUI/custom_nodes/ComfyUi-Ollama-YN
[2024-07-04 23:16]
https_key OK: /root/ComfyUI/custom_nodes/comfyui-mixlab-nodes/https/certificate.crt /root/ComfyUI/custom_nodes/comfyui-mixlab-nodes/https/private.key
[2024-07-04 23:16]
[2024-07-04 23:16]
Starting server
[2024-07-04 23:16] To see the GUI go to: http://127.0.0.1:6006
[2024-07-04 23:16] To see the GUI go to: https://127.0.0.1:6008
[2024-07-04 23:16] [ComfyUI-Manager] default cache updated: https://raw.githubusercontent.com/ltdrdata/ComfyUI-Manager/main/model-list.json
[2024-07-04 23:16] [ComfyUI-Manager] default cache updated: https://raw.githubusercontent.com/ltdrdata/ComfyUI-Manager/main/custom-node-list.json
[2024-07-04 23:16] [ComfyUI-Manager] default cache updated: https://raw.githubusercontent.com/ltdrdata/ComfyUI-Manager/main/extension-node-map.json
[2024-07-04 23:16] [ComfyUI-Manager] default cache updated: https://raw.githubusercontent.com/ltdrdata/ComfyUI-Manager/main/alter-list.json
[2024-07-04 23:17] FETCH DATA from: /root/ComfyUI/custom_nodes/ComfyUI-Manager/extension-node-map.json
[2024-07-04 23:17] #clip_model_path chatml None
[2024-07-04 23:17] #model
[2024-07-04 23:17] start_local_llm error
[2024-07-04 23:17] data_path: /root/ComfyUI/custom_nodes/comfyui-mixlab-nodes/data
[2024-07-04 23:17] #read_workflow_json_files_all /root/ComfyUI/custom_nodes/comfyui-mixlab-nodes/app/
[2024-07-04 23:21] Use Proxy: http://172.20.0.113:12798
[2024-07-04 23:21] FETCH DATA from: /root/ComfyUI/custom_nodes/ComfyUI-Manager/.cache/1514988643_custom-node-list.json
[2024-07-04 23:21] FETCH DATA from: /root/ComfyUI/custom_nodes/ComfyUI-Manager/.cache/1742899825_extension-node-map.json
[2024-07-04 23:21] FETCH DATA from: /root/ComfyUI/custom_nodes/ComfyUI-Manager/.cache/1742899825_extension-node-map.json
[2024-07-04 23:21] Uninstall custom node 'ComfyUI Essentials'
[2024-07-04 23:21] uninstall: ['https://github.com/cubiq/ComfyUI_essentials']
[2024-07-04 23:21] Uninstallation was successful.
[2024-07-04 23:21] After restarting ComfyUI, please refresh the browser.
[2024-07-04 23:21] FETCH DATA from: /root/ComfyUI/custom_nodes/ComfyUI-Manager/.cache/1514988643_custom-node-list.json
[2024-07-04 23:21] FETCH DATA from: /root/ComfyUI/custom_nodes/ComfyUI-Manager/.cache/1742899825_extension-node-map.json
[2024-07-04 23:21] FETCH DATA from: /root/ComfyUI/custom_nodes/ComfyUI-Manager/.cache/1742899825_extension-node-map.json

View File

@ -11,6 +11,7 @@ import urllib
import json
import glob
import struct
import ssl
from PIL import Image, ImageOps
from PIL.PngImagePlugin import PngInfo
from io import BytesIO
@ -623,14 +624,22 @@ class PromptServer():
async def start(self, address, port, verbose=True, call_on_start=None):
runner = web.AppRunner(self.app, access_log=None)
await runner.setup()
site = web.TCPSite(runner, address, port)
ssl_ctx = None
scheme = "http"
if args.tls_keyfile and args.tls_certfile:
ssl_ctx = ssl.SSLContext(protocol=ssl.PROTOCOL_TLS_SERVER, verify_mode=ssl.CERT_NONE)
ssl_ctx.load_cert_chain(certfile=args.tls_certfile,
keyfile=args.tls_keyfile)
scheme = "https"
site = web.TCPSite(runner, address, port, ssl_context=ssl_ctx)
await site.start()
if verbose:
logging.info("Starting server\n")
logging.info("To see the GUI go to: http://{}:{}".format(address, port))
logging.info("To see the GUI go to: {}://{}:{}".format(scheme, address, port))
if call_on_start is not None:
call_on_start(address, port)
call_on_start(scheme, address, port)
def add_on_prompt_handler(self, handler):
self.on_prompt_handlers.append(handler)