Gradio 是为机器学习模型创建可定制用户界面以测试概念验证的绝佳选择。
当你有一个特定的想法时,比如总结一篇文章,为该特定任务设计的小型专业模型与通用的大型语言模型一样出色。有趣的是,小型专业模型的运行成本更低,速度更快。
如果你愿意,你可以创建一个应用程序,聚合各种来源的新闻文章,并提供文章的摘要版本供快速浏览。或者,你可以开发一个插件,与电子邮件服务集成,自动汇总长篇电子邮件,让用户无需阅读整篇邮件就能快速掌握要点。
但你会怎么做呢?我将在本教程中为你演示,让你也能一试身手。最棒的是什么?不需要几个小时,几分钟就能搞定。
导入库
import gradio as gr
from transformers import pipeline
Gradio 是一个开源 Python 库,使用它可以在几分钟内完成很多工作,比如只需几行代码就能让用户输入数据、进行预测并可视化结果。
我们还从 Hugging Face Transformers 库中导入了管道函数,它非常适合在 NLP 中使用预训练的转换器模型。
初始化摘要管道
get_completion = pipeline("summarization", model="sshleifer/distilbart-cnn-12-6")
首先,我们将使用 sshleifer/distilbart-cnn-12-6 模型进行文本摘要,因为它是最先进的模型之一,在生成简明摘要方面具有卓越的性能和准确性。另一个因素是,如果我们使用 Transformers Pipeline 函数进行文本摘要,而不明确指定模型,它仍然会默认使用 Distilbart CNN 12-6。
最有趣的是,提高成本和速度的有效方法是创建一个性能非常相似的较小版本模型。这一过程被称为 "蒸馏",非常常见。蒸馏是指使用一个大型模型的预测结果来训练一个较小的模型。我们使用的模型(Distilbart CNN 12-6)实际上是由 Facebook 训练的大型模型(即 BART Large CNN 模型)的蒸馏版本。
由于该模型是专门为摘要化而构建的,因此让我们为输入该模型的任何文本编写一些函数,以便它能输出摘要。
创建摘要函数
def summarize(input_text):
# Generate the summary for the input text
output = get_completion(input_text)
# Extract and return the summary text
return output[0]['summary_text']
现在,我们定义了一个 summarize 函数,它将输入文本作为参数,使用初始化的摘要管道生成摘要,并返回摘要文本。该函数简化了应用程序的使用和维护。
创建 Gradio 接口
gr.close_all()
demo = gr.Interface(
fn=summarize,
inputs=[gr.Textbox(label="Text to summarize", lines=6)],
outputs=[gr.Textbox(label="Result", lines=3)],
title="Text Summarization with DistilBART-CNN",
description="Summarize text using the `sshleifer/distilbart-cnn-12-6` model!"
)
在这里,我们设置了带有输入和输出组件的 Gradio 界面,指定了摘要功能,并提供了标题和说明,以便让用户了解界面的功能。
现在,让我们启动界面,以便输入文本并接收使用 DistilBART-CNN 模型的摘要输出。
demo.launch(share=True)
它将启动这样一个界面。
现在,我们的应用程序已经启动并运行,Gradio 界面既可以在本地访问,也可以通过 Gradio 提供的实时链接访问。现在我们已经准备好进行测试了。
如果文本超过 800 字,模型就会出错。最好保持在 700-800 字之间。
这工作得很好。如果你有一些 Python 经验并使用 Gradio 为你的 AI 应用程序构建界面,你可以做很多事情。尝试这个!