CN112766512B - 基于元算子的深度学习框架诊断***、方法、装置、设备及介质 - Google Patents
基于元算子的深度学习框架诊断***、方法、装置、设备及介质 Download PDFInfo
- Publication number
- CN112766512B CN112766512B CN202110098292.7A CN202110098292A CN112766512B CN 112766512 B CN112766512 B CN 112766512B CN 202110098292 A CN202110098292 A CN 202110098292A CN 112766512 B CN112766512 B CN 112766512B
- Authority
- CN
- China
- Prior art keywords
- deep learning
- operator
- calculation
- model
- operators
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Medical Informatics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Physics & Mathematics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Artificial Intelligence (AREA)
- Image Analysis (AREA)
Abstract
本公开提供了一种基于元算子的深度学习框架诊断***、方法、装置、介质及设备,所述***包括:用户接口模块,用于为用户提供搭建深度学习模型并诊断模型中的算子的编程接口;模型静态图模块,用于根据用户的代码,构建模型静态计算图的结构;由状态记录器和数据流执行器组成的调试器,其中,所述状态记录器用于记录每次算子替换后计算图执行的计算结果;所述数据流执行器用于根据所述静态计算图的结构,执行正向计算和反向梯度计算操作;元算子模块,用于提供所述***执行各类型计算的基本计算单位;算子实现模块,用于不同的深度学习框架的数值计算和/或多维数组操作;设备管理模块,用于管理硬件实现的CPU和GPU,并提供了一个统一的接口。
Description
技术领域
本公开涉及深度学习技术领域,更为具体来说,本公开涉及基于元算子的深度学习框架诊断***、方法、装置、设备及介质。
背景技术
深度学习(Deep Learning)在许多领域都有广泛的应用,例如图像识别、语音识别、机器翻译、自动驾驶等等。使用深度学习框架(Deep Learning Frameworks)提供的编程接口,用户可以轻松地设计、训练以及测试深度学习模型。如今,各种深度学习框架百花齐放,百家争鸣,进一步推动了深度学习技术在工业界的落地应用。
在不同的深度学习框架中,计算通常以算子为单位,不同的算子定义了不同类型的数值计算。然而,各个深度学习框架在这些算子计算的实现上可能会存在错误,这些计算错误会导致深度学习模型预测结果不准确,甚至会因此产生严重的后果,例如:Uber深度学习框架中的一处错误曾导致一辆自动驾驶汽车撞人致死。因此,对深度学习框架的诊断工作在这些年来受到越来越多的关注。
目前对深度学习框架进行测试和错误诊断的相关工作数量仍较少。其中,CRADLE是一个自动诊断并定位深度学习框架中的错误的***。给定一个深度学习模型,CRADLE使用距离度量比较模型在不同深度学习框架作为后端上的输出,以此检测是否存在不一致的计算结果,并且通过跟踪异常数据传播来确定在模型中产生这种不一致的位置。
然而,目前的深度学习框架诊断***存在以下的局限性:这些深度学习框架诊断***只能通过比较和推测的方式找到不同深度学习框架之间计算结果相差较大的算子,无法验证诊断结果的准确性。此外,已有的诊断***只能诊断深度学习模型在推断过程中的计算错误,无法诊断深度学习模型在训练过程中产生的计算错误。
发明内容
为解决现有技术的深度学习框架诊断***不能满足对于深度学习的诊断的准确度的要求的技术问题。
为实现上述技术目的,本公开提供了一种基于元算子的深度学习框架诊断***,包括:
用户接口模块,用于为用户提供搭建深度学习模型并诊断模型中的算子的编程接口;
模型静态图模块,用于根据用户的代码,构建模型静态计算图的结构;
由状态记录器和数据流执行器组成的调试器,其中,所述状态记录器用于记录每次算子替换后计算图执行的计算结果;所述数据流执行器用于根据所述静态计算图的结构,执行正向计算和反向梯度计算操作;
元算子模块,用于提供所述***执行各类型计算的基本计算单位;
算子实现模块,用于不同的深度学习框架的数值计算和/或多维数组操作;
设备管理模块,用于管理硬件实现的CPU和GPU,并提供了一个统一的接口。
为实现上述技术目的,本公开还能够提供一种基于元算子的深度学习框架诊断方法,应用于上述的基于元算子的深度学习框架诊断***,包括:
使用所述***中的所述用户接口模块搭建深度学习模型,并指定两个不同的深度学习框架用于比较计算结果;
对所述深度学习模型中的每个算子逐一诊断,并记录作出每一次算子替换之后模型的参数;
对替换算子底层实现前后模型的计算结果与预设阈值进行比较以完成对错误算子的定位;
通过对比替换算子实现前后结果差距较大的算子在两种深度学习框架中的底层实现,查找这些算子在深度学习框架中是否有实现上的错误。
进一步,所述对所述深度学习模型中的每个算子逐一诊断具体包括:
通过算子细粒度替换的方式,对所述深度学习模型中的每个算子逐一诊断。
进一步,所述参数具体包括:
模型的推断结果和/或模型参数梯度。
进一步,所述对替换算子底层实现前后模型的计算结果与预设阈值进行比较具体通过平均绝对离差衡量模型每次计算的结果之差。
进一步,所述通过对比替换算子实现前后结果差距较大的算子在两种深度学习框架中的底层实现,查找这些算子在深度学习框架中是否有实现上的错误。
进一步,所述方法还包括:
对错误定位结果进行再次验证具体包括:
将模型分别用两种深度学习框架实现,然后将其中有错误的实现方法替换为另一种深度学习框架;
比较判断替换前后两次模型的计算结果,若两次计算结果相近,则对算子计算错误的定位准确。
为实现上述技术目的,本公开还能够提供一种基于元算子的深度学习框架诊断装置,包括:
构建模块,用于搭建深度学习模型,并指定两个不同的深度学习框架用于比较计算结果;
诊断模块,用于对所述深度学习模型中的每个算子逐一诊断,并记录作出每一次算子替换之后模型的参数;
定位模块,用于对替换算子底层实现前后模型的计算结果与预设阈值进行比较以完成对错误算子的定位;
查找模块,用于通过对比替换算子实现前后结果差距较大的算子在两种深度学习框架中的底层实现,查找这些算子在深度学习框架中是否有实现上的错误。
其中,所述查找模块具体通过人工比对的方式进行查找。
为实现上述技术目的,本公开还能够提供一种计算机存储介质,其上存储有计算机程序,计算机程序被处理器执行时用于实现上述的基于元算子的深度学习框架诊断方法的步骤。
为实现上述技术目的,本公开还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述的基于元算子的深度学习框架诊断方法的步骤。
本公开的有益效果为:
1.将不同深度学习框架中算子的共性计算逻辑抽象为“元算子”,支持在不改变模型代码的前提下绑定元算子的具体实现,从而高效地实现算子的细粒度替换。
2.设计并实现了基于元算子的深度学习框架诊断***。通过算子的细粒度替换,实现深度学习框架中计算错误的诊断、定位以及对错误定位的检验;
3.本公开***为满足功能上的需求牺牲了部分性能,***可以有效地检测和定位不同深度学习框架中算子计算的差异。
附图说明
图1示出了本公开的实施例1的结构示意图;
图2示出了本公开的实施例1的加法元算子类类图示意图;
图3示出了本公开的实施例2的流程示意图;
图4示出了本公开的实施例3的结构示意图;
图5示出了本公开的实施例5的结构示意图。
具体实施方式
以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。
在附图中示出了根据本公开实施例的各种结构示意图。这些图并非是按比例绘制的,其中为了清楚表达的目的,放大了某些细节,并且可能省略了某些细节。图中所示出的各种区域、层的形状以及它们之间的相对大小、位置关系仅是示例性的,实际中可能由于制造公差或技术限制而有所偏差,并且本领域技术人员根据实际所需可以另外设计具有不同形状、大小、相对位置的区域/层。
针对上述需求和挑战,本公开设计了一个基于元算子的深度学习框架诊断***。该***将不同深度学习框架中算子的正向计算、梯度计算等共性计算逻辑抽象为“元算子”,无需修改模型底层代码即可改变指定算子的底层实现。
本公开***的运行流程如下:用户使用***提供的元算子接口搭建深度学习模型,准备模型的输入数据,并指定两种需要进行错误诊断的深度学习框架。诊断***首先将模型中所有算子用其中一种深度学习框架实现,然后按照模型计算图的拓扑排序的反序、从底向上的顺序逐个将算子的底层实现替换成另一深度学习框架。这样的替换顺序可以保证每一次替换算子底层实现的前后,该算子的输入数据是相同的。每次算子细粒度替换之后,该诊断***会以用户指定的数据作为输入自动对模型运行正向计算和反向梯度传播,并记录作出这一次算子替换之后,模型的输出结果和模型参数的梯度产生的改变。诊断***对改变算子底层实现前后模型输出结果和模型参数梯度的改变的大小从大至小排序。若改变某个算子的底层实现之后,模型的输出结果改变越大,则越有可能该算子在其中一种深度学习框架中的正向计算的底层实现存在错误;若改变某个算子的底层实现之后,模型中可训练参数梯度改变越大,则越有可能该算子在其中一种深度学习框架中的梯度计算的底层实现存在错误。最后,用户通过对比排名靠前的算子在两种深度学习框架中的底层实现,查看这些算子在深度学习框架中是否有实现上的错误,并利用本公开***对这一诊断结果进行验证。
本公开诊断***中提出了“元算子”的概念。元算子是本公开诊断***进行计算的单位,每一种元算子抽取了不同深度学习框架中语义相同的算子中的共同特征,实现了不同深度学框架中算子共有的属性和方法,既可以完成深度学习框架中算子的正向推断计算,也可以完成梯度计算。每一个元算子的计算都采用已有深度学框架的算子计算方法实现,用户可以指定或修改每一个元算子的计算由哪一种深度学习框架的计算方法来实现。
实施例一:
如图1所示:
本公开提供了一种基于元算子的深度学习框架诊断***,包括:
用户接口模块,用于为用户提供搭建深度学习模型并诊断模型中的算子的编程接口;
模型静态图模块,用于根据用户的代码,构建模型静态计算图的结构;
由状态记录器和数据流执行器组成的调试器,其中,所述状态记录器用于记录每次算子替换后计算图执行的计算结果;所述数据流执行器用于根据所述静态计算图的结构,执行正向计算和反向梯度计算操作;
元算子模块,用于提供所述***执行各类型计算的基本计算单位;
算子实现模块,用于不同的深度学习框架的数值计算和/或多维数组操作;
设备管理模块,用于管理硬件实现的CPU和GPU,并提供了一个统一的接口。
深度学习框架以“算子”(operator)为计算的单元。算子通过运行深度学习框架中的算子底层实现代码,来完成数值计算或者多维数组操作等不同的操作。训练和使用深度学习模型需要模型中的每一个算子进行正向计算以得到推断结果,或进行梯度计算以更新模型权重。
无论是由哪一种深度学习框架实现的算子,除了逻辑判断等类型算子以外,大多都具有正向计算和梯度计算这两种计算逻辑。考虑到这两种共性计算逻辑,本文将不同深度学习框架中语义上相同的算子抽象为同一个元算子。元算子中实现了不同深度学习框架中算子共有的属性和方法,也提供了调用不同深度学习框架中算子计算实现的接口。用户仅通过参数指定该算子的底层实现***,元算子类通过接口绑定该算子计算时采用的底层***实现,从而实现了算子底层实现的细粒度替换。本文诊断***以元算子作为计算的单元。
以加法计算为例的加法元算子类的类图如图2所示:
包括加法在内的元算子均继承自元算子基类。在元算子基类中,定义了各类元算子都拥有的属性和方法。framework属性表示实现算子底层计算的深度学习框架。name属性为算子的名字,以区分模型中不同的算子。input_nodes为一个节点列表,列表中的节点为在深度学习模型整体的静态图中该算子所在节点的输入节点。同理,output_nodes也是一个节点列表,列表中的节点均以该算子所在节点为输入节点。output_values为该节点的正向计算结果,在该算子进行过第一次正向计算后才会被赋值。compute_output()方法进行算子的正向计算,在元算子基类中该方法没有被实现,只有继承了元算子基类的具体元算子类才会实现该方法。同样地,compute_gradient(grad)方法进行反向的梯度计算,grad参数为当前的梯度,该方法同样需要在继承了元算子基类的具体元算子类中实现。
不同的深度学习框架对于自动梯度计算的实现不同,例如:当计算一个矩阵与一个标量数值相加后,PyTorch对标量数值求得的梯度同样也是一个标量,而TensorFlow给出的梯度结果是一个矩阵。为了使本文诊断***能够更好地比较不同深度学习框架的梯度计算结果,元算子在采用TensorFlow等底层实现时会进一步处理梯度的形状,使得元算子在使用不同底层实现方法时在梯度的形状上可以保持一致。
Add元算子继承了元算子基类,在诊断***中为加法计算的元算子。该元算子具有多种正向计算和梯度计算的方法,每一种正向计算方法和梯度计算方法通过接口实现对深度学框架中算子计算方法的调用,以完成具体的计算任务
数据流执行器
效仿TensorFlow中执行计算图的方式,本文***同样设计了会话控制类以启动对计算图中数据流的执行。启动对数据流的执行之前首先需要创建一个会话。
会话类在执行计算图时,用户需要制定一个“目标节点”,会话将以该节点为起点,在计算图中按照广度优先搜索的方式找出该节点所依赖的全部节点。计算图中节点的计算顺序为广度优先搜索的倒序,这样的顺序可以保证计算时每个节点的依赖节点都已经完成计算。会话类的close()方法通过将该会话的计算图中全部计算结果清空的方式关闭会话。
状态记录器
在诊断过程诊断深度学习框架时,每次替换完一个元算子的底层实现方式之后,由数据流执行器执行计算图,得到模型的计算结果。状态记录器将每一次执行计算图后得到的正向推断结果和梯度计算结果分别记录下来,并对每次替换算子前后的结果进行比较,最后按照替换算子带来结果差异的大小对元算子排序,给出最终的诊断定位结果。
模型静态图
通常,对深度学习任务的模型定义和参数求解方式进行抽象之后,可以确定一个唯一的计算逻辑,将这个逻辑用有向无环图表示,称之为计算图。计算图定义了数据的流转方式,数据的计算方式,以及各种计算之间的相互依赖关系等。
本文***采取类似于TensorFlow中静态图的形式表示深度学习模型。计算图中的节点根据功能主要分为计算节点(Operator)、存储节点(Variable)、常数节点(Constants)和数据节点(Placeholder)四类。每一个计算节点对应一个元算子,主要负责算法逻辑表达或者流程控制。存储节点通常用来存储模型权重。常数节点定义了计算图中不可被训练的、常值不变的权重。数据节点用于定义输入数据的类型和形状等属性,是对数据的统一抽象。
计算图中的边是有向边,边的方向通常为前向求值的方向,定义不同节点之间的关系。边可以分为两类:一类用来传输数据,称为数据边;另一类用来定义依赖关系,称为控制边。所有的节点都通过数据边或者控制边连接,其中入度为0的节点没有前置依赖,可以立即执行;入度大于0的节点,要等待其依赖的所有节点执行结束之后,才可以执行。
在静态计算图的结构中使用无序列表存储了计算图中的各类节点,节点之间的关系由各节点中的属性定义。计算图的enter()方法将重置当前计算图,exit()方法将计算图恢复到该图之前的计算图。
用户接口模块
本文诊断***所提供类似于各个深度学习框架所提供的算子函数式接口,通过类似函数调用的形式完成深度学习模型的搭建。例如,对于一个损失函数为均方误差(meansquare error)的一元线性回归模型。
在对深度学习框架的诊断阶段,用户在指定模型的输入数据和待检测的两种深度学习框架后,只需启动诊断会话,本文诊断***即可自动利用用户所搭建的深度学习模型,对用户指定的两种深度学习框架计算结果进行比较。
实施例二:
如图3所示,
本公开还能够提供一种基于元算子的深度学习框架诊断方法,应用于上述实施例一中的基于元算子的深度学习框架诊断***,包括:
S201:使用所述***中的所述用户接口模块搭建深度学习模型,并指定两个不同的深度学习框架用于比较计算结果;
S202:对所述深度学习模型中的每个算子逐一诊断,并记录作出每一次算子替换之后模型的参数;
S203:对替换算子底层实现前后模型的计算结果与预设阈值进行比较以完成对错误算子的定位;
S204:通过对比替换算子实现前后结果差距较大的算子在两种深度学习框架中的底层实现,查找这些算子在深度学框架中是否有实现上的错误。
进一步,所述对所述深度学习模型中的每个算子逐一诊断具体包括:
通过算子细粒度替换的方式,对所述深度学习模型中的每个算子逐一诊断。
进一步,所述参数具体包括:
模型的推断结果和/或模型参数梯度。
进一步,所述对替换算子底层实现前后模型的计算结果与预设阈值进行比较具体通过平均绝对离差衡量模型每次计算的结果之差。
进一步,所述通过对比替换算子实现前后结果差距较大的算子在两种深度学习框架中的底层实现,查找这些算子在深度学习框架中是否有实现上的错误。
进一步,所述方法还包括:
对错误定位结果进行再次验证具体包括:
将模型分别用两种深度学习框架实现,然后将其中有错误的实现方法替换为另一种深度学习框架;
比较判断替换前后两次模型的计算结果,若两次计算结果相近,则对算子计算错误的定位准确。
在使用本文诊断***的元算子构建一个深度学习模型,并指定两种深度学习框架后,由算法一的算法可以得到一组推断结果集合和梯度计算结果集合。集合中相邻的两次计算结果为替换了某元算子的底层实现后,以相同的输入数据作为输入得到的两次计算结果。因此,分别比较两个集合中两两相邻的计算结果即可推断出某算子在不同深度学习框架中的实现是否有明显差异。
本文***采用平均绝对离差(Mean Absolute Distance)衡量模型每次计算的结果之差。对于正向推断过程来说,若在替换元算子的底层实现O之前模型的正向推断结果为YO,将元算子的底层实现O替换为O’之后的正向推断结果为的为YO’,两个正向推断结果向量均含有n个元素,则两个结果之差可被计算为:
若将某元算子的底层实现O替换为O’后,模型计算的结果之差δC,O,O′大于用户指定的阈值TC,则两种深度学习框架中的实现方式O或O’之一可能存在计算错误,从而实现了对模型中存在计算错误的算子的定位。
对于梯度计算结果的集合来说,集合中每一个参数在相邻两次计算中的梯度之差同样可用平均绝对离差衡量。本文诊断***在替换一次元算子的底层实现之后,首先计算得到每一个梯度在该次替换前后的梯度之差,然后计算深度学***均值,用来衡量这次替换对参数梯度的整体影响大小。若深度学习模型中有m个可求梯度的参数,则在将某元算子的底层实现从O替换为O’前后的整体梯度之差为:
同样,若将某元算子的底层实现O替换为O’后,模型的整体梯度之差δG,O,O′大于用户指定的阈值TG,则两种深度学习框架中的实现方式O或O’之一的梯度计算方面可能存在错误,从而实现了对模型中梯度计算错误的算子的定位。
最后,本文诊断***会将某次元算子实现替换前后正向推断结果之差和整体梯度之差分别从大至小排序,排名越靠前的那次替换涉及到的算子越有可能存在错误。之后,对于排名较高或替换底层实现前后的计算结果超过阈值的算子,用户可手动对比算子两个排序中在两种深度学习框架中的底层实现代码,进行进一步确认。
实施例三:
本公开还能够提供一种基于元算子的深度学习框架诊断装置,包括:
构建模块301,用于搭建深度学习模型,并指定两个不同的深度学习框架用于比较计算结果;
诊断模块302,用于对所述深度学习模型中的每个算子逐一诊断,并记录作出每一次算子替换之后模型的参数;
定位模块303,用于对替换算子底层实现前后模型的计算结果与预设阈值进行比较以完成对错误算子的定位;
查找模块304,用于通过对比替换算子实现前后结果差距较大的算子在两种深度学习框架中的底层实现,查找这些算子在深度学习框架中是否有实现上的错误。
其中,所述查找模块具体通过人工比对的方式进行查找。
其中,本公开所述的构建模块301依次与所述诊断模块302、所述定位模块303以及所述查找模块304相连接。
实施例四:
本公开还能够提供一种计算机存储介质,其上存储有计算机程序,计算机程序被处理器执行时用于实现上述的基于元算子的深度学习框架诊断方法的步骤。
本公开的计算机存储介质可以采用半导体存储器、磁芯存储器、磁鼓存储器或磁盘存储器实现。
半导体存储器,主要用于计算机的半导体存储元件主要有Mos和双极型两种。Mos元件集成度高、工艺简单但速度较慢。双极型元件工艺复杂、功耗大、集成度低但速度快。NMos和CMos问世后,使Mos存储器在半导体存储器中开始占主要地位。NMos速度快,如英特尔公司的1K位静态随机存储器的存取时间为45ns。而CMos耗电省,4K位的CMos静态存储器存取时间为300ns。上述半导体存储器都是随机存取存储器(RAM),即在工作过程中可随机进行读出和写入新内容。而半导体只读存储器(ROM)在工作过程中可随机读出但不能写入,它用来存放已固化好的程序和数据。ROM又分为不可改写的熔断丝式只读存储器──PROM和可改写的只读存储器EPROM两种。
磁芯存储器,具有成本低,可靠性高的特点,且有20多年的实际使用经验。70年代中期以前广泛使用磁芯存储器作为主存储器。其存储容量可达10位以上,存取时间最快为300ns。国际上典型的磁芯存储器容量为4MS~8MB,存取周期为1.0~1.5μs。在半导体存储快速发展取代磁芯存储器作为主存储器的位置之后,磁芯存储器仍然可以作为大容量扩充存储器而得到应用。
磁鼓存储器,一种磁记录的外存储器。由于其信息存取速度快,工作稳定可靠,虽然其容量较小,正逐渐被磁盘存储器所取代,但仍被用作实时过程控制计算机和中、大型计算机的外存储器。为了适应小型和微型计算机的需要,出现了超小型磁鼓,其体积小、重量轻、可靠性高、使用方便。
磁盘存储器,一种磁记录的外存储器。它兼有磁鼓和磁带存储器的优点,即其存储容量较磁鼓容量大,而存取速度则较磁带存储器快,又可脱机贮存,因此在各种计算机***中磁盘被广泛用作大容量的外存储器。磁盘一般分为硬磁盘和软磁盘存储器两大类。
硬磁盘存储器的品种很多。从结构上,分可换式和固定式两种。可换式磁盘盘片可调换,固定式磁盘盘片是固定的。可换式和固定式磁盘都有多片组合和单片结构两种,又都可分为固定磁头型和活动磁头型。固定磁头型磁盘的容量较小,记录密度低存取速度高,但造价高。活动磁头型磁盘记录密度高(可达1000~6250位/英寸),因而容量大,但存取速度相对固定磁头磁盘低。磁盘产品的存储容量可达几百兆字节,位密度为每英寸6 250位,道密度为每英寸475道。其中多片可换磁盘存储器由于盘组可以更换,具有很大的脱体容量,而且容量大,速度高,可存储大容量情报资料,在联机情报检索***、数据库管理***中得到广泛应用。
实施例五:
本公开还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述的基于元算子的深度学习框架诊断方法的步骤。
图5为一个实施例中电子设备的内部结构示意图。如图5所示,该电子设备包括通过***总线连接的处理器、存储介质、存储器和网络接口。其中,该计算机设备的存储介质存储有操作***、数据库和计算机可读指令,数据库中可存储有控件信息序列,该计算机可读指令被处理器执行时,可使得处理器实现一种基于元算子的深度学习框架诊断方法。该电设备的处理器用于提供计算和控制能力,支撑整个计算机设备的运行。该计算机设备的存储器中可存储有计算机可读指令,该计算机可读指令被处理器执行时,可使得处理器执行一种基于元算子的深度学习框架诊断方法。该计算机设备的网络接口用于与终端连接通信。本领域技术人员可以理解,图5中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
该电子设备包括但不限于智能电话、计算机、平板电脑、可穿戴智能设备、人工智能设备、移动电源等。
所述处理器在一些实施例中可以由集成电路组成,例如可以由单个封装的集成电路所组成,也可以是由多个相同功能或不同功能封装的集成电路所组成,包括一个或者多个中央处理器(Central Processing unit,CPU)、微处理器、数字处理芯片、图形处理器及各种控制芯片的组合等。所述处理器是所述电子设备的控制核心(Control Unit),利用各种接口和线路连接整个电子设备的各个部件,通过运行或执行存储在所述存储器内的程序或者模块(例如执行远端数据读写程序等),以及调用存储在所述存储器内的数据,以执行电子设备的各种功能和处理数据。
所述总线可以是外设部件互连标准(peripheral component interconnect,简称PCI)总线或扩展工业标准结构(extended industry standard architecture,简称EISA)总线等。该总线可以分为地址总线、数据总线、控制总线等。所述总线被设置为实现所述存储器以及至少一个处理器等之间的连接通信。
图5仅示出了具有部件的电子设备,本领域技术人员可以理解的是,图5示出的结构并不构成对所述电子设备的限定,可以包括比图示更少或者更多的部件,或者组合某些部件,或者不同的部件布置。
例如,尽管未示出,所述电子设备还可以包括给各个部件供电的电源(比如电池),优选地,电源可以通过电源管理装置与所述至少一个处理器逻辑相连,从而通过电源管理装置实现充电管理、放电管理、以及功耗管理等功能。电源还可以包括一个或一个以上的直流或交流电源、再充电装置、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。所述电子设备还可以包括多种传感器、蓝牙模块、Wi-Fi模块等,在此不再赘述。
进一步地,所述电子设备还可以包括网络接口,可选地,所述网络接口可以包括有线接口和/或无线接口(如WI-FI接口、蓝牙接口等),通常用于在该电子设备与其他电子设备之间建立通信连接。
可选地,该电子设备还可以包括用户接口,用户接口可以是显示器(Display)、输入单元(比如键盘(Keyboard)),可选地,用户接口还可以是标准的有线接口、无线接口。可选地,在一些实施例中,显示器可以是LED显示器、液晶显示器、触控式液晶显示器以及OLED(Organic Light-Emitting Diode,有机发光二极管)触摸器等。其中,显示器也可以适当的称为显示屏或显示单元,用于显示在电子设备中处理的信息以及用于显示可视化的用户界面。
进一步地,所述计算机可用存储介质可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需的应用程序等;存储数据区可存储根据区块链节点的使用所创建的数据等。
在本发明所提供的几个实施例中,应该理解到,所揭露的设备,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能模块的形式实现。
以上对本公开的实施例进行了描述。但是,这些实施例仅仅是为了说明的目的,而并非为了限制本公开的范围。本公开的范围由所附权利要求及其等价物限定。不脱离本公开的范围,本领域技术人员可以做出多种替代和修改,这些替代和修改都应落在本公开的范围之内。
Claims (9)
1.一种基于元算子的深度学习框架诊断***,其特征在于,包括:
用户接口模块,用于为用户提供搭建深度学习模型并诊断模型中的算子的编程接口;
模型静态图模块,用于根据用户的代码,构建模型静态计算图的结构;
由状态记录器和数据流执行器组成的调试器,其中,所述状态记录器用于记录每次算子替换后计算图执行的计算结果;所述数据流执行器用于根据所述静态计算图的结构,执行正向计算和反向梯度计算操作;
元算子模块,用于提供所述***执行各类型计算的基本计算单位;
算子实现模块,用于不同的深度学习框架的数值计算和/或多维数组操作;
设备管理模块,用于管理硬件实现的CPU和GPU,并提供了一个统一的接口。
2.一种基于元算子的深度学习框架诊断方法,应用于如权利要求1中所述的基于元算子的深度学习框架诊断***,其特征在于,包括:
使用所述***中的所述用户接口模块搭建深度学习模型,并指定两个不同的深度学习框架用于比较计算结果;
对所述深度学习模型中的每个算子逐一诊断,并记录作出每一次算子替换之后模型的参数;
对替换算子底层实现前后模型的计算结果与预设阈值进行比较以完成对错误算子的定位;
通过对比替换算子实现前后结果差距较大的算子在两种深度学习框架中的底层实现,查找这些算子在深度学习框架中是否有实现上的错误。
3.根据权利要求2所述的方法,其特征在于,所述对所述深度学习模型中的每个算子逐一诊断具体包括:
通过算子细粒度替换的方式,对所述深度学习模型中的每个算子逐一诊断。
4.根据权利要求2所述的方法,其特征在于,所述参数具体包括:
模型的推断结果和/或模型参数梯度。
5.根据权利要求2所述的方法,其特征在于,所述对替换算子底层实现前后模型的计算结果与预设阈值进行比较具体通过平均绝对离差衡量模型每次计算的结果之差。
6.根据权利要求2所述的方法,其特征在于,所述通过对比替换算子实现前后结果差距较大的算子在两种深度学习框架中的底层实现,查找这些算子在深度学习框架中是否有实现上的错误。
7.根据权利要求2~6任一项中所述的方法,其特征在于,所述方法还包括:
对错误定位结果进行再次验证具体包括:
将模型分别用两种深度学习框架实现,然后将其中有错误的实现方法替换为另一种深度学习框架;
比较判断替换前后两次模型的计算结果,若两次计算结果相近,则对算子计算错误的定位准确。
8.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现权利要求2~7任一项中所述的基于元算子的深度学习框架诊断方法对应的步骤。
9.一种计算机存储介质,其上存储有计算机程序指令,其特征在于,所述程序指令被处理器执行时用于实现权利要求2~7任一项中所述的基于元算子的深度学习框架诊断方法对应的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110098292.7A CN112766512B (zh) | 2021-01-25 | 2021-01-25 | 基于元算子的深度学习框架诊断***、方法、装置、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110098292.7A CN112766512B (zh) | 2021-01-25 | 2021-01-25 | 基于元算子的深度学习框架诊断***、方法、装置、设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112766512A CN112766512A (zh) | 2021-05-07 |
CN112766512B true CN112766512B (zh) | 2022-10-28 |
Family
ID=75707177
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110098292.7A Active CN112766512B (zh) | 2021-01-25 | 2021-01-25 | 基于元算子的深度学习框架诊断***、方法、装置、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112766512B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113592701B (zh) * | 2021-08-05 | 2024-03-29 | 中国科学技术大学 | 将梯度压缩算法开发注册到深度学习框架中的方法及*** |
CN114218929B (zh) * | 2022-02-22 | 2022-05-17 | 之江实验室 | 一种基于元算子融合的多平台算子智能化开发***及方法 |
CN115113528B (zh) * | 2022-07-06 | 2023-07-25 | 昆仑芯(北京)科技有限公司 | 神经网络模型的运行控制方法、装置、设备及介质 |
CN117852573B (zh) * | 2024-03-07 | 2024-06-07 | 山东云海国创云计算装备产业创新中心有限公司 | 算力执行***、算子计算流管理方法、装置、设备和介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111428880A (zh) * | 2020-03-20 | 2020-07-17 | 矩阵元技术(深圳)有限公司 | 隐私机器学习实现方法、装置、设备及存储介质 |
CN112149828B (zh) * | 2020-09-29 | 2022-05-13 | 北京百度网讯科技有限公司 | 基于深度学习框架的算子精度检测方法和装置 |
-
2021
- 2021-01-25 CN CN202110098292.7A patent/CN112766512B/zh active Active
Non-Patent Citations (4)
Title |
---|
《Deep Learning for change Detection in Remote Sensing Images:Comprehensive Review and Meta-Analtsis》;LAZHAR KHELIFI ETAL;《IEEE ACCESS》;20200528;全文 * |
《GRNERIC SCHEME OF A RESTART META-HEURISTIC OPERATOR FOR MULTI-OBJECTIVE GENETIC ALGORITHMS》;Christina Brester etal;《international journal on information technologies&Security》;20181231;全文 * |
《Jittor:a novel deep learning framework with meta-operator and unified graph execution》;Shi-Min HU etal;《SCIENCE CHINA》;20201231;全文 * |
《深度学习框架jittor开源,创新元算子,推理速度可提升10%-50%》;SegmentFault思否;《百度:https://baijiahao.***.com/s?id=1662108464126976732&wfr=spider&for=pc》;20200325;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN112766512A (zh) | 2021-05-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112766512B (zh) | 基于元算子的深度学习框架诊断***、方法、装置、设备及介质 | |
He et al. | Fidelity: Efficient resilience analysis framework for deep learning accelerators | |
US20190378023A1 (en) | System and method for recommending business experience packages | |
CN110008080A (zh) | 基于时间序列的业务指标异常检测方法、装置和电子设备 | |
CN111949646B (zh) | 基于大数据的设备运行状况分析方法、装置、设备及介质 | |
CN113219341B (zh) | 一种模型生成及电池劣化推测装置、方法、介质及设备 | |
CN114691403A (zh) | 一种服务器故障诊断方法、装置、电子设备及存储介质 | |
CN111339072A (zh) | 基于用户行为的变化值分析方法、装置、电子设备及介质 | |
Zhang et al. | An empirical study on clone consistency prediction based on machine learning | |
CN113255682B (zh) | 一种目标检测***、方法、装置、设备及介质 | |
WO2023027048A1 (ja) | 電池パラメータ推定方法、装置、デバイス及び媒体 | |
Azatchi et al. | Advanced analysis techniques for cross-product coverage | |
US20240086165A1 (en) | Systems and methods for building and deploying machine learning applications | |
WO2018125419A1 (en) | Automatic prediction of patient length of stay and detection of medical center readmission diagnoses | |
CN113902121B (zh) | 一种电池劣化推测装置校验的方法、装置、设备及介质 | |
CN116882161A (zh) | 基于状态的***可靠性评估模型构建方法及仿真评估方法 | |
CN114727100B (zh) | 一种监控设备的联合调试方法及装置 | |
JP7239828B2 (ja) | システム管理方法、システム管理プログラム、およびシステム管理装置 | |
CN112698841A (zh) | 面向Android的深度学习模型统一部署***、方法、设备及介质 | |
CN104145249A (zh) | 调试方法和计算机程序产品 | |
Graf et al. | Frost: a platform for benchmarking and exploring data matching results | |
CN112015912A (zh) | 一种基于知识图谱的指标智能可视化方法及装置 | |
CN112232115B (zh) | 一种计算因子植入方法、介质及设备 | |
US20230342379A1 (en) | Partitioning time series data using category cardinality | |
Chen et al. | Physical-aware diagnosis of multiple interconnect defects |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |