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笔记:构建图片产品制作脚本

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 系统使用新的数据归档方式,详情请查看

NWPC笔记:优化模式输出文件检查模块

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

项目地址:

nwpc-oper/nwpc-log-tool

详情请参看以下文章。

恒定步长(全球模式):

NWPC笔记:获取模式积分时长 - 恒定步长

NWPC笔记:对比模式积分时长 - 恒定步长

NWPC笔记:分析模式积分时长 - 线性回归

NWPC笔记:预测模式积分时长 - 线性回归

动态步长(区域模式):

NWPC笔记:获取模式积分时长 - 动态步长

NWPC笔记:对比模式积分时长 - 动态步长

NWPC笔记:分析动态步长模式积分时长 - 线性回归

NWPC笔记:预测动态步长模式积分时长 - 线性回归

为提高脚本启动速度,尝试使用 Pyinstaller 封装。详情参看:

使用Pyinstaller封装Python脚本

文件时间分析

尝试使用 GRIB 2 文件生成时间来统计数值预报模式产品生成时间,并使用重采样方法计算产品生成的标准时间。

详情参看以下文章:

统计数值天气预报模式产品生成的典型时间

统计数值预报产品生成时间:单个时效

统计数值预报产品生成时间:单个时效重采样

统计数值预报产品生成时间:重采样

补传任务可能会覆盖原有文件,所以单纯使用 GRIB 2 文件时间得到的结果不一定精确。 后续我会将上述方法应用到产品消息数据中,延续第一季度在消息工具上的工作。

ecFlow 日志分析

对 NWPC 工作流日志分析工具进行了更新,主要涉及下面两个项目:

nwpc-oper/nwpc-workflow-log-model

nwpc-oper/nwpc-workflow-log-collector

更新了日志解析模块,增加解析选项,提高日志解析速度,并修复了一个 BUG。

同时还撰写了一系列文章介绍该工具。

日志介绍:

ecFlow笔记:ecFlow日志简介

ecFlow笔记:ecFlow日志分类

日志解析:

ecFlow笔记:ecFlow日志解析 - 通用字段

ecFlow笔记:ecFlow日志解析 - 状态变化记录

ecFlow笔记:ecFlow日志解析 - child 命令记录

ecFlow笔记:ecFlow日志解析 - client 命令记录

ecFlow笔记:ecFlow日志解析 - 服务端记录

诊断工具

工作的关键在于能拿出让大家都可以用的工具,第二季度在这方面进行一定的尝试,但还远远不够。

数据工具

整个 4 月份在持续更新 nwpc-oper/nwpc-data 工具,默认使用 eccodes-python 解码数据,并为 API 增加统一的接口。

为测试数据平台的接口,开发试验性质的 nwpc-oper/nwpc-gdata 项目,并在 nwpc-data 中使用该项目,直接获取 GRIB2 消息的二进制字节流。

nwpc-data 库的使用方法请参考下面的项目。

perillaroc/nwpc-data-guide

也可以参考以下文章。

介绍:

nwpc-data 库简介

用法示例:

GRIB笔记:使用cfgrib加载垂直剖面图数据

GRIB笔记:使用eccodes-python加载垂直剖面图数据

GRIB笔记:使用 xarray 插值

实现细节:

GRIB笔记:从GRIB 2文件中加载单个要素场

GRIB笔记:获取并加载GRIB 2消息字节流

绘图工具

为封装业务绘图脚本的工具 nwpc-oper/nwpc-graphics 增加交互菜单,详情参看:

使用 Jupyter Widgets 构建简单的交互应用

诊断软件

将分布式调度项目 perillaroc/ploto 与诊断软件 GIDAT 的后台绘图任务对接。 实现在 Linux 服务器上调用二级存储数据绘制图片产品。

项目地址:

perillaroc/ploto-gidat

监控

监控方面仅做了少量的开发工作。

消息平台

申请的现代化项目已获得通过,但遗憾的是第二季度我并没有开展消息平台方面的工作。

仅更新了 NWPC 消息工具,为模式积分时间预测系统增加直接向消息平台发送消息的子命令。

项目地址:

nwpc-message-client

监控工具

更新 ecflow-watchman 工具,增加对 redis 异常的处理,解决线程异常退出的问题,目前已稳定运行超过一个半月。

项目地址:

nwpc-oper/ecflow-client-cpp

详情参看:

ecFlow笔记:优化节点状态监控工具

应急演练

在 CMA-PI 重启后,运行业务 ecFlow 服务的登录节点有故障,我尝试将 ecFlow 服务切换到其他节点上运行。

详情参看:

ecFlow笔记:变更服务运行节点

故障分析

第二季度出现了严重的运维故障,导致某个模式连续几天没有运行。 我们讨论了一些整改方法,并对值班管理进行一些改变。

我尝试分析了另一次比较相似的故障,详情如下;

ecFlow笔记:定时任务没有启动 - 排查

ecFlow笔记:定时任务没有启动 - 分析

其他工作

其他工作比较繁杂,仅列举两项可能会形成成果的工作。

台风报文检索

开发从 NMC 台风数据库检索台风数据的程序,为预报全球台风做准备。 同事正在评估检索得到的数据,尚未实际应用。

检索程序是一个简单的 SQL 查询,详情参见:

SQLAlchemy:执行简单的SQL语句

工程项目

工程项目尚未结束,虽然 6 月已完成测试,但验收被推迟到 7 月进行。希望能顺利验收结束。

总结

第二季度完成了今年两项最重要的系统升级任务,下半年将不会有大规模的系统更新,可以有更多的时间从事研究工作。

从去年开始接触机器学习,终于在第二季度拿出可以实际应用的项目,用于分析模式的输出日志。 不过,目前仅使用最基本的线性回归方法训练单个数据,没有考虑耗时与模式输出之间的关系,也没有对历史数据信息进行整合,还有很大的进步空间。 另外,原计划在数据层面尝试实现的机器学习算法也没有开展。

虽然在第二季度我也进行了不少开发工作,但明显少于第一季度,而且更新的项目还不成体系,没有形成可以广泛使用的工具。 第一季度构建的一些项目在第二季度中缺乏持续更新。 即便我已有关于某些项目后续发展的一些想法,也没有将精力聚焦在核心任务上。

我总是纠结于自己该进行哪项工作,而思考一番的结果往往就是哪个都不做。

下半年已到,应该好好思考下一步的工作计划。

下阶段计划

第三季度,应该将工作重心放到消息平台和诊断工具上,并形成可以广泛使用的工具。

参照任务书中的项目要求,完善 NWPC 消息平台功能,开发可视化面板等尚未实现的功能,并在业务系统中实际应用。

继续优化 nwpc-data 数据工具,提高批量数据处理的效率,并尝试在单位内部推广。 争取参与单位检验诊断工具的开发,将已有项目的一些经验应用到新项目中。

持续学习机器学习相关技术,完善现有积分时长预测系统,并尝试开展新项目。

希望下半年是一个新的开始。

参考

2020年第一季度工作总结