MapReduce+Docker:Archer简化Netflix媒体处理
Archer是Netflix的媒體處理引擎,底層是執行MapReduce的各種Docker,在上層跑各種算法。Archer可以檢測出視頻中的圖像錯誤,字幕對關鍵內容的遮擋等問題。本文來自Netflix的科技博客,由LiveVideoStack摘譯整理。
文 / Naveen Mareddy, Frank San Miguel, Mangala Prabhu and Olof Johansson
譯 / 王月美
原文:https://medium.com/netflix-techblog/simplifying-media-innovation-at-netflix-with-archer-3f8cbb0e2bcb
想象一下,你正在開發一個快速原型,即通過電影《布萊德》的所有幀來篩選出威爾?史密斯的最佳鏡頭,并且需帶有動感十足的背景。你的目標是以高新人度正確地獲得計算機視覺算法,而不必考慮:
并行處理
云計算基礎設施,如EC2實例或者Docker容器系統
超高清(UHD)視頻源的位置
用于保存結果的云存儲API
若過程中途失敗,則重試策略
來自辦公室的資產重新投資
過去,我們開發人員必須考慮以上包括在內的所有這些事情。正如你所看到的,當目標是簡單地獲得正確的算法時,這是非常重要的。在此篇博客中,我們將分享我們如何構建一個名為Archer的平臺,在Archer中一切都以透明方式處理,使用戶能夠直入算法。
圖1:來自運行在Archer上的“標題圖像選擇算法”中的樣本
關于我們
我們是來自于媒體云工程團隊(MCE)。我們支持高級媒體處理,其中包括媒體代碼轉換,預告片生成以及用于藝術品的高質量圖像處理。我們的計算機農場運行數以萬計的EC2實例來處理動態工作負載。計算機饑餓用例的一些示例包括A / B測試,基于鏡頭編碼的目錄范圍重新編碼以及高質量標題圖像。我們負責處理媒體計算平臺的大規模分布式計算方面,并與編碼技術團隊密切合作,共同制定媒體標準和編解碼器。
我們的歷程
在Archer之前,已經可以使用內部開發的媒體處理平臺(代號Reloaded)在云中進行分布式媒體處理。盡管它功能強大和靈活性高,但Reloaded平臺的開發需要在觀察軟件開發最佳實踐,持續集成(CI),部署編排和分階段發布培訓的同時,仔細設計動態工作流,數據模型和分布式工作線程。雖然這些是為功能推出做出的正確選擇,但對于那些只關注其算法的研究人員而言,這其實是一個障礙和干擾。為了獲得敏捷性并免受云部署的干擾,我們的用戶要盡可能在本地計算機上運行實驗。但是該處規模是有限的。他們最終是需要針對大型內容目錄運行他們的算法,以獲得更好的信號。
我們研究了Apache Spark,Kubernetes和Apache Flink等分布式計算框架。 這些框架均缺少重要功能,如對媒體對象的一流支持,針對每次執行的自定義docker鏡像或具有公平資源平衡的多租戶群集支持。
圖2:本地運行大型實驗的痛苦
然后我們就意識到,我們可以將Reloaded中的最佳屬性與流行的分布式計算框架中的模式相結合,并綜合減輕了前面提到的一些困難,提供了一個易于使用的平臺,可以為點對點實驗,某些確定類型的生產用例進行大規模地運行。
Archer
Archer是一個易于使用的MapReduce樣式平臺,用于使用容器進行媒體處理,以便用戶可以提供其操作系統級別的依賴關系。常見的媒體處理步驟,如掛載視頻幀,由該平臺處理。開發人員編寫三個功能:分割,map和收集; 并且它們可以使用任何一種編程語言。Archer專為簡單的媒體處理而設計,這就意味著該平臺能夠識別媒體格式,并為流行的媒體格式提供“白手套式”處理。例如,ProRes視頻幀是Archer中的第一個類對象,并支持將視頻源分割為基于鏡頭的塊[1](鏡頭是相機不移動的視頻片段)。
使用Archer可構建許多創新應用程序,其中包括檢測由數碼相機故障引起的壞點像素的應用程序,使用機器學習標記音頻的應用程序以及為字幕執行自動質量控制(QC)的應用程序。后續,我們將會看到更多的應用實例。
圖3:運行中的壞點像素檢測器[1]
高級視圖
從10,000英尺的高度來看,Archer其實擁有多個組件來運行工作。一切均是從REST API開始,來接受工作請求。然后工作流引擎選中請求并驅動MapReduce工作流,將工作調度為優先級隊列的消息。應用程序工作線程在隊列中進行偵別并執行用戶提供的媒體處理功能??紤]到工作的動態性,Archer使用了一個隊列感知縮放器來連續移動資源,以確保所有應用程序獲得足夠的計算資源。 (請參閱@Scale 2017會議上Archer的展示 https://atscaleconference.com/videos/archer-a-distributed-computing-platform-for-media-processing/)。
圖4:Archer的高級架構
簡單操作
通過高效訪問云中的大文件,使用任意媒體文件與不可視基礎架構進行快速原型設計等功能,使得Archer的簡單操作成為可能。
MapReduce風格 - 在Archer中,用戶認為他們的處理工作具有三個功能:分割,map和收集。分割功能的作用是將媒體分成更小的單元。map功能將媒體處理算法應用于每個分割之中。收集功能是來自map階段的結果結合起來。用戶可以用他們選擇的編程語言或使用內置的語言功能來實現以上三個功能。Archer為常見任務提供了內置功能,例如基于鏡頭的視頻幀分離器和連接收集器。通過僅實現map功能構建應用程序并使用分離器和收集器的內置程序非常常見。而且,Archer用戶可以將內置的可重用功能提供給平臺。
圖5:顯示MapReduce階段的示例Archer作業
視頻幀作為圖像—大多數計算機視覺算法(CV)喜歡使用JPEG / PNG圖像來檢測復雜的特征,如運動估計和相機鏡頭檢測。視頻源格式使用自定義壓縮技術來表示原始來源,并且需要進行解碼以將源格式轉換為圖像。為避免需要重復相同的代碼來解碼視頻幀(每種源格式不同),Archer有一項功能,可允許用戶在作業提交期間選擇圖像格式,質量以及裁剪參數。
基于容器的runtime — Archer用戶將其應用程序打包為Docker圖像。它們以相同的方式在本地或云中運行應用程序?;谌萜鞯谋镜亻_發使得用戶能夠快速地將應用程序轉換為工作狀態并在此之后又快速迭代,然后,使用一些命令來將應用程序按規模地運行在云中。基于Docker的環境允許用戶安裝他們選擇的操作系統依賴關系,并且每個應用程序可以獨立于其他應用程序來選擇他們的操作系統依賴關系。例如,在Archer中運行的實驗可能會安裝FFmpeg等媒體工具的快照版本,并獲得快速反饋,而產生式應用將依賴于已發布的版本。Archer使用Titus(Netflix的容器管理平臺)大規模運行這些容器。
圖6:按比例在云中運行相同的操作系統的依賴關系
訪問內容目錄—大多數Archer應用程序需要訪問Netflix內容目錄中的媒體源。Archer job API提供了一個內容選擇器,用戶可以選擇他們選擇的可播放作為其作業執行的輸入。例如,您可以通過僅知道電影ID來針對電影《布萊德》的UHD視頻源運行算法。并且,無需擔心云中視頻源的位置或媒體格式。
本地開發— Netflix的開發者生產力團隊已經構建了一個名為Newt(Netflix Workflow Toolkit)的工具來簡化本地開發人員的工作流程。Archer使用Newt來提供豐富的命令行界面,此使得本地開發變得簡單。開始一個新的Archer作業或下載實驗結果僅用一個命令即可。這些命令將本地Docker工作流程以及與Archer作業API的交互進行了包裝。另外,使用用戶所選擇的編程語言來構建應用程序也很容易。
圖7:本地開發工作流程
Archer助你一臂之力
借助像Archer這樣的簡單平臺,我們的工程師可以在幾小時或幾天的時間內自由地聯想、創作并實現它們。如果沒有Archer完成繁雜的任務,我們可能沒有嘗試過這些創新。我們的用戶利用了數千萬個CPU小時創建出驚人的應用程序。以下舉例:
圖像發現—AVA:Netflix的圖像發現藝術與科學;
動態優化器— 一種感知視頻編碼優化框架;
字幕創作— 使用Archer應用程序渲染的鏡頭更改和燒錄文本位置數據用于字幕創作。
最佳圖像選擇—查找最適合Netflix產品界面中不同畫布的圖像。
機器輔助的質量控制—于質量控制各個階段進行輔助。此輔助包括文本檢測,音頻語言檢查以及檢測錯誤視頻像素的文本。
圖8:在字幕創作工具中使用的Archer應用程序生成的鏡頭更改數據
圖9:在Archer平臺上運行的文本檢測算法
圖10:運行在Archer上的應用程序挑選的標題圖像
圖11:由Archer啟用的插圖圖像發現
圖12:為插圖自動選擇最佳姿勢
圖13:由Archer啟用的文本遮擋檢測
總結
Archher仍處于積極發展的階段,我們正努力不斷擴展其功能和規模。我們對其擁有的經驗越多,則實現可能性就越大。以下是我們規劃圖中的一些項目:
增強多區域支持的穩健性;
通過Netflix內部計算低谷增加規模;
SLA和針對不同用戶和應用的容量保證;
對音頻源的一流支持(我們已經支持視頻);
平臺和應用程序之間的運行時間隔離程度更高;
為Python用戶豐富開發經驗;
在接下來即將發布的博客文章中,我們將撰寫安全媒體存儲服務,支持Archer和Netflix的其他項目。
雖然Archer平臺還是比較新的,待完善與改進的,但是Netflix的許多團隊每天正在驗證該平臺,他們正在采用Netflix產品并在Netflix產品中進行創新。熱情和使用頻率正在不斷增長,以此同時,我們也需要優秀的工程人才。
參考文獻
[1] ?S. Bhattacharya, A. Prakash, and R. Puri, Towards Scalable Automated Analysis of Digital Video Assets for Content Quality Control Applications, SMPTE 2017 Annual Technical Conference, and Exhibition, Hollywood & Highland, Los Angeles, California, 2017
總結
以上是生活随笔為你收集整理的MapReduce+Docker:Archer简化Netflix媒体处理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 探索多媒体开发最新最佳实践,我们在深圳等
- 下一篇: 音视频技术开发周刊 56期