总结七
近期工作
工作构思
经过前面几周的工作,我们基本完成了此次项目实训的核心功能,接下来的工作是对当前功能的扩展以及将功能包装成系统。
作为组长,我为每个组员分配了属于自己的工作,我主要负责的是将原本的核心功能适配并入到未来的系统。
原先的核心功能是选择模型和数据集进行训练,在本次系统设计中需要转化为发布者决定模型和使用的数据集,选择模型训练的用户可以获取到当前模型并进行训练,于是我针对目前的结构做了如下调整。
首先展示一下当前的功能架构以及后续调整的草稿图。
当前功能架构
目前一共有三个状态:初始化、训练模型和训练完成。开始用户处于初始化的状态,当用户填写完信息点击开始训练,就会到训练模型的状态。在训练模型的状态下,后端会不断与聚合端交互进行模型的聚合,并计算精度返还给前端进行展示,前端会通过图表和折线图进行展示。当训练完成之后,就会跳转到训练完成的状态。
未来架构草稿图
优化
在后面我们需要将之前自己选择模型和数据集的选项去除,只保留图表和折线图的展示,将原本的选择模型和数据集做成一个可以上传和选择的任务,由用户选择,增加自由度。
任务列表
首先用户可以查看当前已经发布的所有任务,自由选择任务参与训练,这些任务会有相应的人数限制,达到人数限制方可进行训练
等待任务
用户可以选择一个任务进行训练,这时候用户会进入等待环节,等待人数达标;人数达标后,下方会出现开始训练的按钮,点击即可开始训练(这里解释下可能出现的不同时点击,我们完成的是完全异步的联邦学习任务,不同时会自动调整每个人的权值,使影响最小化)
任务训练
点击开始训练后,训练端首先会从数据库中将模型的python文件下载保存到固定位置,调用的时候可以直接调用(这个模型模板会在发布者上传之前提供下载链接,统一的模板有利于调用方便),然后训练过程就是之前的训练过程。
工作实现
提示功能与数据库的连接尚未进行。
首先是选择任务的功能
先获取用户选择的任务id,因为需要通过id去找到对应的任务,然后更新数据库人数,最后是循环读取数据库人数限制和已有人数。
如果人数达标,也就是已有人数大于等于人数限制,就给前端反馈可以开始训练的信息;如果尚未达标,就给前端反馈当前已有的人数和用户账号,并且等待5s重新读取数据库(等待5s保障数据库运行正常)。
接下来是返回功能,用户可以点击等待窗口的返回按钮返回到所有任务界面,这个过程需要更改数据库中人数和已有账号的信息。
更改数据库的信息,反馈给前端结果。
最后便是任务训练过程了,目前已经构建好逻辑思路,尚未开始更改(这个过程需要在备份的项目上进行,防止原本核心功能的崩溃)
下步计划
1.学习django的数据库操作,完善功能的实现。
2.与前端和聚合端的交互有待测试。