Skip to content

ci: GPU smoke test (vast.ai) for released backends#41

Merged
worthant merged 1 commit into
devfrom
feature/backend-smoke
Jul 22, 2026
Merged

ci: GPU smoke test (vast.ai) for released backends#41
worthant merged 1 commit into
devfrom
feature/backend-smoke

Conversation

@worthant

Copy link
Copy Markdown
Member

Adds backend-smoke.yml + .github/scripts/gpu-smoke/{rent,remote-smoke}.sh.

What a run does (per backend, matrix over linux-x64-vulkan / linux-x64-cuda-13.3):

  1. Rents the cheapest vast.ai box matching gpu_query (default RTX 5090, ~$0.30/h), sequential offers with retries, box destroyed in always().
  2. Downloads the released archive for release_tag (default dev-latest).
  3. Quantizes SmolLM2-135M f16 → NVFP4 with the shipped llama-quantize.
  4. llama-server -ngl 99/health → chat completion → asserts the answer contains "Paris" (temperature 0).
  5. llama-benchasserts the GPU backend actually did the work (loaded Vulkan/CUDA backend + NVIDIA device in the log) — a silent CPU fallback fails the run.
  6. Posts a non-required commit status gpu-smoke/<backend> on the commit the release resolves to → visible on the dev→master promotion PR.

Triggers: workflow_dispatch (tag/backends/gpu filter as inputs) + nightly cron against dev-latest (~$1/night). Deliberately not a required check — spot rental is slow, nondeterministic and billed.

Hardening from the manual 5090 runs: X11 libs + LunarG loader for the NVIDIA Vulkan ICD in headless containers; nohup+poll because vast hosts drop long ssh sessions; no grep | head under pipefail.

Secrets used: VAST_API_KEY, VAST_SSH_KEY (already configured).

Note: the Run workflow button appears once this lands on the default branch (master) via the dev→master promotion; until then it is dispatchable with gh workflow run backend-smoke.yml --ref dev. The cuda-13.3 leg needs #40 merged so dev-latest actually contains the cuda asset.

On-demand (workflow_dispatch) + nightly: rents the cheapest matching GPU,
downloads the released archive, quantizes a tiny f16 model to NVFP4 with
the shipped llama-quantize, serves it with -ngl 99, asserts a coherent
answer, runs llama-bench and asserts the GPU backend actually did the
work -- a silent CPU fallback fails the run. Result is posted as a
non-required commit status gpu-smoke/<backend> on the released commit.

Deliberately NOT a required PR check: spot GPU rental is slow,
nondeterministic and costs money.

Hardening baked in from manual runs: X11 client libs + LunarG loader for
the NVIDIA Vulkan ICD in headless containers, nohup+poll against vast
hosts dropping long ssh sessions, no grep|head under pipefail, box is
destroyed in an always() step.
@worthant
worthant merged commit 8a02c1e into dev Jul 22, 2026
10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant