Spaces:
Running on Zero
Running on Zero
| set -euo pipefail | |
| SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" | |
| PROJECT_ROOT="$(cd "${SCRIPT_DIR}/../.." && pwd)" | |
| cd "${PROJECT_ROOT}" | |
| export PYTHONPATH="${PROJECT_ROOT}${PYTHONPATH:+:${PYTHONPATH}}" | |
| export AVATAR_WORKER_QUEUE_DIR="${AVATAR_WORKER_QUEUE_DIR:-${PROJECT_ROOT}/outputs/interactive_avatar_worker_queue}" | |
| export AVATAR_WORKER_CUDA_VISIBLE_DEVICES="${AVATAR_WORKER_CUDA_VISIBLE_DEVICES:-0,1,2,3}" | |
| export AVATAR_MASTER_PORT="${AVATAR_MASTER_PORT:-29731}" | |
| export AVATAR_WORKER_POLL_INTERVAL="${AVATAR_WORKER_POLL_INTERVAL:-0.05}" | |
| PYTHON_BIN="${PYTHON_BIN:-python}" | |
| IFS=',' read -r -a WORKER_GPU_IDS <<< "${AVATAR_WORKER_CUDA_VISIBLE_DEVICES}" | |
| if [ "${#WORKER_GPU_IDS[@]}" -ne 4 ]; then | |
| echo "AVATAR_WORKER_CUDA_VISIBLE_DEVICES must contain exactly four GPU IDs." >&2 | |
| exit 2 | |
| fi | |
| for GPU_ID in "${WORKER_GPU_IDS[@]}"; do | |
| if [ -z "${GPU_ID}" ]; then | |
| echo "AVATAR_WORKER_CUDA_VISIBLE_DEVICES contains an empty GPU ID." >&2 | |
| exit 2 | |
| fi | |
| done | |
| mkdir -p "${AVATAR_WORKER_QUEUE_DIR}"/{pending,running,done,failed} | |
| rm -f "${AVATAR_WORKER_QUEUE_DIR}/worker_heartbeat.json" | |
| exec env CUDA_VISIBLE_DEVICES="${AVATAR_WORKER_CUDA_VISIBLE_DEVICES}" \ | |
| "${PYTHON_BIN}" -m torch.distributed.run \ | |
| --nproc_per_node=2 \ | |
| --master_port="${AVATAR_MASTER_PORT}" \ | |
| apps/interactive_avatar/worker.py \ | |
| --queue_dir "${AVATAR_WORKER_QUEUE_DIR}" \ | |
| --poll_interval "${AVATAR_WORKER_POLL_INTERVAL}" | |