天天看點

MNN推理引擎最新實測,CPU、GPU性能全面領先!高性能通用性易用性想點大事

每當有深度學習架構開源時,我們也和廣大的吃瓜群衆一樣,期冀着是不是能有一波新的浪潮,把端側AI托上一個新的高度。但同時,出于同行們對MNN的認可,我們幾乎每一次都會在對比的榜單上出鏡,有時甚至是唯一競對。高處不勝寒哪。

在正文之前,要先贊揚一下騰訊的開源精神。2017年,NCNN吹響了國内引擎開源的号角,為諸多後來者樹立了榜樣。而今,TNN又一次在移動性能上又邁出了一步。作為開源社群的一員,來,我們歡迎…emmm…這一位到底是該稱為老戲骨還是小鮮肉…加入社群性能毒打群和諧友愛的大社群。

關于測評的一些觀點

MNN推理引擎最新實測,CPU、GPU性能全面領先!高性能通用性易用性想點大事

端側AI在這兩三年裡,可謂高速發展,新應用、新算法、新硬體推陳出新,也不斷有新推理引擎湧現。但對引擎的評價方式定格在了三年前,比較的總是ARMv7/ARM64下MobileNet、SqueezeNet、ResNet不同版本的性能比較。

這對我們而言,愈發像是一場性能的"聖杯戰争" —— 性能重要嗎?當然重要。能不參與嗎?又無人身免。但這幾個模型的性能真的是推理引擎們的終極目标嗎?當然不是!如果我們的目标是真正去降低社群AI應用的門檻,就不能隻停留在這些名額上。

測評報告的原初目的,應該是便于使用者針對自身的業務,做出選擇,而不是秀肌肉。

一個好的推理引擎應至少具有三個基本特性:

  • 通用性,模型支援是一切應用的前提;
  • 高性能,但快慢若脫離業務價值,也會缺失實際意義
  • 易用性,能少搬幾塊磚,豈不美哉?

是以,行業評價推理引擎的方式亟需更新 —— 性能上,除了基準的資料,也應包含對新後端、新特性的支援情況;算子上,使用者可能更關心除了CNN以外,能不能支援RNN、GAN、Transformer;易用性上,是不是有提供可視化工具、測評工具、量化工具,程式設計界面是不是足夠友好。

為此,我們一直在努力。

高性能

MNN推理引擎最新實測,CPU、GPU性能全面領先!高性能通用性易用性想點大事

雖然說不能隻看性能,但點名了,還是要回應一下的。

做完資料驗證,雖然資料和TNN的測評稍有出入,但畢竟也為我們的工程師重新整理了一個小目标。于是,我們把之前擱置的優化拎上了日程。一周不到的時間,835/845上跑小網絡,CPU上,略勝一籌;GPU上,則是5 ~ 15%的領先。

MNN推理引擎最新實測,CPU、GPU性能全面領先!高性能通用性易用性想點大事

但這再也不是當年從2000ms降低到700ms那樣的飛躍了。

而如果我們放眼大一些的模型,比如Inception V3,那麼情況會是:

MNN推理引擎最新實測,CPU、GPU性能全面領先!高性能通用性易用性想點大事

又或是打開ARM v8.2的情況下,不論是fp16還是quant,性能都可以有一段躍遷:

MNN推理引擎最新實測,CPU、GPU性能全面領先!高性能通用性易用性想點大事

你看,可以為業務帶來質變優化的點依然存在。而這些,正是我們暫時按下ARM優化的原因。

通用性

除了性能,使用者最為關心的名額就是通用性。性能再好,業務模型跑不起來都白搭。而MNN背靠阿裡巴巴的衆多智能場景,久經各方業務的磨煉,在支援算子的數量、算子實作的品質上,都可謂久經考驗。但如果不是MNN的死忠粉,可能都很難意識到,我們在通用性方面下的苦功。

模型轉換上,我們沒有将Caffe、TensorFlow、TensorFlow Lite的轉換轉嫁給三方的工具,盡量避免模型格式間轉換導緻的失敗。從開源到現在,在支援的轉換算子總量上,MNN翻了一番還多。

MNN推理引擎最新實測,CPU、GPU性能全面領先!高性能通用性易用性想點大事

算子實作上,我們在計算後端的支援上,應該也是業界最廣的。除了前文所述的ARM v8.2,我們在GPU算子的支援上,也不遑多讓。

MNN推理引擎最新實測,CPU、GPU性能全面領先!高性能通用性易用性想點大事

注:計算算子數量時,對Binary、Unary、Reduce算子,統一到友商口徑,采用拆分成多種的方式計算。

易用性

易用性方面,在過去的一年,我們也着墨頗多。

可視化上,我們在跨平台可視化工具

Netron

上增加了對MNN模型的支援。

模型壓縮上,我們的工具同時支援了KL和ADMM兩種量化方式,即可以采用

Post-training Quantization

降低量化門檻,也可以采用

Quantization Aware Training

來提升量化的精度。

模型測評上,我們提供的校驗工具和Profiler工具,可以幫助開發者快速定位模型中的問題所在。

前端語言上,我們還打通了MNN和Python的橋接,友善算法工程師們,在自己熟悉的平台、熟悉的語言上,完成開發、校驗。

除了工程之外,文檔示例上,我們也沒落下。我們搭建了

中英文的文檔集

,也和社群一起搭建了我們的

示例集

想點大事

MNN推理引擎最新實測,CPU、GPU性能全面領先!高性能通用性易用性想點大事

如果跳出引擎的小圈子,放眼整個AI生态圈,端側AI近幾年發展到底怎麼樣呢?

我們以雲側AI為标尺,可以把端側AI拆解為上下兩層:

- 基礎設施

如前所述,不隻是性能,推理引擎在通用性、易用性等方面還有待完善。而推理引擎也隻是解決了模型在端側運作的問題,從端側AI部署的完整疊代來說,模型轉換、模型壓縮、開發調試、效果評估、算法和工程怎麼高效協同等等,需要優化、提效的流程,還有很多。

- 上層應用

從應用角度來說,目前端側AI應用的廣度和深度都是不夠的 —— 一方面,殺手級的應用不多,甚至基本就沒有;另一方面,AI應用的門檻還比較高,很多長尾需求難以落地。可以說,端側AI的業務價值還沒有充分被挖掘出來。是以,相比于烈火烹油的雲側AI,或是三端一體的Flutter,我們都還需要和社群站在一起,做更進一步的探索。

我們真切得認為端側AI還處于發展的初期,更需要從業者一起努力推動行業發展,而不是把彈藥浪費在無盡的對比内耗上面。我們期望和大家在真正有益于繁榮AI生态的方向上,探索出一片新的空間。

端智能團隊

淘寶基礎平台部-端智能團隊歡迎移動端計算優化工程師和推理引擎架構師的加入。對新技術感興趣,善于創新突破,渴望用新技術給使用者帶來創新體驗的同學請聯系我們。

履歷投遞至呂行:[email protected]

關注「淘系技術」微信公衆号,一個有溫度有内容的技術社群~

MNN推理引擎最新實測,CPU、GPU性能全面領先!高性能通用性易用性想點大事