CN114598631A - 面向神经网络计算的分布式数据路由的建模方法和装置 - Google Patents
面向神经网络计算的分布式数据路由的建模方法和装置 Download PDFInfo
- Publication number
- CN114598631A CN114598631A CN202210455426.0A CN202210455426A CN114598631A CN 114598631 A CN114598631 A CN 114598631A CN 202210455426 A CN202210455426 A CN 202210455426A CN 114598631 A CN114598631 A CN 114598631A
- Authority
- CN
- China
- Prior art keywords
- attribute
- tensor
- distributed
- attributes
- logic
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 149
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 31
- 238000004891 communication Methods 0.000 claims abstract description 131
- 230000009467 reduction Effects 0.000 claims abstract description 32
- 238000013507 mapping Methods 0.000 claims abstract description 4
- 230000008569 process Effects 0.000 claims description 98
- 238000006243 chemical reaction Methods 0.000 claims description 32
- 238000009795 derivation Methods 0.000 claims description 28
- 230000005540 biological transmission Effects 0.000 claims description 24
- 238000003892 spreading Methods 0.000 claims description 13
- 230000007480 spreading Effects 0.000 claims description 13
- 238000004364 calculation method Methods 0.000 claims description 4
- 239000002131 composite material Substances 0.000 claims description 4
- 238000003723 Smelting Methods 0.000 claims 1
- 239000006185 dispersion Substances 0.000 claims 1
- 238000011161 development Methods 0.000 abstract description 5
- 238000013461 design Methods 0.000 abstract description 3
- 239000000872 buffer Substances 0.000 description 10
- 238000003860 storage Methods 0.000 description 9
- 238000012545 processing Methods 0.000 description 8
- 239000011159 matrix material Substances 0.000 description 7
- FFBHFFJDDLITSX-UHFFFAOYSA-N benzyl N-[2-hydroxy-4-(3-oxomorpholin-4-yl)phenyl]carbamate Chemical compound OC1=C(NC(=O)OCC2=CC=CC=C2)C=CC(=C1)N1CCOCC1=O FFBHFFJDDLITSX-UHFFFAOYSA-N 0.000 description 6
- 150000001875 compounds Chemical class 0.000 description 5
- 238000003062 neural network model Methods 0.000 description 5
- 238000013459 approach Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 238000012549 training Methods 0.000 description 3
- 241001062472 Stokellia anisodon Species 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000013135 deep learning Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 240000006829 Ficus sundaica Species 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000004931 aggregating effect Effects 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000009792 diffusion process Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/14—Network analysis or design
- H04L41/145—Network analysis or design involving simulating, designing, planning or modelling of a network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/02—Topology update or discovery
- H04L45/08—Learning-based routing, e.g. using neural networks or artificial intelligence
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0803—Configuration setting
- H04L41/0806—Configuration setting for initial configuration or provisioning, e.g. plug-and-play
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/16—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks using machine learning or artificial intelligence
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/44—Distributed routing
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- Medical Informatics (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Databases & Information Systems (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Health & Medical Sciences (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供了一种面向神经网络计算的分布式数据路由的建模方法和装置,包括如下步骤:S1:设计物理张量的分布式属性:将逻辑张量与物理张量的映射关系抽象为广播属性、散播属性和局部规约属性三种分布式属性;S2:推演输出张量的分布式属性:指定输入张量的分布式属性,然后根据已知的输入张量的分布式属性推演输出张量的合法分布式属性;S3:根据分布式属性情形判断是否需要插入中间通信原语得到局部物理张量的分布式属性;利用所述的面向神经网络计算的分布式数据路由的建模方法和装置搭建模型,分布式设计和开发的难度低,推动了深度神经网络大模型落地应用的发展。
Description
技术领域
本发明涉及基于特定计算模型的计算机系统领域,特别涉及一种面向神经网络计算的分布式数据路由的建模方法和装置。
背景技术
随着人工智能产业化应用的快速发展,大规模深度神经网络模型的分布式训练系统越来越成为学术界和工业界的研究热点。已有的深度学习编译器在编译神经网络分布式模型时将全局逻辑计算图产生的张量数据部署到不同设备进程的物理计算图的过程中,缺少统一的分布式路由策略。
发明内容
本发明的目的在于提供一种面向神经网络计算的分布式数据路由的建模方法和装置,以克服现有技术中的不足。
为实现上述目的,本发明提供如下技术方案:
本发明公开了一种面向神经网络计算的分布式数据路由的建模方法,包括如下步骤:
S1:设计物理张量的分布式属性:将逻辑张量与物理张量的映射关系抽象为广播属性、散播属性和局部规约属性三种分布式属性;
S2:推演输出张量的分布式属性:指定输入张量的分布式属性,然后根据已知的输入张量的分布式属性推演输出张量的合法分布式属性;
S3:根据分布式属性情形判断是否需要插入中间通信原语得到局部物理张量的分布式属性;
S4:推演中间通信原语类型,具体子步骤如下:
S41:推演生产者算子的输出张量的分布式属性:根据生产者算子的输入张量的分布式属性,推演输出张量的合法分布式属性;
S42:推演中间通信原语:根据生产者算子输出张量的分布式属性和消费者算子所需的输入张量的分布式属性,推演出所需的中间通信原语类型;
S5:推导出中间通信原语的传输代价:推导出不同分布式属性之间进行转换的通信代价;
S6:推导中间通信原语的建模方式,子步骤如下:
S61:定义基本的原子操作;
S62:构建复杂操作:复杂操作由基本原子操作复合而成;
采用或方式构建复杂目标操作,获取的目标操作是多个原子操作的并联关系;
采用分冶方式构建复杂操作,获取的目标操作是多个原子操作通过中间分布式属性的串联关系;
采用复合方式构建复杂操作,所述复合方式指通过串联和并联组合使用构建更加复杂的目标操作;
S7:插入传输代价最小的中间通信原语:选择传输代价最小的原语,将其插入到全局逻辑张量和局部物理张量之间。
作为优选的,所述步骤S1中:所述步骤S1中:所述广播属性是指将逻辑张量的数据发送到集群中的其他节点;其中所述散播属性是指将逻辑张量的数据沿着指定维度进行划分并散播至其他节点,定义沿着横轴切分所得张量分量的散播属性为S(0),沿着纵轴切分所得张量分量的散播属性为S(1);所述局部规约属性反映不同逻辑张量的分量分发到物理设备进程上进行计算,计算所得的局部物理张量是不同逻辑张量切分之前完整张量进行计算所得的全局逻辑张量的部分值,上述局部物理张量与全局逻辑张量的形状一致,全局逻辑张量可以通过对所有逻辑张量分量计算所得的局部物理张量进行逐元素规约操作来获取。
作为优选的,所述步骤S3具体过程如下:对于存在生产消费关系的相邻算子之间,当出现同一个逻辑张量对于它的生产者算子产生的分布式属性和消费者算子所需的分布式属性不同的情形,需要在所述逻辑张量的生产者算子与消费者算子之间插入中间通信原语,否则,不需要插入中间通信原语。
作为优选的,所述步骤S5的具体子步骤如下:
S51:推导散播属性转换为任意分布式属性的通信代价,包括如下类型:
S52:局部规约属性转换为任意分布式属性的通信代价,包括如下类型:
作为优选的,所述步骤S5中:对于将输入张量的广播属性转换为中间通信原语输出张量的散播属性的情形,其中输出张量可以直接从位于同一设备的输入张量获取数据,因此,此情形中所述中间通信原语的传输代价为0。
作为优选的,所述步骤S61的具体子步骤如下:
S616:定义将全局逻辑张量部署为12P局部物理分布式关系的原子操作为:将全局逻辑张量部署到不同设备进程中,其中一个设备进程放置的物理张量是全局逻辑张量的拷贝,其他设备进程只放置形状与全局逻辑张量一致但数值全部置为零的物理张量。
作为优选的,所述或方式构建复杂目标操作的具体方式为:
目标操作 X2W=(原子操作I2W)|(原子操作O2W);
其中,如果输入输出张量的分布式属性符合原子操作I2W和原子操作O2W中的任意一种分布式属性推导结果,则满足目标操作 X2W的推导结果;其中X表示任意一种分布式属性,所述X可以用其他分布式属性代替,W表示指定的某一种分布式属性,I表示输入的分布式属性,O表示输出的分布式属性,2表示分布式属性之间的转换过程,X2W 表示将分布式属性X转换为分布式属性W。
作为优选的,所述分冶方式构建复杂操作的具体方式为:
目标操作 I2O=分冶(原子操作 I2M,原子操作 M2O);
其中,目标操作I2O可以通过中间状态的分布式属性M串联两个原子操作 I2M和M2O,如果输入张量的分布式属性I和中间分布式属性M符合原子操作I2M的分布式属性推导结果,而且中间分布式属性M和输出张量的分布式属性O符合原子操作M2O的分布式属性推导结果,则满足目标操作 I2O的分布式属性的推导结果;其中I表示输入的分布式属性,O表示输出的分布式属性,2表示分布式属性之间的转换过程。
作为优选的,所述步骤S7具体方式为:基于上述步骤获取到不同的推导分布式属性的路由操作,从所有路由操作中选择通信代价最小的操作作为最终的推导所需局部物理张量分布式属性的路由建模方法,最后将所选择方法对应的中间通信原语插入全局逻辑张量与局部物理张量之间。
本发明还公开了一种面向神经网络计算的分布式数据路由的建模装置,所述装置包括存储器和一个或多个处理器,所述存储器中存储有可执行代码,所述一个或多个处理器执行所述可执行代码时,用于实现上述的面向神经网络计算的分布式数据路由的建模方法。
本发明的有益效果:本发明首先设计了全局逻辑张量映射到不同设备进程上的物理张量的分布式属性,设置不同的分布式属性可以为神经网络模型的不同计算子图定制并行策略,既满足用户灵活地进行分布式训练调试,也可以得到分布式模型的局部最优解;其次,构建了由全局逻辑张量部署到不同设备进程的局部物理张量过程中分布式数据路由的建模方法;最后,选择所述分布式数据路由方法产生的最小通信代价的中间通信原语,将所述原语插入全局逻辑张量和局部物理张量之间。最终得到不同设备进程上的局部物理张量所需的分布式属性。研究人员和工程应用者开发分布式模型的过程中,利用所述的面向神经网络计算的分布式数据路由的建模方法和装置搭建模型,分布式设计和开发的难度低,推动了深度神经网络大模型落地应用的发展。
附图说明
图1是用于神经网络计算的分布式数据路由的建模流程;
图2是局部规约属性示意图;
图3是存在生产消费关系的矩阵乘算子之间插入中间通信原语 All Gather的过程;
图4是散播属性Si转换为散播属性Sj所需中间通信原语的推导过程;
图5是散播属性S转换为广播属性B所需中间通信原语的推导过程;
图6是局部规约属性转换为散播属性的通信代价的推导过程;
图7是局部规约属性转换为广播属性的通信代价的推导过程;
图8是将全局逻辑张量部署为12P局部物理分布式关系的原子操作;
图10是利用分冶方式构建复杂操作12S的过程;
图11是利用复合方式构建复杂操作12X的过程;
图12是本发明实施例的装置示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明了,下面通过附图及实施例,对本发明进行进一步详细说明。但是应该理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限制本发明的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本发明的概念。
本发明实施例提供一种面向神经网络计算的分布式数据路由的建模方法,提供了一种深度学习训练系统中用于神经网络模型计算的动态图执行方法。所述面向神经网络计算的分布式数据路由的建模方法包括三个主要过程:物理张量分布式属性的设计、分布式数据路由方法的建模和自动插入分布式数据路由算子。
如图1所示,本发明实施例提供了一种面向神经网络计算的分布式数据路由的建模方法,包括根据输入的全局逻辑张量的分布式属性,推导各个设备进程上局部物理张量的分布式属性,判断是否需要借助中间通信原语得到局部物理张量的分布式属性,如果需要插入中间原语,则推导中间原语的类型和传输代价,选择传输代价最小的原语,将其插入到全局逻辑张量和局部物理张量之间,获取局部物理张量的分布式属性;如果不需要插入中间原语,则直接根据全局张量的分布式属性推导局部物理张量的分布式属性,具体过程如下:
S1:设计物理张量的分布式属性;
S2:推演输出张量的分布式属性;
S3:判断是否需要插入中间通信原语得到局部物理张量的分布式属性;
S4:推演中间通信原语类型;
S5:推导出中间通信原语的传输代价;
S6:推导中间通信原语的建模方式;
S7:插入传输代价最小的中间通信原语。
所述步骤S2中,所述物理张量的分布式属性包括广播属性、散播属性和局部规约属性,设计包括如下过程:
将逻辑张量与物理张量的映射关系抽象为三种分布式属性。
(1)设计广播属性。所述广播属性是指将逻辑张量的数据发送到集群中的其他节点,那么就可以使用广播属性。每个设备进程上的物理张量都是逻辑张量的一份拷贝。所述广播属性记作B。
(2)设计散播属性。所述散播属性是指将逻辑张量的数据沿着指定维度进行划分并散播至其他节点。定义沿着横轴切分所得张量分量的散播属性为S(0);沿着纵轴切分所得张量分量的散播属性为S(1)。各个设备进程上实际的物理张量是通过沿着指定维度切分逻辑张量所得的。散播属性与广播属性非常相似,都是一对多的通信方式,不同的是广播属性的逻辑张量将相同的数据发送给所有节点的物理设备进程,而散播属性则是将数据的不同部分,按需发送给不同节点的物理设备进程。
(3)设计局部规约属性。所述局部规约属性反映不同逻辑张量的分量分发到物理设备进程上进行计算,上述计算所得的局部物理张量结果是不同逻辑张量切分之前完整张量进行计算所得的全局逻辑张量的部分值,上述局部物理张量结果与全局逻辑张量结果的形状一致,全局逻辑张量结果可以通过对所有逻辑张量分量计算所得的局部物理张量结果进行逐元素规约操作来获取。所述局部规约属性记作P。
如图2所示的局部规约属性,设备进程0上放置具有散播属性S(1)的逻辑张量U的分量 U0和具有散播属性S(0)的逻辑张量V的分量 V0,利用设备进程0上的物理张量U0和V0进行计算,得到局部物理张量Y0。类似地,获取设备进程1上的物理张量U1和V1,然后进行计算,获得局部物理张量Y1。利用逻辑张量U和V进行计算,获得全局逻辑张量Y。将所述局部物理张量Y0 和Y1进行规约求和可以得到全局逻辑张量Y。而且,局部物理张量Y0和Y1的形状与全局逻辑张量Y的相同。
所述步骤S2已知算子输入张量的分布式属性,根据输入张量的属性直接推演输出张量的分布式属性,具体过程如下:
S21:指定输入张量的分布式属性;
S22:根据输入张量的分布式属性推演输出张量的合法分布式属性。
对于矩阵乘算子,如表格1所示,指定了输入张量的分布式属性的所有情形,推导出输出张量对应的合法分布式属性。算子输入输出张量的分布式属性可以具体地指定该算子的并行策略。对于矩阵乘算子,当输入数据张量 X 是散播属性S(0)、输入权重张量 W 是广播属性B,则推导出输出张量的分布式属性是散播属性S(0),表示所述算子具体执行数据并行的分布式策略;当输入数据张量 X 是广播属性B、输入权重张量是散播属性S(1),则推导出输出张量的分布式属性是散播属性S(1),表示所述算子具体执行模型并行的分布式策略。
表格1. 矩阵乘算子的合法分布式属性
所述步骤S3判断是否需要插入中间通信原语得到局部物理张量的分布式属性:对于存在生产消费关系的相邻算子之间,当出现同一个逻辑张量对于它的生产者算子产生的分布式属性和消费者算子所需的分布式属性不同的情形,需要在所述逻辑张量的生产者算子与消费者算子之间插入中间通信原语,否则,不需要插入中间通信原语。
所述步骤S4的具体步骤如下:
S41:推演生产者算子的输出张量的分布式属性:根据生产者算子的输入张量的分布式属性,推演输出张量的合法分布式属性;
S42:推演中间通信原语:根据生产者算子输出张量的分布式属性和消费者算子所需的输入张量的分布式属性,推演出所需的中间通信原语类型;
图3 展示了设备进程0和设备进程1上分别部署了两个存在生产-消费关系的矩阵乘算子。生产者算子产生的输出张量的分布式属性均为散播属性S(0),消费者算子期望的输入张量的分布式属性均为广播属性B。图3演示了根据生产者输出张量的散播属性S(0)和消费者所期望输入张量的广播属性B推演所需插入的中间通信原语 AllGather(全收集原语)的过程。推导中间通信原语的过程如下:消费者算子矩阵乘1所需的输入张量的广播属性B决定了每个设备进程上所需的输入张量需要聚合所有设备进程上的生产者算子矩阵乘0的输出张量的数据。通信原语AllGather可以实现发送多个元素到多个设备进程。对于分发在所有设备进程上的一组数据来说,All Gather会收集所有数据到所有设备进程上。因此推导出中间通信原语的类型为AllGather 算子。
所述步骤S5推导中间通信原语的传输代价包括如下过程:所述插入的中间通信原语会引起传输代价,通过选择通信原语所引起的最低传输开销的分布式属性来确定最优并行策略。接下来推导通信原语的输入张量和输出张量进行分布式属性转换时分别在同一设备与跨设备两种分布式情况下的传输代价。跨设备之间的张量的分布式属性转换总是会带来传输开销。然而同一设备上的张量的分布式属性转换可以不发生数据迁移。对于将输入张量的广播属性B转换为中间通信原语输出张量的散播属性S的情形,其中输出张量可以直接从位于同一设备的输入张量获取数据,所以此情形中所述中间通信原语的传输代价为0。
表格2. 不同分布式属性之间进行转换的通信代价
所述推导不同分布式属性之间进行转换的通信代价,包括如下过程:
S51:散播属性转换为任意分布式属性的通信代价:
(1)散播属性Si转换为散播属性Sj的通信代价。图4展示了散播属性Si转换为散播属性Sj所需中间通信原语的推导过程。所述Si、Sj分别为S(0)、S(1)或所述Si、Sj分别为S(1)、S(0)。设备0上放置由两块数据A1和B1组成的具有散播属性S(0)的或张量,其中B1为空数据。设备1上放置由两块数据A2和B2组成的具有散播属性S(0)的张量,其中A2为空数据。将设备0和设备1上的第0块数据A1和A2发送给设备0,得到设备0上具有散播属性S(1)的张量;将设备0和设备1上的第1块数据B1和B2发送给设备1,得到设备1上具有散播属性S(1) 的张量。
每一个设备进程的发送缓冲区和接收缓冲区都是一个分为若干个数据块的数组。通信原语All2All的具体操作是:将所有设备进程(包括设备0和设备1)的发送缓冲区中的第i块数据发送给设备进程i的接收缓冲区。因此,上述将散播属性Si转换为散播属性Sj的转换过程可通过中间通信原语All2All 完成,并且在跨设备0和设备1之间转换过程中所产生的传输数据量为全局逻辑张量的大小。
(2)散播属性S转换为广播属性B的通信代价。图5展示了散播属性S 转换为广播属性B所需中间通信原语的推导过程。将所述设备0上具有散播属性S(0) 的A1数据块和设备1上具有散播属性S(0) 的B2数据块发送到设备1进程中的接收缓冲区上。上述过程可通过通信原语 Gather(收集原语)完成。然后将设备1进程中接收缓冲区的数据广播到设备0进程中的接收缓冲区上,所述过程可以通过通信原语 Broadcast(广播原语)完成。上述整个过程也可以通过通信原语AllGather(全收集原语)一次性操作完成,并且由于上述过程中最后一步需要将聚合后的张量广播到所有输出设备进程的接收缓冲区,所以将散播属性S转换为广播属性B的通信代价为输出张量的设备进程数量与全局逻辑张量大小的乘积。
S52:局部规约属性转换为任意分布式属性的通信代价:
(1)局部规约属性P转换为散播属性S的通信代价。图6展示了局部规约属性转换为散播属性的通信代价的推导过程。将设备进程0和设备进程1上的数据进行规约操作,然后将规约结果写入指定设备进程的接收缓冲区,所述步骤可以通过通信原语 Reduce (规约原语)操作完成。最后对所述指定设备进程中的数据进行划分,并将数据的不同部分散播至设备进程0和设备进程1,所述步骤可以通过Scatter(散发原语)操作完成。上述整个过程也可以通过通信原语 ReduceScatter(规约-散发原语)一次性操作完成。由于对于设备0进程和设备1进程中的两个具有局部规约属性P 的张量进行Reduce 操作时,虽然设备0进程中的第1块数据B1和设备1进程中的第0块数据A2为空数据,但局部规约属性P决定了每个设备进程中的张量的形状与全局逻辑张量的完整形状保持一致,所以将局部规约属性P转换为散播属性S的通信代价为输入张量的设备进程数量与全局逻辑张量大小的乘积。
(2)局部规约属性P转换为广播属性B的通信代价。图7展示了局部规约属性转换为广播属性的通信代价的推导过程。将设备进程0和设备进程1上的数据进行规约操作,然后将规约结果写入指定设备进程的接收缓冲区,所述步骤可以通过通信原语 Reduce (规约原语)操作完成,并且产生大小为数据量的传输代价,最后将所述指定设备进程中的数据广播至设备进程0和设备进程1,所述步骤可以通过Broadcast(广播原语)操作完成,并且产生大小为数据量的传输代价,其中是放置输出张量的设备进程数量。上述整个过程也可以通过通信原语 AllReduce(全规约原语)一次性操作完成,并且一共产生大小为数据量的传输代价。
所述步骤S6包括如下过程:所述推导中间通信原语的类型设计了推导中间通信原语的表达式,使得添加新的中间通信原语更加方便,并且可以对已有通信原语进行组合,扩展已有的中间通信原语的类型。当出现输入张量的分布式属性与所推导的分布式属性不一致的情形,则需要通过插入中间原语将输入张量的分布式属性转换为实际推导所需的分布式属性。
S61:定义基本的原子操作,子步骤如下:
S611:定义将散播属性Si转换为散播属性Sj的原子操作为All2All通信原语;
S612:定义将散播属性 S转换为广播属性B的原子操作为AllGather通信原语;
S613:定义将局部规约属性P转换为散播属性S的原子操作为ReduceScatter通信原语;
S614:定义将局部规约属性P转换为广播属性B的原子操作为AllReduce通信原语;
S615:定义将分布式属性X转换为相同的分布式属性X的原子操作为Identity(恒等原语),由于输入输出张量的分布式属性完全相同,所述Identity操作是一个拷贝操作,表示将输入张量拷贝到输出张量;表格3展示了所定义的基本原子操作的中间原语;
表格3. 定义基本的原子操作。
S616:定义将全局逻辑张量部署为12P局部物理分布式关系的原子操作为:将全局逻辑张量部署到不同设备进程中,其中一个设备进程放置的物理张量是全局逻辑张量的拷贝,其他设备进程只放置形状与全局逻辑张量一致但数值全部置为零的物理张量。图8展示了将全局逻辑张量部署为12P局部物理分布式关系的原子操作。
S62:复杂操作的建模。所述复杂操作由基本原子操作复合而成:
其中,如果输入输出张量的分布式属性符合原子操作I2W和原子操作O2W中的任意一种分布式属性推导结果,则满足目标操作X2W的推导结果。所述或 方式获取所得的目标操作是多个原子操作的并联关系。图9展示了利用或 的复合操作构建目标操作X2B 的过程,其中其中X表示任意一种分布式属性,所述X可以用其他分布式属性代替,W表示指定的某一种分布式属性,I表示输入的分布式属性,O表示输出的分布式属性,2表示分布式属性之间的转换过程,X2W 表示将分布式属性X转换为分布式属性W。构建任意分布式属性转换为广播属性的目标操作X2B的过程:只要符合以下原子操作B2B、P2B、S2B中的任意一种分布式属性推导结果,就满足目标操作X2B的分布式属性的推导结果。
(2)采用分冶方式构建复杂操作,定义所述分冶方式如下:
其中,目标操作I2O可以通过中间状态的分布式属性M串联两个原子操作I2M和M2O。如果输入张量的分布式属性I和中间分布式属性M符合原子操作I2M的分布式属性推导结果,而且中间分布式属性M和输出张量的分布式属性O符合原子操作M2O的分布式属性推导结果,则满足目标操作I2O的分布式属性的推导结果,其中I表示输入的分布式属性,O表示输出的分布式属性,2表示分布式属性之间的转换过程。所述分冶方式是多个原子操作通过中间分布式属性的串联关系。图10展示了利用分冶方式构建复杂操作12S的过程。
(3)采用复合方式构建复杂操作。所述复合方式指通过串联和并联组合使用构建更加复杂的目标操作。图11展示了利用复合方式构建复杂操作12X的过程。
所述步骤S7插入传输代价最小的中间通信原语包括如下过程:选择利用上述局部物理张量分布式属性推导方法获取到不同的推导分布式属性的路由操作,从所述路由操作中选择通信代价最小的操作作为最终的推导所需局部物理张量分布式属性的路由建模方法,最后将所选择方法对应的中间通信原语插入全局逻辑张量与局部物理张量之间。
参见图12,本发明实施例还提供了一种面向神经网络计算的分布式数据路由的建模装置,还包括存储器和一个或多个处理器,存储器中存储有可执行代码,所述一个或多个处理器执行所述可执行代码时,用于实现上述实施例中的面向神经网络模型计算的中间表示生成方法。
本发明一种面向神经网络计算的分布式数据路由的建模装置的实施例可以应用在任意具备数据处理能力的设备上,该任意具备数据处理能力的设备可以为诸如计算机等设备或装置。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在任意具备数据处理能力的设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图12所示,为本发明一种面向神经网络计算的分布式数据路由的建模装置所在任意具备数据处理能力的设备的一种硬件结构图,除了图12所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的任意具备数据处理能力的设备通常根据该任意具备数据处理能力的设备的实际功能,还可以包括其他硬件,对此不再赘述。上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本发明方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本发明实施例还提供一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时,实现上述实施例中的面向神经网络模型计算的中间表示生成方法。
所述计算机可读存储介质可以是前述任一实施例所述的任意具备数据处理能力的设备的内部存储单元,例如硬盘或内存。所述计算机可读存储介质也可以是任意具备数据处理能力的设备的外部存储设备,例如所述设备上配备的插接式硬盘、智能存储卡(Smart Media Card,SMC)、SD卡、闪存卡(Flash Card)等。进一步的,所述计算机可读存储介质还可以既包括任意具备数据处理能力的设备的内部存储单元也包括外部存储设备。所述计算机可读存储介质用于存储所述计算机程序以及所述任意具备数据处理能力的设备所需的其他程序和数据,还可以用于暂时地存储已经输出或者将要输出的数据。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换或改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种面向神经网络计算的分布式数据路由的建模方法,其特征在于,包括如下步骤:
S1:设计物理张量的分布式属性:将逻辑张量与物理张量的映射关系抽象为广播属性、散播属性和局部规约属性三种分布式属性;
S2:推演输出张量的分布式属性:指定输入张量的分布式属性,然后根据已知的输入张量的分布式属性推演输出张量的合法分布式属性;
S3:根据分布式属性情形判断是否需要插入中间通信原语得到局部物理张量的分布式属性;
S4:推演中间通信原语类型,具体子步骤如下:
S41:推演生产者算子的输出张量的分布式属性:根据生产者算子的输入张量的分布式属性,推演输出张量的合法分布式属性;
S42:推演中间通信原语:根据生产者算子输出张量的分布式属性和消费者算子所需的输入张量的分布式属性,推演出所需的中间通信原语类型;
S5:推导出中间通信原语的传输代价:推导出不同分布式属性之间进行转换的通信代价;
S6:推导中间通信原语的建模方式,子步骤如下:
S61:定义基本的原子操作;
S62:构建复杂操作:复杂操作由基本原子操作复合而成;
采用或方式构建复杂目标操作,获取的目标操作是多个原子操作的并联关系;
采用分冶方式构建复杂操作,获取的目标操作是多个原子操作通过中间分布式属性的串联关系;
采用复合方式构建复杂操作,所述复合方式指通过串联和并联组合使用构建更加复杂的目标操作;
S7:插入传输代价最小的中间通信原语:选择传输代价最小的原语,将其插入到全局逻辑张量和局部物理张量之间。
2.如权利要求1所述的面向神经网络计算的分布式数据路由的建模方法,其特征在于:所述步骤S1中:所述广播属性是指将逻辑张量的数据发送到集群中的其他节点;其中所述散播属性是指将逻辑张量的数据沿着指定维度进行划分并散播至其他节点,定义沿着横轴切分所得张量分量的散播属性为S(0),沿着纵轴切分所得张量分量的散播属性为S(1);所述局部规约属性反映不同逻辑张量的分量分发到物理设备进程上进行计算,计算所得的局部物理张量是不同逻辑张量切分之前完整张量进行计算所得的全局逻辑张量的部分值,上述局部物理张量与全局逻辑张量的形状一致,全局逻辑张量可以通过对所有逻辑张量分量计算所得的局部物理张量进行逐元素规约操作来获取。
3.如权利要求1所述的面向神经网络计算的分布式数据路由的建模方法,其特征在于:所述步骤S3具体过程如下:对于存在生产消费关系的相邻算子之间,当出现同一个逻辑张量对于它的生产者算子产生的分布式属性和消费者算子所需的分布式属性不同的情形,需要在所述逻辑张量的生产者算子与消费者算子之间插入中间通信原语,否则,不需要插入中间通信原语。
4.如权利要求2所述的面向神经网络计算的分布式数据路由的建模方法,其特征在于:所述步骤S5的具体子步骤如下:
S51:推导散播属性转换为任意分布式属性的通信代价,包括如下类型:
散播属性S(0)与散播属性S(1)之间转换的通信代价:通过中间通信原语All2All实现两种不同散播属性的之间的转换,跨设备之间转换过程中所产生的传输数据量为全局逻辑张量的大小;
散播属性转换为广播属性的通信代价:通过中间通信原语AllGather实现将散播属性转换为广播属性,通信代价为输出张量的设备进程数量与全局逻辑张量大小的乘积;
S52:局部规约属性转换为任意分布式属性的通信代价,包括如下类型:
局部规约属性转换为散播属性的通信代价:通过中间通信原语ReduceScatter实现将局部规约属性转换为散播属性,通信代价为输入张量的设备进程数量与全局逻辑张量大小的乘积;
5.如权利要求1所述的面向神经网络计算的分布式数据路由的建模方法,其特征在于:所述步骤S5中:对于将输入张量的广播属性转换为中间通信原语输出张量的散播属性的情形,其中输出张量可以直接从位于同一设备的输入张量获取数据,因此,此情形中所述中间通信原语的传输代价为0。
6.如权利要求2所述的面向神经网络计算的分布式数据路由的建模方法,其特征在于:所述步骤S61的具体子步骤如下:
S611:定义散播属性S(0)与散播属性S(1)之间转换的原子操作为All2All通信原语;
S612:定义将散播属性转换为广播属性的原子操作为AllGather通信原语;
S613:定义将局部规约属性转换为散播属性的原子操作为ReduceScatter通信原语;
S614:定义将局部规约属性转换为广播属性的原子操作为AllReduce通信原语;
S615:定义将分布式属性X转换为相同的分布式属性X的原子操作为Identity,所述Identity操作是一个拷贝操作,表示将输入张量拷贝到输出张量;
S616:定义将全局逻辑张量部署为12P局部物理分布式关系的原子操作为:将全局逻辑张量部署到不同设备进程中,其中一个设备进程放置的物理张量是全局逻辑张量的拷贝,其他设备进程只放置形状与全局逻辑张量一致但数值全部置为零的物理张量。
9.如权利要求1所述的面向神经网络计算的分布式数据路由的建模方法,其特征在于:所述步骤S7具体方式为:基于上述步骤获取到不同的推导分布式属性的路由操作,从所有路由操作中选择通信代价最小的操作作为最终的推导所需局部物理张量分布式属性的路由建模方法,最后将所选择方法对应的中间通信原语插入全局逻辑张量与局部物理张量之间。
10.一种面向神经网络计算的分布式数据路由的建模装置,其特征在于:所述装置包括存储器和一个或多个处理器,所述存储器中存储有可执行代码,所述一个或多个处理器执行所述可执行代码时,用于实现权利要求1-9任一项所述面向神经网络计算的分布式数据路由的建模方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210455426.0A CN114598631B (zh) | 2022-04-28 | 2022-04-28 | 面向神经网络计算的分布式数据路由的建模方法和装置 |
PCT/CN2022/092482 WO2023082576A1 (zh) | 2022-04-28 | 2022-05-12 | 面向神经网络计算的分布式数据路由的建模方法和装置 |
US17/848,048 US11805025B1 (en) | 2022-04-28 | 2022-06-23 | Neural network computing-oriented modeling method and apparatus for distributed data routing |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210455426.0A CN114598631B (zh) | 2022-04-28 | 2022-04-28 | 面向神经网络计算的分布式数据路由的建模方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114598631A true CN114598631A (zh) | 2022-06-07 |
CN114598631B CN114598631B (zh) | 2022-08-09 |
Family
ID=81812355
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210455426.0A Active CN114598631B (zh) | 2022-04-28 | 2022-04-28 | 面向神经网络计算的分布式数据路由的建模方法和装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11805025B1 (zh) |
CN (1) | CN114598631B (zh) |
WO (1) | WO2023082576A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116227585A (zh) * | 2023-05-10 | 2023-06-06 | 之江实验室 | 集群任务的并行执行方法、装置、计算机设备和存储介质 |
CN116361037A (zh) * | 2023-05-18 | 2023-06-30 | 之江实验室 | 一种分布式通信系统及方法 |
WO2024021192A1 (zh) * | 2022-07-25 | 2024-02-01 | 之江实验室 | 一种用于神经网络计算的图优化方法和装置 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021074795A1 (en) * | 2019-10-16 | 2021-04-22 | Cerebras Systems Inc. | Dynamic routing for accelerated deep learning |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20200042856A1 (en) * | 2018-07-31 | 2020-02-06 | International Business Machines Corporation | Scheduler for mapping neural networks onto an array of neural cores in an inference processing unit |
CN112799852A (zh) * | 2021-04-12 | 2021-05-14 | 北京一流科技有限公司 | 逻辑节点的多维sbp分布式签名决策系统及其方法 |
CN113128702A (zh) * | 2021-04-15 | 2021-07-16 | 杭州电子科技大学 | 一种基于强化学习的神经网络自适应分布式并行训练方法 |
CN113179660A (zh) * | 2019-11-26 | 2021-07-27 | 百度时代网络技术(北京)有限公司 | 基于用于深度神经网络的增强学习的张量分解中的排序选择 |
CN113313241A (zh) * | 2020-02-27 | 2021-08-27 | 阿里巴巴集团控股有限公司 | 确定深度学习模型的张量信息的方法和计算装置 |
CN113449857A (zh) * | 2020-03-27 | 2021-09-28 | 华为技术有限公司 | 一种数据处理方法和数据处理设备 |
CN113994350A (zh) * | 2020-03-27 | 2022-01-28 | 华为技术有限公司 | 为神经网络生成并行计算方案 |
CN114186633A (zh) * | 2021-12-10 | 2022-03-15 | 北京百度网讯科技有限公司 | 模型的分布式训练方法、装置、设备以及存储介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10824693B2 (en) * | 2015-12-10 | 2020-11-03 | Reservoir Labs, Inc. | Systems and methods for selective expansive recursive tensor analysis |
US20220051104A1 (en) * | 2020-08-14 | 2022-02-17 | Microsoft Technology Licensing, Llc | Accelerating inference of traditional ml pipelines with neural network frameworks |
US11645057B2 (en) * | 2020-09-24 | 2023-05-09 | SambaNova Systems, Inc. | Systems and methods for memory layout determination and conflict resolution |
KR102682630B1 (ko) * | 2021-03-04 | 2024-07-09 | 삼성전자주식회사 | 뉴럴 네트워크 연산 장치 및 방법 |
CN114186687B (zh) * | 2022-02-17 | 2022-05-17 | 之江实验室 | 一种面向神经网络模型计算的中间表示方法和装置 |
-
2022
- 2022-04-28 CN CN202210455426.0A patent/CN114598631B/zh active Active
- 2022-05-12 WO PCT/CN2022/092482 patent/WO2023082576A1/zh unknown
- 2022-06-23 US US17/848,048 patent/US11805025B1/en active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20200042856A1 (en) * | 2018-07-31 | 2020-02-06 | International Business Machines Corporation | Scheduler for mapping neural networks onto an array of neural cores in an inference processing unit |
CN113179660A (zh) * | 2019-11-26 | 2021-07-27 | 百度时代网络技术(北京)有限公司 | 基于用于深度神经网络的增强学习的张量分解中的排序选择 |
CN113313241A (zh) * | 2020-02-27 | 2021-08-27 | 阿里巴巴集团控股有限公司 | 确定深度学习模型的张量信息的方法和计算装置 |
CN113449857A (zh) * | 2020-03-27 | 2021-09-28 | 华为技术有限公司 | 一种数据处理方法和数据处理设备 |
WO2021190127A1 (zh) * | 2020-03-27 | 2021-09-30 | 华为技术有限公司 | 一种数据处理方法和数据处理设备 |
CN113994350A (zh) * | 2020-03-27 | 2022-01-28 | 华为技术有限公司 | 为神经网络生成并行计算方案 |
CN112799852A (zh) * | 2021-04-12 | 2021-05-14 | 北京一流科技有限公司 | 逻辑节点的多维sbp分布式签名决策系统及其方法 |
CN113128702A (zh) * | 2021-04-15 | 2021-07-16 | 杭州电子科技大学 | 一种基于强化学习的神经网络自适应分布式并行训练方法 |
CN114186633A (zh) * | 2021-12-10 | 2022-03-15 | 北京百度网讯科技有限公司 | 模型的分布式训练方法、装置、设备以及存储介质 |
Non-Patent Citations (2)
Title |
---|
ALEXANDER DEMIDOVSKIJ: "Automatic Construction of Tensor Product Variable Binding Neural Networks for Neural-Symbolic Intelligent Systems", 《2020 INTERNATIONAL CONFERENCE ON ELECTRICAL, COMMUNICATION, AND COMPUTER ENGINEERING (ICECCE)》 * |
李青坪: "面向分布式深度学习的集群资源调度优化技术研究", 《中国优秀硕士学位论文全文数据库》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024021192A1 (zh) * | 2022-07-25 | 2024-02-01 | 之江实验室 | 一种用于神经网络计算的图优化方法和装置 |
CN116227585A (zh) * | 2023-05-10 | 2023-06-06 | 之江实验室 | 集群任务的并行执行方法、装置、计算机设备和存储介质 |
CN116361037A (zh) * | 2023-05-18 | 2023-06-30 | 之江实验室 | 一种分布式通信系统及方法 |
CN116361037B (zh) * | 2023-05-18 | 2023-08-18 | 之江实验室 | 一种分布式通信系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
US11805025B1 (en) | 2023-10-31 |
WO2023082576A1 (zh) | 2023-05-19 |
CN114598631B (zh) | 2022-08-09 |
US20230353458A1 (en) | 2023-11-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114598631B (zh) | 面向神经网络计算的分布式数据路由的建模方法和装置 | |
CN114186687B (zh) | 一种面向神经网络模型计算的中间表示方法和装置 | |
JP6745019B2 (ja) | 情報処理装置及び情報処理方法 | |
US20220012575A1 (en) | Methods and apparatus for localized processing within multicore neural networks | |
KR101572599B1 (ko) | 그래프에 기초한 연산에서 데이터 흐름을 관리하는 방법 및 시스템 | |
US11500959B2 (en) | Multiple output fusion for operations performed in a multi-dimensional array of processing units | |
JP6584672B2 (ja) | サブグラフインターフェースの生成 | |
WO2021000971A1 (zh) | 操作数据的生成方法、装置及相关产品 | |
Xie et al. | Graphiler: Optimizing graph neural networks with message passing data flow graph | |
US11630983B2 (en) | Graph conversion method | |
CN115033391B (zh) | 一种用于神经网络计算的数据流动方法和装置 | |
Abbas et al. | A model-driven framework for security labs using blockchain methodology | |
Bauer et al. | A Python extension for the massively parallel multiphysics simulation framework waLBerla | |
Gosmann et al. | Automatic optimization of the computation graph in the Nengo neural network simulator | |
CN115599362A (zh) | 数据处理任务构建方法、商品数据处理方法及设备 | |
CN116090519A (zh) | 卷积算子的编译方法及相关产品 | |
Akhmetova et al. | Interoperability of gaspi and mpi in large scale scientific applications | |
CN116185378A (zh) | 计算图的优化方法、数据处理方法及相关产品 | |
Rabhi | A parallel programming methodology based on paradigms | |
CN113326137A (zh) | 深度学习计算方法、装置、芯片及介质 | |
CN116755714B (zh) | 深度神经网络模型的运行方法、装置、设备和存储介质 | |
CN111857833A (zh) | 并行计算智能处理器及并行计算智能处理方法 | |
CN112632111B (zh) | 一种基于向量化执行引擎的数据库表达式计算的复用方法 | |
Bohm et al. | Generating parallel applications from models based on petri nets | |
Chang et al. | Adaptive computing in NASA multi-spectral image processing |
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 |