taomate-digital-human / scripts /inference /start_interactive_avatar_worker.sh
multimodalart's picture
multimodalart HF Staff
Upload folder using huggingface_hub
12e0009 verified
Raw
History Blame Contribute Delete
1.45 kB
#!/usr/bin/env bash
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}"