观潮 · 模式预报与气象 AI 观察

球面上做深度学习的算子都缺一个趁手实现,torch-harmonics 补上了这一块

2026-10-05

做全球尺度的球面数据深度学习,有一类绕不开的底层操作:球谐变换(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 和分布式计算策略,这个库使得此前计算上不可承受的高分辨率模型训练成为可能。

仓库里的完整示例包括四类:

---

部署情况

论文的原话是:这个库已被部署在生产天气预报系统和科学计算应用中,引用的文献包括 SFNO 本身、ACE、ACE2、Huge Ensembles、LUCIE、FourCastNet 3、太阳风建模、全向 3D 视觉和分子力场几项工作。

天气之外的应用,论文在结论里明确列了三类:

论文把这总结为"一个面向球面学习与信号处理的通用工具"。

需要说明的是:论文正文是通过引文点名这些系统的,并没有一句"X、Y、Z 都使用了 torch-harmonics"的完整枚举句。上面的系统名称来自被引文献的标题。

---

原文图

原文图:torch-harmonics 的分层结构示意。左侧是输入域——球面上的标量场(红蓝相间的经纬网格局);中间是库的三层结构——最底层的变换层(球谐变换、向量球谐变换、网格与求积、离散-连续卷积),中间的算子层(谱卷积与离散-连续卷积、全局与邻域注意力、层归一化、损失函数),最上层的架构层(球面神经算子、球面 Transformer、可微求解器);右侧是应用域,列出大气物理、分子模拟、量子力学、天体物理、地球物理、VR 与图形学、机器人。
原文图:torch-harmonics 的分层结构示意。左侧是输入域——球面上的标量场(红蓝相间的经纬网格局);中间是库的三层结构——最底层的变换层(球谐变换、向量球谐变换、网格与求积、离散-连续卷积),中间的算子层(谱卷积与离散-连续卷积、全局与邻域注意力、层归一化、损失函数),最上层的架构层(球面神经算子、球面 Transformer、可微求解器);右侧是应用域,列出大气物理、分子模拟、量子力学、天体物理、地球物理、VR 与图形学、机器人。

这张图是全文的地图,三层结构自下而上就是库的依赖顺序。 变换层是最底层的不动点——球谐变换、向量球谐变换、网格与求积、离散-连续卷积;算子层是可以在其上搭的积木;架构层是已经封装好的完整模型(球面神经算子、球面 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 之后有截断,无法排除附录里另有图,但正文确实只有一幅示意图——这不是一篇有实验结果的论文,读的时候不要按实验论文的预期去读。

---

这篇论文该怎么用

它不是一篇需要你比对实验结果的研究论文,而是一份工具书。读的时候按这个顺序:

从气象模式的角度看,这个库的位置很清楚:它是 AI 预报模式的算子底座,不是模式本身。 SFNO、FourCastNet 3、ACE 这一系都在它之上。如果你要做的是球面数据上的可微物理求解——把模式方程写进自动微分框架做梯度反演或参数估计——它比预报模型本身更值得看。

---

一句话判断

这篇论文的价值是"把球面算子这件苦活做成了可微、可扩展、可装进 PyTorch 的库",而它的诚实之处也恰在这里:全文没有一个性能数字,等变性只做到近似,网格只支持三类。 判断它对你有没有用,只需回答一个问题——你的数据是经纬网格、Legendre-Gauss 还是 Gauss-Lobatto? 是,就直接去用它的附录;不是,这篇论文对你没有参考价值。

在观潮中打开(含配图与交互)→