在IPU上使用BART Large进行文本摘要
文本摘要是人工智能自然语言处理 (NLP) 在实际应用中的最佳范例之一。
每天都会产生大量的信息,无论是在商业领域还是在科学研究等其他领域,快速理解、评估和处理这些信息的能力都极具价值。
摘要是在保留重要信息的同时生成文档的较短版本。从根本上说,它包括从原始输入中提取文本,然后生成描述原始文本要点的新文本。在某些情况下,这两个部分可能由不同的人工智能模型处理。
我们将在本文中演示如何在Graphcore(拟未)IPU上使用BART-Large运行整个摘要的过程。
什么是BART
为什么它适用于文本摘要?
在2018年,谷歌推出了BERT[1](基于Transformer的双向编码器表示),它被定义为“语言理解”模型,适用于广泛的应用,例如情感分析、文本分类和问答。当时并没有明确将摘要作为一个用例。
同年,Open-AI也在自然语言理解领域取得了进一步的突破,提出了生成式预训练(GPT)的概念。
到了2019年末,Facebook的人工智能研究人员提出了一种将双向编码器(如BERT)和自回归解码器(如GPT)结合起来的方法,并将其命名为BART,即双向自回归变换器。
根据原论文[2],预训练的创新之处在于一种新的插入方案,即在随机重新排列原始句子顺序时进行插入。作者认为当对文本生成和理解任务进行微调时,BART特别有效——这两者都是文本摘要所需要的。
在Graphcore IPU上
使用Hugging Face pipeline进行文本摘要
BART是Optimum Graphcore[3]支持的众多NLP模型之一,它是Hugging Face和Graphcore IPU之间的接口。
我们演示了在Graphcore IPU上运行BART-Large推理的文本摘要任务。
https://ipu.dev/fyVsKS
对于下面的每个代码块,您只需点击一下就能在 Paperspace中运行该代码块,并对代码/参数进行相关修改。我们将在本博客末尾介绍如何在Paperspace Gradient Notebooks以外的环境中运行该过程。
安装依赖项
模型准备
我们从准备模型开始。首先,我们要定义在IPU上运行模型所需的配置。IPUConfig是一个指定属性和配置参数的类,用于编译模型并将其放到设备上:
接下来,让我们从optimum.graphcore中导入pipeline,创建我们的摘要pipeline:
我们定义了一个输入来测试模型。
第一次运行的编译时间:~ 2:30
更快的童话故事
第一次调用pipeline的速度有点慢,需要几秒钟才能提供答案。这种情况是由于在第一次调用时对模型进行了编译。在后续的提示中,速度会快得多:
维基百科文章摘要
现在让我们使用维基百科API来搜索一些可以总结的长文本:
医疗健康记录摘要
摘要任务也可用于总结医疗健康记录(MHR)。让我们导入一个包含一些医学样本的开源数据集。
我们将重点放在标记为“文本”的医疗报告上,并从训练数据集中随机选择一个患者ID。
在非Paperspace环境中的IPU上
运行BART-Large
使用其他IPU硬件运行演示,需要启用Poplar SDK并安装相关的PopTorch wheel。有关如何启用Poplar SDK和安装PopTorch wheel的详细信息,请参阅系统的入门指南[4]。
[1]https://towardsdatascience.com/bert-explained-state-of-the-art-language-model-for-nlp-f8b21a9b6270
[2]https://arxiv.org/abs/1910.13461
[3]https://huggingface.co/docs/optimum/main/graphcore/index
[4]https://docs.graphcore.ai/en/latest/getting-started.html#getting-started
获取更多Graphcore资讯,阅读深度技术文章,并与其他创新者们一起交流,请至中国官网graphcore.cn,以及关注Graphcore微信、微博和知乎创新社区。
Graphcore中国官网
Graphcore官方微信
Graphcore微博创新社区
Graphcore知乎创新社区
点击阅读原文,查看英文blog。
微信扫码关注该文公众号作者