FastDeploy全場(chǎng)景高性能AI部署工具:加速打通AI模型產(chǎn)業(yè)落地的最后一公里

碎片化。在部署過(guò)程中,由于深度學(xué)習(xí)框架、硬件與平臺(tái)的多樣化,開(kāi)源社區(qū)以及各硬件廠商存在大量分散的工具鏈,很難通過(guò)一款產(chǎn)品,同時(shí)滿足開(kāi)發(fā)者在服務(wù)端、移動(dòng)端和邊緣端,以及服務(wù)化場(chǎng)景部署的需求。
成本高。這與部署工具鏈碎片化的現(xiàn)狀相關(guān)。開(kāi)發(fā)者在不同推理引擎、不同硬件上部署的流程、代碼API形態(tài)和體驗(yàn)都不盡相同,這帶來(lái)了很高的學(xué)習(xí)成本。
速度慢。部署中最大的問(wèn)題是如何將模型在特定的硬件上實(shí)現(xiàn)高性能的優(yōu)化。盡管當(dāng)前模型套件提供各種輕量級(jí)的模型,或開(kāi)源社區(qū)各類(lèi)推理引擎不斷優(yōu)化模型的推理速度。但在實(shí)際部署中,開(kāi)發(fā)者更關(guān)注的是模型端到端的優(yōu)化,包括預(yù)處理加速、模型壓縮、量化等等。而目前的推理產(chǎn)品都缺少這種端到端的體驗(yàn)。
因此飛槳全新發(fā)布新一代部署產(chǎn)品——FastDeploy部署工具,為產(chǎn)業(yè)實(shí)踐中需要推理部署的開(kāi)發(fā)者提供最優(yōu)解。

目前FastDeploy底層包含了飛槳的推理引擎、開(kāi)源社區(qū)硬件廠商的推理引擎,結(jié)合飛槳統(tǒng)一硬件適配技術(shù)可以滿足開(kāi)發(fā)者將模型部署到主流AI硬件的需求。
模型壓縮與轉(zhuǎn)換工具使得開(kāi)發(fā)者通過(guò)統(tǒng)一的部署API實(shí)現(xiàn)多框架模型的推理,同時(shí),飛槳自研的PaddleSlim為大家提供更易用、性能更強(qiáng)的模型自動(dòng)化壓縮功能。
而在統(tǒng)一的部署API之上,我們還提供了豐富的多場(chǎng)景部署工程,滿足開(kāi)發(fā)者對(duì)于服務(wù)端、移動(dòng)端、網(wǎng)頁(yè)端的端到端部署需求。
FastDeploy三大特點(diǎn):
作為全場(chǎng)景高性能部署工具,F(xiàn)astDeploy致力于打造三個(gè)特點(diǎn),與上述提及的三個(gè)痛點(diǎn)相對(duì)應(yīng),分別是全場(chǎng)景、簡(jiǎn)單易用和極致高效。

全場(chǎng)景
全場(chǎng)景是指FastDeploy的多端多引擎加速部署、多框架模型支持和多硬件部署能力。
多端部署
FastDeploy支持模型在多種推理引擎上部署,底層的推理后端,包括服務(wù)端Paddle Inference、移動(dòng)端和邊緣端的Paddle Lite以及網(wǎng)頁(yè)前端的Paddle.js,并且在上層提供統(tǒng)一的多端部署API。這里以PaddleDetection的PP-YOLOE模型部署為例,用戶只需要一行代碼,便可實(shí)現(xiàn)在不同推理引擎后端間的靈活切換。
使用Paddle Inference部署:
使用OpenVINO部署:
多框架支持
在多框架模型部署的支持上,F(xiàn)astDeploy集成了X2Paddle和Paddle2ONNX兩款模型轉(zhuǎn)換工具。截至目前,飛槳的轉(zhuǎn)換工具支持多種深度學(xué)習(xí)框架及ONNX的交換格式。在百度公司內(nèi)部以及開(kāi)源社區(qū),我們支持了不同領(lǐng)域300多種模型的轉(zhuǎn)換,目前也在根據(jù)用戶的需求持續(xù)迭代。

在FastDeploy1.0正式版本中,飛槳統(tǒng)一了模型轉(zhuǎn)換的功能入口。開(kāi)發(fā)者只需要一行命令就可以完成其他深度學(xué)習(xí)框架到飛槳的轉(zhuǎn)換,以及飛槳模型與ONNX交換格式的互轉(zhuǎn),幫助開(kāi)發(fā)者使用FastDeploy快速體驗(yàn)飛槳的模型壓縮,以及推理引擎端到端的優(yōu)化效果。
多硬件適配

飛槳硬件適配統(tǒng)一方案在多硬件適配上,F(xiàn)astDeploy基于飛槳硬件適配統(tǒng)一方案進(jìn)行擴(kuò)展,實(shí)現(xiàn)最大化AI模型部署通路。

最大化AI模型部署通路在最新版本中,F(xiàn)astDeploy和英特爾、英偉達(dá)、瑞芯微和GraphCore等硬件廠商完成了硬件適配。期待更多硬件生態(tài)伙伴使用FastDeploy拓展更多領(lǐng)域,完成更多模型的端到端推理部署。

簡(jiǎn)單易用
FastDeploy提供主流產(chǎn)業(yè)場(chǎng)景和SOTA模型端到端的部署,以及多端部署的統(tǒng)一開(kāi)發(fā)體驗(yàn)。

在FastDeploy的部署套件中,飛槳提供覆蓋20多個(gè)主流AI場(chǎng)景,以及150多個(gè)SOTA產(chǎn)業(yè)模型的端到端部署示例,讓開(kāi)發(fā)者從場(chǎng)景入手,快速通過(guò)自行訓(xùn)練或預(yù)訓(xùn)練模型完成部署工作。
Python部署:
C++部署:
在開(kāi)發(fā)體驗(yàn)上,F(xiàn)astDeploy從統(tǒng)一的角度設(shè)計(jì)了部署的API,確保在不同端和不同開(kāi)發(fā)語(yǔ)言下,開(kāi)發(fā)者能夠擁有統(tǒng)一的開(kāi)發(fā)體驗(yàn),并且使用盡可能少的代碼實(shí)現(xiàn)模型端到端的高性能推理。



此外,飛槳聯(lián)動(dòng)EasyEdge提供了10多個(gè)端到端的部署工程Demo,幫助開(kāi)發(fā)者快速體驗(yàn)AI模型效果,滿足開(kāi)發(fā)者產(chǎn)業(yè)使用中快速集成需求。同時(shí)EasyEdge提供了更易用的開(kāi)發(fā)平臺(tái),便于開(kāi)發(fā)者體驗(yàn)。

極致高效
FastDeploy的極致高效,包括模型無(wú)損量化壓縮、推理部署軟硬協(xié)同加速和模型端到端全流程的部署性能優(yōu)化。
無(wú)損量化壓縮,軟硬協(xié)同加速

FastDeploy集成了飛槳壓縮和推理的特色,實(shí)現(xiàn)了自動(dòng)化壓縮與推理引擎深度聯(lián)動(dòng),為開(kāi)發(fā)者提供更高效的量化推理部署體驗(yàn)。以PP-LCNetV2和ERNIE 3.0模型為例,傳統(tǒng)的KL離線量化會(huì)明顯降低模型壓縮后的精度,但在FastDeploy的最新版本中,飛槳通過(guò)集成PaddleSlim最新的ACT自動(dòng)壓縮技術(shù),實(shí)現(xiàn)模型幾乎無(wú)損的壓縮功能。
如果壓縮后的模型想達(dá)到更高的推理性能,需要后端推理引擎的軟硬件協(xié)同優(yōu)化工作。基于最新版本的Paddle Inference,在CPU上通過(guò)英特爾VNNI指令集以及GPU上深度融合和優(yōu)化,性能全面領(lǐng)先ONNX Runtime。在移動(dòng)端上,Paddle Lite對(duì)ARM v9指令集進(jìn)行了全面適配,INT8推理性能相對(duì)比同類(lèi)的產(chǎn)品有更大幅度的性能提升。
端到端全流程優(yōu)化
但也正如上文提到,模型推理只是端到端部署中的一個(gè)環(huán)節(jié),所以FastDeploy在端到端的全流程部署上做了大量?jī)?yōu)化工作,并且對(duì)于此前飛槳的CV模型部署代碼進(jìn)行了全面優(yōu)化升級(jí)。

在CPU上,對(duì)預(yù)處理操作進(jìn)行融合,減少數(shù)據(jù)預(yù)處理過(guò)程中內(nèi)存創(chuàng)建、拷貝和計(jì)算量。在GPU上,飛槳引入了自定義的CUDA預(yù)處理算子優(yōu)化,實(shí)現(xiàn)了服務(wù)端上模型端到端部署性能的大幅提升。在移動(dòng)端,飛槳與百度視覺(jué)技術(shù)部合作,通過(guò)百度在業(yè)務(wù)實(shí)踐中自研打磨的高性能圖像預(yù)處理庫(kù)FlyCV,顯著提升圖像數(shù)據(jù)預(yù)處理的性能。
總體而言,本次全新發(fā)布的FastDeploy部署套件可以滿足開(kāi)發(fā)者全場(chǎng)景的高性能部署需求,大幅提升在AI產(chǎn)業(yè)部署中的開(kāi)發(fā)效率。FastDeploy的目標(biāo)和使命是讓開(kāi)發(fā)者簡(jiǎn)單高效地將AI模型部署到任何場(chǎng)景。目前,開(kāi)源項(xiàng)目仍在高效迭代中,每月都會(huì)有新版本和新部署功能升級(jí)發(fā)布。歡迎大家點(diǎn)擊閱讀原文或訪問(wèn)下方鏈接關(guān)注。
FastDeploy開(kāi)源項(xiàng)目地址
https://github.com/PaddlePaddle/FastDeploy

獲取更多技術(shù)內(nèi)容
請(qǐng)關(guān)注【飛槳PaddlePaddle】公眾號(hào)~