FPGA與CPU相比進(jìn)一步強(qiáng)化了算力,尤其適合各類并行化計(jì)算;而與GPU相比,其更細(xì)粒度及靈活的并行化及流水線控制天然的對(duì)復(fù)雜算法有更強(qiáng)的適應(yīng)性,能夠充分發(fā)揮出算力優(yōu)勢(shì),從而帶來計(jì)算效率的提升。針對(duì)數(shù)據(jù)中心算力不斷增強(qiáng),算法不斷細(xì)分、復(fù)雜化的大背景下,F(xiàn)PGA具有更好的發(fā)展前景。
大家好,我是深維科技創(chuàng)始人/CEO 樊平,非常高興有這個(gè)機(jī)會(huì)跟大家分享和交流一下,如何基于FPGA來構(gòu)造高性能的圖像處理解決方案。
1.解決方案提出的背景
隨著需求的快速增長(zhǎng),目前數(shù)據(jù)中心需要處理的圖像越來越多,處理內(nèi)容包括圖像轉(zhuǎn)碼,像素級(jí)的操作、縮略圖處理以及各種圖像的智能分析,這些處理需求帶給數(shù)據(jù)中心的負(fù)擔(dān)日益加重。
2.FPGA圖像處理加速的潛力
2.1 深維科技在圖像方案上的性能數(shù)據(jù)
上圖是深維科技目前在圖像方案上已經(jīng)做到的性能數(shù)據(jù),第一是圖像的吞吐(每秒可以處理圖片的數(shù)量),目前CPU是根據(jù)E5的2650雙U服務(wù)器的性能去比較,加一張F(tuán)PGA優(yōu)良版的加速卡就可以做到20倍的吞吐。在業(yè)務(wù)流程里對(duì)延時(shí)相對(duì)都很敏感,深維可以在提升吞吐的同時(shí)降低延遲達(dá)5倍,數(shù)據(jù)中心的成本因?yàn)榉?wù)器成本和所有功耗成本的降低,使得整體的TCO的降低可以達(dá)到5倍以上,也就是降低到原來的20%以下。同時(shí)可以改善功耗,提高10倍能效比。這些性能都是通過深維科技一款名叫ThunderImage的產(chǎn)品為大家提供的。
2.2 ThunderImage介紹
除了剛才提到的性能,深維科技對(duì)豐富的圖片的格式進(jìn)行了支持,例如JPEG圖片編解碼的處理。隨著目前高清圖片內(nèi)容越來越多,大家需要對(duì)圖片的尺寸/壓縮率做進(jìn)一步提升,這其中比較流行的一種格式是Google從VP8編碼提取出來的一套標(biāo)準(zhǔn)WebP。深維科技目前很好支持了WebP的M4和M6兩種模式,另外深維科技也支持其他圖片格式和一些圖片的縮放算法,像Lanczos這類比較復(fù)雜的濾波算法都可以支持。
用戶在數(shù)據(jù)中心進(jìn)行方案集成過程中,傳統(tǒng)數(shù)據(jù)中心的設(shè)計(jì)環(huán)境是軟件,把FPGA導(dǎo)入到數(shù)據(jù)中心之后,對(duì)方案的可用性有非常高的要求。深維科技把整個(gè)方案做了很好的封裝,以ImageMagick和OpenCV標(biāo)準(zhǔn)開源框架為接口進(jìn)行替換,用戶只需要改動(dòng)幾行代碼之后就可以對(duì)接口完成替換。這樣的使用模式完全類似于軟件的形態(tài),并且可以做到無縫兼容,包括一些像VIPS這類型的新框架深維科技都在逐步支持。
在業(yè)務(wù)部署的過程當(dāng)中,深維科技從客戶得到很多關(guān)于細(xì)節(jié)的反饋,其中一個(gè)常見的問題是圖片在業(yè)務(wù)流程里部署時(shí),客戶發(fā)現(xiàn)硬件的編解碼往往和參考軟件的結(jié)果存在不一致的現(xiàn)象,這是由于硬件做加速過程當(dāng)中,為了適應(yīng)加速的效果會(huì)對(duì)算法進(jìn)行改動(dòng)。
現(xiàn)在這款ThunderImage方案可以做到硬件編解碼和參考軟件結(jié)果完全一致的,每個(gè)比特的結(jié)果和CPU的流程跑出來的結(jié)果都可以做到嚴(yán)格一致,對(duì)實(shí)際業(yè)務(wù)的評(píng)估部署阻力會(huì)降低很多。ThunderImage方案可以做到每個(gè)像素都一樣,因此滿足了實(shí)際業(yè)務(wù)的場(chǎng)景需求。
深維科技的整個(gè)產(chǎn)品都可以部署在兩種平臺(tái)上,一種是云平臺(tái),例如AWS和華為云,其他云平臺(tái)也會(huì)陸續(xù)發(fā)布出來。另一種是線下部署,深維科技在線下的本地部署支持了Linux的不同版本,可以比較方便匹配客戶不同的生產(chǎn)環(huán)境配置,服務(wù)器也可以支持英特爾和AMD兩款CPU的型號(hào)。目前硬件平臺(tái)可以支持Alveo U200、Huawei FX300以及一些早期的型號(hào),根據(jù)客戶的場(chǎng)景可以比較快地適配到相應(yīng)的板卡。
3.常見的業(yè)務(wù)場(chǎng)景
涉及圖片部分的產(chǎn)品有幾個(gè)典型的應(yīng)用場(chǎng)景,第一是縮略圖的場(chǎng)景,整個(gè)流程包括圖片的上傳、JPEG解碼、縮放、JPEG編碼和推送客戶端,很好的適配了以下幾種典型場(chǎng)景:第一是手機(jī)的云相冊(cè),客戶上傳大量的圖片到云端,在不同的終端上瀏覽上傳的圖片,在瀏覽時(shí)不需要把原圖轉(zhuǎn)成各種尺寸的圖像推送到客戶端,只需要在線算出不同的尺寸推送到客戶端,在電商平臺(tái)和社交網(wǎng)絡(luò)上都大量涉及到這樣的應(yīng)用場(chǎng)景。
第二個(gè)場(chǎng)景是WebP轉(zhuǎn)碼,把JPEG格式轉(zhuǎn)成WebP格式,達(dá)到節(jié)省30%以上的帶寬或者存儲(chǔ)的目標(biāo)。另外深維也支持配合類似AI Inference的任務(wù),在AI Inference Engine上輸入圖像尺寸大部分都是小圖,小圖通常是CPU端去配合生成(預(yù)處理),在Inference之后還要有一些存檔和編碼的需求。目前方案很好地適配了預(yù)處理和后處理的場(chǎng)景,可以實(shí)現(xiàn)整個(gè)AI Inference的全流程加速。
4.生產(chǎn)環(huán)境集成
4.1 與OBS進(jìn)行集成
關(guān)于如何與生產(chǎn)環(huán)境集成,深維科技與OBS有一個(gè)比較完整的方案,首先上圖是一個(gè)典型的場(chǎng)景,需要有大量的JPEG圖像上傳到OBS,上傳完之后的OBS包含了大量用戶圖片。第二個(gè)階段是用戶會(huì)從安卓、蘋果、Windows等不同的終端去發(fā)起一個(gè)訪問,這個(gè)訪問會(huì)發(fā)向CDN,由于大部分情況下本地各種終端之間存在差異,訪問的命中率會(huì)比較低,CDN會(huì)檢查并返回給OBS進(jìn)一步請(qǐng)求圖片。請(qǐng)求之后OBS會(huì)調(diào)用ThunderImage以最高的性能反饋給OBS相應(yīng)尺寸的圖片,最后推送到客戶端,與OBS這種常見生長(zhǎng)環(huán)境集成的模式還是比較清晰的。
4.2 核心性能指標(biāo)分析
如圖是性能指標(biāo)的分析,第一個(gè)是QPS(每秒可以處理圖片的張數(shù)),這個(gè)核心指標(biāo)是在1K圖片縮放到240×180的時(shí)候可以達(dá)到4900張的峰值,4900是目前深維科技在同類產(chǎn)品里所能看到的最好效果。另一個(gè)數(shù)字是吞吐(每秒按照能處理輸入圖像流量的大?。掏驴梢赃_(dá)到1.8GB,相應(yīng)此時(shí)CPU的流量是136MB,大概有15倍左右的加速。另外在延遲方面,在4K轉(zhuǎn)640×480圖片尺寸的時(shí)候,ThunderImage可以做到58毫秒,此時(shí)CPU延遲已經(jīng)達(dá)到1303毫秒,之間存在20倍左右的差距。在FPGA進(jìn)行加速時(shí),也就是將FPGA插到一個(gè)服務(wù)器里,服務(wù)器可以在性能有20倍的提升的同時(shí)做到CPU的利用率只有4%,純CPU版本是100%,因此整體加速效果是一致的,ThunderImage在各方面都有接近20倍的性能提升,有些方面性能提升還要更高一些。
4.3 通用計(jì)算方案
FPGA加速效果在圖片處理方案上是非常明顯的,在FPGA計(jì)算加速方向上已經(jīng)有各類方案,包括GPU、CPU、FPGA和ASIC。方案的比較在整體上有兩個(gè)重要的約束:效率(追求性能)和靈活性。FPGA相對(duì)于GPU的底層有更細(xì)粒度的并行化和流水線的控制,能夠做比特級(jí)、任意數(shù)據(jù)不對(duì)齊的操作,所有這些靈活性和底層更細(xì)粒度控制帶來了更好的計(jì)算效率,相對(duì)于整體就會(huì)帶來低延時(shí)、更高的能效和性能,所以深維非常看好FPGA將會(huì)成為下一代數(shù)據(jù)中心非常重要的通用的計(jì)算加速載體。
FPGA相對(duì)ASIC有一個(gè)很明顯的好處,ASIC在整個(gè)設(shè)計(jì)生產(chǎn)環(huán)節(jié)需要18個(gè)到24個(gè)月流片周期,而且對(duì)量也有一定的要求。FPGA有這些好處的同時(shí)也存在編程比較困難的致命問題,因此FPGA的設(shè)計(jì)開發(fā)有著很大的挑戰(zhàn),開發(fā)周期也會(huì)比較長(zhǎng)。數(shù)據(jù)中心主要的用戶以軟件開發(fā)為主,軟件開發(fā)目前追求敏捷和快速迭代,這種長(zhǎng)周期的開發(fā)形態(tài)非常制約業(yè)務(wù)部署。
4.4 軟、硬件開發(fā)方法區(qū)別
深維科技針對(duì)以上問題也提出了解決方案,如上圖所示,最左邊的是CPU的軟件開發(fā)流程:寫代碼、編譯,排除語法錯(cuò)誤、運(yùn)行,根據(jù)實(shí)際運(yùn)行時(shí)的錯(cuò)誤進(jìn)行調(diào)試。
FPGA+CPU的開發(fā)流程傳統(tǒng)是基于硬件設(shè)計(jì)語言去做的,Verilog/VHDL設(shè)計(jì)流程涉及到的環(huán)節(jié)也需要寫代碼,對(duì)等同樣復(fù)雜度算法要增加10倍以上的代碼量,因此整個(gè)設(shè)計(jì)流程非常復(fù)雜。對(duì)比兩個(gè)系統(tǒng)開發(fā)流程就不難理解為什么基于硬件設(shè)計(jì)語言的FPGA開發(fā)過程往往需要半年到一年的周期,而不是軟件開發(fā)的周期只要數(shù)周到幾個(gè)月的時(shí)間。
賽靈思也注意到了設(shè)計(jì)流程的復(fù)雜度,于是在2012年收購了AutoESL公司,這家公司提供HLS高層次的設(shè)計(jì)方法,這個(gè)方法很好的支持了C和C++語言來編程FPGA,這種方式放到最右邊的框圖對(duì)流程進(jìn)行相應(yīng)的簡(jiǎn)化,首先是系統(tǒng)層設(shè)計(jì)OpenCL,Kemel設(shè)計(jì)是使用是C和C++語言來寫代碼,但需要加一些標(biāo)注。在軟件形式下去編譯仿真程序,排除語法錯(cuò)誤、運(yùn)行仿真程序,迭代多次后完成。在仿真環(huán)境上調(diào)好以后才需要上板生成FPGA程序,編譯成FPGA最后做一次,然后再上板去調(diào)。這個(gè)流程顯然已經(jīng)簡(jiǎn)化很多,而且不需要頻繁在硬件層面去調(diào)試,大部分工作都是在軟件環(huán)節(jié)去做。
5. 深維科技的核心能力:快速開發(fā),全棧優(yōu)化
很多客戶都已經(jīng)試過了HLS這套開發(fā)方法,并對(duì)開發(fā)迅速這一特點(diǎn)有所體會(huì),但是對(duì)于最后能不能達(dá)到預(yù)期的性能提升還存在一些問題。因?yàn)橹虚g也經(jīng)過很多年的嘗試和成熟收斂,HLS已經(jīng)取得了比較好的效果,普遍的認(rèn)識(shí)是HLS與RTL相比,后者在細(xì)節(jié)優(yōu)化上要更好一些。深維科技目前做了一些嘗試,之前提到能夠做到20倍以上的性能加速,應(yīng)該是超過了一些RTL的產(chǎn)品性能。
深維科技在實(shí)現(xiàn)性能加速的過程中做了一些特殊的工作,關(guān)于OpenCL和HLS系統(tǒng)設(shè)計(jì)的范圍,首先在CPU有一個(gè)Opencl描述的調(diào)度,數(shù)據(jù)是通過主機(jī)的DDL和板上FPGA加速卡的DDL進(jìn)行交換。FPGA有一些相應(yīng)的kernel,kernel目前是用HLS和C++來描述的。這樣的任務(wù)有幾個(gè)需要解決的問題,第一個(gè)問題是如何做到快速開發(fā),如上文所述,使用C++和HLS就可以加快推出方案的速度。第二個(gè)問題是深維科技有面向行業(yè)的應(yīng)用開發(fā)平臺(tái),這樣可以簡(jiǎn)化面向圖像處理應(yīng)用領(lǐng)域時(shí)有通用的開發(fā)平臺(tái),可以對(duì)很多類似的任務(wù)進(jìn)行共享,例如調(diào)度、適配、框架這些事情。另外還有組件庫,深維科技把Codec和各種處理算法已經(jīng)變成了一個(gè)標(biāo)準(zhǔn)的組件,可以在平臺(tái)上對(duì)其進(jìn)行非常方便的組合。
另外針對(duì)開發(fā)速度變快之后性能如何提升的問題,深維科技提出了全棧優(yōu)化的技術(shù)。全棧優(yōu)化是從算法層、架構(gòu)層到底層的優(yōu)化技術(shù),這也是由于HLS往往會(huì)遮蔽底層實(shí)現(xiàn)過程,當(dāng)性能達(dá)不到要求時(shí),深維科技把綜合布局、布線優(yōu)化方面,在底層展開進(jìn)行進(jìn)一步優(yōu)化,這主要依托于深維科技在EDA和FPGA芯片的設(shè)計(jì)經(jīng)驗(yàn),為了提升效率,深維科技也有相應(yīng)的EDA的工具。綜上,我們比較了一下整體研發(fā)的效果,在FPGA加速里有三類設(shè)計(jì)方法,第一類是CPU軟件設(shè)計(jì)方法,它的特點(diǎn)是流程復(fù)雜度低,但是產(chǎn)品性能也低,項(xiàng)目周期很短。第二類是FPGA+CPU用傳統(tǒng)RTL的設(shè)計(jì)方法,它的特點(diǎn)是流程復(fù)雜度非常高,性能比較高,但是項(xiàng)目周期非常長(zhǎng)。第三類是深維科技目前在實(shí)踐的方法FPGA+CPU(HLS+DPComp),這其中涉及到深維科技自己的工具和方法,設(shè)計(jì)方法的流程復(fù)雜度中等且內(nèi)部可控。整個(gè)項(xiàng)目周期能夠達(dá)到與軟件開發(fā)類似的周期(15周到數(shù)月),并且可以達(dá)到非常高的產(chǎn)品性能。
-
FPGA
+關(guān)注
關(guān)注
1629文章
21750瀏覽量
604070 -
gpu
+關(guān)注
關(guān)注
28文章
4744瀏覽量
129017 -
圖像處理
+關(guān)注
關(guān)注
27文章
1294瀏覽量
56792
原文標(biāo)題:基于FPGA異構(gòu)計(jì)算快速構(gòu)建高性能圖像處理解決方案
文章出處:【微信號(hào):livevideostack,微信公眾號(hào):LiveVideoStack】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論