[add] comfy xpu
This commit is contained in:
parent
2d0fd54f68
commit
e0c302bcdd
13 changed files with 646 additions and 0 deletions
188
comfyui.xpu/Dockerfile
Normal file
188
comfyui.xpu/Dockerfile
Normal file
|
|
@ -0,0 +1,188 @@
|
||||||
|
################################################################################
|
||||||
|
# Dockerfile that builds 'yanwk/comfyui-boot:xpu'
|
||||||
|
# A runtime environment for https://github.com/comfyanonymous/ComfyUI
|
||||||
|
# Running on XPU (Intel GPU).
|
||||||
|
# Does NOT install IPEX (Intel Extension for PyTorch).
|
||||||
|
# Using Python 3.13, GCC 14.
|
||||||
|
# Using 'root' inside the container.
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
FROM fedora:42
|
||||||
|
|
||||||
|
LABEL maintainer="code@yanwk.fun"
|
||||||
|
|
||||||
|
RUN set -eu
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# OS Packages
|
||||||
|
|
||||||
|
RUN --mount=type=cache,target=/var/cache/dnf \
|
||||||
|
dnf install -y --nogpgcheck \
|
||||||
|
'https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-42.noarch.rpm' \
|
||||||
|
&& dnf upgrade -y \
|
||||||
|
&& dnf install -y \
|
||||||
|
python3.13-devel \
|
||||||
|
python3-pip \
|
||||||
|
python3-wheel \
|
||||||
|
python3-setuptools \
|
||||||
|
python3-cython \
|
||||||
|
make \
|
||||||
|
ninja \
|
||||||
|
python3-cmake
|
||||||
|
|
||||||
|
# RUN --mount=type=cache,target=/var/cache/dnf \
|
||||||
|
# dnf install -y \
|
||||||
|
# python3-matplotlib \
|
||||||
|
# python3-mpmath \
|
||||||
|
# python3-numpy \
|
||||||
|
# python3-onnx
|
||||||
|
|
||||||
|
RUN --mount=type=cache,target=/var/cache/dnf \
|
||||||
|
dnf install -y \
|
||||||
|
ffmpeg \
|
||||||
|
x264 \
|
||||||
|
x265 \
|
||||||
|
default-fonts-cjk
|
||||||
|
|
||||||
|
RUN --mount=type=cache,target=/var/cache/dnf \
|
||||||
|
dnf install -y \
|
||||||
|
python3-opencv \
|
||||||
|
python3-cairo
|
||||||
|
|
||||||
|
RUN --mount=type=cache,target=/var/cache/dnf \
|
||||||
|
dnf install -y \
|
||||||
|
mesa-libGL \
|
||||||
|
mesa-libEGL \
|
||||||
|
# python3-GitPython \
|
||||||
|
git \
|
||||||
|
# python3-pandas \
|
||||||
|
# python3-scikit-build-core \
|
||||||
|
# python3-scikit-image \
|
||||||
|
# python3-scikit-learn \
|
||||||
|
fish \
|
||||||
|
aria2 \
|
||||||
|
fd-find \
|
||||||
|
vim \
|
||||||
|
which
|
||||||
|
|
||||||
|
RUN --mount=type=cache,target=/var/cache/dnf \
|
||||||
|
dnf install -y \
|
||||||
|
intel-compute-runtime \
|
||||||
|
intel-level-zero \
|
||||||
|
intel-level-zero-devel \
|
||||||
|
oneapi-level-zero \
|
||||||
|
oneapi-level-zero-devel \
|
||||||
|
intel-ocloc \
|
||||||
|
intel-opencl \
|
||||||
|
intel-igc \
|
||||||
|
clinfo \
|
||||||
|
openssl
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# GCC 14
|
||||||
|
# Fedora 42 defaults to GCC 15
|
||||||
|
|
||||||
|
RUN --mount=type=cache,target=/var/cache/dnf \
|
||||||
|
dnf install -y \
|
||||||
|
gcc14 \
|
||||||
|
gcc14-c++ \
|
||||||
|
&& update-alternatives --install /usr/bin/c++ c++ /usr/bin/g++-14 90 \
|
||||||
|
&& update-alternatives --install /usr/bin/cc cc /usr/bin/gcc-14 90 \
|
||||||
|
&& update-alternatives --install /usr/bin/cpp cpp /usr/bin/cpp-14 90 \
|
||||||
|
&& update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-14 90 \
|
||||||
|
&& update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-14 90 \
|
||||||
|
&& update-alternatives --install /usr/bin/gcc-ar gcc-ar /usr/bin/gcc-ar-14 90 \
|
||||||
|
&& update-alternatives --install /usr/bin/gcc-nm gcc-nm /usr/bin/gcc-nm-14 90 \
|
||||||
|
&& update-alternatives --install /usr/bin/gcc-ranlib gcc-ranlib /usr/bin/gcc-ranlib-14 90 \
|
||||||
|
&& update-alternatives --install /usr/bin/gcov gcov /usr/bin/gcov-14 90 \
|
||||||
|
&& update-alternatives --install /usr/bin/gcov-dump gcov-dump /usr/bin/gcov-dump-14 90 \
|
||||||
|
&& update-alternatives --install /usr/bin/gcov-tool gcov-tool /usr/bin/gcov-tool-14 90
|
||||||
|
|
||||||
|
# ################################################################################
|
||||||
|
# PyTorch (No IPEX)
|
||||||
|
|
||||||
|
ARG PIP_ROOT_USER_ACTION='ignore'
|
||||||
|
ARG PIP_NO_BUILD_ISOLATION=1
|
||||||
|
|
||||||
|
RUN --mount=type=cache,target=/root/.cache/pip \
|
||||||
|
pip list \
|
||||||
|
&& pip install \
|
||||||
|
--upgrade pip wheel setuptools
|
||||||
|
|
||||||
|
RUN --mount=type=cache,target=/root/.cache/pip \
|
||||||
|
pip install \
|
||||||
|
--dry-run torch torchvision torchaudio \
|
||||||
|
--index-url https://download.pytorch.org/whl/xpu \
|
||||||
|
&& pip install \
|
||||||
|
--no-deps torch \
|
||||||
|
--index-url https://download.pytorch.org/whl/xpu
|
||||||
|
|
||||||
|
RUN --mount=type=cache,target=/root/.cache/pip \
|
||||||
|
pip install \
|
||||||
|
torch torchvision torchaudio \
|
||||||
|
--index-url https://download.pytorch.org/whl/xpu
|
||||||
|
|
||||||
|
# Deps for ComfyUI & custom nodes
|
||||||
|
COPY builder-scripts/. /builder-scripts/
|
||||||
|
|
||||||
|
RUN --mount=type=cache,target=/root/.cache/pip \
|
||||||
|
pip install \
|
||||||
|
-r /builder-scripts/pak3.txt
|
||||||
|
|
||||||
|
RUN --mount=type=cache,target=/root/.cache/pip \
|
||||||
|
pip install \
|
||||||
|
-r /builder-scripts/pak5.txt
|
||||||
|
|
||||||
|
# Temp fix for SentencePiece on CMAKE 4+
|
||||||
|
ENV CMAKE_POLICY_VERSION_MINIMUM=3.5
|
||||||
|
|
||||||
|
RUN --mount=type=cache,target=/root/.cache/pip \
|
||||||
|
pip install \
|
||||||
|
-r /builder-scripts/pak7.txt
|
||||||
|
|
||||||
|
RUN --mount=type=cache,target=/root/.cache/pip \
|
||||||
|
pip install \
|
||||||
|
-r /builder-scripts/pak9.txt
|
||||||
|
|
||||||
|
RUN --mount=type=cache,target=/root/.cache/pip \
|
||||||
|
pip install \
|
||||||
|
-r /builder-scripts/pakA.txt
|
||||||
|
|
||||||
|
# Ensure deps match
|
||||||
|
RUN --mount=type=cache,target=/root/.cache/pip \
|
||||||
|
pip install \
|
||||||
|
torch torchvision torchaudio \
|
||||||
|
--index-url https://download.pytorch.org/whl/xpu
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
WORKDIR /default-comfyui-bundle
|
||||||
|
|
||||||
|
RUN bash /builder-scripts/preload-cache.sh
|
||||||
|
|
||||||
|
RUN --mount=type=cache,target=/root/.cache/pip \
|
||||||
|
pip install \
|
||||||
|
-r '/default-comfyui-bundle/ComfyUI/requirements.txt' \
|
||||||
|
-r '/default-comfyui-bundle/ComfyUI/manager_requirements.txt' \
|
||||||
|
&& pip list
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
ENV LD_LIBRARY_PATH="/usr/local/lib\
|
||||||
|
:/usr/local/lib64/python3.13/site-packages/torch/lib/\
|
||||||
|
${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}"
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
RUN df -h \
|
||||||
|
&& du -ah /root \
|
||||||
|
&& find /root/ -mindepth 1 -delete
|
||||||
|
|
||||||
|
COPY runner-scripts/. /runner-scripts/
|
||||||
|
|
||||||
|
USER root
|
||||||
|
VOLUME /root
|
||||||
|
WORKDIR /root
|
||||||
|
EXPOSE 8188
|
||||||
|
ENV CLI_ARGS=""
|
||||||
|
CMD ["bash","/runner-scripts/entrypoint.sh"]
|
||||||
104
comfyui.xpu/README.txt
Normal file
104
comfyui.xpu/README.txt
Normal file
|
|
@ -0,0 +1,104 @@
|
||||||
|
Usage
|
||||||
|
-----
|
||||||
|
|
||||||
|
1. Check the Linux Kernel Module (driver) for Intel GPU:
|
||||||
|
|
||||||
|
lsmod | grep -i xe
|
||||||
|
|
||||||
|
For desktop distros with rolling-ish kernel updates, xe is usually included already.
|
||||||
|
|
||||||
|
2. Search and install `intel-compute-runtime` (or similar) with your host OS' package manager.
|
||||||
|
If not found, just ignore it and run directly.
|
||||||
|
|
||||||
|
For Ubuntu, follow this instruction and install the compute-related packages:
|
||||||
|
https://dgpu-docs.intel.com/driver/client/overview.html
|
||||||
|
|
||||||
|
3. Run the container:
|
||||||
|
|
||||||
|
====
|
||||||
|
mkdir -p \
|
||||||
|
storage \
|
||||||
|
storage-models/models \
|
||||||
|
storage-models/hf-hub \
|
||||||
|
storage-models/torch-hub \
|
||||||
|
storage-user/input \
|
||||||
|
storage-user/output \
|
||||||
|
storage-user/workflows
|
||||||
|
|
||||||
|
podman run -it --rm \
|
||||||
|
--name comfyui-xpu \
|
||||||
|
--device=/dev/dri \
|
||||||
|
--ipc=host \
|
||||||
|
--security-opt label=disable \
|
||||||
|
-p 8188:8188 \
|
||||||
|
-v "$(pwd)"/storage:/root \
|
||||||
|
-v "$(pwd)"/storage-models/models:/root/ComfyUI/models \
|
||||||
|
-v "$(pwd)"/storage-models/hf-hub:/root/.cache/huggingface/hub \
|
||||||
|
-v "$(pwd)"/storage-models/torch-hub:/root/.cache/torch/hub \
|
||||||
|
-v "$(pwd)"/storage-user/input:/root/ComfyUI/input \
|
||||||
|
-v "$(pwd)"/storage-user/output:/root/ComfyUI/output \
|
||||||
|
-v "$(pwd)"/storage-user/workflows:/root/ComfyUI/user/default/workflows \
|
||||||
|
-e CLI_ARGS="--disable-smart-memory --async-offload" \
|
||||||
|
yanwk/comfyui-boot:xpu
|
||||||
|
====
|
||||||
|
|
||||||
|
Note:
|
||||||
|
|
||||||
|
1. "--disable-smart-memory" is useful for XPU, although it consumes more RAM.
|
||||||
|
2. "--async-offload" gives subtle improvement and no visible harm.
|
||||||
|
|
||||||
|
More CLI_ARGS:
|
||||||
|
|
||||||
|
--lowvram
|
||||||
|
--bf16-unet
|
||||||
|
--bf16-vae
|
||||||
|
--bf16-text-enc
|
||||||
|
--mmap-torch-files
|
||||||
|
--reserve-vram 1
|
||||||
|
|
||||||
|
Check the doc before use:
|
||||||
|
https://github.com/comfyanonymous/ComfyUI/blob/master/comfy/cli_args.py
|
||||||
|
|
||||||
|
|
||||||
|
Test result on Arc B580
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
Time on generating one 1024x1024px image (pre-warmed, only infer time)
|
||||||
|
|
||||||
|
* SD 1.5 (20-step): OK (5s) | 512x512: GOOD (1s)
|
||||||
|
* SDXL (28-step): OK (6s)
|
||||||
|
* SDXL Refiner (20+5-step): OK (4+1s)
|
||||||
|
* Stable Cascade (20+10-step): FAST (3+3s)
|
||||||
|
* SD 3.5 large fp8 (20-step): GOOD (26s)
|
||||||
|
* Flux1 schnell (4-step): GOOD (8s)
|
||||||
|
* Flux1 dev fp8 (20-step): GOOD (35s)
|
||||||
|
* Flux1 Krea dev (20-step): OK (46s)
|
||||||
|
|
||||||
|
* Hunyuan3D 2.0 (Comfy Repackaged): 'Non-uniform work-groups are not supported by the target device'
|
||||||
|
* StableZero123: 'Non-uniform work-groups are not supported by the target device'
|
||||||
|
|
||||||
|
* Wan 2.2 5B Text to Video (640x352, 121 frames): FAST (60s, very poor quality)
|
||||||
|
* Wan 2.2 5B Text to Video (960x544, 121 frames): OK (181s, low quality)
|
||||||
|
* Wan 2.2 5B Text to Video (1280x704, 121 frames): FAILED (OOM)
|
||||||
|
|
||||||
|
|
||||||
|
Notes
|
||||||
|
--------------
|
||||||
|
|
||||||
|
1. Once OOM, ComfyUI won't crash, but GPU will stop responding
|
||||||
|
for future prompt (UR_RESULT_ERROR_DEVICE_LOST).
|
||||||
|
In that case, you will need to restart ComfyUI.
|
||||||
|
|
||||||
|
2. IPEX (Intel Extension for PyTorch) is not included, as most of its features
|
||||||
|
have been merged upstream and it is being phased out:
|
||||||
|
https://github.com/intel/intel-extension-for-pytorch/releases
|
||||||
|
|
||||||
|
|
||||||
|
For Windows Users
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
Just use Intel AI Playground:
|
||||||
|
https://game.intel.com/us/stories/introducing-ai-playground/
|
||||||
|
|
||||||
|
Or yet another ComfyUI portable:
|
||||||
|
https://github.com/YanWenKun/ComfyUI-WinPortable-XPU
|
||||||
51
comfyui.xpu/builder-scripts/generate-pak5.sh
Normal file
51
comfyui.xpu/builder-scripts/generate-pak5.sh
Normal file
|
|
@ -0,0 +1,51 @@
|
||||||
|
#!/bin/bash
|
||||||
|
set -eu
|
||||||
|
|
||||||
|
echo '#' > pak5.txt
|
||||||
|
|
||||||
|
array=(
|
||||||
|
https://github.com/comfyanonymous/ComfyUI/raw/refs/heads/master/requirements.txt
|
||||||
|
https://github.com/Comfy-Org/ComfyUI-Manager/raw/refs/heads/main/requirements.txt
|
||||||
|
# Performance
|
||||||
|
https://github.com/openvino-dev-samples/comfyui_openvino/raw/refs/heads/main/requirements.txt
|
||||||
|
https://github.com/welltop-cn/ComfyUI-TeaCache/raw/refs/heads/main/requirements.txt
|
||||||
|
https://github.com/city96/ComfyUI-GGUF/raw/refs/heads/main/requirements.txt
|
||||||
|
# Workspace
|
||||||
|
https://github.com/crystian/ComfyUI-Crystools/raw/refs/heads/main/requirements.txt
|
||||||
|
# General
|
||||||
|
https://github.com/ltdrdata/was-node-suite-comfyui/raw/refs/heads/main/requirements.txt
|
||||||
|
https://github.com/kijai/ComfyUI-KJNodes/raw/refs/heads/main/requirements.txt
|
||||||
|
https://github.com/jags111/efficiency-nodes-comfyui/raw/refs/heads/main/requirements.txt
|
||||||
|
https://github.com/yolain/ComfyUI-Easy-Use/raw/refs/heads/main/requirements.txt
|
||||||
|
# Control
|
||||||
|
https://github.com/ltdrdata/ComfyUI-Impact-Pack/raw/refs/heads/Main/requirements.txt
|
||||||
|
https://github.com/ltdrdata/ComfyUI-Impact-Subpack/raw/refs/heads/main/requirements.txt
|
||||||
|
https://github.com/ltdrdata/ComfyUI-Inspire-Pack/raw/refs/heads/main/requirements.txt
|
||||||
|
https://github.com/Fannovel16/comfyui_controlnet_aux/raw/refs/heads/main/requirements.txt
|
||||||
|
https://github.com/Gourieff/ComfyUI-ReActor/raw/refs/heads/main/requirements.txt
|
||||||
|
https://github.com/huchenlei/ComfyUI-layerdiffuse/raw/refs/heads/main/requirements.txt
|
||||||
|
https://github.com/kijai/ComfyUI-Florence2/raw/refs/heads/main/requirements.txt
|
||||||
|
# Video
|
||||||
|
https://github.com/Kosinkadink/ComfyUI-VideoHelperSuite/raw/refs/heads/main/requirements.txt
|
||||||
|
https://github.com/Fannovel16/ComfyUI-Frame-Interpolation/raw/refs/heads/main/requirements-no-cupy.txt
|
||||||
|
https://github.com/melMass/comfy_mtb/raw/refs/heads/main/requirements.txt
|
||||||
|
# Pending Removal
|
||||||
|
https://github.com/cubiq/ComfyUI_essentials/raw/refs/heads/main/requirements.txt
|
||||||
|
)
|
||||||
|
|
||||||
|
for line in "${array[@]}";
|
||||||
|
do curl -w "\n" -sSL "${line}" >> pak5.txt
|
||||||
|
done
|
||||||
|
|
||||||
|
sed -i '/^#/d' pak5.txt
|
||||||
|
sed -i 's/[[:space:]]*$//' pak5.txt
|
||||||
|
sed -i 's/>=.*$//' pak5.txt
|
||||||
|
sed -i 's/_/-/g' pak5.txt
|
||||||
|
|
||||||
|
# Don't "sort foo.txt >foo.txt". See: https://stackoverflow.com/a/29244408
|
||||||
|
sort -ufo pak5.txt pak5.txt
|
||||||
|
|
||||||
|
# Remove duplicate items, compare to pak3.txt
|
||||||
|
grep -Fixv -f pak3.txt pak5.txt > temp.txt && mv temp.txt pak5.txt
|
||||||
|
|
||||||
|
echo "<pak5.txt> generated. Check before use."
|
||||||
30
comfyui.xpu/builder-scripts/pak3.txt
Normal file
30
comfyui.xpu/builder-scripts/pak3.txt
Normal file
|
|
@ -0,0 +1,30 @@
|
||||||
|
accelerate
|
||||||
|
compel
|
||||||
|
diffusers
|
||||||
|
fairscale
|
||||||
|
ftfy
|
||||||
|
gguf
|
||||||
|
huggingface-hub[cli]
|
||||||
|
imageio
|
||||||
|
joblib
|
||||||
|
kornia
|
||||||
|
lark
|
||||||
|
matplotlib
|
||||||
|
omegaconf
|
||||||
|
onnx
|
||||||
|
opencv-contrib-python-headless
|
||||||
|
pandas
|
||||||
|
pilgram
|
||||||
|
pillow
|
||||||
|
protobuf
|
||||||
|
pygit2
|
||||||
|
python-ffmpeg
|
||||||
|
regex
|
||||||
|
scikit-build-core
|
||||||
|
scikit-image
|
||||||
|
scikit-learn
|
||||||
|
scipy
|
||||||
|
timm
|
||||||
|
torchdiffeq
|
||||||
|
torchmetrics
|
||||||
|
transformers
|
||||||
55
comfyui.xpu/builder-scripts/pak5.txt
Normal file
55
comfyui.xpu/builder-scripts/pak5.txt
Normal file
|
|
@ -0,0 +1,55 @@
|
||||||
|
addict
|
||||||
|
aiohttp
|
||||||
|
albumentations
|
||||||
|
alembic
|
||||||
|
av
|
||||||
|
cachetools
|
||||||
|
chardet
|
||||||
|
clip-interrogator
|
||||||
|
color-matcher
|
||||||
|
colour-science
|
||||||
|
deepdiff
|
||||||
|
dill
|
||||||
|
einops
|
||||||
|
filelock
|
||||||
|
fvcore
|
||||||
|
GitPython
|
||||||
|
imageio-ffmpeg
|
||||||
|
importlib-metadata
|
||||||
|
mss
|
||||||
|
numba
|
||||||
|
peft
|
||||||
|
piexif
|
||||||
|
pixeloe
|
||||||
|
psutil
|
||||||
|
py-cpuinfo
|
||||||
|
pydantic-settings
|
||||||
|
pydantic
|
||||||
|
PyGithub
|
||||||
|
python-dateutil
|
||||||
|
pyyaml
|
||||||
|
qrcode[pil]
|
||||||
|
rembg
|
||||||
|
requirements-parser
|
||||||
|
rich
|
||||||
|
rich-argparse
|
||||||
|
safetensors
|
||||||
|
segment-anything
|
||||||
|
sentencepiece
|
||||||
|
simpleeval
|
||||||
|
spandrel
|
||||||
|
SQLAlchemy
|
||||||
|
tokenizers
|
||||||
|
toml
|
||||||
|
torchsde
|
||||||
|
tqdm
|
||||||
|
transparent-background
|
||||||
|
trimesh[easy]
|
||||||
|
typer
|
||||||
|
typing-extensions
|
||||||
|
ultralytics
|
||||||
|
uv
|
||||||
|
webcolors
|
||||||
|
yacs
|
||||||
|
yapf
|
||||||
|
yarl
|
||||||
7
comfyui.xpu/builder-scripts/pak7.txt
Normal file
7
comfyui.xpu/builder-scripts/pak7.txt
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
dlib
|
||||||
|
facexlib
|
||||||
|
insightface
|
||||||
|
git+https://github.com/facebookresearch/sam2.git
|
||||||
|
git+https://github.com/ltdrdata/cstr.git
|
||||||
|
git+https://github.com/ltdrdata/ffmpy.git
|
||||||
|
git+https://github.com/ltdrdata/img2texture.git
|
||||||
3
comfyui.xpu/builder-scripts/pak9.txt
Normal file
3
comfyui.xpu/builder-scripts/pak9.txt
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
# https://www.intel.com/content/www/us/en/developer/tools/openvino-toolkit/download.html
|
||||||
|
onnxruntime
|
||||||
|
onnxruntime-openvino
|
||||||
6
comfyui.xpu/builder-scripts/pakA.txt
Normal file
6
comfyui.xpu/builder-scripts/pakA.txt
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
# https://www.intel.com/content/www/us/en/developer/tools/openvino-toolkit/download.html
|
||||||
|
# https://github.com/openvino-dev-samples/comfyui_openvino/blob/main/requirements.txt
|
||||||
|
--pre
|
||||||
|
--extra-index-url https://storage.openvinotoolkit.org/simple/wheels/nightly
|
||||||
|
openvino
|
||||||
|
openvino-genai
|
||||||
86
comfyui.xpu/builder-scripts/preload-cache.sh
Normal file
86
comfyui.xpu/builder-scripts/preload-cache.sh
Normal file
|
|
@ -0,0 +1,86 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
gcs() {
|
||||||
|
git clone --depth=1 --no-tags --recurse-submodules --shallow-submodules "$@"
|
||||||
|
}
|
||||||
|
|
||||||
|
echo "########################################"
|
||||||
|
echo "[INFO] Downloading ComfyUI & Nodes..."
|
||||||
|
echo "########################################"
|
||||||
|
|
||||||
|
cd /default-comfyui-bundle
|
||||||
|
git clone 'https://github.com/comfyanonymous/ComfyUI.git'
|
||||||
|
cd /default-comfyui-bundle/ComfyUI
|
||||||
|
# Using stable version (has a release tag)
|
||||||
|
git reset --hard "$(git tag | grep -e '^v' | sort -V | tail -1)"
|
||||||
|
|
||||||
|
# Force ComfyUI-Manager to use PIP instead of UV
|
||||||
|
mkdir -p /default-comfyui-bundle/ComfyUI/user/__manager
|
||||||
|
|
||||||
|
cat <<EOF > /default-comfyui-bundle/ComfyUI/user/__manager/config.ini
|
||||||
|
[default]
|
||||||
|
use_uv = False
|
||||||
|
EOF
|
||||||
|
|
||||||
|
cd /default-comfyui-bundle/ComfyUI/custom_nodes
|
||||||
|
|
||||||
|
# Performance
|
||||||
|
gcs https://github.com/openvino-dev-samples/comfyui_openvino.git
|
||||||
|
gcs https://github.com/welltop-cn/ComfyUI-TeaCache.git
|
||||||
|
gcs https://github.com/city96/ComfyUI-GGUF.git
|
||||||
|
|
||||||
|
# Workspace
|
||||||
|
gcs https://github.com/crystian/ComfyUI-Crystools.git
|
||||||
|
|
||||||
|
# General
|
||||||
|
gcs https://github.com/ltdrdata/was-node-suite-comfyui.git
|
||||||
|
gcs https://github.com/kijai/ComfyUI-KJNodes.git
|
||||||
|
gcs https://github.com/bash-j/mikey_nodes.git
|
||||||
|
gcs https://github.com/chrisgoringe/cg-use-everywhere.git
|
||||||
|
gcs https://github.com/jags111/efficiency-nodes-comfyui.git
|
||||||
|
gcs https://github.com/pythongosssss/ComfyUI-Custom-Scripts.git
|
||||||
|
gcs https://github.com/rgthree/rgthree-comfy.git
|
||||||
|
gcs https://github.com/shiimizu/ComfyUI_smZNodes.git
|
||||||
|
gcs https://github.com/yolain/ComfyUI-Easy-Use.git
|
||||||
|
|
||||||
|
# Control
|
||||||
|
gcs https://github.com/ltdrdata/ComfyUI-Impact-Pack.git
|
||||||
|
gcs https://github.com/ltdrdata/ComfyUI-Impact-Subpack.git
|
||||||
|
gcs https://github.com/ltdrdata/ComfyUI-Inspire-Pack.git
|
||||||
|
gcs https://github.com/Fannovel16/comfyui_controlnet_aux.git
|
||||||
|
gcs https://github.com/florestefano1975/comfyui-portrait-master.git
|
||||||
|
gcs https://github.com/huchenlei/ComfyUI-layerdiffuse.git
|
||||||
|
gcs https://github.com/kijai/ComfyUI-Florence2.git
|
||||||
|
gcs https://github.com/Kosinkadink/ComfyUI-Advanced-ControlNet.git
|
||||||
|
gcs https://github.com/mcmonkeyprojects/sd-dynamic-thresholding.git
|
||||||
|
gcs https://github.com/twri/sdxl_prompt_styler.git
|
||||||
|
|
||||||
|
# Video
|
||||||
|
gcs https://github.com/Fannovel16/ComfyUI-Frame-Interpolation.git
|
||||||
|
gcs https://github.com/Kosinkadink/ComfyUI-AnimateDiff-Evolved.git
|
||||||
|
gcs https://github.com/Kosinkadink/ComfyUI-VideoHelperSuite.git
|
||||||
|
gcs https://github.com/melMass/comfy_mtb.git
|
||||||
|
|
||||||
|
# More
|
||||||
|
gcs https://github.com/pythongosssss/ComfyUI-WD14-Tagger.git
|
||||||
|
gcs https://github.com/SLAPaper/ComfyUI-Image-Selector.git
|
||||||
|
gcs https://github.com/ssitu/ComfyUI_UltimateSDUpscale.git
|
||||||
|
|
||||||
|
# To be removed in future
|
||||||
|
gcs https://github.com/cubiq/ComfyUI_essentials.git
|
||||||
|
gcs https://github.com/Gourieff/ComfyUI-ReActor.git ComfyUI-ReActor.disabled
|
||||||
|
|
||||||
|
|
||||||
|
echo "########################################"
|
||||||
|
echo "[INFO] Downloading Models..."
|
||||||
|
echo "########################################"
|
||||||
|
|
||||||
|
# VAE Models
|
||||||
|
cd /default-comfyui-bundle/ComfyUI/models/vae
|
||||||
|
|
||||||
|
aria2c 'https://github.com/madebyollin/taesd/raw/refs/heads/main/taesdxl_decoder.pth'
|
||||||
|
aria2c 'https://github.com/madebyollin/taesd/raw/refs/heads/main/taesd_decoder.pth'
|
||||||
|
aria2c 'https://github.com/madebyollin/taesd/raw/refs/heads/main/taesd3_decoder.pth'
|
||||||
|
aria2c 'https://github.com/madebyollin/taesd/raw/refs/heads/main/taef1_decoder.pth'
|
||||||
28
comfyui.xpu/docker-compose.yml
Normal file
28
comfyui.xpu/docker-compose.yml
Normal file
|
|
@ -0,0 +1,28 @@
|
||||||
|
# Compose file for Intel GPU
|
||||||
|
|
||||||
|
services:
|
||||||
|
|
||||||
|
comfyui:
|
||||||
|
init: true
|
||||||
|
container_name: comfyui-xpu
|
||||||
|
build:
|
||||||
|
context: .
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
image: "yanwk/comfyui-boot:xpu"
|
||||||
|
ports:
|
||||||
|
- "8188:8188"
|
||||||
|
volumes:
|
||||||
|
- "./storage:/root"
|
||||||
|
- "./storage-models/models:/root/ComfyUI/models"
|
||||||
|
- "./storage-models/hf-hub:/root/.cache/huggingface/hub"
|
||||||
|
- "./storage-models/torch-hub:/root/.cache/torch/hub"
|
||||||
|
- "./storage-user/input:/root/ComfyUI/input"
|
||||||
|
- "./storage-user/output:/root/ComfyUI/output"
|
||||||
|
- "./storage-user/workflows:/root/ComfyUI/user/default/workflows"
|
||||||
|
environment:
|
||||||
|
- CLI_ARGS=
|
||||||
|
devices:
|
||||||
|
- /dev/dri
|
||||||
|
ipc: host
|
||||||
|
security_opt:
|
||||||
|
- label:disable
|
||||||
62
comfyui.xpu/runner-scripts/entrypoint.sh
Normal file
62
comfyui.xpu/runner-scripts/entrypoint.sh
Normal file
|
|
@ -0,0 +1,62 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
echo "########################################"
|
||||||
|
|
||||||
|
# Run user's set-proxy script
|
||||||
|
cd /root
|
||||||
|
if [ ! -f "/root/user-scripts/set-proxy.sh" ] ; then
|
||||||
|
mkdir -p /root/user-scripts
|
||||||
|
cp /runner-scripts/set-proxy.sh.example /root/user-scripts/set-proxy.sh
|
||||||
|
else
|
||||||
|
echo "[INFO] Running set-proxy script..."
|
||||||
|
|
||||||
|
chmod +x /root/user-scripts/set-proxy.sh
|
||||||
|
source /root/user-scripts/set-proxy.sh
|
||||||
|
fi ;
|
||||||
|
|
||||||
|
# Copy ComfyUI from cache to workdir if it doesn't exist
|
||||||
|
cd /root
|
||||||
|
if [ ! -f "/root/ComfyUI/main.py" ] ; then
|
||||||
|
mkdir -p /root/ComfyUI
|
||||||
|
# 'cp --archive': all file timestamps and permissions will be preserved
|
||||||
|
# 'cp --update=none': do not overwrite
|
||||||
|
if cp --archive --update=none "/default-comfyui-bundle/ComfyUI/." "/root/ComfyUI/" ; then
|
||||||
|
echo "[INFO] Setting up ComfyUI..."
|
||||||
|
echo "[INFO] Using image-bundled ComfyUI (copied to workdir)."
|
||||||
|
else
|
||||||
|
echo "[ERROR] Failed to copy ComfyUI bundle to '/root/ComfyUI'" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "[INFO] Using existing ComfyUI in user storage..."
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Run user's pre-start script
|
||||||
|
cd /root
|
||||||
|
if [ ! -f "/root/user-scripts/pre-start.sh" ] ; then
|
||||||
|
mkdir -p /root/user-scripts
|
||||||
|
cp /runner-scripts/pre-start.sh.example /root/user-scripts/pre-start.sh
|
||||||
|
else
|
||||||
|
echo "[INFO] Running pre-start script..."
|
||||||
|
|
||||||
|
chmod +x /root/user-scripts/pre-start.sh
|
||||||
|
source /root/user-scripts/pre-start.sh
|
||||||
|
fi ;
|
||||||
|
|
||||||
|
echo "[INFO] Starting ComfyUI..."
|
||||||
|
echo "########################################"
|
||||||
|
|
||||||
|
# Let .pyc files be stored in one place
|
||||||
|
export PYTHONPYCACHEPREFIX="/root/.cache/pycache"
|
||||||
|
# Let PIP install packages to /root/.local
|
||||||
|
export PIP_USER=true
|
||||||
|
# Add above to PATH
|
||||||
|
export PATH="${PATH}:/root/.local/bin"
|
||||||
|
# Suppress [WARNING: Running pip as the 'root' user]
|
||||||
|
export PIP_ROOT_USER_ACTION=ignore
|
||||||
|
|
||||||
|
cd /root
|
||||||
|
|
||||||
|
python3 ./ComfyUI/main.py --listen --port 8188 --enable-manager ${CLI_ARGS}
|
||||||
4
comfyui.xpu/runner-scripts/pre-start.sh.example
Normal file
4
comfyui.xpu/runner-scripts/pre-start.sh.example
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
#!/bin/bash
|
||||||
|
set -eu
|
||||||
|
|
||||||
|
echo "[INFO] Continue without pre-start script."
|
||||||
22
comfyui.xpu/runner-scripts/set-proxy.sh.example
Normal file
22
comfyui.xpu/runner-scripts/set-proxy.sh.example
Normal file
|
|
@ -0,0 +1,22 @@
|
||||||
|
#!/bin/bash
|
||||||
|
set -eu
|
||||||
|
|
||||||
|
# Tip: Within containers, you cannot access your host machine via 127.0.0.1.
|
||||||
|
# You will need "host.docker.internal"(for Docker) or "host.containers.internal"(for Podman)
|
||||||
|
|
||||||
|
# Example of setting proxy
|
||||||
|
#export HTTP_PROXY=http://host.docker.internal:1081
|
||||||
|
#export HTTPS_PROXY=$HTTP_PROXY
|
||||||
|
#export http_proxy=$HTTP_PROXY
|
||||||
|
#export https_proxy=$HTTP_PROXY
|
||||||
|
#export NO_PROXY="localhost,*.local,*.internal,[::1],fd00::/7,
|
||||||
|
#10.0.0.0/8,127.0.0.0/8,169.254.0.0/16,172.16.0.0/12,192.168.0.0/16,
|
||||||
|
#10.*,127.*,169.254.*,172.16.*,172.17.*,172.18.*,172.19.*,172.20.*,
|
||||||
|
#172.21.*,172.22.*,172.23.*,172.24.*,172.25.*,172.26.*,172.27.*,
|
||||||
|
#172.28.*,172.29.*,172.30.*,172.31.*,172.32.*,192.168.*,
|
||||||
|
#*.cn,ghproxy.com,*.ghproxy.com,ghproxy.org,*.ghproxy.org,
|
||||||
|
#gh-proxy.com,*.gh-proxy.com,ghproxy.net,*.ghproxy.net"
|
||||||
|
#export no_proxy=$NO_PROXY
|
||||||
|
#echo "[INFO] Proxy set to $HTTP_PROXY"
|
||||||
|
|
||||||
|
echo "[INFO] Continue without proxy."
|
||||||
Loading…
Add table
Reference in a new issue