CN112311694A - 一种优先级调整方法及装置 - Google Patents
一种优先级调整方法及装置 Download PDFInfo
- Publication number
- CN112311694A CN112311694A CN201910703073.XA CN201910703073A CN112311694A CN 112311694 A CN112311694 A CN 112311694A CN 201910703073 A CN201910703073 A CN 201910703073A CN 112311694 A CN112311694 A CN 112311694A
- Authority
- CN
- China
- Prior art keywords
- priority
- network card
- sending
- receiving
- server
- 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
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/62—Queue scheduling characterised by scheduling criteria
- H04L47/625—Queue scheduling characterised by scheduling criteria for service slots or service orders
- H04L47/6275—Queue scheduling characterised by scheduling criteria for service slots or service orders based on priority
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Life Sciences & Earth Sciences (AREA)
- Molecular Biology (AREA)
- Artificial Intelligence (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
公开了一种优先级调整方法及装置,涉及通信领域,解决了AI训练过程中训练效率较低的问题。该方法包括:发送端服务器的网卡根据接收到的优先级调整指示动态调整发送业务数据块的优先级,改变业务数据块发送的时机,使得接收端服务器的网卡接收到业务数据块的时刻不同。在AI训练过程中,参数服务器可以根据训练服务器的性能调整QP的优先级,改变发送模型参数的时机。使得训练慢的训练服务器比训练快的训练服务器先接收到模型参数对模型参数进行训练,从而,增大训练服务器之间接收模型参数的时差,减小训练慢的训练服务器和训练快的训练服务器之间训练模型参数的时差,提高了AI训练过程中整体的训练效率。
Description
技术领域
本申请涉及通信领域,尤其涉及一种优先级调整方法及装置。
背景技术
人工智能(Artificial Intelligence,AI)是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。在AI训练过程中,主要基于PS-worker架构并利用具有高带宽、低时延的远程直接内存访问(Remote Direct MemoryAccess,RDMA)协议进行数据传输。AI训练过程可以包括以下步骤:
S1:每个训练服务器(worker)从参数服务器(Parameter Server,PS)获取模型参数(如:神经网络模型的参数);
S2:每个训练服务器对获取到的模型参数进行训练,并将各自计算的模型参数的梯度发送给参数服务器;
S3:参数服务器将各训练服务器反馈的模型参数的梯度做一个平均,得到平均梯度,然后在平均梯度的方向更新模型参数。
当训练达到预定的次数或者得到较好的训练结果时,则停止训练,否则重复继续执行S1~S3的操作。
但是,由于不同的训练服务器的性能存在差异,因此不同的训练服务器训练模型参数的训练时长不一致,导致参数服务器接收多个训练服务器反馈的模型参数的梯度的时刻也不一致。对于每次迭代,参数服务器需要等待所有训练服务器反馈模型参数的梯度后再进行参数同步。因此,AI训练过程中整体的训练效率较低。
发明内容
本申请提供一种优先级调整方法及装置,解决了AI训练过程中训练效率较低的问题。
为达到上述目的,本申请采用如下技术方案:
第一方面,提供了一种优先级调整方法,该方法可应用于发送端网卡,或者该方法可应用于可以支持发送端网卡实现该方法的通信装置,例如该通信装置包括芯片系统,方法包括:在发送端网卡接收到发送端处理器发送的优先级调整指示之后,判断采用第一队列对(queue pair,QP)发送的第一业务数据块是否未处于发送状态,当采用第一QP发送的第一业务数据块未处于发送状态,根据优先级信息指示的优先级调整第一QP的当前优先级,得到第一QP的调整后优先级;以便于发送端网卡根据第一QP的调整后优先级发送第一业务数据块。其中,优先级调整指示包括第一QP的标识和优先级信息,第一QP的标识用于指示第一QP,优先级信息用于指示发送端网卡调整第一OP的当前优先级时所需的优先级。优先级信息指示的优先级高于第一QP的当前优先级,或者,优先级信息指示的优先级低于第一QP的当前优先级。第一QP的调整后优先级与优先级信息指示的优先级相同。
本申请实施例提供的优先级调整方法,发送端服务器的网卡根据接收到的优先级调整指示动态调整发送业务数据块的优先级,改变业务数据块发送的时机,使得接收端服务器的网卡接收到业务数据块的时刻可以不同,从而为针对不同场景提供了灵活的发送及接收方式,可以解决不同场景下各种因为接收时差导致的各种问题。
以AI训练为例,在AI训练过程中,参数服务器可以根据训练服务器的性能调整QP的优先级,改变发送模型参数的时机。例如,参数服务器可以先向训练慢的训练服务器发送模型参数,再向训练快的训练服务器发送模型参数,使得训练慢的训练服务器比训练快的训练服务器先接收到模型参数对模型参数进行训练,从而,对于不同训练性能的训练服务器,增大训练服务器之间接收模型参数的时差,减小训练慢的训练服务器和训练快的训练服务器之间训练模型参数的时差,减小参数服务器接收多个训练服务器反馈的模型参数的梯度间的时差,提高了AI训练过程中整体的训练效率。
在一种可能的设计中,当采用第一QP发送的第一业务数据块处于发送状态,在第一业务数据块发送完成后,发送端网卡将第一QP的当前优先级调整为优先级信息指示的优先级,得到第一QP的调整后优先级。相对于在采用第一QP发送的第一业务数据块处于发送状态时,停止发送第一业务数据块调整第一QP的当前优先级,在调整第一QP的当前优先级后,再与接收端网卡重新建立连接,发送第一业务数据块,导致增加了发送第一业务数据块的时延。在该方案中,在第一业务数据块发送完成后,发送端网卡将第一QP的当前优先级调整为优先级信息指示的优先级,能够避免增加发送第一业务数据块的时延。
在另一种可能的设计中,发送端网卡将第一QP的当前优先级调整为优先级信息指示的优先级,包括:发送端网卡从发送端处理器的内存中拷贝第一QP的上下文,并将第一QP的上下文存储到发送端网卡包含的内存中,第一QP的上下文包括第一QP的当前优先级。然后,发送端网卡的处理器将发送端网卡包含的内存存储的第一QP的当前优先级更新为优先级信息指示的优先级。从而,以便于发送端网卡调整第一QP的当前优先级,根据第一QP的调整后优先级发送第一业务数据块。
在另一种可能的设计中,在发送端网卡接收发送端处理器发送的优先级调整指示之后,方法还包括:发送端网卡判断优先级信息指示的优先级与第一QP的当前优先级是否相同;若优先级信息指示的优先级与第一QP的当前优先级不相同,发送端网卡确定采用第一QP发送的第一业务数据块是否处于发送状态。若优先级信息指示的优先级与第一QP的当前优先级相同,无需调整第一QP的当前优先级,流程结束。从而,进一步提高发送端网卡调整第一QP的当前优先级的准确性。
在另一种可能的设计中,方法还包括:发送端网卡向接收端网卡发送通知报文,通知报文用于指示接收端网卡调整第一OP的当前优先级,通知报文包括第一QP的标识和优先级信息,优先级信息用于指示调整第一OP的当前优先级;在定时器运行状态中,发送端网卡接收接收端网卡发送的响应报文,响应报文用于指示接收端网卡已接收到第一QP的标识和优先级信息。从而,保证了接收端服务的网卡存储的第一QP的当前优先级与发送端服务的网卡存储的第一QP的当前优先级一致。
在一些实施例中,发送端网卡向接收端网卡发送通知报文,包括:发送端网卡根据第一QP的当前优先级向接收端网卡发送通知报文。在另一些实施例中,发送端网卡根据第一QP的调整后优先级向接收端网卡发送通知报文。
在另一种可能的设计中,在发送端网卡向接收端网卡发送通知报文之后,方法还包括:发送端网卡根据定时器时长确定定时器超时;发送端网卡向接收端网卡重复发送通知报文。
在另一种可能的设计中,发送通知报文的次数等于门限值,方法还包括:发送端网卡向发送端处理器发送优先权调整失败响应。
在另一种可能的设计中,发送端网卡接收发送端处理器发送的优先级调整指示,包括:发送端网卡接收发送端处理器通过调用第一接口发送的优先级调整指示,第一接口用于修改QP的优先级。
在另一种可能的设计中,发送端网卡接收发送端处理器发送的优先级调整指示,包括:发送端网卡基于RDMA协议接收发送端处理器发送的优先级调整指示,发送端网卡为用于AI训练过程中的发送端服务器包含的网卡,所述接收端网卡为用于AI训练过程中的接收端服务器包含的网卡。
第二方面,提供了一种优先级调整方法,该方法可应用于发送端处理器,或者该方法可应用于可以支持发送端处理器实现该方法的通信装置,例如该通信装置包括芯片系统,该方法包括:发送端处理器向发送端网卡发送优先级调整指示,优先级调整指示包括第一QP的标识和优先级信息,第一QP的标识用于指示第一QP,优先级信息用于指示发送端网卡调整第一OP的当前优先级时所需的优先级。
本申请实施例提供的优先级调整方法,发送端服务器的网卡根据接收到的优先级调整指示动态调整发送业务数据块的优先级,改变业务数据块发送的时机,使得接收端服务器的网卡接收到业务数据块的时刻不同。在AI训练过程中,参数服务器可以根据训练服务器的性能调整QP的优先级,改变发送模型参数的时机。例如,参数服务器可以先向训练慢的训练服务器发送模型参数,再向训练快的训练服务器发送模型参数,使得训练慢的训练服务器比训练快的训练服务器先接收到模型参数对模型参数进行训练,从而,对于不同训练性能的训练服务器,增大训练服务器之间接收模型参数的时差,减小训练慢的训练服务器和训练快的训练服务器之间训练模型参数的时差,减小参数服务器接收多个训练服务器反馈的模型参数的梯度间的时差,提高了AI训练过程中整体的训练效率。
在一种可能的设计中,发送端处理器向发送端网卡发送优先级调整指示,包括:发送端处理器调用第一接口向发送端网卡发送优先级调整指示,第一接口用于修改QP的优先级。
第三方面,提供了一种优先级调整方法,该方法可应用于接收端网卡,或者该方法可应用于可以支持接收端网卡实现该方法的通信装置,例如该通信装置包括芯片系统,该方法包括:接收端网卡接收到发送端网卡发送的通知报文后,向发送端网卡发送响应报文。其中,通知报文用于指示接收端网卡调整第一OP的当前优先级,通知报文包括第一QP的标识和优先级信息,第一QP的标识用于指示第一QP,优先级信息用于指示接收端网卡调整第一OP的当前优先级时所需的优先级;响应报文用于指示接收端网卡已接收到第一QP的标识和优先级信息。第一QP的调整后优先级与优先级信息指示的优先级相同。从而,保证了接收端服务的网卡存储的第一QP的当前优先级与发送端服务的网卡存储的第一QP的当前优先级一致。
在一种可能的设计中,在接收端网卡接收发送端网卡发送的通知报文之后,方法还包括:当采用第一QP发送的第一业务数据块未处于发送状态时,接收端网卡优先级信息指示的优先级调整第一QP的当前优先级,得到第一QP的调整后优先级;并根据第一QP的调整后优先级发送第一业务数据块;其中,优先级信息指示的优先级高于当前优先级,或者,优先级信息指示的优先级低于当前优先级。
在另一种可能的设计中,在接收端网卡接收发送端网卡发送的通知报文之后,方法还包括:当采用第一QP发送的第一业务数据块处于发送状态,在第一业务数据块发送完成后,接收端网卡根据优先级信息指示的优先级调整第一QP的当前优先级,得到第一QP的调整后优先级。
在另一种可能的设计中,接收端网卡将第一QP的当前优先级调整为优先级信息指示的优先级,包括:接收端网卡从接收端处理器的内存中拷贝第一QP的上下文,并将第一QP的上下文存储到接收端网卡包含的内存中,第一QP的上下文包括第一QP的当前优先级。然后,接收端网卡的处理器将接收端网卡包含的内存存储的第一QP的当前优先级更新为优先级信息指示的优先级。
从而,使得接收端网卡根据接收到的优先级调整指示动态调整发送业务数据块的优先级,在需要采用第一QP发送业务数据块时,改变业务数据块发送的时机,使对端网卡接收到业务数据块的时刻不同。
第四方面,本申请还提供了一种优先级调整装置,用于实现上述第一方面描述的方法。优先级调整装置为发送端网卡或支持发送端网卡实现该第一方面描述的方法的通信装置,例如该通信装置包括芯片系统。例如,该优先级调整装置包括:接收单元、处理单元和发送单元。所述接收单元,用于接收发送端处理器发送的优先级调整指示,优先级调整指示包括第一QP的标识和优先级信息,第一QP的标识用于指示第一QP,优先级信息用于指示发送端网卡调整第一OP的当前优先级时所需的优先级;当采用第一QP发送的第一业务数据块未处于发送状态时,所述处理单元,用于根据优先级信息指示的优先级调整第一QP的当前优先级,得到第一QP的调整后优先级;所述发送单元,用于根据第一QP的调整后优先级发送第一业务数据块;其中,优先级信息指示的优先级高于当前优先级,或者,优先级信息指示的优先级低于当前优先级。
可选地,对于优先级调整方法的具体解释同第一方面中相应的描述,这里不再赘述。
第五方面,本申请还提供了一种优先级调整装置,用于实现上述第二方面描述的方法。通信装置为发送端处理器或支持发送端处理器实现该第二方面描述的方法的通信装置,例如该通信装置包括芯片系统,例如该通信装置包括芯片系统。例如,优先级调整装置包括:发送单元。所述发送单元,用于向发送端网卡发送优先级调整指示,优先级调整指示包括第一QP的标识和优先级信息,第一QP的标识用于指示第一QP。
可选地,对于优先级调整方法的具体解释同第二方面中相应的描述,这里不再赘述。
第六方面,本申请还提供了一种优先级调整装置,用于实现上述第三方面描述的方法。优先级调整装置为接收端网卡或支持接收端网卡实现该第三方面描述的方法的通信装置,例如该通信装置包括芯片系统。例如,该优先级调整装置包括:接收单元和发送单元。所述接收单元,用于接收发送端网卡发送的通知报文,通知报文用于指示接收端网卡调整第一OP的当前优先级,通知报文包括第一QP的标识和优先级信息,第一QP的标识用于指示第一QP,优先级信息用于指示接收端网卡调整第一OP的当前优先级时所需的优先级;所述发送单元,用于向发送端网卡发送响应报文,响应报文用于指示接收端网卡已接收到第一QP的标识和优先级信息。
可选地,对于优先级调整方法的具体解释同第三方面中相应的描述,这里不再赘述。
需要说明的是,上述第四方面至第六方面的功能模块可以通过硬件实现,也可以通过硬件执行相应的软件实现。硬件或软件包括一个或多个与上述功能相对应的模块。例如,收发器,用于完成接收单元和发送单元的功能,处理器,用于完成处理单元的功能,存储器,用于处理器处理本申请的方法的程序指令。处理器、收发器和存储器通过总线连接并完成相互间的通信。具体的,可以参考第一方面所述的方法至第三方面所述的方法中的网卡的行为的功能。
第七方面,本申请提供了一种网卡,包括存储器和处理器,存储器用于用于存储计算机执行指令,所述网卡运行时,所述处理器执行所述存储器中的计算机执行指令以利用所述优先级调整装置中的硬件资源执行第一方面或第一方面任一种可能实现方式中所述方法的操作步骤,或者执行第三方面或第三方面任一种可能实现方式中所述方法的操作步骤。
第八方面,本申请提供了一种发送端服务器,包括网卡、存储器和处理器,存储器用于用于存储QP的优先级和计算机执行指令,所述发送端服务器运行时,所述处理器执行所述存储器中的计算机执行指令以利用所述优先级调整装置中的硬件资源执行第二方面或第二方面任一种可能实现方式中所述方法的操作步骤,所述网卡执行所述存储器中的计算机执行指令以利用所述优先级调整装置中的硬件资源执行第一方面或第一方面任一种可能实现方式中所述方法的操作步骤。
第九方面,本申请提供了一种接收端服务器,包括网卡、存储器和处理器,存储器用于用于存储QP的优先级和计算机执行指令,所述接收端服务器运行时,所述网卡执行所述存储器中的计算机执行指令以利用所述优先级调整装置中的硬件资源执行第三方面或第三方面任一种可能实现方式中所述方法的操作步骤。
第十方面,本申请还提供了一种计算机可读存储介质,包括:计算机软件指令;当计算机软件指令在计算机上运行时,使得计算机执行上述第一方面或第一方面任一种可能的实现方式中任一种可能的方法的操作步骤、或者执行上述第二方面或第二方面任一种可能的实现方式中任一种可能的方法的操作步骤、或者执行上述第三方面或第三方面任一种可能的实现方式中任一种可能的方法的操作步骤。
第十一方面,本申请还提供了一种包含指令的计算机程序产品,当计算机程序产品在计算机上运行时,使得计算机执行上述第一方面、第二方面或第三方面所述的方法。
第十二方面,本申请提供了一种芯片系统,该芯片系统包括处理器,还可以包括存储器,用于实现上述方法中网卡的功能。该芯片系统可以由芯片构成,也可以包含芯片和其他分立器件。
可以理解的是,上述提供的任一种装置或计算机可读存储介质或计算机程序产品等均用于执行上文所提供的对应的方法,因此,其所能达到的有益效果可参考对应的方法中的有益效果,此处不再赘述。
第十三方面,本申请还提供了一种通信系统,所述通信系统包括第四方面描述的发送端网卡或支持发送端网卡实现该第一方面描述的方法的通信装置,以及第五方面描述的发送端处理器或支持发送端处理器实现该第二方面描述的方法的通信装置,第六方面描述的接收端网卡或支持接收端网卡实现该第三方面描述的方法的通信装置;
或所述通信系统包括第七方面描述的网卡或支持网卡实现该第一方面描述的方法的通信装置,以及第七方面描述的网卡或支持网卡实现该第二方面描述的方法的通信装置;
或所述通信系统包括第八方面描述的服务器或支持服务器实现该第一方面描述的方法的通信装置,以及第九方面描述的服务器或支持服务器实现该第三方面描述的方法的通信装置。
另外,上述任意方面的设计方式所带来的技术效果可参见第一方面至第三方面中不同设计方式所带来的技术效果,此处不再赘述。
本申请中,网卡和服务器的名字对设备本身不构成限定,在实际实现中,这些设备可以以其他名称出现。只要各个设备的功能和本申请类似,属于本申请权利要求及其等同技术的范围之内。
附图说明
图1为本申请提供的一种通信系统的结构示例图;
图2为本申请实施例提供的一种优先级调整方法的流程图;
图3为本申请实施例提供的另一种优先级调整方法的流程图;
图4为本申请实施例提供的一种优先级调整结果的示意图;
图5为本申请实施例提供的又一种优先级调整方法的流程图;
图6为本申请提供的一种CNP的格式示意图;
图7为本申请提供的一种保留字段的格式示意图;
图8为本申请实施例提供的再一种优先级调整方法的流程图;
图9为本申请提供的一种优先级调整装置的结构示例图;
图10为本申请提供的一种网卡的结构示例图;
图11为本申请提供的一种服务器的结构示例图。
具体实施方式
本申请说明书和权利要求书及上述附图中的术语“第一”、“第二”和“第三”等是用于区别不同对象,而不是用于限定特定顺序。
在本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
为了更好理解本申请提供的技术方案,下面对本申请涉及的术语和技术概念进行简单说明。
RDMA是一种远程的DMA技术,为了解决网络传输中服务器端数据处理的延迟而产生的。RDMA允许用户态的应用程序直接读取或写入远程内存,无需内核干预和内存拷贝,因此,具有低时延、高带宽、低处理器占用率的优势。
图1为本申请提供的一种通信系统的结构示例图。如图1所示,通信系统包括服务器100和服务器200。服务器100和服务器200之间可以通过网络300进行消息通信。发送数据的服务器可以称为发送端服务器,接收数据的服务器可以称为接收端服务器。对于一个服务器来说,当该服务器用于发送数据时,该服务器可以被称为发送端服务器,当该服务器用于接收数据时,该服务器可以被称为接收端服务器。
网络300可以是以太网,也就是说服务器之间可以使用传输控制协议/互连的协议(Transmission Control Protocol/internet protocol,TCP/IP)进行通信;网络300也可以是基于RDMA技术的网络。服务器可以根据RDMA技术通过服务器的网卡将数据从一个系统快速移动到远程系统存储器中,而不需要服务器中处理器的参与,由此减少服务器的处理器的负载,提升服务器之间数据传输效率。例如,基于RDMA技术的网络可以是无线宽带(InfiniBand,IB)网络、通过以太网使用远程直接内存访问(RDMA over ConvergedEthernet,RoCE)网络、iWapp网络等,本申请对此不作限定。
服务器100和服务器200中的每个服务器均包括硬件层和软件层,图1中仅示意出了服务器100的结构。其中,服务器100的硬件层包括网卡、存储器和处理器等。
所述处理器可以是中央处理器(central processing unit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(digital signal processor,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现场可编程门阵列(fieldprogrammable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者是任何常规的处理器等。
值得说明的是,图1中仅以服务器硬件层中网卡、存储器和处理器的数量均为1为例,本申请实施例对于同一服务器中网卡、存储器和处理器的数量并不构成对本申请实施例的限定。
网卡,可以是支持RDMA技术的网络接口卡,也可以是主机通道适配器(hostchannel adapter,HCA),其主要功能是将多个服务器连接至网络,使得服务器之间能够通过支持RDMA技术的网络互相通信。网卡可以通过外接光纤、电缆等连接到网络中。网卡可以插于计算机的PCIe插槽上,并通过PCIe与处理器连接。或者网卡可以通过某种特定的(或私有的)总线与处理器连接,本申请实施例对此不进行限定。可以理解的是,在物理实现上,网卡可以作为服务器的一部分,也可以是独立于服务器的一个器件/设备。为了便于描述,下文中均将网卡描述为服务器的网卡。网卡可以包括一个或多个端口,具体是指用于接收数据的端口。网卡可以包括处理器、缓存、内存和寄存器。网卡内的内存或缓存可以利用随机存取存储器(random access memory,RAM)类型的存储介质实现。
处理器、存储器和桥片等芯片可以安装在服务器的底板上,用于对其他扩展卡进行控制,实现处理器的功能。处理器上运行有操作系统和应用APP等软件。例如,RDMA网卡作为扩展卡,通过PCIe总线与底板连接,进而与处理器进行交互。RDMA网卡包括对RDMA协议进行卸载的芯片和存放数据的内存等,通过光模块连接光纤与其他RDMA网卡进行通信。两个RDMA网卡之间可以直接通过光纤进行连接,也可以途经交换网络(交换机等等),本申请对此不作限定。
软件层是运行在硬件层上的程序代码。具体地,软件层又可以分成若干个层,层与层之间通过软件接口通信。软件层包括应用层、驱动层和操作系统层。其中,应用层包括一系列运行应用程序的程序代码。驱动层用于实现硬件层和软件层之间消息交互。驱动层包含用户态网卡驱动层和内核态网卡驱动层等。操作系统层包括操作系统程序代码和协议栈。操作系统可以是Linux或Windows等。协议栈是指按照通信协议所涉及的不同层级划分,并处理对应层级数据处理的程序代码的集合。
在一种可能的实现方式中,例如,在IB网络架构中,协议栈可以包括应用层、传输层、网络层、链路层和物理层。应用层的功能可以在软件层实现。传输层、网络层、链路层和物理层的功能可以在网卡中实现。
在服务器传输数据之前,可以为服务器预先配置多个QP,每个QP可以包括发送队列(send queue,SQ)和接收队列(receive queue,RQ)。每个SQ用于存储至少一个SQE。每个RQ用于存储至少一个接收队列条目(receive queue entry,RQE)。SQE和RQE可以统称为传输指令(命令)条目(work request entry,WQE)。
可以理解的是,所谓SQE为服务器的网卡从内存中获取数据所需的指令信息。所谓RQE为服务器接收到数据之后存储数据所需的指令信息。
还可以理解的是,每个SQE和RQE仅用于传输指令信息,并不包含数据,因此,接收端服务器或发送端服务器需要根据SQE或RQE中指令信息,从其他存储介质(例如,服务器的内存)中获取数据。
接收端服务器和发送端服务器基于QP进行通信,每个服务器中包括一个或多个QP,不同服务器中QP的数量可以相同,也可以不同。示例地,以图1所述通信系统为例,当服务器100作为发送端服务器,服务器200作为接收端服务器时,服务器100中建立一个QP11,QP11中包括SQ11和RQ11,服务器200中建立有一个QP21,QP21中包括SQ21和RQ21。服务器100和服务器200通信过程中,预先建立QP11和QP21的对应关系,相应地,发送端服务器可以基于SQ11中的SQE1从内存中获取数据,接收端服务器可以基于RQ11中的RQE1存储接收到的所述数据。
服务器还可以配置完成队列(complete queue,CQ),CQ用于存储完成队列条目(complete queue entry,CQE)。在服务器的网卡从内存中读取完成数据或向内存写入完成数据之后,网卡可以向处理器发送CQE。
需要说明的是,发送端服务器的处理器给发送端服务器的网卡发送一个WQE,WQE包括需要发送的数据在发送端服务器中的地址、长度和RoCE的操作信息-决定报文类型;发送端服务器的网卡根据WQE信息以及QP上下文的信息将第一业务数据块封装为多个报文时,根据第一QP的当前优先级发送业务数据块的多个报文。发送端服务器的网卡在发送业务数据块时,是根据业务数据块采用的QP的优先级发送业务数据块。
在AI训练过程中,参数服务器向训练服务器发送模型参数时可以采用相同的QP优先级。但是,由于不同的训练服务器的性能存在差异,因此不同的训练服务器训练模型参数的训练时长不一致,向参数服务器反馈模型参数的梯度的时刻也不一致,导致参数服务器接收多个训练服务器反馈的模型参数的梯度的时刻也不一致。对于每次迭代,参数服务器需要等待所有训练服务器反馈模型参数的梯度后再进行参数同步。因此,AI训练过程中整体的训练效率较低。
本申请提供了一种优先级调整方法,所述方法包括:在发送端服务器的网卡接收到发送端服务器的处理器发送的优先级调整指示之后,判断采用第一QP发送的第一业务数据块是否处于发送状态,当采用第一QP发送的第一业务数据块未处于发送状态时,发送端服务器的网卡根据优先级信息指示的优先级调整第一QP的当前优先级,得到第一QP的调整后优先级;以便于发送端服务器的网卡根据第一QP的调整后优先级发送第一业务数据块。其中,优先级调整指示包括第一QP的标识和优先级信息,第一QP的标识用于指示第一QP,优先级信息用于指示发送端网卡调整第一OP的当前优先级时所需的优先级。优先级信息指示的优先级高于当前优先级,或者,优先级信息指示的优先级低于当前优先级。第一QP的调整后优先级与优先级信息指示的优先级相同。
从而,发送端服务器的网卡根据接收到的优先级调整指示动态调整发送业务数据块的优先级,改变业务数据块发送的时机,使得接收端服务器的网卡接收到业务数据块的时刻不同。在AI训练过程中,参数服务器可以根据训练服务器的性能调整QP的优先级,改变发送模型参数的时机。例如,参数服务器可以先向训练慢的训练服务器发送模型参数,再向训练快的训练服务器发送模型参数,使得训练慢的训练服务器比训练快的训练服务器先接收到模型参数对模型参数进行训练,从而,对于不同训练性能的训练服务器,增大训练服务器之间接收模型参数的时差,减小训练慢的训练服务器和训练快的训练服务器之间训练模型参数的时差,减小参数服务器接收多个训练服务器反馈的模型参数的梯度间的时差,提高了AI训练过程中整体的训练效率。
接下来,结合附图对本申请实施例提供的优先级调整方法进行详细说明。
图2为本申请实施例提供的一种优先级调整方法的流程图。这里以第一QP为例进行阐述说明。如图2所示,该方法可以包括:
S201、发送端服务器的处理器向发送端服务器的网卡发送优先级调整指示。
优先级调整指示用于指示调整QP的优先级。在一些实施例中,优先级调整指示包括第一QP的标识和优先级信息,第一QP的标识用于指示第一QP,优先级信息用于指示发送端网卡调整第一OP的当前优先级时所需的优先级。例如,优先级信息可以是指优先级或者优先级的索引。当发送端服务器的网卡接收到优先级的索引后,可以根据优先级的索引确定优先级。
在一些实施例中,QP的优先级可以是预先定义的。所谓预先定义可以理解为标准或者协议中预先定义的。发送端服务器和接收端服务器需要预先存储预先定义的优先级。在本申请中,可以预先定义8个优先级(如:0~7)。在一些实施例中,从第一个优先级(优先级0)到第八个优先级(优先级7),优先级可以越来越高。在另一些实施例中,从第一个优先级(优先级0)到第八个优先级(优先级7),优先级可以越来越低。
在一种可能的设计中,发送端服务器的处理器确定需要调整第一QP的当前优先级时,可以调用第一接口,通过PCIe总线向发送端服务器的网卡发送优先级调整指示。第一接口可以是动态(verbs)函数接口。示例的,第一接口如下所示(包括但不限于以下形式):
int(*dynamic_modify_qp_pri)(struct ibv_qp*qp,int pri);
其中,struct ibv_qp*qp,int pri表示输入参数。数据结构ibv_qp表示第一接口的数据结构,通过这个数据结构指示需要修改优先级的qp。pri表示qp的调整后优先级。在本申请实施例中,pri的合法值可以为0~7。
第一接口的返回值为int。当返回值为0时,表示优先级调整指示下发成功;当返回值不为0时,表示优先级调整指示下发失败。失败类型包括但不限于优先级取值不合法、需要修改的qp不存在等等。
在一些实施例中,发送端服务器的处理器可以根据接收端服务器反馈的信息确定需要调整优先级的QP。例如,在AI训练过程中,参数服务器可以根据接收到的模型参数的梯度的时刻调整发送模型参数的QP的优先级。其中,参数服务器可以将后接收到的模型参数的梯度对应的QP的优先级调高,将先接收到的模型参数的梯度对应的QP的优先级调低。
S202、发送端服务器的网卡接收发送端服务器的处理器发送的优先级调整指示。
在一些实施例中,在发送端服务器的网卡接收到发送端服务器的处理器发送的优先级调整指示之后,发送端服务器的网卡可以先将优先级信息缓存到发送端服务器的网卡的内存中,然后,判断是否需要调整第一QP的当前优先级。如图3所示,在S202之后,所述方法还包括以下步骤。
S301、发送端服务器的网卡判断优先级信息指示的优先级与第一QP的当前优先级是否相同。
若优先级信息指示的优先级与第一QP的当前优先级不相同,执行S302。若优先级信息指示的优先级与第一QP的当前优先级相同,发送端服务器的网卡无需调整第一QP的当前优先级,流程结束。
S302、发送端服务器的网卡确定采用第一QP发送的第一业务数据块是否处于发送状态。
由于一个业务数据块(一个业务数据块也可以称为一个消息)通常由发送端服务器的网卡划分为多个报文,通过网络将多个报文发送至接收端服务器的网卡。所谓发送状态可以是指发送端服务器的网卡发送业务数据块的报文过程中。例如,从发第一个报文到最后一个发送结束,都属于发送状态。
当采用第一QP发送的第一业务数据块未处于发送状态时,执行S203和S204。当采用第一QP发送的第一业务数据块处于发送状态时,在第一业务数据块发送完成,执行S203和S205。
在发送端服务器的网卡接收到发送端服务器的处理器发送的优先级调整指示之后,发送端服务器的网卡可以先将优先级信息缓存到发送端服务器的网卡的内存中,在采用第一QP发送第一业务数据块前调整第一QP的当前优先级,能够保证发送同一业务数据块的多个报文优先级相同,避免导致同一业务数据块的多个报文乱序现象的发生。
S203、发送端服务器的网卡根据优先级信息调整第一QP的当前优先级,得到第一QP的调整后优先级。
发送端服务器的网卡可以根据优先级信息指示的优先级调整第一QP的当前优先级,得到第一QP的调整后优先级。
在一些实施例中,在发送端服务器的处理器的内存里维护了一个QP上下文(或者称为QP的属性,包括QP的标识、QP的优先级信息、与QP建立的对端QP的信息等等)。发送端服务器的网卡在使用时,会从发送端服务器的处理器的内存将QP上下文拷贝到发送端服务器的网卡的内存。在本实施例中,发送端服务器的网卡可以将发送端服务器的网卡中的内存中存储的第一QP的当前优先级更新为优先级信息指示的优先级。其中,调整后优先级高于当前优先级,或者,调整后优先级低于当前优先级。第一QP的上下文包括第一QP的调整后优先级。
S204、发送端服务器的网卡根据第一QP的调整后优先级发送第一业务数据块。
在发送端服务器的网卡根据优先级信息指示的优先级调整第一QP的当前优先级,得到第一QP的调整后优先级后,当发送端服务器的网卡需要采用第一QP发送第一业务数据块时,需要根据第一QP的调整后优先级发送第一业务数据块。若优先级信息指示的优先级高于第一QP的当前优先级,相对第一QP的当前优先级,发送端服务器的网卡可以优先发送第一业务数据块。若优先级信息指示的优先级低于第一QP的当前优先级,相对第一QP的当前优先级,发送端服务器的网卡可以延迟发送第一业务数据块。
在一些实施例中,发送端服务器的处理器给发送端服务器的网卡发送一个WQE,WQE包括需要发送的数据在发送端服务器中的地址、长度和RoCE的操作信息-决定报文类型;发送端服务器的网卡根据WQE信息以及第一QP上下文的信息将第一业务数据块封装为多个报文时,根据第一QP的调整后优先级发送第一业务数据块的多个报文。
S205、发送端服务器的网卡根据第一QP的调整后优先级发送第二业务数据块。
在发送端服务器的网卡根据优先级信息指示的优先级调整第一QP的当前优先级,得到第一QP的调整后优先级后,当发送端服务器的网卡需要采用第一QP发送第二业务数据块时,需要根据第一QP的调整后优先级发送第二业务数据块。若优先级信息指示的优先级高于第一QP的当前优先级,相对第一QP的当前优先级,发送端服务器的网卡可以优先发送第二业务数据块。若优先级信息指示的优先级低于第一QP的当前优先级,相对第一QP的当前优先级,发送端服务器的网卡可以延迟发送第二业务数据块。
本申请实施例提供的优先级调整方法,发送端服务器的网卡根据接收到的优先级调整指示动态调整发送业务数据块的优先级,改变业务数据块发送的时机,使得接收端服务器的网卡接收到业务数据块的时刻不同。在AI训练过程中,参数服务器可以根据训练服务器的性能调整QP的优先级,改变发送模型参数的时机。例如,参数服务器可以先向训练慢的训练服务器发送模型参数,再向训练快的训练服务器发送模型参数,使得训练慢的训练服务器比训练快的训练服务器先接收到模型参数对模型参数进行训练,从而,对于不同训练性能的训练服务器,增大训练服务器之间接收模型参数的时差,减小训练慢的训练服务器和训练快的训练服务器之间训练模型参数的时差,减小参数服务器接收多个训练服务器反馈的模型参数的梯度间的时差,提高了AI训练过程中整体的训练效率。
如图4所示,为本申请实施例提供的一种优先级调整结果的示意图。
在方法1中,所有训练服务器使用相同的优先级,参数服务器的网卡带宽均分给2个训练服务器。假设负载完全均衡,所有的训练服务器在时间点3获得模型参数并开始计算,由于训练服务器1训练速度慢,所以本次迭代最后完成的时间为时间点6。
在方法2中,提升训练服务器1的数据流优先级,参数服务器的网卡全部带宽用于传输训练服务器1的模型参数,所以训练服务器1通信时间减少一半,在时间点2提前获得模型参数并开始计算,参数服务器再向训练服务器2发送参数,训练服务器2还是在时间点3获得参数并开始计算,最终训练完成的时间为时间点5。
可以看出在一次迭代中,方法2比方法1节省了从时间点5到时间点6的时间,从而提高AI训练过程中整体的训练效率。
可选的,若发送端服务器的网卡在根据第一优先级调整指示调制第一QP的当前优先级时,发送端服务器的网卡又接收到了第二优先级调整指示,发送端服务器的网卡可以根据第二优先级调整指示调整第一QP的当前优先级。
进一步的,为了保证接收端服务的网卡存储的第一QP的当前优先级与发送端服务的网卡存储的第一QP的当前优先级一致,发送端服务器的网卡还需要向接收端服务器的网卡通知第一QP的调整后优先级。如图5所示,所述方法还包括以下步骤。
S303、发送端服务器的网卡向接收端服务器的网卡发送通知报文。
在一些实施例中,若优先级信息指示的优先级低于第一QP的当前优先级,发送端服务器的网卡可以根据第一QP的当前优先级向接收端服务器的网卡发送通知报文。若优先级信息指示的优先级高于第一QP的当前优先级,发送端服务器的网卡可以根据第一QP的调整后优先级向接收端服务器的网卡发送通知报文。从而,以便于接收端服务器的网卡能够及时收到第一QP的调整后优先级。
在另一些实施例中,在发送端服务器的网卡接收到发送端服务器的处理器发送的优先级调整指示之后,发送端服务器的网卡还未将第一QP的当前优先级调整为优先级信息指示的优先级之前,发送端服务器的网卡可以根据第一QP的当前优先级向接收端服务器的网卡发送通知报文。发送端服务器的网卡将第一QP的当前优先级调整为优先级信息指示的优先级之后,发送端服务器的网卡可以根据第一QP的调整后优先级向接收端服务器的网卡发送通知报文。
通知报文用于指示接收端网卡调整第一OP的当前优先级。在一些实施例中,通知报文包括第一QP的标识和优先级信息。第一QP的标识用于指示第一QP。优先级信息用于指示接收端网卡调整第一OP的当前优先级时所需的优先级。例如,优先级信息可以是指优先级或者优先级的索引。
需要说明的是,若优先级信息指示的优先级与第一QP的当前优先级不相同,发送端服务器的网卡向接收端服务器的网卡发送通知报文。若优先级信息指示的优先级与第一QP的当前优先级相同,发送端服务器的网卡可以无需向接收端服务器的网卡发送通知报文。
在发送端服务器的网卡向接收端服务器的网卡发送通知报文之后,可以启动定时器。定时器用于超时后重新发送通知报文,目的是确保接收端服务器的网卡接收到第一QP的标识和优先级信息。
S304、接收端服务器的网卡接收发送端服务器的网卡发送的通知报文。
S305、接收端服务器的网卡向发送端服务器的网卡发送响应报文。
响应报文用于指示接收端服务器的网卡已接收到第一QP的标识和优先级信息。在一些实施例中,在接收端服务器的网卡接收到发送端服务器的网卡发送的通知报文之后,解析通知报文,得到第一QP的标识和优先级信息。接收端服务器的网卡可以先确定是否配置有第一QP,若接收端服务器的网卡预先配置有第一QP,接收端服务器的网卡向发送端服务器的网卡发送响应报文。若接收端服务器的网卡没有配置第一QP,接收端服务器的网卡无需向发送端服务器的网卡发送响应报文。
在本申请中,假设接收端服务器和发送端服务器配置有相同的QP,接收端服务器的网卡接收发送端服务器的网卡发送的通知报文之后,接收端服务器的网卡向发送端服务器的网卡发送响应报文。
S306、在定时器运行状态中,发送端服务器的网卡接收接收端服务器的网卡发送的响应报文。
在定时器运行状态中,若发送端服务器的网卡接收到接收端服务器的网卡发送的响应报文,表示接收端服务器的网卡已接收到第一QP的标识和优先级信息。在发送端服务器的网卡接收接收端服务器的网卡发送的响应报文之后,取消定时器,如果第一QP的当前优先级也调整完毕,那么,本次优先级调整完成,发送端服务器的网卡可以向发送端服务器的处理器发送优先权调整完成响应。
S307、发送端服务器的网卡根据定时器时长确定定时器超时。
S308、发送端服务器的网卡向接收端服务器的网卡重复发送通知报文。
发送端服务器的网卡向接收端服务器的网卡重复发送通知报文之后,重新启动定时器。在定时器运行状态中,发送端服务器的网卡监控是否接收到接收端服务器的网卡发送的响应报文。
重复S307和S308,直到发送端服务器的网卡接收到接收端服务器的网卡发送的响应报文。
如果重复发送通知报文的次数等于门限值,定时器已超时,发送端服务器的网卡还未接收到接收端服务器的网卡发送的响应报文,执行S309。
S309、发送端服务器的网卡向发送端服务器的处理器发送优先权调整失败响应。
在一种可能的实现方式中,通知报文和响应报文可以是拥塞通知报文(Congestion Notification Packet,CNP)。如图6所示,为本申请提供的一种CNP的格式示意图。CNP包括媒体控制访问(Media Control Access,MCA)头字段、IPv4/IPv6头字段、用户数据协议(User Data Protocol,UDP)头字段、基本传输头(Base Transport Header,BTH)字段和保留字段。其中,可以使用BTH字段所承载的比特状态(或者说比特信息)指示QP的标识。可以使用保留字段所承载的部分比特状态(或者说比特信息)指示报文类型和优先级信息。例如,使用3bit的类型字段指示优先级信息。使用1bit的优先级字段指示报文类型。如图7所示,为本申请提供的一种保留字段的格式示意图。其中,当Type的取值为0时,表示此时发送的报文为通知报文;当Type的取值为1时,表示此时发送的报文为响应报文。Priority表示携带的优先级信息,3bit的取值代表8个优先级之一。如:当Priority的取值为000时,表示优先级0,当Priority的取值为001时,表示优先级1,当Priority的取值为010时,表示优先级2,当Priority的取值为011时,表示优先级3,当Priority的取值为100时,表示优先级4,当Priority的取值为101时,表示优先级5,当Priority的取值为110时,表示优先级6,当Priority的取值为111时,表示优先级7。
进一步的,在接收端服务器的网卡接收发送端服务器的网卡发送的通知报文,即S404之后,接收端服务器的网卡需要对第一QP的当前优先级进行调整。如图8所示,所述方法还包括以下步骤。
S801、接收端服务器的网卡确定采用第一QP发送的第一业务数据块是否处于发送状态。
当采用第一QP发送的第一业务数据块未处于发送状态时,执行S802和S803。当采用第一QP发送的第一业务数据块处于发送状态时,在第一业务数据块发送完成,执行S802和S804。接收端服务器的网卡根据优先级信息调整第一QP的当前优先级,得到第一QP的调整后优先级,并根据第一QP的调整后优先级发送第二业务数据块。
S802、接收端服务器的网卡根据优先级信息调整第一QP的当前优先级,得到第一QP的调整后优先级。
接收端服务器的网卡可以将接收端服务器的网卡中的内存中存储的第一QP的当前优先级更新为优先级信息指示的优先级。其中,优先级信息指示的优先级高于第一QP的当前优先级,或者,优先级信息指示的优先级低于第一QP的当前优先级。
S803、接收端服务器的网卡根据第一QP的调整后优先级发送第一业务数据块。
在接收端服务器的网卡根据优先级信息指示的优先级调整第一QP的当前优先级,得到第一QP的调整后优先级后,当接收端服务器的网卡需要采用第一QP发送第一业务数据块时,需要根据第一QP的调整后优先级发送第一业务数据块。若优先级信息指示的优先级高于第一QP的当前优先级,接收端服务器的网卡可以优先发送第一业务数据块。优先级信息指示的优先级低于第一QP的当前优先级,接收端服务器的网卡可以延迟发送第一业务数据块。其他具体的解释可以参考S304的阐述,不予赘述。
S804、接收端服务器的网卡根据第一QP的调整后优先级发送第二业务数据块。
在接收端服务器的网卡根据优先级信息指示的优先级调整第一QP的当前优先级,得到第一QP的调整后优先级后,当接收端服务器的网卡需要采用第一QP发送第二业务数据块时,需要根据第一QP的调整后优先级发送第二业务数据块。若优先级信息指示的优先级高于第一QP的当前优先级,接收端服务器的网卡可以优先发送第二业务数据块。优先级信息指示的优先级低于第一QP的当前优先级,接收端服务器的网卡可以延迟发送第二业务数据块。具体的解释可以参考S803的阐述,不予赘述。
本申请实施例所述的优先级调整方法主要应用于AI训练的过程中,对于不同训练性能的训练服务器,增大训练服务器之间接收模型参数的时差,减小训练慢的训练服务器和训练快的训练服务器之间训练模型参数的时差,减小参数服务器接收多个训练服务器反馈的模型参数的梯度间的时差,提高了AI训练过程中整体的训练效率。
在另一些实施例中,也可以应用于分布式系统中,分布式系统中的服务器也可以根据申请实施例提供的优先级调整方法传输数据。
上述主要从方法的角度对本申请实施例提供的方案进行了介绍。为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例可以根据上述方法示例对优先级调整装置进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
上文中结合图2、图3、图5和图8,详细描述了本申请所提供的优先级调整方法,下面将结合图9至图11,描述本申请所提供的优先级调整装置、网卡和服务器。
图9为本申请实施例提供的一种优先级调整装置900的结构示意图。该装置900可以用于执行图2、图3、图5和图8中任一附图所示的优先级调整方法。该装置900可以包括:接收单元901、处理单元902和发送单元903。其中,接收单元901,用于接收发送端处理器发送的优先级调整指示,优先级调整指示包括第一QP的标识和优先级信息,第一QP的标识用于指示第一QP,优先级信息用于指示发送端网卡调整第一OP的当前优先级时所需的优先级。当采用第一QP发送的第一业务数据块未处于发送状态时,处理单元902,用于根据优先级信息调整第一QP的当前优先级,得到第一QP的调整后优先级,其中,调整后优先级高于当前优先级,或者,调整后优先级低于当前优先级。例如,结合图3,处理单元902可以用于执行S301至S302。又如,结合图5,处理单元901可以用于执行S307。又如,结合图8,处理单元901可以用于执行S801和S802。发送单元903,用于根据第一QP的调整后优先级发送第一业务数据块。例如,用于支持优先级调整装置执行图2、图3、图5所示的方法中的S204。又例如,用于支持优先级调整装置执行图8所示的方法中的S803。
需要说明的是,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。
本申请实施例提供的装置,用于执行上述任意实施例的方法,因此可以达到与上述实施例的方法相同的效果。
应理解的是,本申请实施例的装置900可以通过专用集成电路(application-specific integrated circuit,ASIC)实现,或可编程逻辑器件(programmable logicdevice,PLD)实现,上述PLD可以是复杂程序逻辑器件(complex programmable logicaldevice,CPLD),现场可编程门阵列(field-programmable gate array,FPGA),通用阵列逻辑(generic array logic,GAL)或其任意组合。也可以通过软件实现图2、图3、图5和图8所示的方法时,装置900及其各个模块也可以为软件模块。
本实施例中相关内容的解释以及有益效果的描述等均可参考上述方法实施例。
图10为本申请实施例提供的一种网卡1000的硬件结构示意图。如图所示,网卡1000包括:至少一个处理器1001、通信线路1002、存储器1003、网络接口1004和主机接口1005。其中,通信线路1002可以包括一通路,用于在该至少一个处理器1001、存储器1002以及网络接口1004之间传送信息。这里的网络接口1004用于网卡1000与其他网卡进行通信。主机接口1005用于该网卡1000与该网卡1000所在的服务器件的通信。其中,至少一个处理器1001与通信芯片可以集成在一起,也可以是独立设置的。存储器1003用于存储执行本申请方案的计算机执行指令,并由处理器1001来控制执行。处理器1001用于执行存储器1003中存储的计算机执行指令,从而实现本申请上述实施例提供的优先级调整方法。本实施例中相关内容的解释以及有益效果的描述等均可参考上述方法实施例。
图11为本申请实施例提供的一种服务器1100的结构示意图。如图所示,服务器1100包括至少一个处理器1101、通信线路1102、存储器1103、网卡1104以及通信接口1105。通信接口1105可以包括有线收发器或无线收发器。无线收发器可以包括通信芯片。其中,至少一个处理器1101与通信芯片可以集成在一起,也可以是独立设置的。
处理器1101可以是一个通用CPU,该处理器1101还可以是其他通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者是任何常规的处理器等。处理器1101还可以是图形处理器(graphics processing unit,GPU)、神经网络处理器(neural network processing unit,NPU)、微处理器、特定应用集成电路(application-specific integrated circuit,ASIC)、或一个或多个用于控制本申请方案程序执行的集成电路。
通信线路1102可以包括一通路,用于在上述组件(如处理器1101、存储器1103、网卡1104和通信接口1105)之间传送信息。
存储器1103可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(electrically erasable programmable read-only memory,EEPROM)、只读光盘(compactdisc read-only memory,CD-ROM)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器1103可以是独立存在的,通过通信线路1102与处理器1101相连接。存储器1103也可以和处理器1101集成在一起。本申请实施例提供的存储器1103通常可以具有非易失性。存储器1103用于存储执行本申请方案的计算机执行指令,并由处理器1101来控制执行。处理器1101用于执行存储器1103中存储的计算机执行指令,从而实现本申请上述实施例提供的优先级调整方法。
网卡1104的结构可以参考上述图10,此处不再描述。
通信接口1105,可以是任何收发器一类的装置,用于服务器1100与其他设备通信。通信接口1105可以包括有线收发器或无线收发器。无线收发器可以包括通信芯片。
可选地,本申请实施例中的计算机执行指令也可以称之为应用程序代码。
作为一个示例,处理器1101可以包括一个或多个CPU。作为一个示例,服务器1100可以包括多个处理器。这些处理器中的每一个可以是一个单核(single-CPU)处理器,也可以是一个多核(multi-CPU)处理器。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(例如计算机程序指令)的处理核。
上述服务器1100可以是一个通用设备或者是一个专用设备。例如,服务器1100可以是基于X86、ARM的服务器,也可以为其他的专用服务器,如策略控制和计费(policycontrol and charging,PCC)服务器等。本申请实施例不限定服务器1100的类型。ARM是高级精简指令处理器(advanced RISC machines)的英文缩写,RISC是精简指令集计算机(reduced instruction set compute)的英文缩写。
本申请实施例还提供了一种通信系统,该通信系统可以包括服务器1100,其中服务器1100可以作为发送端服务器。另外,该通信系统还包括接收端服务器,用于接收发送端服务器发送数据,以使得接收端服务器执行上文所述的优先级调整方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件程序实现时,可以全部或部分地以计算机程序产品的形式来实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机执行指令时,全部或部分地产生按照本申请实施例的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或者数据中心通过有线(例如同轴电缆、光纤、数字用户线(digitalsubscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可以用介质集成的服务器、数据中心等数据存储设备。可用介质可以是磁性介质(例如,软盘、硬盘、磁带),光介质(例如,DVD)、或者半导体介质(例如固态硬盘(solid state disk,SSD))等。
以上所述,仅为本申请的具体实施方式。熟悉本技术领域的技术人员根据本申请提供的具体实施方式,可想到变化或替换,都应涵盖在本申请的保护范围之内。
Claims (31)
1.一种优先级调整方法,其特征在于,包括:
发送端网卡接收发送端处理器发送的优先级调整指示,所述优先级调整指示包括第一队列对QP的标识和优先级信息,所述第一QP的标识用于指示所述第一QP,所述优先级信息用于指示所述发送端网卡调整所述第一OP的当前优先级时所需的优先级;
当采用所述第一QP发送的第一业务数据块未处于发送状态时,所述发送端网卡根据所述优先级信息调整所述第一QP的当前优先级,得到所述第一QP的调整后优先级,其中,所述调整后优先级高于所述当前优先级,或者,所述调整后优先级低于所述当前优先级;
所述发送端网卡根据所述第一QP的调整后优先级发送所述第一业务数据块。
2.根据权利要求1所述的方法,其特征在于,在所述发送端网卡接收发送端处理器发送的优先级调整指示之后,所述方法还包括:
当采用所述第一QP发送的第一业务数据块处于发送状态,在所述第一业务数据块发送完成后,所述发送端网卡根据所述优先级信息调整所述第一QP的当前优先级,得到所述第一QP的调整后优先级。
3.根据权利要求1或2所述的方法,其特征在于,所述发送端网卡包括处理器和内存,所述发送端网卡的内存中存储有所述第一QP的上下文,所述第一QP的上下文包括所述第一QP的当前优先级,所述发送端网卡根据所述优先级信息调整所述第一QP的当前优先级,包括:
所述发送端网卡的处理器将所述内存中存储的所述第一QP的当前优先级更新为所述优先级信息指示的优先级。
4.根据权利要求1-3中任一项所述的方法,其特征在于,在所述发送端网卡接收发送端处理器发送的优先级调整指示之后,所述方法还包括:
所述发送端网卡判断所述优先级信息指示的优先级与所述第一QP的当前优先级是否相同;
若所述优先级信息指示的优先级与所述第一QP的当前优先级不相同,所述发送端网卡确定采用所述第一QP发送的第一业务数据块是否处于发送状态。
5.根据权利要求1-4中任一项所述的方法,其特征在于,所述方法还包括:
所述发送端网卡向接收端网卡发送通知报文,所述通知报文用于指示所述接收端网卡调整所述第一OP的当前优先级,所述通知报文包括所述第一QP的标识和所述优先级信息,所述优先级信息用于指示调整所述第一OP的当前优先级;
在定时器运行状态中,所述发送端网卡接收所述接收端网卡发送的响应报文,所述响应报文用于指示所述接收端网卡已接收到所述第一QP的标识和所述优先级信息。
6.根据权利要求5所述的方法,其特征在于,所述发送端网卡向接收端网卡发送通知报文,包括:
所述发送端网卡根据所述第一QP的当前优先级向所述接收端网卡发送所述通知报文;或者,
所述发送端网卡根据所述第一QP的调整后优先级向所述接收端网卡发送所述通知报文。
7.根据权利要求5或6所述的方法,其特征在于,在所述发送端网卡向接收端网卡发送通知报文之后,所述方法还包括:
所述发送端网卡根据所述定时器时长确定定时器超时;
所述发送端网卡向所述接收端网卡重复发送所述通知报文。
8.根据权利要求7所述的方法,其特征在于,发送所述通知报文的次数等于门限值,所述方法还包括:
所述发送端网卡向所述发送端处理器发送优先权调整失败响应。
9.根据权利要求1-8中任一项所述的方法,其特征在于,所述发送端网卡接收发送端处理器发送的优先级调整指示,包括:
所述发送端网卡接收所述发送端处理器通过调用第一接口发送的优先级调整指示,所述第一接口用于修改QP的优先级。
10.根据权利要求1-9中任一项所述的方法,其特征在于,所述发送端网卡接收发送端处理器发送的优先级调整指示,包括:
所述发送端网卡基于远程直接内存访问RDMA协议接收发送端处理器发送的优先级调整指示,所述发送端网卡为用于人工智能AI训练过程中的发送端服务器包含的网卡,所述接收端网卡为用于AI训练过程中的接收端服务器包含的网卡。
11.一种优先级调整方法,其特征在于,包括:
接收端网卡接收发送端网卡发送的通知报文,所述通知报文用于指示所述接收端网卡调整第一队列对OP的当前优先级,所述通知报文包括所述第一QP的标识和优先级信息,所述第一QP的标识用于指示所述第一QP,所述优先级信息用于指示所述接收端网卡调整所述第一OP的当前优先级时所需的优先级;
所述接收端网卡向所述发送端网卡发送响应报文,所述响应报文用于指示所述接收端网卡已接收到所述第一QP的标识和所述优先级信息。
12.根据权利要求11所述的方法,其特征在于,在所述接收端网卡接收发送端网卡发送的通知报文之后,所述方法还包括:
当采用所述第一QP发送的第一业务数据块未处于发送状态时,所述接收端网卡根据所述优先级信息调整所述第一QP的当前优先级,得到所述第一QP的调整后优先级,其中,所述调整后优先级高于所述当前优先级,或者,所述调整后优先级低于所述当前优先级;
所述接收端网卡根据所述第一QP的调整后优先级发送第一业务数据块。
13.根据权利要求12所述的方法,其特征在于,在所述接收端网卡接收发送端网卡发送的通知报文之后,所述方法还包括:
当采用所述第一QP发送的第一业务数据块处于发送状态,在所述第一业务数据块发送完成后,所述接收端网卡根据所述优先级信息调整所述第一QP的当前优先级,得到所述第一QP的调整后优先级。
14.根据权利要求12或13所述的方法,其特征在于,所述接收端网卡包括处理器和内存,所述接收端网卡的内存中存储有所述第一QP的上下文,所述第一QP的上下文包括所述第一QP的当前优先级,所述接收端网卡根据所述优先级信息调整所述第一QP的当前优先级,包括:
所述接收端网卡的处理器将所述内存中存储的所述第一QP的当前优先级更新为所述优先级信息指示的优先级。
15.一种优先级调整装置,其特征在于,包括:
接收单元,用于接收发送端处理器发送的优先级调整指示,所述优先级调整指示包括第一队列对QP的标识和优先级信息,所述第一QP的标识用于指示所述第一QP,所述优先级信息用于指示发送端网卡调整所述第一OP的当前优先级时所需的优先级;
当采用所述第一QP发送的第一业务数据块未处于发送状态时,处理单元,用于根据所述优先级信息调整所述第一QP的当前优先级,得到所述第一QP的调整后优先级,其中,所述调整后优先级高于所述当前优先级,或者,所述调整后优先级低于所述当前优先级;
发送单元,用于根据所述第一QP的调整后优先级发送所述第一业务数据块。
16.根据权利要求15所述的装置,其特征在于,
当所述采用所述第一QP发送的第一业务数据块处于发送状态,在所述第一业务数据块发送完成后,所述处理单元,用于根据所述优先级信息调整所述第一QP的当前优先级,得到所述第一QP的调整后优先级。
17.根据权利要求15或16所述的装置,其特征在于,
所述处理单元,用于将发送端网卡包含的内存中存储的所述第一QP的当前优先级更新为所述优先级信息指示的优先级,所述发送端网卡包含的内存中存储有所述第一QP的上下文,所述第一QP的上下文包括所述第一QP的当前优先级。
18.根据权利要求15-17中任一项所述的装置,其特征在于,
所述处理单元,还用于判断所述优先级信息指示的优先级与所述第一QP的当前优先级是否相同;
若所述优先级信息指示的优先级与所述第一QP的当前优先级不相同,所述处理单元,用于确定采用所述第一QP发送的第一业务数据块是否处于发送状态。
19.根据权利要求15-18中任一项所述的装置,其特征在于,
所述发送单元,还用于向接收端网卡发送通知报文,所述通知报文用于指示所述接收端网卡调整所述第一OP的当前优先级,所述通知报文包括所述第一QP的标识和所述优先级信息,所述优先级信息用于指示调整所述第一OP的当前优先级;
在定时器运行状态中,所述接收单元,还用于接收所述接收端网卡发送的响应报文,所述响应报文用于指示所述接收端网卡已接收到所述第一QP的标识和所述优先级信息。
20.根据权利要求19所述的装置,其特征在于,
所述发送单元,用于根据所述第一QP的当前优先级向所述接收端网卡发送所述通知报文;或者,
所述发送单元,用于根据所述第一QP的调整后优先级向所述接收端网卡发送所述通知报文。
21.根据权利要求19或20所述的装置,其特征在于,
所述处理单元,还用于根据所述定时器时长确定定时器超时;
所述发送单元,还用于向所述接收端网卡重复发送所述通知报文。
22.根据权利要求21所述的装置,其特征在于,发送所述通知报文的次数等于门限值,
所述发送单元,还用于向所述发送端处理器发送优先权调整失败响应。
23.根据权利要求15-22中任一项所述的装置,其特征在于,所述接收单元,用于:
接收所述发送端处理器通过调用第一接口发送的优先级调整指示,所述第一接口用于修改QP的优先级。
24.根据权利要求15-23中任一项所述的装置,其特征在于,所述接收单元,用于:
基于远程直接内存访问RDMA协议接收发送端处理器发送的优先级调整指示,所述发送端网卡为用于人工智能AI训练过程中的发送端服务器包含的网卡,所述接收端网卡为用于人工智能AI训练过程中的接收端服务器包含的网卡。
25.一种优先级调整装置,其特征在于,包括:
接收单元,用于接收发送端网卡发送的通知报文,所述通知报文用于指示所述接收端网卡调整第一队列对OP的当前优先级,所述通知报文包括所述第一QP的标识和优先级信息,所述第一QP的标识用于指示所述第一QP,所述优先级信息用于指示接收端网卡调整所述第一OP的当前优先级时所需的优先级;
发送单元,用于向所述发送端网卡发送响应报文,所述响应报文用于指示所述接收端网卡已接收到所述第一QP的标识和所述优先级信息。
26.根据权利要求25所述的装置,其特征在于,所述装置还包括:
当采用所述第一QP发送的第一业务数据块未处于发送状态时,处理单元,用于根据所述优先级信息调整所述第一QP的当前优先级,得到所述第一QP的调整后优先级,其中,所述调整后优先级高于所述当前优先级,或者,所述调整后优先级低于所述当前优先级;
所述发送单元,还用于根据所述第一QP的调整后优先级发送第一业务数据块。
27.根据权利要求26所述的装置,其特征在于,
当采用所述第一QP发送的第一业务数据块处于发送状态,在所述第一业务数据块发送完成后,所述处理单元,用于根据所述优先级信息调整所述第一QP的当前优先级,得到所述第一QP的调整后优先级。
28.根据权利要求26或27所述的装置,其特征在于,
所述处理单元,用于将接收端网卡包含的内存中存储的所述第一QP的当前优先级更新为所述优先级信息指示的优先级,所述接收端网卡包含的内存中存储有所述第一QP的上下文,所述第一QP的上下文包括所述第一QP的当前优先级。
29.一种网卡,其特征在于,包括存储器和处理器,所述存储器用于存储计算机执行指令,所述处理器用于调用所述计算机执行指令,使得所述网卡运行时,执行所述计算机执行指令以实现如权利要求1至10任一项所述的方法的操作步骤、或者如权利要求11至14任一项所述的方法的操作步骤。
30.一种服务器,其特征在于,所述服务器包括处理器、存储器和网卡,所述存储器用于存储队列对QP的优先级和计算机执行指令,所述网卡用于调用所述计算机执行指令,使得所述网卡运行时,执行所述计算机执行指令以实现如权利要求1至10任一项所述的方法的操作步骤。
31.一种服务器,其特征在于,所述服务器包括处理器、存储器和网卡,所述存储器用于存储队列对QP的优先级和计算机执行指令,所述网卡用于调用所述计算机执行指令,使得所述网卡运行时,执行所述计算机执行指令以实现如权利要求11至14任一项所述的方法的操作步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910703073.XA CN112311694B (zh) | 2019-07-31 | 2019-07-31 | 一种优先级调整方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910703073.XA CN112311694B (zh) | 2019-07-31 | 2019-07-31 | 一种优先级调整方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112311694A true CN112311694A (zh) | 2021-02-02 |
CN112311694B CN112311694B (zh) | 2022-08-26 |
Family
ID=74486214
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910703073.XA Active CN112311694B (zh) | 2019-07-31 | 2019-07-31 | 一种优先级调整方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112311694B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113595762A (zh) * | 2021-06-29 | 2021-11-02 | 联想(北京)有限公司 | 一种网卡配置的保存方法及装置 |
CN113849293A (zh) * | 2021-11-30 | 2021-12-28 | 湖北芯擎科技有限公司 | 数据处理方法、装置、系统及计算机可读存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040120325A1 (en) * | 2002-12-13 | 2004-06-24 | Lawrence Ayres | System for content based message processing |
US20170070444A1 (en) * | 2015-09-04 | 2017-03-09 | Citrix Systems, Inc. | System for early system resource constraint detection and recovery |
CN107391268A (zh) * | 2016-05-17 | 2017-11-24 | 阿里巴巴集团控股有限公司 | 服务请求处理方法及装置 |
CN107733689A (zh) * | 2017-09-15 | 2018-02-23 | 西南电子技术研究所(中国电子科技集团公司第十研究所) | 基于优先级的动态加权轮询调度策略方法 |
CN107977268A (zh) * | 2017-10-13 | 2018-05-01 | 北京百度网讯科技有限公司 | 人工智能的异构硬件的任务调度方法、装置及可读介质 |
CN109417514A (zh) * | 2018-03-06 | 2019-03-01 | 华为技术有限公司 | 一种报文发送的方法、装置和存储设备 |
-
2019
- 2019-07-31 CN CN201910703073.XA patent/CN112311694B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040120325A1 (en) * | 2002-12-13 | 2004-06-24 | Lawrence Ayres | System for content based message processing |
US20170070444A1 (en) * | 2015-09-04 | 2017-03-09 | Citrix Systems, Inc. | System for early system resource constraint detection and recovery |
CN107391268A (zh) * | 2016-05-17 | 2017-11-24 | 阿里巴巴集团控股有限公司 | 服务请求处理方法及装置 |
CN107733689A (zh) * | 2017-09-15 | 2018-02-23 | 西南电子技术研究所(中国电子科技集团公司第十研究所) | 基于优先级的动态加权轮询调度策略方法 |
CN107977268A (zh) * | 2017-10-13 | 2018-05-01 | 北京百度网讯科技有限公司 | 人工智能的异构硬件的任务调度方法、装置及可读介质 |
CN109417514A (zh) * | 2018-03-06 | 2019-03-01 | 华为技术有限公司 | 一种报文发送的方法、装置和存储设备 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113595762A (zh) * | 2021-06-29 | 2021-11-02 | 联想(北京)有限公司 | 一种网卡配置的保存方法及装置 |
CN113595762B (zh) * | 2021-06-29 | 2023-05-26 | 联想(北京)有限公司 | 一种网卡配置的保存方法及装置 |
CN113849293A (zh) * | 2021-11-30 | 2021-12-28 | 湖北芯擎科技有限公司 | 数据处理方法、装置、系统及计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112311694B (zh) | 2022-08-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3719657A1 (en) | Communication with accelerator via rdma-based network adapter | |
CN108536543B (zh) | 具有基于跨步的数据分散的接收队列 | |
US10425344B2 (en) | Avoiding dropped data packets on a network transmission | |
EP3482298B1 (en) | Multicast apparatuses and methods for distributing data to multiple receivers in high-performance computing and cloud-based networks | |
WO2020236279A1 (en) | System and method for facilitating efficient management of idempotent operations in a network interface controller (nic) | |
US7924708B2 (en) | Method and apparatus for flow control initialization | |
US9178966B2 (en) | Using transmission control protocol/internet protocol (TCP/IP) to setup high speed out of band data communication connections | |
US20090006521A1 (en) | Adaptive receive side scaling | |
CN109218222B (zh) | 一种实现发送端调速的方法、装置和系统 | |
WO2022032984A1 (zh) | 一种mqtt协议仿真方法及仿真设备 | |
CN112311694B (zh) | 一种优先级调整方法及装置 | |
KR102383782B1 (ko) | 데이터 통신에서의 터널 데이터 업데이트 처리방법 | |
CN111371694B (zh) | 一种分流方法、装置和系统、处理设备和存储介质 | |
CN105141603A (zh) | 通信数据传输方法及系统 | |
CN117376339A (zh) | 基于ota的车辆ecu升级方法、装置、设备及介质 | |
CN113347017B (zh) | 一种网络通信的方法、装置、网络节点设备及混合网络 | |
WO2024088353A1 (zh) | 数据流的速率控制方法、智能网卡、云端设备及存储介质 | |
CN116868553A (zh) | 用于管理端点资源和拥塞缓解的数据中心网络上的动态网络接收器驱动的数据调度 | |
CN111404986A (zh) | 数据传输处理方法、设备和存储介质 | |
CN111416775B (zh) | 数据接收和发送方法、装置及系统 | |
CN111404842A (zh) | 数据传输方法、装置及计算机存储介质 | |
CN116954874A (zh) | 资源分配方法、装置、设备及存储介质 | |
CN114328317B (zh) | 一种提升存储系统通信性能的方法、装置及介质 | |
EP3229145A1 (en) | Parallel processing apparatus and communication control method | |
CN117041147B (zh) | 智能网卡设备、主机设备和方法及系统 |
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 |