serve.sh 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. #!/usr/bin/env bash
  2. # Per-rank SGLang launcher for MiMo-V2.6-Pro-RL; runs inside the container.
  3. # Every knob comes from the environment (see configs/cluster.env).
  4. set -Eeuo pipefail
  5. : "${NODE_RANK:?}" "${NNODES:=8}" "${TP_SIZE:=8}" "${EP_SIZE:=8}" "${DIST_INIT_ADDR:?}"
  6. MODEL_PATH=${MODEL_PATH:-/models/MiMo-V2.6-Pro-RL}
  7. args=(
  8. --model-path "$MODEL_PATH"
  9. --trust-remote-code
  10. --served-model-name "${SERVED_MODEL_NAME:-mimo-v2.6-pro}"
  11. --tp "$TP_SIZE" --ep "$EP_SIZE"
  12. --nnodes "$NNODES" --node-rank "$NODE_RANK" --dist-init-addr "$DIST_INIT_ADDR"
  13. --host "${API_HOST:-0.0.0.0}" --port "${API_PORT:-30000}"
  14. --attention-backend "${ATTN_BACKEND:-triton}"
  15. --moe-runner-backend "${MOE_RUNNER_BACKEND:-flashinfer_mxfp4}"
  16. --moe-a2a-backend "${MOE_A2A_BACKEND:-none}"
  17. --mem-fraction-static "${MEM_FRACTION_STATIC:-0.85}"
  18. --context-length "${CONTEXT_LENGTH:-262144}"
  19. --max-running-requests "${MAX_RUNNING_REQUESTS:-8}"
  20. --chunked-prefill-size "${CHUNKED_PREFILL_SIZE:-8192}"
  21. --page-size "${PAGE_SIZE:-64}"
  22. --swa-full-tokens-ratio "${SWA_FULL_TOKENS_RATIO:-0.1}"
  23. --reasoning-parser mimo --tool-call-parser mimo
  24. --watchdog-timeout "${WATCHDOG_TIMEOUT:-1800}"
  25. --enable-metrics --enable-cache-report
  26. )
  27. if [ "${ENABLE_VISION:-1}" = 1 ]; then
  28. args+=(--enable-multimodal --mm-attention-backend "${MM_ATTN_BACKEND:-triton_attn}")
  29. fi
  30. case "${SPEC_ALGO:-DFLASH}" in
  31. DFLASH)
  32. args+=(--speculative-algorithm DFLASH
  33. --speculative-draft-model-path "$MODEL_PATH/dflash"
  34. --speculative-num-draft-tokens "${SPEC_DRAFT_TOKENS:-8}")
  35. [ -n "${SPEC_DRAFT_KV_RATIO:-}" ] && args+=(--speculative-draft-kv-ratio "$SPEC_DRAFT_KV_RATIO")
  36. ;;
  37. EAGLE)
  38. args+=(--speculative-algorithm EAGLE --enable-multi-layer-eagle
  39. --speculative-num-steps "${SPEC_STEPS:-3}" --speculative-eagle-topk 1
  40. --speculative-num-draft-tokens "${SPEC_DRAFT_TOKENS:-4}")
  41. ;;
  42. none|"") ;;
  43. *) echo "unknown SPEC_ALGO=$SPEC_ALGO" >&2; exit 2 ;;
  44. esac
  45. if [ "${CUDA_GRAPH:-1}" = 0 ]; then
  46. args+=(--disable-decode-cuda-graph)
  47. else
  48. args+=(--cuda-graph-max-bs-decode "${CUDA_GRAPH_MAX_BS:-8}")
  49. fi
  50. [ "${CUDA_GRAPH_PREFILL:-0}" = 1 ] || args+=(--disable-prefill-cuda-graph)
  51. # Unified memory: page cache from reading the shards competes with the KV pool.
  52. [ "${DROP_CACHE_AFTER_LOAD:-1}" = 1 ] && args+=(--weight-loader-drop-cache-after-load)
  53. [ -n "${FP8_GEMM_BACKEND:-}" ] && args+=(--fp8-gemm-backend "$FP8_GEMM_BACKEND")
  54. [ -n "${PREFILL_ATTN_BACKEND:-}" ] && args+=(--prefill-attention-backend "$PREFILL_ATTN_BACKEND")
  55. [ -n "${KV_CACHE_DTYPE:-}" ] && args+=(--kv-cache-dtype "$KV_CACHE_DTYPE")
  56. [ -n "${MAX_TOTAL_TOKENS:-}" ] && args+=(--max-total-tokens "$MAX_TOTAL_TOKENS")
  57. # shellcheck disable=SC2206
  58. [ -n "${EXTRA_SGLANG_ARGS:-}" ] && args+=(${EXTRA_SGLANG_ARGS})
  59. echo "mimo26 rank $NODE_RANK: sglang $(cd /sgl-workspace/sglang && git rev-parse --short HEAD) + PRs $(tr '\n' ' ' < /opt/mimo26/applied-prs.txt)"
  60. printf 'mimo26 args:'; printf ' %q' "${args[@]}"; echo
  61. exec python3 -m sglang.launch_server "${args[@]}"