透過 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 可以讓資料庫優化器處理張量程式的複雜性,將運算移至資料存放處附近。