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

使用Hugging Face DialoGPT模型遇警告及生成幻觉问题求助

解决DialoGPT的padding警告与重复生成问题

问题根源

  1. Padding警告:Decoder-only架构(如DialoGPT)要求左padding,若仅在初始化后修改padding_side,配置可能未完全生效;且DialoGPT默认未定义pad_token,需手动绑定为eos_token才能让左padding正常工作。
  2. 重复生成(幻觉):默认generate采用贪心搜索策略,极易导致输出重复,需通过采样参数调整随机性并添加重复惩罚。

修复代码与说明

1. 正确初始化Tokenizer

在加载tokenizer时直接指定左padding,并绑定pad_token:

from transformers import AutoModelForCausalLM, AutoTokenizer
import torch

# 初始化时直接配置padding_side,确保生效
tokenizer = AutoTokenizer.from_pretrained(
    "microsoft/DialoGPT-medium",
    padding_side='left'
)
# DialoGPT无默认pad_token,绑定为eos_token以支持padding
tokenizer.pad_token = tokenizer.eos_token
model = AutoModelForCausalLM.from_pretrained("microsoft/DialoGPT-medium")

2. 优化生成参数解决重复问题

调整model.generate的参数,开启采样并添加重复惩罚:

chat_history_ids = None
for step in range(5):
    new_user_input = input(">> User:")
    new_user_input_ids = tokenizer.encode(
        new_user_input + tokenizer.eos_token,
        return_tensors='pt'
    )
    # 拼接对话历史
    bot_input_ids = torch.cat([chat_history_ids, new_user_input_ids], dim=-1) if step > 0 else new_user_input_ids
    
    # 优化生成逻辑,避免重复输出
    chat_history_ids = model.generate(
        bot_input_ids,
        max_length=1000,
        pad_token_id=tokenizer.eos_token_id,
        do_sample=True,          # 开启采样模式,替代贪心搜索
        temperature=0.7,         # 控制生成随机性,0.5-1.0平衡连贯与多样
        top_p=0.9,               # 核采样,仅考虑概率前90%的token
        repetition_penalty=1.2   # 对已生成token施加惩罚,降低重复概率
    )
    
    # 解码并打印回复
    response = tokenizer.decode(
        chat_history_ids[:, bot_input_ids.shape[-1]:][0],
        skip_special_tokens=True
    )
    print(f"DialoGPT: {response}")

关键修改点

  • Tokenizer配置:在from_pretrained阶段直接传入padding_side='left',确保底层配置生效;绑定pad_token是左padding正常工作的必要条件。
  • 生成策略调整:通过do_sample=True开启采样,搭配temperature和top_p控制输出多样性,repetition_penalty直接抑制重复内容生成。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 05:02:44