Unsloth Studio can now export to NVFP4, FP8, imatrix GGUFs after training, can act as a llama-swap API system, includes Japanese and Brazilian language support, includes MLX, safetensors tool calling + healing support and much more! Unsloth core makes GRPO 1.3x faster, have HTTP fallback for stalled downloads, better offline mode, makes MoE training 3 to 5x faster, and fixes many bugs! This release series uses unsloth>=2026.7.1.
DeepSeek-V4-Flash is now supported with Thinking toggles and with all our fixes including improved chat template!
Smarter OpenAI-Compatible API Serving
Run one local API endpoint across with safer automatic model swapping and better agent-tool recovery.
- API requests can opt into model auto switching, so a request for a different downloaded local GGUF can load and serve that model automatically.
- The model swap path is safe by default: unknown model names keep using the current model and do not trigger surprise downloads.
- /v1/models now returns clean model IDs and the local GGUF catalog, so API clients do not see local .gguf file paths.
- Idle auto-unload can free VRAM after inactivity while still reloading the last model on the next API request.
- API clients can control tool-call healing per request and opt into the extra nudge retry when a model tries to call a tool but returns malformed markup.
Export Improvements
Exports are more flexible and avoid more unnecessary downloads.
- Unsloth now lets you select multiple export formats at once.
- Unsloth now supports portable FP8/INT8 exports, GGUF LoRA, and source-matched exports.
save_pretrained_mergednow supports compressed FP8/FP4 exports.- The Unsloth export UI now includes imatrix GGUF and compressed export options.
- Exporting multiple checkpoints now avoids more repeated base-model downloads.
- FP8, INT8, and GGUF-LoRA exports now respect
trust_remote_code. - GGUF export now handles models with missing quantization settings more reliably.
RAG and File Chat
Chat with files should be more useful on real documents.
- RAG attachments can now use whole-document context.
- File chat now reads more PDFs and Word documents correctly, including right-to-left text, Indic text, and DOCX tables.
- Local RAG checks are less likely to fail because of proxy settings.
- The embedding model is now customizable, with Hugging Face search and a reorganized settings tab.
Unsloth Polish and Reliability
Unsloth is smoother and more reliable during everyday use.
- Training and chat progress are less likely to freeze silently during long runs.
- Compare mode starts more reliably.
- Switching or cancelling models during loading is less likely to get stuck.
- Hub browsing now recovers better from invalid Hugging Face tokens and shows clearer local file paths.
- Hub Discover now shows all models by default, with a cleaner model picker and a fits-on-device filter.
- Project export menus are clearer, with combined project exports and individual chat exports grouped separately.
- Unsloth training runs now show project names.
- Guided tours, reasoning timers, thinking stops, settings, file dialogs, and update screens now feel cleaner and more consistent.
- Japanese and Portuguese (Brazil) are now available in the Unsloth UI.
- Installer and package checks were tightened to catch more unsafe or unexpected dependency changes.
Installer, Hardware and Platform Fixes
Unsloth installs and runs more reliably across different machines, GPUs, and network setups.
- Installer pins were updated to
unsloth>=2026.6.9. - macOS installs no longer require CMake or Homebrew when a prebuilt
llama.cppis available. - Apple Silicon installs now handle paths with spaces more reliably and size GGUF context for unified memory.
- macOS installs work better behind corporate TLS-inspection proxies.
- Linux and macOS path handling is more reliable when folders contain spaces.
- Windows ROCm RAG embedding avoids a
torchaoimport crash. - Windows Unsloth startup handles UTF-8 text more reliably.
- ROCm-on-WSL now supports discrete Radeon RDNA 3/4 GPUs, not just Strix Halo.
- Blackwell
sm_100andsm_103data-center GPUs now use the correctllama.cppprebuilt selection. - GGUF fit checks now reserve memory for CUDA context and vision/model overhead more accurately.
- Tensor parallelism fixed for vision and
mmprojGGUF models. - Existing local
llama.cppbuilds can now be reused with--with-llama-cpp-dir.
Training, Models and Kernels
Training and model loading are more reliable across more model types, GPUs, and fine-tuning setups.
- GRPO training now supports sequence packing by default for old/ref log-probability calculations.
- GRPO now avoids repeating the same shared prompt across grouped completions.
- GRPO logit scaling now works correctly with DDP-wrapped models.
- Full fine-tuning now uses the correct precision on V100 and other GPUs without bf16 support.
- RL trainers no longer reject valid full fine-tuning precision settings.
- Unsloth gradient checkpointing is no longer silently disabled by
TrainingArguments. - DDP training no longer crashes from a CPU-resident RoPE buffer.
- MoE LoRA detection now targets the correct expert MLP layers.
- Grouped MoE can now turn on automatically for loaded and PEFT models.
- FP8 quantization now handles odd tensor shapes and scale formats more reliably.
- FP8 dequant kernels now use safer offset handling.
- Llama 3 RoPE scaling is preserved with Transformers v5.
- LoRA reloads continue to work with PEFT 0.19.
fast_generatenow shows a clearer error when vLLM-style inputs are used without fast inference.
Updating Unsloth
To update Unsloth or install a fresh Unsloth 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.6.9 by @danielhanchen in #6580
- Studio: default Hub Discover scope to all models by @shimmyshimmer in #6593
- Studio: model picker search placeholder, Search Hub tooltip, list polish by @shimmyshimmer in #6592
- Studio: refresh chat guided tour for the redesigned model picker by @shimmyshimmer in #6597
- CI: fix import-hoist false positive, vision-cache test cwd, and llama.cpp CLI smoke by @danielhanchen in #6598
- fix(studio): handle multimodal list content in inference text paths (#4383) by @danielhanchen in #6480
- studio/setup.sh: guard empty CUDA arch detection in the source build (#5854) by @danielhanchen in #6481
- fix: use EMPTY_LOGITS on the fused-CE not-return_dict path (#2068) by @danielhanchen in #6482
- Fix GRPOTrainer evaluate() crash without prior training by @danielhanchen in #6523
- Fix misleading 'only for image models' error for Qwen3-VL when torchvision is missing by @danielhanchen in #6525
- Fix FlashAttention fp32 crash with DoRA (use_dora=True) by @danielhanchen in #6526
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in #6587
- Withhold HF_TOKEN from pull_request CI runs by @danielhanchen in #6600
- Fix Studio export checkpoint ordering by @Lyxot in #6602
- Studio: treat data-center Blackwell (sm_100/sm_103) as Blackwell in llama.cpp prebuilt selection by @danielhanchen in #6584
- Studio: fall back to anonymous HF browsing on a malformed token by @danielhanchen in #6605
- Chat: match reasoning thinking icon to the composer bulb by @shimmyshimmer in #6607
- Hub: restore Unsloth owner avatar to HF profile picture by @shimmyshimmer in #6606
- Studio: scope "Remember settings next time" per GGUF quant and apply on every load path by @oobabooga in #6594
- Fix sentence-transformers RAG embedder on Windows ROCm (torchao import crash) by @danielhanchen in #6608
- Remove git blame ignore revs by @wasimysaid in #6582
- Studio: allow --secure with --api-only (headless secure API server) and add --api-only to
unsloth studio runby @danielhanchen in #6591 - studio: tidy Windows-ROCm torchao comments (follow-up to #6608) by @danielhanchen in #6610
- Studio: correct anyio<4.14 comments to the real #6483 cause (4.14/Py3.13 streaming cancel-scope bug) by @danielhanchen in #6581
- studio: report the true reasoning duration and fix Stop for thinking models by @danielhanchen in #6521
- Add HTTPS hint to Studio launch message by @Imagineer99 in #6583
- Fix Gemma 4 GGUF OpenAI API streams by @wasimysaid in #6476
- Studio: lazy-import matplotlib so the server starts when the wheel is blocked by @LeoBorcherding in #6596
- Studio: add sidebar update button with installed-version display by @dylanschroers in #6545
- Thread finetune_audio_layers through get_peft_model (Gemma 4 / Gemma 3N audio LoRA) by @danielhanchen in #6558
- Fix CPOTrainer crash with multimodal processors (Gemma 4) by @danielhanchen in #6522
- Fix Qwen3 NaN loss: delegate pad_token repair to shared unsloth_zoo.pad_token by @danielhanchen in #6524
- Harden MLX self-heal install against supply-chain code execution by @danielhanchen in #6599
- Update safe Studio Tauri cargo dependencies by @wasimysaid in #6612
- Studio: remove OpenEnv and other unused packages by @oobabooga in #6585
- Bump vite from 8.0.10 to 8.0.16 in /studio/frontend in the npm-frontend-security group across 1 directory by @dependabot[bot] in #6354
- Fix SyntheticDataKit.chunk_data dropping single-chunk documents by @vineethsaivs in #6595
- Match IGNORED_TOKENIZER_NAMES case-insensitively by @vineethsaivs in #6620
- Installer: don't require cmake/Homebrew on macOS (prebuilt llama.cpp) by @oobabooga in #6617
- Fix construct_chat_template leaking {INPUT}/{OUTPUT} sentinel into the chat template by @vineethsaivs in #6531
- Studio: slim the GLM-5.2 thinking menu width by @shimmyshimmer in #6631
- Studio: confirm saved Hugging Face token with a tick by @shimmyshimmer in #6630
- Fix _SameTaskStreamingResponse disconnect test bypassing init by @danielhanchen in #6627
- Clarify Studio --secure hint exposes a public Cloudflare tunnel by @danielhanchen in #6615
- Tidy verbose Studio launch messages by @danielhanchen in #6628
- Make _uv_safe_path space-safe on macOS/Linux (#6503) by @GodlyDonuts in #6534
- Clarify in README that studio --secure creates a public tunnel by @danielhanchen in #6632
- Studio: add Unsloth Docs to the MCP server presets by @shimmyshimmer in #6633
- Studio: cap GGUF context to unified memory on Apple Silicon by @oobabooga in #6622
- Studio: group the project export menu by Combined and Per chat by @shimmyshimmer in #6637
- Studio: tighten the sidebar footer spacing and update-card fade by @shimmyshimmer in #6641
- Studio: keep the sidebar bottom fade in sync when groups collapse by @shimmyshimmer in #6640
- Pin isolated Node.js installer to committed sha256 digests by @danielhanchen in #6625
- Studio: shareable per-checkpoint preview links by @NilayYadav in #6486
- Verify DiffusionGemma visual-server binary against approved checksums by @danielhanchen in #6635
- Studio: honor
stream=falseon the GGUF agentic tool path (#6570) by @oobabooga in #6618 - Fix Studio GGUF variant expansion crash by @Lyxot in #6636
- Installer: make UV_OVERRIDE space-safe on Apple Silicon (#6503) by @danielhanchen in #6639
- Polish Studio desktop chrome by @wasimysaid in #6332
- Fix Linux AppImage packaging by @wasimysaid in #6657
- Studio: clean up empty leftover quant folders so they can be deleted by @danielhanchen in #6616
- Studio: fix misleading max_seq_length advice for train-on-completions row drops by @danielhanchen in #6664
- Studio: UNSLOTH_NPM_REGISTRY opt-in for corporate npm mirrors (#6491) by @danielhanchen in #6663
- Studio: keep the live progress stream alive during pre-first-step preparation by @danielhanchen in #6665
- Keep pad-named pad_tokens (e.g. <|vision_pad|>); fix Qwen3-Base load crash by @danielhanchen in #6652
- Studio: keep the training event pump alive so progress can't silently freeze by @danielhanchen in #6643
- Studio: stop leaking the auth token through HTML canvas preview frames by @danielhanchen in #6634
- feat: add GPU-aware model filtering and For You section- Add fit filt… by @zrva in #6645
- Studio: prompt variables into prompt editor by @Imagineer99 in #6434
- Verify linuxdeploy AppImage digest before use in desktop release by @danielhanchen in #6673
- Studio: require signed capability tokens for /p preview links by @danielhanchen in #6666
- Fix offline checkpoint load/export: "tokenizer is weirdly not loaded" by @danielhanchen in #6554
- Studio Colab: opt-in shareable Cloudflare tunnel link by @LeoBorcherding in #6684
- Studio: auto-shut-down an exposed first-run instance if the admin password is never changed by @danielhanchen in #6651
- Fix DDP crash from CPU-resident rotary inv_freq buffer by @Abdul-Moiz31 in #6662
- Patch FalconH1RMSNorm to fix float64 compilation crash on Intel Arc DG2 by @anmolxlight in #6691
- feat: improve Unsloth Studio chat title generation quality by @mvanhorn in #6697
- Studio: harden background consumer loops and streaming paths against silent UI freezes by @danielhanchen in #6653
- fix: wrap unprotected evaluate() calls with robust_evaluate() to handle navigation context loss by @jimdawdy-hub in #6677
- Add GGUF flash attention and TP CLI options by @OnePunchMonk in #6561
- studio: return a clean model id from the OpenAI API instead of the local .gguf path by @danielhanchen in #6518
- fix(install): enable UV_NATIVE_TLS on macOS for corporate TLS-inspection proxies by @Cesarsk in #6671
- Stop marking non-8bit Unsloth models as 8-bit by @Lyxot in #6708
- studio: list the full local model catalog from /v1/models by @danielhanchen in #6519
- Silence torchao _C*.so load-failure WARNING on torch >= 2.11 by @danielhanchen in #6712
- Harden flaky Studio CI: retry VS-hide rename and tolerate same-URL nav interrupt by @danielhanchen in #6713
- Fix fast_inference crash on ABI-broken vLLM: probe compiled extensions, not just import vllm by @oobabooga in #6621
- Studio: restore tensor parallelism for vision/mmproj GGUFs by @danielhanchen in #6659
- Studio: stop handing CI/user secrets to downloaded llama.cpp binaries by @danielhanchen in #6696
- Revert "feat: add GPU-aware model filtering and For You section- Add fit filt…" by @danielhanchen in #6722
- Remove unused FalconH1RMSNormGated import by @danielhanchen in #6728
- Studio: cascade user message deletion to include assistant reply by @NilayYadav in #6720
- Fix custom chat templates with a {system_message} placeholder (dead code in _change_system_message) by @vineethsaivs in #6735
- Fix gpt-oss detection in save: config.architectures is a list, not a string by @vineethsaivs in #6711
- fix(studio): show local file path tooltip for Hub-tab local models by @mvanhorn in #6715
- Studio: fix compare adapter selection by @Imagineer99 in #6411
- perf(dataprep): cache regex and field lists, fix typos by @Muhammad-Ikhwan-Fathulloh in #6714
- Speed up Studio desktop startup by @wasimysaid in #6742
- Fix on-device locations dialog layout by @Imagineer99 in #6743
- Fix settings dialog overlay stacking above chat header by @Imagineer99 in #6745
- (feat) Add project names to studio training runs by @shimmyshimmer in #6512
- Studio: name the missing extractor when a Recipes file upload fails by @shimmyshimmer in #6642
- fix: remove sidebar update dev override by @Imagineer99 in #6746
- fix: upgrade hono to 4.12.25 (CVE-2026-54290) by @orbisai0security in #6736
- Fix llama.cpp CMake build detection in save.py by @ashzak in #5957
- CI: add PyPI extra-index to CPU torch installs (fix sympy ResolutionImpossible) by @danielhanchen in #6660
- Fix full finetuning precision on V100 / no-bf16 GPUs by @danielhanchen in #5880
- Fix triton-xpu 3.7.1 sha256 hashes for Intel XPU install by @Oscilloscope98 in #6629
- Fix stale xformers and flash-attn wheel URLs by @danielhanchen in #4213
- Studio: keep "Fine-tuned" compare label clear of the floating top right controls by @NilayYadav in #6755
- Add FP8/FP4 compressed export to save_pretrained_merged by @danielhanchen in #6706
- Studio: imatrix GGUF option and FP8/NVFP4 compressed export in the export UI by @danielhanchen in #6729
- Whole-document context for RAG chat attachments by @danielhanchen in #6693
- Studio: quick eject from the model selector by @shimmyshimmer in #6654
- studio: explicit Cloudflare tunnel notice and public-exposure warning at startup by @danielhanchen in #6515
- fix(studio/llama_cpp): disable trust_env on the loopback health probe (#6750) by @Anai-Guo in #6752
- feat(i18n): add Japanese locale support for the Studio UI catalog by @DovahkiinYuzuko in #6705
- fix: keep LoRA reloads working with PEFT 0.19 by @rodboev in #6748
- studio: allow updating HF models through UI by @Anish9901 in #5388
- Keep the JS-bundle scan check size-agnostic so the baseline does not drift by @danielhanchen in #6770
- Reduce comments across recent fixes by @danielhanchen in #6776
- MLX CI: find llama-cli where save_pretrained_gguf actually installs it by @danielhanchen in #6777
- Studio RAG: disable trust_env on loopback llama-server httpx clients by @danielhanchen in #6775
- scan_packages: key baseline on matched-code hash so payloads in baselined files are not auto-suppressed by @danielhanchen in #6552
- Pin llm-compressor auto-install to a vetted version range by @danielhanchen in #6778
- Fix Windows Studio UTF-8 startup handling by @Imagineer99 in #6614
- Studio: opt-in OpenAI /v1 model auto-switch and idle keep-warm by @danielhanchen in #6392
- Fix GRPO logit scaling when model is wrapped by DDP by @ftrajkov-amd in #5955
- Fix gpt-oss offload_embedding and generate() kwargs, and guard offload_embedding on tied/vLLM models by @danielhanchen in #6774
- Add a fits-on-device filter to the model selects by @shimmyshimmer in #6802
- Studio RAG: fix RTL/Indic PDF corruption and dropped DOCX tables by @danielhanchen in #6780
- Studio: customizable RAG embedding model with HF search, settings tab reorganization by @shimmyshimmer in #6800
- Studio: self-heal a pre-#6483-fix anyio>=4.14 stuck in existing installs by @Abdul-Moiz31 in #6805
- feat: Implementation of the Portuguese (Brazil) language and VRAM/RAM monitor by @Dspofu in #6509
- Fix: skip fp16/bf16 validation for full finetuning in RL trainers by @InfoSage05 in #6813
- studio/frontend: drop developer-only /grid-test route by @danielhanchen in #5662
- [Studio] Add --with-llama-cpp-dir installer flag to reuse a local llama.cpp by @LeoBorcherding in #6472
- Add MLX-aware public Unsloth trainer API by @Lyxot in #6462
- report a complete load once llama-server is healthy by @hakanbaysal in #6790
- fast_generate: clear error for vLLM-style inputs when fast_inference=False by @danielhanchen in #6786
- CLI: Rename unsloth connect to unsloth start by @NilayYadav in #6613
- Tool-call healing (default on) and opt-in nudging for the client-tool passthrough by @danielhanchen in #6801
- Studio: multi-select export formats, portable FP8/INT8, GGUF LoRA, and source parity by @danielhanchen in #6767
- Studio: flush passthrough stream headers before upstream prefill stalls by @rodboev in #6835
- Fix TrainingArguments silently disabling unsloth gradient checkpointing by @oobabooga in #6829
- Studio: reserve CUDA context and mmproj/MTP soft overhead in the GGUF fit budget by @danielhanchen in #6718
- Fix Studio custom folders on Linux external drives by @ramisworld in #6799
- Guard Windows ROCm torchao override skip by @InfoSage05 in #6837
- Fix export-time trust_remote_code bypass in FP8/INT8/GGUF-LoRA export by @danielhanchen in #6869
- Harden Windows Pester install against missing PSGallery by @danielhanchen in #6892
- Auto Xet to HTTP download fallback in from_pretrained; share Studio's fallback via unsloth_zoo by @danielhanchen in #6638
- GRPO: sequence packing for the no-grad old/ref logp path (default-on) by @danielhanchen in #6738
- Add PrefixGrouper for GRPO: dedup the shared prompt across a group's completions by @danielhanchen in #6871
- Handle odd shapes and non-float scales in FP8BlockQuantLinear by @danielhanchen in #6848
- Scope MoE expert LoRA detection to actual MLP projection targets by @danielhanchen in #6849
- Honor an explicit sdpa or flex_attention request when flash is disabled by @danielhanchen in #6847
- Auto-enable grouped MoE on loaded / PEFT'd models via loader hook by @danielhanchen in #6727
- Respect requested 4bit/8bit for local '-bf16' directories by @danielhanchen in #6726
- Sync FORCE_FLOAT32 fallback with unsloth-zoo (gemma4, glm4_moe, qwen3_moe) by @danielhanchen in #6865
- Note bundled flash-linear-attention kernels for gated-deltanet models by @danielhanchen in #6850
- CI: pin lockfile-audit actions to commit SHAs by @anxkhn in #6902
- fix(fp8): use int64 offsets in weight_dequant_kernel by @anxkhn in #6884
- fix: map None quant method to q8_0 before lowercasing in GGUF export by @anxkhn in #6889
- fix: correct class name in SyntheticDataKit.chunk_data guard message by @anxkhn in #6901
- studio: label RAM and VRAM readouts as GiB not GB by @danielhanchen in #6895
- Fix llama3 RoPE scaling dropped on transformers v5 by @danielhanchen in #6907
- Fix ruff-format spacing drift in loader.py by @danielhanchen in #6910
- studio: tool calling + healing parity for Llama-3, Mistral, Gemma 4 on safetensors + MLX by @danielhanchen in #5620
- Studio: stop chat generation on the assistant-turn-end token (fixes Qwen3.5 loop) by @danielhanchen in #6804
- studio: deterministic backend tool-calling wiring test by @danielhanchen in #6836
- Studio: coerce tool_call arguments to dict before chat templating (fixes MLX tool follow-up error) by @danielhanchen in #6807
- Studio: Gemma tool-call streaming follow-ups + nested-XML escape fix (#6476) by @danielhanchen in #6611
- studio: tool calling for DeepSeek (R1/V3/V3.1), GLM 4.x, Kimi K2 on safetensors + MLX by @danielhanchen in #5624
- scan_packages: baseline transitive-dep drift in the supply-chain scan by @danielhanchen in #6917
- Studio: parse Mistral [TOOL_CALLS] and rehearsal tool-call shapes by @danielhanchen in #5704
- Studio: exclude mlx-lm 0.31.3 (broke gemma4/qwen3_5 QK-norm load on Apple Silicon) by @danielhanchen in #6803
- Studio chat: tool-call nudging on by default (API stays opt-in) by @danielhanchen in #6883
- Studio: close switch/cancel races during model load by @danielhanchen in #6918
- Studio: client-tool passthrough healing for safetensors and MLX by @danielhanchen in #6870
- Studio: keep the nudge wiring test collectable without the unsloth stack by @danielhanchen in #6924
- Studio: serialize the compare-mode dispatcher lifecycle to fix a start race by @danielhanchen in #6922
- Studio: apply presence_penalty on the safetensors and MLX inference paths by @danielhanchen in #6923
- Fix repeated base model downloads across checkpoint exports by @shimmyshimmer in #6896
- Studio: fix torch CUDA undefined-symbol errors from a conflicting LD_LIBRARY_PATH by @danielhanchen in #6905
- Clear stale yolo approval state on no-launch reruns by @danielhanchen in #6868
- ROCm-on-WSL: support discrete Radeon (RDNA 3/4) in WSL, not just Strix Halo by @LeoBorcherding in #6915
- Guard RoPE scaling against the transformers v5 buffer blank; honor extended RoPE factor by @danielhanchen in #6925
- Run the malware gate on the RAG embedding model before it loads by @danielhanchen in #6887
- Add RDNA 2/3/4 ROCm routing tests via a CPU-only torch spoof by @danielhanchen in #6935
- GRPO: default router_aux_loss_coef to 0 on TRL >= 1.7.0 by @danielhanchen in #6938
- Add DeepSeek-V4-Flash-GGUF to Studio with none/high/max reasoning by @danielhanchen in #6908
New Contributors
- @vineethsaivs made their first contribution in #6595
- @zrva made their first contribution in #6645
- @Abdul-Moiz31 made their first contribution in #6662
- @Cesarsk made their first contribution in #6671
- @Muhammad-Ikhwan-Fathulloh made their first contribution in #6714
- @Oscilloscope98 made their first contribution in #6629
- @DovahkiinYuzuko made their first contribution in #6705
- @rodboev made their first contribution in #6748
- @ftrajkov-amd made their first contribution in #5955
- @Dspofu made their first contribution in #6509
- @InfoSage05 made their first contribution in #6813
- @hakanbaysal made their first contribution in #6790
- @ramisworld made their first contribution in #6799
- @anxkhn made their first contribution in #6902
Full Changelog: v0.1.471-beta...v0.1.48-beta
What's Changed in Unsloth Zoo
- Fix Gemma3 compiled SFT crash (ArgsMismatchError on q_norm/k_norm) by @danielhanchen in unslothai/unsloth-zoo#804
- training_utils: respect PEFT bias training in prepare_model_for_training (#2343) by @danielhanchen in unslothai/unsloth-zoo#795
- tests: verify the MoE fused experts + attention merge (qwen3_5_moe build + model-space check, gemma4) by @danielhanchen in unslothai/unsloth-zoo#792
- Fix LoRA scaling count mismatch on merge for Qwen2.5-VL exports (#2966) by @danielhanchen in unslothai/unsloth-zoo#806
- Fix Llama/Mixtral MoE LoRA merge dropping unfused expert deltas (#5403) by @danielhanchen in unslothai/unsloth-zoo#812
- Generalize pad_token repair into a shared module by @danielhanchen in unslothai/unsloth-zoo#816
- Fix GRPO eval crash: keep gradient checkpointing buffers out of inference mode by @danielhanchen in unslothai/unsloth-zoo#805
- peft_utils: add finetune_audio_layers for Gemma 4 / Gemma 3N audio + embedder LoRA by @danielhanchen in unslothai/unsloth-zoo#814
- Allow pad-named tokens (e.g. <|vision_pad|>) as valid pad_tokens by @danielhanchen in unslothai/unsloth-zoo#831
- Apply extra_special_tokens coercion on the MLX load path by @danielhanchen in unslothai/unsloth-zoo#835
- Add imatrix option to quantize_gguf for IQ low-bit GGUF quants by @danielhanchen in unslothai/unsloth-zoo#839
- train_on_responses_only: faster filtering, safer collator and num_proc, clearer errors by @danielhanchen in unslothai/unsloth-zoo#836
- Auto-detect instruction/response parts in train_on_responses_only by @danielhanchen in unslothai/unsloth-zoo#834
- Feat(mlx): Add NEFTune (neftune_noise_alpha) for text models to MLXTrainer by @BardiaKoopah in unslothai/unsloth-zoo#824
- feat(mlx): runtime bnb dequant -> MLX affine 4-bit on Apple Silicon by @BardiaKoopah in unslothai/unsloth-zoo#815
- Feat(mlx): Add early stopping + load_best_model_at_end to MLXTrainer by @BardiaKoopah in unslothai/unsloth-zoo#822
- Feat(mlx): Wire report_to wandb/tensorboard for standalone MLXTrainer by @BardiaKoopah in unslothai/unsloth-zoo#821
- Align MLX trainer internals for public UnslothTrainer by @Lyxot in unslothai/unsloth-zoo#790
- GRPO: sequence packing for the gradient logp path (default-on) by @danielhanchen in unslothai/unsloth-zoo#840
- Fix Gemma3 processor batched tokenization (ragged padding) by @danielhanchen in unslothai/unsloth-zoo#843
- Fix MLX trainer tests stale after load_best_model_at_end + trainer internals by @danielhanchen in unslothai/unsloth-zoo#853
- Keep CUDA graphs with LoRA on vLLM >= 0.19 by @danielhanchen in unslothai/unsloth-zoo#867
- Add shared Xet to HTTP stall fallback (hf_xet_fallback, hf_cache_state) by @danielhanchen in unslothai/unsloth-zoo#829
- Dequantize FP8 dense models on merged_16bit save (fixes unsloth#4919) by @danielhanchen in unslothai/unsloth-zoo#803
- Support DoRA (use_dora=True) in the safetensors LoRA merge by @danielhanchen in unslothai/unsloth-zoo#828
- Make mxfp4 converter import resilient to a missing _cpu variant by @danielhanchen in unslothai/unsloth-zoo#826
- GRPO PrefixGrouper: shared-prefix grad path in grpo_accumulated_loss by @danielhanchen in unslothai/unsloth-zoo#868
- Keep DeepSeek-V4 hyper-connection mixers eager to stop backward inf by @danielhanchen in unslothai/unsloth-zoo#859
- Cap the fused cross entropy chunk target so chunking stays active on large GPUs by @danielhanchen in unslothai/unsloth-zoo#857
- Batch the fused MoE expert LoRA merge into one matmul on GPU by @danielhanchen in unslothai/unsloth-zoo#827
- Load prequantized bnb 4-bit MoE expert checkpoints under transformers v5 by @danielhanchen in unslothai/unsloth-zoo#856
- Optional recompute-in-backward for the v5 grouped MoE path by @danielhanchen in unslothai/unsloth-zoo#838
- Add a grouped bnb 4-bit training forward for gpt-oss experts by @danielhanchen in unslothai/unsloth-zoo#862
- Optional gate gradient identity for the grouped MoE combine by @danielhanchen in unslothai/unsloth-zoo#858
- Vendor flash-linear-attention gated-delta kernels (no pip install needed) by @danielhanchen in unslothai/unsloth-zoo#865
- Grouped-GEMM MoE forward for transformers<5 ModuleList experts by @danielhanchen in unslothai/unsloth-zoo#837
- Make float16 training work for gemma4, qwen3_moe and glm4_moe by @danielhanchen in unslothai/unsloth-zoo#866
- Route gemma-4 sliding-window layers through FlashAttention-2 by @danielhanchen in unslothai/unsloth-zoo#860
- Fix MLX notebook generate input/output compatibility by @Lyxot in unslothai/unsloth-zoo#855
- Refuse DoRA on mxfp4 packed MoE before dequant; refresh bnb4bit patch-count canary by @danielhanchen in unslothai/unsloth-zoo#871
- Skip bnb4bit per-expert MoE tests against the transformers<5 core_model_loading stub by @danielhanchen in unslothai/unsloth-zoo#876
- saving utils check both model.base_model and base_model.model by @toranb in unslothai/unsloth-zoo#95