学习ONNX交易 - 页 6

 

使用 ONNX、Triton 和 Seldon 大规模加速 ML 推理 | PyData 全球 2021



使用 ONNX、Triton 和 Seldon 大规模加速 ML 推理 | PyData 全球 2021

在视频“使用 ONNX、Triton 和 Seldon 大规模加速 ML 推理 | PyData Global 2021”中,Seldon Technologies 的 Alejandro Saucedo 讨论了扩展机器学习推理的挑战以及如何使用 ONNX 和 Triton 来优化和生产模型。使用 GPT-2 TensorFlow 模型作为用例,该会话涵盖预处理、选择最佳令牌以及使用 Tempo 和 Triton 推理服务器部署模型。 Saucedo 强调需要抽象基础设施的复杂性并促进轻松部署,同时确保可重复性和合规性。演讲以与开源项目的端到端培训和部署组件合作结束。

  • 00:00:00 在本节中,Alejandro Saucedo 介绍了他自己和他的公司 Seldon Technologies,该公司专注于机器学习部署和监控。他解释说,该会议将涵盖通过采用实用方法并使用 GPT-2 TensorFlow 模型作为用例来大规模加速机器学习推理的挑战。目标是使用 ONNX 优化模型并使用名为 Tempo 的工具在本地对其进行测试,然后再在 Kubernetes 上进行生产。主要重点是抽象底层基础设施的复杂性,以便数据科学从业者可以专注于数据科学方面。 Saucedo 还解释了 GPT-2 是什么及其应用,并指出它是一个相对复杂的模型,需要大量计算来进行训练和推理。

  • 00:05:00 在视频的这一部分,演讲者讨论了预训练模型(特别是 GPT-2)的使用,以及如何将它们用于各种应用程序,例如游戏和代码生成。演讲者解释了如何使用 Hugging Face 库获取预训练的 GPT-2 模型,并讨论了模型的组件,包括用于预处理和推理的分词器和头部模型。然后,演讲者演示了一个使用分词器预处理人类可读句子并使用生成函数预测 20 个分词的示例。最后,演讲者解释了生成函数的基本工作流程,它为模型运行多次推理,以及如何使用分词器的解码器将机器可读的输出转换回人类可读的格式。

  • 00:10:00 在本节中,演讲者解释了为模型选择最佳代币的过程以及从业者在扩展模型时面临的挑战。挑战包括对专用硬件的要求、组件之间的复杂依赖性以及对可再现性和合规性的需求。演讲者随后介绍了业界广泛采用的 ONNX 格式,它允许将 Python 或 PyTorch 模型转换为标准化格式,供优化服务器读取和修改以获得最佳性能。但是,转换为 ONNX 并不是必须的,从业者仍然可以直接部署他们的模型。演讲者还介绍了 Tempo 框架,它简化了部署和扩展模型的过程。

  • 00:15:00 在本节中,演讲者讨论了如何使用 Tempo 和 Triton 推理服务器生产模型。第一步是为 GPT-2 模型定义一个 Tempo 包装器,然后在来自 Nvidia 的优化服务器中运行优化模型。接下来,必须定义自定义转换器逻辑,将机器可读的标记转换为人类可读的字符串,从而使用户能够以简单易行的方式与模型进行交互。在本地 Docker 中测试模型后,可以使用简单的命令将其部署到 Kubernetes 堆栈中。显示了定义包装器的代码,演讲者解释说这种方法允许使用不同类型的模型框架,使其成为生产 ML 推理的多功能工具。

  • 00:20:00 在本节中,演讲者讨论了如何使用带有 ONNX 和 Triton 的 PyTorch 模型创建自定义转换器逻辑。首先,文字记录解释了如何使用字符串转换和预测函数通过此自定义逻辑发送令牌。然后,演讲者解释了如何从 GPT2 模型加载工件并将预测函数定义为 REST 端点,然后再遍历令牌并生成响应。关键要点是,通过在模型中传递令牌并迭代多次运行,我们可以从这个复杂的基础设施中返回一个字符串。此外,演讲者提到这种方法可以通过远程部署功能轻松部署在 Kubernetes 中。

  • 00:25:00 在本节中,演讲者讨论了大规模的机器学习加速,特别关注使用 ONNX 优化 GPT-2 TensorFlow 模型并使用 Docker 与 Triton 一起运行它,然后在遵循最佳实践的同时将其部署在 Kubernetes 中。目标是最大限度地减少底层基础设施的泄漏,并确保以最小的努力进行可靠的部署。演讲者还提到了他们与 Tempo 和 Metaflow 团队的合作,以在开源项目中提供端到端的培训和部署组件。演讲以问答环节结束。
 

AI Show Live - 第 62 集 - 使用 ONNX 运行时进行多平台推理



AI Show Live - 第 62 集 - 使用 ONNX 运行时进行多平台推理

在 AI Show Live 的“Multiplatform Inference with the ONNX Runtime”一集中,主持人展示了如何使用 ONNX Runtime 框架在多个平台上部署超分辨率模型和对象检测模型。他们讨论了移动和网络平台的预处理和后处理步骤,展示了使用单一解决方案的好处,解释了将 PyTorch 模型转换为 ONNX 模型的过程,并展示了如何预处理数据以使用 ONNX 进行推理运行。此外,他们还演示了使用 C# 中的 Onnx Runtime 实现 BERT 自然语言处理模型。代码和开源模型可用于定制用户的解决方案。

在 AI Show Live 的第二部分,演示者涵盖了与使用 ONNX Runtime 运行推理相关的各种主题。他们使用 ONNX 推理示例中的示例演示文本分类的过程,并探索在 C# 中构建 BERT 分类模型所需的包和工具的安装。他们还讨论了 IntelliCode 与 VS 2022 的使用,并介绍了准备模型推理的步骤,包括创建张量、配置 ONNX 运行时推理会话以及对输出进行后处理。此外,他们还谈到了咨询模型文档和选择正确的分词器以获得准确结果的重要性。

  • 00:00:00 在 AI Show Live 的这一部分,主持人 Cassie Breviu 介绍了特邀嘉宾 Victor、Kalia 和 David,他们是 ONNX Runtime 团队的实习生,他们将展示一个关于如何部署超分辨率模型和使用 ONNX Runtime 框架在移动和 Web 上创建对象检测模型。该项目旨在通过超分辨率输出改进图像的对象检测,展示 ONNX Runtime 的多平台部署能力。

  • 00:05:00 在本节中,主持人介绍了一个项目,该项目使用 React Native 和 Expo 构建可跨移动和 Web 不同平台部署的应用程序。他们解释说,使用 React Native 的本机模块功能允许使用其他语言(如 C++ 和 Java)实现功能和模型,这些语言可以在 JavaScript 代码中使用。这个特性使他们能够用不同的语言编写预处理函数,例如用 Java 编写的获取像素函数,以更好地处理数据,从而更容易为他们的机器学习模型获取图像的像素数据。

  • 00:10:00 在 YouTube 视频的这一部分,演讲者讨论了使用超分辨率模型的移动应用程序的预处理和后处理步骤。与使用 RGB 值的其他模型不同,此模型仅适用于图像的亮度 (Y) 分量。因此,演讲者展示了如何将 RGB 图像转换为 YCbCr 图像以提取 Y 分量。演讲者还演示了如何使用 ONNX Runtime 格式将模型加载到移动环境中,该格式为移动和 Web 应用程序提供了优化和缩小的构建。最后,完成后处理步骤以处理模型的输出。

  • 00:15:00 在这部分视频中,主持人和嘉宾演示了从模型中获取数组并将 YCbCr 改回 RGB 的后处理功能。然后他们使用本机模型的函数来获取用于显示的图像源。在使用其他语言操作和推断模型时,非 Python 语言的预处理和后处理往往是困难的部分。他们展示了一个演示,其中模型在本地部署在移动设备上,然后重用代码在 Web 浏览器中部署相同的模型。一位观众询问是否可以在 C# 中完成同样的操作,来宾认为这是可能的。

  • 00:20:00 本节,Kalia 演示了在 Web 平台和移动平台上运行模型的预处理和后处理的差异。网页端通过离屏画布和Canvas API来获取图像数据,而在移动端则无需在API之间来回切换。离屏画布绘制图像后,预处理功能会将图像数据调整到超分辨率模型使用的 y 通道。后处理功能然后将数据从 y cbcr 格式转换为 rgb 格式,以便可以在屏幕上显示。 Kalia 的预处理和后处理功能代码可以在 Java、C# 或 React 中使用。

  • 00:25:00 在视频的这一部分,演示者讨论了为多个设备使用单一解决方案的好处,例如 ONNX 运行时。他们演示了如何在 Web 平台上运行移动模型以及设备上推理的优势,包括成本效率和隐私。演示者还解释了将 PyTorch 模型转换为 ONNX 模型,然后再转换为 ONNX 运行时格式的过程。最后,他们介绍了该项目的对象检测方面,并解释了他们如何使用 ONNX Runtime 检测图像中的对象。

  • 00:30:00 在视频的这一部分中,演示者讨论了他们项目中使用的模型的细节,这是一个利用超分辨率来提高整体检测准确性的对象检测 AI 模型。他们解释了他们的模型与之前讨论的模型在预处理和后处理方面的差异,并详细介绍了他们模型的四个输出,包括位置、类别、分数和检测次数。此外,他们还展示了他们如何利用 Netron 工具分析和分解他们的模型,以及他们如何调整预处理以保持 RGB 值一致,以便模型准确检测物体。

  • 00:35:00 在这一部分中,演示者演示了在照片预超分辨率上运行模型并展示了对象检测的结果,该结果准确地识别了照片中的狗。使用超分辨率模型增强了图像并导致更准确和更小的检测框。这展示了 ONNX 运行时的可移植性和实际使用,并展示了在设备上优化模型上运行模型的能力。代码和开源模型也可供用户访问和定制他们自己的解决方案。

  • 00:40:00 本节看到的是在C#中使用Onnx Runtime的BERT自然语言处理模型的演示。主持人解释说,虽然在 Python 中使用 BERT 的例子很多,但他们更喜欢使用 C#。他们从 BERT base uncased 模型开始,然后转向 Onnx Runtime 文档中的示例进行问答。借助 Hugging Face transformers API,他们能够轻松获取预训练模型并将其导出为 Onnx 格式。然后,他们展示了如何为模型提供输入并使用 C# 中的 Onnx Runtime 运行它。

  • 00:45:00 在本节中,演讲者讨论了模型的预处理步骤,其中文本被标记化。他们展示了如何使用动态轴来允许不同的输入长度,以及他们如何使用分词器来预处理 C sharp 中的输入。他们还介绍了 Boat Tokenizer,这是一个开源项目,允许他们使用 C sharp 对 BERT 模型进行标记化,这对于基于 Python 的 transformers 包是不可能的。编码后的输入随后作为输入 ID 返回,输入 ID 是附加到模型中不同单词的不同标记。

  • 00:50:00 在本节中,演示者讨论了通过创建控制台应用程序在 C# 中实现 BERT 模型。他们解释说,在试验模型的不同 C# 实现时,使用控制台应用程序很有帮助,如果需要,它可以集成到生产应用程序中。演示者演示了如何使用标记化来获取句子的实际标记,以及如何使用与标记关联的 ID 对输入进行编码。它们还展示了使用的大量词汇表以及它们如何转化为用于标记化的对象。

  • 00:55:00 在本节中,演示者将讨论如何预处理数据并为使用 ONNX 运行时进行推理做好准备。他们演示了如何将数据转换为推理过程所需的张量,以及如何创建命名的 ONNX 值对象列表以传递到推理会话中。他们还提到为输入数据设置正确标签的重要性。总的来说,它们为使用 ONNX 运行时和为机器学习推理准备数据提供了有用的提示。

  • 01:00:00 在这一部分中,说话者运行推理值并获得开始和结束的对数。结果按标签索引的顺序返回。要得到预测答案,首先需要得到起始和结束logits的最大值和最大值的索引。显示输出名称,可以看到编码的令牌值,用于比较令牌是否正确。演讲者还演示了将 Python 推理代码转换为 C# 以操作模型的过程。最后,他们建议尝试更多模型,将 Python 推理代码转换为 C#,并对模型进行微调。

  • 01:05:00 在这部分视频中,主持人使用 ONNX 运行时和 ONNX 推理示例中的示例探索文本分类,这是查找如何使用 ONNX 示例的好资源。该示例使用来自 Hugging Face 的分词器和基本封装分词器的更小的精简版本。主机根据模型名称设置路径,然后为模型设置输入,由于句子长度可变,该模型具有动态轴。文本分类模型的输入是输入 id 和注意掩码。主持人提到正在为 ONNX 开发扩展,新版本的运行时支持 .NET 6 和 Maui。虽然模型的前处理例子不是现成的,但楼主打算用Netron来搞定。

  • 01:10:00 总结本节。在这部分视频中,演讲者以信息量较少的方式重命名了之前的模型,并为其添加了文本分类。他们继续使用 C# 和 .NET 6 创建一个新项目,并解释了具有简单脚本控制台模板的新功能。演讲者将上一个项目的一些代码复制并粘贴到新项目中,并添加了 BERT 输入,该输入现在只有两个输出。演讲者承认他们应该为此输入创建一个单独的文件,但选择将其编写出来。

  • 01:15:00 在本节中,演讲者讨论了在 C# 中构建 Burp 分类模型的各种包和工具的安装。他们安装所需的 tokenizer 包和 ONNX 运行时包,以及受管包。不需要的属性包被注释掉,speaker添加一个input sentence和tokenizer得到token进行编码。演讲者还提到了 VS 2022 IntelliCode,它使用 GPT-2 模型在代码库上进行训练并在本地运行。
     
  • 01:20:00 在视频的这一部分,演示者谈到了将 Intellicode(以前称为 Intellisense)与 VS 2022 结合使用,这是一种可以从现有代码库中学习的人工智能工具。然后他们继续使用分词器和句子的编码值。他们还讨论了模型路径以及如何将模型粘贴到控制台应用程序以用于实验目的,尽管对于生产应用程序有更好的方法来处理这个问题。最后,演示者为 BERT 模型创建一个推理会话。

  • 01:25:00 在视频的这一部分,演示者介绍了准备使用 ONNX 运行时运行推理所需的步骤。他们首先创建张量并将它们转换为张量。然后,他们使用输入 ID 和注意掩码以及列表的列表创建输入。在创建命名的 ONNX 值后,他们运行模型并讨论配置 ONNX 运行时推理会话的选项,包括不同的图形优化和执行提供程序。最后,他们检索输出,在本例中它只有一个值。

  • 01:30:00 在这一部分的文字记录中,演讲者正在查看用于将模型与 ONNX 运行时一起使用的代码。他们正在解释他们如何将标签命名为与使用 ONNX 模型相同的标签,以及他们如何运行健全性测试以查看是否一切正常。他们设置一个断点来单步执行代码并检查输入、注意掩码和 ID 是否正确。一旦输入正确,他们就会加载模型,创建张量、会话和推理。然后他们解释说他们需要进行后处理以弄清楚如何将其转回结果,然后他们去找了一些预处理代码。

  • 01:35:00 在视频的这一部分,演讲者讨论了处理从分类模型中获得的两个值以确定给定句子的正面和负面情绪的过程。他们演示了使用分词器对句子进行分词并获取其分词,他们使用这些分词来确认他们对如何在 C# 中执行该过程的理解。他们还提到了咨询模型文档和选择正确的分词器以确保准确分词的重要性。

  • 01:40:00 在本节中,AI Show Live 的主持人讨论了 Hugging Face 的 Optimum 项目,该项目实现了机器学习的优化,包括用于训练的加速器和在后端使用 ONNX 运行时的不同硬件集成。主持人还回顾了分词器的预处理步骤和为文本分类模型创建会话。他们探索一个句子的编码版本,并重用一些以前编写的代码来为他们的模型创建会话。

  • 01:45:00 在本节中,演示者通过导出模型和处理输入数据来准备模型推理。他们通过对编码的令牌执行健全性检查,确认使用了正确的分词器来分词输入数据。然而,他们发现输入掩码丢失,并返回检查模型和代码以查明问题所在。尽管使用的分词器存在不确定性,但他们确认编码的分词是正确的并继续生成输入掩码。

  • 01:55:00 在视频的这一部分中,演示者正在尝试设置运行模型的输入和输出。他们在输入掩码和注意力掩码方面遇到了一些问题,最终意识到他们可以直接获取令牌并将其发送进来,而无需进行任何额外的处理。然后他们将注意力转移到模型输入上,这有点复杂,因为它需要两个输入并且需要指定批次的形状。演示者使用 ONNX 运行时设置输入和输出并对其进行测试以查看它是否产生与 C# 模型相同的结果。
 

使用 ONNX 运行时应用机器学习



使用 ONNX 运行时应用机器学习

Microsoft 首席教育云倡导者 Jennifer Looper 在本视频中讨论了应用程序构建、机器学习和数据科学的融合。她建议为网络构建智能应用程序并探索各种 JavaScript API,包括 ml5.js、Magenta.js、PoseNet 和 Brain.js,以便将机器学习技术整合到应用程序中。 Looper 强调了 scikit-learn 对于经典机器学习的有用性,并推荐它作为一个强大的工具,无需神经网络的繁重解决方案。她还讨论了 Onnx 运行时,它通过定义一组用于构建机器学习和深度学习模型的通用运算符来优化训练和推理,并从 Kaggle 获取数据来解释使用监督式机器学习执行基本分类任务的过程。演讲者随后演示了如何使用机器学习模型构建推荐引擎,并建议访问 Microsoft 的在线资源以了解有关机器学习的更多信息。她得出结论,Onnx Runtime 适合作为课程一部分的初学者或任何想要了解更多机器学习知识的人。

  • 00:00:00 在本节中,Microsoft 的首席教育云倡导者 Jen Looper 讨论了应用程序构建与机器学习和数据科学之间的融合。她解释了当今创建移动应用程序的挑战,特别是面对注入智能并在后台运行机器学习算法的新应用程序。 Looper 认为,这种对智能体验的新需求首先导致了独立应用程序开发人员面临的挑战。

  • 00:05:00 在本节中,演讲者讨论了如何着手构建智能应用程序以及架构决策和技术堆栈将指导此过程的内容。选项包括构建本机应用程序、为 Web 构建或为桌面构建。演讲者建议坚持使用 Web 来构建智能应用程序,并解释说,尽管 Web 开发人员和机器学习工程师之间的技能组合存在差异,但这些领域仍有融合的方法。演讲者举例说明了开发人员和机器学习工程师之间的协作,引用了开发运维、数据采购和清理、培训和迭代的使用,以及确保准确交付和持续改进机器学习模型的 ML Ops 团队。

  • 00:10:00 个人轶事,演讲者解释了弥合机器学习工程和创建网络应用程序方面的分歧如何比克服对桥梁的恐惧更容易令人生畏。演讲者介绍了用于将机器学习技术整合到 Web 应用程序中的各种工具,包括 TensorFlow.js、Brain.js 和 ONNX。她强调了每种工具的优势,并鼓励观众浏览 TensorFlow 网站以发现他们提供的精彩演示。她还专注于 ONNX Runtime 及其将基于 ONNX 的模型引入 Web 应用程序的能力。总的来说,演讲者旨在为应用程序开发人员提供可用工具的知识,以利用机器学习技术增强他们的应用程序。

  • 00:15:00 在视频的这一部分,演讲者讨论了可与预训练模型一起使用的各种 Javascript API,以在浏览器中探索和创建人工智能。其中之一是 ml5.js,它建立在 Tensorflow 之上,并提供有关图像识别和声音分析的示例。提到的另一个 API 是 Magenta.js,它使用预先训练的模型在浏览器中创建音乐和艺术。演讲者还谈到了 PoseNet,它可用于估计整个身体、面部或手部的单个或多个姿势。最后,演讲者介绍了 Brain.js,它允许神经网络在浏览器和 Node.js 上以 Javascript 运行。

  • 00:20:00 在本节中,演讲者讨论了使用 JavaScript 和浏览器训练机器学习模型的局限性,表明它不是用于此目的的理想环境,更适合运行现成的模型或再培训现有的。他们建议,对于更健壮和更合适的机器学习模型,Python 是必经之路,程序员可以学习足够多的 Python 来应对危险,并使用 Jupyter Notebooks 来训练他们的模型。他们还讨论了使用 loeb.ai 等服务对图像和其他媒体进行培训。

  • 00:25:00 在本节中,演讲者讨论了使用 TensorFlow 进行机器学习的替代方法 scikit-learn。演讲者解释说,并非所有机器学习问题都需要神经网络,他们在 GitHub 上创建了一个不使用神经网络的课程。他们还展示了他们如何使用 scikit-learn 创建一个美食推荐应用程序,该应用程序由 ONNX 运行时提供支持,允许用户输入食材并接收他们可以使用这些食材制作的美食类型的建议。演讲者强调了 scikit-learn 对于经典机器学习的实用性,并推荐它作为一个强大的工具,无需神经网络的繁重解决方案。

  • 00:30:00 在视频的这一部分,演讲者介绍了 scikit-learn,这是一种开源机器学习框架,它为分类、回归和聚类等基本机器学习任务提供示例和文档。他们解释说,scikit-learn 是数据科学家中流行的框架,并且每个人都可以使用它,因为它与 numpy、scipy 和 matplotlib 捆绑在一起。演讲者随后讨论了 Onnx Runtime,它是开放式神经网络交换 (Onnx) 的产品,它通过定义一组用于构建机器学习和深度学习模型的通用运算符来优化训练和推理。 Onnx Runtime 支持各种框架、工具和运行时,并使 AI 开发人员能够将他们喜欢的框架与他们选择的推理引擎一起使用。演讲者概述了一个典型的机器学习工作流程,包括使用 Python 清理数据、使用 scikit-learn 训练模型,以及使用 skl 到 Onnx 库将模型转换为与 Onnx Runtime 一起使用。

  • 00:35:00 在视频的这一部分,演讲者从 Kaggle 获取有关不同类型美食的数据,并解释了如何清理和平衡数据。该数据集包含 100 种潜在成分,分为印度、泰国、韩国、日本或中国。要构建模型,演讲者解释说您需要选择一个算法、一个分类器和一个求解器来优化结果。数据集很小,只有大约 700 个数据点。数据被标记,意味着可以使用监督学习,演讲者强调了在塑造和清理数据以用于机器学习应用程序之前理解数据的重要性。

  • 00:40:00 在本节中,演示者讨论了使用监督机器学习和选择多类分类算法执行基本分类任务的过程。由于数据集的性质和本地训练,演示者提供了多类分类备忘单并排除了神经网络。剩下的两个多类分类算法是逻辑回归和决策森林。演示者选择逻辑回归并选择一个与其余的来处理多类分类。然后,演示者解释了选择正确求解器的重要性,并选择了 liblinear 求解器。演示者使用 lr fit 训练模型,并使用含有香菜、洋葱、豌豆、土豆、西红柿和植物油的食谱测试其准确性,报告的准确性为 71%。演示者还提供了 Scikit-learn 算法备忘单,以帮助根据可用的数据量和标签选择合适的算法。

  • 00:45:00 在本节中,演讲者讨论了在构建机器学习模型时选择正确的分类算法的重要性。他们演示了他们如何使用不同的分类器和求解器进行实验,以查看哪种分类器和求解器的准确度最高。选择支持向量分类器 (SVC) 后,他们重建模型并测试其准确性。一旦他们对模型的准确性感到满意,他们就会将其转换为 Onyx 文件并使用 Onyx 运行时来构建 Web 应用程序。演讲者解释了他们如何创建一个带有一系列复选框的简单 Web 应用程序,以将成分数据提供给导入的模型,并使用异步函数启动推理。然后他们演示了网络应用程序并检查了模型的建议。

  • 00:50:00 这部分视频演示了如何使用机器学习模型构建推荐引擎。通过输入成分列表,该模型可以建议人们可以制作哪种美食。此外,演讲者还邀请观众通过 Microsoft 的在线资源了解更多关于机器学习的信息,这些资源提供关于聚类、回归、分类、强化学习、自然语言处理和时间序列应用等各种主题的免费内容。演讲者鼓励观众提出问题并参与 mycommworld.com 网站上的内容。

  • 00:55:00 本节提问 Onnx Runtime 是不是适合新手的好工具。答案是肯定的,因为其中一位演讲者是一位自学成才的 Web 开发人员,他相信只要足够努力,任何人都可以学到任何东西。因此,Onnx Runtime 适合作为课程一部分的初学者或任何想要了解更多机器学习知识的人。
 

以前所未有的方式将 ONNX 的强大功能引入 Spark



以前所未有的方式将 ONNX 的强大功能引入 Spark

在此视频中,来自华为的 Shivan Wang 解释了如何将 ONNX 的强大功能引入 Spark 进行推理。他讨论了在 Spark 上部署 DL 模型的挑战,以及 Spark 社区如何发起名为 Spip 的提案来简化流程。演讲者还讨论了华为的人工智能处理器、Ascent 和包括多个 Ascent 处理器模型和 Atlas 硬件的 Ascent AI 生态系统。他建议在下一个运行时添加 Con 作为新的执行提供者,以直接在 Ascent 硬件上使用 ONNX 模型,而无需模型转换。最后,他提到将 ONNX 的强大功能引入 Spark 的 POC 代码已基本完成,欢迎有兴趣的用户留言讨论,并可能提供资源用于测试目的。

  • 00:00:00 在本节中,华为的 Shivan Wang 讨论了如何将 Onyx 的强大功能引入 Spark 进行推理。他解释说,定义良好的数据框推理接口对数据工程师非常友好,他们可以轻松加载数据并完成特征工程。然而,AI 框架和内部预样本之间存在差距,使得 DL 模型在 Spark 上的部署变得困难。为了简化流程,Spark 社区发起了一项名为 Spip 的提案的讨论,该提案将提供一个简单的 API 来让 Spark 和 AI 影响 small cell 的流程。最后,通过在Spark执行器中执行Onyx推理,用户可以借助Onyx推理平台轻松完成Onyx对大数据的影响。

  • 00:05:00 在本节中,演讲者讨论了华为的AI处理器Ascent和Ascent AI生态系统,其中包括多个Ascent处理器型号和Atlas硬件。 Ascent生态的软件层称为Cam,它提供API帮助开发者快速构建基于Ascent平台服务下的AI应用。要在其他硬件上运行 ONNX 模型,用户必须首先使用 Con 提供的模型转换工具将模型从 ONNX 转换到 Ascent。但是,演讲者建议更好的解决方案是在下一个运行时添加 Con 作为新的执行提供者,这样用户就可以直接在 Ascent 硬件上使用 ONNX 模型,而不需要进行模型翻译。他们计划在今年年底前完成所有 ONNX 运营商支持,并确保 ONNX model Zoo 中的所有模型都能在 Ascent 上正常运行,然后在明年进一步开发。

  • 00:10:00 在本节中,演讲者提到将 ONNX 的强大功能引入 Spark 的 POC 代码已基本完成,并且可以正确运行添加操作等基本操作。他们还邀请感兴趣的用户留言讨论,并可能提供用于测试目的的资源。该部分最后感谢观看者的观看。
 

Builders Build #3 - 使用 ONNX 从 Colab 到生产



Builders Build #3 - 使用 ONNX 从 Colab 到生产

该视频演示了使用 ONNX 将项目从 Colab 部署到生产环境的过程。演示者涵盖了各个方面,例如预处理信号、修改部署代码、在 AWS Lambda 上创建处理程序、在网站上接受音频输入、将函数上传到 S3 以及为 ONNX 部署依赖项。尽管遇到了一些困难,演讲者还是成功地在 AWS 上部署了他们的模型,并建议他们可以使用浏览器加载 base64 文件对象或声音文件读取片段以用于未来的步骤。

此外,该视频还展示了使用 SimCLR 模型在音频中进行对比学习,通过将歌曲输入模型来构建歌曲目录,并使用 PyTorch 对其进行训练以在 k=1 时实现零损失和召回。演示者讨论了在生产中使用 PyTorch 的挑战,并提出了 ONNX 作为解决方案。该视频演示了如何导出和加载 ONNX 格式的 PyTorch 模型并执行推理。它还展示了如何使用 Torch Audio 和 Numpy 库处理音频文件,并在设置 PyTorch 模型进行部署时解决问题。该视频提供了有关如何将模型从 Colab 笔记本中的开发转移到生产环境的见解。

  • 00:00:00 在本节中,演讲者讨论了使用 SimCLR 模型进行视觉表示对比学习的简单框架,该框架涉及从应用于图像的一组不同变换中抽取两个随机变换,从而产生两个不同的图像 (x tilde i 和 x tilde j),然后将其传递到编码器 (resnet 50) 以提供传递给投影函数 (MLP) 的两个向量(hi 和 hj)以返回两个投影(zi 和 zj)。目标是使用对比损失最大化两个投影的余弦相似度来学习 f 和 g,以便模型的两个投影的输出非常接近。扬声器将此框架应用于音频,其中输入不是图像而是转换为频谱图的信号,并使用低通滤波器来改变播放速度作为不同转换之一。

  • 00:05:00 在本节中,演示者讨论了用于模型的 NT_Xent 损失的实现,这是一种交叉熵损失,涉及一对正数和负数对之和。他们还谈到在评估过程中通过使用与训练数据相同的测试数据并使用 k 处的召回率作为指标来进行一些作弊。最后,他们提到他们在一个名为 lightning 的网站上找到了损失函数的实现,并且在对虚拟数据进行测试时效果很好。

  • 00:10:00 在本节中,演讲者解释了他们如何通过将歌曲输入模型来构建歌曲目录,以获得代表每首歌曲的一组向量,然后将这些向量与相应的标题、音频信号和指数表示法。然后,他们通过获取特征和目录索引的点积来计算相似性,对向量进行归一化,并计算 k 处的召回率以确定最佳匹配。他们在 PyTorch 中使用了一个正常的训练循环并添加了 LARS 优化器,这有助于模型收敛到零损失并在 k 等于 1 时实现召回,这意味着它始终如一地预测正确的歌曲。然后,演讲者讨论了在生产中使用 PyTorch 的挑战,并提出了使用 ONNX 的解决方案,ONNX 是一种允许与其他框架无缝集成并部署在不同设备上的格式。

  • 00:15:00 在本节中,演讲者讨论了 ONNX 的使用,ONNX 是一种轻量级推理框架,允许从 PyTorch 和 TensorFlow 等其他框架导入模型以在云中托管。演讲者打算构建一个 python 处理程序函数,该函数将利用 ONNX 对音频数据进行推理,从音频中获取频谱图,在频谱图上运行模型并返回带有预测的 JSON 对象。演讲者指出,要使用 ONNX,模型需要保存为 .onnx 文件扩展名,并解释了将模型从 PyTorch 导出到 ONNX 的过程。

  • 00:20:00 在本节中,演讲者解释了如何使用 torch.one 和 x.export 函数将模型从 PyTorch 导出为 ONNX 格式。虚拟输入允许 ONNX 格式理解输入文件的预期形状,并使用字典或 JSON 对象指定输出和输入名称。演讲者提供了一个使用当前时间戳导出名为 simclr 的模型的示例,使用导出参数将训练参数权重存储在模型文件中,并展示了如何添加 lambda 函数来检索模型的时间戳。

  • 00:25:00 开始一个新的部分,视频创作者探索如何使用 ONNX 在模型上加载和运行推理。他们讨论了创建推理会话并从模型路径加载模型。创建者计划将模型合并到 API 中,但不确定如何在处理程序中获取音频。他们考虑使用 base 64 的东西并创建一个新文件来测试它。然后他们继续讨论如何在不加载模型的情况下运行推理,并决定专注于此。

  • 00:30:00 在本节中,演讲者讨论了修改代码以使用 torch 音频而不是使用 numpy 数组。演讲者发现他们可以使用手电筒音频并安装它以继续前进。然后他们讨论修改输入和输出名称并将输出称为“投影”以针对他们的库进行余弦相似度计算。该库被设置为一个 JSON 对象,其中包含一个标题数组、一个波形数组和一个演讲者打算在其余弦相似度计算中使用的投影数组。

  • 00:35:00 在这一部分中,可以看到演讲者正在编写代码并大声解释该过程。他们编写了一个脚本来对音乐库中的歌曲列表进行排序,并在此过程中讨论了各种技术,例如矩阵乘法、相似性和排序算法。演讲者还加载了一个 JSON 库并在脚本中使用它。该视频是使用 ONNX 框架从协作到生产构建软件系列的一部分。

  • 00:40:00 在本节中,演示者演示了如何使用 ONNX 以 JSON 格式生成和保存目录。目录是从数组创建的,演示者在使用 dump() 函数将目录转储为 JSON 文件之前检查形状。随后的错误通过将“目录”更改为“库”的副本来解决。然后演示者使用 `tolist()` 方法将数组转换为列表并下载 JSON 文件。最后,演示者展示了如何使用 `load()` 函数加载保存的 JSON 文件。

  • 00:45:00 在本节中,演讲者讨论了他们使用 Python 中的 Torch Audio 和 Numpy 库处理来自文件路径的音频文件的方法。他们解释说,他们已经下载了 Torch Audio,并将使用其“预处理信号”方法对音频文件进行重新采样和预处理。然后,他们使用 Numpy 的 mean 函数计算已处理信号的平均值,同时保持维度,然后使用 np.pad 填充信号。总的来说,演讲者对他们的处理方法提供了清晰简洁的解释。

  • 00:50:00 在视频的这一部分中,演讲者正在尝试使用函数获取波形的频谱图。但是,该函数似乎存在一些问题,无法识别目标采样率并导致出现错误消息。扬声器尝试使用测试剪辑进行故障排除并打印频谱图的形状,这会返回意外输出。目前尚不清楚究竟是什么导致了这些问题,无论是输入问题还是模型问题。

  • 00:55:00 在本节中,演讲者评估了在尝试设置用于部署的 PyTorch 模型时出现的一些错误消息,并确定了 Torch 包大小和不兼容依赖项的问题。他们指出,使用 Torch Audio 加载的文件将自身指定为需要超过 1GB 的内存,这可能会导致在运行具有大文件输入的模型时出现问题。为了解决这个问题,他们建议使用 librosa 加载文件,并在转换频率和加载文件等规范时替换 Torch Audio。总体而言,本节着重强调将模型从 Colab 笔记本中的开发过渡到生产环境中的部署时可能出现的一些问题。

  • 01:00:00 在本节中,演讲者安装了 Torch 和 Torch 音频以继续构建项目,该项目仍然很小,不到 500 兆字节。他们使用 Librosa 和重新采样来确保信号以原始采样率和目标采样率返回。他们在运行脚本时遇到一些错误,意识到他们需要混合不同的通道以确保结果不奇怪。他们继续进行故障排除以确保项目按预期工作。

  • 01:05:00 在这一部分,演讲者正在进行信号预处理和加载不同的频道。他们遇到信号只有一个通道的问题,他们需要多次扩展它。演讲者使用 numpy 和 squeeze expand dims 来解决问题,最终提交更改。

  • 01:10:00 在本节中,演讲者正在修改代码以允许部署 SpeakFluent REST API,这是一个处理请求然后运行推理的函数。他们修改处理程序以获取具有音频文件和文件名的请求,然后将文件保存在本地。他们在没有 Torch 的情况下使用 ONNX 运行时运行推理,然后返回最佳匹配。

  • 01:15:00 在本节中,演讲者讨论了应用程序的源 Python 处理程序,它当前返回一组歌曲标题及其对应的最佳匹配标题。演讲者还提到了未来对处理程序的添加,其中包括返回 S3 存储桶的 URI 和最佳匹配的匹配百分比。演讲者计划休息一下,然后返回构建一个可以上传并部署到 AWS Lambda 函数的实际处理程序。

  • 01:25:00 在视频的这一部分,演示者解释了如何使用脚本和事件在 AWS Lambda 上创建处理程序。 Lambda 处理程序旨在接收事件而不是请求,并且它将从事件中接收表单的音频部分。演示者解释说,该过程涉及在前端创建表单并从音频输入中获取 ID。

  • 01:30:00 在视频的这一部分,开发人员讨论了使用 Javascript 在网站上接受音频输入并将文件上传到服务器进行处理的过程。开发人员解释说,他们将在网站上添加一个录制按钮,并使用 Javascript 创建一个文件并自动将其上传到服务器。然后,他们讨论了对上传文件的调用推理,并使用 JSON.dumps 返回 200 状态代码和正文。开发人员还考虑使用 base64 编码的音频而不是文件以提高效率。他们探索了使用 Lambda 运行时在 AWS 中使用 Python 运行 ONNX 推理的过程。

  • 01:35:00 在本节中,演讲者讨论了将函数上传到 S3 并为名为 Diva 的项目从头开始创建新函数的过程。演讲者对该过程表示不满,但继续使用 Python 3.9 创建一个新函数,讨论 ARM 中的差异,并考虑将文件直接上传到该函数。

  • 01:40:00 在本节中,演讲者探索了 Cloud Functions 仪表板并演示了如何上传 zip 文件、将事件格式更改为 JSON 以及创建新事件。他们还讨论了对内存和环境变量进行额外配置的必要性。然后,演讲者尝试添加带有 base64 音频的录音,但遇到了可用选项的问题。

  • 01:45:00 在这一部分中,演讲者似乎在复制和粘贴一个大的 JSON 文件并将其保存为 AWS Lambda 部署包。他们提到想要使用不同的方法,但最终将其删除并决定改用 Lambda 处理程序。但是,他们需要安装一些东西,并想办法将包上传到 AWS。他们还讨论了导出功能。

  • 01:50:00 在本节中,演讲者讨论了为开源模型管理项目 ONNX 编译和部署必要依赖项的步骤。他们解释说,在与 Lambda 类似的环境中进行编译以避免兼容性问题很重要,并建议找到 ONNX 运行时文件夹并将其复制到部署包中。虽然这个过程可以被认为是“令人讨厌的”,但演讲者解释说,有必要确保代码能够正常工作。然后他们列出了必要的依赖项,包括 librosa、scipy 和 numpy,并讨论了部署包的大小,最大可达 200 兆字节。

  • 01:55:00 在本节中,演讲者讨论了他们使用 AWS 部署模型所需采取的步骤。他们需要创建一个轻量级的 Lambda 处理程序,弄清楚如何使用 AWS limitout 部署它,并决定是否将它存储在 S3 中,因为它大于 50 兆字节。下一步是更新处理函数以获取 base64 音频对象而不是文件,演讲者考虑使用浏览器加载 base64 文件对象或声音文件读取片段来实现这一点。他们最后说他们认为他们可以做到这一点。
 

结合 Optimum、OpenVINO™、ONNX Runtime 和 Azure 的强大功能



结合 Optimum、OpenVINO™、ONNX Runtime 和 Azure 的强大功能

该视频展示了 Optimum、OpenVINO、ONNX Runtime 和 Azure 的组合,以简化开发人员的工作流程并提高模型的准确性和速度。演讲者演示了如何使用辅助函数、ONNX Runtime 和 OpenVINO Execution Provider 来优化深度学习模型。他们还展示了如何使用神经网络压缩框架中的量化来优化拥抱面部模型,并说明了使用 Azure ML、Optimum、ONNX Runtime 和 OpenVINO 的训练和推理过程。该演示突出了这些工具在提高模型性能同时最大限度地减少准确性损失方面的强大功能。

  • 00:00:00 在视频的这一部分,Cassie 与英特尔代表讨论了 OpenVINO 工具套件和 Onyx 运行时。 OpenVINO 工具套件使用专为英特尔硬件设计的高级优化技术来提升深度学习模型的性能。通过 Onyx 运行时库和对即时会话代码行的简单修改,开发人员可以使用英特尔的 OpenVINO 执行提供程序来加速 Onyx 模型的推理。视频中的演示展示了 YOLO V7(一种流行的深度学习模型)在英特尔 CPU 上的加速性能。

  • 00:05:00 在视频的这一部分,演讲者讨论了演示中用于执行预处理、为特定标签分配颜色值以及读取和重新处理图像的各种辅助函数。该演示利用 ONNX Runtime 创建推理会话并运行推理任务,并使用 OpenVINO Execution Provider 加速 Intel CPU 上的深度学习模型。通过对代码行进行简单修改来简化该过程,这涉及安装 ONNX 和 OpenVINO 库、导入 ONNX Runtime 库以及设置 OpenVINO 提供程序。演讲者还简要介绍了 ONNX 模型如何转换为内存中图形表示并进入 Graph Practitioner 进行后端查询的架构概述。

  • 00:10:00 在本节中,演讲者讨论了如何在神经网络压缩框架中使用量化来优化抱脸模型。他们通过代码示例展示了如何使用 Optimum Intel 和 OV Config 在训练期间启用量化。他们还展示了一个集成了数据准备、模型训练、推理、部署和自动化的 AI 工作流程,以帮助开发人员和客户更高效地执行复杂的活动。演讲者演示了如何使用 Azure ML 来支持这些工作流以获得更好的性能。

  • 00:15:00 在视频的这一部分,演讲者讨论了使用 Azure ML、Optimum、ONNX Runtime 和 OpenVINO 进行训练和推理的过程。他们首先讨论用于训练管道的文件和脚本,以及如何将作业提交到 Azure ML。然后他们继续讨论推理脚本以及它如何利用 ONNX 运行时和 OpenVINO 执行提供程序。演讲者提供了模型量化和训练的 F1 分数结果的详细信息,证明在此过程中只有轻微的准确性损失。总体而言,本节详细概述了使用这些技术进行训练和推理的过程。

  • 00:20:00 在本节中,演讲者通过展示 fp32 原始模型和已通过 Netron 可视化的 int 8 优化模型来演示量化过程的工作原理。他们还讨论了如何利用 Azure ML 和 OpenVINO 来提高训练和推理过程中的准确性和性能。他们提到使用 ONNX Runtime 进一步优化和提高性能,并鼓励观众查看代码和博客文章以获取更多信息。总体而言,该演示展示了组合多种工具以简化开发人员的工作流程并提高其模型的准确性和速度的强大功能。
 

ONNX 模型的更快推理 |面向开发人员的边缘创新系列 |英特尔软件



ONNX 模型的更快推理 |面向开发人员的边缘创新系列 |英特尔软件

本视频讨论了 ONNX 运行时的 OpenVINO 执行提供程序。它是一个跨平台机器学习模型加速器,允许在一系列英特尔计算设备上部署深度学习模型。通过使用针对英特尔硬件优化的 OpenVINO 工具包,并在代码中将提供程序设置为 OpenVINO Execution Provider,开发人员可以使用高级优化技术加速 ONNX 模型的推理。该视频强调了使用所讨论的工具所需的修改的简单性。

 

使用 ONNX 运行时从云端到客户端进行更快、更轻的模型推理



使用 ONNX 运行时从云端到客户端进行更快、更轻的模型推理

在此视频中,来自 Microsoft 云和 AI 组的 Emma 解释了开放式神经网络交换 (ONNX) 和 ONNX 运行时,这是一种用于在不同硬件上推理 ONNX 模型的高性能引擎。 Emma 讨论了 ONNX 运行时 INT8 量化可以提供的显着性能提升和模型大小减少,以及准确性的重要性。她演示了 ONNX 运行时 INT8 量化的端到端工作流程,并展示了使用 PyTorch 量化的基线模型的结果。此外,Emma 还讨论了 ONNX Runtime 优化从云到客户端的模型推理的能力,以及它如何在默认情况下在 Android 和 iOS 平台上实现小于 300 KB 的大小。

  • 00:00:00 在本节中,Microsoft 云和 AI 组 AI 框架团队的高级项目经理 Emma 解释了 ONNX 和 ONNX 运行时在 AI 软件堆栈中的作用。 ONNX 代表开放神经网络交换,是一种用于表示传统机器学习模型和深度学习神经网络的标准格式。 ONNX Runtime 是一个高性能引擎,用于在不同硬件上推理 ONNX 模型。 ONNX 转换器和 ONNX 运行时是运行 ONNX 模型的工作流程中的主要部分,可以使用 ONNX 转换器工具从任何框架打开该模型。有许多支持 ONNX 的流行框架,包括 PyTorch、TensorFlow 和 Caffe。

  • 00:05:00 在本节中,讨论了 ONNX Runtime 的优势和功能。 ONNX Runtime 是一种用于 ONNX 模型的高性能推理引擎,它为各种语言提供 API,并为 CPU、GPU 和 VPU 提供硬件加速。 ONNX Runtime 也是开放和可扩展的,可以轻松优化和加速机器学习推理。它已经集成到多个内部和外部平台,并为许多旗舰产品提供动力。 ONNX 运行时的最新和最令人兴奋的功能之一是 CPU 的 INT8 量化,它用较低的位近似浮点数,减少模型大小内存,并提高性能。各种模型和硬件的基准测试结果显示使用 ONNX Runtime 可显着加快速度。

  • 00:10:00 在本节中,演讲者讨论了 ONNX 运行时 INT8 量化的显着性能提升,它可以在大型机器上将推理性能提高三倍,在小型机器上提高约 60%,并减少模型大小几乎增加了四倍。演讲者还强调了准确性的重要性,并提供了一个示例,说明 ONNX Runtime 量化模型如何在常见的 NLP 任务中保持与 FP32 模型相似的准确性。然后演讲者演示了ONNX Runtime INT8量化的端到端工作流程,包括将模型转换为ONNX格式,使用量化工具获得INT8模型,然后在ONNX Runtime中进行推理。最后,演讲者展示了使用 PyTorch 量化的基线模型的结果,并使用来自 Hugging Face 的 Tokenize 和评估函数评估了性能。

  • 00:15:00 在本节中,演讲者讨论了用于优化模型性能和大小的 ONNX 运行时量化过程。该过程涉及量化前的优化步骤,这仅对变压器模型是必需的。优化后,可以使用 ONNX Runtime 的量化 API 将模型量化为 8 位格式,从而使模型尺寸小得多。性能和准确性结果表明,ONNX Runtime 量化在 F1 分数方面优于 PyTorch 量化。 ONNX Runtime 的另一个令人兴奋的功能是能够最大限度地减少智能手机和边缘设备上设备上推理的运行时大小。

  • 00:20:00 在本节中,讨论了 ONNX 运行时优化从云到客户端的模型推理的能力。 ONNX Runtime mobile 启用了两项主要技术:引入称为 ONNX Runtime 格式的新优化格式,以及使用预定义模型仅需要的运算符构建 ONNX Runtime 以减少运行时的大小。这通过摆脱未使用的运算符显着减少了运行时大小,使其更适合自己的设备推理并满足内存要求。核心 ONNX Runtime 移动包在 Android 和 iOS 平台上默认可以达到小于 300 KB 的大小。 ONNX Runtime 是一个开源项目,其 GitHub 存储库上提供了教程和示例。
 

具有 ONNX 转换和量化的快速 T5 变压器模型 CPU 推理



具有 ONNX 转换和量化的快速 T5 变压器模型 CPU 推理

通过将 T5 transformer 模型转换为 ONNX 并实施量化,可以将模型大小减小 3 倍,并将推理速度提高多达 5 倍。这对于在具有亚秒级延迟的 CPU 上部署问题生成模型(例如 T5)特别有用。此外,Gradio 应用程序为模型提供了一个视觉上吸引人的界面。使用了 Huggingface 的 T5 transformer 模型,并使用 FastT5 库进行 ONNX 和量化。实施这些优化可以显着节省这些系统的生产部署成本。

  • 00:00 介绍和议程

  • 01:07 从拥抱面安装变形金刚库

  • 02:18 下载 抱脸模型

  • 02:40 生成问题的示例

  • 04:00 在 GUI 中部署 Gradio 应用程序

  • 08:11 将 T5 Pytorch 转换为 ONNX 并使用 FastT5 进行量化

  • 17:22 将模型存入驱动器

  • 18:30 使用新模型运行 Gradio App

  • 21:55 未来情节和结论
 

Azure AI 和 ONNX 运行时



Azure AI 和 ONNX 运行时

本书涵盖了机器学习及其部署的各个方面。它讨论了数据科学的发展、框架兼容性的挑战、使用 Azure AI 和 ONNX Runtime 进行模型部署、ML 环境的创建以及 ONNX Runtime 的局限性。演讲者强调了 ONNX 的标准化及其对多种框架的支持,使其更容易针对不同的硬件进行优化。该视频还提到缺乏硬件偏好基准以及需要使用多种工具来克服 ONNX 的局限性。

  • 00:00:00 在文字记录的这一部分,演讲者讨论了数据科学的演变以及它如何从实验室工作的科学转变为相互关联的世界。演讲者分享了他使用物联网系统的经验,以及它们如何从手工创建发展到使用云服务。演讲者还强调了能够在不允许使用云服务的环境中工作的重要性,以及在这些情况下如何需要专业公司。最后,演讲者解决了必须更改框架或云提供商的挑战,并解释了为什么客户经常更换提供商而不是更改框架。

  • 00:05:00 在这一部分,演讲者谈到了不同人工智能框架之间的兼容性问题以及它如何影响业务。他以银行为例解释说,如果一家公司在一个 AI 框架上构建了系统,但随后一位新客户想使用不同的框架,那么该公司将不得不从头开始完全重建系统,从而使他们付出代价时间和金钱。然后他讨论了 Onex 运行时,它允许企业将其现有框架和模型转换为兼容格式,而无需完全重建。演讲者还提到了可用于分析和优化这些转换模型的工具。

  • 00:10:00 在本节中,演讲者解释了如何使用 Azure AI 和 ONNX 运行时轻松跨不同平台部署机器学习模型。通过为其平台和语言选择适当的选项,企业可以使用该软件加载其神经网络的 0 和 1 序列,并利用他们选择的平台和语言导出系统以便于部署。该会议还介绍了如何使用 Onex 优化整个开发过程中的培训,从而更快、更准确地获得结果。演讲者还介绍了英特尔 serrandello 的 GPU 和 CPU 自动优化系统,使模型开发更加精简。

  • 00:15:00 在本节中,演讲者讨论了他们的 ML 环境的创建以及基于萼片和花瓣的长度和宽度的植物物种分类器的开发。演讲者指出,过去创建 ML 环境需要购买服务器集群并手动配置所有内容,但现在他们无需硬件即可创建自己的 ML 环境并启动自己的工作室。他们的 ML 环境包括一个普通的虚拟机和用于保存 TensorFlow 模型的 ONNX。然后,演讲者演示了如何创建一个简单的神经网络来根据给定的参数对植物物种进行分类。

  • 00:20:00 在本节中,演讲者展示了如何加载保存的 ONNX 模型并对其运行预测。她导入 Tensorflow 框架,加载 ONNX 模型,并为输入值分配一个唯一的输入名称。然后,她创建了一个链接字段来生成随机输入值来执行 ONNX 表达式。最后,她运行调用并获取从预测中获得的输出值的类别。之前创建的 ONNX 模型是一个单一的文件,不需要文档,因此开发人员更容易使用它。

  • 00:25:00 在本节中,演讲者解释了 Azure AI 和 ONNX 运行时如何轻松地将机器学习模型集成到各种应用程序中。使用 Azure AI,客户只需要用他们喜欢的语言创建模型,然后他们就可以使用 Azure AI 加载模型并创建必要的输入数据来调用模型。然后可以使用 ONNX Runtime 将模型集成到不同的应用程序中,例如 Xamarin、Android 或 Mac,而不管底层平台是什么。这使得在各种设备和平台上轻松集成机器学习模型成为可能。演讲者还指出,ONNX Runtime 针对各种处理器进行了优化,包括用于移动设备的处理器。

  • 00:30:00 在本节中,演讲者解释说 ONNX 已成为机器学习模型的事实标准,因为它支持所有主要框架并得到许多公司的支持。这种标准化允许更轻松地针对不同的硬件进行优化,而无需像过去那样进行手动优化。此外,ONNX 不仅限于神经网络,还可以用于其他算法。演讲者还指出,ONNX 支持跨不同平台的相同数学函数和运算,只要支持的 opsets 匹配,就可以跨不同硬件和平台进行无缝部署。

  • 00:35:00 在本节中,演讲者讨论了 ONNX 运行时在性能方面的局限性。虽然 ONNX 是一款适用于一般用例的出色工具,但它并没有充分利用硬件的潜力。这是 ONNX 之外的其他工具(例如 pytorch)可能更有益的地方。但是,如果一个人的重点是导出模型,ONNX 可以完全替代其他工具。此外,演讲者解释说,ONNX 不像多机渲染那样处理机器对机器的通信。演讲者建议结合使用其他工具和 ONNX 来克服这些限制。

  • 00:40:00 在本节中,演讲者讨论了硬件偏好基准的缺失,并强调大多数基准都可以在硬件制造商的网站上找到。他们还注意到,许多公司现在为硬件写作,而不是相反。演讲者随后提到了最常用的加速平台,包括 Core ml、ONNX Runtime 和 RT。他们提到如何加速培训阶段,一旦完成,就更容易向客户销售。发言者表示,未来几年几乎没有什么变化,至强和类似项目将继续占据主导地位。