Fix diffusion flag leak, sd-cli orphan, and native family fallback
Six correctness fixes to the diffusion stack, found reviewing the merged phase PRs on this branch: - load_pipeline: restore the try/finally guard around the speed/quant/ placement span. A failure after apply_speed_optims (e.g. OOM in quant or the memory plan) left TF32/cudnn flags flipped process-wide and the half-built pipe resident in VRAM. Now restores the flags and frees VRAM on a failed load. - sd-cli Popen binds to the parent (PR_SET_PDEATHSIG via child_popen_kwargs, matching the llama.cpp sites), so a parent crash mid-generation can't orphan it holding VRAM/RAM. - Native begin_load uses the filename-fallback family detector the route validated with, so a local .gguf whose family keyword lives only in the basename no longer dead-ends 400 on a no-GPU host. - Generate error handler matches exact sentinel messages instead of the "cancelled" substring, fixing a 409 misroute and a raw sd-cli output leak. - find_sd_cpp_binary honors UNSLOTH_STUDIO_HOME/STUDIO_HOME like the installer, so a custom Studio home resolves. - Drop the redundant _tf32_prev bookkeeping; snapshot/restore_backend_flags is now the single owner of the TF32/cudnn restore. The two client-state messages are now shared constants so the 409-vs-500 contract can't drift. Adds a regression test for each behavioral fix.
This commit is contained in:
parent
692d3c1975
commit
d0c5cf6e07
9 changed files with 215 additions and 127 deletions
|
|
@ -219,6 +219,17 @@ def test_begin_load_requires_gguf_filename():
|
|||
b.begin_load("unsloth/Z-Image-Turbo-GGUF")
|
||||
|
||||
|
||||
def test_begin_load_resolves_family_from_filename_only(monkeypatch):
|
||||
# A local .gguf pick whose family keyword lives only in the basename (parent dir
|
||||
# carries none) must resolve via the same filename fallback the route validated
|
||||
# with -- not dead-end with "Could not infer" on a native (no-GPU) host.
|
||||
b = SdCppDiffusionBackend(engine = _FakeEngine())
|
||||
monkeypatch.setattr(b, "_run_load", lambda **kwargs: None) # skip the download thread
|
||||
b.begin_load("/models/gguf-store", gguf_filename = "Z-Image-Turbo-Q4_K_M.gguf")
|
||||
# Validation passed (no ValueError) and the family was inferred from the filename.
|
||||
assert b._loading is not None and b._loading.repo_id == "/models/gguf-store"
|
||||
|
||||
|
||||
def test_ensure_binary_returns_found(monkeypatch):
|
||||
monkeypatch.setattr(bk, "find_sd_cpp_binary", lambda: "/usr/bin/sd-cli")
|
||||
assert ensure_sd_cpp_binary() == "/usr/bin/sd-cli"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue