2020年第二季度工作总结
想要一直保持积极的工作状态是一件很困难事情。 回看第二季度,就能明显发现我的工作效果远远比不上第一季度。 也许第二季度才是更普遍的情况,毕竟诸如业务系统建设等偏向于工程类的工作会占用大量时间,但很难作为核心工作业绩。
业务系统
第一季度总结中我计划用最快的时间完成系统升级建设任务,实际上这项工作从 5 月一直持续到 6 月底。
GRAPES MESO v5.0 后处理
GRAPES MESO 系统从 v4.3 升级到 v5.0,由 GRAPES MESO 3km 代替原有 GRAPES MESO 10km 系统。 原有 MESO 3km 后处理系统支持 v5.0 的每天 8 次快速循环同化。 同时将 MESO 10km 后处理系统中的图片产品移植到 MESO 3km,并将 NMC 网站产品任务单独组织到一个新系统中。
详情请参看以下文章:
《NWPC笔记:GRAPES_MESO v5.0 后处理系统运行报告》
《NWPC笔记:为GRAPES_MESO v5.0后处理增加冷启动数据支持》
因为 3km 系统预报时效只有 36 小时,原有 10km 00 和 12 时次长时效产品将由 GRAPES TYM 系统(即 GRAPES MESO 9km)替代。 修改 GRAPES TYM 系统配置,增加运行时次,缩小模式输出间隔,并增加 modelvar 输出。 同时使用 GRAPES TYM 的输出绘制 MESO 10km 长时效的图片产品。
增加输出文件后,因拷贝文件耗时太长问题,原有数据归档方式已不再合适,GRAPES TYM 系统使用新的数据归档方式,详情请查看
MESO v5.0 后处理系统升级相关工作分成两个时间段:
- 5 月 5 日 - 5 月 29 日:主要工作
- 6 月 25 日 - 6 月 30 日:收尾工作
GRAPES GFS v3.0 后处理
GRAPES GFS 从 v2.4/v2.5 升级到 v3.0,后处理系统仅增加 4 张图片产品,没有大的变动。
为了后续维护的方便,我对整个系统进行重构,详情参看:
《NWPC笔记:GRAPES GFS v3.0后处理系统升级进行中》
GFS v3.0 后处理系统升级相关工作时间段:
- 6 月 27 日 - 7 月 1 日
业务运行数据分析
在第一季度工作基础上继续对业务运行数据进行分析,并着手开发可以实际应用的工具。
模式输出日志分析
这是我第一个尝试使用机器学习算法(线性回归)的项目,从模式输出日志中提取模式积分单步耗时,并预测模式积分任务总体耗时。
已在业务环境中实时运行预测任务并保存结果,支持的业务系统包括:
- GRAPES GFS
- GRAPES MESO
- GRAPES TYM
项目地址:
详情请参看以下文章。
恒定步长(全球模式):
动态步长(区域模式):
为提高脚本启动速度,尝试使用 Pyinstaller 封装。详情参看:
文件时间分析
尝试使用 GRIB 2 文件生成时间来统计数值预报模式产品生成时间,并使用重采样方法计算产品生成的标准时间。
详情参看以下文章:
补传任务可能会覆盖原有文件,所以单纯使用 GRIB 2 文件时间得到的结果不一定精确。 后续我会将上述方法应用到产品消息数据中,延续第一季度在消息工具上的工作。
ecFlow 日志分析
对 NWPC 工作流日志分析工具进行了更新,主要涉及下面两个项目:
nwpc-oper/nwpc-workflow-log-model
nwpc-oper/nwpc-workflow-log-collector
更新了日志解析模块,增加解析选项,提高日志解析速度,并修复了一个 BUG。
同时还撰写了一系列文章介绍该工具。
日志介绍:
日志解析:
《ecFlow笔记:ecFlow日志解析 - 状态变化记录》
《ecFlow笔记:ecFlow日志解析 - child 命令记录》
《ecFlow笔记:ecFlow日志解析 - client 命令记录》
诊断工具
工作的关键在于能拿出让大家都可以用的工具,第二季度在这方面进行一定的尝试,但还远远不够。
数据工具
整个 4 月份在持续更新 nwpc-oper/nwpc-data 工具,默认使用 eccodes-python 解码数据,并为 API 增加统一的接口。
为测试数据平台的接口,开发试验性质的 nwpc-oper/nwpc-gdata 项目,并在 nwpc-data 中使用该项目,直接获取 GRIB2 消息的二进制字节流。
nwpc-data 库的使用方法请参考下面的项目。
也可以参考以下文章。
介绍:
用法示例:
《GRIB笔记:使用eccodes-python加载垂直剖面图数据》
实现细节:
绘图工具
为封装业务绘图脚本的工具 nwpc-oper/nwpc-graphics 增加交互菜单,详情参看:
《使用 Jupyter Widgets 构建简单的交互应用》
诊断软件
将分布式调度项目 perillaroc/ploto 与诊断软件 GIDAT 的后台绘图任务对接。 实现在 Linux 服务器上调用二级存储数据绘制图片产品。
项目地址:
监控
监控方面仅做了少量的开发工作。
消息平台
申请的现代化项目已获得通过,但遗憾的是第二季度我并没有开展消息平台方面的工作。
仅更新了 NWPC 消息工具,为模式积分时间预测系统增加直接向消息平台发送消息的子命令。
项目地址:
监控工具
更新 ecflow-watchman 工具,增加对 redis 异常的处理,解决线程异常退出的问题,目前已稳定运行超过一个半月。
项目地址:
详情参看:
应急演练
在 CMA-PI 重启后,运行业务 ecFlow 服务的登录节点有故障,我尝试将 ecFlow 服务切换到其他节点上运行。
详情参看:
故障分析
第二季度出现了严重的运维故障,导致某个模式连续几天没有运行。 我们讨论了一些整改方法,并对值班管理进行一些改变。
我尝试分析了另一次比较相似的故障,详情如下;
其他工作
其他工作比较繁杂,仅列举两项可能会形成成果的工作。
台风报文检索
开发从 NMC 台风数据库检索台风数据的程序,为预报全球台风做准备。 同事正在评估检索得到的数据,尚未实际应用。
检索程序是一个简单的 SQL 查询,详情参见:
工程项目
工程项目尚未结束,虽然 6 月已完成测试,但验收被推迟到 7 月进行。希望能顺利验收结束。
总结
第二季度完成了今年两项最重要的系统升级任务,下半年将不会有大规模的系统更新,可以有更多的时间从事研究工作。
从去年开始接触机器学习,终于在第二季度拿出可以实际应用的项目,用于分析模式的输出日志。 不过,目前仅使用最基本的线性回归方法训练单个数据,没有考虑耗时与模式输出之间的关系,也没有对历史数据信息进行整合,还有很大的进步空间。 另外,原计划在数据层面尝试实现的机器学习算法也没有开展。
虽然在第二季度我也进行了不少开发工作,但明显少于第一季度,而且更新的项目还不成体系,没有形成可以广泛使用的工具。 第一季度构建的一些项目在第二季度中缺乏持续更新。 即便我已有关于某些项目后续发展的一些想法,也没有将精力聚焦在核心任务上。
我总是纠结于自己该进行哪项工作,而思考一番的结果往往就是哪个都不做。
下半年已到,应该好好思考下一步的工作计划。
下阶段计划
第三季度,应该将工作重心放到消息平台和诊断工具上,并形成可以广泛使用的工具。
参照任务书中的项目要求,完善 NWPC 消息平台功能,开发可视化面板等尚未实现的功能,并在业务系统中实际应用。
继续优化 nwpc-data 数据工具,提高批量数据处理的效率,并尝试在单位内部推广。 争取参与单位检验诊断工具的开发,将已有项目的一些经验应用到新项目中。
持续学习机器学习相关技术,完善现有积分时长预测系统,并尝试开展新项目。
希望下半年是一个新的开始。