天天看點

NVIDIA Triton系列文章(1):應用概論

作者:麗台科技

推理識别是人工智能最重要的落地應用,其他與深度學習相關的資料收集、标注、模型訓練等工作,都是為了得到更好的最終推理性能與效果。

幾乎每一種深度學習架構都能執行個别的推理工作,包括 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 的字幕和轉錄功能擴充到更多會議和使用者的效能:

  1. 流推理:新型流推理功能—通過跟蹤語音上下語境,提高延遲、敏感性字幕的準确度,協助 Azure 認知服務合作定制語音轉文本的應用程式。
  2. 動态批量處理:批量大小指神經網絡同時處理的輸入樣本數量,通過 Triton 的動态批量處理功能,單項推理請求被自動組合成一個批次,是以能夠在不影響模型延遲的情況下更好地利用 GPU 資源。
  3. 并發模型執行:實時字幕和轉錄需要同時運作多個深度學習模型,Triton 使開發人員能夠在單個 GPU 上同時完成這些工作,包括使用不同深度學習架構的模型。

案例2:Triton 助力微信加速視覺應用,提高可靠性

本案例中,通過 NVIDIA 的 GPU 執行 Triton 推理伺服器與 TensorRT 推理加速引擎, 幫助微信的二維碼光學識别(OCR)計算降低 46% 時間,并将系統的失敗率降低 81%,同時減少 78% 的伺服器使用數量。

騰訊微信是一款跨平台的通訊工具,支援通過手機網絡發送語音、圖檔、視訊和文字等。截至 2021 年 6 月,微信在全球擁有超過 12 億活躍使用者,是國内活躍使用者最多的社交軟體。

微信識物是一款主打物品識别的 AI 産品,通過相機拍攝物品,更高效、更智能地擷取資訊。2020 年微信識物拓展了更多識别場景,上線了微信版的圖檔搜尋,打開微信掃一掃,左滑切換到 “識物” 功能,對準想要了解的物品正面,可以擷取對應的物品資訊,包括物品百科、相關資訊、相關商品。

2021 年 1 月,微信釋出的 8.0 版本更新支援圖檔文字提取的功能,使用者在聊天界面和朋友圈中長按圖檔就可以提取圖檔中文字,然後一鍵轉發、複制或收藏。

在識物的過程包含檢測、圖像召回、資訊提煉等環節,其中二維碼掃描的使用頻率也是非常高,主要包括識别和檢測,這兩種應用都有非常大的計算量。但原本使用 Pytorch 進行模型的推理時,遇到以下三大問題:

  1. 請求的延遲很大,影響使用者體驗感;
  2. 顯存占用很大,單張 NVIDIA T4 GPU 卡能部署的模型數比較少,導緻推理請求的并發數上不去,請求失敗的機率太高,隻能通過增加機器的方式來提高并發能力,業務部署成本較高。
  3. 使用的模型經常變化,而業務需要更換後的模型需要能夠快速地加速和上線部署。

為了解決上述問題,微信團隊使用 Triton 推理伺服器結合 TensorRT 加速推理器的綜合方案,主要技術内容如下:

  1. 通過使用 TensorRT 對微信識物和 OCR 的模型進行加速,在都使用 FP32 的情況下,比 Pytorch 的延遲降低 50% 左右;
  2. 在 OCR 的識别和檢測階段,使用 TensorRT 結合 NVIDIA T4 GPU 的 FP16 Tensor Core,在保證精度的前提下,識别的延遲降低 50%、檢測的延遲降低 20%;
  3. 在微信識物的分類和檢測任務中,通過使用 NVIDIA T4 GPU 的 int8 Tensor Core 并結合 QAT,在滿足精度要求的前提下,進一步大幅提升了性能;
  4. 通過使用 FP16 和 int8 低精度模式,在大幅降低推理延遲的同時,大大減少了顯存的占用,在 FP16 模式下,單模型顯存占用僅占 FP32 模式的 40%–50%, 而在 int8 模式下,單模型顯存占用僅占 FP32 模式的 30% 左右。在提高單張 T4 卡上部署的模型數量的同時,大幅提高了單 GPU 的推理請求并發能力;
  5. Triton 的動态批量處理(dynamic batch)和多執行個體等特性,幫助微信将在滿足延遲要求的同時,提高了系統整體的并發能力,将系統失敗降低了 81%;
  6. 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英偉達

繼續閱讀