24년 9월 4주차 그래프 오마카세
정이태
1.Graph Parallel Engine
최근 제가 맡았던 업무 대부분이 그래프 애플리케이션과 관련이 있었기에, 이번 연휴 동안 기본기를 다지기로 결심하고 열심히 공부하고 있습니다. 특히, 그래프 병렬 엔진에 대해 깊이 탐구하고 있죠.
이유는 간단합니다. 전통적인 테이블 데이터와 달리 그래프 데이터는 관계(엣지)라는 요소가 추가되기 때문에, 시스템 설계와 연산 부담이 저수준 계층에서 어떻게 처리되는지 궁금했습니다.
그래프 데이터 분포: 파레토 법칙과 멱급수 분포
그래프 데이터는 일반적으로 일부 노드가 많은 다른 노드와 연결되고, 반면에 다른 노드는 적은 수의 연결을 가지는 분포 패턴을 보입니다. 이는 파레토 법칙이나 멱급수 분포와 유사한 개념입니다.
예를 들어, 저의 링크드인 팔로워 증가 추세와 K-pop 스타 카리나님의 팔로워 증가 추세를 비교해보면 쉽게 이해할 수 있습니다. 카리나님의 계정이 저보다 훨씬 더 많은 관계와 노드(팔로워)를 생성할 것이라는 건 쉽게 예상할 수 있죠.
시스템 효율성 측면에서 많은 관계를 가진 노드는 충분한 스토리지와 연산 능력을 가진 머신에 배치되어야 하고, 덜 연결된 노드는 더 밀집된 머신에 배치하는 것이 효율적입니다.
병렬 엔진에서의 노드 분배
병렬 엔진에서 노드를 여러 머신에 분배할 때, 중요한 문제는 어떤 기준으로 분배할 것인가입니다. 또한, 분배 후 누락된 버텍스가 있을 경우 이를 어떻게 복제할 것인가도 큰 과제입니다.
오늘 읽은 PowerGraph 논문에서는 이러한 문제들을 데이터 그래프와 공유 메모리 관점에서 다루고 있습니다. 특히 흥미로웠던 부분은 아벨리안 군 이론과 네트워크 과학 퍼콜레이션 개념을 차용해 엔진에 적용한 아이디어였습니다.
- 아벨리안 군: 교환법칙을 다루는 수학적 개념.
- 퍼콜레이션: 복잡계 물리학에서 특정 노드나 엣지를 추가하거나 제거할 때 그래프 구조에 미치는 영향을 탐구하는 개념.
이러한 수학적, 물리학적 원리를 그래프 병렬 엔진 설계에 통합하는 과정이 매우 흥미롭고 실용적이었습니다.
실무적인 인사이트: 그래프 DBMS 활용 사례
이러한 개념을 실무에 적용하려는 분들을 위해, 특히 그래프 DBMS 관점에서 몇 가지 실용적인 사례를 추천드립니다. 이 사례들은 그래프 데이터베이스 사용의 비용 절감 효과를 잘 보여줍니다:
- 유지보수 시간 300% 감소
- 스토리지 사용량 1/10,000 감소
- 인스턴스 수 48개에서 3개로 감소
이 놀라운 수치는 팬인/팬아웃 관점에서 왜 그래프 데이터베이스가 더 나은 선택인지 설명할 때 매우 유용한 자료가 될 것입니다.
2.pytorch-geometric 업데이트 소식
- GNNs + LLMs
nn.nlp
sub module 을 새롭게 선보였습니다. 주 목적은 NLP module 통합 편의성 이라 할 수 있는데요.sentencetransformer
를 그동안 따로 module 로 불러와 활용했어야했다면, 이를 통합 및 신속하게 불러와 쉽게 적용할 수 있는게 핵심이라 할 수 있습니다.- 또한, GNN + LLM 의 핵심을 가장 합리적이고 탄탄하게 다룬 선두주자라 할 수 있는 G-retrieval 아키텍쳐를 구현해놓았습니다. 사용자가 쉽게 이 맥락을 익히고 본인의 커스텀 데이터셋에 적용하기 쉽게 example 스크립트도 구현되어 있습니다.
- Index Tensor Representation
- (2,num-edge) 형태로 그래프 구조를 표현하고 GNN 을 적용하는 pyg 아키텍쳐를 개선한 내역입니다. list , row-wise 형태로 그래프를 표현하기에 그래프 규모가 커질수록 자연스레 indexing 에 대한 연산이 커지기 마련인데, 이를 sparse 로 어떻게 잘 압축하여 표현할지에 대한 고민들이 담긴 업데이트라고 할 수 있습니다.
Key takeaway
- Graph 딥러닝 대표 모듈이라 할 수 있는 Pytorch geometric 에서 본격적으로 GNN + LLM 에 대한 시장 니즈를 캐치하고 이를 타겟으로하고 있음을 이번 업데이트로 옅 볼 수 있음.
*kumo.ai product 방향과 유사해보이긴 합니다..!
- 그래프 필연적으로 발생하게될 Large Graph Data Engineering 을 고려하여 Indexing 개선에도 많은 노력을 기울이고 있음. cache 관점도 고려해서 function argument 에서 설정할 수 있게 구현이 되어있음.
*함수를 자세히 살펴보면 sparse_size , sort_order , is_undirected 등 기존 GDBMS 들이 고민하고 있는 포인트들과 유사하게 고민하고 있고 함수에 표현하고 있음.생각 1. Foundation Model 를 구축할 필요까진 없지만, 무슨 개념인지는 알고 어떻게 구축이 되는지에 대한 대략적인 프로세스를 알고 있으면 좋다. LLM <-> GNN 분야를 한정짓지않고, 각각 어느 부분에서 보완재, 대체재로 활용되는지 연구되는 주제들이 산업계 학계 가리지 않고 보이고 있는 추세임. 이 추세에 따라가기 위해 Foundation model 가 어떻게 설계되며, 각 분야마다 무슨 한계점들이 있고 이를 극복하기 위해 어떤 노력들이 이뤄지고 있는지 알아두고 있는게 중요함.생각2. 대용량 그래프 엔지니어링에 대해 중요도가 더더욱 높아질 것임. 이와 연계지어 살펴보면 NVIDIA 의 Cugraph(GPU), GDBMS 들이 어떻게 DBMS(CPU , memory) 를 구현하는지 hardware - software 관점을 투영하여 흐름을 읽을 수 있는 능력이 중요해질 것임.오늘도 유용한 정보가 되었기를 바랍니다~ 다들 즐거운 주말 되세요
pyg 2.6 업데이트 링크
같이 보면 좋을 아티클 1 - Graph Woody 에서 다룬 GFM(Graph Foundation Model)
- 아직 미완성이긴 하지만, 얼추 프레임과 콘텐츠가 완성되어 공유드립니다!
같이 보면 좋을 아티클 2 - 그래프 오마카세에서 다룬 G-retrieval링크
배지훈
- 이번 주 오마카세는 논문 리뷰 방식으로 전달해드리는 것 대신, 그동안 다루었던 토폴로지 데이터 분석 (TDA) 의 개념들을 잘 설명해주는 영상들을 공유해드리고자 합니다.
- 그동안 제가 전달해드리고자 하였던 토폴로지 연구 대부분은 배경 이론 및 제안 아이디어 이해하는 데 어려움이 많다고 생각합니다. 그만큼 쉽게 접근하기 어려운 이유 중 하나라고도 생각되는데요. 필수는 아니지만, 이들의 기반이 되는 대수 & 연산 토폴로지 (Algebraic & Computational topology) 개념을 사전에 알고 계시면 도움이 많이 되실거라 생각합니다.
- 개인적으로 Raphaël Tinarrage, Bastian Grossenbacher-Rieck 교수님들의 강의를 많이 찾아보았고 도움을 많이 받았던 것 같습니다. 두 교수님의 개인 홈페이지 링크를 걸어 두었으니, 관심 있으신 독자분들께서는 가볍게 참고해보시면 좋을 것 같습니다.
[Contact Info]
Gmail : jhbae1184@akane.waseda.jp
Twitter (X): @jhbae1184