CN113918351B - 深度学习框架与ai加速卡片内分布式训练适配方法和装置 - Google Patents
深度学习框架与ai加速卡片内分布式训练适配方法和装置 Download PDFInfo
- Publication number
- CN113918351B CN113918351B CN202111487478.8A CN202111487478A CN113918351B CN 113918351 B CN113918351 B CN 113918351B CN 202111487478 A CN202111487478 A CN 202111487478A CN 113918351 B CN113918351 B CN 113918351B
- Authority
- CN
- China
- Prior art keywords
- memory
- new hardware
- deep learning
- learning framework
- card
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9014—Indexing; Data structures therefor; Storage structures hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/36—Software reuse
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/545—Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
-
- 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/04—Architecture, e.g. interconnection topology
-
- 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/04—Architecture, e.g. interconnection topology
- G06N3/044—Recurrent networks, e.g. Hopfield networks
-
- 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/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- 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
-
- 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
- G06N3/082—Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
-
- 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
- G06N3/084—Backpropagation, e.g. using gradient descent
-
- 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/10—Interfaces, programming languages or software development kits, e.g. for simulating neural networks
- G06N3/105—Shells for specifying net layout
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Data Mining & Analysis (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Evolutionary Computation (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Databases & Information Systems (AREA)
- Neurology (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种深度学习框架与AI加速卡片内分布式训练适配方法和装置,包括如下步骤:S1:深度学习框架支持新增AI加速卡片内单卡配置,其子步骤如下:S11:深度学习框架支持新硬件;S12:深度学习框架支持新硬件的设备线程;S13:深度学习框架支持新硬件的内存操作;S14:深度学习框架支持新硬件的算子核函数;S2:深度学习框架支持新增AI加速卡片内多卡配置;S3:深度学习框架支持张量切分和多卡分布;S4:深度学习框架支持新增AI加速卡片内多卡集合通信,本发明打通了深度学习框架与新增AI加速卡,并将深度学习框架源码与芯片底层软件全面对接,最大限度释放芯片的硬件能力,为端侧AI提供最强劲的算力。
Description
技术领域
本发明涉及人工智能和国产化AI芯片技术领域,特别涉及一种深度学习框架与AI加速卡片内分布式训练适配方法和装置。
背景技术
随着国家对集成电路的重视,主流深度学习框架搭建国产芯片推动智能计算的发展成为当前人工智能领域的一个重要使命。主流深度学习框架适配国产芯片的基本流程是,主流深度学习框架集成国产芯片的高性能机器学习库,支持主流神经网络算子,并能支持在各类应用场景下的模型部署,如分类、检测、分割、风格转化等模型。但是,当前深度框架适配国产芯片的方法对大规模分布式训练的技术仍不成熟。所以,提供深度学习框架和国产芯片多卡集合通信的适配方法与流程是推进新一代超大模型训练解决方案的关键环节。而实现上述目的,本领域面临一个现实性的技术难题:如何解决商用AI框架与加速卡片内多卡集合通信的兼容性问题。
发明内容
本发明的目的在于提供一种深度学习框架与AI加速卡片内分布式训练适配方法和装置,以克服现有技术中的不足。
为实现上述目的,本发明提供如下技术方案:
本发明公开了一种深度学习框架与AI加速卡片内分布式训练适配方法,包括如下步骤:
S1:深度学习框架支持新增AI加速卡片内单卡配置,其子步骤如下:
S11:深度学习框架支持新硬件;
S12:深度学习框架支持新硬件的设备线程;
S13:深度学习框架支持新硬件的内存操作;
S14:深度学习框架支持新硬件的算子核函数;
S2:深度学习框架支持新增AI加速卡片内多卡配置;
S3:深度学习框架支持张量切分和多卡分布;
S4:深度学习框架支持新增AI加速卡片内多卡集合通信。
作为优选的,所述步骤S11深度学习框架支持新硬件,其子步骤如下:
S111:深度学习框架添加新硬件设备字段:向深度学习框架里添加新的设备类型,创建一个设备类型的枚举类,往设备类型中增加一个新硬件对应的设备字段;
S112:深度学习框架注册新硬件:将所述步骤S111中添加的新硬件设备字段注册到框架中;
S113:深度学习框架添加新硬件基础软件库的上下文信息:新增一个新硬件基础软件库上下文信息的类,添加一个用于保存新硬件的基础软件库上下文信息结构的句柄成员变量和一个获取新硬件基础软件库上下文信息句柄的成员函数,但并不指定所述上下文信息所管理的具体加速卡的设备ID;
S114:深度学习框架添加新硬件基础软件库的程序流,包括新增一个获取执行新硬件程序流的句柄和新增一个新硬件程序流索引生成器。
作为优选的,所述步骤S113中,添加一个获取新硬件基础软件库上下文信息句柄的成员函数,所述函数的功能是初始化新硬件的基础软件库,在主机上分配硬件资源,并且在任何其他新硬件的基础软件库函数调用之前必须先调用该函数。
作为优选的,所述步骤S114中,新增一个获取执行新硬件程序流的句柄的具体方法为:根据步骤S113中获取的新硬件基础软件库上下文信息结构的句柄,创建一个执行程序流的句柄;所述新增的新硬件程序流索引生成器的功能包括生成计算程序流索引和生成集合通信程序流索引,集合通信程序流包括将主机内存拷贝到新硬件和将新硬件内存拷贝到主机两种程序流,并且利用上述新硬件程序流索引生成器为当前程序流分配程序流ID。
作为优选的,所述步骤S12深度学习框架支持新硬件的设备线程,其子步骤如下:
S121:添加新硬件设备的线程结构体:创建硬件设备类型线程结构体,包含如下成员变量:任务执行体轮询线程、当前任务队列、召回事件、事件召回的队列、事件召回队列的轮询线程;
S122:注册新硬件设备的线程结构体:将所述步骤S121中添加的硬件设备线程结构体注册到深度学习框架中,具体子步骤为:
S1221:根据新硬件程序流ID和新硬件设备ID创建新硬件设备线程结构体对象;
S1222:根据新硬件设备线程结构体对象和新硬件设备字段将新硬件设备线程结构体注册到深度学习框架中。
作为优选的,所述步骤S121中所述线程结构体的构造函数完成如下功能:
(1)算子核函数的运行模式:首先将不同任务依次加入当前核函数任务队列,创建任务执行体轮询线程,该线程负责根据不同核函数任务信息创建对应的执行体,并使用该执行体运行任务队列中的当前核函数任务,其次,当核函数任务队列中任务全部运行完以后,创建事件召回队列的轮询线程,将已处理完的任务返回;
(2)获取任务:任务执行体轮询线程负责从当前任务队列中依次获取当前待处理任务;
(3)构造核函数的执行体:根据当前任务的目标执行体ID和当前线程的上下文信息构造处理当前任务的目标执行体对象;
(4)返回已处理任务:当处理完上述任务队列中的全部任务时,启动事件召回队列的轮询线程,事件召回队列的轮询线程负责将事件召回的队列中已处理的任务依次取出并返回。
作为优选的,所述步骤S13深度学习框架支持新硬件的内存操作,其子步骤如下:
S131:添加新硬件设备内存类型字段;
S132:申请新硬件设备类型的内存;
S133:添加新硬件设备类型的内存拷贝接口;
S134:添加新硬件设备的内存分配接口。
作为优选的,所述步骤S132中,申请新硬件设备类型的内存包括两部分内存:
第一、为新硬件设备中的计算图的张量边申请新硬件设备类型的内存;
第二、为跨设备集合通信的计算图的张量边申请内存,该内存包括两种情形:当需要从主机向新硬件设备拷贝内存时,申请新硬件设备类型的内存;
当需要从新硬件设备向主机拷贝内存时,申请主机类型的内存。
作为优选的,所述步骤S133中,新硬件设备类型的内存拷贝接口包括如下三种情形:
第一、从主机向新硬件设备拷贝内存情形,当判断内存满足源内存属于主机类型内存且目标内存属于新硬件设备类型内存时,调用从主机向新硬件设备拷贝内存的 API接口;
第二、从新硬件设备向主机拷贝内存情形,当判断内存满足源内存属于新硬件设备类型内存且目标内存属于主机类型内存时,调用从新硬件设备向主机拷贝内存的 API接口;
第三、从新硬件设备向新硬件设备拷贝内存情形,当判断内存满足源内存属于新硬件设备类型内存且目标内存属于新硬件设备类型内存时,调用从新硬件设备向新硬件设备拷贝内存的 API 接口。
作为优选的,所述步骤S134中,添加新硬件设备的内存分配接口具有如下子步骤:
S1341:添加新硬件设备的内存分配函数:当判断待申请的内存是新硬件设备类型的内存时,调用新硬件设备的内存分配的 API 接口,分配指定大小的内存;
S1342:添加新硬件设备的内存析构函数:当判断待回收的内存是新硬件设备类型的内存时,调用新硬件设备的内存析构的 API 接口,回收指定大小的内存;
S1343:初始化分配的新硬件设备类型内存:首先,利用上述新硬件设备的内存分配函数分配指定大小的新硬件设备类型内存;其次,在当前主机上分配临时指定大小的内存;最后,将该临时内存从主机拷贝到上述分配的新硬件设备类型的内存中。
作为优选的,所述步骤S14深度学习框架支持新硬件的算子核函数,其子步骤如下:
S141:添加支持新硬件设备类型的算子核函数的构造器:新增一个支持新硬件设备类型的算子核函数的构造器,上述构造器用来创建支持新硬件设备类型的不同算子的核函数;
S142:注册支持新硬件设备类型的算子核函数,其具体子步骤如下:
S1421:利用步骤S141中添加的算子核函数的构造器生成存储核函数名字与核函数键值对的哈希表;
S1422:根据算子核函数的设备类型和数据类型获取核函数的名字,利用核函数的名字从上述哈希表获取核函数;
S1423:将上述获取的核函数注册到对应的算子中;
S143:注册系统级别的算子的核函数:利用步骤S141和S142中添加的支持新硬件设备类型的算子核函数的构造器以及注册支持新硬件设备类型的算子核函数依次创建和注册系统级别的如下算子:输入/输出算子、核函数加载算子、权重/偏置变量算子;
S144:新增用户级别的算子的核函数:添加搭建深度神经网络模型所需的支持新硬件设备类型的不同算子的正向/反向的核函数并注册到对应算子中,其具体子步骤如下:
S1441:从深度学习框架的算子核函数类中继承一个新硬件设备类型的核函数类;
S1442:利用深度学习框架的核函数注册机制将该算子核函数注册到具有设备类型参数的注册模版中;
S1443:使用指定的新硬件设备类型实例化上述核函数注册模版。
作为优选的,所述步骤S141中,所述算子核函数的构造器采用一个全局静态哈希表实现,key 值存储不同算子核函数的名字,value 值存储对应的核函数。
作为优选的,所述步骤S2深度学习框架支持新增AI加速卡片内多卡配置,要求深度学习框架支持新硬件多卡管理的上下文信息,具体子步骤如下:
S21:新增一个新硬件基础软件库上下文信息的类;
S22:添加一个保存管理多张加速卡的多个上述上下文信息结构句柄的容器类型的成员变量;
S23:添加一个获取上述上下文信息句柄的成员函数,所述函数的功能是初始化新硬件的基础软件库,且所述函数根据指定的片内加速卡的设备 ID获取对应的上述上下文信息的容器成员。
作为优选的,所述步骤S3深度学习框架支持张量切分和多卡分布,其子步骤如下:
S31:深度学习框架支持张量切分:深度学习框架分布式训练过程中,深度学习编译器编译过程中由逻辑计算图推导生成物理计算图,利用张量切分、广播等方式分配上下游节点之间的张量;
S32:创建和注册新硬件设备异步内存拷贝器;
S33:深度学习框架支持张量多卡分布:利用步骤S32中注册的新硬件设备异步内存拷贝器将步骤S31中切分所得的张量分量分布到多张卡上,具体步骤为:首先,根据源内存类型和目标内存类型确定内存拷贝情形;其次,利用步骤S32中新硬件设备异步内存拷贝器针对上述已确定的内存拷贝情形将步骤S31中已切分的张量分量分布到多张卡上。
作为优选的,新硬件设备异步内存拷贝器包括如下四种情形:
第一、从主机向新硬件设备拷贝内存情形,当判断内存满足源内存属于主机类型内存且目标内存属于新硬件设备类型内存时,调用从主机向新硬件设备拷贝内存的 API接口;
第二、从新硬件设备向主机拷贝内存情形,当判断内存满足源内存属于新硬件设备类型内存且目标内存属于主机类型内存时,调用从新硬件设备向主机拷贝内存的 API接口;
第三、从新硬件设备向新硬件设备拷贝内存情形,当判断内存满足源内存属于新硬件设备类型内存且目标内存属于新硬件设备类型内存时,调用从新硬件设备向新硬件设备拷贝内存的 API 接口;
第四、从主机向主机拷贝内存情形,当判断内存满足源内存属于主机类型内存且目标内存属于主机类型内存时,调用从主机向主机拷贝内存的 API 接口。
作为优选的,所述步骤S32中,当用户将深度学习框架底层硬件指定为新硬件设备类型时,根据用户指定的新硬件设备类型将创建的新硬件设备异步内存拷贝器注册为默认的内存拷贝器
作为优选的,所述步骤S4深度学习框架支持新增AI加速卡片内多卡集合通信,其目标是每张卡聚合所有卡的前向计算结果,根据聚合方式的不同,所述深度学习框架支持新增AI加速卡片内多卡集合通信的子步骤包含基于Ring AllReduce操作的集合通信和基于AllReduce操作的集合通信的两种方案:
基于Ring AllReduce操作的集合通信是指每张卡以张量相加的方式聚合所有卡的前向计算结果,这种聚合方式的深度学习框架支持新增AI加速卡片内多卡集合通信的子步骤为:
第一步:遍历所有卡,将各张卡的输入缓存拷贝到对应的输出缓存;
第二步:遍历所有卡,将当前卡的输出缓存与其它所有卡的输入缓存进行张量相加运算;
基于AllReduce操作的集合通信方式是将主机作为中心节点,先全局 reduce 接收所有其他节点的数据,经过本地计算后,再 broadcast 回所有其他节点,这种聚合方式的深度学习框架支持新增AI加速卡片内多卡集合通信的子步骤为:
第一步:遍历所有卡,将每张卡的输入缓存从当前加速卡拷贝到主机临时内存变量,并且主机临时结果内存变量累加当前拷贝的主机临时内存变量;
第二步:遍历所有卡,将主机临时结果内存变量最终累加的所有卡的输入缓存的内存从主机拷贝到每张卡的输出缓存。
本发明还提供了一种深度学习框架与AI加速卡片内分布式训练适配装置,其特征在于:包括一个或多个处理器,用于实现深度学习框架与 AI 加速卡片内分布式训练适配方法。
本发明还提供了一种计算机可读存储介质,其特征在于,其上存储有程序,该程序被处理器执行时,实现深度学习框架与 AI 加速卡片内分布式训练适配方法。
本发明的有益效果:本发明打通了深度学习框架与新增AI加速卡,并将深度学习框架源码与芯片底层软件全面对接,最大限度释放芯片的硬件能力,为端侧AI提供最强劲的算力,并支持AI加速卡片内多卡集合通信,本发明针对新增硬件的片内分布式并行训练功能,提升训练时硬件资源的利用率,进而提高系统的性能。
本发明的特征及优点将通过实施例结合附图进行详细说明。
附图说明
图1是深度学习框架与AI加速卡片内分布式训练适配方法步骤图;
图2是不同算子核函数的运行模式的示意图;
图3是本发明实施例每张卡以张量相加的方式聚合所有卡的前向计算结果的过程示意图;
图4是本发明实施例每张卡以跨设备内存拷贝的方式聚合所有卡的前向计算结果的过程示意图;
图5是深度学习框架与AI加速卡片内分布式训练适配装置示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明了,下面通过附图及实施例,对本发明进行进一步详细说明。但是应该理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限制本发明的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本发明的概念。
参见图1,本发明实施例提供一种深度学习框架与AI加速卡片内分布式训练适配方法,包括如下步骤:
S1:深度学习框架支持新增AI加速卡片内单卡配置;
S2:深度学习框架支持新增AI加速卡片内多卡配置;
S3:深度学习框架支持张量切分和多卡分布;
S4:深度学习框架支持新增AI加速卡片内多卡集合通信。
所述步骤S1深度学习框架支持新增AI加速卡片内单卡配置过程如下:
S11:深度学习框架支持新硬件,过程如下:
S111:深度学习框架添加新硬件设备字段。向深度学习框架里添加新的设备类型,创建一个设备类型的枚举类,往设备类型中增加一个新硬件对应的设备字段;
S112:深度学习框架注册新硬件。将上一步添加的新硬件设备字段注册到框架中;
S113:深度学习框架添加新硬件基础软件库的上下文信息。新增一个新硬件基础软件库上下文信息的类。添加一个用于保存新硬件的基础软件库上下文信息结构的句柄成员变量和一个获取新硬件基础软件库上下文信息句柄的成员函数,但并不指定上述上下文信息所管理的具体加速卡的设备ID。该函数的功能是初始化新硬件的基础软件库,在主机上分配硬件资源,并且在任何其他新硬件的基础软件库函数调用之前必须先调用该函数。深度学习框架支持新增AI加速卡片内单卡配置方法是:一个新硬件基础软件库上下文信息结构的句柄管理一张加速卡,具体地,一个上下文信息结构的句柄分配一张片内加速卡的句柄存储地址。
S114:深度学习框架添加新硬件基础软件库的程序流。包括新增一个获取执行新硬件程序流的句柄和新增一个新硬件程序流索引生成器。
1.新增一个获取执行新硬件程序流的句柄:根据上述步骤中所获取的新硬件基础软件库上下文信息结构的句柄,创建一个执行程序流的句柄;
2.新增一个新硬件程序流索引生成器:新硬件程序流索引生成器功能包括生成计算程序流索引和生成集合通信程序流索引,集合通信程序流包括将主机内存拷贝到新硬件和将新硬件内存拷贝到主机两种程序流,并且利用上述新硬件程序流索引生成器为当前程序流分配程序流ID。
:深度学习框架支持新硬件的设备线程,过程如下:
S121:添加新硬件设备的线程结构体。
首先,创建硬件设备类型线程结构体,包含如下成员变量:任务执行体轮询线程、当前任务队列、召回事件、事件召回的队列、事件召回队列的轮询线程。该结构体的构造函数完成如下功能:
(1)算子核函数的运行模式:算子核函数的运行模式如图2所示,将运行不同算子的核函数视作不同的任务,构造核函数的执行体来运行核函数。首先将不同任务依次加入当前核函数任务队列,创建任务执行体轮询线程,该线程负责根据不同核函数任务信息创建对应的执行体,并使用该执行体运行任务队列中的当前核函数任务。其次,当核函数任务队列中任务全部运行完以后,创建事件召回队列的轮询线程,将已处理完的任务返回。
(2)获取任务:任务执行体轮询线程负责从当前任务队列中依次获取当前待处理任务;
(3)构造核函数的执行体:根据当前任务的目标执行体ID和当前线程的上下文信息构造处理当前任务的目标执行体对象;
(4)返回已处理任务:当处理完上述任务队列中的全部任务时,启动事件召回队列的轮询线程。事件召回队列的轮询线程负责将事件召回的队列中已处理的任务依次取出并返回。
S122:注册新硬件设备线程结构体。将上述第一步新增的硬件设备线程结构体注册到深度学习框架中。
1.根据上述新硬件程序流ID和新硬件设备ID创建新硬件设备线程结构体对象;
2.根据上述新硬件设备线程结构体对象和新硬件设备字段将新硬件设备线程结构体注册到深度学习框架中。
:深度学习框架支持新硬件的内存操作,过程如下:
S131:添加新硬件设备内存类型字段;
S132:申请新硬件设备类型的内存:申请新硬件设备类型的内存包括两部分内存:第一、为新硬件设备中的计算图的张量边申请新硬件设备类型的内存;第二、为跨设备集合通信的计算图的张量边申请内存,该内存包括两种情形:当需要从主机向新硬件设备拷贝内存时,申请新硬件设备类型的内存;当需要从新硬件设备向主机拷贝内存时,申请主机类型的内存;
S133:添加新硬件设备类型的内存拷贝接口:新硬件设备类型的内存拷贝接口包括如下三种情形:
第一、从主机向新硬件设备拷贝内存情形,当判断内存满足源内存属于主机类型内存且目标内存属于新硬件设备类型内存时,调用从主机向新硬件设备拷贝内存的 API接口;
第二、从新硬件设备向主机拷贝内存情形,当判断内存满足源内存属于新硬件设备类型内存且目标内存属于主机类型内存时,调用从新硬件设备向主机拷贝内存的 API接口;
第三、从新硬件设备向新硬件设备拷贝内存情形,当判断内存满足源内存属于新硬件设备类型内存且目标内存属于新硬件设备类型内存时,调用从新硬件设备向新硬件设备拷贝内存的 API 接口;
S134:添加新硬件设备的内存分配接口:为新硬件分配内存包括如下步骤:
S1341:添加新硬件设备的内存分配函数。当判断待申请的内存是新硬件设备类型的内存时,调用新硬件设备的内存分配的 API 接口,分配指定大小的内存。
S1342:添加新硬件设备的内存析构函数。当判断待回收的内存是新硬件设备类型的内存时,调用新硬件设备的内存析构的 API 接口,回收指定大小的内存。
S1343:初始化分配的新硬件设备类型内存。初始化分配的新硬件设备类型内存的过程如下:首先,利用上述新硬件设备的内存分配函数分配指定大小的新硬件设备类型内存;其次,在当前主机上分配临时指定大小的内存;最后,将该临时内存从主机拷贝到上述分配的新硬件设备类型的内存中。
:深度学习框架支持新硬件的算子核函数,过程如下:
S141:添加支持新硬件设备类型的算子核函数的构造器。新增一个支持新硬件设备类型的算子核函数的构造器,上述构造器用来创建支持新硬件设备类型的不同算子的核函数。该算子核函数构造器采用一个全局静态哈希表实现,key 值存储不同算子核函数的名字,value 值存储对应的核函数。上述哈希表是根据输入的新硬件对应的设备类型和不同算子的核函数的结构体两个参数生成的,所以上述构造器生成的算子核函数都是支持上述新硬件的。
S142:注册支持新硬件设备类型的算子核函数。首先,利用上述第一步中算子核函数的构造器生成存储核函数名字与核函数键值对的哈希表;其次,根据算子核函数的设备类型和数据类型获取核函数的名字,利用核函数的名字从上述哈希表获取核函数;最后,将上述获取的核函数注册到对应的算子中。
S143:注册系统级别的算子的核函数。利用上述添加的支持新硬件设备类型的算子核函数的构造器以及注册支持新硬件设备类型的算子核函数的步骤依次创建和注册系统级别的如下算子:输入/输出算子、核函数加载算子、权重/偏置变量算子。
S144:新增用户级别的算子的核函数。添加搭建深度神经网络模型所需的支持新硬件设备类型的不同算子的正向/反向的核函数并注册到对应算子中。具体实现方法如下:首先,从深度学习框架的算子核函数类中继承一个新硬件设备类型的核函数类;其次,利用深度学习框架的核函数注册机制将该算子核函数注册到具有设备类型参数的注册模版中;最后,使用指定的新硬件设备类型实例化上述核函数注册模版。
所述步骤S2深度学习框架支持新增AI加速卡片内多卡配置过程如下:
深度学习框架支持新硬件多卡管理的上下文信息。深度学习框架操作计算图中每个节点算子的核函数、各条张量边的内存以及片内卡间集合通信都需要获取到目标设备ID信息,所以,支持新增AI加速卡片内多卡配置需要将每张片内加速卡实例化为一个设备类型,并分配一个设备ID,并且一个上述上下文信息对象管理一张加速卡。在构造设备信息时,可以根据每张加速卡的设备ID构造一个上述上下文信息对象;在使用设备信息时,可以通过目标设备对应的上述上下文信息对象获取对应加速卡的设备ID。
由于深度学习框架支持新增AI加速卡片内单卡配置方法是一个新硬件基础软件库上下文信息结构的句柄管理一张加速卡,所以配置片内多卡需要申请多个新硬件基础软件库上下文信息结构的句柄,其中每个基础软件库上下文信息结构的句柄管理各自的加速卡。具体实施方法如下:新增一个新硬件基础软件库上下文信息的类。首先,添加一个保存管理多张加速卡的多个上述上下文信息结构句柄的容器类型的成员变量;其次,添加一个获取上述上下文信息句柄的成员函数,该函数的功能是初始化新硬件的基础软件库。上述函数根据指定的片内加速卡的设备 ID获取对应的上述上下文信息的容器成员。
所述步骤S3深度学习框架支持张量切分和多卡分布包括如下步骤:
S31:深度学习框架支持张量切分。深度学习框架支持张量切分的实现方法如下:深度学习框架分布式训练过程中,深度学习编译器编译过程中由逻辑计算图推导生成物理计算图时,利用张量切分、广播等方式分配上下游节点之间的张量。按照上述构建物理图的方式分配每个节点的输入和输出张量边,上述已编译好的物理计算图的张量边都已标记了自己是在哪台机器哪个设备上,内存类型、所属内存块的偏移量等等信息。运行阶段,计算图运行体只需根据编译期生成的计算图张量边的元信息将张量搬运到各张加速卡。
创建和注册新硬件设备异步内存拷贝器。经过上述步骤1,深度学习框架对输入张量进行切分,然后需要将上述切分所得的张量分量分布到多张卡上。所以需要利用新硬件设备异步内存拷贝器将上述分量分布到多张卡上。创建和注册新硬件设备异步内存拷贝器包含如下步骤:
第一步:创建新硬件设备异步内存拷贝器。新硬件设备异步内存拷贝器包括如下四种情形:
第一、从主机向新硬件设备拷贝内存情形,当判断内存满足源内存属于主机类型内存且目标内存属于新硬件设备类型内存时,调用从主机向新硬件设备拷贝内存的 API接口;
第二、从新硬件设备向主机拷贝内存情形,当判断内存满足源内存属于新硬件设备类型内存且目标内存属于主机类型内存时,调用从新硬件设备向主机拷贝内存的 API接口;
第三、从新硬件设备向新硬件设备拷贝内存情形,当判断内存满足源内存属于新硬件设备类型内存且目标内存属于新硬件设备类型内存时,调用从新硬件设备向新硬件设备拷贝内存的 API 接口。
第四、从主机向主机拷贝内存情形,当判断内存满足源内存属于主机类型内存且目标内存属于主机类型内存时,调用从主机向主机拷贝内存的 API 接口。
第二步:注册新硬件设备异步内存拷贝器。当用户将深度学习框架底层硬件指定为新硬件设备类型时,根据用户指定的新硬件设备类型将上述创建的新硬件设备异步内存拷贝器注册为默认的内存拷贝器。
深度学习框架支持张量多卡分布。利用上述步骤所得的新硬件设备异步内存拷贝器将上述切分所得的张量分量分布到多张卡上。首先,根据源内存类型和目标内存类型确定内存拷贝情形;其次,利用上述新硬件设备异步内存拷贝器针对上述已确定的内存拷贝情形将上述已切分的张量分量分布到多张卡上。
所述步骤S4中深度学习框架支持新增AI加速卡片内多卡集合通信过程如下:
深度学习框架支持新硬件多卡集合通信过程如下:在分布式训练深度学习模型的情况下,如数据并行。前向传播时,当加速卡数量为4、批次为4时,经过上述步骤1将数据切分为4份,分到4张卡上。每张卡执行各自的前向计算;反向传播时,每张卡计算反向时需要所有4张卡上的前向计算结果。所以反向传播前,每张卡需要聚合其他卡上的前向计算结果。
深度学习框架支持新硬件多卡跨卡间集合通信的目标是每张卡聚合所有卡的前向计算结果。根据聚合方式的不同,本发明设计为如下两个方案:
方案一、基于Ring AllReduce 操作的集合通信:
基于Ring AllReduce 操作的集合通信是指每张卡以张量相加的方式聚合所有卡的前向计算结果,如图3所示。具体包含如下步骤:
第一步:遍历所有卡,将各张卡的输入缓存拷贝到对应的输出缓存,如图3中0所示;
第二步:遍历所有卡,将当前卡的输出缓存与其它所有卡的输入缓存进行张量相加运算,如图3中1、2、3、4所示。
经过上述步骤,每张卡的输出缓存都已经汇聚了所有卡的输入缓存。
方案二、基于AllReduce操作的集合通信:
基于 AllReduce 操作的集合通信方式是将主机作为中心节点,先全局 reduce接收所有其他节点的数据,经过本地计算后,再 broadcast 回所有其他节点,如图4所示。具体包含如下步骤:
第一步:遍历所有卡,将每张卡的输入缓存从当前加速卡拷贝到主机临时内存变量,并且主机临时结果内存变量累加当前拷贝的主机临时内存变量;
第二步:遍历所有卡,将主机临时结果内存变量最终累加的所有卡的输入缓存的内存从主机拷贝到每张卡的输出缓存;
经过上述步骤,每张卡的输出缓存都已经汇聚了所有卡的输入缓存。
经过上述步骤,完成了主流深度学习框架适配燧原 DTU 1.0 芯片的片内多卡集合通信的全过程。下面分别采用单算子兼容性测试和整网测试两种测试方案测试深度学习框架在燧原芯片的片内多卡上进行分布式训练和推理的性能。
单算子兼容性测试
下面利用已对接好的深度学习框架在燧原 DTU 1.0 芯片上进行单算子兼容性测试。利用已对接好的深度学习框架在燧原 DTU 1.0 芯片上分别运行不同批次 batch_size大小的卷积算子的正反向,对比燧原 DTU 1.0 芯片的单卡和片内4卡。单算子测试输入张量的形状是 224 x 224,通道数为3。测试结果如下:
表格1. 单算子测试
单位:秒
测试结果表明,对比燧原 DTU 1.0 芯片的单卡和片内4卡,随着批次的增大,DTU加速卡片内4卡的运行速度比单卡快,并且批次越大,片内4卡的分布式训练的收敛速度的优势越明显。所以深度学习框架适配燧原 DTU 1.0 芯片的片内多卡集合通信的兼容性良好。
整网测试
下面利用已对接好的深度学习框架在燧原 DTU 1.0 芯片上分别进行整网测试。利用已对接好的深度学习框架在燧原 DTU 1.0 芯片上分别运行不同批次 batch_size 大小的ResNet50 网络的训练和推理,对比燧原 DTU 1.0 芯片的单卡和片内4卡。整网测试输入张量的形状是 224 x 224,通道数为3。测试结果如下:
表格2. ResNet50 网络推理测试结果
单位:样本/秒
表格3. ResNet50 网络训练测试结果
单位:样本/秒
测试结果表明,对比燧原 DTU 1.0 芯片的单卡和片内4卡,随着批次的增大,值得注意的是,NA数值表示由于受芯片加速卡内存限制,扩大4卡的批次,每张卡可用内存为2G,但是当前加速卡的内存管理,如果上层框架一次性申请超过2G大小的内存,那么芯片加速卡底层会出现无法分配的问题,所以用NA表示框架层无法使用超大批次的数据。从测试结果分析,DTU加速卡片内4卡的运行速度比单卡快,并且批次越大,片内4卡的分布式训练的收敛速度的优势越明显。所以深度学习框架适配燧原 DTU 1.0 芯片的片内多卡集合通信的兼容性良好。
与前述深度学习框架与 AI 加速卡片内分布式训练适配方法的实施例相对应,本发明还提供了深度学习框架与 AI 加速卡片内分布式训练适配装置的实施例。
参见图 5,本发明实施例提供的一种深度学习框架与 AI 加速卡片内分布式训练适配装置,包括一个或多个处理器,用于实现上述实施例中的深度学习框架与 AI 加速卡片内分布式训练适配方法。
本发明深度学习框架与 AI 加速卡片内分布式训练适配装置的实施例可以应用在任意具备数据处理能力的设备上,该任意具备数据处理能力的设备可以为诸如计算机等设备或装置。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在任意具备数据处理能力的设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图 5 所示,为本发明深度学习框架与 AI 加速卡片内分布式训练适配装置所在任意具备数据处理能力的设备的一种硬件结构图,除了图 5 所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的任意具备数据处理能力的设备通常根据该任意具备数据处理能力的设备的实际功能,还可以包括其他硬件,对此不再赘述。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本发明方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本发明实施例还提供一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时,实现上述实施例中的深度学习框架与 AI 加速卡片内分布式训练适配方法。
所述计算机可读存储介质可以是前述任一实施例所述的任意具备数据处理能力的设备的内部存储单元,例如硬盘或内存。所述计算机可读存储介质也可以是任意具备数据处理能力的设备的外部存储设备,例如所述设备上配备的插接式硬盘、智能存储卡(Smart MediaCard,SMC)、SD 卡、闪存卡(Flash Card)等。进一步的,所述计算机可读存储介质还可以既包括任意具备数据处理能力的设备的内部存储单元也包括外部存储设备。所述计算机可读存储介质用于存储所述计算机程序以及所述任意具备数据处理能力的设备所需的其他程序和数据,还可以用于暂时地存储已经输出或者将要输出的数据。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换或改进等,均应包含在本发明的保护范围之内。
Claims (17)
1.一种深度学习框架与AI加速卡片内分布式训练适配方法,其特征在于:包括如下步骤:
S1:深度学习框架支持新增AI加速卡片内单卡配置,其子步骤如下:
S11:深度学习框架支持新硬件,子步骤如下:
S111:深度学习框架添加新硬件设备字段:向深度学习框架里添加新的设备类型,创建一个设备类型的枚举类,往设备类型中增加一个新硬件对应的设备字段;
S112:深度学习框架注册新硬件:将所述步骤S111中添加的新硬件设备字段注册到框架中;
S113:深度学习框架添加新硬件基础软件库的上下文信息:新增一个新硬件基础软件库上下文信息的类,添加一个用于保存新硬件的基础软件库上下文信息结构的句柄成员变量和一个获取新硬件基础软件库上下文信息句柄的成员函数,但并不指定所述上下文信息所管理的具体加速卡的设备ID;
S114:深度学习框架添加新硬件基础软件库的程序流,包括新增一个获取执行新硬件程序流的句柄和新增一个新硬件程序流索引生成器;
S12:深度学习框架支持新硬件的设备线程,子步骤如下:
S121:添加新硬件设备的线程结构体:创建硬件设备类型线程结构体,包含如下成员变量:任务执行体轮询线程、当前任务队列、召回事件、事件召回的队列、事件召回队列的轮询线程;
S122:注册新硬件设备的线程结构体:将所述步骤S121中添加的硬件设备线程结构体注册到深度学习框架中;
S13:深度学习框架支持新硬件的内存操作,子步骤如下:
S131:添加新硬件设备内存类型字段;
S132:申请新硬件设备类型的内存;
S133:添加新硬件设备类型的内存拷贝接口;
S134:添加新硬件设备的内存分配接口;
S14:深度学习框架支持新硬件的算子核函数,子步骤如下:
S141:添加支持新硬件设备类型的算子核函数的构造器:新增一个支持新硬件设备类型的算子核函数的构造器,上述构造器用来创建支持新硬件设备类型的不同算子的核函数;
S142:注册支持新硬件设备类型的算子核函数;
S143:注册系统级别的算子的核函数:利用步骤S141和S142中添加的支持新硬件设备类型的算子核函数的构造器以及注册支持新硬件设备类型的算子核函数依次创建和注册系统级别的如下算子:输入/输出算子、核函数加载算子、权重/偏置变量算子;
S144:新增用户级别的算子的核函数:添加搭建深度神经网络模型所需的支持新硬件设备类型的不同算子的正向/反向的核函数并注册到对应算子中;
S2:深度学习框架支持新增AI加速卡片内多卡配置,要求深度学习框架支持新硬件多卡管理的上下文信息,具体子步骤如下:
S21:新增一个新硬件基础软件库上下文信息的类;
S22:添加一个保存管理多张加速卡的多个上述上下文信息结构句柄的容器类型的成员变量;
S23:添加一个获取上述上下文信息句柄的成员函数,所述函数的功能是初始化新硬件的基础软件库,且所述函数根据指定的片内加速卡的设备 ID获取对应的上述上下文信息的容器成员;
S3:深度学习框架支持张量切分和多卡分布,具体子步骤如下:
S31:深度学习框架支持张量切分:深度学习框架分布式训练过程中,深度学习编译器编译过程中由逻辑计算图推导生成物理计算图,利用张量切分、广播的方式分配上下游节点之间的张量;
S32:创建和注册新硬件设备异步内存拷贝器;
S33:深度学习框架支持张量多卡分布:利用步骤S32中注册的新硬件设备异步内存拷贝器将步骤S31中切分所得的张量分量分布到多张卡上,具体步骤为:首先,根据源内存类型和目标内存类型确定内存拷贝情形;其次,利用步骤S32中新硬件设备异步内存拷贝器针对确定的所述内存拷贝情形将步骤S31中已切分的张量分量分布到多张卡上;
S4:深度学习框架支持新增AI加速卡片内多卡集合通信,其目标是每张卡聚合所有卡的前向计算结果,根据聚合方式的不同,所述深度学习框架支持新增AI加速卡片内多卡集合通信的子步骤包含基于Ring AllReduce 操作的集合通信和基于AllReduce操作的集合通信的两种方案:
基于Ring AllReduce 操作的集合通信是指每张卡以张量相加的方式聚合所有卡的前向计算结果;
基于 AllReduce 操作的集合通信方式是将主机作为中心节点,先全局reduce 接收所有其他节点的数据,经过本地计算后,再 broadcast 回所有其他节点。
2.根据权利要求 1 所述的深度学习框架与AI加速卡片内分布式训练适配方法,其特征在于:所述步骤S113中,添加一个获取新硬件基础软件库上下文信息句柄的成员函数,所述函数的功能是初始化新硬件的基础软件库,在主机上分配硬件资源,并且在任何其他新硬件的基础软件库函数调用之前必须先调用该函数。
3.根据权利要求 1 所述的深度学习框架与AI加速卡片内分布式训练适配方法,其特征在于:所述步骤S114中,新增一个获取执行新硬件程序流的句柄的具体方法为:根据步骤S113中获取的新硬件基础软件库上下文信息结构的句柄,创建一个执行程序流的句柄;所述新增的新硬件程序流索引生成器的功能包括生成计算程序流索引和生成集合通信程序流索引,集合通信程序流包括将主机内存拷贝到新硬件和将新硬件内存拷贝到主机两种程序流,并且利用上述新硬件程序流索引生成器为当前程序流分配程序流ID。
4.根据权利要求 1 所述的深度学习框架与AI加速卡片内分布式训练适配方法,其特征在于:所述步骤S122注册新硬件设备的线程结构体,具体子步骤为:
S1221:根据新硬件程序流ID和新硬件设备ID创建新硬件设备线程结构体对象;
S1222:根据新硬件设备线程结构体对象和新硬件设备字段将新硬件设备线程结构体注册到深度学习框架中。
5.根据权利要求 1 所述的深度学习框架与AI加速卡片内分布式训练适配方法,其特征在于:所述步骤S121中所述线程结构体的构造函数完成如下功能:
算子核函数的运行模式:首先将不同任务依次加入当前核函数任务队列,创建任务执行体轮询线程,该线程负责根据不同核函数任务信息创建对应的执行体,并使用该执行体运行任务队列中的当前核函数任务,其次,当核函数任务队列中任务全部运行完以后,创建事件召回队列的轮询线程,将已处理完的任务返回;
获取任务:任务执行体轮询线程负责从当前任务队列中依次获取当前待处理任务;
构造核函数的执行体:根据当前任务的目标执行体ID和当前线程的上下文信息构造处理当前任务的目标执行体对象;
返回已处理任务:当处理完上述任务队列中的全部任务时,启动事件召回队列的轮询线程,事件召回队列的轮询线程负责将事件召回的队列中已处理的任务依次取出并返回。
6.根据权利要求 1 所述的深度学习框架与AI加速卡片内分布式训练适配方法,其特征在于:所述步骤S132中,申请新硬件设备类型的内存包括两部分内存:
第一、为新硬件设备中的计算图的张量边申请新硬件设备类型的内存;
第二、为跨设备集合通信的计算图的张量边申请内存,该内存包括两种情形:当需要从主机向新硬件设备拷贝内存时,申请新硬件设备类型的内存;当需要从新硬件设备向主机拷贝内存时,申请主机类型的内存。
7.根据权利要求 1 所述的深度学习框架与AI加速卡片内分布式训练适配方法,其特征在于:所述步骤S133中,新硬件设备类型的内存拷贝接口包括如下三种情形:
从主机向新硬件设备拷贝内存情形,当判断内存满足源内存属于主机类型内存且目标内存属于新硬件设备类型内存时,调用从主机向新硬件设备拷贝内存的 API 接口;
从新硬件设备向主机拷贝内存情形,当判断内存满足源内存属于新硬件设备类型内存且目标内存属于主机类型内存时,调用从新硬件设备向主机拷贝内存的 API 接口;
从新硬件设备向新硬件设备拷贝内存情形,当判断内存满足源内存属于新硬件设备类型内存且目标内存属于新硬件设备类型内存时,调用从新硬件设备向新硬件设备拷贝内存的 API 接口。
8.根据权利要求1所述的深度学习框架与AI加速卡片内分布式训练适配方法,其特征在于:所述步骤S134中,添加新硬件设备的内存分配接口具有如下子步骤:
S1341:添加新硬件设备的内存分配函数:当判断待申请的内存是新硬件设备类型的内存时,调用新硬件设备的内存分配的 API 接口,分配指定大小的内存;
S1342:添加新硬件设备的内存析构函数:当判断待回收的内存是新硬件设备类型的内存时,调用新硬件设备的内存析构的 API 接口,回收指定大小的内存;
S1343:初始化分配的新硬件设备类型内存:首先,利用上述新硬件设备的内存分配函数分配指定大小的新硬件设备类型内存;其次,在当前主机上分配临时指定大小的内存;最后,将所述临时指定大小的内存从主机拷贝到上述分配的新硬件设备类型的内存中。
9.根据权利要求 1 所述的深度学习框架与AI加速卡片内分布式训练适配方法,其特征在于:所述步骤S142注册支持新硬件设备类型的算子核函数,其具体子步骤如下:
S1421:利用步骤S141中添加的算子核函数的构造器生成存储核函数名字与核函数键值对的哈希表;
S1422:根据算子核函数的设备类型和数据类型获取核函数的名字,利用核函数的名字从上述哈希表获取核函数;
S1423:将上述获取的核函数注册到对应的算子中。
10.根据权利要求 1 所述的深度学习框架与AI加速卡片内分布式训练适配方法,其特征在于:所述步骤S144新增用户级别的算子的核函数,其具体子步骤如下:
S1441:从深度学习框架的算子核函数类中继承一个新硬件设备类型的核函数类;
S1442:利用深度学习框架的核函数注册机制将该算子核函数注册到具有设备类型参数的注册模版中;
S1443:使用指定的新硬件设备类型实例化上述核函数注册模版。
11.根据权利要求1 所述的深度学习框架与AI加速卡片内分布式训练适配方法,其特征在于:所述步骤S141中,所述算子核函数的构造器采用一个全局静态哈希表实现,key 值存储不同算子核函数的名字,value 值存储对应的核函数。
12.根据权利要求 1所述的深度学习框架与AI加速卡片内分布式训练适配方法,其特征在于:所述步骤S32中新硬件设备异步内存拷贝器包括如下四种情形:
第一、从主机向新硬件设备拷贝内存情形,当判断内存满足源内存属于主机类型内存且目标内存属于新硬件设备类型内存时,调用从主机向新硬件设备拷贝内存的 API 接口;
第二、从新硬件设备向主机拷贝内存情形,当判断内存满足源内存属于新硬件设备类型内存且目标内存属于主机类型内存时,调用从新硬件设备向主机拷贝内存的 API 接口;
第三、从新硬件设备向新硬件设备拷贝内存情形,当判断内存满足源内存属于新硬件设备类型内存且目标内存属于新硬件设备类型内存时,调用从新硬件设备向新硬件设备拷贝内存的 API 接口;
第四、从主机向主机拷贝内存情形,当判断内存满足源内存属于主机类型内存且目标内存属于主机类型内存时,调用从主机向主机拷贝内存的 API 接口。
13.根据权利要求 1所述的深度学习框架与AI加速卡片内分布式训练适配方法,其特征在于:所述步骤S32中,当用户将深度学习框架底层硬件指定为新硬件设备类型时,根据用户指定的新硬件设备类型将创建的新硬件设备异步内存拷贝器注册为默认的内存拷贝器。
14.根据权利要求 1 所述的深度学习框架与AI加速卡片内分布式训练适配方法,其特征在于:所述步骤S4中基于Ring AllReduce 操作的集合通信这种聚合方式的深度学习框架支持新增AI加速卡片内多卡集合通信的子步骤为:
第一步:遍历所有卡,将各张卡的输入缓存拷贝到对应的输出缓存;
第二步:遍历所有卡,将当前卡的输出缓存与其它所有卡的输入缓存进行张量相加运算。
15.根据权利要求 1 所述的深度学习框架与AI加速卡片内分布式训练适配方法,其特征在于:所述步骤S4中基于AllReduce操作的集合通信这种聚合方式的深度学习框架支持新增AI加速卡片内多卡集合通信的子步骤为:
第一步:遍历所有卡,将每张卡的输入缓存从当前加速卡拷贝到主机临时内存变量,并且主机临时结果内存变量累加当前拷贝的主机临时内存变量;
第二步:遍历所有卡,将主机临时结果内存变量最终累加的所有卡的输入缓存的内存从主机拷贝到每张卡的输出缓存。
16.一种深度学习框架与AI加速卡片内分布式训练适配装置,其特征在于:包括一个或多个处理器,用于实现权利要求 1-15 中任一项所述的深度学习框架与 AI 加速卡片内分布式训练适配方法。
17.一种计算机可读存储介质,其特征在于,其上存储有程序,该程序被处理器执行时,实现权利要求 1-15中任一项所述的深度学习框架与 AI 加速卡片内分布式训练适配方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111487478.8A CN113918351B (zh) | 2021-12-08 | 2021-12-08 | 深度学习框架与ai加速卡片内分布式训练适配方法和装置 |
PCT/CN2021/142586 WO2023103122A1 (zh) | 2021-12-08 | 2021-12-29 | 深度学习框架与ai加速卡片内分布式训练适配方法和装置 |
US17/739,205 US11714995B2 (en) | 2021-12-08 | 2022-05-09 | Method for distributed type training adaptation and apparatus in deep learning framework and AI accelerator card |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111487478.8A CN113918351B (zh) | 2021-12-08 | 2021-12-08 | 深度学习框架与ai加速卡片内分布式训练适配方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113918351A CN113918351A (zh) | 2022-01-11 |
CN113918351B true CN113918351B (zh) | 2022-03-11 |
Family
ID=79248767
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111487478.8A Active CN113918351B (zh) | 2021-12-08 | 2021-12-08 | 深度学习框架与ai加速卡片内分布式训练适配方法和装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11714995B2 (zh) |
CN (1) | CN113918351B (zh) |
WO (1) | WO2023103122A1 (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20230050061A1 (en) * | 2021-08-11 | 2023-02-16 | Apple Inc. | Logical Slot to Hardware Slot Mapping for Graphics Processors |
CN113918351B (zh) * | 2021-12-08 | 2022-03-11 | 之江实验室 | 深度学习框架与ai加速卡片内分布式训练适配方法和装置 |
CN114186687B (zh) * | 2022-02-17 | 2022-05-17 | 之江实验室 | 一种面向神经网络模型计算的中间表示方法和装置 |
CN114237918B (zh) * | 2022-02-28 | 2022-05-27 | 之江实验室 | 一种面向神经网络模型计算的图执行方法和装置 |
CN114924745A (zh) * | 2022-05-19 | 2022-08-19 | 北京百度网讯科技有限公司 | 深度学习编译器的运行方法、装置及电子设备 |
CN116167437B (zh) * | 2023-04-18 | 2023-07-11 | 之江实验室 | 一种芯片管理系统、方法、设备及存储介质 |
CN116185371B (zh) * | 2023-04-24 | 2023-09-19 | 北京大学 | 硬件设备注册方法、装置、设备及存储介质 |
CN117806833B (zh) * | 2024-02-28 | 2024-04-30 | 苏州元脑智能科技有限公司 | 一种数据处理系统、方法及介质 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114880133A (zh) * | 2017-08-31 | 2022-08-09 | 华为技术有限公司 | 分布式计算系统,分布式计算系统中数据传输方法和装置 |
US11164079B2 (en) * | 2017-12-15 | 2021-11-02 | International Business Machines Corporation | Multi-GPU deep learning using CPUs |
US11270201B2 (en) * | 2017-12-29 | 2022-03-08 | Intel Corporation | Communication optimizations for distributed machine learning |
CN108629408A (zh) * | 2018-04-28 | 2018-10-09 | 济南浪潮高新科技投资发展有限公司 | 一种基于fpga的深度学习动态模型剪裁推理系统及方法 |
CN109460827A (zh) * | 2018-11-01 | 2019-03-12 | 郑州云海信息技术有限公司 | 一种深度学习环境的搭建与优化方法和系统 |
US20200250525A1 (en) * | 2019-02-04 | 2020-08-06 | Pathtronic Inc. | Lightweight, highspeed and energy efficient asynchronous and file system-based ai processing interface framework |
US20210133583A1 (en) * | 2019-11-05 | 2021-05-06 | Nvidia Corporation | Distributed weight update for backpropagation of a neural network |
CN110866610A (zh) * | 2019-11-20 | 2020-03-06 | 苏州浪潮智能科技有限公司 | 一种深度学习模型分布式运算的方法及装置 |
CN110929883A (zh) * | 2019-11-22 | 2020-03-27 | 苏州浪潮智能科技有限公司 | 一种在TensorFlow中支持FPGA训练的方法和装置 |
US20210092069A1 (en) * | 2020-12-10 | 2021-03-25 | Intel Corporation | Accelerating multi-node performance of machine learning workloads |
US11237880B1 (en) * | 2020-12-18 | 2022-02-01 | SambaNova Systems, Inc. | Dataflow all-reduce for reconfigurable processor systems |
CN113342346B (zh) * | 2021-05-18 | 2022-03-25 | 北京百度网讯科技有限公司 | 深度学习框架的算子注册方法、装置、设备和存储介质 |
CN113420517B (zh) * | 2021-05-28 | 2023-01-06 | 清华大学 | 面向云端深度学习推理的fpga虚拟化硬件系统栈设计 |
CN113918351B (zh) * | 2021-12-08 | 2022-03-11 | 之江实验室 | 深度学习框架与ai加速卡片内分布式训练适配方法和装置 |
-
2021
- 2021-12-08 CN CN202111487478.8A patent/CN113918351B/zh active Active
- 2021-12-29 WO PCT/CN2021/142586 patent/WO2023103122A1/zh unknown
-
2022
- 2022-05-09 US US17/739,205 patent/US11714995B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
CN113918351A (zh) | 2022-01-11 |
US20230177312A1 (en) | 2023-06-08 |
WO2023103122A1 (zh) | 2023-06-15 |
US11714995B2 (en) | 2023-08-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113918351B (zh) | 深度学习框架与ai加速卡片内分布式训练适配方法和装置 | |
Gao et al. | Estimating gpu memory consumption of deep learning models | |
Lee et al. | {PRETZEL}: Opening the black box of machine learning prediction serving systems | |
Kunkel et al. | Spiking network simulation code for petascale computers | |
WO2022262167A1 (zh) | 集群资源调度方法及装置、电子设备和存储介质 | |
CN103562870B (zh) | 异构核心的自动加载平衡 | |
Convolbo et al. | Cost-aware DAG scheduling algorithms for minimizing execution cost on cloud resources | |
Liberis et al. | Neural networks on microcontrollers: saving memory at inference via operator reordering | |
Bleuler et al. | PHEW: a parallel segmentation algorithm for three-dimensional AMR datasets: Application to structure detection in self-gravitating flows | |
Ju et al. | iGraph: an incremental data processing system for dynamic graph | |
WO2022068663A1 (zh) | 内存分配方法、相关设备及计算机可读存储介质 | |
CN112068957B (zh) | 资源分配方法、装置、计算机设备及存储介质 | |
CN108572867A (zh) | 为应用部署分布式容器集群且执行该应用的方法和装置 | |
Hua et al. | Hadoop configuration tuning with ensemble modeling and metaheuristic optimization | |
CN112948066A (zh) | 一种基于异构资源的Spark任务调度方法 | |
Grossman et al. | Hadoopcl2: Motivating the design of a distributed, heterogeneous programming system with machine-learning applications | |
Sudharsan et al. | Enabling machine learning on the edge using sram conserving efficient neural networks execution approach | |
Bosilca et al. | The Template Task Graph (TTG)-an emerging practical dataflow programming paradigm for scientific simulation at extreme scale | |
Korolija et al. | A runtime job scheduling algorithm for cluster architectures with dataflow accelerators | |
CN101290592B (zh) | 一种mpsoc上多道程序共享spm的实现方法 | |
Simhadri | Program-centric cost models for locality and parallelism | |
Hosny et al. | Characterizing and optimizing EDA flows for the cloud | |
Pu et al. | MPEFT: A novel task scheduling method for workflows | |
CN106844037B (zh) | 一种基于knl的测试方法及系统 | |
WO2022267408A1 (en) | Apparatus, articles of manufacture, and methods for managing processing units |
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 |