Skip to content

Commit f40e123

Browse files
committed
test: harden turbo4 vulkan smoke
1 parent a5cc2b8 commit f40e123

1 file changed

Lines changed: 24 additions & 1 deletion

File tree

scripts/turbo4-vulkan-gemma4-smoke.sh

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
#
1010
# Optional:
1111
# LLAMA_SERVER=/path/to/llama-server
12+
# VULKAN_DEVICE=Vulkan0
1213
# CHAT_TEMPLATE_FILE=/path/to/google-gemma-4-31B-it-interleaved.fixed.jinja
1314
# HOST=127.0.0.1 PORT=18085 CTX_SIZE=65537 BATCH_SIZE=512 UBATCH_SIZE=512
1415
# GPU_LAYERS=999 GPU_LAYERS_DRAFT=999 N_CPU_MOE=38 N_CPU_MOE_DRAFT=38
@@ -51,6 +52,7 @@ PROMPT="${PROMPT:-Reply with exactly: turbo4v-ok}"
5152
EXPECT="${EXPECT:-turbo4v-ok}"
5253
LOG_FILE="${LOG_FILE:-${TMPDIR:-/tmp}/llama-turbo4-vulkan-gemma4-smoke.log}"
5354
REQUIRE_LOG_MARKERS="${REQUIRE_LOG_MARKERS:-1}"
55+
VULKAN_DEVICE="${VULKAN_DEVICE:-Vulkan0}"
5456

5557
if [[ -z "$LLAMA_SERVER" || ! -x "$LLAMA_SERVER" ]]; then
5658
echo "SKIP: set LLAMA_SERVER or build llama-server before running this smoke test."
@@ -72,6 +74,13 @@ if ! command -v python3 >/dev/null 2>&1; then
7274
exit 0
7375
fi
7476

77+
DEVICE_LIST="$("$LLAMA_SERVER" --list-devices 2>&1 || true)"
78+
if ! grep -Fq "$VULKAN_DEVICE:" <<< "$DEVICE_LIST"; then
79+
echo "SKIP: requested Vulkan device '$VULKAN_DEVICE' is unavailable."
80+
echo "$DEVICE_LIST"
81+
exit 0
82+
fi
83+
7584
SERVER_PID=""
7685
REQUEST_FILE="$(mktemp "${TMPDIR:-/tmp}/turbo4-vulkan-gemma4-request.XXXXXX.json")"
7786
RESPONSE_FILE="$(mktemp "${TMPDIR:-/tmp}/turbo4-vulkan-gemma4-response.XXXXXX.json")"
@@ -87,6 +96,7 @@ trap cleanup EXIT
8796

8897
server_args=(
8998
-m "$MODEL"
99+
-dev "$VULKAN_DEVICE"
90100
-ngl "$GPU_LAYERS"
91101
-ngld "$GPU_LAYERS_DRAFT"
92102
-ncmoe "$N_CPU_MOE"
@@ -123,6 +133,7 @@ mkdir -p "$(dirname "$LOG_FILE")"
123133
echo "Starting Gemma4 Vulkan TurboQuant smoke:"
124134
echo " server: $LLAMA_SERVER"
125135
echo " model: $MODEL"
136+
echo " device: $VULKAN_DEVICE"
126137
echo " cache: -ctk turbo4 -ctv turbo4"
127138
echo " log: $LOG_FILE"
128139

@@ -144,6 +155,13 @@ until curl -fsS "http://$HOST:$PORT/health" >/dev/null 2>&1; do
144155
sleep 2
145156
done
146157

158+
if ! kill -0 "$SERVER_PID" >/dev/null 2>&1; then
159+
echo "FAIL: llama-server exited before the healthy endpoint was accepted."
160+
echo " Check for a stale process already bound to $HOST:$PORT."
161+
tail -n 200 "$LOG_FILE" || true
162+
exit 1
163+
fi
164+
147165
PROMPT="$PROMPT" python3 - "$REQUEST_FILE" <<'PY'
148166
import json
149167
import os
@@ -176,11 +194,16 @@ if ! grep -Fq "$EXPECT" "$RESPONSE_FILE"; then
176194
fi
177195

178196
if [[ "$REQUIRE_LOG_MARKERS" == "1" ]]; then
179-
if ! grep -Fq "Vulkan0" "$LOG_FILE"; then
197+
if ! grep -Eq "using device Vulkan[0-9]+| - Vulkan[0-9]+ :" "$LOG_FILE"; then
180198
echo "FAIL: server log does not show Vulkan backend startup."
181199
tail -n 200 "$LOG_FILE" || true
182200
exit 1
183201
fi
202+
if ! grep -Fq "using device $VULKAN_DEVICE" "$LOG_FILE"; then
203+
echo "FAIL: server log does not show model placement on $VULKAN_DEVICE."
204+
tail -n 200 "$LOG_FILE" || true
205+
exit 1
206+
fi
184207
if ! grep -Fq "K (turbo4)" "$LOG_FILE"; then
185208
echo "FAIL: server log does not show K cache using turbo4."
186209
tail -n 200 "$LOG_FILE" || true

0 commit comments

Comments
 (0)