三行Python代码实现深度学习推理:Infery全面解析

本文详细介绍Infery这一Python运行时引擎,它通过统一API支持多种深度学习框架,仅需三行代码即可实现模型推理。文章涵盖其核心功能、多框架支持、与Deci Lab的集成,以及具体使用方法和性能基准测试。

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

想象一下,通过一个友好而强大的API,就能掌握所有框架的力量。

我们的使命是帮助AI开发者轻松构建、优化和部署深度学习模型。作为这一使命的一部分,我们开发了Infery,这是一个Python运行时引擎,它将运行优化模型推理的过程变得轻量而简单。只需三行代码,并支持主流框架和硬件类型。想象通过一个友好而强大的API,就能掌握所有框架的力量——这正是Infery的核心所在。

我们汇集了所有API的最佳实践,并将它们打包到一个始终保持更新的Python库中。它简化了深度学习模型的推理运行——无论是用于快速实验还是生产目的。在本文中,您将了解Infery:它为何如此令人兴奋,您可以用它做什么,以及如何立即开始使用它。

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

为什么选择Infery?

1. 多框架支持让您的生活更轻松 ⚡

直接统一的API简化您的代码
深度学习框架和库的不断演进意味着我们经常陷入学习和集成不同库API的困境。更重要的是,错误处理并不总是用户友好的,让您无法真正理解出错原因或如何修复代码继续前进。

Infery为您管理依赖
同时安装多个深度学习库或运行时通常会导致环境损坏的问题。例如,要一起安装Torch、ONNX和TensorFlow库,开发人员需要寻找相互依赖的正确版本(如NumPy),使它们能够在同一环境中共存而不会破坏或影响其他已安装的包。

Infery的版本经过设计和测试,可在多种环境和边缘情况下成功安装。无论是现有环境还是新环境,Infery都将确保安装成功,并且版本经过共同测试。Infery的发行版经过优化(业务逻辑编译成.dll/.so文件),为您的Python代码释放最佳性能。

不再为安装驱动程序而头疼
Python深度学习库需要特殊驱动程序才能工作。预编译的二进制工件(如.whl文件或C/C++编译的驱动程序.dll或.so文件等)可能强制您使用非常特定版本的依赖项。找到可以共存的正确版本包和驱动程序可能需要大量时间。

Infery的安装使这一过程尽可能简单,有时在跨平台解决方案中为您安装这些驱动程序,并减少安装和环境设置负担。

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

Infery是一个独立的库,但当与Deci Lab结合使用时,您可以在几分钟内优化和部署模型,在您首选的硬件上提升推理性能,同时保持相同的准确性。一旦您在Deci Lab中优化了模型,只需三次简单的复制粘贴即可为优化后的模型运行本地推理。

“我使用infery上传和集成的分类模型实现了33%的性能提升,对于10分钟的工作来说非常酷!” Amir Zait, Sight Diagnostics算法开发人员

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

为什么不试试呢?

与Deci Lab结合,您可以在几分钟内优化和运行模型推理——并在保持相同模型准确性的同时,获得推理运行时性能的大幅提升。

Infery能为您做什么?

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

由于Python是跨平台的,Infery可以在任何支持它的环境中运行,例如Windows、Mac或Linux。您可以在各种环境设置中使用Infery,如边缘服务器、笔记本电脑或云端。Infery有两个版本:一个用于GPU,一个用于CPU。只需记住,如果您使用NVIDIA的GPU,需要安装CUDA库。

使用Infery,您将利用一个跨所有流行框架的推理抽象层。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,它结合了所有行业最佳实践,并最大程度简化。另一点是其错误处理界面,它会告诉您错误以及需要采取什么操作来解决问题。例如,这可能包括由于模型编译方式而更改批处理大小。

以下是使用Infery的工作流程及其如此简单的原因:

1. 加载模型

首先,您可以检查模型是否可以从某个框架在特定硬件上加载。假设您有一个在Intel CPU上工作的OpenVino模型,并且您想在MacBook上运行推理。通常情况下,优化后的模型是硬件感知的,因此并非每个模型都能在任何硬件上加载。

例如,GPU上的优化通常利用硬件架构和内存,在执行编译时考虑这些因素。有时GPU无法加载模型,原因可能是其编译方式,或为不同硬件优化的方式。

Infery更快地检查和验证模型对特定硬件的兼容性。它让您知道是否可以在您喜欢的机器类型上成功加载模型。并且,如果有错误,它会帮助您准确理解下一步必须做什么才能继续。

使用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就会工作。模型的任务无关紧要。无论是计算机视觉、自然语言处理还是语音识别,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运行优化后的模型!(查看文档)

使用Deci Lab优化模型后,只需下载优化后的模型文件,通过3次复制粘贴,您就可以使用Infery运行推理了。

随着框架和硬件生态系统的不断发展,我们将支持更多框架并保持此库活跃和更新。使用Infery,您保证能使用最高效的代码和广泛的支持矩阵。

试试Infery吧!

本文首次发表于此处。

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