CN114598631B - 面向神经网络计算的分布式数据路由的建模方法和装置 - Google Patents

面向神经网络计算的分布式数据路由的建模方法和装置 Download PDF

Info

Publication number
CN114598631B
CN114598631B CN202210455426.0A CN202210455426A CN114598631B CN 114598631 B CN114598631 B CN 114598631B CN 202210455426 A CN202210455426 A CN 202210455426A CN 114598631 B CN114598631 B CN 114598631B
Authority
CN
China
Prior art keywords
tensor
distributed
attribute
attributes
broadcast
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
Application number
CN202210455426.0A
Other languages
English (en)
Other versions
CN114598631A (zh
Inventor
王宏升
何水兵
鲍虎军
陈�光
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhejiang Lab
Original Assignee
Zhejiang Lab
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Zhejiang Lab filed Critical Zhejiang Lab
Priority to CN202210455426.0A priority Critical patent/CN114598631B/zh
Priority to PCT/CN2022/092482 priority patent/WO2023082576A1/zh
Publication of CN114598631A publication Critical patent/CN114598631A/zh
Priority to US17/848,048 priority patent/US11805025B1/en
Application granted granted Critical
Publication of CN114598631B publication Critical patent/CN114598631B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/14Network analysis or design
    • H04L41/145Network analysis or design involving simulating, designing, planning or modelling of a network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/02Topology update or discovery
    • H04L45/08Learning-based routing, e.g. using neural networks or artificial intelligence
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0803Configuration setting
    • H04L41/0806Configuration setting for initial configuration or provisioning, e.g. plug-and-play
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/16Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks using machine learning or artificial intelligence
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/44Distributed routing
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy 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)
  • Databases & Information Systems (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Life Sciences & Earth Sciences (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:推导散播属性转换为任意分布式属性的通信代价,包括如下类型:
散播属性S(0)与散播属性S(1)之间转换的通信代价:通过中间通信原语
Figure 100002_DEST_PATH_IMAGE002
实现两种不同散播属性的之间的转换,跨设备之间转换过程中所产生的传输数据量为全局逻辑张量的大小;
散播属性转换为广播属性的通信代价:通过中间通信原语
Figure 885998DEST_PATH_IMAGE003
实现将散播属性转换为广播属性,通信代价为输出张量的设备进程数量与全局逻辑张量大小的乘积;
S52:局部规约属性转换为任意分布式属性的通信代价,包括如下类型:
局部规约属性转换为散播属性的通信代价:通过中间通信原语
Figure 100002_DEST_PATH_IMAGE004
实现将局部规约属性转换为散播属性,通信代价为输入张量的设备进程数量与全局逻辑张量大小的乘积;
局部规约属性转换为广播属性的通信代价:通过中间通信原语
Figure 881767DEST_PATH_IMAGE005
实现将局部规约属性转换为广播属性,通信代价为
Figure 100002_DEST_PATH_IMAGE006
其中
Figure 753515DEST_PATH_IMAGE007
是放置输入张量的设备进程数量,
Figure 100002_DEST_PATH_IMAGE008
是逻辑张量T的大小,
Figure 538937DEST_PATH_IMAGE009
是放置输出张量的设备进程数量。
作为优选的,所述步骤S5中:对于将输入张量的广播属性转换为中间通信原语输出张量的散播属性的情形,其中输出张量可以直接从位于同一设备的输入张量获取数据,因此,此情形中所述中间通信原语的传输代价为0。
作为优选的,所述步骤S61的具体子步骤如下:
S611:定义散播属性S(0)与散播属性S(1)之间转换的原子操作为
Figure 290992DEST_PATH_IMAGE002
通信原语;
S612:定义将散播属性转换为广播属性的原子操作为
Figure 67449DEST_PATH_IMAGE003
通信原语;
S613:定义将局部规约属性转换为散播属性的原子操作为
Figure 537745DEST_PATH_IMAGE004
通信原语;
S614:定义将局部规约属性转换为广播属性的原子操作为
Figure 126858DEST_PATH_IMAGE005
通信原语;
S615:定义将分布式属性X转换为相同的分布式属性X的原子操作为
Figure 100002_DEST_PATH_IMAGE010
,所述
Figure 170905DEST_PATH_IMAGE010
操作是一个拷贝操作,表示将输入张量拷贝到输出张量;
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局部物理分布式关系的原子操作;
图9是利用或
Figure 367531DEST_PATH_IMAGE011
的复合操作构建目标操作X2B的过程;
图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. 矩阵乘算子的合法分布式属性
Figure DEST_PATH_IMAGE012
所述步骤S3判断是否需要***中间通信原语得到局部物理张量的分布式属性:对于存在生产消费关系的相邻算子之间,当出现同一个逻辑张量对于它的生产者算子产生的分布式属性和消费者算子所需的分布式属性不同的情形,需要在所述逻辑张量的生产者算子与消费者算子之间***中间通信原语,否则,不需要***中间通信原语。
所述步骤S4的具体步骤如下:
S41:推演生产者算子的输出张量的分布式属性:根据生产者算子的输入张量的分布式属性,推演输出张量的合法分布式属性;
S42:推演中间通信原语:根据生产者算子输出张量的分布式属性和消费者算子所需的输入张量的分布式属性,推演出所需的中间通信原语类型;
图3 展示了设备进程0和设备进程1上分别部署了两个存在生产-消费关系的矩阵乘算子。生产者算子产生的输出张量的分布式属性均为散播属性S(0),消费者算子期望的输入张量的分布式属性均为广播属性B。图3演示了根据生产者输出张量的散播属性S(0)和消费者所期望输入张量的广播属性B推演所需***的中间通信原语 AllGather(全收集原语)的过程。推导中间通信原语的过程如下:消费者算子矩阵乘1所需的输入张量
Figure 512073DEST_PATH_IMAGE013
的广播属性B决定了每个设备进程上所需的输入张量需要聚合所有设备进程上的生产者算子矩阵乘0的输出张量的数据。通信原语AllGather可以实现发送多个元素到多个设备进程。对于分发在所有设备进程上的一组数据来说,All Gather会收集所有数据到所有设备进程上。因此推导出中间通信原语的类型为AllGather 算子。
所述步骤S5推导中间通信原语的传输代价包括如下过程:所述***的中间通信原语会引起传输代价,通过选择通信原语所引起的最低传输开销的分布式属性来确定最优并行策略。接下来推导通信原语的输入张量和输出张量进行分布式属性转换时分别在同一设备与跨设备两种分布式情况下的传输代价。跨设备之间的张量的分布式属性转换总是会带来传输开销。然而同一设备上的张量的分布式属性转换可以不发生数据迁移。对于将输入张量的广播属性B转换为中间通信原语输出张量的散播属性S的情形,其中输出张量可以直接从位于同一设备的输入张量获取数据,所以此情形中所述中间通信原语的传输代价为0。
如表格2所示,推导出不同分布式属性之间进行转换的通信代价,其中
Figure DEST_PATH_IMAGE014
是放置输入张量的设备进程数量,
Figure 140763DEST_PATH_IMAGE015
是放置输出张量的设备进程数量,其中
Figure 851099DEST_PATH_IMAGE017
是逻辑张量
Figure DEST_PATH_IMAGE018
的大小,其中的“无”代表无通信开销。
表格2. 不同分布式属性之间进行转换的通信代价
Figure 687468DEST_PATH_IMAGE019
所述推导不同分布式属性之间进行转换的通信代价,包括如下过程:
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 (规约原语)操作完成,并且产生大小为
Figure DEST_PATH_IMAGE020
数据量的传输代价,最后将所述指定设备进程中的数据广播至设备进程0和设备进程1,所述步骤可以通过Broadcast(广播原语)操作完成,并且产生大小为
Figure 552262DEST_PATH_IMAGE021
数据量的传输代价,其中
Figure DEST_PATH_IMAGE022
是放置输出张量的设备进程数量。上述整个过程也可以通过通信原语 AllReduce(全规约原语)一次性操作完成,并且一共产生大小为
Figure 686440DEST_PATH_IMAGE023
数据量的传输代价。
所述步骤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. 定义基本的原子操作。
Figure DEST_PATH_IMAGE024
S616:定义将全局逻辑张量部署为12P局部物理分布式关系的原子操作为:将全局逻辑张量部署到不同设备进程中,其中一个设备进程放置的物理张量是全局逻辑张量的拷贝,其他设备进程只放置形状与全局逻辑张量一致但数值全部置为零的物理张量。图8展示了将全局逻辑张量部署为12P局部物理分布式关系的原子操作。
S62:复杂操作的建模。所述复杂操作由基本原子操作复合而成:
(1)采用或
Figure 877382DEST_PATH_IMAGE025
方式构建复杂目标操作,定义所述或
Figure DEST_PATH_IMAGE026
方式如下:
Figure 795571DEST_PATH_IMAGE027
其中,如果输入输出张量的分布式属性符合原子操作I2W和原子操作O2W中的任意一种分布式属性推导结果,则满足目标操作X2W的推导结果。所述或
Figure 827288DEST_PATH_IMAGE026
方式获取所得的目标操作是多个原子操作的并联关系。图9展示了利用或
Figure 47048DEST_PATH_IMAGE026
的复合操作构建目标操作X2B 的过程,其中其中X表示任意一种分布式属性,所述X可以用其他分布式属性代替,W表示指定的某一种分布式属性,I表示输入的分布式属性,O表示输出的分布式属性,2表示分布式属性之间的转换过程,X2W 表示将分布式属性X转换为分布式属性W。构建任意分布式属性转换为广播属性的目标操作X2B的过程:只要符合以下原子操作B2B、P2B、S2B中的任意一种分布式属性推导结果,就满足目标操作X2B的分布式属性的推导结果。
(2)采用分冶方式构建复杂操作,定义所述分冶方式如下:
Figure DEST_PATH_IMAGE028
其中,目标操作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)之间转换的通信代价:通过中间通信原语
Figure DEST_PATH_IMAGE001
实现两种不同散播属性的之间的转换,跨设备之间转换过程中所产生的传输数据量为全局逻辑张量的大小;
散播属性转换为广播属性的通信代价:通过中间通信原语
Figure DEST_PATH_IMAGE002
实现将散播属性转换为广播属性,通信代价为输出张量的设备进程数量与全局逻辑张量大小的乘积;
S52:局部规约属性转换为任意分布式属性的通信代价,包括如下类型:
局部规约属性转换为散播属性的通信代价:通过中间通信原语
Figure DEST_PATH_IMAGE003
实现将局部规约属性转换为散播属性,通信代价为输入张量的设备进程数量与全局逻辑张量大小的乘积;
局部规约属性转换为广播属性的通信代价:通过中间通信原语
Figure DEST_PATH_IMAGE004
实现将局部规约属性转换为广播属性,通信代价为
Figure DEST_PATH_IMAGE005
,其中
Figure DEST_PATH_IMAGE006
是放置输入张量的设备进程数量,
Figure DEST_PATH_IMAGE007
是逻辑张量T的大小,
Figure DEST_PATH_IMAGE008
是放置输出张量的设备进程数量。
5.如权利要求1所述的面向神经网络计算的分布式数据路由的建模方法,其特征在于:所述步骤S5中:对于将输入张量的广播属性转换为中间通信原语输出张量的散播属性的情形,其中输出张量可以直接从位于同一设备的输入张量获取数据,因此,此情形中所述中间通信原语的传输代价为0。
6.如权利要求2所述的面向神经网络计算的分布式数据路由的建模方法,其特征在于:所述步骤S61的具体子步骤如下:
S611:定义散播属性S(0)与散播属性S(1)之间转换的原子操作为
Figure 450314DEST_PATH_IMAGE001
通信原语;
S612:定义将散播属性转换为广播属性的原子操作为
Figure 462394DEST_PATH_IMAGE002
通信原语;
S613:定义将局部规约属性转换为散播属性的原子操作为
Figure 976552DEST_PATH_IMAGE003
通信原语;
S614:定义将局部规约属性转换为广播属性的原子操作为
Figure 106182DEST_PATH_IMAGE004
通信原语;
S615:定义将分布式属性X转换为相同的分布式属性X的原子操作为
Figure DEST_PATH_IMAGE009
,所述
Figure 982871DEST_PATH_IMAGE009
操作是一个拷贝操作,表示将输入张量拷贝到输出张量;
S616:定义将全局逻辑张量部署为12P局部物理分布式关系的原子操作为:将全局逻辑张量部署到不同设备进程中,其中一个设备进程放置的物理张量是全局逻辑张量的拷贝,其他设备进程只放置形状与全局逻辑张量一致但数值全部置为零的物理张量。
7.如权利要求1所述的面向神经网络计算的分布式数据路由的建模方法,其特征在于:所述步骤S62中所述或方式构建复杂目标操作的具体方式为:
Figure DEST_PATH_IMAGE010
其中,如果输入输出张量的分布式属性符合原子操作I2W和原子操作O2W中的任意一种分布式属性推导结果,则满足目标操作X2W的推导结果;其中X表示任意一种分布式属性,所述X可以用其他分布式属性代替,W表示指定的某一种分布式属性,I表示输入的分布式属性,O表示输出的分布式属性,2表示分布式属性之间的转换过程,X2W 表示将分布式属性X转换为分布式属性W。
8.如权利要求1所述的面向神经网络计算的分布式数据路由的建模方法,其特征在于:所述步骤S62中所述分冶方式构建复杂操作的具体方式为:
Figure DEST_PATH_IMAGE011
其中,目标操作I2O可以通过中间状态的分布式属性M串联两个原子操作I2M和M2O,如果输入张量的分布式属性I和中间分布式属性M符合原子操作I2M的分布式属性推导结果,而且中间分布式属性M和输出张量的分布式属性O符合原子操作M2O的分布式属性推导结果,则满足目标操作I2O的分布式属性的推导结果;其中I表示输入的分布式属性,O表示输出的分布式属性,2表示分布式属性之间的转换过程。
9.如权利要求1所述的面向神经网络计算的分布式数据路由的建模方法,其特征在于:所述步骤S7具体方式为:基于上述步骤获取到不同的推导分布式属性的路由操作,从所有路由操作中选择通信代价最小的操作作为最终的推导所需局部物理张量分布式属性的路由建模方法,最后将所选择方法对应的中间通信原语***全局逻辑张量与局部物理张量之间。
10.一种面向神经网络计算的分布式数据路由的建模装置,其特征在于:所述装置包括存储器和一个或多个处理器,所述存储器中存储有可执行代码,所述一个或多个处理器执行所述可执行代码时,用于实现权利要求1-9任一项所述面向神经网络计算的分布式数据路由的建模方法。
CN202210455426.0A 2022-04-28 2022-04-28 面向神经网络计算的分布式数据路由的建模方法和装置 Active CN114598631B (zh)

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 CN114598631A (zh) 2022-06-07
CN114598631B true 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)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230069536A1 (en) * 2019-10-16 2023-03-02 Cerebras Systems Inc. Dynamic routing for accelerated deep learning
CN114936099B (zh) * 2022-07-25 2022-09-30 之江实验室 一种用于神经网络计算的图优化方法和装置
CN116227585B (zh) * 2023-05-10 2023-07-25 之江实验室 集群任务的并行执行方法、装置、计算机设备和存储介质
CN116361037B (zh) * 2023-05-18 2023-08-18 之江实验室 一种分布式通信***及方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112799852A (zh) * 2021-04-12 2021-05-14 北京一流科技有限公司 逻辑节点的多维sbp分布式签名决策***及其方法
CN113313241A (zh) * 2020-02-27 2021-08-27 阿里巴巴集团控股有限公司 确定深度学习模型的张量信息的方法和计算装置

Family Cites Families (11)

* Cited by examiner, † Cited by third party
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
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
WO2021102679A1 (en) * 2019-11-26 2021-06-03 Baidu.Com Times Technology (Beijing) Co., Ltd. Rank selection in tensor decomposition based on reinforcement learning for deep neural networks
CN115456161A (zh) * 2020-03-27 2022-12-09 华为技术有限公司 一种数据处理方法和数据处理***
CN113994350A (zh) * 2020-03-27 2022-01-28 华为技术有限公司 为神经网络生成并行计算方案
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
KR20220124979A (ko) * 2021-03-04 2022-09-14 삼성전자주식회사 뉴럴 네트워크 연산 장치 및 방법
CN113128702A (zh) * 2021-04-15 2021-07-16 杭州电子科技大学 一种基于强化学习的神经网络自适应分布式并行训练方法
CN114186633B (zh) * 2021-12-10 2023-04-07 北京百度网讯科技有限公司 模型的分布式训练方法、装置、设备以及存储介质
CN114186687B (zh) * 2022-02-17 2022-05-17 之江实验室 一种面向神经网络模型计算的中间表示方法和装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113313241A (zh) * 2020-02-27 2021-08-27 阿里巴巴集团控股有限公司 确定深度学习模型的张量信息的方法和计算装置
CN112799852A (zh) * 2021-04-12 2021-05-14 北京一流科技有限公司 逻辑节点的多维sbp分布式签名决策***及其方法

Also Published As

Publication number Publication date
WO2023082576A1 (zh) 2023-05-19
US11805025B1 (en) 2023-10-31
CN114598631A (zh) 2022-06-07
US20230353458A1 (en) 2023-11-02

Similar Documents

Publication Publication Date Title
CN114598631B (zh) 面向神经网络计算的分布式数据路由的建模方法和装置
CN114186687B (zh) 一种面向神经网络模型计算的中间表示方法和装置
Zhao et al. Parallel k-means clustering based on mapreduce
US20220012575A1 (en) Methods and apparatus for localized processing within multicore neural networks
JP6584672B2 (ja) サブグラフインターフェースの生成
US20120143932A1 (en) Data Structure For Tiling And Packetizing A Sparse Matrix
CN105022670A (zh) 一种云计算平台中的异构分布式任务处理***及其处理方法
US20210049231A1 (en) Multiple Output Fusion For Operations Performed In A Multi-Dimensional Array of Processing Units
CN110889439B (zh) 一种图像特征提取方法、装置及电子设备和存储介质
WO2021000971A1 (zh) 操作数据的生成方法、装置及相关产品
US11630983B2 (en) Graph conversion method
CN115033391B (zh) 一种用于神经网络计算的数据流动方法和装置
CN105404611A (zh) 一种基于矩阵模型的多计算引擎的自动选择方法
Zhang et al. SIMD2: A generalized matrix instruction set for accelerating tensor computation beyond GEMM
Bauer et al. A Python extension for the massively parallel multiphysics simulation framework waLBerla
CN113553054A (zh) 基于异构***的编译方法、装置、设备及存储介质
Wang et al. A parallel approach for the generation of unstructured meshes with billions of elements on distributed-memory supercomputers
Shang et al. Processing conversion and parallel control platform: a parallel approach to serial hydrodynamic simulators for complex hydrodynamic simulations
Gosmann et al. Automatic optimization of the computation graph in the Nengo neural network simulator
CN113326137B (zh) 深度学习计算方法、装置、芯片及介质
CN116185378A (zh) 计算图的优化方法、数据处理方法及相关产品
CN116755714B (zh) 深度神经网络模型的运行方法、装置、设备和存储介质
Sun et al. Sparse cholesky factorization on fpga using parameterized model
Chang et al. Adaptive computing in NASA multi-spectral image processing
Bohm et al. Generating parallel applications from models based on petri nets

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