CN110569106A - 代码加载方法、装置、电子设备及计算机可读介质 - Google Patents
代码加载方法、装置、电子设备及计算机可读介质 Download PDFInfo
- Publication number
- CN110569106A CN110569106A CN201910798420.1A CN201910798420A CN110569106A CN 110569106 A CN110569106 A CN 110569106A CN 201910798420 A CN201910798420 A CN 201910798420A CN 110569106 A CN110569106 A CN 110569106A
- Authority
- CN
- China
- Prior art keywords
- kernel
- code
- operating system
- program code
- loading
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/447—Target code generation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45516—Runtime code conversion or optimisation
- G06F9/4552—Involving translation to a different instruction set architecture, e.g. just-in-time translation in a JVM
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
- G06F8/451—Code distribution
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本申请公开了一种代码加载方法、装置、电子设备及计算机可读介质,涉及操作系统开发领域,所述方法包括:获取人工智能模型的描述文件;将所述描述文件转化成目标程序代码;通过扩展的巴克利数据包过滤器将目标程序代码转换为内核代码,并加载到所述操作系统内核中。本申请能够避免用户直接在操作系统内核的环境下通过硬件语言编写人工智能模型的代码,能够减少操作系统级的稳定性风险,避免在实际操作过程中会导致开发、测试周期变长,稳定性降低等负面影响。
Description
技术领域
本申请涉及操作系统开发领域,更具体地,涉及一种代码加载方法、装置、电子设备及计算机可读介质。
背景技术
在现有的技术方案中,如果想要在操作系统内核中运行神经网络算法。常用的方法是由程序员将该算法针对操作系统内核进行硬编码,并与操作系统一同发布。在实际开发过程中,由于牵涉到修改操作系统内核,会带来大量操作系统级的稳定性风险。在实际操作过程中会导致开发、测试周期变长,稳定性降低等负面影响。
发明内容
本申请提出了一种代码加载方法、装置、电子设备及计算机可读介质,以改善上述缺陷。
第一方面,本申请实施例提供了一种代码加载方法,应用于电子设备,所述电子设备包括操作系统内核,所述方法包括:获取人工智能模型的描述文件;将所述描述文件转化成目标程序代码;通过扩展的巴克利数据包过滤器将目标程序代码转换为内核代码,并加载到所述操作系统内核中。
第二方面,本申请实施例还提供了代码加载装置,应用于电子设备,所述电子设备包括操作系统内核,所述装置包括:获取单元、转换单元和加载单元。获取单元,用于获取人工智能模型的描述文件。转换单元,用于将所述描述文件转化成目标程序代码。加载单元,用于通过扩展的巴克利数据包过滤器将目标程序代码转换为内核代码,并加载到所述操作系统内核中。
第三方面,本申请实施例还提供了一种电子设备包括:一个或多个处理器;存储器;操作系统内核;一个或多个应用程序,其中所述一个或多个应用程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个程序配置用于执行上述方法。
第四方面,本申请实施例还提供了一种计算机可读介质,所述计算机可读存储介质中存储有程序代码,所述程序代码可被处理器调用执行。
本申请提供的方案,获取人工智能模型的描述文件;将所述描述文件转化成目标程序代码;通过扩展的巴克利数据包过滤器将目标程序代码转换为内核代码,并加载到所述操作系统内核中。因此,程序员可以直接设计人工智能模型,并且将该人工智能模型的描述文件通过本方法转换为内核代码,然后,将给内核代码加载待操作系统内核中运行,从而能够避免用户直接在操作系统内核的环境下通过硬件语言编写人工智能模型的代码,能够减少操作系统级的稳定性风险,避免在实际操作过程中会导致开发、测试周期变长,稳定性降低等负面影响。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本申请实施例提供的操作系统内核的模块框图;
图2示出了本申请一实施例提供的一种代码加载方法的方法流程图;
图3示出了本申请另一实施例提供的一种代码加载方法的方法流程图;
图4示出了本申请实施例提供的TVM工具的代码转换流程的示意图;
图5示出了本申请实施例提供的图3所示的方法中步骤S330的方法流程图;
图6示出了本申请又一实施例提供的一种代码加载方法的方法流程图;
图7示出了本申请再又一实施例提供的一种代码加载方法的方法流程图;
图8示出了本申请实施例提供的代码加载装置的模块框图;
图9示出了本申请实施例提供的电子设备的结构框图;
图10示出了本申请实施例的用于保存或者携带实现根据本申请实施例的代码加载方法的程序代码的存储单元。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
请参阅图1,图1示出了操作系统的结构示意图。具体地,操作系统可以包括操作系统内核和基础运行库,其中,基础运行库可以是图1的库函数。具体地,如图1所示,操作系统为Linux操作系统,则该Linux内核只是Linux操作系统一部分。一方面,该操作系统内核管理电子设备的所有硬件设备;另外,该操作系统内核通过系统调用,向库函数(例如C库)或者其它应用程序提供接口。
大部分操作系统相关的功能如任务调度、内存管理、IO管理、设备管理等都在内核部分完成。具体地,Linux内核提出了5个子系统,分别负责如下的功能:
1.进程调度(process scheduler)。负责管理CPU资源,以便让各个进程可以以尽量公平的方式访问CPU。
2.内存管理(memory manager),。负责管理内存(memory)资源,以便让各个进程可以安全地共享机器的内存资源。另外,内存管理会提供虚拟内存的机制,该机制可以让进程使用多于系统可用Memory的内存,不用的内存会通过文件系统保存在外部非易失存储器中,需要使用的时候,再取回到内存中。
3.虚拟文件系统(virtual file system,VFS)。Linux内核将不同功能的外部设备,例如,Disk设备(硬盘、磁盘、NAND Flash、Nor Flash等)、输入输出设备、显示设备等等,抽象为可以通过统一的文件操作接口来访问。
4.网络(Network)。负责管理系统的网络设备,并实现多种多样的网络标准。
5.进程间通信(inter-process communication,IPC)。IPC不管理任何的硬件,它主要负责Linux系统中进程之间的通信。
内核空间相对于用户空间有以下特点:
1.所有在内核空间运行的程序共享同一片地址映射。
2.内核空间无法运行用户空间提供的大量运行库。
3.内核空间拥有高权限。
4.内核空间的核心功能不能通过模块等形式从外部加载,只能与内核本身编译在一起。
由于上述特点,导致操作系统内核中大多数情况只会使用简单的算法。从而限制了内核在某些情况下的效果。比如内核网络子系统中的数据包过滤算法,只能采用一些简单的规则。
因而,发明人在研究中发现,操作系统内核由于具备上述的特点,导致程序员如果想要在操作系统内核中运行神经网络算法。常用的方法是将该算法针对操作系统内核进行人工写入硬件代码,这种方法要求开发人员同事拥有大量人工智能算法和内核相关知识。并且在实际开发过程中,由于牵涉到修改操作系统内核,会带来大量操作系统级的稳定性风险。在实际操作过程中会导致开发、测试周期变长,稳定性降低等负面影响。
因此,为了克服上述缺陷,本申请实施例提供了一种代码加载方法,应用于电子设备,所述电子设备包括操作系统内核。如图2所示,所述方法包括:S210至S230。
S210:获取人工智能模型的描述文件。
于本申请实施例,可以通过常用人工智能网络框架,如tensorflow、caffe或pytorch等训练人工智能神经网络。训练好的神经网络以标准的形式保存,则本申请实施例中,该人工智能模型的描述文件就是该人工智能模型训好之后被保存的该标准的形式。例如,通过tensorflow架构训练得到人工智能模型,则得到的人工智能模型的描述文件是通过tensorflow架构训练得到人工智能模型的.pb文件。
S220:将所述描述文件转化成目标程序代码。
其中,目标程序代码可以是高级编程语言。例如,python、C++或java等。通过一些软件工具能够将描述文件转化成目标程序代码,具体地,该软件工具可以是张量虚拟机(Tensor Virtual Machine,TVM)或者低级虚拟机(lower level virtual machine,LLVM)等,具体地转换方式在后续实施例中说明。
S230:通过扩展的巴克利数据包过滤器模块将目标程序代码转换为内核代码,并加载到所述操作系统内核中。
扩展的巴克利数据包过滤器(extended berkeley packet filter,eBPF)是在巴克利数据包过滤器(berkeley packet filter,BPF)的架构上扩展的一个指令集更复杂、应用范围更广的“内核虚拟机”。
eBPF支持在用户侧将C语言编写的“内核代码”注入到内核中运行,注入时要先编译得到使用BPF指令集的elf文件,然后从elf文件中解析出可以注入内核的部分,最后用bpf_load_program方法完成注入。用户侧的程序和注入到内核中的程序通过共用一个位于内核中map实现通信。
因此,通过eBPF能够将C语言编写的目标程序代码解析成能够被机器识别的机器语言,于本申请实施例中,所述操作系统内核可以是Linux内核,而所述内核代码为能够在所述操作系统内核运行的二进制程序。其中,二进制程序是指由二进制代码编写的程序,具体地,二进制代码语言或称为机器语言,计算机可以直接识别,不需要进行任何翻译的语言。每台机器的指令,其格式和代码所代表的含义都是硬性规定的,故称之为面向机器的语言,也称为机器语言。它是第一代的计算机语言,机器语言对不同型号的计算机来说一般是不同的。
直接用二进制代码指令表达的计算机语言,指令是用0和1组成的一串代码,它们有一定的位数,并分成若干段,各段的编码表示不同的含义,例如,某台计算机字长为16位,即有16个二进制数组成一条指令或其它信息。16个0和1可组成各种排列组合,通过线路变成电信号,让计算机执行各种不同的操作。
因此,通过eBPF模块将目标程序代码转换为内核代码,并加载到所述操作系统内核中,使得程序员能够直接通过高级语言,例如,C语言,编写程序,然后,再转换成内核代码,而使得用户不需要在操作系统内核的环境下编写代码。因此,程序员可以直接设计人工智能模型,并且将该人工智能模型的描述文件通过本方法转换为内核代码,然后,将给内核代码加载待操作系统内核中运行,从而能够避免用户直接在操作系统内核的环境下通过硬件语言编写人工智能模型的代码,能够减少操作系统级的稳定性风险,避免在实际操作过程中会导致开发、测试周期变长,稳定性降低等负面影响。
具体地,在使用时,程序员可以在人工智能网络框架开发并训练完成人工智能模型,得到人工智能模型的描述文件,然后,将该描述文件转换成目标程序代码,然后,再在一个预先在操作系统内核中植入了eBPF模块的电子设备的应用层输入该目标程序代码,具体地,可以是在eBPF模块的用户空间内输入该目标程序代码,并且在该用户控件内编译就能够得到内核代码,该内核代码能够被加载到操作系统内核中,从而使得电子设备的操作系统内核具备人工智能模型的算法功能。
请参阅图3,示出了本申请实施例提供的一种代码加载方法,该方法包括:S310至S340。
S310:获取人工智能模型的描述文件。
S320:通过TVM工具解析所述人工智能模型的描述文件,以得到中间文件网络层。
其中,TVM集合了多个工具集,其中这些工具可以组合起来使用,来实现一些神经网络的加速和部署功能。TVM可以支持大部分的神经网络权重框架(ONNX、TF、Caffe2等),也几乎可以部署在任何的平台,例如Windows、Linux、Mac、ARM等等。
也就是说,TVM是一个关于人工智能模型的编译器,程序员能够通过该TVM工具完成人工智能模型的编译,以得到程序代码。具体地,该TVM的流程如图4所示。
具体地,第一部分,从已有的深度学习框架中获取一个模型并将此模型转换为计算图表示(深度学习框架的前端主要提供计算图表示以及自动梯度的功能)。然后,使用一些方法优化当前的计算图得到优化后的计算图。
接着,针对计算图中每个融合的算子生成有效的代码,生成过程中结合了张量表达式以及硬件优化原语,在算子级进行优化,最后,由于优化空间非常大,基于机器学习技术实现自动优化;系统打包生成的代码到部署模块中。其中,前述多个计算图构成中间文件网络层。具体地,该中间文件网络层是在获取到获取人工智能模型的描述文件之后,解析该人工智能模型的描述文件得到多个网络中间文件(Intermediate representation,IR)。
S330:对所述中间文件网络层编译以得到目标程序代码。
在得到中间文件网络层的时候,需要对该中间文件网络层进一步处理,得到目标程序代码。另外,中间文件网络层其表示的编译过程中的中间文件表示,需要将该中间文件进一步处理才能够得到目标程序代码,具体地,可以包括对该中间文件网络层的优化等操作。具体地,请参阅图5,对所述中间文件网络层编译以得到目标程序代码,即步骤S330包括:S331至S333。
S331:对所述中间文件网络层优化。
其中,对所述中间文件网络层优化的目的是能够减少整个算法的冗余,从而能够尽量减少算法的复杂度和增加算法的运行速度。具体地,对已经转换为内部表达的网络IR进行优化,如合并、拆分网络层等。
作为一种实施方式,该对所述中间文件网络层优化可以是将Conv/BN/Relu三层融合成一层,从而减少参数量。还可以是,将多个算子合并为一个kernel,以此节省存储中间结果的空间。例如,卷积、BN以及激活函数算子之间的融合,本质上是将三个算子的数学表达式代入并化简。
S332:根据优化后的所述中间文件网络层得到多个网络算子。
对已经优化后的网络各层,根据其参数,匹配最合适的网络算子。网络算子是由高级语言编写的每一层运行逻辑。
S333:将所述多个网络算子组合成目标程序代码。
将上述生成的算子组合为一个由高级语言表示的单个程序,则该高级语言表示的单个程序可以为上述的目标程序代码。
作为一种实施方式,可以通过LLVM将多个网络算子组合成目标程序代码。其中,LLVM为一个用于建立编译器的基础框架,以C++编写。目的是对于任意的编程语言,利用该基础框架,构建一个包括编译时、链接时、执行时等的语言执行器,LLVM能够支持处理C/C++,Objective-C三种语言,被通过一些扩展的方式,使其支持ActionScript、Ada、D语言、Fortran、GLSL、Haskell、Java bytecode、Objective-C、Python、Ruby、Rust、Scala以及C#等预研的编译。
具体地,得到多个由高级语言表示的单个程序之后,并将其编译为编译器IR,如LLVM IR。其中,如图4所示,LLVM IR是一个编译器,用于将所产生的人工智能模型的描述文件转换为目标程序代码。
具体地,该编译器LLVM IR包括前端、中端和后端。
其中,编译器前端用于接收C/C++/Fortran等不同语言,进行代码生成,输出IR。
编译器中端用于接收IR,进行不同编译器后端可以共享的优化,如常量替换,死代码消除,循环优化等,输出优化后的IR。
编译器后端用于接收优化后的IR,进行不同硬件的平台相关优化与硬件指令生成,输出目标文件,即目标程序代码。
S340:通过eBPF模块将目标程序代码转换为内核代码,并加载到所述操作系统内核中。
在通过eBPF模块将编译器LLVM IR的后端部署到操作系统内核,具体地,就是在TVM工具内增加支持eBPF模块的后端实现,具体地,LLVM的后端可以包括ARM或者X86等硬件平台,于本申请实施例中,则LLVM的后端增加eBPF模块。根据前述对eBPF模块介绍,可以知道eBPF可以看作是操作系统内核的虚拟机,通过使用eBPF可以使内核安全地运行由用户空间编写的代码。这样,内核运行的算法就可以由用户空间定义,提高了内核算法的灵活性。
这样在用户设定完成人工智能模型之后,得到人工智能模型的描述文件,在TVM平台上通过LLVM将该描述文件转换为由高级语言编写的目标程序代码,然后,再通过LLVM的后端eBPF转换成内核代码,并加载到所述操作系统内核中运行。其中,由于eBPF作为操作系统内核的虚拟机,具备该操作系统内核的硬件环境的仿真能力,因此,该目标程序代码能够在eBPF内模拟出基于ARM等硬件建构的操作系统内核的硬件环境,从而能够完成编译操作,即转换成能够在所述操作系统内核运行的二进制程序。
因此,本申请实施例利用eBPF的这种特性,通过实现由人工智能网络到eBPF的编译平台,,使人工智能网络能够被编译为eBPF程序,进而由内核加载,使内核具备执行人工智能网络的能力,使操作系统内核可以运行用户空间定义的人工智能算法,提高了操作系统内核的算法效果,提高了整体开发效率。
需要说明的是,上述步骤中为详细描述的部分,可参考前述实施例,在此不再赘述。
请参阅图6,示出了本申请实施例提供的一种代码加载方法,该方法包括:S610至S630。
S610:获取人工智能模型的描述文件。
S620:将所述描述文件转化成目标程序代码。
S630:若电子设备满足预设条件,通过eBPF模块将目标程序代码转换为内核代码,并加载到所述操作系统内核中。
具体地,获取电子设备的设备信息,判断电子设备的设备信息是否满足预设条件。其中,设备信息可以是电子设备的运行状态信息、电子设备的位置信息和电子设备的系统版本等。
作为一种实施方式,电子设备的设备信息可以是电子设备的运行状态信息,判断所述电子设备的运行状态信息是否满足预设条件,如果满足预设条件,则通过eBPF模块将目标程序代码转换为内核代码,并加载到所述操作系统内核中。
其中,电子设备的运行状态信息可以是电子设备的CPU的使用率,电子设备的各个应用程序或者各个组件、模块,都会占用CPU的一定的资源,即CPU的使用率,则可能会导致CPU的负载过高,而这个时候不适宜通过eBPF模块将目标程序代码转换为内核代码,并加载到所述操作系统内核中,因为,可能会因为CPU的使用率过高,即CPU的资源过低而导致该操作无法成功执行,进而导致无法在操作系统内核中成功部署人工智能模型。
其中,判断所述电子设备的运行状态信息是否满足预设条件的具体实施方式可以是判断中央处理器的使用率大于指定数值,若大于指定数值,则判定电子设备的运行状态信息满足预设条件,若小于或等于指定数值,则判定电子设备的运行状态信息不满足预设条件。
则具体地,中央处理器的使用率可以通过查看电子设备的任务管理器而获取,例如,在安卓系统下,通过adb shell top指令获取CPU的使用率。其中,指定数值可以是用户设定的使用率,例如,指定数值可以是60%,假设CPU的当前的使用率为40%,则40%小于60%,判定中央处理器的使用率小于指定数值,假如CPU的当前的使用率为70%,则70%大于60%,判定中央处理器的使用率大于指定数值。
另外,由于CPU的使用率是当前启动的应用程序的使用率之和,则能够获取到当前每个所开启的应用程序的使用率,判断当前所开启的应用程序中是否存在与预设应用程序匹配的应用程序,其中,预设应用程序为允许系统在用户未授权的情况下将应用程序关闭的应用程序,如果存在,则将与预设应用程序匹配的应用程序的关闭,然后再获取CPU当前的使用率作为CPU的使用率,并返回执行判断所述中央处理器的使用率是否小于指定数值的操作。
具体地,电子设备内预先存储有预设应用程序的列表,在该预设应用程序的列表内包括多个指定应用程序的标识,其中,指定应用程序为用户授权的允许系统在用户未授权的情况下将应用程序关闭的应用程序,具体地,可以是用户手动输入该指定应用程序的标识。
则扫描当前系统进程中每个进程对应的应用程序以及每个进程的CPU使用率,并获取CPU当前的使用率,在所扫描到的所有应用程序中查找与预设应用程序匹配的应用程序,作为待处理应用程序,将待处理应用程序关闭并将待处理应用程序对应的进程杀死,然后,获取在待处理应用程序对应的进程杀死之后的CPU的使用率,作为更新使用率,将更新使用率作为CPU新的使用率,返回执行判断CPU新的使用率是否大于指定数值。
作为另一种实施方式,电子设备的设备信息可以是电子设备的系统版本。则判断所述电子设备的系统版本是否满足预设条件,如果满足预设条件,则通过eBPF模块将目标程序代码转换为内核代码,并加载到所述操作系统内核中。
其中,电子设备的系统版本为电子设备的操作系统的版本号,电子设备的操作系统每次升级的时候,都会更改电子设备的操作系统的版本号,并将该版本号存储在电子设备内,以便下一次更新的时候查阅该版本号。
判断所述电子设备的系统版本是否满足预设条件的具体实施方式可以是,获取电子设备的操作系统的最新版本号,判断所述电子设备的系统版本的版本号是否为最新版本号,如果是,则判定电子设备的运行状态信息满足预设条件,则通过eBPF模块将目标程序代码转换为内核代码,并加载到所述操作系统内核中,若不是,则判定电子设备的运行状态信息不满足预设条件。其中,若所述电子设备的系统版本的版本号不是最新版本号,则对电子设备的系统版本执行更新操作,并返回执行判断所述电子设备的系统版本的版本号是否为最新版本号的操作。
另外,若判断结果是电子设备的操作系统的版本号是最新版本号,则获取电子设备的操作系统下一个版本的预计发布时间点,并且确定当前的时刻与所述预计发布时间点的差值是否小于指定时间差,如果小于,则暂时不执行通过eBPF模块将目标程序代码转换为内核代码,并加载到所述操作系统内核中的操作,而是等待预计发布时间点到达,即新的版本发布的时候,再执行判断所述电子设备的系统版本的版本号是否为最新版本号,并且在判断结果是电子设备的系统版本的版本号不是最新版本号,则对电子设备的系统版本执行更新操作之后,再执行通过eBPF模块将目标程序代码转换为内核代码,并加载到所述操作系统内核中的操作。其中,指定时间差为根据实际需求而设定的时间长度,例如,可以是12小时或者1小时等。
因此,能够保证在电子设备的操作系统是最新版本的时候,再通过eBPF模块将目标程序代码转换为内核代码,并加载到所述操作系统内核中,避免后期在操作系统更新的时候,需要对该人工智能模型在操作系统内核中的代码进行更新,而造成人工成本过高。
需要说明的是,上述步骤中为详细描述的部分,可参考前述实施例,在此不再赘述。
请参阅图7,示出了本申请实施例提供的一种代码加载方法,该方法包括:S710至S730。
S710:获取人工智能模型的描述文件。
S720:若描述文件满足预设要求,将所述描述文件转化成目标程序代码。
具体地,获取所述描述文件对应的状态信息,该状态信息可以包括人工智能模型的描述文件的上传地址。
具体地,该上传地址可以是发送该人工智能模型的描述文件的发送端的位置信息。具体地,获取发送端的位置信息,具体地,发送端内安装有定位装置,通过该定位装置,能够获取该用户终端的位置信息。
判断所述位置信息是否与预设位置信息匹配。
其中,预设位置信息可以是测试终端经常活动的地方,例如,获取预设时间段内,该用户终端所处的位置信息,找出出现频率较高的几个地方,例如,可以是对所有位置信息按照出现频率由高到低排序,选择前N个位置作为预设位置信息。因为,一般位置信息出现频率较高的位置,是测试人员经常活动的场所,例如是办公室或者居住地,通过该位置信息的判断能够避免他人盗取用户终端而在其他地方使用。
如果该位置信息与预设位置信息匹配,则判定描述文件满足预设要求,则执行将所述描述文件转化成目标程序代码以及后续操作。
另外,判断该描述文件是否满足预设要求的方式还可以是,该热弄个智能模型的描述文件是发送端通过通信网络发送至电子设备内的,则该人工智能模型的描述文件对应有登录发送端的用户账号。具体地,发送端发送程序加载请求至电子设备,该程序加载请求包括人工智能模型的描述文件和登录发送端的用户账号,电子设备在获取到用户账号之后,判断该用户账号是否与预设账号匹配。
其中,预设账号可以是预先设定的账号,该预先设定的账号为被授权的用户的账号,即允许该账号对应的用户对操作系统内核操作。另外,该预设账号还可以是在被授权的用户账号中,查找到该用户账号对应的等级,将等于高于预设等级的用户账号作为预设账号。其中,用户账号对应的等级,可以是根据用户账号对应的工作经验而设定的,也可以是根据用户账号对应的工种等级而设定的。
S730:通过eBPF模块将目标程序代码转换为内核代码,并加载到所述操作系统内核中。
需要说明的是,上述的S730也可以被上述的S630代替,具体地,请参阅前述实施例,在此不再赘述。也就是说,具体的方法流程可以是:获取人工智能模型的描述文件,判断所述描述文件是否满足预设要求,若描述文件满足预设要求,将所述描述文件转化成目标程序代码,获取电子设备的设备信息,判断电子设备的设备信息是否满足预设条件,若电子设备满足预设条件,通过eBPF模块将目标程序代码转换为内核代码,并加载到所述操作系统内核中。
请参阅图8,其示出了本申请实施例提供的一种代码加载装置的结构框图,该装置可以包括:获取单元、转换单元和加载单元。
获取单元,用于获取人工智能模型的描述文件。
转换单元,用于将所述描述文件转化成目标程序代码。
具体地,该转换单元具体用于通过张量虚拟机解析所述人工智能模型的描述文件,以得到中间文件网络层;对所述中间文件网络层编译以得到目标程序代码。其中,对所述中间文件编译以得到目标程序代码,包括:对所述中间文件网络层优化;根据优化后的所述中间文件网络层得到多个网络算子;将所述多个网络算子组合成目标程序代码。其中,所述将所述多个网络算子组合成目标程序代码,包括:通过低级虚拟机将多个网络算子组合成目标程序代码。
进一步地,该转换单元还用于若描述文件满足预设要求,将所述描述文件转化成目标程序代码
加载单元,用于通过扩展的巴克利数据包过滤器将目标程序代码转换为内核代码,并加载到所述操作系统内核中。
其中,所述操作系统内核为Linux内核,所述内核代码为能够在所述操作系统内核运行的二进制程序。
进一步地,加载单元,还用于若电子设备满足预设条件,通过eBPF模块将目标程序代码转换为内核代码,并加载到所述操作系统内核中。具体地,加载单元用于获取电子设备的设备信息,判断电子设备的设备信息是否满足预设条件。其中,设备信息可以是电子设备的运行状态信息、电子设备的位置信息和电子设备的系统版本等。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述装置和模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,模块相互之间的耦合可以是电性,机械或其它形式的耦合。
另外,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
请参考图9,其示出了本申请实施例提供的一种电子设备的结构框图。该电子设备100可以是智能手机、平板电脑、电子书等能够运行应用程序的电子设备。本申请中的电子设备100可以包括一个或多个如下部件:处理器110、存储器120、操作系统内核130以及一个或多个应用程序,其中一个或多个应用程序可以被存储在存储器120中并被配置为由一个或多个处理器110执行,一个或多个程序配置用于执行如前述方法实施例所描述的方法。
处理器110可以包括一个或者多个处理核。处理器110利用各种接口和线路连接整个电子设备100内的各个部分,通过运行或执行存储在存储器120内的指令、程序、代码集或指令集,以及调用存储在存储器120内的数据,执行电子设备100的各种功能和处理数据。可选地,处理器110可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable LogicArray,PLA)中的至少一种硬件形式来实现。处理器110可集成中央处理器(CentralProcessing Unit,CPU)、图像处理器(Graphics Processing Unit,GPU)和调制解调器等中的一种或几种的组合。其中,CPU主要处理操作系统、用户界面和应用程序等;GPU用于负责显示内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器110中,单独通过一块通信芯片进行实现。
存储器120可以包括随机存储器(Random Access Memory,RAM),也可以包括只读存储器(Read-Only Memory)。存储器120可用于存储指令、程序、代码、代码集或指令集。存储器120可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于实现至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现下述各个方法实施例的指令等。存储数据区还可以存储终端100在使用中所创建的数据(比如电话本、音视频数据、聊天记录数据)等。
其中,操作系统内核130管理操作系统的所有硬件设备;另外,该操作系统内核通过系统调用,向库函数(例如C库)或者其它应用程序提供接口。
进一步地,电子设备还包括eBPF模块和LLVM编译器,所述操作系统内核通过所述eBPF模块与所述LLVM编译器连接。
请参考图10,其示出了本申请实施例提供的一种计算机可读存储介质的结构框图。该计算机可读介质1000中存储有程序代码,所述程序代码可被处理器调用执行上述方法实施例中所描述的方法。
计算机可读存储介质1000可以是诸如闪存、EEPROM(电可擦除可编程只读存储器)、EPROM、硬盘或者ROM之类的电子存储器。可选地,计算机可读存储介质1000包括非易失性计算机可读介质(non-transitory computer-readable storage medium)。计算机可读存储介质1000具有执行上述方法中的任何方法步骤的程序代码1010的存储空间。这些程序代码可以从一个或者多个计算机程序产品中读出或者写入到这一个或者多个计算机程序产品中。程序代码1010可以例如以适当形式进行压缩。
综上所述,本申请提供的方案,获取人工智能模型的描述文件;将所述描述文件转化成目标程序代码;通过eBPF模块将目标程序代码转换为内核代码,并加载到所述操作系统内核中。因此,程序员可以直接设计人工智能模型,并且将该人工智能模型的描述文件通过本方法转换为内核代码,然后,将给内核代码加载待操作系统内核中运行,从而能够避免用户直接在操作系统内核的环境下通过硬件语言编写人工智能模型的代码,能够减少操作系统级的稳定性风险,避免在实际操作过程中会导致开发、测试周期变长,稳定性降低等负面影响。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不驱使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (10)
1.一种代码加载方法,其特征在于,应用于电子设备,所述电子设备包括操作系统内核,所述方法包括:
获取人工智能模型的描述文件;
将所述描述文件转化成目标程序代码;
通过扩展的巴克利数据包过滤器将目标程序代码转换为内核代码,并加载到所述操作系统内核中。
2.根据权利要求1所述的方法,其特征在于,所述将所述描述文件转化成目标程序代码,包括:
通过张量虚拟机解析所述人工智能模型的描述文件,以得到中间文件网络层;
对所述中间文件网络层编译以得到目标程序代码。
3.根据权利要求2所述的方法,其特征在于,所述对所述中间文件编译以得到目标程序代码,包括:
对所述中间文件网络层优化;
根据优化后的所述中间文件网络层得到多个网络算子;
将所述多个网络算子组合成目标程序代码。
4.根据权利要求3所述的方法,其特征在于,所述将所述多个网络算子组合成目标程序代码,包括:
通过低级虚拟机将多个网络算子组合成目标程序代码。
5.根据权利要求1-4任一所述的方法,其特征在于,所述操作系统内核为Linux内核。
6.根据权利要求1-4任一所述的方法,其特征在于,所述内核代码为能够在所述操作系统内核运行的二进制程序。
7.根据权利要求1-4任一所述的方法,其特征在于,所述通过扩展的巴克利数据包过滤器将目标程序代码转换为内核代码,并加载到所述操作系统内核中,包括:
获取所述电子设备的设备信息;
若所述电子设备的设备信息满足预设条件,通过扩展的巴克利数据包过滤器将目标程序代码转换为内核代码,并加载到所述操作系统内核中。
8.一种代码加载装置,其特征在于,应用于电子设备,所述电子设备包括操作系统内核,所述装置包括:
获取单元,用于获取人工智能模型的描述文件;
转换单元,用于将所述描述文件转化成目标程序代码;
加载单元,用于通过扩展的巴克利数据包过滤器将目标程序代码转换为内核代码,并加载到所述操作系统内核中。
9.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储器;
操作系统内核;
一个或多个应用程序,其中所述一个或多个应用程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个程序配置用于执行如权利要求1-7任一项所述的方法。
10.一种计算机可读介质,其特征在于,所述计算机可读存储介质中存储有程序代码,所述程序代码可被处理器调用执行所述权利要求1-7任一项所述方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910798420.1A CN110569106B (zh) | 2019-08-27 | 2019-08-27 | 代码加载方法、装置、电子设备及计算机可读介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910798420.1A CN110569106B (zh) | 2019-08-27 | 2019-08-27 | 代码加载方法、装置、电子设备及计算机可读介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110569106A true CN110569106A (zh) | 2019-12-13 |
CN110569106B CN110569106B (zh) | 2022-11-15 |
Family
ID=68776366
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910798420.1A Active CN110569106B (zh) | 2019-08-27 | 2019-08-27 | 代码加载方法、装置、电子设备及计算机可读介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110569106B (zh) |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111338636A (zh) * | 2020-02-21 | 2020-06-26 | 北京松果电子有限公司 | 内核预处理方法、内核预处理装置及电子设备 |
CN111882073A (zh) * | 2020-07-17 | 2020-11-03 | 苏州浪潮智能科技有限公司 | 一种分布式计算图修改的方法和设备 |
CN112015426A (zh) * | 2020-08-18 | 2020-12-01 | 上海高德威智能交通系统有限公司 | 一种代码管理方法、装置及设备 |
CN112214213A (zh) * | 2020-10-27 | 2021-01-12 | 南方电网数字电网研究院有限公司 | Linux内核的开发和管理方法、装置、计算机设备和存储介质 |
CN112445691A (zh) * | 2020-12-02 | 2021-03-05 | 中国建设银行股份有限公司 | 非侵入式智能合约性能检测方法和装置 |
CN112748953A (zh) * | 2020-07-02 | 2021-05-04 | 腾讯科技(深圳)有限公司 | 基于神经网络模型的数据处理方法、装置及电子设备 |
CN112817597A (zh) * | 2021-01-12 | 2021-05-18 | 山东兆物网络技术股份有限公司 | 运行在用户空间的基于ebpf的软件容器实现方法 |
CN113326069A (zh) * | 2020-02-28 | 2021-08-31 | 广东龙芯中科电子科技有限公司 | 操作系统启动方法、装置、电子设备及存储介质 |
CN113469360A (zh) * | 2020-03-31 | 2021-10-01 | 杭州海康威视数字技术股份有限公司 | 推理方法及装置 |
CN113553039A (zh) * | 2020-04-23 | 2021-10-26 | 杭州海康威视数字技术股份有限公司 | 算子的可执行代码的生成方法及装置 |
CN113591040A (zh) * | 2021-06-23 | 2021-11-02 | 北京百度网讯科技有限公司 | 加密方法及其装置、解密方法及其装置、电子设备和介质 |
CN114253615A (zh) * | 2021-12-16 | 2022-03-29 | 安天科技集团股份有限公司 | 一种引导程序设置方法、装置、电子设备及存储介质 |
WO2023125594A1 (zh) * | 2021-12-28 | 2023-07-06 | 维沃移动通信有限公司 | Ai模型传输方法、装置、设备及存储介质 |
CN116991449A (zh) * | 2023-09-28 | 2023-11-03 | 阿里云计算有限公司 | 内核子系统热升级方法、设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104317723A (zh) * | 2014-11-14 | 2015-01-28 | 清华大学 | 一种驱动程序运行信息的跟踪方法及系统 |
CN107239315A (zh) * | 2017-04-11 | 2017-10-10 | 北京深鉴智能科技有限公司 | 面向神经网络异构计算平台的编程模型 |
CN109542596A (zh) * | 2018-10-22 | 2019-03-29 | 西安交通大学 | 一种基于OpenCL内核任务的调度框架 |
US20190173841A1 (en) * | 2017-12-06 | 2019-06-06 | Nicira, Inc. | Load balancing ipsec tunnel processing with extended berkeley packet filer (ebpf) |
-
2019
- 2019-08-27 CN CN201910798420.1A patent/CN110569106B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104317723A (zh) * | 2014-11-14 | 2015-01-28 | 清华大学 | 一种驱动程序运行信息的跟踪方法及系统 |
CN107239315A (zh) * | 2017-04-11 | 2017-10-10 | 北京深鉴智能科技有限公司 | 面向神经网络异构计算平台的编程模型 |
US20190173841A1 (en) * | 2017-12-06 | 2019-06-06 | Nicira, Inc. | Load balancing ipsec tunnel processing with extended berkeley packet filer (ebpf) |
CN109542596A (zh) * | 2018-10-22 | 2019-03-29 | 西安交通大学 | 一种基于OpenCL内核任务的调度框架 |
Non-Patent Citations (2)
Title |
---|
机器之心: "陈天奇等人提出TVM:深度学习自动优化代码生成器", 《机器之心》 * |
运维开发: "Linux 内核BPF简介", 《小米技术》 * |
Cited By (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111338636B (zh) * | 2020-02-21 | 2023-09-26 | 北京小米松果电子有限公司 | 内核预处理方法、内核预处理装置及电子设备 |
CN111338636A (zh) * | 2020-02-21 | 2020-06-26 | 北京松果电子有限公司 | 内核预处理方法、内核预处理装置及电子设备 |
CN113326069A (zh) * | 2020-02-28 | 2021-08-31 | 广东龙芯中科电子科技有限公司 | 操作系统启动方法、装置、电子设备及存储介质 |
CN113469360B (zh) * | 2020-03-31 | 2023-10-20 | 杭州海康威视数字技术股份有限公司 | 推理方法及装置 |
CN113469360A (zh) * | 2020-03-31 | 2021-10-01 | 杭州海康威视数字技术股份有限公司 | 推理方法及装置 |
CN113553039A (zh) * | 2020-04-23 | 2021-10-26 | 杭州海康威视数字技术股份有限公司 | 算子的可执行代码的生成方法及装置 |
CN113553039B (zh) * | 2020-04-23 | 2024-05-31 | 杭州海康威视数字技术股份有限公司 | 算子的可执行代码的生成方法及装置 |
CN112748953A (zh) * | 2020-07-02 | 2021-05-04 | 腾讯科技(深圳)有限公司 | 基于神经网络模型的数据处理方法、装置及电子设备 |
CN112748953B (zh) * | 2020-07-02 | 2023-08-15 | 腾讯科技(深圳)有限公司 | 基于神经网络模型的数据处理方法、装置及电子设备 |
CN111882073A (zh) * | 2020-07-17 | 2020-11-03 | 苏州浪潮智能科技有限公司 | 一种分布式计算图修改的方法和设备 |
CN112015426A (zh) * | 2020-08-18 | 2020-12-01 | 上海高德威智能交通系统有限公司 | 一种代码管理方法、装置及设备 |
CN112015426B (zh) * | 2020-08-18 | 2023-12-26 | 上海高德威智能交通系统有限公司 | 一种代码管理方法、装置及设备 |
CN112214213A (zh) * | 2020-10-27 | 2021-01-12 | 南方电网数字电网研究院有限公司 | Linux内核的开发和管理方法、装置、计算机设备和存储介质 |
CN112214213B (zh) * | 2020-10-27 | 2023-10-20 | 南方电网数字电网科技(广东)有限公司 | Linux内核的开发和管理方法、装置、计算机设备和存储介质 |
CN112445691A (zh) * | 2020-12-02 | 2021-03-05 | 中国建设银行股份有限公司 | 非侵入式智能合约性能检测方法和装置 |
CN112445691B (zh) * | 2020-12-02 | 2024-05-28 | 中国建设银行股份有限公司 | 非侵入式智能合约性能检测方法和装置 |
CN112817597B (zh) * | 2021-01-12 | 2024-03-15 | 山东兆物网络技术股份有限公司 | 运行在用户空间的基于ebpf的软件容器实现方法 |
CN112817597A (zh) * | 2021-01-12 | 2021-05-18 | 山东兆物网络技术股份有限公司 | 运行在用户空间的基于ebpf的软件容器实现方法 |
CN113591040B (zh) * | 2021-06-23 | 2023-10-24 | 北京百度网讯科技有限公司 | 加密方法及其装置、解密方法及其装置、电子设备和介质 |
CN113591040A (zh) * | 2021-06-23 | 2021-11-02 | 北京百度网讯科技有限公司 | 加密方法及其装置、解密方法及其装置、电子设备和介质 |
CN114253615B (zh) * | 2021-12-16 | 2023-08-11 | 安天科技集团股份有限公司 | 一种引导程序设置方法、装置、电子设备及存储介质 |
CN114253615A (zh) * | 2021-12-16 | 2022-03-29 | 安天科技集团股份有限公司 | 一种引导程序设置方法、装置、电子设备及存储介质 |
WO2023125594A1 (zh) * | 2021-12-28 | 2023-07-06 | 维沃移动通信有限公司 | Ai模型传输方法、装置、设备及存储介质 |
CN116991449A (zh) * | 2023-09-28 | 2023-11-03 | 阿里云计算有限公司 | 内核子系统热升级方法、设备及存储介质 |
CN116991449B (zh) * | 2023-09-28 | 2024-03-08 | 阿里云计算有限公司 | 内核子系统热升级方法、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110569106B (zh) | 2022-11-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110569106B (zh) | 代码加载方法、装置、电子设备及计算机可读介质 | |
KR102414096B1 (ko) | 종단 장치에서의 기계 학습을 위한 패키지 생성 및 배포 | |
CN107766126B (zh) | 容器镜像的构建方法、系统、装置及存储介质 | |
CN111033468B (zh) | 实施不同类型的区块链合约的系统和方法 | |
US11016673B2 (en) | Optimizing serverless computing using a distributed computing framework | |
US20190324772A1 (en) | Method and device for processing smart contracts | |
CN108121594B (zh) | 一种进程管理方法及装置 | |
CN109542506B (zh) | 一种可灵活配置接口和快速交付服务的系统 | |
US11422785B2 (en) | Container orchestration framework | |
CN110941424A (zh) | 编译参数优化方法、装置及电子设备 | |
WO2020077487A1 (zh) | 优化和运行安卓应用程序的方法以及相关装置 | |
US20230177156A1 (en) | On-device android malware detection method based on adaptive model through transfer learning, and recording medium and apparatus for performing the same | |
CN113168332B (zh) | 数据处理方法、装置以及移动终端 | |
CN109885310A (zh) | 一种降低手机游戏Shader模块内存占用的方法及装置 | |
CN110362356B (zh) | 函数数据处理方法、装置、计算机设备和存储介质 | |
CN113986402A (zh) | 函数调用方法、装置、电子设备及存储介质 | |
CN112558984A (zh) | 代码编译的方法、装置、电子设备以及服务器 | |
CN113988287A (zh) | 基于nGraph框架实现分布式神经网络训练的方法 | |
CN112527306B (zh) | 项目开发中模块的独立化实现方法、装置、设备及介质 | |
CN115760391A (zh) | 区块链中智能合约更改方法、装置、电子设备及存储介质 | |
CN114911541A (zh) | 配置信息的处理方法、装置、电子设备及存储介质 | |
CN114358302A (zh) | 一种人工智能ai训练的方法、系统及设备 | |
CN113961232A (zh) | 提供集成开发环境的终端、方法和平台服务器 | |
CN111090854A (zh) | 目标程序的执行与转换方法、装置、终端和存储介质 | |
CN110960858A (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 |