CN114153427A - 持续集成流水线的优化方法及系统 - Google Patents
持续集成流水线的优化方法及系统 Download PDFInfo
- Publication number
- CN114153427A CN114153427A CN202010924298.0A CN202010924298A CN114153427A CN 114153427 A CN114153427 A CN 114153427A CN 202010924298 A CN202010924298 A CN 202010924298A CN 114153427 A CN114153427 A CN 114153427A
- Authority
- CN
- China
- Prior art keywords
- pipeline
- task
- tasks
- state
- name
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/04—Forecasting or optimisation specially adapted for administrative or management purposes, e.g. linear programming or "cutting stock problem"
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/06—Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
- G06Q10/063—Operations research, analysis or management
- G06Q10/0631—Resource planning, allocation, distributing or scheduling for enterprises or organisations
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Human Resources & Organizations (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Economics (AREA)
- Software Systems (AREA)
- Strategic Management (AREA)
- General Physics & Mathematics (AREA)
- Entrepreneurship & Innovation (AREA)
- Operations Research (AREA)
- Tourism & Hospitality (AREA)
- Quality & Reliability (AREA)
- General Business, Economics & Management (AREA)
- Marketing (AREA)
- Game Theory and Decision Science (AREA)
- Development Economics (AREA)
- Educational Administration (AREA)
- Image Processing (AREA)
Abstract
本发明提供了一种持续集成流水线的优化方法及系统。本发明实施例还可以利用任务重要度评级算法区分流水线中的一般任务和重要任务,智能的监控和调配了流水线的任务执行顺序,在流水线再次启动时可以略过不必要的任务,直接从重要任务执行,在保证应用成功交付的同时也大大降低了持续集成流水线执行的时间成本,节约了系统资源,提高了流水线的执行效率。
Description
技术领域
本发明涉及计算机技术领域,具体而言,本发明涉及一种持续集成流水线的优化方法及系统。
背景技术
现代应用开发的目标是让多位开发人员同时处理同一应用的不同功能。但是,如果企业安排在一天内将所有分支源代码合并在一起(称为“合并日”),最终可能造成工作繁琐、耗时,而且需要手动完成。这是因为当一位独立工作的开发人员对应用进行更改时,有可能会与其他开发人员同时进行的更改发生冲突。如果每个开发人员都自定义自己的本地集成开发环境(IDE,Integrated Development Environment),而不是让团队就一个基于云的IDE达成一致,那么就会让问题雪上加霜。
持续集成(CI,Continuous integration)是一种通过在应用开发阶段引入自动化来实现频繁向客户交付应用的方法。CI可以帮助开发人员更加频繁地将代码更改合并到共享分支或“主干”中。一旦开发人员对应用所做的更改被合并,系统就会通过自动构建应用并运行不同级别的自动化测试来验证这些更改,确保这些更改没有对应用造成破坏。这意味着测试内容涵盖了构成整个应用的不同模块。如果自动化测试发现新代码和现有代码之间存在冲突,CI可以更加轻松地快速修复这些错误。近来CI技术也被广泛应用到机器学习领域。
现有技术中的一种用于使用代码审查质量来优化CI请求队列的方案,基于可靠性因子来确定拉取CI队列每个请求的可靠性值进行分类:高优先级集成队列和低优先级集成队列,分类器将可信分类中的拉取请求发送到高优先级集成队列,将不可信分类中的拉取请求发送到低优先级集成队列保证多个集成请求时的产品交付质量。
上述方案并没有涉及到CI的内部,只是简单的根据代码质量设定优先级来决定CI流水线的执行顺序,但没有考虑源码和配置文件的修改对整个流水线内各个任务的影响,也没有考虑根据不同文件的修改对流水线任务更精细化的监控和调配,因此CI流水线的执行效率仍旧较低。
发明内容
本发明实施例要解决的技术问题是提供一种持续集成流水线的优化方法及系统,提高了持续集成流水线的执行效率,节约系统资源。
为解决上述技术问题,根据本发明的一个方面,提供了一种持续集成流水线的优化方法,包括:
根据目标应用的流水线配置文件,依次执行所述流水线的每个任务;
在当前任务执行失败时,保存当前任务对应的流水线状态,所述流水线状态包括当前任务之前的所有任务的状态;
在所述流水线修改完成后,根据每个任务的重要度指标及对应权重,计算每个任务的重要度评分;
根据所述重要度评分,确定所述流水线中需要继续执行的剩余任务,并更新所述流水线配置文件;
根据更新后的流水线配置文件和已保存的流水线状态,执行所述流水线中的剩余任务。
可选的,在依次执行所述流水线中的每个剩余任务的过程中,若任一任务执行失败,则返回所述在当前任务执行失败时,保存当前任务对应的流水线状态的步骤。
可选的,所述的优化方法还包括:
在所述流水线中的所有任务都成功执行后,发布或部署所述目标应用。
可选的,所述任务的重要度指标包括以下所有指标:
所述任务相关的源码文件中被修改的文件数量;
所述任务相关的外部参数中被修改的参数数量;
所述任务需要启动的容器数量;
所述任务是否与所述持续集成流水线的优化平台进行交互;
所述任务是否使用图形处理器GPU资源。
可选的,所述根据所述重要度评分,确定所述流水线中需要继续执行的剩余任务,包括:
选择出所述重要度评分超过预设的门限值的重要任务,并从所述重要任务中确定出在所述流水线中执行顺序最靠前的第一任务;
从所述第一任务和第二任务中,选择出在所述流水线中执行顺序靠前的目标任务,并将所述流水线中从所述目标任务开始的所有任务,作为所述流水线中需要继续执行的剩余任务,其中,所述第二任务是所述流水线修改之前执行失败的任务。
可选的,所述在当前任务执行失败时,保存当前任务对应的流水线状态,包括:
将所述流水线的名称、当前任务执行失败时的时间戳以及当前任务的名称组合,生成当前任务对应的流水线状态名称,并获取当前任务之前的所有任务的状态;
将关键字key为所述流水线状态名称,取值value为当前任务对应的流水线状态的key-value对,保存在状态机容器的数据库中。
可选的,所述根据更新后的流水线配置文件和已保存的流水线状态,执行所述流水线中的剩余任务,包括:
根据所述流水线状态名称,从所述状态机容器的数据库获得所述流水线状态名称对应的流水线状态;
根据所获得的流水线状态,执行所述流水线中的剩余任务。
可选的,在更新所述流水线配置文件时,进一步将所述流水线状态名称作为所述流水线配置文件的文件名;
在根据所述流水线状态名称,从所述状态机容器的数据库获得所述流水线状态名称对应的流水线状态时,根据所述流水线配置文件的文件名,查询所述状态机容器的数据库,获得所述流水线配置文件的文件名对应的流水线状态。
根据本发明的另一方面,还提供了一种持续集成流水线的优化系统,包括:流水线运行模块,用于根据目标应用的流水线配置文件,依次执行所述流水线的每个任务;
状态管理模块,用于在当前任务执行失败时,保存当前任务对应的流水线状态,所述流水线状态包括当前任务之前的所有任务的状态;
重要度评级模块,用于在所述流水线修改完成后,根据每个任务的重要度指标及对应权重,计算每个任务的重要度评分;根据所述重要度评分,确定所述流水线中需要继续执行的剩余任务,并更新所述流水线配置文件;
所述流水线运行模块,还用于根据更新后的流水线配置文件和已保存的流水线状态,执行所述流水线中的剩余任务。
可选的,所述状态管理模块,还用于在依次执行所述流水线中的每个剩余任务的过程中,若任一任务执行失败,则触发所述状态管理模块保存当前任务对应的流水线状态。
可选的,每个任务的重要度指标包括以下所有指标:
所述任务相关的源码文件中被修改的文件数量;
所述任务相关的外部参数中被修改的参数数量;
所述任务需要启动的容器数量;
所述任务是否与所述持续集成流水线的优化平台进行交互;
所述任务是否使用图形处理器GPU资源。
可选的,所述重要度评级模块,还用于选择出所述重要度评分超过预设的门限值的重要任务,并从所述重要任务中确定出在所述流水线中执行顺序最靠前的第一任务;从所述第一任务和第二任务中,选择出在所述流水线中执行顺序靠前的目标任务,并将所述流水线中从所述目标任务开始的所有任务,作为所述流水线中需要继续执行的剩余任务,其中,所述第二任务是所述流水线修改之前执行失败的任务。
根据本发明的又一方面,还提供了一种持续集成流水线的优化系统,包括:处理器、存储器及存储在所述存储器上并可在所述处理器上运行的程序,所述程序被所述处理器执行时实现如上所述的持续集成流水线的优化方法的步骤。
本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的持续集成流水线的优化方法的步骤。
与现有技术相比,本发明实施例提供的持续集成流水线的优化方法及系统,至少具有以下有益效果:
本发明实施例中利用状态保存技术,保证流水线再次启动时任务输入的正确获取,另外,本发明实施例还可以利用任务重要度评级算法区分流水线中的一般任务和重要任务,智能的监控和调配了流水线的任务执行顺序,在流水线再次启动时可以略过不必要的任务,直接从重要任务执行,在保证应用成功交付的同时也大大降低了持续集成流水线执行的时间成本,节约了系统资源,提高了流水线的执行效率。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例的持续集成流水线的优化方法的一种应用场景示意图;
图2为本发明实施例的持续集成流水线的优化方法的一种流程示意图;
图3为本发明实施例的持续集成流水线的优化方法的一种流程示例图;
图4为本发明实施例的持续集成流水线的优化系统的一种结构示意图;
图5为本发明实施例的持续集成流水线的优化系统的另一结构示意图。
具体实施方式
为使本发明要解决的技术问题、技术方案和优点更加清楚,下面将结合附图及具体实施例进行详细描述。在下面的描述中,提供诸如具体的配置和组件的特定细节仅仅是为了帮助全面理解本发明的实施例。因此,本领域技术人员应该清楚,可以对这里描述的实施例进行各种改变和修改而不脱离本发明的范围和精神。另外,为了清楚和简洁,省略了对已知功能和构造的描述。
应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本发明的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。
在本发明的各种实施例中,应理解,下述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
如背景技术所述的,现有技术的持续集成流水线在执行过程中,存在着执行效率低等问题,为解决以上问题中的至少一种,本发明实施例提供了一种持续集成流水线的优化方法,该方法智能的监控和调配了流水线的任务执行顺序,在流水线再次启动时可以略过不必要的任务,直接从重要任务执行,从而可以提高流水线的执行效率。
本发明实施例提供了一种持续集成流水线的优化方法,可以解决在机器学习等应用开发中持续集成流水线的任务状态恢复和高效执行问题,下文中将主要以Kubernetes平台为例说明本发明实施例的相关技术方案,需要说明的是,本发明实施例并不局限于Kubernetes平台,任何能够搭建持续集成流水线的平台均可适用于本发明。
Kubernetes平台是谷歌(Google)公司开源的一个容器编排引擎,支持自动化部署、大规模可伸缩、应用容器化管理。Kubernetes平台用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效。Kubernetes提供了应用部署、规划、更新和维护的一种机制。在Kubernetes中,可以创建多个容器,每个容器里面运行一个应用实例,然后通过内置的负载均衡策略,实现对这一组应用实例的管理、发现、访问,而这些细节都不需要运维人员去进行复杂的手工配置和处理。
本发明实施例基于Kubernetes平台实现了一种持续集成流水线任务优化技术,持续集成框架根据运行状态对流水线任务进行智能分级以及快速恢复流水线执行。图1给出了本发明实施例所述持续集成流水线的优化方法的一种应用场景示意图,图1中,Kubernetes平台搭建在硬件资源平台上,该硬件资源平台包括CPU、图形处理器(GPU,Graphics Processing Unit)、AI芯片、存储器、网络资源。在Kubernetes平台上搭建有持续集成/部署的流水线,用于对应用进行持续集成和持续部署。
如图2所示,本发明实施例提供的持续集成流水线的优化方法,包括:
步骤21,根据目标应用的流水线配置文件,依次执行所述流水线的每个任务。
这里,目标应用可以是机器学习等应用,具体可以是人工智能(AI,ArtificialIntelligence)、情感分析(Sentimental Analysis)等应用。流水线配置文件中通常配置了需要执行的各个任务以及任务的执行顺序,具体参数可以包括:任务运行镜像的名称、版本和镜像库的统一资源定位(URL,Uniform Resource Locator)地址、目标应用对应的模型的名称及版本等信息。
步骤22,在当前任务执行失败时,保存当前任务对应的流水线状态,所述流水线状态包括当前任务之前的所有任务的状态。
这里,按照流水线配置文件,顺序执行各个任务,直至执行完成所有任务。在任务执行的过程中,如果某个任务执行失败,则中止流水线的执行,此时,保存对应的流水线状态,所述流水线状态包括当前执行失败的任务之前的所有任务的状态。例如,假设当前执行失败的任务是第3个任务,该第3个任务之间的两个任务均成功执行,此时,需要保存前面两个任务的状态。所述任务的状态具体可以包括已执行完成的任务的状态值及其输出,所述状态值用于表示所述任务是否成功执行,所述输出可以通过任务成功执行后的输出文件的名称和输出文件的地址来表征。这样,本发明实施例在某个任务失败时,将保存该失败任务之前所有成功执行的任务的状态。
步骤23,在所述流水线修改完成后,根据每个任务的重要度指标及对应权重,计算每个任务的重要度评分。
在上述步骤22中发生任务执行失败之后,等待开发人员对流水线进行修改,具体修改可以是针对执行失败的任务的文件及相关的外部参数,还可以是其他任务的文件及相关的外部参数。修改时可能会修改某个或某些任务的源码文件、参数配置和容器等。本发明实施例为了提高流水线的执行效率,在上述修改完成后,根据每个任务的重要度指标及对应权重,计算每个任务的重要度评分。
这里,所述任务的重要度指标包括以下所有指标:
1)所述任务相关的源码文件中被修改的文件数量;
2)所述任务相关的外部参数中被修改的参数数量;
3)所述任务需要启动的容器数量;
4)所述任务是否与所述持续集成流水线的优化平台(如Kubernetes平台)进行交互;
5)所述任务是否使用GPU资源。
通常,以上5个参数中,第1~3个参数的重要性相对较高,第4~5个参数的重要性相对较低。也就是说,第1~3个参数的权重通常高于第4~5个参数的权重。可选的,第1~3个参数的权重依次递减。
在计算某个任务的重要度评分时,可以计算该任务的每个重要度指标及对应权重的乘积,然后对这些乘积求和,将和值作为该任务的重要度评分。
步骤24,根据所述重要度评分,确定所述流水线中需要继续执行的剩余任务,并更新所述流水线配置文件。
这里,可以判断所述重要度评分是否超过预设的门限值,选择出所述重要度评分超过预设的门限值的重要任务,然后,按照这些重要任务在流水线中的执行顺序,选择出执行顺序最靠前的第一任务。然后,从所述第一任务和第二任务中,选择出在所述流水线中执行顺序靠前的目标任务,并将所述流水线中从所述目标任务开始的所有任务,作为所述流水线中需要继续执行的剩余任务。进而根据这些剩余任务,更新所述流水线配置文件,更新后的流水线配置文件中仅包括这些剩余任务。其中,所述第二任务是所述流水线修改之前执行失败的任务。
作为一种特例,所述第一任务和第二任务可能是同一任务,此时,可以从两者中选择任意一个,作为所述目标任务。
这样,本发明实施例可以利用任务重要度评级算法,区分流水线中的一般任务和重要任务,智能的监控和调配了流水线的任务执行顺序,在流水线再次启动时可以略过不必要的任务,直接从重要任务执行。
例如,假设流水线有依次顺序执行的任务1~6,假设执行任务3时发生失败,后续修改流水线后计算各个任务的重要度评分,发现任务2和任务4是重要任务,此时重要任务中执行顺序最靠前的是任务2(即所述第一任务)。然后,从任务2(即所述第一任务)和任务3(即所述第二任务)中选择出顺序靠前的目标任务,得到目标任务为任务2,因此,将从任务2开始的任务2~6,作为剩余任务,更新流水线配置文件。更新后的流水线配置文件包括有需要执行的各个剩余任务以及剩余任务的执行顺序,具体参数可以包括:剩余任务运行镜像的名称、版本和镜像库的URL地址、目标应用对应的模型的名称及版本等信息。
又例如,假设流水线有依次顺序执行的任务1~6,假设执行任务3时发生失败,后续修改流水线后计算各个任务的重要度评分,发现任务5和任务6是重要任务,此时重要任务中执行顺序最靠前的是任务5(即所述第一任务)。然后,从任务5(即所述第一任务)和任务3(即所述第二任务)中选择出顺序靠前的目标任务,得到目标任务为任务3,因此,将从任务3开始的任务3~6,作为剩余任务,更新流水线配置文件。需要说明的是,以上举例只是为了更为严谨的说明如何确定剩余任务,该举例的情况发生的可能性很小,因为针对执行失败的任务3对流水线进行修改时,通常会影响到任务3及其之前的任务,从而导致这些任务的重要度评分通常较高。
步骤25,根据更新后的流水线配置文件和已保存的流水线状态,执行所述流水线中的剩余任务。
这里,在执行所述流水线配置文件中的首个剩余任务时,需要根据已保存的流水线状态,获取该首个剩余任务在流水线中的前一任务的输出,将该输出作为该首个剩余任务的输入,以执行该首个剩余任务。对于后续的剩余任务,则将该后续的剩余任务的前一任务的输出,作为该后续的剩余任务的输入,依次执行各个后续的剩余任务。
通过以上步骤,本发明实施例在完成流水线修改后,可以根据任务的重要度评分,确定需要执行的剩余任务,可以在某些情况下避免从头开始执行全部的任务,由于减少了需要执行的任务,从而可以在流水线再次启动时可以略过不必要的任务,直接从重要任务执行,在保证应用成功交付的同时也大大降低了持续集成流水线执行的时间成本,节约了系统资源,提高了流水线的执行效率。另外,本发明实施例中还利用状态保存技术,保证流水线再次启动时任务输入的正确获取。
作为一种实现方式,在上述步骤22中,在当前任务执行失败时,保存当前任务对应的流水线状态时,本发明实施例可以将所述流水线的名称、当前任务执行失败时的时间戳以及当前任务的名称组合,生成当前任务对应的流水线状态名称,并获取当前任务之前的所有任务的状态;然后,将关键字(key)为所述流水线状态名称,取值(value)为当前任务对应的流水线状态的key-value对,保存在状态机容器的数据库中。
在上述步骤25中,根据更新后的流水线配置文件和已保存的流水线状态,执行所述流水线中的剩余任务时,可以根据所述流水线状态名称,从所述状态机容器的数据库获得所述流水线状态名称对应的流水线状态;根据所获得的流水线状态,执行所述流水线中的剩余任务,例如,从所获得的流水线状态中,获取更新后的流水线配置文件中的首个剩余任务在流水线中的前一任务的输出,将该输出作为该首个剩余任务的输入,以执行该首个剩余任务。
可选的,本发明实施例在上述步骤24中更新所述流水线配置文件时,可以将所述流水线状态名称作为所述流水线配置文件的文件名。这样,在根据所述流水线状态名称,从所述状态机容器的数据库获得所述流水线状态名称对应的流水线状态时,根据所述流水线配置文件的文件名,查询所述状态机容器的数据库,获得所述流水线配置文件的文件名对应的流水线状态。
在执行剩余任务时,依然可能发生执行失败的情况。本发明实施例在依次执行所述流水线中的每个剩余任务的过程中,若任一任务执行失败,则返回上述步骤22,从而循环执行以上步骤,直至所有任务都执行成功。
可选的,在所述流水线中的所有任务都成功执行后,本发明实施例还可以发布或部署所述目标应用。
为帮助更好的理解以上实施例,下面通过一个更为具体的示例对本发明进行说明。
在本示例中,假设情感分析(Sentimental Analysis)是用户需要交付的应用,这是一个涉及到机器学习的应用,需要在Kubernetes平台上部署分布式Tensorflow容器集群来处理此应用。为了情感分析应用的自动部署(交付),在Kubernetes平台上部署了持续集成框架并配置流水线,此流水线包括依次执行的4个任务,分别是:1)代码打包及镜像生成任务;2)模型训练任务;3)模型输出任务;4)模型部署及预测任务。
针对这4个任务,代码文件分别保存在文件版本管理服务器的4个文件夹中(例:http://192.168.200.138:31587/NLP build/,train/,export/,serving/),各个任务的配置参数保存在各项任务的配置文件中。例如,build任务参数包括:代码服务器URL地址,镜像服务器URL地址,镜像版本;train任务参数:应用模型训练执行文件地址,应用模型训练镜像URL地址,镜像版本;输出任务参数:模型地址,模型版本,模型输出镜像URL地址,镜像版本;应用模型服务参数:模型服务执行文件地址,模型服务镜像URL地址,镜像版本,模型的地址,模型的名称)持续集成流水线优化技术用来动态持续的监控流水线各个任务的运行状况,并根据运行状态对流水线任务进行智能评级以及快速恢复流水线执行,在自动化交付应用的同时也提高流水线执行性能。
在情感分析应用的代码开发完成后,配置流水线文件来执行流水线的所有任务,优化系统会在Kubernetes平台上执行此文件启动应用对应的流水线,以下结合图3,具体说明流水线的执行过程机器失败任务的状态保存的流程。
S1,用户配置情感分析应用流水线任务执行文件并提供给任务运行模块,包括配置四个子任务和它们之间的执行顺序,参数包括:任务运行镜像的名称,版本和镜像库的url,模型的名称,模型的版本等。
S2,在Kubernetes平台上执行情感分析流水线文件在持续集成框架上启动流水线。
S3,根据情感分析应用流水线的配置依次处理流水线各个任务。
S4~S5,实时监控情感分析应用流水线运行日志,获取当前任务的运行状态。
S6,判断流水线的所有任务是否都成功完成,如果流水线的所有任务都成功执行完成,则进入步骤S13,如果某个任务执行失败,则进入S7。
S7,如果流水线中的某一任务(例:模型部署及预测任务)失败,获取此流水线失败发生的时间戳TS(例:20200713143715001),流水线的名称P_name(例:NLP_SA_Pipeline_001),失败任务名称T_name(例:Serving_Task_001),将流水线名称P_name,任务名称T_name和错误发生时间戳TS组合在一起作为此流水线状态名称P_status_name(例:NLP_SA_Pipeline_001Serving_Task_00120200713143715001)。
另外,获取失败任务之前的所有任务的状态T_status,包括状态值,输出文件名称和地址(例:Build_Task_001:completed,SA_image,http://harbor.repository.com/library/SA_image:1.0;Train_Task_001:completed,SA_model,/home/CI/SA/v1/;Export_Task_001:completed,SA_model_artificate,http://modeldb.com/SA/20200713143715001/SA_model_artificate)
然后,连接状态机容器,以流水线当前状态名称P_status_name作为key,所有任务的状态T_status为value,保存到状态机容器的Redis数据库中。
通过以上步骤,本示例完成了失败流水线的任务状态保存工作。
以下说明在开发人员处理完成失败流水线错误对应的问题(S8)后,所有任务的重要度分级的具体处理流程。
S9,针对机器学习领域的应用,优化系统采用以下5个流水线任务的重要度评价指标:
1)每个任务的源码文件修改数量;
2)每个任务配置参数修改数量;
3)每个任务需启动的容器数量;
4)每个任务是否与Kubernetes集群有交互(如,有交互为1,否则为0);
5)每个任务是否使用GPU资源(如使用GPU为1,否则为0)。
对每个任务,首先为上述5个重要度评价指标,设定初始权重比,分别为w1~w5,设定的原则为对任务的重要度影响越大权重越高。源码文件修改会影响模型质量及预测准确率,则任务通常都要重新执行,w1权重最高;其次是任务配置参数的修改数量对应的w2,虽不影响模型质量,但会影响流水线任务成功执行;再次是任务需启动的容器数目对应的w3对任务的高可用有影响。是否与Kubernetes集群交互对应的w4,及是否使用GPU资源对应的w5,只影响执行效率,对任务的成功与否无甚影响,所以权重最低(例:w1=100,w2=50,w3=20,w4=10,w5=5)。依照这样的分配原则设定重要度指标的权重值,并将其写入重要度指标配置模块。
开发人员在完成失败流水线出现的问题对应处理(如修改源码文件代码,配置参数等)后,优化系统通过服务器文件修改日志及集群硬件列表,获取情感分析应用流水线各个任务的重要度评价指标的指标值(例:镜像生成任务没有代码参数改动,需启动容器数目为2,无交互和GPU;模型训练任务无代码参数修改,需启动容器数目为3,有交互及GPU使用;模型输出任务源码修改文件数目为2,参数修改数目为1,需启动容器数目为2,无交互和GPU;模型部署及预测任务修改文件数目为3,参数无修改,需启动容器数目3,有交互,无GPU)。
然后,从重要度指标配置模块获取5个指标的权重值,针对流水线的每个任务,将源码文件权重值与修改的文件数目作乘积,将参数权重值与修改的参数数目作乘积,将容器权重值与启动容器数目作乘积,将Kubernetes集群交互权重值与交互状态值作乘积,将GPU权重值与GPU使用状态值作乘积。然后,将这五者(修改文件,胚子参数,容器,交互状态和GPU)的乘积相加求和得到每个任务的重要度得分。
例:模型打包任务score=100*0+50*0+20*2+10*0+5*0=40;
模型训练任务score=100*0+50*0+20*3+10*1+5*1=75;
模型输出任务score=100*2+50*1+20*2+10*0+5*0=290。
然后,根据每个任务的得分作重要度评价,例如,超过100即为重要任务,必须再次执行,低于100则为一般任务,则没有必要再次执行。
通过以上步骤,完成了情感分析应用流水线所有任务重要度评分处理。
以下说明被保存的流水线状态读取并再次执行的具体处理流程。
S10,获取每个任务的重要度评分,更新流水线配置文件,对流水线每个任务更新分级。(例:模型输出任务得分为290,为重要任务)并将5)的流水线当前状态名称P_status_name作为流水线配置文件的新文件名。具体的流水线配置文件中所配置的需要执行的任务请参考前文的描述,此处不再赘述。
S11,连接状态机容器,以更新后的流水线配置文件名为key,取得此流水线对应的失败任务之前所有任务的状态T_status,包括任务的状态值,任务输出文件名称和地址。流水线前一任务的输出即为后一任务的输入,读取更新后的流水线配置文件确定第一个重要任务,并以此任务名为key从T_status取得任务输入(例:在更新后的流水线配置文件模型输出任务为第一个重要任务,从T_status获取模型输出任务的前一任务即训练任务的输出Train_Task_001:completed,SA_model,/home/CI/SA/v1/就是此任务的输入)。
然后,确定流水线的输入,在Kubernetes平台执行更新后的流水线配置文件。
S12,实时监控情感分析应用流水线运行日志,获取当前任务的运行状态,判断流水线的所有任务是否都成功完成,如果流水线的所有任务都成功执行完成,则进入步骤S13,如果某个任务执行失败,则返回S7。
S13,在所有任务成功执行完成后,客户可访问部署的情感分析应用进行预测/分析服务。
在本示例中,用户仅需配置情感分析应用流水线执行文件,持续集成框架利用流水线优化系统让流水线再次启动时略过不必要的任务,直接从重要任务执行使得产品得以更快速地交付给客户。在本示例中利用状态保存技术保证流水线再次启动时任务输入的正确获取,任务重要度评级算法通过区分流水线中的一般任务和重要任务,智能的监控和调配了流水线的任务执行顺序,在保证应用成功交付的同时也大大降低了持续集成流水线执行的时间成本,节约了系统资源。
以上介绍了本发明实施例的各种方法,下面进一步提供实现上述方法的系统。
请参照图4,本发明实施例提供的一种持续集成流水线的优化系统40,包括:
流水线运行模块41,用于根据目标应用的流水线配置文件,依次执行所述流水线的每个任务;
状态管理模块42,用于在当前任务执行失败时,保存当前任务对应的流水线状态,所述流水线状态包括当前任务之前的所有任务的状态;
重要度评级模块43,用于在所述流水线修改完成后,根据每个任务的重要度指标及对应权重,计算每个任务的重要度评分;根据所述重要度评分,确定所述流水线中需要继续执行的剩余任务,并更新所述流水线配置文件;
所述流水线运行模块41,还用于根据更新后的流水线配置文件和已保存的流水线状态,执行所述流水线中的剩余任务。
通过以上模块,本发明实施例的持续集成流水线的优化系统在流水线再次启动时可以略过不必要的任务,直接从重要任务执行,在保证应用成功交付的同时也大大降低了持续集成流水线执行的时间成本,节约了系统资源,提高了流水线的执行效率。
可选的,所述状态管理模块,还用于在依次执行所述流水线中的每个剩余任务的过程中,若任一任务执行失败,则触发所述状态管理模块保存当前任务对应的流水线状态。
可选的,所述优化系统还包括以下模块(图中未示出):
部署模块,用于在所述流水线中的所有任务都成功执行后,发布或部署所述目标应用。
可选的,每个任务的重要度指标包括以下所有指标:
所述任务相关的源码文件中被修改的文件数量;
所述任务相关的外部参数中被修改的参数数量;
所述任务需要启动的容器数量;
所述任务是否与所述持续集成流水线的优化平台进行交互;
所述任务是否使用图形处理器GPU资源。
可选的,所述重要度评级模块,还用于选择出所述重要度评分超过预设的门限值的重要任务,并从所述重要任务中确定出在所述流水线中执行顺序最靠前的第一任务;从所述第一任务和第二任务中,选择出在所述流水线中执行顺序靠前的目标任务,并将所述流水线中从所述目标任务开始的所有任务,作为所述流水线中需要继续执行的剩余任务,其中,所述第二任务是所述流水线修改之前执行失败的任务。
可选的,所述状态管理模块,还用于在保存当前任务对应的流水线状态,时,将所述流水线的名称、当前任务执行失败时的时间戳以及当前任务的名称组合,生成当前任务对应的流水线状态名称,并获取当前任务之前的所有任务的状态;将关键字key为所述流水线状态名称,取值value为当前任务对应的流水线状态的key-value对,保存在状态机容器的数据库中。
可选的,所述流水线运行模块,还用于在根据更新后的流水线配置文件和已保存的流水线状态,执行所述流水线中的剩余任务时,根据所述流水线状态名称,从所述状态机容器的数据库获得所述流水线状态名称对应的流水线状态;根据所获得的流水线状态,执行所述流水线中的剩余任务。
可选的,所述重要度评级模块,还用于在更新所述流水线配置文件时,进一步将所述流水线状态名称作为所述流水线配置文件的文件名;
所述流水线运行模块,还用于在根据所述流水线状态名称,从所述状态机容器的数据库获得所述流水线状态名称对应的流水线状态时,根据所述流水线配置文件的文件名,查询所述状态机容器的数据库,获得所述流水线配置文件的文件名对应的流水线状态。
如图5所示,本发明实施例还提供了另一种持续集成流水线的优化系统50,该持续集成流水线的优化系统50具体包括处理器51、存储器52、总线系统53、接收器54和发送器55。其中,处理器51、存储器52、接收器54和发送器55通过总线系统53相连,该存储器52用于存储指令,该处理器51用于执行该存储器52存储的指令,以控制接收器54接收信号,并控制发送器55发送信号;
其中,该处理器51,用于读取存储器中的程序,执行下列过程:
根据目标应用的流水线配置文件,依次执行所述流水线的每个任务;
在当前任务执行失败时,保存当前任务对应的流水线状态,所述流水线状态包括当前任务之前的所有任务的状态;
在所述流水线修改完成后,根据每个任务的重要度指标及对应权重,计算每个任务的重要度评分;
根据所述重要度评分,确定所述流水线中需要继续执行的剩余任务,并更新所述流水线配置文件;
根据更新后的流水线配置文件和已保存的流水线状态,执行所述流水线中的剩余任务。
应理解,在本发明实施例中,该处理器51可以是中央处理单元(CentralProcessing Unit,简称为“CPU”),该处理器51还可以是其他通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
该存储器52可以包括只读存储器和随机存取存储器,并向处理器51提供指令和数据。存储器52的一部分还可以包括非易失性随机存取存储器。例如,存储器52还可以存储设备类型的信息。
该总线系统53除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图中将各种总线都标为总线系统53。
在实现过程中,上述方法的各步骤可以通过处理器51中的硬件的集成逻辑电路或者软件形式的指令完成。结合本发明实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器52,处理器51读取存储器52中的信息,结合其硬件完成上述方法的步骤。为避免重复,这里不再详细描述。
该程序被处理器执行时能实现以上各个方法实施例中的持续集成流水线的优化方法中的所有实现方式,且能达到相同的技术效果,为避免重复,此处不再赘述。
在本发明的一些实施例中,还提供了一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时实现以下步骤:
根据目标应用的流水线配置文件,依次执行所述流水线的每个任务;
在当前任务执行失败时,保存当前任务对应的流水线状态,所述流水线状态包括当前任务之前的所有任务的状态;
在所述流水线修改完成后,根据每个任务的重要度指标及对应权重,计算每个任务的重要度评分;
根据所述重要度评分,确定所述流水线中需要继续执行的剩余任务,并更新所述流水线配置文件;
根据更新后的流水线配置文件和已保存的流水线状态,执行所述流水线中的剩余任务。
该程序被处理器执行时能实现上述应用于无线接入点的持续集成流水线的优化方法中的所有实现方式,且能达到相同的技术效果,为避免重复,此处不再赘述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (12)
1.一种持续集成流水线的优化方法,其特征在于,包括:
根据目标应用的流水线配置文件,依次执行所述流水线的每个任务;
在当前任务执行失败时,保存当前任务对应的流水线状态,所述流水线状态包括当前任务之前的所有任务的状态;
在所述流水线修改完成后,根据每个任务的重要度指标及对应权重,计算每个任务的重要度评分;
根据所述重要度评分,确定所述流水线中需要继续执行的剩余任务,并更新所述流水线配置文件;
根据更新后的流水线配置文件和已保存的流水线状态,执行所述流水线中的剩余任务。
2.如权利要求1所述的优化方法,其特征在于,在依次执行所述流水线中的每个剩余任务的过程中,若任一任务执行失败,则返回所述在当前任务执行失败时,保存当前任务对应的流水线状态的步骤。
3.如权利要求1或2所述的优化方法,其特征在于,还包括:
在所述流水线中的所有任务都成功执行后,发布或部署所述目标应用。
4.如权利要求3所述的优化方法,其特征在于,所述任务的重要度指标包括以下所有指标:
所述任务相关的源码文件中被修改的文件数量;
所述任务相关的外部参数中被修改的参数数量;
所述任务需要启动的容器数量;
所述任务是否与所述持续集成流水线的优化平台进行交互;
所述任务是否使用图形处理器GPU资源。
5.如权利要求4所述的优化方法,其特征在于,所述根据所述重要度评分,确定所述流水线中需要继续执行的剩余任务,包括:
选择出所述重要度评分超过预设的门限值的重要任务,并从所述重要任务中确定出在所述流水线中执行顺序最靠前的第一任务;
从所述第一任务和第二任务中,选择出在所述流水线中执行顺序靠前的目标任务,并将所述流水线中从所述目标任务开始的所有任务,作为所述流水线中需要继续执行的剩余任务,其中,所述第二任务是所述流水线修改之前执行失败的任务。
6.如权利要求4所述的优化方法,其特征在于,所述在当前任务执行失败时,保存当前任务对应的流水线状态,包括:
将所述流水线的名称、当前任务执行失败时的时间戳以及当前任务的名称组合,生成当前任务对应的流水线状态名称,并获取当前任务之前的所有任务的状态;
将关键字key为所述流水线状态名称,取值value为当前任务对应的流水线状态的key-value对,保存在状态机容器的数据库中。
7.如权利要求6所述的优化方法,其特征在于,所述根据更新后的流水线配置文件和已保存的流水线状态,执行所述流水线中的剩余任务,包括:
根据所述流水线状态名称,从所述状态机容器的数据库获得所述流水线状态名称对应的流水线状态;
根据所获得的流水线状态,执行所述流水线中的剩余任务。
8.如权利要求7所述的优化方法,其特征在于,在更新所述流水线配置文件时,进一步将所述流水线状态名称作为所述流水线配置文件的文件名;
在根据所述流水线状态名称,从所述状态机容器的数据库获得所述流水线状态名称对应的流水线状态时,根据所述流水线配置文件的文件名,查询所述状态机容器的数据库,获得所述流水线配置文件的文件名对应的流水线状态。
9.一种持续集成流水线的优化系统,其特征在于,包括:
流水线运行模块,用于根据目标应用的流水线配置文件,依次执行所述流水线的每个任务;
状态管理模块,用于在当前任务执行失败时,保存当前任务对应的流水线状态,所述流水线状态包括当前任务之前的所有任务的状态;
重要度评级模块,用于在所述流水线修改完成后,根据每个任务的重要度指标及对应权重,计算每个任务的重要度评分;根据所述重要度评分,确定所述流水线中需要继续执行的剩余任务,并更新所述流水线配置文件;
所述流水线运行模块,还用于根据更新后的流水线配置文件和已保存的流水线状态,执行所述流水线中的剩余任务。
10.如权利要求9所述的优化系统,其特征在于,
所述状态管理模块,还用于在依次执行所述流水线中的每个剩余任务的过程中,若任一任务执行失败,则触发所述状态管理模块保存当前任务对应的流水线状态。
11.如权利要求9或10所述的优化系统,其特征在于,每个任务的重要度指标包括以下所有指标:
所述任务相关的源码文件中被修改的文件数量;
所述任务相关的外部参数中被修改的参数数量;
所述任务需要启动的容器数量;
所述任务是否与所述持续集成流水线的优化平台进行交互;
所述任务是否使用图形处理器GPU资源。
12.如权利要求9或10所述的优化系统,其特征在于,
所述重要度评级模块,还用于选择出所述重要度评分超过预设的门限值的重要任务,并从所述重要任务中确定出在所述流水线中执行顺序最靠前的第一任务;从所述第一任务和第二任务中,选择出在所述流水线中执行顺序靠前的目标任务,并将所述流水线中从所述目标任务开始的所有任务,作为所述流水线中需要继续执行的剩余任务,其中,所述第二任务是所述流水线修改之前执行失败的任务。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010924298.0A CN114153427A (zh) | 2020-09-04 | 2020-09-04 | 持续集成流水线的优化方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010924298.0A CN114153427A (zh) | 2020-09-04 | 2020-09-04 | 持续集成流水线的优化方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114153427A true CN114153427A (zh) | 2022-03-08 |
Family
ID=80460651
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010924298.0A Pending CN114153427A (zh) | 2020-09-04 | 2020-09-04 | 持续集成流水线的优化方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114153427A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116400987A (zh) * | 2023-06-06 | 2023-07-07 | 智者四海(北京)技术有限公司 | 持续集成方法、装置、电子设备及存储介质 |
-
2020
- 2020-09-04 CN CN202010924298.0A patent/CN114153427A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116400987A (zh) * | 2023-06-06 | 2023-07-07 | 智者四海(北京)技术有限公司 | 持续集成方法、装置、电子设备及存储介质 |
CN116400987B (zh) * | 2023-06-06 | 2023-08-18 | 智者四海(北京)技术有限公司 | 持续集成方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3754495B1 (en) | Data processing method and related products | |
US10699036B2 (en) | Method and system for testing vehicle | |
EP3182280B1 (en) | Machine for development of analytical models | |
AU2016259298B2 (en) | Machine for development and deployment of analytical models | |
US10965733B2 (en) | Efficient, automated distributed-search methods and systems | |
US9852035B2 (en) | High availability dynamic restart priority calculator | |
US10185937B1 (en) | Workflow support for an annotations-based generic load generator | |
US8572614B2 (en) | Processing workloads using a processor hierarchy system | |
US10871918B2 (en) | Writing composite objects to a data store | |
US11809306B2 (en) | Method and system for scalable performance testing in cloud computing environments | |
US20220292083A1 (en) | System and method for batch and real-time feature computation | |
CN109634989B (zh) | 一种hive任务执行引擎选择方法和系统 | |
CN109614227A (zh) | 任务资源调配方法、装置、电子设备及计算机可读介质 | |
US10977098B2 (en) | Automatically deploying hardware accelerators based on requests from users | |
CN111859139A (zh) | 应用程序推荐方法、装置、计算设备和介质 | |
WO2016018352A1 (en) | Platform configuration selection based on a degraded makespan | |
CN112052082A (zh) | 任务属性优化方法、装置、服务器及存储介质 | |
CN114519006A (zh) | 测试方法、装置、设备以及存储介质 | |
CN114153427A (zh) | 持续集成流水线的优化方法及系统 | |
CN116974874A (zh) | 数据库的测试方法、装置、电子设备及可读存储介质 | |
CN117076096A (zh) | 任务流程的执行方法、装置、计算机可读介质及电子设备 | |
CN114490526B (zh) | 选课索引文件更新方法、课程搜索方法及装置 | |
CN112181443B (zh) | 服务的自动化部署方法、装置及电子设备 | |
CN113722141A (zh) | 数据任务的延迟原因确定方法、装置、电子设备及介质 | |
CN117290113B (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 |