KR20230108206A - Computational SSDs accelerating deep learning service on large-scale graphs - Google Patents

Computational SSDs accelerating deep learning service on large-scale graphs Download PDF

Info

Publication number
KR20230108206A
KR20230108206A KR1020220133576A KR20220133576A KR20230108206A KR 20230108206 A KR20230108206 A KR 20230108206A KR 1020220133576 A KR1020220133576 A KR 1020220133576A KR 20220133576 A KR20220133576 A KR 20220133576A KR 20230108206 A KR20230108206 A KR 20230108206A
Authority
KR
South Korea
Prior art keywords
graph
area
storage
machine learning
node
Prior art date
Application number
KR1020220133576A
Other languages
Korean (ko)
Inventor
정명수
권미령
국동현
Original Assignee
한국과학기술원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국과학기술원 filed Critical 한국과학기술원
Priority to US18/151,645 priority Critical patent/US20230221876A1/en
Publication of KR20230108206A publication Critical patent/KR20230108206A/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0635Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means

Abstract

본 발명의 바람직한 일 실시예로서 그래프기계학습 가속화를 지원하는 계산형스토리지는 그래프데이터셋을 저장하는 SSD;및 호스트(host)가 데이터흐름그래프 형태로 프로그래밍한 그래프 기계학습 모델을 메모리에 다운로드하는 FPGA;를 포함하고, 상기 FPGA 내에 제작된 하드웨어 로직은 PCIe 스위치를 통해 상기 SSD에 액세스를 수행하는 것을 특징으로 한다.As a preferred embodiment of the present invention, computational storage supporting acceleration of graph machine learning includes an SSD for storing a graph data set; and an FPGA for downloading a graph machine learning model programmed by a host in the form of a data flow graph to memory. ; Including, the hardware logic fabricated in the FPGA is characterized in that it performs access to the SSD through a PCIe switch.

Description

그래프기계학습 가속화를 지원하는 계산형스토리지{Computational SSDs accelerating deep learning service on large-scale graphs}Computational storage that supports graph machine learning acceleration {Computational SSDs accelerating deep learning service on large-scale graphs}

본 발명은 그래프기계학습 가속화를 지원하는 계산형스토리지에 관한 것이다. The present invention relates to a computational storage that supports accelerated graph machine learning.

그래프기반 신경망학습 모델(Graph Neural Networks, GNN)은 기존 신경망 기반 기계학습 기법들과 달리, 데이터 사이의 연관 관계를 표현할 수 있어 페이스북, 구글, 링크드인, 우버 등, 대규모 소셜 네트워크 서비스(SNS)부터, 내비게이션, 신약개발 등 광범위한 분야와 응용에서 사용된다. 그래프 구조로 저장된 사용자 네트워크를 분석하는 경우 기존 신경망 기반 기계학습으로는 불가능했던 현실적인 상품 및 아이템 추천, 사람이 추론한 것 같은 친구 추천 등이 가능하다. Unlike existing neural network-based machine learning techniques, graph-based neural network learning models (GNN) can express associations between data, making them suitable for large-scale social network services (SNS) such as Facebook, Google, LinkedIn, and Uber. It is used in a wide range of fields and applications such as navigation, new drug development, etc. When analyzing a user network stored in a graph structure, it is possible to recommend realistic products and items that were not possible with existing neural network-based machine learning, and recommend friends that seem to be inferred by humans.

기존에는 이러한 GNN 기계학습을 수행하기 위해 DPU(Data Processing Unit) 나 GPU(Graphics Processing Unit)과 같은 신경망 기계학습에 사용되던 시스템을 이용하여 GNN 추론과정을 가속화 하기위해 노력하였다. 하지만, 그래프 데이터를 스토리지로부터 메모리로 적재하고 샘플링하는 등의 GNN전처리 과정에서 심각한 병목현상과 함께 메모리 부족 현상 등으로 실제 시스템 적용에 한계를 보여 왔다. In the past, in order to perform such GNN machine learning, efforts have been made to accelerate the GNN inference process by using systems used for neural network machine learning, such as DPU (Data Processing Unit) or GPU (Graphics Processing Unit). However, in the GNN pre-processing process, such as loading graph data from storage to memory and sampling, serious bottlenecks and memory shortages have shown limitations in actual system application.

USUS 11232156 11232156 B1B1

본 발명의 바람직한 일 실시예에서는 GNN 추론과정 뿐만 아니라 GNN 전처리과정까지도 가속화하여 GNN 전과정을 가속화할 수 있는 계산형 스토리지 CSSD(Computational SSD)를 제안한다. A preferred embodiment of the present invention proposes a computational storage CSSD (Computational SSD) capable of accelerating the entire GNN process by accelerating not only the GNN inference process but also the GNN pre-processing process.

본 발명의 또 다른 바람직한 일 실시예에서는 GNN 전처리 및 GNN 추론에 필요한 다양한 하드웨어 구조 및 소프트웨어의 지원이 가능한 그래프 기계학습 모델을 프로그래밍할 수 있는 계산형 스토리지 CSSD를 제안한다. Another preferred embodiment of the present invention proposes a computational storage CSSD capable of programming a graph machine learning model capable of supporting various hardware structures and software required for GNN preprocessing and GNN inference.

본 발명의 바람직한 일 실시예로서, 그래프기계학습 가속화를 지원하는 계산형스토리지는 스토리지(SSD) 인근에 배치된 연산부(FPGA); 상기 스토리지에 그래프데이터셋을 저장하거나 액세스 할 수 있는 인터페이스를 제공하고, 상기 그래프데이터셋과 이를 관리하는 메타데이터를 출력하는 그래프저장부; 호스트(host)가 데이터흐름그래프 형태로 프로그래밍한 그래프 기계학습 모델을 기설정된 형식의 데이터흐름그래프로 변환하고 상기 연산부의 메모리에 다운로드한 후 실행하여 그래프기계학습 전처리 및 그래프기계학습 추론을 수행하는 그래프실행부;및 상기 호스트의 비트파일을 다운받은 후, 상기 비트파일을 기초로 설정메모리 값을 세팅하여 상기 연산부의 하드웨어 로직을 설계하고 상기 그래프기계학습 추론 가속기를 생성하는 가속기생성부;를 포함하는 것을 특징으로 한다.As a preferred embodiment of the present invention, the computational storage supporting acceleration of graph machine learning includes an operation unit (FPGA) disposed near a storage (SSD); a graph storage unit that provides an interface for storing or accessing graph data sets in the storage, and outputs the graph data sets and metadata managing them; A graph that converts the graph machine learning model programmed in the form of a data flow graph by the host into a data flow graph in a preset format, downloads it to the memory of the operation unit, and executes it to perform graph machine learning preprocessing and graph machine learning inference. and an accelerator generation unit that downloads the bit file of the host, sets a setting memory value based on the bit file, designs the hardware logic of the calculation unit, and creates the graph machine learning inference accelerator. characterized by

본 발명의 바람직한 일 실시예로서, 상기 연산부는 제 1 영역 및 제 2 영역으로 나뉘고, 상기 제 1 영역과 상기 제 2 영역은 코프로세서 포트 및 시스템 버스 레인이 배치되어 있어 상기 제 2 영역을 프로그래밍할 수 있는 것을 특징으로 한다.As a preferred embodiment of the present invention, the operation unit is divided into a first area and a second area, and the first area and the second area have coprocessor ports and system bus lanes disposed thereon so that the second area can be programmed. characterized by being able to

본 발명의 바람직한 일 실시예로서, 상기 제 1 영역은 고정된 영역으로, 상기 그래프저장부, 상기 그래프실행부 및 상기 가속기생성부를 실행할 때 사용되는 하드웨어 로직을 포함하고, 상기 제 2 영역은 동적으로 프로그래밍 가능한 영역으로, 사용자가 상기 그래프 실행부를 통해 하드웨어에서 실행가능한 연산을 정의할 수 있는 것을 특징으로 한다.As a preferred embodiment of the present invention, the first area is a fixed area and includes hardware logic used when executing the graph storage unit, the graph execution unit, and the accelerator generation unit, and the second area is dynamically As a programmable area, it is characterized in that a user can define an operation executable in hardware through the graph execution unit.

본 발명의 바람직한 일 실시예로서, 상기 그래프저장부는 상기 그래프데이터셋에 포함된 그래프를 저장할 때 상기 그래프를 이웃검색에 용이한 그래프 구조로 변환하는 처리를 동시에 수행하여 상기 그래프실행부에서 상기 스토리지에 저장된 그래프에 액세스할 때 노드 샘플링 또는 임베딩 샘플링이 바로 수행되는 것을 특징으로 한다.As a preferred embodiment of the present invention, when the graph storage unit stores the graph included in the graph data set, it simultaneously converts the graph into a graph structure that is easy to search for neighbors, so that the graph execution unit stores the graph in the storage. It is characterized in that node sampling or embedding sampling is performed immediately when accessing the stored graph.

본 발명의 바람직한 일 실시예로서, 상기 그래프저장부는 상기 그래프데이터셋에 포함된 그래프 구조를 저장할 때 각 노드의 인덱스마다 노드 이웃수를 기초로 기설정된 개수 이상이면 H타입, 기설정된 개수 이하이면 L타입으로 구분하여 메타데이터로 저장한 그래프비트맵을 생성하고, 또한 각 노드의 인덱스마다 논리페이지번호가 할당된 매핑테이블을 생성하는 것을 특징으로 한다.As a preferred embodiment of the present invention, when the graph storage unit stores the graph structure included in the graph data set, if the number is greater than or equal to a predetermined number based on the number of node neighbors for each index of each node, type H is used, and if the number is less than or equal to a predetermined number, L type is used. It is characterized by generating a graph bitmap classified by type and stored as metadata, and also generating a mapping table to which a logical page number is assigned to each index of each node.

본 발명의 바람직한 일 실시예로서, 상기 그래프실행부는 상기 기설정된 형식의 데이터흐름그래프를 실행할 때 상기 그래프저장부에서 제공하는 인터페이스를 통해 상기 스토리지에 저장된 그래프데이터셋에 직접 액세스하는 것을 특징으로 한다. As a preferred embodiment of the present invention, the graph execution unit directly accesses the graph data set stored in the storage through an interface provided by the graph storage unit when executing the data flow graph in the preset format.

본 발명의 또 다른 바람직한 일 실시예로서, 그래프기계학습 가속화를 지원하는 계산형스토리지는 그래프데이터셋을 저장하는 SSD;및 호스트(host)가 데이터흐름그래프 형태로 프로그래밍한 그래프 기계학습 모델을 메모리에 다운로드하는 FPGA;를 포함하고, 상기 FPGA 내에 제작된 하드웨어 로직은 PCIe 스위치를 통해 상기 SSD에 액세스를 수행하며, 상기 FPGA는 제 1 영역 및 제 2 영역으로 나뉘고, 상기 제 1 영역은 하드웨어 로직이 고정되어 있고, 상기 제 2 영역은 동적으로 프로그래밍 가능한 영역으로 상기 제 1 영역과 상기 제 2 영역은 코프로세서 포트 및 시스템 버스 레인이 배치되어 있어 상기 제 2 영역에서 사용자가 정의한 비트파일을 프로그래밍할 수 있는 것을 특징으로 한다. As another preferred embodiment of the present invention, the computational storage supporting graph machine learning acceleration is an SSD for storing a graph data set; and a graph machine learning model programmed by a host in the form of a data flow graph in memory. A download FPGA; hardware logic fabricated in the FPGA performs access to the SSD through a PCIe switch, the FPGA is divided into a first area and a second area, and the first area is fixed to the hardware logic The second area is a dynamically programmable area, and a coprocessor port and a system bus lane are disposed in the first area and the second area, so that a bit file defined by a user in the second area can be programmed. characterized by

본 발명의 또 다른 바람직한 일 실시예로서, 계산형스토리지에서 그래프기계학습 가속화를 지원하는 방법은 스토리지(SSD)에 그래프데이터셋을 저장하는 단계;및 연산부(FPGA)에서 호스트(host)가 데이터흐름그래프 형태로 프로그래밍한 그래프 기계학습 모델을 메모리에 다운로드하는 단계;를 포함하고, 상기 FPGA 내에 제작된 하드웨어 로직은 PCIe 스위치를 통해 상기 SSD에 액세스를 수행하며, 상기 FPGA는 제 1 영역 및 제 2 영역으로 나뉘고, 상기 제 1 영역은 하드웨어 로직이 고정되어 있고, 상기 제 2 영역은 동적으로 프로그래밍 가능한 영역으로 상기 제 1 영역과 상기 제 2 영역은 코프로세서 포트 및 시스템 버스 레인이 배치되어 있어 상기 제 2 영역에서 사용자가 정의한 비트파일을 프로그래밍할 수 있는 것을 특징으로 한다.As another preferred embodiment of the present invention, a method for supporting acceleration of graph machine learning in computational storage includes the steps of storing a graph data set in a storage (SSD); and a data flow by a host in an operation unit (FPGA). and downloading a graph machine learning model programmed in a graph form to a memory, wherein the hardware logic fabricated in the FPGA accesses the SSD through a PCIe switch, and the FPGA has a first area and a second area The first area is a fixed hardware logic, the second area is a dynamically programmable area, and the first area and the second area are arranged with coprocessor ports and system bus lanes, so that the second area It is characterized in that a user-defined bit file can be programmed in the area.

본 발명의 바람직한 일 실시예로서, 가속화를 지원하는 계산형스토리지는 SSD 인근에 FPGA를 배치하여 대규모 그래프데이터가 이동되는 과정을 제거함으로써 GNN 기계학습 수행시 GNN추론 과정 뿐만 아니라 GNN전처리 과정까지도 가속화하는 효과가 있다. As a preferred embodiment of the present invention, computational storage supporting acceleration accelerates not only the GNN inference process but also the GNN preprocessing process when performing GNN machine learning by removing the process of moving large-scale graph data by arranging an FPGA near an SSD. It works.

본 발명의 바람직한 일 실시예로서, 가속화를 지원하는 계산형스토리지는 다양한 그래프 기계학습 모델을 쉽게 프로그래밍할 수 있는 소프트웨어 프레임워크와 사용자가 자유롭게 변경할 수 있는 신경망 가속 하드웨어 로직을 제공하여 빠른 GNN추론이 가능한 효과가 있다. As a preferred embodiment of the present invention, the computational storage that supports acceleration provides a software framework that can easily program various graph machine learning models and neural network acceleration hardware logic that can be freely changed by users, enabling fast GNN inference. It works.

도 1 은 본 발명의 바람직한 일 실시예로서, 그래프기계학습 가속화를 지원하는 계산형스토리지 구조의 일 예를 도시한다.
도 2 는 본 발명의 바람직한 일 실시예로서, 그래프기계학습 가속화를 지원하는 계산형스토리지의 내부 구성도를 도시한다.
도 3 내지 6은 본 발명의 바람직한 일 실시예로서, 그래프저장부의 동작을 설명하기 위한 도면을 나타낸다.
도 7 은 본 발명의 바람직한 일 실시예로서, 데이터흐름그래프 형태로 프로그래밍한 그래프 기계학습 모델의 일 예를 도시한다.
도 8 내지 9는 본 발명의 바람직한 일 실시예로서, 그래프실행부의 동작을 설명하는 일 예를 도시한다.
도 10은 본 발명의 바람직한 일 실시예로서, 가속기생성부의 동작을 설명하기 위한 도면을 나타낸다.
1 shows an example of a computational storage structure supporting accelerated graph machine learning as a preferred embodiment of the present invention.
2 is a diagram showing the internal configuration of a computational storage that supports accelerating graph machine learning as a preferred embodiment of the present invention.
3 to 6 show diagrams for explaining the operation of a graph storage unit as a preferred embodiment of the present invention.
7 shows an example of a graph machine learning model programmed in the form of a dataflow graph as a preferred embodiment of the present invention.
8 to 9 show an example for explaining the operation of a graph execution unit as a preferred embodiment of the present invention.
10 is a diagram for explaining the operation of an accelerator generating unit as a preferred embodiment of the present invention.

이하, 실시예를 첨부한 도면을 참조하여 상세히 설명한다.Hereinafter, an embodiment will be described in detail with reference to the accompanying drawings.

본 발명의 바람직한 일 실시예로서, 그래프기계학습 가속화를 지원하는 계산형스토리지에 관한 것이다. As a preferred embodiment of the present invention, it relates to a computational storage that supports accelerated graph machine learning.

도 1 은 본 발명의 바람직한 일 실시예로서, 그래프기계학습 가속화를 지원하는 계산형스토리지 구조의 일 예를 도시한다. 1 shows an example of a computational storage structure supporting accelerated graph machine learning as a preferred embodiment of the present invention.

본 발명의 바람직한 일 실시예로서, 계산형스토리지(Computational SSD, 이하 CSSD(100))는 SSD(110) 및 FPGA(120)를 포함한다. FPGA(120)는 SSD(110) 인근에 배치되며, FPGA(120) 내에 제작된 하드웨어 로직은 스위치(130)를 통해 SSD(110)에 액세스를 수행한다. 스위치(130)의 일 예로는 PCIe 스위치가 있다. As a preferred embodiment of the present invention, the computational storage (Computational SSD, hereinafter CSSD 100) includes an SSD 110 and an FPGA 120. The FPGA 120 is disposed near the SSD 110, and hardware logic fabricated in the FPGA 120 accesses the SSD 110 through the switch 130. One example of switch 130 is a PCIe switch.

본 발명의 바람직한 일 실시예로서, CSSD(100)는 SSD(110) 인근에 FPGA(120)를 배치하여 대규모 그래프데이터가 이동되는 과정을 제거함으로써 GNN 기계학습 수행시 GNN추론 과정 뿐만 아니라 GNN전처리 과정까지도 가속화할 수 있다. As a preferred embodiment of the present invention, the CSSD (100) arranges the FPGA (120) near the SSD (110) to remove the process of moving large-scale graph data, thereby performing the GNN inference process as well as the GNN pre-processing process when performing GNN machine learning. can even be accelerated.

호스트CPU(140)와 CSSD(100)사이 인터페이스의 일 예는 PCIe이다. 호스트 CPU는 시스템 메모리 맵에 매핑된 CSSD의 PCIe 기본 주소 레지스터들(PCIe base address registers, PCIe BARs)을 이용하여 NVMe SSD(150) 또는 FPGA I/O(160)에 접근할 수 있다. 이 경우, CSSD(100)의 내부 하드웨어인 SSD(110)와 FPGA(120)가 구분되어 있기 때문에, SSD(110)의 PCIe BAR를 통해 NVMe SSD(150)의 입출력을 요청하고, An example of an interface between the host CPU 140 and the CSSD 100 is PCIe. The host CPU may access the NVMe SSD 150 or the FPGA I/O 160 using PCIe base address registers (PCIe BARs) of the CSSD mapped to the system memory map. In this case, since the internal hardware of the CSSD 100, the SSD 110 and the FPGA 120 are separated, the input and output of the NVMe SSD 150 is requested through the PCIe BAR of the SSD 110,

입출력 요청을 위해서는, FPGA(120)의 PCIe BAR를 통해 FPGA 입출력(160)을 요청한다. SSD(110) 및 FPGA(120)는 동일한 PCIe 카드 내에 배치된다. For the input/output request, the FPGA input/output 160 is requested through the PCIe BAR of the FPGA 120. SSD 110 and FPGA 120 are placed in the same PCIe card.

도 2 는 본 발명의 바람직한 일 실시예로서, 그래프기계학습 가속화를 지원하는 계산형스토리지의 내부 구성도를 도시한다. 2 is a diagram showing the internal configuration of a computational storage that supports accelerating graph machine learning as a preferred embodiment of the present invention.

본 발명의 바람직한 일 실시예로서, CSSD(200)는 스토리지 근처에 프로그래밍 가능한 연산부를 배치한다. 스토리지의 일 예는 SSD이고, 프로그래밍 가능한 연산부의 일 예는 FPGA이다. CSSD(200)는 그래프 데이터셋과 GNN 모델을 입력받아 GNN 추론 결과를 출력한다. As a preferred embodiment of the present invention, the CSSD (200) places a programmable calculation unit near the storage. An example of storage is an SSD, and an example of a programmable computing unit is an FPGA. The CSSD 200 receives a graph data set and a GNN model and outputs a GNN inference result.

이를 위해, CSSD(200)는 그래프저장부(220), 그래프실행부(240) 및 가속기생성부(260)를 포함한다. CSSD(200)는 원격절차호출(RPC) 기능을 이용하여 호스트(210)와 통신을 수행한다. 호스트(210)는 원격절차호출을 통해 그래프데이터셋 참조 및 업데이트, 그래프 기계학습 연산 실행, 커스텀 가속기 생성 및 커스텀 연산 등록을 할 수 있다. 이 경우, CSSD(200)의 그래프저장부(220)는 그래프데이터셋의 참조와 업데이트를, 그래프실행부(240)는 그래프 기계학습 연산 실행 및 커스텀 연산 등록을, 그리고 가속기생성부(260)는 커스텀 가속기 생성을 처리한다. To this end, the CSSD 200 includes a graph storage unit 220, a graph execution unit 240, and an accelerator generation unit 260. The CSSD 200 communicates with the host 210 using a remote procedure call (RPC) function. The host 210 may refer to and update a graph data set, execute a graph machine learning operation, create a custom accelerator, and register a custom operation through a remote procedure call. In this case, the graph storage unit 220 of the CSSD 200 references and updates graph data sets, the graph execution unit 240 executes graph machine learning calculations and registers custom calculations, and the accelerator generation unit 260 Handles the creation of custom accelerators.

CSSD(200)에서 이용하는 원격절차호출(RPC)의 기능은 표 1과 같다. The functions of remote procedure call (RPC) used in CSSD 200 are shown in Table 1.

Service TypeService Type RPC functionRPC function Service TypeService Type RPC functionRPC function 그래프저장부(220)
(Bulk)
Graph storage unit (220)
(Bulk)
UpdateGraph
(EdgeArray, Embeddings)
UpdateGraph
(EdgeArray, Embeddings)
그래프저장부(220)
(Unit, Get)
Graph storage unit (220)
(Unit, Get)
GetEmbed(VID)GetEmbed(VID)
GetNeighbors(VID)GetNeighbors(VID) 그래프저장부(220)
(Unit, Update)
Graph storage unit (220)
(Unit, Update)
Addvertex(VID, Embed)Addvertex (VID, Embed) 그래프실행부(240)Graph execution unit 240 Run(DFG, batch)Run(DFG, batch)
DeleteVertex(VID)DeleteVertex(VID) Plugin(shared_lib)Plugins (shared_lib) AddEgdt(dstVIC, srcVIC)AddEgdt(dstVIC, srcVIC) 가속기생성부(260)Accelerator generator (260) Program(bitfile)Program (bitfile) DeleteEdge(dstVIC, srcVIC)DeleteEdge(dstVIC, srcVIC) UpdateEmbed(VIC, Embed)UpdateEmbed(VIC, Embed)

각 원격절차호출의 구체적인 동작은 아래와 같다.The detailed operation of each remote procedure call is as follows.

· UpdateGraph(EdgeArray, Embeddings): 다수의 엣지들(EdgeArray)과 다수의 특징 벡터들(Embeddings)을 한번에 그래프 저장소에 저장한다.· UpdateGraph(EdgeArray, Embeddings): Save multiple edges (EdgeArray) and multiple feature vectors (Embeddings) to the graph storage at once.

· AddVertex(VID, Embed): 특징 벡터가 Embed이며, 노드 인덱스 값은 VID인 새로운 노드를 저장한다. · AddVertex(VID, Embed): Stores a new node whose feature vector is Embed and whose node index value is VID.

· DeleteVertex(VID): 노드 인덱스 값이 VID인 노드의 특징 벡터와 이웃리스트를 삭제한다.· DeleteVertex(VID): Deletes the feature vector and neighbor list of the node whose node index value is VID.

· AddEdge(dstVID,srcVID), DeleteEdge(dstVID,srcVID): srcVID를 출발지 노드의 인덱스로 하고, dstVID를 도착지 노드의 인덱스로 하는 엣지를 추가/삭제한다.· AddEdge(dstVID,srcVID), DeleteEdge(dstVID,srcVID): Add/delete edge with srcVID as the index of the source node and dstVID as the index of the destination node.

· UpdateEmbed(VID,Embed): 노드 인덱스 값이 VID인 노드의 특징 벡터를 Embed로 업데이트한다.· UpdateEmbed(VID,Embed): Updates the feature vector of the node whose node index value is VID to Embed.

· GetEmbed(VID), GetNeighbors(VID): 노드 인덱스 값이 VID인 노드의 특징 벡터/이웃리스트를 참조한다.· GetEmbed(VID), GetNeighbors(VID): Refers to the feature vector/neighbor list of the node whose node index value is VID.

· Run(DFG,batch): 그래프 기계학습 연산의 타겟이 되는 노드 인덱스 리스트 (배치)에 대해서 DFG 모델을 실행한다. · Run(DFG,batch): Runs the DFG model for the node index list (batch) that is the target of the graph machine learning operation.

· Plugin(shared_lib): 사용자 커스텀 연산을 공유 라이브러리 형태로 등록한다.· Plugin (shared_lib): Registers user-customized operations in the form of a shared library.

· Program(bitfile): 비트파일을 FPGA내 유저영역에 프로그램한다.· Program (bitfile): Program the bitfile in the user area of the FPGA.

그래프저장부(220)는 스토리지에 그래프데이터셋을 저장하거나 액세스 할 수 있는 인터페이스를 제공한다. 그래프데이터셋은 그래프 구조와 노드 임베딩을 포함한다. 그래프저장부(220)는 그래프데이터셋을 그래프구조, 임베딩테이블 및 메타데이터로 영역을 구별하여 스토리지에 저장할 수 있다. 임베딩테이블은 각 노드의 특징 벡터를 저장한다. 특징 벡터들은 노드 인덱스 순으로 연속된 공간에 저장되는 반면, 인접리스트는 그래프 검색과 업데이트 효율성을 고려하여 하기 설명된 두가지 방식으로 저장된다. The graph storage unit 220 provides an interface for storing or accessing graph data sets in storage. A graph data set includes a graph structure and node embeddings. The graph storage unit 220 may store the graph data set in storage by distinguishing areas into a graph structure, an embedding table, and metadata. The embedding table stores feature vectors of each node. While feature vectors are stored in a contiguous space in the order of node index, adjacency lists are stored in the two methods described below in consideration of graph search and update efficiency.

그래프저장부(220)는 그래프데이터셋에 포함된 그래프 구조를 저장할 때 그래프를 이웃검색에 용이한 그래프 구조인 인접 리스트(Adjacency list)로 변환하는 처리를 동시에 수행한다. 이러한 처리 과정을 통해 그래프실행부(240)에서 스토리지에 저장된 그래프에 액세스할 때 노드 샘플링 또는 임베딩 샘플링이 바로 수행될 수 있다. When storing the graph structure included in the graph data set, the graph storage unit 220 simultaneously converts the graph into an adjacency list, which is a graph structure that is easy to search for neighbors. Node sampling or embedding sampling can be performed immediately when the graph execution unit 240 accesses the graph stored in the storage through this processing process.

도 3 내지 6을 참고하면, 그래프저장부(220)는 그래프데이터셋에 포함된 그래프 구조를 저장할 때 각 노드의 인덱스마다 노드 이웃수를 기초로 기설정된 개수 이상이면 H타입, 기설정된 개수 이하이면 L타입으로 구분하여 그래프비트맵(310)에 메타데이터의 형태로 저장된다. 3 to 6, when the graph storage unit 220 stores the graph structure included in the graph data set, if the number is greater than or equal to a preset number based on the number of node neighbors for each index of each node, the graph storage unit 220 is an H type if it is less than or equal to the preset number. It is divided into L type and stored in the graph bitmap 310 in the form of metadata.

그래프비트맵(310)은 메타데이터의 형태로 CSSD(200) 내부의 NAND에 저장이 되어 있으나, 연산처리시에는 DRAM에서 캐싱해서 사용된다. 그래프비트맵(310)에서 V0, V1,..., V7은 각각 노드의 인덱스를 나타낸다. 그리고 '1'은 L타입, '0'은 H타입을 나타낸다. The graph bitmap 310 is stored in NAND in the CSSD 200 in the form of metadata, but is cached and used in DRAM during calculation processing. In the graph bitmap 310, V0, V1, ..., V7 represent the index of each node. And '1' represents the L type, and '0' represents the H type.

그래프저장부(220)는 그래프비트맵(310)을 구성하는 노드의 인덱스마다 논리페이지번호가 할당된 매핑테이블(320a, 320b)을 생성한다. 이웃이 기설정된 개수보다 적은 L타입 노드들의 경우 단일 페이지에 다중 노드의 이웃리스트를 저장할 수 있다. 따라서 L타입 메타데이터가 저장된 노드의 인덱스는 단일페이지에 다중 노드의 이웃리스트를 저장한 범위기반 형태의 매핑테이블(320a)을 생성한다. 이웃이 많은 H타입 노드는 단일 페이지가 저장할 수 있는 이웃수보다 더 많은 이웃수를 가지고 있으므로 다중 페이지에 걸쳐 저장된다. 따라서, H타입 메타데이터가 저장된 노드의 인덱스는 링크드리스트(a linked list) 형태의 매핑테이블(320b)을 생성한다. The graph storage unit 220 creates mapping tables 320a and 320b to which logical page numbers are allocated for each node index constituting the graph bitmap 310. In the case of L-type nodes having fewer than a predetermined number of neighbors, a neighbor list of multiple nodes may be stored in a single page. Therefore, the index of the node where the L-type metadata is stored creates a mapping table 320a in a range-based format that stores a neighbor list of multiple nodes in a single page. H-type nodes with many neighbors are stored across multiple pages because they have more neighbors than a single page can store. Accordingly, the index of the node where the H-type metadata is stored generates a mapping table 320b in the form of a linked list.

그래프저장부(220)는 L타입 노드의 이웃리스트 검색시 매핑테이블(320a)을 이진검색하여 특정 도착노드 인덱스를 가지는 노드의 이웃리스트가 저장된 페이지를 매핑하고, 해당 페이지의 메타데이터를 통해 원하는 노드의 이웃리스트가 저장된 위치를 판단하고 이웃리스트 읽기를 수행한다. 해당 페이지의 메타데이터는 페이지에 저장된 이웃리스트 개수, 페이지 내 오프셋 정보를 포함한다. 페이지 내 오프셋 정보는 다수의이웃리스트가 단일페이지에 저장된 경우에 각 이웃리스트의 시작 주소를 관리하기 위해 이용된다.The graph storage unit 220 performs a binary search on the mapping table 320a when searching for a neighbor list of an L-type node, maps a page in which a neighbor list of a node having a specific arrival node index is stored, and uses the metadata of the page to obtain the desired node. Determines the location where the neighbor list of is stored and reads the neighbor list. The metadata of the corresponding page includes the number of neighbor lists stored in the page and offset information within the page. Offset information within a page is used to manage the start address of each neighbor list when a plurality of neighbor lists are stored in a single page.

그래프저장부(220)는 H타입 노드의 이웃리스트 검색시 링크드리스트 형태의 매핑테이블을 순차적으로 탐색하면서 찾은 논리페이지 주소에 접근해 이웃리스트를 읽을 수 있다. 여러 노드의 이웃리스트가 단일 페이지에 같이 저장되어있는 L타입과는 달리 H타입의 이웃리스트는 단일 페이지를 단독으로 사용하기 때문이다. When searching for the neighbor list of an H-type node, the graph storage unit 220 can read the neighbor list by accessing the found logical page address while sequentially searching the mapping table in the form of a linked list. This is because the H-type neighbor list uses a single page, unlike the L-type, in which the neighbor lists of several nodes are stored together in a single page.

도 4는 본 발명의 바람직한 일 실시예로서, 그래프저장부(220)가 제공하는 원격호출절차 API 중 이웃리스트 참조동작을 보여준다. H타입과 L타입 모두 이진검색을 통해 타겟하는 노드 인덱스의 매핑 정보를 참조할 수 있다. 하지만, 페이지 전체를 단일 노드에 할당하는 H타입과는 달리 L타입은 단일 페이지를 다수의 노드가 공유하므로 범위 탐색을 해야한다. 매핑테이블에는 가리키고 있는 페이지에 포함된 최대 노드 인덱스를 저장하고 있으므로, 도 4의 실시예에서 V5의 이웃리스트는 V6와 같이 저장되어 있음을 알 수 있다. 논리 페이지 7의 메타데이터를 통해 해당 페이지에는 2개 노드의 이웃리스트가 저장되어있으며, 저장된 두개의 노드는 V5, V6임을 알 수 있다. V5의 이웃리스트가 저장된 오프셋을 참조함으로써, 최종적으로 V5의 이웃리스트를 읽을 수 있게된다.4 shows a neighbor list reference operation among remote calling procedure APIs provided by the graph storage unit 220 as a preferred embodiment of the present invention. Both the H type and the L type can refer to mapping information of a target node index through binary search. However, unlike the H type that allocates the entire page to a single node, the L type requires a range search because a single page is shared by multiple nodes. Since the mapping table stores the index of the largest node included in the pointed page, it can be seen that the neighbor list of V5 is stored like that of V6 in the embodiment of FIG. 4 . Through the metadata of the logical page 7, it can be seen that the neighbor list of two nodes is stored in the corresponding page, and the two stored nodes are V5 and V6. By referring to the offset where the neighbor list of V5 is stored, the neighbor list of V5 can finally be read.

도 5는 본 발명의 바람직한 일 실시예로서, 그래프저장부(220)가 제공하는 원격호출절차 API 중 노드추가 동작을 보여준다. 새로 추가되는 노드의 경우 이웃 노드의 수가 자기자신 1개이므로, L타입으로 분류된다. 그래프저장부(220)는 L타입 매핑테이블의 맨 마지막 엔트리가 가리키는 페이지의 메타데이터를 확인하여 여유공간이 있는지를 확인한 후, 여유공간이 없다고 판단되면 새로운 페이지를 할당받은 후 L타입 매핑테이블을 확장한다. 구체적으로, 논리페이지 8번에 여유공간이 없으므로 새로 추가되는 V21 노드의 이웃리스트는 논리페이지 9번에 저장한다. 이후, V21 노드에 새로운 이웃(V1)이 추가되면 논리페이지 9번에 저장된 V21 이웃리스트에 V1을 추가하고, 해당 페이지의 메타데이터를 업데이트한다. 5 shows an operation of adding a node among remote calling procedure APIs provided by the graph storage unit 220 as a preferred embodiment of the present invention. In the case of a newly added node, since the number of neighboring nodes is one, it is classified as an L type. The graph storage unit 220 checks the metadata of the page indicated by the last entry of the L-type mapping table to determine whether there is free space, and if it is determined that there is no free space, a new page is allocated and the L-type mapping table is extended. do. Specifically, since logical page #8 has no free space, the neighbor list of the newly added V21 node is stored in logical page #9. Subsequently, when a new neighbor (V1) is added to node V21, V1 is added to the V21 neighbor list stored in logical page 9, and metadata of the corresponding page is updated.

도 6은 본 발명의 바람직한 일 실시예로서, 그래프저장부(220)가 제공하는 원격호출절차 API 중 노드삭제 동작을 구체적으로 보여준다. 6, as a preferred embodiment of the present invention, shows in detail a node deletion operation among the remote call procedure APIs provided by the graph storage unit 220.

그래프저장부(220)는 타겟노드의 이웃리스트를 삭제하고, 그 후 타겟노드와 연결된 모든 엣지를 삭제하는 과정을 통해 노드삭제 동작을 수행한다. 도 6의 실시예는 L타입인 V5 노드를 삭제하는 과정을 도시한다. 그래프저장부(220)는 논리 페이지 번호 7에 저장되어 있는 V5의 이웃리스트를 읽어온다. 그 후 V5가 연결된 모든 엣지를 삭제하는데, 이때 V5의 모든 이웃 노드들의 이웃리스트에서 V5를 탐색하고 삭제하는 과정을 반복한다. V5와 연결된 모든 엣지를 삭제한 후에는 논리페이지 7에서 V5의 이웃리스트를 삭제하고 관련 메타데이터를 업데이트한다. 메타데이터는 (페이지에 저장된 이웃리스트 개수, 페이지 내 오프셋 정보) 형식으로 업데이트된다. H타입 노드의 삭제 과정도 이와 유사하나, 타겟 노드의 이웃리스트를 삭제하는 과정은 L타입과 달리 링크드리스트의 연결을 끊어 매핑정보를 업데이트 한다. The graph storage unit 220 performs a node deletion operation by deleting the neighbor list of the target node and then deleting all edges connected to the target node. The embodiment of FIG. 6 illustrates a process of deleting an L-type V5 node. The graph storage unit 220 reads the neighbor list of V5 stored in logical page number 7. Then, all edges to which V5 is connected are deleted. At this time, the process of searching for V5 in the neighbor list of all neighboring nodes of V5 and deleting is repeated. After deleting all edges associated with V5, delete V5's neighbor list from logical page 7 and update the associated metadata. Metadata is updated in the form of (the number of neighbor lists stored in a page, offset information within a page). The process of deleting the H-type node is similar to this, but the process of deleting the neighbor list of the target node disconnects the linked list and updates the mapping information, unlike the L-type node.

그래프실행부(240)는 호스트로부터 GNN 프로그램을 입력받아 GNN추론 결과를 출력한다. 도 7 내지 9를 더 참고하여 설명한다. GNN 프로그램의 일 예는 호스트(210)가 데이터흐름그래프(이하, DFG) 형태로 프로그래밍한 그래프 기계학습 모델이다. 도 7은 DFG형태의 프로그래밍의 일 예를 도시한다. The graph execution unit 240 receives a GNN program from the host and outputs a GNN inference result. Further explanation will be made with reference to FIGS. 7 to 9 . An example of the GNN program is a graph machine learning model programmed by the host 210 in the form of a dataflow graph (hereinafter referred to as DFG). 7 shows an example of DFG type programming.

그래프실행부(240)는 사용자가 정의한 DFG(810)를 기설정된 형식의 DFG(820)로 변환한다. 예를 들어, 그래프실행부(240)는 사용자가 정의한 DFG(810)를 DFG 각 노드의 연산종류와 입력값, 출력값을 기정의한 형식의 DFG(820)로 변환한다. 그리고, 기설정된 형식으로 변환된 DFG를 FPGA의 메모리에 다운로드한 후 실행하여 GNN전처리 및 GNN추론을 수행한다.The graph execution unit 240 converts the DFG 810 defined by the user into a DFG 820 in a preset format. For example, the graph execution unit 240 converts the DFG 810 defined by the user into a DFG 820 in a predefined format with operation types, input values, and output values of each DFG node. Then, the DFG converted into a preset format is downloaded to the memory of the FPGA and executed to perform GNN pre-processing and GNN inference.

본 발명의 바람직한 일 실시예에서 사용자는 DFG 형태로 그래프기계학습 모델을 프로그래밍함으로써 교차 컴파일 및 스토리지 스택의 수정 없이도 DFG를 CSSD로 다운로드하여 실행할 수 있다. In a preferred embodiment of the present invention, by programming a graph machine learning model in the form of a DFG, the user can download and execute the DFG as CSSD without cross-compilation and modification of the storage stack.

도 8을 참고하면, 그래프실행부(240)는 사용자가 정의한 DFG(도 8, 810)의 "BatchPre"(811), "SpMMMean"(812), "GEMM"(813) 및 "ReLU"(814)을 기설정된 형식의 DFG로 변환한 후 실행한다. "BatchPre"(811)는 GNN전처리에 요구되는 연산, 그리고 "SpMMMean"(812), "GEMM"(813) 및 "ReLU"(814)는 GNN추론에 요구되는 연산이다. 이 과정에서 그래프실행부(240)는 그래프저장부(220)를 통해 CSSD(200) 내의 스토리지에 직접 액세스하여 그래프 및 임베딩을 읽어온다. Referring to FIG. 8, the graph execution unit 240 includes "BatchPre" (811), "SpMMMean" (812), "GEMM" (813), and "ReLU" (814) of the DFG (FIG. 8, 810) defined by the user. ) into a DFG in a preset format and then executed. "BatchPre" (811) is an operation required for GNN pre-processing, and "SpMMMean" (812), "GEMM" (813) and "ReLU" (814) are operations required for GNN inference. In this process, the graph execution unit 240 directly accesses the storage in the CSSD 200 through the graph storage unit 220 to read the graph and the embedding.

본 발명의 바람직한 일 실시예로서, 그래프실행부(240)는 DRAM과 같은 메모리에 내부적으로 연산종류와 하드웨어코드를 매핑하는 매핑테이블(830)을 저장하므로 사용자가 하드웨어 내부를 모르더라도 DFG 프로그래밍이 가능하도록 지원한다. 또한, 단일 연산을 여러 개의 하드웨어에서 수행할 수 있는 경우 우선순위를 기준으로 연산을 실행할 하드웨어가 결정된다.As a preferred embodiment of the present invention, the graph execution unit 240 internally stores a mapping table 830 for mapping operation types and hardware codes in a memory such as DRAM, so that DFG programming is possible even if the user does not know the inside of the hardware. support to do Also, when a single operation can be performed by multiple hardware, the hardware to execute the operation is determined based on priority.

도 9를 참고하면, "GEMM"이라는 단일 연산을 CPU(910), 벡터 프로세서(920) 및 시스톨릭 어레이(930)에서 수행할 수 있는 경우, 각각의 장치별로 기설정된 우선순위를 기준으로 연산을 실행할 하드웨어가 결정된다. 메모리에는 각 하드웨어에서 “GEMM”(813)연산을 수행하는 코드인 "GEMM"<SA>(Systolic array)(930), "GEMM"<VP>(Vector Processor)(920), 그리고 "GEMM"<CPU>(910) 가 저장되어 있으며, 그 중 우선순위 기반으로 선택된 하드웨어의 코드를 수행하게 된다. 이때 그래프실행부(240)가 프로그램 카운터를 매핑테이블에 저장된 하드웨어 코드 메모리 주소로 변경함으로써, 해당 장치에서 가속을 수행할 수 있다. 최종적으로 그래프실행부(240)는 프로그램 카운터를 매핑테이블에 저장된 하드웨어 코드 메모리 주소로 점프하여 가속을 수행한다.Referring to FIG. 9, when a single operation called "GEMM" can be performed by the CPU 910, the vector processor 920, and the systolic array 930, the operation is performed based on a priority set for each device. The hardware to run on is determined. In the memory, “GEMM”<SA> (Systolic array) (930), “GEMM”<VP> (Vector Processor) (920), and “GEMM” CPU> (910) is stored, and among them, the code of the hardware selected based on the priority is executed. At this time, the graph execution unit 240 changes the program counter to the hardware code memory address stored in the mapping table, so that the corresponding device can perform acceleration. Finally, the graph execution unit 240 performs acceleration by jumping the program counter to the hardware code memory address stored in the mapping table.

가속기생성부(260)는 호스트로부터 DRAM(1130)에 비트파일(1012)을 다운받은 후, 비트파일(1012)을 기초로 설정메모리(1120) 값을 세팅하여 FPGA에 그래프기계학습 추론 가속기를 생성한다. 설정메모리(1120)는 FPGA 메모리를 지칭한다. 그리고 비트파일은 사용자가 정의한 하드웨어 프로그램 파일을 의미한다. The accelerator generator 260 downloads the bit file 1012 from the host to the DRAM 1130, sets the value of the setting memory 1120 based on the bit file 1012, and generates a graph machine learning inference accelerator in the FPGA. do. The configuration memory 1120 refers to FPGA memory. A bit file means a hardware program file defined by a user.

도 10에서 FPGA(1200, 1300)는 쉘 영역(1200)과 유저 영역(1300)으로 분리할 수 있다. 이 경우 DFX(Dynamic Function eXchange) 기술을 이용할 수 있다. DFX(Dynamic Function eXchange) 기술은 파티션 경계(bondary) 저장방식 및 동적 프로그래밍 방식을 지원한다. In FIG. 10 , FPGAs 1200 and 1300 may be divided into a shell area 1200 and a user area 1300 . In this case, DFX (Dynamic Function eXchange) technology can be used. DFX (Dynamic Function eXchange) technology supports partition boundary storage method and dynamic programming method.

파티션 경계(bondary) 저장방식은 디자인 체크포인트 파일 형태로 고정된 영역과 동적으로 프로그래밍 가능한 영역의 경계(partition pin)을 정의한다. 사용자는 디자인 체크포인트 파일의 경계를 입력핀 또는 출력픽으로 하는 하드웨어를 설계할 수 있다. The partition boundary (bondary) storage method defines the boundary (partition pin) of a fixed area and a dynamically programmable area in the form of a design checkpoint file. Users can design hardware that uses the boundaries of the design checkpoint file as input pins or output picks.

동적프로그래밍 방식은 ICAP(Internal Configuration Access Port)를 통해 동적으로 프로그래밍 가능한 영역의 FPGA에 사용자가 정의한 비트파일을 프로그래밍한다. In the dynamic programming method, a bit file defined by a user is programmed into an FPGA in a dynamically programmable area through an Internal Configuration Access Port (ICAP).

본 발명의 바람직한 일 실시예로서, 쉘 영역(1200)은 고정된(fixed) 영역으로 그래프저장부, 그래프실행부 및 가속기생성부(1270)를 실행할 때 사용되는 하드웨어 로직을 포함한다. 하드웨어 로직의 예로는 DRAM 컨트롤러(1210), DMA 엔진(1220), PCle 종단(1230), PCle 스위치(1240), O3 코어(1250), 버스(1260) 등을 포함한다. 유저 영역(1300)은 사용자가 자유롭게 그래프 기계학습의 신경망 가속기를 배치할 수 있다. 쉘 영역(1200)과 유저 영역(1300)은 코프로세서 포트 및 시스템 버스 레인이 배치되어 있어 유저 영역(1300)에서 사용자가 정의한 비트파일을 프로그래밍할 수 있다. 예를 들어, 유저 영역(1300)은 도 2의 일 실시예와 같이 벡터 프로세서(262)와 시스톨릭 어레이(264)로 구성된 형태의 비트파일로 프로그래밍될 수 있다. As a preferred embodiment of the present invention, the shell area 1200 is a fixed area and includes hardware logic used when the graph storage unit, graph execution unit, and accelerator generation unit 1270 are executed. Examples of hardware logic include DRAM controller 1210, DMA engine 1220, PCIe termination 1230, PCIe switch 1240, O3 core 1250, bus 1260, and the like. In the user area 1300, a user can freely arrange a neural network accelerator for graph machine learning. In the shell area 1200 and the user area 1300, a coprocessor port and a system bus lane are arranged so that a bit file defined by a user in the user area 1300 can be programmed. For example, the user area 1300 may be programmed with a bit file in the form of a vector processor 262 and a systolic array 264, as in the embodiment of FIG. 2 .

사용자는 그래프 실행부(240)가 제공하는 API를 통해 하드웨어에서 실행가능한 연산을 유저 영역(1300)에 정의할 수 있다.A user may define an operation executable in hardware in the user area 1300 through an API provided by the graph execution unit 240 .

이상에서 설명된 장치는 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.The devices described above may be implemented as hardware components, software components, and/or a combination of hardware components and software components. For example, devices and components described in the embodiments may include, for example, a processor, a controller, an arithmetic logic unit (ALU), a digital signal processor, a microcomputer, a field programmable gate array (FPGA) , a programmable logic unit (PLU), microprocessor, or any other device capable of executing and responding to instructions. A processing device may run an operating system (OS) and one or more software applications running on the operating system. A processing device may also access, store, manipulate, process, and generate data in response to execution of software. For convenience of understanding, there are cases in which one processing device is used, but those skilled in the art will understand that the processing device includes a plurality of processing elements and/or a plurality of types of processing elements. It can be seen that it can include. For example, a processing device may include a plurality of processors or a processor and a controller. Other processing configurations are also possible, such as parallel processors.

소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치에 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.Software may include a computer program, code, instructions, or a combination of one or more of the foregoing, which configures a processing device to operate as desired or processes independently or collectively. You can command the device. Software and/or data may be any tangible machine, component, physical device, virtual equipment, computer storage medium or device, intended to be interpreted by or provide instructions or data to a processing device. can be embodied in Software may be distributed on networked computer systems and stored or executed in a distributed manner. Software and data may be stored on one or more computer readable media.

실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. The method according to the embodiment may be implemented in the form of program instructions that can be executed through various computer means and recorded on a computer readable medium. The computer readable medium may include program instructions, data files, data structures, etc. alone or in combination. Program commands recorded on the medium may be specially designed and configured for the embodiment or may be known and usable to those skilled in computer software. Examples of computer-readable recording media include magnetic media such as hard disks, floppy disks and magnetic tapes, optical media such as CD-ROMs and DVDs, and magnetic media such as floptical disks. - includes hardware devices specially configured to store and execute program instructions, such as magneto-optical media, and ROM, RAM, flash memory, and the like. Examples of program instructions include high-level language codes that can be executed by a computer using an interpreter, as well as machine language codes such as those produced by a compiler.

이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다. 그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.As described above, although the embodiments have been described with limited examples and drawings, those skilled in the art can make various modifications and variations from the above description. For example, the described techniques may be performed in an order different from the method described, and/or components of the described system, structure, device, circuit, etc. may be combined or combined in a different form than the method described, or other components may be used. Or even if it is replaced or substituted by equivalents, appropriate results can be achieved. Therefore, other implementations, other embodiments, and equivalents of the claims are within the scope of the following claims.

Claims (15)

스토리지(SSD) 인근에 배치된 연산부(FPGA);
상기 스토리지에 그래프데이터셋을 저장하거나 액세스 할 수 있는 인터페이스를 제공하고, 상기 그래프데이터셋과 이를 관리하는 메타데이터를 출력하는 그래프저장부;
호스트(host)가 데이터흐름그래프 형태로 프로그래밍한 그래프 기계학습 모델을 기설정된 형식의 데이터흐름그래프로 변환하고 상기 연산부의 메모리에 다운로드한 후 실행하여 그래프기계학습 전처리 및 그래프기계학습 추론을 수행하는 그래프실행부;및
상기 호스트의 비트파일을 다운받은 후, 상기 비트파일을 기초로 설정메모리 값을 세팅하여 상기 연산부의 하드웨어 로직을 설계하고 상기 그래프기계학습 추론 가속기를 생성하는 가속기생성부;를 포함하는 것을 특징으로 하는 그래프기계학습 가속화를 지원하는 계산형스토리지.
a calculation unit (FPGA) disposed near the storage (SSD);
a graph storage unit that provides an interface for storing or accessing graph data sets in the storage, and outputs the graph data sets and metadata managing them;
A graph that converts the graph machine learning model programmed in the form of a data flow graph by the host into a data flow graph in a preset format, downloads it to the memory of the operation unit, and executes it to perform graph machine learning preprocessing and graph machine learning inference. executive unit; and
After downloading the bit file of the host, setting a setting memory value based on the bit file, designing the hardware logic of the calculation unit, and generating the graph machine learning inference accelerator. Computational storage that supports accelerated graph machine learning.
제 1 항에 있어서, 상기 연산부는
제 1 영역 및 제 2 영역으로 나뉘고, 상기 제 1 영역과 상기 제 2 영역은 코프로세서 포트 및 시스템 버스 레인이 배치되어 있어 상기 제 2 영역을 프로그래밍할 수 있는 것을 특징으로 하는 그래프기계학습 가속화를 지원하는 계산형스토리지.
The method of claim 1, wherein the calculation unit
It is divided into a first area and a second area, and the first area and the second area are arranged with coprocessor ports and system bus lanes to support graph machine learning acceleration, characterized in that the second area can be programmed. computed storage.
제 2 항에 있어서,
상기 제 1 영역은 고정된 영역으로, 상기 그래프저장부, 상기 그래프실행부 및 상기 가속기생성부를 실행할 때 사용되는 하드웨어 로직을 포함하는 것을 특징으로 하는 그래프기계학습 가속화를 지원하는 계산형스토리지.
According to claim 2,
The first area is a fixed area and includes hardware logic used when executing the graph storage unit, the graph execution unit, and the accelerator generation unit.
제 2 항에 있어서,
상기 제 2 영역은 동적으로 프로그래밍 가능한 영역으로, 사용자가 상기 그래프 실행부를 통해 하드웨어에서 실행가능한 연산을 정의할 수 있는 것을 특징으로 하는 그래프기계학습 가속화를 지원하는 계산형스토리지.
According to claim 2,
The second area is a dynamically programmable area, and a computational storage supporting acceleration of graph machine learning, characterized in that a user can define an operation executable in hardware through the graph execution unit.
제 1 항에 있어서,
상기 연산부 내에 제작된 하드웨어 로직은 PCIe 스위치를 통해 상기 스토리지에 액세스하는 것을 특징으로 하는 그래프기계학습 가속화를 지원하는 계산형스토리지.
According to claim 1,
The hardware logic fabricated in the calculation unit is computational storage that supports graph machine learning acceleration, characterized in that for accessing the storage through a PCIe switch.
제 1 항에 있어서, 상기 그래프저장부는
상기 그래프데이터셋에 포함된 그래프를 저장할 때 상기 그래프를 이웃검색에 용이한 그래프 구조로 변환하는 처리를 동시에 수행하여 상기 그래프실행부에서 상기 스토리지에 저장된 그래프에 액세스할 때 노드 샘플링 또는 임베딩 샘플링이 바로 수행되는 것을 특징으로 하는 그래프기계학습 가속화를 지원하는 계산형스토리지.
The method of claim 1, wherein the graph storage unit
When the graph included in the graph data set is stored, a process of converting the graph into a graph structure that is easy to search for neighbors is simultaneously performed, and when the graph execution unit accesses the graph stored in the storage, node sampling or embedding sampling is immediately performed. Computational storage that supports acceleration of graph machine learning, characterized in that it is performed.
제 1 항에 있어서, 상기 그래프저장부는
상기 그래프데이터셋에 포함된 그래프 구조를 저장할 때 각 노드의 인덱스마다 노드 이웃수를 기초로 기설정된 개수 이상이면 H타입, 기설정된 개수 이하이면 L타입으로 구분하여 메타데이터로 저장한 그래프비트맵을 생성하고, 또한 각 노드의 인덱스마다 논리페이지번호가 할당된 매핑테이블을 생성하는 것을 특징으로 하는 그래프기계학습 가속화를 지원하는 계산형스토리지.
The method of claim 1, wherein the graph storage unit
When storing the graph structure included in the graph data set, based on the number of node neighbors for each index of each node, the graph bitmap stored as metadata is divided into an H type if the number is greater than or equal to a preset number and an L type if the number is less than the preset number. Computational storage that supports acceleration of graph machine learning, characterized in that it generates a mapping table to which a logical page number is allocated for each index of each node.
제 7 항에 있어서,
상기 H타입은 노드의 이웃수가 단일 페이지가 저장할 수 있는 이웃수 보다 많은 경우로, 상기 H타입 메타데이터가 저장된 노드의 인덱스는 링크드리스트 형태의 매핑테이블을 생성하는 것을 특징으로 하는 그래프기계학습 가속화를 지원하는 계산형스토리지.
According to claim 7,
The H-type is a case where the number of neighbors of a node is greater than the number of neighbors that can be stored in a single page, and the index of the node where the H-type metadata is stored generates a mapping table in the form of a linked list. Supported computed storage.
제 7 항에 있어서,
상기 L타입은 노드의 이웃수가 단일 페이지가 저장할 수 있는 이웃수 보다 적은 경우로, 상기 L타입 메타데이터가 저장된 노드의 인덱스는 단일페이지에 다중 노드의 이웃리스트를 저장한 범위기반 형태의 매핑테이블을 생성하는 것을 특징으로 하는 그래프기계학습 가속화를 지원하는 계산형스토리지.
According to claim 7,
The L-type is a case where the number of neighbors of a node is smaller than the number of neighbors that can be stored in a single page, and the index of the node where the L-type metadata is stored is a mapping table in a range-based format storing a list of neighbors of multiple nodes in a single page. Computational storage that supports accelerating graph machine learning, characterized in that it generates.
제1 항에 있어서, 상기 그래프실행부는
상기 기설정된 형식의 데이터흐름그래프를 실행할 때 상기 그래프저장부에서 제공하는 인터페이스를 통해 상기 스토리지에 저장된 그래프데이터셋에 직접 액세스하는 것을 특징으로 하는 그래프기계학습 가속화를 지원하는 계산형스토리지.
The method of claim 1, wherein the graph execution unit
Computational storage that supports accelerated graph machine learning, characterized in that when the data flow graph in the preset format is executed, the graph data set stored in the storage is directly accessed through an interface provided by the graph storage unit.
제 1 항에 있어서,
상기 스토리지와 상기 연산부는 동일한 PCIe 카드 내에 배치되는 것을 특징으로 하는 그래프기계학습 가속화를 지원하는 계산형스토리지.
According to claim 1,
Computational storage supporting graph machine learning acceleration, characterized in that the storage and the calculation unit are disposed in the same PCIe card.
그래프데이터셋을 저장하는 SSD;및
호스트(host)가 데이터흐름그래프 형태로 프로그래밍한 그래프 기계학습 모델을 메모리에 다운로드하는 FPGA;를 포함하고,
상기 FPGA 내에 제작된 하드웨어 로직은 PCIe 스위치를 통해 상기 SSD에 액세스를 수행하며, 상기 FPGA는 제 1 영역 및 제 2 영역으로 나뉘고,
상기 제 1 영역은 하드웨어 로직이 고정되어 있고, 상기 제 2 영역은 동적으로 프로그래밍 가능한 영역으로 상기 제 1 영역과 상기 제 2 영역은 코프로세서 포트 및 시스템 버스 레인이 배치되어 있어 상기 제 2 영역에서 사용자가 정의한 비트파일을 프로그래밍할 수 있는 것을 특징으로 하는 그래프기계학습 가속화를 지원하는 계산형스토리지.
SSD for storing the graph data set; and
An FPGA that downloads a graph machine learning model programmed by a host in the form of a data flow graph into memory;
Hardware logic fabricated in the FPGA accesses the SSD through a PCIe switch, the FPGA is divided into a first area and a second area,
The first area has fixed hardware logic, and the second area is a dynamically programmable area, and coprocessor ports and system bus lanes are disposed in the first area and the second area. Computational storage that supports acceleration of graph machine learning, characterized in that the bit file defined by can be programmed.
스토리지(SSD)에 그래프데이터셋을 저장하는 단계;및
연산부(FPGA)에서 호스트(host)가 데이터흐름그래프 형태로 프로그래밍한 그래프 기계학습 모델을 메모리에 다운로드하는 단계;를 포함하고,
상기 FPGA 내에 제작된 하드웨어 로직은 PCIe 스위치를 통해 상기 SSD에 액세스를 수행하며, 상기 FPGA는 제 1 영역 및 제 2 영역으로 나뉘고,
상기 제 1 영역은 하드웨어 로직이 고정되어 있고, 상기 제 2 영역은 동적으로 프로그래밍 가능한 영역으로 상기 제 1 영역과 상기 제 2 영역은 코프로세서 포트 및 시스템 버스 레인이 배치되어 있어 상기 제 2 영역에서 사용자가 정의한 비트파일을 프로그래밍할 수 있는 것을 특징으로 하는 계산형스토리지에서 그래프기계학습 가속화를 지원하는 방법.
Storing a graph data set in a storage (SSD); And
Including; downloading a graph machine learning model programmed by a host in the form of a data flow graph in a memory in an operation unit (FPGA);
Hardware logic fabricated in the FPGA accesses the SSD through a PCIe switch, the FPGA is divided into a first area and a second area,
The first area has fixed hardware logic, and the second area is a dynamically programmable area, and coprocessor ports and system bus lanes are disposed in the first area and the second area. A method for supporting graph machine learning acceleration in computational storage, characterized in that the bit file defined by can be programmed.
제 13 항에 있어서, 상기 연산부(FPGA)는 상기 스토리지(SSD) 인근에 배치되는 것을 특징으로 하는 계산형스토리지에서 그래프기계학습 가속화를 지원하는 방법. 14. The method of claim 13, wherein the FPGA is disposed near the storage (SSD). 제 1 항에 있어서,
상기 제 1 영역은 고정된 영역으로, 그래프저장부, 그래프실행부 및 가속기생성부를 실행할 때 사용되는 하드웨어 로직을 포함하는 것을 특징으로 하는 계산형스토리지에서 그래프기계학습 가속화를 지원하는 방법.






According to claim 1,
The first area is a fixed area and includes hardware logic used when executing a graph storage unit, a graph execution unit, and an accelerator generation unit.






KR1020220133576A 2022-01-10 2022-10-17 Computational SSDs accelerating deep learning service on large-scale graphs KR20230108206A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US18/151,645 US20230221876A1 (en) 2022-01-10 2023-01-09 Computational ssd accelerating deep learning service on large-scale graphs

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20220003627 2022-01-10
KR1020220003627 2022-01-10

Publications (1)

Publication Number Publication Date
KR20230108206A true KR20230108206A (en) 2023-07-18

Family

ID=87423585

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220133576A KR20230108206A (en) 2022-01-10 2022-10-17 Computational SSDs accelerating deep learning service on large-scale graphs

Country Status (1)

Country Link
KR (1) KR20230108206A (en)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11232156B1 (en) 2020-07-28 2022-01-25 Fujitsu Limited Seed expansion in social network using graph neural network

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11232156B1 (en) 2020-07-28 2022-01-25 Fujitsu Limited Seed expansion in social network using graph neural network

Similar Documents

Publication Publication Date Title
JP6875557B2 (en) Methods and devices for writing service data to the blockchain system
US10810179B2 (en) Distributed graph database
JP6349395B2 (en) Call path finder
US11630864B2 (en) Vectorized queues for shortest-path graph searches
CN106682215B (en) Data processing method and management node
JP7088897B2 (en) Data access methods, data access devices, equipment and storage media
TW201911034A (en) Counting element in the data item in the data processing device
US20100057647A1 (en) Accommodating learned clauses in reconfigurable hardware accelerator for boolean satisfiability solver
US11573793B2 (en) Lazy push strategies for vectorized D-Heaps
JP2011060278A (en) Autonomous subsystem architecture
CN114175640B (en) Vectorized hash table
CN108875914B (en) Method and device for preprocessing and post-processing neural network data
CN114416310A (en) Multiprocessor load balancing method, computing device and storage medium
CN110352410B (en) Tracking access patterns of index nodes and pre-fetching index nodes
CN114327917A (en) Memory management method, computing device and readable storage medium
Demaine et al. Fine-grained I/O complexity via reductions: New lower bounds, faster algorithms, and a time hierarchy
US11030714B2 (en) Wide key hash table for a graphics processing unit
US11138291B2 (en) Assymetric allocation of SRAM and data layout for efficient matrix multiplication
Osama et al. Certified SAT solving with GPU accelerated inprocessing
Sun et al. GraphMP: I/O-efficient big graph analytics on a single commodity machine
CN111580969A (en) A-star searching method based on multiple GPUs
KR20230108206A (en) Computational SSDs accelerating deep learning service on large-scale graphs
US20230221876A1 (en) Computational ssd accelerating deep learning service on large-scale graphs
CN110955380B (en) Access data generation method, storage medium, computer device and apparatus
Sulyok et al. Improving locality of unstructured mesh algorithms on GPUs