本发明涉及大模型聊天机器人,尤其是涉及一种用于聊天机器人的编译次数优化方法、设备及介质。
背景技术:
1、随着大模型技术的发展,利用大模型技术开发的聊天机器人开始普及。
2、如图1所示,聊天机器人回答的简化流程包括:用户输入语句提交给聊天机器人;聊天机器人将用户语句处理为令牌(token)序列;聊天机器人使用大模型,将令牌序列作为输入进行推理,得到输出令牌序列;聊天机器人对于大模型输出的令牌序列进行文本化以及后处理,得到人类可以理解的文字。
3、上述流程从用户输入语句开始为起点,最后聊天机器人返回了聊天对话的下一句,可以依次重复这个流程让用户与聊天机器人进行对话。
4、由于大模型对于算力的需求很大,需要对大模型推理进行编译优化,加速大模型的推理速度;目前的深度学习编译器在对于静态输入形状的模型有较好的优化效果,而对于动态形状输入形状的模型效果较为一般。
5、因此现有技术的缺点包括:
6、1)无法在保证计算结果正确的情况下,使得编译器优化的模型的输入为静态形状;简单的对于输入令牌进行补齐和键值缓存进行补零会导致中间计算结果不正确;
7、2)历史键值缓存的序列维度补零为定值后,即使在较小的历史键值缓存的序列长度下,自注意力机制模块中的分数(score)与值(value)的矩阵乘法的规约维度为“历史键值缓存的序列维度补零的定值”,造成矩阵乘法的计算量较大。
技术实现思路
1、本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种用于聊天机器人的编译次数优化方法、设备及介质。
2、本发明的目的可以通过以下技术方案来实现:
3、根据本发明的第一方面,提供了一种用于聊天机器人的编译次数优化方法,该方法基于深度学习编译器来实现,通过对大模型推理的部分流程进行修改,包括对大模型推理阶段输入提示令牌和历史推理的键值缓存进行补齐,同时对指数归一化之前进行掩码数据处理。。
4、作为优选的技术方案,所述对大模型推理阶段输入提示令牌和历史推理的键值缓存进行补齐包括:
5、1)对大模型推理中的“用户输入语句转换的令牌序列”在序列维度进行前侧补齐;
6、2)注意力层中的“历史键缓存”和“历史值缓存”在序列维度进行前侧补齐。
7、作为优选的技术方案,仅对首次所述“用户输入语句转换的令牌序列进行”在序列维度进行前侧补齐,而在后续由大模型生成的单个令牌作为输入的情形下,视补齐长度为0。
8、作为优选的技术方案,将输入的补齐序列长度+实际令牌序列长度为一个预设的定值。
9、作为优选的技术方案,所述“历史键缓存”和“历史值缓存”首先分别与“此时键”和“此时值”进行拼接,然后在序列维度进行前侧补齐,同时进行拼接之后的切出操作;其中所述切出的长度为相应拼接“此时键”和“此时值”的序列长度,切出后分别得到“用于矩阵乘法的历史键缓存”和“用于矩阵乘法的历史值缓存”。
10、作为优选的技术方案,所述“历史键缓存”和“历史值缓存”的缓存长度n为预先计算,其中不考虑历史缓存的补齐长度余下对应的历史缓存序列长度记为real_cache_len,该real_cache_len不大于n,所述方法设置切片长度列表,该切片长度列表是由一系列从小到大的正整数依次构成,最大值为n并且n在列表中,用以对前切出后的历史缓存进一步切片;对于每一个real_cache_len,在列表中找到大于等于real_cache_len且最小的一个值记为slice_size;对于前切出后的历史缓存,沿着序列维度后侧保留slice_size长度的张量。
11、作为优选的技术方案,所述对指数归一化之前进行掩码数据处理具体为:
12、掩码数据为一个二维的矩阵,维度为:(输入补齐序列长度+实际令牌序列长度)*新历史缓存序列长度,其中新历史缓存序列长度为:缓存补齐残留序列长度+历史缓存序列长度+输入补齐序列长度+此时缓存序列长度;
13、对于新历史缓存序列维度,将掩码数据中对应“缓存补齐残留序列长度”和“输入补齐序列长度”对应维度的值设置为-inf,其余为0,其中-inf为负无穷大;
14、对于掩码数据矩阵的另一个维度而言,其长度为(输入补齐序列长度+实际令牌序列长度),将掩码数据中对应“输入补齐序列长度”为-inf,其余为0;
15、若如果一个值即要被设置为0又要被设置为-inf,则优先设置为-inf。
16、作为优选的技术方案,对处理后的掩码数据进行加和得到“掩码后分数”,经过指数归一化后得到“指数归一化后分数”,再将其与“用于矩阵乘法的历史值缓存”进行矩阵乘法得到注意力分数。
17、根据本发明的第二方面,提供了一种电子设备,包括存储器和处理器,所述存储器上存储有计算机程序,所述处理器执行所述程序时实现所述的方法。
18、根据本发明的第三方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现所述的方法。
19、与现有技术相比,本发明具有以下优点:
20、1)本发明通过修改编译器输入的大模型的结构和代码,使其对静态输入形状的深度学习编译器更为友好,使其能够减少编译次数同时保有原本的运算结果;
21、1)本发明解决了大模型聊天机器人推理进行编译优化的过程中,减少了静态输入形状深度学习编译器编译的执行次数,从而提高了编译优化加速方案的推理效率;
22、2)本发明对于输入令牌和键值缓存补齐方案下特殊的掩码处理,保证了数据计算的正确性;
23、3)本发明利用“切片长度列表”这个设置,对于不同的历史键值缓存的序列实际长度,大模型自注意力机制模块可以进行较小的矩阵乘法操作。每一种规约维度长度都会使得编译次数增加一次,但是相应的推理流程会运算得更快。这种设置可以灵活地平衡编译优化次数与编译产出模型的优化效果。
1.一种用于聊天机器人的编译次数优化方法,其特征在于,该方法基于深度学习编译器来实现,通过对大模型推理的部分流程进行修改,包括对大模型推理阶段输入提示令牌和历史推理的键值缓存进行补齐,同时对指数归一化之前进行掩码数据处理。
2.根据权利要求1所述的一种用于聊天机器人的编译次数优化方法,其特征在于,所述对大模型推理阶段输入提示令牌和历史推理的键值缓存进行补齐包括:
3.根据权利要求2所述的一种用于聊天机器人的编译次数优化方法,其特征在于,仅对首次所述“用户输入语句转换的令牌序列进行”在序列维度进行前侧补齐,而在后续由大模型生成的单个令牌作为输入的情形下,视补齐长度为0。
4.根据权利要求2所述的一种用于聊天机器人的编译次数优化方法,其特征在于,将输入的补齐序列长度+实际令牌序列长度为一个预设的定值。
5.根据权利要求2所述的一种用于聊天机器人的编译次数优化方法,其特征在于,所述“历史键缓存”和“历史值缓存”首先分别与“此时键”和“此时值”进行拼接,然后在序列维度进行前侧补齐,同时进行拼接之后的切出操作;其中所述切出的长度为相应拼接“此时键”和“此时值”的序列长度,切出后分别得到“用于矩阵乘法的历史键缓存”和“用于矩阵乘法的历史值缓存”。
6.根据权利要求5所述的一种用于聊天机器人的编译次数优化方法,其特征在于,所述“历史键缓存”和“历史值缓存”的缓存长度n为预先计算,其中不考虑历史缓存的补齐长度余下对应的历史缓存序列长度记为real_cache_len,该real_cache_len不大于n,所述方法设置切片长度列表,该切片长度列表是由一系列从小到大的正整数依次构成,最大值为n并且n在列表中,用以对前切出后的历史缓存进一步切片;对于每一个real_cache_len,在列表中找到大于等于real_cache_len且最小的一个值记为slice_size;对于前切出后的历史缓存,沿着序列维度后侧保留slice_size长度的张量。
7.根据权利要求6所述的一种用于聊天机器人的编译次数优化方法,其特征在于,所述对指数归一化之前进行掩码数据处理具体为:
8.根据权利要求7所述的一种用于聊天机器人的编译次数优化方法,其特征在于,对处理后的掩码数据进行加和得到“掩码后分数”,经过指数归一化后得到“指数归一化后分数”,再将其与“用于矩阵乘法的历史值缓存”进行矩阵乘法得到注意力分数。
9.一种电子设备,包括存储器和处理器,所述存储器上存储有计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1~8中任一项所述的方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1~8中任一项所述的方法。