基于字典树的AI大模型Tensor索引和保存方法、系统及应用与流程

专利2026-02-17  6


本发明属于人工智能,涉及一种基于字典树(trie)的ai大模型tensor索引和保存方法、系统及应用。


背景技术:

1、大模型近些年真正成为了人工智能领域的一颗耀眼明星。这主要得益于两个因素:硬件和数据。互联网的普及和数字化进程带来了海量数据,为大模型的学习提供了坚实的基础。在发展历程中,出现了一些重要的里程碑模型,如google的bert模型、openai的gpt系列以及meta的llama模型等。这些模型的问世,标志着大模型时代的来临。

2、随着计算机性能的快速提升,特别是图形处理器(gpu)和更专门化的ai芯片的出现,大模型得以更高效地进行训练和推断。除此之外,在高性能cpu上直接运行大模型推理,省去了采购gpgpu或者是asic的高昂费用,又可以快捷的体验大模型推理的成果,这也是当前体验大模型的一种可选方案。根据最近的实测数据,在amd epyc 7543的cpu上对llama70亿参数的模型进行q4 weight量化版进行推理,其平均推理速度为22.39tokens每秒,其130亿参数的q4 weight量化版本也能达到10.32tokens每秒。

3、相较于传统的cnn网络模型,基于transformer的人工智能大模型的参数量是非常巨大的,比如常见的chatgpt,或者llama模型的参数量有70亿,130亿,700亿等等,其训练出来的模型权重更是有数百gb的大小。在模型推理过程中,如何高效快捷的找到每个算子需要的权重数据,对于提高模型推理的效率是至关重要的。

4、目前最典型的大模型推理框架是git hub上一款名为llama.cpp的开源框架,其支持在cpu端侧对全球主流开源模型的推理,如llama,falcon,starcoder以及国内大模型baichuan。其实现在对数十gb的大模型权重weight进行索引时所采用的方式为单项链表,其典型缺点是:

5、1)查找、删除操作不高效:在单链表中,如果要删除一个节点,需要从链表头开始遍历以找到需要删除的节点。特别是当链表很大时,这将非常耗时;

6、2)不能直接访问前驱节点:由于单链表的每个节点仅包含一个指向后继节点的指针,因此无法直接访问一个节点的前驱节点。


技术实现思路

1、为了解决现有技术存在的不足,本发明的目的是提供一种基于字典树(trie)的ai大模型tensor索引和保存方法。本发明所述方法能够高效地对tensor进行查找、遍历,高效快捷地加速模型推理的效率,对人工智能大模型在cpu上的推理进行优化和加速。

2、本发明中的基于字典树(trie)的ai大模型tensor索引和保存方法,包括了以下技术改进:

3、1.tensor的高效快捷的索引:相较于传统的基于链表的索引方式,本发明提出了基于字典树(trie)的索引方法,可以高效地索引到大模型算子运行过程中需要的权重(weight)数据,后续将会提供其索引效率相关的改进数据;

4、2.字典(trie)树的改良:针对大模型对权重的使用习惯,本发明提出改良方法,对字典树进行合理的裁剪、修枝,以进一步提高索引效率和减小字典树本身的内存空间;

5、3.tensor的内存(memory)管理和优化:主要涉及内存的合理分配和内存碎片化的避免。

6、本发明提供了一种基于字典树的ai大模型tensor索引和保存方法,所述方法包括如下步骤:

7、步骤一、字典树构建:初始化根节点,逐字符扩展节点,对键值终点进行标记;

8、步骤二、预处理:将输入的键值进行格式化,去除不必要的字符;

9、步骤三、构建索引:利用字典树的层级结构,为每个唯一的键值创建一个路径,每个节点代表键值中的一个字符;

10、步骤四、逐级检索:从字典树的根节点开始,根据键值的每个字符依次遍历子节点;

11、步骤五、数据关联:在键值的最后一个字符对应的节点处,关联或保存指向实际数据的指针或引用。

12、步骤一中,所述字典树的构建包括如下步骤:

13、步骤1.1、以tensor name为字典树的键值,并对所述键值进行前处理,保留合法字符;

14、步骤1.2、构建一个根节点,并在根节点的基础上根据步骤1.1中获得的合法字符逐字符扩展子节点,构建完整的字典树。

15、步骤1.2后还包括对构建的字典树进行剪枝的过程,将具有相同前缀和后缀的tensor名称合并在一起,减少字典树中的节点数量。通过将合并的节点的m_next指针个数设置为1,并将m_is_opt置为true,实现对字典树的剪枝;

16、所述字典树中,权重数据用tensor结构体表示,所述tensor结构体包括tensor名字m_name、tensor维度m_dim、tensor在各维度上的形状m_shape、tensor梯度变化m_stride、tensor元素个数m_count、tensor具体数据指针m_data。

17、步骤1.1中的前处理和步骤二中的预处理均指将输出的tensor name键值去除合法字符以外的字符,所述合法字符是指包括26个字母的大小写以及10个数字符,共计62个字符。

18、步骤三中,将每个唯一的tensor名字作为键值,按照键值中字符的顺序创建字典树中的一个路径,所述路径上的每个节点代表了tensor名字中的一个字符,用于在字典树中检索和查找tensor信息。

19、步骤四中,在遍历过程中,每个字符都用于匹配字典树中的对应子节点;如果字符匹配成功,就移动到相应的子节点,继续下一个字符的匹配,直到匹配完整的键值或无法继续匹配。

20、步骤五中,当步骤四匹配成功并找到了目标键值的终点节点后,在所述终点节点中关联或保存指向tensor实际数据的指针或引用,定位到包括权重tensor或激活值tensor在内的信息或数据;

21、所述tensor数据保存在预先分配的内存空间中,并确保tensor结构体的大小与内存对齐要求相符。

22、本发明还提供了上述方法在深度学习模型推理和部署、模型剪枝与优化、模型解释中的应用。

23、本发明还提供了一种实现上述方法的硬件系统,所述硬件系统包括:存储器和处理器;所述存储器上存储有计算机程序,当所述计算机程序被所述处理器执行时,实现上述的方法。

24、本发明还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时,实现上述的方法。

25、本发明的有益效果包括:

26、1.对具体tensor进行索引时,其时间复杂度的提升比较明显。在单链表中查找一个元素的时间复杂度是o(n),其中n是链表中的元素数量,需要遍历整个链表,比较每个节点的值,直到找到目标元素或到达链表的尾部;在字典(trie)中查找一个元素的时间复杂度是o(m),其中m是目标字符串的长度。具体针对本发明中具体的以meta的llama模型案例,n=291+1188,而m=20,可见本发明方法的时间复杂度有比较显著的减小。

27、2.与传统字典(trie)相比较,本发明对其剪枝效果明显,具体针对本发明中具体的以meta的llama模型案例,分别对公共前缀“layer”和后缀“weight”进行合并剪枝,对字典(trie)的压缩比例为30%左右。

28、3.tensor和其数据对齐存放到预先分配好的内存里,明显避免了内存的碎片化,而且也避免了对单个tensor进行内存分配可能导致分配不成功的问题,图1详细提供了每个权重tensor所需的内存空间,如果单个分配大批量的内存,因为内存碎片化的问题极有可能会失败。


技术特征:

1.一种基于字典树的ai大模型tensor索引和保存方法,其特征在于,所述方法包括如下步骤:

2.如权利要求1所述的方法,其特征在于,步骤一中,所述字典树的构建包括如下步骤:

3.如权利要求2所述的方法,其特征在于,步骤1.2后还包括对构建的字典树进行剪枝的过程,将具有相同前缀和后缀的tensor名称合并在一起,减少字典树中的节点数量;通过将合并的节点的m_next指针个数设置为1,并将m_is_opt置为true,实现对字典树的剪枝;

4.如权利要求2所述的方法,其特征在于,步骤1.1中的前处理和步骤二中的预处理均指将输出的tensor name键值去除合法字符以外的字符,所述合法字符是指包括26个字母的大小写以及10个数字符,共计62个字符。

5.如权利要求1所述的方法,其特征在于,步骤三中,将每个唯一的tensor名字作为键值,按照键值中字符的顺序创建字典树中的一个路径,所述路径上的每个节点代表了tensor名字中的一个字符,用于在字典树中检索和查找tensor信息。

6.如权利要求1所述的方法,其特征在于,步骤四中,在遍历过程中,每个字符都用于匹配字典树中的对应子节点;如果字符匹配成功,就移动到相应的子节点,继续下一个字符的匹配,直到匹配完整的键值或无法继续匹配。

7.如权利要求1所述的方法,其特征在于,步骤五中,当步骤四匹配成功并找到了目标键值的终点节点后,在所述终点节点中关联或保存指向tensor实际数据的指针或引用,定位到包括权重tensor或激活值tensor在内的信息或数据;

8.如权利要求1-7之任一项所述的方法在深度学习模型推理和部署、模型剪枝与优化、模型解释中的应用。

9.一种实现如权利要求1-7之任一项所述方法的硬件系统,其特征在于,所述硬件系统包括:存储器和处理器;所述存储器上存储有计算机程序,当所述计算机程序被所述处理器执行时,实现如权利要求1-7任一项所述的方法。

10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时,实现如权利要求1-7任一项所述的方法。


技术总结
本发明公开了一种基于字典树的AI大模型Tensor索引和保存方法,所述方法包括如下步骤:步骤一、字典树构建:初始化根节点,逐字符扩展节点,对键值终点进行标记;步骤二、预处理:将输入的键值进行格式化,去除不必要的字符;步骤三、构建索引:利用字典树的层级结构,为每个唯一的键值创建一个路径,每个节点代表键值中的一个字符;步骤四、逐级检索:从字典树的根节点开始,根据键值的每个字符依次遍历子节点;步骤五、数据关联:在键值的最后一个字符对应的节点处,关联或保存指向实际数据的指针或引用。本发明还公开了实现上述方法的系统及应用。

技术研发人员:段勤
受保护的技术使用者:上海曲速超为技术有限公司
技术研发日:
技术公布日:2024/12/17
转载请注明原文地址:https://xbbs.6miu.com/read-29837.html