AI・機械学習
Show HN: SQLでニューラルネットワークを実装しました
Show HN: I implemented a neural network in SQL (github.com)
要約
著者は、配列データベースライブラリXarray-SQLを用いて、SQLでニューラルネットワークを実装したことを発表しています。当初は地理空間データのベンチマークをリレーショナル演算として捉え直すことから始まり、最終的にSQLで線形代数や微積分、自動微分を可能にし、ニューラルネットワークの構築へと至りました。
全文翻訳
2週間前、私はギリシャのコルフ島でベビームーン(出産前の夫婦旅行)をしていました。移動中に、私の配列データベースライブラリであるXarray-SQLに重要な機能を追加したGSoC(Google Summer of Code)のインターンを監督していました。彼は`to_dataset()`を追加し、配列データを表形式モデルとグリッド化されたラスター(プロジェクトの前提は、あらゆるNd配列が2次元にマッピングでき、Nd配列の直交次元は表形式表現の主キーにすぎないということ)として同時に考えるというラウンドトリップを完了させました。チャットで、この機能ができた今、このデータモデルが機能することを証明できるデモは何だろうかと話し合いました。
熱波の中、暖かいビーチで過ごす余暇に、冷たい海水が私に新しいアイデアをもたらしました。Coiledの地理空間ベンチマークの議論を、地理および気候クエリの包括的な概要として利用できないかと思ったのです。これらの一般的な操作はすべて、間違ったデータモデルを持つリレーショナルなものなのではないか?ビーチでClaude Codeを使いながら、そのようであることが確認できました。Claudeと私は、地理および気候科学におけるあらゆる一般的な操作(100テラバイト規模)が、実際にはリレーショナルな操作であったことを示すベンチマークを発表しました: https://github.com/xqlsystems/xarray-sql/blob/main/docs/geospatial.md。
最も驚くべきことは、これらの例から、主要な操作であるリグリッド化がスパース行列ベクトル積にすぎなかったことです。Claudeは、このデータモデルでは、行列積は単なる`SUM(val * val) ... JOIN .. GROUP BY`であると指摘してくれました。これはeinsum表記と直接的な並列性がありますが、(議論の余地はあるものの)エレガントなSQL構文で表現できます!この機能は、その部分の合計以上のもののように思えました。
イオニア海の冷たい水に戻り、私はこの意味合いについてより深く考えました。Coiledのベンチマークはすべて、本質的に数値/配列コードで行われるシミュレーションの後処理にすぎないことに気づきました。SQLで行列積ができるなら、これらの物理計算をデータベースにプッシュダウンできないだろうか?そしてひらめきました。もしSQLが微積分も扱えるなら、おそらくできるだろうと! https://bsky.app/profile/al.merose.com/post/3mpbods7wts2y。
その後、JAXの実装に基づいたDataFusionのビジターパターンの上に、自動微分を実装しました。私の単純化された配列モデルでは、ヤコビアンの対角線上の偏微分のみを気にするだけでよいことが判明しました。つまり、`grad()`、`jvp`、`vjp`は行ごとの操作にすぎないということです!次に、コイルベンチマークから勾配を必要とする一般的な物理計算を実装しました。ここから、データベースで自動微分ができるなら、ニューラルネットワークを作成できないはずがないと気づきました。
帰宅後、スライドを作成し、DataFusionの最初のショーケースでこの作業を発表しました: https://www.youtube.com/watch?t=1511&v=5o-4hL8vGPw&feature=youtu.be。この統合を通じて、SQLは必ずしもニューラルネットワークを書くための玩具言語ではなく、実際には、リレーショナルデータベースの基本原則(論理層は物理層から独立しているべきである)のために将来的に非常に望ましいかもしれないと気づきました。そのプロパティが成り立つと仮定し、ニューラルネットワークが一連のリレーションであるならば、より簡単にトレーニングのためのSOTA(State-Of-The-Art)分散システムを作成できるでしょうか?例えば、データフローのグローバルな論理計画があれば、1000以上のGPUで作業をより良く分散できるでしょうか?
数人の科学者やエンジニアと共に、私たちはhttps://xql.systems(参加したい場合は下部にあるDiscordリンク)で、この奇妙なリレーショナル配列の世界を探求しています。