Skip to content

Promote dev: NVFP4 quantize target, linux-x64-cuda-13.3 build, GPU smoke CI, laguna test fix#43

Merged
worthant merged 12 commits into
masterfrom
dev
Jul 22, 2026
Merged

Promote dev: NVFP4 quantize target, linux-x64-cuda-13.3 build, GPU smoke CI, laguna test fix#43
worthant merged 12 commits into
masterfrom
dev

Conversation

@worthant

Copy link
Copy Markdown
Member

Promotion of the stabilized dev branch to master. Contents since b75801d55:

Fixes

  • test-llama-archs / laguna (tests: fix test-llama-archs failure on laguna #38): laguna is MoE-only; fixture now writes the three required expert keys; gate-width detection falls back to per-head when tensor metadata is unavailable; llama_model_saver wrote n_ff_chexp under the shared-expert key, zeroing n_ff_shexp on save/reload roundtrip — fixed. Un-reds ubuntu-llvmpipe / CI (cpu) on master.
  • CI triggers (tests: fix test-llama-archs failure on laguna #38): required status checks now always report on PRs (paths filters dropped from pull_request triggers) — no more PRs stuck in "Expected".

Features

Verified on a rented RTX 5090 (dev-latest, f2757df)

backend pp512 tg128
linux-x64-vulkan 25.4k t/s 674 t/s
linux-x64-cuda-13.3 60.5k t/s 1349 t/s

Both legs: NVFP4 quantize with the shipped tool, coherent generation, GPU-actually-used assert green (after #42).

Release b10018-1.0.1 will be cut from master after this merge.

worthant added 12 commits July 21, 2026 18:19
- moe_mandatory: laguna is sigmoid-routed MoE with a mandatory shared
  expert; testing it as dense fails on required expert hparams
- fixture: write expert_shared_feed_forward_length, expert_weights_scale
  and expert_weights_norm for MoE configs (laguna requires all three)
- laguna: when tensor metadata is unavailable (metadata-only loads used
  by test-llama-archs) default the attention gate width to per-head;
  real files with a missing gate still fail in required create_tensor
- model-saver: n_ff_chexp was written under the shared-expert FF key,
  overwriting n_ff_shexp with 0 on save/reload roundtrip; write it under
  EXPERT_CHUNK_FEED_FORWARD_LENGTH where it belongs
build-vulkan.yml only fired on PRs touching ggml-vulkan sources and
dev-build.yml only on C/C++ changes, but their jobs are required status
checks on dev -- any PR outside those paths (like this one) hangs on
'Expected -- waiting for status to be reported' with no way to satisfy
it. Drop the paths filters from the pull_request triggers (push triggers
keep theirs) and let dev-build also run on PRs into master so the
dev -> master promotion PR reports the same checks.
tests: fix test-llama-archs failure on laguna
…in archives

ggml already implements quantize_nvfp4 (incl. imatrix) and
ggml_quantize_chunk dispatches it, but neither llama-quant.cpp nor the
quantize tool mapped LLAMA_FTYPE_MOSTLY_NVFP4 to it, so NVFP4 GGUFs
could only be obtained by converting pre-quantized checkpoints. Wire the
ftype through and list NVFP4 in llama-quantize.

Also package llama-quantize into the linux/macos dev and release
archives (windows already ships it via Release\*) so a downloaded dev
build can produce test quants without a local checkout.

Verified locally: SmolLM2-135M f16 -> NVFP4 (259MB -> 88MB), coherent
output via llama-cli and llama-server (dev-latest binary) on CPU.
quantize: expose NVFP4 as a quantization target
Linux until now shipped only the Vulkan backend; NVIDIA users got the
dequant path and no access to native CUDA kernels (incl. FP4 on
Blackwell). Add a CUDA 13.3 build mirroring the Windows cuda-13.3
variant: GGML_BACKEND_DL keeps it a dlopen'd libggml-cuda.so next to the
CPU variants, cudart/cublas are bundled like the Windows DLLs, archs
cover A100/RTX30/RTX40/H100/RTX50 (80;86;89;90;120).
ci: add linux-x64-cuda-13.3 build (dev + release)
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.
ci: GPU smoke test (vast.ai) for released backends
The CUDA device line in the bench log is 'Device 0: NVIDIA ...' with no
'cuda' on the same line, so the combined regex never matched and a fully
working CUDA run (60k t/s pp512 on an RTX 5090) was reported as FAIL.
Also the tg128 extraction read the test-name column instead of the t/s
column. Both asserts validated against the real bench.log from that run.
smoke: fix CUDA device assert and tg128 column
@worthant
worthant merged commit b3d6310 into master Jul 22, 2026
14 of 15 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant