BUG: UI has no field for mmproj/vision model configuration #36
Labels
No labels
blocked:lint-failed
blocked:needs-decision
blocked:no-changes
blocked:no-procedure
blocked:preflight
blocked:verify-failed
bug
feature-request
in-progress
lint-cleanup
ops-task
quickfix
security/high
security/medium
test-coverage
triage-approved
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Mark/vllm_mm#36
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
The frontend UI (
http://localhost:5173, Vite dev server, "VLLM Model Manager") has no UI affordance for multimodal (vision) model configuration. There is no field in the add/edit-model dialog formmproj(vision projector) GGUF files, even though the backend already supportsmmprojFilesettings and llama.cpp requires--mmprojfor vision inference.What works
Multimodal inference works only when bypassing both the UI and the backend proxy: directly POSTing OpenAI-format requests with
content: [{type:"text",...}, {type:"image_url", image_url:{url:"data:image/png;base64,..."}}]to a manually-spawnedllama-serverlistening on a known port (e.g., 18000) on the host.Verified with:
unsloth/gemma-4-E4B-it-GGUF(Q4_K_M) +mmproj-F16.gguf(990 MB)"Red"(2 completion tokens, 284 prompt tokens)Same setup confirmed working for
unsloth/Qwen3.5-4B-GGUF(Q4_K_M, 2.74 GB) +mmproj-F16.gguf(672 MB).What's missing
Frontend form:
src/components/dialogs/add-edit-model-dialog.tsxdoes not exposemmprojFile. Users cannot register multimodal models through the UI even though the backend API supports it.Validation schema:
src/lib/validations/model.tsdoes not includemmprojFilein the llama.cpp settings interface.API client:
src/lib/api.tsLlamaCppSettingsApiinterface omitsmmproj_file.Workaround
Manually register models via curl:
POST /api/modelswithsettings.mmprojFile: "mmproj-F16.gguf". Backend will record the path but, per the separate bug filed against the llama.cpp start handler, the start endpoint currently does not pass--mmprojto llama-server — so even with the setting saved, it would not be applied at start time.Expected
Add
mmprojFilefield to the llama.cpp model registration form. On submit, include it in thesettingsobject of the POST/PUT body. After start, the backend's llama.cpp subprocess command must include--mmproj <path>so vision inference actually works.Files
src/components/dialogs/add-edit-model-dialog.tsx(form)src/lib/validations/model.ts(schema)src/lib/api.ts(LlamaCppSettingsApi)backend/app/services/backends/llamacpp_backend.py(subprocess command builder)Verified on
main(HEAD9aa91ec) — the UI/backend chain this issue describes is already wired end-to-end.Frontend (no changes needed):
src/components/dialogs/add-edit-model-dialog.tsxexposes a "Multimodal (MMproj)" toggle that revealsmmprojPathandmmprojSha256inputs (lines 647–696).src/lib/validations/model.tsincludes both as optional top-level fields onhfModelCreateSchema(lines 126–128).src/types/vllm.tscarriesmmprojPath?onLlamaCppSettings(line 78) and onHFModel(lines 185–186).src/lib/api.tsLlamaCppSettingsApiincludesmmproj_path?: string | null(line 48).Wire path (create + update):
src/hooks/useModels.ts:168includesmmproj_pathin the settings payload sent toPOST /api/models.src/hooks/useModels.ts:217–218, 253–254forwards top-levelmmproj_path/mmproj_sha256alongsidemultimodal.Backend (no changes needed):
backend/app/services/backends/llamacpp_backend.py:51mapsmmprojPath→mmproj_path, and lines 174–178 emit--mmproj {data_path}/gguf/{mmproj_path}to thellama-serversubprocess.backend/app/database.py:50–51, 104–105andbackend/app/repositories/model_repository.py:94–95, 120–123persistmmproj_path/mmproj_sha256on the model record.Verification: backend
pytest221 passed / 2 skipped, frontendvitest77 passed,tsc --noEmitclean.This work was originally shipped in commits
2d36127(M005/S01+S02: Add multimodal fields to schemas/db/types/frontend +--mmprojlaunch flag),504d8d5(#13 #23persist multimodal fields on create/update),1e410f4and8251fb1(regression tests), and7636dae(#37proxy passes multimodal through to backend vision handler).Closing as completed; the bug is fixed on
main. Reopen if a real-world regression appears.