78 lines
3.5 KiB
YAML
78 lines
3.5 KiB
YAML
|
|
# ComfyUI on Strix Halo gfx1151 via kyuz0/amd-strix-halo-comfyui.
|
||
|
|
#
|
||
|
|
# Toolbox-style image (Fedora rawhide + ROCm) with /bin/bash as CMD.
|
||
|
|
# We override entrypoint to launch ComfyUI's main.py with the flag set
|
||
|
|
# gfx1151 needs (--disable-mmap because mmap >64 GB is slow on ROCm;
|
||
|
|
# --bf16-vae avoids VAE OOM; --cache-none keeps unified-memory pressure
|
||
|
|
# manageable).
|
||
|
|
#
|
||
|
|
# Coexistence with other services. ComfyUI competes for GPU with
|
||
|
|
# kimi-linear (always-resident) and ollama (loads-on-demand). To avoid
|
||
|
|
# silent contention this stack is NOT set to restart automatically —
|
||
|
|
# bring it up manually (`docker compose up -d`) when you need image gen,
|
||
|
|
# and `docker compose down` after. Mid-term we'll add a
|
||
|
|
# load-shed/coordination layer; this comment is the binding for now.
|
||
|
|
#
|
||
|
|
# Pin: kyuz0/amd-strix-halo-comfyui:20260213-143435 (sha-7242b4d). Bump
|
||
|
|
# deliberately after re-validating Flux/HiDream/LTX2 still work.
|
||
|
|
services:
|
||
|
|
comfyui:
|
||
|
|
image: kyuz0/amd-strix-halo-comfyui:20260213-143435
|
||
|
|
container_name: comfyui
|
||
|
|
# Explicit no auto-restart — see header note about GPU contention.
|
||
|
|
restart: "no"
|
||
|
|
devices:
|
||
|
|
- /dev/kfd:/dev/kfd
|
||
|
|
- /dev/dri:/dev/dri
|
||
|
|
cap_add:
|
||
|
|
- SYS_PTRACE
|
||
|
|
security_opt:
|
||
|
|
- seccomp=unconfined
|
||
|
|
# Numeric GIDs of host's video (44) and render (991) groups — names
|
||
|
|
# don't exist inside the Fedora-rawhide base, but GIDs need to match
|
||
|
|
# the host for /dev/kfd + /dev/dri access.
|
||
|
|
group_add:
|
||
|
|
- "44"
|
||
|
|
- "991"
|
||
|
|
shm_size: 16g
|
||
|
|
ipc: host
|
||
|
|
environment:
|
||
|
|
# Same unified-memory recipe as kimi-linear.yml: BIOS UMA=0.5 GB +
|
||
|
|
# ttm.pages_limit=33554432 cmdline + this triple. Without these,
|
||
|
|
# PyTorch's HIP allocator only sees the tiny 0.5 GB UMA pool and
|
||
|
|
# can't reach GTT. The kyuz0 image is built against native gfx1151
|
||
|
|
# so HSA_OVERRIDE_GFX_VERSION isn't needed.
|
||
|
|
- HSA_XNACK=1
|
||
|
|
- HSA_FORCE_FINE_GRAIN_PCIE=1
|
||
|
|
- PYTORCH_HIP_ALLOC_CONF=backend:native,expandable_segments:True,garbage_collection_threshold:0.9
|
||
|
|
volumes:
|
||
|
|
# All ComfyUI state lives under /srv/docker/comfyui/ on the host.
|
||
|
|
# Image's $HOME is /root (Fedora rawhide). Models go in subdirs
|
||
|
|
# under comfy-models/ (text_encoders/, vae/, checkpoints/,
|
||
|
|
# diffusion_models/, unet/, loras/, clip_vision/) — kyuz0's image
|
||
|
|
# populates extra_model_paths.yaml pointing at $HOME/comfy-models.
|
||
|
|
- /srv/docker/comfyui/models:/root/comfy-models
|
||
|
|
- /srv/docker/comfyui/output:/root/comfy-outputs
|
||
|
|
- /srv/docker/comfyui/custom_nodes:/opt/ComfyUI/custom_nodes
|
||
|
|
- /srv/docker/comfyui/workflows:/opt/ComfyUI/user/default/workflows
|
||
|
|
ports:
|
||
|
|
# 8188 = standard ComfyUI port. kyuz0's banner alias uses 8000 but
|
||
|
|
# that would collide with vLLM (compose/kimi-linear.yml).
|
||
|
|
- "8188:8188"
|
||
|
|
# bash -lc loads /etc/profile.d/01-rocm-envs.sh (TORCH_ROCM_AOTRITON,
|
||
|
|
# TORCH_BLAS_PREFER_HIPBLASLT) — without a login shell those don't
|
||
|
|
# apply and ROCm perf regresses.
|
||
|
|
entrypoint: ["/bin/bash", "-lc"]
|
||
|
|
# set_extra_paths.sh writes /opt/ComfyUI/extra_model_paths.yaml so
|
||
|
|
# ComfyUI finds models under $HOME/comfy-models. Idempotent — safe
|
||
|
|
# to run every start. Without it, model dropdowns in the UI are
|
||
|
|
# empty and templates report "missing model".
|
||
|
|
command:
|
||
|
|
- >
|
||
|
|
/opt/set_extra_paths.sh &&
|
||
|
|
cd /opt/ComfyUI && python main.py
|
||
|
|
--listen 0.0.0.0 --port 8188
|
||
|
|
--output-directory /root/comfy-outputs
|
||
|
|
--disable-mmap --gpu-only --disable-smart-memory
|
||
|
|
--cache-none --bf16-vae
|