start-all.sh 1.93 KB
#!/usr/bin/env bash
# 起全套:四张卡按默认分区起(GPU0/1 ref2va,GPU2/3 fl2va)+ 一个调度层。已经在跑的会先停掉。
# 用法: ./start-all.sh
#
# 停某个端口要按端口找 PID,不要用 pkill -f "port 8010"——bash -c 的命令行本身含这个模式,
# 会把自己的 ssh 会话一起杀掉(踩过,退出码 255)。
set -uo pipefail
cd /data/models/minimax-h3

for PORT in 8000 8010 8011 8012 8013; do
  PID=$(ss -lptn "sport = :$PORT" | grep -o "pid=[0-9]*" | cut -d= -f2 | sort -u)
  [ -n "$PID" ] && { echo "停 $PORT (PID $PID)"; kill $PID; }
done
sleep 8

# GPU 与端口的对应写死在这里,改了要同步改 README。
# H3_OFFLOAD=disk 是关键:不设就是 cpu,每进程多占 40G 内存,四张卡只能起 3 个。
export H3_OFFLOAD=disk
# 2026-08-20:默认分区从「4 张全 ref2va」改成 2/2 固定分裂——GPU0/1 ref2va,GPU2/3 fl2va。
# console 的弹性调度器(h3-console/server.py 的 supervisor)仍然在跑,需求超出这个 2/2
# 基线时照样会临时 flip 别的卡;这里只是把冷启动默认值往实际更常见的 fl2va 需求上偏,
# 减少「提交 fl2va 任务却撞上 4 张全 ref2va」时那 13-20 秒 flip 冷启动 + 最长 30 秒探测延迟。
setsid nohup ./api-run.sh 1 8010 ref2va > logs/api-8010.log 2>&1 < /dev/null &
setsid nohup ./api-run.sh 2 8011 fl2va  > logs/api-8011.log 2>&1 < /dev/null &
setsid nohup ./api-run.sh 0 8012 ref2va > logs/api-8012.log 2>&1 < /dev/null &
setsid nohup ./api-run.sh 3 8013 fl2va  > logs/api-8013.log 2>&1 < /dev/null &
setsid nohup ./gateway-run.sh 8000       > logs/gateway.log      2>&1 < /dev/null &

echo "等后端加载(disk 模式约 20 秒)"
for i in $(seq 1 30); do
  sleep 5
  READY=$(curl -s --max-time 5 http://127.0.0.1:8000/health | grep -o '"ready":[0-9]*' | cut -d: -f2)
  echo "  ready=${READY:-?}/4"
  [ "${READY:-0}" = "4" ] && break
done
curl -s http://127.0.0.1:8000/health
echo