frank-large: CIRU v4.4.1 Orca cutover — root unit, one stream, full context

Operator call 2026-09-19: switch the iGPU endpoint from
halogen-flash-server to jcbtc/Qwen3.8-Flash-CIRU-STRIX-Orca on the CIRU
v4.4.1 runtime with the QSA window hotfix (host build against the private
ROCm 10 SDK), one stream of the full 262144 trained window.  The service
leaves the quadlet shape for a root unit (the same shape as frank-small and
frank-medium: a private-SDK host binary has no image to install and no
generated unit to dodge); the halogen quadlet is archived, the deploy
handler retires it on the host, gates on 7770, and its stray-run sweep
matches the model path so it cannot take frank-small down.
This commit is contained in:
Frank committed 2026-09-19 02:59:01 -07:00
1 parent d374ab963f
commit b6ce3afb1f
9 files changed
+317 -406

No files matched your search

+80
View File
@@ -0,0 +1,80 @@
#!/usr/bin/env bash
# Serve jcbtc/Qwen3.8-Flash-CIRU-STRIX-Orca as frank-large on Dankclaw's
# Strix Halo iGPU (gfx1151), using the CIRU v4.4.1 runtime with the QSA
# window hotfix.
#
# Runtime: the v4.4.1 source with the QSA window hotfix pre-applied
# (ciru-runtime-v4.4.1-qsa-hotfix-source.tar.gz, shipped in the model repo
# under runtime/v4.4.1/qsa-window-hotfix/), built ON the host against the
# private ROCm 10.0.0 SDK that scripts/ciru/setup-linux-amd.sh installs into
# the runtime checkout's own venv. The launcher below re-verifies on every
# start that the built libraries carry the v4.4.1 corrections (it greps the
# common and HIP libraries for the fix markers) before exec.
#
# The launcher owns the flag list: -sm none (one iGPU, no split), -ngl all,
# f16 KV, flash attention, cont-batching, the PLE sidecar, the MTP drafter
# (depth 4 for the Orca variant) and the production kernel-bundle profile.
# Tunables come from frank-large.env unless FRANK_LARGE_ENV_FILE overrides it;
# anything not set there falls through to the launcher's own defaults.
#
# It replaces the halogen-flash-server quadlet, which served
# peonist-ai/halogen-qwen3.8-flash-next on this same iGPU since 2026-09-16.
set -euo pipefail
SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)"
ENV_FILE="${FRANK_LARGE_ENV_FILE:-$SCRIPT_DIR/frank-large.env}"
if [[ -f "$ENV_FILE" ]]; then
set -a
# shellcheck disable=SC1090
source "$ENV_FILE"
set +a
fi
# --- defaults (used when the env file does not set them) ------------------
: "${RUNTIME_DIR:=/home/dank/GitPackages/ciru-runtime-v4.4.1-qsa-hotfix}"
: "${MODEL_DIR:=/home/dank/models/Qwen3.8-Flash-CIRU-STRIX-Orca}"
: "${HOST:=0.0.0.0}"
: "${PORT:=7770}"
: "${CONTEXT_SIZE:=262144}"
: "${PARALLEL_SLOTS:=1}"
LAUNCHER="$RUNTIME_DIR/scripts/ciru/run-orca-server.sh"
SERVER_BIN="$RUNTIME_DIR/build-gfx1151-sdk/bin/llama-server"
if [[ ! -x "$LAUNCHER" ]]; then
echo "missing runtime launcher: $LAUNCHER" >&2
echo "fetch the hotfix source tarball from the model repo" >&2
echo "(runtime/v4.4.1/qsa-window-hotfix/) and build it:" >&2
echo " bash $RUNTIME_DIR/scripts/ciru/setup-linux-amd.sh --install-host-deps" >&2
exit 1
fi
if [[ ! -x "$SERVER_BIN" ]]; then
echo "missing built runtime: $SERVER_BIN" >&2
echo "build it: bash $RUNTIME_DIR/scripts/ciru/setup-linux-amd.sh --install-host-deps" >&2
exit 1
fi
if [[ ! -r "$MODEL_DIR/Qwen3.8-Flash-CIRU-STRIX-Orca.gguf" ]]; then
echo "missing target model: $MODEL_DIR/Qwen3.8-Flash-CIRU-STRIX-Orca.gguf" >&2
echo "fetch and assemble it: bash $SCRIPT_DIR/download-frank-large-orca.sh" >&2
exit 1
fi
# The launcher checks the MTP head and the PLE sidecar itself, but a missing
# payload should be a deploy error with a pointer, not a runtime exit 2.
for required in \
"$MODEL_DIR/mtp/Qwen3.8-Flash-CIRU-STRIX-Orca-MTP-Q8_0.gguf" \
"$MODEL_DIR/ple/ple.payload.bin" \
"$MODEL_DIR/ple/ple.manifest.json" \
"$MODEL_DIR/ple/ple.scale.bf16"; do
if [[ ! -r "$required" ]]; then
echo "missing payload: $required" >&2
echo "fetch and assemble it: bash $SCRIPT_DIR/download-frank-large-orca.sh" >&2
exit 1
fi
done
# The Qwen3.8 family template keeps prior thinking blocks across turns when
# preserve_thinking is set; the launcher passes --jinja but no template
# kwargs, so name them here. A request-level chat_template_kwargs still
# wins over this.
exec "$LAUNCHER" --chat-template-kwargs '{"preserve_thinking":true}'