github unslothai/unsloth v0.1.810-beta
Docker + Multi User + AMD Support

4 hours ago

We're releasing our new updated Docker image along with multi-user accounts, RDNA1+2, FP8/INT8 diffusion support, ARM64 CUDA Windows support and many training, GRPO and inference improvements

Highlights:

  • New Docker with NVIDIA & AMD support: Guide
  • Multi user accounts with isolation Settings > Accounts
  • INT8/FP8 Image Diffusion inference - 2x faster
  • ARM64 Windows CUDA support for training, inference
  • GRPO improvements - Qwen3.5 support + lastest TRL, vLLM support
  • RDNA1, RDNA2 support for AMD
  • Better Windows NVIDIA GPU detection and recovery

Updated Docker image

  • Updated the main CUDA image and Studio setup, removed bundled caches, and restored Unsloth's training patches on GPU hosts.
  • Studio data persists on a volume without pinning application code. Updates, generated passwords, configurable ports, and package preservation are improved.
  • Added an AMD ROCm image alongside CUDA for supported Linux hosts.

Multi-user accounts

  • Create accounts from Settings > Accounts, with one-time setup codes and individual passwords.
  • Keep each account's work separate while sharing a loaded model when settings match. Existing single-account behavior stays unchanged.

Chat + reasoning

  • Edit, reorder, and steer queued prompts, including while a local model loads.
  • Added GGUF reasoning budgets, configurable chat width, desktop interface scaling, and a more compact composer.
  • Improved long-reasoning responsiveness, chat-history preservation, and handling of tool-generated files and images.

Hardware + inference

  • MLX gains video input, optional MoE and decode optimizations, and more reliable multimodal chats.
  • Improved GGUF memory estimates, DGX Spark handling, NVIDIA detection, NVLink checks, and user-selected GPU ordering.
  • Added native Windows ARM64 desktop packaging, Qwen3.5 fast_inference, and Ascend NPU device detection.

Research + API

  • Deep Research better preserves unfinished reports, handles JSON output, and reports runs without evidence. Scanned PDF uploads gain a local OCR fallback.
  • Improved provider reasoning controls, MCP compatibility, tool calling, and streamed error reporting.
  • Added video input on /v1/chat/completions and access to installed Ollama models through the API.

Training + installation

  • Added Data Recipes dataset downloads and fixed 16-bit fine-tune exports, LoRA saves, and Push to Hub.
  • Improved dataset handling, training memory estimates, and checkpoint saving on container shutdown. Core fixes cover normalization, RoPE, Q-GaLore, and distributed device selection.
  • More reliable Windows installs, GPU package repair, dependency caching, and verified offline installs.

Security + tool execution

  • Strengthened credential protection and tool-call validation, with approval requests for file access outside the sandbox.
  • Added preview OS-level tool sandboxing on supported Linux and macOS hosts. Network access remains unrestricted, and automatic mode retains existing safeguards when OS isolation is unavailable.

What's Changed

  • Bump install.sh / install.ps1 pin to unsloth>=2026.9.4 by @danielhanchen in #10640
  • Stop the uninstaller stranding old installs, and deleting directories that are not ours by @danielhanchen in #10471
  • Studio: correct the keyless tunnel copy, which promised more than the code does by @danielhanchen in #9690
  • fix(studio): keep GGUF compaction for multimodal chats by @Biotrioo in #10158
  • Fix Deep Research JSON output on MLX and Transformers by @Imagineer99 in #10611
  • Fold duplicated backend, hub and package tests into parametrized runs by @danielhanchen in #10499
  • Studio: reuse the named CLI API key across studio run by @claxman in #10608
  • Unbreak main: compare the autoload guard's conditions, not its exact text by @danielhanchen in #10654
  • Fix scanned PDF uploads with local OCR fallback by @Imagineer99 in #10620
  • Studio: size a local model by one copy of its weights by @NilayYadav in #10558
  • Studio: keep the LoRA rank, alpha and variant when leaving CPT by @NilayYadav in #10555
  • Studio: stop a generation recovery deleting the turn's tool calls by @shimmyshimmer in #10584
  • Studio: only strip a valid trailing IMAGES/RAG_SOURCES envelope by @NilayYadav in #10668
  • Read the installers' own code, not the scripts they emit by @danielhanchen in #10701
  • Raise the startup bundle budget to where main actually is by @danielhanchen in #10702
  • Studio: gate GGML_CUDA_P2P on a confirmed NVLink fabric, not a product name by @danielhanchen in #10646
  • Studio: stop pricing an Anthropic image by its base64 length in KV admission by @NilayYadav in #10669
  • Block markerless execution-class tool-call promotion in Studio by @danielhanchen in #10507
  • Studio: fail a Deep Research run when no step gathered any evidence by @NilayYadav in #10663
  • Studio: keep literal text visible when the request turns thinking off by @NilayYadav in #10662
  • Studio: keep an uploaded document's own name instead of replacing it with underscores by @NilayYadav in #10667
  • CI: trigger Studio smokes on what they observe, run install matrices as a PR subset, fold Chat UI shards by @danielhanchen in #10689
  • Windows No Compiler CI: see the intermediates the compiler cleaned up by @danielhanchen in #10711
  • Studio: keep the output a timed-out python or terminal call already produced by @NilayYadav in #10664
  • Studio: fit the composer on narrow screens, and scale the greeting with it by @shimmyshimmer in #10694
  • Studio: recover the GPU capacity nvidia-smi will not report on a DGX Spark by @danielhanchen in #10703
  • fix: materialize strided gradients before RMSNorm backward by @MrCapricornLiu in #10617
  • fix: exclude padded logits from softcapped cross entropy by @MrCapricornLiu in #10616
  • Studio: keep a chat working after switching to a model without tool support by @NilayYadav in #10454
  • Reduce comment volume across studio/backend/core by @danielhanchen in #10502
  • Reduce comment volume across the studio frontend and backend routes by @danielhanchen in #10503
  • Reduce comment volume across the installers, CLI, unsloth package and backend utilities by @danielhanchen in #10504
  • Cover the restore of every variable the install.ps1 handoff block saves by @danielhanchen in #10566
  • Studio: stop refusing a diffusion load on a DGX Spark against its own download by @danielhanchen in #10705
  • Refuse to format when ruff cannot run, and stop the fixed-point guard skipping itself away in CI by @danielhanchen in #10726
  • Let a Deep Research handoff survive a preamble beside the tool call by @BluePlexus in #10677
  • Keep the surrounding {{ }} when stripping bos_token from a chat template by @vineethsaivs in #10682
  • Studio: honor the vision run's gradient checkpointing setting by @NilayYadav in #10666
  • Send the thinking toggle to a "custom" provider by @BluePlexus in #10678
  • MLX CI: give the llama-server health wait the same 180s budget as the other health waits by @danielhanchen in #10674
  • Unbreak main: raise the startup transfer budget to the margin it shipped with by @danielhanchen in #10700
  • Upload merged models to the requested branch or pull request by @NilayYadav in #10760
  • Studio: keep long reasoning responsive with bounded pages by @wasimysaid in #10717
  • Studio: narrower desktop window and a sidebar edge trigger by @shimmyshimmer in #10706
  • Studio: Show Anthropic web search errors by @NilayYadav in #10757
  • Studio: Keep images returned by tools by @NilayYadav in #10762
  • Studio: Show an error when chat history cannot be restored by @NilayYadav in #10761
  • fix(dataprep): don't append EOS to full-size mid-stride chunks by @caiotheodoro in #10734
  • Windows installer: fix installs when the user profile path contains a space by @oobabooga in #10765
  • Stop capping unsloth chat at 512 tokens and the transformers/MLX paths at 2048 by @NilayYadav in #10665
  • Reject conflicting model loading settings by @NilayYadav in #10756
  • Docker Studio: stop disabling Unsloth's TRL patches on GPU hosts by @oobabooga in #10825
  • Unbreak main, and fix the five causes reddening the PR backlog by @danielhanchen in #10832
  • Stop a comment in unsloth_zoo from silently disabling the patched SFT trainer by @danielhanchen in #10854
  • Ask the vllm-free import tests in a clean interpreter, not in sys.modules by @danielhanchen in #10855
  • Re-format the two lines that drifted, so pre-commit stops failing on main by @danielhanchen in #10715
  • Studio: per-account isolation for shared installs and the desktop app by @danielhanchen in #10588
  • Use the short RoPE factor at exactly original_max_position_embeddings by @vineethsaivs in #10681
  • fix: do not default-on tool-call nudging on the external loop by @apurv-1 in #10685
  • Track vLLM tags through 0.29, and pin the bitsandbytes symbols by @danielhanchen in #10858
  • Give Repo tests (CPU) a budget it fits in, and name the patcher when it falls back by @danielhanchen in #10862
  • Studio: keep a stopped prompt in later chat turns by @claxman in #10625
  • Studio: accept zero-based shard numbering in cached model weights by @JohannesGezachew in #10857
  • Stop the CUDA spoof from deciding whether a GPU test skips by @danielhanchen in #10864
  • Studio: read the NVLink fabric from NVML instead of a 1.2s nvidia-smi shell-out by @danielhanchen in #10720
  • Studio: stop the log redactor backtracking quadratically on a cut ANSI sequence by @danielhanchen in #10721
  • Ask the spoof-survival question in a subprocess, not in the worker by @danielhanchen in #10866
  • Studio: prefill MLX VLM prompts at mlx-vlm's default step, fix cold-path position ids by @Lyxot in #10778
  • Pair the linearity measurements, so a busy runner stops reading as quadratic by @danielhanchen in #10868
  • Studio: add a Download all logs button to Settings > Logs by @danielhanchen in #10719
  • Speed up the three slowest tests without changing what they check by @danielhanchen in #10867
  • Clear the metadata directory cache before scanning installed records by @xy200303 in #10797
  • Studio: Keep API keys from training with the server's Hugging Face login by @NilayYadav in #10809
  • Studio: Export a full fine-tune as a real 16-bit model by @NilayYadav in #10808
  • Studio: Show an error when Anthropic fails a reply partway through by @NilayYadav in #10811
  • Studio: Let the agent run a command again after it edits a file by @NilayYadav in #10810
  • Studio: Stop at the requested stop text on transformers models by @NilayYadav in #10812
  • Stop clean_text deleting every non-ASCII character by @vineethsaivs in #10741
  • Let a duplicate tool call re-run after an intervening call (#10792) by @deepspace28 in #10846
  • fix(studio): avoid resident GGUF mappings for Windows no-reserve loads by @Imagineer99 in #10618
  • Studio: Estimate training memory correctly so the chat model can stay loaded by @NilayYadav in #10815
  • Name the method on the uploaded model card by @vineethsaivs in #10816
  • Replay tool-call arguments in the order the model generated (#10791) by @deepspace28 in #10845
  • Fix fp8 block dequant fallback on pre-sm89 GPUs by @xy200303 in #10790
  • Studio: Stop Deep Research deleting links from code in its report by @NilayYadav in #10814
  • Fix Q-GaLore quantization of single-sign groups by @vineethsaivs in #10841
  • Fix RAG dense retrieval on older SQLite runtimes by @alkinun in #10861
  • Docker: drop the baked uv cache from the Studio image and correct its labels and Hub page by @oobabooga in #10827
  • installer: the adaptive uv cache selection was unreachable on every writable install by @danielhanchen in #10626
  • Studio: Stop training the word None into CSV rows with blank cells by @NilayYadav in #10813
  • Skip the backgrounded-raw-bind prompt test on Windows by @danielhanchen in #10885
  • Fail closed when Studio exposure prompt is aborted by @wasimysaid in #10638
  • Docker Studio: keep Studio's data on a volume without pinning its code by @oobabooga in #10829
  • Docker: stop JupyterLab from silently taking Studio's port, and correct three host-script messages by @oobabooga in #10828
  • Advance the Q-GaLore Adam step counter once per update by @vineethsaivs in #10842
  • Run the Q-GaLore tests from the normal pytest job, not a workflow of their own by @danielhanchen in #10898
  • Accept the model transformers 5.x passes to create_optimizer by @danielhanchen in #10887
  • Fix three CI failures that were not the PRs they failed on by @danielhanchen in #10896
  • Pass Q-GaLore optimizer options to bitsandbytes by name by @vineethsaivs in #10874
  • Split Repo tests (CPU) into three shards, and take the shell suite off its critical path by @danielhanchen in #10882
  • Stop three studio meta-tests re-cutting and re-walking the same sources by @danielhanchen in #10886
  • Give every pwsh call in the suite the private startup cache by @danielhanchen in #10900
  • Share one child interpreter, and one notebook prototype, where the work is identical by @danielhanchen in #10893
  • installer: stop condemning a warm uv cache for a directory uv never writes by @danielhanchen in #10899
  • perf(studio): integrate optional MLX MoE and decode optimizations by @Lyxot in #10733
  • Studio: skip dependency-pass steps whose evidence holds, and keep that evidence on Windows by @danielhanchen in #10649
  • Allow fast_inference for Qwen3.5 by @danielhanchen in #10891
  • Studio: add Server default for vLLM Min P by @Etherll in #10623
  • Unbreak main: three files drifted out of the formatter, and one reads a file with the platform encoding by @danielhanchen in #10913
  • The install suite spends 1940s resolving the same few thousand paths over and over by @danielhanchen in #10916
  • Measure whether the runner label actually changes the queue wait by @danielhanchen in #10914
  • Studio: cap accelerate below 1.15 on Windows, where 1.15 breaks all ROCm training by @LeoBorcherding in #10819
  • Studio: read a video clip on MLX chat models by @Lyxot in #10480
  • Move the two highest-fire workflows off the ubuntu-latest label onto the same image by @danielhanchen in #10918
  • Add Agent Skills support to Studio by @wasimysaid in #10247
  • Studio: two edge failures the dependency-pass change left behind by @danielhanchen in #10915
  • Studio: keep a verified install when PyPI is unreachable and UV_OFFLINE is set by @danielhanchen in #10651
  • Studio: adapt macOS tray artwork to the menu bar appearance by @wasimysaid in #10880
  • Prevent agent startup from waiting on model catalog scans by @Imagineer99 in #10728
  • Studio: drop MediaPageLink tooltip below titlebar controls on Windows by @Souravrajvi0 in #10253
  • use the bundled icon first, and retry the cloudflared download by @NilayYadav in #10680
  • Docker Studio: keep unsloth-studio-update --ref from leaving Studio dead by @oobabooga in #10826
  • Studio: answer current llama.cpp, whisper.cpp and Node installs from their markers by @danielhanchen in #10648
  • Studio: do not lose a DGX Spark's memory pool to the page cache when fitting context by @danielhanchen in #10704
  • Studio: block sandbox bypass via command-position substitutions in terminal tool by @veriepicc in #10860
  • Honor user tensor_split when auto tensor-parallel planner returns an even split by @chakshu-dhannawat in #10884
  • fix(studio): share Run settings draft across sidebar and model picker by @Souravrajvi0 in #10851
  • Stop ten test assertions from measuring the runner instead of the code by @danielhanchen in #10897
  • Use the dynamic cache for Gemma multimodal generation by @danielhanchen in #10903
  • feat(docker): add an AMD ROCm image, for RDNA2 through RDNA4 and CDNA by @LeoBorcherding in #10820
  • Drop an MTP sidecar llama-server cannot load as --model-draft by @Lyxot in #10197
  • Studio: run the formatter on llama_cpp.py by @danielhanchen in #10926
  • Studio: Use saved Hugging Face login for model downloads by @NilayYadav in #10758
  • Shard the Python 3.13 backend pytest leg three ways by @danielhanchen in #10920
  • Run the unsloth_zoo suite beside Core instead of inside it by @danielhanchen in #10919
  • Release GGUF context while tool approval is pending by @Imagineer99 in #10673
  • Studio: add Download Dataset button for Data Recipes by @Souravrajvi0 in #10708
  • Studio: a CPU torch handover must not disarm the flavor invariant by @danielhanchen in #10906
  • Studio: Keep unfinished research reports by @NilayYadav in #10759
  • Studio: an AMD Windows host without usable ROCm takes Vulkan, not the CPU bundle by @danielhanchen in #10908
  • Studio: a masked NVIDIA GPU must not install the CPU bundle over CUDA by @danielhanchen in #10909
  • Studio: raise the micro-batch for the projectors that abort llama-server on an image by @chakshu-dhannawat in #10683
  • fix(chat_templates): remove CUDA hardcoded device from stopping criteria by @li-lizhe in #10684
  • feat(device_type): add Ascend NPU device detection by @li-lizhe in #10686
  • fix(sentence_transformer): resolve device consistently with sibling branches instead of hardcoding cuda by @li-lizhe in #10843
  • Studio: build the blocked-command alternation once instead of per call by @danielhanchen in #10927
  • fix(studio): stop MLX native controls from duplicating in streamed replies by @Lyxot in #10905
  • docker publish: drop the build caches by @danielhanchen in #10959
  • studio: compact the chat composer and add animated expansion by @mahiatlinux in #10863
  • Studio: Show local LM Studio, Ollama and Hermes models when running in Docker by @NilayYadav in #10936
  • Studio: keep the operator's package-manager policy in the installer by @danielhanchen in #10902
  • desktop: add interface scaling setting by @mahiatlinux in #9666
  • Studio: keep created files outside the collapsed tool card by @claxman in #10446
  • Tests: stop the live no-torch server test from uninstalling torch from the Studio venv by @oobabooga in #10955
  • Studio: make the model use the tool the client asks for by @NilayYadav in #10939
  • Studio: reinstall a missing PyTorch when unsloth studio update finds the package current by @oobabooga in #10956
  • studio: configurable HuggingFace endpoint via HF_ENDPOINT env var by @AdamPlatin123 in #4989
  • Studio: tell the model when a tool returns audio or a file by @NilayYadav in #10940
  • Studio: fix Push to Hub for base and quantized exports by @NilayYadav in #10943
  • Studio: keep earlier messages in chats with images by @NilayYadav in #10944
  • Studio: tell Codex when a chat is too long for the model by @NilayYadav in #10938
  • Studio: keep nested tool call fields llama.cpp drops when written out of order by @NilayYadav in #10935
  • Use model-neutral image generation tooltips by @shimmyshimmer in #10782
  • Allow removing missing images from the gallery by @shimmyshimmer in #10781
  • Fix inline Python plot rendering and downloads by @shimmyshimmer in #10954
  • Studio: remove New badges from Remote & LAN and Shortcuts by @shimmyshimmer in #10967
  • Studio: keep replaced replies out of ShareGPT exports by @NilayYadav in #10941
  • Studio: prevent chat options hover circle from overlapping titles by @shimmyshimmer in #10969
  • Studio: leave top_p out of external requests when set to Off by @NilayYadav in #10934
  • Studio: show the right reasoning effort and image options for every API model by @NilayYadav in #10933
  • Studio: make studio/setup.sh read the recorded uv cache, and probe the cache the CLI hands it by @danielhanchen in #10647
  • studio: centre the chat column by reserving the scrollbar gutter on both edges by @shimmyshimmer in #10966
  • Name the Ascend NPU as its own tests expect, and close the spoofable skip-guard hole by @danielhanchen in #10968
  • A first tool call must not answer from inside a legacy move's staging window by @danielhanchen in #10953
  • Take the wall clock out of two backend guards that fail on a loaded runner by @danielhanchen in #10952
  • Studio: add configurable chat width by @shimmyshimmer in #10958
  • fix: materialize strided LayerNorm inputs and gradients by @MrCapricornLiu in #10675
  • Studio: fix unsloth start when port 8888 is already in use by @NilayYadav in #10942
  • Studio: a Windows host whose NVIDIA GPU is hidden by CUDA_VISIBLE_DEVICES selects the CUDA bundle, not windows-cpu by @danielhanchen in #10976
  • Studio: accept the name field on chat messages by @NilayYadav in #10937
  • Keep a passthrough SSE stream alive while llama-server prefills by @danielhanchen in #10911
  • Studio: keep a working GPU llama.cpp prebuilt over a CPU-only source fallback, and say so in the footer by @danielhanchen in #10975
  • Studio: read the NVIDIA inventory from NVML or the CUDA driver when nvidia-smi cannot answer by @danielhanchen in #10985
  • Time the stall window test instead of counting polls by @danielhanchen in #10987
  • Say which unsloth_zoo revision Core tested, and warn when it is not main by @danielhanchen in #10988
  • Desktop: extend the NVIDIA X11 WebKit fence fix to native packages by @oobabooga in #10964
  • Run the chat width presets in CI, and two guards main is currently red on by @danielhanchen in #11001
  • Stop the video gate test failing on a rename it should not care about by @danielhanchen in #11003
  • Studio: expose image text encoder precision by @shimmyshimmer in #10788
  • Studio: show MTP companion download progress by @Imagineer99 in #10243
  • Studio: load the user's own Pi extensions and packages in unsloth start pi by @oobabooga in #10971
  • Close the partially initialized torch._dynamo window on the diffusion load path by @danielhanchen in #10981
  • Studio prebuilt selection: Windows CUDA lines ordered by detected DLLs rather than filtered, portable fallback attempt, keep paths require SM coverage by @danielhanchen in #11006
  • Stop committing the two fixture archives that antivirus vendors flag by @danielhanchen in #10979
  • Pre-import diffusers in the post-warm worker so the first image load does not by @danielhanchen in #10989
  • Studio: download image model assets without loading by @shimmyshimmer in #10789
  • fix(amd): turn on PyTorch's fast ROCm attention kernels on import unsloth, and drop the installers' host-wide export by @LeoBorcherding in #8821
  • tests: pin the amd/huggingfacenotorch extras and name the audit failure by @LeoBorcherding in #7536
  • Linux: index AMD visible-device masks by device, and floor gfx1102/RDNA4 to rocm6.4 by @LeoBorcherding in #9672
  • fix(AMD): recognise the RX 6950 XT, 6850M XT and 6550M instead of leaving them on CPU torch by @LeoBorcherding in #10746
  • fix(amd): let a pinned torch index carry a package extra, so RDNA1 can reach TheRock by @LeoBorcherding in #9138
  • Studio: Make installed Ollama models available through the API by @NilayYadav in #10763
  • Studio Linux update: torch repair and the source build read the NVIDIA driver library, a CPU wheel recorded as CUDA is repaired, a satisfied pin keeps the GPU prebuilt by @danielhanchen in #11008
  • Fix diffusion load cancellation during construction by @shimmyshimmer in #10780
  • Studio: stop iOS Safari zooming into chat text fields by @oobabooga in #10972
  • Capture which antivirus product is actually blocking installs, and stop discarding the false-positive submission packets by @danielhanchen in #10986
  • Format main to its own pinned hook, so pre-commit autofix can land again by @danielhanchen in #11019
  • Measure whether the host property can replace the native console thunk by @danielhanchen in #10984
  • Studio: stop a short chat video attachment from taking minutes to prefill by @oobabooga in #10973
  • Studio: ask before a chat tool reads or writes outside the sandbox by @danielhanchen in #10907
  • Studio installers read the NVIDIA driver library when nvidia-smi cannot answer, and setup.ps1 keeps a working GPU prebuilt over a source build by @danielhanchen in #11007
  • Studio runtime keeps the GPU when nvidia-smi cannot answer, and prefers a GPU-capable llama-server beside a CPU build by @danielhanchen in #11005
  • Give this work a before-and-after number, and find out the hardening already worked by @danielhanchen in #10996
  • fix(studio): keep Studio's auth directory out of the tool loop by @danielhanchen in #10895
  • WSL installer: stop running the C# compiler on the user's Windows machine by @danielhanchen in #10978
  • fix(studio): keep recipe workers alive when request threads retire by @alkinun in #11021
  • Delete the emit apparatus that existed to colour a banner, now that measurement says it was a no-op by @danielhanchen in #10999
  • Ask AMSI whether the installer compiles, which is the mechanism #10805 actually reports by @danielhanchen in #10994
  • Studio: organize Data settings and make archives searchable by @shimmyshimmer in #10974
  • Measure whether a hardening change alters what the installer does, instead of arguing that it does not by @danielhanchen in #10992
  • Studio: accept OpenAI video_url content parts on /v1/chat/completions by @Lyxot in #10439
  • Studio: add prompt queue controls and composer preferences by @shimmyshimmer in #10980
  • Studio: add reasoning budget controls by @alkinun in #7701
  • Studio backend tests: settle the real loggers package in conftest for repo-root pytest runs by @deepspace28 in #11028
  • fix(amd:audio): decode audio through PyAV when torchcodec installs but cannot load by @LeoBorcherding in #8642
  • Studio: re-measure the startup bundle budget, which main is red on by itself by @danielhanchen in #11013
  • Unsloth Studio Installer: improve GPU print details (NVIDIA, Intel, AMD) by @LeoBorcherding in #8762
  • Recognise a partially initialised torchvision and fix the studiobench ab_plan row by @danielhanchen in #11015
  • docs: clarify Docker shell and Windows setup instructions by @Imagineer99 in #11036
  • README: mount the Hugging Face cache in the Docker quickstart by @danielhanchen in #11062
  • Stop the deps CLI fixture racing another worker for the requirements tree by @danielhanchen in #11063
  • Release: sign every shipped PowerShell script and publish digests for the rest by @danielhanchen in #11069
  • Windows installer: stop uv splitting a requirements path, and keep the error position in diagnostics by @danielhanchen in #11064
  • Docker publish: verify the Studio image env, and stop telling latest users to opt in to CPU by @danielhanchen in #11071
  • Answer /status the runtime fields a backend double cannot invent by @danielhanchen in #11076
  • Give the launcher signal tests a worker to themselves by @danielhanchen in #11085
  • Re-draw a port the OS handed to another test by @danielhanchen in #11086
  • Assert the preset sheet subscribes, not how the subscription is spelled by @danielhanchen in #11065
  • Studio: keep waiting on a llama-server load that is still reading its model by @oobabooga in #11055
  • Studio: move composer settings into More by @shimmyshimmer in #11087
  • Studio: fix structured columns in Data Recipes on non-GGUF models by @NilayYadav in #11049
  • README: point AMD users at the ROCm image by @danielhanchen in #11066
  • docker: give unsloth/unsloth-rocm a Hub page and keep it in sync by @danielhanchen in #11059
  • Studio: on low disk, load the largest GGUF quant that fits and show which one loaded by @NilayYadav in #11052
  • Studio: organize chat settings and simplify descriptions by @shimmyshimmer in #11088
  • Studio: stop charging CPU-mapped input embeddings to the Metal context budget by @oobabooga in #11060
  • Studio: send a download over Xet when HTTPS cannot fetch its largest file by @oobabooga in #11061
  • tests: route the uv requirements-path pwsh call through the shared runner by @danielhanchen in #11091
  • Studio: soften authentication cards and update password setup copy by @shimmyshimmer in #11095
  • docker: correct four stale claims on the Hub page by @danielhanchen in #11099
  • Keep an abandoned zoom call out of the next test's stub by @danielhanchen in #11090
  • Studio: simplify and prioritize chat settings by @shimmyshimmer in #11093
  • Redact hf_token and wandb_token in unsloth train --dry-run output by @danielhanchen in #11100
  • Studio: stop context checkpoints from filling host RAM on hybrid recurrent models by @oobabooga in #11073
  • Studio: stop hiding MCP tools that have a dot or a long name by @NilayYadav in #11051
  • Studio: fix Base vs LoRA compare for messages with an image by @NilayYadav in #11047
  • Studio: keep the GPU order the user asked for instead of re-emitting it ascending by @LeoBorcherding in #11034
  • studio: preserve transcripts and recall audio and image models by @mahiatlinux in #10993
  • Windows on ARM: install the native ARM64 CUDA stack on NVIDIA hosts by @danielhanchen in #10282
  • docker: stop the toolkit installer reporting a healthy driver as missing by @danielhanchen in #11106
  • Studio: keep every turn when training a chat dataset with Alpaca format by @NilayYadav in #11053
  • Match stopping criteria separately for each generated sequence by @vineethsaivs in #11039
  • Apply Q-GaLore weight decay before the projected update by @vineethsaivs in #10931
  • Studio: make the GGUF memory estimate match the compute buffers llama.cpp allocates by @oobabooga in #11043
  • Studio: refine queue drag handles and resume icons by @shimmyshimmer in #11113
  • Fix the three Backend CI failures on main by @danielhanchen in #11111
  • Studio: stop merging the model twice when pushing a merged export to the Hub by @NilayYadav in #11050
  • docker: let the quickstart generate the passwords and print them by @danielhanchen in #11109
  • Studio: rewrite the guided tour and give every page one by @shimmyshimmer in #11105
  • Docker: let UNSLOTH_STUDIO_PORT change Studio's port inside the container by @NilayYadav in #11045
  • Keep an exported config's MTP declaration in agreement with the weights by @danielhanchen in #11042
  • Pin the win_arm64 scikit-learn to one version so the security audit cannot go red on its own by @danielhanchen in #11112
  • Windows on ARM: take the wheelhouse from our own signed release by @danielhanchen in #11108
  • Studio: clarify queue options and refine queue styling by @shimmyshimmer in #11114
  • Studio: save a training checkpoint when the container is stopped by @NilayYadav in #11044
  • Studio: make Thinking and repetition penalty work on messages with an image by @NilayYadav in #11048
  • Studio: let the GPUs picker set device order, not just membership by @LeoBorcherding in #11041
  • Studio: print the first-boot password when nothing else will show it by @danielhanchen in #11118
  • Studio: localize the prompt queue view and align its editor shortcut by @shimmyshimmer in #11117
  • Studio: repair CPU torch on an NVIDIA host from the Linux fast path by @danielhanchen in #11127
  • Studio: minimal OS sandbox for Python and Terminal tools on Linux and macOS by @danielhanchen in #10526
  • feat(studio): consistent SSH restrictions with approved-server allowlist by @Souravrajvi0 in #10642
  • Revert "feat(studio): consistent SSH restrictions with approved-server allowlist" by @danielhanchen in #11163
  • Repair the six CI checks that are red on main itself by @danielhanchen in #11139
  • Let the formatter fixed-point guard start on Windows by @danielhanchen in #11145
  • Read every uv and pip resolver flag through one boolish reader by @danielhanchen in #11138
  • Read the resident tensor names only where they are used by @danielhanchen in #11159
  • Stop two CI guards failing for the machine they ran on by @danielhanchen in #11164
  • Studio: keep the Hub token off redirect targets and clear a blank HF_ENDPOINT by @AdamPlatin123 in #11000
  • Studio: shrink the resume glyph, trim the queueing hint and round the scroll corner by @shimmyshimmer in #11179
  • Studio: report a model reply that finished with nothing in it by @shimmyshimmer in #11185
  • Stop a shared embedder setup stranding its model in the next test by @danielhanchen in #11178
  • Check the MLX audit cleaned up its own temp file, not the shared temp dir by @danielhanchen in #11181
  • Clear every GPU visibility mask the ROCm probe test drives production with by @danielhanchen in #11182
  • Run the formatter on the one file main left drifted by @danielhanchen in #11058
  • Studio: models.dev catalog for reasoning and image options on other API providers by @NilayYadav in #10957
  • Target unfused MoE expert parameters instead of dropping them by @danielhanchen in #11014
  • Studio: import ShareGPT chats with the right roles by @NilayYadav in #11149
  • Exit with code 130 when unsloth train is stopped with Ctrl+C by @NilayYadav in #11151
  • Studio: make UNSLOTH_DISABLE_UPDATE_CHECK also stop the llama.cpp and whisper.cpp checks by @NilayYadav in #11155
  • Studio: show disk space in the same GB as model sizes by @NilayYadav in #11150
  • Studio: pass search results and documents through to the model on /v1/messages by @NilayYadav in #11152
  • Keep the RoPE base frequency on transformers 5, and make triton optional by @danielhanchen in #11037
  • Studio: use --reasoning where available and name the compressed-tensors refusal by @danielhanchen in #11072
  • Resolve apply_qkv and apply_o defensively, and explain zero patch counts by @danielhanchen in #11038
  • Studio backend tests: pin the logical CPU count in the oversubscribed-threads spill test by @danielhanchen in #11120
  • Model picker: collapse a single downloaded quant again by @shimmyshimmer in #11190
  • Resolve the per layer device through a helper instead of a raw index by @danielhanchen in #11020
  • Installers: require x64 Python on Windows on ARM, and respect active conda by @danielhanchen in #11024
  • Report the video progress the GPU has actually done by @danielhanchen in #11004
  • Studio: reap the llama-server tree on Windows unload, and unblock a dead spawned backend by @danielhanchen in #11022
  • Pin every rank of a distributed launch to its own device, not just quantized ones by @danielhanchen in #11129
  • Keep every nested RoPE base, and never put a per-label mapping in rope_theta by @danielhanchen in #11192
  • Stop the empty-logits sentinel from claiming protocol dunders it cannot honour by @danielhanchen in #11130
  • Release: stop publishing standalone signed scripts by @wasimysaid in #11123
  • Studio: assert the argv, not the call count, in the shutdown spawn-refusal test by @danielhanchen in #10645
  • Studio: official image picks default to the hosted FP8 or INT8 checkpoint by @danielhanchen in #10883
  • perf(studio): keep MLX VLM generation on one stream by @Lyxot in #10962
  • Studio: serve every image an MLX conversation carries, not just the newest by @Lyxot in #10970
  • Studio: do not run Gemma tool call examples written inside code blocks by @NilayYadav in #11153
  • Move the Studio MLX pins to mlx 0.32.2 and mlx-vlm 0.7.1 by @Lyxot in #11080
  • Diagnose torch and triton version skew at import time by @danielhanchen in #11023
  • Take the compile-cache bundle write off the image generation request path by @danielhanchen in #11009
  • Fix the cold unsloth.save import, the preview role map and the GPU memory cap by @danielhanchen in #11077
  • Studio: keep a reasoning page start below its end by @danielhanchen in #10922
  • Define everything Refresh-Environment calls before the PSModulePath test runs it by @danielhanchen in #11194
  • Studio: serve an installed MLX checkpoint whose config drops its vision sub-config by @Lyxot in #10977
  • Stop a removed torchao class from killing plain LoRA by @danielhanchen in #11168
  • Fall back to HTTPS when hf_xet is installed but cannot be imported by @danielhanchen in #11167
  • Look for nvidia-smi everywhere it actually is by @danielhanchen in #11119
  • Turn the CUDA graph off for MiniMax-H3: measured 1.0018x for 3.93 GB by @danielhanchen in #11175
  • Unsloth Studio Installer: hold the install lock as a file as well as a mutex by @danielhanchen in #11094
  • Bump the actions group across 1 directory with 10 updates by @dependabot[bot] in #11199
  • Desktop: build and ship a native Windows ARM64 installer by @danielhanchen in #11122
  • Catch a temporary patch that stops applying instead of only logging it by @danielhanchen in #11198
  • Format the two files main is failing its own pre-commit hook on by @danielhanchen in #11203
  • Studio: honour an unmeasured context request and price the real attention plan by @danielhanchen in #11025
  • Route save_method="lora" to the adapter save instead of the merge by @danielhanchen in #11067
  • Installer: recover from and explain an unreadable llama.cpp cache on Windows by @danielhanchen in #10533
  • Studio: an AMD owner asking for a precision outright is told the real reason by @danielhanchen in #11032
  • Docker: keep the startup health checks off the HTTP proxy by @NilayYadav in #11157
  • Docker: stop notebooks from uninstalling the baked packages by @NilayYadav in #11156
  • Studio: stop declaring a live backend dead, and keep a crashed worker's stderr by @danielhanchen in #11070
  • Studio: judge a local chat model by the transformers 5 modality keys, not text_config by @danielhanchen in #11011
  • Baseline the four huggingface_hub 1.32.0 sandbox findings by @danielhanchen in #11206
  • Re-run the kwarg-spacing formatter on three files that landed unformatted by @danielhanchen in #11207
  • Kaggle GPU harness: an all-[N/A] listing is cannot attribute, not no GPU by @danielhanchen in #10472
  • Reject an hf_xet that is only an empty namespace package by @danielhanchen in #11205
  • Raise the unsloth_zoo floor to 2026.9.5 now that the compiled-path sentinel fix shipped by @danielhanchen in #11210

New Contributors

Full Changelog: v0.1.808-beta...v0.1.810-beta

Don't miss a new unsloth release

NewReleases is sending notifications on new releases.