PETA-BYTE 규모의 그래프 데이터베이스로의 가속화
특수 코프로세스(Coprocessors)를 사용하여 데이터베이스를 가속화하는 것은 더 이상 새로운 것이 아닙니다. 몇 가지 예를 들면, IBM이 10년 이상 소유하고 있는 Netezza 플랫폼 에서 실행되는 데이터 웨어하우스는 데이터베이스 및 스토리지를 위한 FPGA 가속과 일치하는 맞춤형 병렬 PostgreSQL 데이터베이스를 사용합니다. OmniSci, Sqream Technologies, Kinetica 및 Brytlyt는 모두 분석 데이터베이스에 대해 GPU 가속을 사용하고 있으며 최대 수십억 개의 행이 있는 Giga-byte 규모와 Tera-byte 규모의 데이터베이스에 대해 어느 정도의 성공을 거두었습니다.
그러나 그래프 데이터베이스 신생업체인 TigerGraph는 FPGA 제조업체 Xilinx와 함께 데이터베이스 가속에 대한 새로운 변화를 만들고 있으며, The Next Platform에서 페타바이트 규모의 그래프 데이터베이스를 제공하기 위해 지분을 투자 하였습니다. 이렇게 큰 규모로 투자하는 이유는 그래프 데이터베이스는 향후 2년 내에 확장하기가 매우 어렵기로 악명이 높기 때문입니다.
TigerGraph의 기반을 구축한 Jay Yu는 19년 동안을 금융 애플리케이션 서비스 회사인 Intuit에서 저명한 엔지니어, 설계자 및 이사로 근무하다가 지난 8월에 TigerGraph에 합류하였습니다. 지금은 TigerGraph에서 제품 및 혁신 담당 부사장을 맡고 있습니다. Jay Yu는 위스콘신 대학교에서 컴퓨터 공학 및 데이터베이스 시스템으로 박사 학위를 받았고, 현재 MIT에 있는 데이터베이스 분야의 저명한 David DeWitt 밑에서 공부했습니다. 대학에서 Jay Yu는 주로 Teradata에서 인수한 무공유(Shared nothing) 객체 관계형 데이터베이스 시스템인 Paradise의 분산 쿼리 실행 엔진을 위한 일을 했습니다.
작년에 Intuit에서 Jay Yu는 테라바이트급의 그래프 데이터베이스를 사용하여 사기탐지(fraud detection), 엔터티 통합인지(entity-resolution) 그리고 고객360 (고객 통합 또는 단일 고객 뷰) 데이터베이스와 같은 콘테스트(bake-off)를 수행하는 팀을 이끌었습니다. 이것들은 Intuit에서 전 세계 1억명의 고객에게 서비스를 제공하기 위해 TurboTax, QuickBooks, Mint 및 Credit Karma와 같은 온라인 애플리케이션의 소프트웨어 스택으로 사용되고 있습니다. 그런데 이 콘테스트에서 TigerGraph는 우승을 하였고, Jay Yu는 Paradise 데이터베이스에 구현된 분산 컴퓨팅 아이디어 중 일부가 TigerGraph에 사용되었다는 사실을 발견했으며, TigerGraph는 Jay Yu에게 제품을 확장하고 이를 세계로 내놓는 일을 제안했습니다.
TigerGraph에 익숙하지 않은 여러분을 위해, 우리는 3년전에 스텔스(stealth)를 중단했을 때 회사에 대한 자세한 이야기를 했습니다. 그리고 우리는 2020년 9월 The Next Database Platform 이벤트를 하는 동안, 세계에서 가장 큰 데이터로 알려진 의료 그래프 구축에 대해서 TigerGraph의 설립자이자 최고 경영자인 Yu Xu와 UnitedHealth Group의 첨단 기술 연구 개발 담당 부사장인 Edward Sverdlin를 인터뷰했습니다.
"우리는 이미 36TB 수준에서 LDBC 벤치마크를 실행했으며, 다른 공급업체는 1TB 수준에서 어려움을 겪고 있습니다. Linked Data Benchmark Council Social Network Benchmark 테스트를 참조하여 Jay Yu가 The Next Platform에 대해서 설명합니다.
두 개의 워크로드가 있습니다. 그 중 하나는 특정 노드와 인접한 노드에서 트랜잭션 그래프 처리를 수행하고 데이터를 삽입하는 대화형이고, 다른 하나는 많은 집계를 처리하고, 매우 무거운 쿼리에 조인을 자주하는 비즈니스 인텔리전스(BI) 작업(Work-load)입니다.
그리고 그 숫자는 하드웨어 가속을 포함하지도 않았습니다. 우리는 100TB 버전의 LDBC-SNB를 작업 중이며 이를 수행하려면 1~2분정도의 시간이 필요할 것입니다. 그리고 우리는 1~2년 안에 1PB 수준의 그래프에 도달하고 싶습니다. 그리고 TigerGraph가 페타바이트 수준의 그래프를 처리할 수 있다면 대부분의 회사에서 데이터레이크를 TigerGraph 에 저장해야 한다고 주장할 것이기 때문에 이를 추진하게 된 것에 대해서 매우 기쁘게 생각합니다.”
이전에 말했듯이 그래프 데이터베이스의 장점은 기본적으로 인덱스가 내장되어 있고 더 이상 조인을 수행할 필요가 없다는 것입니다.
하드웨어 가속은 TigerGraph를 페타바이트 규모로 끌어올리는 데 큰 역할을 할 것이며, 작동 방식은 다음과 같습니다.
TigerGraph 데이터베이스 내에는 그래프 처리를 수행하는 약 50개의 다른 알고리즘이 있습니다.
그 중 약 12개는 그래프 데이터베이스의 핵심입니다. 이것들은 많이 사용되거나 계산 부하가 많거나 또는 두 가지 모두 일 수 있습니다. TigerGraph는 하드웨어 가속화 아이디어를 테스트하기 위해 Xilinx와 협력하여 코사인 유사도와 모듈화 최적화의 Louvain 방법 이라는 두 가지 루틴을 취하고 이러한 알고리즘을 FPGA의 프로그램 가능한 로직에서 구현함으로써 이 알고리즘의 실행에서 CPU로부터의 의존을 제거합니다. 개념적으로 TigerGraph와 Xilinx Alveo U50 FPGA 보조 프로세서가 통합된 방법은 다음과 같습니다.
Xilinx FPGA는 코사인 유사성과 유사성 상위 1,000개의 점수를 계산하는 수정된 Vitis 그래프 분석 라이브러리를 실행하고 있으며, 이 경우에는 그래프 데이터베이스에 저장된 의료 환자들의 유사한 사례 기록을 검토하였습니다.
다음은 코사인 유사성 작업에 대한 더 나은 도식입니다.
GSQL 쿼리는 Vitis 스택에 의해 C++의 사용자 정의 함수로 컴파일된 다음 Vitis 라이브러리의 코사인 유사성 함수로 전달되어 Alveo U50에서 실행됩니다. 작업을 가속화하는 데 사용할 수 있는 여러 카드가 있으며, 이러한 카드는 현재 병렬 방식으로 실행되지만 결국에는 CCIX 상호 연결(아마도 CCIX 상호연결과 AMD Xilinx 인수가 완료된 후 Infinity Fabric 링크 간의 연결)에서 Nvidia가 NVLink 포트와 GPU 가속기를 위한 NVSwitch를 사용하는 것처럼 FPGA가 데이터를 직접 공유할 수 있습니다.
데이터베이스 클러스터 아키텍처는 다음과 같습니다.
참고로, FPGA 가속은 클러스터 크기를 줄이기 위해 단일 노드 내에서 더 많은 작업을 수행하는 것을 의미하는 스케일 인(scale in)에 관한 것이 아니며, 여러 노드를 사용하여 데이터 저장 용량의 증가를 얻는 스케일 아웃(scale out) 에 관한 것도 아닙니다. 그리고 일반적으로 노드의 수가 증가함에 따라 수행되는 작업의 양이 증가합니다. 후자는 스케일 업과 대조적입니다. 즉, 단일 노드가 주소 공간을 확장하고 더 저렴한 스케일 아웃 아키텍처에 맞게 조정되지 않은 작업을 실행하도록 계산합니다. TigerGraph가 수행하는 FPGA 가속은 그래프 계산에 소요되는 시간을 줄이는 것이므로 TigerGraph 클러스터의 크기가 줄어드는 것은 아닙니다. 그러나 이렇게 하면 특정 종류의 쿼리 및 계산을 수행하는 시간이 줄어들어, 데이터를 검색할 때 수행할 수 있는 반복 횟수가 늘어납니다. 잠시 후에 보게 되겠지만 성능 향상은 상당합니다.
TigerGraph와 Xilinx가 수행한 벤치마크 테스트는 2GHz, 64 Core의 AMD "Milan" Epyc 7713 프로세서를 탑재한 Hewlett Packard Enterprise의 ProLiant DL385 Gen10 Plus 서버에서 수행되었습니다. 이 서버에는 512GB의 메인 메모리와 60TB의 플래시 스토리지, SATA 및 NVM-Express 장치가 탑재되어 있습니다. 이 기계에는 5개의 Xilinx Alveo U50 카드가 장착되어 있었는데 가격은 2,500달러였습니다(데이터 센터의 일부 GPU 가속기에 비해 합리적인 가격입니다). Alveo U50 카드(우리가 커버하는), 6,000개의 DSP 블록, 872,000개의 룩업 테이블(LUT), 170만 개의 플립플롭(flip-flops), 227MB의 온칩 블록(on-chip block) RAM 그리고 460GB/sec의 대역폭을 가진 8GB의 HBM2 메모리가 있습니다. 그들은 75 와트 미만으로 동작합니다. OS는 Ubuntu Server 20.04.1 LTS이며 Vitis 라이브러리와 함께 TigerGraph 3.1 Enterprise Edition을 설치했습니다. 그리고 Synthea 합성 환자 데이터 세트로 테스트를 수행했습니다.
아래 성능 그래프는 150만 명의 환자 데이터 세트와 1개의 FPGA가 켜져 있는 경우와, 1,500만 명의 환자 데이터 세트와 5개의 FPGA가 켜져 있는 경우에 대해서 상위 1,000명의 유사한 환자를 찾으려고 시도하였으며, 이 때 CPU만으로 처리한 경우와 Alveo 부스트(Alveo-boosted)로 처리한 경우의 응답 시간 차이를 보여줍니다.
FPGA에서 가속화된 코사인 유사성 성능 그래프:
CPU만으로 처리했을 때의 응답 시간은 150만 명의 환자 데이터 세트에서 1,000명의 가장 유사한 환자를 찾는 데 평균 430밀리초였으며, FPGA가 코사인 유사성 기능을 가속화하면서 10밀리초로 떨어졌습니다. 데이터 세트 크기를 10배 증가시켜 1,500만 명의 환자로 늘렸을 때 CPU만으로 처리했을 때의 응답 시간은 1.6초로 그다지 좋지는 않았지만 5개의 FPGA가 활성화되었을 때 33밀리초로 48배 더 좋았습니다.
아래 차트에서 볼 수 있듯이 CPU만 사용한 경우에는 수학 연산을 수행하는 데 어려움을 겪기 때문에 응답 시간이 상당히 빠르게 저하되지만, FPGA 가속 코사인 유사성 기능은 응답 시간의 저하를 막는데 실제로 도움이 됩니다.
Louvain 모듈화 알고리즘을 사용하면 엔터티(entities) 전체에서 커뮤니티 그룹을 찾기 위해 그래프 데이터베이스를 아래와 같이 스캔합니다.
Jay Yu에 따르면 Louvain 모듈화 방법은 그래프 데이터베이스에서 CPU를 가장 많이 사용하는 알고리즘 중 하나이며 결정적 알고리즘이 아니라 확률적 알고리즘입니다. 그리고 이 알고리즘에 더 많은 CPU와 메모리를 투입할수록 더 정확해집니다.
이 경우 FPGA 가속은 응답 시간을 20배 향상시켰고, 사람들을 그룹화하는 정확도는 18% 더 정확했습니다(이 경우에 대한 차트를 가지고 있지는 않지만, 이러한 그룹화를 수행 하는데 걸리는 시간을 20분에서 1분으로, 또는 20초에서 1초로 줄일 수 있다는 것은 아주 중요합니다). 좋은 점은 Xilinx FPGA가 많은 대형 퍼블릭 클라우드에서 사용 가능하고, TigerGraph가 클라우드 인스턴스에서 실행되며, 기업이 자체 인프라를 구축하기 전에 전체적으로 테스트할 수 있다는 것입니다.
12개의 기능이 FPGA 가속으로 이식되면, TigerGraph는 많은 기능 이상의 성능 향상이 되고, 50개 알고리즘의 성능이 모두 개선되면 이는 큰 도움이 될 것입니다. 그리고 아마도 그때쯤이면 CPU는 이러한 기능 중 일부를 트랜지스터에 인코딩하여 모든 것을 훨씬 더 쉽게 만들 것입니다. 이것은 가능성이 큽니다. 그러나 이 작업 중 어느 것도 Xilinx FPGA와는 관련이 없으며, Jay Yu는 Intel FPGA에서도 잘 동작할 것이라고 말합니다. 그리고 가속기를 선택하는 경우 일부 기능은 GPU에 의해 가속될 수도 있습니다. TigerGraph는 스타트업이고 가장 쉽게 빠른 수익을 제공하고, 가장 큰 수익을 제공하는 페타바이트 규모의 그래프 데이터베이스와 같은 중요한 문제들을 해결 하는데 집중하고 있습니다.
src :
https://www.nextplatform.com/2021/10/28/the-accelerated-path-to-petabyte-scale-graph-databases/