Free-memory model ladder, conditional backend order, step-down retry #20

Closed
opened 2026-11-05 17:00:36 +00:00 by xavierk · 1 comment
Owner

Parent

Spec: Voculinux — Void Linux (glibc) Wayland/niri port of Vocalinux

What to build

Model selection becomes memory-aware end to end. On a 4 GB-class card the recommended model is chosen at load time from measured free memory (free VRAM on a discrete GPU, free system RAM otherwise): large-v3-turbo-q8_0 by default, large-v3-turbo-q5_0 when free memory is low, small or small.en (by language) as the floor, using the thresholds calibrated by the baseline ticket. Backend order becomes conditional: CUDA first only when a complete architecture-matching toolkit is already installed, otherwise Vulkan then CPU — fixing today's unreachable VRAM-aware recommendation. When a model load fails, the app steps one rung down and retries once before surfacing the error. Manual model selections are never overridden.

Acceptance criteria

  • With ample free memory the default rung is selected; with constrained free memory the next rung down is selected; thresholds match the baseline ticket's recorded recommendation.
  • With a complete matching CUDA toolkit present, CUDA is preferred; without one, selection goes straight to Vulkan and never attempts a CUDA build or prompts for a toolkit.
  • A forced model-load failure steps down exactly one rung and retries once; a second failure surfaces the engine error and does not loop.
  • English-only configuration pairs with the English-only floor variant; other languages pair with the multilingual variant.
  • A manually selected model loads as selected on every path, including models outside the recommended set.
  • Behaviour tests cover rung choice from mocked free-memory readings, both backend-order branches, and the single step-down retry, without real GPU hardware.

Blocked by

## Parent [Spec: Voculinux — Void Linux (glibc) Wayland/niri port of Vocalinux](https://git.bongbetic.com/xavierk/voculinux/issues/16) ## What to build Model selection becomes memory-aware end to end. On a 4 GB-class card the recommended model is chosen at load time from measured free memory (free VRAM on a discrete GPU, free system RAM otherwise): large-v3-turbo-q8_0 by default, large-v3-turbo-q5_0 when free memory is low, small or small.en (by language) as the floor, using the thresholds calibrated by the baseline ticket. Backend order becomes conditional: CUDA first only when a complete architecture-matching toolkit is already installed, otherwise Vulkan then CPU — fixing today's unreachable VRAM-aware recommendation. When a model load fails, the app steps one rung down and retries once before surfacing the error. Manual model selections are never overridden. ## Acceptance criteria - [ ] With ample free memory the default rung is selected; with constrained free memory the next rung down is selected; thresholds match the baseline ticket's recorded recommendation. - [ ] With a complete matching CUDA toolkit present, CUDA is preferred; without one, selection goes straight to Vulkan and never attempts a CUDA build or prompts for a toolkit. - [ ] A forced model-load failure steps down exactly one rung and retries once; a second failure surfaces the engine error and does not loop. - [ ] English-only configuration pairs with the English-only floor variant; other languages pair with the multilingual variant. - [ ] A manually selected model loads as selected on every path, including models outside the recommended set. - [ ] Behaviour tests cover rung choice from mocked free-memory readings, both backend-order branches, and the single step-down retry, without real GPU hardware. ## Blocked by - [Measure the installed-build performance baseline](https://git.bongbetic.com/xavierk/voculinux/issues/19)
xavierk added the ready-for-agent label 2026-11-05 17:00:36 +00:00
Author
Owner

Merged in integration/spec16 1dd3986383 pushed to fork/integration/spec16 (https://github.com/soubarnak/vocalinux/tree/integration/spec16), review PASS, gates flake8 E9,F63,F7,F82 + black --check + isort --check + mypy src/ clean, pytest 37 passed, npm jest 11 suites/92 tests + lint 0 errors + tsc clean + build OK

Merged in integration/spec16 1dd398638312a3b6e27793d856662e60df73f252 pushed to fork/integration/spec16 (https://github.com/soubarnak/vocalinux/tree/integration/spec16), review PASS, gates flake8 E9,F63,F7,F82 + black --check + isort --check + mypy src/ clean, pytest 37 passed, npm jest 11 suites/92 tests + lint 0 errors + tsc clean + build OK
Sign in to join this conversation.