diff --git a/llm/scripts/deploy.sh b/llm/scripts/deploy.sh deleted file mode 100755 index 6e8ae69..0000000 --- a/llm/scripts/deploy.sh +++ /dev/null @@ -1,167 +0,0 @@ -#!/usr/bin/env bash -# deploy.sh - Deploy the vllmScripts repo to a target and restart its service. -# -# This script implements the second half of the git deployment workflow from -# AGENTS.md. It assumes the local changes are committed and pushed, then: -# 1. Pulls the repo on the target -# 2. Symlinks the systemd unit -# 3. Reloads systemd and restarts the service -# 4. Waits for the health endpoint and reports status -# -# Sudo: set FRANK_SUDO_PW so remote sudo reads the password from stdin -# (`sudo -S`). The passwordless restart helpers installed for the retired -# topology are obsolete and must not be used. -# -# Usage: -# ./deploy.sh [--dry-run] -# FRANK_SUDO_PW=... ./deploy.sh -# -# Targets (2026-08-18 topology): -# dankserver - llama.cpp Qwen3.6-35B-A3B Q6_K_P (frank-default-small.service, port 7770) -# dankclaw - CIRU ROCmFPX llama.cpp Qwen3.8-27B (frank-default-large.service, port 52625) -set -euo pipefail - -# --------------------------------------------------------------------------- -# Target configuration -# --------------------------------------------------------------------------- -declare -A REMOTE_USER REMOTE_HOST REMOTE_DIR SERVICE SERVICE_HEALTH DROP_CACHES HEALTH_WAIT - -REMOTE_USER[dankserver]=dank -REMOTE_HOST[dankserver]=dankserver -REMOTE_DIR[dankserver]="/home/dank/vLLM" -SERVICE[dankserver]="frank-default-small" -SERVICE_HEALTH[dankserver]="http://127.0.0.1:7770/health" -DROP_CACHES[dankserver]=0 -# Cold load: --no-mmap reads the 30.6 GB Q6_K_P through RAM (MoE experts on -# CPU); allow 20 minutes. -HEALTH_WAIT[dankserver]=600 - -REMOTE_USER[dankclaw]=dank -REMOTE_HOST[dankclaw]=dankclaw -REMOTE_DIR[dankclaw]="/home/dank/vllmScripts" -SERVICE[dankclaw]="frank-default-large" -SERVICE_HEALTH[dankclaw]="http://127.0.0.1:52625/health" -DROP_CACHES[dankclaw]=0 -# CIRU llama.cpp (ROCm 7.15) loads the v3 five-file payload (GGUF + FFN + -# GDN + Output-K8 .pfs + mmproj, ~36.7 GiB) + MTP draft/Output-K8 proxy and -# initializes PromptForge views; allow 20 minutes. -HEALTH_WAIT[dankclaw]=600 - -TARGET="${1:-}" -DRY_RUN=0 -if [ "${2:-}" = "--dry-run" ]; then - DRY_RUN=1 -fi - -# --------------------------------------------------------------------------- -# Validation -# --------------------------------------------------------------------------- -if [ -z "${TARGET:-}" ]; then - echo "Usage: $0 [--dry-run]" - exit 1 -fi -if [ -z "${REMOTE_HOST[$TARGET]:-}" ]; then - echo "Unknown target: $TARGET" - exit 1 -fi - -# --------------------------------------------------------------------------- -# Sudo wrapper (headless-friendly) -# --------------------------------------------------------------------------- -SUDO_PREFIX="sudo" -if [ -n "${FRANK_SUDO_PW:-}" ]; then - SUDO_PREFIX="printf '%s\n' '$FRANK_SUDO_PW' | sudo -S" -fi - -# --------------------------------------------------------------------------- -# Local checks (pre-flight) -# --------------------------------------------------------------------------- -cd "$(dirname "$0")/.." -if ! git diff --quiet HEAD; then - echo "FAIL: Local working tree has uncommitted changes." - echo "Commit or stash them before deploying." - exit 1 -fi -if [ "$(git rev-parse --abbrev-ref HEAD)" != "main" ]; then - echo "WARN: Not on 'main'; deploying a non-main branch." -fi - -echo "=== Deploying to ${TARGET} ===" -echo " host: ${REMOTE_HOST[$TARGET]}" -echo " dir: ${REMOTE_DIR[$TARGET]}" -echo " service: ${SERVICE[$TARGET]}" -echo " health: ${SERVICE_HEALTH[$TARGET]}" -echo "" - -# --------------------------------------------------------------------------- -# Push (unless dry-run) -# --------------------------------------------------------------------------- -if [ "$DRY_RUN" = "1" ]; then - echo "[dry-run] Would push local main to origin" - echo "[dry-run] Would SSH to ${REMOTE_HOST[$TARGET]} and git pull" -else - echo "[1/4] Pushing local main to origin..." - git push origin main -fi - -REMOTE="$( - printf '%s@%s' "${REMOTE_USER[$TARGET]}" "${REMOTE_HOST[$TARGET]}" -)" - -# --------------------------------------------------------------------------- -# Remote: pull + install + restart -# --------------------------------------------------------------------------- -DROP_CACHES_CMD="" -if [ "${DROP_CACHES[$TARGET]}" = "1" ]; then - DROP_CACHES_CMD=" -echo 'Dropping page caches for reliable model load...' -${SUDO_PREFIX} sh -c 'sync; echo 3 > /proc/sys/vm/drop_caches' -" -fi - -REMOTE_SCRIPT=" -set -euo pipefail -cd '${REMOTE_DIR[$TARGET]}' - -echo '[2/4] Pulling repo on ${TARGET}...' -git pull origin main - -echo '[3/4] Symlink unit and restart ${SERVICE[$TARGET]}...' -${SUDO_PREFIX} ln -sf '${REMOTE_DIR[$TARGET]}/scripts/${SERVICE[$TARGET]}.service' /etc/systemd/system/${SERVICE[$TARGET]}.service -${DROP_CACHES_CMD} -${SUDO_PREFIX} systemctl daemon-reload -${SUDO_PREFIX} systemctl enable '${SERVICE[$TARGET]}' -${SUDO_PREFIX} systemctl restart '${SERVICE[$TARGET]}' -" - -if [ "$DRY_RUN" = "1" ]; then - echo "[dry-run] Remote commands would run:" - echo "$REMOTE_SCRIPT" -else - # shellcheck disable=SC2087 - ssh "$REMOTE" bash -s < /dev/null 2>&1; then - echo " Service healthy after approx $((i * 2))s" - echo "" - echo "=== Deploy complete: ${TARGET} ===" - exit 0 - fi - sleep 2 - done - echo "FAIL: Service did not become healthy in $((HEALTH_ITERS * 2))s" - exit 1 -fi diff --git a/llm/scripts/bench-fast-greedy.sh b/scripts/bench-fast-greedy.sh similarity index 100% rename from llm/scripts/bench-fast-greedy.sh rename to scripts/bench-fast-greedy.sh diff --git a/llm/scripts/bench-kairic-ab.sh b/scripts/bench-kairic-ab.sh similarity index 100% rename from llm/scripts/bench-kairic-ab.sh rename to scripts/bench-kairic-ab.sh diff --git a/llm/scripts/bench-spec-stack.sh b/scripts/bench-spec-stack.sh old mode 100644 new mode 100755 similarity index 100% rename from llm/scripts/bench-spec-stack.sh rename to scripts/bench-spec-stack.sh diff --git a/llm/scripts/frank-default-large.env b/scripts/frank-default-large.env similarity index 100% rename from llm/scripts/frank-default-large.env rename to scripts/frank-default-large.env diff --git a/llm/scripts/frank-default-large.service b/scripts/frank-default-large.service similarity index 100% rename from llm/scripts/frank-default-large.service rename to scripts/frank-default-large.service diff --git a/llm/scripts/frank-default-npu.env b/scripts/frank-default-npu.env similarity index 100% rename from llm/scripts/frank-default-npu.env rename to scripts/frank-default-npu.env diff --git a/llm/scripts/frank-default-npu.service b/scripts/frank-default-npu.service similarity index 100% rename from llm/scripts/frank-default-npu.service rename to scripts/frank-default-npu.service diff --git a/llm/scripts/frank-default-small.env b/scripts/frank-default-small.env similarity index 100% rename from llm/scripts/frank-default-small.env rename to scripts/frank-default-small.env diff --git a/llm/scripts/frank-default-small.service b/scripts/frank-default-small.service similarity index 100% rename from llm/scripts/frank-default-small.service rename to scripts/frank-default-small.service diff --git a/llm/scripts/serve-frank-default-npu.sh b/scripts/serve-frank-default-npu.sh similarity index 100% rename from llm/scripts/serve-frank-default-npu.sh rename to scripts/serve-frank-default-npu.sh diff --git a/llm/scripts/serve-frank-large.sh b/scripts/serve-frank-large.sh similarity index 100% rename from llm/scripts/serve-frank-large.sh rename to scripts/serve-frank-large.sh diff --git a/llm/scripts/serve-frank-small.sh b/scripts/serve-frank-small.sh similarity index 100% rename from llm/scripts/serve-frank-small.sh rename to scripts/serve-frank-small.sh