{ "nbformat": 4, "nbformat_minor": 0, "metadata": { "colab": { "provenance": [] }, "kernelspec": { "name": "python3", "display_name": "Python 3" }, "language_info": { "name": "python" }, "accelerator": "GPU", "gpuClass": "standard" }, "cells": [ { "cell_type": "markdown", "source": [ "Git clone the repo and install the requirements. (ignore the pip errors about protobuf)" ], "metadata": { "id": "aaaaaaaaaa" } }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "bbbbbbbbbb" }, "outputs": [], "source": [ "!git clone https://github.com/comfyanonymous/ComfyUI\n", "%cd ComfyUI\n", "!pip install -r requirements.txt\n", "!pip install xformers\n", "!sed -i 's/v1-inference.yaml/v1-inference_fp16.yaml/g' webshit/index.html" ] }, { "cell_type": "markdown", "source": [ "Download some models/checkpoints/vae (uncomment the wget commands for the ones you want)" ], "metadata": { "id": "cccccccccc" } }, { "cell_type": "code", "source": [ "# Checkpoints\n", "\n", "# SD1.5\n", "!wget https://huggingface.co/runwayml/stable-diffusion-v1-5/resolve/main/v1-5-pruned-emaonly.ckpt -P ./models/checkpoints/\n", "\n", "# SD2\n", "#!wget https://huggingface.co/stabilityai/stable-diffusion-2-1-base/resolve/main/v2-1_512-ema-pruned.safetensors -P ./models/checkpoints/\n", "#!wget 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 models\n", "#!wget https://huggingface.co/WarriorMama777/OrangeMixs/resolve/main/Models/AbyssOrangeMix2/AbyssOrangeMix2_hard.safetensors -P ./models/checkpoints/\n", "#!wget https://huggingface.co/WarriorMama777/OrangeMixs/resolve/main/Models/AbyssOrangeMix3/AOM3A1.safetensors -P ./models/checkpoints/\n", "#!wget https://huggingface.co/WarriorMama777/OrangeMixs/resolve/main/Models/AbyssOrangeMix3/AOM3A3.safetensors -P ./models/checkpoints/\n", "#!wget https://huggingface.co/Linaqruf/anything-v3.0/resolve/main/anything-v3-fp16-pruned.safetensors -P ./models/checkpoints/\n", "\n", "\n", "# VAE\n", "!wget https://huggingface.co/stabilityai/sd-vae-ft-mse-original/resolve/main/vae-ft-mse-840000-ema-pruned.safetensors -P ./models/vae/\n", "#!wget https://huggingface.co/WarriorMama777/OrangeMixs/resolve/main/VAEs/orangemix.vae.pt -P ./models/vae/\n", "\n", "\n", "# T2I-Adapter\n", "#!wget https://huggingface.co/TencentARC/T2I-Adapter/resolve/main/models/t2iadapter_depth_sd14v1.pth -P ./models/t2i_adapter/\n", "#!wget https://huggingface.co/TencentARC/T2I-Adapter/resolve/main/models/t2iadapter_seg_sd14v1.pth -P ./models/t2i_adapter/\n", "#!wget https://huggingface.co/TencentARC/T2I-Adapter/resolve/main/models/t2iadapter_sketch_sd14v1.pth -P ./models/t2i_adapter/\n", "#!wget https://huggingface.co/TencentARC/T2I-Adapter/resolve/main/models/t2iadapter_keypose_sd14v1.pth -P ./models/t2i_adapter/\n", "\n", "\n", "# ControlNet\n", "#!wget https://huggingface.co/webui/ControlNet-modules-safetensors/resolve/main/control_depth-fp16.safetensors -P ./models/controlnet/\n", "#!wget https://huggingface.co/webui/ControlNet-modules-safetensors/resolve/main/control_scribble-fp16.safetensors -P ./models/controlnet/\n", "#!wget https://huggingface.co/webui/ControlNet-modules-safetensors/resolve/main/control_openpose-fp16.safetensors -P ./models/controlnet/\n" ], "metadata": { "id": "dddddddddd" }, "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "source": [ "### Run ComfyUI with localtunnel\n", "\n", "use the **fp16** model configs for more speed\n", "\n" ], "metadata": { "id": "kkkkkkkkkkkkkk" } }, { "cell_type": "code", "source": [ "!npm install -g localtunnel\n", "\n", "import subprocess\n", "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", " 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 --highvram --dont-print-server" ], "metadata": { "id": "jjjjjjjjjjjjj" }, "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "source": [ "### Run ComfyUI with colab iframe (in case localtunnel doesn't work)\n", "use the **fp16** model configs for more speed\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" ], "metadata": { "id": "gggggggggg" } }, { "cell_type": "code", "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 --highvram --dont-print-server" ], "metadata": { "id": "hhhhhhhhhh" }, "execution_count": null, "outputs": [] } ] }