观潮 · 模式预报与气象 AI 观察
球面上做深度学习的算子都缺一个趁手实现,torch-harmonics 补上了这一块
做全球尺度的球面数据深度学习,有一类绕不开的底层操作:球谐变换(spherical harmonic transform,SHT)——球面上的傅里叶变换。傅里叶神经网络算子(SFNO)、四代预报模式(FourCastNet 3)这类架构都建立在它之上。
问题是这些操作此前没有高效、可微、能扩展到高分辨率的现成实现。几何深度学习的方案早就有了,落地却卡在实现层。torch-harmonics 是 NVIDIA 与 Caltech 团队给出的开源库,专门填这一块。
这篇论文值得读的地方在于它把设计目标和边界都写清楚了——包括它不做什么。
---
缺的是哪一块
球面 \(S^2\) 嵌在三维欧氏空间里,是地球物理、行星科学、大地测量、大气物理、量子化学、宇宙学、虚拟现实等大量领域的核心对象。随着机器学习进入这些领域,处理球面信号、同时尊重球面固有拓扑与对称性质的工具需求一直在涨。
问题出在基础算子上。为欧氏域设计的标准深度学习操作,不能直接搬到球面而不引入畸变或奇点。
几何深度学习有两条主流路线:球面网格上的图神经网络,以及基于球谐函数的等变网络。论文的判断是——这两条路都已经被提出,但实际采用被"缺少高效、可微、可扩展的实现"这一点卡住了。
论文把设计目标写成四条,这四条也基本对应了这个库后来的取舍:
目标 · 含义
**可微** · 所有操作支持通过 PyTorch autograd 反向传播
**高效** · 计算密集的操作使用自定义 CUDA kernel
**兼容** · 提供纯 PyTorch 的回退实现
**可扩展** · 分布式内存计算支持,处理高分辨率球面数据
"提供纯 PyTorch 回退"这条是工程上的必要妥协——自定义 CUDA kernel 意味着只能在 NVIDIA 卡上跑,没有回退就无法安装。
---
库里有什么
球面信号处理的核心算子
球谐变换 SHT 把等角网格上的数值分解成球谐基函数的级数,捕捉信号在不同空间尺度上的能量分布。库提供正向和逆变换(RealSHT 与 InverseRealSHT)。
实现上有个关键优化:这个计算可以分解成一次傅里叶变换加一次 Legendre 变换,用快速傅里叶变换(FFT)和批量矩阵乘法实现。
向量球谐(vector spherical harmonics)用于处理向量场——风场、海洋流场这类量。
离散-连续卷积(DISCO convolutions) 和谱卷积,以及全局与邻域两种球面注意力机制。
球面注意力的实现里有个细节值得注意:必须把求积权重 ω 计入,因为球面网格的采样密度不均匀(等角网格在极点附近点密集),这才能让注意力机制近似尊重球面几何与 SO(3) 等变性。
球面傅里叶神经算子(SFNO) 通过球面卷积定理(Driscoll and Healy, 1994)实现群卷积。SFNO 块在频域工作:输入经 SHT 变换、在谱域与可学习滤波器相乘、再经逆 SHT 变换回来,然后接逐点非线性。这样既获得全局感受野,又尊重球面拓扑。
论文明确点了两个作为该库基础的架构:SFNO 和 FourCastNet 3(FCN3)。
网格支持
当前支持三类常用网格:
网格类型 · 说明
等角 / 等经纬(equiangular/equirectangular) · 地球科学里的经典经纬网格
Legendre-Gauss 网格 · 高斯网格
Gauss-Lobatto 网格 · 高斯-洛巴托网格
关于高斯网格,论文给了一个数学限定:球谐函数可以精确积分到 \(2n_{\text{lat}}-1\) 次(\(n_{\text{lat}}\) 为纬向格点数),这个性质使高斯网格对谱方法特别高效。
分布式与实现示例
论文说通过自定义 CUDA kernel 和分布式计算策略,这个库使得此前计算上不可承受的高分辨率模型训练成为可能。
仓库里的完整示例包括四类:
- 可微浅水方程求解器:球面上的谱求解器,用向量球谐做散度和旋度计算,支持基于梯度的参数估计和可微 GCM 训练
- PDE 数据上的球面神经算子:在上述求解器生成的浅水方程数据上训练 SFNO 和 LSNO
- 球面图像处理:用球面 Transformer 在 360° 图像上做深度估计与分割,与欧氏基线对比
- 代码示例:球面层、模型和求解器的完整实现
---
部署情况
论文的原话是:这个库已被部署在生产天气预报系统和科学计算应用中,引用的文献包括 SFNO 本身、ACE、ACE2、Huge Ensembles、LUCIE、FourCastNet 3、太阳风建模、全向 3D 视觉和分子力场几项工作。
天气之外的应用,论文在结论里明确列了三类:
- 太阳风建模
- 全向 3D 视觉
- 分子力场
论文把这总结为"一个面向球面学习与信号处理的通用工具"。
需要说明的是:论文正文是通过引文点名这些系统的,并没有一句"X、Y、Z 都使用了 torch-harmonics"的完整枚举句。上面的系统名称来自被引文献的标题。
---
原文图

这张图是全文的地图,三层结构自下而上就是库的依赖顺序。 变换层是最底层的不动点——球谐变换、向量球谐变换、网格与求积、离散-连续卷积;算子层是可以在其上搭的积木;架构层是已经封装好的完整模型(球面神经算子、球面 Transformer、可微求解器)。往右看应用域,除了大气物理、分子模拟、量子力学、天体物理、地球物理,还有 VR 与图形学、机器人——这张图也说明这个库的定位不是气象专用,气象只是它列的七个方向之一。
---
作者承认的限制
论文的性质是一篇软件/库论文,它的"限制"不像研究论文那样集中列在一节,而是分散在全文的措辞里。这几条都需要注意:
全文没有给出任何定量性能数字。 这是最要紧的一条。论文说"自定义 CUDA kernel 和分布式策略使高分辨率训练成为可能""扩展到此前计算上不可承受的分辨率",但没有给出任何加速比、吞吐量、显存占用、训练时间或精度对比。唯一带数字的技术陈述是球谐函数在高斯网格上可精确积分到 \(2n_{\text{lat}}-1\) 次——那是数学性质,不是性能基准。要评估这个库的实际性能,只能去看它仓库的 benchmark,不能引用本文的数字。
旋转等变性是"近似"的,不是严格的。 论文在讲局部球面神经算子和 DISCO 卷积时用的都是 approximate rotation equivariance(近似旋转等变性),球面注意力同样是"近似尊重球面几何与 SO(3) 等变性"。做严格等变性要求的下游工作,这一点必须核对。
网格支持只有三类。 论文的原话是"其他常用网格类型的支持在计划中"(Support for other popular grid types is planned)。如果你手上的数据用的是别的网格,这篇论文不解决你的问题。
"已被部署在生产系统"是引用式陈述,不是本文的验证。 论文没有对这些系统做性能复现,也没有给出库在各系统中所起作用的定量说明。
全文只有一幅图。 可见文本中只出现 Figure 1(库总览示意)。附录 B 之后有截断,无法排除附录里另有图,但正文确实只有一幅示意图——这不是一篇有实验结果的论文,读的时候不要按实验论文的预期去读。
---
这篇论文该怎么用
它不是一篇需要你比对实验结果的研究论文,而是一份工具书。读的时候按这个顺序:
- 先确认网格对不对。三类网格之外一律不支持,这是硬门槛。
- 看附录 A 的球面信号处理基础。坐标与球面上的函数、SO(3) 旋转群、网格与求积、球谐、向量球谐、群卷积、卷积定理、DISCO 卷积、球面注意力——这套东西本身就是一份可微球面信号处理教材。
- 看附录 B 的实现示例。浅水方程求解器和 SFNO 的组合是本文最值得直接复用的部分:用 VSHT 算散度和旋度,就能做基于梯度的参数估计。这是把模式参数反演纳入自动微分框架的入口,和数据同化、模式调参这类活直接相关。
- 性能去仓库 benchmark 拿,不要引用论文里的表述。
从气象模式的角度看,这个库的位置很清楚:它是 AI 预报模式的算子底座,不是模式本身。 SFNO、FourCastNet 3、ACE 这一系都在它之上。如果你要做的是球面数据上的可微物理求解——把模式方程写进自动微分框架做梯度反演或参数估计——它比预报模型本身更值得看。
---
一句话判断
这篇论文的价值是"把球面算子这件苦活做成了可微、可扩展、可装进 PyTorch 的库",而它的诚实之处也恰在这里:全文没有一个性能数字,等变性只做到近似,网格只支持三类。 判断它对你有没有用,只需回答一个问题——你的数据是经纬网格、Legendre-Gauss 还是 Gauss-Lobatto? 是,就直接去用它的附录;不是,这篇论文对你没有参考价值。