Spaces:
Runtime error
Runtime error
File size: 3,984 Bytes
bf68acd bc11697 bf68acd bc11697 bf68acd c2d7c73 bf68acd c2d7c73 88a2108 bf68acd bc11697 218f8cc bc11697 218f8cc bf68acd bc11697 218f8cc bc11697 c2d7c73 bc11697 c2d7c73 88a2108 bf68acd bc11697 218f8cc bc11697 bf68acd bc11697 bf68acd bc11697 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 | #!/usr/bin/env bash
# Boots the Space: ComfyUI in the background, the studio in front.
#
# The UI comes up first on purpose. A Space counts as started once its port
# answers, and ComfyUI needs minutes to resolve weights and load a 4 GB model.
# The UI already polls for its backend and turns the header green by itself.
set -uo pipefail
COMFY=$HOME/ComfyUI
ENGINE_LOG=${ENGINE_LOG:-/tmp/comfyui.log}
CHECKPOINT=${YUE2_CHECKPOINT:-yue2_3b_int8_convrot.safetensors}
# The bf16 weights are what the Real-Audio adapter was built against, and what
# anyone with headroom should be picking anyway. Both are offered; the UI picks.
CHECKPOINT_ALT=${YUE2_CHECKPOINT_ALT:-yue2_3b_bf16.safetensors}
ENCODER=${SHEETSAGE_ENCODER:-sheetsage2_bf16.safetensors}
REAL_AUDIO_LORA=${YUE2_REAL_AUDIO_LORA:-nar_lora_joint_v9_comfyui.safetensors}
REAL_AUDIO_REPO=${YUE2_REAL_AUDIO_REPO:-Mothersuperior/yue2-mothersuperior-realaudio-tokenizer-v4}
INST_LORA=${YUE2_INSTRUMENTAL_LORA:-ar_lora_inst_v3abc_comfyui.safetensors}
INST_REPO=${YUE2_INSTRUMENTAL_REPO:-Mothersuperior/YuE2-instrumental-cot-full-loras}
export ENGINE_LOG
# The hf CLI writes hints and warnings to stdout, so capturing its output in a
# command substitution yields banner text rather than a path. Ask the library
# directly instead, which prints the cached path and nothing else.
resolve() {
python - "$1" "$2" <<'PY'
import sys
from huggingface_hub import hf_hub_download
print(hf_hub_download(repo_id=sys.argv[1], filename=sys.argv[2]))
PY
}
link_weight() {
local repo=$1 path=$2 dest=$3
local name src
name=$(basename "$path")
mkdir -p "$dest"
if [ -e "$dest/$name" ]; then
echo "[yue2] $name already present"
return 0
fi
echo "[yue2] resolving $name"
if ! src=$(resolve "$repo" "$path" 2>>"$ENGINE_LOG"); then
echo "[yue2] ERROR could not resolve $name, see $ENGINE_LOG"
return 1
fi
if [ ! -s "$src" ]; then
echo "[yue2] ERROR resolved $name to an empty path: $src"
return 1
fi
ln -sfn "$src" "$dest/$name"
echo "[yue2] linked $name"
}
# Which image is actually running. Without this the only way to tell a stale
# container from a fresh one is to read a traceback's interpreter paths.
stamp() {
{
echo "[yue2] build ${BUILD_STAMP:-unstamped}"
echo "[yue2] python $(python -c 'import sys; print(sys.version.split()[0])' 2>&1)"
echo "[yue2] torch $(python -c 'import torch; print(torch.__version__)' 2>&1 | tail -1)"
} | tee -a "$ENGINE_LOG"
}
start_comfy() {
: > "$ENGINE_LOG"
stamp
link_weight Comfy-Org/YuE2 "checkpoints/$CHECKPOINT" "$COMFY/models/checkpoints" \
|| echo "[yue2] the checkpoint is missing, generation will fail" | tee -a "$ENGINE_LOG"
link_weight Comfy-Org/YuE2 "checkpoints/$CHECKPOINT_ALT" "$COMFY/models/checkpoints" \
|| echo "[yue2] the bf16 checkpoint is missing, only the int8 one is selectable" | tee -a "$ENGINE_LOG"
link_weight Comfy-Org/YuE2 "audio_encoders/$ENCODER" "$COMFY/models/audio_encoders" \
|| echo "[yue2] the transcriber is missing, covers will fail" | tee -a "$ENGINE_LOG"
# Optional. Its absence greys the toggle out rather than breaking a render.
link_weight "$REAL_AUDIO_REPO" "$REAL_AUDIO_LORA" "$COMFY/models/loras" \
|| echo "[yue2] the real-audio adapter is missing, that toggle stays off" | tee -a "$ENGINE_LOG"
link_weight "$INST_REPO" "$INST_LORA" "$COMFY/models/loras" \
|| echo "[yue2] the instrumental adapter is missing, that toggle stays off" | tee -a "$ENGINE_LOG"
cd "$COMFY"
echo "[yue2] starting ComfyUI on 8188"
# Tee so the Space log shows it live and the app can read the tail back.
python main.py --listen 127.0.0.1 --port 8188 ${COMFY_EXTRA_ARGS:-} 2>&1 | tee -a "$ENGINE_LOG"
echo "[yue2] ComfyUI exited. The studio stays up so the failure is visible." | tee -a "$ENGINE_LOG"
}
start_comfy &
cd "$HOME/app/.next/standalone"
echo "[yue2] starting the studio on ${PORT:-7860}"
export PORT="${PORT:-7860}" HOSTNAME=0.0.0.0
exec node server.js
|