adbrasi commited on
Commit
393b9c3
·
verified ·
1 Parent(s): bed787a

Upload setup_comfyui_wan22.sh

Browse files
Files changed (1) hide show
  1. setup_comfyui_wan22.sh +182 -0
setup_comfyui_wan22.sh ADDED
@@ -0,0 +1,182 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/usr/bin/env bash
2
+ # setup_comfyui_wan22.sh
3
+ # Requisitos: Linux + Python3 + git + (opcional) NVCC/CUDA para SageAttention
4
+
5
+ set -e
6
+ set -o pipefail
7
+
8
+ # -----------------------------
9
+ # Configuráveis
10
+ # -----------------------------
11
+ COMFY_DIR="${COMFY_DIR:-$PWD/ComfyUI}" # Onde ficará o ComfyUI
12
+ COMFY_HOST="${COMFY_HOST:-0.0.0.0}"
13
+ COMFY_PORT="${COMFY_PORT:-8818}"
14
+
15
+ # Repositórios no HF
16
+ REPO_22="Comfy-Org/Wan_2.2_ComfyUI_Repackaged"
17
+ REPO_21="Comfy-Org/Wan_2.1_ComfyUI_repackaged" # (atenção ao 'repackaged' minúsculo)
18
+ REPO_CN="xinsir/controlnet-union-sdxl-1.0"
19
+
20
+ # Caminhos de destino dos modelos
21
+ MODELS_DIR="$COMFY_DIR/models"
22
+ mkdir -p "$MODELS_DIR"/{diffusion_models,loras,vae,text_encoders,clip_vision,controlnet}
23
+
24
+ # Pasta temporária para os downloads
25
+ TMPDL="$(mktemp -d)"
26
+ cleanup() { rm -rf "$TMPDL"; }
27
+ trap cleanup EXIT
28
+
29
+ # -----------------------------
30
+ # Funções utilitárias
31
+ # -----------------------------
32
+ clone_or_update() {
33
+ # $1=repo_url $2=dest_dir
34
+ local url="$1" dest="$2"
35
+ if [ -d "$dest/.git" ]; then
36
+ echo " - Atualizando $(basename "$dest")..."
37
+ git -C "$dest" pull --ff-only || true
38
+ else
39
+ echo " - Clonando $(basename "$dest")..."
40
+ git clone --recursive "$url" "$dest"
41
+ fi
42
+ # Se tiver requirements.txt, tenta instalar sem travar o script em caso de falha
43
+ if [ -f "$dest/requirements.txt" ]; then
44
+ echo " > Instalando requirements de $(basename "$dest")..."
45
+ python3 -m pip install -r "$dest/requirements.txt" || true
46
+ fi
47
+ }
48
+
49
+ # -----------------------------
50
+ # 1) comfy-cli + ComfyUI
51
+ # -----------------------------
52
+ echo "[1/6] Instalando comfy-cli..."
53
+ python3 -m pip install -U pip wheel setuptools >/dev/null
54
+ python3 -m pip install -U comfy-cli >/dev/null
55
+
56
+ echo "[2/6] Preparando/instalando ComfyUI (GPU NVIDIA, fast deps)..."
57
+ comfy --skip-prompt install --fast-deps --nvidia
58
+
59
+ # Garante estrutura de pastas
60
+ mkdir -p "$MODELS_DIR" "$COMFY_DIR/custom_nodes"
61
+
62
+ # -----------------------------
63
+ # 2) Downloads principais em background (HF Hub)
64
+ # -----------------------------
65
+ echo "[3/6] Iniciando downloads dos modelos (HF Hub) em background..."
66
+ python3 -m pip install -U "huggingface_hub>=0.23.0" hf_transfer >/dev/null 2>&1 || true
67
+ export HF_HUB_ENABLE_HF_TRANSFER=1
68
+
69
+ (
70
+ set -e
71
+ echo " - Baixando pacotes do repo: $REPO_22"
72
+ huggingface-cli download "$REPO_22" \
73
+ split_files/diffusion_models/wan2.2_fun_control_low_noise_14B_fp8_scaled.safetensors \
74
+ split_files/diffusion_models/wan2.2_fun_control_high_noise_14B_fp8_scaled.safetensors \
75
+ split_files/loras/wan2.2_i2v_lightx2v_4steps_lora_v1_high_noise.safetensors \
76
+ split_files/loras/wan2.2_i2v_lightx2v_4steps_lora_v1_low_noise.safetensors \
77
+ split_files/vae/wan_2.1_vae.safetensors \
78
+ split_files/text_encoders/umt5_xxl_fp16.safetensors \
79
+ --local-dir "$TMPDL/wan22" \
80
+ --local-dir-use-symlinks False \
81
+ --resume-download
82
+
83
+ echo " - Baixando pacotes do repo: $REPO_21"
84
+ huggingface-cli download "$REPO_21" \
85
+ split_files/clip_vision/clip_vision_h.safetensors \
86
+ --local-dir "$TMPDL/wan21" \
87
+ --local-dir-use-symlinks False \
88
+ --resume-download
89
+
90
+ # Distribui arquivos para as pastas do ComfyUI
91
+ install -m 644 "$TMPDL/wan22/split_files/diffusion_models/"*.safetensors "$MODELS_DIR/diffusion_models/" 2>/dev/null || true
92
+ install -m 644 "$TMPDL/wan22/split_files/loras/"*.safetensors "$MODELS_DIR/loras/" 2>/dev/null || true
93
+ install -m 644 "$TMPDL/wan22/split_files/vae/"*.safetensors "$MODELS_DIR/vae/" 2>/dev/null || true
94
+ install -m 644 "$TMPDL/wan22/split_files/text_encoders/"*.safetensors "$MODELS_DIR/text_encoders/" 2>/dev/null || true
95
+ install -m 644 "$TMPDL/wan21/split_files/clip_vision/"*.safetensors "$MODELS_DIR/clip_vision/" 2>/dev/null || true
96
+
97
+ echo " - Modelos principais baixados."
98
+ ) &
99
+ DL_PID=$!
100
+
101
+ # -----------------------------
102
+ # 3) SageAttention em paralelo
103
+ # -----------------------------
104
+ echo "[4/6] Instalando dependências de atenção (em paralelo aos downloads)..."
105
+ echo " - Instalando Triton (>=3.0.0)..."
106
+ python3 -m pip install "triton>=3.0.0"
107
+
108
+ echo " - Clonando e instalando SageAttention..."
109
+ if [ -d "SageAttention" ]; then
110
+ (cd SageAttention && git pull --ff-only)
111
+ else
112
+ git clone https://github.com/thu-ml/SageAttention.git
113
+ fi
114
+
115
+ export EXT_PARALLEL=4
116
+ export NVCC_APPEND_FLAGS="--threads 8"
117
+ export MAX_JOBS=32
118
+
119
+ (
120
+ set -e
121
+ cd SageAttention
122
+ python3 setup.py install
123
+ ) &
124
+ SA_PID=$!
125
+
126
+ # -----------------------------
127
+ # 4) Assim que downloads acabarem:
128
+ # - baixa controlnet extra e renomeia
129
+ # - instala custom nodes
130
+ # (tudo isso acontece enquanto o SageAttention compila)
131
+ # -----------------------------
132
+ (
133
+ # Espera downloads principais
134
+ wait "$DL_PID"
135
+
136
+ echo "[5/6] Baixando modelo extra (controlnet) pós-downloads..."
137
+ huggingface-cli download "$REPO_CN" diffusion_pytorch_model_promax.safetensors \
138
+ --local-dir "$TMPDL/controlnet" \
139
+ --local-dir-use-symlinks False \
140
+ --resume-download
141
+ install -m 644 "$TMPDL/controlnet/diffusion_pytorch_model_promax.safetensors" \
142
+ "$MODELS_DIR/controlnet/controlnet-union.safetensors"
143
+
144
+ echo "[5/6] Instalando custom nodes (em paralelo ao SageAttention)..."
145
+ CN_DIR="$COMFY_DIR/custom_nodes"
146
+ mkdir -p "$CN_DIR"
147
+
148
+ # Lista de repositórios -> destino
149
+ declare -A REPOS=(
150
+ ["https://github.com/kijai/ComfyUI-Florence2"]="$CN_DIR/ComfyUI-Florence2"
151
+ ["https://github.com/kijai/ComfyUI-WanVideoWrapper"]="$CN_DIR/ComfyUI-WanVideoWrapper"
152
+ ["https://github.com/Fannovel16/ComfyUI-Frame-Interpolation"]="$CN_DIR/ComfyUI-Frame-Interpolation"
153
+ ["https://github.com/kijai/ComfyUI-GIMM-VFI"]="$CN_DIR/ComfyUI-GIMM-VFI"
154
+ ["https://github.com/Kosinkadink/ComfyUI-VideoHelperSuite"]="$CN_DIR/ComfyUI-VideoHelperSuite"
155
+ ["https://github.com/kijai/ComfyUI-KJNodes"]="$CN_DIR/ComfyUI-KJNodes"
156
+ ["https://github.com/Fannovel16/comfyui_controlnet_aux"]="$CN_DIR/comfyui_controlnet_aux"
157
+ ["https://github.com/Artificial-Sweetener/comfyui-WhiteRabbit"]="$CN_DIR/comfyui-WhiteRabbit"
158
+ ["https://github.com/LucipherDev/ComfyUI-AniDoc"]="$CN_DIR/ComfyUI-AniDoc"
159
+ ["https://github.com/shiimizu/ComfyUI_smZNodes"]="$CN_DIR/ComfyUI_smZNodes"
160
+ ["https://github.com/yuvraj108c/ComfyUI-Dwpose-Tensorrt"]="$CN_DIR/ComfyUI-Dwpose-Tensorrt"
161
+ ["https://github.com/grmchn/ComfyUI-ProportionChanger"]="$CN_DIR/ComfyUI-ProportionChanger"
162
+ )
163
+
164
+ # Para cada repo: clonar/atualizar e instalar requirements se existirem
165
+ for url in "${!REPOS[@]}"; do
166
+ dest="${REPOS[$url]}"
167
+ clone_or_update "$url" "$dest"
168
+ done
169
+
170
+ echo " - Custom nodes prontos."
171
+ ) &
172
+ CN_PID=$!
173
+
174
+ # -----------------------------
175
+ # 5) Espera SageAttention + Custom Nodes
176
+ # -----------------------------
177
+ echo "[6/6] Finalizando: aguardando SageAttention e custom nodes..."
178
+ wait "$SA_PID"
179
+ wait "$CN_PID"
180
+
181
+ echo "[OK] Tudo pronto. Abrindo o ComfyUI com SageAttention na porta $COMFY_PORT..."
182
+ exec comfy launch -- --use-sage-attention --listen "$COMFY_HOST" --port "$COMFY_PORT"