You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在GPT文本摘要任务中同时使用LoRA与Prompt Tuning?

如何同时在PEFT中应用LoRA与Prompt Tuning技术

背景

  • LoRA:在Transformer结构中插入并学习权重矩阵降维得到的秩分解矩阵,实现模型轻量化训练。
  • Prompt Tuning:通过在模型内部编码学习软提示词,替代人工指定的硬提示,轻量化效果优于硬提示方案。

两者均可通过Hugging Face PEFT模块实现,但get_peft_model函数仅支持传入单个配置参数。要同时应用两种技术,需通过PEFT模型叠加的方式实现。

实现方案

先基于基础模型应用其中一种PEFT配置,得到的PEFT模型可作为新的基础模型,再应用另一种PEFT配置,最终得到集成两种技术的模型。

示例代码

from peft import get_peft_model, TaskType, LoraConfig, PromptTuningConfig, PromptTuningInit
import os

# 定位tokenizer路径
tokenizer_path = ""
for path, dirs, files in os.walk('/root/.cache/huggingface/hub/models--kakaobrain--kogpt'):
    for file in files:
        if file.endswith('tokenizer.json'):
            tokenizer_path = path
            break
    if tokenizer_path:
        break
print(tokenizer_path)

# 定义Prompt Tuning配置
prompt_config = PromptTuningConfig(
    task_type=TaskType.CAUSAL_LM,
    num_virtual_tokens=10,
    prompt_tuning_init=PromptTuningInit.TEXT,
    prompt_tuning_init_text="Read the following and summarize:",
    tokenizer_name_or_path=tokenizer_path
)

# 定义LoRA配置
lora_config = LoraConfig(
    task_type=TaskType.CAUSAL_LM,
    r=8, lora_alpha=32, lora_dropout=0.1,
    target_modules=['q_proj', 'v_proj']
)

# 第一步:给基础模型添加LoRA
lora_peft_model = get_peft_model(base_model, lora_config)
# 第二步:在LoRA模型上叠加Prompt Tuning
combined_peft_model = get_peft_model(lora_peft_model, prompt_config)

# 验证可训练参数(会显示两种技术的总可训练参数)
combined_peft_model.print_trainable_parameters()

关键说明

  • 叠加顺序无强制要求,也可先应用Prompt Tuning再叠加LoRA,效果一致。
  • 两种技术的可训练参数会被合并,通过print_trainable_parameters()可确认配置已生效。

内容的提问来源于stack exchange,提问作者cykim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 17:12:31