学习ONNX交易 - 页 2

 

ONNX - ONNX 运行时,简单示例



ONNX - ONNX 运行时,简单示例

在此 YouTube 视频中,演讲者介绍了 ONNX,这是一种用于机器学习模型的开放格式,可以跨多个框架优化性能。该视频提供了在不同场景中使用 ONNX 的示例,例如新闻文章的情感分析以及将数值向量分类器转换为神经网络。演讲者强调了使用已建立的功能库和准确测量代码执行时间的重要性。此外,演讲者还讨论了在不同操作系统上进行开发的挑战,并建议仅加载必要的模块以提高运行时性能。总体而言,该视频提供了有关将 ONNX 用于机器学习模型的好处和挑战的宝贵见解。

  • 00:00:00 在本节中,演讲者介绍了 ONNX,这是一种用于机器学习模型的开放格式,可跨各种框架使用以优化模型的性能。 ONNX 基于协议缓冲区,它是 XML 格式的模拟二进制格式,但速度更快,更适合较小的消息。 ONNX 模型可以在一个操作系统和处理器中开发,并可以在任何地方使用,包括移动设备和显卡。 ONNX 运行时是一个用于跨平台加速模型训练和推理的库。 ONNX 还允许在不使用硬件加速的情况下对模型进行量化以减小其大小,并通过将其某些权重值替换为零值来修剪模型以减小其大小。演讲者包含指向网站的链接,可以在其中找到有关 ONNX 的更多信息。

  • 00:05:00 在本节中,演讲者讨论了使用 ONNX Runtime 使用 ONNX 格式的预训练模型所需的步骤。该模型可以使用任何框架创建,以 ONNX 格式保存,然后以多种方式使用,例如在功能较弱的服务器上或处理繁重的服务器负载。然后,演讲者提供了一个使用 Hugging Face 转换器库来确定与加密货币相关的新闻文章的情绪的示例。最后,演讲者通过加载和处理必要的库并展示在示例新闻文章上运行模型的结果来演示模型的应用。

  • 00:10:00 在本节中,演讲者讨论了使用 ONNX 框架将数值向量分类器转换为神经网络结果的过程。他们解释说没有使用 SoftMax 函数,因为它显着减慢了过程,而是使用了手动输入值。然后加载模型并测试其准确性,显示出令人鼓舞的结果。然而,在不同的操作系统和框架上安装时遇到了困难,突出了在部署模型时需要进行彻底的测试和灵活性。

  • 00:15:00 在本节中,演讲者讨论了尝试在不同平台上开发软件时可能出现的潜在问题,以及使用已建立的库而不是尝试手动实现所有内容的重要性。她提到了使用不同浮点格式的问题,以及在尝试处理非常大或非常小的数字时这会如何导致错误。此外,她建议使用像 SoftMax 这样的预先存在的函数实现,而不是尝试创建自定义函数,因为已建立的库的开发人员已经处理了可能出现的潜在问题。

  • 00:20:00 在这一部分中,演讲者讨论了他在 MacOS 上开发时遇到的问题以及 MacOS 和 Linux 之间的差异。他还提到需要只加载必要的模块,同时禁用其余模块以提高运行时性能,因为加载太多模块会显着影响执行时间。演讲者还建议使用“timeet”实用程序来准确测量运行时间,同时考虑到可能影响性能的各种因素。

  • 00:25:00 在视频的这一部分,演讲者讨论了测量代码执行时间的重要性,特别是对于比较不同代码段的性能而言。他们强调需要多次测量执行时间并取平均值以进行更准确的评估。然后演讲者使用这种方法比较了两段代码以不同方式处理数据的性能,结果表明一种方法明显快于另一种方法。最后,演讲者提供了他们演讲的链接,并感谢听众的参与。
 

PyTorch-ONNX 转换器概述



PyTorch-ONNX 转换器概述

在此概述中,来自 Microsoft 的 Bowen Bao 介绍了 PyTorch-ONNX 转换器,解释了其架构和将 PyTorch 模型转换为 torch 中间表示 (IR),然后转换为 ONNX IR,最后转换为 Protobuf 文件的流程。该转换器处理具有动态形状的导出模型、量化模型,并通过 ONNX 循环和 ONNX if 节点捕获循环、if 语句和其他操作。此外,用户可以创建自定义运算符或使用现有的自定义 PyTorch 运算符来导出 ONNX 模型或注册自定义符号函数以告诉导出器如何导出它。 Bowen 还解释了 ONNX 本地功能,通过 autocast 解决了混合精度问题,并总结了在改进故障诊断的同时继续支持更多模型的计划。

  • 00:00:00 在本节中,Microsoft 的软件工程师 Bowen 概述了 PyTorch-ONNX 转换器,包括其架构和流程。该转换器是 PyTorch 包的一部分,它利用 torch tracer 和 torch 脚本将 PyTorch 模型转换为 torch 中间表示 (IR),然后转换为 ONNX IR。最后一步涉及将其序列化为 Protobuf 文件中的 ONNX 模型。该转换器支持导出具有动态输入和输出形状的模型,以及量化模型,它可以通过 ONNX 循环和 ONNX if 节点捕获循环、if 语句和其他操作。此外,用户可以创建自定义运算符或使用现有的自定义 PyTorch
    运算符导出 ONNX 模型或注册自定义符号函数以告诉导出器如何导出它。最后,Bowen 解释了 ONNX 本地功能背后的动机。

  • 00:05:00 在本节中,重点是 PyTorch-ONNX 转换器和围绕导出的 ONNX 模型的一些常见抱怨,例如扁平节点。为了解决这个问题,添加了一个本地函数特性,允许用户指定一个 Torch 模块类或节点类型函数。还通过使用 Torch autocast 和 NVIDIA Apex mp 支持混合精度。该视频最后讨论了改进的故障诊断和继续支持更多模型的目标。提供的链接为使用 PyTorch-ONNX 转换器的用户提供了有用的资源和工具。
 

ONNX简介 |教程一 |开放神经网络交换 | ONNX



ONNX简介 |教程一 |开放神经网络交换 | ONNX

本教程介绍了 ONNX,它是一种中间机器学习框架,可将现有模型从一个框架转换为另一个框架。该课程涵盖深度学习面临的挑战、ONNX 概述以及关于 ONNX 运行时的讨论。讲师演示了使用 ONNX 转换模型的实际示例,并分享了将 Python 模型转换为 TensorFlow 模型的真实用例。需要熟悉 Python 编程、机器学习基础知识以及 PyTorch、TensorFlow 和 Scikit-learn 等框架。

 

深度学习的挑战 |教程 2 |开放神经网络交换 | ONNX



深度学习的挑战 |教程 2 |开放神经网络交换 | ONNX

本视频部分讨论了在推理过程中使用不同深度学习框架和硬件加速器的挑战。 ONNX 作为一种中间模型类型呈现,它与各种深度学习框架和硬件加速器兼容,允许它们之间的模型无缝传输。在需要时将 ONNX 模型转换为特定框架可以在跨不同系统使用经过训练的模型时实现更大的灵活性。了解这些挑战和解决方案有助于创建有效的深度学习管道。

  • 00:00:00 在视频的这一部分中,讨论了深度学习中的挑战。深度学习中使用的各种流行框架包括 Cafe、TensorFlow、Keras 和 MXNet。对于高计算能力,需要硬件加速器,这些硬件加速器针对深度学习解决方案进行了优化,例如 NVIDIA GPU、Intel GPU 和 Google TPU。推理还需要优化模型以确保效率,并且有各种可用的推理硬件选项,例如 NVIDIA T4、CPU 和 S 设备(如 Google Coral、Raspberry Pi 和 Jetson VR)。在为深度学习目的选择设备时,考虑软件和硬件因素至关重要。 ONNX 是首选,因为它与各种深度学习框架和硬件加速器兼容,便于它们之间的模型无缝传输。

  • 00:05:00 在本节中,演讲者解释了在推理阶段使用具有不同框架或硬件的训练模型的挑战。这个问题可以通过开放神经网络交换 (ONNX) 来解决,这是一种可以与不同硬件和框架一起使用的中间模型类型。如果需要,可以将 ONNX 模型转换为任何特定框架。该解决方案允许在不同系统中使用训练有素的模型时具有更大的灵活性。演讲者最后说,了解这些问题和解决方案将有助于创建管道并有效地使用深度学习。
 

关于 ONNX |教程 3 |开放神经网络交换 | ONNX



关于 ONNX |教程 3 |开放神经网络交换 | ONNX

该视频讨论了 ONNX,这是一个中间机器学习框架,它允许将模型转换为不同的框架模型类型并提供优化功能。 ONNX 于 2017 年由 AWS、微软和 Facebook 首次推出,得到了 IBM、英特尔和华为等其他公司的欢迎和贡献。许多公司目前都致力于 ONNX 生态系统的工作。

 

设计原则 |教程 4 |开放神经网络交换 | ONNX



设计原则 |教程 4 |开放神经网络交换 | ONNX

在此视频中,演讲者解释了开放式神经网络交换 (ONNX) 的设计原则。该生态系统最初是为深度学习开发的,现在已经扩展到支持传统的机器学习。 ONNX 可适应其他框架的更新,通过实际应用程序中定义明确的操作进行标准化,并能够轻松导出/导入模型。这些功能使其成为寻求灵活高效解决方案的最终用户的便利选择。

 

ONNX 文件格式 |教程 5 |开放神经网络交换 | ONNX




ONNX 文件格式 |教程 5 |开放神经网络交换 | ONNX

本教程视频介绍了机器学习模型的 ONNX 文件格式,其中包含输入和输出列表、计算节点和运算符、运算符参数以及模型的元数据和版本。 ONNX 文件格式不是黑盒,可以可视化。演讲者提供了 ReLU 和 PReLU 等算子的示例,并演示了深度学习模型图并与 ONNX 文件格式图进行了比较。还可以使用 ONNX 映射自定义运算符,由于其灵活性和功能性,使其成为神经网络的热门选择。

  • 00:00:00 在本节中,演讲者讨论了机器学习模型的 ONNX 文件格式,它不是黑盒子,可以可视化。 ONNX 文件格式包含输入和输出列表、计算节点和运算符列表、运算符参数,以及元数据和模型版本。演讲者演示了一个深度学习模型图,它是一系列计算节点,并将其与 ONNX 文件格式图进行比较。 ONNX 文件格式包含运算符模式,这些模式映射来自 Keras、TensorFlow 和 PyTorch 等框架的运算符。演讲者展示了 ReLU 和 PReLU 等运算符的示例。

  • 00:05:00 在本节中,演讲者解释了在将实际模型转换为 ONNX 文件格式时,框架如何将运算符映射到模型上。还可以使用 ONNX 创建和映射自定义运算符。 ONNX 是一个灵活的平台,提供了很多功能,这就是它在神经网络领域变得流行的原因。
 

ONNX 数据类型 |教程 6 |开放神经网络交换 | ONNX



ONNX 数据类型 |教程 6 |开放神经网络交换 | ONNX

该视频解释了 ONNX 有两种类型的规范:深度神经网络和机器学习。前者使用整数、浮点数、布尔值、字符串和复杂类型等张量数据类型,这些数据类型也在 Python 和 TensorFlow 中使用。同时,由于基于统计的学习通常不使用张量,后者使用序列和地图等非张量数据类型。

 

机器学习示例 |教程 7 |开放神经网络交换 | ONNX



机器学习示例 |教程 7 |开放神经网络交换 | ONNX

本视频教程介绍了如何将以pickle格式保存的模型转换为开放式神经网络交换 (ONNX) 模型文件格式,以作为使用 ONNX 进行机器学习的实际示例。该视频提供了一个指定必要包的需求文件,演讲者给出了一个简单的代码,用于在使用 skl2onnx 包转换为 ONNX 格式之前导入数据、拆分和训练模型。提供了一个转换脚本,并共享了使用 Netron 工具可视化生成的图形和在 ONNX 模型上执行推理的说明。演讲者强调了 ONNX 格式的可移植性和优化,并鼓励练习转换过程。

  • 00:00:00 在本节中,视频讨论了使用 ONNX 进行机器学习的实际示例。该示例涉及训练模型并将其保存为 pickle 格式,然后将其转换为 ONNX 模型文件格式。视频提供了一个requirement.txt文件,里面指定了所有的需求包,包括sklearn和skl2onnx,也就是转换器。然后,该视频显示了导入数据集、执行训练-测试拆分和训练模型的简单代码。最后,提供了一个转换脚本,使用 skl2onnx 包将保存的模型转换为 ONNX 格式。

  • 00:05:00 在本节中,演讲者解释了如何使用简单的脚本将 pickle 模型转换为 ONNX 模型。该脚本涉及加载 pickle 模型、定义数据类型、调用 convert_scalar 函数以及在将模型保存为 ONNX 文件之前传递类对象。演讲者还演示了如何使用 Netron 工具可视化生成的图形,以及如何通过传递样本输入使用 ONNX 模型进行推理。 ONNX 格式被描述为比 pickle 格式更便携和优化,因为它可以在任何 ONNX 生态系统中使用。演讲者建议练习转换过程以记住如何有效地进行转换。
 

ONNX 运行时 |教程 8 |开放神经网络交换 | ONNX



ONNX 运行时 |教程 8 |开放神经网络交换 | ONNX

演讲者讨论了 ONNX 运行时及其在深度学习中的重要性。 ONNX Runtime 是由 Microsoft 创立的快速高性能引擎。它是一个可扩展的模块化框架,是开源的,随 Windows 10 一起提供。微软更喜欢这个运行时,因为它对于深度学习来说快速高效,不像默认的运行时,它可能会滞后。此外,ONNX 运行时图显示了如何使用 ONNX 运行时将现有模型转换为 ONNX 文件格式,然后使用 ONNX 运行时来执行模型,而无需担心硬件或框架。演讲者建议观众可以在ONNX官方GitHub上深入了解ONNX运行时。