github unslothai/unsloth v0.1.904-beta
Train your own Decision model

6 hours ago

Turn any text or vision LLM into a Jev-style decision model in Unsloth, with decision accuracy going from 30% to 80%. Train, test, export and serve decision models directly from Unsloth. Also included: native ComfyUI models, diffusion improvements and a better Browser in Desktop.

Highlights

  • Turn any model into a Jev-style decision model. Accuracy 30% to 80%
  • Load ComfyUI diffusion models natively in Unsloth
  • Faster + more accurate diffusion with INT8 ConvRot and more
  • Better Browser in Desktop with many bug fixes
  • Sandboxing with Bwrap for Linux, Seatbelt for Mac and MXC for Windows
dt-demo.mp4

Decision models

  • Train any text or vision LLM as a Jev-style decision model using QLoRA.
  • Test trained models directly from the Decision API settings.
  • Make decisions with confidence scores for every option.
  • Export Clef models with Qwen3.5 backbones and Laya models to GGUF.
  • Serve supported decision models through llama.cpp, including models that understand images.
  • Save and resume smaller adapter and decision-head checkpoints.
  • Guide at https://unsloth.ai/docs/basics/train-your-own-decision-model-with-unsloth
image

Diffusion + ComfyUI

  • Run supported ComfyUI image and video models directly from Hugging Face.
  • Unsloth now recognises ComfyUI checkpoints and local model folders automatically.
  • Use your ComfyUI text encoders and VAEs in Unsloth.
  • Run Krea-2, HunyuanImage-2.1 and Wan2.2 expert pairs, plus ComfyUI NVFP4 and MXFP8 models.
  • Qwen-Image-2.1 now keeps more full-precision image detail with INT8 ConvRot enabled by default.
  • Faster Qwen-Image-2.1 ConvRot generation on supported NVIDIA GPUs.

Training + performance

  • Train Qwen3.5-35B-A3B up to 4.1x faster and Qwen3-30B-A3B up to 3.3x faster with QLoRA on A100 and RTX PRO 6000.
  • Improved sample packing for gated-delta, Mamba2 and short-convolution models.
  • Train prompt and completion message lists as one conversation.
  • Vision datasets now keep each row's own question.
  • Chat exports and training data now include the system prompt.

Browser + Desktop

  • Ask about open pages in the Desktop Browser.
  • Confirm Browser downloads and choose where files are saved.
  • Reorder pinned pages in the sidebar like chats.
  • Search continues past unusable results and can fall back to Wikipedia.
  • Reply citations such as [1] now open as links.
  • Pick, pin or unload RAG embedding models directly from the RAG menu.

Sandboxing

  • Bwrap on Linux, Seatbelt on Mac and MXC on Windows sandbox code the model runs.
  • View sandbox status and choose protection levels in Settings.

Download Unsloth Desktop

Unsloth Desktop is free and open source. Download it for:

Platform Link
Windows Download
macOS Download
Linux x64 / Ubuntu (deb) Download
Linux ARM64 / Ubuntu 24.04+ (deb) Download
Linux x64 (AppImage) Download
Windows ARM64 Download

What's Changed

  • Bump install.sh / install.ps1 pins to unsloth>=2026.10.1, unsloth-zoo>=2026.10.1 by @danielhanchen in #12869
  • Studio: list embeddinggemma-2 first in the embedding model picker by @shimmyshimmer in #12870
  • Repair three checks that went red on main with the 10-06 Studio merges by @danielhanchen in #12868
  • Studio: run ComfyUI-format video quants on the int8 / fp8 runtimes by @danielhanchen in #12851
  • Studio: free PyAV's per-thread scalers before a fork so preexec_fn spawns still exec by @danielhanchen in #12863
  • Tests: give the setup.ps1 download progress pwsh its own startup cache by @danielhanchen in #12882
  • Studio: fill the Hebrew and Swedish strings that left the strict i18n check red on main by @danielhanchen in #12881
  • Baseline the eight unsloth-zoo 2026.10.1 findings after review by @danielhanchen in #12884
  • Support every PEFT init_lora_weights option, with fast PiSSA and MiCA init by @Suchitra-idu in #6879
  • Sandbox test: wait for the cache scan workers before counting them by @danielhanchen in #12896
  • Studio: keep browser panel tooltips, toasts and menus visible over desktop web pages by @oobabooga in #12895
  • Studio: continue searching past unusable results and add a Wikipedia fallback by @oobabooga in #12892
  • Studio: list every Transcribe ASR model in Voice settings by @Etherll in #12898
  • Frontend test: give the cold Vite SSR render in reasoning-source-render room on a loaded runner by @danielhanchen in #12903
  • Run shell suites and Windows browser checks in parallel by @oobabooga in #12899
  • Studio: add a New badge beside Audio in the sidebar by @Etherll in #12891
  • Composer settings driver: poll the submitted list instead of reading it once after the key press by @danielhanchen in #12920
  • Studio: support current native builds and preserve CPU asset selection by @oobabooga in #12902
  • Studio: pick the quant of a GGUF dictation model in Voice settings by @Etherll in #12900
  • fix(studio): stop a managed runtime when the client drops its stream by @goodmai in #12266
  • Studio: train prompt/completion message lists as one conversation by @NilayYadav in #12910
  • Studio: keep each row's own question when training on a vision dataset by @NilayYadav in #12909
  • Studio: train transparent PNG and WebP images on white instead of black by @NilayYadav in #12908
  • Use the requested max_seq_length for encoder embedding models by @NilayYadav in #12915
  • Studio: show the LAN address on the API page when LAN access is on by @NilayYadav in #12906
  • Studio: hide the negative prompt on image models that ignore it by @NilayYadav in #12914
  • Keep the notebook and saved model when unsloth-run runs a URL by @NilayYadav in #12907
  • Studio: drag pinned pages in the sidebar like chats by @shimmyshimmer in #12927
  • Studio: Ask about this page on every page, desktop included by @shimmyshimmer in #12926
  • Docker: allow unsloth_root_shim.py into the build context by @danielhanchen in #12929
  • Tauri transport test: start the late backend after the old ladder is spent, not at 3s by @danielhanchen in #12930
  • Studio: simpler icons for the audio pages, one audio icon in the Library by @Etherll in #12890
  • Desktop contract: count #12927's scaled sidebar row by @danielhanchen in #12931
  • fix(studio): preserve skill mention intent and denied preload context by @wasimysaid in #12841
  • Studio: embedding model picker, pins and eject in the RAG menu by @shimmyshimmer in #12875
  • install-kernels: skip mamba_ssm below sm80 by @danielhanchen in #12921
  • Gemma-4 26B/31B: train with the empty thought channel on non-thinking turns by @danielhanchen in #12867
  • Studio: try a decision from the Decision API settings by @NilayYadav in #12916
  • Studio: confirm browser downloads, choose the download folder by @shimmyshimmer in #12832
  • Studio: default Qwen-Image-2.1 int8 to the hosted ConvRot file, with shared rotations by @danielhanchen in #12874
  • Studio: recognise ComfyUI checkpoints by name and header, and list ComfyUI model folders by @danielhanchen in #12878
  • studio: install the gstreamer recording plugins with the deb package by @mahiatlinux in #12905
  • Studio: turn [1]-style citations in replies into links by @NilayYadav in #12912
  • Studio: include the chat's system prompt in exports and training data by @NilayYadav in #12913
  • studio: guard project submits during IME composition by @mahiatlinux in #12924
  • studio: scope speech download cancellation to its attempt by @mahiatlinux in #12925
  • studio: keep general settings from restoring stale tokens by @mahiatlinux in #12922
  • Studio: show when Windows MXC already runs in the built-in container by @danielhanchen in #12938
  • Studio: key the diffusion compile cache by the loaded quant variant by @danielhanchen in #12887
  • Studio: rebuild an image / video GGUF from the cached copy when only its header changed by @danielhanchen in #12928
  • Scope UNSLOTH_HIGH_PRECISION_LAYERNORM to the load that sets it by @danielhanchen in #12873
  • fix(studio): honor llama.cpp update dismissal and snooze by @wasimysaid in #12934
  • Keep flash attention from reading Qwen3.5 mRoPE position ids as packed sequences by @danielhanchen in #12856
  • Studio: load Wan2.2-A14B expert pairs and tell LTX-2.3 distilled from dev by its weights by @danielhanchen in #12872
  • Train a decision model from a plain language model by @danielhanchen in #12772
  • Train any text or vision LLM as a Clef decision model from Studio, with FastDecisionModel.predict and adapter saves by @danielhanchen in #12876
  • Studio: install transformers releases needing hub >= 1.31, and transformers main after consent by @danielhanchen in #12871
  • Correct sample packing for hybrid models (gated-delta, Mamba2, short conv) by @kfastino in #9812
  • Studio: read replies aloud without markdown symbols by @AzizMuminov in #12598
  • Studio: finish an update with the setup script it installed by @Etherll in #12897
  • Serve decision models through llama.cpp in Studio, and export them to GGUF by @danielhanchen in #12939
  • studio: fix live monitor background in light mode by @mahiatlinux in #12904
  • Studio: show the hosted text encoder download in image load progress by @Etherll in #12894
  • Studio: update the audio.cpp runtime from the in-app update by @Etherll in #12893
  • Settings contract: read the embedding picker's stacking classes inside cn() too by @danielhanchen in #12945
  • install-kernels: install mamba_ssm on sm75 with Triton 3.4+ by @danielhanchen in #12944
  • Studio: load Wan2.2 hosted FP8 / INT8 files, and hosted files under low_vram by @danielhanchen in #12888
  • Studio: load a single .safetensors DiT from any Hugging Face repo by @danielhanchen in #12879
  • fix(studio): remember per-GPU layer ratios by @Imagineer99 in #12774
  • Studio: load ComfyUI Krea-2 and HunyuanImage-2.1 single-file DiTs by @danielhanchen in #12885
  • Studio: load ComfyUI text encoder and VAE files beside a single-file DiT by @danielhanchen in #12883
  • Studio: load ComfyUI nvfp4 and mxfp8 DiT single files by @danielhanchen in #12877
  • Studio: keep $PATH, $HOME and other shell variables as text, not maths by @NilayYadav in #12911
  • Studio: price the context meter off a tool loop's final pass, not the whole turn's completions by @sumingwang233 in #12889
  • Studio: open Try a decision with the trained model after Use in Decision API by @NilayYadav in #12953
  • Studio: harden browser downloads after #12832 by @danielhanchen in #12943

New Contributors

Full Changelog: v0.1.903-beta...v0.1.904-beta

Don't miss a new unsloth release

NewReleases is sending notifications on new releases.