將渲染計算搬到雲端,開啟低成本、強交互、沉浸式體驗

雲渲染可以解放本地計算需求,這意味著生產力的大幅提升。

雲渲染的基本原理是將3D渲染應用部署到雲端,接收本地的控制指令發送到雲端,雲端啟動遊戲引擎並進行畫面渲染,編碼成影片流傳輸到本地。

不難看出,雲渲染技術的核心在於將計算搬到雲端,對渲染出的畫面進行流化的傳輸。而過程中渲染畫面的抓取、編碼、傳輸、顯示等流程被稱為串流。

串流是雲渲染業務用戶體驗的核心,串流延時、畫質、卡頓等都會直接影響到用戶體驗。

雲渲染串流技術框架主要分為兩部分:雲端串流引擎和串流客戶端。

雲端串流引擎:在雲端GPU上,響應客戶端發送過來的控制指令,啟動渲染應用並進行串流影片的處理與發送。引擎往下適配各種OS和硬體,往上對接調度和業務系統。

串流客戶端:串流客戶端類似一個播放器,進行串流影片的接收和編碼,同時發送控制指令來操作雲端渲染引擎。雲端串流引擎和串流客戶端通常是一對一的。

基於雲渲染串流技術能夠大幅度弱化本地GPU渲染應用壓力,將複雜資源處理過程遷移至雲端進行,本地計算需求退化為一個播放器。

01 雲渲染串流的三大技術挑戰

雲渲染的核心技術指標與挑戰主要有以下三方面:延時、畫質與流暢度、成本(包括GPU計算成本和傳輸頻寬成本)。

首先,延時是雲渲染串流技術體驗的基礎,超低延時的需求則帶來了巨大的技術挑戰。雲渲染串流過程中的延時主要分為兩方面:

端到端的延時:音影片通話250ms以下延時已經難度很大,對於雲渲染串流技術而言,想要將端到端延時控制在100ms內更是難上加難。

Motion to Photo的延時:比如在VR雲遊戲場景下,使用頭盔進行頭部轉動動作時,畫面上的延時稱作Motion to Photo的延時,為保障用戶體驗需要將該延時控制在20ms以內。

對於畫質和流暢度來說,雲渲染需要輸出影片流,畫質與流暢度作為用戶直觀的體驗,其技術帶來的挑戰主要在以下三方面:

1.面臨複雜網路環境與不穩定的頻寬,能否保障畫面清晰度與流暢度;

2.畫質、碼率、計算成本三角關係的平衡;

3.技術先進性和兼容性的平衡,如:更先進的編碼技術H265雖然能夠提升畫質,但其解碼性能和兼容性如何保障?

在成本方面,目前來看,雲遊戲、雲渲染正在蓬勃發展,但離實現商業化盈利仍然路途遙遠。首先,雲渲染GPU資源存在一對一獨佔資源的特點,單用戶消耗的計算資源較高。其次,雲遊戲存在明顯的業務高峰,通常集中在晚間,其他閑時資源如何利用成為了一大問題。最後,如前文提到,雲渲染對畫質和幀率有較高要求,如何在保障用戶體驗的同時降低每個渲染進程的資源消耗。

02 多維度優化雲渲染策略

延時優化

下圖對全鏈路延時進行拆解,其中如指令傳輸、音影片流控&QoS等環節的延時波動較小,優化工作主要針對傳輸、編解碼的延時進行。

傳輸延時優化

由於雲渲染服務與理距離來減少延時,基於高覆蓋的ENS邊緣節點集群進行就近處理與傳輸,通過調度將任務下發至離用戶最近的GPU節點進行處理與串流工作。

其次可以通過傳輸協議上的優化來減少延時。取代傳統的RTMP、HLS協議,轉向採用RTC協議進行傳輸,同時針對雲渲染的場景特點來制定QoS策略,如頻寬估計、擁塞控制等來實現優化效果。

編/解碼延時優化

影響編碼延時的主要因素是幀級的執行緒快取、lookahead快取、B幀。優化編解碼延時的核心思路是「進一幀,編一幀,出一幀」,不進行任何快取,用slice thread 代替 frame threads,關閉lookahead與關閉B幀(在HEVC標準下,可採用GPB編碼方式,將普通B幀用低延時B幀進行替代,既能提升畫質又能降低延時)。

畫質與流暢度優化

畫質與流暢度呈現的關係如同蹺蹺板,為了保障用戶體驗往往需要在兩者之間進行平衡。

在雲渲染場景下,編碼需要與網路進行聯動,通過實現網路自適應傳輸與編碼來優化流暢度:

頻寬估計:根據網路情況動態調整編碼器碼率等參數;

擁塞控制:採用BBR或是GCC進行擁塞控制,如主動丟幀。BBR策略收斂更快,通常更適合雲遊戲場景;

丟包重傳:如前文所述雲渲染採取就近傳輸方式,可以根據這個特點實現快速重傳策略;

抗I幀風暴:由於I幀佔用頻寬較大,在I幀過多的情況下對於清晰度與流暢度造成較大影響;

控制I幀數量和大小

影片幀的類型分為I幀、P幀、B幀,其中I幀大小遠大於P幀與B幀,I幀密集容易引起卡頓,Intra refresh策略能夠有效解決此類問題。

通過將I幀拆分為多個I slice並按順序平鋪到連續的幀中,有效控制I幀的梳理。出現丟幀後可依次排序組合恢復出完整的一幀。

VBR+VBV碼率控制策略

CBR碼控策略可以使得碼率平穩,保障流暢度。但考慮到雲遊戲場景畫面運動劇烈,因此固定碼率會造成部分幀畫質較差的問題。需要在畫質與流暢度間取得平衡,推薦採用VBR演算法+VBV參數的方式控制碼率波動,使得碼率能夠在一定範圍內實現「平穩」地波動。

雲端協同的CodeC選擇

在當前環境下,手機終端大多已經支援H265解碼,雲端GPU也大多支援H265編碼。如果雲和端都支援H265解碼,通過雲與端的協商,在雲端優先進行H265編碼,能夠在同等清晰度下使碼率降低20%~40%。

CPU+GPU混合的窄帶高清編碼

單獨使用CPU編碼成本高、延遲大;單獨使用GPU編碼靈活性差、畫質差。可融合CPU與GPU編碼能力,採用GPU為主、CPU為輔的混合編碼策略。

阿里雲窄帶高清編碼技術,通過影片增強處理和編碼的聯合優化,能夠在碼率相同時顯著提升畫質。或者使碼率在降低30%~60%的情況下,影片畫質仍然持平甚至有所提升。

但云渲染場景與普通的影片特點差別較大,且通常需要採用硬體編碼。需要思考如何在低延時、場景快速切換、運動劇烈的情況下優化GPU編碼的畫質與流暢度。後文將結合三星堆雲渲染場景,介紹阿里雲在雲遊戲場景的窄帶高清效果。

成本優化

解決基礎體驗問題後,成本問題成為雲渲染、雲遊戲商業化面臨的最為突出的挑戰。

雲渲染成本主要可以分為三條線:單任務實際GPU資源消耗, 單機資源利用率, 總資源池利用率。成本優化策略需要圍繞如圖所示的三條線展開。而在實際場景中雲渲染成本優化還存在以下四方面的問題:

1.單進程資源消耗大

2.CPU<-> GPU 記憶體拷貝效率低

3.單機資源利用率低

4.業務並發時間集中

從以上四個角度出發,接下來將詳細介紹如何實現雲渲染成本優化。

單任務資源消耗優化

GPU硬編碼:GPU渲染單元與編解碼單元獨立,在渲染的同時可以應用GPU進行編碼工作,有效降低CPU消耗;

CPU<-> GPU memory zero copy:由於CPU與GPU的排列方式,處理影像幀的格式、記憶體的layout存在差異,因此需要構建全GPU處理的pipeline,減少CPU在過程中的參與度,可顯著提升性能,降低延時;

CUDA加速:影像縮放/顏色空間轉換等可用CUDA加速;

單機資源利用率-虛擬化與多開

當降低了單進程資源消耗後,通過採用虛擬化與多開技術能夠有效提高單機資源利用率,一張卡上同時運行多個渲染進程。實際上,GPU的虛擬化技術為雲遊戲、雲渲染的大規模商業化落地奠定了基礎。

集群資源利用率-業務混跑

實際情況下,僅通過上訴兩種方法依然難以解決成本問題。實現業務混跑,提高集群資源利用率,是雲遊戲、雲渲染技術真正實現普惠的關鍵。其核心在於利用不同的影片處理高峰時期,對GPU集群進行分時復用。如在白天時段利用GPU集群完成離線AI處理工作,晚上6~8時進行直播轉碼處理工作,在9~11時進行雲渲染、雲遊戲應用處理工作。基於業務的多樣性,充分利用總GPU資源池,有效降低雲渲染成本。所以影片雲業務的多樣性也是降低成本的重要優勢。

03 雲渲染實踐案例一鍵開啟三星堆奇幻之旅

CCTV《三星堆奇幻之旅》採用了阿里雲的大規模即時雲渲染技術,將大型沉浸式體驗需要的圖形算力、存儲需求放在雲端,觀眾看到和交互的畫面都是由雲端即時渲染計算出來,從而讓觀眾擺脫本地硬體限制,僅通過一個H5頁面,便可低成本地享受高品質的沉浸式體驗。作為高熱度、高並發的雲渲染應用,該實踐案例支援5K的並發,預備萬路彈性,最終登上微博熱搜TOP 3,收穫了3300萬播放量。

這樣熱度和規模的活動,要保證每個用戶的高體驗,對技術上的要求和挑戰都是巨大的,阿里雲構建了多個維度的技術體系來提升用戶體驗。

阿里雲影片雲的GRTN(Global Realtime Transport Network)低延時網實現邊緣傳輸,有效降低傳輸方面的延時。GRTN是阿里雲各個音影片通訊業務方合力打造的傳輸網,支援HTML5 的信令接入。GRTN採用層級網和對等網相結合的混合網路架構,媒體傳輸鏈路更短,全鏈路採用延時更低的基於UDP的RTC協議,並利用深度訂製的動態路由、傳輸控制、邊緣計算、雙向實時信令網等機制。影片云云考古機制是基於GRTN設計,可接入影片雲直播、點播和RTC等業務,便於全球實時傳輸,實現業務擴展。

RMS雲渲染引擎也為三星堆項目體驗發揮了非常重要的作用。RMS負責渲染影片的採集、處理、編碼和傳輸。RMS的處理性能和延時、編碼畫質、QOS的傳輸體驗都直接影響三星堆項目的用戶體驗。

遊戲/渲染引擎輸出的影像幀一般都是顯示記憶體中,如果採用CPU軟編或者ASIC異構編碼的方式,會存在拷貝延遲。因此RMS採用GPU硬體處理為主、CPU處理為輔的方式,達到影片幀zero-copy的極致延遲體驗,在滿足畫質、流暢度需求的前提下,充分降低性能消耗和計算成本。

同時,RMS在QOS策略上也做了大量的優化。本次雲考古面向的是全國各地的觀眾,為應對複雜多變的網路環境,我們在RTC網路的傳輸Qos保障的基礎上,對Jitter Buffer/NetEQ/頻寬估計/可靠傳輸(丟包重傳、亂序重組),以及Qos模組和編碼模組的配合上做了專門的調整,包括智慧策略組合、智慧碼控、丟幀邏輯和FIR處理等方面。同時,在QOS的碼率分配上,我們也做了大量優化,可以在保障抗弱網能力的同時,將有限的頻寬更多地分配到編碼器的碼率上,提升影片清晰度。

在影片編碼演算法方面,我們利用雲渲染場景深度優化的窄帶高清技術來提升清晰度。通過雲端GPU與客戶端CPU的聯動,進行內容自適應的紋理和色彩增強處理,有效提升了影片畫質,且演算法的性能和成本都大幅降低,對全鏈路延時和客戶端功耗的增加都達到可以忽略的程度。而影像處理演算法與編碼演算法的有機結合優化,可在保證畫質的同時,顯著降低了影片碼率大小和碼率波動。

最終的效果呈現如上圖所示,左側僅僅採用GPU進行編碼,色彩相對暗淡、文字相對模糊,畫面飽和度、對比度相對較差;右側通過我們的GPU+CPU聯合優化的窄帶高清處理,在碼率降低35%的情況下,VMAF提高10%,主觀的畫面紋理細節和色彩效果也有提升。

面向未來,雲渲染串流技術發展方向已經明晰,一方面通過與AR、VR、XR進行結合,打造沉浸式的雲渲染體驗。而其中關鍵的20ms以下的Motion to Photo延時,則是突出的技術挑戰,可以考慮採用非同步渲染的方式進行延時優化。

另一方面通過與虛擬社交、音影片通話與直播進行結合,向互動式、綜合式的應用方向發展。雲渲染串流與AI演算法、直播技術、RTC音影片通話技術的結合,是未來技術的演進方向。我們的RMS雲渲染引擎支援多種AI特效、直播旁路直播與RTC雲合流,為未來雲渲染的技術綜合性要求打下了基礎。

Tags: