81 lines
4.8 KiB
Python
81 lines
4.8 KiB
Python
import json
|
|
import subprocess
|
|
import uuid
|
|
from pathlib import Path
|
|
from typing import Dict
|
|
|
|
import modal
|
|
|
|
image = ( # build up a Modal Image to run ComfyUI, step by step
|
|
modal.Image.debian_slim( # start from basic Linux with Python
|
|
python_version="3.10"
|
|
)
|
|
.apt_install("git") # install git to clone ComfyUI
|
|
.pip_install("fastapi[standard]==0.115.4") # install web dependencies
|
|
.pip_install("comfy-cli==1.3.5") # install comfy-cli
|
|
.pip_install("cos-python-sdk-v5")
|
|
.pip_install("sqlalchemy")
|
|
.pip_install("ultralytics")
|
|
.pip_install("tencentcloud-sdk-python")
|
|
.pip_install("pymysql")
|
|
.pip_install("Pillow")
|
|
.pip_install("ffmpy")
|
|
.pip_install("opencv-python")
|
|
.run_commands( # use comfy-cli to install ComfyUI and its dependencies
|
|
"comfy --skip-prompt install --nvidia --version 0.3.10"
|
|
).add_local_file("snapshot.json","/root/snapshot.json", copy=True)
|
|
)
|
|
|
|
image = (
|
|
image.run_commands("comfy node install https://github.com/M1kep/ComfyLiterals")
|
|
.run_commands("comfy node install https://github.com/evanspearman/ComfyMath")
|
|
.run_commands("comfy node install https://github.com/Kosinkadink/ComfyUI-AnimateDiff-Evolved")
|
|
.run_commands("comfy node install https://e.coding.net/g-ldyi2063/dev/ComfyUI-Bowong.git")
|
|
.run_commands("comfy node install https://github.com/crystian/ComfyUI-Crystools")
|
|
.run_commands("comfy node install https://github.com/pythongosssss/ComfyUI-Custom-Scripts")
|
|
.run_commands("comfy node install https://e.coding.net/g-ldyi2063/dev/ComfyUI-CustomNode.git")
|
|
.run_commands("comfy node install https://github.com/BennyKok/comfyui-deploy")
|
|
.run_commands("comfy node install https://github.com/yolain/ComfyUI-Easy-Use")
|
|
.run_commands("comfy node install https://e.coding.net/g-ldyi2063/dev/ComfyUI-LatentSync-Node.git")
|
|
.run_commands("comfy node install https://e.coding.net/g-ldyi2063/dev/ComfyUI-VideoHelperSuite.git")
|
|
.run_commands("comfy node install https://e.coding.net/g-ldyi2063/dev/CosyVoice-ComfyUI.git")
|
|
.run_commands("comfy node install https://github.com/jags111/efficiency-nodes-comfyui")
|
|
.run_commands("comfy node install https://github.com/WASasquatch/was-node-suite-comfyui")
|
|
.run_commands("comfy node install https://github.com/rgthree/rgthree-comfy")
|
|
.run_commands("comfy node install https://github.com/cubiq/ComfyUI_essentials")
|
|
.run_commands("comfy node install https://github.com/melMass/comfy_mtb")
|
|
.run_commands(
|
|
"mkdir -p /root/comfy/ComfyUI/models/ComfyUI-CustomNode/model && rm -rf /root/comfy/ComfyUI/custom_nodes/ComfyUI-CustomNode/model && ln -s /root/comfy/ComfyUI/models/ComfyUI-CustomNode/model /root/comfy/ComfyUI/custom_nodes/ComfyUI-CustomNode/model"
|
|
).run_commands(
|
|
"mkdir -p /root/comfy/ComfyUI/models/ComfyUI-LatentSync-Node/checkpoints && rm -rf /root/comfy/ComfyUI/custom_nodes/ComfyUI-LatentSync-Node/checkpoints && ln -s /root/comfy/ComfyUI/models/ComfyUI-LatentSync-Node/checkpoints /root/comfy/ComfyUI/custom_nodes/ComfyUI-LatentSync-Node/checkpoints"
|
|
).run_commands(
|
|
"mkdir -p /root/comfy/ComfyUI/models/CosyVoice-ComfyUI/pretrained_models/CosyVoice-300M-SFT && mkdir -p /root/comfy/ComfyUI/custom_nodes/CosyVoice-ComfyUI/pretrained_models/CosyVoice-300M-SFT && rm -rf /root/comfy/ComfyUI/custom_nodes/CosyVoice-ComfyUI/pretrained_models/CosyVoice-300M-SFT && ln -s /root/comfy/ComfyUI/models/CosyVoice-ComfyUI/pretrained_models/CosyVoice-300M-SFT /root/comfy/ComfyUI/custom_nodes/CosyVoice-ComfyUI/pretrained_models/CosyVoice-300M-SFT"
|
|
).run_commands(
|
|
"mkdir -p /root/comfy/ComfyUI/models/.cache/torch/hub/checkpoints && mkdir -p /root/.cache/torch/hub/checkpoints && rm -rf /root/.cache/torch/hub/checkpoints && ln -s /root/comfy/ComfyUI/models/.cache/torch/hub/checkpoints /root/.cache/torch/hub/checkpoints"
|
|
).run_commands(
|
|
"mkdir -p /root/comfy/ComfyUI/models/stabilityai && ln -s /root/comfy/ComfyUI/models/stabilityai /root/comfy/ComfyUI/stabilityai"
|
|
).run_commands(
|
|
"rm -rf /root/comfy/ComfyUI/models"
|
|
).run_commands(
|
|
"apt update && apt install -y ffmpeg && ffmpeg -version"
|
|
).pip_install("av")
|
|
# Add .run_commands(...) calls for any other custom nodes you want to download
|
|
)
|
|
|
|
image = image.add_local_file(
|
|
"highlight_v0.113_api.json", "/root/workflow_api.json"
|
|
)
|
|
|
|
app = modal.App(name="highlight-comfyui", image=image)
|
|
vol = modal.Volume.from_name("comfyui-model", create_if_missing=True)
|
|
|
|
@app.function(
|
|
allow_concurrent_inputs=10, # required for UI startup process which runs several API calls concurrently
|
|
concurrency_limit=1, # limit interactive session to 1 container
|
|
gpu="T4", # good starter GPU for inference
|
|
volumes={"/root/comfy/ComfyUI/models": vol}, # mounts our cached models
|
|
)
|
|
@modal.web_server(8000, startup_timeout=60)
|
|
def ui():
|
|
subprocess.Popen("comfy launch -- --listen 0.0.0.0 --port 8000", shell=True)
|