智能化編碼面臨的算力瓶頸
圖中是一個視頻轉碼推流的一般性流程圖。主播將視頻上傳到上行CDN,然后再由視頻處理中心進行各種前處理,包括內容理解,審核,編輯,增強和超分,然后進行編碼,再推送到下行CDN,供觀眾觀看。
紅色框部分都是和AI相關的部分。智能化編碼中,AI所需算力已經超過編碼本身。1080p的數據超成4K,編碼只需要20幾個物理核,但是如果要超分,就需要一張GPU卡。一張GPU卡5000塊一個月,對比下來成本優勢一目了然。
根據相關視頻企業公開的財報,視頻轉碼和帶寬的成本占到公司全年收入的10%左右。隨著AIGC的發展,未來肯定不局限于10%,因此成本問題是我們的痛點之一。
CPU全鏈路智能化編碼的優勢就在于成本節約,運維簡單。下面舉一個更具體的例子:
我們都知道轉碼方式有很多種,但CPU有兩個不可替代的優勢:1.高靈活性;2.高復用性。CPU的升級幾乎沒有成本,只需升級一下軟件部分即可,以云為基礎,申請一個虛擬主機,無論是docker還是container都可以隨用隨放,十分自由靈活,成本很低。
由于超分部分對算力的要求非常高,需要通過GPU來輔助,但同時也會引發一些問題:客戶將高要求的AI負載遷移到GPU上,將編碼和前處理完全分離。這就像在一間屋子里解碼——發送到另一間屋子進行前處理——再轉回來編碼。這不僅讓流程變得冗長,也對運維造成了極大負擔,數據的反復調度也造成了一定時延的增加。
CPU全鏈路智能化編碼正是解決了這一痛點。
接下來會介紹英特爾第四代至強可擴展處理器及其內置的AI加速器AMX,以及如何利用AMX和英特爾成熟的軟件棧和工具鏈幫助視頻編解碼工作者,打造全鏈路智能化編碼。
據最新的統計數據,英特爾至強服務器在中國市場的數據中心的占有率保持在80%以上,可以說至強服務器是數據中心的基石。第四代至強一個重要的革新就是內置了數個硬件加速器,用于不同應用場景的性能加速,例如之前需要外置的PCIE插卡就已經內置在CPU內部。
從左往右第一個AMX適用于AI;QAT負責壓縮、解壓和加解密;DLB負責Load Balance,CDN負責負載均衡,自動dispatch到閑散的資源上;DSA負責內存拷貝,不需要CPU參與,異步拷貝不僅速度快,而且不占用CPU內存;IAA負責存內分析,更多和數據庫相關,IAA可以在不解壓數據的情況下分析數據。
AMX的全稱是Advanced Matrix eXensions,高級矩陣擴展指令集。它在AVX512的基礎之上做了進一步的擴展。AMX有兩個核心思想,一個是Tiles,一個是Timo。Tiles是物理上兩地寄存器的疊加,16個AVX512疊加在一塊。Timo是針對兩地Tiles的矩陣運算。最新的至強每一顆物力核上都有一個內置的AMX,充當AI 的加速卡。
和大多數加速卡一樣,AMX加速的是量化精度。目前第四代至強支持的是BF16和INT8,未來也會很快支持FP8和FP16。BF16的表達范圍和FP32一模一樣,只是精度比FP32小一點。目前絕大多數的場景,BF16已經足夠。對于訓練來說FP16足矣,而推理則只需要INT8。
AMX是如何加速矩陣乘的呢?我們在做大的矩陣時可以把矩陣拆成16*64,然后一次性計算。如果算力不夠,可以用oneDNN和MLKDNN處理,而AMX加速矩陣乘計算,算力是前一代產品的8倍。
這張圖是至強服務器峰值計算能力的演進過程。從2019年開始的第二代至強可擴展處理器支持VNNI,最新發布的第四代至強可擴展處理器支持AMX,可以看到每個指令周期的計算能力得到8倍的提升。
硬件性能只是一方面,軟件生態某種意義上說對開發者來說更為關鍵。這是一張英特爾 AMX的軟件生態圖,從下往上,從最底層的操作系統到虛擬化KVM、HyperV,再到核心AI計算庫都是英特爾開發的。在框架層面,主流的TF和PyTorch也都包含在內,除此之外英特爾還提供了豐富的推理工具。這些成熟的軟件生態使得我們的開發者可以專注于算法創新,而不用考慮如何部署等細節,開箱即用。
BF16和INT8的高算力對將AI從GPU遷到CPU之上確實有很大的幫助,但如何保證精度呢?英特爾有一個工具叫做INC,內置了很多專門用于精度的校正算法。作為開發者,只需要做三件事:輸入模型、輸入數據集和輸入精度要求即可。INC會根據客戶的輸入進行tuning,直到有一個用戶滿意的算法。如果最終達不到設定的精度要求,還可以對某些層進行回滾,從而保證設定的精度可以達到要求。
回到視頻編解碼領域,我們知道視頻前處理是在FFmpeg解碼之后,對YUV或者RGB數據進行處理,處理結束后再送到編碼器x264或者x265編碼。由于整個pipeline中,數據的處理速度并不一致,因此為了讓整個過程的數據順滑地流動起來,就需要做一部分的改造,比如解碼后的raw data放入一個buffer隊列中,AI推理異步從這個隊列中取數據做推理,并把推理后的結果送到編碼器中,這需要一定量針對FFmpeg的開發工作。
幸運的是,英特爾已經幫用戶做好了。FFmpeg中有一個英特爾的OpenVINO后端,用戶直接使用就行。FFmpeg的DNN AI推理后端,目前只支持2個后端,一個是Tensorflow,另外一個就是英特爾的OpenVINO。
總結:FFmpeg已經集成了OpenVINO作為AI 的后端推理引擎且英特爾有專門的團隊去維護,大家可以放心使用。
這是一個和合作伙伴的實際案例。在視頻增強和目標檢測這兩個場景下,使用了英特爾第四代至強可擴展處理器AMX優化的AI推理性能相對上一代平臺分別提升了1.86倍和1.95倍。與此同時,精度損失被控制在可接受的范圍,這也使得英特爾的客戶在CPU上實現了全鏈路智能化編碼,大幅降低了部署成本和運維成本。
審核編輯:劉清
-
處理器
+關注
關注
68文章
19165瀏覽量
229145 -
編碼器
+關注
關注
45文章
3596瀏覽量
134162 -
DSA
+關注
關注
0文章
48瀏覽量
15124 -
硬件加速器
+關注
關注
0文章
42瀏覽量
12759 -
GPU芯片
+關注
關注
1文章
303瀏覽量
5781
原文標題:面對算力瓶頸,如何利用CPU解決全鏈路智能編碼?
文章出處:【微信號:livevideostack,微信公眾號:LiveVideoStack】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論