2021年第三季度工作总结

目录

冬天来了,春天还会远吗

国庆假期无法出京,连绵阴雨加上气温骤降,正是我回顾第三季度工作时心情的最佳写照。 自身心态和进取心的变化,加上单位改革的影响,让整个季度都弥漫在一种“山重水复疑无路”的氛围中。 第二季度我怀疑自己进入 35 岁魔咒期,又过了失意的三个月后,现在我完全肯定自己进入到瓶颈期。 工作之中缺乏明确的方向,而工作之外又找不到学习的动力,归根结底还是懒惰加上自我逃避。 即使我没有刻意观察,现在也能明显看到机构改革对工作气氛的影响,围绕在新中心成立问题上的各种纷争并没有随着时间而消散,却随着部门划定而越发突出。 好在我属于没有选择余地的那一批人,所以也就不用太纠结未来会怎样,已经处在链条的最底层,未来还会比现在更差么? 规划一下未来三个月过渡期的工作,静观后续就好了。

计划完成情况

第三季度计划任务的完成度相当惨淡:

  • 业务系统
    • ⏰ GRAPES MESO 3KM v5.1 升级
    • ✔️ GRAPES GFS v3.2 升级
    • ⏰ GRAPES TYM 替代 GRAPES MESO 10KM
  • 青年基金课题项目
    • ✔️ 研究分布式数据处理技术
    • 业务系统数据处理任务
      • ✔️ 并行版本
      • ❌ 比较效率
  • 数据处理工具 nwpc-data
    • 数据类型
      • ✔️ GrADS
      • ✔️ Table
    • 数据来源
      • ❌ CMADaaS
      • ❌ NWPC 数据平台
    • ❌ 数据操作
    • ❌ 多文件操作函数
    • ❌ MOML + CNN MOML
    • ❌ 文档
  • 绘图脚本工具 sokort
    • ✔️ 在业务系统中实际应用
    • ✔️ Docker 镜像封装
    • ❌ 加工流水线
  • 消息通知工具 overfor
    • ❌ log 类型消息全流程处理
  • ❌ 重启工作流项目 takler

工作

业务系统

完成 GRAPES GFS v3.2 版本升级,更新台风后处理模块,同时也将绘图脚本工具 sokort 正式应用到业务系统中。

9月开始的冬奥 FDP 测试更加注重产品的时效性,这也是我参加工作以来第一次面临对产品时效性的严格考核。 为了满足考核要求,对 GRAPES MESO 1KM 后处理系统进行多项更新:

  • 跟随模式预报系统,调整各时次启动时间

  • 按新提供的脚本重新设计站点数据制作流程,在分时效模块中生成中间数据,最后再合并成单个文件

    注:我更倾向于编写并行程序而不是增加一堆串行任务。虽然这些串行任务资源占用低,运行时间短,足以满足时效性要求,但并行程序显然更容易讲出一个好故事

  • 全新编写 grib2-bth 产品的脚本,首次将 nwpc-data + Dask 应用到产品后处理系统中。 详情请浏览《Dask应用:从多个文件中抽取GRIB2要素场

同时 GRAPES MESO 1KM 正在搭建新的循环同化系统,输出的二进制数据将会有两种情况:是否提前 1 小时预报。 数据检测脚本必须支持同时检测多种数据文件名。 为此,更新数据检测工具 nwpc-oper/nwpc-data-client,支持多文件名检查,并在配置文件模板中增加对模板函数的支持。 详情请浏览《GO模板中使用函数》。 下一步将继续完善数据检测工具,尝试将整个配置文件都变为模板,简化目前的函数调用,同时将为新版 1KM 系统搭建产品后处理系统。

项目

青年基金课题

第三季度开始着手研究青年基金课题项目《基于动态任务调度的分布式数据处理方法研究》。

完善去年对 Dask 教程的翻译,形成《Dask教程》系列文章:

延续去年的工作,实现利用 CMA-PI 中的并行节点运行 Dask 应用,详情请浏览《在Slurm中使用Dask》。 目前在关闭 Dask 集群时会返回错误,下一步要详细诊断该错误的来源,寻找正确的并行提交方式。

针对业务系统中的数据产品制作任务,编写一系列 Dask 并行程序,详情请浏览以下文章:

其中第一篇文章的成果已应用到 GRAPES MESO 1KM 后处理系统中,为冬奥 FDP 项目提供 GRIB2 数据产品。

其他项目

完成信息化工程 2021 年度项目的招标准备工作,中标公告请浏览政府采购网网站《国家气象中心气象信息化系统工程-数值预报支撑子系统2021中标公告》。 第四季度将完成合同签订、方案确定,逐步推进各项开发工作。

缓步推进重点研发专项项目,第四季度即将完成对测试化验合同的验收。

工具

数据工具

更新 nwpc-oper/nwpc-data 库。

增加对 GrADS 格点数据的支持,详情请浏览《从GrADS文件中加载要素场》。 增加对 R- 系列表格类观测文件的支持。

为 ecCodes 的 GRIB Handler 添加两种数据操作函数: extract_regioninterpolate_grid。 目前这两个函数在 CMA-PI 上 apps/python/3.6.3/gnu 环境中无法正常使用,初步分析可能与 Xarray 版本有关。 后续将在 CMA-PI 上进行详细的功能测试,确保可以直接在 PI 上使用。

单位中逐渐有同事开始使用 nwpc-data 库,我再一次深刻体会到文档的重要性。 下一阶段要将编写文档作为首要任务,为全部功能编写说明文档,提供完整的样例程序,尝试推广该工具库。

绘图脚本工具

更新 nwpc-oper/sokort 库:

  • 增加 GRAPES TYM 绘图脚本,增加 GRAPES GFS 台风图片脚本
  • 完成 Docker 封装,详情请浏览《在Docker中安装NCL
  • 使用 shpinx 编写文档

下一步将增加对 Python 绘图脚本的支持,整合其余尚未合并的 NCL 绘图任务,并通过信息化工程项目尝试将 sokort 应用在加工流水线中。

数据检查工具

更新 nwpc-oper/nwpc-data-client 库。 上文已经提到,第三季度更新配置文件,支持多文件名和函数。 下一步将进一步尝试将配置文件全部转为模板,同时要尽量避免带来破坏性更新。

绘图工具

开发 perillaroc/meda 项目,使用 Python 脚本仿制业务系统中由 NCL 脚本绘制的图片产品。 目前已完成三类区域的初步实现,支持等值线、填充图、风向杆、shapefile 地图等。 但仍存在一定的问题,比如河流显示、风向杆图例、等值线填充图标签等,有待后续修正。

部分绘图结果如下所示:

东亚区域

欧亚区域

北半球

下一步将继续完善该绘图库,编写 API 接口,考虑如何才能最大限度重用代码。

其他工作

完成半年工作总结,申请天擎账户。

思考

第三季度仅在 7 月阅读了几篇论文:

论文阅读:探索数据分析工具 DataPrep.EDA

论文阅读:模式运行工具 ESM-Tools

论文阅读:监控超算中Scientific Python的使用情况

论文阅读:收集监控分析超算中心的设施和系统数据

报告阅读:如何构建促进计算机领域创新发展的学术评价体系

在三季度最后一天新中心成立时,我也对未来进行了展望:

庆祝中国气象局地球系统数值预报中心成立

总结

perillaroc at GITHUB 2021.Q3

第三季度实际上就做了三项工作:

  • 7 - 8 月完善绘图脚本工具,创建新绘图包
  • 8 月更新数据处理工具
  • 9 月研究青年基金课题

第三季度最重要的工作就是将数据处理工具 nwpc-data 及青年基金课题衍生成果应用在面向冬奥 FDP 项目的 GRAPES MESO 1KM 产品后处理系统中。 这是第一次将工作成果应用在产品后处理业务系统的程序中,突破了以往仅在运行流程范畴内对业务系统进行优化更新,为后续更深入地介入到数值预报业务系统中打下了很好的开端。 我始终认为业务运维人员不能仅满足于运行脚本流程的修修补补,一定要参与到对脚本中可执行程序的开发工作中。 虽然业务运行人员无法开发模式同化和积分程序,但数据处理、图形绘制等模式系统周边程序没有复杂的门槛,给运行人员留有足够的发挥空间。 即便新成立的业务运行部门职责上规定了“流程优化”,但对规定的解释不只有一种,说不定“流程”可以被解释为“业务系统的全周期”呢,所以开放的思路很重要,不能被限制住手脚,要从整体出发寻找破局点。

另一项工作就是在 GRAPES GFS v3.2 升级中将第二季度更新的绘图脚本工具 sokort 应用在业务系统中。 后续计划借助 GRAPES MESO v5.1 升级和 GRAPES TYM 替换 GRAPES MESO 10KM 的机会将其引入到两个区域模式中。 正如在第二季度总结里提到的,业务建设人员一定要把握住构建业务系统带来的优势,积极主动将工作成果投入到业务应用中,不要瞻前顾后而错失良机。 虽然我一直对负责大量产品后处理系统建设有些想法,但也正是因为这样的分工,我才有机会对同类系统进行统一重构,在大量系统中践行自己的想法。

在更新绘图脚本工具时我也更进一步认同早先就已有的想法,即业务绘图脚本需要重新设计架构,实现方式要从 NCL 转为 Python。 为此,我在 8 月份开始开发绘图包 meda,测算重新造轮子的成本,得到结论是实现起来没有想象中的那么难。 很欣慰的是,我的想法已得到一些共鸣,在 GRAPES GFS v3.2 新增的台风图片产品里也引入了全新实现的 Python 绘图脚本。 我理想中的最终目标是构建一套同时面向业务和科研的 Python 绘图包。 当然这不意味着我个人开发一整套工具,我更希望推动单位来开发一套开源的绘图工具包,毕竟我们在工具类软件的开源领域上已远远落后于同行。

第三季度末尾我终于意识到自己的博客已很久没有更新技术类文章,在 9 月下旬又重新开始总结技术开发工作,撰写 Dask 应用等文章。 适时的总结非常重要,否则时间太长容易忘记曾经的工作。不过我始终没有提笔写论文,不利于第四季度即将开展的职称评选。 第四季度应该考虑为青年基金课题撰写技术文档,甚至可以考虑是否开始写一篇论文,毕竟历经评价方式的风云变幻,论文依然在展示它强大的生命力。

下一步计划

核心任务

  • 青年基金项目
    • 完善业务系统产品制作示例,完成效率对比
    • 研究 CMA-PI 并行节点中如何正确使用 Dask 集群
    • 开始撰写技术文档,总结核心思想和关键技术
  • 技术总结
    • 对过去五年工作进行总结和提炼
    • 准备职称评审

一般任务

  • 业务系统升级:按中心安排完成

技术开发

  • 数据工具库 reki
    • 数据来源:完善 CMADaaS 接口库 nuwe-cmadaas-python
    • 数据处理:增加更多数据处理函数
    • 文档:编写详细说明文档,附带可以在 HPC 上运行的示例
    • 测试:在 CMA-PI 上测试全部功能
    • 应用:尝试实现一种 ML 算法 (除 MOML 外)
  • 绘图脚本工具库 sokort
    • 支持 Python 绘图脚本
    • 尝试在加工流水线中使用
  • 绘图包 meda
    • 绘制业务系统图形
    • 设计 API 接口,灵活易用,可以绘制不同种类图形
  • 数据检查工具 nwpc-data-client
    • 尝试将配置文件替换为 GO 模板

其它任务

  • 继续尝试重启工作流项目 takler

这是最后一篇标记为 nwpc 的文章,未来将替换为新中心的英文简称 cemc。 热烈祝贺新中心成立!

参考

2021年第二季度工作总结