推理識別是人工智能最重要的落地應用,其他與深度學習相關的數據收集、標注、模型訓練等工作,都是為了得到更好的最終推理性能與效果。
幾乎每一種深度學習框架都能執行個別的推理工作,包括 Tensorflow、Pytorch、MXNet 等通用型框架與 YOLO 專屬的 Darknet 框架,此外還有 ONNX 開發推理平臺、NVIDIA TensorRT 加速推理引擎,也提供推理相關的 C / C++ 與 Python 開發接口,這是大部分技術人員所熟悉的方法。
在垂直應用方面,NVIDIA 的DeepStream智能分析工具是非常適合用在種類固定且需要長期統計分析的場景,包括各種交通場景的人 / 車流量分析、工業流水線質量檢測等應用,并且在早期視覺(Visualization)類推理功能之上,再添加對話(Conversation)類推理功能,讓使用范圍更加完整。
上述的推理方式通常適合在識別固定種類與固定輸入源的使用場景,在交通、工業自動化領域、無人設備等領域的使用比較普及。
但是這種方式并不適合在網絡相關的服務類應用中使用,包括在線的產品推薦、圖像分類、聊天機器人等應用,因為在線服務需要同時面對未知數量與類型的數據源,并且透過 HTTP 協議進行數據傳輸的延遲問題,也是嚴重影響用戶體驗感的因素,這是絕大部分網路服務供應商要導入 AI 智能識別技術所面臨的共同難題。
NVIDIA Triton推理服務器的最大價值,便是為服務類智能應用提供一個完整的解決方案,因此首先需要解決以下的三大關鍵問題:
1. 高通用性:
(1) 廣泛支持多種計算處理器:包括具備 NVIDIA GPU 的 x86 與 ARM CPU 設備,也支持純 CPU 設備的推理計算。
(2) 廣泛支持各種訓練框架的文件格式:包括 TensorFlow 1.x/2.x、PyTorch、ONNX、TensorRT、RAPIDS FIL(用于 XGBoost、Scikit-learn Random Forest、LightGBM)、OpenVINO、Python 等。
(3) 廣泛支持各種模型種類:包括卷積神經網絡 (CNN)、循環神經網絡 (RNN)、決策樹、隨機森林和圖神經網絡等算法。
2.部署便利:
(1) 可在橫向擴展的云或數據中心、企業邊緣,甚至 NVIDIA Jetson 等嵌入式設備上運行。
(2) 支持用于 AI 推理的裸機和虛擬化環境,包括 VMware vSphere 與基于 Docker 技術的 Kubernetes 管理機制。
(3) 可托管于多種人工智能云平臺,包括 Amazon SageMaker、Azure ML、Google Vertex AI、阿里巴巴 AI、騰訊 TI-EMS 等平臺。
3.性能優化:
(1)動態批量處理:推理優化的一個因素是批量大小,或者您一次處理多少個樣本,GPU 以更高的批量提供高吞吐量。然而,對于實時應用程序,服務的真正限制不是批量大小甚至吞吐量,而是為最終客戶提供出色體驗所需的延遲。
(2)模型并發執行:GPU 是能夠同時執行多個工作負載的計算設備,NVIDIA Triton 推理服務器通過在 GPU 上同時運行多個模型來最大限度地提高性能并減少端到端延遲,這些模型可以是相同的,也可以是來自不同框架的不同模型。GPU 內存大小是同時運行模型數量的唯一限制,這會影響GPU利用率和吞吐量。
以上是 NVIDIA Triton 推理服務器的基本特性說明,要滿足上面所列的特性,是相對復雜的內容,這是本系列文章所要為讀者逐一探索的內容,不過在講解技術內容之前,我們可以先看看有哪些比較具有代表性成功案例,能讓大家對于 Triton 推理服務器的使用場景有更進一步的了解。
案例1:微軟 Teams 會議系統使用 Triton 提升生成實時字幕和轉錄性能
微軟 Teams是全球溝通和協作的重要工具,每月有近 2.5 億活躍用戶,其 Azure 認知服務提供 28 種語言的字幕和轉錄,實時字幕功能幫助與會者實時跟蹤對話,轉錄功能方便與會者在日后回顧當時的創意或回看未能參與的會議,實時字幕對聾啞人、聽力障礙者,或者異國與會者特別有用。
底層語音識別技術作為認知服務中的一個 API,開發人員可以使用它定制和運行自己的應用程序,例如客服電話轉錄、智能家居控制或為急救人員提供 AI 助手。認知服務會生成 Teams 的轉錄和字幕,將語音轉換為文本,并識別說話人。同時也能夠識別專業術語 、姓名和其他會議背景,提高字幕的準確性。
微軟 Teams 首席項目經理 Shalendra Chhabra 表示:“這樣的 AI 模型非常復雜,需要數千萬個神經網絡參數才能識別幾十種不同的語言。但模型越大,就越難以經濟高效地實時運行。”
為了提高服務質量,微軟使用 NVIDIA Triton 開源推理服務軟件,來幫助 Teams 使用認知服務優化語音識別模型,以及認知服務所支持的高度先進語言模型,在極低的延遲狀態下提供高度準確、個性化的語音轉文本結果,同時可以保證運行這些語音轉文本模型的NVIDIA GPU充分發揮計算資源,在消耗更少計算資源的同時為客戶提供更高的吞吐量,進而降低成本。
NVIDIA GPU 和 Triton 軟件能夠幫助微軟,在不犧牲低延遲的情況下,通過強大的神經網絡,實現高準確性,確保語音-文本的實時轉換,當啟用轉錄功能時,與會者可以在會議結束后輕松補上錯過的內容。
Triton 推理服務器有助于簡化 AI 模型部署并解鎖高性能推理,用戶甚至可以為自己的應用開發自定義后端。下面三種關鍵功能,是協助微軟將 Teams 的字幕和轉錄功能擴展到更多會議和用戶的效能:
流推理:新型流推理功能—通過跟蹤語音上下語境,提高延遲、敏感性字幕的準確度,協助 Azure 認知服務合作定制語音轉文本的應用程序。
動態批量處理:批量大小指神經網絡同時處理的輸入樣本數量,通過 Triton 的動態批量處理功能,單項推理請求被自動組合成一個批次,因此能夠在不影響模型延遲的情況下更好地利用 GPU 資源。
并發模型執行:實時字幕和轉錄需要同時運行多個深度學習模型,Triton 使開發人員能夠在單個 GPU 上同時完成這些工作,包括使用不同深度學習框架的模型。
案例2:Triton 助力微信加速視覺應用,提高可靠性
本案例中,通過 NVIDIA 的 GPU 執行 Triton 推理服務器與TensorRT推理加速引擎, 幫助微信的二維碼光學識別(OCR)計算降低 46%時間,并將系統的失敗率降低 81%,同時減少 78% 的服務器使用數量。
騰訊微信是一款跨平臺的通訊工具,支持通過手機網絡發送語音、圖片、視頻和文字等。截至 2021 年 6 月,微信在全球擁有超過 12 億活躍用戶,是國內活躍用戶最多的社交軟件。
微信識物是一款主打物品識別的 AI 產品,通過相機拍攝物品,更高效、更智能地獲取信息。2020 年微信識物拓展了更多識別場景,上線了微信版的圖片搜索,打開微信掃一掃,左滑切換到 “識物” 功能,對準想要了解的物品正面,可以獲取對應的物品信息,包括物品百科、相關資訊、相關商品。
2021 年 1 月,微信發布的 8.0 版本更新支持圖片文字提取的功能,用戶在聊天界面和朋友圈中長按圖片就可以提取圖片中文字,然后一鍵轉發、復制或收藏。
在識物的過程包含檢測、圖像召回、信息提煉等環節,其中二維碼掃描的使用頻率也是非常高,主要包括識別和檢測,這兩種應用都有非常大的計算量。但原本使用 Pytorch 進行模型的推理時,遇到以下三大問題:
請求的延遲很大,影響用戶體驗感;
顯存占用很大,單張 NVIDIA T4 GPU 卡能部署的模型數比較少,導致推理請求的并發數上不去,請求失敗的概率太高,只能通過增加機器的方式來提高并發能力,業務部署成本較高。
使用的模型經常變化,而業務需要更換后的模型需要能夠快速地加速和上線部署。
為了解決上述問題,微信團隊使用 Triton 推理服務器結合 TensorRT 加速推理器的綜合方案,主要技術內容如下:
通過使用 TensorRT 對微信識物和 OCR 的模型進行加速,在都使用 FP32 的情況下,比 Pytorch 的延遲降低 50% 左右;
在 OCR 的識別和檢測階段,使用 TensorRT 結合 NVIDIA T4 GPU 的 FP16 Tensor Core,在保證精度的前提下,識別的延遲降低 50%、檢測的延遲降低 20%;
在微信識物的分類和檢測任務中,通過使用 NVIDIA T4 GPU 的 int8 Tensor Core 并結合 QAT,在滿足精度要求的前提下,進一步大幅提升了性能;
通過使用 FP16 和 int8 低精度模式,在大幅降低推理延遲的同時,大大減少了顯存的占用,在 FP16 模式下,單模型顯存占用僅占 FP32 模式的 40%–50%, 而在 int8 模式下,單模型顯存占用僅占 FP32 模式的 30% 左右。在提高單張 T4 卡上部署的模型數量的同時,大幅提高了單 GPU 的推理請求并發能力;
Triton 的動態批量處理(dynamic batch)和多實例等特性,幫助微信將在滿足延遲要求的同時,提高了系統整體的并發能力,將系統失敗降低了 81%;
TensorRT 對個別模型得到推理的加速,Triton 則對加速后的模型進行快速的部署,滿足了業務對修改后的模型進行快速部署的需求,也大大減少工程人員的工作量。
通過使用 NVIDIA 的 TensorRT 對微信識物和 OCR 的模型進行加速,在降低單次推理延遲 50% 以上的同時,節約了多達 64% 的顯存。結合 Triton 的動態批量處理和多實例的功能,OCR 的整體時延降低了 46%,系統失敗率降低了 81%。大大提高了用戶的體驗,并且服務器的數量減少了多達 78%,極大降低了服務的成本。
案例3:騰訊 PCG 使用 Triton 加速在線推理,提高設備效能
騰訊平臺與內容事業群(簡稱 騰訊 PCG)負責公司互聯網平臺和內容文化生態融合發展,整合 QQ 軟件、QQ 空間等社交平臺,和應用寶、瀏覽器等流量平臺,以及新聞資訊、視頻、體育、直播、動漫、影業等內容業務,推動 IP 跨平臺、多形態發展,為更多用戶創造海量的優質數字內容體驗。
騰訊 PCG 機器學習平臺部旨在構建和持續優化符合 PCG 技術中臺戰略的機器學習平臺和系統,提升 PCG 機器學習技術應用效率和價值,建設業務領先的模型訓練系統和算法框架,提供涵蓋數據標注、模型訓練、評測、上線的全流程平臺服務,實現高效率迭代,在內容理解和處理領域,輸出業界領先的元能力和智能策略庫。
這個機器學習平臺服務于 PCG 所有業務產品,面對上述所提到的綜合需求,有以下三大挑戰:
1.業務繁多,場景復雜:
(1) 業務開發語言包括 C++ 與 Python;
(2)模型格式繁多,包括 ONNX、Pytorch、TensorFlow、TensorRT 等;
(3)模型預處理涉及圖片下載等網絡 io;
(4)多模型融合流程比教復雜,涉及循環調用;
(5)支持異構推理;
2.模型推理結果異常時,難以便利地調試定位問題;
3.需要與公司內現有協議 / 框架 / 平臺進行融合。
基于以上挑戰,騰訊 PCG 選擇了采用 NVIDIA 的 Triton 推理服務器,以解決新場景下模型推理引擎面臨的挑戰,在提升用戶研效的同時,也大幅降低了服務成本。
NVIDIA 的 Triton 推理服務器是一款開源軟件,對于所有推理模式都可以簡化在任一框架中以及任何 GPU 或 CPU 上的運行方式,從而在生產環境中使用推理計算,并且支持多模型 ensemble,以及 TensorFlow、PyTorch、ONNX 等多種深度學習模型框架,可以很好的支持多模型聯合推理的場景,構建起視頻、圖片、語音、文本整個推理服務過程,大大降低多個模型服務的開發和維護成本。
通過將 Triton 編譯為動態鏈接庫,可以方便地鏈入公司內部框架,對接公司的平臺治理體系,符合 C 語言規范的 API 也極大降低了用戶的接入成本,借助 Python 后端和自定義后端,用戶可以自由選擇使用 C++ 或 Python 語言進行二次開發。
NVIDIA DALI是 GPU 加速的數據增強和圖像加載庫,使用 Triton 的 DALI 后端可以替換掉原來的圖片解碼、縮放等操作,Triton 的 FIL 后端可以替代 Python XGBoost 模型推理,進一步提升服務端推理性能。
借助 NVIDIA Triton 推理框架,配合 DALI / FIL / Python 等后端與 TensorRT,整體推理服務的吞吐能力最大提升 6 倍,延遲最大降低 40%。幫助騰訊 PCG 各業務場景中,以更低的成本構建了高性能的推理服務,同時更低的延遲降低了整條系統鏈路的響應時間,優化了用戶體驗,也降低了 20%-66% 總成本。
透過以上三個成功案例,就能很明顯看出,Triton 推理服務器在面對復雜的智能識別應用場景時,能發揮非常有效的整合功能,特別是模型來自不同訓練平臺時,以及面對不同前端開發語言時,更能體現其便利性。
在后面的文章會帶著大家,先從宏觀的角度來了解 Triton 推理服務器的應用架構以及所需要的配套資源,接著搭建 Triton 的使用環境,包括建立模型倉、安裝服務端/用戶端軟件,然后執行一些實用性強的基礎范例,以及結合 NVIDIA 的 TensorRT 與 DeepStream 等推理工具,讓更多開發人員能利用 Triton 整合更多 AI 推理資源。
審核編輯:湯梓紅
-
NVIDIA
+關注
關注
14文章
4978瀏覽量
102987 -
服務器
+關注
關注
12文章
9123瀏覽量
85324 -
Triton
+關注
關注
0文章
16瀏覽量
7033
原文標題:NVIDIA Triton系列文章(1):應用概論
文章出處:【微信號:NVIDIA-Enterprise,微信公眾號:NVIDIA英偉達企業解決方案】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論