三行Python代码搞定深度学习推理:Infery让AI部署变得轻松简单

Infery是一个Python运行时引擎,通过统一API支持TensorFlow、PyTorch等主流框架,仅需三行代码即可在CPU/GPU上运行优化模型的推理,大幅简化环境配置与部署流程,提升开发效率。

Infery — 仅用3行Python代码运行深度学习推理

想象一下,通过一个友好而强大的API,就能掌握所有框架的力量——这正是Infery的核心使命。

我们的目标是帮助AI开发者轻松构建、优化和部署深度学习模型。作为这一使命的一部分,我们开发了Infery——一个Python运行时引擎,它将优化模型的推理运行转化为轻量简便的过程。仅需三行代码,即可支持主流框架和硬件类型。我们汲取所有API的最佳实践,并将其捆绑到一个始终保持更新的Python库中。无论是快速实验还是生产部署,它都能简化深度学习模型的推理运行。本文将介绍Infery的亮点、应用场景及快速上手方法。

什么是Infery?

Infery是一个Python运行时引擎,通过统一且简单的API,仅用3条简单命令即可在本地快速运行推理。它支持所有主流深度学习框架。

为什么选择Infery?

1. 多框架支持让开发更轻松 ⚡

简洁统一的API简化代码
深度学习框架和库的不断演进意味着我们常常陷入学习和集成不同库API的困境。此外,错误处理并不总是用户友好的,导致难以理解错误原因及修复方法。

Infery为您管理依赖
同时安装多个深度学习库或运行时环境常导致环境冲突。例如,要同时安装Torch、ONNX和TensorFlow,开发者需寻找能共存的相互依赖版本(如NumPy)。Infery的版本经过多环境和边缘案例测试,确保安装成功且版本兼容。其分发版本经过优化(业务逻辑编译为.dll/.so文件),释放Python代码的最佳性能。

无需头疼驱动安装
Python深度学习库需要特殊驱动才能工作。预编译的二进制文件(如.whl文件或C/C++编译的驱动)可能强制使用特定依赖版本。Infery的安装过程极大简化,有时通过跨平台解决方案自动安装驱动,减轻环境配置负担。

2. 与Deci Lab模型优化无缝协作 ⚙️

Infery是独立库,但与Deci Lab结合后,您可在几分钟内优化和部署模型,在保持精度的同时提升推理性能。在Deci Lab中优化模型后,仅需三次复制粘贴即可运行本地推理。

“我使用infery集成上传的分类模型性能提升了33%,十分钟的工作成果非常酷!”
— Amir Zait, Sight Diagnostics算法开发者

3. 超级简单 — 仅需3行代码 🏁

为什么不试试呢?结合Deci Lab,您可在几分钟内优化和运行模型推理,并获得显著的推理运行时性能提升,同时保持模型精度。

Infery能为您做什么?

Infery是一个与框架和硬件无关的Python运行时库。您可轻松在硬件上运行模型推理,无论模型是经过优化、图编译器编译还是原始版本。使用Infery比安装专用推理服务器更轻量、更简单。

由于Python是跨平台的,Infery可运行于任何支持Python的环境(Windows、Mac或Linux),包括边缘服务器、笔记本电脑或云端。Infery有两个版本:GPU版和CPU版。请注意,使用NVIDIA GPU需预先安装CUDA库。

通过Infery,您将利用抽象层进行跨流行框架的推理。内置支持包括:

  • TensorFlow
  • Keras
  • ONNX Runtime
  • TorchScript
  • Intel OpenVino
  • NVIDIA TensorRT

依赖项和先决条件列表详见:https://docs.deci.ai/docs/infery-pre-requisites

Infery提供简单、稳健且统一的API。只需“pip install”、load()、predict()或benchmark()——即可开始使用。

使用Infery的3个简单步骤

Infery致力于开发者友好性,这得益于其统一API(集行业最佳实践于一身并极致简化)和错误处理接口(明确提示错误及解决措施,例如因模型编译方式调整批次大小)。

1. 加载模型

首先,检查模型是否能在特定硬件和框架上加载。例如,您有一个在Intel CPU上运行的OpenVino模型,但想在MacBook上运行推理。优化模型通常是硬件感知的,并非所有模型都能在任何硬件上加载。

Infery快速检查并验证模型与硬件的兼容性,告知是否能在首选机器上成功加载模型,并在出现错误时指导后续操作。

加载ONNX模型示例:

1
2
3
4
5
>>> import infery, numpy as np
__init__ -INFO- Infery was successfully imported with 8 CPUS and 0 GPUS.
>>> model = infery.load('mobilenet_v2.onnx', framework_type='onnx')
infery_manager -INFO- Loading model mobilenet_v2.onnx to the CPU
infery_manager -INFO- Successfully loaded mobilenet_v2.onnx to the CPU.

2. 运行推理

Infery让您轻松在任何硬件上为基于主流框架的模型运行推理。例如,有一个YOLO目标检测模型和已加载到内存的图像,仅需三行代码即可获得带边界框的输出图像,无需额外配置文件。

在调用model.predict()前,可根据需要预处理图像。此外,可快速评估输入变化,查看模型在不同批次大小的图片和视频流上的表现。只要框架受支持且模型有效加载,Infery即可工作——无论计算机视觉、自然语言处理还是语音识别,它都是封装模型以实现无缝推理的纯工程框架。

加载ONNX模型后,运行predict()命令进行推理:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
>>> inputs = np.random.random((1,3,224,224)).astype('float32')
>>> model.predict(inputs)
[array([[-3.26097205e-11,  5.07557718e-10, -5.01693895e-11,
         2.97138314e-10, -2.43694287e-10,  7.77851811e-11,
         3.84048765e-10,  1.88332405e-10,  3.77367276e-10,
        -6.25191565e-12, -4.22240909e-10,  4.05136702e-10,
...
         5.88555593e-12, -3.01188352e-10, -1.57127089e-10,
        -4.60919664e-10, -3.95031452e-10,  4.85382956e-10,
        -1.08538178e-10]], dtype=float32)]

3. 模型基准测试

基准测试帮助了解模型在硬件上的真实性能。为避免错误测量,Infery提供开箱即用的接口来基准测试模型。只需输入批次大小和输入维度,即可看到这些因素变化对基准的显著影响。Infery提供统一标准的方法,确保团队间的一致性。

基准测试ONNX模型代码示例:

1
2
3
>>> model.benchmark(batch_size=1, input_dims=(3,224,224))
infery_manager -INFO- Benchmarking the model in batch size 1 and dimensions (3, 224, 224)
<ModelBenchmarks: { "batch_inf_time": "2.80 ms", "batch_inf_time_variance": "0.04 ms", "throughput": "357.32 fps", "sample_inf_time": "2.80 ms", "batch_size": 1}>

立即开始吧!

Infery适用于从初学者到专家的各级深度学习从业者。无论模型框架或硬件类型,它都能以最小努力帮助您运行推理。无需浪费时间学习API和硬件相关细节——我们通过统一、简单且最新的API为您保驾护航。

开始步骤:

  1. pip install infery — 或 — pip install infery-gpu
  2. 使用Deci Lab优化模型。Infery是独立库,但Deci平台用户可在保持精度的同时优化模型推理性能,然后下载与Infery无缝协作的模型文件。立即启动免费社区计划!
  3. 使用Infery运行优化模型!(查看文档

随着框架和硬件生态的持续演进,我们将支持更多框架并保持库的活跃更新。使用Infery,您将始终以最高效的代码和广泛的支持矩阵工作。

尝试Infery吧!

本文首次发表于此处

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计