深度學習經過多年發展,AI已經深入人心,事實上,在影象、文字領域,AI在多個產業已經落地了諸多應用,我們熟知的自動駕駛、語音助手,背後就大量運用了AI技術。
當下,飛槳PaddlePaddle、TensorFlow、PyTorch這樣的開源框架已經非常強大,為部署側也提供了相關的開源元件,以求降低開發難度。但由於端側硬體、系統種類繁多,各種加速晶片層出不窮,端側部署開發工作仍存在實實在在的挑戰,成為開發者將AI模型真正用起來的「攔路虎」。面對這些問題,是否存在一個平臺,能夠縮短部署開發的時間,實現一鍵式部署?同時對模型進行壓縮提速,實現高效能推理?百度EasyEdge專為解決以上問題而生,EasyEdge以PaddleLite、PaddleSlim為基礎,提供了簡單易用的端上部署套件,實現不寫程式碼直接部署模型到端側,並支援二次開發。另外,EasyEdge也擴展了對主流端計算硬體的支援,適配更廣泛的硬體平臺、作業系統、模型類型,並針對特定加速晶片使用專有的計算庫,實現進一步的效能提升。
靈魂拷問一——我的使用場景需要我將模型部署到端上,但是端上開發可能會面向嵌入式裝置,作業系統也可能是Android、iOS,有一定的上手成本,怎樣才能更輕鬆地把模型落地到硬體裝置上?
靈魂拷問二——這些年出了好多加速晶片、加速卡、邊緣計算盒,價格便宜還不佔地,我想知道它們跑模型能達到什麼樣的精度和效能,幫助我進行選型。
靈魂拷問三——我訓好的模型適配XX晶片,要在各種模型格式之間轉來轉去,有點頭大,好不容易模型格式對齊了,又有運算元OP不支援,我該怎麼辦才能讓它跑起來?
靈魂拷問四——我想換個晶片,卻發現怎麼各家晶片的端上推理模型格式都不一樣,又得從頭適配,模型轉起來想想就頭大。
靈魂拷問五——費了九牛二虎之力,模型在端上跑起來了,可是速度不是太理想,我想讓它跑得更快,更省記憶體。聽說量化、剪枝、蒸餾這方面挺有用,但是好像自己研究程式碼耗時太久。
上述問題是開發者在端上部署模型時經常遇到的難點,為了解決這些問題,百度推出了EasyEdge端與邊緣AI服務平臺。通過EasyEdge,開發者可以便捷地將AI模型部署到各式各樣的AI晶片和硬體平臺上。事實上,最近EasyEdge又新增支援了兩個新的晶片系列:Atlas300 + 鯤鵬伺服器以及瑞芯微多款NPU晶片(當前已適配RK3399Pro、RV1109、RV1126),下圖是EasyEdge的適配晶片矩陣,目前,EasyEdge支援20+ AI晶片與硬體平臺,4大主流作業系統。
你想把模型部署到Windows PC上?沒問題,安排!
釋出到手機上?Android還是iOS,隨便選!當然,Linux系統更加是支援的。
具體到推理晶片上面,EasyEdge支援了很多市面上常見的硬體,除了常見的CPU、GPU以及前面提到的新支援的晶片,同時還支援英偉達Jetson系列、位元大陸、海思NNIE系列、Intel VPU、主流手機上的NPU、GPU等晶片,以及百度自研的EdgeBoard系列邊緣AI計算盒。嵌入式裝置、ARM CPU,那都不是事。而且,在未來,EasyEdge還會不斷適配更多的AI晶片、加速卡、邊緣計算盒,持續為開發者降低端側模型適配遷移的難度。
EasyEdge是專業的模型部署平臺,已經預置在百度EasyDL中。EasyDL作為零門檻的AI開發平臺,涵蓋了完整的資料處理、模型訓練與優化、服務部署等功能,支援非常完整的模型類型,包含影象、文字、視訊、語音、OCR等多種場景多種類型的模型。通過EasyDL訓練的模型可以天然使用EasyEdge來方便的進行端上部署。
但如果你是專業的AI模型開發者,手上已經有訓練好的深度學習模型,只是苦於模型部署的麻煩,也可以來EasyEdge釋出你的端上部署包。對於這樣的第三方模型,當前EasyEdge已經支援了飛槳PaddlePaddle、TensorFlow、PyTorch、Caffe、MXNet等諸多框架以及ONNX模型格式,支援的演算法類型也包括了影象分類、物體檢測、人臉識別等業界主流的各類演算法。
為了適配諸多AI晶片,EasyEdge針對不同晶片做了大量適配加速工作。因為在訓練階段,更多地關注模型效果及調優的靈活性。當訓練完成後,模型就固化下來了。然而在端上部署時,關注點會變為模型的推理,在推理環節中的重點是推理效能。因此各家AI晶片廠商為了實現更高效能的推理能力,都在努力提高晶片的並行處理能力,或者通過GPU這樣的超多執行緒並行處理,或者通過ASIC晶片這樣極大增強晶片的單指令向量乃至矩陣處理能力。但不管怎樣,執行緒化或者向量化帶來算力巨大提升的同時,必然導致靈活性的下降。這也是為什麼端側AI晶片大都具有自己的模型格式和計算庫。但同時也就帶來了部署上面大量的適配和模型轉換工作。為此,EasyEdge內建了強大的模型互轉工具,實現各個框架模型到統一IR的轉換,再將統一的IR適配到各個端上。當模型部署到端上時,遇到有些OP不支援的情況時,EasyEdge提供了大量的OP優化和替換操作。同時,EasyEdge還會利用晶片的自定義OP功能或者底層的程式語言進行自定義OP的編寫,以保證模型端到端地運行到AI晶片上。
為了讓模型跑得更快更省記憶體,模型壓縮就是推理側非常強大且實用的技術了。這方面,EasyEdge不僅支援了業界領先的量化、剪枝和蒸餾技術,還能夠混合使用這幾項能力,在儘可能保證效果的同時達到更好的壓縮效果。左下圖展示了幾款常見硬體的定點數算力和浮點數算力的比對,可以看到在很多硬體上定點數算力都遠大於浮點數算力,對於這樣的硬體,量化是非常必要的。而右圖中則可以看到剪枝和蒸餾對於模型推理的加速效果,剪枝和蒸餾本質都是對基礎模型在儘量不影響精度的前提下進行精簡,自然模型小了,記憶體佔用就少了,推理時間也就短了。
EasyEdge內建全自動評估系統,展示模型精度、效能、記憶體等多維度評價指標
事實上,在EasyEdge,當你釋出模型的時候,你通常能見到這樣的網頁:
一次訓練,多端部署。一個模型可以釋出這麼多的部署包,省去了一個個適配的麻煩。在這個頁面上還最新上線了模型效果評估的功能,開啟效能評估報告,便能看到下面這樣的頁面。模型的精度、對應硬體上的推理時間都一目瞭然的展示出來了(tips:這裡的推理時間可不是經驗時間,是你的模型真實在硬體跑出來的時間哦),有個這個報告,大家在部署前就能對自己的模型精度和效能情況瞭然於胸,是不是很貼心呢?
如果你選擇SDK的方式進行模型部署,你將獲取一個功能強大的部署包:不僅有完整且簡單的介面,也有非常完善的demo工程,包括圖片的推理、視訊流的推理、多執行緒的推理等等,如果你是一個程式設計高手,相信你看完介面和demo,很快就能整合AI的能力去進行應用開發。那如果不想寫程式碼就想部署模型怎麼辦呢?安排,SDK裡面提供了部署Serving服務的能力,不用寫程式碼,運行一下編譯出來的二進位制,你的模型Serving服務就起來了,還附帶H5頁面,可以在這個頁面上拖入圖片看看效果。也可能通過http方式去請求Serving服務,操作非常便捷。事實上,EasyEdge的工具包中還有諸多類似這樣方便開發和偵錯的小工具,限於篇幅沒法一一列舉,靜待開發者來探索與體驗。
相信通過前面的介紹,大家對於EasyEdge的多作業系統、多晶片適配的能力已經有了大體的認知了,那不妨親自來體驗一下。
EasyDL是基於飛槳深度學習開源平臺,面向企業AI應用開發者的零門檻AI開發平臺,實現零演算法基礎定製高精度AI模型。EasyDL提供一站式的智慧標註、模型訓練、服務部署等全流程功能,內建豐富的預訓練模型,支援公有云、裝置端、私有伺服器、軟硬一體方案等靈活的部署方式。準備好你的場景資料,去訓練一個模型並部署到任何想部署的硬體上,使用EasyDL高效完成不是夢!
如果你已經有自己的模型,也可以去EasyEdge釋出適配自己晶片的SDK和開發者套件哦。開發者套件使用十分簡單便捷,無需關注深度學習、具體硬體等底層邏輯,只需關注輸入圖片和輸出的識別結果即可。
EasyEdge:https://ai.baidu.com/easyedge/home