lora_qwen2¶
- torchtune.models.qwen2.lora_qwen2(lora_attn_modules: List[Literal['q_proj', 'k_proj', 'v_proj','output_proj']], apply_lora_to_mlp: bool = False, apply_lora_to_output: bool = False, *, vocab_size: int, num_layers: int, num_heads: int, num_kv_heads: int, embed_dim: int, intermediate_dim: int, max_seq_len: int, attn_dropout: float = 0.0, norm_eps: float = 1e-05, rope_base: float = 1000000.0, tie_word_embeddings: bool = False, lora_rank: int, lora_alpha: float, lora_dropout: float = 0.0, use_dora: bool = False, quantize_base: bool = False) TransformerDecoder [source]¶
根据传入的配置返回应用了 LoRA 的 Qwen2 版本(即
Qwen2TransformerDecoder()
的一个实例)。- 参数:
lora_attn_modules (List[LORA_ATTN_MODULES]) – 列表,指定每个自注意力块中应应用 LoRA 的线性层。选项包括
{"q_proj", "k_proj", "v_proj", "output_proj"}
。apply_lora_to_mlp (bool) – 是否将 LoRA 应用于每个 Transformer 层中的 MLP。默认值:False
apply_lora_to_output (bool) – 是否将 LoRA 应用于模型的最终输出投影。默认值:False
vocab_size (int) – 词汇表中的 token 数量。
num_layers (int) – Transformer 解码器中的层数。
num_heads (int) – 查询头数量。对于 MHA,这也代表键和值头的数量
num_kv_heads (int) – 键和值头的数量。用户应确保 num_heads % num_kv_heads == 0。对于标准 MHA,设置为 num_kv_heads == num_heads;对于 GQA,设置为 num_kv_heads < num_heads;对于 MQA,设置为 num_kv_heads == 1。
embed_dim (int) – 自注意力的嵌入维度
attn_dropout (float) – 传递给 scaled_dot_product_attention 的 dropout 值。默认值:0.0
intermediate_dim (Optional[int]) – MLP 的中间维度。如果未指定,将使用
scale_hidden_dim_for_mlp()
计算。norm_eps (float) – RMS 范数中的 epsilon 值。
rope_base (float) – RoPE 嵌入的基周期。
tie_word_embeddings (bool) – 模型的输入和输出词嵌入是否应共享。
lora_rank (int) – 每个低秩近似的秩
lora_alpha (float) – 低秩近似的缩放因子
lora_dropout (float) – LoRA dropout 概率。默认值:0.0
quantize_base – (布尔值): 是否量化基础模型权重。仅应用于应用 LoRA 的线性层中的基础权重。当前不支持对最终输出线性投影进行量化。
- 返回值:
应用了 LoRA 到每层部分注意力投影的 Qwen2 模型实例。
- 返回值类型:
- 抛出:
ValueError – 如果
apply_lora_to_output
和tie_word_embeddings
同时为真。