feat(gallery): add vllm.cpp text-generation models - #11511
Open
localai-bot wants to merge 1 commit into
Open
Conversation
Adds eight curated vllm-cpp entries to the model gallery. Until now the backend had gallery coverage only for MiniMax-H3 video, so serving text on it meant hand-writing engine_args. The flagship tier is what vllm.cpp gates its correctness and speed claims on: Qwen3.6-27B and Qwen3.6-35B-A3B in NVFP4, each with a speculative sibling (MTP on both, DFlash on the 27B). Qwen3-Coder-30B-A3B covers agentic tool use, and Qwen3-4B / Qwen3-0.6B in bf16 are the entries that run where NVFP4 cannot, CPU included. Three details are load-bearing rather than incidental: - The 27B entries pin revision 890bdef7. That repository was later re-quantized in place from NVFP4 to FP8 W8A8 under the same name, so an unpinned entry resolves to different weights and reports nothing. - Qwen3-Coder names tool_parser: qwen3_coder explicitly. Its dialect is byte-identical on the wire to step3p5's, so chat-template sniffing cannot separate them and auto-detection picks wrong. - enable_prefix_caching is deliberately left unset everywhere. It defaults on for dense models and off for the GDN hybrids, and that per-model default is the right answer. num_blocks is sized per model from its real KV footprint rather than copied between entries, which ranges from 20 KiB/token on the 35B to 144 KiB/token on the 4B. Docs: adds features/vllm-cpp.md covering installation, the model table, the pinning rationale and how to choose between the speculative variants, and cross-links it from the existing engine_args reference. It also records that the CUDA images are built for Blackwell only, which is narrower than vllm.cpp's own ten-architecture release and makes an otherwise cryptic "no kernel image is available" failure legible. Verified: gallery suite green; all eight decode and validate as a ModelConfig. qwen3-0.6b-vllm-cpp confirmed end to end on a real cluster, chat plus engine-parsed tool_calls. The NVFP4 entries are not yet runtime-verified: no available node has kernels for them. Signed-off-by: Ettore Di Giacinto <mudler@localai.io> Assisted-by: Claude Code:claude-opus-5[1m] [Read] [Bash] [Edit]
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds eight curated
vllm-cppentries to the model gallery. Until now the backend had gallery coverage only for MiniMax-H3 video, so serving text on it meant hand-writingengine_args.Entries
qwen3.6-27b-nvfp4-vllm-cppqwen3.6-27b-nvfp4-mtp-vllm-cppqwen3.6-27b-nvfp4-dflash-vllm-cppqwen3.6-35b-a3b-nvfp4-vllm-cppqwen3.6-35b-a3b-nvfp4-mtp-vllm-cppqwen3-coder-30b-a3b-vllm-cppqwen3-4b-vllm-cppqwen3-0.6b-vllm-cppThe flagship tier is what vllm.cpp gates its own correctness and speed claims on. No backend code is needed: master already carries
speculative_config, the parser knobs andresolveDraftModelPath.Three details that are load-bearing
The 27B revision pin.
unsloth/Qwen3.6-27B-NVFP4was re-quantized in place, under the same repository name, from NVFP4 to FP8 W8A8. Its HEAD is nowccdaab7e. The entries pin890bdef7…, which is the NVFP4 arm that beats vLLM 1.007-1.045x at every concurrency. Without the pin the entry resolves to different weights, with different numerics, and nothing reports that anything changed.tool_parser: qwen3_coderis named explicitly. That dialect is byte-identical on the wire to step3p5's, so chat-template sniffing cannot separate the two and auto-detection picks the wrong parser.hermesandthink_autodo auto-detect correctly and are named only for stability.enable_prefix_cachingis deliberately never set. It defaults on for dense models and off for the GDN hybrids, and that per-model default is the right answer.num_blocksis sized per model from its real KV footprint rather than copied between entries: 20 KiB/token on the 35B (10 of 40 layers are full-attention), 64 KiB/token on the 27B (16 of 64), but 144 KiB/token on the dense 4B.Docs
Adds
features/vllm-cpp.md: installation, the model table, the pinning rationale, and how to choose between the speculative variants. Cross-linked from the existingengine_argsreference intext-generation.md, which stays the configuration reference rather than being duplicated.It also records that the CUDA images are built for Blackwell only, which is narrower than vllm.cpp's own ten-architecture release. That is what turns an otherwise cryptic
no kernel image is available for execution on the deviceinto something a user can act on. Widening the build is a separate PR.Verification
go test ./core/gallery/...).ModelConfig; both DFlash file hashes computed from the completed download.qwen3-0.6b-vllm-cppconfirmed end to end on a real cluster: chat, plus tool calling returning engine-parsedtool_callswithfinish_reason: tool_calls.prefixCaching="model-default".sm_110, which LocalAI does not build. They are verified by construction only.🤖 Generated with Claude Code