应用PEFT / LoRA于不同模型的目标模块

11
我正在查看几个不同的使用PEFT在不同模型上的例子。LoraConfig对象包含一个target_modules数组。在一些例子中,目标模块是["query_key_value"],有时是["q", "v"],有时是其他东西。 我不太明白目标模块的值来自哪里。在模型页面的哪个位置可以找到LoRA适配模块的信息? 一个例子(针对Falcon 7B模型):
peft_config = LoraConfig(
    lora_alpha=lora_alpha,
    lora_dropout=lora_dropout,
    r=lora_r,
    bias="none",
    task_type="CAUSAL_LM",
    target_modules=[
        "query_key_value",
        "dense",
        "dense_h_to_4h",
        "dense_4h_to_h",
    ]
另一个例子(适用于Opt-6.7B型号):
config = LoraConfig(
    r=16,
    lora_alpha=32,
    target_modules=["q_proj", "v_proj"],
    lora_dropout=0.05,
    bias="none",
    task_type="CAUSAL_LM"
)
又一个(适用于Flan-T5-xxl型号):
lora_config = LoraConfig(
 r=16,
 lora_alpha=32,
 target_modules=["q", "v"],
 lora_dropout=0.05,
 bias="none",
 task_type=TaskType.SEQ_2_SEQ_LM
)
1个回答

阿里云服务器只需要99元/年,新老用户同享,点击查看详情
14
假设你加载了你选择的某个模型: model = AutoModelForCausalLM.from_pretrained("some-model-checkpoint") 然后,你可以通过打印出这个模型来查看可用的模块: print(model) 你会得到类似于这样的结果(SalesForce/CodeGen25):
LlamaForCausalLM(
  (model): LlamaModel(
    (embed_tokens): Embedding(51200, 4096, padding_idx=0)
    (layers): ModuleList(
      (0-31): 32 x LlamaDecoderLayer(
        (self_attn): LlamaAttention(
          (q_proj): Linear(in_features=4096, out_features=4096, bias=False)
          (k_proj): Linear(in_features=4096, out_features=4096, bias=False)
          (v_proj): Linear(in_features=4096, out_features=4096, bias=False)
          (o_proj): Linear(in_features=4096, out_features=4096, bias=False)
          (rotary_emb): LlamaRotaryEmbedding()
        )
        (mlp): LlamaMLP(
          (gate_proj): Linear(in_features=4096, out_features=11008, bias=False)
          (down_proj): Linear(in_features=11008, out_features=4096, bias=False)
          (up_proj): Linear(in_features=4096, out_features=11008, bias=False)
          (act_fn): SiLUActivation()
        )
        (input_layernorm): LlamaRMSNorm()
        (post_attention_layernorm): LlamaRMSNorm()
      )
    )
    (norm): LlamaRMSNorm()
  )
  (lm_head): Linear(in_features=4096, out_features=51200, bias=False)
)
在我的情况下,你可以找到包含q_proj、k_proj、v_proj和o_proj的LLamaAttention模块。这些都是可用于LoRA的一些模块。 我建议你阅读更多关于在LoRA论文中使用哪些模块的内容。

1
明白了,非常感谢! - ahron

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,