CN114626516A - 一种基于对数块浮点量化的神经网络加速系统 - Google Patents

一种基于对数块浮点量化的神经网络加速系统 Download PDF

Info

Publication number
CN114626516A
CN114626516A CN202210300275.1A CN202210300275A CN114626516A CN 114626516 A CN114626516 A CN 114626516A CN 202210300275 A CN202210300275 A CN 202210300275A CN 114626516 A CN114626516 A CN 114626516A
Authority
CN
China
Prior art keywords
block
quantization
data
floating point
value
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.)
Pending
Application number
CN202210300275.1A
Other languages
English (en)
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.)
Nanjing University
Original Assignee
Nanjing University
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 Nanjing University filed Critical Nanjing University
Priority to CN202210300275.1A priority Critical patent/CN114626516A/zh
Publication of CN114626516A publication Critical patent/CN114626516A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • 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/30025Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

本申请提供一种基于对数块浮点量化的神经网络加速系统。所述系统包括编译器、运行时和神经网络加速器,在使用时,编译器按照量化分块粒度对待部署模型数据进行分块,并将待部署模型全部转换为硬件指令,通过运行时与神经网络加速器进行交互,神经网络加速器根据指令将数据按照搬运分块粒度从片外分块搬运至片上进行加载,并对各个数据量化分块进行对数块浮点量化,最终利用量化结果执行对应的神经网络运算。整个系统通过编译器将模型转换为硬件可以识别的指令,由运行时向硬件下发指令和数据并与硬件进行高效通信,同时采用完全适配于对数块浮点量化方法的硬件架构,计算冗余较少,计算效率较高,可以有效地支持深度神经网络模型的端到端部署。

Description

一种基于对数块浮点量化的神经网络加速系统
技术领域
本申请涉及计算机技术领域,特别涉及一种基于对数块浮点量化的神经网络加速系统。
背景技术
深度神经网络模型目前已被广泛应用于各种任务中,如自然语言处理、图像处理等,但是深度神经网络模型所包含的层数较多,且计算多为大规模的矩阵乘法运算和向量运算,因此计算量以及参数量都十分庞大,这会导致深度神经网络模型在运行过程中需要占用大量存储空间,并对算力要求较高,而端侧设备难以满足以上两个要求,因而限制了深度神经网络模型在端侧设备上的部署。
为了实现深度神经网络模型在端侧设备上的部署,目前可以采用对深度神经网络模型的数据进行对数块浮点量化压缩,并采用领域通用硬件架构来代替端侧设备上的CPU(或GPU)执行深度神经网络模型的推理过程的方法。
这种方法虽然可以减小模型参数的大小,而且量化精度损失较低,但是由于缺乏适配于该量化方法的硬件架构,因此领域通用硬件架构的计算中仍然存在较多冗余,从而计算效率较低,进而使得深度神经网络模型的端到端部署仍然较为困难。
发明内容
本申请提供了一种基于对数块浮点量化的神经网络加速系统,可用于解决现有技术中领域通用硬件架构的计算效率较低,深度神经网络模型的端到端部署仍然较为困难的技术问题。
为了解决上述技术问题,本申请实施例公开了如下技术方案:
一种基于对数块浮点量化的神经网络加速系统,包括依次连接的编译器、运行时和神经网络加速器,所述神经网络加速器包括控制单元、转换单元,以及依次连接的张量DMA、片上缓存单元和计算单元,其中:
所述编译器被配置为执行以下步骤:
按照预设的量化分块粒度对待部署模型数据进行分块,得到多个数据量化分块,所述待部署模型数据包括待部署模型的权重值和当前激活值,所述当前激活值包括当前输入值和当前输出激活值;
将所述待部署模型转换为供所述神经网络加速器识别的多个硬件指令,多个硬件指令包括访存指令和计算指令,所述访存指令用于指示所述张量DMA通过所述运行时按照搬运分块粒度,将各个数据量化分块从片外存储中分块搬运至所述片上缓存单元进行加载,以及从所述片上缓存单元中搬运至片外存储中进行存储,所述搬运分块粒度为所述量化分块粒度的整数倍,所述计算指令用于指示所述控制单元向所述计算单元和所述转换单元分配计算数据和数据转换方式;
所述控制单元被配置为执行以下步骤:
控制所述张量DMA按照所述访存指令,将各个数据量化分块按所述搬运分块粒度从片外存储中分块搬运至所述片上缓存单元进行加载,以及从所述片上缓存单元中搬运至片外存储中进行存储;
控制所述转换单元根据各个数据量化分块的块浮点共享指数,对所述片上缓存单元中的各个数据量化分块进行对数块浮点量化,其中,各个数据量化分块中的权重值量化分块的块浮点共享指数为所述编译器根据所述权重值量化分块中所有权重元素预先确定的,各个数据量化分块中的当前激活值量化分块的块浮点共享指数为所述编译器根据预先获取的激活值样本集中所有元素离线确定的,或者为所述转换单元根据所述当前激活值量化分块中所有元素在线确定的;
控制所述计算单元根据各个数据量化分块的对数块浮点量化结果,执行计算密集型算子的计算以及访存密集型算子的计算。
在一种可实现方式中,所述量化分块粒度通过以下方式设置:
根据预设的最大量化误差或者预设的量化信噪比,确定基本分块粒度;
根据所述基本分块粒度以及预设分块倍数,确定量化分块粒度。
在一种可实现方式中,所述搬运分块粒度通过以下方式设置:
根据权重值搬运分块的搬运次数、当前输入值搬运分块的搬运次数、当前输出激活值搬运分块的搬运次数、权重值搬运分块所占有的片上存储量、当前输入值搬运分块所占有的片上存储量以及当前输出激活值搬运分块所占有的片上存储量,确定总片外数据传输量,所述权重值搬运分块根据所述权重值量化分块以及第一整数倍确定,所述当前输入值搬运分块根据各个数据量化分块中的当前输入值量化分块以及第二整数倍确定,所述当前输出激活值搬运分块根据各个数据量化分块中的当前输出激活值量化分块以及第三整数倍确定;
从各个总片外数据传输量中,按照约束条件搜索确定最小总片外数据传输量,所述约束条件为所述权重值搬运分块、所述当前输入值搬运分块和所述当前输出激活值搬运分块各自所占有的片上存储量小于或等于各自对应的允许片上总缓存量;
获取所述最小总片外数据传输量所对应的目标权重值搬运分块的大小、目标当前输入值搬运分块的大小和目标当前输出激活值搬运分块的大小;
将所述目标权重值搬运分块的大小、所述目标当前输入值搬运分块的大小和所述目标当前输出激活值搬运分块的大小,确定为所述搬运分块粒度。
在一种可实现方式中,所述各个数据量化分块中的权重值量化分块的块浮点共享指数通过以下方式确定:
将各个数据量化分块中的权重值量化分块中各个权重元素转换为浮点数形式;
针对每个权重值量化分块,获取绝对值最大的权重元素所对应的指数值;
将绝对值最大的权重元素所对应的指数值,确定为所述权重值量化分块的块浮点共享指数。
在一种可实现方式中,所述各个数据量化分块中的当前激活值量化分块的块浮点共享指数通过以下方式确定:
确定量化的执行模式,所述量化的执行模式包括离线量化模式和在线量化模式;
在所述离线量化模式下,获取所述激活值样本集中所有元素所对应的原始概率分布;
获取所述激活值样本集中所有元素在不同共享指数的量化分块方案下所对应的各个量化后概率分布;
确定所述原始概率分布与每个量化后概率分布的KL散度;
将最小KL散度所对应的共享指数,确定为当前激活值量化分块的块浮点共享指数;
或者,在所述在线量化模式下,将当前激活值量化分块中所有元素转换为浮点数形式;
针对每个当前激活值量化分块,获取绝对值最大的当前激活值元素所对应的指数值;
将绝对值最大的当前激活值元素所对应的指数值,确定为所述当前激活值量化分块的块浮点共享指数。
在一种可实现方式中,所述确定所述原始概率分布与每个量化后概率分布的KL散度,包括:
通过以下公式确定所述原始概率分布与每个量化后概率分布的KL散度:
Figure BDA0003562619720000031
其中,KL(p||q)为所述原始概率分布与任一量化后概率分布的KL散度,p(x)为所述原始概率分布,q(x)为任一量化后概率分布。
在一种可实现方式中,所述根据各个数据量化分块的块浮点共享指数,对所述片上缓存单元中的各个数据量化分块进行对数块浮点量化,包括:
根据各个数据量化分块的块浮点共享指数,确定所述片上缓存单元中的各个数据量化分块的最终块浮点表示;
将各个数据量化分块中每个元素的尾数转换为对数表示。
在一种可实现方式中,所述根据各个数据量化分块的块浮点共享指数,确定所述片上缓存单元中的各个数据量化分块的最终块浮点表示,包括:
通过以下公式确定所述片上缓存单元中的各个数据量化分块的最终块浮点表示:
Figure BDA0003562619720000032
其中,Vb为所述片上缓存单元中的任一数据量化分块,vbi为数据量化分块中的第i个元素,Mbv为数据量化分块中各元素的尾数表示组成的数据块,∈v为数据量化分块的块浮点共享指数,si为数据量化分块中单个元素的正负符号,mbi为数据量化分块中单个元素的尾数。
在一种可实现方式中,所述计算单元包括输入前处理模块、输出后处理模块、对数块浮点矩阵乘法计算模块、向量计算模块和访存索引生成器,所述对数块浮点矩阵乘法计算模块和所述向量计算模块均分别与所述输入前处理模块、所述输出后处理模块以及所述访存索引生成器连接;
所述输入前处理模块,用于在线获取各个数据量化分块的对数块浮点量化结果;
所述对数块浮点矩阵乘法计算模块,用于按照所述访存索引生成器生成的计算顺序,根据各个数据量化分块的对数块浮点量化结果执行计算密集型算子的计算,并将结果输出至所述输出后处理模块;
所述向量计算模块,用于按照所述访存索引生成器生成的计算顺序,根据各个数据量化分块的对数块浮点量化结果执行访存密集型算子的计算,并将结果输出至所述输出后处理模块;
所述输出后处理模块,用于完成激活计算,并将结果输出至所述片上缓存单元。
在一种可实现方式中,所述神经网络加速器还包括与所述运行时连接的中断控制单元和寄存器组,所述寄存器组包括控制寄存器、配置寄存器、地址寄存器和状态寄存器;
所述中断控制单元,用于通知所述运行时计算结束或者发生异常情况;
所述控制寄存器,用于控制所述神经网络加速器进行计算启动或者复位重置;
所述配置寄存器,用于存储各个模块的可配置功能信息;
所述地址寄存器,用于确定访存的基地址;
所述状态寄存器,用于对所述神经网络加速器的运行状态进行统计,并将统计结果发送给所述运行时。
如此,本申请实施例提供的基于对数块浮点量化的神经网络加速系统,包括编译器、运行时和神经网络加速器,在使用时,编译器按照量化分块粒度对待部署模型数据进行分块,并将待部署模型全部转换为硬件指令,通过运行时与神经网络加速器进行交互,神经网络加速器根据指令将数据按照搬运分块粒度从片外存储中分块搬运至片上进行加载,并对各个数据量化分块进行对数块浮点量化,最终利用对数块浮点量化结果,执行对应的神经网络运算。整个系统通过编译器将模型转换为硬件可以识别的指令,由运行时向硬件下发指令和数据以及与硬件进行高效通信,并且采用完全适配于对数块浮点量化方法的硬件架构,计算中冗余较少,从而计算效率较高,可以有效地支持深度神经网络模型的端到端部署。
附图说明
图1为本申请实施例提供的一种基于对数块浮点量化的神经网络加速系统的结构示意图;
图2为本申请实施例提供的对数块浮点的整体表示形式示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
为了提高加速硬件架构的计算效率,实现深度神经网络模型的端到端部署,本申请实施例提供了一种基于对数块浮点量化的神经网络加速系统,具体实现主要包括硬件层面(比如神经网络加速加速器)以及软件层面(比如模型量化算法、编译器、运行时和指令集定义)。图1示例性示出了本申请实施例提供的一种基于对数块浮点量化的神经网络加速系统的结构示意图,如图1所示,本申请实施例提供的神经网络加速系统具体包括依次连接的编译器1、运行时2和神经网络加速器3,神经网络加速器3包括控制单元31、转换单元32,以及依次连接的张量DMA(Direct Memory Access,直接存储器访问)33、片上缓存单元34和计算单元35。
下面对本申请实施例提供的编译器1进行说明。
编译器1被配置为执行以下步骤一和步骤二:
步骤一,按照预设的量化分块粒度对待部署模型数据进行分块,得到多个数据量化分块。
其中,待部署模型为深度神经网络模型,待部署模型数据包括待部署模型的权重值和当前激活值,当前激活值包括当前输入值和当前输出激活值。
具体地,当前输入值为待部署模型中各个网络层的当前输入值,也就是说,模型的初始输入也包含在当前输入值中。当前输出激活值为待部署模型中各个网络层的当前输出激活值。
在一些实施例中,量化分块粒度可以通过以下方式设置:
根据预设的最大量化误差或者预设的量化信噪比,确定基本分块粒度。
根据基本分块粒度以及预设分块倍数,确定量化分块粒度。
其中,基本分块粒度包括权重值分块粒度、当前输入值分块粒度和当前输出激活值分块粒度,对应的,量化分块粒度包括权重值量化分块粒度、当前输入值量化分块粒度和当前输出激活值量化分块粒度。每个分块粒度对应的分块倍数可以相同,也可以不同。
如此,采用上述分块方式,可以尽可能降低量化对模型精度的影响,并且保证计算密集型算子的片上缓存加载和存储时间短于计算时间,而访存密集型算子有尽可能高的片上缓存利用率,保持尽可能大的分块以最大化外部存储访问带宽效率。
在其他可能的实施例中,量化分块粒度也可以任意指定,比如权重值分块粒度为3×3,当前输入值分块粒度为4×4,当前输出激活值分块粒度为2×2,具体不作限定。
编译器1在对待部署模型数据进行分块后,对每个数据量化分块进行量化。量化方式采用对数块浮点量化,编译器1首先需要确定每个数据量化分块的块浮点共享指数。
针对各个数据量化分块中的权重值量化分块,通过以下方式确定块浮点共享指数:
首先,将各个数据量化分块中的权重值量化分块中各个权重元素转换为浮点数形式。
常规的浮点数由符号位、指数位和尾数位组成。
具体可以通过公式(1)表示权重值量化分块中所有权重元素的浮点数形式:
Figure BDA0003562619720000051
公式(1)中,V为权重值量化分块,vi为权重值量化分块中的第i个权重元素,N为所有权重元素的数量,si为第i个权重元素的正负符号,mi为第i个权重元素的尾数,ei为第i个权重元素的指数值。
然后,针对每个权重值量化分块,获取绝对值最大的权重元素所对应的指数值。
最后,将绝对值最大的权重元素所对应的指数值,确定为权重值量化分块的块浮点共享指数。
针对各个数据量化分块中的当前激活值量化分块,通过以下步骤确定块浮点共享指数:
第一步,确定量化的执行模式。其中,量化的执行模式包括离线量化模式和在线量化模式。如果量化的执行模式为离线量化模式,则由编译器1继续执行第二步,如果量化的执行模式为在线量化模式,则转由转换单元32执行第六步。
第二步,在离线量化模式下,获取激活值样本集中所有元素所对应的原始概率分布。
其中,激活值样本集由初始输入值以及前向传播过程中各层输出激活值所组成,可以通过预先存储的样本集获取。原始概率分布是根据激活值样本集中的数据通过直方图统计得到的。
特别地,对数块浮点量化无需训练过程,即不需要反向传播对量化参数进行优化调整,只需收集前向传播过程中最大值,最小值以及直方图统计量,以此来确定最大绝对值的指数值emax
第三步,获取激活值样本集中所有元素在不同共享指数的量化分块方案下所对应的各个量化后概率分布。
其中,各个共享指数可以在小于emax的范围内搜索。量化后概率分布是根据量化后数据通过直方图统计得到的。
第四步,确定原始概率分布与每个量化后概率分布的KL散度。
具体地,可以通过公式(2)确定原始概率分布与每个量化后概率分布的KL散度:
Figure BDA0003562619720000061
公式(2)中,KL(p||q)为原始概率分布与任一量化后概率分布的KL散度,p(x)为原始概率分布,q(x)为任一量化后概率分布。
第五步,将最小KL散度所对应的共享指数,确定为当前激活值量化分块的块浮点共享指数。
需要说明的是,确定当前激活值量化分块的块浮点共享指数的第一步至第五步,是由编译器1执行。
第六步,在在线量化模式下,将当前激活值量化分块中所有元素转换为浮点数形式。
第七步,针对每个当前激活值量化分块,获取绝对值最大的当前激活值元素所对应的指数值。
第八步,将绝对值最大的当前激活值元素所对应的指数值,确定为当前激活值量化分块的块浮点共享指数。
第六步至第八步所对应的方案,与确定权重值量化分块的块浮点共享指数的方案相同,只是处理对象由权重值量化分块中所有权重元素变为当前激活值量化分块中所有元素,具体方案可参照权重值量化分块的块浮点共享指数的确定方案,此处不再赘述。
需要说明的是,确定当前激活值量化分块的块浮点共享指数的第六步至第八步,是由转换单元32执行。
还需要说明的是,由于当前激活值量化分块包括当前输入值量化分块和当前输出激活值量化分块,因此确定当前激活值量化分块的块浮点共享指数,其实是分别确定当前输入值量化分块的块浮点共享指数和当前输出激活值量化分块的块浮点共享指数,由于确定当前输入值量化分块的块浮点共享指数和当前输出激活值量化分块的块浮点共享指数的方式相同,因此未再分开进行说明,而是统一为确定当前激活值量化分块的块浮点共享指数进行介绍,也就是说,确定当前激活值量化分块的块浮点共享指数的方法可以应用于确定当前输入值量化分块的块浮点共享指数,以及应用于确定当前输出激活值量化分块的块浮点共享指数。
步骤二,将待部署模型转换为供神经网络加速器3识别的多个硬件指令。
其中,多个硬件指令包括访存指令和计算指令,访存指令用于指示张量DMA33通过运行时2按照搬运分块粒度,将各个数据量化分块从片外存储中分块搬运至片上缓存单元34进行加载,以及从片上缓存单元34中搬运至片外存储中进行存储,搬运分块粒度为量化分块粒度的整数倍,计算指令用于指示控制单元31向计算单元35和转换单元32分配计算数据和数据转换方式。
具体地,待部署模型是以有向无环图形式表示的计算图,该计算图中每个节点为单独的算子,比如卷积、全连接层、Softmax层等。转换成硬件指令的对象还包括对数块浮点量化所对应的数据量化分块的块浮点共享指数之间的计算,待部署模型所涉及的所有参数、激活值的加载和存储过程、量化过程所涉及的计算以及其他需要指示后续神经网络加速器3执行的计算操作,均会被转换为对应的硬件指令。
硬件指令是指神经网络加速器可以识别的二进制指令,比如加法、矩阵乘法等。
在编译器1的实现上,首先基于高层次的中间表示来表示计算图,该中间表示中每个节点是一个单独的算子,高层次中间表示最终会降低到低层次的中间表示。低层次的中间表示接近于硬件指令,主要分为访存指令和计算指令。其中访存指令指明了数据搬运的源地址和目的地址,以及数据长度。计算指令指明了计算的操作类型,以及源操作数来源和结果存储位置。算子融合和量化参数计算基于高层次中间表示进行,此外,量化参数的计算结果由低层次中间表示实现。
在一些实施例中,搬运分块粒度可以通过以下方式设置:
第一步,根据权重值搬运分块的搬运次数、当前输入值搬运分块的搬运次数、当前输出激活值搬运分块的搬运次数、权重值搬运分块所占有的片上存储量、当前输入值搬运分块所占有的片上存储量以及当前输出激活值搬运分块所占有的片上存储量,确定总片外数据传输量。
其中,权重值搬运分块的搬运次数是根据待部署模型的权重值需要的复用次数以及权重值搬运分块大小确定的,当前输入值搬运分块的搬运次数是根据待部署模型的当前输入值需要的复用次数以及当前输入值搬运分块大小确定的,当前输出激活值搬运分块的搬运次数是根据待部署模型的当前输出激活值需要的复用次数以及当前输出激活值搬运分块大小确定的。
权重值搬运分块根据权重值量化分块以及第一整数倍确定,当前输入值搬运分块根据各个数据量化分块中的当前输入值量化分块以及第二整数倍确定,当前输出激活值搬运分块根据各个数据量化分块中的当前输出激活值量化分块以及第三整数倍确定。
权重值量化分块为按照权重值分块粒度对待部署模型的权重值进行分块后得到的,当前输入值量化分块为按照当前输入值分块粒度对待部署模型的当前输入值进行分块后得到的,当前输出激活值量化分块为按照当前输出激活值分块粒度对待部署模型的当前输出激活值进行分块后得到的。
第一整数倍、第二整数倍和第三整数倍可以相同,也可以不同。也就是说,搬运分块的分块粒度可以基于量化分块粒度构造或合并,但不允许更小的分块粒度分割,因此,最终的搬运分块需要为量化分块的整数倍。
具体地,可以通过公式(3)确定总片外数据传输量:
Mtotal=Mw+Mi+Ma=NwSw+NiSi+NaSa 公式(3)
公式(3)中,Mtotal为总片外数据传输量,Mw、Mi、Ma分别为权重值的片外数据传输量、当前输入值的片外数据传输量和当前输出激活值的片外数据传输量,Sw、Si、Sa分别为权重值搬运分块所占有的片上存储量、当前输入值搬运分块所占有的片上存储量和当前输出激活值搬运分块所占有的片上存储量,Nw、Ni、Na分别为权重值搬运分块的搬运次数、当前输入值搬运分块的搬运次数和当前输出激活值搬运分块的搬运次数。
第二步,从各个总片外数据传输量中,按照约束条件搜索确定最小总片外数据传输量。
其中,约束条件为权重值搬运分块、当前输入值搬运分块和当前输出激活值搬运分块各自所占有的片上存储量小于或等于各自对应的允许片上总缓存量。
具体地,可以通过公式(4)确定最小总片外数据传输量
min Mtotal=min Mw+Mi+Ma=min NwSw+NiSi+NaSa,公式(4)
Sw≤Cw,Si≤Ci,Sa≤Ca
公式(4)中,Mtotal为总片外数据传输量,Mw、Mi、Ma分别为权重值的片外数据传输量、当前输入值的片外数据传输量和当前输出激活值的片外数据传输量,Sw、Si、Sa分别为权重值搬运分块所占有的片上存储量、当前输入值搬运分块所占有的片上存储量和当前输出激活值搬运分块所占有的片上存储量,Nw、Ni、Na分别为权重值搬运分块的搬运次数、当前输入值搬运分块的搬运次数和当前输出激活值搬运分块的搬运次数,Cw、Ci、Ca分别为权重值搬运分块对应的允许片上总缓存量、当前输入值搬运分块对应的允许片上总缓存量和当前输出激活值搬运分块对应的允许片上总缓存量。
搜索的方法可以采用遍历搜索、贪心搜索或启发式搜索方式进行,具体不作限定。
第三步,获取最小总片外数据传输量所对应的目标权重值搬运分块的大小、目标当前输入值搬运分块的大小和目标当前输出激活值搬运分块的大小。
也就是说,获取公式(4)的等号左边值最小时的目标权重值搬运分块的大小、目标当前输入值搬运分块的大小和目标当前输出激活值搬运分块的大小。
第四步,将目标权重值搬运分块的大小、目标当前输入值搬运分块的大小和目标当前输出激活值搬运分块的大小,确定为搬运分块粒度。
采用上述实施例中方式确定搬运分块粒度,考虑了加速器的片上存储空间大小,并最小化片外存储数据传输,可以有效进行访存和计算的重叠,隐藏访存延时,进而数据搬运效率较高。
在其他可能的实施例中,搬运分块粒度也可以任意指定,具体不作限定。
编译器1在将待部署模型转换为供神经网络加速器3识别的多个硬件指令后,将这些硬件指令打包在可加载文件中。
采用上述编译器,对算子进行面向量化的融合,不仅可以减少算子的数量,进而减少额外的DDR(双倍速率同步动态随机存储器)访问和冗余计算,保证尽可能多的计算依赖于片上缓存,而且可以减少对量化敏感层的数量,将更多的层转换为高效的对数块浮点计算,由于面向量化的算子融合是将线性计算层融合进入计算密集型层中,从而避免了高精度线性层系数量化后的计算精度损失,此外,编译器还可以端到端地完成模型到硬件指令的转换过程,并形成可以与硬件交互的指令序列。
下面对本申请实施例提供的运行时2进行说明。
运行时2可以解析编译器1生成的可加载文件中的指令序列以及存储分区,并完成与神经网络加速器3之间的通信和数据传输,向神经网络加速器3卸载任务。因此,运行时2负责与硬件的交互,在运行时2调度规划上,由神经网络加速器3支持双缓存,这可以使得一部分用于与外部存储的数据交互,另一部分用于神经网络加速器3内部各计算模块执行运算,达到计算和存储的重叠以隐藏访存延时。
具体地,运行时2用于将计算指令和访存指令通过PCIe(peripheral componentinterconnect express,高速串行计算机扩展总线标准)接口发送给控制单元31。
下面对本申请实施例提供的神经网络加速器3进行说明。
神经网络加速器3包括控制单元31、转换单元32,以及依次连接的张量DMA33、片上缓存单元34和计算单元35。
控制单元31具体包括依次连接的指令存储模块311、指令解码模块312、指令发射模块313和执行控制模块314,其中,指令存储模块311通过PCIe接口与运行时2连接,用于专门存储发送给神经网络加速器3的片上指令,指令解码模块312负责对片上指令进行解码,并将解码后的信息通过指令发射模块313发射到执行控制模块314中,执行控制模块314提供神经网络加速器3中其余各个单元和模块的控制信号,以维护这些单元和模块之间的数据依赖关系。
具体地,控制单元31被配置为执行以下步骤一至步骤三:
步骤一,控制张量DMA33按照访存指令,将各个数据量化分块按搬运分块粒度从片外存储中分块搬运至片上缓存单元34进行加载,以及从片上缓存单元34中搬运至片外存储中进行存储。
其中,搬运分块粒度在前文已有说明,此处不再赘述。
具体地,张量DMA33在将数据搬运到片上缓存单元34中时,可以访问读取完整张量的某一视图,并按要求在片上缓存中排列。因此,计算单元35可以直接读取到按顺序排列好的分块后的多维张量,张量DMA33还可以同时在数据搬运过程中完成对张量中某一维度上常量值的填充。计算单元35的计算结果,也存储在片上缓存单元34中,并由张量DMA33搬运到外部的存储上或变换存储排列后供其他计算单元使用。
片上缓存单元34可划分成三个部分,分别负责权重值、当前激活值以及中间数据或计算结果的加载和存储。
步骤二,控制转换单元32根据各个数据量化分块的块浮点共享指数,对片上缓存单元34中的各个数据量化分块进行对数块浮点量化。
其中,各个数据量化分块中的权重值量化分块的块浮点共享指数为编译器1根据权重值量化分块中所有权重元素预先确定的,各个数据量化分块中的当前激活值量化分块的块浮点共享指数为编译器1根据预先获取的激活值样本集中所有元素离线确定的,或者为转换单元32根据当前激活值量化分块中所有元素在线确定的。
对于各个数据量化分块的块浮点共享指数的确定前文已有说明,此处不再赘述。
图2示例性示出了本申请实施例提供的对数块浮点的整体表示形式示意图,如图2所示,对数块浮点由四部分组成,分别是共享指数位、符号位、指数差位以及对数尾数位,其中,共享指数位的共享指数表示整个数据块内的公共指数,对于块中的每个元素都相同。符号位的符号表示块中每个元素的正负,指数差位的指数差表示块中每个元素的实际指数与共享指数之间的指数差,对数尾数位的对数尾数则是将常规浮点数中的尾数位转换为对数域中的表示,图2中示出的对数块浮点包含四个元素。
具体地,转换单元32根据各个数据量化分块的块浮点共享指数,对片上缓存单元34中的各个数据量化分块进行对数块浮点量化,具体可以通过以下两步实现:
第一步,根据各个数据量化分块的块浮点共享指数,确定片上缓存单元34中的各个数据量化分块的最终块浮点表示。
具体可以通过公式(5)确定片上缓存单元34中的各个数据量化分块的最终块浮点表示:
Figure BDA0003562619720000091
公式(5)中,Vb为片上缓存单元34中的任一数据量化分块,vbi为数据量化分块中的第i个元素,Mbv为数据量化分块中各元素的尾数表示组成的数据块,∈v为数据量化分块的块浮点共享指数,si为数据量化分块中单个元素的正负符号,mbi为数据量化分块中单个元素的尾数。每个元素的尾数可以通过指数差di=∈V-ei移位得到
Figure BDA0003562619720000092
采用上述块浮点表示,将原有的指数表示空间缩减为
Figure BDA0003562619720000093
并且,对尾数位宽进行压缩,假设压缩前mN的位宽为b1,压缩后的
Figure BDA0003562619720000094
位宽为b2,这样将尾数表示空间缩减为
Figure BDA0003562619720000095
此外,还将复杂的浮点数运算转换为定点数运算,节省了浮点数运算中的部分指数计算、对阶、归一化、舍入和非规格化计算的过程,降低了计算开销。
第二步,将各个数据量化分块中每个元素的尾数转换为对数表示。
示例性地,尾数
Figure BDA0003562619720000096
转换为对数表示,即为
Figure BDA0003562619720000097
如此,两个块浮点之间的尾数乘法运算可以转换为对数域中的加法运算,即
Figure BDA0003562619720000101
Figure BDA0003562619720000102
进一步降低计算开销。
此外,转换单元32还用于在对数块浮点表示和常规的浮点表示之间进行转换,或统一不同的共享指数块来完成量化过程,以及完成输入和输出之间数据量化分块大小的转换。针对输入和输出之间数据量化分块大小的转换,示例性地,当前输入值量化分块的大小为2×2,当前输出激活值量化分块的大小为1×1,针对任一网络层的当前输出激活值为下一网络层的当前输入值,因此需要进行1×1与2×2之间的转换。
如此,采用上述对数块浮点量化方式,能够兼具浮点数的高动态表示范围和定点数的低计算复杂度,并将乘法转换为加法运算,进一步降低计算开销。
步骤三,控制计算单元35根据各个数据量化分块的对数块浮点量化结果,执行计算密集型算子的计算以及访存密集型算子的计算。
计算单元35包括输入前处理模块351、输出后处理模块352、对数块浮点矩阵乘法计算模块353、向量计算模块354和访存索引生成器355,对数块浮点矩阵乘法计算模块353和向量计算模块354均分别与输入前处理模块351、输出后处理模块352以及访存索引生成器355连接。其中:
输入前处理模块351,用于在线获取各个数据量化分块的对数块浮点量化结果。
对数块浮点矩阵乘法计算模块353,用于按照访存索引生成器355生成的计算顺序,根据各个数据量化分块的对数块浮点量化结果执行计算密集型算子的计算,并将结果输出至输出后处理模块352。
其中,计算密集型表示计算速度慢于数据提供速度。
具体地,对数块浮点矩阵乘法计算模块353负责待部署模型中运算量密集的矩阵乘法的计算,其中乘法由对数域中的加法进行计算,并且分两级累加机制,共享同一指数的数据块采用定点累加,在溢出或共享指数改变时采用浮点累加。
向量计算模块354,用于按照访存索引生成器355生成的计算顺序,根据各个数据量化分块的对数块浮点量化结果执行访存密集型算子的计算,并将结果输出至输出后处理模块352。
其中,访存密集型表示计算速度快于数据提供速度。
具体地,向量计算模块354负责访存密集型算子的计算,如激活函数、批归一化层等。对数块浮点矩阵乘法计算模块353和向量计算模块354的计算顺序均由访存索引生成器355生成。
输出后处理模块352,用于完成激活计算,并将结果输出至片上缓存单元34。
其中,输入前处理模块351和输出后处理模块352进行量化统计量的动态收集以在线决定共享指数,并适时与转换单元32之间进行握手来完成共享指数的统一。此外,输出后处理模块352还会完成简单的激活函数计算,如ReLU。
此外,神经网络加速器3还包括与运行时2连接的中断控制单元36和寄存器组37,寄存器组37包括控制寄存器、配置寄存器、地址寄存器和状态寄存器。
中断控制单元36,用于通知运行时2计算结束或者发生异常情况。
其中,当通知运行时2发生异常情况时,运行时2会读取中断值来判断具体异常事件。
控制寄存器,用于控制神经网络加速器3进行计算启动或者复位重置。
配置寄存器,用于存储各个模块的可配置功能信息。
地址寄存器,用于确定访存的基地址。
状态寄存器,用于对神经网络加速器3的运行状态进行统计,并将统计结果发送给运行时2。
采用上述神经网络加速器,量化过程完全基于片上缓存数据进行在线转换,计算较为连续,而且量化过程,包括浮点数到对数块浮点的转换、对数块浮点到浮点数的转换以及不同共享指数的对数块浮点之间的转换,都是在神经网络加速器内完成,无需其他的计算设备,如CPU等,辅助进行量化计算,减少了CPU参与的计算过程,因此极大提升了计算效率,此外,架构精准地适配了对数块浮点量化方式,计算冗余较少,进一步提高了神经网络的计算效率,能够有效地支持在端侧设备上部署深度神经网络模型。
如此,本申请实施例提供的基于对数块浮点量化的神经网络加速系统,包括编译器、运行时和神经网络加速器,在使用时,编译器按照量化分块粒度对待部署模型数据进行分块,并将待部署模型全部转换为硬件指令,通过运行时与神经网络加速器进行交互,神经网络加速器根据指令将数据按照搬运分块粒度从片外存储中分块搬运至片上进行加载,并对各个数据量化分块进行对数块浮点量化,最终根据数据量化分块的对数块浮点量化结果,执行对应的神经网络运算。整个神经网络加速系统通过编译器将模型转换为硬件可以识别的指令,由运行时向硬件下发指令和数据以及与硬件进行高效通信,并且采用完全适配于对数块浮点量化方法的硬件架构,计算中冗余较少,从而计算效率较高,可以有效地支持深度神经网络模型的端到端部署。
以上结合具体实施方式和范例性实例对本申请进行了详细说明,不过这些说明并不能理解为对本申请的限制。本领域技术人员理解,在不偏离本申请精神和范围的情况下,可以对本申请技术方案及其实施方式进行多种等价替换、修饰或改进,这些均落入本申请的范围内。本申请的保护范围以所附权利要求为准。

Claims (10)

1.一种基于对数块浮点量化的神经网络加速系统,其特征在于,包括依次连接的编译器、运行时和神经网络加速器,所述神经网络加速器包括控制单元、转换单元,以及依次连接的张量DMA、片上缓存单元和计算单元,其中:
所述编译器被配置为执行以下步骤:
按照预设的量化分块粒度对待部署模型数据进行分块,得到多个数据量化分块,所述待部署模型数据包括待部署模型的权重值和当前激活值,所述当前激活值包括当前输入值和当前输出激活值;
将所述待部署模型转换为供所述神经网络加速器识别的多个硬件指令,多个硬件指令包括访存指令和计算指令,所述访存指令用于指示所述张量DMA通过所述运行时按照搬运分块粒度,将各个数据量化分块从片外存储中分块搬运至所述片上缓存单元进行加载,以及从所述片上缓存单元中搬运至片外存储中进行存储,所述搬运分块粒度为所述量化分块粒度的整数倍,所述计算指令用于指示所述控制单元向所述计算单元和所述转换单元分配计算数据和数据转换方式;
所述控制单元被配置为执行以下步骤:
控制所述张量DMA按照所述访存指令,将各个数据量化分块按所述搬运分块粒度从片外存储中分块搬运至所述片上缓存单元进行加载,以及从所述片上缓存单元中搬运至片外存储中进行存储;
控制所述转换单元根据各个数据量化分块的块浮点共享指数,对所述片上缓存单元中的各个数据量化分块进行对数块浮点量化,其中,各个数据量化分块中的权重值量化分块的块浮点共享指数为所述编译器根据所述权重值量化分块中所有权重元素预先确定的,各个数据量化分块中的当前激活值量化分块的块浮点共享指数为所述编译器根据预先获取的激活值样本集中所有元素离线确定的,或者为所述转换单元根据所述当前激活值量化分块中所有元素在线确定的;
控制所述计算单元根据各个数据量化分块的对数块浮点量化结果,执行计算密集型算子的计算以及访存密集型算子的计算。
2.根据权利要求1所述的神经网络加速系统,其特征在于,所述量化分块粒度通过以下方式设置:
根据预设的最大量化误差或者预设的量化信噪比,确定基本分块粒度;
根据所述基本分块粒度以及预设分块倍数,确定量化分块粒度。
3.根据权利要求2所述的神经网络加速系统,其特征在于,所述搬运分块粒度通过以下方式设置:
根据权重值搬运分块的搬运次数、当前输入值搬运分块的搬运次数、当前输出激活值搬运分块的搬运次数、权重值搬运分块所占有的片上存储量、当前输入值搬运分块所占有的片上存储量以及当前输出激活值搬运分块所占有的片上存储量,确定总片外数据传输量,所述权重值搬运分块根据所述权重值量化分块以及第一整数倍确定,所述当前输入值搬运分块根据各个数据量化分块中的当前输入值量化分块以及第二整数倍确定,所述当前输出激活值搬运分块根据各个数据量化分块中的当前输出激活值量化分块以及第三整数倍确定;
从各个总片外数据传输量中,按照约束条件搜索确定最小总片外数据传输量,所述约束条件为所述权重值搬运分块、所述当前输入值搬运分块和所述当前输出激活值搬运分块各自所占有的片上存储量小于或等于各自对应的允许片上总缓存量;
获取所述最小总片外数据传输量所对应的目标权重值搬运分块的大小、目标当前输入值搬运分块的大小和目标当前输出激活值搬运分块的大小;
将所述目标权重值搬运分块的大小、所述目标当前输入值搬运分块的大小和所述目标当前输出激活值搬运分块的大小,确定为所述搬运分块粒度。
4.根据权利要求1所述的神经网络加速系统,其特征在于,所述各个数据量化分块中的权重值量化分块的块浮点共享指数通过以下方式确定:
将各个数据量化分块中的权重值量化分块中各个权重元素转换为浮点数形式;
针对每个权重值量化分块,获取绝对值最大的权重元素所对应的指数值;
将绝对值最大的权重元素所对应的指数值,确定为所述权重值量化分块的块浮点共享指数。
5.根据权利要求1所述的神经网络加速系统,其特征在于,所述各个数据量化分块中的当前激活值量化分块的块浮点共享指数通过以下方式确定:
确定量化的执行模式,所述量化的执行模式包括离线量化模式和在线量化模式;
在所述离线量化模式下,获取所述激活值样本集中所有元素所对应的原始概率分布;
获取所述激活值样本集中所有元素在不同共享指数的量化分块方案下所对应的各个量化后概率分布;
确定所述原始概率分布与每个量化后概率分布的KL散度;
将最小KL散度所对应的共享指数,确定为当前激活值量化分块的块浮点共享指数;
或者,在所述在线量化模式下,将当前激活值量化分块中所有元素转换为浮点数形式;
针对每个当前激活值量化分块,获取绝对值最大的当前激活值元素所对应的指数值;
将绝对值最大的当前激活值元素所对应的指数值,确定为所述当前激活值量化分块的块浮点共享指数。
6.根据权利要求5所述的神经网络加速系统,其特征在于,所述确定所述原始概率分布与每个量化后概率分布的KL散度,包括:
通过以下公式确定所述原始概率分布与每个量化后概率分布的KL散度:
Figure FDA0003562619710000021
其中,KL(p||q)为所述原始概率分布与任一量化后概率分布的KL散度,p(x)为所述原始概率分布,q(x)为任一量化后概率分布。
7.根据权利要求1所述的神经网络加速系统,其特征在于,所述根据各个数据量化分块的块浮点共享指数,对所述片上缓存单元中的各个数据量化分块进行对数块浮点量化,包括:
根据各个数据量化分块的块浮点共享指数,确定所述片上缓存单元中的各个数据量化分块的最终块浮点表示;
将各个数据量化分块中每个元素的尾数转换为对数表示。
8.根据权利要求7所述的神经网络加速系统,其特征在于,所述根据各个数据量化分块的块浮点共享指数,确定所述片上缓存单元中的各个数据量化分块的最终块浮点表示,包括:
通过以下公式确定所述片上缓存单元中的各个数据量化分块的最终块浮点表示:
Figure FDA0003562619710000031
其中,Vb为所述片上缓存单元中的任一数据量化分块,vbi为数据量化分块中的第i个元素,Mbv为数据量化分块中各元素的尾数表示组成的数据块,∈v为数据量化分块的块浮点共享指数,si为数据量化分块中单个元素的正负符号,mbi为数据量化分块中单个元素的尾数。
9.根据权利要求1所述的神经网络加速系统,其特征在于,所述计算单元包括输入前处理模块、输出后处理模块、对数块浮点矩阵乘法计算模块、向量计算模块和访存索引生成器,所述对数块浮点矩阵乘法计算模块和所述向量计算模块均分别与所述输入前处理模块、所述输出后处理模块以及所述访存索引生成器连接;
所述输入前处理模块,用于在线获取各个数据量化分块的对数块浮点量化结果;
所述对数块浮点矩阵乘法计算模块,用于按照所述访存索引生成器生成的计算顺序,根据各个数据量化分块的对数块浮点量化结果执行计算密集型算子的计算,并将结果输出至所述输出后处理模块;
所述向量计算模块,用于按照所述访存索引生成器生成的计算顺序,根据各个数据量化分块的对数块浮点量化结果执行访存密集型算子的计算,并将结果输出至所述输出后处理模块;
所述输出后处理模块,用于完成激活计算,并将结果输出至所述片上缓存单元。
10.根据权利要求1所述的神经网络加速系统,其特征在于,所述神经网络加速器还包括与所述运行时连接的中断控制单元和寄存器组,所述寄存器组包括控制寄存器、配置寄存器、地址寄存器和状态寄存器;
所述中断控制单元,用于通知所述运行时计算结束或者发生异常情况;
所述控制寄存器,用于控制所述神经网络加速器进行计算启动或者复位重置;
所述配置寄存器,用于存储各个模块的可配置功能信息;
所述地址寄存器,用于确定访存的基地址;
所述状态寄存器,用于对所述神经网络加速器的运行状态进行统计,并将统计结果发送给所述运行时。
CN202210300275.1A 2022-03-24 2022-03-24 一种基于对数块浮点量化的神经网络加速系统 Pending CN114626516A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210300275.1A CN114626516A (zh) 2022-03-24 2022-03-24 一种基于对数块浮点量化的神经网络加速系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210300275.1A CN114626516A (zh) 2022-03-24 2022-03-24 一种基于对数块浮点量化的神经网络加速系统

Publications (1)

Publication Number Publication Date
CN114626516A true CN114626516A (zh) 2022-06-14

Family

ID=81903363

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210300275.1A Pending CN114626516A (zh) 2022-03-24 2022-03-24 一种基于对数块浮点量化的神经网络加速系统

Country Status (1)

Country Link
CN (1) CN114626516A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116108896A (zh) * 2023-04-11 2023-05-12 上海登临科技有限公司 模型量化方法、装置、介质及电子设备
CN117574976A (zh) * 2024-01-16 2024-02-20 北京大学 一种大语言模型软硬件协同量化加速计算方法及系统
CN117992578A (zh) * 2024-04-02 2024-05-07 淘宝(中国)软件有限公司 基于大语言模型处理数据的方法、大语言模型及电子设备

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116108896A (zh) * 2023-04-11 2023-05-12 上海登临科技有限公司 模型量化方法、装置、介质及电子设备
CN116108896B (zh) * 2023-04-11 2023-07-07 上海登临科技有限公司 模型量化方法、装置、介质及电子设备
CN117574976A (zh) * 2024-01-16 2024-02-20 北京大学 一种大语言模型软硬件协同量化加速计算方法及系统
CN117574976B (zh) * 2024-01-16 2024-04-30 北京大学 一种大语言模型软硬件协同量化加速计算方法及系统
CN117992578A (zh) * 2024-04-02 2024-05-07 淘宝(中国)软件有限公司 基于大语言模型处理数据的方法、大语言模型及电子设备

Similar Documents

Publication Publication Date Title
CN110998570B (zh) 具有带有块浮点处理的矩阵矢量单元的硬件节点
US20190332945A1 (en) Apparatus and method for compression coding for artificial neural network
CN114626516A (zh) 一种基于对数块浮点量化的神经网络加速系统
JP7078758B2 (ja) 機械学習モデルを改良して局所性を改善させること
WO2020167480A1 (en) Adjusting activation compression for neural network training
CN114868108A (zh) 组合多个整数和浮点数据类型的脉动阵列部件
US11562201B2 (en) Neural network layer processing with normalization and transformation of data
EP3906616A1 (en) Neural network activation compression with outlier block floating-point
CN107256424B (zh) 三值权重卷积网络处理系统及方法
CN114503125A (zh) 结构化剪枝方法、系统和计算机可读介质
US11783200B2 (en) Artificial neural network implementation in field-programmable gate arrays
CN112329910B (zh) 一种面向结构剪枝结合量化的深度卷积神经网络压缩方法
CN114127740A (zh) 人工智能模型的分布式训练中的数据并行性
JP2019139338A (ja) 情報処理装置、情報処理方法、およびプログラム
CN110543936B (zh) 一种cnn全连接层运算的多并行加速方法
US11537879B2 (en) Neural network weight discretizing method, system, device, and readable storage medium
US11544521B2 (en) Neural network layer processing with scaled quantization
US20220076095A1 (en) Multi-level sparse neural networks with dynamic rerouting
US11295236B2 (en) Machine learning in heterogeneous processing systems
CN111160534A (zh) 一种适用于移动终端的二值神经网络前向传播框架
US20230146689A1 (en) Deep neural network
CN114897133A (zh) 一种通用可配置的Transformer硬件加速器及其实现方法
CN115688905A (zh) 对深度学习模型进行加速处理的方法
CN113238987B (zh) 量化数据的统计量化器、存储装置、处理装置及板卡
US20230244945A1 (en) Dual-momentum gradient optimization with reduced memory requirements

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