快捷方式

LoRALinear

class torchtune.modules.peft.LoRALinear(in_dim: int, out_dim: int, rank: int, alpha: float, dropout: float = 0.0, use_bias: bool = False, quantize_base: bool = False, **quantization_kwargs)[source]

LoRA 线性层,如《LoRA:大型语言模型的低秩适配》中介绍的那样。

LoRA 通过低秩近似来扰动给定层,其中只有秩分解矩阵是可训练的。在线性层中,LoRALinear 层不是 \(x \mapsto W_0x\) 而是定义为 \(x \mapsto W_0x + (\alpha / r)BAx\),其中 \(r\) 是矩阵 \(A\)\(B\) 的秩,\(\alpha\) 是一个缩放因子。与原始实现一样,我们支持在与低秩矩阵相乘之前应用 dropout。

参数:
  • in_dim (int) – 输入维度

  • out_dim (int) – 输出维度

  • rank (int) – 低秩近似的秩

  • alpha (float) – 低秩近似的缩放因子

  • dropout (float) – dropout 概率。默认值:0.0

  • use_bias (bool) – 是否在原始线性层中包含偏置。默认值:False

  • quantize_base (bool) – 是否对基础线性权重进行量化。默认值:False

  • **quantization_kwargs – 传递给 to_nf4 用于量化基础线性权重的关键字参数。有效参数示例包括 block_sizescaler_block_size,它们分别控制权重量化和缩放器量化的粒度。仅在 quantize_base 为 True 时使用。默认值 None

抛出异常:

ValueError – 如果 quantize_base 为 False,但提供了量化关键字参数。

adapter_params() List[str][source]

返回一个字符串列表,对应于模型中来自适配器的 nn.Parameter 名称。

对于 LoRA,这表示 lora_a.weight 和 lora_b.weight。

forward(x: Tensor) Tensor[source]
参数:

x (torch.Tensor) – 输入张量,形状为 (..., in_dim)

返回:

输出张量,形状为 (..., out_dim)

返回类型:

torch.Tensor

to_empty(*, device: Optional[Union[str, device, int]], recurse: bool = True)[source]

将参数和缓冲区移动到指定设备,无需复制存储。

参数:
  • device (torch.device) – 此模块中参数和缓冲区的目标设备。

  • recurse (bool) – 子模块的参数和缓冲区是否应递归地移动到指定设备。

返回:

self

返回类型:

模块

文档

查阅全面的 PyTorch 开发者文档

查看文档

教程

获取面向初学者和高级开发者的深度教程

查看教程

资源

查找开发资源并获得问题解答

查看资源