stop discarding the reason a GGUF would not load, and give every TTS backend the card's path
**Five models "won't load" and llama.cpp had said why.** The load-phase log
callback printed only lines matching a keyword list about layers, buffers and
devices. llama.cpp writes its diagnosis -- an unknown architecture, a missing
tensor -- in none of those words, so it matched nothing and was dropped, while
llama-cpp-python raised its one generic sentence: "Failed to load model from
file: <path>". That string is all the client got, and all the log had.
So every line is now kept in a 60-line ring, lines that look like a diagnosis
are printed whether or not they mention a buffer, and the raised error carries
llama.cpp's own words. A model this build genuinely cannot read is no longer
indistinguishable from one that did not fit, a bad path, or a corrupt download.
The retry ladder stops earlier too. It exists to answer one question -- does it
fit? -- by moving layers to the host, and an attempt with NO layers on the GPU
has already answered it. Three MTP/next-N checkpoints each burned six attempts
down to n_gpu_layers=0, every one failing in a fraction of a second with the
same message: 18 loads whose only effect was to push the reason further up the
log. (What those three have in common is visible in their metadata --
qwen35.nextn_predict_layers=1, blk.N.layer_output_scale.weight -- and with the
reason no longer discarded, the next attempt will say so outright instead of
leaving it to be inferred.)
**XTTS and parler were handed an alias instead of a repo id.** _load_backend
passed `model_path or model_name` to Kokoro and the bare `model_name` to
everyone else, and for a card registered under an alias that name is the alias.
Each isolated worker then failed in its own vocabulary, neither mentioning the
cause:
XTTS: "XTTS venv could not load 'XTTS-v2': ValueError: not enough values to
unpack (expected 4, got 1)" -- coqui splits a model name into
type/lang/dataset/model, and the bare alias has no separator at all.
parler: "parler-tts-mini-multilingual is not the path to a directory
containing a file named config.json" -- the org is missing, so the
real repo is never looked up, and the worker reports a model that IS
cached as one to download first.
Every backend that resolves a checkpoint now gets the path. The XTTS worker's
own translation table is fixed to match on the last path segment as well, since
it is reached by other callers too: it required a "/" before, which is precisely
the case that does not apply.
Co-Authored-By:
Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014T3rZozi1Ehk96NG1WesgC
Showing
Please
register
or
sign in
to comment