-
Stefy Lanza (nextime / spora ) authored
**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
da335aeb