v0.13.0: LoRA+, VB-LoRA, and more
@kallewoof added LoRA+ to PEFT (#1915). This is a function that allows to initialize an optimizer with settings that are better suited for training a LoRA adapter.
@leo-yangli added a new method to PEFT called VB-LoRA (#2039). The idea is to have LoRA layers be composed from a single vector bank (hence "VB") that is shared among all layers. This makes VB-LoRA extremely parameter efficient and the checkpoints especially small (comparable to the VeRA method), while still promising good fine-tuning performance. Check the VB-LoRA docs and example.
New Hugging Face team member @ariG23498 added the helper function rescale_adapter_scale to PEFT (#1951). Use this context manager to temporarily increase or decrease the scaling of the LoRA adapter of a model. It also works for PEFT adapters loaded directly into a transformers or diffusers model.
@ariG23498 also added DoRA support for embedding layers (#2006). So if you're using the use_dora=True option in the LoraConfig, you can now also target embedding layers.
For some time now, we support inference with batches that are using different adapters for different samples, so e.g. sample 1-5 use "adapter1" and samples 6-10 use "adapter2". However, this only worked for LoRA layers so far. @saeid93 extended this to also work with layers targeted by modules_to_save (#1990).
When loading a PEFT adapter, you now have the option to pass low_cpu_mem_usage=True (#1961). This will initialize the adapter with empty weights ("meta" device) before loading the weights instead of initializing on CPU or GPU. This can speed up loading PEFT adapters. So use this option especially if you have a lot of adapters to load at the same time or if these adapters are very big. Please let us know if you encounter issues with this option, as we may make this the default in the future.
Unless indicated otherwise, PEFT adapters are saved and loaded using the secure safetensors format. However, we also support the PyTorch format for checkpoints, which relies on the inherently insecure pickle protocol from Python. In the future, PyTorch will be more strict when loading these files to improve security by making the option weights_only=True the default. This is generally recommended and should not cause any trouble with PEFT checkpoints, which is why with this release, PEFT will enable this by default. Please open an issue if this causes trouble.
merge_and_unload by @snarayan21 in https://github.com/huggingface/peft/pull/1978helper.rescale_adapter_scale by @ariG23498 in https://github.com/huggingface/peft/pull/1989test_vera_dtypes on XPU by @faaany in https://github.com/huggingface/peft/pull/2017TestModelAndLayerStatus device-agnostic by @faaany in https://github.com/huggingface/peft/pull/2026test_mixed_adapter_batches_lora_opt_timing on XPU by @faaany in https://github.com/huggingface/peft/pull/2021test_common_gpu.py to work on XPU by @faaany in https://github.com/huggingface/peft/pull/2031test_gpu_examples.py on XPU by @faaany in https://github.com/huggingface/peft/pull/2036tie_word_embeddings by @ltoniazzi in https://github.com/huggingface/peft/pull/2025evaluation_strategy by @muellerzr in https://github.com/huggingface/peft/pull/1664Full Changelog: https://github.com/huggingface/peft/compare/v0.12.0...v0.13.0
Fetched April 7, 2026