#!/bin/bash # vllm_wrapper.sh —— 拦截 vllm 二进制,启动前做兼容修补后再交给真实 vllm # # 设计照搬社区已上线引擎 zhengzhongwei/vLLM-Iluvatar_bi-100-opt 的做法: # 把镜像里的 `vllm` 换成本脚本(真身改名 vllm_real),平台下发的 # `vllm serve /model --port 80 ...` 就会自然流经这里,**不需要平台改命令**。 # # 只在 `vllm serve <目录>` 这一种形态上做修补,其余子命令原样透传。 set -u # 与 zhengzhongwei/vLLM-Iluvatar_bi-100-opt 一致的真身路径;Dockerfile 里 vllm -> *_real REAL=/usr/local/corex/lib64/python3/dist-packages/bin/vllm_real PREFLIGHT=/opt/preflight.py if [ "${1:-}" = "serve" ] && [ -n "${2:-}" ]; then MODEL_DIR="$2" shift 2 EXTRA="" if [ -f "$PREFLIGHT" ]; then # preflight 失败也绝不阻断:只打日志,按原命令跑 if python3 "$PREFLIGHT" --model "$MODEL_DIR" --out /tmp/mhxc_preflight.json \ >/tmp/mhxc_preflight.out 2>/tmp/mhxc_preflight.err; then EXTRA=$(python3 - /tmp/mhxc_preflight.json <<'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: print("") PY ) else echo "[vllm_wrapper] preflight 非 0 退出,按原命令继续" fi sed 's/^/[vllm_wrapper] /' /tmp/mhxc_preflight.err 2>/dev/null || true fi echo "[vllm_wrapper] model=$MODEL_DIR extra=${EXTRA:-(无)}" echo "[vllm_wrapper] exec: vllm_real serve $MODEL_DIR $EXTRA $*" # shellcheck disable=SC2086 exec "$REAL" serve "$MODEL_DIR" $EXTRA "$@" fi exec "$REAL" "$@"