拓冰建站拓冰建站
首页 / 资讯中心 / 正文

别再手动写摘要了:3步完成T5微调,长文本摘要自动生成实战

别再手动写摘要了3步完成T5微调长文本摘要自动生成实战【免费下载链接】Transformers-TutorialsThis repository contains demos I made with the Transformers library by HuggingFace.项目地址: https://gitcode.com/GitHub_Trending/tr/Transformers-Tutorials长文本手动摘要是苦差事。基于 Transformers-Tutorials 项目我们用 T5 模型在 CNN/Daily Mail 数据集上做一次 T5 微调目标是实现长文本摘要自动生成。全程只需三步选型、数据适配、训练与推理单张消费级显卡就能跑完。先看效果预期数据集里每篇article通常有五六百词而highlights参考摘要只有一三句话。微调到位后模型输出就是这种完整主谓宾、不是句子拼贴的人话——这正是生成式摘要相对抽取式的核心优势。怎么选T5摘要模型T5 vs BART vs Pegasus 摘要任务常见两条路线抽取式直接从原文挑句子快且稳但句子生硬生成式让模型自己写T5、BART、Pegasus 都走这条路。为什么最终选 T5三个理由t5-base参数量约 2.2 亿消费级显卡装得下它把摘要统一成文本到文本格式输入前面加一句summarize:就定义了任务几乎零额外代码HuggingFace 生态兼容性最好训练和推理各几行 API完整可运行的示例就放在仓库的 T5/ 目录里。加载CNN/Daily Mail数据集并预处理3个易踩的坑 CNN/Daily Mail 是摘要任务的基准数据集约 30 万篇文章配人工摘要训个小模型绰绰有余from datasets import load_dataset dataset load_dataset(cnn_dailymail, 3.0.0) # 3.0.0生成式版本 print(dataset[train][0][article][:200]) print(dataset[train][0][highlights])两个坑先说清楚默认版本是抽取式摘要只是原文句子直接拼贴做生成式摘要必须显式指定3.0.0另外每条样本只有article和highlights两个字段够用但不多。T5 只认input_ids不认文本把分词逻辑封装成函数用map批量处理from transformers import AutoTokenizer tokenizer AutoTokenizer.from_pretrained(t5-base) prefix summarize: def preprocess(examples): inputs tokenizer([prefix t for t in examples[article]], max_length512, truncationTrue) labels tokenizer(text_targetexamples[highlights], max_length150, truncationTrue) inputs[labels] labels[input_ids] return inputs encoded dataset.map(preprocess, batchedTrue)经验提示max_length512意味着超长文本只取前 512 个 token。业务上处理长篇报告的话可以提到 1024但显存占用会同步上涨改完记得看一遍 loss 曲线。怎么微调T5模型的训练参数Seq2Seq训练参数配置 ⚡训练用 Seq2SeqTrainerSeq2Seq 训练参数配置的核心就下面几行model T5ForConditionalGeneration.from_pretrained(t5-base) args Seq2SeqTrainingArguments( output_dir./t5-summarization, learning_rate2e-5, per_device_train_batch_size16, num_train_epochs4, evaluation_strategyepoch, predict_with_generateTrue, fp16True, ) trainer Seq2SeqTrainer( model, args, train_datasetencoded[train], eval_datasetencoded[validation], ) trainer.train()learning_rate设多少T5 微调取2e-5是安全起点loss 震荡就降到1e-5。显存够不够fp16混合精度下t5-base配 batch 16 在 24G 卡上比较从容。轮数为什么是 430 万样本一个 epoch 就是一万多步跑 4 轮基本收敛再加save_total_limit3防止 checkpoint 把磁盘写爆。想上 TPU 呢Transformers-Tutorials 里配套了一个荷兰语版本示例Fine_tuning_Dutch_T5_base_on_CNN_Daily_Mail_for_summarization做法是用 HuggingFace Accelerate 的Accelerator()包住训练函数模型和数据自动切分到 TPU 多核你只写纯 PyTorch 代码剩下的交给框架。更多模型示例可以在 README.md 里按目录找。摘要模型推理生成3个最影响输出的generate参数 训完之后生成一条摘要只需要一次generate()调用def summarize(text): inputs tokenizer(prefix text, return_tensorspt, max_length512, truncationTrue) out model.generate(**inputs, max_length150, num_beams4, early_stoppingTrue) return tokenizer.decode(out[0], skip_special_tokensTrue) print(summarize(dataset[test][0][article]))三个参数值得逐个试max_length150限定摘要长度太长会车轱辘话太短会掐掉关键信息按业务场景调num_beams4是束搜索宽度越大越稳也越慢多数场景 4 就够early_stoppingTrue让所有束都输出结束符后立刻截断省下一半推理时间。避坑要点推理时输入漏掉summarize:前缀模型会把你的文章当成陌生任务生成一堆答非所问的内容——这是 T5 微调后第一大 bug 来源。下一步微调之后的3个延伸方向用 LoRA 做参数高效微调显存能压到零头小卡也能训在同一数据集上跑一版 BARTA/B 对比生成质量心里有底用 FastAPI 或 Gradio 把模型包成 API 服务接到自己的报告系统里。挑一个贴合手头工作的方向接着往下挖就行。【免费下载链接】Transformers-TutorialsThis repository contains demos I made with the Transformers library by HuggingFace.项目地址: https://gitcode.com/GitHub_Trending/tr/Transformers-Tutorials创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门