unslothai/unsloth · error · ExactResumeResourcesUnavailable
{str(exc)}
Error message
{str(exc)} What it means
HTTP 409 wrapping ExactResumeResourcesUnavailable, raised when resolve_training_model_load_target or effective_training_load_in_4bit cannot reproduce the exact resources (model load mode, quantization setup) a resume checkpoint was created with. The route only translates the exception; the detail text comes from str(exc) of the underlying core-training exception. 422-style client fixes are usually impossible — the environment or checkpoint pin is the problem.
Source
Thrown at studio/backend/routes/training.py:1503
}
# Latest-sidecar models size and train 16-bit (same flip as chat load): 4-bit is disabled for
# brand-new architectures, so VRAM checks must not underestimate a load the worker refuses.
from core.training.provenance import (
ExactResumeResourcesUnavailable,
effective_training_load_in_4bit,
)
if training_kwargs["load_in_4bit"]:
from core.training.training import resolve_training_model_load_target
try:
model_load_target = await asyncio.to_thread(
resolve_training_model_load_target,
training_kwargs,
)
except ExactResumeResourcesUnavailable as exc:
raise HTTPException(status_code = 409, detail = str(exc))
try:
effective_load_in_4bit = await asyncio.to_thread(
effective_training_load_in_4bit,
training_kwargs,
model_load_target,
training_kwargs["hf_token"] or None,
)
except ExactResumeResourcesUnavailable as exc:
raise HTTPException(status_code = 409, detail = str(exc))
if not effective_load_in_4bit:
training_kwargs["load_in_4bit"] = False
logger.info(
"Latest-transformers sidecar active for %s - sizing and "
"training in 16-bit (4-bit is disabled for brand-new "
"architectures)",
model_load_target,
)
View on GitHub (pinned to 203007d190)
Solutions
- Read the detail message: it names the exact missing resource (revision id, cached model pin, or load mode).
- Restore the missing resource: re-download the pinned base model revision or re-enable the 4-bit runtime that the checkpoint requires.
- If the pin is unrecoverable, start a fresh run instead of resuming, or resume from a different checkpoint whose resources still exist.
- If a sidecar install was mid-swap, retry after it completes (see SidecarSwapInProgress 409).
Defensive patterns
Strategy: retry
Try / catch
try { await startTraining(payload) } catch (e) {
if (e.status === 409 && e.detail) {
// detail names the missing resource (pinned revision / cached model / load mode)
logWarn('Resume resources unavailable:', e.detail)
if (await askUser('Start fresh instead of resuming?')) return startTraining({...payload, resume_from: null})
}
throw e
} Prevention
- Keep the pinned base-model revision cached (do not prune HF cache mid-project).
- Record which runtime (transformers version, 4-bit mode) produced each checkpoint so resume environments can be matched.
- Treat 409-on-resume as an environment mismatch signal, not a transient network error.
When it happens
Trigger: POST /training/start with a resume checkpoint whose original model load configuration (e.g. 4-bit quantized base) cannot be satisfied: the pinned base model revision was removed, the 4-bit runtime is unavailable, or the cached model pin no longer matches.
Common situations: Resuming after the transformers sidecar was swapped/upgraded, after the HF cache was pruned, or after the pinned model repo revision (specific sha) disappeared from the Hub.
Related errors
- This LTX checkpoint stores scaled fp8 weights, which this lo
- The training checkpoint at '{directory}' could not be read;
- Checkpoint tensor '{name}' has shape {tuple(saved.shape)} bu
- This run has {len(trainable)} trainable tensors and the chec
- This checkpoint does not record which optimizer wrote its st
AI-assisted analysis of unslothai/unsloth@203007d190 (2026-08-15).
Data as JSON: /api/errors/1a45dda3346c627e.
Report an issue: GitHub.