CN115983378A - 一种机器学习操作系统内核的自动化编译方法 - Google Patents
一种机器学习操作系统内核的自动化编译方法 Download PDFInfo
- Publication number
- CN115983378A CN115983378A CN202211742639.8A CN202211742639A CN115983378A CN 115983378 A CN115983378 A CN 115983378A CN 202211742639 A CN202211742639 A CN 202211742639A CN 115983378 A CN115983378 A CN 115983378A
- Authority
- CN
- China
- Prior art keywords
- kernel
- model
- network
- machine learning
- layer
- 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 33
- 238000010801 machine learning Methods 0.000 title claims abstract description 28
- 230000006870 function Effects 0.000 claims abstract description 16
- 238000012549 training Methods 0.000 claims abstract description 7
- 238000011161 development Methods 0.000 claims description 4
- 238000000605 extraction Methods 0.000 claims description 4
- 238000013528 artificial neural network Methods 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 4
- 238000013473 artificial intelligence Methods 0.000 description 3
- 238000003012 network analysis Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 230000004913 activation Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000005755 formation reaction Methods 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 238000007620 mathematical function Methods 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
本发明涉及计算机操作系统及机器学习模型编译器的技术领域,具体涉及一种基于机器学习模型的操作系统内核自动化编译方法。本发明的方法包括:该发明通过Keras训练机器学习模型,并将训练好的模型保存为可靠的h5文件;根据内核的特性,提供可支持机器学习模型运算的数据结构和函数库;通过使用Keras中特定的方法,可以提取到训练的模型中每一层的权重以及相关的参数;通过使用Keras中特定的方法,可以提取到训练的模型中每一层网络配置信息;根据对应的权重参数、模型调用方法和内核函数库,自动生成内核代码。其流程如图1所示。该方法能够实现对操作系统内核机器学习模型的自动化编译,从而能够提高模型丰富度并降低手工程度。
Description
技术领域
本发明涉及计算机操作系统及机器学习模型编译器的技术领域,具体涉及一种基于机器学习模型的操作系统内核自动化编译方法。
背景技术
机器学习在当前社会发展中占据着越来越重要的地位,它是人工智能的一个分支,是实现人工智能的一个核心技术,即以机器学习为手段解决人工智能中的问题。机器学习一般是通过一些让计算机可以自动“学习”的算法并从数据中分析获得规律,然后利用规律对新样本进行预测。当前的机器学习除了用在机器视觉、自然语言处理、自动驾驶等领域,也在生物医学、数据库系统相关方面也有深入的研究。
在计算机中,操作系统是最基本的也是最为重要的基础性系统软件。操作系统控制着计算机的硬件资源,同时又为应用程序提供运行环境,它提供了一系列的基本服务,操作系统提供的基础服务很大程度上需要依赖于操作系统中的重要组成部分——操作系统内核。操作系统内核指的是一个提供硬件抽象层、磁盘及文件系统控制、多任务等功能的系统软件。内核是操作系统最基本的部分,也是操作系统的核心,它携带着大量的固定参数(比如readahead value,NFS rsize),负责管理系统的进程、内存、设备驱动程序、文件和网络系统等等,决定着系统的性能和稳定性。
机器学习内核模块编译就是将机器学习模型编译成能够在操作系统内核中运行的代码。通过转换为内核代码,可以减少算法的延时;并且可以利用机器学习来预测操作系统可调参数当前阶段最佳值,从而提高操作系统的运行时性能。而现阶段暂无编译方法,在每个实验过程中,大多通过自己手动编写了一个适用于操作系统内核的一个机器学习算法,无法适应测试算法的转换并且人为因素影响极大,引入自动化编译方法可以降低研究人员的负担,专注于探索操作系统方面的性能。
发明内容
针对现有的编译方法在模型单一且手工程度较高的问题,本发明提供了一种基于Python高级神经网络API Keras的操作系统内核模块自动化编译方法,能够将Kears训练好的机器学习模型,通过模型自动解析并自动编译成可在操作系统内核中运行的内核代码。它的主要功能可以被划分为五个板块:模型保存、内核后端支持、权重和参数提取、网络解析以及代码生成。所叙述方法步骤如图1,包括:
S1.模型保存
首先,在模型保存之前需要先将模型训练出来。模型的训练需要Keras的支持。Keras是一个用Python编写的高级神经网络API,它能够以TensorFlow、CNTK、或者Theano作为后端运行。它的主要特点有:1.允许简单而快速的原型设计(用户友好,高度模块化,可扩展性)。2.同时支持卷积神经网络和循环神经网络,以及两者的组合。使用Keras可以非常容易的构建一个机器学习模型:首先它提供一致和简单的API;其次,它提供独立的、完全可配置的模块构成序列或图表以完成模型;最后,作为新的类和函数,新的模块很容易扩展。
下一步,在模型训练完成后,需要将训练好的模型保存为H5文件。H5文件是层次数据格式的第5代版本(Hierarchical Data Format,HDF5),它是用于存储科学数据的一种文件格式和库文件,它是一种开源文件格式,支持大型、复杂的异构数据,使用类似“文件目录”的结构,允许以多种不同的结构化方式组织文件中的数据,就像处理计算机上的文件一样。将模型存储为H5文件后,方便后续对模型进行分析处理。
S2.内核后端支持
机器学习通常使用的语言都是Python,内核缺少相应Python中的强大模块支持。因为Python是动态类型的解释性语言,它的这个特点就决定了它可以以一种轻松简洁的方式去编写代码,而不用过多的与去注重编译或者是开发规则一些限制;并且python有着很多成熟和功能强大的第三方相关库来实现机器学习,能够提高开发和研究效率。而由于内核的限制,它并不像Python那样拥有丰富的数学函数库和数据格式,所以需要根据内核的特性,提供可支持机器学习模型运算的数据结构和函数库。其具体过程包括以下几个部分:
1.提供数据结构支持。在python有相应的数据结构可以直接存储矩阵结构,而内核中只有数组结构,所以首先要设计一个内核支持的数据结构来接收从模型中提取出来的权重数据。
2.提供函数库支持。在整体设计上,此发明通过将整个神经网络看作是一个前向转播的网络结构,所以在数据结构支持的基础上,还需要一个C代码编写的内核函数库,这些函数对Keras常用的网络层提供了相应的支持。Keras支持的每一个网络层都被当成一个函数调用。
S3.权重和参数提取
权重和参数提取是发明中非常重要的一步,可以通过使用Keras自带的API“layer”来迭代提取每一个网络层中的权重和参数。
“layer”是Keras中提供的可以用来获取模型信息的一系列方法,通过它可以很容易的获得网络层中的配置信息、权重信息、输入输出张量等。正是因为有它的存在,所以可以将整个模型看做是一个前向转播的网络。
通过使用“layer”中特定的方法,可以提取到步骤S1训练的模型中每一层的权重以及相关的参数,例如卷积层中的卷积核、步长、激活函数等。这些变量在前向传播中将会被使用。
需要注意的是,如果所用模型的数据量比较大,使用栈数据会对内存造成极大的影响,可以通过设置选项head=true将数据存到二进制文件,并在运行时动态装载数据进堆内存。
S4.网络解析
将Keras整个网络结构当做一个DAG(有向无环图)来解析。Kreas可以通过它的functional API支持序列模型以及复杂网络结构,包括允许模型有多个输入输出、内部分支合并、以及在同一模型中多次重复使用特定的网络层。举例来说,Keras的每一个网络结构,都是多个网络层叠加的结果。在将网络层添加进模型之前,需要先声明网络层的类型,参数,输入输出大小等,并且同一个网络层被添加进模型之后,依然可以在某一个节点添加进这个网络层,得到多个网络序列。假设声明模型M,网络层<t1,t2,t3...,tn>,可以通过使用M.add(t1/t2/.../tn)的方式将所有的网络层加入模型,此时整个模型结构M为{t1->t2->t3...->tn},相应的,可以添加多个ti,i表示1-n。
所以我们可以利用这个特性将整个模型看做是一个DAG,每个节点都是一个特定网络层,每条边都是上一层传递到下一层的数据片段。
S5.代码生成
在完成所述步骤S1-S4的工作后,通过得到的信息,即可开始执行自动化代码生成过程。通过步骤S3,S4提取到的权重和模型结构,利用步骤S2提供的函数库支持,可以自生成内核支持的机器学习代码,所述步骤S5包括以下步骤:
1.添加头文件。根据Linux内核模块语法在文件中添加相应头文件。
2.添加权重变量和网络属性。根据步骤S3中提取到的权重和属性自动添加到文件中。相应的,权重变量是大容量数据,在Python中以矩阵形式保存,所以需要迭代遍历权重变量,并在迭代时将权重数据添加到变量中。
3.创建文件。内核中支持的代码形式为c文件,所以需要将文件形式命名为c文件。
4.根据Linux内核模块编译语法规范文件格式。
附图说明
图1:自动化编译机器学习内核模块步骤流程图
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
如图1所示,根据本发明实施例所述的一种机器学习操作系统内核的自动化编译方法,它的主要操作可以被划分为三个部分:模型训练、权重参数和网络解析、代码生成。
1.模型训练
假设训练一个简单的全连接层可以如下:
2.权重参数和网络解析
根据步骤S3和S4所述,在定义抽象网络结构后,对网络解析和权重提取过程如下:
(1)传入整个模型文件;
(2)按顺序获取当前结构的下一层网络,在定义的抽象网络结构中也可以当做下一个节点;
(3)判断当前结构是否为复杂网络结构,如果是,则迭代解析该层网络,返回2;
(4)通过Python自有的接口layer提取网络配置信息以及权重参数,如果当前层已经是模型的输出层,则结束迭代,否则返回2。
其伪代码如下:
3.代码生成
在获得内核支持、模型解析完毕后,对代码生成实现步骤如下:
(1)结合内核模块开发规范,总结内核执行过程中所必须满足的高级属性,对所需的内核头文件作变量保存;
(2)提取网络权重参数后,对权重参数使用步骤S2定义的数据结构作变量保存;
(3)提取网络配置信息后,对配置信息使用步骤S2提供的内核函数库作匹配调用声明;
(4)以文件追加形式创建c文件,依次将变量写入文件。
其伪代码如下:
相应的,内核中进行浮点计算应开启特定寄存器,即在预测计算之前之后应插入代码:
Claims (5)
1.一种机器学习操作系统内核的自动化编译方法,其特征在于实施步骤为:
(1)该发明通过Keras训练机器学习模型,并将训练好的模型保存为可靠的h5文件;
(2)根据内核的特性,提供可支持机器学习模型运算的数据结构和函数库;
(3)通过使用Keras中特定的方法,可以提取到训练的模型中每一层的权重以及相关的参数;
(4)通过使用Keras中特定的方法,可以提取到训练的模型中每一层网络配置信息,比如网络名称;
(5)通过步骤2-4实施方法获取到的数据,根据步骤2和4相对应的调用方法,自动生成内核代码。
2.根据权利要求1所述的方法,其特征在于:
(1)根据内核语法格式提供对模型适配的数据结构;
(2)根据内核语法格式提供内核函数库,获得相应的架构支持。
3.根据权利要求1所述的方法,其特征在于,本方法在模型解析和权重提取阶段:
(1)定义抽象网络结构,获取网络配置信息;
(2)定义抽象网络结构,提取模型的权重和其他参数。
4.根据权利要求3所述的方法,其特征在于,本方法定义抽象网络结构后,对模型解析过程如下:
(1)传入整个模型文件;
(2)按顺序获取当前结构的下一层网络,在定义的抽象网络结构中也可以当做下一个节点;
(3)判断当前结构是否为复杂网络结构,如果是,则迭代解析该层网络,返回2;
(4)通过Python自有的接口layer提取网络配置信息以及权重参数,如果当前层已经是模型的输出层,则结束迭代,否则返回2。
5.根据权利要求1—4所述的方法,其特征在于,本方法在获得内核支持、模型解析完毕后,对代码生成实现步骤如下:
(1)结合内核模块开发规范,总结内核执行过程中所必须满足的高级属性,对所需的内核头文件作变量保存;
(2)根据权利要求3所述的方法,提取网络权重参数后,对权重参数使用权利要求2中定义的数据结构作变量保存;
(3)根据权利要求3所述的方法,提取网络配置信息后,对配置信息使用权利要求2中提供的内核函数库作匹配调用声明;
(4)以文件追加形式创建c文件,根据本权利所述步骤,依次将变量写入文件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211742639.8A CN115983378A (zh) | 2022-12-23 | 2022-12-23 | 一种机器学习操作系统内核的自动化编译方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211742639.8A CN115983378A (zh) | 2022-12-23 | 2022-12-23 | 一种机器学习操作系统内核的自动化编译方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115983378A true CN115983378A (zh) | 2023-04-18 |
Family
ID=85967831
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211742639.8A Pending CN115983378A (zh) | 2022-12-23 | 2022-12-23 | 一种机器学习操作系统内核的自动化编译方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115983378A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117239930A (zh) * | 2023-09-21 | 2023-12-15 | 国网智能科技股份有限公司 | 一种配电网智能巡检系统及方法 |
-
2022
- 2022-12-23 CN CN202211742639.8A patent/CN115983378A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117239930A (zh) * | 2023-09-21 | 2023-12-15 | 国网智能科技股份有限公司 | 一种配电网智能巡检系统及方法 |
CN117239930B (zh) * | 2023-09-21 | 2024-05-17 | 国网智能科技股份有限公司 | 一种配电网智能巡检系统及方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11893386B1 (en) | Optimizing source code from binary files | |
CN113283613B (zh) | 深度学习模型的生成方法、优化方法、装置、设备及介质 | |
CN109313547B (zh) | 用于cpu利用率和代码重构的查询优化器 | |
EP0428560A1 (en) | Machine process for translating programs in binary machine language into another binary machine language | |
US9256437B2 (en) | Code generation method, and information processing apparatus | |
CN114399019A (zh) | 神经网络编译方法、系统、计算机设备及存储介质 | |
Ahmad et al. | Leveraging parallel data processing frameworks with verified lifting | |
US20230113783A1 (en) | Cross-platform code conversion method and device | |
JP2021192282A (ja) | 深層学習フレームワークにおけるパターン変換方法、装置、電子デバイス、コンピューター記憶媒体およびコンピュータープログラム製品 | |
CN115983378A (zh) | 一种机器学习操作系统内核的自动化编译方法 | |
US20130019225A1 (en) | Incremental Inferences for Developing Data Models | |
CN116228515B (zh) | 硬件加速系统、方法及相关装置 | |
Katel et al. | High performance gpu code generation for matrix-matrix multiplication using mlir: some early results | |
Ali et al. | Parallelizing user-defined functions in the ETL workflow using orchestration style sheets | |
Griswold et al. | Managing design trade-offs for a program understanding and transformation tool | |
US20110271261A1 (en) | Modifiable high-level intermediate representation of source code | |
Ivanenko et al. | Method of automated generation of autotuners for parallel programs | |
JP5399601B2 (ja) | 実装コード開発システム、及び実装コード開発プログラム | |
CN113031952A (zh) | 深度学习模型的执行代码的确定方法、装置及存储介质 | |
US12045611B1 (en) | Reconfigurable neural network processing based on subgraph recognition | |
Collie | Program synthesis for heterogenous accelerators | |
Chapman et al. | Program development tools for clusters of shared memory multiprocessors | |
Wang et al. | SDPA: An Optimizer for Program Analysis of Data-Parallel Applications | |
Liu et al. | ConFL: Constraint-guided Fuzzing for Machine Learning Framework | |
Dong et al. | AKGF: Automatic Kernel Generation for DNN on CPU-FPGA |
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 |