實時高密度AI輔助視頻編碼的ASIC解決方案

做者 / 周炎均算法

整理 / LiveVideoStack服務器

你們好,我是周炎均,NETINT的技術總監和軟件架構師。很高興有機會可以和你們交流NETINT的實時高密度AI輔助視頻編碼的ASIC解決方案。首先,請容許我簡單介紹一下NETINT Technologies Inc.。NETINT是一家專一於新型智能存儲和視頻/圖像編解碼解決方案的科技公司,在溫哥華、多倫多和上海都設有研發中心。NETINT自主設計的SoC可提供基於ASIC的超大規模、超高密度、超低延遲的視頻解決方案,咱們的T系列視頻轉碼器產品已被全球衆多頂級大公司所使用。網絡

實時高密度AI輔助視頻編碼的ASIC解決方案

接下來,我要談一談基於ASIC的高密度AI輔助視頻編碼解決方案,以上是本次演講的議程。我會首先講解一些咱們正在設計的ASIC解決方案的典型應用場景,雖然這些應用場景並不新穎,可是經過使用ASIC解決方案,它們將會變得更加具有經濟性、高效性和可大規模實用性。其後,我會講解如何使ASIC解決方案更具適應性——即如何確保它有較長的產品壽命,而且在不一樣的操做系統中能夠更易於使用,以及如何方便高效地集成到不一樣的應用上。我還會講述如何擴展ASIC方案,包括在服務器內部擴展硬件加速器的容量,或在服務器外部擴展容量。同時,咱們也會探討一些有關下降延遲的話題。架構

1 案例分析

1.1 AI輔助的雲上感興趣區域(ROI)編碼ide

實時高密度AI輔助視頻編碼的ASIC解決方案

第一個典型的案例是人工智能輔助的雲上感興趣區域編碼。工做流程一般是先使用DNN引擎來識別感興趣的區域,並生成興趣區域圖。在這個例子中,咱們簡單地使用一我的臉檢測模型來框出人臉,邊界框座標就是ROI佈局區域,這個ROI區域會反饋到編碼器,而後由編碼器經過對興趣區域使用較小的QP,從而爲該區域保留更多詳細信息。使用ASIC解決方案,能夠有效減小此類案例的延遲,由於咱們把視頻編碼器和DNN引擎搭配使用,極大地簡化了總體工做流程,可以實時高效地執行此類操做。函數

1.2 針對場景和視頻類別的AI輔助視頻編碼工具

實時高密度AI輔助視頻編碼的ASIC解決方案

另外一個典型的用例是針對不一樣場景或視頻類別的AI輔助視頻編碼。一般狀況下, 這類編碼流程是使用DNN引擎對輸入視頻進行分類,並生成一組編碼參數,而後使用新參數調整或從新配置編碼器,可能涉及的適應性參數包括:階梯分辨率/比特率、CRF值、GOP結構等。在流媒體開始大規模流行前,視頻ABR梯形圖須要預先編碼,從經濟性上講僅適用於預編碼和視頻點播之類的應用場景。如今,經過ASIC解決方案所獨具的實時編碼能力,就可實如今直播過程當中應用此類技術。佈局

1.3 使用NSFW內容檢測的實時流媒體性能

實時高密度AI輔助視頻編碼的ASIC解決方案

使用NSFW(不宜瀏覽內容)內容檢測實時流媒體,指的是經過NSFW識別媒體中所包含的色情、暴力之類不宜瀏覽的內容。經過對輸入媒體流的解碼,使用DNN引擎進行NSFW檢測,若是在媒體中發現此類內容,系統會向上層報告NSFW事件,而上層會下達模糊或直接阻止此類內容的指令,在完成編輯以後再發送視頻到編碼器進行真正的編碼。ASIC解決方案可有效減小此類處理過程當中的延遲,簡化了工做流程,而且具有實時性。ASIC解決方案使複雜的AI輔助視頻編碼案例,具備了可擴展性、可適應性和經濟性。測試

2 適應性 – 如何確保產品使用週期

實時高密度AI輔助視頻編碼的ASIC解決方案

再來談談產品的適應性,即如何延長產品壽命。開發芯片是一筆很大的投資,僅研發費用就高達數千萬美圓,這個產品可能須要幾年的時間才能成熟。咱們但願產品可以在市場上長期銷售,這樣的話投資纔是合理的。對於NETINT來講,咱們的新一代芯片具有如下功能,這些功能將使它在將來很長一段時間內,成爲一款卓越的視頻和人工智能應用加速器。NETINT的芯片支持絕大多數流行的編解碼器如:AVC HEVC/HEIF AV1等,同時也支持LCEVC。它還支持HDR,實際上,是全套的HDR技術,包括HDR10/HDR10+/HLG/Dolby Vision。它具有支持高達8K@60fps的性能,是AR/VR應用的理想選擇。支持子幀低延遲,支持高達x265的慢速預設質量,支持視頻2D處理,包括縮放、疊加等。它還支持片上DNN推導。這是一款同時具備AI引擎和編解碼器引擎的芯片。

2.1 如何實現最大互操做性

實時高密度AI輔助視頻編碼的ASIC解決方案

適應性的另外一個方面是——如何實現最大的互操做性,如何確保您的解決方案能夠在不一樣的操做系統中使用。NETINT擁有一項已得到專利的解決方案——使用NVMe做爲主機到硬件加速器的設備接口。NVMe是非易失性內存接口協議,旨在用於基於PCIe的存儲設備,例如SSD(固態磁盤),它還能夠擴展到支持可計算型存儲。Linux內核和Windows都嵌入了具有穩定性和相關性能的NVMe驅動程序,當設備經過NVMe與主機對話時,不須要爲硬件加速器安裝定製的內核驅動程序,Windows會自動獲取支持,不須要費時開發對應的驅動程序。一樣,它也支持Android(安卓),由於安卓系統使用的是Linux內核,支持NVMe還意味着你能夠在NVMe-oF協議之上,進行平行擴展。平行擴展意味着能夠在服務器外部擴展容量,稍後咱們詳細討論這個話題。同時,支持NVMe還使咱們可以將存儲功能與硬件加速器進行實際有效地合併。NETINT即將發佈同時具備SSD存儲功能和視頻轉碼功能的系列產品,且該產品旨在爲邊緣(Edge)部署應用場景而設計,如:基站和邊緣服務器。另外一方面,若是採用傳統的方法,就須要設計本身專用的主機設備接口,必須自主定製的內核驅動程序,這常常致使在不一樣操做系統中引起各類不兼容的問題,而且很難支持Windows系統。

2.2 如何確保易於集成

實時高密度AI輔助視頻編碼的ASIC解決方案

爲了易於整合,當設計一個ASIC解決方案時,咱們須要考慮如何確保它易於集成到現有的工做流程中。實際上,目前你們都廣泛使用FFmpeg來進行視頻編解碼和視頻過濾。所以,開發適配的FFmpeg插件是目前業內的首選。視頻編碼器/解碼器(AVC / HEVC / AV1 / LCEVC)均具備專屬的FFmpeg/ Libavcodec插件,各類視頻2D操做(如縮放、覆蓋、轉置、裁剪),也都有專屬的FFmpeg / Libavfilter插件。然而,傳統意義上人工智能推導(AI inferences)是獨立於視頻處理的,一般具備獨立的工做流程。NETINT的ASIC解決方案容許在同一芯片上,同步運行AI推導和視頻編解碼。咱們還將開發用於AI推導的FFmpeg插件,其中包括特徵圖的生成(用於ROI編碼)和NSFW(不宜瀏覽內容)檢測等。此AI運做性能將同時集成FFmpeg libavfilter插件、Libavcodec插件和Libavfilter插件。

NETINT軟件棧創建在NETINT固件之上,固件與主機經過NVMe接口通訊,因此在此基礎之上,就可使用操做系統通用的NVMe驅動程序。並且用戶可使用咱們提供的徹底開源和免費的Libnetint函數庫,自主對其進行自定義設置,從而實現針對本地系統特性的從新編譯,以進一步實現最大化互操做性。Libnetint函數庫包含libavcodec / libavfilter插件,咱們還提供了可自定義的編碼器控制插件模塊,此模塊會提供一些碼控以及2-pass編碼的示例代碼,用戶能夠把這個代碼從新編譯爲適配的專屬算法。

3 可拓展性

3.1 用ASIC解決方案實現高密度

實時高密度AI輔助視頻編碼的ASIC解決方案

可擴展性,即如何擴展ASIC解決方案的容量。NETINT和Tirias Research近期發佈了一份的白皮書《Video & Interactive Media at Cloud Edge》。這是一篇很棒的論文,我強烈建議你們去NETINT的網站下載並看一看。上圖來自該論文,顯示了在TCO(Total Cost of Ownership / 總擁有成本)方面,搭載了NETINT基於ASIC解決方案的編碼服務器的運營成本是基於GPU的編碼服務器的1/2,是基於軟件或基於CPU的編碼服務器的1/10;在功耗或碳排放方面,NETINT的ASIC解決方案大約是基於GPU的服務器的1/4,是基於軟件或CPU的編碼服務器的1/20;密度方面,NETINT的ASIC解決方案能夠在一臺服務器上處理80x1080p30的媒體流,是基於GPU的編碼服務器的兩倍,是基於軟件或CPU的編碼服務器的10倍。咱們管向上擴展到服務器內部的編碼容量稱爲垂直擴展,NETINT的ASIC解決方案能夠在服務器內部達到極高的應用密度,實際案例中,咱們有客戶使用2U服務器,每一個服務器搭載24個NETINT Codensity視頻編碼器,能夠實現192路實時1080p30編碼流。

3.2 NVMe-oF協議下的可組合基礎設施

實時高密度AI輔助視頻編碼的ASIC解決方案

上圖顯示的是平行擴展。如前文中提到的,NETINT的ASIC解決方案採用NVMe做爲主機到設備的接口,這使咱們可以利用NVMe-over-fabrics技術來擴展服務器外部的硬件加速器容量。NVMe-oF是存儲行業用於平行擴展(即在服務器外部擴展)的解決方案,它可靠、低延遲且技術成熟。經過對ASIC硬件加速器執行相同的擴展技術能夠極大地節省沒必要要的成本投入。在這個示例中,一個機櫃有多個計算節點以及多個帶有視頻轉碼AI+DNN加速器的服務器。計算節點經過以太網或光纖通道等與硬件加速器節點相鏈接,從而使全部硬件加速器在全部計算節點或服務器之間共享。儘管物理上它們並不在計算服務器之中,但這項技術容許在一組服務器之間共享視頻轉碼器及DNN引擎的資源池。所以,用戶無需擔憂卡的外型、哪一個服務器能插什麼樣的卡,以及須要爲每一個服務器分配多少轉碼器或AI的算力。這些顧慮都可經過一些配置工具來指定和分配視頻編解碼器+AI算力從而組成一個專屬服務器,這就是爲何它被稱爲可組合型基礎設施。

4 延 遲

4.1 如何下降延遲

實時高密度AI輔助視頻編碼的ASIC解決方案

咱們要探討的第四個主題是延遲,這個話題將涵蓋多個方面來說解。低延遲是AR/VR和其餘交互式視頻應用的關鍵影響因素。5G技術的成熟和邊緣計算的大規模部署將有效減小網絡延遲,而使用ASIC解決方案,還能夠在此基礎上極大地減小視頻編碼和DNN推導延遲。目前有幾種通用技術可減小視頻編碼延遲,例如去掉lookahead。若是你使用過x265,你可能知道它的medium預置啓用了lookahead,這會帶來至少20幀的延遲。然而,NETINT的T408視頻編碼器能夠在不使用lookahead的狀況下實現x265 medium質量,這就大大減小了此類延遲。而在某些應用程序中,例如視頻會議,你可能但願禁用B幀來進一步減小延遲。還有一些技術更與ASIC解決方案相關,下面我將在詳細說明一下這些技術,包括:

  • 同芯片DNN推導和視頻解碼/編碼
  • 經過控制渲染和編碼的時間來減小延遲
  • 經過預留空間的編碼能力減小延遲
  • 經過SRIOV虛擬化減小延遲
  • 經過硬件編碼器得到更好的延遲一致性
  • 經過軟件編碼實現子幀延遲

4.2 經過同一芯片和編解碼器下降延遲

實時高密度AI輔助視頻編碼的ASIC解決方案

AI和視頻編碼器集成。在NETINT的下一代芯片中,咱們的視頻編/解碼器 AI都將集成於同一芯片上,這可讓用戶在同一個芯片上實現一些複雜的AI 輔助編碼,例如,實時流解碼——當源流中的視頻流進來時,YUV數據保存在芯片中,而後進行擴展,執行YUV/RGB轉換和DNN推導,並將計算結果傳回主機。主機將生成ROI圖,或者設置另外一組編碼參數供使用。新參數將做爲幀元數據發送到編碼引擎,也能夠經過一些緩衝進行解碼,並將解碼後的YUV緩衝區和原始YUV也導入編碼器,這樣就可使編碼器對芯片內生成的感興趣區域進行編碼,而後由主機傳輸出去。在同一芯片上經過編解碼器壓縮和AI推導從而完成全部數據處理流程,這將極大地提高工做效率並顯著減小延遲。

4.3 經過協調編碼時間下降延遲

實時高密度AI輔助視頻編碼的ASIC解決方案

使用ASCI方案也可在保持每一個流很是低的延遲的同時實現滿容量,這裏以8個1080p30流編碼爲例。假設有8幀來自8個不一樣的流同時到達編碼器,而編碼引擎只有一個,則它必須逐幀地進行編碼,這樣每一幀都須要4ms。所以,在此狀況下編碼延遲至少爲32ms,由於必須等待其餘的流完成編碼後才能對下一個流進行編碼,這種狀況咱們稱爲不協調編碼。可是,若是能夠進行協調編碼,則能夠同時從8個不一樣的流中分離出8幀,儘管編碼引擎仍在逐幀進行編碼,每幀完成編碼一樣須要4ms,但由於是同時對分離出的8個幀進行編碼因此對於每一個流來講,完成編碼所需的延遲也是的4ms。考慮到其餘的系統消耗的話,總體完成所需的延遲大概是6ms到7ms,這樣的延遲在實際應用場景中是很是低的。因此,若是應用程序可以控制編碼的時間,並在確保容量的同時實現低延遲,這將是一個很是具有經濟性和競爭力的解決方案。

4.4 經過預留空間編碼下降延遲

實時高密度AI輔助視頻編碼的ASIC解決方案

然而,在許多狀況下,咱們沒法有效控制編碼時間。在實時流傳輸的狀況下,應用程序一般沒法控制幀到達的時間,所以沒法指示開始編碼的時間。可是,使用ASIC解決方案,能夠對延遲敏感、又沒法控制時序的應用程序,使用預留空間編碼的功能。上圖是咱們使用NETINT的T408轉碼器得到的測試結果,咱們將1個流、2個流、5個流或8個流1080p放在同一個卡上,每個都以它們能達到的最大速度運行。可見,流的數量越少,延遲就越小。這是意料之中的,由於流越少,延遲數也就越好,關鍵在於NETINT的T408轉碼器能夠同時處理8個1080p30的流。經過ASIC方案,使得預留空間編碼這種「奢侈」的能力具備可行性,由於ASIC解決方案的密度或容量是CPU或軟件解決方案的10倍。

4.5 經過SRIOV下降虛擬化延遲

實時高密度AI輔助視頻編碼的ASIC解決方案

不少時候,必須在虛擬化環境中運行新的應用程序。當編碼在虛擬機中啓動時,一般須要使用SRIOV標準,繞過虛擬機監視器以進一步減小延遲。在上圖這個例子中,NETINT卡提供了多個PCIe虛擬功能,每一個虛擬功能都鏈接到一個虛擬機上,能夠看到每一個虛擬機中都有一個虛擬NVMe設備,即虛擬編碼器。在虛擬CPU上運行的應用程序,能夠經過NVMe設備進行編碼。當編碼命令或編碼數據發送到NVMe設備時,會直接使用PCIe的虛擬功能,並將旁路虛擬機監視器傳遞給設備,如此就會在虛擬機上得到與在主機上相同的延遲。

4.6 延遲一致性 — ASIC vs Software

實時高密度AI輔助視頻編碼的ASIC解決方案

這裏我想談談延遲一致性。與軟件編碼器相比,ASIC解決方案提供了更好的延遲一致性。使用ASIC解決方案,視頻內容、視頻編解碼器、比特率、編碼延遲等這類因素對最終的編碼延遲時間所形成的的影響並無太大變化。無論是定位視頻仍是相位,編碼時間都差很少。相反的,軟件編碼器的延遲時間則隨視頻幀的複雜性會產生大幅度變化,且AVC / HEVC / AV1各自佔用不一樣的CPU資源進行編碼,編碼時間或延遲時間也將很是不一樣。對於不一樣的比特率,軟件編解碼器一般有不一樣的延遲。而ASIC編碼器一般不會出現此問題。延遲一致性與已知圖像延遲同樣重要,這就是爲何對延遲敏感的應用程序應使用ASIC的主要緣由之一。

4.7 子幀延遲

實時高密度AI輔助視頻編碼的ASIC解決方案

我今天要講的最後一個與延遲相關的主題是子幀延遲——延遲小於幀間隔。一個1080p30視頻流的幀間隔是33ms,子幀延遲就是編碼一幀的延遲須要小於33ms。NETINT的T408轉碼器能夠處理1080p@240fps,編碼引擎能夠每4ms對一幀進行編碼。所以,實現1080p的子幀延遲並不難,咱們甚至能夠對整個座標系進行編碼。固然,正如我在前文中所述,當以最大容量進行編碼時,須要控制編碼器時序以免衝突,或者須要預留空間以減小衝突。不過,對於1080p的低分辨率來講,採用全幀編碼便可實現子幀延遲。對於更高的分辨率,例如4k,編碼時間一般與幀間隔至關。以4k流爲例,對一幀進行編碼大約須要15ms,有時原視頻數據傳輸時間也與幀間隔至關。在這種狀況下,須要使用子幀編碼,全幀編碼是指編碼器接收到一個完整的幀後對幀進行編碼,而後輸出整個編碼幀。子幀編碼則指編碼器在接收數據時開始編碼,並在切片生成時就開始輸出切片,子幀編碼容許數據傳輸在很大程度上與編碼並行運行,從而實現子幀延遲。

5 要點總結

實時高密度AI輔助視頻編碼的ASIC解決方案

這次演講的主題是:用於實時高密度AI輔助編碼的ASIC解決方案,涵蓋了4個主要方面——應用案例、適應性、可擴展性和延遲。這裏有3個要點,但願能給你們帶來一些思考。

首先,ASIC解決方案是低TCO、低延遲、高適應性的,支持高密度實時AI輔助編碼應用,它使AI智能輔助編碼更經濟實用;其次,使用NVMe做爲主機到設備的接口,能夠最大限度地提升互操做性,它能夠經過平行擴展或可組合的基礎設施技術來擴展服務器外部的編碼和人工智能算力;第三,使用ASIC解決方案能夠實現低延遲和延遲一致性,經過將DNN引擎與編碼器集成、用協調編碼時序避免衝突、用預留空間編碼來減小衝突、用SRIOV等技術減小虛擬化中的延遲、並用子幀編碼來實現高分辨率的子幀延遲。

相關文章
相關標籤/搜索