使用 Pegasus-t5 预训练模型遇到问题解决

文章关注在使用中文摘要模型T5-Pegasus时遇到的tokenizer问题,提供了解决方案和下载步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景

因为大模型之前,中文摘要效果比较好的模型就是t5-pegasus,在huggingface上的预训练模型,down下来使用遇到两个问题。

问题&解决

  1. 需要手动把tokenizer相关文件进行调整到当前文件夹下,并修改data_utils 中fengshen的地址
  2. transformers 版本降低为4.29.1 否则会找不到vocab

demo 代码


from transformers import PegasusForConditionalGeneration
# Need to download tokenizers_pegasus.py and other Python script from Fengshenbang-LM github repo in advance,
# or you can download tokenizers_pegasus.py and data_utils.py in https://huggingface.co/IDEA-CCNL/Randeng_Pegasus_523M/tree/main
# Strongly recommend you git clone the Fengshenbang-LM repo:
# 1. git clone https://github.com/IDEA-CCNL/Fengshenbang-LM
# 2. cd Fengshenbang-LM/fengshen/examples/pegasus/
# and then you will see the tokenizers_pegasus.py and data_utils.py which are needed by pegasus model
from tokenizers_pegasus import PegasusTokenizer

model = PegasusForConditionalGeneration.from_pretrained("IDEA-CCNL/Randeng-Pegasus-523M-Summary-Chinese")
tokenizer = PegasusTokenizer.from_pretrained("IDEA-CCNL/Randeng-Pegasus-523M-Summary-Chinese")

text = "据微信公众号“界面”报道,4日上午10点左右,中国发改委反垄断调查小组突击查访奔驰上海办事处,调取数据材料,并对多名奔驰高管进行了约谈。截止昨日晚9点,包括北京梅赛德斯-奔驰销售服务有限公司东区总经理在内的多名管理人员仍留在上海办公室内"
inputs = tokenizer(text, max_length=1024, return_tensors="pt")

# Generate Summary
summary_ids = model.generate(inputs["input_ids"])
tokenizer.batch_decode(summary_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]

# model Output: 反垄断调查小组突击查访奔驰上海办事处,对多名奔驰高管进行约谈

<think>好的,用户问的是关于AutoModelForSeq2SeqLM的介绍。首先,我需要确认自己对这个模型的理解是否正确。AutoModelForSeq2SeqLM是Hugging Face Transformers库中的一个自动模型类,主要用于序列到序列的任务,比如机器翻译、文本摘要、对话生成等。 接下来,我得考虑用户可能的背景。用户可能有一定的机器学习基础,但可能对Hugging Face库不太熟悉,或者想快速了解如何使用这个类。需要解释清楚它的用途、特点以及基本用法,同时避免过于技术化的术语,保持简洁明了。 然后,我应该覆盖几个关键点:首先,解释什么是AutoModelForSeq2SeqLM,它的作用是什么;其次,说明它属于自动类(Auto Classes),能够根据预训练模型的名称自动加载合适的架构;然后,列举一些常见的应用场景,比如翻译、摘要等;接着,给出一个简单的代码示例,展示如何加载模型和进行推理;最后,可以提到一些流行的预训练模型,比如T5、BART等,方便用户进一步查阅。 需要注意的是,用户可能想知道为什么使用AutoModel而不是直接指定模型类,这里需要强调Auto类的便利性,特别是在处理不同预训练模型时,不需要手动更改代码。另外,要确保示例代码正确,使用正确的导入和函数调用,比如from_pretrained方法,以及生成时的参数设置。 还要检查是否有常见的误区需要提醒,例如模型和分词器的搭配使用,以及输入输出的处理方式。可能用户在实际应用中会遇到问题,比如输入格式不对或者没有处理padding,这时候在示例中最好包含处理这些步骤的代码,比如使用tokenizer进行编码和解码。 最后,总结一下AutoModelForSeq2SeqLM的优势,比如灵活性、易用性,以及如何帮助用户快速实现Seq2Seq任务。确保回答结构清晰,分点明确,方便用户理解。</think>好的!我来为你介绍一下 Hugging Face Transformers 库中的 `AutoModelForSeq2SeqLM`。 --- ### **1. 基本概念** `AutoModelForSeq2SeqLM` 是 Hugging Face Transformers 库中一个**自动模型类**,专门用于处理**序列到序列(Seq2Seq)任务**的预训练模型。它的核心功能是: - 输入一个序列(如文本) - 生成另一个相关序列(如翻译结果、摘要等) --- ### **2. 主要特点** - **自动化架构选择**:根据预训练模型名称(如 `"t5-base"`、`"google/mt5-small"`),自动加载对应的模型架构(如 T5、BART、Pegasus 等) - **支持多种任务**: - 机器翻译(如 英文 → 中文) - 文本摘要(长文本 → 简短摘要) - 对话生成(用户输入 → 系统回复) - 问答生成(问题 → 答案) - 文本重写(如 语法纠错、复述) --- ### **3. 典型用法示例** ```python from transformers import AutoTokenizer, AutoModelForSeq2SeqLM # 加载预训练模型和分词器 model_name = "t5-small" tokenizer = AutoTokenizer.from_pretrained(model_name) model = AutoModelForSeq2SeqLM.from_pretrained(model_name) # 输入文本处理 input_text = "translate English to French: Hello, how are you?" inputs = tokenizer(input_text, return_tensors="pt") # 生成输出 outputs = model.generate( inputs["input_ids"], max_length=50, # 最大生成长度 num_beams=5 # 束搜索参数 ) # 解码结果 decoded_output = tokenizer.decode(outputs[0], skip_special_tokens=True) print(decoded_output) # 输出: Bonjour, comment allez-vous ? ``` --- ### **4. 常见预训练模型** | 模型名称 | 典型用途 | 示例模型标识符 | |-----------------------|--------------------------|-------------------------------| | T5 | 文本生成、翻译、摘要 | `"t5-small"`, `"google-t5/t5-base"` | | BART | 摘要、文本生成 | `"facebook/bart-base"` | | Pegasus | 抽象摘要 | `"google/pegasus-xsum"` | | MarianMT | 机器翻译 | `"Helsinki-NLP/opus-mt-en-zh"`| | mT5 | 多语言任务 | `"google/mt5-small"` | --- ### **5. 优势** - **代码通用性**:同一套代码可适配不同 Seq2Seq 模型 - **快速实验**:无需手动修改模型架构即可切换预训练模型 - **社区支持**:直接使用 Hugging Face Hub 上数千个预训练模型 --- ### **6. 典型工作流程** 1. 输入文本 → 分词器(Tokenization) 2. 编码器(Encoder)处理输入 → 生成上下文表示 3. 解码器(Decoder)基于编码器输出 → 自回归生成目标序列 4. 输出文本 ← 分词器解码(Decoding) --- 如果有具体任务需求(如需要代码实现细节或模型选择建议),可以进一步探讨! 🚀
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值