一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种自动化生成AI训练代码的方法与流程

2022-03-09 01:31:19 来源:中国专利 TAG:

一种自动化生成ai训练代码的方法
技术领域
1.本发明涉及ai技术领域,具体为一种自动化生成ai训练代码的方法。


背景技术:

2.深度学习可以自动学习出有用的特征,脱离了对特征工程的依赖,在图像、语音等任务上取得了超越其他算法的结果。这种成功很大程度上得益于新神经网络结构的出现,如resnet、inception、densenet等。但设计出高性能的神经网络需要大量的专业知识与反复试验,成本极高,限制了神经网络在很多问题上的应用。神经结构搜索(neural architecture search,简称nas)是一种自动设计神经网络的技术,可以通过算法根据样本集自动设计出高性能的网络结构,在某些任务上甚至可以媲美人类专家的水准,甚至发现某些人类之前未曾提出的网络结构,这可以有效的降低神经网络的实现和使用成本。
3.nas的原理是给定一个称为搜索空间的候选神经网络结构集合,用某种策略从中搜索出最优网络结构。神经网络结构的优劣即性能用某些指标如精度、速度来度量,称为性能评估。在搜索过程的每次迭代中,从搜索空间产生“样本”即得到一个神经网络结构,称为“子网络”。在训练样本集上训练子网络,然后在验证集上评估其性能。逐步优化网络结构,直至找到最优的子网络。
4.搜索空间,搜索策略,性能评估策略是nas算法的核心要素。搜索空间定义了可以搜索的神经网络结构的集合,即解的空间。搜索策略定义了如何在搜索空间中寻找最优网络结构。性能评估策略定义了如何评估搜索出的网络结构的性能。
5.在给定搜索空间里面求解最优网络结构的过程,例如,寻找模型的最佳超参组合,或最好的神经网络架构等,称为experiment,即一次实验,它由trial和自动机器学习算法所组成。trial,即试验,是一次独立的尝试,它会使用某组配置(例如,一组超参值,或者特定的神经网络架构),一次实验往往包含了多次trial。机器学习算法一般需要包含骨干网络、优化器、损失函数、数据增强算法等在内的各自算子集合。
6.传统ai训练代码实现方式通常需要ai工程师通过定义搜索空间、实现模型代码,然后才能进行实验。整个过程需要工程师对代码有较深刻的理解,比较依赖工程师的开发水平,这种模式下开发的代码,可移植性不强,要应用到新的相似应用场景时,往往需要修改大部分的代码进行适配。这个过程比较繁琐,极费时间,效率相对低下,甚至实现过程容易出现人工失误,导致实验失败,事实上,experiment的流程相对固定,骨干网络、优化器、损失函数、数据增强等算法实现也可以复用,需要的是在具体的应用场景下,进行重新组合,最大程度的复用训练代码。为实现这一目的,一些解决方案是通过将所有模型文件一次性加载到程序中,然后训练主函数入口根据搜索空间的需求,使用对应的模型进行训练。但是,该方法的缺点也是很明显,一次性加载所有模型,将会导致代码文件臃肿,依赖多,随着模型种类的不断增加,这个问题愈加明显,另外,如果一次experiment就需要包含所有模型代码文件,这将非常不利于模型代码的保护。
7.针对以上问题,提出了一种自动化生成ai训练代码的方法。


技术实现要素:

8.本发明的目的在于提供一种自动化生成ai训练代码的方法,采用本装置进行工作,从而解决了上述背景中传统ai训练代码实现方式通常需要ai工程师通过定义搜索空间、实现模型代码,然后才能进行实验。整个过程需要工程师对代码有较深刻的理解,比较依赖工程师的开发水平,这种模式下开发的代码,可移植性不强,要应用到新的相似应用场景时,往往需要修改大部分的代码进行适配。这个过程比较繁琐,极费时间,效率相对低下,甚至实现过程容易出现人工失误,导致实验失败,事实上,experiment的流程相对固定,骨干网络、优化器、损失函数、数据增强等算法实现也可以复用,需要的是在具体的应用场景下,进行重新组合,最大程度的复用训练代码。为实现这一目的,一些解决方案是通过将所有模型文件一次性加载到程序中,然后训练主函数入口根据搜索空间的需求,使用对应的模型进行训练。但是,该方法的缺点也是很明显,一次性加载所有模型,将会导致代码文件臃肿,依赖多,随着模型种类的不断增加,这个问题愈加明显,另外,如果一次experiment就需要包含所有模型代码文件,这将非常不利于模型代码的保护的问题。
9.为实现上述目的,本发明提供如下技术方案:一种自动化生成ai训练代码的方法,包括以下步骤:
10.s1:输入搜索空间值,用户输入搜索空间值,初步验证搜索空间值有效性,匹配对应主函数模板;
11.s2:主函数模板解析,加载主函数模板文件,解析配置函数的实现,将用户输入的搜索空间值,通过模拟解析配置函数运行,解析出对应的基础配置,基础配置信息,包含算子库组件清单和预置参数信息;
12.s3:搜索控制值是否有效,根据基础配置参数获取到的算子组件清单,首先,验证清单的算子是否存在及是否满足可拔插要求,若配置参数满足需求,则加载算子库文件,保留清单包含的算子文件,将其他无关文件删除,然后根据保留的代码文件,生成对应的第三方库依赖,初始化基础代码仓库文件;根据基础配置参数的预置参数信息,反推生成该搜索空间对应的配置参数函数,该函数不含搜索空间入参;
13.s4:生产配置文件、依赖文件,基于主函数模板文件,组合基础配置参数、配置组件清单生成训练流程的入口函数,导入组件清单依赖,整合配置参数函数与入口函数,初步输出训练代码;
14.s5:代码有效性检测,检验代码是否有效,若有效进行继续进行步骤6;若无效,分析判断错误原因,若错误原因不在预定义的范围则退出;
15.s6:生成ai训练代码,输出训练代码文件,包含依赖包,ai训练代码入口文件。
16.进一步地,s3中算子库通过python类文件动态注册的方式实现可拔插,实现方法为每种类型的算子创建一个注册空间,将所有该类型的算子都主动注册到对应的空间中,并且可以通过算子名称从对应的注册空间获取到对应的类。
17.进一步地,算子之间是相互独立的,每个算子都应能在特定情形下被注销,算子注销不影响其他任何模块的使用。
18.进一步地,训练模板要能够在包含所有算子库的环境下,通过运行测试,实现最基本的训练任务,主函数入口文件定义了配置参数函数,配置参数函数可根据搜索空间,生成所需训练所需的算子组件清单以及入参规则,同时需要定义训练流程函数,包含数据集输
入、处理流程、输出指标等。
19.进一步地,s5中错误原因包括以下两点:
20.1)模板问题:继续匹配模板,若有模板匹配,则更换模板后重试步骤1,否则退出;
21.2)配置参数函数错误:是否预定义错误,若是根据预定义方法修改,修改后重试步骤3,否则退出。
22.进一步地,s2中预置参数是指不由搜索空间值决定的变量值,例如数据集来源、指标输出配置信息等。
23.进一步地,s6中,当生成ai训练代码时,则会进行输出提示。
24.与现有技术相比,本发明的有益效果如下:
25.1.本发明提出的一种自动化生成ai训练代码的方法,通过自动化生成ai训练代码,能够节省开发人员大量时间,提高开发效率,减少手动创建代码出错概率,降低ai训练的学习成本,减小训练代码冗余程度,为实现自动化训练提供支撑,同时标准化训练代码输出,可实现对训练代码的统一修改、注入、支持自定义配置等,减少无关的模型代码,从一定程度上保护了模型代码文件。
附图说明
26.构成本技术的一部分的附图用来提供对本技术的进一步理解,使得本技术的其它特征、目的和优点变得更明显。本技术的示意性实施例附图及其说明用于解释本技术,并不构成对本技术的不当限定。在附图中:
27.图1为本发明自动化生成ai训练代码的方法的生成ai训练代码逻辑图;
28.图2为本发明自动化生成ai训练代码的方法的生成ai训练代码流程图。
具体实施方式
29.为了使本技术领域的人员更好地理解本技术方案,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分的实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本技术保护的范围。
30.需要说明的是,本技术的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本技术的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
31.在本技术中,术语“上”、“下”、“左”、“右”、“前”、“后”、“顶”、“底”、“内”、“外”、“中”、“竖直”、“水平”、“横向”、“纵向”等指示的方位或位置关系为基于附图所示的方位或位置关系。这些术语主要是为了更好地描述本技术及其实施例,并非用于限定所指示的装置、元件或组成部分必须具有特定方位,或以特定方位进行构造和操作。
32.并且,上述部分术语除了可以用于表示方位或位置关系以外,还可能用于表示其
他含义,例如术语“上”在某些情况下也可能用于表示某种依附关系或连接关系。对于本领域普通技术人员而言,可以根据具体情况理解这些术语在本技术中的具体含义。
33.另外,术语“多个”的含义应为两个以及两个以上。
34.需要说明的是,在不冲突的情况下,本技术中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本技术。
35.请参阅图1和图2,一种自动化生成ai训练代码的方法,包括以下步骤:
36.s1:输入搜索空间值,用户输入搜索空间值,初步验证搜索空间值有效性,匹配对应主函数模板;
37.s2:主函数模板解析,加载主函数模板文件,解析配置函数的实现,将用户输入的搜索空间值,通过模拟解析配置函数运行,解析出对应的基础配置,基础配置信息,包含算子库组件清单和预置参数信息;
38.s3:搜索控制值是否有效,根据基础配置参数获取到的算子组件清单,首先,验证清单的算子是否存在及是否满足可拔插要求,若配置参数满足需求,则加载算子库文件,保留清单包含的算子文件,将其他无关文件删除,然后根据保留的代码文件,生成对应的第三方库依赖,初始化基础代码仓库文件;根据基础配置参数的预置参数信息,反推生成该搜索空间对应的配置参数函数,该函数不含搜索空间入参;
39.s4:生产配置文件、依赖文件,基于主函数模板文件,组合基础配置参数、配置组件清单生成训练流程的入口函数,导入组件清单依赖,整合配置参数函数与入口函数,初步输出训练代码;
40.s5:代码有效性检测,检验代码是否有效,若有效进行继续进行步骤6;若无效,分析判断错误原因,若错误原因不在以下范围则退出;
41.s6:生成ai训练代码,输出训练代码文件,包含依赖包,ai训练代码入口文件。
42.s2中预置参数是指不由搜索空间值决定的变量值,例如数据集来源、指标输出配置信息等。
43.s3中算子库通过python类文件动态注册的方式实现可拔插,实现方法为每种类型的算子创建一个注册空间,将所有该类型的算子都主动注册到对应的空间中,并且可以通过算子名称从对应的注册空间获取到对应的类,算子之间是相互独立的,每个算子都应能在特定情形下被注销,算子注销不影响其他任何模块的使用,训练模板要能够在包含所有算子库的环境下,通过运行测试,实现最基本的训练任务,主函数入口文件定义了配置参数函数,配置参数函数可根据搜索空间,生成所需训练所需的算子组件清单以及入参规则,同时需要定义训练流程函数,包含数据集输入、处理流程、输出指标等。
44.s5中错误原因包括以下两点:
45.1)模板问题:继续匹配模板,若有模板匹配,则更换模板后重试步骤1,否则退出;
46.2)配置参数函数错误:是否预定义错误,若是根据预定义方法修改,修改后重试步骤3,否则退出。
47.s2中预置参数是指不由搜索空间值决定的变量值,例如数据集来源、指标输出配置信息等。
48.s6中,当生成ai训练代码时,则会进行输出提示。
49.通过自动化生成ai训练代码,能够节省开发人员大量时间,提高开发效率,减少手
动创建代码出错概率,降低ai训练的学习成本,减小训练代码冗余程度,为实现自动化训练提供支撑,同时标准化训练代码输出,可实现对训练代码的统一修改、注入、支持自定义配置等,减少无关的模型代码,从一定程度上保护了模型代码文件。
50.综上所述:本发明提出的一种自动化生成ai训练代码的方法,通过自动化生成ai训练代码,能够节省开发人员大量时间,提高开发效率,减少手动创建代码出错概率,降低ai训练的学习成本,减小训练代码冗余程度,为实现自动化训练提供支撑,同时标准化训练代码输出,可实现对训练代码的统一修改、注入、支持自定义配置等,减少无关的模型代码,从一定程度上保护了模型代码文件。
51.需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。
52.需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。
53.以上所述仅为本技术的优选实施例而已,并不用于限制本技术,对于本领域的技术人员来说,本技术可以有各种更改和变化。凡在本技术的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献