通过 Xarray-SQL 在 SQL 中实现神经网络
通过 Xarray-SQL 在 SQL 中实现神经网络
神经网络作为关系运算
Xarray-SQL 表明,神经网络和张量运算可以直接在 SQL 数据库中实现。通过将 N 维 (Nd) 数组视为关系表——其中正交维度被映射为主要键——复杂的线性代数和微积分运算可以表示为标准的 SQL 查询。这种方法允许数据库优化器对张量程序进行推理,有效地将关系代数作为机器学习工作负载的中间表示 (IR)。
将 Nd 数组映射到表格模型
Xarray-SQL 的核心前提是任何 Nd 数组都可以映射到 2D 表格表示。在这种模型中,数组的维度被视为表中的主要键,而值则作为数据存储。这种映射使得使用 to_dataset() 在基于数组的思维方式与表格存储之间建立往返转换成为可能。
这种关系式方法揭示了地理空间和气候科学中许多常见的操作都是“秘密的关系式操作”。例如,重网格化 (regridding)——这些领域的核心操作——在数学上等同于稀疏矩阵-向量乘积,这可以通过结合使用 JOIN、GROUP BY 和 SUM(val * val) 在 SQL 中表示。
在 SQL 中实现 Autograd 和微积分
为了超越简单的线性代数,Xarray-SQL 在 DataFusion 访问者模式 (visitor pattern) 之上实现了自动微分 (autograd),其灵感来源于 JAX 的实现。
在 Xarray-SQL 使用的简化数组模型中,系统专注于雅可比矩阵 (Jacobian) 对角线上的偏微分。这使得 grad()、jvp (Jacobian-vector product) 和 vjp (vector-Jacobian product) 简化为行级操作,使其在数据库环境内具有计算可行性。
关系式机器学习的理由
虽然在 SQL 中实现神经网络似乎是一个技术上的奇闻,但它为分布式系统设计提供了巨大的潜力。其主要优势在于关系数据库的基本原则:逻辑层与物理层的分离。
如果将神经网络定义为一系列关系,就可以创建一个全局的数据流逻辑计划。这种分离允许在庞大的 GPU 集群(例如,1000+ GPUs)中更高效地分配工作,因为数据库引擎可以独立于网络的逻辑定义来优化物理执行计划。
社区见解与理论平行
围绕该项目的技术讨论突显了张量库与关系语言之间的数学收敛性:
"从数学上讲,einsum 和数据库连接 (joins) 是同一回事,只是作用于不同的半环 (semirings)(einsum 作用于实数,数据库作用于布尔值)。"
其他观察者指出,使用关系代数作为 IR 允许数据库优化器处理张量程序的复杂性,从而将计算移动到数据所在的位置。