본문 바로가기 사이드메뉴 바로가기 주메뉴 바로가기

주메뉴영역

주메뉴영역

혁신으로 세상을 바꾸는 융복합 대학, DIGIST
Innovative University Changing the World through Convergence
이 페이지를 SNS로 퍼가기

Research

기존 데이터 처리 기술 한계를 넘어서는 새로운 기술 개발

  • 조회. 532
  • 등록일. 2019.07.04
  • 작성자. 홍보팀

기존 데이터 처리 기술 한계를 넘어서는 새로운 기술 개발
- 기존 기술보다 최대 14배 빠르게, 100배 더 많은 데이터 분석 가능
- 향후 빅데이터 기반 기계학습 및 다양한 산업분야에 활용이 기대돼

△DGIST 정보통신융합전공 김민수 교수(좌측 위), 남윤민 박사과정생(우측 위), 한동형 박사과정생(우측 아래)

 

 기존의 데이터 처리 기술과는 다른 방식으로 데이터를 분석하는 기술을 DGIST의 연구진이 개발했다. 기존 기술이 갖고 있던 한계를 극복하고 더 많은 데이터를 더 빠르게 처리할 수 있게 돼 향후 그 활용이 기대된다.

 DGIST(총장 국양)는 정보통신융합전공 김민수 교수팀이 기존 기술들보다 최대 14배나 더 빠르고, 100배 더 많은 데이터를 처리할 수 있는 ‘DistME(Distributed Matrix Engine) 기술’을 개발했다고 4일(목) 밝혔다. 향후 빅데이터 처리가 필요한 기계학습 분야나 대규모 데이터를 분석하는 산업분야에 활용될 것으로 기대가 높다.

 기계학습1) 및 과학기술 분야 등 사회 여러 분야에서 널리 사용되는 데이터 형태는 수(數)들을 행과 열로 표현하는 ‘행렬’ 데이터이다. 이를 분석하는 수많은 기술 중에서도 ‘SystemML’과 ‘ScaLAPACK’이 가장 뛰어난 기술로 평가받는다.

 하지만 최근 데이터 규모가 증가하며 기존 기술의 처리 능력도 한계에 다다랐다. 특히 데이터 처리에 필수적인 곱셈 연산의 경우, 기존의 방식들로는 빅데이터와 같은 큰 규모의 데이터는 처리가 힘들다. 이는 기존 곱셈 연산법들은 유동적인 분석·처리가 힘들고, 데이터 처리 시 많은 양의 네트워크 데이터 전송이 필요하기 때문이다.

 이에 김민수 교수팀은 기존과 다른 행렬 곱셈 연산법을 고안했다. ‘CuboidMM’이라 불리는 연산법은 정보를 3차원의 정육면체로 구성해 처리한다. 기존 곱셈 연산법들은 유동적인 적용이 불가능했지만, CuboidMM은 상황별 최적의 기법을 유연하게 적용해 연산을 수행한다. 추가적으로, 김민수 교수팀은 GPU(Grpahic Processing Unit)를 결합해 정보를 처리하는 법을 고안, 곱셈 연산 성능을 비약적으로 향상시켰다.

 김민수 교수팀이 개발한 DistME 기술은 CuboidMM을 GPU와 결합해 처리속도를 향상시킨 것으로, ScaLAPACK과 SystemML보다 각각 6.5배, 14배 더 빠르고 SystemML보다 100배 이상 더 큰 행렬 데이터 분석이 가능하다. 따라서 향후 온라인 쇼핑몰, SNS를 포함한 큰 규모의 데이터를 처리가 필요한 여러 분야에서 기계학습을 적용할 수 있는 새로운 가능성을 열 것으로 보인다.

 DGIST 정보통신융합전공 김민수 교수는 “최근 세계적으로 각광받는 기계학습 기술은 행렬형태의 빅데이터 분석 속도와 분석 처리 규모면에서 한계가 있었다”며 “이번에 개발한 정보처리 기술은 그 한계를 극복할 수 있는 기술로, 기계학습 뿐만 아니라 광범위한 과학기술 데이터 분석 응용에 유용하게 활용될 것으로 기대된다”고 말했다.

 한편, 이번 연구 결과는 DGIST 정보통신융합전공 한동형 박사과정생이 제1저자로 참여했으며, 네덜란드 암스테르담에서 열린 데이터베이스 분야의 세계 최고 권위 학술대회인 ACM SIGMOD 2019에 7월 3일(수) 발표됐다.

1) 기계학습(Machine Learning): 컴퓨터 프로그램이 데이터와 처리 경험을 이용한 학습을 통해 정보 처리 능력을 향상시키는 것. 또는 관련 연구 분야

 


  연구결과개요  

DistME : A Fast and Elastic Distributed Matrix Computation Engine using GPUs
Donghyoung Han, Yoon-Min Nam, Jihye Lee, Kyongseok Park, Hyunwoo Kim, Min-Soo Kim
(ACM SIGMOD, Published on July 3rd, 2019)

 행렬 곱 연산은 선형 시스템과 그래픽 렌더링 등과 같은 응용들뿐만 아니라 기계 학습 및 딥러닝(deep learning)과 같은 최신 응용들에서 기반이 되는 연산들 중에 하나이다. 행렬 곱 연산의 계산 복잡도는 O(n3)으로 대부분의 질의에서 행렬 곱 연산은 계산 과부하 부분이다. 빅데이터의 시대에 들어서 행렬의 크기는 폭발적으로 성장하면서 하나의 노드에서 행렬 곱 연산을 수행 할 수 없게 되었으며, 분산 행렬 곱 연산의 중요성이 더욱 강조되고 있다.
 분산 행렬 곱 연산은 하나의 노드에서 처리 할 수 없는 큰 행렬들을 작은 단위인 블록으로 분할하여 다수의 노드에서 행렬 곱 연산을 수행한다. 분산 행렬 곱은 크게 (1) 행렬 분할 단계, (2) 로컬 행렬 곱 단계, (3) 행렬 누적 단계의 세 가지 단계로 구성된다. 행렬 곱 A×B=C 일 때, 행렬 분할 단계는 분산 행렬 곱을 수행하기 위해서 입력 행렬의 블록들을 노드들에게 분할 기법들에 따라서 분할하는 단계이다. 로컬 행렬 곱 단계는 분할 된 블록들을 각 노드에서 행렬 곱 연산을 수행하는 단계이다. 그리고 마지막 행렬 누적 단계는 로컬 행렬 곱 단계에서 발생한 중간 블록들에 대해서 결과 행렬의 블록으로 만들기 위해서 누적 합 연산을 수행하는 단계이다.
 본 기술 이전 SystemML, DMac, MatFast 등과 같은 기존의 시스템에서 사용되는 BMM, CPMM, RMM 등의 분산 행렬 곱 기술들을 사용했다. BMM은 하나의 행렬을 모든 노드들에게 복제하여 곱 연산을 수행한다. CPMM은 입력 행렬들의 벡터들에 대한 outer product들에 대한 합을 이용해서 곱 연산을 수행한다. BMM과 CPMM은 각각 행렬 분할 단계와 행렬 누적 단계에서 네트워크 통신비용이 발생하여, 하나의 노드는 행렬 곱에 사용되는 A, B, C들 중 하나의 모든 블록에 대한 공간이 필요하다는 단점이 있다. RMM은 가능한 모든 블록들 간의 행렬 곱을 각각 수행하기 위해서 두 입력 행렬들을 분할 복제하여 행렬 곱 연산을 수행한다. RMM의 경우 하나의 노드가 행렬의 모든 블록을 가질 필요는 없지만 BMM과 CPMM에 비해 더 많은 네트워크 비용이 발생하는 단점이 있다. 특히, BMM, CPMM, RMM의 분산 행렬 곱 기술들은 행렬 분할 단계에서 엄격한 기준 때문에 많은 네트워크 통신비용이 발생한다. 또한, 기존의 시스템들은 행렬 곱 연산과 같이 계산 비용이 높은 연산들에 유리한 GPU와 같은 현대 하드웨어를 사용하지 않는다.
 본 연구진이 제안한 DistME의 CuboidMM 기술은 네트워크 통신비용을 최소화하면서 노드의 사용 가능한 자원(메모리 및 GPU)의 활용을 최대화하여 분산 행렬 곱 연산의 성능을 크게 향상시킨다. CuboidMM 기술은 행렬 곱 연산을 3차원 형태의 공간으로써 표현하여 해당 공간을 cuboid 형태의 작은 단위로 분할하여 분산 행렬 곱 연산을 수행한다. CuboidMM에서 사용하는 분할 기법은 기존의 기술들을 일반화 하는 방법으로써 두 행렬의 곱에서 발생할 수 있는 모든 분할할 기법들을 나타낼 수 있다. 이 때문에 CuboidMM 기술은 기존의 기술들에서와 같이 엄격한 기준으로 행렬을 분할하는 것 대신 유연하게 가장 최적의 분할 기법을 자동으로 찾아 연산을 수행한다.
 또한, CuboidMM 기술은 분산 행렬 곱 단계 중 로컬 행렬 곱 단계에서 GPU의 높은 계산 성능을 활용해 행렬 곱 연산의 계산 과부화를 해소하였다. 하지만, GPU는 높은 계산 성능에 비해 작은 메모리 크기와 노드와 GPU사이의 빈번한 데이터 이동 때문에 높은 성능 개선을 기대하기 힘들다. 이에 CuboidMM 기술은 GPU 메모리 크기에 알맞게 cuboid를 GPU 메모리 크기에 최대한 알맞으면서 노드와 GPU 사이에 데이터 이동을 최소화 할 수 있도록 subcuboid로 분할한다. 그리고 subcuboid들은 GPU 연산을 수행하는 동안 동시에 데이터 이동을 할 수 있도록 GPU stream 기술을 활용하여 GPU 내에서 계산되므로 CuboidMM 기술은 GPU의 높은 계산 성능을 최대한 활용 할 수 있게 된다.
 CuboidMM 기술의 바탕으로 본 연구진은 세계적으로 가장 많이 사용되는 Spark 프레임워크을 활용하여 대규모 행렬 계산 시스템인 DistME 시스템을 구현 하였다. DistME는 위 기술들을 모두 적절히 활용하여 기계 학습과 같은 질의 처리 시 수행되는 분산 행렬 곱 연산의 계산 성능을 매우 개선시켰으며 네트워크 I/O 비용을 상당히 줄였다. 따라서 동일한 질의 처리 환경에서 기존 시스템과 비교해 획기적으로 질의 처리 비용을 줄이면서 동시에 고속으로 질의를 처리 할 수 있다.


  연구결과문답  


Q. 이번 성과 무엇이 다른가?
기존의 시스템에서 사용되는 분산 행렬 곱 기술들은 행렬들의 특성을 고려하지 않고 엄격한 기준의 행렬 분할 단계를 활용하기 때문에 많은 네트워크 통신비용이 발생하였으며 이론적으로 계산 성능이 우수한 GPU를 계산 성능을 향상시키기 위해서 활용하지 못하였다. 본 연구진이 개발한 CuboidMM 기술은 행렬의 특성과 클러스터의 자원 등을 활용하여 최적의 분할 방법을 찾아 낮은 네트워크 통신비용이 발생하며 더욱이 GPU의 높은 계산 성능을 활용하여 더욱 빠른 질의 처리 성능을 보인다.

Q. 어디에 쓸 수 있나?
대규모 행렬 곱 연산이 요구되는 대규모 분산 행렬 연산 시스템에 적용될 수 있다. 데이터베이스, 기계 학습, 헬스케어, 음악, 게임등과 같이 매우 다양한 과학 기술 응용에 활용 할 수 있다. 

Q. 실용화까지 필요한 시간은?
약 1년 정도의 시간이 필요할 것으로 생각된다.

Q. 실용화를 위한 과제는?
행렬 곱 연산뿐만 아니라 다양한 연산에 대하여 GPU 처리를 위한 연구 개발이 필요하다. 1년 이내로 완료될 것으로 예상한다.

Q. 연구를 시작한 계기는?
2016년 GPU를 기반으로 수십 억 개 이상의 간선들을 가진 대규모 그래프 데이터를 세계 최고 성능으로 분석할 수 있는 그래프 처리 시스템인 GStream 2.0을 개발에 성공함으로써 GPU 기반의 빅데이터 처리 분석에 대한 원천 기술을 확보했다. 이후 산업계에서의 요구가 많은 분산 행렬 곱 기술이 높은 통신비용과 느린 속도 문제 때문에 빅데이터 분석에 제대로 적용되지 못한다는 것을 발견하고, GPU 기반의 새로운 분산 행렬 곱 연산기술 개발에 착수해 마침내 성공했다.

Q. 어떤 의미가 있는가?
분산 행렬 곱 연산 기술은 기계 학습과 같은 대부분의 분야의 핵심 기술임에도 불구하고 높은 통신비용과 느린 속도 문제 때문에 대규모 행렬에 대해 제대로 적용되지 못하고 있었는데, DistME 기술을 통해 비로소 다양한 분야에서 대규모 행렬에 대한 분석이 가능해졌다는데 의미가 있다. 이러한 장점으로 인해 데이터베이스 분야 최고 권위의 학술대회인 ACM SIGMOD 2019에 게재됨으로써 세계적 수준의 이론 및 기술임을 인정받았다.

Q. 향후 목표는?
DistME 기술은 행렬 곱 연산이 필요한 수많은 분야에 적용될 수 있기 때문에, 이를 기반으로 주요 과학 분야의 데이터 분석 기술 및 성능 향상을 이끌 수 있는 이론 및 기술 개발이 주요한 연구 목표이다.

 


  그림 설명  

[그림] CuboidMM를 통한 3차원 데이터 곱셈 모식도(a)와 GPU를 이용한 데이터 처리연산 모식도(b)

 

 [그림]은 CuboidMM이 분산 환경에서 3차원 공간은 cuboid들로 분할해 분산 행렬 곱을 수행하는 과정(a)과 노드 환경에서 cuboid를 subcuboid들로 분할해 GPU에서 행렬 곱을 수행하는 과정(b)을 보여준다. 
 [그림]의 (a)와 같이 행렬 곱을 위해서 8개의 cuboid들로 나눠지는 것으로 결정됐다면, 행렬 분할 단계(matrix repartition)에서 각 cuboid를 담당하는 노드에게 분할한다. 노드는 하나의 cuboid를 계산하는 것을 담당한다. 각 노드는 해당 cuboid에 속하는 블록들에 대한 행렬 곱을 수행(local multiplication)한 후 행렬 누적 단계(matrix aggregation)를 통해 최종 결과 행렬을 생성한다. Cuboid D0,0,0는 노드 t0에 할당되고, 그 중간 결과 블록들은 t1의 중간 결과 블록들과 함께 누적 합 연산에 의해서 결과 행렬의 블록이 된다.
 [그림]의 (b)에서 로컬 행렬 곱 단계에서 두 노드에서 GPU를 활용하기 위해 cuboid를 두 개의 subcuboid들로 분할하여 각 subcuboid를 GPU에서 연산하는 것을 보여준다. t0에 할당된 cuboid D0,0,0는 두 개의 subcuboid S0,0,0과 S0,0,1로 분할된다. 이 후 S0,0,0은 GPU의 stream인 ‘iteration0’에서, S0,0,1은 ‘iteration1’에서 행렬 곱 연산을 수행한 이 후 cuboid D0,0,0의 결과인 C0을 생성한다. t1에서는 t0와 동일하게 곱 연산을 수행하여 C1을 생성한다.

 

  논문 바로보기   ☞ ACM SIGMOD

 

 

콘텐츠 담당 담당부서  :   홍보팀 ㅣ 053-785-1135