当前位置: 首页 > 专利查询>湖南大学专利>正文

一种机器学习操作系统内核的自动化编译方法技术方案

技术编号:37300894 阅读:11 留言:0更新日期:2023-04-21 22:46
本发明专利技术涉及计算机操作系统及机器学习模型编译器的技术领域,具体涉及一种基于机器学习模型的操作系统内核自动化编译方法。本发明专利技术的方法包括:该发明专利技术通过Keras训练机器学习模型,并将训练好的模型保存为可靠的h5文件;根据内核的特性,提供可支持机器学习模型运算的数据结构和函数库;通过使用Keras中特定的方法,可以提取到训练的模型中每一层的权重以及相关的参数;通过使用Keras中特定的方法,可以提取到训练的模型中每一层网络配置信息;根据对应的权重参数、模型调用方法和内核函数库,自动生成内核代码。其流程如图1所示。该方法能够实现对操作系统内核机器学习模型的自动化编译,从而能够提高模型丰富度并降低手工程度。度。度。

【技术实现步骤摘要】
一种机器学习操作系统内核的自动化编译方法


[0001]本专利技术涉及计算机操作系统及机器学习模型编译器的
,具体涉及一种基于机器学习模型的操作系统内核自动化编译方法。

技术介绍

[0002]机器学习在当前社会发展中占据着越来越重要的地位,它是人工智能的一个分支,是实现人工智能的一个核心技术,即以机器学习为手段解决人工智能中的问题。机器学习一般是通过一些让计算机可以自动“学习”的算法并从数据中分析获得规律,然后利用规律对新样本进行预测。当前的机器学习除了用在机器视觉、自然语言处理、自动驾驶等领域,也在生物医学、数据库系统相关方面也有深入的研究。
[0003]在计算机中,操作系统是最基本的也是最为重要的基础性系统软件。操作系统控制着计算机的硬件资源,同时又为应用程序提供运行环境,它提供了一系列的基本服务,操作系统提供的基础服务很大程度上需要依赖于操作系统中的重要组成部分——操作系统内核。操作系统内核指的是一个提供硬件抽象层、磁盘及文件系统控制、多任务等功能的系统软件。内核是操作系统最基本的部分,也是操作系统的核心,它携带着大量的固定参数(比如readahead value,NFS rsize),负责管理系统的进程、内存、设备驱动程序、文件和网络系统等等,决定着系统的性能和稳定性。
[0004]机器学习内核模块编译就是将机器学习模型编译成能够在操作系统内核中运行的代码。通过转换为内核代码,可以减少算法的延时;并且可以利用机器学习来预测操作系统可调参数当前阶段最佳值,从而提高操作系统的运行时性能。而现阶段暂无编译方法,在每个实验过程中,大多通过自己手动编写了一个适用于操作系统内核的一个机器学习算法,无法适应测试算法的转换并且人为因素影响极大,引入自动化编译方法可以降低研究人员的负担,专注于探索操作系统方面的性能。

技术实现思路

[0005]针对现有的编译方法在模型单一且手工程度较高的问题,本专利技术提供了一种基于Python高级神经网络API Keras的操作系统内核模块自动化编译方法,能够将Kears训练好的机器学习模型,通过模型自动解析并自动编译成可在操作系统内核中运行的内核代码。它的主要功能可以被划分为五个板块:模型保存、内核后端支持、权重和参数提取、网络解析以及代码生成。所叙述方法步骤如图1,包括:
[0006]S1.模型保存
[0007]首先,在模型保存之前需要先将模型训练出来。模型的训练需要Keras的支持。Keras是一个用Python编写的高级神经网络API,它能够以TensorFlow、CNTK、或者Theano作为后端运行。它的主要特点有:1.允许简单而快速的原型设计(用户友好,高度模块化,可扩展性)。2.同时支持卷积神经网络和循环神经网络,以及两者的组合。使用Keras可以非常容易的构建一个机器学习模型:首先它提供一致和简单的API;其次,它提供独立的、完全可配
置的模块构成序列或图表以完成模型;最后,作为新的类和函数,新的模块很容易扩展。
[0008]下一步,在模型训练完成后,需要将训练好的模型保存为H5文件。H5文件是层次数据格式的第5代版本(Hierarchical Data Format,HDF5),它是用于存储科学数据的一种文件格式和库文件,它是一种开源文件格式,支持大型、复杂的异构数据,使用类似“文件目录”的结构,允许以多种不同的结构化方式组织文件中的数据,就像处理计算机上的文件一样。将模型存储为H5文件后,方便后续对模型进行分析处理。
[0009]S2.内核后端支持
[0010]机器学习通常使用的语言都是Python,内核缺少相应Python中的强大模块支持。因为Python是动态类型的解释性语言,它的这个特点就决定了它可以以一种轻松简洁的方式去编写代码,而不用过多的与去注重编译或者是开发规则一些限制;并且python有着很多成熟和功能强大的第三方相关库来实现机器学习,能够提高开发和研究效率。而由于内核的限制,它并不像Python那样拥有丰富的数学函数库和数据格式,所以需要根据内核的特性,提供可支持机器学习模型运算的数据结构和函数库。其具体过程包括以下几个部分:
[0011]1.提供数据结构支持。在python有相应的数据结构可以直接存储矩阵结构,而内核中只有数组结构,所以首先要设计一个内核支持的数据结构来接收从模型中提取出来的权重数据。
[0012]2.提供函数库支持。在整体设计上,此专利技术通过将整个神经网络看作是一个前向转播的网络结构,所以在数据结构支持的基础上,还需要一个C代码编写的内核函数库,这些函数对Keras常用的网络层提供了相应的支持。Keras支持的每一个网络层都被当成一个函数调用。
[0013]S3.权重和参数提取
[0014]权重和参数提取是专利技术中非常重要的一步,可以通过使用Keras自带的API“layer”来迭代提取每一个网络层中的权重和参数。
[0015]“layer”是Keras中提供的可以用来获取模型信息的一系列方法,通过它可以很容易的获得网络层中的配置信息、权重信息、输入输出张量等。正是因为有它的存在,所以可以将整个模型看做是一个前向转播的网络。
[0016]通过使用“layer”中特定的方法,可以提取到步骤S1训练的模型中每一层的权重以及相关的参数,例如卷积层中的卷积核、步长、激活函数等。这些变量在前向传播中将会被使用。
[0017]需要注意的是,如果所用模型的数据量比较大,使用栈数据会对内存造成极大的影响,可以通过设置选项head=true将数据存到二进制文件,并在运行时动态装载数据进堆内存。
[0018]S4.网络解析
[0019]将Keras整个网络结构当做一个DAG(有向无环图)来解析。Kreas可以通过它的functional API支持序列模型以及复杂网络结构,包括允许模型有多个输入输出、内部分支合并、以及在同一模型中多次重复使用特定的网络层。举例来说,Keras的每一个网络结构,都是多个网络层叠加的结果。在将网络层添加进模型之前,需要先声明网络层的类型,参数,输入输出大小等,并且同一个网络层被添加进模型之后,依然可以在某一个节点添加进这个网络层,得到多个网络序列。假设声明模型M,网络层<t1,t2,t3...,t
n
>,可以通过使
用M.add(t1/t2/.../t
n
)的方式将所有的网络层加入模型,此时整个模型结构M为{t1‑
>t2‑
>t3...

>t
n
},相应的,可以添加多个ti,i表示1

n。
[0020]所以我们可以利用这个特性将整个模型看做是一个DAG,每个节点都是一个特定网络层,每条边都是上一层传递到下一层的数据片段。
[0021]S5.代码生成
[0022]在完成所述步骤S1

S本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种机器学习操作系统内核的自动化编译方法,其特征在于实施步骤为:(1)该发明通过Keras训练机器学习模型,并将训练好的模型保存为可靠的h5文件;(2)根据内核的特性,提供可支持机器学习模型运算的数据结构和函数库;(3)通过使用Keras中特定的方法,可以提取到训练的模型中每一层的权重以及相关的参数;(4)通过使用Keras中特定的方法,可以提取到训练的模型中每一层网络配置信息,比如网络名称;(5)通过步骤2

4实施方法获取到的数据,根据步骤2和4相对应的调用方法,自动生成内核代码。2.根据权利要求1所述的方法,其特征在于:(1)根据内核语法格式提供对模型适配的数据结构;(2)根据内核语法格式提供内核函数库,获得相应的架构支持。3.根据权利要求1所述的方法,其特征在于,本方法在模型解析和权重提取阶段:(1)定义抽象网络结构,获取网络配置信息;(2)定义抽象网络结构,提取模型的权重和其他参数。4.根据权利要求3所述的方法,其...

【专利技术属性】
技术研发人员:张凯陈浩
申请(专利权)人:湖南大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1