0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何使用NVIDIA Riva快速创建自己的QA应用程序

星星科技指导员 来源:NVIDIA 作者:James Sohn 2022-04-22 09:16 次阅读

你很有可能问过聪明的演讲者一个问题,比如“珠穆朗玛峰有多高?”如果你问了,它可能会说,“珠穆朗玛峰海拔 29032 英尺。”你有没有想过它是如何为你找到答案的?

问答系统是一个由信息检索( IR )和自然语言处理( NLP )组成的系统,主要负责以自然语言回答人类提出的问题。如果您不熟悉信息检索,它是一种从数据库中的资源库、网页或文档中获取查询相关信息的技术。理解这个概念最简单的方法就是你每天使用的搜索引擎。

然后,您需要 NLP 系统在 IR 系统中查找与查询相关的答案。虽然我刚刚列出了构建 QA 系统所需的内容,但从头开始构建 IR 和 NLP 并不是一项简单的任务。以下是 NVIDIA Riva 如何使开发 QA 系统变得容易。

Riva 概述

NVIDIA Riva 是一款 GPU – 加速 SDK ,用于构建使用端到端深度学习管道的多模式对话 AI 服务。 Riva 框架包括针对语音、视觉和自然语言理解( NLU )任务的优化服务。除了为您的对话 AI 服务的整个管道提供几个预先训练的模型外, Riva 的体系结构也适合大规模部署。在本文中,我将仔细研究 Riva 的 QA 功能,以及如何使用它创建自己的 QA 应用程序。

Riva 质量保证功能

要了解 Riva QA 功能的工作原理,请从 transformers ( BERT )的双向编码器表示开始。这是谷歌在 2018 年开发的一种基于 transformer 的 NLP 预训练方法,它彻底改变了 NLP 领域。 BERT 理解文本中给定单词的上下文表示。它是根据包括维基百科在内的大量数据进行预训练的。

使用预训练的 BERT ,一个强大的 NLP 引擎,您可以进一步微调它,以对许多问答对执行 QA ,就像斯坦福问答数据集( SQuAD )中的问答对一样。该模型现在可以从给定的上下文中找到自然语言问题的答案:句子或段落。图 1 显示了一个 QA 示例,其中突出显示了“重力”一词,作为对“是什么导致降水量下降?”问题的回答。在本例中,段落是上下文,成功微调的 QA 模型返回单词“重力”作为答案。

poYBAGJiAfuAeeaJAAFz-ebew9I886.png

图 1 团队数据集中一篇示例文章的问答对。

使用 Riva 创建 QA 系统

NVIDIA 的工程师和研究人员团队提供了质量保证功能,您可以直接使用 Riva 。 Riva NLP 服务提供了一组高级 API 操作,包括 QA 、 NaturalQuery 。 Wikipedia API 操作允许您获取在线百科全书 Wikipedia 上发布的文章,并使用自然语言进行查询。这就是我之前讨论过的信息检索系统。结合 WikipediaAPI 操作和 Riva QA 函数,您可以使用几行 Python 代码创建一个简单的 QA 系统。

首先安装 Wikipedia API for Python 。接下来,导入 Riva NLP 服务 API 和 gRPC ,这是 Riva 的底层通信框架。

import grpc
import riva_api.riva_nlp_pb2 as rnlp
import riva_api.riva_nlp_pb2_grpc as rnlp_srv

现在,创建一个输入查询。使用 Wikipedia API 操作获取相关文章,并定义要获取的文章数量,定义为max_articles_combine。问一个问题,“什么是语音识别?”然后打印出搜索返回的文章的标题。最后,将每篇文章的摘要添加到变量combined_summary中。

input_query = "What is speech recognition?"
wiki_articles = wiki.search(input_query)
max_articles_combine = 3
combined_summary = ""
if len(wiki_articles) == 0:
print("ERROR: Could not find any matching results in Wikipedia.")
else:
for article in wiki_articles[:min(len(wiki_articles), max_articles_combine)]:
print(f"Getting summary for: {article}")
combined_summary += "
" + wiki.summary(article)
图 2 .维基百科 API 操作获取的文章标题。

接下来,打开指向 Riva 服务器运行位置的 gRPC 通道。因为您正在本地运行 Riva 服务器,所以它是“localhost:50051”。然后,实例化NaturalQueryRequest,并向 Riva 服务器发送请求,同时传递查询和上下文。最后,打印从 Riva 服务器返回的响应。

channel = grpc.insecure_channel('localhost:50051')
riva_nlp = rnlp_srv.RivaLanguageUnderstandingStub(channel)req = rnlp.NaturalQueryRequest()
req.query = input_query
req.context = combined_summary
resp = riva_nlp.NaturalQuery(req)

print(f"Query: {input_query}")
print(f"Answer: {resp.results[0].answer}")
图 3 .查询和回答示例

概括

使用 Riva QA 和 Wikipedia API 操作,您只需创建一个简单的 QA 应用程序。如果维基百科中有一篇文章与你的查询相关,理论上你可以找到答案。想象一下,你有一个数据库,里面装满了与你的领域、公司、行业或任何感兴趣的东西相关的文章。您可以创建一个 QA 服务,该服务可以找到特定于您感兴趣领域的问题的答案。显然,您需要一个 IR 系统从数据库中获取相关文章,就像本文中使用的 Wikipedia API 操作一样。当你有了红外系统, Riva 可以帮你找到答案。我们期待着您将使用 Riva 创建的酷应用程序。

关于作者

James Sohn 是 NVIDIA 的深度学习技术营销工程师,专注于多模态对话 AI 框架 Riva 。杰姆斯获得了西北大学的机器人学硕士学位,在那里他专注于计算机视觉和人体运动建模与机器学习

审核编辑:郭婷

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • NVIDIA
    +关注

    关注

    14

    文章

    5025

    浏览量

    103268
  • 机器学习
    +关注

    关注

    66

    文章

    8425

    浏览量

    132776
  • 深度学习
    +关注

    关注

    73

    文章

    5507

    浏览量

    121299
收藏 人收藏

    评论

    相关推荐

    android手机上emulate应用程序的方法

    在Android手机上模拟(emulate)应用程序的方法通常涉及到使用Android模拟器(Emulator)或类似的工具来模拟Android环境,以便在没有实际物理设备的情况下运行和测试应用程序
    的头像 发表于 12-05 15:33 354次阅读

    AWTK-WEB 快速入门(2) - JS 应用程序

    导读AWTK可以使用相同的技术栈开发各种平台的应用程序。有时我们需要使用Web界面与设备进行交互,本文介绍一下如何使用JS语言开发AWTK-WEB应用程序。用AWTKDesigner新建一个应用程序先安装AWTKDesigner
    的头像 发表于 12-05 01:04 133次阅读
    AWTK-WEB <b class='flag-5'>快速</b>入门(2) - JS <b class='flag-5'>应用程序</b>

    AWTK-WEB 快速入门(1) - C 语言应用程序

    导读AWTK可以使用相同的技术栈开发各种平台的应用程序。有时我们需要使用Web界面与设备进行交互,本文介绍一下如何使用C语言开发AWTK-WEB应用程序。用AWTKDesigner新建一个应用程序
    的头像 发表于 11-27 11:46 238次阅读
    AWTK-WEB <b class='flag-5'>快速</b>入门(1) - C 语言<b class='flag-5'>应用程序</b>

    使用OpenVINO™ ElectronJS中创建桌面应用程序

    的用户体验。 1 应用程序概览:一种简单的背景虚化方法 这个演示展示了如何在 Node.js 环境中使用 OpenVINO 工具包实现背景虚化,并通过 Electron.js 创建的直观桌面界面进行
    的头像 发表于 11-25 11:35 206次阅读
    使用OpenVINO™ ElectronJS中<b class='flag-5'>创建</b>桌面<b class='flag-5'>应用程序</b>

    NVIDIA助力企业创建定制AI应用

    NVIDIA 近日宣布与众多技术领导者一同使用最新NVIDIA NIM Agent Blueprint以及NVIDIA NeMo和NVIDIA NIM微服务,帮助企业
    的头像 发表于 11-20 09:12 365次阅读

    IB Verbs和NVIDIA DOCA GPUNetIO性能测试

    Async 等技术,能够创建以 GPU 为中心的应用程序,其中 CUDA 内核可以直接与网卡(NIC)通信,从而绕过 CPU 发送和接收数据包,并将 CPU 排除在关键路径之外。
    的头像 发表于 08-23 17:03 652次阅读
    IB Verbs和<b class='flag-5'>NVIDIA</b> DOCA GPUNetIO性能测试

    使用NVIDIA Edify助力的服务创建3D资产和虚拟环境照明

    使用 NVIDIA Edify 助力的服务创建 3D 资产和虚拟环境照明,或是减半生成图像时间。
    的头像 发表于 08-02 15:22 547次阅读

    采用OpenUSD和NVIDIA NIM微服务创建精准品牌视觉

    全球领先的创意和制作服务机构率先采用 OpenUSD 和 NVIDIA NIM 微服务来创建精准的品牌视觉。
    的头像 发表于 08-01 14:33 445次阅读

    借助NVIDIA DOCA 2.7增强AI 云数据中心和NVIDIA Spectrum-X

    NVIDIA DOCA 加速框架为开发者提供了丰富的库、驱动和 API,以便为 NVIDIA BlueField DPU 和 SuperNIC 创建高性能的应用程序和服务。
    的头像 发表于 05-29 09:22 514次阅读

    CYW20829从Eclipse为Modustoolbox创建\"新应用程序时出现错误\"的原因?

    CYW20829]从 Eclipse 为 Modustoolbox 创建\"新应用程序时出现错误\"
    发表于 05-22 06:12

    NVIDIA Omniverse USD Composer能用来做什么?如何获取呢?

    NVIDIA Omniverse™ USD Composer(以前称为 Create)是 NVIDIA Omniverse™ 中用于构建虚拟世界的参考应用程序,允许用户进行组装、模拟和渲染大型场景。
    的头像 发表于 05-20 10:07 896次阅读
    <b class='flag-5'>NVIDIA</b> Omniverse USD Composer能用来做什么?如何获取呢?

    【从0开始创建AWTK应用程序】编译应用到RTOS平台

    AWTK是基于C语言开发的跨平台GUI框架。本系列文章介绍如何从0开始创建AWTK应用程序,包括搭建开发调试环境、使用AWTK创建Hello工程并在模拟器上运行、将AWTK应用程序移植
    的头像 发表于 03-21 08:23 636次阅读
    【从0开始<b class='flag-5'>创建</b>AWTK<b class='flag-5'>应用程序</b>】编译应用到RTOS平台

    应用程序中的服务器错误怎么解决?

    在使用应用程序时,可能会遇到服务器错误的问题。这种错误通常会导致应用程序无法正常运行 ,给用户带来不便。下面将介绍应用程序中的服务器错误及其解决方法,帮助您快速解决这一问题。
    的头像 发表于 03-12 15:13 6338次阅读

    基于NVIDIA DOCA 2.6实现高性能和安全的AI云设计

    网络平台上快速创建应用程序和服务,并启用 NVIDIA BlueField DPU 和 NVIDIA BlueField SuperNIC
    的头像 发表于 02-23 10:02 487次阅读

    使用modustoolBox为psoc4 4100S Max Pioneer Kit创建演示应用程序失败了的原因?

    不确定这是否是最好的去处。 正在尝试使用 modustoolBox 为 psoc4 4100S Max Pioneer Kit 创建演示应用程序。 具体来说,是演示 CSD 触摸板应用程序。 在构建
    发表于 01-31 08:15