PEFT documentation

Model merge

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.14.0).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Model merge

PEFT provides several internal utilities for merging LoRA adapters with the TIES and DARE methods.

peft.utils.merge_utils.prune

< >

( tensor: Tensor density: float method: typing.Literal['magnitude', 'random'] rescale: bool = False ) β†’ torch.Tensor

Parameters

  • tensor (torch.Tensor) —The tensor to prune.
  • density (float) —The fraction of values to preserve. Should be in [0,1].
  • method (str) —The method to use to prune. Should be one of [“magnitude”, “random”].
  • rescale (bool) —Whether to rescale the result to preserve the expected value of the original tensor.

Returns

torch.Tensor

The pruned tensor.

Prune the values of task tensors based on the method.

peft.utils.merge_utils.calculate_majority_sign_mask

< >

( tensor: Tensor method: typing.Literal['total', 'frequency'] = 'total' ) β†’ torch.Tensor

Parameters

  • tensor (torch.Tensor) —The tensor to get the mask from.
  • method (str) —The method to use to get the mask. Should be one of [“total”, “frequency”].

Returns

torch.Tensor

The majority sign mask.

Get the mask of the majority sign across the task tensors. Task tensors are stacked on dimension 0.

peft.utils.merge_utils.disjoint_merge

< >

( task_tensors: Tensor majority_sign_mask: Tensor ) β†’ torch.Tensor

Parameters

  • task_tensors (torch.Tensor) —The task tensors to merge.
  • majority_sign_mask (torch.Tensor) —The mask of the majority sign across the task tensors.

Returns

torch.Tensor

The merged tensor.

Merge the task tensors using disjoint merge.

peft.utils.merge_utils.task_arithmetic

< >

( task_tensors: typing.List[torch.Tensor] weights: Tensor ) β†’ torch.Tensor

Parameters

  • task_tensors(List[torch.Tensor]) —The task tensors to merge.
  • weights (torch.Tensor) —The weights of the task tensors.

Returns

torch.Tensor

The merged tensor.

Merge the task tensors using task arithmetic.

peft.utils.merge_utils.ties

< >

( task_tensors: typing.List[torch.Tensor] weights: Tensor density: float majority_sign_method: typing.Literal['total', 'frequency'] = 'total' ) β†’ torch.Tensor

Parameters

  • task_tensors(List[torch.Tensor]) —The task tensors to merge.
  • weights (torch.Tensor) —The weights of the task tensors.
  • density (float) —The fraction of values to preserve. Should be in [0,1].
  • majority_sign_method (str) — The method to use to get the majority sign mask. Should be one of [“total”, “frequency”].

Returns

torch.Tensor

The merged tensor.

Merge the task tensors using ties.

peft.utils.merge_utils.dare_linear

< >

( task_tensors: typing.List[torch.Tensor] weights: Tensor density: float ) β†’ torch.Tensor

Parameters

  • task_tensors(List[torch.Tensor]) —The task tensors to merge.
  • weights (torch.Tensor) —The weights of the task tensors.
  • density (float) —The fraction of values to preserve. Should be in [0,1].

Returns

torch.Tensor

The merged tensor.

Merge the task tensors using dare linear.

peft.utils.merge_utils.dare_ties

< >

( task_tensors: typing.List[torch.Tensor] weights: Tensor density: float majority_sign_method: typing.Literal['total', 'frequency'] = 'total' ) β†’ torch.Tensor

Parameters

  • task_tensors(List[torch.Tensor]) —The task tensors to merge.
  • weights (torch.Tensor) —The weights of the task tensors.
  • density (float) —The fraction of values to preserve. Should be in [0,1].
  • majority_sign_method (str) — The method to use to get the majority sign mask. Should be one of [“total”, “frequency”].

Returns

torch.Tensor

The merged tensor.

Merge the task tensors using dare ties.

< > Update on GitHub