christopher-kapic's picture
Upload folder using huggingface_hub
fdc6474 verified
Raw
History Blame Contribute Delete
2.95 kB
#!/usr/bin/env bash
# GLM-5.2 hybrid NVFP4+AQLM on 4x RTX PRO 6000 Blackwell (SM120, 96GB).
# Usage: ./run_rtx6000.sh [1m|500k|250k] (default: 1m)
#
# One-time setup (fresh box) — see SETUP steps below the config block.
set -euo pipefail
VARIANT="${1:-1m}"
HF_BASE="jarrelscy/GLM-5.2-NVFP4-AQLM-hybrid" # weights + code/ bundle
VLLM_FORK="https://github.com/jarrelscy/vllm-glm52-sm120" # full fork, patches committed
VLLM_BRANCH="glm52-sm120"
WORK="${WORK:-$HOME/glm52}"
case "$VARIANT" in
1m) HF_REPO="$HF_BASE"; MAXLEN=1048576 ;; # 30% hot experts, 292 GB
500k) HF_REPO="$HF_BASE-500k"; MAXLEN=524288 ;; # 48% hot experts, 334 GB
250k) HF_REPO="$HF_BASE-250k"; MAXLEN=262144 ;; # 57% hot experts, 354 GB
*) echo "usage: $0 [1m|500k|250k]"; exit 1 ;;
esac
MODEL_DIR="$WORK/models/$VARIANT"
# ---------- one-time setup ----------
if [ ! -d "$WORK/vllm/.venv" ]; then
mkdir -p "$WORK" && cd "$WORK"
command -v uv >/dev/null || curl -LsSf https://astral.sh/uv/install.sh | sh
export PATH="$HOME/.local/bin:$PATH"
# vLLM changes now live in the fork (no patches to apply)
git clone --depth 1 -b "$VLLM_BRANCH" "$VLLM_FORK" vllm && cd vllm
uv venv --python 3.12 .venv && source .venv/bin/activate
uv pip install vllm --torch-backend=auto # bootstrap deps fast
VLLM_USE_PRECOMPILED=1 uv pip install -e . --torch-backend=auto
uv pip install ninja "huggingface_hub[cli]"
# flashinfer git main: SM120 sparse-MLA needs kv_scale_format=arbitrary_fp32
uv pip install "flashinfer-python @ git+https://github.com/flashinfer-ai/flashinfer.git"
# JIT toolchain: pin nvcc/crt/nvvm/cccl to torch's CUDA minor, lib64 link
TORCH_CU=$(python -c "import torch;print(torch.version.cuda.split('.')[0]+'.'+torch.version.cuda.split('.')[1])")
uv pip install "nvidia-cuda-nvcc==${TORCH_CU}.*" "nvidia-cuda-crt==${TORCH_CU}.*" \
"nvidia-nvvm==${TORCH_CU}.*" "nvidia-cuda-cccl==${TORCH_CU}.*" || true
CU13="$WORK/vllm/.venv/lib/python3.12/site-packages/nvidia/cu13"
ln -sfn lib "$CU13/lib64" 2>/dev/null || true
for f in "$CU13"/lib/lib*.so.*; do b=$(basename "$f"); s=${b%%.so.*};
[ -e "$CU13/lib/$s.so" ] || ln -s "$b" "$CU13/lib/$s.so"; done
fi
# ---------- fetch weights ----------
if [ ! -f "$MODEL_DIR/config.json" ]; then
source "$WORK/vllm/.venv/bin/activate"
hf download "$HF_REPO" --exclude "code/*" --local-dir "$MODEL_DIR"
fi
# ---------- serve ----------
cd "$WORK/vllm" && source .venv/bin/activate
export CUDA_HOME="$WORK/vllm/.venv/lib/python3.12/site-packages/nvidia/cu13"
export VLLM_PP_LAYER_PARTITION="21,19,19,19"
export NCCL_MAX_NCHANNELS=4 NCCL_BUFFSIZE=1048576
export VLLM_SPARSE_INDEXER_MAX_LOGITS_MB=256
exec vllm serve "$MODEL_DIR" \
--pipeline-parallel-size 4 \
--gpu-memory-utilization 0.95 \
--kv-cache-dtype fp8_ds_mla \
--max-model-len "$MAXLEN" \
--max-num-seqs 2 \
--max-num-batched-tokens 2048 \
--enforce-eager \
--port 8000