模型:
pszemraj/long-t5-tglobal-xl-16384-book-summary
简要概述长文本,并获得类似SparkNotes的主题摘要!
使用 the base model 上的ASR进行的一个简单示例/用例是 here 。
infamous navy seals copypasta 的摘要:
在这一章中,怪物解释了他打算如何对那个侮辱他的"小婊子"实施报复。他告诉这个孩子,他是一个训练有素、经验丰富的杀手,他将利用他的武器库——包括他对互联网的访问权限——对这个小坏蛋进行正义的伸张。
虽然这只是一个粗略的例子,但你可以尝试将这段文本复制到其他摘要模型中,看到它们与理解程度的区别(即使它还不算是一个"长"文本!)。
目录
在kmfoda/booksum数据集上对 google/long-t5-tglobal-xl 进行了微调。
在这里阅读顾恩等人的论文: LongT5: Efficient Text-To-Text Transformer for Long Sequences
安装/更新transformers:pip install -U transformers
使用流水线对文本进行摘要:
import torch from transformers import pipeline summarizer = pipeline( "summarization", "pszemraj/long-t5-tglobal-xl-16384-book-summary", device=0 if torch.cuda.is_available() else -1, ) long_text = "Here is a lot of text I don't want to read. Replace me" result = summarizer(long_text) print(result[0]["summary_text"])
除了简单的推理之外,还要考虑两个附加点:调整解码参数以提高性能,以及量化以减少内存消耗。
调整参数调用summarizer时传递 other parameters related to beam search textgen 以获得更高质量的结果。
LLM.int8量化替代标题:如何让该模型在免费的协作运行时中运行推理。
通过 this PR ,现在支持在long-t5模型上使用LLM.int8。首先确保您拥有相关软件包的最新版本:
pip install -U transformers bitsandbytes accelerate
加载为8位(由后台的bitsandbytes完成的黑魔法)
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM tokenizer = AutoTokenizer.from_pretrained( "pszemraj/long-t5-tglobal-xl-16384-book-summary" ) model = AutoModelForSeq2SeqLM.from_pretrained( "pszemraj/long-t5-tglobal-xl-16384-book-summary", load_in_8bit=True, device_map="auto", )
上述内容已经在顶部链接的Colab演示中提供。
*随时间推移,将进行更严格的基于指标的比较研究,比较具有和不具有LLM.int8的波束搜索摘要。
虽然该模型似乎提高了事实的一致性,但不要把摘要当作绝对可靠的依据,而是检查那些看起来奇怪的事情。
具体来说:否定性陈述(即,该模型说:这个东西没(属性),而实际上它应该说这个东西有很多(属性))。阅读HuggingFace上的kmfoda/booksum数据集的 the original paper here 。
使用 model evaluator 将计算并在此处发布的官方结果。
请阅读上面的说明,由于训练方法,验证集上的性能看起来比测试集上的结果更好。
*评估大模型并不像看起来那么容易。正在进行更多研究。
笑。
参见 the code for my hf space Document Summarization 中的summarize.py :)
您还可以使用相同的代码将文档分割成4096等批次,并使用模型迭代处理它们。这在CUDA内存有限的情况下非常有用。
更新:请参见下面关于textsum软件包的部分。
请参阅 train with a script 和 the summarization scripts
出于这个原因,我创建了一个Python软件包工具。它叫做 textsum ,您可以使用它来加载模型并用几行代码对东西进行摘要。
pip install textsum
在Python中使用此模型的textsum包:
from textsum.summarize import Summarizer summarizer = Summarizer( model_name_or_path="pszemraj/long-t5-tglobal-xl-16384-book-summary" ) long_string = "This is a long string of text that will be summarized." out_str = summarizer.summarize_string(long_string) print(f"summary: {out_str}")
该软件包提供了易于使用的接口,用于将摘要模型应用于任意长度的文本文档。当前实现的接口包括Python API、CLI和可共享的演示应用程序。
有关详细信息、解释和文档,请参阅README(上面链接的)或 wiki
相关的模型/模型卡资料将在此处发布。
在培训期间使用了以下超参数:
*以前的训练会话使用的参数大致相似(学习率更高),由于训练时间很长,需要多次训练。