SQL 관계대수로 신경망을 구현한 xarray-sql 벤치마크, HN서 화제
Hacker News opinions
처음엔 'SQL로 신경망'이라니 눈살 찌푸렸는데 코드 보고 감탄함. 결국 관계대수를 IR로 써서 DB 옵티마이저가 텐서 프로그램을 추론하게 만든 거더라
맞아 나도 처음 반응 똑같았음. SQL이 데이터 지향적이면서 논리 기반 언어라서 텐서 프로그램 작성에 오히려 적합할 수도 있겠다는 생각이 듦
나도 비슷한 거 작업 중인데, einsum이랑 DB join이 수학적으로는 같은 거임. 실수(real number) semiring이냐 불리언 semiring이냐 차이일 뿐이지. Datalog 논문들 보면 이 얘기 많이 다룸, Dyna 프로젝트도 참고해볼만함
예전부터 MADlib 같은 relational DB 확장으로 ML 알고리즘 넣는 시도들 있었음. 2005년쯽 SQL Server에서도 써봤었는데, 근데 이게 관계형 구조 자체의 특성 덕분인지 아니면 그냥 SQL이 임의의 DAG 연산으로 최적화 가능한 선언형 언어라서인지가 명확히 안 보임. ISO SQL/MDA 표준은 안 써봤나 궁금함
그 첫 질문은 아직 잘 이해 못했음. 우리가 하는 건 과학 데이터(텐서, N차원 배열)를 테이블 뷰로 포팅하는 거임. rasdaman 기반 ISO 표준은 배열을 컬럼 타입으로 취급하는데 그건 안 쓰고, Stonebraker의 SciDB처럼 배열 자체를 테이블로 다루는 방식을 채택함
이게 완전히 새로운 아이디어는 아님. einsum과의 동치성은 이미 논문에서 언급됐었고, Sandia랩의 TenSQL(graphBLAS 기반)이나 최근 나온 Tensor Logic 논문도 비슷한 얘기임. natural join 기반으로 가면 WCO 문제 때문에 조합적 폭발이 생기는 근본적 한계가 있고, triangular query 표현을 포기하면 병렬화는 잘 되지만 완전한 관계 모델을 고수하려면 Differential Dataflow 쪽을 봐야 함