NVIDIA Jarvis:一个GPU加速对话人工智能应用的框架

Introducing NVIDIA Jarvis: A Framework for GPU-Accelerated
Conversational AI Applications

实时会话人工智能是一项复杂而富有挑战性的任务。为了允许与最终用户进行实时、自然的交互,模型需要在300毫秒内完成计算。自然的相互作用具有挑战性,需要多模态的感觉整合。模型管道也很复杂,需要跨多个服务进行协调:

自动语音识别(ASR)

自然语言理解(NLU)

特定于域的实现服务

文本到语音(TTS)

今天,发布了NVIDIA Jarvis,一个用于构建对话式人工智能应用程序的端到端框架。包括针对ASR、NLU、TTS和计算机视觉的GPU优化服务,这些服务使用最先进的深度学习模型。

可以将这些技能结合起来,在应用程序中形成多模式技能。可以对数据集上的服务和模型进行微调,以使用NVIDIA NeMo获得尽可能高的精度。还可以使用NVIDIA AI工具包中的其工具来优化和构建可以大规模运行的服务。

Jarvis旨在帮助轻松快速地访问对话式人工智能功能。通过几个命令,可以通过API操作访问高性能服务并尝试多模式演示。

Jarvis framework

Jarvis是一个完全加速的应用程序框架,用于构建使用端到端深度学习管道的多模式会话人工智能服务(图1)。

Jarvis框架包括预先训练的会话人工智能模型、工具,以及针对语音、视觉和NLU任务的优化端到端服务。除了人工智能服务外,Jarvis还允许同时融合视觉、音频和其传感器输入,以在虚拟助理、多用户二值化和呼叫中心助理等应用程序中提供多用户、多上下文对话等功能。

使用Jarvis,可以很容易地微调数据上的最新模型,以便更深入地理解特定上下文。优化推理以提供在150毫秒内运行的实时服务,而在纯CPU平台上则需要25秒。

Figure 1. Jarvis is a platform for multimodal conversation AI development and deployment at scale.

特定于任务的人工智能服务和gRPC端点提供开箱即用、高性能ASR、NLU、文本到语音(TTS)和广泛的计算机视觉人工智能服务。所有这些人工智能服务都经过数千小时的公共和内部数据集训练,以达到高精度。可以开始使用预先训练的模型,或者使用自己的数据集对进行微调,以进一步提高模型性能

另一个主要组件是Jarvis Core,是一个设计用于创建复杂的、多模式的、对话式人工智能应用程序的组件。包括Jarvis对话管理器,负责以下任务:

多用户会话中的上下文切换

对话状态跟踪

使用实现引擎处理用户请求

Jarvis NLP服务返回的域、意图和实体用作对话框管理器的输入,该对话框管理器输出下一个要执行的操作和文本响应。对话框管理器与实现引擎紧密协作,后者负责检索特定于域的信息以满足用户查询并执行用户请求的命令。

图2显示了可用的三个主要构建块。

Figure 2. Jarvis components: Multimodal Skills, Core Components, basic services.

Jarvis Core还提供传感器管理和多模式融合等构建块,帮助管理同步不同传感器输入流以及启动人工智能服务的不同时间的复杂挑战。

多模式技能组件将特定于任务的服务组合起来,形成复杂的多模式服务。所有多模式应用程序都可以写在计算图中,每个节点都是一个人工智能服务。

Jarvis利用Triton为多个模型提供高效和健壮的资源分配,并在高吞吐量、低延迟和高精度方面实现高性能。

Jarvis services

为了充分利用GPU的计算能力,Jarvis基于Triton为神经网络和集成管道提供服务,这些管道在TensorRT中高效运行。

Jarvis提供的服务是通过API操作公开的,这些API操作可以使用gRPC端点进行访问,这些端点还向应用程序开发人员隐藏了所有的复杂性。

图3显示了服务器端的系统外观。gRPC API操作由负责处理所有计算机视觉、语音和自然语言处理传入和传出数据的API服务器(运行在Docker容器中)公开。

Figure 3. Jarvis services include multiple pipelines.

API服务器向Triton发送推断请求并接收结果。

Triton是在多个gpu上同时处理多个神经网络或集成管道的多个推理请求的后端服务器。
对于会话人工智能应用程序,将延迟保持在给定的阈值以下是很重要的。这通常转化为推理请求一到达就执行。要使GPU饱和并提高性能,必须增加批大小并延迟推理执行,直到收到更多请求并形成更大的批。

Triton还负责在一个请求和另一个请求之间切换网络的上下文。

Jarvis可以通过从NVIDIA NGC下载合适的模型和容器的简单脚本直接安装在裸机上,也可以通过Helm图表部署在Kubernetes上,这也是提供的。

之前提到过gRPC端点如何向应用程序开发人员隐藏系统的复杂性。下面就让快速了解一下如何与贾维斯互动。

在客户端,Python接口通过简单的Python API操作使与Jarvis服务器的通信更加容易。
例如,下面是如何创建对现有TTS Jarvis服务的请求的。

首先,导入Jarvis API:

import src.jarvis_proto.jarvis_tts_pb2 as jtts
import src.jarvis_proto.jarvis_tts_pb2_grpc as jtts_srv
import src.jarvis_proto.audio_pb2 as ja

Next, create a gRPC channel to the Jarvis endpoint:

channel = grpc.insecure_channel(‘localhost:50051’)
jarvis_tts = jtts_srv.JarvisTTSStub(channel)

Then, create a TTS request:
req = jtts.SynthesizeSpeechRequest()
req.text = “We know what we are, but not what we may be?”
req.language_code = “en-US”
req.encoding = ja.AudioEncoding.LINEAR_PCM
req.sample_rate_hz = 22050

req.voice_name = “ljspeech”
resp = jarvis_tts.Synthesize(req)
audio_samples = np.frombuffer(resp.audio, dtype=np.float32)

Training a model with your data

通过使用NVIDIA NeMo或NVIDIA传输学习工具包,可以在Jarvis中使用定制的训练模型(图4)。

Figure 4. Jarvis from training to deploying: Using NeMo or TLT, it is possible to train or fine-tune models to improve the accuracy of Jarvis services, after trained models are exported with TensorRT for optimized inference and deployed in Jarvis.

例如,为了进一步提高ASR转录文本的易读性和准确性,可能需要向ASR系统添加自定义标点和大写模型,该系统通常生成没有这些功能的文本。

从一个预训练的BERT模型开始,第一步是准备数据集。对于训练数据集中的每个单词,目标是预测以下内容:

应该跟在单词后面的标点符号。

这个词是否应该大写。

数据集准备就绪后,下一步是通过运行已提供的脚本进行训练。

当训练完成并达到所需的最终精度时,使用包含的脚本为Triton®声波风廓线仪创建模型存储库。

Jarvis文档包含了关于如何训练或微调其模型的更多细节,这里只演示了使用NeMo进行定制的众多可能性中的一种。

Deploying a model in Jarvis

最后,Jarvis是为大规模的对话人工智能而设计的。为了帮助在不同的服务器上高效地服务模型,NVIDIA使用Helm图表提供了按钮模型部署(图5)。

Figure 5. Models can be deployed in Jarvis by modifying the available Helm chart.

Helm图有几个功能:

为Jarvis服务API服务器、Triton推理服务器和用于下载和转换模型的实用工具容器从NGC中提取Docker图像。

生成Triton推理服务器模型库。

使用适当的配置启动Triton推断服务器。

将Triton推理服务器和Jarvis服务器公开为Kubernetes服务。

可以为自定义用例修改Helm图表配置。可以更改与要部署哪些模型、存储位置以及如何公开服务相关的设置。
结论

Jarvis可供选择的一组客户使用。如果有诸如虚拟助理、数字化身、多模态传感器融合(CV与ASR/NLP/TTS融合)或任何ASR/NLP/TTS/CV独立用例(如转录),那么Jarvis将在这里支持开发。

NVIDIA Jarvis:一个GPU加速对话人工智能应用的框架相关推荐

  1. [翻译] NVIDIA HugeCTR,GPU 版本参数服务器 --(10)--- 推理架构

    [翻译] NVIDIA HugeCTR,GPU 版本参数服务器 --(10)- 推理架构 文章目录 [翻译] NVIDIA HugeCTR,GPU 版本参数服务器 --(10)--- 推理架构 0x0 ...

  2. PostgreSQL GPU 加速(HeteroDB pg_strom) (GPU计算, GPU-DIO-Nvme SSD, 列存, GPU内存缓存)

    标签 PostgreSQL , GPU , heteroDB , pg_strom , CUDA , nvidia , DIO , Nvme , SSD , 列存 , GPU内存缓存 背景 Heter ...

  3. [源码解析] NVIDIA HugeCTR,GPU版本参数服务器--- (5) 嵌入式hash表

    [源码解析] NVIDIA HugeCTR,GPU版本参数服务器- (5) 嵌入式hash表 文章目录 [源码解析] NVIDIA HugeCTR,GPU版本参数服务器--- (5) 嵌入式hash表 ...

  4. C语言使用CUDA中cufft函数做GPU加速FFT运算,与调用fftw函数的FFT做运算速度对比

    目录 任务介绍 环境所需相关软件下载与安装 C语言:不调用库的GPU加速FFT代码 C语言:调用fftw库的未使用GPU的FFT代码 C语言:调用cufft库的GPU加速FFT gnuplot安装画图 ...

  5. 用于开发语音 AI 应用程序的 GPU 加速 SDK

    NVIDIA Riva 简介:用于开发语音 AI 应用程序的 GPU 加速 SDK 语音 AI 用于多种应用,包括联络中心的座席助理以增强人类座席的能力.智能虚拟助理 (IVA) 的语音界面以及视频会 ...

  6. 大力出奇迹,GPU 加速 TiDB | TiDB Hackathon 2020 优秀项目分享

    近日,由 TiDB 社区主办,专属于全球开发者与技术爱好者的顶级挑战赛事--TiDB Hackathon 2020 比赛圆满落幕.今年是 TiDB Hackathon 第四次举办,参赛队伍规模创历届之 ...

  7. 构建可扩展的GPU加速应用程序(NVIDIA HPC)

    构建可扩展的GPU加速应用程序(NVIDIA HPC) 研究人员.科学家和开发人员正在通过加速NVIDIA GPU上的高性能计算(HPC)应用来推进科学发展,NVIDIA GPU具有处理当今最具挑战性 ...

  8. 利用 GPU 加速人工智能:新型计算模式

    纽约大学本周有一场探讨 "人工智能的未来" 的年度座谈会,Yann LeCun 邀请NVIDIA 联合创始人兼首席执行官黄仁勋 (Jen-Hsun Huang)先生在座谈会上发言. ...

  9. 程序怎么启动vasp_构建可扩展的GPU加速应用程序(NVIDIA HPC)

    构建可扩展的GPU加速应用程序(NVIDIA HPC) 研究人员.科学家和开发人员正在通过加速NVIDIA GPU上的高性能计算(HPC)应用来推进科学发展,NVIDIA GPU具有处理当今最具挑战性 ...

最新文章

  1. 无人值守安装win2003+sp2的补丁
  2. 瞄准医疗数据安全四大风险 东软DBA如何绝地阻击
  3. C#(WinForm)的Show()和ShowDialog()方法介绍
  4. Pluto - iOS 上一个高性能的排版渲染引擎
  5. 设计模式_2_单例模式
  6. 天池 在线编程 最长AB子串(哈希)
  7. java 并发 变量_实例讲解Java并发编程之变量
  8. SVN的安装配置(一)
  9. 如何组织软件模块的代码结构?
  10. 以太网转DMX模块核心模块 支持ArtNet sACN DMX RDM
  11. 程序员必备的七个电脑软件
  12. oracle量子,中国科学院量子信息重点实验室
  13. 拨打上述范围的电话或手机免费
  14. jquery省市县三级联动
  15. X位的有/无符号整数
  16. Android入门篇(一)了解androidstudio开发软件
  17. RGBA和ARGB有区别吗
  18. windows7 前置耳机插孔无声音解决办法
  19. MTK Android4.0.3 ICS 添加缅甸语Myanmar
  20. 群晖安装docker utorrent简明教程-傻子看了都会

热门文章

  1. plsql配置多数据源,想换哪个换哪个
  2. spring Ioc本质
  3. mahout相关笔记
  4. python2转python3文件
  5. BERT-Pytorch demo初探
  6. LeetCode中等题之重排数字的最小值
  7. CVPR2020:端到端学习三维点云的局部多视图描述符
  8. 自动驾驶架构与实现路径
  9. node.js(四)小结
  10. 题解 P4692 【[Ynoi2016]谁的梦】