NVIDIA Jarvis:一个GPU加速对话人工智能应用的框架
NVIDIA Jarvis:一個GPU加速對話人工智能應(yīng)用的框架
Introducing NVIDIA Jarvis: A Framework for GPU-Accelerated
Conversational AI Applications
實時會話人工智能是一項復(fù)雜而富有挑戰(zhàn)性的任務(wù)。為了允許與最終用戶進行實時、自然的交互,模型需要在300毫秒內(nèi)完成計算。自然的相互作用具有挑戰(zhàn)性,需要多模態(tài)的感覺整合。模型管道也很復(fù)雜,需要跨多個服務(wù)進行協(xié)調(diào):
自動語音識別(ASR)
自然語言理解(NLU)
特定于域的實現(xiàn)服務(wù)
文本到語音(TTS)
今天,發(fā)布了NVIDIA Jarvis,一個用于構(gòu)建對話式人工智能應(yīng)用程序的端到端框架。包括針對ASR、NLU、TTS和計算機視覺的GPU優(yōu)化服務(wù),這些服務(wù)使用最先進的深度學(xué)習(xí)模型。
可以將這些技能結(jié)合起來,在應(yīng)用程序中形成多模式技能。可以對數(shù)據(jù)集上的服務(wù)和模型進行微調(diào),以使用NVIDIA NeMo獲得盡可能高的精度。還可以使用NVIDIA AI工具包中的其工具來優(yōu)化和構(gòu)建可以大規(guī)模運行的服務(wù)。
Jarvis旨在幫助輕松快速地訪問對話式人工智能功能。通過幾個命令,可以通過API操作訪問高性能服務(wù)并嘗試多模式演示。
Jarvis framework
Jarvis是一個完全加速的應(yīng)用程序框架,用于構(gòu)建使用端到端深度學(xué)習(xí)管道的多模式會話人工智能服務(wù)(圖1)。
Jarvis框架包括預(yù)先訓(xùn)練的會話人工智能模型、工具,以及針對語音、視覺和NLU任務(wù)的優(yōu)化端到端服務(wù)。除了人工智能服務(wù)外,Jarvis還允許同時融合視覺、音頻和其傳感器輸入,以在虛擬助理、多用戶二值化和呼叫中心助理等應(yīng)用程序中提供多用戶、多上下文對話等功能。
使用Jarvis,可以很容易地微調(diào)數(shù)據(jù)上的最新模型,以便更深入地理解特定上下文。優(yōu)化推理以提供在150毫秒內(nèi)運行的實時服務(wù),而在純CPU平臺上則需要25秒。
Figure 1. Jarvis is a platform for multimodal conversation AI development and deployment at scale.
特定于任務(wù)的人工智能服務(wù)和gRPC端點提供開箱即用、高性能ASR、NLU、文本到語音(TTS)和廣泛的計算機視覺人工智能服務(wù)。所有這些人工智能服務(wù)都經(jīng)過數(shù)千小時的公共和內(nèi)部數(shù)據(jù)集訓(xùn)練,以達到高精度。可以開始使用預(yù)先訓(xùn)練的模型,或者使用自己的數(shù)據(jù)集對進行微調(diào),以進一步提高模型性能
另一個主要組件是Jarvis Core,是一個設(shè)計用于創(chuàng)建復(fù)雜的、多模式的、對話式人工智能應(yīng)用程序的組件。包括Jarvis對話管理器,負責(zé)以下任務(wù):
多用戶會話中的上下文切換
對話狀態(tài)跟蹤
使用實現(xiàn)引擎處理用戶請求
Jarvis NLP服務(wù)返回的域、意圖和實體用作對話框管理器的輸入,該對話框管理器輸出下一個要執(zhí)行的操作和文本響應(yīng)。對話框管理器與實現(xiàn)引擎緊密協(xié)作,后者負責(zé)檢索特定于域的信息以滿足用戶查詢并執(zhí)行用戶請求的命令。
圖2顯示了可用的三個主要構(gòu)建塊。
Figure 2. Jarvis components: Multimodal Skills, Core Components, basic services.
Jarvis Core還提供傳感器管理和多模式融合等構(gòu)建塊,幫助管理同步不同傳感器輸入流以及啟動人工智能服務(wù)的不同時間的復(fù)雜挑戰(zhàn)。
多模式技能組件將特定于任務(wù)的服務(wù)組合起來,形成復(fù)雜的多模式服務(wù)。所有多模式應(yīng)用程序都可以寫在計算圖中,每個節(jié)點都是一個人工智能服務(wù)。
Jarvis利用Triton為多個模型提供高效和健壯的資源分配,并在高吞吐量、低延遲和高精度方面實現(xiàn)高性能。
Jarvis services
為了充分利用GPU的計算能力,Jarvis基于Triton為神經(jīng)網(wǎng)絡(luò)和集成管道提供服務(wù),這些管道在TensorRT中高效運行。
Jarvis提供的服務(wù)是通過API操作公開的,這些API操作可以使用gRPC端點進行訪問,這些端點還向應(yīng)用程序開發(fā)人員隱藏了所有的復(fù)雜性。
圖3顯示了服務(wù)器端的系統(tǒng)外觀。gRPC API操作由負責(zé)處理所有計算機視覺、語音和自然語言處理傳入和傳出數(shù)據(jù)的API服務(wù)器(運行在Docker容器中)公開。
Figure 3. Jarvis services include multiple pipelines.
API服務(wù)器向Triton發(fā)送推斷請求并接收結(jié)果。
Triton是在多個gpu上同時處理多個神經(jīng)網(wǎng)絡(luò)或集成管道的多個推理請求的后端服務(wù)器。
對于會話人工智能應(yīng)用程序,將延遲保持在給定的閾值以下是很重要的。這通常轉(zhuǎn)化為推理請求一到達就執(zhí)行。要使GPU飽和并提高性能,必須增加批大小并延遲推理執(zhí)行,直到收到更多請求并形成更大的批。
Triton還負責(zé)在一個請求和另一個請求之間切換網(wǎng)絡(luò)的上下文。
Jarvis可以通過從NVIDIA NGC下載合適的模型和容器的簡單腳本直接安裝在裸機上,也可以通過Helm圖表部署在Kubernetes上,這也是提供的。
之前提到過gRPC端點如何向應(yīng)用程序開發(fā)人員隱藏系統(tǒng)的復(fù)雜性。下面就讓快速了解一下如何與賈維斯互動。
在客戶端,Python接口通過簡單的Python API操作使與Jarvis服務(wù)器的通信更加容易。
例如,下面是如何創(chuàng)建對現(xiàn)有TTS Jarvis服務(wù)的請求的。
首先,導(dǎo)入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 = “l(fā)jspeech”
resp = jarvis_tts.Synthesize(req)
audio_samples = np.frombuffer(resp.audio, dtype=np.float32)
Training a model with your data
通過使用NVIDIA NeMo或NVIDIA傳輸學(xué)習(xí)工具包,可以在Jarvis中使用定制的訓(xùn)練模型(圖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轉(zhuǎn)錄文本的易讀性和準(zhǔn)確性,可能需要向ASR系統(tǒng)添加自定義標(biāo)點和大寫模型,該系統(tǒng)通常生成沒有這些功能的文本。
從一個預(yù)訓(xùn)練的BERT模型開始,第一步是準(zhǔn)備數(shù)據(jù)集。對于訓(xùn)練數(shù)據(jù)集中的每個單詞,目標(biāo)是預(yù)測以下內(nèi)容:
應(yīng)該跟在單詞后面的標(biāo)點符號。
這個詞是否應(yīng)該大寫。
數(shù)據(jù)集準(zhǔn)備就緒后,下一步是通過運行已提供的腳本進行訓(xùn)練。
當(dāng)訓(xùn)練完成并達到所需的最終精度時,使用包含的腳本為Triton?聲波風(fēng)廓線儀創(chuàng)建模型存儲庫。
Jarvis文檔包含了關(guān)于如何訓(xùn)練或微調(diào)其模型的更多細節(jié),這里只演示了使用NeMo進行定制的眾多可能性中的一種。
Deploying a model in Jarvis
最后,Jarvis是為大規(guī)模的對話人工智能而設(shè)計的。為了幫助在不同的服務(wù)器上高效地服務(wù)模型,NVIDIA使用Helm圖表提供了按鈕模型部署(圖5)。
Figure 5. Models can be deployed in Jarvis by modifying the available Helm chart.
Helm圖有幾個功能:
為Jarvis服務(wù)API服務(wù)器、Triton推理服務(wù)器和用于下載和轉(zhuǎn)換模型的實用工具容器從NGC中提取Docker圖像。
生成Triton推理服務(wù)器模型庫。
使用適當(dāng)?shù)呐渲脝覶riton推斷服務(wù)器。
將Triton推理服務(wù)器和Jarvis服務(wù)器公開為Kubernetes服務(wù)。
可以為自定義用例修改Helm圖表配置。可以更改與要部署哪些模型、存儲位置以及如何公開服務(wù)相關(guān)的設(shè)置。
結(jié)論
Jarvis可供選擇的一組客戶使用。如果有諸如虛擬助理、數(shù)字化身、多模態(tài)傳感器融合(CV與ASR/NLP/TTS融合)或任何ASR/NLP/TTS/CV獨立用例(如轉(zhuǎn)錄),那么Jarvis將在這里支持開發(fā)。
總結(jié)
以上是生活随笔為你收集整理的NVIDIA Jarvis:一个GPU加速对话人工智能应用的框架的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CUDA刷新:GPU计算生态系统
- 下一篇: 利用NVIDIA-NGC中的MATLAB