【SQLの限界突破】SQLだけでニューラルネットワークを実装してみた件
Show HN: I implemented a neural network in SQL
Show HN: I implemented a neural network in SQL
休暇中にふと思いついたアイデアから、とんでもないものができました。私の開発している配列データベースライブラリ「Xarray-SQL」のインターンがto_dataset()機能を実装してくれたことで、Nd配列をリレーショナルモデルとして扱う道が開けました。ビーチで寛ぎながら、地理・気候科学における複雑な演算(100TB規模)の多くが、実は単なるリレーショナル操作であることを証明しました(詳細は https://github.com/xqlsystems/xarray-sql/blob/main/docs/geospatial.md を参照)。さらに驚くべきことに、再グリッド化といったコア処理が、SQLのSUM(val * val) ... JOIN .. GROUP BY(つまり行列積)で表現できることに気づいたのです。ならば、SQLで微分(Calculus)まで実装すれば、数値計算もデータベース内で完結するのではないか?そうしてDataFusionのビジターパターン上にAutogradを実装した結果、SQLでのニューラルネットワーク構築に成功しました。SQLは単なるデータ操作言語ではなく、物理層から独立した論理層を持つリレーショナルデータベースの特性を活かせば、1000以上のGPUを駆使する分散学習の未来を変える強力な基盤になるかもしれません。この「リレーショナル配列」という未知の世界を、ぜひ皆さんも https://xql.systems で一緒に探求しませんか?
大人しくCRUDエンドポイントでも作りに戻るよ…
冗談はさておき、すごく印象的だね。10%くらいしか理解できなかったけど :D
最初は「SQLでニューラルネットワーク?」って呆れてたけど、コードを読んでみたら考えが変わった。かなりすごい。
要するに、関係代数を中間表現(IR)として使って、データベースのオプティマイザにテンソルプログラムの推論をさせてるんだね。
ニューラルネットワーク内でSQLを実装するよりは、いくらか信頼性が高そう。
なんで?(笑)
面白い!「何でもDoomが動く」っていうデモの、ニューラルネットワーク版って感じだね。
これまでにも拡張機能を使って、リレーショナルデータベースやSQLに機械学習アルゴリズムを統合するプラットフォームはあった(商用・オープンソース問わず)。有名なオープンソースのMADlib[1]にはニューラルネットワークの実装があるし、商用のものも似たような感じだった。2005年頃、SQL Serverで機械学習アルゴリズムを使った記憶があるよ。
個人的に疑問なのは、宣言的構造化クエリ言語としてのSQL(あらゆる分散型の非巡回有向グラフ処理に最適化可能)と、リレーショナルデータベース固有の特性(関係代数やリレーショナル変数など)の違いについて。今のところ筆者が両者を結びつけて語っているけど、この件でリレーショナル構造が具体的にどう役立ったのか、まだピンときていないんだよね(もちろん恩恵はあるんだろうけど)。
あと、多次元配列(MDA)に関するSQL標準のISO/IEC 9075-15:2023はここで役に立つのかな?SQL/MDAについての論文を貼っておくね[2]。
[1] https://madlib.apache.org/documentation.html (https://madlib.apache.org/documentation.html)
[2] https://www.ifis.uni-luebeck.de/~moeller/Lectures/WS-19-20/N... (https://www.ifis.uni-luebeck.de/~moeller/Lectures/WS-19-20/NDBDM/12-Literature/Misev-Baumann-SQL-MDA.pdf)