{{ message }}
Tags: unslothai/unsloth
Tags
Merge main into studio-mmproj-fit Three conflicts, all small. The llama_cpp.py one is two independent additions at the same spot, the projector pin state and the Metal context refusal; both are kept. The mmproj-fallback test file is likewise both sides' tests, main's loadFallbackNotice coverage alongside the wording assertion here. image-input-support.ts takes main's line. The missing .ts on that runtime import is what made the frontend suite red, and #9192 has since fixed it upstream, so the commit carrying it here is redundant and only the explanatory comment differed. Dropped rather than re-added as diff noise. The cpu_offload reword is still only on this branch, so the test that pins it stays.
Offer the media pickers only what the host can run, and name the H3 s… …peed gap (#8822) * Offer the media pickers only what the host can run, and name the H3 speed gap The Video picker showed MiniMax H3's bf16 pipeline row on Apple Silicon, where loading it always fails: video.py refuses every modular Diffusers workflow on Metal because the auto CPU offload needs mem_get_info, which torch.mps does not expose. The row was only ever deprioritised by the size filter, so on any sort other than Recommended it stayed clickable and always 400d. Classify the host as accelerated, gguf-only or unknown and offer curated artifacts accordingly, so a host that can only run the native engine sees only the GGUF rows. Capability is kept apart from size: curatedArtifactFitsDevice still answers whether there is room, and a 128 GB Mac has room for a model it cannot place. The unknown state matters because the GPU hook opens at budgetKnown false, and reading that as CPU-only would blink every non-GGUF row out and back on a real GPU host. On an accelerated host the two H3 rows now read Fast FP8 and Slow. The pair differ by roughly 10x and the old names said nothing about it. Keyed on the two H3 ids rather than on format, since most non-GGUF rows are plain bf16 and Auto precision resolves to int8 or bf16 on cards without fp8. Downloaded weights keep their row either way. * Hide only the artifact the backend refuses, not every non-GGUF row The filter keyed on format, so a gguf-only host lost every non-GGUF artifact. The backend refuses far less than that: modular_workflow is set on one family, MiniMax H3, and video.py raises for it on MPS alone. Everything else places fine there. video_capability() certifies Apple Silicon, the diffusion target has a first-class MPS bfloat16 path, and the STT rows run through the whisper.cpp sidecar whatever format the catalog labels them. Measured, the format rule dropped 20 of 32 image rows and 7 of 9 video rows, taking six image families and four video families out of the picker entirely. It also reached the Audio page, which passes AUDIO_CATALOG into the same picker: all five Whisper rows went, on the two host classes where the sidecar makes them the primary path. pickers.tsx already carries a comment about this exact trap, from the last time a GGUF-only rule hid every non-GGUF model. Key it on the repo id instead, the way the speed suffix already keys its own H3 case. Video now drops one row on a gguf-only host and image and audio drop none. * Filter curated search results by host too Search reaches the live Hub, so a query re-landed the row the seed and Recommended filters had just dropped. The Mac format check in that chain admits safetensors, so MiniMaxAI/MiniMax-H3 came back clickable and was still refused at load. Same predicate as the other two lists, downloaded exception included.
PreviousNext
