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

  1. Read the detail message: it names the exact missing resource (revision id, cached model pin, or load mode).
  2. Restore the missing resource: re-download the pinned base model revision or re-enable the 4-bit runtime that the checkpoint requires.
  3. If the pin is unrecoverable, start a fresh run instead of resuming, or resume from a different checkpoint whose resources still exist.
  4. 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

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


AI-assisted analysis of unslothai/unsloth@203007d190 (2026-08-15). Data as JSON: /api/errors/1a45dda3346c627e. Report an issue: GitHub.