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 --secure
through 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=1
and 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 | sh
Windows:
irm https://unsloth.ai/install.ps1 | iex
What's Changed in Unsloth #
- Bump install.sh / install.ps1 pin to unsloth>=2026.7.3 by
@danielhanchenin#7155 - fix(dataprep): smart_chunk_text single-chunk path leaks internal tensor type when eos_token_id is None by
@chuenchen309in#7151 - Fix Settings layout overflow by
@shimmyshimmerin#7167 - Keep nested dropdown menus on screen by
@shimmyshimmerin#7168 - Fix DeepSeek reasoning test shim by
@shimmyshimmerin#7169 - Harden desktop release token permissions by
@wasimysaidin#7172 - Studio: clickable sidebar settings cog, long name truncation, Canvas menu opt-in by
@shimmyshimmerin#7171 - CI: opt tool-calling smoke tests out of the chat tool approval gate by
@danielhanchenin#7162 - Fix Inkling reasoning-effort coercion for duck-typed engine stand-ins by
@danielhanchenin#7158 - fix config cards clipping content at narrow window widths by
@NilayYadavin#7146 - Studio: use one shared Hugging Face token across Settings and training by
@NilayYadavin#7152 - Studio: don't drop parallel tool calls after an internal no-op by
@oobaboogain#7157 - Studio: extract text from PDF web results by
@oobaboogain#7154 - don't kill live llama-servers when a new Studio instance starts by
@NilayYadavin#7182 - fix(save): unsloth_push_to_hub_gguf(save_method="lora") raises NameError by
@chuenchen309in#7193 - Feat/model picker per model config by
@Sneakrin#6647 - fix(studio): recover stalled Hub downloads over HTTP by
@rodboevin#6858 - fix(mlx): relax Metal context-store timeout by default by
@Lyxotin#7141 - Studio: don't re-download updated GGUFs on load by
@oobaboogain#7209 - Fix Studio reasoning channel rendering by
@Lyxotin#7121 - Fix Studio safetensors tool reprompt reasoning leakage by
@Lyxotin#7134 - Studio: don't apply nest_asyncio on plain CLI starts (breaks asyncio on Python 3.14+) by
@NilayYadavin#7186 - Propagate fp8 block_size before the early return in get_lora_parameters_bias by
@vineethsaivsin#7189 - feat(studio): expose an opt-in MCP control plane by
@RitwijParmarin#7191 - fix(tokenizer): check for tokenizer.model after saving it, not before by
@chuenchen309in#7194 - Stabilize Studio regression tests by
@shimmyshimmerin#7192 - fix(dataprep): skip .jsonl lines that are valid JSON but not objects by
@chuenchen309in#7195 - fix(studio): equal padding in the dataset source segmented control by
@shimmyshimmerin#7230 - fix canvas staying open after starting a New Chat by
@NilayYadavin#7229 - Allow API key for Ollama connections by
@shimmyshimmerin#7173 - Studio: keep the Bypass permissions pill label when composer pills collapse by
@shimmyshimmerin#7231 - fix(studio): honor MLX adapter state in compare mode by
@Lyxotin#7196 - Refresh the fastapi C2-loop scan baseline entry for the current release by
@danielhanchenin#7223 - Studio: enforce 60s minimum on idle auto-unload TTL (0 stays off) by
@NilayYadavin#7185 - Replace standalone Studio wording with Unsloth by
@shimmyshimmerin#7221 - Studio: hide the RAG embedder and llama.cpp probe from the hub cached inventory by
@shimmyshimmerin#7018 - fix(registry): don't register deepseek models at import time by
@chuenchen309in#7227 - studio: show the active run's saved config in the Training Progress popover by
@hakanbaysalin#7217 - test(version-compat): keep GRPO fake-run logits finite on CPU by
@danielhanchenin#7247 - Studio: GPU memory configuration for GGUF models by
@oobaboogain#6414 - Give opencode real timeout headroom in Local Agent Guides CI by
@danielhanchenin#7235 - Installer: allow torch 2.11.x on the CUDA install path (fresh install + studio) by
@danielhanchenin#6959 - fix(chat_templates): bind loop_messages when default_system_message is None by
@chuenchen309in#7199 - Installer: preserve the previous torch release across every flavor and vendor on re-runs by
@danielhanchenin#7250 - Studio: fix stale GGUF load-marker ordering test after llama_extra_args relocation by
@danielhanchenin#7252 - Route OpenCode yolo aliases to native auto mode by
@Imagineer99in#7187 - Pin the Hermes remote installer and harden consent by
@Imagineer99in#7179 - Translate PWD for WSL-launched Windows agents by
@Imagineer99in#7111 - persist llama.cpp KV cache across idle auto-unload (slot save/restore) by
@NilayYadavin#7204 - Fix text-only VLM CPT packing truncation by
@alkinunin#7211 - feat(studio): add UNSLOTH_LLAMA_CPP_BACKEND env var to force CPU fallback
#7213by@VectorCipherin#7228 - Experimental: correct varlen sample packing for hybrid linear-attention models by
@danielhanchenin#7249 - install: let UNSLOTH_TORCH_INDEX_FAMILY / _URL override CUDA wheel detection by
@danielhanchenin#6692 - Studio: Data settings tab, uploaded files manager, quant pinning, and chat image preview fix by
@shimmyshimmerin#7029 - Studio: fix per-GPU VRAM reporting on Windows ROCm by
@danielhanchenin#7238 - Studio: do not show Run for embedding-only non-GGUF models in the Model Hub by
@danielhanchenin#7245 - Studio: make Stop and stall deadlines interrupt a wedged stream portably by
@danielhanchenin#7236 - Studio: clarify tool permission controls by
@shimmyshimmerin#7181 - Update README with latest features and Unsloth Start by
@Imagineer99in#7258 - Studio: lock the last enabled GPU switch instead of silently ignoring it by
@oobaboogain#7259 - Fix
unsloth start
on Windows: agent install, PATH resolution, and local model selection by@danielhanchenin#7257 - Fix On Device model picker startup ordering by @Imagineer99in#6994 - Studio: validate Hugging Face tokens before use by @oobaboogain#7261 - Studio (Windows): keep prompt caching on full GPU offload by @danielhanchenin#7260
New Contributors #
@chuenchen309made their first contribution in#7151@VectorCiphermade 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 @oobaboogainunslothai/unsloth-zoo#851 - MLX: clear error when mlx-lm/mlx-vlm is too old for a QK-norm arch (gemma4/qwen3_5) by @danielhancheninunslothai/unsloth-zoo#845 - MLX: fix gemma-4-e2b (gemma4) audio-tower conv double transpose on load by @danielhancheninunslothai/unsloth-zoo#879 - Add Mixtral MoE experts patch for Split LoRA (fix 4bit QLoRA forward crash) by @danielhancheninunslothai/unsloth-zoo#881 - Forward declared tools to the DiffusionGemma visual server by @oobaboogainunslothai/unsloth-zoo#864 - Add mixtral_moe to temporary_patches import test list by @danielhancheninunslothai/unsloth-zoo#884 - feat(mlx): add DDP training support by @Lyxotinunslothai/unsloth-zoo#841 - feat(mlx): support distributed inference by @Lyxotinunslothai/unsloth-zoo#854 - fix(mlx): preserve inference norm dtypes by @Lyxotinunslothai/unsloth-zoo#844 - fix(mlx): normalize legacy tokenizer sidecars for VLM loads by @Lyxotinunslothai/unsloth-zoo#846 - fix(mlx): support text label parity datasets by @Lyxotinunslothai/unsloth-zoo#793 - MLX: fix gated-delta (Qwen3.5) training and add fused backward kernels by @Lyxotinunslothai/unsloth-zoo#754 - (GRPO) Fix SAPO on version TRL > 0.27.2 and add Luspo from TRL >= 0.28.0 by @marcandrelarochelleinunslothai/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 @marcandrelarochelleinunslothai/unsloth-zoo#870 - saving: fold per-expert gpt-oss 4bit expert LoRA into merged_16bit by @danielhancheninunslothai/unsloth-zoo#885 - Fix gpt_oss mask factory signature introspection on transformers 5.x by @danielhancheninunslothai/unsloth-zoo#880 - Fix CPU test drift on transformers 5.5.0 and the MLX bitsandbytes stub by @danielhancheninunslothai/unsloth-zoo#886 - Guard MLX distributed eval against zero-token batches by @danielhancheninunslothai/unsloth-zoo#888 - Fix chat template marker auto-detection for Zephyr's context-dependent tokenization by @danielhancheninunslothai/unsloth-zoo#899 - Persist torch.compile artifacts across processes with Mega-cache by @danielhancheninunslothai/unsloth-zoo#901 - Fix ModuleNotFoundError crash in fla_vendor's is_flash_linear_attention_available probe by @amareshhebbarinunslothai/unsloth-zoo#897 - Fix false DownloadStallError for non-standard sharded weight filenames by @olshinunslothai/unsloth-zoo#900 - Fix false DownloadStallError for diffusers components with non-standard sharded weight filenames by @danielhancheninunslothai/unsloth-zoo#902 - tokenizer_utils: match IGNORED_TOKENIZER_NAMES case-insensitively in fix_untrained_tokens by @oobaboogainunslothai/unsloth-zoo#823 - Fix GGUF export crash for fine-tuned MTP models (Qwen3.5) by @oobaboogainunslothai/unsloth-zoo#904 - fix: ROCm compatibility — guard SM-arch paths, FlashInfer, and mem_get_info by @zhihuidu-amdinunslothai/unsloth-zoo#910 - Fix Windows GGUF export PermissionError [Errno 13]: anchor converter --outfile to input_folder by @LeoBorcherdinginunslothai/unsloth-zoo#907 - Fix silent expert-weight transposition in MoE preprocess_weight by @BardiaKoopahinunslothai/unsloth-zoo#913 - Replace standalone Studio wording with Unsloth by @shimmyshimmerinunslothai/unsloth-zoo#914 - Fix Gemma 4 audio training crash by @BardiaKoopahinunslothai/unsloth-zoo#917 - Fix Gemma 4 MLX GGUF tensor namespace restoration by @Lyxotinunslothai/unsloth-zoo#905