通过英特尔OpenVINO™与Torch-ORT集成简化PyTorch

OpenVINO与Torch-ORT的集成允许PyTorch开发者在保持PyTorchAPI的同时,利用OpenVINO的推理速度,简化了模型加速过程,无需额外的模型转换步骤。此集成提供简单的安装和API,支持多种英特尔设备,提高性能并减少开发人员面临的转换问题。
摘要由CSDN通过智能技术生成

目录

介绍

为什么PyTorch开发人员应该使用OpenVINO与Torch-ORT的集成?

工作原理

开发人员体验

开始使用面向边缘的Intel® DevCloud

资源


介绍

您是否想将PyTorch API OpenVINO™工具包的推理性能提升结合使用,同时进行最少的代码更改?不要再看了,因为今天我们很高兴地宣布,与微软合作,OpenVINO™PyTorchONNX Runtime集成(OpenVINO™Torch-ORT的集成简称)。

OpenVINO重新定义了Intel®设备上的人工智能推理,并获得了前所未有的开发人员采用率。如今,成千上万的开发人员使用OpenVINO来加速几乎所有可以想象的用例中的AI推理,包括人类视觉仿真、自动语音识别、自然语言处理、推荐系统等等。该工具包基于最新一代人工神经网络,包括卷积神经网络(CNN)、循环网络和基于注意力的网络,可跨英特尔硬件(Intel® CPUIntel®集成显卡、Intel®神经电脑棒2和采用Intel® Movidius™ VPUIntel®视觉加速器设计)扩展计算机视觉和非视觉工作负载,从而最大限度地提高性能。OpenVINO通过从边缘到云部署的高性能、AI和深度学习推理来加速应用程序。

随着OpenVINO生态系统的发展,我们从PyTorch开发人员那里听到,您希望使用更无缝的方法来加速PyTorch模型。在此之前,想要加速模型的PyTorch开发人员必须将他们的模型转换为ONNX,然后使用OpenVINO™运行时运行它,或者将ONNX模型转换为OpenVINO™工具包IR进行推理。

这给PyTorch开发人员带来了几个问题,例如

  • 由于ONNX转换不支持PyTorch层/运算符,ONNX转换失败
  • 由于OpenVINO不支持转换模型的层/运算符而导致ONNX推理失败
  • 模型转换所需的额外步骤(PyTorch -> ONNX、ONNX -> OpenVINO IR 等)

为什么PyTorch开发人员应该使用OpenVINOTorch-ORT的集成?

OpenVINOTorch-ORT的集成使PyTorch开发人员能够始终保持在他们选择的框架内,同时通过用于加速PyTorch应用程序的内联优化,仍然获得OpenVINO™工具包的速度和推理能力。

通过Intel® OpenVINO™Torch-ORT集成加速PyTorch

  • 易于安装——使用PIP将OpenVINO与Torch-ORT集成安装
  • 简单的API——无需重构现有代码,只需导入OpenVINO与Torch-ORT的集成,设置所需的目标设备以运行推理并包装模型,您就可以开始了!
  • 性能——实现比库存PyTorch更高的推理性能
  • 支持英特尔设备——英特尔CPU、英特尔集成GPU、英特尔VPU
  • 内联模型转换——无需明确的模型转换步骤

工作原理

  1. 用户将他们的nn.Module包装在torch_ort.ORTInferenceModule中,以准备使用ONNX运行时OpenVINO执行提供程序进行推理的模块。
  2. 该模块使用torch.onnx.export导出到内存中的ONNX图形。
  3. 启动ONNX运行时会话,并将ONNX图形作为输入提供。ONNX运行时将使用受支持和不支持的运算符将图形划分为子图形。
  4. 所有OpenVINO兼容节点将由OpenVINO执行提供程序执行,并且可以在英特尔CPU、GPU或VPU上执行。
  5. 所有其他节点将回退到默认的CPU MLAS执行提供程序。CPU MLAS执行提供程序将为默认运算符集域中的节点调用ONNX运行时自己的CPU内核。

开发人员体验

开始使用OpenVINOTorch-ORT的集成很容易,因为它遵循PyTorch习语。下面是从HuggingFace Transformers中获取预训练的NLP BERT模型的代码片段,并使其与OpenVINO™Torch-ORT代码示例的集成兼容

以下是代码片段

安装:

pip install torch-ort-infer[openvino]
python -m torch_ort.configure

定义模型:

from torch_ort import ORTInferenceModule 
model = ORTInferenceModule(model)Provider options for different devicesfrom torch_ort import ORTInferenceModule, OpenVINOProviderOptions 
provider_options = OpenVINOProviderOptions(backend = "GPU", precision = "FP16") 
model = ORTInferenceModule(model, provider_options = provider_options)

代码示例:

通过使用ORTInferenceModule简单地包装你的nn.Module,你可以获得OpenVINO加速的好处。

from transformers 
import AutoTokenizer, AutoModelForSequenceClassification
import numpy as np
from torch_ort import ORTInferenceModuletokenizer = AutoTokenizer.from_pretrained(
            "textattack/bert-base-uncased-CoLA")
model = AutoModelForSequenceClassification.from_pretrained(
        "textattack/bert-base-uncased-CoLA")# Convert nn.Module to ORTInferenceModule to leverage OpenVINO on CPU
model = ORTInferenceModule(model)text = "Replace me any text by you'd like ."
encoded_input = tokenizer(text, return_tensors='pt')
output = model(**encoded_input)# Post processing
logits = output.logits
logits = logits.detach().cpu().numpy()# predictions
pred = np.argmax(logits, axis=1).flatten()
print("Grammar correctness label (0=unacceptable, 1=acceptable)")
print(pred)

可在此处找到完整的代码示例。

通过两行代码,OpenVINOTorch-ORT的集成可以帮助确保您获得出色的推理性能,并充分利用完整的OpenVINO工具包提供的大部分功能。如果您有兴趣尝试它,请查看 Github存储库并阅读此处提供的详细文档。

您还能从我们这里得到什么:

  • 其他代码示例(Python脚本、Jupyter Notebooks)
  • 更多TorchVision和HuggingFace Transformers模型报道

开始使用面向边缘的Intel® DevCloud

面向边缘的Intel® DevCloud是一个云开发环境,使开发人员能够以最少的设置在英特尔硬件上开发和基准测试人工智能和计算机视觉解决方案的性能。Devcloud for the Edge预装了OpenVINO™Torch-ORT [Beta]的集成,并带有代码片段,以帮助加速您的开发之旅。要开始使用,请按照以下步骤操作:

1 在此处注册并登录以免费访问

2 向下滚动并选择OpenVINO™集成Torch-ORT [测试版] Notebook

3 打开代码片段,搜索“OpenVINO™Torch-ORT集成[beta]”,将代码片段拖放到Notebook

4 运行单元

如果您遇到任何问题,请联系Intel® DevCloud支持团队。

资源

通知和免责声明:

英特尔技术可能需要启用硬件、软件或服务激活。

没有任何产品或组件是绝对安全的。

您的费用和结果可能会有所不同。

©英特尔公司。英特尔、英特尔徽标和其他英特尔标志是英特尔公司或其子公司的商标。其他名称和品牌可能被认作他人的财产。

本文最初发表于 https://medium.com/openvino-toolkit/streamline-pytorch-with-intel-openvino-integration-with-torch-ort-a098358ef2e2

https://www.codeproject.com/Articles/5341630/Streamline-PyTorch-with-Intel-OpenVINO-integration

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值