加速國產智能終端落地,百度亮出AI部署利器FastDeploy

我就是餓魚 發佈 2023-02-04T18:49:43.900058+00:00

飛槳目前為開發者提供了涵蓋多種領域的模型套件,開發者可以使用這些套件基於自身數據集快速完成深度學習模型的訓練。但在實際產業部署環境下,開發者在部署模型到不同硬體和不同場景時面臨以下三個痛點問題。碎片化。

飛槳目前為開發者提供了涵蓋多種領域的模型套件,開發者可以使用這些套件基於自身數據集快速完成深度學習模型的訓練。但在實際產業部署環境下,開發者在部署模型到不同硬體和不同場景時面臨以下三個痛點問題。

  • 碎片化。在部署過程中,由於深度學習框架、硬體與平台的多樣化,開源社區以及各硬體廠商存在大量分散的工具鏈,很難通過一款產品,同時滿足開發者在服務端、移動端和邊緣端,以及服務化場景部署的需求。
  • 成本高。這與部署工具鏈碎片化的現狀相關。開發者在不同推理引擎、不同硬體上部署的流程、代碼API形態和體驗都不盡相同,這帶來了很高的學習成本。
  • 速度慢。部署中最大的問題是如何將模型在特定的硬體上實現高性能的優化。儘管當前模型套件提供各種輕量級的模型,或開源社區各類推理引擎不斷優化模型的推理速度。但在實際部署中,開發者更關注的是模型端到端的優化,包括預處理加速、模型壓縮、量化等等。而目前的推理產品都缺少這種端到端的體驗。

因此飛槳全新發布新一代部署產品——FastDeploy部署工具,為產業實踐中需要推理部署的開發者提供最優解。

  • 目前FastDeploy底層包含了飛槳的推理引擎、開源社區硬體廠商的推理引擎,結合飛槳統一硬體適配技術可以滿足開發者將模型部署到主流AI硬體的需求。
  • 模型壓縮與轉換工具使得開發者通過統一的部署API實現多框架模型的推理,同時,飛槳自研的PaddleSlim為大家提供更易用、性能更強的模型自動化壓縮功能。
  • 而在統一的部署API之上,我們還提供了豐富的多場景部署工程,滿足開發者對於服務端、移動端、網頁端的端到端部署需求

FastDeploy三大特點

作為全場景高性能部署工具,FastDeploy致力於打造三個特點,與上述提及的三個痛點相對應,分別是全場景、簡單易用和極致高效

全場景

全場景是指FastDeploy的多端多引擎加速部署、多框架模型支持和多硬體部署能力。

多端部署

FastDeploy支持模型在多種推理引擎上部署,底層的推理後端,包括服務端Paddle Inference、移動端和邊緣端的Paddle Lite以及網頁前端的Paddle.js,並且在上層提供統一的多端部署API。這裡以PaddleDetection的PP-YOLOE模型部署為例,用戶只需要一行代碼,便可實現在不同推理引擎後端間的靈活切換。

import fastdeploy as fd
import cv2

im = cv2.imread("test.jpg")

# 通過RuntimeOption配置後端
option = fd.RuntimeOption()
option.use_paddle_infer_backend()

# 加載飛槳PPYOLOE檢測模型
model = fd.vision.detection.PPYOLOE(「model.pdmodel」,           
                                    「model.pdiparams」,
                                    「infer_cfg.yml」,
                                    runtime option=option)
result = model.predict(im)
使用Paddle Inference部署
import fastdeploy as fd
import cv2

im = cv2.imread("test.jpg")

# 通過RuntimeOption配置後端
option = fd.RuntimeOption()
option.use_openvino_backend()

# 加載飛槳PPYOLOE檢測模型
model = fd.vision.detection.PPYOLOE(「model.pdmodel」,           
                                    「model.pdiparams」,
                                    「infer_cfg.yml」,
                                    runtime option=option)
result = model.predict(im)
使用OpenVINO部署

多框架支持

在多框架模型部署的支持上,FastDeploy集成了X2Paddle和Paddle2ONNX兩款模型轉換工具。截至目前,飛槳的轉換工具支持多種深度學習框架及ONNX的交換格式。在百度公司內部以及開源社區,我們支持了不同領域300多種模型的轉換,目前也在根據用戶的需求持續疊代。

在FastDeploy1.0正式版本中,飛槳統一了模型轉換的功能入口。開發者只需要一行命令就可以完成其他深度學習框架到飛槳的轉換,以及飛槳模型與ONNX交換格式的互轉,幫助開發者使用FastDeploy快速體驗飛槳的模型壓縮,以及推理引擎端到端的優化效果。

多硬體適配

飛槳硬體適配統一方案

在多硬體適配上,FastDeploy基於飛槳硬體適配統一方案進行擴展,實現最大化AI模型部署通路。

在最新版本中,FastDeploy和英特爾、英偉達、瑞芯微和GraphCore等硬體廠商完成了硬體適配。期待更多硬體生態夥伴使用FastDeploy拓展更多領域,完成更多模型的端到端推理部署。

簡單易用

FastDeploy提供主流產業場景和SOTA模型端到端的部署,以及多端部署的統一開發體驗。

在FastDeploy的部署套件中,飛槳提供覆蓋20多個主流AI場景,以及150多個SOTA產業模型的端到端部署示例,讓開發者從場景入手,快速通過自行訓練或預訓練模型完成部署工作。

以下是Python部署和C++部署:

import fastdeploy.vision as vision

model = vision.detection.PPYOLOE(「model.pdmodel」,           
                                 「model.pdiparams」,
                                 「infer_cfg.yml」)
result = model.predict(im)
#include 「fastdeploy/vision.h」
namespace vision = fastdeploy::vision;

int main(int argc, char* argv[]) {
  ...
  auto model = vision::detection::PPYOLOE(「model.pdmodel」,
                                          」model.pdiparams」,
                                          」infer_cfg.yml」)
  vision::DetectionResult result;
  model.Predict(image, &result);
  ...

在開發體驗上,FastDeploy從統一的角度設計了部署的API,確保在不同端和不同開發語言下,開發者能夠擁有統一的開發體驗,並且使用儘可能少的代碼實現模型端到端的高性能推理。

此外,飛槳聯動EasyEdge提供了10多個端到端的部署工程Demo,幫助開發者快速體驗AI模型效果,滿足開發者產業使用中快速集成需求。同時EasyEdge提供了更易用的開發平台,便於開發者體驗。

極致高效

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

無損量化壓縮,軟硬協同加速

FastDeploy集成了飛槳壓縮和推理的特色,實現了自動化壓縮與推理引擎深度聯動,為開發者提供更高效的量化推理部署體驗。以PP-LCNetV2和ERNIE 3.0模型為例,傳統的KL離線量化會明顯降低模型壓縮後的精度,但在FastDeploy的最新版本中,飛槳通過集成PaddleSlim最新的ACT自動壓縮技術,實現模型幾乎無損的壓縮功能。

如果壓縮後的模型想達到更高的推理性能,需要後端推理引擎的軟硬體協同優化工作。基於最新版本的Paddle Inference,在CPU上通過英特爾VNNI指令集以及GPU上深度融合和優化,性能全面領先ONNX Runtime。在移動端上,Paddle Lite對ARM v9指令集進行了全面適配,INT8推理性能相對比同類的產品有更大幅度的性能提升。

端到端全流程優化

但也正如上文提到,模型推理只是端到端部署中的一個環節,所以FastDeploy在端到端的全流程部署上做了大量優化工作,並且對於此前飛槳的CV模型部署代碼進行了全面優化升級。

在CPU上,對預處理操作進行融合,減少數據預處理過程中內存創建、拷貝和計算量。在GPU上,飛槳引入了自定義的CUDA預處理算子優化,實現了服務端上模型端到端部署性能的大幅提升。在移動端,飛槳與百度視覺技術部合作,通過百度在業務實踐中自研打磨的高性能圖像預處理庫FlyCV,顯著提升圖像數據預處理的性能。

總體而言,本次全新發布的FastDeploy部署套件可以滿足開發者全場景的高性能部署需求,大幅提升在AI產業部署中的開發效率。FastDeploy的目標和使命是讓開發者簡單高效地將AI模型部署到任何場景。目前,開源項目仍在高效疊代中,每月都會有新版本和新部署功能升級發布。歡迎大家點擊閱讀原文訪問下方連結關注。

  • FastDeploy開源項目地址

https://github.com/PaddlePaddle/FastDeploy

關鍵字: