CN112433761A - 高斯误差线性单元的优化方法、系统、设备及介质 - Google Patents

高斯误差线性单元的优化方法、系统、设备及介质 Download PDF

Info

Publication number
CN112433761A
CN112433761A CN202011385025.XA CN202011385025A CN112433761A CN 112433761 A CN112433761 A CN 112433761A CN 202011385025 A CN202011385025 A CN 202011385025A CN 112433761 A CN112433761 A CN 112433761A
Authority
CN
China
Prior art keywords
linear unit
gaussian error
error linear
instruction set
gaussian
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
Application number
CN202011385025.XA
Other languages
English (en)
Other versions
CN112433761B (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.)
Shanghai Zhilv Information Technology Co ltd
Original Assignee
Shanghai Zhilv Information Technology Co ltd
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 Shanghai Zhilv Information Technology Co ltd filed Critical Shanghai Zhilv Information Technology Co ltd
Priority to CN202011385025.XA priority Critical patent/CN112433761B/zh
Publication of CN112433761A publication Critical patent/CN112433761A/zh
Application granted granted Critical
Publication of CN112433761B publication Critical patent/CN112433761B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本发明公开了一种高斯误差线性单元的优化方法、系统、设备和介质,其中优化方法包括:接收自然语言处理的输入数据;以所述输入数据为输入参数,调用第一高斯误差线性单元或者第二高斯误差线性单元;第一高斯误差线性单元的实现方式为:使用mkl数学库中vsErf接口函数和mkl数学库中的四则运算接口函数分别代替BERT模型中的高斯误差线性单元的erf函数和四则运算接口函数;第二高斯误差线性单元的实现方式为:使用Intrinsic指令集中erf接口函数和Intrinsic指令集中的四则运算接口函数分别代替BERT模型中高斯误差线性单元的erf函数和四则运算接口函数。第一、二高斯误差线性单元计算效率明显提高,增强了BERT模型的性能。

Description

高斯误差线性单元的优化方法、系统、设备及介质
技术领域
本发明涉及自然语言处理领域,尤其涉及一种高斯误差线性单元的优化方法、系统、设备及介质。
背景技术
高斯误差线性单元gelu(Gaussian Error Linear Units)神经网络激活函数(简称gelu激活函数)可以避免梯度消失的问题,因此gelu激活函数在自然语言处理(NLP)的Bert(一种预训练的语言模型)和Transformer(一种预训练的语言模型)等常用模型中应用广泛。
其中Google(一家互联网公司)公司推出的Bert模型为NLP领域带来里程碑式的改变,其在多种不同的NLP测试中创出佳绩,是NLP领域很重要的一个进展。但是由于Bert模型较大,训练和推理的时间都很长;其中在推理时长中,gelu激活函数占时比重较大,所以为了提高Bert模型的工作效率,对gelu激活函数进行性能优化成为当下热点问题之一。
为了降低模型在NLP领域应用时gelu激活函数计算复杂度,现有技术中通常将原始基于tanh(一种双曲函数)的激活函数由基于erf(误差函数)的激活函数方式替代实现,原始的gelu函数实现方式如下:
Figure BDA0002809407550000011
替代实现方式如下:
Figure BDA0002809407550000012
在Bert模型中是采用Python(一种编程语言)实现的,利用Python中自带的函数库实现,经过在Bert模型中验证,这种替代方式对模型质量没有明显影响,同时又降低了计算量,提升了运行速度。
但是Bert模型中基于Python自带函数实现的gelu函数的占用时长还是过长,计算效率不高。
另外,在基于Bert模型的深度学习计算中,输入数据的矩阵数据往往维度各异,有些维度较小,有些维度较大,不同维度的矩阵对于不同的函数实现来说性能也有所差异,再加上硬件平台的不同也会带来性能的不同。因此为了针对不同维度的输入矩阵和不同的硬件平台均能够取得gelu激活函数的最佳性能,需要相应地选择最优的方法来实现。
发明内容
本发明要解决的技术问题是为了克服现有技术中基于Python的Bert模型中实现的gelu函数的占用时长过长,计算效率不高且针对不同维度的输入矩阵和不同的硬件平台性能欠佳的缺陷,提供一种高斯误差线性单元的优化方法、系统、设备及介质。
本发明是通过下述技术方案来解决上述技术问题:
本发明提供一种高斯误差线性单元的优化方法,所述优化方法包括:
接收自然语言处理的输入数据;
以所述输入数据为输入参数,调用第一高斯误差线性单元或者第二高斯误差线性单元;
所述第一高斯误差线性单元的实现方式为:
使用mkl数学库中vsErf接口函数和所述mkl数学库中的四则运算接口函数分别代替基于python的BERT模型中的高斯误差线性单元的erf函数和四则运算接口函数;
所述第二高斯误差线性单元的实现方式为:
使用Intrinsic(内联函数)指令集中的erf接口函数和所述Intrinsic指令集中的四则运算接口函数分别代替基于python的BERT模型中的高斯误差线性单元的erf函数和四则运算接口函数。
优选地,在所述接收输入数据的步骤之后还包括:
判断所述输入数据的维度是否在一预设阈值范围内,若是,则调用所述第一高斯误差线性单元;若否,则调用所述第二高斯误差线性单元。
优选地,所述预设阈值范围为小于512。
优选地,调用所述第二高斯误差线性单元的步骤包括:
获取硬件环境的指令集类型,所述硬件环境的指令集类型包括AVX、AVX2或AVX512中的至少一种;若所述指令集类型为AVX或AVX2,则调用_mm256指令集对应的所述Intrinsic指令集实现所述第二高斯误差线性单元;若所述指令集类型为AVX512,则调用_mm512指令集对应的所述Intrinsic指令集实现所述第二高斯误差线性单元。
优选地,所述调用第一高斯误差线性单元或者第二高斯误差线性单元的步骤之前包括:
编译所述第一高斯误差线性单元或所述第二高斯误差线性单元至动态库文件;
引用所述动态库文件;
所述调用第一高斯误差线性单元或者第二高斯误差线性单元的步骤包括:
从所述动态库文件获取所述第一高斯误差线性单元或者所述第二高斯误差线性单元;
执行所述第一高斯误差线性单元或者所述第二高斯误差线性单元。
本发明还提供一种高斯误差线性单元的优化系统,所述优化系统包括接收模块、调用模块;
所述接收模块用于接收自然语言处理的输入数据;
所述调用模块用于以所述输入数据为输入参数,调用第一高斯误差线性单元或者第二高斯误差线性单元;
所述第一高斯误差线性单元用于使用mkl数学库中vsErf接口函数和所述mkl数学库中的四则运算接口函数分别代替基于python的BERT模型中的高斯误差线性单元的erf函数和四则运算接口函数;
所述第二高斯误差线性单元用于使用Intrinsic指令集中erf接口函数和所述Intrinsic指令集中的四则运算接口函数分别代替基于python的BERT模型中的高斯误差线性单元的erf函数和四则运算接口函数。
优选地,所述高斯误差线性单元的优化系统还包括判断模块;
所述判断模块用于判断所述输入数据的维度是否在一预设阈值范围内,若是,则调用所述第一高斯误差线性单元;若否,则调用所述第二高斯误差线性单元。
优选地,所述预设阈值范围为小于512。
优选地,所述第二高斯误差线性单元用于获取硬件环境的指令集类型,所述硬件环境的指令集类型包括AVX、AVX2或AVX512中的至少一种;若所述指令集类型为AVX或AVX2,则调用_mm256指令集对应的所述Intrinsic指令集实现所述第二高斯误差线性单元;若所述指令集类型为AVX512,则调用_mm512指令集对应的所述Intrinsic指令集实现所述第二高斯误差线性单元。
优选地,所述高斯误差线性单元的优化系统还包括编译模块和引用模块;
所述编译模块用于编译所述第一高斯误差线性单元或所述第二高斯误差线性单元至动态库文件;
所述引用模块用于引用所述动态库文件;
所述调用模块用于从所述动态库文件获取所述第一高斯误差线性单元或者所述第二高斯误差线性单元,并执行所述第一高斯误差线性单元或者所述第二高斯误差线性单元。
本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上所述的高斯误差线性单元的优化方法。
本发明还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的高斯误差线性单元的优化方法的步骤。
本发明的积极进步效果在于:
与现有技术相比,本发明在处理自然语言输入数据时,通过调用mkl数学库中vsErf接口函数和mkl数学库中的四则运算接口函数分别代替原来高斯误差线性单元中python数学库中的erf函数和四则运算接口函数;或者调用Intrinsic指令集中erf接口函数和Intrinsic指令集中的四则运算接口函数分别代替原来高斯误差线性单元中基于python的erf函数和四则运算接口函数,以实现高斯误差线性单元的功能,对自然语言输入数据进行处理,经过对大量自然语言输入数据进行实验后证明,新的高斯误差线性单元占用时长大大减少,计算效率明显提高,从而进一步增强了BERT模型的性能。
附图说明
图1为本发明的实施例1的高斯误差线性单元的优化方法的流程图。
图2为本发明的实施例2的高斯误差线性单元的优化方法的流程图。
图3为本发明的实施例2的高斯误差线性单元的优化方法的步骤12的流程图。
图4为本发明的实施例2的高斯误差线性单元的优化方法的intrinsic方式和mkl方式的处理时间对比图。
图5为本发明的实施例2的高斯误差线性单元的优化方法的步骤122的流程图。
图6为本发明的实施例3的高斯误差线性单元的优化系统的模块示意图。
图7为本发明的实施例4的高斯误差线性单元的优化系统的模块示意图。
图8为本发明实施例5的电子设备的结构示意图。
具体实施方式
下面通过实施例的方式进一步说明本发明,但并不因此将本发明限制在所述的实施例范围之中。
实施例1
本实施例提供一种高斯误差线性单元的优化方法,如图1所述,优化方法包括:
步骤11、接收自然语言处理的输入数据。
步骤12、以输入数据为输入参数,调用第一高斯误差线性单元或者调用第二高斯误差线性单元。
其中,第一高斯误差线性单元的实现方式为:
使用mkl数学库中vsErf接口函数和mkl数学库中的四则运算接口函数分别代替基于python的BERT模型中的高斯误差线性单元的erf函数和四则运算接口函数。
第二高斯误差线性单元的实现方式为:
使用Intrinsic指令集中erf接口函数和Intrinsic指令集中的四则运算接口函数分别代替基于python的BERT模型中的高斯误差线性单元的erf函数和四则运算接口函数。
本实施例实现了在利用BERT模型处理自然语言数据时,对自然语言输入数据处理时通过调用mkl数学库中vsErf接口函数和mkl数学库中的四则运算接口函数分别代替原来高斯误差线性单元中python数学库中的自带的erf函数和四则运算接口函数;或者调用Intrinsic指令集中erf接口函数和Intrinsic指令集中的四则运算接口函数分别代替原来高斯误差线性单元中基于python数学库中的自带的erf函数和四则运算接口函数,以实现高斯误差线性单元的功能。经过对大量自然语言输入数据进行实验后证明,新的高斯误差线性单元占用时长大大减少,计算效率明显提高,从而进一步增强了BERT模型的性能。
实施例2
本实施例提供一种高斯误差线性单元的优化方法,与实施例1相比,其区别在于,在实际使用时,为实现程序中第一高斯误差线性单元或者第二高斯误差线性单元的调用,首先要完成库文件的建立,即如图2所示,高斯误差线性单元的优化方法包括:
步骤01、编译第一高斯误差线性单元或第二高斯误差线性单元至动态库文件。
步骤02、引用动态库文件。
之后,执行步骤11。
更具体地,如图3所示,步骤12包括:
步骤121、判断输入数据的维度是否在一预设阈值范围内,若是,则执行步骤122,则执行步骤123。
在深度学习计算中,自然语言处理的输入数据的矩阵往往维度各异,有些维度较小,有些维度较大,不同维度的矩阵对于不同函数实现来说性能有所差异,因此为了针对不同维度的输入矩阵取得最佳性能,在本实施例中,通过对大量自然语言处理的不同维数的输入数据进行测试,第二高斯误差线性单元采用的Intrinsic指令集中的erf接口函数和Intrinsic指令集中的四则运算接口函数,称为intrinsic方式,第一高斯误差线性单元的方式称为mkl方式,假设自然语言输入数据的矩阵数据的行值为16384,如图4所示,选择列维度在256~8129之间的数据(图中纵坐标),横坐标表示intrinsic方式或mkl方式的处理时长,单位为毫秒(ms),在AVX2硬件平台上实现的函数分别处理不同列维度的输入数据的时长区别,可以看出随着输入数据列维度增加,intrinsic方式会优于mkl方式。在AVX512平台上执行结果跟AVX2的趋势一致,不再给出具体实验数据。所以在本实施例中,预设自然语言处理的输入数据的维度的阈值范围为小于512。
步骤122、调用第一高斯误差线性单元。
即从动态库文件获取第一高斯误差线性单元,以实现第一高斯误差线性单元的执行。
在第一高斯误差线性单元的实现方式中,使用OpenMP(一种用于共享内存并行系统的多线程程序设计的一套编译指令)实现多线程并行和向量化优化操作,并行方式包括pragma omp simd(是OpenMP中的一个指令)和pragma omp parallel for(是OpenMP中的一个指令),可提高算法中循环的执行效率。
步骤123、调用第二高斯误差线性单元。从动态库文件获取第二高斯误差线性单元,以实现第二高斯误差线性单元的执行。
在第二高斯误差线性单元的实现方式中,更具体地,如图5所示,步骤122包括:
步骤1221、判断获取硬件环境的具体指令集类型,若指令集类型为AVX或AVX2,则执行步骤1222;若指令集类型为AVX512,则执行步骤1223。
硬件环境的指令集类型包括AVX、AVX2或AVX512中的至少一种;
步骤1222、调用_mm256指令集对应的Intrinsic指令集实现第二高斯误差线性单元。
前缀_mm表示表示硬件环境的指令集对应的Intrinsic函数。前缀_mm256代表AVX或AVX2对应的Intrinsic指令集,_mm512代表AVX512指令集的对应的Intrinsic函数。
使用_mm256前缀的函数,处理数据时每次循环移动8位。
首先_mm256_set1_ps初始化参数,然后使用_mm256_load_ps来加载数据,通过_mm256_div_ps、_mm256_erf_ps、_mm256_mul_ps等函数来实现相关的运算,_mm256_store_ps来保存数据,相关的运算分别对应实现公式
Figure BDA0002809407550000081
中的四则运算和erf函数。
步骤1223、调用_mm512指令集对应的Intrinsic指令集实现第二高斯误差线性单元。
对于AVX512平台来说,使用前缀_mm512的,每次循环移函数,数据每次移动16位。
首先_mm512_set1_ps初始化参数,然后使用_mm512_load_ps来加载数据,通过_mm512_div_ps、_mm512_erf_ps、_mm512_mul_ps等函数来实现公式
Figure BDA0002809407550000082
中的四则运算和erf函数相关的运算,_mm512_store_ps用来保存结果数据。
对于两种方式来说,不够整除的数据位数,则使用C++(一种编程语言)方式直接实现,此方式为本领域技术人员常用的方法,在此不作赘述。
本实施例提供了一种针对不同维度的输入数据和不同硬件环境指令集平台上实现gelu函数最佳性能的自适应方法,从而保证针对不同维数的自然语言输入数据在不同硬件环境指令集平台上的运行时间最短,性能最优。
实施例3
本实施例提供一种高斯误差线性单元的优化系统,如图6所示,优化系统包括接收模块21、调用模块22。
接收模块21用于接收自然语言处理的输入数据。
调用模块22用于以输入数据为输入参数,调用第一高斯误差线性单元或者第二高斯误差线性单元。
第一高斯误差线性单元用于使用mkl数学库中vsErf接口函数和mkl数学库中的四则运算接口函数分别代替基于python的BERT模型中的高斯误差线性单元的erf函数和四则运算接口函数;
第二高斯误差线性单元用于使用Intrinsic指令集中erf接口函数和Intrinsic指令集中的四则运算接口函数分别代替基于python的BERT模型中的高斯误差线性单元的erf函数和四则运算接口函数。
本实施例实现了在利用BERT模型处理自然语言数据时,对自然语言输入数据处理时通过调用mkl数学库中vsErf接口函数和mkl数学库中的四则运算接口函数分别代替原来高斯误差线性单元中python数学库中的自带的erf函数和四则运算接口函数;或者调用Intrinsic指令集中erf接口函数和Intrinsic指令集中的四则运算接口函数分别代替原来高斯误差线性单元中基于python数学库中的自带的erf函数和四则运算接口函数,以实现高斯误差线性单元的功能。经过对大量自然语言输入数据进行实验后证明,新的高斯误差线性单元占用时长大大减少,计算效率明显提高,从而进一步增强了BERT模型的性能。
实施例4
本实施例提供一种高斯误差线性单元的优化系统,本实施例与实施例3相比,其区别在于,如图7所示,高斯误差线性单元的优化系统还包括编译模块23、引用模块24和判断模块25。
编译模块23用于编译第一高斯误差线性单元或第二高斯误差线性单元至动态库文件。
在实际使用时,为实现程序中第一高斯误差线性单元或者第二高斯误差线性单元的调用,首先要完成库文件的建立。
引用模块24用于引用动态库文件,并调用接收模块21。
判断模块25用于判断输入数据的维度是否在一预设阈值范围内,若是,则调用第一高斯误差线性单元;若否,则调用第二高斯误差线性单元。
在深度学习计算中,自然语言处理的输入数据的矩阵往往维度各异,有些维度较小,有些维度较大,不同维度的矩阵对于不同函数实现来说性能有所差异,因此为了针对不同维度的输入矩阵取得最佳性能,在本实施例中,通过对大量自然语言处理的不同维数的输入数据进行测试,第二高斯误差线性单元采用Intrinsic指令集中的erf接口函数和Intrinsic指令集中的四则运算接口函数,称为intrinsic方式,第一高斯误差线性单元的方式称为mkl方式,假设自然语言输入数据的矩阵数据的行值为16384,如图4所示,选择列维度在256~8129之间的数据(图中纵坐标),横坐标表示intrinsic方式或mkl方式的处理时长,单位为毫秒(ms),在AVX2硬件平台上实现的函数分别处理不同列维度的输入数据的时长区别,可以看出随着输入数据列维度增加,intrinsic方式会优于mkl方式。在AVX512平台上执行结果跟AVX2的趋势一致,不再给出具体实验数据。所以在本实施例中,预设自然语言处理的输入数据的维度的阈值范围为小于512。
调用模块22用于从动态库文件获取第一高斯误差线性单元或者第二高斯误差线性单元,以执行第一高斯误差线性单元或者第二高斯误差线性单元。
在第一高斯误差线性单元的实现方式中,使用OpenMP实现多线程并行和向量化优化操作,并行方式包括pragma omp simd和pragma omp parallel for,可提高算法中循环的执行效率。
在第二高斯误差线性单元的实现方式中,更具体地,判断模块用于判断获取硬件环境的具体指令集类型,若指令集类型为AVX或AVX2,则调用_mm256指令集对应的Intrinsic指令集实现第二高斯误差线性单元;若指令集类型为AVX512,则调用_mm512指令集对应的Intrinsic指令集实现第二高斯误差线性单元。本实施例中的硬件环境的指令集类型包括AVX、AVX2或AVX512中的至少一种。
前缀_mm表示表示硬件环境的指令集对应的Intrinsic函数。前缀_mm256代表AVX或AVX2对应的Intrinsic指令集、_mm512代表AVX512指令集的对应的Intrinsic函数。
使用_mm256前缀的函数,处理数据时每次循环移动8位。
在第二高斯误差线性单元中,利用_mm256_set1_ps初始化参数,然后使用_mm256_load_ps来加载数据,通过_mm256_div_ps、_mm256_erf_ps、_mm256_mul_ps等函数来实现相关的运算,_mm256_store_ps来保存数据,相关的运算分别对应实现公式
Figure BDA0002809407550000111
中的四则运算和erf函数。
对于两种高斯误差线性单元的实现方式来说,不够整除的数据位数,则使用C++(一种编程语言)方式直接实现,此方式为本领域技术人员常用的方法,在此不作赘述。
本实施例提供了一种针对不同维度的输入数据和不同指令集平台上实现gelu函数最佳性能的自适应系统,从而保证针对不同维数的输入数据在不同指令集平台上的运行时间最短,性能最优。
实施例5
图8为本发明实施例5提供的一种电子设备的结构示意图。电子设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行所述程序时实现实施例1或实施例2的高斯误差线性单元的优化方法。图8显示的电子设备30仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图8所示,电子设备30可以以通用计算设备的形式表现,例如其可以为服务器设备。电子设备30的组件可以包括但不限于:上述至少一个处理器31、上述至少一个存储器32、连接不同系统组件(包括存储器32和处理器31)的总线33。
总线33包括数据总线、地址总线和控制总线。
存储器32可以包括易失性存储器,例如随机存取存储器(RAM)321和/或高速缓存存储器322,还可以进一步包括只读存储器(ROM)323。
存储器32还可以包括具有一组(至少一个)程序模块324的程序/实用工具325,这样的程序模块324包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
处理器31通过运行存储在存储器32中的计算机程序,从而执行各种功能应用以及数据处理,例如本发明实施例1或实施例2所提供的高斯误差线性单元的优化方法。
电子设备30也可以与一个或多个外部设备34(例如键盘、指向设备等)通信。这种通信可以通过输入/输出(I/O)接口35进行。并且,模型生成的设备30还可以通过网络适配器36与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器36通过总线33与模型生成的设备30的其它模块通信。应当明白,尽管图中未示出,可以结合模型生成的设备30使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理器、外部磁盘驱动阵列、RAID(磁盘阵列)系统、磁带驱动器以及数据备份存储系统等。
应当注意,尽管在上文详细描述中提及了电子设备的若干单元/模块或子单元/模块,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多单元/模块的特征和功能可以在一个单元/模块中具体化。反之,上文描述的一个单元/模块的特征和功能可以进一步划分为由多个单元/模块来具体化。
实施例6
本实施例提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现实施例1或实施例2所提供的高斯误差线性单元的优化方法的步骤。
其中,可读存储介质可以采用的更具体可以包括但不限于:便携式盘、硬盘、随机存取存储器、只读存储器、可擦拭可编程只读存储器、光存储器件、磁存储器件或上述的任意合适的组合。
在可能的实施方式中,本发明还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在终端设备上运行时,所述程序代码用于使所述终端设备执行实现实施例1或实施例2所述的高斯误差线性单元的优化方法中的步骤。
其中,可以以一种或多种程序设计语言的任意组合来编写用于执行本发明的程序代码,所述程序代码可以完全地在用户设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户设备上部分在远程设备上执行或完全在远程设备上执行。
虽然以上描述了本发明的具体实施方式,但是本领域的技术人员应当理解,这仅是举例说明,本发明的保护范围是由所附权利要求书限定的。本领域的技术人员在不背离本发明的原理和实质的前提下,可以对这些实施方式做出多种变更或修改,但这些变更和修改均落入本发明的保护范围。

Claims (12)

1.一种高斯误差线性单元的优化方法,其特征在于,所述优化方法包括:
接收自然语言处理的输入数据;
以所述输入数据为输入参数,调用第一高斯误差线性单元或者第二高斯误差线性单元;
所述第一高斯误差线性单元的实现方式为:
使用mkl数学库中vsErf接口函数和所述mkl数学库中的四则运算接口函数分别代替基于python的BERT模型中的高斯误差线性单元的erf函数和四则运算接口函数;
所述第二高斯误差线性单元的实现方式为:
使用Intrinsic指令集中erf接口函数和所述Intrinsic指令集中的四则运算接口函数分别代替基于python的BERT模型中的高斯误差线性单元的erf函数和四则运算接口函数。
2.如权利要求1所述的高斯误差线性单元的优化方法,其特征在于,在所述接收自然语言处理的输入数据的步骤之后还包括:
判断所述输入数据的维度是否在一预设阈值范围内,若是,则调用所述第一高斯误差线性单元;若否,则调用所述第二高斯误差线性单元。
3.如权利要求2所述的高斯误差线性单元的优化方法,其特征在于,所述预设阈值范围为小于512。
4.如权利要求2所述的高斯误差线性单元的优化方法,其特征在于,调用所述第二高斯误差线性单元的步骤包括:
获取硬件环境的指令集类型,所述硬件环境的指令集类型包括AVX、AVX2或AVX512中的至少一种;
若所述指令集类型为AVX或AVX2,则调用_mm256指令集对应的所述Intrinsic指令集实现所述第二高斯误差线性单元;若所述指令集类型为AVX512,则调用_mm512指令集对应的所述Intrinsic指令集实现所述第二高斯误差线性单元。
5.如权利要求1所述的高斯误差线性单元的优化方法,其特征在于,所述调用第一高斯误差线性单元或者第二高斯误差线性单元的步骤之前包括:
编译所述第一高斯误差线性单元或所述第二高斯误差线性单元至动态库文件;
引用所述动态库文件;
所述调用第一高斯误差线性单元或者第二高斯误差线性单元的步骤包括:
从所述动态库文件获取所述第一高斯误差线性单元或者所述第二高斯误差线性单元;
执行所述第一高斯误差线性单元或者所述第二高斯误差线性单元。
6.一种高斯误差线性单元的优化系统,其特征在于,所述优化系统包括接收模块、调用模块;
所述接收模块用于接收自然语言处理的输入数据;
所述调用模块用于以所述输入数据为输入参数,调用第一高斯误差线性单元或者第二高斯误差线性单元;
所述第一高斯误差线性单元用于使用mkl数学库中vsErf接口函数和所述mkl数学库中的四则运算接口函数分别代替基于python的BERT模型中的高斯误差线性单元的erf函数和四则运算接口函数;
所述第二高斯误差线性单元用于使用Intrinsic指令集中erf接口函数和所述Intrinsic指令集中的四则运算接口函数分别代替基于python的BERT模型中的高斯误差线性单元的erf函数和四则运算接口函数。
7.如权利要求6所述的高斯误差线性单元的优化系统,其特征在于,所述高斯误差线性单元的优化系统还包括判断模块;
所述判断模块用于判断所述输入数据的维度是否在一预设阈值范围内,若是,则调用所述第一高斯误差线性单元;若否,则调用所述第二高斯误差线性单元。
8.如权利要求7所述的高斯误差线性单元的优化系统,其特征在于,所述预设阈值范围为小于512。
9.如权利要求7所述的高斯误差线性单元的优化系统,其特征在于,所述第二高斯误差线性单元用于获取硬件环境的指令集类型,所述硬件环境的指令集类型包括AVX、AVX2或AVX512中的至少一种;若所述指令集类型为AVX或AVX2,则调用_mm256指令集对应的所述Intrinsic指令集实现所述第二高斯误差线性单元;若所述指令集类型为AVX512,则调用_mm512指令集对应的所述Intrinsic指令集实现所述第二高斯误差线性单元。
10.如权利要求6所述的高斯误差线性单元的优化系统,其特征在于,所述高斯误差线性单元的优化系统还包括编译模块和引用模块;
所述编译模块用于编译所述第一高斯误差线性单元或所述第二高斯误差线性单元至动态库文件;
所述引用模块用于引用所述动态库文件;
所述调用模块用于从所述动态库文件获取所述第一高斯误差线性单元或者所述第二高斯误差线性单元,并执行所述第一高斯误差线性单元或者所述第二高斯误差线性单元。
11.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1-5中任一项所述的高斯误差线性单元的优化方法。
12.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-5中任一项所述的高斯误差线性单元的优化方法的步骤。
CN202011385025.XA 2020-12-01 2020-12-01 高斯误差线性单元的优化方法、系统、设备及介质 Active CN112433761B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011385025.XA CN112433761B (zh) 2020-12-01 2020-12-01 高斯误差线性单元的优化方法、系统、设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011385025.XA CN112433761B (zh) 2020-12-01 2020-12-01 高斯误差线性单元的优化方法、系统、设备及介质

Publications (2)

Publication Number Publication Date
CN112433761A true CN112433761A (zh) 2021-03-02
CN112433761B CN112433761B (zh) 2022-06-10

Family

ID=74698172

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011385025.XA Active CN112433761B (zh) 2020-12-01 2020-12-01 高斯误差线性单元的优化方法、系统、设备及介质

Country Status (1)

Country Link
CN (1) CN112433761B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114820329A (zh) * 2022-07-01 2022-07-29 之江实验室 基于高斯过程大核注意力装置引导的曲面测量方法及装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160034811A1 (en) * 2014-07-31 2016-02-04 Apple Inc. Efficient generation of complementary acoustic models for performing automatic speech recognition system combination
CN106682732A (zh) * 2016-12-14 2017-05-17 浙江大学 一种应用于神经网络的高斯误差函数电路
CN111368536A (zh) * 2018-12-07 2020-07-03 北京三星通信技术研究有限公司 自然语言处理方法及其设备和存储介质
CN111428044A (zh) * 2020-03-06 2020-07-17 中国平安人寿保险股份有限公司 多模态获取监管识别结果的方法、装置、设备及存储介质
CN111768001A (zh) * 2020-06-30 2020-10-13 平安国际智慧城市科技股份有限公司 语言模型的训练方法、装置和计算机设备

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160034811A1 (en) * 2014-07-31 2016-02-04 Apple Inc. Efficient generation of complementary acoustic models for performing automatic speech recognition system combination
CN106682732A (zh) * 2016-12-14 2017-05-17 浙江大学 一种应用于神经网络的高斯误差函数电路
CN111368536A (zh) * 2018-12-07 2020-07-03 北京三星通信技术研究有限公司 自然语言处理方法及其设备和存储介质
CN111428044A (zh) * 2020-03-06 2020-07-17 中国平安人寿保险股份有限公司 多模态获取监管识别结果的方法、装置、设备及存储介质
CN111768001A (zh) * 2020-06-30 2020-10-13 平安国际智慧城市科技股份有限公司 语言模型的训练方法、装置和计算机设备

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
徐菲菲 等: "文本词向量与预训练语言模型研究", 《上海电力大学学报》 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114820329A (zh) * 2022-07-01 2022-07-29 之江实验室 基于高斯过程大核注意力装置引导的曲面测量方法及装置

Also Published As

Publication number Publication date
CN112433761B (zh) 2022-06-10

Similar Documents

Publication Publication Date Title
CN1197003C (zh) 将异常作为正常控制流进行处理的方法和装置
US20150113512A1 (en) Speculative object representation
US9372678B2 (en) Compiler optimization for complex exponential calculations
US8464230B2 (en) Methods and systems to implement non-ABI conforming features across unseen interfaces
WO2021057807A1 (zh) 深度学习模型生成方法、装置、设备及存储介质
CN111666077B (zh) 算子处理方法、装置、电子设备及存储介质
US20240201968A1 (en) Program compilation method and apparatus
CN112433761B (zh) 高斯误差线性单元的优化方法、系统、设备及介质
US20180373510A1 (en) Method of compiling a program
CN117472388B (zh) 一种优化程序性能的方法、系统及相关设备
US20060010432A1 (en) Program and apparatus for translating language, and program converting method
EP2913758A1 (en) Loop abstraction for model checking
KR20230084103A (ko) 트랜스포머 기반 생성 작업들에 대한 추론 시스템을 위한 선택적 배칭
CN111552478B (zh) 用于生成cuda程序的设备、方法和存储介质
CN113031952B (zh) 深度学习模型的执行代码的确定方法、装置及存储介质
US20180181404A1 (en) Generating vector based selection control statements
CN111913712A (zh) 用于在Web端部署神经网络模型的方法和装置
CN113031962B (zh) 编译方法、编译装置、电子设备、存储介质和程序产品
CN118092887B (zh) 一种Wasm指令集生成方法、装置、终端及存储介质
Colin et al. PYTHIA: an oracle to guide runtime system decisions
JP6898556B2 (ja) 情報処理装置、コンパイル方法及びコンパイルプログラム
US20220405204A1 (en) Computer-readable recording medium storing data placement program, processor, and data placement method
CN117762349A (zh) 算子访存性能的优化方法、装置、电子设备及存储介质
CN117055900A (zh) 模型训练方法、算子编译方法、装置、设备和存储介质
CN111488140A (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