Skip to content

[Bug]: Frequent "Setting changed. Reload the model to continue." even after a simple "hi" prompt #54

Closed

Description

@arker2

TUFF version

9.4.0

How did you install TUFF?

Release download or in-app update

Area

Chat and generation

Mac, chip and memory

Mac17,3, Apple M5, 16 GB

macOS version

26.7.1

Model

Not model-specific

Steps to reproduce

Send any prompt, even one as simple as "hi".
If it does not happen on the first one, it happens after a few.

No settings were changed in the meantime.

What you expected

Not the "setting changed" prompt, as nothing is changed by the user.

What happened instead

Frequent "Setting changed. Reload the model to continue."

could also be: "Model setting changed. Reload the model before generating." with no way to reload the model.
In this case, the "Current model" in the bottom left shows "Failed".
After unloading and (re)loading the model, Local Model still shows Failed.

Diagnostic summary (optional)

TUFF 9.4.0
macOS: 26.7.1
Mac: Mac17,3
Chip: Apple M5
Unified memory: 17179869184 bytes
Model: gemma4-heretic
Context: 16384 tokens
Sampling: temperature 0.2, top-k 64, top-p 0.95
Expert cache: 16 slots (lfu)
Prefill: on, chunk 512
Image residency: on-demand

Logs or crash report (optional)

Before submitting

  • I removed credentials, private paths, personal prompts and chat content from this report.

Activity

  1. added
    bugSomething isn't working
    needs-triageNot yet reviewed by a maintainer
    on Oct 16, 2026
  2. arker2 commented on Oct 16, 2026

    @arker2
    Author

    Not sure if it is the same bug:

    1. Send a "hi" prompt -> instant prefill -> answer received.
    2. Get "Model setting changed. Reload the model before generating." -> click reload.
    3. Send "hi" again -> prefill takes several minutes (Prefill nnn/nnn).
  3. Osiriss664 commented on Oct 16, 2026

    @Osiriss664
    Contributor

    @arker2 I think I experienced this too. Both things you describe

  4. Osiriss664 commented on Oct 16, 2026

    @Osiriss664
    Contributor

    @rexmhall09
    I can reproduce the cause on 9.3.0 and 9.4.0 (Apple M5, 16 GB, Qwen 3.6 35B), without the GUI, with a small test that feeds the Auto planner one answer record per round, as recordAutoPerformance does after each answer:

    • Normal memory pressure: the plan stays the same (c16384-e16-d40-p2048) for 12 answers.
    • Memory pressure "warning": after every answer Auto picks a different plan (e8-d0-p128, then p256, p32, p64, then more resident dense layers ...) and never settles.

    The reason seems to be InferencePlanSelector.select: any candidate with an observation under memory pressure or swap growth is dropped (for 15 minutes, AppAutoPerformanceRecords.observations). After each answer finishTerminalRun calls applySettingsProfile, the new plan differs from the loaded one, hasStaleLoadedRuntime becomes true and the "Settings changed. Reload the model to continue." banner shows, although the user changed nothing. A single pressured observation is enough, and swap growth alone counts too. Swap growth is measured system-wide (swapWrittenBytes), so any app swapping during an answer has the same effect. On a 16 GB Mac with a large model this happens often, so it repeats. If every candidate ends up dropped, the selector throws insufficientBudget, which could explain the "Failed" state (I did not reach that point in 12 rounds).

    Possible fix ideas: don't let the re-plan after an answer change the loaded settings (keep them until the next load or new chat), drop a plan only after 2-3 pressured observations or on critical pressure, and count only TUFF's own paging rather than system-wide swap.

    I used an Auto analyses using OPUS 5.5 and Fable 1.1
    Here I am not deep enough into this topic

  5. rexmhall09 commented on Oct 17, 2026

    @rexmhall09
    Collaborator

    Hey, this is fixed in 9.4.1. Auto was re-planning after every answer and changing the settings of the model that was already loaded, which is what made it ask for a reload. Now it keeps the loaded settings and uses what it learned the next time you load the model. Small amounts of system-wide paging no longer count against a plan, and it can't end up with no plan at all anymore (that was the "Failed" state). Thanks for reporting, and thanks @Osiriss664 for finding the cause!

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    area: chatChat, prompts and generation in the appbugSomething isn't workingneeds-triageNot yet reviewed by a maintainer

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions