学习ONNX交易 - 页 7

 

使用 ONNX 在任何地方部署机器学习。在 Azure ml.net 函数中运行的 Python SKLearn 模型



使用 ONNX 在任何地方部署机器学习。在 Azure ml.net 函数中运行的 Python SKLearn 模型

该视频展示了 ONNX 运行时如何简化和标准化以不同语言和框架构建的机器学习模型的部署。它演示了将 Python scikit-learn 模型打包到 ONNX 模型并将其部署到 Azure ML .NET 函数中的过程。视频强调Azure功能可以通过HTTP POST请求轻松触发,方便从任何应用程序或网站调用,并且无论使用何种语言构建机器学习模型,都可以转换为ONNX模型和通过 ML.NET 部署以一致地运行。

  • 00:00:00 在本节中,视频介绍了 ONNX 运行时以及它如何简化以各种语言和框架构建的机器学习模型的部署过程。 ONNX 运行时允许以一种可以轻松部署到不同环境中的方式封装模型。它取代了酸洗过程,并提供了一个适用于 Python、R、.NET、Java 和其他语言的标准运行时。该视频继续演示了一个端到端示例,该示例使用 Python 构建简单模型,将其打包到 ONNX 模型中,并在 ML .NET 函数中运行它。此示例中使用的代码可在 Advancing LLS YouTube 频道的公共 GitHub 上找到。

  • 00:05:00 在本节中,演讲者演示了如何在 Azure 函数中使用 ONNX 部署机器学习模型。该演示首先展示了一个基本的 Python 模型,该模型使用 scikit-learn 来训练使用旧金山房价数据的线性回归模型。该模型使用由数值和分类值组成的训练集进行训练,一旦模型经过训练,它就会被挑选出来以持久保存并部署在容器中。最后,说话者通过在训练集上调用 predict 来测试模型并取回一些值。此过程可用于使用 ONNX 在任何地方部署和运行机器学习模型。

  • 00:10:00 在视频的这一部分中,演示者将模型设置为在 ONNX 中运行,这样就不需要 Python 来使用它。指定进入模型训练的特征数量,并初始化 ONNX 模型以了解预期结果。初始输入被命名为特征输入,这是评分所需要的。为了对模型进行评分,创建了一个会话,一行代码负责根据训练数据进行预测。然后打印预测。

  • 00:15:00 在本节中,演讲者讨论了在 ONNX 中运行 Python 模型,以及如何在 Python 中一致地运行它,而不管使用的是什么包。演讲者展示了如何将 Python 模型转换为 ONNX 并使用带有 JSON 对象的 HTTP POST 在 Azure 函数中运行它。该函数提取年份、居住面积、销售情况等重要数据,并传递给模型,模型使用ONNX对数据进行评分并返回结果。演讲者解释说,Azure 函数是一个标准的 HTTP 触发器,背后有一个 REST API,可以很容易地从任何应用程序或网站调用。

  • 00:20:00 在本节中,演讲者解释了创建名为 input 的变量并使用它来调整输入张量以便会话运行可接受的步骤。会话启动并启动以在路径上运行新会话并使用指定输入进行评分。然后将得分结果拉出并打包为结果对象并传回函数。演讲者演示了如何通过传递原始 JSON 对象模型参数(例如建造年份和居住区域)来测试 Postman 中已部署的模型以获得分数。通过 ONNX 和 ML.NET 部署机器学习模型的好处是,无论人们用什么语言构建模型,只要能转换成 ONNX 模型,就可以一致地部署和运行。
 

部署机器学习模型 (TensorFlow/Caffe2/ONNX) - 快速简单



部署机器学习模型 (TensorFlow/Caffe2/ONNX) - 快速简单

该视频演示了如何使用迁移学习对图像进行分类,以及如何使用 Python 和 TensorFlow 将图像分类模型集成到最终用户应用程序中。主讲人以一个汽车交易应用的例子来说明当照片没有从要求的角度上传,需要人工检查标签,导致乏味和低效时所面临的挑战。他解释了如何通过使用迁移学习技术训练现有的神经网络来识别照片视角来克服这些挑战。然后,他展示了如何使用 GraphPipe 开源项目在 Oracle 云中测试和部署模型。最后,主持人强调了将机器学习模型从实验室阶段带到生产阶段的重要性。

  • 00:00:00 在本节中,Jeroen Kloosterman 解释了机器学习如何用于图像分类以及如何将图像分类模型集成到最终用户应用程序中。他强调了汽车交易应用程序面临的挑战,其中照片未从所需角度上传,标签必须手动检查,导致无聊和低效。为了克服这些挑战,Jeroen 通过使用 Python 和 Tensorflow 训练现有的神经网络来识别照片视角,从而使用迁移学习技术。通过仅回溯神经网络的最后几层来识别不同的视角,Jeroen Kloosterman 成功地训练了网络自动对照片进行分类。

  • 00:05:00 在本节中,Jeroen 展示了如何测试在上一节中训练的模型,然后使用 GraphPipe 开源项目将其部署到 Oracle 云中。首先,调用重新训练 Python 脚本,它使用 TensorFlow 重新训练模型。在Oracle云上搭建好环境后,演示者使用Python编写了一个示例客户端来调用图像分类器。然后,前端可以使用模型返回的分类向汽车销售应用程序的最终用户显示消息。最后,主持人强调了将机器学习模型从实验室阶段带到生产阶段的重要性。
 

使用 Azure Functions 和 ONNX 运行时部署 ML 模型



使用 Azure Functions 和 ONNX 运行时部署 ML 模型

该视频演示了如何在 VS Code 中使用 ONNX Runtime 和 Azure Functions 部署机器学习模型。该过程包括创建 Azure Function 项目、使用评分脚本更新代码、从模型路径加载模型、使用 ONNX 运行时创建推理会话以及返回输出。该视频还展示了如何将函数部署到 Azure 并在那里进行测试。此方法可通过 Azure Functions 和 ONNX 运行时高效部署模型,从而轻松访问结果。

  • 00:00:00 在本节中,视频展示了如何在 VS Code 中使用 ONNX Runtime 和 Azure Functions 部署机器学习模型。该过程涉及使用 Python 和 HTTP 触发器创建一个 Azure Function 项目,使用评分脚本更新代码,调整图像大小和重塑图像并对其进行预处理,从模型路径加载模型,使用 ONNX Runtime 创建推理会话,以及返回输出。在验证代码的功能后,视频展示了如何将功能部署到 Azure 并在那里进行测试。

  • 00:05:00 在本节中,演讲者演示了如何通过获取函数 URL 并将其粘贴到测试中来测试已部署的函数。演讲者演示了如何使用已部署的函数通过 Azure Functions 和 ONNX 运行时轻松获得结果,从而实现模型的高效部署。
 

使用 ONNX 在桌面上部署



使用 ONNX 在桌面上部署

在视频“使用 ONNX 在桌面上部署”中,Alexander Zhang 讨论了在桌面上部署的挑战以及 ONNX 提供的解决方案。支持台式机面临挑战,因为对 GPU 或操作系统的系统限制控制较少,而且台式机 GPU 的多样性很大。为了应对这些挑战,Alexander 依赖于 Topaz 实验室支持的每个硬件供应商的不同推理库。 ONNX 用于为所有这些库指定相同的模型,在不同的硬件上提供相对一致的结果,同时节省每个模型的手动工作。然而,ONNX 转换可能会产生各种问题,例如歧义、不一致和质量差异,需要开发人员执行测试转换并明确使用最新的 ONNX 偏移量。为了通过批处理最大化吞吐量并可能在多个设备和库上并行运行,他们将图像分成块并根据 VRAM 选择合适的大小,然后通过推理运行块。

  • 00:00:00 在本节中,Alexander Zhang 讨论了在桌面上部署的挑战以及 ONNX 提供的解决方案。适应现有工作流程,同时满足性能预期并跟上进步需要提供最新和最高质量的可用图像模型。支持台式机面临挑战,因为对 GPU 或操作系统的系统限制控制较少,而且台式机 GPU 的多样性很大。为了应对这些挑战,Alexander 依赖于 Topaz 实验室支持的每个硬件供应商的不同推理库。 ONNX 用于为所有这些库指定相同的模型,在不同的硬件上提供相对一致的结果,同时节省每个模型的手动工作。然而,ONNX 转换可能会产生各种问题,例如歧义、不一致和质量差异,需要开发人员执行测试转换并明确使用最新的 ONNX 偏移量。

  • 00:05:00 在本节中,演讲者解释说,他们自己进行许多转换而不是使用现有库或包装器的原因之一是性能。他们还强调了灵活性的重要性,以便在需要时针对自己的模型和性能需求进行优化,而不必为每个模型编写特定于模型的代码。为了通过批处理最大化吞吐量并可能在多个设备和库上并行运行,他们将图像分成块并根据 VRAM 选择合适的大小,然后通过推理运行块。然而,他们得出结论认为,要确保新模型架构在所有图书馆中表现良好仍然存在困难,但他们仍然希望他们的策略能够克服这些挑战并提供一致的图像质量改进。
 

在 Flink 上部署 ONNX 模型 - Isaac Mckillen-Godfried



在 Flink 上部署 ONNX 模型 - Isaac Mckillen-Godfried

Isaac McKillen-Godfried 讨论了将最先进的机器学习模型从研究环境整合到生产中以实现有效利用的挑战。演讲的目的是使将模型从研究环境转移到生产环境变得更加容易,并将最先进的模型整合到不同的平台中。他解释了 ONNX 格式的优势以及在 Java 中集成深度学习模型的不同选项。此外,他还讨论了使用 Jep(一种用 Java 编写的 Python 解释器)在 Flink 上部署 ONNX 模型,并解释了一个开源项目,该项目允许从 Flink Twitter 连接器使用数据,然后过滤非英语推文。该演讲还强调了当前在 Flink 上部署 ONNX 模型的仅 CPU 实现,以及未来 GPU 或混合实现的潜力。

  • 00:00:00 在视频的这一部分,演讲者讨论了将研究环境中最先进的机器学习模型整合到生产环境中以进行有效利用所面临的挑战。他提到,大多数流行的框架都是用 Java 和 Scala 编写的,而大部分代码和论文都是用 Python 编写的。演讲的目的是使将模型从研究环境转移到生产环境变得更加容易,并将最先进的模型整合到不同的平台中。演讲者还谈到了挑战,包括 Flink 对 Python 的支持不佳以及将 ONNX 整合到 Java 中的困难。他还提到了 PyTorch 在研究界的流行及其在机器学习框架中的日益普及。

  • 00:05:00 在本节中,演讲者讨论了 ONNX 格式及其优势。 ONNX 是一种开放的神经网络交换格式,允许从各种框架轻松导出和导入模型。 ONNX 的目标是能够以不同的语言和框架运行模型,使其成为开发人员的宝贵工具。此外,演讲者还讨论了可用于导出和导入模型的各种 ONNX 框架和工具。他们还引入了一个记分卡来衡量 ONNX 中的操作支持,TensorFlow 和 Caffe2 得到了相当大的支持。然后,演讲者讨论了在 Java 中集成深度学习模型的不同选项,包括创建微服务、Java 嵌入式 Python 以及运行 ONNX 后端基于 JVM 的框架。

  • 00:10:00 在本节中,讨论了将 Java 与 ONNX 模型结合使用的局限性,包括 Meno 和 Vespa 等框架对神经网络操作的有限支持。导出过程也可能很困难且耗时,并且可能需要完全重新训练模型。一种解决方案是使用异步和微服务,但这种方法需要扩展和维护单独的服务。讨论的另一种方法是使用 Java 嵌入式 Python (JEP),它允许使用任何 Python 库,并且已被发现可以与 Keras 等框架一起快速运行。但是,共享库可能存在需要解决的问题。

  • 00:15:00 在视频的这一部分,演讲者讨论了在 Flink 上部署 ONNX 模型以及可能出现的潜在设置问题。虽然可以将 Java 原语转移到 Python 中,反之亦然,但设置依赖项可能会出现问题。演讲者建议创建一个包含 Flink 和 Python 包的自定义 Docker 镜像,以简化设置。演讲者还重点介绍了用于 NLP 任务的 PyTorch 框架 Flair,并解释了如何使用 JEP 将其集成到 Flink 中。示例代码使用丰富的映射函数将 Flair 的结果作为字符串返回。

  • 00:20:00 在本节中,演讲者讨论了使用 Jep(一种用 Java 编写的 Python 解释器)在 Flink 上部署 ONNX 模型。演讲者演示了使用 Flink Twitter connector 对 Twitter 数据进行情感分析的示例,并解释了在函数的开放部分加载模型以防止其在每次迭代时重新加载的重要性。他们还展示了如何使用 Jep 在 Python 中设置变量,以及如何将结果作为字符串返回给 Java。演讲者强调在 Jep 中使用共享解释器以避免在使用 Python 模块时出错,并建议将结果转换为 JSON 以便在 Java 中更容易处理。

  • 00:25:00 在本节中,Isaac McKillen-Godfried 讨论了一个开源项目,该项目允许从 Flink Twitter 连接器使用数据,然后过滤非英语推文。然后,数据将通过多任务命名实体识别模型进行处理,该模型可以处理多种语言和特定的语言模型。命名实体识别和情感分析将在转换为表格并使用查询按实体和情感对它们进行分组之前进行。通过将深度学习和其他模型整合到 Flink 中,可以看到命名实体及其对 Twitter 文本的情绪的实时视图。虽然 onnx 后端不够成熟,但它节省了转换代码和重写的时间,并且在集群上运行模型很快。 McKillen-Godfried 计划在不久的将来进行基准测试以衡量延迟增加。

  • 00:30:00 在本节中,Isaac Mckillen-Godfried 讨论了当前在 Flink 上部署 ONNX 模型的仅 CPU 实现,以及未来 GPU 或混合实现的潜力,可以进一步加快该过程。他指出,他只在 CPU 上测试过该模型,尚未探索通过使用 GPU 提高效率的可能性。
 

使用 DeepStream 在 Jetson Nano 上部署 Tiny YOLOv2 ONNX 模型



使用 DeepStream 在 Jetson Nano 上部署 Tiny YOLOv2 ONNX 模型

该视频展示了使用 ONNX 格式的预训练 Tiny YOLOv2 模型同时处理四个视频流的效率。
这些流来自四个不同的文件,并使用 DeepStream SDK 在 Jetson Nano 上进行处理。该系统在并行处理所有四个视频时实现了大约 6.7 的 FPS。

https://github.com/thatbrguy/Deep-Stream-ONNX

GitHub - thatbrguy/Deep-Stream-ONNX: How to deploy ONNX models using DeepStream on Jetson Nano
GitHub - thatbrguy/Deep-Stream-ONNX: How to deploy ONNX models using DeepStream on Jetson Nano
  • thatbrguy
  • github.com
How to deploy ONNX models using DeepStream on Jetson Nano. [Blog] [Performance] This repository provides complementary material to this blog post about deploying an ONNX object detection model using the DeepStream SDK on Jetson Nano. Various experiments were designed to test the features and performance of DeepStream. NOTE (May 2021) : There...
 

ONNX Runtime 推理引擎能够在不同环境中执行机器学习模型



ONNX 运行时

ONNX Runtime 是一种开源推理引擎,针对性能、可伸缩性和可扩展性进行了优化,能够在新运算符标准化之前运行它们。 ONNX 格式允许以通用方式轻松表示和部署在首选工具上开发的模型。微软已与 Xilinx 合作,为 Vitis AI 软件库构建执行提供程序,允许在 Xilinx 硬件平台上进行 AI 推理和加速。 Vitis AI 工具包包含面向 FPGA 开发人员的 IP 工具、库、模型和示例设计,基准数据显示了地理空间成像解决方案的峰值加速。 Vitis AI 执行提供程序可以从源代码构建,也可以通过即将在 Azure Marketplace 中发布的预构建软件库进行部署。

  • 00:00:00 在本节中,Microsoft AI 框架首席项目经理 Manash Goswami 介绍了 ONNX 运行时,它是一种用于执行 ONNX 模型的开源推理引擎。 ONNX 格式允许数据科学团队使用他们首选的模型开发工具,同时确保可以以通用且易于执行的方式表示和部署模型。 ONNX 运行时针对性能、可扩展性和可扩展性进行了优化,它支持自定义运算符,使其能够在新运算符标准化之前运行它们。运行时是向后和向前兼容的,它的执行提供者接口允许在不同的硬件平台上执行 ML 模型。 Microsoft 已与 Xilinx 合作,为 Vitis AI 软件库构建执行提供程序,该程序库在 Xilinx U250 FPGA 平台上执行 ONNX 模型。

  • 00:05:00 在本节中,我们将了解 Vitis AI 软件库,这是专门用于在 Xilinx 硬件平台上进行 AI 推理的 Xilinx 开发平台。 U250 FPGA 可在 Azure 的私人预览版中与 Vitis AI 软件堆栈一起使用,因为 NP VM 为用户排队。 Vitis AI 工具包包含优化的 IP 工具、库、模型和示例设计,供开发人员与 FPGA 一起使用,使他们能够结合 AI 推理和加速。 Peakspeed 是一家提供地理空间分析解决方案的初创公司,它将 ONNX Runtime 和 Vitis AI 堆栈与 Esri 的 ArcGIS Pro 应用程序集成在一起,以构建世界上最快的地理空间成像解决方案。 Peakspeed 成功地加速了 CPU 上的地理空间校正或正射校正过程,记录了将在托管 Xilinx U250 FPGA 的 Azure NP 上运行的 TrueView 与在至强铂金 CPU 上运行的相同算法进行比较的基准数据。

  • 00:10:00 在本节中,Manash 解释了开发人员和客户如何使用 ONNX Runtime 和 Vitis AI 堆栈将其应用程序与深度学习相结合,以在 Azure 中的 FPGA 端点以及使用 Xilinx U250 硬件的内部部署加速。他还强调,开发人员可以使用 ONNX Runtime 从源代码构建 Vitis AI 执行提供程序,赛灵思将很快在 Azure Marketplace 中发布一个 VM 映像,其中将所有预构建的软件库集成在一个地方,以便轻松部署到 Azure NP VM 中。
 

使用#ONNXRuntime 在浏览器中部署转换器模型



使用#ONNXRuntime 在浏览器中部署转换器模型

该视频演示了如何使用 ONNXRuntime 在浏览器上微调和部署优化的 BERT 模型。演示者展示了如何使用 Transformers API 将 PyTorch 模型转换为 ONNX 格式,使用 ONNXRuntime 量化模型以减小尺寸,以及创建推理会话。该视频还介绍了使用 WebAssembly 将包导入 JavaScript 的必要步骤,以及如何通过转换后的模型运行文本输入以进行情感分类。尽管预测准确性有所降低,但较小的模型尺寸非常适合部署在浏览器上。提供了指向模型、数据集、源代码和博客文章的链接。

  • 00:00:00 在本节中,视频演示者演示了如何操作转换器模型,并展示了包含已优化并部署到浏览器的转换器模型的最终项目。该项目中使用的模型是一个优化的 bert 模型,该模型已由 Microsoft 提炼以减小其大小并使测试不可知。用于微调模型的情绪数据集可在 hugging face hub 上获得。演示者演示了使用 transformers API 进行微调的过程,并展示了如何使用 transformers 的内置转换工具将 PyTorch 模型转换为 ONNX 格式。最后,ONNX Runtime Web 包用于 JavaScript 中的推理,其中可以根据所需的运算符选择不同的操作集。

  • 00:05:00 在本节中,视频讨论了如何使用 ONNXRuntime 在浏览器中部署转换器模型。首先,视频解释了如何使用 ONNXRuntime 量化模型以减小其大小,之后为未量化和量化模型创建推理会话。然后,该视频演示了如何使用 WebAssembly 将必要的包导入 JavaScript,以及如何在通过 ONNXRuntime 模型运行它们之前对文本输入进行编码。该演示展示了如何使用转换后的模型来预测给定输入文本的不同情绪。尽管预测准确性有所下降,但该视频得出的结论是,缩小的模型大小使其非常适合在网络中部署。

  • 00:10:00 在本节中,演示者解释了他们如何能够采用大型变压器模型,对其进行提炼和量化,并使用 ONNX Runtime 在边缘执行推理。他们还提供了所用模型和数据集的链接,以及源代码和有关演示的博客文章。
 

企业中的开放式神经网络交换 (ONNX):Microsoft 如何扩展机器学习



企业中的开放式神经网络交换 (ONNX):Microsoft 如何扩展 ML - BRK3012

引入开放式神经网络交换 (ONNX) 作为将机器学习模型部署到生产中的挑战的解决方案,包括管理多个训练框架和部署目标,Microsoft 已经在 Bing、Bing 广告和 Office 365 等产品中广泛采用 ONNX . ONNX 允许机器学习模型的可扩展性和维护,以及由于使用 GPU 等硬件加速器而带来的显着性能改进和成本节约。此外,ONNX 生态系统包括用于运行时优化的合作伙伴(例如英特尔),以及现成的开发套件和量化技术,可将 FP32 模型转换为精度较低的数据类型,从而提高效率。演讲者还强调了利用 ONNX 进行边缘计算的好处,因为运行时非常灵活,可以将模型部署到不同的硬件平台。

  • 00:00:00 在本节中,演示者讨论了 Microsoft 机器学习计划的规模,包括 Office 365 中超过 1.8 亿的月活跃用户以及部署在数亿 Windows 设备上的机器学习技术。他们还提到微软使用超过六个机器学习框架,并且在将机器学习模型部署到生产中存在挑战。他们引入了 ONNX 和 ONNX Runtime 作为应对这些挑战的解决方案,它们可以与 Intel 和 NVIDIA 等硬件加速器以及 Azure 机器学习一起使用。

  • 00:05:00 在视频的这一部分,演讲者讨论了训练机器学习模型并将其部署到生产中时出现的挑战。有这么多不同的训练框架和部署目标,管理和维护高效的应用程序性能变得困难。为了解决这个问题,微软推出了 ONNX(开放式神经网络交换),这是一种行业标准,允许将机器学习模型转换为 ONNX 格式,而不管用于训练的框架是什么。这使得 ONNX 模型能够部署到任何受支持的框架,从而形成更灵活和可扩展的解决方案。此外,微软正在构建强大的合作伙伴生态系统,以支持 ONNX 并确保其成功成为行业标准。

  • 00:10:00 在本节中,演讲者讨论了开放神经网络交换 (ONNX) 和 ONNX 运行时的实际生产用例,以展示它们如何为 Microsoft 的产品和客户带来商业价值。微软的一些产品,如 Bing、Bing ads 和 Office 365,已经广泛采用了 ONNX 和 ONNX runtime,并且在模型性能和延迟方面都有显着提升。例如,借助 ONNX 和 ONNX 运行时,Office 365 的语法检查功能的性能提高了 14.6 倍,从而降低了成本和延迟。另一个用例 OCR 也显着受益于 ONNX 和 ONNX 运行时。

  • 00:15:00 在本节中,演讲者讨论了 Microsoft 如何使用开放式神经网络交换 (ONNX) 在各种场景中扩展机器学习,包括提高其 Azure 认知服务 OCR 社区服务的质量和性能,以及改进他们的搜索质量并启用新的场景,例如与个人助理一起问答。演讲者还提到了 ONNX 和 ONNX Runtime 如何将机器学习模型的速度分别提高了 3.5 倍和 2.8 倍,为他们的产品团队带来了巨大的价值。他们还强调了训练机器学习模型以真正理解图像语义以改进多媒体搜索的重要性。

  • 00:20:00 在本节中,演讲者讨论了 Microsoft 产品中开放神经网络交换 (ONNX) 模型的使用,特别是必应视觉搜索功能。 ONNX 允许扩展和维护机器学习模型,并通过使用 GPU 等硬件加速器实现显着的性能改进和成本节约。演讲者还强调了 ONNX 的多功能性,它可以在各种平台上运行,包括 x64 和基于 ARM 的架构,并且是用于 ONNX 模型的开源推理引擎,可在 Windows、Mac 和 Linux 上使用。 ONNX 的使用允许在不更改模型接口的情况下优化特定目标硬件上的执行,使其成为扩展和维护生产部署的宝贵工具。

  • 00:25:00 在本节中,演讲者讨论了用于在不同硬件平台(包括 CPU、GPU 和 FPGA)上运行 ONNX 模型的执行提供程序接口。合作伙伴生态系统包括英特尔,微软与英特尔合作使用基于 VINO 的开放执行提供商进行运行时优化。他们还提供随时可用的开发套件,包括神经计算棒,以加速制造、零售和运输等各种垂直行业的 AI 工作负载。微软和英特尔还合作进行量化,将 FP32 模型转换为精度较低的数据类型,从而降低内存带宽,减少模型的内存占用,并增加每瓦四顶数,同时将精度损失降至最低。

  • 00:30:00 在本节中,演讲者讨论了他们如何能够使用向量处理指令和图形融合来提高卷积神经网络的整数 gem 内核的性能和内存要求。他们能够实现 4 倍的计算量和 4 倍的内存需求。他们展示了使用 n-graph 作为执行提供者的好处以及他们的硬件处理能力,展示了各种批量大小的性能扩展。精度损失非常小,满足了量化的激励效益。他们还讨论了生成 ONNX 模型的不同方法,例如使用 ONNX 模型动物园、Azure 机器学习实验和 Microsoft 的自定义视觉服务。

  • 00:35:00 在本节中,演讲者解释了如何在应用程序中使用 ONNX 运行时运行推理会话。转换模型后,用户将其加载到 ONNX 运行时并开始解析图形。运行时识别可用的优化并查询底层硬件以识别硬件库支持哪种操作。 ONNX 运行时旨在保持一致,因此 Python 和 C-sharp 的代码片段非常相似。演讲者还提到了 AutoML,它允许用户输入数据以接收自动转换 Python 和 C-sharp 代码的应用程序建议。此外,演讲者还描述了一个 docker 镜像,其中包含适用于不同框架的转换器,并允许用户快速开始使用 ONNX 运行时。该工作流通过使用 Azure Notebooks 进行演示。

  • 00:40:00 在本节中,演讲者讨论了如何利用开放式神经网络交换 (ONNX) 和 Microsoft 的机器学习工具在企业中扩展模型。该过程涉及使用 ML 工作区创建包含预处理和推理步骤的评分文件。然后,演讲者演示了如何为目标计算机和环境创建容器镜像,包括 ONNX 运行时基础镜像等基础镜像。最后,图像被部署到云 IKS 服务,该服务能够发送测试图像以在 CPU 和 GPU 端点上进行推理。

  • 00:45:00 在本节中,演讲者通过演示演示开放神经网络交换 (ONNX) 运行时的灵活性,其中使用相同的代码将应用程序指向不同的硬件平台,例如 CPU 与 GPU 和 x86与 ARM 相比。演讲者还展示了在边缘设备上部署 ONNX 运行时和模型的演示,特别是在 Intel up squared 上,以使用预先录制的视频馈送和边界框的后处理来检测工厂工人场景中的安全场景。演示中使用的代码是相同的,但使用了不同的硬件加速器来优化应用程序。演讲者总结说,ONNX 成为表示神经网络模型的通用格式,并且 ONNX 运行时支持在云端和边缘设备上进行部署。

  • 00:50:00 在本节中,演示者讨论了使用开放式神经网络交换 (ONNX) 通过 Azure 构建和部署机器学习应用程序的好处。他们还解决了观众关于在不同处理器上进行机器学习、将 ONNX 与现有管道一起使用以及从 ONNX 返回到以前框架的可能性的问题。此外,他们还提到了使用目标场景和数据扩展 ONNX Model Zoo 的计划。

  • 00:55:00 在本节中,演讲者讨论了 ONNX 在框架灵活性方面的优势,因为 ONNX 模型可以与各种服务框架一起使用。他们还提到了 ONNX 与 Azure 机器学习的集成,这允许用户上传推理遥测数据以进行再培训或试验。该会议还讨论了 ONNX 与 Excel 本地集成的可能性,尽管这仍在开发中。他们还解决了创建自定义算法并将其转换为 ONNX 的问题,并可选择使用 Python 来操作 ONNX 文件格式。最后,会议提到需要一种方法来签署用于分发的 ONNX 模型,这将作为未来改进的反馈。
 

#OpenVINO Execution Provider For #ONNX Runtime - #OpenCV Weekly #Webinar Ep. 68



#OpenVINO Execution Provider For #ONNX Runtime - #OpenCV Weekly #Webinar Ep. 68

用于 ONNX 运行时的 OpenVINO 执行提供程序是本次 OpenCV 每周网络研讨会讨论的主要话题。该产品旨在加速 ONNX 模型在英特尔硬件上的性能,同时最大限度地减少用户端的工作量。网络研讨会讨论了在现实世界中部署深度学习模型的挑战,并提出了 OpenVINO 作为这些挑战的解决方案。 OpenVINO 可以优化 AI 模型,以在各种设备和硬件上实现高效性能。 ONNX runtime 是一个开源项目,旨在加速机器学习推理,并进行了详细讨论。网络研讨会还演示了使用 OpenVINO Execution Provider for ONNX Runtime 实现的性能改进,以及多线程推理、对各种插件的全面支持和模型缓存等功能。还讨论了通过 OpenVINO 执行提供程序在 OpenVINO 和 PyTorch 之间的集成。演示者回答了听众提出的问题,主题包括与 ARM 设备的兼容性以及使用 ONNX 交换格式时性能或准确性的潜在损失。

  • 00:00:00 在本节中,主持人介绍了他们的嘉宾,Devon Agarwal 和 Prita Veeramalai,他们分别是 OpenVINO 的技术产品经理和 AI 框架工程师。他们简要介绍了该节目,并讨论了即将为观众提供的一些赠品。讨论的主要主题围绕 ONNX 运行时的 OpenVINO 执行提供程序展开,其目的是在用户端以最少的工作量加速英特尔硬件上 ONNX 模型的性能。主持人还概述了会议议程,其中包括对深度学习及其挑战的概述,然后是对 OpenVINO 及其功能的介绍。

  • 00:05:00 在视频的这一部分,演讲者介绍了 OpenVINO Execution Provider for ONNX Runtime 并解释了其用途。他们还概述了 OpenVINO、ONNX 和 ONNX Runtime,随后提供了有关如何开始使用 OpenVINO Execution Provider for ONNX Runtime 并将其集成到 ONNX 应用程序的指南。演讲者还讨论了该产品的功能集和未来计划,包括先睹为快的开发人员 Beta 预览版产品。然后话题转向深度学习在当今世界的重要性、边缘设备对 AI 的需求以及 AI 的计算需求。该视频还涵盖了与深度学习模型的开发和部署相关的挑战,包括独特的推理需求、集成挑战以及缺乏通用的解决方案。

  • 00:10:00 在本节中,讨论了在现实世界中部署深度学习模型的挑战。深度学习网络训练与嵌入式平台上发生的推理之间的脱节带来了技术挑战。还有编程语言和硬件变体,它们需要专用的 API 来进行软件和硬件通信。 Intel 的 OpenVINO 工具套件被引入作为应对这些挑战的解决方案。该工具包简化了开发工作流程,并允许开发人员编写一次应用程序并将其部署到整个英特尔架构中,从而提供了一次编写、随处部署的方法。该工具包能够部署针对 CPU、iGPU、Movidius VPU 和 GNA 的应用程序。它在工业、健康和生命科学、零售、安全和安保等各个行业都具有价值,可以为实际部署提供更快、更准确和高效的结果。

  • 00:15:00 在本节中,演讲者解释了 OpenVino 的概念以及它如何优化边缘设备的 AI 模型。他们解释了一旦在 PyTorch 或 TensorFlow 等框架中构建,AI 模型必须如何优化以在特定设备(例如 CPU、GPU 或 VPU)上实现高效性能。 OpenVino 为各种设备和硬件自动执行此转换过程,确保模型将得到优化,以在其部署的设备上实现高效性能。然后,演讲者继续解释什么是 ONNX,它是一种表示机器学习模型的开放格式,定义了一组通用运算符作为机器学习和深度学习模型的构建块。总体而言,ONNX 使 AI 开发人员能够使用各种框架、工具、运行时和编译器,而不必担心下游推理的影响。

  • 00:20:00 在本节中,演讲者讨论了 ONNX 格式,这是一种开放的中间模型,允许将不同工具生成的模型转换为使用标准化格式读取。 ONNX 运行时是一个开源项目,旨在加速跨各种操作系统和硬件平台的机器学习推理。它会自动识别优化机会并提供对可用的最佳硬件加速的访问。用于 ONNX 的 OpenVINO Execution Provider 使 OpenVINO 工具包的强大功能能够加速 ONNX 模型在英特尔 CPU、GPU 和 VPU 上的推理。它允许用户使用 ONNX 运行时 API 运行推理,同时轻松地将 OpenVINO 工具套件集成为后端。

  • 00:25:00 在本节中,讨论了 ONNX 运行时和 OpenVINO 执行提供程序之间的集成。这种集成允许在英特尔设备上高效执行深度学习模型。 OpenVINO 工具套件为在英特尔设备上运行模型提供优化库。启用 OpenVINO 执行提供程序后,它会智能地选择模型中的哪些运算符应在 OpenVINO 后端上运行以实现最高效率。其余运算符使用本机 ONNX 运行时框架执行。用户可以通过从源构建、拉取 Docker 映像或使用 pip 安装来安装 OpenVINO 执行提供程序。可以在 PyPI 上找到 ONNX 运行时 OpenVINO 包。

  • 00:30:00 在网络研讨会的这一部分,演示者讨论了如何使用 OpenVINO Execution Provider for ONNX Runtime 并展示其功能。他们解释了如何使用 pip 安装产品,并提供代码片段来展示如何导入 ONNX 运行时库和启动推理会话。它们还展示了通过对现有代码行进行简单修改来使用 OpenVINO Execution Provider 是多么容易。然后,演示者邀请观众扫描 QR 码以访问演示和样本以供自己试用。

  • 00:35:00 在本节中,视频演示了使用适用于 ONNX 运行时的 OpenVINO 执行提供程序 (EP) 实现的性能改进。该视频显示了使用 CPU 执行提供程序实现的 5 fps 与使用 OpenVINO EP 实现的 8 fps 之间的比较。此外,该视频还演示了使用 OpenVINO EP for ONNX Runtime 进行量化的演示,该演示使性能提高了 2 倍,而精度损失可以忽略不计。演示笔记本可在英特尔 DevCloud 上获得,它提供对真实英特尔硬件的远程访问以进行基准测试和分析。

  • 00:40:00 演示完成了吗?在本节中,演示者演示了如何启动 OpenVINO Execution Provider for ONNX Runtime 并选择硬件,例如 i3、i5、xenon 或 Core i9,以及图形分区。他们还展示了 Jupyter notebook 和对象检测示例,该示例采用输入视频和 ONNX 模型对设备进行干扰。演示者解释说支持 CPU、GPU 和 FP16 VADM 媒体,他们还提到了 CPU 执行提供程序,它是本机 ONNX 运行时后端。最后,演示者讨论了 OpenVINO Execution Provider 在无需购买或租用每个设备的情况下测试不同硬件的有用性。

  • 00:45:00 在本节中,讨论了 OpenVINO 执行提供程序的功能。它提供多线程推理、对各种插件的全面支持和模型缓存。还提供模型量化和图形分区,以及适用于多种语言的 API。存在 IO 缓冲区优化以提高性能,并且外部文件保存可用于 ONNX 模型。向观众提出问题以获得奖品,并分享了 PyTorch 模型的 OpenVINO 集成先睹为快。

  • 00:50:00 在本节中,他们讨论了 OpenVINO 通过 OpenVINO 执行提供商与 PyTorch 的集成。该产品仅需额外增加两行代码即可加速 PyTorch 模型在英特尔硬件上的性能。用户可以将他们的 nn.module 包装在 torch orp/ort 推理模块中,该模块使用 OpenVINO 执行提供程序准备模块进行推理,并通过 onnx.export 将模块导出到内存中的图形。然后 ONNXruntime 会话将图划分为子图,支持和不支持的运算符用于子图分区,与 OpenVINO 兼容的节点将由提供者执行,并且可以在英特尔 CPU、GPU 或 VPU 上执行,而所有其他节点将回退到默认 CPU ML 执行提供程序。安装过程很简单,可以选择从源代码构建,进行简单的 pip 安装,并访问所有 Python API。

  • 00:55:00 在本节中,OpenCV 每周网络研讨会的主持人宣读了听众提出的问题,主题包括 OpenVINO 与 ARM 设备的兼容性以及使用 ONNX 交换格式时性能或准确性的潜在损失。主持人和主持人解释说,OpenVINO 确实可以在 ARM CPU 设备上运行并提升性能,而 ONNX 甚至可以提高大多数模型的性能。但是,在从一种格式转换为另一种格式时,始终建议在测试集上测试准确性。主持人还澄清了 ONNX 确实支持动态形状模型,这与观众的提问相反。最后,主持人和主持人感谢观众和组织者菲尔的精彩演讲和信息丰富的会议。