学习ONNX交易 - 页 12

 

使用 DJL 和 ONNX Runtime 构建您的高性能模型推理解决方案



使用 DJL 和 ONNX Runtime 构建您的高性能模型推理解决方案

Deep Java Library (DJL) 是一个基于 Java 构建的机器学习库,它抽象了深度学习库并提供了多个后端,例如 Apache MXNet、TensorFlow 和 PyTorch。该库有一组针对各种任务的预训练模型,并且已准备就绪,经过严格测试以确保最佳性能,同时控制内存使用。演讲者还介绍了将两个引擎一起加载的混合引擎概念,从而在推理引擎之间提供更平滑的过渡。进一步的开发包括支持 ARM 服务器、在 Android 设备上运行 ONNX Runtime,以及将混合引擎解决方案引入边缘设备。

  • 00:00:00 在本节中,演讲者介绍了 Deep Java 库 (DJL) 及其与 ONNX 运行时的集成,该库已被证明在亚马逊内外的机器学习用例中具有良好的性能。 DJL 是一个基于 Java 构建的机器学习库,它抽象了深度学习库并提供了多个后端,例如 Apache MXNet、TensorFlow 和 PyTorch。 DJL 有一组预训练模型,包括来自 Hugging Face 和 Torch Hub 的流行模型,用于图像分类、对象检测、情感分析和动作识别等任务。 DJL 的优势在于它是服务就绪的,并且经过了严格的测试以确保在控制内存使用的同时具有最佳性能。演讲者还分享了一些利用 ONNX Runtime 和 DJL 的成功客户用例,展示了模型推理速度和多线程推理的显着改进,即使是从 TensorFlow 和 PaddlePaddle 等不支持线程安全的不同深度学习框架转换而来多线程。

  • 00:05:00 在本节中,演讲者讨论了 ONNX Runtime 用户由于缺乏内置运算符而面临的挑战,导致难以在 Java 中对无维数组进行预处理和后处理手术。他们提出了一个称为混合引擎的新概念,它同时加载两个引擎,允许引擎之间更平滑地过渡以进行推理。 Deep Java 库提供了一个标准类,用户可以在其中定义他们的模型将如何加载,翻译器提供抽象来执行预处理和后处理。他们还介绍了 ND 管理器,这是一种树状架构,它取代了 Java 中的垃圾收集系统,以提供具有成本效益的内存收集。演讲者提到了进一步的发展,例如支持 ARM 服务器、在 Android 设备上运行 ONNX Runtime,以及将混合引擎解决方案引入边缘设备。
 

[FlexFlow Bootcamp 2020] FlexFlow 前端支持:TensorFlow Keras、PyTorch、ONNX 等



[FlexFlow Bootcamp 2020] FlexFlow 前端支持:TensorFlow Keras、PyTorch、ONNX 等

在视频的这一部分,演讲者讨论了支持 TensorFlow Keras、PyTorch 和 ONNX 的 FlexFlow Python API。创建和训练模型的过程包括向模型添加运算符、编译模型、创建数据加载器以及使用拟合函数或自定义训练程序初始化/训练模型。演讲者还讨论了 FlexFlow 中对 Keras 和 PyTorch 模型的支持,以及通过 ONNX 中间表示导入预先存在的模型的能力。但是,重要的是要确保用于构建 FlexFlow 的库与用于构建 ONNX python 包的库之间的一致性。

  • 00:00:00 在这部分视频中,演示者介绍了 FlexFlow 中的前端支持,特别是 Python API。 FlexFlow 运行时构建在 Legion 运行时之上,Legion 运行时是由斯坦福大学、英伟达和洛斯阿拉莫斯的研究人员开发的基于任务的程序系统。 Python API 通过cffi 库调用C++ API,一层薄薄的Python API 提供与使用C++ API 相同的性能。然后,演示者讨论了使用 FlexFlow Python API 创建模型的步骤,包括首先创建配置文件,然后创建 NCHW 格式的输入张量。此外,它们还引入了对 Keras 和 ONNX 的支持。

  • 00:05:00 在视频的这一部分,演讲者讨论了使用支持 TensorFlow Keras、PyTorch 和 ONNX 的 FlexFlow Python API 创建和训练模型的过程。演讲者首先解释了如何向模型添加运算符,例如卷积 2D 运算符,它始终采用输入张量并返回输出张量。下一步是编译模型,分配张量并优化并行化策略和模型融合。然后,创建数据加载器,并使用拟合函数或自定义训练程序对模型进行初始化和训练。演讲者还强调了 Python 和 C++ API 之间的相似之处,并展示了 FlexFlow 支持的运算符列表,并能够根据要求实施新的运算符。最后,演讲者讨论了 FlexFlow 中对 Keras 和 PyTorch 模型的支持,并为动手练习安排了演示。

  • 00:10:00 在本节中,演讲者讨论将预先存在的模型导入 FlexFlow,特别是通过 ONNX 中间表示。 ONNX 包允许模型从其他深度学习框架导出,例如 PyTorch 或 TensorFlow,并使用相同的文件名导入到 FlexFlow 中。但是,重要的是要确保用于构建 FlexFlow 的库与用于构建 ONNX python 包的库相同。 ONNX 支持仍在进行中,欢迎使用补丁。
 

使用 .NET、PyTorch 和 ONNX 运行时学习机器学习



使用 .NET、PyTorch 和 ONNX 运行时学习机器学习

在这段关于使用 .NET、PyTorch 和 ONNX 运行时学习机器学习的视频中,演讲者介绍了 ONNX 运行时并解释了训练机器学习模型的不同步骤。他们还演示了如何将 ONNX 格式与 .NET 一起用于深度学习,并讨论了理解超参数和优化方法对于准确模型预测的重要性。演讲者还展示了如何使用 ONNX 运行时加载模型和进行预测,以及如何在运行会话时使用 try-block 处理任何潜在错误。此外,他们还讨论了使用不确定向量来显示 AI 在其预测中的不确定性,并提到了一些使用 AI 的行业,例如欺诈检测和推荐系统。

  • 00:00:00 在视频“Learning Machine Learning with .NET, PyTorch and the ONNX Runtime”这部分视频中,主持人介绍了ONNX Runtime以及如何将其与.NET一起用于深度学习。他们解释说,一旦模型被训练好,下一步就是将模型文件带入项目并得到答案。他们使用识别数字的示例,并展示了一个带有卷积神经网络模型的 Py Torch GitHub 存储库。他们还强调了 VS Code 作为 Python 的 IDE 及其内置特性和功能的实用性。

  • 00:05:00 在本节中,演讲者讨论了他们如何使用测试数据来训练他们的机器学习模型,一旦找到调整旋钮的最佳方式,他们就会保存模型并关掉水。他们展示了一个使用数字 0 到 9 的图像训练的模型示例,并解释说输出中有 10 个元素,因为图像只有 0 到 9。他们还强调了损失函数(衡量预测结果与实际结果之间的差异)和准确性(衡量有多少结果正确或不正确)的重要性。演讲者建议选择正确的模型形状、学习率、批量大小和周期等超参数,以及在不同数据集上进行测试是确保机器学习算法达到高精度的必要步骤。

  • 00:10:00 在视频的这一部分,演讲者讨论了 ONNX 格式的使用,该格式被描述为“神经网络的 PDF”。他们演示了 ONNX 文件的创建,然后展示了如何使用 ONNX 运行时在 .NET 应用程序中使用它。解释了推理会话全局变量的使用,以避免每次推理都需要重新加载文件。还强调了了解模型的优化方法和超参数的重要性。最后,讨论了模型之间的大小差异以及这如何影响进行预测的难度。

  • 00:15:00 在本节中,演讲者解释了如何使用 ONNX 运行时加载模型并进行预测,特别是在计算机视觉的背景下。他们演示了使用绘制数字 3 并将其转换为 28 x 28 像素图像的示例,然后创建单个浮点数组并在减去 255 的同时取所有颜色的平均值。演讲者还讨论了 t 张量的使用,一种由 ONNX 运行时使用的数据类型,用于高效地索引到内存中以及规范化图像以实现正确输入的重要性。他们还展示了如何从命名的 ONNX 值创建张量,以及如何在运行会话时使用 try-block 处理任何潜在错误。

  • 00:20:00 在本节中,演讲者将演示使用 PyTorch 和 .NET 使用机器学习识别数字的过程。该系统将数字识别为矩阵,并经过训练以使用优化算法识别特定数字。该系统没有能力说“我不知道”,而是总是会尽力给出答案,即使在不熟悉的输入下它可能是错误的。最终输出是概率向量,然后将其转换为人类可读的格式。

  • 00:25:00 在本节中,演讲者讨论了如何使用不确定向量来显示 AI 在其预测中的不确定性。演讲者指出,只有在这样的不确定数据集中训练过,此功能才可用。然后,演讲者阐明了机器学习中训练和推理阶段之间的区别,以及它们在 ML.NET 中是如何分开的。演讲者还提到 ONNX 格式可用于 .NET 应用程序,并且通常用于神经网络模型等更复杂的数据集。最后,演讲者提到人工智能目前正被用于欺诈检测和推荐系统等各个行业。
 

如何在 ML.NET 中读写 ONNX 模型



如何在 ML.NET 中读写 ONNX 模型

该视频首先介绍了 ONNX——一种由 Microsoft 和 Facebook 创建的开放格式,允许在不同框架之间交换机器学习模型。演示者解释了开源和跨平台机器学习库 ML.NET 如何支持 ONNX 模型。然后视频继续展示如何使用 ONNX 运行时包创建 ML.NET 模型并将其导出到 ONNX 文件中。创建 ONNX 模型后,该视频将介绍如何使用它对 ML.NET 中的新数据进行预测。总体而言,该视频提供了有关如何将 ONNX 模型与 ML.NET 一起用于机器学习应用程序的综合指南。

 

使用 ONNX 将 scikit-learn ML 模型与 ML.NET 集成 - 实用 ML.NET 用户组 02/18/2022



使用 ONNX 将 scikit-learn ML 模型与 ML.NET 集成 - 实用 ML.NET 用户组 02/18/2022

在此视频中,演讲者讨论了使用 ONNX 将 Scikit-learn 机器学习模型与 .NET 生态系统集成。他们使用数字营销领域的领先评分作为如何为客户端系统构建、部署和测试机器学习模型的实际示例。演示者解释了潜在客户评分过程,并强调了构建可最大限度提高营销和销售团队效率的自动化工具的重要性。演讲者讨论了为客户端系统部署机器学习模型的挑战,并介绍了 ONNX 作为解决方案。它们概述了用于使用 ONNX 将 Scikit-learn ML 模型与 ML.NET 集成的工具、包和技术。演讲者演示了如何构建和序列化逻辑回归模型,将其转换为 ONNX 格式,并运行 ONNX 模型,然后再使用 Azure Functions 将其与 .NET 生态系统集成。总体而言,该视频可为希望使用 ONNX 将 Scikit-learn ML 模型与 .NET 生态系统集成的开发人员提供实用指南。

在此实用 ML.NET 用户组会议中,演示者演示了如何使用 ONNX 格式创建可纳入 Dot Net 生态系统的潜在客户评分 ONNX 模型。该实现可以与 ML.NET 并行使用,从而能够在使用 ML.NET 执行机器学习的同时使用 ONNX 运行时执行 ONNX 模型。演示者共享一个 GitHub 存储库,其中包含使用的技术、库和构建 ONNX 模型的分步说明。 ONNX 格式的使用允许跨平台运行时引擎,并有助于弥合数据科学家和应用程序开发人员之间的差距。该会议的价值在于概念验证系统的实际实施,该系统可与其他算法一起使用。

  • 00:00:00 在本节中,演讲者介绍了他们将 Scikit-learn 机器学习模型集成到 .NET 生态系统中的主题,并演示了如何执行此操作的实际示例。他们还讨论了开放神经网络交换格式 (ONNX) 以及它如何帮助在 .NET 生态系统中部署模型。演讲者介绍了他们团队在数字营销领域的线索评分项目,利用他们的业务领域知识开发了一个补充工具,使线索评分过程自动化。他们简要概述了潜在客户评分过程,并强调了构建一个在一天结束时正常运行的系统的重要性。

  • 00:05:00 在本节中,演讲者解释了潜在客户转换的过程以及机器学习在优化潜在客户评分和生成过程中的必要性。演讲者强调了数字营销和销售团队生成的大数据的重要性,以及对数据预先确定的结构化格式的需求。通过使用机器学习,他们可以采用监督方法来检索历史数据并改进潜在客户转换过程。该自动化工具旨在通过从数据中提供洞察力来最大限度地提高营销和销售团队的效率,例如识别最重要的功能并微调营销策略以产生更多潜在客户。该原型涉及从不同来源检索数据,并在应用机器学习模型之前实施传统数据科学技术,例如数据清理、探索性数据分析和数据准备。

  • 00:10:00 在视频的这一部分,演讲者讨论了生成数据洞察力和构建机器学习模型的过程,以及部署这些模型以供客户和公司使用的挑战。他们引入 ONNX(开放式神经网络交换)作为应对此部署挑战的可能解决方案。 ONNX 是一种以图形形式表示模型的文件格式,并且与框架无关,这意味着它可以在不同的机器学习工具和框架之间共享。 ONNX 运行时是一组用于将模型集成到目标环境中的 API,并且是跨平台和高性能的。演讲者提供了 ONNX 网站和 GitHub 的链接以获取更多信息。

  • 00:15:00 在本节中,演讲者讨论了在使用 Python 等数据科学工具开发机器学习模型后将其集成到客户端系统中的挑战。他们建议使用 ONNX 作为模型的统一格式,并演示如何在 .NET 生态系统中导入、读取、构建、部署和测试模型。演讲者还提到了一个公开可用的线索评分数据集,可用于构建数据驱动营销的原型。他们讨论了数据清理、探索性数据分析和监督式机器学习等技术,包括潜在客户评分场景的回归和分类。目标是最大限度地提高营销和销售团队的效率,并通过关注最有潜力的客户来帮助提高绩效。

  • 00:20:00 在视频的这一部分,演讲者概述了他们使用 ONNX 将 scikit-learn ML 模型与 ML.NET 集成所使用的工具和包。他们提到他们正在使用 Anaconda 发行版进行 Python 计算,使用 Jupyter notebook 使用基于 Python 的 scikit-learn 库构建模型,以及使用 .NET 版本 6 和 ONNX 版本 1.9 和 ONNX 运行时版本 181。演讲者简要介绍了数据集他们正在使用和实施的技术来进行数据整理、探索性数据分析和绩效评估指标。他们还提到,他们使用逻辑回归建立了一个准确率超过 82% 的逻辑模型,用于使用 Lipliner 算法进行分类。

  • 00:25:00 在本节中,演示者讨论了构建用于预测潜在客户评分的逻辑回归模型,然后使用 Python 中的 pickle 库将其序列化以将其保存为 pkl 文件的过程。之后,presenter 加载 pkl 文件对模型进行测试,结果显示在测试集上的准确率为 0.76。然后演示者演示了如何将模型从 scikit-learn 转换为 ONNX 格式,这是在 Microsoft.NET 生态系统中部署模型所必需的。本节可以作为实用指南,介绍如何使用 ONNX 将 scikit-learn 机器学习模型与 ML.NET 集成。

  • 00:30:00 在本节中,演讲者讨论了使用 ONNX 将 scikit-learn ML 模型与 ML.NET 集成的过程。他们建议在实施任何机器学习之前检查 ML.NET 的 ONNX 转换器支持的算法列表,并演示如何导入 SK2ONNX 支持的转换器。然后他们定义存储模型的路径和特征数量,强调模式在命名输入中的重要性,并将它们转换为流张量类型。最后,他们展示了如何使用 convert_sklearn 函数、使用模型和先前定义的初始类型来构建 ONNX 模型。

  • 00:35:00 在本节中,演讲者演示了如何以 ONNX 格式保存基于 Python 的 scikit-learn 机器学习模型,以及如何使用 ONNX 运行时的推理会话运行 ONNX 模型。 ONNX 模型的输入名称已识别,签名输出名称与本演示无关。此外,通过predict_proba方法,提取转化或未转化的概率,作为线索评分模型的指标和具体场景权重。

  • 00:40:00 在本节中,演讲者首先在 Visual Studio 2022 中创建一个空白解决方案,用于将 scikit-learn ML 模型(特别是逻辑回归模型)与使用 ONNX 的 .NET 生态系统集成。然后,演讲者在解决方案中创建一个 Azure 函数,并获取样板代码以使用 .NET 6 作为 HTTP 触发器来实现它。他们使用 Insomnia 创建一个具有 JSON 格式输入功能的新请求,该请求将被解析并用于系统集成。演讲者从 NuGet 安装 Microsoft ML ONNX 运行时包,并创建一个类来解释输入功能集。然后演讲者使用代码片段来加速集成过程。

  • 00:45:00 在本节中,演讲者讨论了如何使用 JSON 转换器从 API 检索和反序列化请求正文,以便将其作为输入发送到 ML 模型。他们创建 LSLead Scoring Model 参数类的对象,并将反序列化请求主体中的值分配给它。他们还解释了实现输入张量并将输入数据转换为张量的 TensorFlow 对象的重要性,因此它可以合并到推理会话中。最后,他们使用 ONNX 运行时创建推理会话并检索会话输出以运行 ML 模型。

  • 00:50:00 在本节中,演示者试图展示如何使用 ONNX 将 scikit-learn ML 模型与 ML.NET 集成,但遇到了 Visual Studio 的技术困难。在尝试解决问题后,演示者展示了代码片段并讨论了集成所需的必要包和输入张量。尽管遇到了挫折,演示者还是能够提供指向演示中使用的功能和输入特性集的链接,供观众自行访问和试用。

  • 00:55:00 在本节中,演示者演示了如何使用 ONNX 将 scikit-learn 机器学习模型与 ML.NET 集成。他们首先展示了如何解包预测概率实现的概率输出,并将它们转换为长整数和浮点值字典,表示被转换或不被转换的概率。然后,他们使用这些概率获得转换和未转换的潜在客户得分,并将其显示在 Insomnia 消息中。最后,他们使用 Jupyter notebook 展示了如何将测试集中的一条记录发送到模型,并检索一个对应的输出值,表明该个体很可能被转换。

  • 01:00:00 在本节中,演示者演示了如何使用开放式神经网络交换 (ONNX) 格式创建可以作为另一个框架的一部分实施的潜在客户评分 ONNX 模型。演示者表明这可以使用 TensorFlow、Keras 和 Dot Net 定位框架来完成。演示者还表明,基于生成的 ONNX 模型,他们能够将这种文件格式合并到 Dot Net 生态系统中,并随后构建一个可以运行会话并检索结果的简单解决方案。他们还讨论了如何使用 ONNX 格式实现跨平台运行时引擎,并帮助弥合数据科学家和应用程序开发人员之间的差距。演示者在 GitHub 上共享一个代码存储库,其中包括开始在 Dot Net 生态系统中集成 ONNX 模型所需的笔记本文档和工作区。

  • 01:05:00 在本节中,演示者分享了一个 GitHub 存储库,其中包含使用的技术、库和构建 ONNX 模型的分步说明,其中最重要的部分是 ONNX 和 ONNX 运行时包的合并.演示者还强调该实现可以与 ML.NET 并行使用,从而在使用 ML.NET 执行机器学习的同时使用 ONNX 运行时执行 ONNX 模型。最后,主持人感谢与会者的耐心和时间,并指出会议的价值在于概念验证系统的实际实施,该系统可与其他算法一起使用。
 

使用 ONNX 和 .NET 的机器学习模型 | .NET 大会 2022



使用 ONNX 和 .NET 的机器学习模型 | .NET 大会 2022

来自 .NET Conf 2022 的“使用 ONNX 和 .NET 的机器学习模型”视频向观众介绍了 AI 和机器学习的概念,包括深度学习和传统编程之间的区别。演示者概述了 Azure 机器学习、PyTorch 和 ONNX,并演示了如何使用 Azure 机器学习创建管道以使用 ONNX 和 .NET 训练机器学习模型。他们还解释了如何将机器学习模型集成到 .NET Maui 应用程序中,并讨论了减少移动设备 ONNX 模型大小的技术。本节最后介绍了下一位演讲者 Rory,他将讨论可访问性。

  • 00:00:00 在这部分视频中,Beatriz 和 Henk 介绍了人工智能和机器学习,以及两者之间的区别。他们解释说,机器学习是人工智能的一个子集,能够从数据中学习,而无需使用算法进行明确编程。相反,它会根据提供的数据生成一个模型,然后可以使用该模型进行预测或决策。

  • 00:05:00 在本节中,演讲者解释了机器学习的训练和预测阶段之间的区别。预测阶段的工作方式类似于传统编程,其中模型或算法被赋予输入,产生答案或预测,并能够解决传统编程难以解决的复杂问题。演讲者还谈到了深度学习,它是基于受大脑启发的人工神经网络的机器学习的一个子集。演讲者在视频中展示的演示使用了计算机视觉,这是一个训练计算机解释和理解视觉世界的人工智能领域,包括分类、对象检测和图像分割。最后,演讲者讨论了迁移学习的概念,其中为一项任务训练的模型用作不同任务的起点,从而节省了训练模型的时间。

  • 00:10:00 在本节中,演示者概述了他们将用于机器学习模型的两个框架:PyTorch 和 ONNX。 PyTorch 是演示者喜欢用于此演示的开源深度学习框架,而 ONNX 是一种开放格式,用于表示机器学习模型,使 AI 开发人员能够在各种框架中使用模型。他们解释说,ONNX 允许他们使用 PyTorch 创建他们的模型,然后将其保存在 ONNX 中,从而可以从 .NET MAUI 中读取该模型。他们还介绍了 Azure 机器学习,其中包括一组支持协作机器学习工作负载的云服务,以及它的关键元素:实验、数据存储、环境和模型管理。他们解释说,模型管理是他们故事的关键,因为他们将在 PyTorch 中训练他们的模型并将其注册到模型管理中,以便其他人可以在他们选择的软件中检查和使用它。它们还概述了机器学习管道,这些管道是可以使用数据源、数据集并在计算目标上运行的步骤的工作流。

  • 00:15:00 在本节中,演讲者讨论了如何使用 Azure 机器学习设计器创建管道,以使用 ONNX 和 .NET 训练机器学习模型。第一步是查看存储在 Blob 存储中的数据。接下来,他们使用设计器创建一个新的管道,使他们能够将组件拖放到画布上。他们选择的组件包括 PyTorch 模型、ONNX 转换器和模型训练器。定义组件后,演讲者将在名为 BumbleBee 的 Azure 机器学习计算上运行管道。它们演示了组件定义的特性和训练文件的代码。

  • 00:20:00 在本节中,演示者演示了如何使用 ONNX 和 .NET 创建机器学习模型并将其集成到 .NET Maui 应用程序中。该模型使用 Azure 机器学习与 Python 和 PyTorch 进行训练,并转换为 ONNX 格式。该模型随后在模型管理中注册并在 .NET 应用程序中使用。演示者解释了允许数据科学家使用他们选择的语言和开发人员使用他们的语言构建应用程序的重要性。演示文稿中使用的所有示例代码都可以在提供的链接中找到,也可以在其他资源中找到,以了解有关机器学习和 AI 开发人员角色的更多信息。

  • 00:25:00 在视频的这一部分,演示者讨论了 ONNX 模型的文件大小以及用于使它们更小并在移动设备上更好地工作的技术。他们强调,机器学习有很大的领域致力于减小模型的大小,即使这意味着牺牲一些性能。他们还提到了一个名为 Seeing AI 的项目,该项目在移动应用程序中使用了不同的 AI 模型,并建议观众自己检查一下。最后,主持人介绍 Rory 作为下一位将讨论可访问性的演讲者。
 

在 .NET Live 上 - 使用 ONNX、C# .... 和 Pokemon 操作 ML 模型!



在 .NET Live 上 - 使用 ONNX、C# .... 和 Pokemon 操作 ML 模型!

在此 On.NET Live 视频中,主持人讨论了使用 ONNX 操作机器学习模型,并邀请 Cassie Kozyrkov 作为特邀嘉宾。 Kozyrkov 强调了指导的重要性,并讨论了使用 ONNX 作为弥合数据科学家和软件工程师之间差距的一种方式。对话涵盖了各种主题,从使用自然语言处理创建机器学习模型、数据转换的重要性到使用不可见数据进行测试以及通过 Azure Functions 部署模型。演讲者还讨论了 Azure 机器学习以及那些有兴趣更广泛地探索 ONNX 和机器学习模型的人可用的资源。

On.NET Live 视频讨论了使用 ONNX、C# 和(为了好玩)口袋妖怪来操作 ML 模型。第一位演讲者谈到了 ONNX,一种允许跨不同框架保存和加载模型的机器学习格式,以及如何使用 .NET 操作模型。第二位演示者讨论了使用 ML.NET 创建 Pokemon 图像分类器并展示了如何对其进行操作以进行部署。总体而言,该视频很好地概述了使用 ONNX 和 C# 操作机器学习模型。

  • 00:00:00 在视频的这一部分,主持人介绍了一位特邀嘉宾 Cassie,她将与 Onnx 甚至 Pokémon 讨论机器学习。对话还包括有关即将召开的会议的公告,例如 .NET Conf 和 Start Dev Change,这些会议由 Cassie 和团队举办,旨在帮助人们学习新的开发技能并增强职业转换者的能力。会议涵盖各个技术领域,旨在帮助个人找到他们的热情并追求职业转变。

  • 00:05:00 在本节中,Cassie Kozyrkov 谈到了指导的重要性以及人们参与 Start Dev Change 等举措的必要性,尤其是在人们因大流行而苦苦挣扎的这些时期。然后她讨论了 ONNX,这是一种用于保存机器学习模型并将其部署到不同环境的开放格式。 Cassie 解释说,ONNX 可以更轻松地在数据科学家所做的事情和软件工程师正在做的事情之间架起桥梁,尤其是在部门之间存在脱节的情况下。使用 ONNX,模型可以传递给 DevOps 端,DevOps 端可以以最适合项目的方式部署它,并且可以在不同的应用程序中使用,包括 C#、C++ 和 Python。

  • 00:10:00 在本节中,演讲者描述了使用自然语言处理构建机器学习模型以从葡萄酒描述中获取数据并使用它来预测葡萄酒的品种、积分值和价格范围。他们提到使用来自葡萄酒魔术师的庞大数据库并构建具有不同特征的模型。该模型是使用 Python 创建的,并在 Jupyter Notebooks 中进行了训练。演讲者还解释了如何使用 Pandas 来操作数据,并展示了一个词云来展示数据集中最常见的词。

  • 00:15:00 在本节中,演讲者讨论了机器学习的不同方法以及如何为给定任务选择合适的方法。他们解释了经典机器学习和深度学习之间的区别,深度学习需要更多的层和神经网络。演讲者建议从经典的机器学习库 scikit-learn 开始,并试验不同的算法以了解哪种算法效果最好。他们还讨论了处理文本数据时数据转换和标记化的重要性,以及如何平衡模型准确性和模型大小。

  • 00:20:00 在本节中,演讲者讨论了机器学习在实际训练模型之前所需的数据处理,例如数据清洗和特征提取。他们强调使用看不见的数据进行测试的重要性,并警告不要仅仅依赖准确性,因为将模型应用于实际生产数据时结果可能会有所不同。在进入部署阶段之前,演讲者还演示了如何设置数据管道并使用逻辑回归模型创建机器学习模型。

  • 00:25:00 在本节中,演讲者讨论了所使用的自然语言处理模型及其使用的 CountVectorizer 算法,该算法是 scikit-learn 库的一部分。视频中显示的管道包括 CountVectorizer 和逻辑回归模型。作者解释了如何使用 ONNX 运行时导出模型并将其保存为 ONNX 文件。他们继续讨论了运行时更好的性能,这考虑到了它部署到的硬件,使其具有显着的速度优势。

  • 00:30:00 在本节中,主持人讨论了模型的部署和推理过程。他们提到部署模型涉及考虑针对给定情况的适当体系结构和项目,这可能因使用 Azure 机器学习、容器资源或无服务器产品(如 Azure 功能)而异。模型和代码需要上传到云端,在这种特殊情况下,模型存储在 blob 存储中,然后由函数使用。演示者还谈到了缓存数据以加快推理过程的重要性,并解释了字典和推理会话如何在函数中运行模型。虽然了解数据类型是必要的,但不必了解模型的创建方式即可成功运行它。

  • 00:35:00 没有。在本节中,演讲者讨论了使用 ONNX 操作机器学习模型的过程,以及如何在没有数据科学家帮助的情况下完成这项工作。他们强调理解输入格式和创建张量的重要性,还解释了将模型结果转换为所需格式的过程。演讲者提到需要简化模型输出所需的层,以及如何清理和分桶数据以获得更好的结果。他们还谈到了收集指标和反馈以重新训练模型的可能性。

  • 00:40:00 在本节中,演讲者讨论了测试和理解机器学习模型如何进行预测的重要性。他们提出了创建单元测试并将自动化测试合并到正常开发过程中的想法。此外,他们还提到了 Azure 机器学习中用于模型可解释性的工具,这有助于识别模型预测的潜在问题。最后,他们谈到通过 Visual Studio Code 的扩展在 HTTP 触发器中部署模型。

  • 00:45:00 在本节中,演讲者讨论了一个有趣的品酒游戏,该游戏是使用机器学习创建并部署在 Azure 上的。他们分享了该网站的链接,并讨论了如何使用 Winemag 的侍酒师描述来训练模型,以及他们如何使用 Azure 功能将模型部署到 Azure。他们还讨论了 Azure 机器学习的更广泛用途,包括用于云计算、GPU 加速和模型版本控制的工具,使其成为企业机器学习的理想选择。尽管如此,有时可能仍然不需要部署到端点,而 Azure 机器学习允许这种简单性。

  • 00:50:00 在本节中,演讲者讨论了 Azure 机器学习的各种特性和功能,而不仅仅是创建模型并通过端点使用它。他们重点介绍了实验工作台、模型版本控制和计算,以及允许数据科学家和开发人员在创建和部署机器学习模型时进行协作的 DevOps 插件。他们还提到了该工具不断发展的特性,并建议如果用户有一段时间没有使用它,请重新访问它。演讲者提供了指向他们的 GitHub 存储库和博客文章的链接,供那些有兴趣详细了解如何将 ONNX 与 C# 一起使用并通过 Azure Functions 进行部署的人使用。

  • 00:55:00 在本节中,演讲者讨论了可供有兴趣探索 ONNX 和机器学习模型的人们使用的各种资源。他们建议查看 ONNX 提供的教程和示例笔记本,并在 Github 上探索他们的开源代码。此外,他们还简要讨论了如何使用 Custom Vision 等工具创建计算机视觉模型,而无需大量代码。最后,他们开玩笑说将来会创建一个 Pokemon 检测模型,并建议查看 11 月举行的 .NET Conf,了解更多机器学习公告。
 

机器学习社区站会 - 使用 PyTorch ONNX 进行深度学习



机器学习社区站会 - 使用 PyTorch 和 ONNX 进行深度学习

“机器学习社区站会 - 使用 PyTorch 和 ONNX 进行深度学习”视频涵盖了与机器学习、PyTorch 和 ONNX 相关的各种主题。其中一节介绍了过度拟合以及如何使用 dropout 和交叉验证在神经网络中防止过度拟合。主持人还重点介绍了各种基于社区的机器学习项目,以及他们即将举办的有关将 .NET 与机器学习结合使用的活动。该视频还介绍了 PyTorch,这是一个流行的机器学习库,用于计算机视觉和自然语言处理,具有各种内置模块,例如 torch vision 和 transforms。演讲者解释了用于表示机器学习模型的 ONNX 格式及其用于以多种语言运行推理和训练的运行时。本教程还讨论了如何在 PyTorch 的模型动物园中使用预构建模型,并涵盖了使用 Jupyter Notebooks 和 Anaconda 调试和管理 Python 包和环境。此外,本教程还介绍了使用 ONNX 训练和导出 PyTorch 模型的详细信息,该模型可与 ONNX 运行时一起使用以提高模型的性能。

该视频还讨论了与机器学习和深度学习相关的各种主题。演讲者谈到了在 Xamarin 中使用 SkiaSharp 进行图像处理,以及设备上模型因其大小而受到的限制,但指出了拥有设备上模型的好处。他们还建议学习机器学习理论的各种资源,例如 Andrew Ng Coursera 课程,以及提供有关使用工具和库创建机器学习模型的高级信息的应用机器学习课程。还提到了在学习机器学习和将学习融入工作中时有目标的重要性。最后,演讲者暗示了听众可能感兴趣的即将到来的内容。

  • 00:00:00 在本节中,主持人介绍了他们的嘉宾 Cassie Breviu,他是微软 ONNX 运行时团队的高级项目经理,他将讨论 PyTorch 和 ONNX。他们简要回顾了上一个流的主题,该主题是关于将 .NET 与 PyTorch 等库一起使用。在深入探讨主题之前,主持人介绍了一个新的部分,他们从 dropout 开始讨论机器学习概念。 Dropout 是一种防止神经网络过拟合的方法,它是通过在训练过程中随机丢弃一些节点来实现的。

  • 00:05:00 在这部分视频中,主持人讨论了过度拟合以及使用 dropout 和交叉验证如何帮助解决机器学习模型中的问题。他们提到在训练集上获得 100% 的准确率并不总是一件好事,并且会导致在真实数据上的表现不佳。他们将其类比为考试而学习并记住答案而不理解其背后的概念。然后主持人转到社区链接并提及社区内的几个项目和演示,包括构建无服务器机器学习解决方案、情绪分析应用程序、使用 AutoML 和模型构建器,以及使用 Azure 训练图像分类模型。这些项目旨在帮助用户更高效地构建和部署人工智能解决方案。

  • 00:10:00 在本节中,演讲者介绍了如何使用 Azure 训练图像分类模型的教程,以及使用 ONNX 运行时和对象检测与 YOLO v5 模型的演示。他们还提到了几个即将举行的关于机器学习和 .NET 的活动,包括 Let's Learn .NET Focus on Machine Learning 活动,参与者将在本月晚些时候学习一个学习模块。然后,他们讨论了 Visual Studio 中允许使用类似于 Jupiter 笔记本的笔记本的新功能,以及这如何使用户能够从低代码 UI 逆向工程到编码、机器学习和深度学习。最后,他们表示希望笔记本成为用户指南和示例的标准格式,使用户能够下载笔记本文件来运行代码单元并学习如何使用 API,而不是阅读 wiki 页面或其他降价文件。

  • 00:15:00 在本节中,演讲者讨论了对 Microsoft Learn 和 ML.NET 进行的各种更新和改进。他们提到了可以通过 Web UI 访问的交互式笔记本支持,让那些不知道如何配置 Python 本地环境的人更容易。他们还重点介绍了 Torch Sharp 库,该库允许用户创建自定义神经网络并将它们与 ONNX 运行时紧密集成,从而改善使用深度学习模型的体验。此外,ML.NET 还关注道德和负责任的人工智能,包括名称识别、动态数据输入、输出和时间序列预测等方面的计划。总的来说,演讲者强调了用户反馈的重要性,并鼓励他们提出改进建议。

  • 00:20:00 在视频的这一部分,演讲者讨论了在构建机器学习模型时开发流程可以改变的方式,特别是在使用的不同工具和库方面。他们将传统编程与机器学习进行了比较,解释说对于后者,数据被输入算法以生成模型,然后用于推理。演讲者接着介绍了开源机器学习库 PyTorch 及其各种组件,包括神经网络功能和数据实用程序。他们还涉及其他库,如 TensorFlow 和 scikit-learn,以及 Jupyter notebooks 和 VS Code 等工具。

  • 00:25:00 在本节中,演讲者概述了 PyTorch,这是一种流行的机器学习库,常用于计算机视觉和自然语言处理。该库包括几个模块,例如用于计算机视觉的 torch vision、用于音频数据的 torch audio 和用于自然语言处理的 torch text。由于数据是机器学习的支柱,这些模块还提供预处理功能,例如数据集、数据加载器和转换,为模型训练准备数据。演讲者建议使用 PyTorch 上的交互式教程来了解有关该库及其功能的更多信息。他们还介绍了 ONNX,一种用于表示机器学习模型的开放格式,以及 ONNX 运行时,一种支持多种语言推理和训练的跨平台部署工具。

  • 00:30:00 在这一部分中,演讲者讨论了 ONNX 模型在 Blazor 中的使用,Cassie 承认她还没有尝试过。他们还讨论了如何使用 PyTorch、Scikit-learn 或 TensorFlow 等库将模型转换为 ONNX 格式。使用 ONNX 模型很简单,因为您只需导入 ONNX 运行时库、创建推理会话并传递输入数据以获得结果。困难来自不同语言的数据操作,因为与其他语言相比,Python 在这方面被认为是强大的。演讲者还提到了模型动物园,它具有可用于推理的预建模型,并提供可用的示例代码来提供帮助。

  • 00:35:00 在本节中,演讲者讨论了如何在 PyTorch 的模型动物园中使用预建模型,重点是使用快速 rcnn(一种卷积神经网络 (CNN))进行对象分割。演讲者还简要介绍了使用张量和使用 NumPy 操纵它们,并指出 PyTorch 提供了一个交互式笔记本来学习如何有效地操纵张量。此外,演讲者指出,PyTorch 的数据集是使用“torchvision.datasets”获得的,它是从开源存储库下载的。

  • 00:40:00 在视频的这一部分,演讲者讨论了 PyTorch 的开源性质,允许访问代码和正在使用的不同 blob 存储位置。他们强调了 PyTorch 的文档如何列出所有可以访问的可用数据集,而这些数据集只是不同开源数据集的包装器。演讲者强调了使用开源数据集的法律含义以及可以从源中提取的内容以及不应托管的内容。该视频还讨论了数据集和数据加载器、用于验证的测试数据以及创建自定义数据集。最后,他们简要介绍了变换及其在处理数据以将其转化为张量并通过算法进行处理方面的重要性。

  • 00:45:00 在本节中,演讲者讨论了他用于管理 Python 包和环境的工具。他重点介绍了 Anaconda,这是一个他喜欢的工具,已添加到他的 Windows 终端中,他可以在其中快速激活和使用不同的机器学习库的不同预配置包。他继续展示了他如何在 VS Code 中使用 Jupyter Notebooks,它提供了更多工具、Intellisense,以及使用云计算机运行需要更大 GPU 的模型的能力。最后,他指出,对于那些喜欢 .NET 环境的人来说,Jupiter Notebook 体验可以直接安装,这要归功于运行 Anaconda。

  • 00:50:00 在本节中,演讲者讨论了在 Azure 机器学习工作室中使用 PyTorch 的 Jupyter Notebook 体验,用户可以在其中安装任何必要的包并使用他们喜欢的任何工具。演讲者简要介绍了 Azure 机器学习工作室和 PyTorch 网站上提供的 PyTorch 快速入门指南,然后将讨论转移到 ONNX。在不深入研究的情况下,演讲者简要概述了训练模型所需的模型架构、损失函数和优化器。演讲者还快速提及了 Copilot 及其为用户撰写评论的能力。

  • 00:55:00 在本节中,演讲者解释了如何使用 ONNX 训练和导出 PyTorch 深度学习模型。为了训练模型,用户必须设置 epoch 的数量和验证数据,确保它与测试数据不同,以避免过度拟合。演讲者展示了模型在循环每个批次时在每个时期的损失图,一旦训练完成,模型可以使用向设备发送张量的函数以 ONNX 格式导出。导出的模型可用于使用带有输入张量和优化图优化的 ONNX 运行时来运行推理,以获得更好的性能。演讲者还演示了即将发布的 Xamarin 对 ONNX 运行时的支持。

  • 01:00:00 在本节中,演讲者讨论了在 Xamarin 中使用 SkiaSharp 进行图像处理以及如何使用 ONNX 运行时来处理数据。他们提到了由于尺寸原因使用设备上模型的局限性,但也提到了使用设备上模型的好处。演讲者还简要介绍了 Xamarin 的体系结构及其创建脚手架的方式。讨论结束时提到希望 C# 开发人员与 AI 世界之间进行更多协作,以及任何有机器学习或深度学习问题的人如何在 Twitter 或 ONNX 运行时 Twitter 上联系 Cassidy Williams 寻求答案。

  • 01:05:00 在本节中,主持人讨论了为那些有兴趣学习机器学习理论的人提供的资源。他们建议参加 coursera 课程,例如 Andrew Ng 教授的课程,该课程深入研究深度学习模型的幕后工作原理。他们警告说,有两种接近机器学习的方法:应用方法和理论方法。其他资源包括 coursera 上的应用机器学习课程,它提供了有关使用工具和库创建机器学习模型的高级信息,以及 PyTorch 学习路径,它更深入并涵盖了一些数学知识。此外,主持人还提到了将在未来几周内举办的 ML.Net 黑客马拉松。

  • 01:10:00 在本节中,演讲者讨论了在学习机器学习和深度学习时有目标的重要性。网上有许多免费资源,但要决定从哪里开始可能会让人不知所措。演讲者建议设定一个目标,例如训练计算机视觉模型,并寻找符合该目标的资源。将学习融入工作也很有帮助,例如使用编程马拉松或项目冲刺来尝试新事物。演讲者还提到,重要的是要不断推进困难的部分,并且在目标完成之前不要放弃。最后,演讲者暗示了听众可能感兴趣的即将到来的内容。
 
GitHub - ptiszai/Object-Detection-yolov7-ML.NET-onnx: Yolov7 ONNX model process with NET 7.0 ML.NET
GitHub - ptiszai/Object-Detection-yolov7-ML.NET-onnx: Yolov7 ONNX model process with NET 7.0 ML.NET
  • ptiszai
  • github.com
Windows 10 64-bit NVIDIA Geforce GTX 960 2 Gbyte RAM Microsoft Visual Studio Community 2022 CUDA Toolkit v11.8: c:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\ Installation Nuget Package : - Yolov5Net, Version="1.0.9 - Microsoft.ML.OnnxRuntime.Gpu, Version="1.13.1" - Microsoft.ML.CpuMath, Version="2.0.0" - Emgu.CV Version="4.6.0.5131...
 
GitHub - duonghb53/YoloOnCSharpGPU
GitHub - duonghb53/YoloOnCSharpGPU
  • duonghb53
  • github.com
A state of the art real-time object detection system for C# (Visual Studio). This project has CPU and GPU support, with GPU the detection works much faster. The primary goal of this project is an easy use of yolo, this package is available on nuget and you must only install two packages to start detection. In the background we are use the...