45 lines
1.6 KiB
Bash
45 lines
1.6 KiB
Bash
#!/bin/bash
|
||
# enginex-bi100-compat 入口:启动前修补 -> exec vllm serve
|
||
#
|
||
# 与社区已上线引擎 EngineX-Sunrise/enginex-S2-vllm-fix-tokenizer 同一模式
|
||
# (detect -> fix -> `exec vllm serve "$MODEL_DIR" $EXTRA "$@"`),
|
||
# 只是把「只修 tokenizer」升级成「修 tokenizer + chat_template + 架构 + 缺模块」。
|
||
#
|
||
# 平台会把 GPU 数、端口、max-model-len 等参数作为 "$@" 传进来,原样透传。
|
||
set -u
|
||
|
||
MODEL_DIR=${MODEL_DIR:-${1:-/model}}
|
||
# 若第一个参数不是目录,则认为是平台传入的 vllm 参数,MODEL_DIR 仍用默认 /model
|
||
if [ $# -gt 0 ] && [ -d "$1" ]; then
|
||
MODEL_DIR="$1"
|
||
shift
|
||
fi
|
||
|
||
FIX_LOG=/tmp/mhxc_preflight.json
|
||
echo "[entrypoint] model dir: $MODEL_DIR"
|
||
echo "[entrypoint] args: $*"
|
||
|
||
EXTRA=""
|
||
if python3 /opt/preflight.py --model "$MODEL_DIR" --out "$FIX_LOG" >/tmp/mhxc_preflight.out 2>/tmp/mhxc_preflight.err; then
|
||
# 从 JSON 里取 extra_args(用 python 解析,避免依赖 jq)
|
||
EXTRA=$(python3 - "$FIX_LOG" <<'PY'
|
||
import json, sys, shlex
|
||
try:
|
||
with open(sys.argv[1], encoding="utf-8") as f:
|
||
d = json.load(f)
|
||
print(" ".join(shlex.quote(a) for a in (d.get("extra_args") or [])))
|
||
except Exception as e:
|
||
print("")
|
||
PY
|
||
)
|
||
echo "[entrypoint] preflight extra args: ${EXTRA:-(无)}"
|
||
sed 's/^/[entrypoint] preflight: /' /tmp/mhxc_preflight.err 2>/dev/null || true
|
||
else
|
||
echo "[entrypoint] preflight 执行失败,按原命令继续(不阻断启动)"
|
||
sed 's/^/[entrypoint] preflight: /' /tmp/mhxc_preflight.err 2>/dev/null || true
|
||
fi
|
||
|
||
echo "[entrypoint] starting vllm..."
|
||
# shellcheck disable=SC2086
|
||
exec vllm serve "$MODEL_DIR" $EXTRA "$@"
|