mirror of
https://github.com/comfyanonymous/ComfyUI.git
synced 2025-01-11 18:35:17 +00:00
9b93b920be
The created checkpoints contain workflow metadata that can be loaded by dragging them on top of the UI or loading them with the "Load" button. Checkpoints will be saved in fp16 or fp32 depending on the format ComfyUI is using for inference on your hardware. To force fp32 use: --force-fp32 Anything that patches the model weights like merging or loras will be saved. The output directory is currently set to: output/checkpoints but that might change in the future.
264 lines
13 KiB
Plaintext
264 lines
13 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"id": "aaaaaaaaaa"
|
|
},
|
|
"source": [
|
|
"Git clone the repo and install the requirements. (ignore the pip errors about protobuf)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {
|
|
"id": "bbbbbbbbbb"
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"#@title Environment Setup\n",
|
|
"\n",
|
|
"from pathlib import Path\n",
|
|
"\n",
|
|
"OPTIONS = {}\n",
|
|
"\n",
|
|
"USE_GOOGLE_DRIVE = False #@param {type:\"boolean\"}\n",
|
|
"UPDATE_COMFY_UI = True #@param {type:\"boolean\"}\n",
|
|
"WORKSPACE = 'ComfyUI'\n",
|
|
"OPTIONS['USE_GOOGLE_DRIVE'] = USE_GOOGLE_DRIVE\n",
|
|
"OPTIONS['UPDATE_COMFY_UI'] = UPDATE_COMFY_UI\n",
|
|
"\n",
|
|
"if OPTIONS['USE_GOOGLE_DRIVE']:\n",
|
|
" !echo \"Mounting Google Drive...\"\n",
|
|
" %cd /\n",
|
|
" \n",
|
|
" from google.colab import drive\n",
|
|
" drive.mount('/content/drive')\n",
|
|
"\n",
|
|
" WORKSPACE = \"/content/drive/MyDrive/ComfyUI\"\n",
|
|
" %cd /content/drive/MyDrive\n",
|
|
"\n",
|
|
"![ ! -d $WORKSPACE ] && echo -= Initial setup ComfyUI =- && git clone https://github.com/comfyanonymous/ComfyUI\n",
|
|
"%cd $WORKSPACE\n",
|
|
"\n",
|
|
"if OPTIONS['UPDATE_COMFY_UI']:\n",
|
|
" !echo -= Updating ComfyUI =-\n",
|
|
" !git pull\n",
|
|
"\n",
|
|
"!echo -= Install dependencies =-\n",
|
|
"!pip install xformers!=0.0.18 -r requirements.txt --extra-index-url https://download.pytorch.org/whl/cu118 --extra-index-url https://download.pytorch.org/whl/cu117"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"id": "cccccccccc"
|
|
},
|
|
"source": [
|
|
"Download some models/checkpoints/vae or custom comfyui nodes (uncomment the commands for the ones you want)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {
|
|
"id": "dddddddddd"
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Checkpoints\n",
|
|
"\n",
|
|
"# SD1.5\n",
|
|
"!wget -c https://huggingface.co/runwayml/stable-diffusion-v1-5/resolve/main/v1-5-pruned-emaonly.ckpt -P ./models/checkpoints/\n",
|
|
"\n",
|
|
"# SD2\n",
|
|
"#!wget -c https://huggingface.co/stabilityai/stable-diffusion-2-1-base/resolve/main/v2-1_512-ema-pruned.safetensors -P ./models/checkpoints/\n",
|
|
"#!wget -c https://huggingface.co/stabilityai/stable-diffusion-2-1/resolve/main/v2-1_768-ema-pruned.safetensors -P ./models/checkpoints/\n",
|
|
"\n",
|
|
"# Some SD1.5 anime style\n",
|
|
"#!wget -c https://huggingface.co/WarriorMama777/OrangeMixs/resolve/main/Models/AbyssOrangeMix2/AbyssOrangeMix2_hard.safetensors -P ./models/checkpoints/\n",
|
|
"#!wget -c https://huggingface.co/WarriorMama777/OrangeMixs/resolve/main/Models/AbyssOrangeMix3/AOM3A1_orangemixs.safetensors -P ./models/checkpoints/\n",
|
|
"#!wget -c https://huggingface.co/WarriorMama777/OrangeMixs/resolve/main/Models/AbyssOrangeMix3/AOM3A3_orangemixs.safetensors -P ./models/checkpoints/\n",
|
|
"#!wget -c https://huggingface.co/Linaqruf/anything-v3.0/resolve/main/anything-v3-fp16-pruned.safetensors -P ./models/checkpoints/\n",
|
|
"\n",
|
|
"# Waifu Diffusion 1.5 (anime style SD2.x 768-v)\n",
|
|
"#!wget -c https://huggingface.co/waifu-diffusion/wd-1-5-beta2/resolve/main/checkpoints/wd-1-5-beta2-fp16.safetensors -P ./models/checkpoints/\n",
|
|
"\n",
|
|
"\n",
|
|
"# unCLIP models\n",
|
|
"#!wget -c https://huggingface.co/comfyanonymous/illuminatiDiffusionV1_v11_unCLIP/resolve/main/illuminatiDiffusionV1_v11-unclip-h-fp16.safetensors -P ./models/checkpoints/\n",
|
|
"#!wget -c https://huggingface.co/comfyanonymous/wd-1.5-beta2_unCLIP/resolve/main/wd-1-5-beta2-aesthetic-unclip-h-fp16.safetensors -P ./models/checkpoints/\n",
|
|
"\n",
|
|
"\n",
|
|
"# VAE\n",
|
|
"!wget -c https://huggingface.co/stabilityai/sd-vae-ft-mse-original/resolve/main/vae-ft-mse-840000-ema-pruned.safetensors -P ./models/vae/\n",
|
|
"#!wget -c https://huggingface.co/WarriorMama777/OrangeMixs/resolve/main/VAEs/orangemix.vae.pt -P ./models/vae/\n",
|
|
"#!wget -c https://huggingface.co/hakurei/waifu-diffusion-v1-4/resolve/main/vae/kl-f8-anime2.ckpt -P ./models/vae/\n",
|
|
"\n",
|
|
"\n",
|
|
"# Loras\n",
|
|
"#!wget -c https://civitai.com/api/download/models/10350 -O ./models/loras/theovercomer8sContrastFix_sd21768.safetensors #theovercomer8sContrastFix SD2.x 768-v\n",
|
|
"#!wget -c https://civitai.com/api/download/models/10638 -O ./models/loras/theovercomer8sContrastFix_sd15.safetensors #theovercomer8sContrastFix SD1.x\n",
|
|
"\n",
|
|
"\n",
|
|
"# T2I-Adapter\n",
|
|
"#!wget -c https://huggingface.co/TencentARC/T2I-Adapter/resolve/main/models/t2iadapter_depth_sd14v1.pth -P ./models/controlnet/\n",
|
|
"#!wget -c https://huggingface.co/TencentARC/T2I-Adapter/resolve/main/models/t2iadapter_seg_sd14v1.pth -P ./models/controlnet/\n",
|
|
"#!wget -c https://huggingface.co/TencentARC/T2I-Adapter/resolve/main/models/t2iadapter_sketch_sd14v1.pth -P ./models/controlnet/\n",
|
|
"#!wget -c https://huggingface.co/TencentARC/T2I-Adapter/resolve/main/models/t2iadapter_keypose_sd14v1.pth -P ./models/controlnet/\n",
|
|
"#!wget -c https://huggingface.co/TencentARC/T2I-Adapter/resolve/main/models/t2iadapter_openpose_sd14v1.pth -P ./models/controlnet/\n",
|
|
"#!wget -c https://huggingface.co/TencentARC/T2I-Adapter/resolve/main/models/t2iadapter_color_sd14v1.pth -P ./models/controlnet/\n",
|
|
"#!wget -c https://huggingface.co/TencentARC/T2I-Adapter/resolve/main/models/t2iadapter_canny_sd14v1.pth -P ./models/controlnet/\n",
|
|
"\n",
|
|
"# T2I Styles Model\n",
|
|
"#!wget -c https://huggingface.co/TencentARC/T2I-Adapter/resolve/main/models/t2iadapter_style_sd14v1.pth -P ./models/style_models/\n",
|
|
"\n",
|
|
"# CLIPVision model (needed for styles model)\n",
|
|
"#!wget -c https://huggingface.co/openai/clip-vit-large-patch14/resolve/main/pytorch_model.bin -O ./models/clip_vision/clip_vit14.bin\n",
|
|
"\n",
|
|
"\n",
|
|
"# ControlNet\n",
|
|
"#!wget -c https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_v11e_sd15_ip2p_fp16.safetensors -P ./models/controlnet/\n",
|
|
"#!wget -c https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_v11e_sd15_shuffle_fp16.safetensors -P ./models/controlnet/\n",
|
|
"#!wget -c https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_v11p_sd15_canny_fp16.safetensors -P ./models/controlnet/\n",
|
|
"#!wget -c https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_v11f1p_sd15_depth_fp16.safetensors -P ./models/controlnet/\n",
|
|
"#!wget -c https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_v11p_sd15_inpaint_fp16.safetensors -P ./models/controlnet/\n",
|
|
"#!wget -c https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_v11p_sd15_lineart_fp16.safetensors -P ./models/controlnet/\n",
|
|
"#!wget -c https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_v11p_sd15_mlsd_fp16.safetensors -P ./models/controlnet/\n",
|
|
"#!wget -c https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_v11p_sd15_normalbae_fp16.safetensors -P ./models/controlnet/\n",
|
|
"#!wget -c https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_v11p_sd15_openpose_fp16.safetensors -P ./models/controlnet/\n",
|
|
"#!wget -c https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_v11p_sd15_scribble_fp16.safetensors -P ./models/controlnet/\n",
|
|
"#!wget -c https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_v11p_sd15_seg_fp16.safetensors -P ./models/controlnet/\n",
|
|
"#!wget -c https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_v11p_sd15_softedge_fp16.safetensors -P ./models/controlnet/\n",
|
|
"#!wget -c https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_v11p_sd15s2_lineart_anime_fp16.safetensors -P ./models/controlnet/\n",
|
|
"#!wget -c https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_v11u_sd15_tile_fp16.safetensors -P ./models/controlnet/\n",
|
|
"\n",
|
|
"\n",
|
|
"# Controlnet Preprocessor nodes by Fannovel16\n",
|
|
"#!cd custom_nodes && git clone https://github.com/Fannovel16/comfy_controlnet_preprocessors; cd comfy_controlnet_preprocessors && python install.py\n",
|
|
"\n",
|
|
"\n",
|
|
"# GLIGEN\n",
|
|
"#!wget -c https://huggingface.co/comfyanonymous/GLIGEN_pruned_safetensors/resolve/main/gligen_sd14_textbox_pruned_fp16.safetensors -P ./models/gligen/\n",
|
|
"\n",
|
|
"\n",
|
|
"# ESRGAN upscale model\n",
|
|
"#!wget -c https://github.com/xinntao/Real-ESRGAN/releases/download/v0.1.0/RealESRGAN_x4plus.pth -P ./models/upscale_models/\n",
|
|
"#!wget -c https://huggingface.co/sberbank-ai/Real-ESRGAN/resolve/main/RealESRGAN_x2.pth -P ./models/upscale_models/\n",
|
|
"#!wget -c https://huggingface.co/sberbank-ai/Real-ESRGAN/resolve/main/RealESRGAN_x4.pth -P ./models/upscale_models/\n",
|
|
"\n",
|
|
"\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"id": "kkkkkkkkkkkkkk"
|
|
},
|
|
"source": [
|
|
"### Run ComfyUI with localtunnel (Recommended Way)\n",
|
|
"\n",
|
|
"\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {
|
|
"id": "jjjjjjjjjjjjj"
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"!npm install -g localtunnel\n",
|
|
"\n",
|
|
"import subprocess\n",
|
|
"import threading\n",
|
|
"import time\n",
|
|
"import socket\n",
|
|
"import urllib.request\n",
|
|
"\n",
|
|
"def iframe_thread(port):\n",
|
|
" while True:\n",
|
|
" time.sleep(0.5)\n",
|
|
" sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)\n",
|
|
" result = sock.connect_ex(('127.0.0.1', port))\n",
|
|
" if result == 0:\n",
|
|
" break\n",
|
|
" sock.close()\n",
|
|
" print(\"\\nComfyUI finished loading, trying to launch localtunnel (if it gets stuck here localtunnel is having issues)\\n\")\n",
|
|
"\n",
|
|
" print(\"The password/enpoint ip for localtunnel is:\", urllib.request.urlopen('https://ipv4.icanhazip.com').read().decode('utf8').strip(\"\\n\"))\n",
|
|
" p = subprocess.Popen([\"lt\", \"--port\", \"{}\".format(port)], stdout=subprocess.PIPE)\n",
|
|
" for line in p.stdout:\n",
|
|
" print(line.decode(), end='')\n",
|
|
"\n",
|
|
"\n",
|
|
"threading.Thread(target=iframe_thread, daemon=True, args=(8188,)).start()\n",
|
|
"\n",
|
|
"!python main.py --dont-print-server"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"id": "gggggggggg"
|
|
},
|
|
"source": [
|
|
"### Run ComfyUI with colab iframe (use only in case the previous way with localtunnel doesn't work)\n",
|
|
"\n",
|
|
"You should see the ui appear in an iframe. If you get a 403 error, it's your firefox settings or an extension that's messing things up.\n",
|
|
"\n",
|
|
"If you want to open it in another window use the link.\n",
|
|
"\n",
|
|
"Note that some UI features like live image previews won't work because the colab iframe blocks websockets."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {
|
|
"id": "hhhhhhhhhh"
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"import threading\n",
|
|
"import time\n",
|
|
"import socket\n",
|
|
"def iframe_thread(port):\n",
|
|
" while True:\n",
|
|
" time.sleep(0.5)\n",
|
|
" sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)\n",
|
|
" result = sock.connect_ex(('127.0.0.1', port))\n",
|
|
" if result == 0:\n",
|
|
" break\n",
|
|
" sock.close()\n",
|
|
" from google.colab import output\n",
|
|
" output.serve_kernel_port_as_iframe(port, height=1024)\n",
|
|
" print(\"to open it in a window you can open this link here:\")\n",
|
|
" output.serve_kernel_port_as_window(port)\n",
|
|
"\n",
|
|
"threading.Thread(target=iframe_thread, daemon=True, args=(8188,)).start()\n",
|
|
"\n",
|
|
"!python main.py --dont-print-server"
|
|
]
|
|
}
|
|
],
|
|
"metadata": {
|
|
"accelerator": "GPU",
|
|
"colab": {
|
|
"provenance": []
|
|
},
|
|
"gpuClass": "standard",
|
|
"kernelspec": {
|
|
"display_name": "Python 3",
|
|
"name": "python3"
|
|
},
|
|
"language_info": {
|
|
"name": "python"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 0
|
|
}
|