Hey everyone! This release brings local LLM training and inference to AMD GPUs across Windows, WSL and Linux. Read our AMD Blog + Guide
Starting today, our AMD collaboration, custom Triton kernels, and math algorithms enables you to train and run 500+ models across AMD's Radeon, Instinct, Ryzen and data center GPUs, up to 2× faster with 70% less VRAM and no accuracy loss. Optimized ROCm builds also support GGUF & Safetensors inference.
Train LLMs Locally on AMD
- Train, run RL, chat with and deploy models locally on AMD GPUs.
- More reliable AMD GPU detection and installation across Windows, WSL and Linux.
- Improved ROCm compatibility for AMD MI300X and MI325X GPUs.
- Remote access Unsloth via
unsloth studio --securethrough free HTTPS via Cloudflare
Run Larger Models on Your Hardware
- Use automatic GPU placement or choose exactly which GPUs and model layers to use.
- Move MoE expert layers into system memory to help larger models fit.
- Split models across multiple GPUs or use Tensor Parallelism.
- Save hardware settings separately for each model and quant.
Faster Chat Restarts and More Reliable Downloads
- Resume long chats without rebuilding the full conversation after an idle model frees its VRAM.
- Stalled Hugging Face XET downloads automatically retry over standard HTTP.
- Existing GGUF files are reused instead of being downloaded again whenever a model loads.
Better Search, Tools and Agents
- Web search can now read PDF papers, manuals and other PDF results.
- Parallel tool calls, reasoning output and tool retries work more reliably.
- A new opt-in MCP endpoint lets compatible AI clients inspect models and training history, start or stop training, load checkpoints, validate recipes and export GGUFs.
- Enable it with
UNSLOTH_STUDIO_ENABLE_MCP=1and set the required bearer token withUNSLOTH_STUDIO_MCP_TOKEN.
- Enable it with
Training and Export Fixes
- Text-only training with multimodal models no longer truncates long examples before packing.
- Fine-tuned Qwen3.5 and Qwen3.6 MTP models now export correctly to GGUF.
- Fixed a Windows permission error that could stop GGUF exports during the final write step.
In Case You Missed It
Our previous Studio release added Dynamic NVFP4 models, deeper personalization, seven new display languages, safer agents and Vulkan GPU acceleration.
Dynamic NVFP4
Unsloth Dynamic NVFP4 keeps accuracy-sensitive layers in FP8 or BF16 while running the rest in W4A4. On NVIDIA Blackwell GPUs, this enables up to 2.5x faster inference, while calibrated FP8 KV caches provide up to 2x longer context.
Read the Dynamic NVFP4 guide and explore our expanded NVFP4 collection, including Qwen3.6, Qwen3.5, Inkling, GLM-4.7 Flash and Gemma 4.
Personalize Your Studio
Choose between Standard, Classic and Minimal color palettes, each with light and dark modes. You can also customize colors, import fonts and adjust font size, contrast, reduced motion and more.
Studio also includes a Voice settings tab for dictation, custom dictionary settings and read-aloud.
New Languages
Unsloth Studio is now available in French, German, Spanish, Hindi, Arabic, Russian and Korean, alongside Chinese (Simplified), Japanese and Portuguese (Brazil). Browser-language auto-detection is now the default.
Safer Agents
A four-level tool-call permission selector-Ask, Approve for me, Off and Full access-provides finer control over agents. Agent workspace isolation and safer installer checks also reduce the risk of unintended changes.
Updating Unsloth
To update Unsloth or install a fresh Unsloth, use the commands below:
macOS, Linux, WSL:
curl -fsSL https://unsloth.ai/install.sh | shWindows:
irm https://unsloth.ai/install.ps1 | iexWhat's Changed in Unsloth
- Bump install.sh / install.ps1 pin to unsloth>=2026.7.3 by @danielhanchen in #7155
- fix(dataprep): smart_chunk_text single-chunk path leaks internal tensor type when eos_token_id is None by @chuenchen309 in #7151
- Fix Settings layout overflow by @shimmyshimmer in #7167
- Keep nested dropdown menus on screen by @shimmyshimmer in #7168
- Fix DeepSeek reasoning test shim by @shimmyshimmer in #7169
- Harden desktop release token permissions by @wasimysaid in #7172
- Studio: clickable sidebar settings cog, long name truncation, Canvas menu opt-in by @shimmyshimmer in #7171
- CI: opt tool-calling smoke tests out of the chat tool approval gate by @danielhanchen in #7162
- Fix Inkling reasoning-effort coercion for duck-typed engine stand-ins by @danielhanchen in #7158
- fix config cards clipping content at narrow window widths by @NilayYadav in #7146
- Studio: use one shared Hugging Face token across Settings and training by @NilayYadav in #7152
- Studio: don't drop parallel tool calls after an internal no-op by @oobabooga in #7157
- Studio: extract text from PDF web results by @oobabooga in #7154
- don't kill live llama-servers when a new Studio instance starts by @NilayYadav in #7182
- fix(save): unsloth_push_to_hub_gguf(save_method="lora") raises NameError by @chuenchen309 in #7193
- Feat/model picker per model config by @Sneakr in #6647
- fix(studio): recover stalled Hub downloads over HTTP by @rodboev in #6858
- fix(mlx): relax Metal context-store timeout by default by @Lyxot in #7141
- Studio: don't re-download updated GGUFs on load by @oobabooga in #7209
- Fix Studio reasoning channel rendering by @Lyxot in #7121
- Fix Studio safetensors tool reprompt reasoning leakage by @Lyxot in #7134
- Studio: don't apply nest_asyncio on plain CLI starts (breaks asyncio on Python 3.14+) by @NilayYadav in #7186
- Propagate fp8 block_size before the early return in get_lora_parameters_bias by @vineethsaivs in #7189
- feat(studio): expose an opt-in MCP control plane by @RitwijParmar in #7191
- fix(tokenizer): check for tokenizer.model after saving it, not before by @chuenchen309 in #7194
- Stabilize Studio regression tests by @shimmyshimmer in #7192
- fix(dataprep): skip .jsonl lines that are valid JSON but not objects by @chuenchen309 in #7195
- fix(studio): equal padding in the dataset source segmented control by @shimmyshimmer in #7230
- fix canvas staying open after starting a New Chat by @NilayYadav in #7229
- Allow API key for Ollama connections by @shimmyshimmer in #7173
- Studio: keep the Bypass permissions pill label when composer pills collapse by @shimmyshimmer in #7231
- fix(studio): honor MLX adapter state in compare mode by @Lyxot in #7196
- Refresh the fastapi C2-loop scan baseline entry for the current release by @danielhanchen in #7223
- Studio: enforce 60s minimum on idle auto-unload TTL (0 stays off) by @NilayYadav in #7185
- Replace standalone Studio wording with Unsloth by @shimmyshimmer in #7221
- Studio: hide the RAG embedder and llama.cpp probe from the hub cached inventory by @shimmyshimmer in #7018
- fix(registry): don't register deepseek models at import time by @chuenchen309 in #7227
- studio: show the active run's saved config in the Training Progress popover by @hakanbaysal in #7217
- test(version-compat): keep GRPO fake-run logits finite on CPU by @danielhanchen in #7247
- Studio: GPU memory configuration for GGUF models by @oobabooga in #6414
- Give opencode real timeout headroom in Local Agent Guides CI by @danielhanchen in #7235
- Installer: allow torch 2.11.x on the CUDA install path (fresh install + studio) by @danielhanchen in #6959
- fix(chat_templates): bind loop_messages when default_system_message is None by @chuenchen309 in #7199
- Installer: preserve the previous torch release across every flavor and vendor on re-runs by @danielhanchen in #7250
- Studio: fix stale GGUF load-marker ordering test after llama_extra_args relocation by @danielhanchen in #7252
- Route OpenCode yolo aliases to native auto mode by @Imagineer99 in #7187
- Pin the Hermes remote installer and harden consent by @Imagineer99 in #7179
- Translate PWD for WSL-launched Windows agents by @Imagineer99 in #7111
- persist llama.cpp KV cache across idle auto-unload (slot save/restore) by @NilayYadav in #7204
- Fix text-only VLM CPT packing truncation by @alkinun in #7211
- feat(studio): add UNSLOTH_LLAMA_CPP_BACKEND env var to force CPU fallback #7213 by @VectorCipher in #7228
- Experimental: correct varlen sample packing for hybrid linear-attention models by @danielhanchen in #7249
- install: let UNSLOTH_TORCH_INDEX_FAMILY / _URL override CUDA wheel detection by @danielhanchen in #6692
- Studio: Data settings tab, uploaded files manager, quant pinning, and chat image preview fix by @shimmyshimmer in #7029
- Studio: fix per-GPU VRAM reporting on Windows ROCm by @danielhanchen in #7238
- Studio: do not show Run for embedding-only non-GGUF models in the Model Hub by @danielhanchen in #7245
- Studio: make Stop and stall deadlines interrupt a wedged stream portably by @danielhanchen in #7236
- Studio: clarify tool permission controls by @shimmyshimmer in #7181
- Update README with latest features and Unsloth Start by @Imagineer99 in #7258
- Studio: lock the last enabled GPU switch instead of silently ignoring it by @oobabooga in #7259
- Fix
unsloth starton Windows: agent install, PATH resolution, and local model selection by @danielhanchen in #7257 - Fix On Device model picker startup ordering by @Imagineer99 in #6994
- Studio: validate Hugging Face tokens before use by @oobabooga in #7261
- Studio (Windows): keep prompt caching on full GPU offload by @danielhanchen in #7260
New Contributors
- @chuenchen309 made their first contribution in #7151
- @VectorCipher made their first contribution in #7228
Full Changelog: v0.1.49-beta...v0.1.50-beta
What's Changed in Unsloth-Zoo
- mlx: fixes for bnb dequant, report_to, early stopping, and NEFTune by @oobabooga in unslothai/unsloth-zoo#851
- MLX: clear error when mlx-lm/mlx-vlm is too old for a QK-norm arch (gemma4/qwen3_5) by @danielhanchen in unslothai/unsloth-zoo#845
- MLX: fix gemma-4-e2b (gemma4) audio-tower conv double transpose on load by @danielhanchen in unslothai/unsloth-zoo#879
- Add Mixtral MoE experts patch for Split LoRA (fix 4bit QLoRA forward crash) by @danielhanchen in unslothai/unsloth-zoo#881
- Forward declared tools to the DiffusionGemma visual server by @oobabooga in unslothai/unsloth-zoo#864
- Add mixtral_moe to temporary_patches import test list by @danielhanchen in unslothai/unsloth-zoo#884
- feat(mlx): add DDP training support by @Lyxot in unslothai/unsloth-zoo#841
- feat(mlx): support distributed inference loading by @Lyxot in unslothai/unsloth-zoo#854
- fix(mlx): preserve inference norm dtypes by @Lyxot in unslothai/unsloth-zoo#844
- fix(mlx): normalize legacy tokenizer sidecars for VLM loads by @Lyxot in unslothai/unsloth-zoo#846
- fix(mlx): support text label parity datasets by @Lyxot in unslothai/unsloth-zoo#793
- MLX: fix gated-delta (Qwen3.5) training and add fused backward kernels by @Lyxot in unslothai/unsloth-zoo#754
- (GRPO) Fix SAPO on version TRL > 0.27.2 and add Luspo from TRL >= 0.28.0 by @marcandrelarochelle in unslothai/unsloth-zoo#869
- (GRPO) Add importance sampling modes (TRL >= 0.26.0), Switch to vllm_importance_sampling_clip (support for TRL >= 1.6.0) and Fix VESPO not using the importance sampling ratio by @marcandrelarochelle in unslothai/unsloth-zoo#870
- saving: fold per-expert gpt-oss 4bit expert LoRA into merged_16bit by @danielhanchen in unslothai/unsloth-zoo#885
- Fix gpt_oss mask factory signature introspection on transformers 5.x by @danielhanchen in unslothai/unsloth-zoo#880
- Fix CPU test drift on transformers 5.5.0 and the MLX bitsandbytes stub by @danielhanchen in unslothai/unsloth-zoo#886
- Guard MLX distributed eval against zero-token batches by @danielhanchen in unslothai/unsloth-zoo#888
- Fix chat template marker auto-detection for Zephyr's context-dependent tokenization by @danielhanchen in unslothai/unsloth-zoo#899
- Persist torch.compile artifacts across processes with Mega-cache by @danielhanchen in unslothai/unsloth-zoo#901
- Fix ModuleNotFoundError crash in fla_vendor's is_flash_linear_attention_available probe by @amareshhebbar in unslothai/unsloth-zoo#897
- Fix false DownloadStallError for non-standard sharded weight filenames by @olsh in unslothai/unsloth-zoo#900
- Fix false DownloadStallError for diffusers components with non-standard sharded weight filenames by @danielhanchen in unslothai/unsloth-zoo#902
- tokenizer_utils: match IGNORED_TOKENIZER_NAMES case-insensitively in fix_untrained_tokens by @oobabooga in unslothai/unsloth-zoo#823
- Fix GGUF export crash for fine-tuned MTP models (Qwen3.5) by @oobabooga in unslothai/unsloth-zoo#904
- fix: ROCm compatibility — guard SM-arch paths, FlashInfer, and mem_get_info by @zhihuidu-amd in unslothai/unsloth-zoo#910
- Fix Windows GGUF export PermissionError [Errno 13]: anchor converter --outfile to input_folder by @LeoBorcherding in unslothai/unsloth-zoo#907
- Fix silent expert-weight transposition in MoE preprocess_weight by @BardiaKoopah in unslothai/unsloth-zoo#913
- Replace standalone Studio wording with Unsloth by @shimmyshimmer in unslothai/unsloth-zoo#914
- Fix Gemma 4 audio training crash by @BardiaKoopah in unslothai/unsloth-zoo#917
- Fix Gemma 4 MLX GGUF tensor namespace restoration by @Lyxot in unslothai/unsloth-zoo#905