当前位置: 首页 > 网络应用技术

如何处理Oneflow静态图的操作员

时间:2023-03-08 20:49:55 网络应用技术

  书面文章|李徐

  1

  深度学习框架中有两种类型的建模方法:动态图和静态图。动态图更易于使用,并且静态图性能更有利。OneFlow用于将其转称为急切的模式和图形模式。

  OneFlow提供了NN.Graph模块,使用户可以使用诸如急切模式之类的编程习惯构建静态图训练测试。因此,有必要确保操作的正确性和结果并以急切的和图形模式产生。

  在上一篇文章“如何进行良好的视频调整任务优雅”中分析了急切OPS的自动测试过程,包括如何生成随机数据测试案例和自动核心核心代码实现。自动框架可以轻松地将其移植到其他深度到其他深度。

  但是,本文的主要目的是介绍OneFlow如何在图形模式下完成SON的测试任务。因此,Oneflow v0.7.0在NN.Graph上添加了对静态执行的单个测试支持和自动化的支持单检验函数已完成。

  本文涉及的代码立场:

  2

  OneFlow提供了与Pytorch保持一致的急切模式。因此,在测试中,自动框架将随机生成由各种法律参数制成的操作,并根据相同的值和类型输入张量(pytorch和oneflow),运行运行的代码pytorch和oneflow分别完成操作员以完成操作员。

  此外,OneFlow还基于面向对象的编程样式提供图形模式,允许熟悉急切开发的用户,只需要更改小型代码才能有效地使用静态模式,并且图形模式并不容易调试,但是性能更易于优化和部署。然后,如何在图形模式下自动测试OPS是对需要注意的问题的重点。

  在详细介绍图形单个测试之前,让我们看一下自动框架中的图形打开方法。以下是测试矩阵算子的一个示例。基于该方法,两个随机张量,它们的尺寸为[n,k]和[k,m]。这些维度的值是随机生成的。发电机基类已完成。

  通过致电,自动测试框架将运行火炬和Oneflow的矩阵歌剧,并检查急切模式下的OneFlow和Pytorch操作员的正向和反向结果相同。指示此时它将并行进行单个图测试。

  3

  了解背景以及如何使用它之后,这是图形自动电场的实现。

  3.1自动过程简介

  在急切的自动测试原理中,实施了随机数据的产生和装饰方式,在上一篇文章中有明确的介绍。重新确定了自动级别框架的核心过程的实现,我们必须首先注意操作员对齐中的功能Oneflow和Pytorch的任务。

  该函数将重写对象的原始功能和魔法功能,最后返回对象。在此过程中,它还包含一些不需要注意的魔法函数,检查传递对象的属性是否合法,并基于基于继承类型的继承类的类型(get_args function toterionto.in添加,代码中有一个特殊的判断,因为调用方法(通过)和,张量方法的不同(批准)。

  基于上述过程,通过执行示例代码,该框架将通过调用该函数来生成对象,该函数可以理解为对象。网络执行对象并完成结果的结果。在上一篇文章中也清楚地引入了自动测试过程中。

  3.2如何陪同急切的模式作为操作员与急切模式保持一致

  从上面的分析中,可以概括自动节点的过程:生成随机数据,生成对象,执行对象和判断结果对齐。并行,使图模式符合与急切模式对齐的任务。此外,本节还分类了如何识别函数中需要静态的对象(图)。

  在操作员对齐任务中,有三种类型:存在和方法。此外,该类型被用作使用急切模式测试分析图形模式的代码的示例。其他三种处理方法基本上是相同的。代码执行顺序如下所示:

  单独调用和谐,获得图形和急切模式的两个结果,最后检查对齐是否对齐。

  换句话说,对于测试用例,自动框架总共执行三个代码:Pytorch,Oneflow急切模式和Oneflow Graph模式,以验证三个结果是否对齐。

  让我们首先探索这个接口,也就是说,如何获得图形版本的计算结果。代码如下显示:

  这是一个对象,是其深层复制的结果,主要是为了防止在测试运算符的内置版本不一致时,对相应的对象值进行了修改。

  首先,为了验证可以正常执行的图形,要构建优化器。在急切的模式下重复对象后,在中国描述了图测试的计算过程,并最终返回了图的实例。

  在讨论了如何构造静态执行代码以计算图形结果之后,识别需要静态执行的对象也是优先问题。完整的代码如下:

  在中间,您需要确定哪些对象需要静态才能执行测试。由于OneFlow设置某些代码需要静态,例如,在图形模式下未定义某些急切模式下的某些方法。

  上面的代码首先传递:确定图形开关是否已打开,是否有必要并行进行图形的单个测试;然后判断OneFlow对象的类型,并要求呼叫是静态的。否则,呼叫和其他处理,在测试框架中需要类似判断的其他地方也相同。

  3.3自动测试图形模式的个性化

  在3.2介绍了图形如何处理急切模式的对齐任务之后,本节主要分析图模式的自动测试的个性化内容。

  在图形模式下,需要处理处理方法和三个类别。自动框架采用首先判断然后构图的方法。

  首先,在函数中,相关接口包括:,,,,,,,.查看每个接口的功能,如下所示。

  了解每个功能后,请查看呼叫链。如以下流程图所示,该图包含nn.module,nn.功能和张量的三个类别的方法。

  在分析和三个类别的处理方法之后,自动测试图时也有反向梯度测试,但它不会取出与张量相对应的梯度。也就是说,可以确保未检查正常的毕业价值。

  对于使用情况,当打开它时(默认打开),不仅会运行急切的向后测试(此处将与梯度结果进行比较),而且还运行与图相对应的向后测试(此处没有梯度比较)。

  与上述代码相对应,您可以在文章的代码3.2中找到:

  此外,对于某些操作员的图表检查,您需要进行输入的深层副本,以确保图形和渴望的输入始终是一致的。在以下代码(中间),普通参数和关键字参数分别由DeepCopy制成。

  类似地,在图形单测试中,OneFlow的一个大型副本是Graph_train_oneflow的更深层副本。这主要是为了防止在测试某些操作员时,急切的流口急切的价值,从而导致图形输入和急切输入的测试错误不一致。

  最后,为了确保张量deepcopy的正确性,将调用张量和方法。.py159

  4

  在3.2代码中,您可以找到存在的判断:当时,该图的调试信息(例如运行图模式后运行图模式后的计算结果等)当然还包括急切的其他必要调试信息。

  当测试是一个问题时,您可以通过此功能获得错误示例,以构建最小往复代码。通过环境变量控件打开方法:。自动框架中的此功能更适合开发人员。OneFlow的图还为用户提供了调试功能。

  图模式支持学习率的调试输出,并且开放方法与急切的方法相同。

  此外,调用图对象的调试方法打开图形调试模式。

  可以在https://docs.oneflow.org/master/basics/08_nn_graph.html#graph_3中找到更详细的内容的这一部分。

  5

  自动框架的灵活性和易用性相对较强。本文主要介绍了图形模式如何伴随着急切的模式作为操作员对齐方式以及Graph的自动测试个性化内容。在0.8版本中,将保证Gloph Global OPS单个测试的精度。此外,静态图的调试和其他功能将更加完整。请注意所有人都可以学习或使用。

  相关链接

  **欢迎体验最新版本的Oneflow v0.7.0:

  https://github.com/oneflow-ic/oneflow/xhdy