國產AI框架進化!百度Paddle Lite釋出:率先支援華為NPU線上編譯

AIBigbull2050發表於2019-08-22

乾明 邊策 發自 凹非寺

量子位 報導 | 公眾號 QbitAI

國產AI框架飛槳剛剛帶來新進化:Paddle Lite正式釋出!

高擴充套件、高效能、輕量化,還是首個支援華為NPU線上編譯的深度學習端側推理框架,劍指加大力度攻佔移動端側場景。

而且大環境如此,這樣的自主研發基礎框架進展,也有了更多的寄寓。

誠意和實力方面也值得稱道。針對更廣泛、更異構的AI硬體支援,是Paddle Lite的核心亮點之一。


國產AI框架進化!百度Paddle Lite釋出:率先支援華為NPU線上編譯


此次升級釋出,Paddle Lite的架構有了重大升級,在多硬體、多平臺以及硬體混合排程的支援上更加完備。

不僅涵蓋ARM CPU、Mali GPU、Adreno GPU、華為NPU等移動端晶片,也支援FPGA等邊緣裝置常用硬體,並具備可相容支援雲端主流晶片的能力。

其中,Paddle Lite還成為了首個華為NPU線上編譯的深度學習推理框架。更早之前,百度和華為宣佈在AI開發者大會上強強聯手。

國產AI框架進化!百度Paddle Lite釋出:率先支援華為NPU線上編譯

值得一提的是,對標Google推出的TensorFlow Lite,升級釋出的Paddle Lite更是直接圍繞前者不足進行了補強。

官方表示,不僅支援範圍更廣的AI硬體終端,增強了部署的普適性,並且具備明顯的效能優勢。

AI框架的競爭,愈加激烈,也進入全新階段。

何為Paddle Lite?

Paddle Lite,是Paddle Mobile的進化版,是一款主打端側高效能輕量化部署的推理引擎。

核心用途是將訓練出的模型在不同硬體平臺場景下快速部署,根據輸入資料,執行預測推理得到計算結果,支援實際的業務應用。

在AI技術落地中,推理階段與實際應用相關聯,直接關係到使用者的體驗,是非常具有挑戰性的一環。


國產AI框架進化!百度Paddle Lite釋出:率先支援華為NPU線上編譯


而更具挑戰性的是,當前承載推理的硬體,正日趨異構化。雲端、移動端和邊緣端對應著各種不同的硬體,底層的晶片架構差異很大。

如何能夠完整地支援如此眾多的硬體架構,並且實現這些硬體之上人工智慧應用效能的最佳化,實現更快的速度?

Paddle Lite給出的解決方案是:

透過全新架構高擴充套件性和高靈活度地建模底層計算模式,加強了多種硬體、量化方法、Data Layout 混合排程執行的能力,從而保障了宏觀硬體的支援能力,並透過極致的底層最佳化,實現了領先的模型應用效能效果。

Paddle Lite五大特性

官方介紹,Paddle Lite一共有五大特性:高擴充套件性、訓練推理無縫銜接,通用性、高效能和輕量化。

1、高擴充套件性。

新架構對硬體抽象描述能力更強,可容易地在一套框架下對新硬體進行整合,具有非常好的擴充套件性。例如,對於FPGA的擴充套件支援變得非常簡單。

此外,參考了LLVM的Type System和MIR(Machine IR),可以模組化地對硬體和模型進行更細緻的分析和最佳化,可以更便捷高效地擴充套件最佳化策略,提供無限可能。

目前,Paddle Lite已經支援21種 Pass 最佳化策略,涵蓋硬體計算模式混合排程、INT8量化、運算元融合、冗餘計算裁剪等不同種類的最佳化。

2、訓練推理無縫銜接。

不同於其他一些獨立的推理引擎,Paddle Lite依託飛槳訓練框架及其對應的豐富完整的運算元庫,底層運算元的計算邏輯與訓練嚴格一致,模型完全相容無風險,並可快速支援更多模型。

和飛槳的PaddleSlim模型壓縮工具打通,直接支援INT8量化訓練的模型,並可獲得比離線量化更佳的精度。

3、通用性。

官方釋出18個模型的 benchmark,涵蓋影像分類、檢測、分割及影像文字識別等領域,對應80個運算元Op+85個 Kernel,相關運算元可以通用支援其他模型。


國產AI框架進化!百度Paddle Lite釋出:率先支援華為NPU線上編譯


而且, 還相容支援其他框架訓練的模型,對於 Caffe 和 TensorFlow訓練的模型,可以透過配套的X2Paddle工具轉換之後進行推理預測。

現在,Paddle Lite已經與飛槳的PaddleSlim模型壓縮工具打通,直接支援INT8量化訓練的模型,並可獲得比離線量化更佳的精度。

支援多硬體,目前已支援的包括ARM CPU, Mali GPU、Adreno GPU、華為NPU、FPGA等,正在最佳化支援的有寒武紀、位元大陸等AI晶片,未來還會支援其他更多的硬體。

此外,還提供Web前端開發介面,支援javascript呼叫GPU,可在網頁端快捷執行深度學習模型。

4、高效能。

在ARM CPU上,效能表現優異。針對不同微架構,進行了kernel的深度最佳化,在主流移動端模型上,展現出了速度優勢。


國產AI框架進化!百度Paddle Lite釋出:率先支援華為NPU線上編譯


此外,Paddle Lite也支援INT8量化計算,透過框架層的最佳化設計和底層高效的量化計算實現,結合 PaddleSlim 模型壓縮工具 中 INT8量化訓練功能,可以提供高精度高效能的預測能力。


國產AI框架進化!百度Paddle Lite釋出:率先支援華為NPU線上編譯


在華為NPU, FPGA上也有很好的效能表現。


國產AI框架進化!百度Paddle Lite釋出:率先支援華為NPU線上編譯


5、輕量化。

針對端側裝置特點進行深度定製及最佳化,無任何第三方依賴。

整個推理過程分為模型載入解析、計算圖的最佳化分析及裝置上的高效執行。移動端可以直接部署經過最佳化分析的圖,執行預測。

Android 平臺上 ,ARMV7 動態庫只需要800k,ARMV8動態庫僅有1.3M,也可以根據需要,進行更深度的剪裁。

目前,Paddle Lite及其前身的相關技術,已經在百度App、百度地圖、百度網盤和自動駕駛等產品大規模使用。

比如百度App新近推出實時動態多目標識別功能,在Paddle Lite的支援下,把原來雲端200多層的視覺演算法模型最佳化到10幾層,實現100ms以內識別物體,8ms內做出物體位置追蹤更新。

國產AI框架進化!百度Paddle Lite釋出:率先支援華為NPU線上編譯

相比之下,人類肉眼識別物體,一般需要170ms到400ms,追蹤物體重新整理需要40ms左右,這意味著其識別速度已經超過了人眼。

而實現這一切,正是得益於Paddle Lite強大的端側推理能力,能夠完美承擔飛槳在多硬體平臺上的高效部署,並實現了模型應用的極致效能最佳化。

全新架構詳解

背靠百度,Paddle Lite的架構有一系列自主研發技術。

據介紹,Paddle Lite參考了百度內部多個預測庫架構實現,以及優勢能力整合,並重點增加了多種計算模式(硬體、量化方法、Data Layout)混合排程的完備性設計,新架構設計如下:


國產AI框架進化!百度Paddle Lite釋出:率先支援華為NPU線上編譯


其中最上面一層是 模型層,直接接受Paddle訓練的模型,透過模型最佳化工具轉化為NaiveBuffer特殊格式,以便更好地適應移動端的部署場景。

第二層是 程式層,是operator序列構成的執行程式。

第三層是一個完整的 分析模組,包括了 MIR(Machine IR) 相關模組,能夠對原有的模型的計算圖針對具體的硬體列表進行運算元融合、計算裁剪在內的多種最佳化。

不同於飛槳訓練過程中的IR (Internal Representation),硬體和執行資訊也在這一層加入到分析中。

最底層是 執行層,也就是一個Kernel序列構成的Runtime Program。執行層的框架排程框架極低,只涉及到Kernel 的執行,且可以單獨部署,以支援極致的輕量級部署。

整體上來看,不僅著重考慮了對多硬體和平臺的支援,而且也強化了多個硬體在一個模型中混合執行的能力、多個層面的效能最佳化處理,以及對端側應用的輕量化設計。

國產深度學習框架崛起

飛槳(PaddlePaddle)的進化,不僅僅只是一個簡單的產品升級。

放在大趨勢與大環境中,意義正在變得不同。

一方面是大趨勢。

今年是AI在落地化重要的一年,國內在AI硬體,AI硬體研發,包括百度、阿里、華為等巨頭公司都在積極佈局AI晶片的設計和製造。

硬體的快速發展並不能彌補軟體端的缺失,國外科技巨頭已經加快步伐,想要佔領這一市場空白地帶。

今年的TensorFlow開發者大會上,谷歌已經將在邊緣部署AI應用的TensorFlow Lite作為重點,顯然這一框架目前並不能很好地適配國內公司開發的各種硬體。

國外科技公司也不會去花大量的精力在諸多不同廠商、不同架構的國產晶片上。於是飛槳看到機遇,並且初見成效。

據百度剛釋出的Q2財報顯示,飛槳的開發者下載量在2019年第二季度環比增加了45%。

作為目前最流行的國產機器學習框架,飛槳推出Paddle Lite著實花了大量精力解決國內AI硬體應用範圍小、開發困難的局面。

另一方面,繞不開的大形勢話題。

相比以往,AI發展中的自主研發和無斷供之憂,也開始被屢屢談及。

除了專利、硬體,底層演算法框架,在安卓斷供華為之後也被抬上桌面。

當前,兩大深度學習框架TensorFlow、PyTorch雖然是開源專案,但都在美國公司掌控之下,都可能要“遵守美國法律”。


國產AI框架進化!百度Paddle Lite釋出:率先支援華為NPU線上編譯


所以也不是沒有“卡脖子”的風險。

之前,該如何發展這樣的底層核心技術的話題,各方專家談了又談,熱切呼籲,但真正變成行動,依然難上加難。

不僅需要時間、人才、資源等各方面的投入,也需要恰當的時機——至少沒到積重難返的時候。

於是Paddle Lite的升級,就顯得恰逢其時。一來已有積累,二來時機不晚,可以換道超車。

不過,說一千道一萬,最終還是上手試試最直接。

話不多說,我們看貨、驗貨:

傳送門

關於本次釋出的Paddle Lite,重點功能升級彙總如下:

  • 1、架構重大升級,透過新增Machine IR、Type system、輕量級 Operator 和 Kernel 等,增加了通用多平臺和多硬體支援,多 precision 和 data layout 混合排程執行,動態最佳化,輕量級部署等重要特性。
  • 2、完善了Java API,與 C++ API 一一對應。
  • 3、新增NaiveBuffer 模型儲存格式,移動端部署與protobuf解耦,使預測庫尺寸更小。
  • 4、透過X2Paddle 支援 Caffe 和 TensorFlow 模型的預測,目前官方驗證6種模型轉化支援。
  • 5、新增對華為海思 NPU 的深度支援,成為首個支援華為NPU線上編譯的框架,已驗證
  • 6、支援FPGA ,已驗證 ResNet50 模型。
  • 7、對於Mali GPU 和 Adreno GPU,支援 OpenCL 和 ARM CPU Kernel混合排程,已驗證了在MobileNetV1、MobileNetV2、ResNet-50等模型上的效果。
  • 8、對於ARM架構的CPU,Paddle Lite增加了對vgg-16、EfficientNet-b0、ResNet-18等常見模型的支援驗證。
  • 9、新增各類硬體 Kernel 70種。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69946223/viewspace-2654529/,如需轉載,請註明出處,否則將追究法律責任。

相關文章