2025年上半年工作总结
很久没有写工作阶段总结文章了,上一次还是《2022年第三季度工作总结》,提到要以工作流工具为核心开展各项工作,两年时间过去了,我依然还要告诉自己要以工作流工具为核心工作。 过去的两年里,工作时间一半以上都在建设各种各样的 ecFlow 系统,比如 2023 年的 XXX 系统建设,2023 - 2024 年的业务系统迁移新超算,2024 - 2025 年的区域台风 V4.0 系统、下一代模式实时系统建设和多个省局区域模式系统,2025 年的冷备份系统建设。 而在工具软件开发方面 2024 年在绘图工具上投入了大量精力,反而完全搁置了工作流工具开发,有些舍本逐末了。 可见非常有必要进行阶段性总结,及时纠正错误的工作方向,确保自己朝着合理的目标前行。
本文总结 2025 年上半年的个人工作,并对下半年作出展望。
工作
系统运维
运维分级
为了进一步明确系统维护工作量,在室领导安排下,编写 NWP 业务系统运维分级方案,将系统分为核心系统、服务系统、试验系统、特殊服务系统和业务备份系统共 5 种类型,并设计了 P1 - P5 共 5 种维护级别,绘制实时系统运维分级图。 详情请浏览《数值天气预报模式系统运维分级方案示例》。
业务运行管理系统
上半年也参与了单位和部门的软件集约统筹工作,总结了业务运行监控系统的现状、存在问题和发展计划。 详情请浏览《数值天气预报业务系统监控平台设计思考》。 部分发展计划已融入到今年新增的某项工程项目中,笔者参与了该项工程项目的部分前期工作,但已和部门申请不再参与该工程项目的后续工作,不过笔者应该会继续开展业务系统建设和部署方面技术的研发工作,争取降低系统的部署难度,提高系统的可迁移性。
冷备份系统建设
部门用了2023到2024将近两年时间将 NWP 业务系统从 CMA-PI 迁移到 CMA-HPC2023-SC1,今年上半年部门将业务系统部署到 CMA-HPC2023-SC3,建立业务系统的冷备份系统,并在 CMA-HPC2023-SC1 重启期间完成切换演练。 笔者负责区域台风系统,全球、区域后处理系统的迁移部署,并协助部门组织同事共同撰写《2025冷备份系统演练方案》。
一般工作
在同事总结的业务系统产品表基础上,将其按照系统拆分,上传到内部文档共享库中,形成对外传输清单。
业务系统建设
全球模式
WMC图片产品
更新全球绘图产品系统,为 WMC 网站新增图片产品,包括
- 重新实现单要素图片并增加种类
- 新增多要素绘图
新的绘图脚本使用 Python 实现,提供命令行接口。
单要素图片使用更新后的 cemc-oper/sokort 工具调用 Python 绘图脚本。例如:
python -m sokort draw \
--config ${SOKORT_CONFIG_PATH} \
--system grapes_gfs_gmf \
--plot-type wmc.global_py.div_700 \
--start-time 2025070900 \
--forecast-time 024h \
--data-dir ${DATA_DIR} \
--work-dir "."
多要素图片直接任务脚本中调用绘图脚本。例如:
if [[ "${PLOT_TYPE}" == "multi_fields" ]]; then
if [[ "x${PLOT_LEVEL}" == "xNone" ]]; then
param_level=""
else
param_level=${PLOT_LEVEL}
fi
python ${PLOT_SCRIPT_FILE_NAME} \
${START_TIME} ${forecast_hour} \
${DATA_DIR} ${fig_path} \
${param_level}
elif [[ "${PLOT_TYPE}" == "single_field" ]]; then
param=${PLOT_PARAM}
python ${PLOT_SCRIPT_FILE_NAME} \
${START_TIME} ${forecast_hour} \
${DATA_DIR} ${fig_path} \
${param}
else
echo "[FATAL] plot type is not supported: ${PLOT_TYPE}"
we_got_an_error
fi
此次更新与今年上半年开展的省局区域系统建设工作一同暴漏了 sokort 项目存在的问题。 详见《sokort项目停止维护》。
实况分析
协助 NMIC 实况分析团队在 CMA-HPC2023-SC3 上搭建全球同化后处理系统。
回算
为 HPC2023-SC3 上开展的全球模式回算数据建设后处理系统,生成 GRIB2 数据。
区域模式
在 HPC2023-SC5 的 ARM 超算上搭建区域 1 公里后处理系统。 NCL 绘图脚本运行报错,猜测和 NCL 使用较多内存有关联。 目前已改为使用大内存节点运行 NCL 脚本,还在测试当中,尚未完全解决。
笔者同时也尝试使用 cemc-plots-kit 项目绘制分区域的图片,可以生成图片,但仍需更多的调试。 如果 NCL 脚本运行问题依然没法有效解决,笔者计划使用 cemc-plots-kit 项目代替现有的 NCL 绘图脚本。 下面脚本从 region.csv 中读取区域信息,并分别调用 cemc-plots-kit 命令行绘图,如下所示:
csv_file="region.csv"
tail -n +2 "$csv_file" | while IFS=',' read -r region lat1 lon1 lat2 lon2; do
area_arg="${lon1},${lon2},${lat1},${lat2}"
echo "[INFO]plotting area: $region (${area_arg})"
work_dir=./$region
python3 -m cemc_plots_kit draw \
--system-name "CMA-MESO" \
--plot-type "rain_1h_wind_10m" \
--start-time "2025042100" \
--forecast-time "24h" \
--data-dir "/some/path/to/grib2_orig" \
--work-dir "${work_dir}" \
--area "${area_arg}"
done
区域台风模式
延续去年工作,完成系统测试,撰写测试报告和运行报告。区域台风模式V4.0系统已于 2025 年 7 月 15 日更新。
修改实时系统使用的台风报文,笔者曾尝试使用 AI 更新 Perl 脚本处理新版台风报文数据的,效果不佳。 最终使用研发老师提供的 perl 脚本处理最新版本的台风报文。
下一代模式
上半年下一代模式实时系统有两次更新:
- 模式输出从一个时次一个文件改为分时效输出,增加后处理流程
- 更新模式版本
同时还协助中心内部其他部门搭建下一代模式的回算系统。
更新后的下一代模式实时系统由 obs、main、post 三个子流程构成。
- obs:资料预处理,当前仅处理 NCEP GFS 预报数据
- main:模式积分
- post:产品后处理
每个子流程的每个时次都是一个带时间循环的流程,通过 ECF_DATE 实现逐日滚动。不同子流程相同时次之间有依赖关系。
main 中 12 时次的依赖关系:
(
/mcv_gfs_gmf/main/12:ECF_DATE < /mcv_gfs_gmf/obs/12:ECF_DATE
)
or
(
/mcv_gfs_gmf/main/12:ECF_DATE == /mcv_gfs_gmf/obs/12:ECF_DATE
and
/mcv_gfs_gmf/obs/12/cycle_complete == complete
)
post 中 12 时次的依赖关系:
(
/mcv_gfs_gmf/post/12:ECF_DATE < /mcv_gfs_gmf/main/12:ECF_DATE
)
or
(
/mcv_gfs_gmf/post/12:ECF_DATE == /mcv_gfs_gmf/main/12:ECF_DATE
and
/mcv_gfs_gmf/main/12/cycle_complete == complete
)
新版流程将整个系统拆分多个子流程,每个子流程每个时次独立进行日期循环,有优势也有劣势
优势:
- 子流程相对独立,未来可以实现多种组合
- 时次之间相互独立,一个时次运行故障不会影响其他时次。甚至有些系统将每天的每个时次都作为流程中的一个独立节点
劣势:
- 不够直观,需要检查每个时次的日期变量
- 与现有流程差别过大
当前实现只是笔者科研业务一体化运行流程方面的一次尝试,期望能拓宽系统 ecFlow 流程的适用范围。 未来将尝试提供更多定制功能,比如支持子流程的多种组合,支持模式批量试验。
省局区域模式
延续 2024 年下半年工作任务,今年上半年共参与三个省份区域模式系统的建设工作,包括新建两套系统,更新一套系统。
上半年花了大量精力参与单位的省级区域模式外协项目,发现区域模式后处理系统的当前实现存在一些问题:
- 部署困难
后处理系统包括程序项目和流程项目,还依赖数据查找工具库项目 (nwpc-data-client)。 部署到一个新的环境需要在流程项目中新建配置文件、环境文件等,在数据查找项目中新建数据配置文件。 尚未提供一键安装部署功能,导致部署存在一定的学习成本。
- 多版本共存
后处理系统包括大量数据和图片产品制作,不同单位对产品可能有不同的需求,往往需要针对特定需求进行定制化开发,比如上半年 NingXia 图片产品根据需求进行修改,两个省局新增了图片等等。 这就导致无论是程序项目还是流程项目,不同部署形成了多个版本。 笔者尚未找到合适的方法解决多版本共存问题,即如何保持派生版本与主版本在核心组件上的一致性,并保留派生版本的定制组件。
部门已计划针对 NWP 系统版本跨平台部署问题开展专题技术讨论,期望下半年能找一个可行的方案。
HuNan
首次实现分钟绘图,详见《更新ecFlow系统支持分钟级产品》。
NingXia
修改 NCL 脚本,包括宽高比,地图底图,经纬度加符号,经纬度字号,刻度线大小。
更新系统,支持分钟输出,使用一套系统替代原有 post 和 graph 两套系统,初步解决系统流程版本分裂问题。
HuBei
实现分钟级绘图。正在更新图片产品,下半年预计会有后续维护工作。
统一运行框架
上半年着手开展统一运行框架技术研究,阅读了全球、区域、全球集合等 NWP 业务系统的 Shell 脚本和 ecFlow,尝试寻找共同点并总结运行框架,但进展不佳,下半年将继续开展统一运行框架的研究工作。
工具软件开发
takler
为 takler 项目增加一些单元测试,下半年将继续编写测试用例。
为 takler 样例项目增加区域台风和下一代模式的流程,不过缺少持续更新维护。 下半年将继续在 takler 样例项目中尝试新想法。
nwpc-data-client
完善对分钟级产品的支持,并增加对集合预报产品的支持。 将配置文件整体看做模板,并更新全部内置的配置文件。将 bats 项目内置到项目中,更新 bats 相关测试脚本。 引入 GoReleaser 实现跨平台编译。 发布 v0.9.0,应用到上半年开发的省局区域模式后处理系统中。
reki
发布 v2025.7.0 版本,支持使用 CEMC 要素名直接检索,详见《reki发布v2025.7.0版本》。
完善 cemc-oper/data-notebook 项目,详情请访问 cedarkit 数据指南网站: https://data-notebook.perillaroc.wang
项目
参与 DL 工程项目可研报告的编写,详细工作在前文已介绍。笔者已向部门领导申请后续不再负责或参与该项目的工作。
参与某单位某项目某项评估工作,撰写相关报告。 不过因为项目多次变更,最后使用了项目方准备好的材料。 如果后续遇到类似可能会存在一定风险的工作,还是应该在一开始就果断拒绝。
其他工作
工作专题讨论
针对支撑软件工具开发相关工作,5月份组织部门召开一个并不成功的专题讨论会,笔者会上简要介绍一个 PPT,取材来自博文《关于数值天气预报业务系统支撑软件工具发展方向的一些想法》。
交流
上半年在一次单位内部三部门联合交流活动上,分享《ESMValTtool软件架构介绍》。虽然笔者在几年前的某个项目中接触过 ESMValTool 项目,最近都没有继续使用该软件,但在部门领导安排下,还是凑了一份 PPT 出来。 主要介绍从 ESMValTool 项目设计中学到的一些经验,希望能为单位内部开发的一些软件提供一些思路。
下一步计划
核心工作
工作流调度软件
- 继续编写单元测试,覆盖核心组件
- 继续完善示例代码(下一代模式,区域台风),尝试系统设计的新想法
- 更新文档
cedarkit工具套件
- 继续开发 reki 项目,参考 earthkit-data 提供数据探索功能
- 整理 cedar-graph、cemc-plots-kit 项目及相关笔记本项目,撰写技术文档,根据单位实际情况判断是否推动项目在 HPC2023-SC5 等业务系统中试用
一般工作
下一代模式实时系统
- 进一步优化下一代模式实时系统运行流程
- 增加同化流程
区域模式系统
- 完成 HPC2023-SC5 系统建设
- 待定:完成其他省局的系统建设
其他工作
临时任务不可避免,按照安排完成部门分配的各项工作。
展望
去年单位改革到现在的一年时间里,我对未来前景越来越不乐观,也一直在思考自身存在的问题。 在今年年初部门会议上我明确指出自己不擅长从事管理相关工作,并在近期单位内部谈话中再次说明这一情况。 预计在未来三年后还需要正式向部门和单位说明这一情况,期望能在未来专心开展技术研发工作。
不论外部环境如何发生变化,我自身的问题还需要自己来克服。 上半年大量参与省局区域模式系统建设工作,让这一问题变得更加迫切,必须要思考清楚以下几个问题:
- 单位当前需要我扮演什么角色
- 我认为自己当前扮演了什么角色
- 我希望自己未来扮演什么角色
当不同角色之间产生冲突时,就需要首先想明白自己的核心工作任务到底是啥。 正如在本文开头提到的,我在 2022 年时认为开发工作流调度软件是我的核心工作任务,3年后的今天我还是认为工作流调度软件开发是核心工作任务之一,应该在日常工作中时刻牢记自己的核心任务,让其他工作任务为核心任务服务,促进职业生涯的可持续发展。 比如上半年使用 takler 搭建下一代模式和区域台风模式运行流程示例就是将常规任务与核心任务结合的一种不错的方式,在后续工作中应该持续下去。
最后引用毛主席在《湖南农民运动考察报告中》的一段话作为本文的结尾:
他们将冲决一切束缚他们的罗网,朝着解放的路上迅跑。一切帝国主义、军阀、贪官污吏、土豪劣绅,都将被他们葬入坟墓。一切革命的党派、革命的同志,都将在他们面前受他们的检验而决定弃取。站在他们的前头领导他们呢?还是站在他们的后头指手画脚地批评他们呢?还是站在他们的对面反对他们呢?每个中国人对于这三项都有选择的自由,不过时局将强迫你迅速地选择罢了。
—— 毛泽东. 湖南农民运动考察报告. 1927.3
参考资料
《ESMValTtool软件架构介绍》
