学习ONNX交易 - 页 11

 

手机中的神经网络:通过 ONNX 从训练到部署



手机中的神经网络:通过 ONNX 从训练到部署

在这段关于“手机中的神经网络:通过 ONNX 从训练到部署”的视频中,演示者演示了如何使用 iNaturalist 社区 API 训练神经网络,以根据蘑菇种类是有毒还是可食用来识别它们。然后,他们解释了如何使用 Apple 的 Core ML 包在 iPhone 上部署模型。演讲者还指出了在将训练模型导入 Core ML 之前将其格式化为 ONNX 文件格式的重要性。演讲者强调 EfficientNet 将成为未来图像分类的模型,模型选择需要谨慎,并建议为植物、动物或鸟类构建分类器。

  • 00:00:00 在本节中,演示者解释了如何使用 iNaturalist 社区的 API 训练蘑菇图像分类器,以获取各种蘑菇种类的数百张不同图像。他们使用 Mathematica 存储图像,并根据其所在地区常见的 11 种有毒蘑菇和 11 种可食用蘑菇种类,根据它们是有毒还是可食用对其进行分类。在神经网络的后期训练之前,图像被裁剪和调整大小。演示者同时使用 Fly Agarik 和 Death Cap 进行演示,这是一种致命的蘑菇,也通过相同的方法进行了有效分类。

  • 00:05:00 在本节中,演讲者讨论了使用网络存储库中的预训练网络模型训练神经网络以识别不同种类蘑菇的过程。他们描述了他们如何创建类别标签以及训练和测试集,并使用迁移学习通过随机梯度下降法训练模型。他们还提到了以 ONNX 文件格式导出经过训练的模型的重要性,该格式是几年前由机器学习行业领导者创建的一种开放式神经网络交换格式。

  • 00:10:00 在本节中,演讲者解释了如何使用 Apple 的 Core ML 包将神经网络部署到 iOS 操作系统设备。为了将模型转换为 Core ML 格式,演讲者展示了如何使用 CoreML 工具导入各种类型的网络模型,包括 ONNX,以及如何为用作示例的蘑菇数据集指定预处理参数和类标签。演讲者还指出,Core ML 模型的工作方式与自然语言模型类似,带有编码器和解码器,并强调了两种格式在像素值和颜色偏差方面的一些差异。

  • 00:15:00 在本节中,演讲者解释了将 Core ML 模型部署到 iPhone 的步骤。他们演示了如何用自己的蘑菇物种模型替换 Xcode 项目中预先存在的 MobileNet 模型。演讲者通过对他们在树林中发现的各种蘑菇进行测试来证明该模型可以正常工作。他们鼓励观众查看他们的 Jupyter notebook 以获取更多信息。

  • 00:20:00 在本节中,演讲者提到图像分类性能最好的模型是 EfficientNet,它将在未来推出。但是,用户必须注意不要选择内存太重的 EfficientNet 模型。演讲者警告不要在没有咨询专家的情况下使用分类器进行烹饪,因为某些类型的蘑菇可能是致命的。将来,演讲者计划为演示文稿创建一个工作流程,并提供有关该主题的博客文章。他们还计划包括音频示例,例如识别鸟鸣。演讲者建议为此类应用程序和主题启动一个研究小组,并强调 ONNX 点取决于 Android 的使用情况。

  • 00:25:00 在本节中,演讲者讨论了导入物种观察结果的不同选项和其他有用的功能,例如导入 gpif 搜索、gpif 导入和全局数据,可用于在动物或植物上构建分类器。演讲者也感谢听众的关注,并邀请他们在社区的机器学习小组中提出更多问题。
 

MCU 上的 ONNX



MCU 上的 ONNX

Rohit Sharma 谈到了在微控制器上运行 ONNX 模型的挑战和机遇。他强调,虽然这些设备缺乏高性能服务器的资源,但由于硬件资源的改进和 AI 社区努力减小模型尺寸,针对微型设备的机器学习应用越来越多。 Sharma 讨论了两种用于在微控制器上轻松实现机器学习的工具:DeepSea,一种支持 Python 并使开发人员能够创建自定义 ML 算法的开源提前编译器,以及 Canvas,一种无代码/低代码平台,提供超过 70 个微型 ML 应用程序,可以根据用户的数据集进行定制。他为这些工具提供了两个用例,包括将手语手势转换为文字的可穿戴手套,以及用于语音辅助设备(如 Amazon Echo)的弱词检测。

  • 00:00:00 在本节中,Rohit Sharma 讨论了在微控制器上运行 ONNX 模型的挑战和机遇,微控制器是依靠电池运行数月的微型设备。虽然这些设备不具备带有加速器或单板计算机的高性能服务器的计算资源,但越来越多的机器学习应用程序在微型设备上运行是由于 MCU 供应商不断改进硬件资源,而 AI 研究社区正在努力减小模型尺寸。 Sharma 解释说,所有微型 ML 应用程序都是边缘 AI 应用程序,但并非所有边缘 AI 应用程序都是微型 ML 应用程序,因为差异源于功耗。然后,他继续讨论使用 DeepSea 编译 ONNX 模型的过程,DeepSea 是一种开源、独立于供应商的深度学习库编译器和推理框架,专为包括微控制器、物联网和边缘设备在内的小型设备而设计。

  • 00:05:00 在本节中,演讲者介绍了两种用于在微控制器上轻松实现机器学习的工具。第一个工具是 DeepSea,这是一种支持 Python 并使开发人员能够创建自定义机器学习算法的开源提前 (AOT) 编译器。第二个工具是 Canvas,这是一个无代码/低代码平台,提供了一个包含 70 多个微型机器学习应用程序的画廊。 Canvas 允许自定义这些应用程序以创建适合用户数据集的微型机器学习模型。演讲者还提供了这些工具的两个用例——将手语手势转换为口语的可穿戴手套,以及用于启用 Amazon Echo 等语音辅助设备的弱词检测。
 

利用 ONNX 机器学习的力量 - Ron Dagdag



利用 ONNX 机器学习的力量 - Ron Dagdag

在本视频中,Ron Dagdag 深入探讨了机器学习框架的重要性,尤其是 ONNX,它促进了深度学习框架和部署之间的互操作性。他概述了获取 ONNX 模型的方法,包括转换现有模型、使用 Azure 的自动化机器学习训练模型以及使用 Azure 的自定义视觉服务。 Dagdag 强调是在云端还是在边缘部署机器学习模型的决定,他建议利用 ONNX 使流程更加无缝。此外,他还介绍了使用 Microsoft 的 ML.NET 创建机器学习模型的过程,并演示了如何将 ONNX 模型整合到使用 ONNX 运行时进行推理的应用程序中。 Dagdag 还探索了 ONNX 作为机器学习的开放标准、其各种平台和语言以及使模型更小的工具。

  • 00:00:00 在本节中,演讲者讨论了传统编程与机器学习的区别,因为机器学习侧重于训练计算机学习算法,而传统编程侧重于输入和计算。训练数据在机器学习中很重要,这些数据用于训练机器学习算法作为过程的一部分。演讲者强调了机器学习框架的重要性,例如 ONNX(开放式神经网络交换),它充当机器学习框架和部署之间的桥梁。 ONNX 有助于在深度学习框架之间移动模型,确保框架之间的互操作性。

  • 00:05:00 在本节中,Ron Dagdag 讨论了获取 ONNX 模型的不同方法。数据科学家,类似于厨师,负责创建和改进配方以改进公司的模型,而 ONNX 模型就像 PDF 一样,用于神经表示操作图。有四种方法可以获得 ONNX 模型,包括通过 GitHub、Azure 自定义视觉服务、转换现有模型以及使用 Azure 的自动化机器学习来训练它们。将模型转换为 ONNX 的过程非常简单,因为有转换器可用于将模型从 TensorFlow、Keras 或 PyTorch 转换为 ONNX,其中包括加载现有模型、进行转换和保存等重要步骤。总的来说,ONNX 可以帮助企业更无缝地将机器学习集成到他们的应用程序中。

  • 00:10:00 在本节中,演讲者讨论了 ONNX 在机器学习模型中的用法。 ONNX 允许开发人员在可视化模型时识别模型的输入和输出数据。它可以通过命令行转换使用,并且可以快速扩展到云端的 GPU 集群。 ONNX 还提供了一个模型注册表,可以帮助版本控制模型和协助部署。演讲者强调了数据科学家和软件工程师之间的区别,前者生成秘方,而后者则弄清楚如何通过将其与各种来源集成、获取数据和创建管道来实施它。 ONNX 可以部署在各种设备上,包括 Windows 设备和物联网端点。

  • 00:15:00 在本节中,演讲者讨论了是否将机器学习模型部署在云端或边缘的决策,这是指更接近用户的处理。他解释说,部署到边缘可以更具成本效益、更灵活并且具有更低的延迟,这在处理视频或图像时是理想的。此外,当规则和法规规定数据不应离开特定网络或国家/地区时,可能有必要部署到边缘。演讲者建议使用 ONNX,一种可以转换来自不同机器学习框架的模型的中间格式,以使部署过程更加无缝。

  • 00:20:00 在本节中,演讲者讨论了 ONNX 框架及其潜在应用。 ONNX 允许将模型转换为不同的格式,包括 TensorFlow、Core ML 和迁移学习,并具有用于执行模型的高性能运行时,称为 ONNX Runtime。 ONNX Runtime 是跨平台的,支持传统的机器学习操作。它还具有 GPU 版本和 C# API。总的来说,ONNX对于开发者来说是一个强大的工具,用户可以通过docker容器实例通过ONNX生态系统开始使用它。在他的演示中,演讲者展示了如何在 C# 中下载和使用不同的 ONNX 包来使用数据帧操作数据。

  • 00:25:00 在本节中,演讲者演示了使用 Microsoft 的 ML.NET 创建一个简单的机器学习模型的过程,该模型可以根据多年的经验预测薪水。他首先将数据拆分为训练集和测试集,使用 ML 上下文创建管道,并使用训练集训练模型。然后,他评估模型的指标并将其保存到 ONNX 模型中。之后,他展示了如何将 ONNX 模型整合到使用 ONNX 运行时进行推理的应用程序中。最后,他为应用程序创建一个输入容器并运行模型以获得分数。

  • 00:30:00 在本节中,演讲者讨论了使用 ONNX 运行时的好处、过去使用过它的不同 Microsoft 团队,以及它如何改进他们的流程。他还谈到了在部署到 Windows 设备时使用 Windows ML,它在 win32 和 WinRT 应用程序中跨 Windows 系列设备可用,并使用 API 连接 ONNX 运行时。演讲者随后探讨了 Direct ML,它非常适合创建实时高度控制的机器学习 API,最适合游戏。他还强调了用于在浏览器或 nodejs 中运行 ONNX 模型的 ONNX JS,以及嵌入式学习库,它允许您开始使用没有完整操作系统或 Linux Mac 的设备。

  • 00:35:00 在本节中,Ron Dagdag 讨论了使用 ONNX 作为机器学习的开放标准,以及它如何有效地转换到不同的平台。 ONNX 模型可以用多种语言创建,例如 dotnet、JavaScript 和 Python。可以通过部署到云端或边缘来实现性能。听众提出了一些问题,例如,您能否在 C# 中导入您的 ONNX 模型,ONNX 运行时的内存占用是多少,以及如何将大型图像模型转换为适用于较小设备的较小 ONNX 模型。 Dagdag 建议使用剪枝或量化来压缩模型并减小其大小。他还强调 GitHub 存储库中提供了幻灯片和演示代码,以及用于试用代码的活页夹。

  • 00:40:00 在本节中,演讲者讨论了使 ONNX 模型在尺寸方面更小的过程。 ONNX 模型由操作图组成,这些图标识了它可以执行的操作。虽然可能没有使 ONNX 模型更小的特定方法,但有一个实用程序可以压缩它。由于它是开源软件,因此将来可能会发布新功能。鼓励观众通过聊天或问答网站向罗恩提交任何进一步的问题。
 

利用 ONNX 的机器学习能力 |罗恩莱尔 Dagdag | Conf42 机器学习 2021


利用 ONNX 的机器学习能力 |罗恩莱尔 Dagdag | Conf42 机器学习 2021

在此视频中,Ron Dagdag 讨论了使用 ONNX(开放神经网络交换)作为机器学习模型的开放格式的好处,特别是在将模型部署到不同端点(例如手机或云基础设施)时。他介绍了将模型转换为 ONNX 可能有用的场景,例如低性能或组合在不同框架上训练的模型,并描述了如何以 ONNX 格式下载 RestNet 等流行模型。此外,他还讨论了在边缘运行机器学习模型的好处,以及通过在云中注册模型并对其进行版本控制来管理模型的重要性。他演示了如何将模型转换为 ONNX 以及如何在 Python 中使用 ONNX 运行时进行推理,最后强调了 ONNX 在使数据科学家和软件工程师能够有效合作方面的作用。

  • 00:00:00 在本节中,来自 Spacy 的 Ron Dagdag 介绍了 ONNX(开放式神经网络交换)作为机器学习模型的开放格式,除了神经网络之外,它还能够处理传统的机器学习模型。他强调,这种格式弥合了机器学习训练阶段与学习模型部署位置之间的差距,可以是从手机到云基础设施的各种端点。 ONNX 已经与越来越多的组织建立了合作伙伴关系,最著名的是 Microsoft 和 Facebook。

  • 00:05:00 在本节中,演讲者描述了 ONNX 的日益流行,ONNX 是一种框架,允许以一种编程语言训练的机器学习模型部署在另一种语言或不同的硬件上,以及它的情况将模型转换为 ONNX 可能很有用。这些包括存在高延迟或低性能的场景,部署到 IoT 或边缘设备时,或者组合在不同框架上训练的模型时。演讲者将 ONNX 比作 PDF,因为它允许模型显示在不同类型的设备上,并继续讨论如何创建 ONNX 模型,包括从 ONNX 模型动物园导出或使用 Azure Custom Vision。

  • 00:10:00 在本节中,演讲者讨论了如何将流行的机器学习模型(例如 RestNet)转换为可以轻松下载使用的 ONNX 格式。他还提到了如何使用 Torch 和 SKL 等工具或通过命令行将神经网络模型转换为 ONNX。此外,他还谈到了 Netron,这是一种通过显示操作图的输入和输出来可视化 ONNX 模型的工具,无需数据科学家的原始代码。最后,演讲者强调了通过在云中注册并对其进行版本控制来管理机器学习模型的重要性。

  • 00:15:00 在本节中,Ron Lyle Dagdag 讨论了在何处部署机器学习模型的重要性以及部署时要考虑的不同因素。他解释说,部署可以通过多种方式完成,例如部署到云端或在边缘运行推理,更靠近用户。此外,他还提到了构建映像和创建部署管道的重要性,这可以通过服务或 Docker 容器完成,并讨论了可用于将 ONNX 整合到应用程序中的 ONNX Docker 映像的可用性。

  • 00:20:00 在本节中,演讲者讨论了在边缘而非云端运行机器学习模型的好处。一个主要优势是低延迟,因为在设备本地运行模型可以提供更快的推理时间。另一个优势是可扩展性,因为将模型部署到数百万或数十亿台设备比将数据传输到云端更有效。引入 ONNX 生态系统作为将现有模型转换为可以使用不同硬件加速器在边缘运行的格式的解决方案。 ONNX 运行时是 ONNX 模型的高性能推理引擎,也作为在边缘运行模型的开源解决方案进行了讨论。

  • 00:25:00 在本节中,演讲者讨论了 ONNX 运行时以及它如何与 Windows AI 平台(例如 WinML API)一起使用,以进行实用且简单的基于模型的 API 推理。此外,还有用于创建游戏的 DirectML API、用于在浏览器中运行模型的名为 ONNX.js 的 JavaScript 库,以及几个取决于系统功能的强大驱动程序模型。然后,演讲者继续演示如何使用 nuget 包和 C# 应用程序将 ml.net 中经过训练的模型转换为 ONNX。

  • 00:30:00 在本节中,Ron Lyle Dagdag 演示了一个简单示例,说明如何创建一个机器学习模型,该模型根据审阅者多年使用 ml.net 的经验输入来预测薪水。训练模型后,可以使用 `context.model.convert_to_onnx` 函数将其转换为 ONNX 模型。然后可以使用 ONNX 运行时库验证 ONNX 模型并将其用于在 Python 笔记本中进行推理。模型的输入和输出使用 `netron.app` 显示。

  • 00:35:00 在本节中,演讲者演示了如何在 Python 中使用 ONNX 运行时来推断在 ML.NET 中创建并导出到 ONNX 文件的模型。演讲者展示了如何获取 ONNX 模型的输入和输出的名称、形状和类型,并将输入值传递给模型进行推理。演讲者还强调了使用 ONNX 作为将机器学习模型集成到应用程序中的开放标准的重要性,以及 ONNX 如何使数据科学家和软件工程师能够有效地协同工作。最后,演讲者回顾了讨论的要点,包括如何创建和部署 ONNX 模型以及支持 ONNX 部署的各种平台。

  • 00:40:00 在本节中,Spacy 的首席软件工程师和 Microsoft MVP Ron Dagdag 在视频的结尾感谢观众并分享了如果他们想了解 ONNX 运行时、Jupyter 笔记本、面包店的极客联系方式、面包师和面包。
 

使用 ONNX Runtime Web 在 JavaScript 中进行推理!



使用 ONNX Runtime Web 在 JavaScript 中进行推理!

该视频介绍了通过 Next.js 模板在浏览器中使用 ONNX Runtime Web,该模板提供了一个 UI,用于在预选图像上运行推理。演示了使用 RGB 值和维度创建将图像数据转换为张量的过程。探索了模型辅助函数,它使用模型路径、执行提供程序和会话选项将预处理数据传递到 ONNX 推理会话。模型的提要使用输入名称和张量对象创建,并传递给 session.run 函数以获得前五个结果。第一个结果填充图像显示,同时提供 webpack 配置和使用 ONNX 运行时节点进行服务器端推理的说明。

  • 00:00:00 在本节中,我们将了解如何使用模板在浏览器中使用 ONNX Runtime Web 和 JavaScript,该模板提供进行推理所需的所有必要预处理。该模板基于 Next.js 构建,Next.js 是一个用于构建生产就绪应用程序的 React 框架,并提供了一个简单的 UI,用于在预先选择的示例图像上运行推理。作者向我们介绍了设置 HTML canvas 元素以显示图像并报告有关推理的各种统计信息的代码。然后使用图像助手实用程序将图像转换为张量,然后通过调用 ONNX 运行时 Web API 的模型助手中的预测函数传递以执行推理。

  • 00:05:00 在本节中,视频描述了将图像数据转换为张量以使用 RGB 值进行推理、重塑以及使用 ONNX Runtime Web 中的张量对象创建具有数据和维度的张量的过程。该视频还探讨了模型辅助函数,该函数通过为其提供模型路径、执行提供程序(WebGL 或 WebAssembly)和会话选项,将预处理数据传递到 ONNX 推理会话。需要输入名称和 ORT 张量对象来为模型创建提要,这些提要将传递到 session.run 函数中以获得结果。返回前五个结果,第一个结果用于填充图像显示。此外,还提供了一个 webpack 配置,以及使用 ONNX 运行时节点在服务器端使用 API 框架进行推理的说明。
 

2020 年夏季 Web 和机器学习 W3C 研讨会

ONNX.js - 在浏览器和 Node.js 中运行 ONNX 模型的 Javascript 库



ONNX.js - 在浏览器和 Node.js 中运行 ONNX 模型的 Javascript 库

ONNX.js 是一个 JavaScript 库,允许用户在浏览器和 Node.js 中运行 ONNX 模型。它使用各种技术在 CPU 和 GPU 上优化模型,并支持分析、日志记录和调试以便于分析。该库支持所有主要浏览器和平台,并使用 web worker 实现并行化,以在多核机器上获得更好的性能。使用 WebGL 访问 GPU 功能,它提供了显着的性能改进并减少了 CPU 和 GPU 之间的数据传输。尽管需要进一步的优化和运营商支持,但演讲者鼓励社区贡献力量来改进 ONNX.js。

  • 00:00:00 在本节中,来自 Microsoft 的 Emma 介绍了 ONNX.js,这是一个用于在浏览器和 Node.js 中运行 ONNX 模型的 JavaScript 库。 JavaScript 是一种非常重要的语言,95% 的网站都在使用它,并且是 GitHub Desktop 和 VS Code 等电子应用程序最流行的客户端语言。尽管人们认为 JavaScript 不是为高性能计算而设计的,但有一些技术可以使 JavaScript 和机器学习很好地协同工作。使用客户端机器学习的好处包括隐私保护,同时允许实时分析,实现跨平台一致的 AI 体验,以及通过使用 GPU 加速性能而无需安装库或驱动程序。 ONNX.js 类似于 TensorFlow.js,提供标准框架 ONNX 格式的机器学习模型。

  • 00:05:00 在本节中,我们了解了 ONNX 社区,该社区由 Microsoft 和 Facebook 于 2017 年成立,旨在提供窗口中立的开放格式标准。 ONNX.js 是 ONNX 的纯 JavaScript 实现,允许用户在浏览器中运行 ONNX 模型并加载 JS。它使用多种先进的技术优化了 CPU 和 GPU 上的模型,并启用了三个后端,两个用于使用 JavaScript 和 WebAssembly 的 CPU,一个使用 WebGL 用于 GPU。 ONNX.js 还提供了 profiler、logger 等工具,方便调试和分析,支持各大平台的所有浏览器,轻松构建跨平台的 AI 应用。最后,使用 web workers 可以在繁重的运算符中实现并行化,从而显着提高多核机器的性能。

  • 00:10:00 在本节中,演讲者讨论了使用 WebGL(一种用于访问 GPU 功能的流行标准 API)加速 JavaScript 图形创建的好处。 WebGL 的使用实现了许多优化,以减少 CPU 和 GPU 之间的数据传输,以及减少 GPU 处理周期,从而显着提高性能。演讲者还提供了使用 ONNX.js 运行模型的端到端流程示例,并通过 HTML 示例以及 npm 和边界工具演示了如何使用 ONNX.js。此外,演讲者还讨论了进一步优化和支持更多 ONNX 运营商的必要性,并鼓励社区做出贡献以改进 ONNX.js。
 

如何使用 ONNX.js 在浏览器中运行 PyTorch 模型



如何使用 ONNX.js 在浏览器中运行 PyTorch 模型

该视频解释了使用 JavaScript 和 ONNX.js 在浏览器中运行 PyTorch 模型的优势,包括更好的响应时间、可扩展性、离线可用性和增强的用户隐私。该视频还介绍了将 PyTorch 模型转换为 ONNX 模型、将其加载到 ONNX.js 会话并在浏览器中运行推理的过程。还讨论了数据准备、调试和扩充,演讲者演示了如何使用数据扩充技术使模型更加稳健。该视频提供了示例代码和演示网站,供用户自己试用该模型。

  • 00:00:00 在本节中,Eliot Wait 讨论了使用 JavaScript 在浏览器中运行 PyTorch 模型的好处。首先,在浏览器中运行模型可提供更好的响应时间并避免向服务器发送数据或从服务器发送数据的延迟。其次,建立一个只有静态文件的网站可以更容易地扩展和处理更多的用户。第三,该模型将离线工作,因此只要已经安装了 JavaScript 文件,它们仍然可以在没有互联网连接的情况下使用。第四,在浏览器中托管模型增强了用户隐私,因为数据不与任何服务器共享。但是,如果模型太大或在用户设备上计算需要太多时间,建议将其托管在服务器上。最后,Eliot 说明了如何使用 Mnest 模型轻松地将 PyTorch 模型转换为 JavaScript 以进行手写数字识别。

  • 00:05:00 在本节中,视频解释了使用 TensorFlow.js 和 ONNX.js 之间的区别,并建议使用 TensorFlow.js 进行训练,使用 ONNX.js 进行推理。 ONNX 代表“开放式神经网络交换”,它定义了机器学习模型的通用文件格式。然后,该视频介绍了使用 torch.onnx.export 方法将 PyTorch 模型转换为 ONNX 模型的过程,并展示了如何将模型加载到 ONNX.js 推理会话中以在浏览器中对其运行推理。该视频提供了用于创建会话、加载模型和对虚拟输入运行推理的示例代码,该虚拟输入返回只读输出映射。

  • 00:10:00 在本节中,视频讨论了如何解决尝试使用 ONNX.js 在浏览器中运行 PyTorch 模型时发生的错误。具体来说,错误消息指出 ONNX.js 当前不支持 log-softmax 运算符,但视频演示者显示支持 softmax 运算符。该视频还介绍了一个演示网站,用户可以在其中绘制数字并查看 PyTorch 模型的输出预测。但是,演示者指出加载模型存在问题,通过确保在通过模型运行数据之前已加载模型来纠正该问题。最后,该视频展示了模型代码的更新版本,可将图像数据列表重塑为 280x280x4 张量,从而使模型能够根据像素输入预测数字值。

  • 00:15:00 在视频的这一部分,演讲者解释了如何使用 ONNX.js 为将在浏览器中运行的 PyTorch 模型准备数据。他们提取绘制图像的第四个通道,将其重塑为 PyTorch 图像的预期形状。他们还应用平均池算子并将张量除以 255,以将图像值调整到预期范围内。此外,他们还解释了如何通过减去数据集的均值并将其除以标准差来对数据进行归一化。演讲者识别出由于虚拟输入的旧形状而导致的错误,并讨论了如何修复它。他们还解释了如何调试和应用数据增强以使模型更准确,在将图像数据传递给模型之前旋转和平移图像数据。

  • 00:20:00 在本节中,演讲者演示了如何通过向训练脚本添加数据扩充来使模型更加稳健。这些增强包括数字的翻译、缩放和剪切,为模型生成更难学习的样本。然后演讲者从头开始重新训练模型并对其进行测试,并指出虽然它仍然可以改进,但增加的数据增强使其整体上更加稳健。演讲者邀请观众使用视频说明中的链接亲自试用该模型。
 

使用 ONNX 运行时演示在 CPU 上进行数字分类



使用 ONNX 运行时演示在 CPU 上进行数字分类

Open Neural Network Exchange (ONNX) 为深度学习和机器学习模型提供了一种开源格式。我们可以在我们喜欢的任何框架中训练我们的模型,然后将模型转换为 ONNX 格式。借助 Microsoft 的 ONNX 运行时,我们可以在任何环境中使用 onnx 模型运行推理会话,这使我们的实施速度稍快一些。这是相同的简单演示。该模型经过训练,可以使用带有 PyTorch 的 MNIST 数据集来识别数字。我正在 Linux CPU 上运行推理会话。

https://github.com/NagarajSMurthy/Digit-recognizer

GitHub - NagarajSMurthy/Digit-recognizer: Digit recognition using CNN and testing on CPU with ONNX runtime.
GitHub - NagarajSMurthy/Digit-recognizer: Digit recognition using CNN and testing on CPU with ONNX runtime.
  • NagarajSMurthy
  • github.com
Digit recognition is a simple task of recognising digits from 0 to 9. A CNN is trained on the MNIST dataset which gave a good accuracy of around 98% on the test set. Choosing the proper model and employing suitable regularisation technique, the model also performed well during inference with an accuracy of close to 98%. The whole model is then...
 

使用 ONNX 和 DJL 在 JVM 上进行数十亿次 NLP 推理



使用 ONNX 和 DJL 在 JVM 上进行数十亿次 NLP 推理

一家媒体情报公司的 CTO 讨论了他们如何在机器学习管道中使用 JVM、DJL 和 Hugging Face 进行 NLP 标记化,以挖掘各种用例的媒体格局。随着他们的产品功能朝着这个方向发展,他们的机器学习和建模系统已经成为保持一切运行的重要组成部分,因为他们已经达到了 CPU 无法满足的规模。他们已经从使用 32 位浮点模型切换到 16 位,这使效率提高了 3%,但在此过程中遇到了转换错误和罕见的内存泄漏,他们通过替换几个实现解决了这些问题。他们通过添加 GPU 驱动的 CI 并设置高级 Prometheus 逻辑堆栈来监控各种推理的延迟和标记化延迟,从而提高稳健性。他们未来的计划包括通过创建多 GPU 设置来提高 GPU 效率并向系统添加更多模型。

  • 00:00:00 在视频的这一部分中,一家媒体情报公司的 CTO Viet 讨论了他公司的基础设施如何基于 JVM 以及他们如何使用它来挖掘各种用例(例如产品发布)的媒体格局跟踪和声誉跟踪。他解释说,他们的系统由 JVM 提供支持,并且他们使用 DJL 和 Hugging Face 在机器学习管道中进行 NLP 标记化。该公司的机器学习和建模系统不再只是可有可无,而是随着产品功能的发展而保持一切正常运行的重要组成部分。他们已经达到了 CPU 无法满足的规模,因此他们将 Cubernates 视为一个横向扩展系统。他们的系统每天产生数十亿次推理,他们进行 GPU 加速并使用 800 万个站点构建整个网络爬虫系统。

  • 00:05:00 在本节中,演讲者讨论了他们在使用 ONNX 生态系统时的经验。他们谈到从使用 32 位浮点模型到 16 位模型的转变,这导致效率提高了 3%。但是,他们在此过程中遇到转换错误,导致 ONNX 模型出现意外输出。他们还遇到了罕见的内存泄漏,他们通过替换几个实现解决了这些问题。演讲者解释说,他们通过添加 GPU 驱动的 CI 和设置高级 Prometheus 逻辑堆栈来监控各种推理的延迟和标记化延迟,从而提高了稳健性。最后,他们讨论了未来的计划,包括提高 GPU 效率和通过创建多 GPU 设置向系统添加更多模型。
 

ONNX 和 JVM


ONNX 和 JVM

Java 虚拟机 (JVM) 上的 ONNX 支持至关重要,因为 ML 模型在几乎每个应用程序中都变得越来越重要。由于 Java 是用于构建实时软件应用程序的最大平台之一,因此必须在 Java 或 C# 等编程语言中提供支持。 Oracle 的目标是在 Java 中提供 ONNX 运行时 C API,通过在 C API 上使用 Java API 的薄层,实现轻松部署,并将性能影响降至最低。演讲者还讨论了一个用于从 Java 编写 ONNX 模型的开源库,介绍了一个逻辑回归图示例,并邀请对 Trippo 中的 ONNX 导出内容做出贡献,同时讨论了 ONNX 元数据格式缺乏标准化的问题。

  • 00:00:00 在本节中,Oracle 实验室机器学习研究组的研究员 Adam Pocock 解释了为什么在 Java 虚拟机 (JVM) 上支持 ONNX 很重要。随着 ML 模型在几乎每个应用程序中变得越来越重要,在编写应用程序所用的语言(例如 Java 或 C#)中提供支持至关重要。根据 Pocock 的说法,Java 是全球最大的实时软件应用程序构建平台之一,拥有数百万 Java 开发人员。因此,Oracle 的目标是在 Java 中提供 ONNX 运行时 C API,以便用户轻松部署,同时将性能影响降到最低。显示了一个快速代码示例,以演示 Java API 在 C API 上的薄层。

  • 00:05:00 在本节中,演讲者讨论了将 Java 对象与配对本机对象结合使用的挑战,以最大程度地减少机器学习模型的开销。他们解释说,有安全网可以确保清理所有东西,但不建议使用常规阵列。演讲者还介绍了一个用于从 Java 编写 ONNX 模型的开源库,其中包括属性验证和检查以及轻松导出 Java 数组的能力。他们提供了一个示例,说明如何使用该库编写逻辑回归图,并提到了扩展运算符枚举并将来源和元数据集成到转换后的模型中的计划。

  • 00:10:00 在本节中,演讲者讨论了 ONNX 中元数据格式缺乏标准化的问题。虽然有可能在 ONNX 元数据中包含训练数据和超参数等数据,但它并没有标准化。演讲者对英特尔为标准化元数据格式所做的工作表示了兴趣。演讲者还邀请对 Trippo 中的 ONNX 导出内容做出任何贡献,并鼓励就该主题进行讨论。