[[TrainingModel] = 可视化实验模型周期训练

什么是模型周期性训练

算法流程搭建完成之后,可读取新的数据进行模型训练,直至训练出优质的模型参数。在此过程中,系统需根据用户设置的调度周期,创建训练任务,完成任务运行。

如何配置周期训练参数

AIWorks目前支持月、周、天、小时和分钟5种调度配置方式,本文将分别介绍配置方式和调度系统中的实例运行情况。

  • 调度属性调度属性的配置包括如下内容:此任务接受调度还是停止调度?此任务在什么时间生效?多长时间间隔运行一次?具体什么时候运行?具体包括:

    1. 调度状态
      选中"冻结",表示此任务停止训练,不会进行实际的计算(通常此功能用于暂时不需要运行,但也不想删除的任务); 冻结后任务每天仍会产生实例,但调度时会直接返回已冻结状态,不会真正运行任务逻辑。

    2. 生效日期:任务只在生效日期内执行;

    3. 调度周期:分为{天;周;月;小时;分钟},若选中"",则表示此任务每天执行一次;

    4. 起调时间:用户设定调度周期后,还需要设定具体在哪个时刻点启动任务。根据用户选择的调度周期不同,起调时间需要配置不同的参数:

调度周期 起调时间配置

天调度任务,即每天自动运行一次。新建周期任务时,默认的时间周期为每天0点运行一次,可根据需要自行指定运行时间点,配置"具体时间":
- 小时:单选下拉列表,00-23,默认选中00
- 分钟:单选下拉列表,00-59,默认选中00

周调度任务,即每周的特定几天里每天在特定时间点自动运行一次,需配置"选择时间"和"具体时间":
- 选择时间:复选下拉列表{星期一;星期二;…​…​星期日},可复选,默认选中"星期一";
- 具体时间:同"调度周期-日"相同;

月调度任务,即每月指定的特定几天里每天在特定时间点自动运行一次,需配置"选择时间"和"具体时间":
- 选择时间:复选下拉列表{每月最后一天;每月1号;每月2号;…​…​每月31号},可复选,默认选中"星期一";
- 具体时间:同"调度周期-日"相同;

小时

小时调度任务,即每天指定的时间段内按N*1小时的时间间隔运行一次,比如每天1点到4点的时间段内,每1小时运行一次。当调度周期切换到非天级调度时,节点起调时间将不可选,需配置"开始时间"、"结束时间"和"间隔时间":
- 开始时间、结束时间:同"调度周期-日"类似,小时可选择00-23,分钟不可选,开始时间的分钟为0,结束时间的分钟为59;
- 间隔时间:单选下拉列表{1小时;2小时…​…​23小时},默认选中1小时;
- 开始时间,应早于结束时间,若不符合,需提示用户"开始时间应早于结束时间";

分钟

分钟调度任务,即每天指定的时间段内按N*指定分钟的时间间隔运行一次,目前能支持的最短时间间隔为每5分钟运行一次,当调度周期切换到非天级调度,节点起调时间将不可选,需配置"开始时间"、"结束时间"和"间隔时间":
- 开始时间、结束时间:同"调度周期-小时"相同;
- 间隔时间:单选下拉列表{5分钟;10分钟;…​…​55分钟},默认选中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间的依赖关系配置。

一个任务可以依赖多个上游任务,同样,一个任务可被多个任务依赖。依赖属性为非必填项,当下游任务需依赖上游任务产出数据,则可配置依赖关系。
上游任务失败后,下游任务不会运行,但其状态会被置为失败状态。
  • 跨周期依赖

配置任务的跨周期依赖,如:天调度任务中,今天需要执行的数据依赖本任务昨天执行的数据,那么可以配置依赖昨天任务的周期,这样一来,昨天的实例必须先执行成功,今天的实例才可以调度起来,这种依赖主要是体现在任务调度实例的依赖。
跨周期依赖配置有两类:

  1. 不依赖上一调度周期:所有任务默认选择该选项,即不依赖任何任务的上周期实例。若A任务在3月1日未运行成功,则在3月2日会产生新的实例并运行。

  2. 自依赖,等待上一调度周期成功,才能继续运行。应用场景:假设设定A任务每天1:00运行,设定为自依赖后,A任务在3月1日未运行成功,则在3月2日不会运行。

  3. 自依赖,等待上一调度周期结束,才能继续运行。周期结束包含3种状态,成功、失败、取消。若A任务在3月1日发生以上3种情况之一时,则在3月2日会产生新的实例运行。

依赖属性配置的调度依赖是同周期依赖和跨周期依赖不冲突。任务A可以配置依赖属性依赖任务B,也可以配置跨周期依赖依赖B,如此任务A既依赖任务B,本周期也依赖任务B上周期。