嗶哩嗶哩大規模 AI 模型推理實踐

本期作者

戴彥

嗶哩嗶哩資深算法工程師

楊典

嗶哩嗶哩資深開發工程師

一、背景

二、挑戰和目標

挑戰

圖片

目標

三、InferX 推理框架 介紹

針對上述的問題,我們自研了推理框架,內部研發代號 InferX。架構圖如下所示。

通用推理框架可以拆分爲 Interpreter,  Graph Optimizer 和 Backend 等組件。除了上述組件之外,InferX 支持若干模型計算前鏈路優化,例如稀疏化和量化。

圖片

近期 InferX 迭代主要包括瞭如下幾個方面。

四、InferX 推理框架計算前鏈路

InferX 計算前鏈路指模型在上線前進行的若干離線處理,當前主要包括量化和稀疏化。

模型量化:

模型結構化稀疏:

圖片

五、使用 InferX 優化重點場景

—— 以 OCR 爲例

項目背景:

需要注意的是,本章節討論瞭如何優化一個重點場景,涉及到的技術不限於 InferX。

模型適配:

由於 OCR 中存在第三方的算子,無法直接導出,針對這一缺陷,InferX 支持了 ONNX 作爲模型的交換格式,實現了 ONNX Parser 將 ONNX 模型轉換爲圖中間表示。同時由於 OCR 中有第三方的算子可變形卷積(deformable convolution),需要在後端中添加算子的實現。後續 deformable convolution 這一技術在多個檢測場景中都得到了複用。

圖片

基於 CUDA 的可變形卷積的實現

圖片

基於結構化稀疏的模型加速

基於 CUDA 的 JPEG Decoder 優化

視頻 / 直播 OCR 資源複用和同步化改造

基於上述優化的 OCR 服務,能夠以 80% 的 GPU 利用率穩定運行,並且保證服務具有較低的 response Time。與未優化前相比,總資源數節省了 63%。

六、Triton 模型服務介紹

相比於推理框架,模型服務的關注點是不同的,更加側重於提高吞吐和並行,提升整體資源利用率。

圖片

挑戰:

針對上述問題,我們調研了常用的開源框架(Triton, TF-Serving 等),最終選擇了基於 Nvidia Triton Inference Server 的模型推理服務,它提供了以下功能:

七、Triton 模型服務

+InferX 推理框架

我們將 InferX 推理框架集成進 Triton 模型服務,則構成了 AI 模型推理的終極狀態:低延時 + 高吞吐。

圖片

推理過程:

性能收益:

八、總結

通過自研 InferX 推理框架 + Triton 模型服務部署,顯著提升了計算資源使用效率,降低資源成本,保證服務響應時間和穩定,同時降低了 ai 服務開發部署成本,更快捷地支持各類型業務落地。

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/S1047-0dLXL7Nw1tzuolgg