点击蓝字
关注我们,让开发变得更有趣
作者:颜国进 英特尔边缘计算创新大使
英特尔发行版 OpenVINO™ 工具套件基于 oneAPI 而开发,可以加快高性能计算机视觉和深度学习视觉应用开发速度工具套件,适用于从边缘到云的各种英特尔平台上,帮助用户更快地将更准确的真实世界结果部署到生产系统中。通过简化的开发工作流程,OpenVINO™ 可赋能开发者在现实世界中部署高性能应用程序和算法。

OpenVINO™ 2023.2 于 2023 年 11 月 16 日发布,该工具包带来了挖掘生成人工智能全部潜力的新功能。更多的生成式 AI 覆盖和框架集成,以最大限度地减少代码更改,并且扩展了对直接 PyTorch 模型转换的模型支持。支持更多新的模型,包括 LLaVA、chatGLM、Bark 和 LCM 等著名模型。支持更广泛的大型语言模型(LLM)和更多模型压缩技术,支持运行时推理支持以下 Int4 模型压缩格式,通过神经网络压缩框架(NNCF) 进行本机 Int4 压缩等一系列新的功能。
通过最新的 OpenVINO™ 更新信息,我们可以看出,OpenVINO™ 其实是在不断更新迭代,并且适配更多新的模型。其主要原因是不少新出现的模型可能会带来更多新的算子,而 OpenVINO™ 可能会在后续的版本更新中才会适配。但如果我们当前阶段需要使用 OpenVINO™ 部署该深度学习模型,那我们该怎么做?
其实对于一些编程大佬,以及对 OpenVINO™ 有深入研究的人,他们可以对 OpenVINO™ 源码进行修改,然后自己写模型算子,添加到 OpenVINO™ 中。但是,开发算子的门槛是很高的,对于大多数开发者来说,这是很困难很难实现的。
在之前部署 RT-DETR 模型时,我也遇到了该模型在 OpenVINO™ 使用 GPU 设备部署出现算子不支持问题。因此在该文章中,我将结合该问题的解决过程,向大家展示对于大多数开发者,如何解决模型部署时出现算子不匹配问题。
OpenVINO™ 是在 GitHub 上开源的一个项目,源码开源,因此我们可以将源码下载下来自己进行编译,因此我们可以修改源码,但是对于大多数开发者来说,修改源码是很难实现的。GitHub 上的开源项目提供了 Issues 功能,开发者在使用时如果遇到问题,可以通过提交 Issues 向官方开发人员求助。
访问 OpenVINO™ 厂库 Issues 页面,然后创建一个 [new Issues]
OpenVINO™ 厂库 Issues 页面:
https://github.com/openvinotoolkit/openvino/issues

选择一个 Issues 类型,可以根据自己的问题类型进行选择

选择完类型后,就可以根据自己的问题情况,填写相关的内容

以该问题为例,简单介绍一下 Issues 内容:
首先是基础内容填写,主要包括 OpenVINO™ 版本、开发平台、推理设备、模型框架、所部署的模型以及问题的简单描述。对于该问题,所提交的内容如下所示:

接下来是详细复述问题出现的流程,为了让开发者能够更清楚地了解问题,这一不需要写的非常详细,确保开发人员能够完整复现该问题。如果复现步骤比较简单,可以在此处进行详细描述,如果问题副相比较复杂,并且存在多个文件,那就需要创建一个 GitHub 厂库存放相关文件。
最后一步就是添加错误日志输出,主要是为了让开发人员根据日志确认是否成功复现问题,或者是可以根据日志输出定位问题所在。
在提交 Issues 后,OpenVINO™ 官方人员会根据问题内容,分配开发人员进行解决,此时我们就只需要等待 OpenVINO™ 官方回复即可。
上一步中我们已经相关方求助,不久之后便可以获得官方的解答,但是官方的解答如果涉及到源码的修改,可能对于大多数开发者来说会无从下手,对于涉及到源码的改动,如果想直接在项目中使用,就需要自行进行源码编译。因为你所提出的问题官方给出的解决方案如果比较有价值的话,可能会在后续的版本中修复,并发布到最新版本中。但对于我们使用者来说,我们需要立刻就使用,而无法等待到下一个版本发布。因此,我们将结合官方给的回复与改动,基于 Windows 平台,一步步从源码开始,实现源码编译与使用。
官方提供的源码编译流程链接为:
https://github.com/openvinotoolkit/openvino/blob/master/docs/dev/build_windows.md
该案例主要是基于 RT-DETR 模型使用 GPU 部署出现问题为例,最后我们回到该案例中,测试是否解决了我们的问题。关于使用在 C++ 部署 RTDETR 模型的流程可以参考我的上一篇文章:《基于 OpenVINO™ C++ API 部署 RT-DETR 模型 | 开发者实战》,因此此处对于 C++ 项目配置不再作过多讲解。
如下图所示,该图片是我们使用当前发行版本 OpenVINO™ 2023.2 运行结果,此处我们使用的是 GPU.0 集成显卡运行推理,可以看出,模型在推理阶段会出现错误导致程序崩溃结束。

接下来我们用我们上面自行编译生成的动态链接库运行程序,可以看出,在使用 GPU.0 集成显卡运行推理时,错误已经消失了,并且成功运行模型推理,并打印出了结果。

通过对比测试,说明官方所给出的解决方案是正确的,我们也成功根据官方给出的解决方案解决了当前问题,并且不用等待官方发布下一个版本便可以提前使用,方便大家。
在本文中,我们结合一个模型部署案例,向大家讲解了使用 OpenVINO™ 时出现算子不匹配等问题时,对于我们使用者来说,如何在官方开发者的帮助下,解决自己所遇到的问题。另外,通过该方式,我们也向 OpenVINO™ 反馈了代码中存在的 Bug,在解决我们问题的同时,也积极为开源做出了自己的贡献。
OpenVINO™
--END--
你也许想了解(点击蓝字查看)⬇️
➡️
OpenVINO™ 2023.2 发布:让生成式 AI 在实际场景中更易用
➡️ 开发者实战 | 介绍OpenVINO™ 2023.1:在边缘端赋能生成式AI
➡️ 基于 ChatGLM2 和 OpenVINO™ 打造中文聊天助手
➡️ 基于 Llama2 和 OpenVINO™ 打造聊天机器人
➡️ OpenVINO™ DevCon 2023重磅回归!英特尔以创新产品激发开发者无限潜能
➡️ 5周年更新 | OpenVINO™ 2023.0,让AI部署和加速更容易
➡️ OpenVINO™5周年重头戏!2023.0版本持续升级AI部署和加速性能
➡️ OpenVINO™2023.0实战 | 在 LabVIEW 中部署 YOLOv8 目标检测模型
➡️ 开发者实战系列资源包来啦!
➡️
以AI作画,祝她节日快乐;简单三步,OpenVINO™ 助你轻松体验AIGC
➡️
还不知道如何用OpenVINO™作画?点击了解教程。
扫描下方二维码立即体验
OpenVINO™ 工具套件 2023.2



本文分享自微信公众号 - OpenVINO 中文社区(openvinodev)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。