unsloth/studio/backend
Daniel Han 9a9999f8cd Recover from a ggml unsupported-op abort by restarting on the CPU backend
ggml checks every node against the device's supports_op and calls GGML_ABORT
when one is not implemented, because a single-backend graph has nowhere else to
put it: there is no per-op CPU fallback. The whole sd-server dies with SIGABRT
mid-generation and the user gets "the native image renderer stopped
unexpectedly" with no way forward.

Seen on macos-14 arm64 with FLUX.2-klein-4B Q2_K through the cross-platform CI:
the text encoder is already pinned to CPU, and the abort moved into the denoise
loop instead.

    ggml_metal_op_encode_impl: error: unsupported op 'MUL_MAT' -> ggml_abort
    StableDiffusionGGML::sample -> sample_k_diffusion

A retry on the same backend would abort identically, so the load is restarted
once with --backend cpu (the only flag that changes which backend executes the
graph; --offload-to-cpu moves parameters, not compute) and the generation is
re-submitted. The same checkpoint then renders slower rather than not at all.
Strictly bounded: the signature must carry both the unsupported-op line and
ggml_abort, the device must not already be CPU, and it happens once per load,
so an OOM kill or a genuine crash still surfaces as itself.
2026-07-27 09:08:42 +00:00
..
assets feat(studio): add DoRA support to studio (#7315) 2026-07-24 03:24:16 -07:00
auth Studio: reject whitespace-only passwords (#7341) 2026-07-23 00:44:37 -07:00
core Recover from a ggml unsupported-op abort by restarting on the CPU backend 2026-07-27 09:08:42 +00:00
hub Stop adopting an unknown scoped download, leaking raced blobs and resurrecting deleted clips 2026-07-27 03:26:10 +00:00
loggers Studio: quiet noisy logs, log real progress, and speed up Windows/macOS dataset prep (#7087) 2026-07-15 06:49:52 -07:00
models Guard old diffusers, stream video exports, record conditioned recipes 2026-07-27 07:41:19 +00:00
picker Studio: add configurable model download location (#7274) 2026-07-23 01:34:38 -07:00
plugins Replace standalone Studio wording with Unsloth (#7221) 2026-07-19 00:47:04 -07:00
requirements Merge origin/main into image-generation (PR #6763) 2026-07-25 00:34:38 -07:00
routes Per-load video cancel event, family-gated image picker, cond cache refusal 2026-07-27 08:14:36 +00:00
state Studio: shareable per-checkpoint preview links (#6486) 2026-06-24 06:31:53 -07:00
storage Studio: add Deep Research (#7219) 2026-07-26 23:36:02 -07:00
tests Recover from a ggml unsupported-op abort by restarting on the CPU backend 2026-07-27 09:08:42 +00:00
utils Merge branch 'main' of https://github.com/unslothai/unsloth into r6763 2026-07-27 07:15:43 +00:00
__init__.py Final cleanup 2026-03-12 18:28:04 +00:00
_platform_compat.py Reduce and tighten code comments and docstrings repo-wide (#6095) 2026-06-08 23:09:51 -07:00
cloudflare_tunnel.py Studio: fix stuck composer prompt on first send and unreachable --secure Cloudflare links (#7340) 2026-07-23 00:39:14 -07:00
colab.py fix(studio/colab): fix OutStream startup crash and tidy the notebook cards (#7404) 2026-07-25 04:11:03 -07:00
main.py Merge branch 'main' of https://github.com/unslothai/unsloth into r6763 2026-07-27 07:15:43 +00:00
mcp_server.py Replace standalone Studio wording with Unsloth (#7221) 2026-07-19 00:47:04 -07:00
run.py fix(studio): support hostname-based enterprise proxies (#7416) 2026-07-26 02:53:00 +01:00
startup_banner.py Replace standalone Studio wording with Unsloth (#7221) 2026-07-19 00:47:04 -07:00