다중 GPU를 이용한 대규모 텐서 데이터 분해 방법 및 장치
Method and Apparatus for Large-Scale Tensor Decomposition Using Multiple GPUs
특허 요약
일 실시예에 따른 컴퓨팅 장치가 다중 GPU를 이용하여 대규모 텐서를 분해하는 방법은, 입력 텐서의 특성을 파악한 결과와 하드웨어 자원을 고려하여 텐서 분할의 개수를 결정하는 단계; 상기 입력 텐서를 상기 결정된 개수에 맞추어 다수의 겹치지 않는 텐서 블록으로 분할하여 연산 단위를 작게 하는 단계; 상기 분할된 텐서 블록에 대한 텐서 분해 연산을 수행하기 위하여, 다수의 그래픽 처리 장치(GPU)에 상기 텐서 블록 및 요인 행렬을 복사하는 단계; 상기 다수의 GPU가 텐서 분해로 얻은 코어텐서를 공유한 상태에서 상기 텐서 블록 및 요인 행렬에 대하여 텐서 분해 연산을 수행하도록 제어하는 단계; 상기 텐서 분해 연산의 결과로 얻어진 중간 결과를 이용하여 상기 요인 행렬을 갱신하는 단계; 및 상기 코어텐서와 요인 행렬로 상기 입력 텐서를 복원하여 그 오차율을 계산하는 단계;를 포함한다.
청구항
번호청구항
1

컴퓨팅 장치가 다중 GPU를 이용하여 대규모 텐서를 분해하는 방법으로서,입력 텐서의 특성을 파악한 결과와 하드웨어 자원을 고려하여 텐서 분할의 개수를 결정하는 단계;상기 입력 텐서를 상기 결정된 개수에 맞추어 다수의 겹치지 않는 텐서 블록으로 분할하여 연산 단위를 작게 하는 단계;상기 분할된 텐서 블록에 대한 텐서 분해 연산을 수행하기 위하여, 다수의 그래픽 처리 장치(Graphics Processing Unit, GPU)에 상기 텐서 블록 및 요인 행렬(factor matrix)을 복사하는 단계;상기 다수의 GPU가 텐서 분해로 얻은 코어텐서를 공유한 상태에서 상기 텐서 블록 및 요인 행렬에 대하여 텐서 분해 연산을 수행하도록 제어하는 단계;상기 텐서 분해 연산의 결과로 얻어진 중간 결과를 이용하여 상기 요인 행렬을 갱신하는 단계; 및상기 코어텐서와 요인 행렬로 상기 입력 텐서를 복원하여 그 오차율을 계산하는 단계;를 포함하는다중 GPU를 이용한 대규모 텐서 분해 방법.

2

제 1 항에 있어서,상기 텐서 분할의 개수를 결정하는 단계는, 비용 기반 분석(cost-based analysis)에 따라 상기 입력 텐서의 크기, 희소성 및 차원 중 적어도 하나의 특성에 기초하여 상기 개수를 결정하는다중 GPU를 이용한 대규모 텐서 분해 방법.

3

제 1 항에 있어서,상기 요인 행렬을 갱신하는 단계는, 상기 다수의 GPU에 의한 GPU 커널 함수의 중간 결과가 비동기적으로 주 기억 장치에 복사되고, 상기 주 기억 장치에 복사된 중간 결과를 이용하여 행 기반(row-wise)으로 상기 요인 행렬을 갱신하는다중 GPU를 이용한 대규모 텐서 분해 방법.

4

제 1 항에 있어서,상기 다수의 GPU에 동일한 수의 텐서 블록을 분배하여 작업 부하 불균형을 완화하고, 비동기 스트림(asynchronous stream)을 이용하여 상기 텐서 블록의 연산을 병렬로 수행하며, GPU 간의 연산 독립성을 제공하는다중 GPU를 이용한 대규모 텐서 분해 방법.

5

적어도 하나의 명령어를 포함하는 컴퓨터 프로그램이 저장된 저장 장치; 및상기 명령어를 실행하여 상기 컴퓨터 프로그램을 로드하는 중앙 처리 장치; 및상기 중앙 처리 장치의 제어에 따라 그래픽을 처리하는 다수의 그래픽 처리 장치(GPU);를 포함하고,상기 중앙 처리 장치는 상기 명령어를 실행함으로써,입력 텐서의 특성을 파악한 결과와 하드웨어 자원을 고려하여 텐서 분할의 개수를 결정하고;상기 입력 텐서를 상기 결정된 개수에 맞추어 다수의 겹치지 않는 텐서 블록으로 분할하여 연산 단위를 작게 하며;상기 분할된 텐서 블록에 대한 텐서 분해 연산을 수행하기 위하여, 다수의 GPU에 상기 텐서 블록 및 요인 행렬을 복사하고;상기 다수의 GPU가 텐서 분해로 얻은 코어텐서를 공유한 상태에서 상기 텐서 블록 및 요인 행렬에 대하여 텐서 분해 연산을 수행하도록 제어하며;상기 텐서 분해 연산의 결과로 얻어진 중간 결과를 이용하여 상기 요인 행렬을 갱신하고;상기 코어텐서와 요인 행렬로 상기 입력 텐서를 복원하여 그 오차율을 계산하는다중 GPU를 이용한 대규모 텐서 분해 장치.

6

제 5 항에 있어서,상기 중앙 처리 장치는, 상기 텐서 분할의 개수를 결정할 때에, 비용 기반 분석에 따라 상기 입력 텐서의 크기, 희소성 및 차원 중 적어도 하나의 특성에 기초하여 상기 개수를 결정하는다중 GPU를 이용한 대규모 텐서 분해 장치.

7

제 5 항에 있어서,상기 중앙 처리 장치는, 상기 요인 행렬을 갱신할 때에, 상기 다수의 GPU에 의한 GPU 커널 함수의 중간 결과가 비동기적으로 주 기억 장치에 복사되고, 상기 주 기억 장치에 복사된 중간 결과를 이용하여 행 기반으로 상기 요인 행렬을 갱신하는다중 GPU를 이용한 대규모 텐서 분해 장치.

8

제 5 항에 있어서,상기 중앙 처리 장치는, 상기 다수의 GPU에 동일한 수의 텐서 블록을 분배하여 작업 부하 불균형을 완화하고, 비동기 스트림을 이용하여 상기 텐서 블록의 연산을 병렬로 수행하며, GPU 간의 연산 독립성을 제공하는다중 GPU를 이용한 대규모 텐서 분해 장치.

9

컴퓨터 프로그램을 저장하고 있는 컴퓨터 판독 가능 기록매체로서,상기 컴퓨터 프로그램은, 프로세서에 의해 실행될 경우,입력 텐서의 특성을 파악한 결과와 하드웨어 자원을 고려하여 텐서 분할의 개수를 결정하는 단계;상기 입력 텐서를 상기 결정된 개수에 맞추어 다수의 겹치지 않는 텐서 블록으로 분할하여 연산 단위를 작게 하는 단계;상기 분할된 텐서 블록에 대한 텐서 분해 연산을 수행하기 위하여, 다수의 그래픽 처리 장치(GPU)에 상기 텐서 블록 및 요인 행렬을 복사하는 단계;상기 다수의 GPU가 텐서 분해로 얻은 코어텐서를 공유한 상태에서 상기 텐서 블록 및 요인 행렬에 대하여 텐서 분해 연산을 수행하도록 제어하는 단계;상기 텐서 분해 연산의 결과로 얻어진 중간 결과를 이용하여 상기 요인 행렬을 갱신하는 단계; 및상기 코어텐서와 요인 행렬로 상기 입력 텐서를 복원하여 그 오차율을 계산하는 단계;를 포함하는 방법을 상기 프로세서가 수행하도록 하기 위한 명령어를 포함하는컴퓨터 프로그램을 저장하고 있는 컴퓨터 판독 가능한 기록매체.

10

컴퓨터 판독 가능한 기록매체에 저장되어 있는 컴퓨터 프로그램으로서,상기 컴퓨터 프로그램은, 프로세서에 의해 실행될 경우,입력 텐서의 특성을 파악한 결과와 하드웨어 자원을 고려하여 텐서 분할의 개수를 결정하는 단계;상기 입력 텐서를 상기 결정된 개수에 맞추어 다수의 겹치지 않는 텐서 블록으로 분할하여 연산 단위를 작게 하는 단계;상기 분할된 텐서 블록에 대한 텐서 분해 연산을 수행하기 위하여, 다수의 그래픽 처리 장치(GPU)에 상기 텐서 블록 및 요인 행렬을 복사하는 단계;상기 다수의 GPU가 텐서 분해로 얻은 코어텐서를 공유한 상태에서 상기 텐서 블록 및 요인 행렬에 대하여 텐서 분해 연산을 수행하도록 제어하는 단계;상기 텐서 분해 연산의 결과로 얻어진 중간 결과를 이용하여 상기 요인 행렬을 갱신하는 단계; 및상기 코어텐서와 요인 행렬로 상기 입력 텐서를 복원하여 그 오차율을 계산하는 단계;를 포함하는 방법을 상기 프로세서가 수행하도록 하기 위한 명령어를 포함하는 방법을 상기 프로세서가 수행하도록 하기 위한 명령어를 포함하는컴퓨터 판독 가능한 기록매체에 저장되어 있는 컴퓨터 프로그램.