[[TrainingModel] = 可视化实验模型周期训练
如何配置周期训练参数
AIWorks目前支持月、周、天、小时和分钟5种调度配置方式,本文将分别介绍配置方式和调度系统中的实例运行情况。
-
调度属性调度属性的配置包括如下内容:此任务接受调度还是停止调度?此任务在什么时间生效?多长时间间隔运行一次?具体什么时候运行?具体包括:
-
调度状态
选中"冻结",表示此任务停止训练,不会进行实际的计算(通常此功能用于暂时不需要运行,但也不想删除的任务); 冻结后任务每天仍会产生实例,但调度时会直接返回已冻结状态,不会真正运行任务逻辑。 -
生效日期:任务只在生效日期内执行;
-
调度周期:分为{天;周;月;小时;分钟},若选中"天",则表示此任务每天执行一次;
-
起调时间:用户设定调度周期后,还需要设定具体在哪个时刻点启动任务。根据用户选择的调度周期不同,起调时间需要配置不同的参数:
-
调度周期 | 起调时间配置 |
---|---|
日 |
天调度任务,即每天自动运行一次。新建周期任务时,默认的时间周期为每天0点运行一次,可根据需要自行指定运行时间点,配置"具体时间": |
周 |
周调度任务,即每周的特定几天里每天在特定时间点自动运行一次,需配置"选择时间"和"具体时间": |
月 |
月调度任务,即每月指定的特定几天里每天在特定时间点自动运行一次,需配置"选择时间"和"具体时间": |
小时 |
小时调度任务,即每天指定的时间段内按N*1小时的时间间隔运行一次,比如每天1点到4点的时间段内,每1小时运行一次。当调度周期切换到非天级调度时,节点起调时间将不可选,需配置"开始时间"、"结束时间"和"间隔时间": |
分钟 |
分钟调度任务,即每天指定的时间段内按N*指定分钟的时间间隔运行一次,目前能支持的最短时间间隔为每5分钟运行一次,当调度周期切换到非天级调度,节点起调时间将不可选,需配置"开始时间"、"结束时间"和"间隔时间": |
- 按照小时周期调度时,时间周期按左闭右闭原则计算,比如配置为从0点到2:59点的时间段内,每隔1个小时运行一次,表明时间区间为[00:00,02:59],间隔为1小时,调度系统将会每天生成3个实例,分别在0:00/1:00/2:00运行。 - 算法开发平台支持的最小调度粒度为5min。 |
任务实例的生成
AIWorks在每天22:00统一生成第二天所有需要的任务实例,基于以上设计,任务开发时需要注意任务的提交时间,这里以一个天周期调度任务A为例:
任务A基本信息:调度周期:1天;具体调度时间:8:00;
1)若您在1月1日21:00提交A任务(时间轴上侧),将会在当天22:00产生A任务的实例,并会在1月2日8:00第一次运行;
2)若您在1月1日23:00提交A任务(时间轴下侧),由于已经在22:00产生了1月2日的所有实例,A任务在1月2日将不会运行。A任务的实例将会在1月2日22:00产生,并在1月3日第一次运行。
Tips任务被配置为冻结是否生成实例? 处于冻结状态的任务,其周期实例依然会生成,但不会运行。 对于存在依赖关系的多个任务,如果将上游任务A冻结,则下游任务B也会进入"冻结"状态,B任务的实例也会产生,但不会运行,在B任务的执行日志中会打印出是由于A任务被冻结才没有运行的。 |
Tips任务被删除是否会影响实例的运行? 如果此任务被其他任务依赖(是其他任务的上游任务),则此任务不能被删除,您需要先解除依赖关系再进行删除 任务删除后,已生成的任务实例不会被删除,但会运行失败 |
Tips想在每月的最后一天计算当月数据怎么办? 目前系统不支持配置 每月最后一天,因此如果时间周期选择每月31日,那么在有31日的月份会有一天调度,其他日期都是生成实例然后直接设为运行成功 需要统计每个月的数据时,建议选择每月的1日运行,计算上个月的数据 |
查看训练结果
模型训练实例在运维中心-运行历史查看,可运维各模型训练任务,查看各实例运行结果,并进行模型导出与在线部署等,详见运行历史页面。
依赖关系
依赖关系包含任务间依赖与跨周期依赖2种依赖关系。
-
任务间依赖:多个任务间进行依赖,如任务A与任务B。在AIWorks中,可用作算法任务与算法任务之间的依赖,或算法任务与离线任务的依赖。目前此功能还不支持,迭代中;
-
跨周期依赖:指同个任务的上个周期与当前周期进行依赖;
一个周期运行的任务,它的依赖关系的优先级大于时间属性。在时间属性决定的某个时间点到达时,任务实例不会马上运行,而是先检查上游是否全部运行成功。 |
1. 上游依赖的实例没有全部运行成功并且定时运行时间已到,则实例不会运行。 2. 上游依赖的实例全部运行成功并且定时运行时间还未到,则实例不会运行。 3. 上游依赖的实例全部运行成功并且定时运行时间已到,则实例具备了运行的条件,待其获得集群的计算资源后即可以开始运行,集群资源的分配由Spark集群分配,用户不可干预。 |
-
任务间依赖
若某任务B必须在任务A完成后运行,则A为B的上游任务,这种依赖关系可通过如下方式配置:在"`上游任务`"输入框,输入任务关键字,在列出的可选任务中选中某个任务,此任务被添加到上游任务列表中,即完成了A、B间的依赖关系配置。
一个任务可以依赖多个上游任务,同样,一个任务可被多个任务依赖。依赖属性为非必填项,当下游任务需依赖上游任务产出数据,则可配置依赖关系。 |
上游任务失败后,下游任务不会运行,但其状态会被置为失败状态。 |
-
跨周期依赖
配置任务的跨周期依赖,如:天调度任务中,今天需要执行的数据依赖本任务昨天执行的数据,那么可以配置依赖昨天任务的周期,这样一来,昨天的实例必须先执行成功,今天的实例才可以调度起来,这种依赖主要是体现在任务调度实例的依赖。
跨周期依赖配置有两类:
-
不依赖上一调度周期:所有任务默认选择该选项,即不依赖任何任务的上周期实例。若A任务在3月1日未运行成功,则在3月2日会产生新的实例并运行。
-
自依赖,等待上一调度周期成功,才能继续运行。应用场景:假设设定A任务每天1:00运行,设定为自依赖后,A任务在3月1日未运行成功,则在3月2日不会运行。
-
自依赖,等待上一调度周期结束,才能继续运行。周期结束包含3种状态,成功、失败、取消。若A任务在3月1日发生以上3种情况之一时,则在3月2日会产生新的实例运行。
依赖属性配置的调度依赖是同周期依赖和跨周期依赖不冲突。任务A可以配置依赖属性依赖任务B,也可以配置跨周期依赖依赖B,如此任务A既依赖任务B,本周期也依赖任务B上周期。 |