快捷方式

DoRALinear

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

DoRA 线性层,如 DoRA: Weight-Decomposed Low-Rank Adaptation of Large Language Models 中所述。

DoRA(权重分解低秩适应)通过将预训练权重分解为两个分量来微调层:幅度和方向。幅度分量是一个可学习的标量向量,用于缩放每个输出通道,而通过 LoRA 修改的方向分量调整权重的方向。通过使用 magnitude 向量缩放 LoRA 更新分量 \(BAx\),DoRA 允许模型在不同的输出维度上应用不同的缩放调整。

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

  • out_dim (int) – 输出维度

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

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

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

  • use_bias (bool) – 是否在原始线性层中包含 bias。默认值: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][源代码]

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

对于 DoRA,这意味着 lora_a.weight、lora_b.weight 和 magnitude。

forward(x: Tensor) Tensor[源代码]
参数:

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

返回:

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

返回类型:

Tensor

initialize_dora_magnitude()[源代码]

DoRA 初始化幅度向量,使其输出最初与标准 LoRA 的输出完全相同。

必须在加载/初始化基础模型和 LoRA 参数后调用此方法。

引发:

RuntimeError – 如果基础参数或 LoRA 参数仍在 meta device 上。

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

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

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

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

返回:

self

返回类型:

Module

文档

访问 PyTorch 的全面开发者文档

查看文档

教程

获取适合初学者和高级开发者的深入教程

查看教程

资源

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

查看资源