adbrasi commited on
Commit
ab579f5
·
verified ·
1 Parent(s): 655fb22

Update setup_comfyui_wan22.sh

Browse files
Files changed (1) hide show
  1. setup_comfyui_wan22.sh +166 -104
setup_comfyui_wan22.sh CHANGED
@@ -1,6 +1,6 @@
1
  #!/usr/bin/env bash
2
- # setup_comfyui_wan22_fixed.sh
3
- # Script corrigido para instalação do ComfyUI com Wan 2.2
4
  # Requisitos: Linux + Python3 + git + (opcional) NVCC/CUDA para SageAttention
5
 
6
  set -Eeuo pipefail
@@ -23,7 +23,8 @@ log_error() { echo -e "${RED}[✗]${NC} $1"; }
23
  # -----------------------------
24
  # Configuráveis
25
  # -----------------------------
26
- COMFY_DIR="${COMFY_DIR:-$PWD/ComfyUI}"
 
27
  COMFY_HOST="${COMFY_HOST:-0.0.0.0}"
28
  COMFY_PORT="${COMFY_PORT:-8818}"
29
 
@@ -37,16 +38,30 @@ CIVITAI_TOKEN="${CIVITAI_TOKEN:-4fcb2834969399006a736ee402b061e5}"
37
 
38
  # Configurações de performance
39
  export HF_HUB_ENABLE_HF_TRANSFER=1
40
- export HF_TRANSFER_CONCURRENCY=8
41
- export UV_SYSTEM_PYTHON=1
42
- export PYTORCH_CUDA_ALLOC_CONF="expandable_segments:True"
43
 
44
  # Detecção de CPU cores para compilação
45
  CPU_CORES=$(nproc 2>/dev/null || sysctl -n hw.ncpu 2>/dev/null || echo 4)
46
- HALF_CORES=$((CPU_CORES / 2))
47
- export MAX_JOBS=$HALF_CORES
48
- export EXT_PARALLEL=$HALF_CORES
49
- export NVCC_APPEND_FLAGS="--threads 8"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
50
 
51
  # -----------------------------
52
  # Setup inicial
@@ -93,68 +108,117 @@ clone_or_update() {
93
  fi
94
  }
95
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
96
  # -----------------------------
97
  # Instalação principal
98
  # -----------------------------
99
  echo ""
100
  log_info "========================================="
101
- log_info " ComfyUI + Wan 2.2 Setup Corrigido"
102
- log_info " CPU Cores: $CPU_CORES | Jobs: $MAX_JOBS"
 
103
  log_info "========================================="
104
  echo ""
105
 
106
  # [1/8] Atualizar pip e instalar ferramentas essenciais
107
  log_info "[1/8] Atualizando pip e instalando ferramentas..."
108
  python3 -m pip install --quiet --upgrade pip wheel setuptools >/dev/null 2>&1
109
- python3 -m pip install --quiet --upgrade comfy-cli "huggingface_hub>=0.23.0" hf_transfer aria2 >/dev/null 2>&1
 
 
 
 
 
110
  log_success "Ferramentas instaladas"
111
 
112
- # [2/8] Instalar ComfyUI - SEMPRE PRIMEIRO!
113
  log_info "[2/8] Instalando ComfyUI (GPU NVIDIA, fast deps)..."
114
 
115
- # Verificação correta se ComfyUI já existe
116
  if [ -f "$COMFY_DIR/main.py" ] && [ -d "$COMFY_DIR/models" ]; then
117
  log_warn "ComfyUI já existe em $COMFY_DIR, pulando instalação base"
118
  else
119
- log_info "Instalando ComfyUI em $COMFY_DIR..."
120
- # Remove diretório parcialmente criado se existir
 
121
  [ -d "$COMFY_DIR" ] && rm -rf "$COMFY_DIR"
122
 
123
- # Instala ComfyUI
124
  comfy --skip-prompt install --fast-deps --nvidia
125
 
126
- # Verifica se instalou corretamente
127
  if [ ! -f "$COMFY_DIR/main.py" ]; then
128
- log_error "Falha na instalação do ComfyUI!"
129
- exit 1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
130
  fi
131
  fi
132
 
133
- # Criar estrutura de diretórios APÓS garantir que ComfyUI existe
134
  MODELS_DIR="$COMFY_DIR/models"
135
- log_info "Criando estrutura de diretórios..."
136
  mkdir -p "$MODELS_DIR"/{diffusion_models,loras,vae,text_encoders,clip_vision,controlnet}
137
  mkdir -p "$COMFY_DIR/custom_nodes"
138
  mkdir -p "$TMPDL"/{wan22,wan21,controlnet}
139
 
140
- log_success "ComfyUI pronto e estrutura criada"
141
 
142
  # [3/8] Baixar modelos Wan 2.2
143
- log_info "[3/8] Iniciando downloads dos modelos Wan 2.2..."
144
  (
145
  set -Eeuo pipefail
146
 
147
- log_info " Baixando Wan 2.2 models (isso pode demorar)..."
148
- huggingface-cli download "$REPO_22" \
149
- split_files/diffusion_models/wan2.2_fun_control_low_noise_14B_fp8_scaled.safetensors \
150
- split_files/diffusion_models/wan2.2_fun_control_high_noise_14B_fp8_scaled.safetensors \
151
- split_files/loras/wan2.2_i2v_lightx2v_4steps_lora_v1_high_noise.safetensors \
152
- split_files/loras/wan2.2_i2v_lightx2v_4steps_lora_v1_low_noise.safetensors \
153
- split_files/vae/wan_2.1_vae.safetensors \
154
- split_files/text_encoders/umt5_xxl_fp16.safetensors \
155
- --local-dir "$TMPDL/wan22" \
156
- --local-dir-use-symlinks False \
157
- --resume-download
158
 
159
  # Copiar para destino
160
  cp -f "$TMPDL/wan22/split_files/diffusion_models/"*.safetensors "$MODELS_DIR/diffusion_models/" 2>/dev/null || true
@@ -171,12 +235,8 @@ log_info "[4/8] Baixando Wan 2.1 clip vision..."
171
  (
172
  set -Eeuo pipefail
173
 
174
- log_info " Baixando clip vision..."
175
- huggingface-cli download "$REPO_21" \
176
- split_files/clip_vision/clip_vision_h.safetensors \
177
- --local-dir "$TMPDL/wan21" \
178
- --local-dir-use-symlinks False \
179
- --resume-download
180
 
181
  cp -f "$TMPDL/wan21/split_files/clip_vision/"*.safetensors "$MODELS_DIR/clip_vision/" 2>/dev/null || true
182
 
@@ -189,11 +249,8 @@ log_info "[5/8] Baixando ControlNet Union..."
189
  (
190
  set -Eeuo pipefail
191
 
192
- huggingface-cli download "$REPO_CN" \
193
- diffusion_pytorch_model_promax.safetensors \
194
- --local-dir "$TMPDL/controlnet" \
195
- --local-dir-use-symlinks False \
196
- --resume-download
197
 
198
  cp -f "$TMPDL/controlnet/diffusion_pytorch_model_promax.safetensors" \
199
  "$MODELS_DIR/controlnet/controlnet-union.safetensors"
@@ -209,37 +266,73 @@ log_info "[6/8] Baixando modelo do Civitai..."
209
 
210
  cd "$MODELS_DIR/loras"
211
 
212
- # URL correta sem aspas que quebram os parâmetros
213
  CIVITAI_URL="https://civitai.com/api/download/models/2122278?type=Model&format=SafeTensor&size=pruned&fp=fp16&token=${CIVITAI_TOKEN}"
214
 
215
- # Usar wget com content-disposition para pegar o nome correto
216
- wget --content-disposition \
217
- --tries=3 \
218
- --timeout=60 \
219
- --continue \
220
- --progress=bar:force:noscroll \
221
- "$CIVITAI_URL" 2>&1 | grep --line-buffered "%" | sed -u -e "s/^/ /" || {
222
- log_warn " Tentando com curl como fallback..."
 
223
  curl -L \
224
  --retry 3 \
225
  --connect-timeout 30 \
226
  --progress-bar \
227
  -o "flux_unleashed_v2.safetensors" \
228
  "$CIVITAI_URL"
229
- }
230
 
231
  log_success " Modelo Civitai baixado"
232
  ) &
233
  CIVITAI_PID=$!
234
 
235
- # [7/8] Aguardar downloads principais antes de instalar custom nodes
236
- log_info "[7/8] Aguardando downloads principais..."
237
- wait $WAN22_PID $WAN21_PID $CN_PID $CIVITAI_PID
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
238
 
239
- # [8/8] Agora sim instalar custom nodes (ComfyUI já existe com certeza)
240
- log_info "[8/8] Instalando custom nodes e SageAttention..."
 
241
 
242
- # Custom nodes
 
243
  (
244
  set -Eeuo pipefail
245
  CN_DIR="$COMFY_DIR/custom_nodes"
@@ -265,51 +358,19 @@ log_info "[8/8] Instalando custom nodes e SageAttention..."
265
  ["https://github.com/grmchn/ComfyUI-ProportionChanger"]="ComfyUI-ProportionChanger"
266
  )
267
 
 
268
  for url in "${!REPOS[@]}"; do
269
  node_name="${REPOS[$url]}"
270
  node_path="$CN_DIR/$node_name"
271
- clone_or_update "$url" "$node_path"
272
  done
 
273
 
274
  log_success " Custom nodes instalados"
275
- ) &
276
- NODES_PID=$!
277
-
278
- # SageAttention
279
- (
280
- set -Eeuo pipefail
281
-
282
- # Verificar se CUDA está disponível
283
- if command -v nvcc >/dev/null 2>&1; then
284
- log_info " CUDA detectado, compilando SageAttention..."
285
-
286
- python3 -m pip install --quiet "triton>=3.0.0" 2>/dev/null || true
287
-
288
- # Clonar no diretório temporário primeiro
289
- SAGE_DIR="$TMPDL/SageAttention"
290
- if [ ! -d "$SAGE_DIR" ]; then
291
- git clone --depth 1 https://github.com/thu-ml/SageAttention.git "$SAGE_DIR" --quiet
292
- fi
293
-
294
- cd "$SAGE_DIR"
295
- python3 setup.py install 2>/dev/null || {
296
- log_warn " SageAttention falhou na compilação, continuando sem ele"
297
- }
298
-
299
- # Testar se instalou
300
- if python3 -c "import sageattention" 2>/dev/null; then
301
- log_success " SageAttention instalado com sucesso"
302
- else
303
- log_warn " SageAttention não foi instalado corretamente"
304
- fi
305
- else
306
- log_warn " CUDA não detectado, pulando SageAttention"
307
- fi
308
- ) &
309
- SAGE_PID=$!
310
 
311
- # Aguardar custom nodes e SageAttention
312
- wait $NODES_PID $SAGE_PID
313
 
314
  # Verificar instalação
315
  log_info "Verificando instalação..."
@@ -351,14 +412,15 @@ echo ""
351
  log_info "========================================="
352
  if [ $ERROR_COUNT -eq 0 ]; then
353
  log_success "Instalação concluída com sucesso!"
 
354
 
355
  # Verificar se SageAttention está disponível
356
  SAGE_FLAG=""
357
  if python3 -c "import sageattention" 2>/dev/null; then
358
  SAGE_FLAG="--use-sage-attention"
359
- log_success "SageAttention disponível"
360
  else
361
- log_info "SageAttention não disponível (normal se não tiver CUDA)"
362
  fi
363
 
364
  echo ""
@@ -372,7 +434,7 @@ if [ $ERROR_COUNT -eq 0 ]; then
372
  log_info "URL: http://localhost:$COMFY_PORT"
373
  echo ""
374
 
375
- # Mudar para o diretório do ComfyUI antes de executar
376
  cd "$COMFY_DIR"
377
  exec comfy launch -- $SAGE_FLAG --listen "$COMFY_HOST" --port "$COMFY_PORT"
378
  else
 
1
  #!/usr/bin/env bash
2
+ # setup_comfyui_wan22_final.sh
3
+ # Script final corrigido para instalação do ComfyUI com Wan 2.2
4
  # Requisitos: Linux + Python3 + git + (opcional) NVCC/CUDA para SageAttention
5
 
6
  set -Eeuo pipefail
 
23
  # -----------------------------
24
  # Configuráveis
25
  # -----------------------------
26
+ # IMPORTANTE: comfy-cli SEMPRE instala em /root/comfy/ComfyUI
27
+ COMFY_DIR="/root/comfy/ComfyUI" # Caminho fixo onde comfy-cli instala
28
  COMFY_HOST="${COMFY_HOST:-0.0.0.0}"
29
  COMFY_PORT="${COMFY_PORT:-8818}"
30
 
 
38
 
39
  # Configurações de performance
40
  export HF_HUB_ENABLE_HF_TRANSFER=1
41
+ export HF_TRANSFER_CONCURRENCY=16 # Aumentado para melhor performance
 
 
42
 
43
  # Detecção de CPU cores para compilação
44
  CPU_CORES=$(nproc 2>/dev/null || sysctl -n hw.ncpu 2>/dev/null || echo 4)
45
+
46
+ # Otimização para máquinas com muitos cores (como 112 cores)
47
+ if [ $CPU_CORES -gt 32 ]; then
48
+ # Para máquinas high-end, usar configurações agressivas
49
+ export MAX_JOBS=32 # Limite do CUDA
50
+ export EXT_PARALLEL=16 # Aumentado
51
+ export NVCC_APPEND_FLAGS="--threads 16" # Aumentado
52
+ COMPILE_JOBS=32
53
+ log_info "Detectado sistema high-end: $CPU_CORES cores, usando MAX_JOBS=$MAX_JOBS"
54
+ else
55
+ # Para máquinas normais
56
+ HALF_CORES=$((CPU_CORES / 2))
57
+ export MAX_JOBS=$HALF_CORES
58
+ export EXT_PARALLEL=4
59
+ export NVCC_APPEND_FLAGS="--threads 8"
60
+ COMPILE_JOBS=$HALF_CORES
61
+ fi
62
+
63
+ export UV_SYSTEM_PYTHON=1
64
+ export PYTORCH_CUDA_ALLOC_CONF="expandable_segments:True"
65
 
66
  # -----------------------------
67
  # Setup inicial
 
108
  fi
109
  }
110
 
111
+ # Função para download com HF Transfer ou fallback
112
+ hf_download_with_fallback() {
113
+ local repo="$1"
114
+ shift # Remove primeiro argumento
115
+ local files=("$@") # Resto são os arquivos
116
+ local output_dir="$TMPDL/$(basename $repo)"
117
+
118
+ # Tentar primeiro com HF Transfer
119
+ if python3 -c "import hf_transfer" 2>/dev/null; then
120
+ log_info " → Usando HF Transfer (rápido) para $repo..."
121
+ HF_HUB_ENABLE_HF_TRANSFER=1 huggingface-cli download "$repo" \
122
+ "${files[@]}" \
123
+ --local-dir "$output_dir" \
124
+ --local-dir-use-symlinks False \
125
+ --resume-download 2>/dev/null || {
126
+ log_warn " HF Transfer falhou, tentando método padrão..."
127
+ HF_HUB_ENABLE_HF_TRANSFER=0 huggingface-cli download "$repo" \
128
+ "${files[@]}" \
129
+ --local-dir "$output_dir" \
130
+ --local-dir-use-symlinks False \
131
+ --resume-download
132
+ }
133
+ else
134
+ log_info " → Usando download padrão para $repo..."
135
+ huggingface-cli download "$repo" \
136
+ "${files[@]}" \
137
+ --local-dir "$output_dir" \
138
+ --local-dir-use-symlinks False \
139
+ --resume-download
140
+ fi
141
+ }
142
+
143
  # -----------------------------
144
  # Instalação principal
145
  # -----------------------------
146
  echo ""
147
  log_info "========================================="
148
+ log_info " ComfyUI + Wan 2.2 Setup Final"
149
+ log_info " CPU Cores: $CPU_CORES | Compile Jobs: $COMPILE_JOBS"
150
+ log_info " ComfyUI Dir: $COMFY_DIR"
151
  log_info "========================================="
152
  echo ""
153
 
154
  # [1/8] Atualizar pip e instalar ferramentas essenciais
155
  log_info "[1/8] Atualizando pip e instalando ferramentas..."
156
  python3 -m pip install --quiet --upgrade pip wheel setuptools >/dev/null 2>&1
157
+
158
+ # Instalar HF Transfer primeiro para downloads mais rápidos
159
+ python3 -m pip install --quiet --upgrade hf_transfer >/dev/null 2>&1 || true
160
+
161
+ # Depois instalar o resto
162
+ python3 -m pip install --quiet --upgrade comfy-cli "huggingface_hub>=0.23.0" aria2 >/dev/null 2>&1
163
  log_success "Ferramentas instaladas"
164
 
165
+ # [2/8] Instalar ComfyUI
166
  log_info "[2/8] Instalando ComfyUI (GPU NVIDIA, fast deps)..."
167
 
168
+ # Verificar se ComfyUI já existe no caminho correto
169
  if [ -f "$COMFY_DIR/main.py" ] && [ -d "$COMFY_DIR/models" ]; then
170
  log_warn "ComfyUI já existe em $COMFY_DIR, pulando instalação base"
171
  else
172
+ log_info "Instalando ComfyUI (será instalado em /root/comfy/ComfyUI)..."
173
+
174
+ # Remove instalação parcial se existir
175
  [ -d "$COMFY_DIR" ] && rm -rf "$COMFY_DIR"
176
 
177
+ # Instala ComfyUI (sempre vai para /root/comfy/ComfyUI)
178
  comfy --skip-prompt install --fast-deps --nvidia
179
 
180
+ # Verifica se instalou no local correto
181
  if [ ! -f "$COMFY_DIR/main.py" ]; then
182
+ log_error "ComfyUI não foi encontrado em $COMFY_DIR após instalação!"
183
+ log_info "Verificando outros locais possíveis..."
184
+
185
+ # Tentar encontrar onde foi instalado
186
+ for possible_path in "/root/comfy/ComfyUI" "$HOME/comfy/ComfyUI" "/workspace/ComfyUI"; do
187
+ if [ -f "$possible_path/main.py" ]; then
188
+ log_info "ComfyUI encontrado em: $possible_path"
189
+ COMFY_DIR="$possible_path"
190
+ break
191
+ fi
192
+ done
193
+
194
+ if [ ! -f "$COMFY_DIR/main.py" ]; then
195
+ log_error "Não foi possível encontrar ComfyUI instalado!"
196
+ exit 1
197
+ fi
198
  fi
199
  fi
200
 
201
+ # Criar estrutura de diretórios
202
  MODELS_DIR="$COMFY_DIR/models"
203
+ log_info "Criando estrutura de diretórios em $MODELS_DIR..."
204
  mkdir -p "$MODELS_DIR"/{diffusion_models,loras,vae,text_encoders,clip_vision,controlnet}
205
  mkdir -p "$COMFY_DIR/custom_nodes"
206
  mkdir -p "$TMPDL"/{wan22,wan21,controlnet}
207
 
208
+ log_success "ComfyUI pronto em: $COMFY_DIR"
209
 
210
  # [3/8] Baixar modelos Wan 2.2
211
+ log_info "[3/8] Iniciando download dos modelos Wan 2.2..."
212
  (
213
  set -Eeuo pipefail
214
 
215
+ hf_download_with_fallback "$REPO_22" \
216
+ "split_files/diffusion_models/wan2.2_fun_control_low_noise_14B_fp8_scaled.safetensors" \
217
+ "split_files/diffusion_models/wan2.2_fun_control_high_noise_14B_fp8_scaled.safetensors" \
218
+ "split_files/loras/wan2.2_i2v_lightx2v_4steps_lora_v1_high_noise.safetensors" \
219
+ "split_files/loras/wan2.2_i2v_lightx2v_4steps_lora_v1_low_noise.safetensors" \
220
+ "split_files/vae/wan_2.1_vae.safetensors" \
221
+ "split_files/text_encoders/umt5_xxl_fp16.safetensors"
 
 
 
 
222
 
223
  # Copiar para destino
224
  cp -f "$TMPDL/wan22/split_files/diffusion_models/"*.safetensors "$MODELS_DIR/diffusion_models/" 2>/dev/null || true
 
235
  (
236
  set -Eeuo pipefail
237
 
238
+ hf_download_with_fallback "$REPO_21" \
239
+ "split_files/clip_vision/clip_vision_h.safetensors"
 
 
 
 
240
 
241
  cp -f "$TMPDL/wan21/split_files/clip_vision/"*.safetensors "$MODELS_DIR/clip_vision/" 2>/dev/null || true
242
 
 
249
  (
250
  set -Eeuo pipefail
251
 
252
+ hf_download_with_fallback "$REPO_CN" \
253
+ "diffusion_pytorch_model_promax.safetensors"
 
 
 
254
 
255
  cp -f "$TMPDL/controlnet/diffusion_pytorch_model_promax.safetensors" \
256
  "$MODELS_DIR/controlnet/controlnet-union.safetensors"
 
266
 
267
  cd "$MODELS_DIR/loras"
268
 
269
+ # URL correta completa
270
  CIVITAI_URL="https://civitai.com/api/download/models/2122278?type=Model&format=SafeTensor&size=pruned&fp=fp16&token=${CIVITAI_TOKEN}"
271
 
272
+ # Tentar com wget primeiro (melhor para nomes de arquivo)
273
+ if ! wget --content-disposition \
274
+ --tries=3 \
275
+ --timeout=60 \
276
+ --continue \
277
+ --progress=bar:force:noscroll \
278
+ "$CIVITAI_URL" 2>&1 | grep --line-buffered "%" | sed -u -e "s/^/ /"; then
279
+
280
+ log_warn " Wget falhou, tentando com curl..."
281
  curl -L \
282
  --retry 3 \
283
  --connect-timeout 30 \
284
  --progress-bar \
285
  -o "flux_unleashed_v2.safetensors" \
286
  "$CIVITAI_URL"
287
+ fi
288
 
289
  log_success " Modelo Civitai baixado"
290
  ) &
291
  CIVITAI_PID=$!
292
 
293
+ # [7/8] Instalar SageAttention (em paralelo com downloads)
294
+ log_info "[7/8] Preparando SageAttention (paralelo com downloads)..."
295
+ (
296
+ set -Eeuo pipefail
297
+
298
+ # Verificar se CUDA está disponível
299
+ if command -v nvcc >/dev/null 2>&1; then
300
+ log_info " CUDA detectado, instalando triton e preparando SageAttention..."
301
+ log_info " Usando configuração otimizada: MAX_JOBS=$MAX_JOBS, EXT_PARALLEL=$EXT_PARALLEL"
302
+
303
+ # Instalar triton primeiro
304
+ python3 -m pip install --quiet "triton>=3.0.0" 2>/dev/null || true
305
+
306
+ # Clonar SageAttention
307
+ SAGE_DIR="$TMPDL/SageAttention"
308
+ if [ ! -d "$SAGE_DIR" ]; then
309
+ git clone --depth 1 https://github.com/thu-ml/SageAttention.git "$SAGE_DIR" --quiet
310
+ fi
311
+
312
+ cd "$SAGE_DIR"
313
+
314
+ # Compilar com configurações otimizadas para muitos cores
315
+ log_info " Compilando SageAttention com $MAX_JOBS jobs paralelos..."
316
+ python3 setup.py install 2>&1 | grep -E "(Building|Compiling|Installing)" || true
317
+
318
+ # Testar se instalou
319
+ if python3 -c "import sageattention" 2>/dev/null; then
320
+ log_success " SageAttention instalado com sucesso"
321
+ else
322
+ log_warn " SageAttention não foi instalado corretamente"
323
+ fi
324
+ else
325
+ log_warn " CUDA não detectado, pulando SageAttention"
326
+ fi
327
+ ) &
328
+ SAGE_PID=$!
329
 
330
+ # Aguardar downloads principais
331
+ log_info "Aguardando downloads principais (em paralelo com SageAttention)..."
332
+ wait $WAN22_PID $WAN21_PID $CN_PID $CIVITAI_PID
333
 
334
+ # [8/8] Instalar custom nodes (após downloads, mas ainda em paralelo com SageAttention)
335
+ log_info "[8/8] Instalando custom nodes..."
336
  (
337
  set -Eeuo pipefail
338
  CN_DIR="$COMFY_DIR/custom_nodes"
 
358
  ["https://github.com/grmchn/ComfyUI-ProportionChanger"]="ComfyUI-ProportionChanger"
359
  )
360
 
361
+ # Clonar todos em paralelo
362
  for url in "${!REPOS[@]}"; do
363
  node_name="${REPOS[$url]}"
364
  node_path="$CN_DIR/$node_name"
365
+ clone_or_update "$url" "$node_path" &
366
  done
367
+ wait
368
 
369
  log_success " Custom nodes instalados"
370
+ )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
371
 
372
+ # Aguardar SageAttention terminar
373
+ wait $SAGE_PID
374
 
375
  # Verificar instalação
376
  log_info "Verificando instalação..."
 
412
  log_info "========================================="
413
  if [ $ERROR_COUNT -eq 0 ]; then
414
  log_success "Instalação concluída com sucesso!"
415
+ log_info "ComfyUI instalado em: $COMFY_DIR"
416
 
417
  # Verificar se SageAttention está disponível
418
  SAGE_FLAG=""
419
  if python3 -c "import sageattention" 2>/dev/null; then
420
  SAGE_FLAG="--use-sage-attention"
421
+ log_success "SageAttention disponível (compilado com $MAX_JOBS jobs)"
422
  else
423
+ log_info "SageAttention não disponível"
424
  fi
425
 
426
  echo ""
 
434
  log_info "URL: http://localhost:$COMFY_PORT"
435
  echo ""
436
 
437
+ # Mudar para o diretório do ComfyUI e executar
438
  cd "$COMFY_DIR"
439
  exec comfy launch -- $SAGE_FLAG --listen "$COMFY_HOST" --port "$COMFY_PORT"
440
  else