CN113592701B - 将梯度压缩算法开发注册到深度学习框架中的方法及系统 - Google Patents
将梯度压缩算法开发注册到深度学习框架中的方法及系统 Download PDFInfo
- Publication number
- CN113592701B CN113592701B CN202110894781.3A CN202110894781A CN113592701B CN 113592701 B CN113592701 B CN 113592701B CN 202110894781 A CN202110894781 A CN 202110894781A CN 113592701 B CN113592701 B CN 113592701B
- Authority
- CN
- China
- Prior art keywords
- code
- translator
- compression algorithm
- codes
- operator
- 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
- 230000006835 compression Effects 0.000 title claims abstract description 94
- 238000007906 compression Methods 0.000 title claims abstract description 94
- 238000004422 calculation algorithm Methods 0.000 title claims abstract description 93
- 238000013135 deep learning Methods 0.000 title claims abstract description 45
- 238000000034 method Methods 0.000 title claims abstract description 37
- 238000011161 development Methods 0.000 title abstract description 24
- 238000013461 design Methods 0.000 claims abstract description 4
- 230000006870 function Effects 0.000 claims description 20
- 238000004458 analytical method Methods 0.000 claims description 12
- 230000006837 decompression Effects 0.000 claims description 12
- 238000012545 processing Methods 0.000 claims description 12
- 238000003860 storage Methods 0.000 claims description 6
- 238000013507 mapping Methods 0.000 claims description 5
- 238000006243 chemical reaction Methods 0.000 claims description 4
- 238000004590 computer program Methods 0.000 claims description 4
- 238000000354 decomposition reaction Methods 0.000 claims description 4
- 238000013139 quantization Methods 0.000 claims description 4
- 238000000605 extraction Methods 0.000 claims description 3
- 238000005457 optimization Methods 0.000 claims description 3
- 238000012216 screening Methods 0.000 claims 1
- 238000012549 training Methods 0.000 abstract description 12
- 238000004364 calculation method Methods 0.000 abstract description 5
- 230000002708 enhancing effect Effects 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 7
- 239000013598 vector Substances 0.000 description 4
- 238000001914 filtration Methods 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 238000012163 sequencing technique Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- -1 carrier Substances 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 239000000306 component Substances 0.000 description 1
- 238000009472 formulation Methods 0.000 description 1
- 239000004615 ingredient Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000006722 reduction reaction Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000007858 starting material Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
-
- 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)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Medical Informatics (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Processing Or Creating Images (AREA)
- Machine Translation (AREA)
Abstract
本发明公开了一种将梯度压缩算法开发注册到深度学习框架中的方法及系统,抽象与解压缩的通用算子,基于图形处理器实现通用算子并优化其性能,设计一套特定域语言来进一步降低梯度压缩算法的开发门槛,设计一个翻译器将特定域语言代码转换成可在图形处理器上编译并且重复利用其硬件特性以实现高性能的代码;实现一个包装器,支持将上一步得到的代码注册到不同的深度学习框架中,从而对上层开发者隐藏深度学习框架相关的扩展开发开销。以上设计能够在不影响计算正确性的前提下,极大降低图形处理器开发门开,简化梯度压缩算法开发与注册的流程,在图形处理器上实现高效率的梯度压缩算法,从而增强梯度压缩算法在实际训练中的应用。
Description
技术领域
本发明涉及深度学习训练技术领域,尤其涉及一种将梯度压缩算法开发注册到深度学习框架中的方法及系统。
背景技术
2015年美国亚马逊公司发表了论文《使用商业图形处理单元计算集群做可扩展分布式深度学习训练》(Scalable Distributed DNN Training Using Commodity GPU CloudComputing),其中介绍了两比特量化(TBQ)的梯度压缩算法,用于降低分布式集群中的通信量,后续此梯度压缩算法集成在开源深度学习框架MXNet中。2017年NPIS会议上发表了论文《三值梯度:用三值梯度来降低分布式深度学习中的通信量》(TernGrad:TernaryGradients to Reduce Communication in Distributed Deep Learning),后续此梯度压缩算法合并到了另一个深度学习框架PyTorch中。以两比特量化(TBQ)梯度压缩算法为例,它能将需要传输的梯度压缩成原来的十六分之一,大幅度降低分布式集群间的通信量。但是将梯度压缩算法应用于训练中却往往会遇到如下两点困难:
第一点,由于梯度压缩算法会将梯度做有损压缩,所以不能适用于所有类型的模型训练,因此当前流行的深度学习训练框架中集成的梯度压缩算法无法覆盖所有甚至大部分模型,需要自己实现并注册新的梯度压缩算法。为此学术界也提出了适用于许多梯度压缩算法,分别适用于不同类型的模型。第二点,如何在图形处理单元(GPU)上高效实现梯度压缩算法,并注册到不同的深度学习框架中。为了利用GPU的硬件特性,如海量的小计算单元,缓存特性等,上层开发者需要非常熟悉GPU开发,此外还需要熟悉深度学习框架的扩展开发,这会将许多算法工程师避之门外。另外即使是专业相关的开发者,也不一定能高效实现梯度压缩算法。例如集成在MXNet中的TBQ算法,其开源实现的性能是使用本发明实现版本的十分之一;合并入PyTorch开源项目中的TernGrad算法,其开源实现仅支持在中央处理器(CPU)上运行,其性能相当于是使用本发明实现在GPU上的版本的千分之一。过于低下的效率会在深度学习训练过程中增加额外的计算开销,影响训练的迭代速度。
发明内容
本发明的目的是提供一种将梯度压缩算法开发注册到深度学习框架中的方法及系统,在不影响计算正确性的前提下,极大降低面向图形处理器程序开发的门槛,简化梯度压缩算法开发与注册的流程,在图形处理器上实现高效率的梯度压缩算法,从而为梯度压缩算法在实际训练中的广泛应用提供了基础。
本发明的目的是通过以下技术方案实现的:
一种将梯度压缩算法开发并注册到深度学习框架中的方法,包括:
从已有的梯度压缩算法中抽取通用算子;
基于图形处理器对所述通用算子进行优化;
基于优化后的通用算子,利用设计的域语言编写梯度压缩算法的代码;
利用翻译器将代码转换为能够在图形处理器上编译的代码;
利用包装器为翻译器转换后的代码增加能够注册至不同深度学习框架的代码。
一种将梯度压缩算法开发并注册到深度学习框架中的系统,包括:
通用算子抽取单元,用于从已有的梯度压缩算法中抽取通用算子;
通用算子优化单元,基于图形处理器对所述通用算子进行优化;
代码编写单元,基于优化后的通用算子,利用设计的域语言编写梯度压缩算法的代码;
代码转换单元,用于利用翻译器将代码转换为能够在图形处理器上编译的代码;
注册单元,用于利用包装器为翻译器转换后的代码增加能够注册至不同深度学习框架的代码。
一种处理设备,包括:一个或多个处理器;存储器,用于存储一个或多个程序;
其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现前述的方法。
一种可读存储介质,存储有计算机程序,当计算机程序被处理器执行时实现前述的方法。
由上述本发明提供的技术方案可以看出,抽象与解压缩的通用算子,基于图形处理器实现通用算子并优化其性能,设计一套特定域语言来进一步降低梯度压缩算法的开发门槛,设计一个翻译器将特定域语言代码转换成可在图形处理器上编译并且重复利用其硬件特性以实现高性能的代码;实现一个包装器,支持将上一步得到的代码注册到不同的深度学习框架中,从而对上层开发者隐藏深度学习框架相关的扩展开发开销。以上设计能够在不影响计算正确性的前提下,极大降低图形处理器开发门开,简化梯度压缩算法开发与注册的流程,在图形处理器上实现高效率的梯度压缩算法,从而增强梯度压缩算法在实际训练中的应用。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他附图。
图1为本发明实施例提供的一种将梯度压缩算法开发注册到深度学习框架中的方法的流程图;
图2为本发明实施例提供的梯度压缩算法DGC的压缩部分的组成示意图;
图3为本发明实施例提供的4个通用算子组成梯度压缩算法TernGrad的压缩部分的示意图;
图4为本发明实施例提供的利用设计的域语言实现TBQ算法的压缩与解压缩部分代码的示意图;
图5为本发明实施例提供的使用设计的域语言实现TernGrad的压缩部分代码的示意图;
图6为本发明实施例提供的使用设计的域语言实现TernGrad的解压缩部分代码的示意图;
图7为本发明实施例提供的一种将梯度压缩算法开发注册到深度学习框架中的系统的示意图;
图8为本发明实施例提供的一种处理设备的示意图。
具体实施方式
下面结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明的保护范围。
首先对本文中可能使用的术语进行如下说明:
术语“包括”、“包含”、“含有”、“具有”或其它类似语义的描述,应被解释为非排它性的包括。例如:包括某技术特征要素(如原料、组分、成分、载体、剂型、材料、尺寸、零件、部件、机构、装置、步骤、工序、方法、反应条件、加工条件、参数、算法、信号、数据、产品或制品等),应被解释为不仅包括明确列出的某技术特征要素,还可以包括未明确列出的本领域公知的其它技术特征要素。
下面对本发明所提供的一种将梯度压缩算法开发并注册到深度学习框架中的方法进行详细描述。本发明实施例中未作详细描述的内容属于本领域专业技术人员公知的现有技术。本发明实施例中未注明具体条件者,按照本领域常规条件或制造商建议的条件进行。
如图1所示,一种将梯度压缩算法开发并注册到深度学习框架中的方法,主要包括如下步骤:
步骤1、从已有的梯度压缩算法中抽取通用算子。
本发明实施例中,通过调研学术界先进的梯度压缩算法,从中提取并总结7个通用算子,分别是排序(sort),筛选(filter),映射(map),规约(reduce),随机(random),拼接(concat)和分解(extract),开发者使用这7个算子可以组成绝大部分先进的梯度压缩算法。
图2展示了梯度压缩算法DGC的压缩部分的组成,图中左侧实线圆圈表示原有梯度,右侧虚线圆圈表示压缩后的梯度,圆角矩形表示通用算子;首先将在映射(map)中传入随机(random),得到若干随机且合法的索引,随后调用排序(sort)对得到的索引根据其对应的梯度值的绝对值大小做倒序排序,即可得到估计的阈值;然后根据得到的阈值,调用筛选(filter)将原有梯度中绝对值大于阈值的梯度与对应索引全部筛选出来;最后调用拼接(concat),将元数据、筛选出来的索引与梯度值拼接在一起,即得到压缩后的梯度。图3展示了可以使用4个通用算子:规约、映射、随机、拼接来组成梯度压缩算法TernGrad的压缩部分。
步骤2、基于图形处理器对所述通用算子进行优化。
本发明实施例中,利用图形处理器对所有通用算子做并行优化,并且结合压缩算法调用随机算子时不需要考虑加密、图形处理器在并行处理数据时易触发库冲突(Bankconflict)等特性加以优化,最终对上层开发者暴露7个应用程序编程接口(API),分别对应第一步中的7个通用算子功能。
优化后的通用算子能够搭建不同的梯度压缩算法;对于上层开发者而言,无需接触复杂的图形处理器优化,可以直接调用通用算子来搭建梯度压缩算法。
步骤3、基于优化后的通用算子,利用设计的域语言编写梯度压缩算法的代码。
本发明实施例中,设计了一套特定域语言(Domain Specific Language),其语法与C语法类似,支持普通的数组操作、函数调用、分支控制等常见语言特性,除此之外还支持直接调用7个通用算子、定义并操纵1、2或4比特的数据。
本发明实施例中,特定域语言可以对梯度压缩算法流程进行抽象,将其表达成多个通用算子的组合。
深度学习框架MXNet集成了两比特量化(Two-Bit Quantization,以下简称TBQ)算法。TBQ算法需要设定一个大于0的阈值参数(threshold),对用32位浮点数(float)向量表示的梯度,根据其每个元素的值为小于负threshold、大于threshold或介于负threshold与正threshold之间,将其量化成3种状态,结果可用两比特无符号整数向量表示。使用特定域语言实现TBQ压缩算法的代码,将代码划分为两部分:第一个部分为实现梯度压缩算法的压缩操作的代码,第二个部分为实现梯度压缩算法的解压缩操作的代码。第一个部分的代码包括:定义参数threshold来决定梯度如何被量化的代码、定义一个用户自定义函数castToUint2来将传入的浮点数压缩成一个类型为两比特无符号整数uint2的代码,以及压缩主体函数encode代码;第二个部分的代码包括:定义一个用户自定义函数castToFloat以将一个两比特无符号整数uint2还原成一个浮点数的代码,以及解压缩主体函数decode代码。
以图4为例,开发者可以用32行特定域语言实现这个算法;第1到23行实现了算法的压缩部分,其中第1到3行定义了TBQ压缩需要的参数threshold来决定梯度如何被量化;threshold在TBQ中的作用为:对于绝对值大于threshold的元素,压缩成±1,对于绝对值小于等于threshold的元素,压缩成0。第5到19行定义了一个用户自定义函数(user-definedfunction)castToUint2来把传入的浮点数压缩成一个类型为两比特无符号整数(uint2)。压缩主体函数(encode)代码从20行开始,以梯度(gradient),残差(residual)和参数(params)为输入,以压缩数据(compressed)为输出,在第21行,用户自定义函数castToUint2被传入通用算子映射(map)中来生成压缩后的梯度(Q),最后在第22行,使用通用算子拼接(concat)将压缩后的梯度(Q)存储到对应的输出(compressed)中;第25到32行为解压缩代码,第26到28行定义了一个用户自定义函数castToFloat以将一个两比特无符号整数(uint2)还原成一个浮点数。在第30行,通过调用通用算子分解(extract)以从压缩数据(compressed)中读取两比特无符号整数向量(Q2),最后在第31行,用户自定义函数castToFloat被传给通用算子映射(map)以用来生成解压后的梯度(gradient)。
以上算法的压缩部分会生成encode接口,解压缩部分会生成decode接口。这两部分并不是依次执行的。用户在调用encode接口对数据进行压缩后,一般典型的会将数据发送给其他节点,由其他节点调用decode接口解压,以达到解压缩的目的。
本领域技术人员可以理解,压缩与解压是互逆操作,Q与Q2在格式上是相同的,但是内容上不一定相同。
步骤4、利用翻译器将代码转换为能够在图形处理器上编译的代码。
本发明实施例中,所述翻译器对代码进行词分析、以及根据LL(1)文法并采用递归下降法做语法分析,再转换为能够在图形处理器上编译并行执行、以及能最小化存储体冲突的代码(例如,C++代码)。
通过词分析确定代码中通用算子的类别,根据通用算子的类别进行语法分析,由于TBQ算法较简单,而且使用的通用算子也较少,下面结合图5~图6对TernGrad算法的代码进行说明。
图5展示了用特定域语言实现的TernGrad压缩部分的代码。第11~14行计算得到了TernGrad压缩需要用到的数据min,max,gap,tail。第15行调用通用算子映射(map)来生成压缩后的梯度(Q)。在第16行,对于代码中的通用算子拼接(concat),其接受若干参数作为输入,接受一个变量作为输出,翻译器会分析每个输入参数的占用空间,将每个输入参数首尾相接依次存放在输出变量指向的地址空间中,翻译器会分析前4个参数params.bitwidth、tail、min、max(需要存储这4个参数才能顺利做后续的解压操作)的占用空间,分别为1字节、1字节、4字节、4字节,将输出参数compressed所指向空间的第一个字节用来存储参数params.bitwidth,第二个字节用来存储参数tail,第三到六个字节用来存储参数min,第七到十个字节用来存储参数max,剩下的空间用来存储Q。
以图5第7行为例,对于代码中的通用算子随机(random),翻译器根据尖括号中的参数float决定生成的随机数类型位浮点数,根据方括号中的参数0和1决定生成的随机数的上下界,转换成调用根据梯度压缩算法特性优化过的并行随机数生成函数的代码。
图6展示了用特定域语言实现的TernGrad解压部分的代码。第7~12行定义了解压缩主体函数(decode),它接收两个参数作为输入,分别是压缩后的数据(compressed)与用于存放解压后梯度的空间(gradient)。第9行调用了通用算子分解(extract)来将输入的压缩梯度(compressed)解析成5段数据:bitwidth,tail,min,max和两比特无符号整数向量Q。翻译器会分析第9行中的左值的前4个变量bitwidth、tail、min、max(TernGrad解压时候需要用到的参数)的占用空间,分别为1字节、1字节、4字节、4字节,并且对应类型分别为8比特无符号整数、8比特无符号整数、浮点数(32位)、浮点数(32位);compressed的第1个字节和第2个字节被以8比特无符号整数的方式解析,结果分别存储于bitwidth和tail中,第3到6个字节被以浮点数的方式解析,结果存储于min中,第7到10个字节被以浮点数的方式解析,结果存储于max中,Q定义在第3行,其类型为指向无符号整数的指针,其值将重指向compressed的第11位字节处;
对于代码中的通用算子映射(map)、筛选(filter)、规约(reduce)、以及排序(sort),翻译器会根据传入的参数,推导输入与输出之间的约束,分别转换成调用thrust库中map,thrust库中的copy_if,thrust库中的reduce,thrust库中的sort的代码;对于类型为1、2或4比特、有或无符号整数的单个变量或数组,翻译器会分析其占用空间大小,并以尾部补零的方式以字节为单位对齐,在操纵对应单个数据的时候,翻译器会用对的位操作将数据从单个字节中取出。
本领域技术人员可以理解,params.bitwidth表示encode部分接受bitwidth作为参数。bitwidth表示正常变量,这是因为:压缩时已经将bitwidth信息存入结果中,解压缩时可以从输入数据中直接获取,不需要通过传参得到。
步骤5、利用包装器为翻译器转换后的代码增加能够注册至不同深度学习框架的代码。
本发明实施例中,实现一个包装器将第四步得到的代码根据不同深度学习框架的注册方法,加一层用以注册的代码,以支持注册到不同的深度学习框架中,以使上层开发者最终可以在深度学习框架中使用Python接口调用C++实现的梯度压缩算法。
通过使用本发明实例,上层开发者可以用更少、更简洁的代码实现先进的梯度压缩算法,以梯度压缩算法DGC为例,开源项目中实现DGC并注册到深度学习框架TensorFlow中共计需要3167行代码,而使用本专利的发明,上层开发者总计只需要44行代码;通过使用本发明实例,上层开发者可以在不熟悉图形处理器开发、不熟悉深度学习框架的扩展开发的情况下,高效实现先进的梯度压缩算法,以集成在MXNet中的TBQ算法为例,其开源实现的性能是使用本发明实例实现版本的十分之一。
本发明实施例上述方案,抽象与解压缩的通用算子,基于图形处理器实现通用算子并优化其性能,设计一套特定域语言来进一步降低梯度压缩算法的开发门槛,设计一个翻译器将特定域语言代码转换成可在图形处理器上编译并且重复利用其硬件特性以实现高性能的代码;实现一个包装器,支持将上一步得到的代码注册到不同的深度学习框架中,从而对上层开发者隐藏深度学习框架相关的扩展开发开销。以上设计能够在不影响计算正确性的前提下,极大降低图形处理器开发门开,简化梯度压缩算法开发与注册的流程,在图形处理器上实现高效率的梯度压缩算法,从而增强梯度压缩算法在实际训练中的应用。
需要说明的是,本发明实施例中引入图4~图6所示的具体代码进行的介绍,主要是为了便于理解,并非构成限制;基于本发明实施例所记载的方案,本领域技术人员根据实际需要可以在其他代码中实施本发明。
本发明另一实施例还提供一种将梯度压缩算法开发并注册到深度学习框架中的系统,其主要用于实现前述实施例提供的方法,如图7所示,该系统主要包括:
通用算子抽取单元,用于从已有的梯度压缩算法中抽取通用算子;
通用算子优化单元,基于图形处理器对所述通用算子进行优化;
代码编写单元,基于优化后的通用算子,利用设计的域语言编写梯度压缩算法的代码;
代码转换单元,用于利用翻译器将代码转换为能够在图形处理器上编译的代码;
注册单元,用于利用包装器为翻译器转换后的代码增加能够注册至不同深度学习框架的代码。
需要说明的是,系统各模块所涉及的具体技术细节在之前的实施例中已经做了详细的介绍,故不再赘述。
本发明另一实施例还提供一种处理设备,如图8所示,其主要包括:一个或多个处理器;存储器,用于存储一个或多个程序;其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现前述实施例提供的方法。
进一步的,所述处理设备还包括至少一个输入设备与至少一个输出设备;在所述处理设备中,处理器、存储器、输入设备、输出设备之间通过总线连接。
本发明实施例中,所述存储器、输入设备与输出设备的具体类型不做限定;例如:
输入设备可以为触摸屏、图像采集设备、物理按键或者鼠标等;
输出设备可以为显示终端;
存储器可以为随机存取存储器(Random Access Memory,RAM),也可为非不稳定的存储器(non-volatile memory),例如磁盘存储器。
本发明另一实施例还提供一种可读存储介质,存储有计算机程序,当计算机程序被处理器执行时实现前述实施例提供的方法。
本发明实施例中可读存储介质作为计算机可读存储介质,可以设置于前述处理设备中,例如,作为处理设备中的存储器。此外,所述可读存储介质也可以是U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明披露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求书的保护范围为准。
Claims (8)
1.一种将梯度压缩算法开发并注册到深度学习框架中的方法,其特征在于,包括:
从已有的梯度压缩算法中抽取通用算子;
基于图形处理器对所述通用算子进行优化;
基于优化后的通用算子,利用设计的域语言编写梯度压缩算法的代码;
利用翻译器将代码转换为能够在图形处理器上编译的代码;
利用包装器为翻译器转换后的代码增加能够注册至不同深度学习框架的代码;
其中,所述利用翻译器将代码转换为能够在图形处理器上编译的代码包括:所述翻译器对代码进行词分析、以及根据LL(1)文法并采用递归下降法做语法分析,再转换为能够在图形处理器上编译并行执行、以及能最小化存储体冲突的代码;
通过词分析确定代码中通用算子的类别,根据通用算子的类别进行语法分析,包括:
对于代码中的通用算子拼接concat,其接受若干参数作为输入,接受一个变量作为输出,翻译器会分析每个输入参数的占用空间,将每个输入参数首尾相接依次存放在输出变量指向的地址空间中;
对于代码中的通用算子随机random,翻译器根据尖括号中的参数float决定生成的随机数类型位浮点数,根据方括号中的参数0和1决定生成的随机数的上下界,转换成调用根据梯度压缩算法特性优化过的并行随机数生成函数的代码;
对于代码中的通用算子分解extract,其接受一个输入参数,接受若干输出变量作为输出,翻译器会分析每个输出变量的占用空间,然后将输入变量划分成首尾相接的、与输入变量个数相同数量的分段,依次将每个分段按照每个输入参数类型解析,将解析出的值赋值给输入参数;对于代码中的通用算子映射map、筛选filter、规约reduce与排序sort,翻译器会根据传入的参数,推导输入与输出之间的约束,分别转换成调用thrust库中map,copy_if,reduct,sort的代码;
对于类型为1、2或4比特、有或无符号整数的单个变量或数组,翻译器会分析其占用空间大小,并以尾部补零的方式以字节为单位对齐,在操纵对应单个数据的时候,翻译器会用对的位操作将数据从单个字节中取出。
2.根据权利要求1所述的一种将梯度压缩算法开发并注册到深度学习框架中的方法,其特征在于,所述通用算子包括:排序、筛选、映射、规约、随机、拼接、以及分解。
3.根据权利要求1所述的一种将梯度压缩算法开发并注册到深度学习框架中的方法,其特征在于,所述基于图形处理器对所述通用算子进行优化包括:利用图形处理器对所有通用算子做并行优化,优化后的通用算子能够搭建不同的梯度压缩算法。
4.根据权利要求1所述的一种将梯度压缩算法开发并注册到深度学习框架中的方法,其特征在于,所述域语言能够支持数组操作、函数调用以及分支控制,还能够直接调用所有通用算子,定义并操纵1、2或4比特的数据;利用设计的域语言对梯度压缩算法流程进行抽象,表达成多个通用算子的组合。
5.根据权利要求1或4所述的一种将梯度压缩算法开发并注册到深度学习框架中的方法,其特征在于,对于两比特量化算法,利用设计的与语言编写相关的代码包括两部分:第一个部分为实现梯度压缩算法的压缩操作的代码,第二个部分为实现梯度压缩算法的解压缩操作的代码;其中:
第一个部分的代码包括:定义参数threshold来决定梯度如何被量化的代码、定义一个用户自定义函数castToUint2来将传入的浮点数压缩成一个类型为两比特无符号整数uint2的代码,以及压缩主体函数encode代码;
第二个部分的代码包括:定义一个用户自定义函数castToFloat以将一个两比特无符号整数uint2还原成一个浮点数的代码,以及解压缩主体函数decode代码。
6.一种将梯度压缩算法开发并注册到深度学习框架中的系统,其特征在于,包括:
通用算子抽取单元,用于从已有的梯度压缩算法中抽取通用算子;
通用算子优化单元,基于图形处理器对所述通用算子进行优化;
代码编写单元,基于优化后的通用算子,利用设计的域语言编写梯度压缩算法的代码;
代码转换单元,用于利用翻译器将代码转换为能够在图形处理器上编译的代码;
注册单元,用于利用包装器为翻译器转换后的代码增加能够注册至不同深度学习框架的代码;
其中,所述利用翻译器将代码转换为能够在图形处理器上编译的代码包括:所述翻译器对代码进行词分析、以及根据LL(1)文法并采用递归下降法做语法分析,再转换为能够在图形处理器上编译并行执行、以及能最小化存储体冲突的代码;
通过词分析确定代码中通用算子的类别,根据通用算子的类别进行语法分析,包括:
对于代码中的通用算子拼接concat,其接受若干参数作为输入,接受一个变量作为输出,翻译器会分析每个输入参数的占用空间,将每个输入参数首尾相接依次存放在输出变量指向的地址空间中;
对于代码中的通用算子随机random,翻译器根据尖括号中的参数float决定生成的随机数类型位浮点数,根据方括号中的参数0和1决定生成的随机数的上下界,转换成调用根据梯度压缩算法特性优化过的并行随机数生成函数的代码;
对于代码中的通用算子分解extract,其接受一个输入参数,接受若干输出变量作为输出,翻译器会分析每个输出变量的占用空间,然后将输入变量划分成首尾相接的、与输入变量个数相同数量的分段,依次将每个分段按照每个输入参数类型解析,将解析出的值赋值给输入参数;对于代码中的通用算子映射map、筛选filter、规约reduce与排序sort,翻译器会根据传入的参数,推导输入与输出之间的约束,分别转换成调用thrust库中map,copy_if,reduct,sort的代码;
对于类型为1、2或4比特、有或无符号整数的单个变量或数组,翻译器会分析其占用空间大小,并以尾部补零的方式以字节为单位对齐,在操纵对应单个数据的时候,翻译器会用对的位操作将数据从单个字节中取出。
7.一种处理设备,其特征在于,包括:一个或多个处理器;存储器,用于存储一个或多个程序;
其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如权利要求1~5任一项所述的方法。
8.一种可读存储介质,存储有计算机程序,其特征在于,当计算机程序被处理器执行时实现如权利要求1~5任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110894781.3A CN113592701B (zh) | 2021-08-05 | 2021-08-05 | 将梯度压缩算法开发注册到深度学习框架中的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110894781.3A CN113592701B (zh) | 2021-08-05 | 2021-08-05 | 将梯度压缩算法开发注册到深度学习框架中的方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113592701A CN113592701A (zh) | 2021-11-02 |
CN113592701B true CN113592701B (zh) | 2024-03-29 |
Family
ID=78255268
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110894781.3A Active CN113592701B (zh) | 2021-08-05 | 2021-08-05 | 将梯度压缩算法开发注册到深度学习框架中的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113592701B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6738967B1 (en) * | 2000-03-14 | 2004-05-18 | Microsoft Corporation | Compiling for multiple virtual machines targeting different processor architectures |
CN109951438A (zh) * | 2019-01-15 | 2019-06-28 | 中国科学院信息工程研究所 | 一种分布式深度学习的通信优化方法及系统 |
CN112766512A (zh) * | 2021-01-25 | 2021-05-07 | 北京大学(天津滨海)新一代信息技术研究院 | 基于元算子的深度学习框架诊断系统、方法、装置、设备及介质 |
-
2021
- 2021-08-05 CN CN202110894781.3A patent/CN113592701B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6738967B1 (en) * | 2000-03-14 | 2004-05-18 | Microsoft Corporation | Compiling for multiple virtual machines targeting different processor architectures |
CN109951438A (zh) * | 2019-01-15 | 2019-06-28 | 中国科学院信息工程研究所 | 一种分布式深度学习的通信优化方法及系统 |
CN112766512A (zh) * | 2021-01-25 | 2021-05-07 | 北京大学(天津滨海)新一代信息技术研究院 | 基于元算子的深度学习框架诊断系统、方法、装置、设备及介质 |
Non-Patent Citations (1)
Title |
---|
一种运算和数据协同优化的深度学习编译框架;吴林阳;杜伟健;陈小兵;庄毅敏;;高技术通讯(02);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN113592701A (zh) | 2021-11-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11599770B2 (en) | Methods and devices for programming a state machine engine | |
US11922021B2 (en) | Arrangements for storing more data in memory when using a hierarchical memory structure | |
EP2788902B1 (en) | Techniques for more efficient usage of memory-to-cpu bandwidth | |
US8902087B1 (en) | Data decompression utilizing pre-expanded dictionaries during decompression | |
US11711423B2 (en) | Arrangements for communicating and processing data in a computing system | |
US10671295B2 (en) | Methods and systems for using state vector data in a state machine engine | |
US7958133B2 (en) | Application conversion of source data | |
CN108287877B (zh) | 一种rib渲染压缩文件fpga压缩/解压缩系统及硬件解压方法 | |
CN113055017A (zh) | 数据压缩方法及计算设备 | |
CN114047929B (zh) | 基于知识增强的用户定义函数识别方法、装置及介质 | |
CN111488422A (zh) | 一种结构化数据样本的增量方法、装置、电子设备及介质 | |
CN113592701B (zh) | 将梯度压缩算法开发注册到深度学习框架中的方法及系统 | |
WO2023159820A1 (zh) | 图像压缩方法、图像解压缩方法及装置 | |
US20210157485A1 (en) | Pattern-based cache block compression | |
CN111049836A (zh) | 数据处理方法、电子设备及计算机可读存储介质 | |
CN113031959B (zh) | 变量替换方法、装置、系统及存储介质 | |
CN117498987B (zh) | 一种应用于大规模网络数据传输的方法 | |
US11537625B1 (en) | Using structured data templates and invocation statements to dynamically define values for efficient data encoding | |
CN115757307A (zh) | 数据压缩方法、装置、电子设备及存储介质 | |
CN116522915A (zh) | 支持二进制数据字面值的词法分析方法、系统及响应方法 | |
JP2022182225A (ja) | データ処理システムおよびデータ処理方法 | |
CN115118385A (zh) | 解码方法及装置 | |
KR20210119907A (ko) | 가중치 값의 압축 및 압축 해제 | |
KR20240004777A (ko) | 압축 도메인에서의 컴퓨터 비전 작업 모델들의 온라인 훈련 | |
CN117389571A (zh) | 一种基于opencl的jpeg2000中t1并行解码方法和装置 |
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 |