vast-voice-stack / start_stt.sh
mohameddalii's picture
Upload folder using huggingface_hub
b0666d9 verified
Raw
History Blame Contribute Delete
2.38 kB
#!/usr/bin/env bash
# GPU 0, colocated with LLM. Leaves GPU 1 exclusively for Moss TTS.
set -euo pipefail
DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
source "$DIR/common.sh"
MODEL="${MODEL:-CohereLabs/cohere-transcribe-arabic-07-2026}"
PORT="${PORT:-8002}"
# Weights ~3.9GiB. Share GPU0 with granite (~0.68); keep STT small.
MEM_UTIL="${MEM_UTIL:-0.18}"
LOG_DIR="${LOG_DIR:-$HOME/agent-logs}"
mkdir -p "$LOG_DIR"
ensure_hf_home
# Prefer a fully-cached local snapshot so gated-repo 401s can't block restart
# when HF_TOKEN isn't in this shell.
if [[ "$MODEL" != /* ]]; then
local_snap="$(ls -d "${HF_HOME}/hub/models--${MODEL//\//--}/snapshots/"* 2>/dev/null | head -1 || true)"
if [ -n "$local_snap" ] && [ -e "$local_snap/model.safetensors" -o -e "$local_snap/model.safetensors.index.json" ]; then
echo "[stt] using local snapshot: $local_snap"
MODEL="$local_snap"
elif [ -z "${HF_TOKEN:-}" ]; then
echo "[stt] WARNING: HF_TOKEN not set. This is a gated model --"
echo " export HF_TOKEN=hf_xxx (after accepting terms in the browser)"
echo " or this will fail to download."
fi
fi
ensure_toolchain
ensure_venv "stt" "vllm==0.19.0" "vllm[audio]" "librosa"
# cohere_asr is newer than the transformers pin that ships with vllm 0.19.0.
if ! python3 -c "from transformers.models.auto.configuration_auto import CONFIG_MAPPING; assert 'cohere_asr' in CONFIG_MAPPING" 2>/dev/null; then
echo "[bootstrap] upgrading transformers from git for cohere_asr support"
pip install "git+https://github.com/huggingface/transformers.git" -q
fi
export CUDA_VISIBLE_DEVICES=0
export VLLM_ATTENTION_BACKEND=FLASHINFER
export VLLM_USE_FLASHINFER_SAMPLER=1
export VLLM_FLASHINFER_FORCE_TENSOR_CORES=1
echo "[stt] launching $MODEL on :$PORT [GPU0 w/ LLM, mem $MEM_UTIL]"
vllm serve "$MODEL" \
--trust-remote-code \
--host 0.0.0.0 \
--port "$PORT" \
--gpu-memory-utilization "$MEM_UTIL" \
> "$LOG_DIR/stt.log" 2>&1 &
STT_PID=$!
waited=0; max_wait=600
until curl -sf "http://localhost:${PORT}/health" > /dev/null 2>&1; do
if [ "$waited" -ge "$max_wait" ]; then
echo "[stt] TIMEOUT"; tail -n 30 "$LOG_DIR/stt.log"; exit 1
fi
if ! kill -0 "$STT_PID" 2>/dev/null; then
echo "[stt] process died"; tail -n 40 "$LOG_DIR/stt.log"; exit 1
fi
sleep 2; waited=$((waited + 2))
done
echo "$STT_PID" > /tmp/stt.pid
echo "[stt] up. pid=$STT_PID"