#!/usr/bin/env bash # Start SGLang multi-node TP=16 EP=2 across 2 nodes through the shared # deployment layer (`python -m sskj.deploy start`, NODE_HOSTS orchestration). # Usage: start_sglang_multinode.sh [--dry-run] set -Eeuo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # shellcheck source=/dev/null source "${SCRIPT_DIR}/config.env" # shellcheck source=/dev/null source "${SCRIPT_DIR}/../../../scripts/common/lib.sh" # shellcheck source=/dev/null source "${SCRIPT_DIR}/../../../scripts/common/platform.sh" # shellcheck source=/dev/null source "${SCRIPT_DIR}/../../../scripts/common/deploy_cli.sh" RUNTIME_BASE="${RUNTIME_BASE:-${SCRIPT_DIR}/runtime}" mkdir -p "${RUNTIME_BASE}/logs" DRY_RUN="${DRY_RUN:-0}" DEPLOY_PROFILE="${DEPLOY_PROFILE:-pro6000/dsv4_pro6000_sglang_tp16}" log "=== SGLang multi-node TP=${TP_SIZE} EP=${EP_SIZE} via deploy profile ${DEPLOY_PROFILE} ===" if [[ "$DRY_RUN" == "1" ]]; then PYTHONPATH="${ROOT_DIR}/src" "${DEPLOY_PYTHON:-python3}" -m sskj.deploy start \ --profile "$(deploy_profile_abs "$DEPLOY_PROFILE")" \ --tp "$TP_SIZE" --dp "1" \ --port "${SGLANG_PORT:-30000}" \ --model-path "$MODEL_PATH" \ --log-dir "${RUNTIME_BASE}/logs" \ --dry-run else deploy_start_multinode \ "$DEPLOY_PROFILE" "$TP_SIZE" "1" \ "${RUNTIME_BASE}/logs" \ "${SGLANG_PORT:-30000}" \ "$MODEL_PATH" \ "$EXPERIMENT" fi