FastDeploy
综合介绍
FastDeploy 是一个为开发者设计的全场景、易用灵活、极致高效的AI模型推理部署工具。它基于PaddlePaddle深度学习框架,旨在帮助开发者快速地将各种AI模型部署到不同的硬件环境中,无论是云服务器、边缘设备还是移动端。FastDeploy支持超过150种文本、视觉、语音及跨模态AI模型,并提供开箱即用的部署体验。它通过整合多种高性能推理引擎和一键式模型压缩等技术,实现了从模型到应用场景的端到端性能优化。对于大语言模型(LLM)和视觉语言模型(VLM)等前沿模型,FastDeploy也提供了专门的优化支持,使其在生产环境中能够高效运行。
功能列表
- 多硬件支持: 支持在多种主流硬件上进行部署,包括NVIDIA GPU、昆仑芯XPU、海光DCU、昇腾NPU、以及多种ARM CPU等,满足不同场景下的硬件需求。
- 丰富的模型支持: 全面支持飞桨生态内的各类模型,同时兼容ONNX、TensorFlow、PyTorch等其他框架的模型。
- 高性能推理: 集成了TensorRT、OpenVINO、ONNX Runtime等业界领先的推理引擎,并结合自身的高性能前后处理技术,实现模型端到端的性能优化。
- 易用性: 提供统一的API,开发者只需几行代码即可完成AI模型的部署,并能轻松在不同后端推理引擎和硬件之间切换。
- 服务化部署: 支持将模型以服务化的方式部署,提供与OpenAI API兼容的接口,方便开发者将其集成到现有服务中。
- 全面的量化支持: 支持W8A16、W8A8、W4A16、W4A8等多种量化方案,帮助开发者在保持精度的同时,减小模型体积,提升推理速度。
- 大模型优化技术: 针对大语言模型和视觉语言模型,提供了包括上下文缓存、动态角色切换、投机解码、多令牌预测等在内的先进加速技术。
使用帮助
FastDeploy提供了多种安装方式,开发者可以根据自己的需求和环境选择最合适的一种。主要分为使用预编译库和源码编译两种方式。
1. 安装预编译库(推荐)
使用预编译库是最快捷方便的安装方式,适合大部分用户。
Python版本安装
# GPU版本
pip install fastdeploy-gpu-python -f https://www.paddlepaddle.org.cn/whl/fastdeploy.html
# CPU版本
pip install fastdeploy-cpu-python -f https://www.paddlepaddle.org.cn/whl/fastdeploy.html
你也可以通过访问FastDeploy在pypi.org上的页面来查看所有可用的版本。
C++版本安装开发者可以从FastDeploy的GitHub发布页面下载预编译的C++库。下载后解压,并通过以下方式在CMake中引入:
include(${FASTDEPLOY_INSTALL_DIR}/FastDeploy.cmake)
2. 源码编译安装
如果预编译库无法满足你的需求,比如需要针对特定的硬件或依赖进行编译,可以选择源码编译的方式。
环境准备
- 操作系统: Linux
- Python: 3.10 ~ 3.12
- C++编译器: GCC 8.2或更高版本
- CMake: 3.15或更高版本
编译步骤
- 克隆FastDeploy源码:
git clone https://github.com/PaddlePaddle/FastDeploy.git cd FastDeploy
- 创建编译目录并进入:
mkdir build && cd build
- 执行CMake配置:
# 编译CPU版本 cmake .. -DENABLE_ORT_BACKEND=ON -DENABLE_PADDLE_BACKEND=ON -DENABLE_VISION=ON -DCMAKE_INSTALL_PREFIX=${PWD}/fastdeploy-installed # 编译GPU版本 (需要提前安装CUDA和cuDNN) cmake .. -DENABLE_ORT_BACKEND=ON -DENABLE_PADDLE_BACKEND=ON -DENABLE_VISION=ON -DENABLE_TRT_BACKEND=ON -DCUDA_DIRECTORY=/usr/local/cuda -DCMAKE_INSTALL_PREFIX=${PWD}/fastdeploy-installed
- 执行编译和安装:
make -j`nproc` make install
快速上手:以YOLOv5为例
下面以一个目标检测模型YOLOv5为例,展示如何使用FastDeploy进行快速部署。
Python示例
import fastdeploy as fd
# 模型文件路径
model_file = "yolov5s.onnx"
# 配置文件路径
config_file = ""
# 图像文件路径
image_file = "test.jpg"
# 创建RuntimeOption,并指定推理后端
option = fd.RuntimeOption()
option.use_ort_backend() # 使用ONNX Runtime
option.use_gpu()
# 创建模型对象
model = fd.vision.detection.YOLOv5(model_file, config_file, option)
# 读取图像
im = fd.vision.utils.read_image(image_file)
# 进行推理
result = model.predict(im)
# 打印结果
print(result)
# 可视化结果
vis_im = fd.vision.vis_detection(im, result)
fd.vision.utils.write_image("visualized_result.jpg", vis_im)
C++示例
#include "fastdeploy/vision.h"
int main() {
// 模型文件路径
std::string model_file = "yolov5s.onnx";
std::string params_file = "";
// 图像文件路径
std::string image_file = "test.jpg";
// 创建RuntimeOption,并指定推理后端
fastdeploy::RuntimeOption option;
option.UseOrtBackend();
option.UseGpu();
// 创建模型对象
auto model = fastdeploy::vision::detection::YOLOv5(model_file, params_file, option);
if (!model.Initialized()) {
std::cerr << "Failed to initialize." << std::endl;
return -1;
}
// 读取图像
auto im = cv::imread(image_file);
// 进行推理
fastdeploy::vision::DetectionResult res;
if (!model.Predict(&im, &res)) {
std::cerr << "Failed to predict." << std::endl;
return -1;
}
// 打印结果
std::cout << res.Str() << std::endl;
// 可视化结果
auto vis_im = fastdeploy::vision::VisDetection(im, res);
cv::imwrite("visualized_result.jpg", vis_im);
std::cout << "Visualized result saved in visualized_result.jpg" << std::endl;
return 0;
}
通过以上步骤,开发者可以快速地在自己的项目中集成FastDeploy,实现AI模型的高性能部署。更多详细的教程和示例,可以参考官方文档。
应用场景
- 云端服务化部署在云服务器上,可以将训练好的模型通过FastDeploy进行服务化部署,对外提供API接口。例如,可以将一个OCR模型部署成一个在线文字识别服务,用户通过上传图片即可获取识别结果。FastDeploy的服务化部署方案支持高并发,并能动态管理和调度模型,确保服务的稳定和高效。
- 边缘计算在诸如Jetson、RK3588等边缘计算设备上,对实时性要求较高。FastDeploy能够充分利用这些设备的硬件加速能力,实现如实时视频监控、人脸识别门禁、工业质检等应用。通过对模型进行优化和量化,可以在有限的计算资源下达到理想的运行速度。
- 移动端应用FastDeploy也支持在Android和iOS等移动端平台上进行部署。开发者可以将轻量化的模型集成到APP中,实现如拍照识物、实时美颜、语音助手等功能,为用户提供更加智能和便捷的移动应用体验。
QA
- FastDeploy支持哪些操作系统?FastDeploy目前主要支持Linux、Windows、Android和iOS四种操作系统,能够满足绝大多数开发者的部署需求。
- FastDeploy和Paddle Inference有什么区别?Paddle Inference是飞桨原生的推理引擎,而FastDeploy是一个更高层次的部署工具。FastDeploy在底层集成了Paddle Inference,并进一步整合了TensorRT、OpenVINO等多种推理引擎,同时提供了更加简洁易用的API和端到端的性能优化方案,让开发者可以更方便地将模型部署到不同硬件上。
- 我有一个PyTorch训练的模型,可以用FastDeploy部署吗?可以。你需要先将PyTorch模型转换成ONNX格式,然后就可以使用FastDeploy进行部署了。FastDeploy对ONNX格式有很好的支持,可以调用ONNX Runtime、TensorRT等后端进行推理。
- 使用FastDeploy是否需要付费?FastDeploy是一个开源项目,遵循Apache-2.0开源协议,开发者可以免费使用。