CN114691566A - Ai模型的运行方法、加载方法、装置及ic芯片 - Google Patents
Ai模型的运行方法、加载方法、装置及ic芯片 Download PDFInfo
- Publication number
- CN114691566A CN114691566A CN202011630760.2A CN202011630760A CN114691566A CN 114691566 A CN114691566 A CN 114691566A CN 202011630760 A CN202011630760 A CN 202011630760A CN 114691566 A CN114691566 A CN 114691566A
- Authority
- CN
- China
- Prior art keywords
- model
- chip
- target
- model data
- data
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 90
- 238000011068 loading method Methods 0.000 title claims abstract description 28
- 238000013473 artificial intelligence Methods 0.000 claims abstract description 560
- 230000008569 process Effects 0.000 claims description 36
- 238000012546 transfer Methods 0.000 claims description 24
- 230000004044 response Effects 0.000 claims description 12
- 238000013500 data storage Methods 0.000 claims description 8
- 239000002346 layers by function Substances 0.000 claims description 7
- 238000012163 sequencing technique Methods 0.000 claims description 4
- 230000005540 biological transmission Effects 0.000 claims description 3
- 238000006243 chemical reaction Methods 0.000 claims description 3
- 230000001133 acceleration Effects 0.000 abstract description 12
- 238000012545 processing Methods 0.000 description 29
- 239000010410 layer Substances 0.000 description 23
- 230000006870 function Effects 0.000 description 18
- 238000010586 diagram Methods 0.000 description 15
- 238000004422 calculation algorithm Methods 0.000 description 12
- 238000004590 computer program Methods 0.000 description 8
- 238000012795 verification Methods 0.000 description 8
- 238000011017 operating method Methods 0.000 description 6
- 230000003993 interaction Effects 0.000 description 5
- 238000010801 machine learning Methods 0.000 description 4
- 238000011176 pooling Methods 0.000 description 4
- 230000000903 blocking effect Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000005284 excitation Effects 0.000 description 3
- 238000003058 natural language processing Methods 0.000 description 3
- 238000013528 artificial neural network Methods 0.000 description 2
- 238000013475 authorization Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000013135 deep learning Methods 0.000 description 2
- 238000013136 deep learning model Methods 0.000 description 2
- 238000012821 model calculation Methods 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000013467 fragmentation Methods 0.000 description 1
- 238000006062 fragmentation reaction Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003062 neural network model Methods 0.000 description 1
- 230000008447 perception Effects 0.000 description 1
- 238000005215 recombination Methods 0.000 description 1
- 230000006798 recombination Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000008054 signal transmission Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
- G06F13/30—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal with priority control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
- G06F12/0835—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means for main memory peripheral accesses (e.g. I/O or DMA)
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/123—Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0038—System on Chip
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/16—Memory access
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/28—DMA
- G06F2213/2804—Systems and methods for controlling the DMA frequency on an access bus
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Computing Systems (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Stored Programmes (AREA)
Abstract
本申请实施例提供了一种AI模型的运行方法、加载方法、装置及IC芯片,涉及人工智能技术领域。所述方法包括:接收来自于应用处理器AP的模型调用请求,模型调用请求用于请求调用目标AI模型;获取目标AI模型在系统主存上的存储地址;通过直接存储器访问DMA基于存储地址,将目标AI模型的可识别模型数据,从系统主存转移至AI芯片中;其中,可识别模型数据包括模型算子指令和模型权重数据;通过AI芯片基于可识别模型数据,运行目标AI模型。本申请实施例解决了相关技术中第三方应用对应的AI模型无法获得AI芯片加速能力的问题。
Description
技术领域
本申请实施例涉及人工智能技术领域,特别涉及一种AI模型的运行方法、加载方法、装置、终端及存储介质。
背景技术
AI(Artificial Intelligence,人工智能)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳效果的理论、方法、技术及应用系统。
在相关技术中,终端中通常设置有AI芯片以支持AI模型对例如图像、视频、语音等数据进行处理,在AI芯片上运行AI模型可以获得AI芯片对各算子的硬件加速能力。AI模型需要提前内置到AI芯片中。
发明内容
本申请实施例提供一种AI模型的运行方法、加载方法、装置及IC芯片。所述技术方案如下:
一方面,本申请实施例提供一种人工智能AI模型的运行方法,所述方法包括:
接收来自于应用处理器AP的模型调用请求,所述模型调用请求用于请求调用目标AI模型;
获取所述目标AI模型在系统主存上的存储地址;
通过直接存储器访问DMA基于所述存储地址,将所述目标AI模型的可识别模型数据,从所述系统主存转移至AI芯片中;其中,所述可识别模型数据包括模型算子指令和模型权重数据;
通过所述AI芯片基于所述可识别模型数据,运行所述目标AI模型。
另一方面,本申请实施例提供一种人工智能AI模型的运行方法,所述方法包括:
获取系统主存中存储的目标AI模型的可识别模型数据,所述可识别模型数据包括模型算子指令和模型权重数据;
接收来自于协处理器CP的模型运行指令,所述模型运行指令用于指示AI芯片运行所述目标AI模型;
响应于所述模型运行指令,基于所述可识别模型数据,运行所述目标AI模型。
另一方面,本申请实施例提供一种人工智能AI模型的加载方法,所述方法包括:
获取待加载的目标AI模型的原始模型数据;
将所述原始模型数据转换为AI芯片的可识别模型数据,所述可识别模型数据包括模型算子指令和模型权重数据;
将所述可识别模型数据存储到系统主存中。
另一方面,本申请实施例提供一种人工智能AI模型的运行装置,所述装置包括:
请求接收模块,用于接收来自于应用处理器AP的模型调用请求,所述模型调用请求用于请求调用目标AI模型;
地址获取模块,用于获取所述目标AI模型在系统主存上的存储地址;
数据转移模块,用于通过直接存储器访问DMA基于所述存储地址,将所述目标AI模型的可识别模型数据,从所述系统主存转移至AI芯片中;其中,所述可识别模型数据包括模型算子指令和模型权重数据;
模型运行模块,用于通过所述AI芯片基于所述可识别模型数据,运行所述目标AI模型。
另一方面,本申请实施例提供一种人工智能AI模型的运行装置,所述装置包括:
数据获取模块,用于获取系统主存中存储的目标AI模型的可识别模型数据,所述可识别模型数据包括模型算子指令和模型权重数据;
指令接收模块,用于接收来自于协处理器CP的模型运行指令,所述模型运行指令用于指示AI芯片运行所述目标AI模型;
模型运行模块,用于响应于所述模型运行指令,基于所述可识别模型数据,运行所述目标AI模型。
另一方面,本申请实施例提供一种人工智能AI模型的加载装置,所述装置包括:
数据获取模块,用于获取待加载的目标AI模型的原始模型数据;
数据转换模块,用于将所述原始模型数据转换为AI芯片的可识别模型数据,所述可识别模型数据包括模型算子指令和模型权重数据;
数据存储模块,用于将所述可识别模型数据存储到系统主存中。
另一方面,本申请实施例提供一种IC(Integrated Circuit,集成电路)芯片,所述IC芯片包括应用处理器AP、协处理器CP和人工智能AI芯片;
所述AP,用于向所述CP发送模型调用请求,所述模型调用请求用于请求调用目标AI模型;
所述CP,用于获取所述目标AI模型在系统主存上的存储地址;通过直接存储器访问DMA基于所述存储地址,将所述目标AI模型的可识别模型数据,从所述系统主存转移至AI芯片中;其中,所述可识别模型数据包括模型算子指令和模型权重数据;
所述AI芯片,用于基于所述可识别模型数据,运行所述目标AI模型。
又一方面,本申请实施例提供一种电子装置,所述电子装置包括上述方面所述的IC芯片。
本申请实施例提供的技术方案可以带来如下有益效果:
AP向CP发送模型调用请求,该模型调用请求用于请求调用目标AI模型;CP获取目标AI模型在系统主存上的存储地址;通过DMA基于该存储地址,将目标AI模型的可识别模型数据,从系统主存转移至AI芯片中;CP向AI芯片发送模型运行指令,以使得AI芯片运行目标AI模型。本申请实施例通过将AI模型的可识别数据发送到AI芯片中,以使得AI芯片可以运行该AI模型,从而解决了相关技术中第三方应用对应的AI模型无法获得AI芯片加速能力的问题。
附图说明
图1是相关技术中的AI模型的运行系统的示意图;
图2是本申请一个实施例提供的AI模型的运行系统的框架图;
图3是本申请一个实施例提供的AI模型的运行方法的流程图;
图4是本申请一个实施例提供的AI模型的加载方法的流程图;
图5是本申请另一个实施例提供的AI模型的运行方法的流程图;
图6是本申请提供的TensorFlow网络模型的结构示意图;
图7是本申请一个实施例提供的模型权重数据替换流程的示意图;
图8是本申请一个实施例提供的AI模型的运行方法的流程架构图;
图9是本申请一个实施例提供的AI模型的运行装置的框图;
图10是本申请另一个实施例提供的AI模型的运行装置的框图;
图11是本申请一个实施例提供的AI模型的加载装置的框图;
图12是本申请一个实施例提供的IC芯片的示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
首先,对本申请实施例涉及的相关名词进行介绍。
AI:AI是计算机学的一个综合技术,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。AI主要包括计算机视觉技术、语音处理技术、自然语言处理技术以及机器学习/深度学习等几大方向。
AI芯片:也可以称之为AI加速器或计算卡,是专门用于处理人工智能应用中的大量计算任务的芯片。AI芯片可以对图像、语音、视频等数据进行处理。可选地,AI芯片包括NPU(Neural-network Processing Unit,嵌入式神经网络处理器)、GPU(GraphicsProcessing Unit,视觉处理器)、FPGA(Field Programmable Gate Array,现场可编程逻辑阵列)、ASIC(Application Specific Integrated Circuit,专用集成电路)、类脑芯片、可重构通用AI芯片等。
AP(Application Processor,应用处理器):是在低功耗CPU(Central ProcessorUnit,中央处理器)的基础上扩展音视频功能和专用接口的超大规模集成电路,在终端中起着运算及调用其它功能构件的作用,集成了中央处理器、图形处理器、视频编解码器、内存子系统等多个模块。
CP(Co-Processor,协处理器):也可以称为协处理芯片或协处理模块,协处理芯片是一种协助主芯片完成其无法执行或执行效率低下或效果低下的处理工作而开发和应用的芯片,可以用于减轻主芯片的特定处理任务。主芯片无法执行的工作有很多,比如设备间的信号传输、接入设备的管理等;而执行效率低下或效果低下的有图形处理、声频处理、AI处理等。协处理芯片包括数学协处理芯片、图形协处理芯片、AI协处理芯片等。数学协处理芯片可以控制数字处理。图形协处理芯片可以处理视频绘制,图形协处理芯片是专门用来加快高分辨视频图像的处理和显示速度的处理芯片。含有图形协处理芯片的图形加速板可以加快图形用户界面的显示速度,通过将图形处理任务从主芯片转移到图形协处理芯片上,图形加速板可极大的提高系统显示应用程序的能力。AI协处理芯片可以专门用于处理人工智能应用中的大量计算任务的模块。
DDR SDRAM(Double Data Rate Synchronous Dynamic Random Access Memory,双倍速率同步动态随机存储器):DDR SDRAM也可以简称为DDR,是SOC(System on Chip,系统级芯片)上的主存。
LRU(Least Recently Used,最近很少使用):是一种内存置换算法。LRU根据数据的历史访问记录来进行淘汰数据,核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高”。
FIFO(First In First Out,先进先出):是一种内存置换算法,核心思想是“先进入的指令先完成并引退,跟着才执行第二条指令”。
DMA(Direct Memory Access,直接存储器访问):是指一种高速的数据传输操作,允许在外部设备和存储器之间直接读写数据,既不通过CPU,也不需要CPU干预。整个数据传输操作在一个称为“DMA控制器”的控制下进行,使得整个系统的效率大大提高。DMA通常有两种方式:独占总线方式和周期挪用方式。DMA可以包括:主存地址寄存器、数据数量计数器、DMA的控制/状态逻辑、DMA请求触发器、数据缓冲寄存器、中断机构。
AXI(Advanced eXtensible Interface,先进的可扩展接口):是一种总线协议,是一种面向高性能、高带宽、低延迟的片内总线。
在相关技术中,如图1所示,AI芯片所提供的内置AI模型在终端boot(启动)期间由AP和CP将其从Flash(闪存)搬运到AI芯片中,在终端boot结束后为终端中的各应用程序提供AI算子加速能力。AI模型(包括各网络的权重参数等)在AI芯片内部的内存布局已经确定,因此无法支持各第三方应用在后期动态切换各自的AI模型到AI芯片内部。如果第三方应用需要自行运行自研的AI模型往往只能将其转移到AP侧执行,而无法获得AI芯片的加速能力。
本申请实施例提供了一种AI模型的运行方法,CP接收来自于AP的模型调用请求,该模型调用请求用于请求调用目标AI模型;CP获取目标AI模型在系统主存上的存储地址;通过DMA基于该存储地址,将目标AI模型的可识别模型数据,从系统主存转移至AI芯片中;CP向AI芯片发送模型运行指令,以使得AI芯片运行目标AI模型。本申请实施例通过将AI模型的可识别数据发送到AI芯片中,以使得AI芯片可以运行该AI模型,从而解决了相关技术中第三方应用对应的AI模型无法获得AI芯片加速能力的问题。
下面,对本申请实施例进行介绍说明。
如图2所示,其示出了本申请一个实施例提供的AI模型的运行系统的框架图。该系统包括:AP210、系统主存220、DMA230、CP240、AI芯片250。
在本申请实施例中,AP210用于针对目标AI模型进行认证、编译、重组操作,得到可识别模型数据,可识别模型数据是指可以被AI芯片识别的模型数据。
系统主存220用于存储加密的可识别模型数据。在可能的实现方式中,系统主存通过系统主存控制器221与外界进行数据交互。
DMA230用于将系统主存220上的可识别模型数据移动到AI芯片250,例如,DMA230可以将可识别模型数据移动到AI芯片250的OCM(On Chip Memory,片上内存)251中。
在可能的实现方式中,AP210还可以对可识别模型数据执行加密操作,得到加密的可识别模型数据;并将加密的可识别模型数据放入系统主存220中。示例性地,AP210可以将加密后的可识别模型数据放入系统主存220的非安全区。此时,系统主存220用于存储加密的可识别模型数据,DMA230用于将系统主存220上的加密的可识别模型数据进行解密并将解密后的可识别模型数据移动到AI芯片250中。在可能的实现方式中,由于AI芯片250的存储空间有限,为了使得AI芯片有足够的空间容纳可识别模型数据,DMA230还用于将AI芯片250中的数据进行加密并将其移动到系统主存220中。
CP240是用于对AI芯片250进行控制的协处理器。在可能的实现方式中,CP240还可以处理来自于AI芯片250的中断指令。
AI芯片250是AI模型的硬件加速器。在本申请实施例中,AI模型可以包括以下至少一种:系统应用对应的AI模型、第三方应用对应的AI模型。
在可能的实现方式中,AP210、系统主存控制器221、DMA230、CP240、AI芯片250之间通过AXI总线(Matrix)进行信息交互。AXI总线包括AXI主接口和AXI从接口。AP210、DMA230、CP240使用AXI主接口进行信息交互;系统主存控制器221、AI芯片250使用AXI从接口进行信息交互。当然,在其它可能的实现方式中,还可以有其它形式的交互方式,本申请实施例对此不作限定。
请参考图3,其示出了本申请一个实施例提供的AI模型的运行方法的流程图。该方法可以应用于如图2所示的AI模型的运行系统中,该方法可以包括如下几个步骤。
步骤301,AP获取待加载的目标AI模型的原始模型数据。
目标AI模型可以是任意一个AI模型。AI模型可以是一种可以具有计算机视觉、自然语言处理等至少一项功能的网络模型。在可能的实现方式中,目标AI模型包括机器学习模型,机器学习模型可以包括深度学习模型。
示例性地,目标AI模型是第三方应用对应的AI模型,第三方应用是目标AI模型的所有方。
原始模型数据是指第三方应用对应的开发商编译完成的目标AI模型的模型数据。在可能的实现方式中,原始模型数据包括原始模型算子指令和原始模型权重(weight)数据。原始模型算子指令是指具备数据处理功能的算法指令,原始模型数据中可以包括至少一个原始模型算子指令,比如,卷子算子指令、池化算子指令、激励函数算子指令等。原始模型权重数据用于模型计算中某个指标所占的比重。
在可能的实现方式中,目标AI模型还可以是系统应用对应的AI模型,系统应用是终端厂商开发出来的应用。
步骤302,AP将原始模型数据转换为AI芯片的可识别模型数据。
在本申请实施例中,可识别模型数据包括模型算子指令和模型权重数据。模型算子指令是指具备数据处理功能的算法指令,可识别模型数据中可以包括至少一个模型算子指令,比如,卷子算子指令、池化算子指令、激励函数算子指令等。
本申请实施例将目标AI模型的各层操作(模型算子指令)以及各层操作对应的权重数据解析成AI芯片可识别的指令,便于AI芯片运行该目标AI模型。
步骤303,AP将可识别模型数据存储到系统主存中。
示例性地,系统主存包括DDR,AP将可识别模型数据存储到DDR中。DDR包括非安全区,AP可以将可识别模型数据存储到DDR的非安全区。
步骤304,CP接收来自于AP的模型调用请求。
在本申请实施例中,模型调用请求用于请求调用目标AI模型。
示例性地,CP通过DDR mailbox(邮箱)接收到来自于AP的模型调用请求。
步骤305,CP获取目标AI模型在系统主存上的存储地址。
在可能的实现方式中,系统主存中存储有多个AI模型的可识别模型数据,因此,为了快速及准确获取目标AI模型的可识别模型数据,模型调用请求中包括目标AI模型的标识信息,该目标AI模型的标识信息用于唯一标识该目标AI模型。CP可以基于目标AI模型的标识信息获取目标AI模型在系统主存上的存储地址。在可能的实现方式中,目标AI模型的可识别模型数据存储到系统主存中时,目标AI模型的标识信息以及该目标AI模型的可识别模型数据也对应保存了。
步骤306,CP通过DMA基于存储地址,将目标AI模型的可识别模型数据,从系统主存转移至AI芯片中。
示例性地,DMA包括安全DMA,CP通过安全DMA基于存储地址,将目标AI模型的可识别模型数据,从系统主存转移至AI芯片中。
在可能的实现方式中,CP除了获取目标AI模型在系统主存上的存储地址,还可以获取目标AI模型在系统主存上的layout(布局)信息。示例性地,layout信息用于指示以下至少一项信息:模型算子指令在系统主存中的位置,模型权重数据在系统主存中的位置、目标AI模型的各功能层对应的模型算子指令和模型权重数据在系统主存中的位置。CP可以基于存储地址以及layout信息开始配置DMA进行可识别模型数据的搬运。示例性地,CP将模型算子指令搬运到AI芯片的指令执行区域,将模型权重数据搬运到AI芯片的OCM上。
相应地,AI芯片获取系统主存中存储的目标AI模型的可识别模型数据。
步骤307,AI芯片接收来自于CP的模型运行指令。
在本申请实施例中,模型运行指令用于指示AI芯片运行目标AI模型。
CP通过AI芯片基于可识别模型数据,运行目标AI模型。在可能的实现方式中,CP向AI芯片发送模型运行指令,以使得AI芯片基于可识别模型数据,运行目标AI模型。
步骤308,响应于模型运行指令,AI芯片基于可识别模型数据,运行目标AI模型。
AI芯片在接收到模型运行指令后,由于目标AI模型的可识别模型数据已经存储在AI芯片中,因此AI芯片可以基于可识别模型数据,运行目标AI模型。
综上所述,本申请实施例提供的技术方案中,AP向CP发送模型调用请求,该模型调用请求用于请求调用目标AI模型;CP获取目标AI模型在系统主存上的存储地址;通过DMA基于该存储地址,将目标AI模型的可识别模型数据,从系统主存转移至AI芯片中;CP向AI芯片发送模型运行指令,以使得AI芯片运行目标AI模型。本申请实施例通过将AI模型的可识别数据发送到AI芯片中,以使得AI芯片可以运行该AI模型,从而解决了相关技术中第三方应用对应的AI模型无法获得AI芯片加速能力的问题。
另外,本申请实施例相较于相关技术中在AP上执行AI模型,AI芯片可以更快更高效的对AI模型运行进行硬件加速。
另外,本申请实施例相较于AP的高主频,AI芯片(例如,NPU)作为一个低功耗设备,对AI模型的运算效率更是事半功倍。且本申请实施例无需频繁唤醒AP。
另外,第三方应用对应的开发商有机会将云端AI模型移植到AI芯片本地执行,特别是在网络环境不稳定的情况下。
请参考图4,其示出了本申请一个实施例提供的AI模型的加载方法的流程图。该方法可以应用于如图2所示的AI模型的运行系统包括的AP中。该方法可以包括如下几个步骤:
步骤401,接收来自于第三方应用的模型加载请求。
在本申请实施例中,模型加载请求用于请求将目标AI模型加载至系统主存中,第三方应用是目标AI模型的所有方。第三方应用不同于系统应用。
目标AI模型可以是任意一个AI模型。AI模型可以是一种可以具有计算机视觉、自然语言处理等至少一项功能的网络模型。在可能的实现方式中,目标AI模型包括机器学习模型,机器学习模型可以包括深度学习模型。
示例性地,在此步骤之前,还包括模型生成认证阶段,在可能的实现方式中,模型生成认证阶段包括如下流程:由第三方应用对应的开发商进行目标AI模型的开发,得到开发完成的目标AI模型。第三方应用对应的开发商将目标AI模型发送给服务器(服务器可以是终端对应的服务器,服务器可以是一台服务器,也可以是多台服务器,还可以是由多台服务器组成的服务器集群),以使得服务器对目标AI模型进行认证授权,并对目标AI模型进行签名,只有经过认证的目标AI模型才能执行本申请实施例提供的AI模型的加载方法和AI模型的运行方法的流程,通过对AI模型进行授权以保证AI芯片不被非法应用劫持,保证了AI芯片的安全性。
需要说明的是,上文提到的终端是指运行有图2所示的AI模型的运行系统的电子设备,示例性地,该终端可以包括手机、平板电脑、PC(Personal Computer,个人计算机)、智能可穿戴设备、多媒体播放设备等电子设备。
在可能的实现方式中,终端中可以安装有第三方应用,也可以未安装有第三方应用,本申请实施例对此不作限定。
在可能的实现方式中,第三方应用可以通过调用OS(Operating System,操作系统)接口将目标AI模型加载到系统主存中。
步骤402,获取目标AI模型的数字签名信息。
数字签名信息用于指示目标AI模型的签名状态,数字签名信息可以是字符串,数字签名信息提供了目标AI模型来源的确定并能确定信息是否被篡改。
在可能的实现方式中,模型加载请求中携带目标AI模型的数字签名信息。AP接收来自于第三方应用的模型加载请求时,相应地,AP接收到目标AI模型的数字签名信息。
在可能的实现方式中,当AP接收到来自于第三方应用的模型加载请求后,向第三方应用对应的开发商发送签名获取请求,签名获取请求用于请求获取目标AI模型的数字签名信息;第三方应用对应的开发商接收到签名获取请求后,向AP发送数字签名信息。
步骤403,对数字签名信息进行验证。
AP对目标AI模型进行签名的验证,以确保目标AI模型经过服务器授权过。
示例性地,若服务器对目标AI模型进行认证授权过,则服务器会生成与目标AI模型唯一对应的一个标准数字签名信息。AP中可以预存有标准数字签名信息,该标准数字签名信息是指经过服务器授权后得到的数字签名信息。AP将数字签名信息与标准数字签名信息进行对比,响应于数字签名信息与标准数字签名信息一致,则表示该目标AI模型经过服务器授权过;响应于数字签名信息与标准签名信息不一致,则表示该目标AI模型未经过服务器授权过。
步骤404,在数字签名信息通过验证的情况下,获取待加载的目标AI模型的原始模型数据。
原始模型数据是指第三方应用对应的开发商编译完成的目标AI模型的模型数据。在可能的实现方式中,原始模型数据包括原始模型算子指令和原始模型权重(weight)数据。原始模型算子指令是指具备数据处理功能的算法指令,原始模型数据中可以包括至少一个原始模型算子指令,比如,卷积算子指令、池化算子指令、激励函数算子指令等。原始模型权重数据用于指示模型计算中某个指标所占的比重。
步骤405,将原始模型数据转换为AI芯片的可识别模型数据。
在本申请实施例中,可识别模型数据包括模型算子指令和模型权重数据。可识别模型数据是指可以被AI芯片识别处理的模型数据。
针对授权的目标AI模型,AP进行解析并重新编译成AI芯片可识别的模型算子指令及模型权重数据。在可能的实现方式中,AP通过编译器将原始模型数据转换为AI芯片的可识别模型数据。
本申请实施例将目标AI模型的各层操作(模型算子指令)以及各层操作对应的权重数据解析成AI芯片可识别的指令,便于AI芯片运行该目标AI模型。
步骤406,按照目标AI模型的层级结构,对可识别模型数据进行排序,得到排序后的可识别模型数据。
目标AI模型的层级结构用于指示目标AI模型的层级。
其中,排序后的可识别模型数据包括目标AI模型的多个功能层分别对应的模型算子指令和模型权重数据。示例性地,功能层包括卷积层、连接层、池化层、输入层、输出层等。
步骤407,将排序后的可识别模型数据存储到系统主存中。
在可能的实现方式中,排序后的可识别模型数据包括多个模型数据块,将多个模型数据块以分块存储的方式,存储到系统主存中。
在可能的实现方式中,由于模型权重数据所占内存较大,因此将模型权重数据划分为多个模型数据块。
在可能的实现方式中,由于模型算子指令所占内存较小,因此可以不用对模型算子指令进行划分,模型算子指令可能只包括一个模型数据块。
以AI模型为Tensorflow模型为例,编译后的指令以layer(模型算子指令)为基本单位。示例性地,Tensorflow模型的layer包括:layer0、layer1、layer2……layerN,N为正整数。相应地,Tensorflow模型的weight(模型权重数据)包括:weight0、weight1、weight2……weightN。每一个layer相应的会有其对应的weight(相同序号表示其是对应的layer和weight)。以序号为单位对layer及weight进行排序并对weight进行分块存储,由于weight的占用内存(size)可能会比较大。本申请实施例将模型权重数据进行分块存储,从而可以实现将DDR上的模型算子指令和模型权重数据快速高效的加载进AI芯片的OCM中。
在可能的实现方式中,可识别模型数据经加密后存储到系统主存中。下面以系统主存为DDR为例进行介绍说明,对排序好的layer及weight进行加密,并存放在DDR上,由于DDR可以会被其他IP(Internet Protocol,网际协议)地址访问到,所以需要对可识别模型数据(即,layer和weight)进行加密存放。
表1示出了本申请实施例提供的模型算子指令的存储方式,表2示出了本申请实施例提供的模型权重数据的存储方式(需要说明的是,表1和表2仅是示例性地,在其它可能的实现方式中,模型算子指令和模型权重数据还可以有其它存储方式)。
表1
layer0 | layer1 | layer2 | …… | layerN |
表2
block0 | weight0 | weight1 | …… | weight9 |
block1 | weight10 | weight11 | …… | weight19 |
…… | …… | …… | …… | …… |
blockM | weightN-9 | weightN-8 | …… | weightN |
需要说明的是,表2中的第一列仅是为了更直观的示意内存块,第一列用于指示内存块(可以表示为block)的标识(即,block0……blockM,M为正整数),在实际应用中,内存块的标识并不占用内存。示例性地,将内存空间分为一个个大小相等的分区,每个分区就是一个“页框”,或称“页帧”、“内存块”、“物理块”,每个页框有一个编号,即“页框号”(或者内存块号、页帧号、物理块号),页框号从0开始,每个内存块为4K。上述内存块的标识也称之为内存块号,即block0……blockM,block0……blockM也可以称之为block序号。
将AI模型的进程的地址空间也分为与页框大小相等的一个个区域,称为“页”或“页面”,每个页面也有一个编号,即“页号”,页号也是从0开始。通常进程的最后一个页面可能没有一个页框那么大,因此,页框不能太大,否则可能产生过大的内部碎片。操作系统以页框为单位为各个进程分配内存空间,进程的每个页面分别放入一个页框中,也就是说,进程的页面与内存的页框有一一对应的关系。各个页面不必连续存放。
需要说明的是,每个内存块中存放的weight数量的多少与weight的实际内存大小相关,表2仅是示例性的。
综上所述,本申请实施例提供的技术方案中,本申请实施例将目标AI模型的各层操作(模型算子指令)以及各层操作对应的权重数据解析成AI芯片可识别的指令,便于AI芯片运行该目标AI模型。
另外,本申请实施例通过对AI模型进行授权以保证AI芯片不被非法应用劫持,保证了AI芯片的安全性。
另外,本申请实施例将模型权重数据进行分块存储,从而可以实现将DDR上的模型算子指令和模型权重数据快速高效的加载进AI芯片的OCM中。
请参考图5,其示出了本申请另一个实施例提供的AI模型的运行方法的流程图,该方法可以应用于如图2所示的AI模型的运行系统中,该方法可以包括如下几个步骤。
步骤501,AP获取待加载的目标AI模型的原始模型数据。
步骤502,AP将原始模型数据转换为AI芯片的可识别模型数据。
在本申请实施例中,可识别模型数据包括模型算子指令和模型权重数据。
步骤503,AP将可识别模型数据存储到系统主存中。
步骤504,CP接收来自于应用处理器AP的模型调用请求。
在本申请实施例中,模型调用请求用于请求调用目标AI模型。
步骤505,CP获取目标AI模型在系统主存上的存储地址。
有关步骤501至步骤505的介绍说明可参见上文实施例,此处不再赘述。
步骤506,CP通过DMA基于存储地址,将目标AI模型的可识别模型数据,从系统主存转移至AI芯片中。
其中,可识别模型数据包括模型算子指令和模型权重数据。
在可能的实现方式中,可识别模型数据包括多个模型数据块,存储在系统主存中,CP用于通过DMA基于AI芯片的存储能力,将模型数据块分块转移至AI芯片中。
相应地,AI芯片获取系统主存中存储的目标AI模型的可识别模型数据。
通常模型权重数据的size有可能比较大,没办法一次全部搬运到AI芯片中,则会对其进行分块搬运。以目标AI模型为Tensorflow模型为例,CP通过DMA基于存储地址,将目标AI模型的模型权重数据从系统主存转移至AI芯片的OCM中,如上述表2所示,以OCM大小为50K为例,先将block0-block9搬运进AI芯片的OCM中,而后则启动AI芯片开始对Layer CMD(Command,命令提示符)解析执行,也即,CP向AI芯片发送模型运行指令,通过AI芯片基于可识别模型数据,运行目标AI模型。
步骤507,AI芯片接收来自于CP的模型运行指令。
在本申请实施例中,模型运行指令用于指示AI芯片运行目标AI模型。
步骤508,响应于模型运行指令,AI芯片基于可识别模型数据,运行目标AI模型。
步骤509,AI芯片在运行目标AI模型的过程中,若检测到AI芯片中存在缺失的模型数据块,则向CP发送中断指令。
在本申请实施例中,中断指令用于触发向所述AI芯片发送所述AI芯片在运行所述目标AI模型的过程中缺失的模型数据块。
相应地,CP接收来自于AI芯片的中断指令,中断指令用于触发CP向AI芯片发送AI芯片在运行目标AI模型的过程中缺失的模型数据块。
AI芯片一旦发现所需的模型权重数据缺失,则会触发CP中断,AI芯片向CP发送中断指令。
当要访问的页面不在内存时,便会产生一个缺页中断。此时缺页的进程阻塞,放入阻塞队列,调页完成后再将其唤醒,放回就绪队列。
步骤510,响应于中断指令,CP通过DMA将缺失的模型数据块,从系统主存转移至AI芯片中。
相应地,AI芯片接收DMA提供的缺失的模型数据块;其中,缺失的模型数据块是CP通过DMA从系统主存中获取的。
在发现缺页时,说明内存紧张,此时可以换出一些进程。示例性地,可以优先换出阻塞进程,可以换出优先级低的进程。为了防止优先级低的进程在被调入内存后很快又被换出,有的系统还会考虑进程在内存的驻留时间。在可能的实现方式中,如果缺页率明显下降,可以暂停换出。
在可能的实现方式中,此步骤包括如下几个子步骤:
步骤510a,CP获取缺失的模型数据块在AI芯片的OCM中的放置信息,放置信息用于指示OCM中放置缺失的模型数据块的目标内存块。
步骤510b,CP通过DMA在目标内存块写入缺失的模型数据块。
在可能的实现方式中,如果OCM中有空闲块,则为进程分配一个空闲块,将所缺失的模型数据块装入该空闲块,并修改页表中相应的页表项;如果OCM中没有空闲块,则由页面置换算法选择一个内存块淘汰,若该内存块在内存期间被修改过,则要将其写回内存,未修改过的内存块不用写回内存。
在可能的实现方式中,AI芯片通过LRU算法确定目标内存块。AI芯片内部维护有LRU队列,AI芯片将LRU队列(LRU queue)发送给OCM,LRU队列用于指示OCM中已存的模型数据块对应的内存块的使用次数。AI芯片通过OCM基于LRU队列确定放置缺失的模型数据块的目标内存块。LRU队列可以用于把队列中最近最少使用的数据淘汰掉。
AI芯片会将最近使用过的block序号更新到OCM mailbox(邮箱)中,CP将会通过DMA对模型权重数据进行缺页替换,此过程可以解决由于OCM size有限(数K到数M的存储空间),而模型权重数据size太大的问题。
LRU算法通常用于内存页面置换策略中,以目标AI模型为TensorFlow网络模型为例,图6示出了TensorFlow网络模型的结构示意图,基于机器学习的神经网络模型是一个有向无环图,图6中的每一个节点就是一个layer,在OCM空间充足的情况下其执行顺序会按序号顺序执行,即L(0)L(1)……L(8)。在OCM空间不足的情况下,由于L(6)对L(2)和L(5)的结果存在依赖,在L(5)计算完毕时L(2)的结果也许已经被覆盖,此情况下会对L(2)进行重新计算(recompute),从而打乱了顺序执行方案。基于此种考虑,TensorFlow模型中的layer执行顺序就不再是先进先出的顺序执行了,最近使用到的layer有可能被再次执行到,所以本申请实施例中的页面置换算法使用LRU而并非FIFO。
在AI芯片内部会维护一个LRU queue,在发生模型权重数据缺失时,AI芯片会向CP发送中断指令,同时将LRU queue发送到OCM mailbox,OCM mailbox基于LRU queue确定放置缺失的模型数据块的目标内存块,并将放置信息发送给CP,以使得CP基于放置信息配置DMA进行相应缺失的模型权重数据的搬运工作。当可识别模型数据是加密存储在系统主存中时,DMA会将数据进行解密之后将其写入到OCM上。
以系统主存为DDR为例,如图7所示,其示出了本申请一个实施例提供的模型权重数据替换流程的示意图。为了便于说明,图7中将block0简写为B0,将block1简写为B1,将blockM简写为BM,OCM中已经存储有B0……B9,当AI芯片运行目标AI模型时,发送存在缺失的模型数据块(如B10对应的模型数据块),AI芯片向CP发送中断指令,基于LRU算法,OCM确定B0对应的模型数据块不需要使用,则OCM将B0对应的内存块确定为目标内存块,CP通过DMA在目标内存块中写入B10对应的模型数据块;AI芯片继续运行目标AI模型,发现又存在缺失的模型数据块(如B11对应的可识别模型数据),则AI芯片向CP发送中断指令,基于LRU算法,OCM确定放置B11对应的模型数据块的目标内存块,CP通过DMA在目标内存块中写入B11对应的模型数据块。
步骤511,AI芯片在AI芯片的OCM中存储缺失的模型数据块。
在可能的实现方式中,AI芯片在OCM的目标内存块中存储缺失的模型数据块。
在可能的实现方式中,本申请实施例涉及的DMA可以是security DMA(安全DMA)。
综上所述,本申请实施例提供的技术方案中,通过使用LRU算法实现缺失的模型数据块的替换,解决了由于OCM内存空间有限,而模型权重数据太大的问题。
请参考图8,其示出了本申请一个实施例提供的AI模型的运行方法的流程架构图。假设AI芯片为NPU、系统主存为DDR。示例性地,AI模型的运行方法包括模型生成认证阶段、模型验证&编译阶段和模型执行阶段。在模型生成阶段中,第三方应用对应的开发商开发研制第三方应用对应的目标AI模型,并将目标AI模型发送给服务器进行认证授权,如果没有认证通过,则结束流程;如果认证通过,则进入模型验证&编译阶段。在模型验证&编译阶段,由AP对目标AI模型进行签名验证、编译解析、重组和加密操作,得到加密的可识别模型数据,并将加密的可识别模型数据存储至DDR中,DDR中存储有模型算子指令和模型权重数据。可识别模型数据包括多个模型数据块,存储在DDR中。在模型执行阶段,CP获取目标AI模型在DDR上的存储地址,通过安全DMA基于存储地址将目标AI模型的可识别模型数据从DDR转移至NPU中,通过NPU基于可识别模型数据,运行目标AI模型。NPU在运行目标AI模型的过程中,若检测到AI芯片中存在缺失的模型数据块,则向CP发送中断指令,该中断指令用于触发CP向NPU发送NPU在运行目标AI模型的过程中缺失的模型数据块。CP通过安全DMA将缺失的模型数据块,从DDR转移至NPU中。
需要说明的是,有关CP执行的步骤可以单独实现称为CP侧的AI模型的运行方法,有关AI芯片执行的步骤可以单独实现成为AI芯片侧的AI模型的运行方法,有关AP执行的步骤可以单独实现成为AP侧的AI模型的加载方法。
需要说明的是,本申请实施例提供的AI芯片一般是泛指所有用来加速AI应用,特别是基于神经网络的深度学习应用的硬件,它可以是一颗独立的芯片,也可以是芯片中的模块,本申请实施例对此不作限定。
下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。
请参考图9,其示出了本申请一个实施例提供的AI模型的运行装置的框图,该装置具有实现上述协处理器侧的AI模型的运行方法示例的功能,所述功能可以由硬件实现,也可以由硬件执行相应的软件实现。该装置900可以设置在协处理器上,也可以是协处理器,该装置900可以包括:
请求接收模块910,用于接收来自于应用处理器AP的模型调用请求,所述模型调用请求用于请求调用目标AI模型;
地址获取模块920,用于获取所述目标AI模型在系统主存上的存储地址;
数据转移模块930,用于通过直接存储器访问DMA基于所述存储地址,将所述目标AI模型的可识别模型数据,从所述系统主存转移至AI芯片中;其中,所述可识别模型数据包括模型算子指令和模型权重数据;
模型运行模块940,用于通过所述AI芯片基于所述可识别模型数据,运行所述目标AI模型。
综上所述,本申请实施例提供的技术方案中,AP向CP发送模型调用请求,该模型调用请求用于请求调用目标AI模型;CP获取目标AI模型在系统主存上的存储地址;通过DMA基于该存储地址,将目标AI模型的可识别模型数据,从系统主存转移至AI芯片中;CP向AI芯片发送模型运行指令,以使得AI芯片运行目标AI模型。本申请实施例通过将AI模型的可识别数据发送到AI芯片中,以使得AI芯片可以运行该AI模型,从而解决了相关技术中第三方应用对应的AI模型无法获得AI芯片加速能力的问题。
在示意性实施例中,所述可识别模型数据包括多个模型数据块,存储在所述系统主存中,所述DMA用于基于所述AI芯片的存储能力,将所述模型数据块分块转移至所述AI芯片中。
在示意性实施例中,所述装置还包括:指令接收模块(图中未示出)。
指令接收模块,用于接收来自于所述AI芯片的中断指令,所述中断指令用于触发向所述AI芯片发送所述AI芯片在运行所述目标AI模型的过程中缺失的模型数据块;
数据转移模块930,还用于响应于所述中断指令,通过所述DMA将所述缺失的模型数据块,从所述系统主存转移至所述AI芯片中。。
在示意性实施例中,所述数据转移模块930,用于:
获取所述缺失的模型数据块在所述AI芯片的OCM中的放置信息,所述放置信息用于指示所述OCM中放置所述缺失的模型数据块的目标内存块;
通过所述DMA在所述目标内存块写入所述缺失的模型数据块。
请参考图10,其示出了本申请另一个实施例提供的AI模型的运行装置的框图,该装置具有实现上述AI芯片侧的AI模型的运行方法示例的功能,所述功能可以由硬件实现,也可以由硬件执行相应的软件实现。该装置可以设置在AI芯片上,也可以是AI芯片,该装置1000可以包括:
数据获取模块1010,用于获取系统主存中存储的目标AI模型的可识别模型数据,所述可识别模型数据包括模型算子指令和模型权重数据;
指令接收模块1020,用于接收来自于协处理器CP的模型运行指令,所述模型运行指令用于指示AI芯片运行所述目标AI模型;
模型运行模块1030,用于响应于所述模型运行指令,基于所述可识别模型数据,运行所述目标AI模型。
综上所述,本申请实施例提供的技术方案中,AP向CP发送模型调用请求,该模型调用请求用于请求调用目标AI模型;CP获取目标AI模型在系统主存上的存储地址;通过DMA基于该存储地址,将目标AI模型的可识别模型数据,从系统主存转移至AI芯片中;CP向AI芯片发送模型运行指令,以使得AI芯片运行目标AI模型。本申请实施例通过将AI模型的可识别数据发送到AI芯片中,以使得AI芯片可以运行该AI模型,从而解决了相关技术中第三方应用对应的AI模型无法获得AI芯片加速能力的问题。
在示意性实施例中,所述可识别模型数据包括多个模型数据块存储在所述系统主存中,所述CP用于通过DMA基于所述AI芯片的存储能力,将所述模型数据块分块转移至所述AI芯片中。
在示意性实施例中,所述装置还包括:
指令发送模块(图中未示出),用于在运行所述目标AI模型的过程中,若检测到所述AI芯片中存在缺失的模型数据块,则向所述CP发送中断指令,所述中断指令用于触发所述CP向所述AI芯片发送所述AI芯片在运行所述目标AI模型的过程中缺失的模型数据块;
数据接收模块(图中未示出),用于接收所述DMA提供的所述缺失的模型数据块;其中,所述缺失的模型数据块是所述CP通过所述DMA从所述系统主存中获取的;
数据存储模块(图中未示出),用于在所述AI芯片的片上存储器OCM中存储所述缺失的模型数据块。
在示意性实施例中,所述装置还包括:
队列发送模块(图中未示出),用于将最近最少使用LRU队列发送给所述OCM,所述LRU队列用于指示已存的模型数据块对应的内存块的使用次数;
内存块确定模块(图中未示出),用于通过所述OCM基于所述LRU队列确定放置所述缺失的模型数据块的目标内存块;
所述数据存储模块,用于在所述OCM的所述目标内存块中存储所述缺失的模型数据块。
请参考图11,其示出了本申请一个实施例提供的AI模型的加载装置的框图,该装置具有实现上述应用处理器侧的AI模型的加载方法示例的功能,所述功能可以由硬件实现,也可以由硬件执行相应的软件实现。该装置可以是应用处理器,也可以设置在应用处理器上,该装置1100可以包括:
数据获取模块1110,用于获取待加载的目标AI模型的原始模型数据;
数据转换模块1120,用于将所述原始模型数据转换为AI芯片的可识别模型数据,所述可识别模型数据包括模型算子指令和模型权重数据;
数据存储模块1130,用于将所述可识别模型数据存储到系统主存中。
综上所述,本申请实施例提供的技术方案中,本申请实施例将目标AI模型的各层操作(模型算子指令)以及各层操作对应的权重数据解析成AI芯片可识别的指令,便于AI芯片运行该目标AI模型。
在示意性实施例中,数据存储模块1130,包括:
数据排序单元,用于按照所述目标AI模型的层级结构,对所述可识别模型数据进行排序,得到排序后的可识别模型数据;其中,所述排序后的可识别模型数据包括所述目标AI模型的多个功能层分别对应的模型算子指令和模型权重数据;
数据存储单元,用于将所述排序后的可识别模型数据存储到所述系统主存中。
在示意性实施例中,所述排序后的可识别模型数据包括多个模型数据块;
数据存储单元,用于:
将所述多个模型数据块以分块存储的方式,存储到所述系统主存中。
在示意性实施例中,所述装置,还包括:
请求接收模块(图中未示出),用于接收来自于第三方应用的模型加载请求,所述模型加载请求用于请求将所述目标AI模型加载至所述系统主存中,所述第三方应用是所述目标AI模型的所有方;
信息获取模块(图中未示出),用于获取所述目标AI模型的数字签名信息;
信息验证模块(图中未示出),用于对所述数字签名信息进行验证;
数据获取模块1110,用于在所述数字签名信息通过验证的情况下,从所述获取待加载的目标AI模型的原始模型数据的步骤开始执行。
在示意性实施例中,所述可识别模型数据经加密后存储到所述系统主存中。
需要说明的是,上述实施例提供的装置在实现其功能时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的装置与方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
需要说明的是,上述功能可以是可以执行的程序功能模块,也可以是硬件电路功能模块,还可以是专用集成电路模块,本申请实施例对此不作限定。
请参考图12,其示出了本申请一个实施例提供的IC芯片的示意图,该IC芯片1200包括:AP1210、CP1220和AI芯片1230。
在可能的实现方式中,IC芯片1200还包括系统主存1240。
所述AP1210,用于向所述CP1220发送模型调用请求,所述模型调用请求用于请求调用目标AI模型;
所述CP1220,用于获取所述目标AI模型在系统主存1240上的存储地址;通过直接存储器访问DMA基于所述存储地址,将所述目标AI模型的可识别模型数据,从所述系统主存1240转移至AI芯片1230中;其中,所述可识别模型数据包括模型算子指令和模型权重数据;
所述AI芯片1230,用于基于所述可识别模型数据,运行所述目标AI模型。
综上所述,本申请实施例提供的技术方案中,AP1210向CP1220发送模型调用请求,该模型调用请求用于请求调用目标AI模型;CP1220获取目标AI模型在系统主存1240上的存储地址;通过DMA基于该存储地址,将目标AI模型的可识别模型数据,从系统主存1240转移至AI芯片1230中;CP1220向AI芯片1230发送模型运行指令,以使得AI芯片1230运行目标AI模型。本申请实施例通过将AI模型的可识别数据发送到AI芯片1230中,以使得AI芯片1230可以运行该AI模型,从而解决了相关技术中第三方应用对应的AI模型无法获得AI芯片1230加速能力的问题。
在示意性实施例中,所述可识别模型数据包括多个模型数据块,存储在所述系统主存1240中,所述CP1220用于通过DMA基于所述AI芯片1230的存储能力,将所述模型数据块分块转移至所述AI芯片1230中。
在示意性实施例中,所述AI芯片1230,还用于在运行所述目标AI模型的过程中,若检测到所述AI芯片1230中存在缺失的模型数据块,则向所述CP1220发送中断指令,所述中断指令用于触发所述CP1220向所述AI芯片1230发送所述AI芯片1230在运行所述目标AI模型的过程中缺失的模型数据块;
所述CP1220,还用于响应于所述中断指令,通过所述DMA将所述缺失的模型数据块,从所述系统主存1240转移至所述AI芯片1230中;
所述AI芯片1230,还用于在所述AI芯片1230的片上存储器OCM中存储所述缺失的模型数据块。
在示意性实施例中,所述CP1220,还用于:
获取所述缺失的模型数据块在所述AI芯片1230的OCM中的放置信息,所述放置信息用于指示所述OCM中放置所述缺失的模型数据块的目标内存块;
通过所述DMA在所述目标内存块写入所述缺失的模型数据块。
在示意性实施例中,所述AI芯片1230,还用于:
将最近最少使用LRU队列发送给所述OCM,所述LRU队列用于指示已存的模型数据块对应的内存块的使用次数;
通过所述OCM基于所述LRU队列确定放置所述缺失的模型数据块的目标内存块;
在所述OCM的所述目标内存块中存储所述缺失的模型数据块。
在示意性实施例中,所述AP1210,还用于:
获取待加载的所述目标AI模型的原始模型数据;
将所述原始模型数据转换为所述AI芯片1230的可识别模型数据;
将所述可识别模型数据存储到所述系统主存1240中。
在示意性实施例中,所述AP1210,还用于:
按照所述目标AI模型的层级结构,对所述可识别模型数据进行排序,得到排序后的可识别模型数据;其中,所述排序后的可识别模型数据包括所述目标AI模型的多个功能层分别对应的模型算子指令和模型权重数据;
将所述排序后的可识别模型数据存储到所述系统主存1240中。
在示意性实施例中,所述排序后的可识别模型数据包括多个模型数据块;
所述CP1220,还用于:
将所述多个模型数据块以分块存储的方式,存储到所述系统主存1240中。
在示意性实施例中,所述CP1220,还用于:
接收来自于第三方应用的模型加载请求,所述模型加载请求用于请求将所述目标AI模型加载至所述系统主存1240中,所述第三方应用是所述目标AI模型的所有方;
获取所述目标AI模型的数字签名信息;
对所述数字签名信息进行验证;
在所述数字签名信息通过验证的情况下,从所述获取待加载的目标AI模型的原始模型数据的步骤开始执行。
在示意性实施例中,所述可识别模型数据经加密后存储到所述系统主存1240中。
在示意性实施例中,本申请实施例还提供了一种电子装置,所述电子装置包括如上述实施例所述的IC芯片。该电子装置可以是手机、平板电脑等终端,本申请实施例对此不作限定。
在示意性实施例中,提供了一种终端,该终端包括协处理器、人工智能AI芯片、应用处理器、存储器,存储器存储有计算机程序,计算机程序由协处理器加载并执行以实现如协处理器侧的AI模型的运行方法,计算机程序由AI芯片加载并执行以实现如AI芯片侧的AI模型的运行方法,计算机程序由应用处理器加载并执行以实现如应用处理器侧的AI模型的加载方法。
在示例性实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,所述计算机程序由处理器加载并执行以实现如协处理器侧的AI模型的运行方法,所述计算机程序由AI芯片加载并执行以实现如AI芯片侧的AI模型的运行方法,所述计算机程序由应用处理器加载并执行以实现如应用处理器侧的AI模型的加载方法。
在示例性实施例中,提供了一种计算机程序产品,该计算机程序产品包括计算机指令,该计算机指令存储在计算机可读存储介质中。终端的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该终端执行上述协处理器侧的AI模型的运行方法,或实现如AI芯片侧的AI模型的运行方法,或实现如应用处理器侧的AI模型的加载方法。
以上所述仅为本申请的示例性实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (24)
1.一种人工智能AI模型的运行方法,其特征在于,所述方法包括:
接收来自于应用处理器AP的模型调用请求,所述模型调用请求用于请求调用目标AI模型;
获取所述目标AI模型在系统主存上的存储地址;
通过直接存储器访问DMA基于所述存储地址,将所述目标AI模型的可识别模型数据,从所述系统主存转移至AI芯片中;其中,所述可识别模型数据包括模型算子指令和模型权重数据;
通过所述AI芯片基于所述可识别模型数据,运行所述目标AI模型。
2.根据权利要求1所述的方法,其特征在于,所述可识别模型数据包括多个模型数据块,存储在所述系统主存中,所述DMA用于基于所述AI芯片的存储能力,将所述模型数据块分块转移至所述AI芯片中。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
接收来自于所述AI芯片的中断指令,所述中断指令用于触发向所述AI芯片发送所述AI芯片在运行所述目标AI模型的过程中缺失的模型数据块;
响应于所述中断指令,通过所述DMA将所述缺失的模型数据块,从所述系统主存转移至所述AI芯片中。
4.根据权利要求3所述的方法,其特征在于,所述通过所述DMA将所述缺失的可识别模型数据,从所述系统主存转移至所述AI芯片中,包括:
获取所述缺失的模型数据块在所述AI芯片的OCM中的放置信息,所述放置信息用于指示所述OCM中放置所述缺失的模型数据块的目标内存块;
通过所述DMA在所述目标内存块写入所述缺失的模型数据块。
5.一种人工智能AI模型的运行方法,其特征在于,所述方法包括:
获取系统主存中存储的目标AI模型的可识别模型数据,所述可识别模型数据包括模型算子指令和模型权重数据;
接收来自于协处理器CP的模型运行指令,所述模型运行指令用于指示AI芯片运行所述目标AI模型;
响应于所述模型运行指令,基于所述可识别模型数据,运行所述目标AI模型。
6.根据权利要求5所述的方法,其特征在于,所述可识别模型数据包括多个模型数据块存储在所述系统主存中,所述CP用于通过DMA基于所述AI芯片的存储能力,将所述模型数据块分块转移至所述AI芯片中。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
在运行所述目标AI模型的过程中,若检测到所述AI芯片中存在缺失的模型数据块,则向所述CP发送中断指令,所述中断指令用于触发所述CP向所述AI芯片发送所述AI芯片在运行所述目标AI模型的过程中缺失的模型数据块;
接收所述DMA提供的所述缺失的模型数据块;其中,所述缺失的模型数据块是所述CP通过所述DMA从所述系统主存中获取的;
在所述AI芯片的片上存储器OCM中存储所述缺失的模型数据块。
8.根据权利要求7所述的方法,其特征在于,所述在所述AI芯片的OCM中存储所述缺失的模型数据块之前,还包括:
将最近最少使用LRU队列发送给所述OCM,所述LRU队列用于指示已存的模型数据块对应的内存块的使用次数;
通过所述OCM基于所述LRU队列确定放置所述缺失的模型数据块的目标内存块;
所述在所述AI芯片的片上存储器OCM中存储所述缺失的模型数据块,包括:
在所述OCM的所述目标内存块中存储所述缺失的模型数据块。
9.一种人工智能AI模型的加载方法,其特征在于,所述方法包括:
获取待加载的目标AI模型的原始模型数据;
将所述原始模型数据转换为AI芯片的可识别模型数据,所述可识别模型数据包括模型算子指令和模型权重数据;
将所述可识别模型数据存储到系统主存中。
10.根据权利要求9所述的方法,其特征在于,所述将所述可识别模型数据存储到系统主存中,包括:
按照所述目标AI模型的层级结构,对所述可识别模型数据进行排序,得到排序后的可识别模型数据;其中,所述排序后的可识别模型数据包括所述目标AI模型的多个功能层分别对应的模型算子指令和模型权重数据;
将所述排序后的可识别模型数据存储到所述系统主存中。
11.根据权利要求10所述的方法,其特征在于,所述排序后的可识别模型数据包括多个模型数据块;
所述将所述排序后的可识别模型数据存储到所述系统主存中,包括:
将所述多个模型数据块以分块存储的方式,存储到所述系统主存中。
12.根据权利要求9所述的方法,其特征在于,所述方法还包括:
接收来自于第三方应用的模型加载请求,所述模型加载请求用于请求将所述目标AI模型加载至所述系统主存中,所述第三方应用是所述目标AI模型的所有方;
获取所述目标AI模型的数字签名信息;
对所述数字签名信息进行验证;
在所述数字签名信息通过验证的情况下,从所述获取待加载的目标AI模型的原始模型数据的步骤开始执行。
13.根据权利要求9所述的方法,其特征在于,所述可识别模型数据经加密后存储到所述系统主存中。
14.一种人工智能AI模型的运行装置,其特征在于,所述装置包括:
请求接收模块,用于接收来自于应用处理器AP的模型调用请求,所述模型调用请求用于请求调用目标AI模型;
地址获取模块,用于获取所述目标AI模型在系统主存上的存储地址;
数据转移模块,用于通过直接存储器访问DMA基于所述存储地址,将所述目标AI模型的可识别模型数据,从所述系统主存转移至AI芯片中;其中,所述可识别模型数据包括模型算子指令和模型权重数据;
模型运行模块,用于通过所述AI芯片基于所述可识别模型数据,运行所述目标AI模型。
15.一种人工智能AI模型的运行装置,其特征在于,所述装置包括:
数据获取模块,用于获取系统主存中存储的目标AI模型的可识别模型数据,所述可识别模型数据包括模型算子指令和模型权重数据;
指令接收模块,用于接收来自于协处理器CP的模型运行指令,所述模型运行指令用于指示AI芯片运行所述目标AI模型;
模型运行模块,用于响应于所述模型运行指令,基于所述可识别模型数据,运行所述目标AI模型。
16.一种人工智能AI模型的加载装置,其特征在于,所述装置包括:
数据获取模块,用于获取待加载的目标AI模型的原始模型数据;
数据转换模块,用于将所述原始模型数据转换为AI芯片的可识别模型数据,所述可识别模型数据包括模型算子指令和模型权重数据;
数据存储模块,用于将所述可识别模型数据存储到系统主存中。
17.一种集成电路IC芯片,其特征在于,所述IC芯片包括应用处理器AP、协处理器CP和人工智能AI芯片;
所述AP,用于向所述CP发送模型调用请求,所述模型调用请求用于请求调用目标AI模型;
所述CP,用于获取所述目标AI模型在系统主存上的存储地址;通过直接存储器访问DMA基于所述存储地址,将所述目标AI模型的可识别模型数据,从所述系统主存转移至AI芯片中;其中,所述可识别模型数据包括模型算子指令和模型权重数据;
所述AI芯片,用于基于所述可识别模型数据,运行所述目标AI模型。
18.根据权利要求17所述的IC芯片,其特征在于,所述可识别模型数据包括多个模型数据块,存储在所述系统主存中,所述CP用于通过DMA基于所述AI芯片的存储能力,将所述模型数据块分块转移至所述AI芯片中。
19.根据权利要求18所述的IC芯片,其特征在于,
所述AI芯片,还用于在运行所述目标AI模型的过程中,若检测到所述AI芯片中存在缺失的模型数据块,则向所述CP发送中断指令,所述中断指令用于触发所述CP向所述AI芯片发送所述AI芯片在运行所述目标AI模型的过程中缺失的模型数据块;
所述CP,还用于响应于所述中断指令,通过所述DMA将所述缺失的模型数据块,从所述系统主存转移至所述AI芯片中;
所述AI芯片,还用于在所述AI芯片的片上存储器OCM中存储所述缺失的模型数据块。
20.根据权利要求19所述的IC芯片,其特征在于,所述CP,还用于:
获取所述缺失的模型数据块在所述AI芯片的OCM中的放置信息,所述放置信息用于指示所述OCM中放置所述缺失的模型数据块的目标内存块;
通过所述DMA在所述目标内存块写入所述缺失的模型数据块。
21.根据权利要求19所述的IC芯片,其特征在于,所述AI芯片,还用于:
将最近最少使用LRU队列发送给所述OCM,所述LRU队列用于指示已存的模型数据块对应的内存块的使用次数;
通过所述OCM基于所述LRU队列确定放置所述缺失的模型数据块的目标内存块;
在所述OCM的所述目标内存块中存储所述缺失的模型数据块。
22.根据权利要求17所述的IC芯片,其特征在于,所述AP,还用于:
获取待加载的所述目标AI模型的原始模型数据;
将所述原始模型数据转换为所述AI芯片的可识别模型数据;
将所述可识别模型数据存储到所述系统主存中。
23.根据权利要求22所述的IC芯片,其特征在于,所述AP,还用于:
按照所述目标AI模型的层级结构,对所述可识别模型数据进行排序,得到排序后的可识别模型数据;其中,所述排序后的可识别模型数据包括所述目标AI模型的多个功能层分别对应的模型算子指令和模型权重数据;
将所述排序后的可识别模型数据存储到所述系统主存中。
24.一种电子装置,其特征在于,所述电子装置包括如权利要求17至23任一项所述的IC芯片。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011630760.2A CN114691566A (zh) | 2020-12-31 | 2020-12-31 | Ai模型的运行方法、加载方法、装置及ic芯片 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011630760.2A CN114691566A (zh) | 2020-12-31 | 2020-12-31 | Ai模型的运行方法、加载方法、装置及ic芯片 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114691566A true CN114691566A (zh) | 2022-07-01 |
Family
ID=82134540
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011630760.2A Pending CN114691566A (zh) | 2020-12-31 | 2020-12-31 | Ai模型的运行方法、加载方法、装置及ic芯片 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114691566A (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110430444A (zh) * | 2019-08-12 | 2019-11-08 | 北京中科寒武纪科技有限公司 | 一种视频流处理方法及系统 |
CN110458294A (zh) * | 2019-08-19 | 2019-11-15 | Oppo广东移动通信有限公司 | 模型运行方法、装置、终端及存储介质 |
CN110764905A (zh) * | 2019-09-24 | 2020-02-07 | Oppo广东移动通信有限公司 | 网络模型生成方法、装置、计算机设备以及存储介质 |
CN111427677A (zh) * | 2020-03-20 | 2020-07-17 | 网易(杭州)网络有限公司 | 人工智能产品的生成方法、装置和服务器 |
CN112114892A (zh) * | 2020-08-11 | 2020-12-22 | 北京奇艺世纪科技有限公司 | 深度学习模型的获取方法、加载方法及选取方法 |
-
2020
- 2020-12-31 CN CN202011630760.2A patent/CN114691566A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110430444A (zh) * | 2019-08-12 | 2019-11-08 | 北京中科寒武纪科技有限公司 | 一种视频流处理方法及系统 |
CN110458294A (zh) * | 2019-08-19 | 2019-11-15 | Oppo广东移动通信有限公司 | 模型运行方法、装置、终端及存储介质 |
CN110764905A (zh) * | 2019-09-24 | 2020-02-07 | Oppo广东移动通信有限公司 | 网络模型生成方法、装置、计算机设备以及存储介质 |
CN111427677A (zh) * | 2020-03-20 | 2020-07-17 | 网易(杭州)网络有限公司 | 人工智能产品的生成方法、装置和服务器 |
CN112114892A (zh) * | 2020-08-11 | 2020-12-22 | 北京奇艺世纪科技有限公司 | 深度学习模型的获取方法、加载方法及选取方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3667496B1 (en) | Distributed computing system, data transmission method and device in distributed computing system | |
CN102105871B (zh) | 虚拟处理设备的中断控制 | |
CN111258744A (zh) | 一种基于异构计算的任务处理方法及软硬件框架系统 | |
US11003429B1 (en) | Compile-time scheduling | |
US11226906B2 (en) | Devices and methods for secured processors | |
US20180314550A1 (en) | Cluster topology aware container scheduling for efficient data transfer | |
US20210158131A1 (en) | Hierarchical partitioning of operators | |
Yan et al. | A reconfigurable processor architecture combining multi-core and reconfigurable processing unit | |
CN115774686A (zh) | 使用地址签名防止未经授权的转换访问 | |
US20150200807A1 (en) | Dynamic server to server configuration and initialization | |
CN108829530B (zh) | 一种图像处理方法及装置 | |
CN110162395B (zh) | 一种内存分配的方法及装置 | |
WO2016008317A1 (zh) | 数据处理方法和中心节点 | |
CN101751356B (zh) | 用于改进直接存储器存取传送效率的方法、系统和装置 | |
CN114691566A (zh) | Ai模型的运行方法、加载方法、装置及ic芯片 | |
US10909043B2 (en) | Direct memory access (DMA) controller, device and method using a write control module for reorganization of storage addresses in a shared local address space | |
US11061654B1 (en) | Synchronization of concurrent computation engines | |
CN109543835B (zh) | 运算方法、装置及相关产品 | |
EP3579135B1 (en) | Methods and devices for hardware characterization of computing devices | |
CN113239347B (zh) | 一种适用于tee安全应用实例的启动方法及装置 | |
CN114650436B (zh) | 基于后台服务的遥控方法、装置、设备及介质 | |
US11941383B1 (en) | Compilation with caching of code analysis result | |
US10929063B1 (en) | Assisted indirect memory addressing | |
WO2019061271A1 (zh) | 一种数据加密的加速方法和系统 | |
JP2023549692A (ja) | 分割乱数生成器 |
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 |