CN115470901A - 支持移动端异构处理器分载的混合精度训练方法及设备 - Google Patents
支持移动端异构处理器分载的混合精度训练方法及设备 Download PDFInfo
- Publication number
- CN115470901A CN115470901A CN202211083545.4A CN202211083545A CN115470901A CN 115470901 A CN115470901 A CN 115470901A CN 202211083545 A CN202211083545 A CN 202211083545A CN 115470901 A CN115470901 A CN 115470901A
- Authority
- CN
- China
- Prior art keywords
- model
- heterogeneous processor
- cpu
- intermediate representation
- operator
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
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/08—Learning methods
-
- 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
- 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
- G06F9/505—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 considering the load
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Biophysics (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Biomedical Technology (AREA)
- Artificial Intelligence (AREA)
- Mathematical Physics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明提供了一种支持移动端异构处理器分载的混合精度训练方法及设备,应用于移动端,所述移动端包括混合精度算法抽象模块、异构处理器抽象模块、CPU和异构处理器,本发明实施例中,基于混合精度训练算法,通过混合精度算法抽象模块将原本高精度的训练模型转化能够直接在移动端执行的混合精度的中间表示模型,进而实现在不损失准确率的情况下减小运算负载,并使用移动端均包含的支持低精度的异构处理器来分载训练中所需的关键计算任务,实现在移动端快速高效地训练,进而减小了在移动端上训练的能耗和延迟。
Description
技术领域
本发明涉及机器学习技术领域,特别涉及一种支持移动端异构处理器分载的混合精度训练方法及设备。
背景技术
随着隐私问题的增多,在移动端设备上训练深度神经网络引起了学术界和工业界的关注。在移动端设备上训练深度神经网络,能够在不泄露训练数据的情况下,在移动端设备上建立个性化并适应特定环境的模型,例如,手机人脸识别训练。
但在移动端设备上进行训练的存在能耗巨大和延时长的问题,根据在小米10智能手机上评测的数据显示,在两个流行的神经网络训练引擎(TFLite和MNN)上训练一个批的ResNet-50(批大小为32)模型,占用4.6GB内存和36.4秒的延迟,其消耗的能量等于看一个111.2秒的1080P高清视频。因此,如何减小在移动设备上训练的能耗和延迟,是亟待解决的技术问题。
发明内容
鉴于上述问题,本发明实施例提供了一种支持移动端异构处理器分载的混合精度训练方法及设备,以便克服上述问题或者至少部分地解决上述问题。
本发明实施例的第一方面,公开了一种支持移动端异构处理器分载的混合精度训练方法,应用于移动端,所述移动端包括混合精度算法抽象模块、异构处理器抽象模块、CPU和异构处理器,所述混合精度算法抽象模块包括模型翻译引擎和模型剖析工具,所述异构处理器抽象模块包括模型执行控制器和模型执行平台,所述方法包括:
通过模型翻译引擎将初始模型转换为中间表示模型,并通过模型剖析工具对所述中间表示模型进行剖析;
利用模型执行控制器将所述中间表示模型生成CPU和异构处理器的计算子图,输入待训练数据和权重,并将所述计算子图通过模型执行平台在移动端设备的CPU或异构处理器上进行训练。
可选地,所述通过模型翻译引擎将初始模型转换为中间表示模型,包括:
通过模型翻译引擎中的图转换器和算子融合器将所述初始模型转换成中间表示;
通过模型翻译引擎中的中间表示模型生成器将所述中间表示转换为所述中间表示模型,其中,所述中间表示模型包含算子类型、超参数、输入和输出,以及所述中间表示模型输入和输出的内存区域。
可选地,所述通过模型剖析工具对所述中间表示模型进行剖析,包括:
通过模型剖析工具中的批拆分剖析器获取所述中间表示模型的最佳批拆分配置;
通过模型剖析工具中的算子内存剖析器剖析所述中间表示模型中每个算子所需要的内存。
可选地,所述通过模型剖析工具中的批拆分剖析器获取所述中间表示模型的最佳批拆分配置,包括:
获取所述中间表示模型中每个算子的延迟与计算量;
若所述算子的延迟与计算量的比率高于相同配置但批维度小的算子时,对该算子内的计算进行批维度拆分。
可选地,所述利用模型执行控制器将所述中间表示模型生成CPU和异构处理器的计算子图,是通过所述模型执行控制器中的CPU-异构处理器协同调度器生成所述CPU和异构处理器的计算子图,包括:
确定中间表示模型算子上下文切换感知的CPU-异构处理器协同调度策略;
根据所述调度策略将所述中间表示模型映射到CPU和异构处理器上;
基于所述映射情况生成所述CPU和异构处理器的计算子图。
可选地,所述确定中间表示模型算子上下文切换感知的CPU-异构处理器协同调度策略,包括:
获取所述中间表示模型所有算子的执行顺序,以及每个所述算子在CPU和异构处理器上的延迟;
构建模型训练最小化延迟的目标函数,基于所述目标函数在不改变算子执行顺序的情况下找到最优调度解;
基于所述调度策略将所述中间表示模型映射到CPU和异构处理器上,包括:
基于所述最优调度解,将所述中间表示模型的算子映射到CPU和异构处理器上。
可选地,所述模型训练最小化延迟的目标函数是基于动态规划算法而构建的,所述目标函数Tmodel可表示为:
Tmodel=min{T[i,CPU],T[i,HP]}
其中,i是所述中间表示模型算子的全部数量,T[i,CPU]为所述中间表示模型所有算子在CPU上运行的最低延时,T[i,HP]为所述中间表示模型所有算子在异构处理器上运行的最低延时;
所述的T[i,CPU]和T[i,HP]分别表示为:
其中,T[i,CPU]是在CPU上完成算子Op1到算子Opi的最低延迟,T[i,HP]是在异构处理器上完成算子Op1到算子Opi的最低延迟,T[i-1,CPU]是在CPU上完成算子Op1到算子Opi-1的最低延迟,T[i-1,HP]是在异构处理器上完成算子Op1到算子Opi-1的最低延迟,表示Opi在CPU上运行的最短时间,表示Opi在异构处理器上运行的最短时间,Lswich表示CPU和HP上下文切换时间。
可选地,在训练过程中通过自适应控制器来控制重量化的频率,具体包括:
获取初始轮次训练过程中缩放因子的变化频率f;
在下一轮训练时设置缩放因子的缩放频率为f,若该轮次缩放因子变化频率g小于f,则更新新的下一轮训练缩放因子的变化频率为g,若该轮次缩放因子变化频率g等于f,则更新新的下一轮缩放因子变化频率为f/2。
可选地,在训练过程中对异构处理器计算子图进行重用,所述异构处理器计算子图重用通过子图重用控制器来调度,所述调度包括:
按照每个异构处理器计算子图的执行顺序,计算每个所述异构处理器计算子图的最长重用距离;
当某个异构处理器计算子图要执行时,若该异构处理器计算子图内存未被分配且剩余内存不满足分配,则选择满足该异构处理器计算子图所需内存的所述最长重用距离的异构处理器计算子图进行释放,在满足内存分配后,生成该异构处理器计算子图并分配内存;若该异构处理器计算子图在内存中,则直接复用已有异构处理器计算子图。
本发明实施例的第二方面,公开了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行时实现如本发明第一方面实施所述支持移动端异构处理器分载的混合精度训练方法。
本发明实施例包括以下优点:
在本发明实施例中,基于混合精度训练算法,将原本高精度的训练模型转化能够直接在移动端执行的混合精度的中间表示模型,进而实现在不损失准确率的情况下减小运算负载,并使用移动端均包含的支持低精度的异构处理器来分载训练中所需的关键计算任务,实现在移动端快速高效地训练,进而减小了在移动端上训练的能耗和延迟。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种移动端系统组成结构示意图;
图2是本发明实施例提供的一种支持移动端异构处理器分载的混合精度训练方法步骤流程图;
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了解决移动端设备上进行训练的存在能耗巨大和延时长的问题,申请人发现机器学习领域的各种混合精度训练算法能够在训练期间使用INT8和FP16等低精度格式表示FP32精度的权重和激活,以达到不损失准确率的情况下减少运算负载的目的。同时,现在的移动端设备通常由异构处理器组成,其中的数字信号处理器(Digital SignalProcessing,DSP)、神经网络处理器(Neural-network Processing Unit,NPU)和图形处理器(Graphics Processing Unit,GPU),特别适合进行低精度运算,能够一个周期内执行上百次低精度格式的乘法操作。因此,申请人提出以下技术构思:将原本训练模型中高精度(FP32)算子转换为对具有不同精度的数据进行操作的新算子(混合精度算子)的组合,并利用移动端支持低精度的异构处理器来分载训练中所需的关键计算任务。
基于上述技术构思,本发明实施例提供了一种支持移动端异构处理器分载的混合精度训练方法,应用于移动端,如图1所示,为本发明实施提供的一种移动端系统组成结构示意图,所述移动端包括混合精度算法抽象模块、异构处理器抽象模块、CPU(CentralProcessing Unit,中央处理器)和异构处理器,所述混合精度算法抽象模块包括模型翻译引擎和模型剖析工具,所述异构处理器抽象模块包括模型执行控制器和模型执行平台。此外,所述的模型翻译引擎由图像转换器、算子融合器和中间表示模型生成器组成;模型剖析工具由算子内存剖析工具和批拆分剖析工具组成;模型执行控制器由子图重用控制器、自适用的动态量化控制器和CPU-异构处理器联合调度器组成;模型执行平台由内置训练算法模块和异构处理器执行后端组成。其中,移动端是指各种可携带的移动端设备,如手机、智能手表、IPAD等。
图2示出了本发明实施例提供的一种支持移动端异构处理器分载的混合精度训练方法步骤流程图,所述的方法包括:
步骤S201:通过模型翻译引擎将初始模型转换为中间表示模型,并通过模型剖析工具对所述中间表示模型进行剖析。
在本实施例中,将待训练的初始模型输入到移动端的混合精度算法抽象模块,混合精度算法抽象模块中的模型翻译引擎根据混合精度训练算法的配置内容,将初始模型转换为混合精度的中间表示模型。其中,所述的初始模型是指来自不同前端框架的(例如,TensorFlow和PyTorch)的模型,初始模型算子的精度一般为FP32,故基于初始模型进行训练的运算负载大,且初始模型不能直接在移动端运行;所述的中间表示模型的中的算子包含了多种精度(例如,FP32、FP16、INT8等),对于中间表示模型算子的精度与实际的混合精度训练算法的配置类型相关,中间表示模型能够直接在移动端上运行。在模型翻译引擎将初始模型转换为中间表示模型后,模型剖析工具会对中间表示模型进行剖析,分析中间表示模型在离线阶段各算子的内存使用情况以及各算子的批拆分情况,其中,算子的批拆分情况是指算子内的计算批维度的拆分情况。
步骤S202:利用模型执行控制器将所述中间表示模型生成CPU和异构处理器的计算子图,输入待训练数据和权重,并将所述计算子图通过模型执行平台在移动端设备的CPU或异构处理器上进行训练。
在本实施例中,基于步骤S201生成的可以在移动端进行训练的中间表示模型进行训练,中间表示模型的算子一部分在CPU上执行,另外一部分分载到异构处理器上执行,因此,首先利用模型执行控制器分别生成在CPU上执行的CPU计算子图和在异构处理器执行的异构处理器计算子图。生成计算子图后,模型执行平台将待训练的数据和权重从磁盘加载到所需的内存区域,所有计算子图通过CPU和异构处理器训练后端在移动端设备的CPU或异构处理器上进行训练。此外,还通过内置训练算法模块内嵌多种混合精度训练算法,在实际应用中,可自主选择最优的算法,也支持用户或者开发者自定义优化算法。
在本实施例中,上述的步骤S201和步骤S202均在移动端上运行,在第一次执行步骤S202之前,会自动触发步骤S201的执行,因此,通过这样的方式不会为应用程序开发人员带来任何额外的编程工作。本发明实施例基于混合精度训练算法,将原本高精度的训练模型转化能够直接在移动端执行的混合精度的中间表示模型,进而实现在不损失准确率的情况下减小运算负载,并使用移动端均包含的支持低精度的异构处理器来分载训练中所需的关键计算任务,实现在移动端快速高效地训练,进而减小了在移动端上训练的能耗和延迟。
在一种实施例中,所述通过模型翻译引擎将初始模型转换为中间表示模型,包括:通过模型翻译引擎中的图转换器和算子融合器将所述初始模型转换成中间表示;通过模型翻译引擎中的中间表示模型生成器将所述中间表示转换为所述中间表示模型,其中,所述中间表示模型包含算子类型、超参数、输入和输出,以及所述中间表示模型输入和输出的内存区域。
在本实施例中,图转换器将来自不同前端框架的初始模型的算子转换为中间表示后,算子融合器将中间表示中的一些算子(如卷积、批归一化和激活)进行合并以提高模型性能,最后中间表示模型生成器将经过算子合并后的生成中间表示生成中间表示模型。此外,该中间表示模型支持重复使用,例如,在第一次执行模型训练时生成了中间表示模型1,中间表示模型1会储存在内存中,当下一次再进行训练时,直接从内存中调用中间表示模型1,而不需要重新生成中间表示模型1。
在一种实施例中,所述通过模型剖析工具对所述中间表示模型进行剖析,包括:通过模型剖析工具中的批拆分剖析器获取所述中间表示模型的最佳批拆分配置;通过模型剖析工具中的算子内存剖析器剖析所述中间表示模型中每个算子所需要的内存。
在本实施例中,所述通过模型剖析工具包含有批拆分剖析器和算子内存剖析器剖析,通过批拆分剖析器获取中间表示模型的最佳批拆分配置,是指根据中间表示模型算子的计算量与计算速度来对算子内计算的批维度进行最佳的配置,以训练降低延迟和能耗。
在移动端上快速训练的一个重要因素是充分利用处理器缓存,对于数据训练,使用大批量很可能会提高CPU利用率,从而提高处理器吞吐量。当在训练过程中需要保存大量的中间数据,需要大量的内存访问,而异构处理器缓存通常小于CPU缓存,如Snapdragon865上DSP的二级缓存只有CPU一半,因此,对于基于异构处理器的训练任务,过大的批维度尺寸会耗尽的异构处理器缓存进而导致性能下降。
在本实施例中,为了实现高缓存命中率,对中间表示模型算子内的计算进行拆分。由于数据的批维度(即输入数据的第一个维度)更易于实现并且不会导致冗余计算,因此选择数据的批维度进行拆分,进而实现对中间表示模型的优化,获得更高的性能。
具体地,通过模型剖析工具中的批拆分剖析器获取所述中间表示模型的最佳批拆分配置,包括:获取所述中间表示模型中每个算子的延迟与计算量;若所述算子的延迟与计算量的比率高于相同配置但批维度小的算子时,对该算子内的计算进行批维度拆分。
其中,所述的相同配置是指相同结构的算子,对于相同结构的算子,当输入批维度大的数据在该算子中的延迟与计算量的比率明显高于输入批维度小的数据时,对该算子内的计算进行批维度的拆分。例如,对于一个CONV算子,计算矩阵1×1×2×2的延迟为T,但计算矩阵100×1×2×2的延迟1000T,矩阵100×1×2×2的计算量是矩阵1×1×2×2的100倍,但计算矩阵100×1×2×2的延迟是计算矩阵1×1×2×2的1000倍(正常情况下为100倍),也就是说,计算矩阵100×1×2×2延迟与计算量的比率远远大于计算矩阵1×1×2×2的延迟与计算量的比率,此时就需要对矩阵100×1×2×2进行的批维度进行拆分,可将其拆分为100个1×1×2×2的矩阵,拆分后的进行计算的延迟为100T,远小于直接计算矩阵100×1×2×2的延时,进而实现通过算子内的计算进行拆分,提高了计算效率,也就是提高了中间表示模型的性能。
在一种实施例中,所述利用模型执行控制器将所述中间表示模型生成CPU和异构处理器的计算子图,是通过所述模型执行控制器中的CPU-异构处理器协同调度器生成所述CPU和异构处理器的计算子图,具体包括:确定中间表示模型算子上下文切换感知的CPU-异构处理器协同调度策略;根据所述调度策略将所述中间表示模型映射到CPU和异构处理器上;基于所述映射情况生成所述CPU和异构处理器的计算子图。
虽然异构处理器支持低精度的数据的运算,但仍存在一些算子不适合在异构处理器上运行的不规则内存访问操作或浮点运算,这些算子在异构处理器上的执行延迟可能比CPU慢8倍以上。此外,一些仅支持FP32格式的算子,如批归一化和量化,在异构处理器上也缺乏硬件支持,这类算子必须要在CPU上执行,将这些算子称为“异构处理器不友好的算子”,因此中间表示模型中的算子部分在CPU上执行,部分在异构处理器上执行。
为了在异构处理器和CPU之间划分模型,即确定在异构处理器上执行的算子和在CPU上执行的算子,由于算子在CPU和异构处理器之间的上下文切换会产生很高的延迟,为了降低CPU-异构处理器上下文切换频率,一些异构处理器友好的算子也要放到CPU上执行。因此,通过中间表示模型算子上下文切换感知的CPU-异构处理器协同调度策略,确定在异构处理器上执行的算子和在CPU上执行的算子,即将中间表示模型映射到CPU和异构处理器上,最后,根据映射情况生成分别生成在CPU执行的CPU计算子图和在异构处理器执行的异构处理器计算子图。
在一种实施例中,确定中间表示模型算子上下文切换感知的CPU-异构处理器协同调度策略,包括:
获取所述中间表示模型所有算子的执行顺序,以及每个所述算子在CPU和异构处理器上的延迟;
构建模型训练最小化延迟的目标函数,基于所述目标函数在不改变算子执行顺序的情况下找到最优调度解;
基于所述调度策略将所述中间表示模型映射到CPU和异构处理器上,包括:基于所述最优调度解,将所述中间表示模型的算子映射到CPU和异构处理器上。
在本实施例中,为了解决中间表示模型算子上下文切换调度问题,通过使用拓扑排序来获得所有算子的执行顺序,以及每个算子在CPU和异构处理器上的延迟。然后,基于所述算子的执行顺序和每个算子在CPU和异构处理器上的延迟构建模型训练最小化延迟的目标函数,所述的最优调度接是目标函数在不改变算子执行顺序的情况下,以实现最小化延时为目标寻找得到的。
在一种实施例中,所述模型训练最小化延迟的目标函数是基于动态规划算法而构建的,所述目标函数Tmodel可表示为:
Tmodel=min{T[i,CPU],T[i,HP]}
其中,i是所述中间表示模型算子的全部数量,T[i,CPU]为所述中间表示模型所有算子在CPU上运行的最低延时,T[i,HP]为所述中间表示模型所有算子在异构处理器上运行的最低延时。
具体地,所述目标函数的构建过程包括:
首先,确定中间表示模型的动态规划的递归公式,所述动态规划的递归公式表示为:
其中,CPU和HP分别代表CPU处理器和异构处理器。T[i,CPU]是在CPU上完成算子Op1到算子Opi的最低延迟,T[i,HP]是在异构处理器上完成算子Op1到算子Opi的最低延迟,T[i-1,CPU]是在CPU上完成算子Op1到算子Opi-1的最低延迟,T[i-1,HP]是在异构处理器上完成算子Op1到算子Opi-1的最低延迟,表示Opi在CPU上运行的最短时间,表示Opi在异构处理器上运行的最短时间,Lswich表示CPU和HP上下文切换时间,此外,CPU和HP初始状态分别设置为T[1,CPU]=L1 CPU和T[1,HP]=L1 HP。
如果算子Opi在CPU运行,此时存在两种情况:
具体CPU完成算子Op1到算子Opi的最低延迟的换时T[i,CPU]选择上述两种情况的最小值。
同样,如果算子Opi在异构处理器上运行,也此时存在两种情况:
具体异构处理器完成算子Op1到算子Opi的最低延迟的换时T[i,HP]选择上述两种情况的最小值。
最后,基于上述动态规划的递归公式,构建得到所述模型训练最小化延迟的目标函数。选择在CPU上运行第1个到第i个算子的最低延迟和异构处理器运行第1个到第i个算子的最低延迟中更小的运行方式。
在本实施例中,CPU-异构处理器协同调度策略是为了减少对异构处理器不友好算子的上下文切换延迟,而不是提供最大的CPU和异构处理器并行度。由于异构处理器的能效通常比CPU高很多,将更多的计算分配给CPU并与异构处理器并行执行只能带来较少地速度提升,却伴随着巨大的能耗增加。因此,基于本实施例提出的CPU-异构处理器协同调度策略能有效的减小延迟和能耗。
在移动端为训练部署量化模型时,每层的量化缩放因子是一个静态值。因此,数据流很简单,只需在加载输入数据和权重后进行矩阵相乘并存储量化结果。但是,在训练期间,缩放因子也需要动态调整,就像可训练的权重一样。不合理的缩放因子会显着降低模型精度,并且在训练完成之前无法知道最佳缩放因子。由于动态缩放需要较多的内存访问,这种动态缩放在异构处理器上运行缓慢。对于每轮训练,必须存储临时输出并在获得缩放因子后重新加载它们,以将临时输出最终从FP32映射为低精度的结果,为了减轻重量化(重量化是指重新量化缩放因子)带来的延迟,提出了一种自适应缩放技术来减轻重新缩放的延迟,通过利用自适应量化控制器来控制重新量化的频率。
在一种实施例中,在训练过程中通过自适应控制器来控制重量化的频率,具体包括:
获取初始轮次训练过程中缩放因子的变化频率f;
在下一轮训练时设置缩放因子的缩放频率为f,若该轮次缩放因子变化频率g小于f,则更新新的下一轮训练缩放因子的变化频率为g,若该轮次缩放因子变化频率g等于f,则更新新的下一轮缩放因子变化频率为f/2。
例如,在训练过程中,每次训练的缩放因子是动态变化的,最初的100次训练,其中有10次训练的缩放因子(缩放因子为scale)发生了变化,即缩放因子平均变化频率f为10,那么下一轮开始训时,则在下一轮的100次训练过程中,缩放因子平均变化频率是相同的,因此只需要每10次训练后进行一次重量化即可。如果在新一轮的10次重量化中,又有3次缩放因子不变,那么缩放因子平均变化频率f为33,在新的下一轮中每33次训练进行一次重量化即可,以此类推。相反地,在新一轮的10次重量化中,10次重量化均不同,那么缩放因子平均变化频率f为20,即在新的下一轮中每5次训练进行一次重量化即可。也就减少了缩放因子的变化次数,即减轻重量化的频率,进而降低了重量化带来的延迟。
此外,在训练过程中,异构处理器计算子图的生成时间较长,例如,对于VGG16模型而言,为DSP处理器使用TFLite框架试生成计算子图需要304毫秒,而在MNN框架上也同样需要212毫秒。如此长的生成延迟严重影响分载异构处理器进行训练的性能。由于在移动端设备上训练期间很少修改模型,甚至不需要调试(大多是云端预训练过的模型),因此本实施例中采用重用异构处理器计算子图来消除其带来的延迟,由子图重用控制器来对异构处理器的子图重用进行调度。
在一种实施例中,在训练过程中对异构处理器计算子图进行重用,所述异构处理器计算子图重用通过子图重用控制器来调度,所述调度包括:
按照每个异构处理器计算子图的执行顺序,计算每个所述异构处理器计算子图的最长重用距离;
当某个异构处理器计算子图要执行时,若该异构处理器计算子图内存未被分配且剩余内存不满足分配,则选择满足该异构处理器计算子图所需内存的所述最长重用距离的异构处理器计算子图进行释放,在满足内存分配后,生成该异构处理器计算子图并分配内存;若该异构处理器计算子图在内存中,则直接复用已有异构处理器计算子图。
在本实施例中,所述异构处理器计算子图重用通过子图重用控制器来调度,是指利用子图重用控制器对异构处理器计算子图的释放和生成进行合理的控制。由于直接重用异构处理器计算子图需要将所有的中间数据结构和信息均保留在内存中,进而导致大量内存区域无法被释放,很容易超出异构处理器内存上限。因此,本实施例在满足内存约束的情况下最小内存分配/释放,以减少训练延迟,利用于子图重用的内存分配/释放是严格遵循每个异构处理器计算子图的执行顺序,直接计算任意一个异构处理器计算子图的最长重用距离,进而选择具有最长重用距离且满足内存需求的子图进行释放,在满足内存约束的情况下,生成当前异构处理器计算子图并分配内存。其中,最长重用距离是指距离当前异构处理器计算子图距离最远的一个(最迟使用)异构处理器计算子图,例如,对于4个按顺序排列的异构处理器计算子图A、B、C、D,在训练过程中一直按照A、B、C、D的顺序执行训练,当在执行A时,距离A最远的最长重用距离的是D,此时选择D进行释放;当执行到B时,距离B最远的最长重用距离的是A,此时选择A进行释放,在满足内存在约束下,再重新生成D。
为了获得每一个异构处理器计算子图的最长重用距离,在步骤S201中,利用算子内存剖析工具获得每个计算子图使用的所在内存区域。由于计算子图的数量较小(<100),因而可以穷举所有情况以找到满足不同内存大小要求的所有可能解决方案。在步骤S202中,当异构处理器训练所需的内存即将超过内存上限时,子图重用控制器按照每个异构处理器计算子图使用的所在的内存区域,释放内存并为即将生成的异构处理器计算子图分配内存。
在本实施例中,通过子图重用控制器对异构处理器计算子图进行合理的调度,使训练始终在满足异构处理器的内存约束下进行训练,同时保证每次执行异构处理器计算子图时内存中已经存在有相应的异构处理器计算子图,不需要临时的生成,进而消除了异构处理器计算子图的生成延迟,整体上减小了训练过程的延迟,降低了训练能耗。
在本实施例中提供了一种在移动端设备上支持异构处理器分载的混合精度训练方法,通过混合精度算法抽象模块将原本高精度的训练模型转化能够直接在移动端执行的混合精度的中间表示模型,进而实现在不损失准确率的情况下减小运算负载,并使用移动端均包含的支持低精度的异构处理器来分载训练中所需的关键计算任务,实现在移动端快速高效地训练。此外,并结合了自适应重量化控制、对算子内计算批维度分、CPU-异构处理器协同调度和异构处理器计算子图重用等方法,进一步降低训练延迟,减少训练能耗。
示例地,为了能够支持从不同的前端框架(例如TensorFlow和PyTorch)导出的模型,并兼容各种混合精度训练算法。本实施例对六种典型的深度神经网络模型(VGG-11/16/19、ResNet-18/34和InceptionV3)在三款移动设备(小米11Pro、小米10、和红米Note9 Pro)的DSP处理器上进行了验证。结果表明,与来自TFLite和MNN的原生支持相比,本实施例可以将每批训练时间和能耗平均减少5.5/8.9倍,最高可分别减少8.3倍/12.5倍。同时,与FP32精度训练的模型相比,仅损失1.9%-2.7%的准确率。
本发明能够显着降低在移动端训练的能耗和延迟,使得在移动端设备上开展训练成为可能。应用场景主要在:(1)待训练模型可以在云上使用公共数据进行预训练,并在每个设备上进行微调或个性化。(2)端到端训练不一定在一台设备上执行,联邦学习中,训练成本在数百万台设备上分摊。
以移动端输入法打字训练为例,在移动端部署好需要进行训练的模型,以用户每次输入的文字为模型训练的训练数据,进而训练得到符合每个用户打字习惯的特定模型,用户在使用过程中,会根据用户当前输入文字,自动的预测显示用户下一时刻想要输入的文字,进而提高了用户的打字速度。
以移动端人脸识别登录训练为例,由于涉及隐私问题,通常将个人的人脸图像存储在移动端上,在移动端部署好用于人脸识别的训练模型后,从移动端内存中加载训练数据(即人脸图像),其中,所述的训练数据可以是用户完整的人脸图像,也可以是包含局部的特征人脸图像,如眼睛、鼻子、嘴巴等局部图像,基于训练数据对人脸识别模型进行训练,进而实现不泄露训练数据的情况下,在移动端建立个性化并适应特定用户的训练模型,提高人脸识别的准确率。
本发明实施例还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行时实现如本发明第一方面实施例所述的支持移动端异构处理器分载的混合精度训练方法。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本发明所提供的一种支持移动端异构处理器分载的混合精度训练方法及设备进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (10)
1.一种支持移动端异构处理器分载的混合精度训练方法,应用于移动端,其特征在于,所述移动端包括混合精度算法抽象模块、异构处理器抽象模块、CPU和异构处理器,所述混合精度算法抽象模块包括模型翻译引擎和模型剖析工具,所述异构处理器抽象模块包括模型执行控制器和模型执行平台,所述方法包括:
通过模型翻译引擎将初始模型转换为中间表示模型,并通过模型剖析工具对所述中间表示模型进行剖析;
利用模型执行控制器将所述中间表示模型生成CPU和异构处理器的计算子图,输入待训练数据和权重,并将所述计算子图通过模型执行平台在移动端设备的CPU或异构处理器上进行训练。
2.根据权利要求1所述方法,其特征在于,所述通过模型翻译引擎将初始模型转换为中间表示模型,包括:
通过模型翻译引擎中的图转换器和算子融合器将所述初始模型转换成中间表示;
通过模型翻译引擎中的中间表示模型生成器将所述中间表示转换为所述中间表示模型,其中,所述中间表示模型包含算子类型、超参数、输入和输出,以及所述中间表示模型输入和输出的内存区域。
3.根据权利要求2所述方法,其特征在于,所述通过模型剖析工具对所述中间表示模型进行剖析,包括:
通过模型剖析工具中的批拆分剖析器获取所述中间表示模型的最佳批拆分配置;
通过模型剖析工具中的算子内存剖析器剖析所述中间表示模型中每个算子所需要的内存。
4.根据权利要求3所述方法,其特征在于,所述通过模型剖析工具中的批拆分剖析器获取所述中间表示模型的最佳批拆分配置,包括:
获取所述中间表示模型中每个算子的延迟与计算量;
若所述算子的延迟与计算量的比率高于相同配置但批维度小的算子时,对该算子内的计算进行批维度拆分。
5.根据权利要求1所述方法,其特征在于,所述利用模型执行控制器将所述中间表示模型生成CPU和异构处理器的计算子图,是通过所述模型执行控制器中的CPU-异构处理器协同调度器生成所述CPU和异构处理器的计算子图,包括:
确定中间表示模型算子上下文切换感知的CPU-异构处理器协同调度策略;
根据所述调度策略将所述中间表示模型映射到CPU和异构处理器上;
基于所述映射情况生成所述CPU和异构处理器的计算子图。
6.根据权利要求5所述方法,其特征在于,所述确定中间表示模型算子上下文切换感知的CPU-异构处理器协同调度策略,包括:
获取所述中间表示模型所有算子的执行顺序,以及每个所述算子在CPU和异构处理器上的延迟;
构建模型训练最小化延迟的目标函数,基于所述目标函数在不改变算子执行顺序的情况下找到最优调度解;
基于所述调度策略将所述中间表示模型映射到CPU和异构处理器上,包括:
基于所述最优调度解,将所述中间表示模型的算子映射到CPU和异构处理器上。
7.根据权利要求6所述方法,其特征在于,所述模型训练最小化延迟的目标函数是基于动态规划算法而构建的,所述目标函数Tmodel可表示为:
Tmodel=min{T[i,CPU],T[i,HP]}
其中,i是所述中间表示模型算子的全部数量,T[i,CPU]为所述中间表示模型所有算子在CPU上运行的最低延时,T[i,HP]为所述中间表示模型所有算子在异构处理器上运行的最低延时;
所述T[i,CPU]和T[i,HP]分别表示为:
8.根据权利要求1所述方法,其特征在于,所述方法还包括:在训练过程中通过自适应控制器来控制重量化的频率,具体包括:
获取初始轮次训练过程中缩放因子的变化频率f;
在下一轮训练时设置缩放因子的缩放频率为f,若该轮次缩放因子变化频率g小于f,则更新新的下一轮训练缩放因子的变化频率为g,若该轮次缩放因子变化频率g等于f,则更新新的下一轮缩放因子变化频率为f/2。
9.根据权利要求1所述方法,其特征在于,所述方法还包括:在训练过程中对异构处理器计算子图进行重用,所述异构处理器计算子图重用通过子图重用控制器来调度,所述调度包括:
按照每个异构处理器计算子图的执行顺序,计算每个所述异构处理器计算子图的最长重用距离;
当某个异构处理器计算子图要执行时,若该异构处理器计算子图内存未被分配且剩余内存不满足分配,则选择满足该异构处理器计算子图所需内存的所述最长重用距离的异构处理器计算子图进行释放,在满足内存分配后,生成该异构处理器计算子图并分配内存;若该异构处理器计算子图在内存中,则直接复用已有异构处理器计算子图。
10.一种电子设备,其特征在于,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行时实现如权利要求1-9任一所述支持移动端异构处理器分载的混合精度训练方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211083545.4A CN115470901B (zh) | 2022-09-06 | 2022-09-06 | 支持移动端异构处理器分载的混合精度训练方法及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211083545.4A CN115470901B (zh) | 2022-09-06 | 2022-09-06 | 支持移动端异构处理器分载的混合精度训练方法及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115470901A true CN115470901A (zh) | 2022-12-13 |
CN115470901B CN115470901B (zh) | 2023-05-19 |
Family
ID=84369325
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211083545.4A Active CN115470901B (zh) | 2022-09-06 | 2022-09-06 | 支持移动端异构处理器分载的混合精度训练方法及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115470901B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118034660A (zh) * | 2024-04-12 | 2024-05-14 | 清华大学 | 针对大语言模型融合算子的图编译方法、装置及存储介质 |
CN118034660B (zh) * | 2024-04-12 | 2024-07-02 | 清华大学 | 针对大语言模型融合算子的图编译方法、装置及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20200226473A1 (en) * | 2019-01-15 | 2020-07-16 | BigStream Solutions, Inc. | Systems, apparatus, methods, and architectures for heterogeneous precision acceleration of quantized neural networks |
CN111860867A (zh) * | 2020-07-24 | 2020-10-30 | 苏州浪潮智能科技有限公司 | 一种混合异构系统的模型训练方法、系统及相关装置 |
CN112381211A (zh) * | 2020-11-20 | 2021-02-19 | 西安电子科技大学 | 基于异构平台执行深度神经网络的系统及方法 |
CN114650228A (zh) * | 2022-03-18 | 2022-06-21 | 南京邮电大学 | 一种异构网络中基于计算卸载的联邦学习调度方法 |
-
2022
- 2022-09-06 CN CN202211083545.4A patent/CN115470901B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20200226473A1 (en) * | 2019-01-15 | 2020-07-16 | BigStream Solutions, Inc. | Systems, apparatus, methods, and architectures for heterogeneous precision acceleration of quantized neural networks |
CN111860867A (zh) * | 2020-07-24 | 2020-10-30 | 苏州浪潮智能科技有限公司 | 一种混合异构系统的模型训练方法、系统及相关装置 |
CN112381211A (zh) * | 2020-11-20 | 2021-02-19 | 西安电子科技大学 | 基于异构平台执行深度神经网络的系统及方法 |
CN114650228A (zh) * | 2022-03-18 | 2022-06-21 | 南京邮电大学 | 一种异构网络中基于计算卸载的联邦学习调度方法 |
Non-Patent Citations (1)
Title |
---|
刘建华;王朝尉;任江勇;田荣;: "面向异构架构的混合精度有限元算法及其CUDA实现" * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118034660A (zh) * | 2024-04-12 | 2024-05-14 | 清华大学 | 针对大语言模型融合算子的图编译方法、装置及存储介质 |
CN118034660B (zh) * | 2024-04-12 | 2024-07-02 | 清华大学 | 针对大语言模型融合算子的图编译方法、装置及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN115470901B (zh) | 2023-05-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108885571B (zh) | 分批处理机器学习模型的输入 | |
CN111448550A (zh) | 网络可访问的机器学习模型训练和托管系统 | |
CN110033091B (zh) | 一种基于模型进行预测的方法和装置 | |
CN110334436B (zh) | 一种数据处理方法以及设备 | |
CN116521380A (zh) | 一种资源自适应协同的模型训练加速方法、装置及设备 | |
CN116257363B (zh) | 资源调度方法、装置、设备及存储介质 | |
EP4123514A2 (en) | Access method and apparatus, electronic device and computer storage medium | |
CN110795238A (zh) | 负载计算方法、装置、存储介质及电子设备 | |
CN111460832B (zh) | 对象编码的方法、装置、系统、设备及计算机存储介质 | |
CN115292046A (zh) | 算力分配方法、装置、存储介质及电子设备 | |
KR20200052417A (ko) | 타겟 디바이스의 추론 모듈 선택 장치 및 방법 | |
CN109840597B (zh) | 一种模型预测方法、装置、电子设备及存储介质 | |
CN116302448B (zh) | 任务调度方法和系统 | |
CN113448714A (zh) | 基于云平台的计算资源控制系统 | |
CN112052943A (zh) | 电子装置和执行该电子装置的操作的方法 | |
CN115470901A (zh) | 支持移动端异构处理器分载的混合精度训练方法及设备 | |
CN115437781B (zh) | 一种gpu资源管理方法及系统 | |
CN114116220A (zh) | 一种gpu共享控制方法、gpu共享控制装置及存储介质 | |
CN114490002A (zh) | 数据处理系统、任务调度方法、装置、芯片、及电子设备 | |
CN112130979B (zh) | 调度任务及训练神经网络模型的方法、装置、终端和介质 | |
CN114466014A (zh) | 一种服务调度方法、装置、电子设备及存储介质 | |
CN113504966A (zh) | Gpu集群调度策略模拟方法及gpu集群模拟器 | |
CN112215349A (zh) | 基于数据流架构的稀疏卷积神经网络加速方法及装置 | |
CN111124691A (zh) | 多进程共享的gpu调度方法、系统及电子设备 | |
TWI775170B (zh) | Cpu應用於人工智慧相關程序時的執行方法 |
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 |