Skip to content

webui: stop overriding engine and package defaults from model_params.json - #415

Closed
CryptVenture wants to merge 1 commit into
0xShug0:mainfrom
CryptVenture:pr/params-default-overrides
Closed

webui: stop overriding engine and package defaults from model_params.json#415
CryptVenture wants to merge 1 commit into
0xShug0:mainfrom
CryptVenture:pr/params-default-overrides

Conversation

@CryptVenture

Copy link
Copy Markdown
Contributor

Split out of #374 as requested: UI defaults that override the engine or the package. The dead controls, the range fixes, the missing groups and the label text are separate PRs.

The problem

Every default in model_params.json is sent on every request. A value here is not a fallback the engine can improve on — it is an override that wins over the model's own default and over anything the package ships.

Group / control UI sent Engine or package value Code
vibevoice.num_inference_steps 10 ddpm_num_inference_steps from the package, 20 in the shipped GGUF src/models/vibevoice/assets.cpp:112
ace_step.shift 3.0 1.0 include/engine/models/ace_step/types.h:42, applied at request_parser.cpp:231
firered-audio-asr.max_new_tokens 512 300, and 1024 when enable_thinking is set src/models/firered_audio/session.cpp:162
personaplex.text_top_k 250 follows top_k when unset src/models/personaplex/request.cpp:111
vevo2.top_k 20 the checkpoint's own generation config src/models/vevo2/session.cpp:898
fireredtts3-instruct-vdesign.guidance_scale 2.0 (the instruct path's value) 1.2 src/models/fireredtts3/session.cpp:159, 170, 179

vibevoice is the sharpest one: the UI silently halved diffusion quality on every request.

The change

Four defaults are omitted rather than corrected, because the right value is not a constant — it is read per package or derived from another option, and any literal here would override it again. Omitting a default is how this file says unset: the option parser skips empty values, so the control renders blank and sends nothing until the user types something.

Two defaults are corrected to the engine's value (ace_step.shift, the voice-design guidance_scale).

Validation

python3 -m json.tool webui/configs/model_params.json   # parses
python3 tools/check_loader_catalog_sync.py
# ok: runtime loaders, model_specs, and model_manager_v2 are in sync

Each value was read from the source line named beside it. These families have no package installed on this machine, so they were not run end to end; a live server was used to confirm the empty-default behaviour renders and sends nothing.

Scope

One data file, six controls. No code change. The generated bundle is deliberately excluded — catalog.ts inlines this file at frontend build time and the bundle is not byte-reproducible, so regenerating it in each PR of this split would make the PRs conflict; happy to send one bundle-regeneration PR once the series lands.

…json

Every default in this file is sent on every request, so a value here is not a
fallback the engine can improve on -- it is an override. Six of them fought
the model.

  - vibevoice num_inference_steps was 10 while the shipped GGUF carries
    ddpm_num_inference_steps 20 (vibevoice/assets.cpp:112), so the UI silently
    halved diffusion quality. The default is omitted rather than corrected:
    the value is read per package, and any literal would override it again.
  - ace_step shift was 3.0 against an engine default of 1.0
    (include/engine/models/ace_step/types.h:42, applied in
    ace_step/request_parser.cpp:231).
  - firered-audio-asr max_new_tokens was 512 against an engine default of 300,
    and sending it at all defeated the model's own bump to 1024 when
    enable_thinking is set (firered_audio/session.cpp:162). Omitted.
  - personaplex text_top_k follows top_k when unset
    (personaplex/request.cpp:111); pinning it to 250 prevented that. Omitted.
  - vevo2 top_k is read from the checkpoint's own generation config
    (vevo2/session.cpp:898); the literal 20 overrode it. Omitted.
  - fireredtts3 voice design carried the instruct path's guidance_scale of 2.0
    instead of its own tuned 1.2 (fireredtts3/session.cpp:159, 170, 179).

Omitting a default is how this file says "unset": the option parser skips
empty values, so the control renders blank and sends nothing until the user
types something.

Validation:
  python3 -m json.tool webui/configs/model_params.json
  python3 tools/check_loader_catalog_sync.py     # in sync
@CryptVenture
CryptVenture force-pushed the pr/params-default-overrides branch from 8c6d251 to 5492bc8 Compare September 3, 2026 01:16
@CryptVenture

Copy link
Copy Markdown
Contributor Author

Closing for now to stay inside the 3-concurrent-PR policy (see the discussion on #422). Nothing is wrong with the change and CI is green on it; I will reopen it as review slots free.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant