外汇少了个成交量的维度,机器学习等同于少了个特征。
现在ONNX技术上让MT5可以做机器学习了,但是有没有专门针对外汇这一领域的机器学习策略资料?
关于 ONNX 你想知道的一切
ONNX 格式旨在通过提供一种允许将模型从一个框架导出到另一个框架的可移植文件格式,来解决深度学习环境中分散的工具和框架集所带来的挑战。它高度透明且文档齐全,标准化了深度学习领域中使用的语法、语义和约定,同时支持深度学习和传统机器学习模型。 ONNX 支持跨不同硬件环境的互操作性、效率和优化,无需手动优化或转换。该视频展示了使用 ONNX 特定转换器将经过训练的模型从 scikit-learn 转换为 ONNX 格式的基本演示,并演示了如何在反应用例中执行最终推理,其中训练是使用 PI torch 完成的,推理是在张量流。
网络研讨会最后演示了如何使用“ONNX TF 后端”的“准备”功能将 ONNX 模型转换为 TensorFlow 格式并将输出保存为“.pb”文件。演讲者指出,TensorFlow 模型随后可用于推理,而无需参考 ONNX。感谢听众,演讲者宣布即将在 The New Stack 上发布有关 ONNX 的文章,以及即将举行的另一场关于 Microsoft 分布式应用程序运行时的网络研讨会。与会者的反馈是积极的。
- 00:00:00 如果您因工具和框架的碎片化和分布式集而难以应对机器学习和深度学习的复杂性,ONNX 可能正是您需要的解决方案。在网络研讨会的一部分中,演讲者解释了深度学习环境当前面临的挑战以及 ONNX 如何应对这些挑战。假设对机器学习和深度学习有一般的了解,讨论提供了 ONNX 和 ONNX 运行时提供的承诺的详细概述。在本节结束时,向观众介绍了机器智能与现代基础设施融合的理念,这是整个网络研讨会系列中反复出现的主题。
- 00:05:00 在本节中,演讲者讨论了深度学习的挑战,尤其是在训练和生产方面。在训练方面,使用一套零散的框架和工具包并不容易,而在使用 GPU 加速训练时,基础设施必不可少。而且,不仅是硬件,还有软件,比如NVIDIA GPU的CUDA和KuDNN,Intel的FPGA的oneDNN。在生产端,训练好的模型需要针对目标环境进行优化,以提供高精度和低延迟,这需要转换数据类型并使用 TensorRT 等工具。因此,深度学习需要了解硬件和软件层并优化模型以提供所需的性能。
- 00:10:00 在本节中,演讲者讨论了有效优化和部署 AI 模型所需的各种工具、框架和硬件环境。演讲者强调了模型优化和量化的必要性,尤其是 CPU,并提到了流行的工具包,例如 Nvidia T4 和英特尔的 OpenVINO 工具包。演讲者进一步解释说,不同的硬件环境需要不同的工具包,例如用于工业自动化和物联网用例的 Nvidia Jetson 系列,用于视觉计算的英特尔视觉处理单元,以及用于边缘的谷歌 Edge TPU。 AI 模型的优化和部署过程是一个复杂而连续的过程,涉及检测漂移、再训练、优化、部署和缩放模型。演讲者强调了拥有一个有效处理整个闭环机制的管道的重要性。
- 00:15:00 在本节中,演讲者介绍了 ONNX 作为开放式神经网络交换,充当不同框架和目标环境之间的中介,促进效率、优化和互操作性。 ONNX 支持深度学习和传统机器学习模型,并支持将模型从一个框架导出和导入到另一个框架。此外,ONNX 支持多样化的硬件环境,无需手动优化或转换。演讲者指出,自 2017 年与创始成员 AWS、微软和 Facebook 一起成立以来,ONNX 在英伟达、英特尔、IBM、高通、华为、百度等公司的贡献下取得了显着发展,在公共云平台内积极推动这一生态系统,工具包和运行时。为了响应其他框架和工具包的进步,ONNX 经历了重大转变,使其变得紧凑、跨平台并紧跟最新发展。
- 00:20:00 在本节中,演讲者讨论了 ONNX,这是一种便携式文件格式,允许将在一个框架或工具包中训练的模型导出到另一个框架或工具包中。 ONNX 深受 JVM 和 CLR 等可移植运行时的启发,并提供了一定程度的抽象和与更高级别工具包的解耦。它是一种高度透明且有据可查的格式,可标准化深度学习领域中使用的句法、语义和约定。 ONNX ML 也是一个支持传统机器学习的扩展。当一个模型导出为 ONNX 时,它就变成了代表整个模型的多个计算节点的图形。
- 00:25:00 在本节中,演讲者解释了 ONNX 中图形中计算节点的结构。每个节点都是独立的,包含一个执行实际计算的运算符,以及输入数据和参数。输入数据可以是由各种数据类型组成的张量,由运算符处理以发出发送到下一个计算节点的输出。演讲者还指出,运算符在 ONNX 中必不可少,因为它们将 ONNX 运算符类型映射到更高级别的框架或工具包,从而可以轻松解释模型并将高级图形结构映射到 ONNX 中可用的实际运算符。
- 00:30:00 在本节中,视频讨论了自定义运算符以及如何在 ONNX 中定义它们。自定义运算符对于创建自己的激活函数或可用 ONNX 运算符中未包含的技术的高级用户很有用。然后可以使用自定义运算符将模型从框架级别导出到 ONNX。然后,该视频展示了使用 ONNX 使用 ONNX 特定转换器将经过训练的模型从 scikit-learn 转换为 ONNX 格式的基本演示。
- 00:35:00 在本节中,演讲者强调了 ONNX 格式的透明性和可解释性,可以轻松解析和探索模型的结构。 ONNX 模型甚至可以导出到 protobuf,从而能够以编程方式迭代模型中的可用节点。该视频演示了使用现有模型进行推理,代码展示了如何发送输入数据进行推理,这会返回一个 numpy 数组,其中包含输入数据中每个元素的分类。 ONNX 的好处之一是它与 Escalon 解耦,因此您无需担心模型来自何处,可以轻松使用模型。 ONNX 格式类似于 DLL 或 jar 文件,因为您无需担心它在使用前编写的编程语言,因此具有灵活性和通用性。
- 00:40:00 在本节中,演讲者讨论了 ONNX 文件格式和 ONNX 运行时。 ONNX 是一种可移植且独立的格式,它以明确定义的规范定义模型的图形和运算符。另一方面,ONNX runtime 是由微软推动和倡导的项目。它是一个不同于 ONNX 的项目,通过创建实际的运行时将 ONNX 的承诺提升到一个新的水平。微软在 ONNX 运行时上下了很大的赌注,因为它正在成为 Windows 10 中 minimal 的实际层。演讲者通过层的可视化表示解释了 ONNX 和 ONNX 运行时之间的关系。
- 00:45:00 在本节中,演讲者讨论了 ONNX 运行时的承诺,它抽象出底层硬件,使其易于与不同的硬件和优化器一起使用。 ONNX 通过插件模型使用执行提供程序,硬件供应商可以构建该模型以与他们现有的驱动程序和库进行交互,从而使运行时具有极高的可移植性。微软已经发布了大量基准测试,证明 ONNX 运行时具有高性能,并且微软内部的许多产品团队现在都将其作为他们首选的深度学习运行时,从 Bing 到 Office 365 再到认知服务。演讲者接着介绍了四种获取 ONNX 模型的方法,您可以在 ONNX 运行时上运行这些模型,从 Model Zoo 开始,到使用 Azure ml 在云端或边缘训练和部署模型。
- 00:50:00 在本节中,演示者讨论如何从模型动物园下载预训练的 ONNX 模型并将其用于推理。该演示涉及从模型动物园下载的预训练 EMNIST ONNX 模型和用于推理的手写数字测试图像。演示者演示了代码并解释了在将输入数据发送到 ONNX 模型之前所需的预处理步骤。代码使用ONNX运行时、NumPy和OpenCV库,最终输出为预测数字值。演示者演示了该模型是准确的,可以正确识别手写数字。
- 00:55:00 在本节中,演讲者演示了如何在一个非常被动的用例中执行最终推理,在该用例中使用 PI torch 完成训练,并在 TensorFlow 中执行推理。演讲者展示了如何将 PI torch 模型转换为 ONNX 模型,然后进一步转换为可直接在 TensorFlow 中使用的 protobuf 文件。代码很简单,转换是通过 Pytorch 中提供的内置导出工具完成的。
- 01:00:00 在本节中,演讲者解释了如何将 ONNX 模型转换为 TensorFlow 格式。这是通过简单地导入 ONNX 并使用“ONNX TF 后端”的“准备”功能加载模型,然后将输出写入“.pb”文件来完成的。演讲者演示了可以使用 TensorFlow 模型进行推理,而没有提及 ONNX。会议结束时,演讲者在 The New Stack 上发表了关于 ONNX 即将发表的文章,其中提供了教程和所有源代码。
- 01:05:00 本节不包含有关 ONNX 的任何信息,而是作为有关该主题的网络研讨会的结论。演讲者感谢听众的出席和支持,并宣布网络研讨会的录制视频将很快上传。观众被要求对网络研讨会的相关性和质量进行评分,大多数受访者给出了积极的反馈。演讲者最后宣布了另一个即将举行的关于 Microsoft 分布式应用程序运行时的网络研讨会,该研讨会将于下个月举行。
ONNX 和 ONNX 运行时
ONNX 生态系统是一种可互操作的标准格式,可将来自任何框架的模型转换为针对每个部署目标优化的统一模型表示格式。 ONNX 标准的 ONNX Runtime 实现是跨平台和模块化的,具有硬件加速器支持。转换器进行的不同级别的优化包括图形转换、图形分区和分配。演讲者还讨论了使用 ONNX 的各种优势,例如 C API、API 稳定性以利用新的性能优势而不必担心破坏二进制兼容性,以及可用于确定运行 ONNX 模型的最佳配置的 ONNX Go Live 工具在不同的硬件上。他们还将 ONNX 与框架进行比较,并涉及跨平台兼容性。
- 00:00:00 在本节中,来自 ONNX Runtime 团队的 Ton of Sharma 对 ONNX 生态系统进行了介绍和调查,解释了它的动机和在微软的广泛采用,以及 ONNX 和 ONNX Runtime 的技术设计。他强调了不同团队使用不同框架训练模型的问题,但在生产中部署模型和充分利用硬件时,ONNX 处于中间位置,将模型从任何框架转换为统一的模型表示格式,针对每个部署目标进行了优化,使其成为可互操作的标准格式。该开源项目于 2017 年 12 月启动,Facebook、微软和亚马逊是首批加入该联盟的联盟,目前有超过 40-50 家公司积极参与和投资 ONNX。
- 00:05:00 在本节中,演讲者讨论了在所需框架中训练模型后获取 ONNX 模型的不同方法,例如使用 ONNX Model Zoo、Azure Custom Vision AutoML 工具或开源转换将特定格式的模型转换为 ONNX 的工具。 ONNX Runtime 是 ONNX 标准的实现,作为一种在所需设备或部署目标上尽可能快地运行 ONNX 模型的方式被引入。它是可扩展的、模块化的和跨平台的,具有来自 Tensor RT 和 Intel MKL DNN 等不同供应商的内置硬件加速器支持。最新版本ONNX Runtime 1.0全面支持ONNX规范,是Windows机器学习框架中运行的核心库。
- 00:10:00 本节讲者讲述ONNX以LLVM和TVM为底层框架编译成JET格式后的部署。他们发布了将 ONNX 部署到各种类型设备的参考点和笔记本,包括 Azure 机器学习服务、边缘云和边缘物联网设备,这是他们对 MNIST 平台规划的一部分。微软的 ML minimal 和 ML dotnet 已经支持 ONNX,到目前为止,他们已经有大约 60 多个 ONNX 模型投入生产,平均性能提高了 3 倍。 ONNX 的设计原则是可互操作、紧凑、跨平台、向后兼容,并支持深度负载和传统机器学习模型。
- 00:15:00 在本节中,演讲者讨论了 ONNX 规范的三个部分,从数据流图本身的表示开始。他解释说,可以扩展表示,并可以向其中添加新的运算符和类型。第二部分是图中存储的标准类型和属性的定义,而第三部分是 ONNX 模型中每个运算符的模式。模型文件格式基于protobuf,易于查看,包括版本、元数据和非循环计算图,由输入、输出、计算节点和图名组成。支持张量类型、复数和非张量类型,例如序列和映射。 ONNX 算子集包括大约 140 个算子,任何人都可以通过向 ONNX 开源 GitHub 存储库提交拉取请求来添加更多算子。
- 00:20:00 在本节中,演讲者讨论了 ONNX 的功能,包括添加 ONNX 现有操作可能不支持的自定义操作的能力。演讲者还谈到了版本控制的重要性以及 ONNX 如何在三个不同级别(包括 IR 版本、OP 集版本和操作员版本)整合版本控制。还讨论了 ONNX 运行时,其主要目标是性能、向后和向前兼容性、跨平台兼容性和模型的混合执行。运行时包括用于添加外部硬件加速器的可插入架构。
- 00:25:00 在本节中,演讲者解释了在 ONNX Runtime 中运行模型的两个阶段,即创建与模型的会话并加载模型,然后调用 Run API。加载模型后,会创建 protobuf 的低效图形表示,然后图形会经历不同级别的图形转换,类似于编译器优化。 ONNX Runtime提供了不同层次的图转换规则和可定制的融合,用户可以通过API添加自己的规则。一旦图形被优化,它被划分到不同的硬件加速器,每个节点被分配到一个特定的加速器。演讲者还谈到了执行部分,并提到了两种操作模式,即顺序模式和并行执行模式。最后,演讲者谈到了 ONNX 运行时在告诉用户在哪些提供程序上运行的未来工作。
- 00:30:00 在本节中,演讲者详细介绍了 ONNX Runtime 中的优化。图的转换、图分区和分配是变换器用于重写图的不同优化级别。会话和运行是 ONNX 运行时的双重 API,它加载和优化模型,使其准备好通过简单调用运行函数运行。演讲者还谈到了执行提供者,它是 ONNX 运行时的硬件加速器接口,以及供应商如何通过实施执行提供者 API 添加新的硬件加速器。最后,演讲者提到了 ONNX 运行时的多个扩展点,例如添加新的执行提供程序或自定义操作以及扩展融合级别。
- 00:35:00 在本节中,演讲者讨论了在 ONNX Runtime 中使用 C API 的优势,包括允许用户利用新的性能优势而不必担心破坏二进制兼容性的 API 稳定性。他还解释了 ONNX Go Live 工具,该工具可用于确定在不同硬件上运行 ONNX 模型的最佳配置。演讲者随后谈到了即将推出的功能,包括对 Android 设备 API 中的 N 的支持、Qualcomm 和训练优化,以及持续的性能优化以使 ONNX Runtime 尽可能快地运行。
- 00:40:00 在视频的这一部分,演讲者重点强调了优化特定操作员 (OP) 内的操作以确保其尽可能快地运行的重要性。他们将 ONNX 与框架进行比较,试图确定它的性能是否优于其前身。演讲者还讨论了培训的工作原理,并指出尽管他们正在努力,但源代码培训尚未完成。他们还回答有关 ONNX 格式生成什么以及它可以处理哪种格式(如字符串)的问题。有一些关于微软对ONNX Runtime设计的影响的讨论,作为一个跑马灯产品,目前缺乏开放的治理模式,最终由微软控制,尽管他们仍然欢迎外部贡献。演讲者还谈到了跨平台兼容性,并指出运行时是为 Linux、Windows 和 Mac 设计的。
简要技术概述
ONNX(开放神经网络交换)是一种开源格式,用于在各种框架之间交换机器学习模型。由Microsoft、Facebook和Amazon Web Services (AWS)开发,旨在促进ML模型的开发和部署。
ONNX的主要优势:
要使用ONNX,开发人员可以将他们的模型从各种框架 (例如TensorFlow或PyTorch)导出为ONNX格式。此外,这些模型可以包含在MQL5应用程序中,并在MetaTrader 5交易端运行。这是独有的绝佳机会。
将模型转换为ONNX格式中最受欢迎的工具之一是Microsoft ONNXMLTools。 ONNXMLTools可以轻松安装。有关安装详细信息和模型转换示例,请参阅项目页面https://github.com/onnx/onnxmltools#install。
要运行经过测试的模型,您应该使用ONNX Runtime。 ONNX Runtime是一个高性能的跨平台引擎,旨在运行以ONNX格式导出的ML模型。 通过ONNX,开发人员可以在一个框架内构建模型,然后轻松地将它们部署到其他环境中。这在简化开发进程的同时提供了灵活性。
ONNX是一款适用于ML开发人员和研究人员,且功能强大的工具。借助其中的功能,可用于MQL5的交易中高效地开发和实施模型。
探索使用ML模型的可用信息和新方法,并与 MQL5.community成员进行分享。我们发现了一些关于这个主题的有用资料,可以帮助您探索并开始使用这项新技术。