KR20230072962A - 프레임 양자화에 기반한 분산 행렬 곱 연산 방법 및 장치 - Google Patents

프레임 양자화에 기반한 분산 행렬 곱 연산 방법 및 장치 Download PDF

Info

Publication number
KR20230072962A
KR20230072962A KR1020210159700A KR20210159700A KR20230072962A KR 20230072962 A KR20230072962 A KR 20230072962A KR 1020210159700 A KR1020210159700 A KR 1020210159700A KR 20210159700 A KR20210159700 A KR 20210159700A KR 20230072962 A KR20230072962 A KR 20230072962A
Authority
KR
South Korea
Prior art keywords
matrix
encoding
frame
node
distributed
Prior art date
Application number
KR1020210159700A
Other languages
English (en)
Other versions
KR102621139B1 (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 KR1020210159700A priority Critical patent/KR102621139B1/ko
Priority to PCT/KR2021/017368 priority patent/WO2023090502A1/ko
Publication of KR20230072962A publication Critical patent/KR20230072962A/ko
Application granted granted Critical
Publication of KR102621139B1 publication Critical patent/KR102621139B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

본 발명은 프레임 양자화에 기반한 분산 행렬 곱 연산 방법 및 장치에 관한 것으로, 프레임 양자화에 기반한 부호화 컴퓨팅을 이용하여 복수의 연산 노드에서 분산 행렬 곱 연산을 수행하는 방법 및 장치를 제공한다. 이로써 고차원 행렬 곱 처리 성능이 개선된다.

Description

프레임 양자화에 기반한 분산 행렬 곱 연산 방법 및 장치{METHOD AND APPARATUS FOR DISTRIBUTED MATRIX MULTIPLICATION BAED ON FRAME QUANTIZATION}
본 발명은 프레임 양자화에 기반한 분산 행렬 곱 연산 방법 및 장치에 관한 것으로, 프레임 양자화에 기반한 부호화 컴퓨팅(code computing)을 이용하여 복수의 연산 노드에서 분산 행렬 곱 연산을 수행하는 방법 및 장치에 관한 것이다.
이하에서 기술되는 내용은 본 발명의 실시예와 관련되는 배경 정보를 제공할 목적으로 기재된 것일 뿐이고, 기술되는 내용들이 당연하게 종래기술을 구성하는 것은 아니다.
빅데이터 분석, 증강현실, 촉감통신 등 네트워크(또는 구체적으로 사물인터넷)의 지능화를 필요로 하는 고지능 어플리케이션들을 실생활에서 가능케 하기 위해서는 고차원의 행렬 연산이 필수적이다.
이와 같은 큰 부하의 연산을 단일 장치에서 수행하기는 시간이 오래 걸리기 때문에, 이를 분산해서 여러 개의 엣지 장치에 나눠서 통신을 하는 형태로 성능을 개선하는 분산 컴퓨팅 연구가 활발하다. 분산 컴퓨팅은 6G의 대표 키워드 중 하나로 제시되고 있다.
분산 컴퓨팅을 이용한 행렬 곱 연산은 각 노드에게 연산을 할당하고 연산 결과를 받는 과정에서 연산 및 통신 부하량의 정체 현상, 연산 속도, 및 정확도 면에서 한계가 있다.
분산 컴퓨팅 환경에서 고차원 행렬 곱을 효율적으로 수행할 수 있는 방법이 필요하다.
한편, 전술한 선행기술은 발명자가 본 발명의 도출을 위해 보유하고 있었거나, 본 발명의 도출 과정에서 습득한 기술 정보로서, 반드시 본 발명의 출원 전에 일반 공중에게 공개된 공지기술이라 할 수는 없다.
본 발명의 일 과제는 고차원 행렬 곱을 분산하여 효율적으로 수행할 수 있는 분산 행렬 곱 연산 방법 및 장치를 제공하는 것이다.
본 발명의 일 과제는 일부 부호화 행렬 곱 연산 결과로 원래 행렬 곱 연산 결과를 복원가능한 분산 행렬 곱 연산 방법 및 장치를 제공하는 것이다.
본 발명의 목적은 이상에서 언급한 과제에 한정되지 않으며, 언급되지 않은 본 발명의 다른 목적 및 장점들은 하기의 설명에 의해서 이해될 수 있고, 본 발명의 실시 예에 의해 보다 분명하게 이해될 것이다. 또한, 본 발명의 목적 및 장점들은 청구범위에 나타낸 수단 및 그 조합에 의해 실현될 수 있음을 알 수 있을 것이다.
본 발명의 일 실시예에 따른 분산 행렬 곱 연산 방법은 제 1 입력 행렬을 분할한 복수의 제 1 부분 행렬 및 제 2 입력 행렬을 분할한 복수의 제 2 부분 행렬을 생성하는 단계, 상기 복수의 제 1 부분 행렬 및 상기 복수의 제 2 부분 행렬을 각각 부호화하여 복수의 연산 노드의 연산 노드별 제 1 부호화 행렬 및 제 2 부호화 행렬을 생성하는 단계, 상기 연산 노드별 제 1 부호화 행렬 및 제 2 부호화 행렬을 각 연산 노드로 분배하는 단계, 상기 복수의 연산 노드의 적어도 일부로부터 상기 연산 노드별 제 1 부호화 행렬 및 제 2 부호화 행렬에 기반한 적어도 하나의 부호화 행렬 곱 결과를 획득하는 단계 및 상기 적어도 하나의 부호화 행렬 곱 결과에 기반하여 상기 제 1 입력 행렬 및 상기 제 2 입력 행렬에 대한 행렬 곱 결과를 복원하는 단계를 포함할 수 있다.
본 발명의 일 실시예에 따른 분산 행렬 곱 연산 장치는, 적어도 하나의 명령어를 저장한 메모리 및 프로세서를 포함하고, 상기 적어도 하나의 명령어는 상기 프로세서에 의하여 실행될 때 상기 프로세서로 하여금, 제 1 입력 행렬을 분할한 복수의 제 1 부분 행렬 및 제 2 입력 행렬을 분할한 복수의 제 2 부분 행렬을 생성하고, 상기 복수의 제 1 부분 행렬 및 상기 복수의 제 2 부분 행렬을 각각 부호화하여 복수의 연산 노드의 연산 노드별 제 1 부호화 행렬 및 제 2 부호화 행렬을 생성하고, 상기 연산 노드별 제 1 부호화 행렬 및 제 2 부호화 행렬을 각 연산 노드로 분배하고, 상기 복수의 연산 노드의 적어도 일부로부터 상기 연산 노드별 제 1 부호화 행렬 및 제 2 부호화 행렬에 기반한 적어도 하나의 부호화 행렬 곱 결과를 획득하고, 상기 적어도 하나의 부호화 행렬 곱 결과에 기반하여 상기 제 1 입력 행렬 및 상기 제 2 입력 행렬에 대한 행렬 곱 결과를 복원하도록 구성될 수 있다.
전술한 것 외의 다른 측면, 특징, 및 이점이 이하의 도면, 청구범위 및 발명의 상세한 설명으로부터 명확해질 것이다.
실시예에 의하면, 일부 부호화 행렬 곱 연산 결과로 원래 행렬 곱 연산 결과를 복원할 수 있다.
실시예에 의하면, 고차원 행렬 곱 연산 성능이 제고된다.
본 발명의 효과는 이상에서 언급된 것들에 한정되지 않으며, 언급되지 아니한 다른 효과들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
도 1은 실시예에 따른 분산 행렬 곱 연산 환경의 예시도이다.
도 2는 실시예에 따른 분산 행렬 곱 연산 장치의 블록도이다.
도 3은 실시예에 따른 분산 행렬 곱 연산 방법의 흐름도이다.
도 4는 예시적인 부호화 프레임 집합을 보여준다.
도 5는 실시예에 따른 분산 행렬 곱 연산을 위한 복호화 중 일 과정을 예시적으로 설명하기 위한 도면이다.
도 6은 실시예에 의한 노드 수에 따른 평균 에러 확률을 보여주는 그래프이다.
이하에서는 도면을 참조하여 본 발명을 보다 상세하게 설명한다. 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며, 여기에서 설명하는 실시 예들에 한정되지 않는다. 이하 실시 예에서는 본 발명을 명확하게 설명하기 위해서 설명과 직접적인 관계가 없는 부분을 생략하지만, 본 발명의 사상이 적용된 장치 또는 시스템을 구현함에 있어서, 이와 같이 생략된 구성이 불필요함을 의미하는 것은 아니다. 아울러, 명세서 전체를 통하여 동일 또는 유사한 구성요소에 대해서는 동일한 참조번호를 사용한다.
이하의 설명에서 제1, 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 되며, 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 또한, 이하의 설명에서 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다.
이하의 설명에서, "포함하다" 또는 "가지다" 등의 용어는 명세서 상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
부호화 컴퓨팅은 분산 컴퓨팅에서 각 노드에게 연산을 할당하고 연산 결과를 받을 때, 연산의 정확도, 속도, 연산 및 통신 부하량 등의 정체 현상을 해결하기 위해, 모든 노드로부터 연산 결과를 받지 않고도 원 연산을 복원하도록 추가적인 연산을 할당하는 방법이다.
부호화 컴퓨팅은 부호화 이론(coding theory)에 기초한 컴퓨팅 방법이다. 부호화 컴퓨팅을 이용한 분산 행렬 곱에서 전체 시스템의 성능, 즉 전체 시스템의 연산 속도, 정확도 및 부하량은 각 엣지 장치에 쪼갠 행렬들을 부호화하는 방법에 따라 달라질 수 있다.
예를 들어, 곱하고자 하는 두 행렬을 각각 m x p 부분행렬, p x n 부분행렬로 쪼개는 경우, 최소 pmn+p-1개의 엣지 장치가 있으면 원래 원하는 행렬 연산을 복구할 수 있다고 알려져 있다(Q. Yu, M. A. Maddah-Ali, and A. S. Avestimehr, “Straggler mitigation in distributed matrix multiplication: Fundamental limits and optimal coding,” IEEE Transactions on Information Theory, vol. 66, no. 3, pp. 1920-1933, 2020 참조).
본 발명에서는 프레임 양자화 이론을 기반으로 하는 부호화 컴퓨팅 방식을 이용한 분산 행렬 곱 연산 방법 및 장치를 제안한다. 본 발명의 실시예에 의하면 노드 수가 매우 적은 환경에서도 일정 수준 이하의 에러율을 보장하는 분산 행렬 곱 연산이 가능하다.
이하 도면을 참고하여 본 발명을 상세히 설명하기로 한다.
도 1은 실시예에 따른 분산 행렬 곱 연산 환경의 예시도이다.
실시예에 따른 분산 행렬 곱 연산은 복수의 연산 노드(N1, N2, N3, N4)를 포함하는 분산 처리 환경에서 실행될 수 있다. 분산 처리 환경은 분산 처리를 제어하는 중앙 노드(N0)를 포함할 수 있다. 예를 들어 중앙 노드(N0)는 복수의 연산 노드(N1, N2, N3, N4) 중 하나이거나 또는 별개의 노드일 수 있다.
중앙 노드(N0) 및 복수의 연산 노드(N1, N2, N3, N4)는 각각 도 2를 참조하여 후술할 분산 행렬 곱 연산 장치(100)의 일 예이다. 도 1에는 4 개의 연산 노드(N1, N2, N3, N4)를 도시하였으나 이는 예시적인 것이고 분산 처리 환경은 더 적은 또는 더 많은 연산 노드를 포함할 수 있다.
중앙 노드(N0)는 분산 행렬 곱 연산을 복수의 연산 노드(N1, N2, N3, N4)에게 분배하고 복수의 연산 노드(N1, N2, N3, N4)로부터 연산 결과를 수신하고 이를 종합하여 행렬 곱 연산의 결과를 제공할 수 있다.
일 예에서 중앙 노드(N0)는 복수의 연산 노드(N1, N2, N3, N4)의 적어도 일부 노드로부터 연산 결과를 수신하고 이로부터 행렬 곱 연산의 결과를 생성할 수 있다.
중앙 노드(N0)는 두 개 또는 그 이상의 입력 행렬 간의 행렬 곱을 실행하기 위하여 입력 행렬을 복수의 부분 행렬(submatrix)로 분할할 수 있다. 중앙 노드(N0)는 입력 행렬을 분할한 복수의 부분 행렬에 기반하여 입력 행렬을 부호화할 수 있다.
일 예에서 중앙 노드(N0)는 입력 행렬을 부호화 파라미터를 계수(coefficient)로 하는 복수의 부분 행렬의 선형 합으로 매핑하는 선형 함수(linear mapping)를 이용하여 입력 행렬을 부호화할 수 있다.
예를 들어 두 개의 입력 행렬(A, B)에 대하여 중앙 노드(N0)는 입력 행렬(A, B)을 부호화하여 얻은 부호화 행렬(
Figure pat00001
)을 연산 노드(Nw)에게 전송한다. 예를 들어 중앙 노드(N0)는 연산 노드(N1)에게 부호화 행렬(
Figure pat00002
)을 전송한다.
복수의 연산 노드(N1, N2, N3, N4)는 각각 부호화 행렬 간 곱셈을 실행하고 그 결과를 중앙 노드(N0)로 전송한다. 중앙 노드(N0)는 복수의 연산 노드(N1, N2, N3, N4)의 적어도 일부 노드로부터 부호화 행렬 곱 결과를 수신한다.
중앙 노드(N0)는 수신한 부호화 행렬 곱 결과로부터 입력 행렬에 대한 행렬 곱 결과, 즉 원(original) 연산 결과를 복원한다.
일 예에서 중앙 노드(N0)는 입력 행렬의 복호화를 위한 프레임을 이용하여 수신한 부호화 행렬 곱으로부터 원 연산 결과를 복원할 수 있다.
도 2는 실시예에 따른 분산 행렬 곱 연산 장치의 블록도이다.
실시예에 따른 분산 행렬 곱 연산 장치(100)는 프로세서(110) 및 메모리(120)를 포함할 수 있다.
실시예에 따른 분산 행렬 곱 연산 장치(100)는 프로세서(110) 및 메모리(120)를 포함한다.
프로세서(110)는 일종의 중앙처리장치로서, 메모리(120)에 저장된 하나 이상의 명령어를 실행하여 실시예에 따른 분산 행렬 곱 연산 방법을 실행할 수 있다. 프로세서(110)는 데이터에 대한 연산을 처리할 수 있는 모든 종류의 장치를 포함할 수 있다.
프로세서(110)는 예를 들어 프로그램 내에 포함된 코드 또는 명령으로 표현된 기능을 수행하기 위해 물리적으로 구조화된 회로를 갖는, 하드웨어에 내장된 데이터 처리 장치를 의미할 수 있다. 이와 같이 하드웨어에 내장된 데이터 처리 장치의 일 예로서, 마이크로프로세서(microprocessor), 중앙처리장치(central processing unit; CPU), 프로세서 코어(processor core), 멀티프로세서(multiprocessor), ASIC(application-specific integrated circuit), FPGA(field programmable gate array) 및 그래픽 처리 유닛(Graphics Processing Unit; GPU) 등의 처리 장치를 망라할 수 있으나, 이에 한정되는 것은 아니다.
프로세서(110)는 하나 이상의 프로세서를 포함할 수 있다. 예를 들어 프로세서(110)는 CPU 및 GPU를 포함할 수 있다. 예를 들어 프로세서(110)는 복수 개의 GPU를 포함할 수 있다. 프로세서(110)는 적어도 하나의 코어를 포함할 수 있다.
메모리(120)는 분산 행렬 곱 연산 장치(100)가 실시예에 따른 병렬 LU 분해 제공 방법을 실행하기 위한 명령 등을 저장할 수 있다. 메모리(120)는 실시예에 따른 분산 행렬 곱 연산 방법을 구현한 하나 이상의 명령을 생성 및 실행하는 실행가능한(executable) 프로그램을 저장할 수 있다.
프로세서(110)는 메모리(120)에 저장된 프로그램 및 명령어들에 기반하여 실시예에 따른 분산 행렬 곱 연산 방법을 실행할 수 있다.
메모리(120)는 내장 메모리 및/또는 외장 메모리를 포함할 수 있으며, DRAM, SRAM, 또는 SDRAM 등과 같은 휘발성 메모리, OTPROM(one time programmable ROM), PROM, EPROM, EEPROM, mask ROM, flash ROM, NAND 플래시 메모리, 또는 NOR 플래시 메모리 등과 같은 비휘발성 메모리, SSD, CF(compact flash) 카드, SD 카드, Micro-SD 카드, Mini-SD 카드, Xd 카드, 또는 메모리 스틱(memory stick) 등과 같은 플래시 드라이브, 또는 HDD와 같은 저장 장치를 포함할 수 있다. 메모리(120)는 자기 저장 매체(magnetic storage media) 또는 플래시 저장 매체(flash storage media)를 포함할 수 있으나, 이에 한정되는 것은 아니다.
추가적으로 분산 행렬 곱 연산 장치(100)는 통신부(130)를 더 포함할 수 있다.
통신부(130)는 유무선 통신 기술을 이용하여 분산 행렬 곱 연산 장치(100)와 추가적인 분산 행렬 곱 연산 장치(100)를 비롯한 외부 장치 간에 송수신 신호를 패킷 데이터 행태로 제공하는 통신 인터페이스를 제공한다. 또한 통신부(130)는 다른 네트워크 장치와 유무선 연결을 통해 제어 신호 또는 데이터 신호 등을 송수신하기 위해 필요한 하드웨어 및 소프트웨어를 포함한 장치일 수 있다.
통신부(130)는 복수의 연산 노드(100)로 구성된 컴퓨터 클러스터를 위한 고속 통신 인터페이스를 제공할 수 있다. 예를 들어 통신부(130)는 메시지 전달 인터페이스(Message Passing Interface; MPI), 병렬 가상 머신(Parallel Virtual Machine; PVM), MPICH, Open MPI 등을 제공할 수 있다.
분산 행렬 곱 연산 장치(100)는 실시예에 따른 분산 행렬 곱 연산 방법을 실행한다. 이를 위하여, 메모리(120)에 저장된 적어도 하나의 명령어는 프로세서(110)에 의하여 실행될 때 프로세서(110)로 하여금, 제 1 입력 행렬을 분할한 복수의 제 1 부분 행렬 및 제 2 입력 행렬을 분할한 복수의 제 2 부분 행렬을 생성하고, 복수의 제 1 부분 행렬 및 복수의 제 2 부분 행렬을 각각 부호화하여 복수의 연산 노드의 연산 노드별 제 1 부호화 행렬 및 제 2 부호화 행렬을 생성하고, 연산 노드별 제 1 부호화 행렬 및 제 2 부호화 행렬을 각 연산 노드로 분배하고, 복수의 연산 노드의 적어도 일부로부터 연산 노드별 제 1 부호화 행렬 및 제 2 부호화 행렬에 기반한 적어도 하나의 부호화 행렬 곱 결과를 획득하고, 적어도 하나의 부호화 행렬 곱 결과에 기반하여 제 1 입력 행렬 및 제 2 입력 행렬에 대한 행렬 곱 결과를 복원하도록 구성될 수 있다.
메모리(120)에 저장된 적어도 하나의 명령어는 프로세서(110)에 의해 실행될 때 프로세서(110)로 하여금, 연산 노드별 제 1 부호화 행렬 및 제 2 부호화 행렬을 생성하기 위하여, 각 연산 노드의 제 1 부호화 프레임 및 복수의 제 1 부분 행렬에 기반하여 각 연산 노드의 제 1 부호화 행렬을 생성하고, 각 연산 노드의 제 2 부호화 프레임 및 복수의 제 2 부분 행렬에 기반하여 각 연산 노드의 제 2 부호화 행렬을 생성하도록 구성될 수 있다.
일 예에서, 제 1 부호화 프레임은 제 1 입력 행렬의 분할 차수에 따른 제 1 행렬 공간(vector space)의 등각 프레임(equiangular tight frame)이고, 제 2 부호화 프레임은 제 2 입력 행렬의 분할 차수에 따른 제 2 행렬 공간의 등각 프레임으로 구성될 수 있다.
일 예에서, 제 1 부호화 프레임은 각각의 제 1 부분 행렬에 대응하는 제 1 부호화 파라미터를 행렬성분으로 하는 행렬이고, 제 2 부호화 프레임은 각각의 제 2 부분 행렬에 대응하는 제 2 부호화 파라미터를 행렬성분으로 하는 행렬로 구성될 수 있다.
메모리(120)에 저장된 적어도 하나의 명령어는 프로세서(110)에 의해 실행될 때 프로세서(110)로 하여금, 연산 노드별 제 1 부호화 행렬 및 제 2 부호화 행렬을 생성하기 위하여, 제 1 부호화 파라미터 및 제 1 부호화 파라미터에 대응하는 제 1 부분 행렬에 기반한 선형 함수에 의해 제 1 부호화 행렬을 생성하고, 제 2 부호화 파라미터 및 제 2 부호화 파라미터에 대응하는 제 2 부분 행렬에 기반한 선형 함수에 의해 제 2 부호화 행렬을 생성하도록 구성될 수 있다.
메모리(120)에 저장된 적어도 하나의 명령어는 프로세서(110)에 의해 실행될 때 프로세서(110)로 하여금, 원 행렬 곱 결과를 복원하기 위하여, 부호화 행렬 곱 결과를 연산한 연산 노드의 노드 인덱스 집합에 기반하여 제 1 입력 행렬에 대한 제 1 복호화 프레임 및 제 2 입력 행렬에 대한 제 2 복호화 프레임을 결정하고, 제 1 복호화 프레임, 제 2 복호화 프레임 및 부호화 행렬 곱 결과에 기반하여 원 행렬 곱 결과를 결정하도록 구성될 수 있다.
메모리(120)에 저장된 적어도 하나의 명령어는 프로세서(110)에 의해 실행될 때 프로세서(110)로 하여금, 제 1 입력 행렬에 대한 제 1 복호화 프레임 및 제 2 입력 행렬에 대한 제 2 복호화 프레임을 결정하기 위하여, 부호화 행렬 곱 결과를 연산한 연산 노드의 노드 인덱스 집합을 생성하고, 제 1 프레임 인덱스 집합 및 제 2 프레임 인덱스 집합의 직접 곱이 노드 인덱스 집합의 부분 집합이 되는 제 1 프레임 인덱스 집합 및 제 2 프레임 인덱스 집합을 결정하고, 제 1 프레임 인덱스 집합 및 제 2 프레임 인덱스 집합에 기반하여 제 1 복호화 프레임 및 제 2 복호화 프레임을 결정하도록 구성될 수 있다.
실시예에 따른 분산 행렬 곱 연산 방법을 살펴보기에 앞서 본 발명을 개략적으로 설명한다.
실시예에 따른 분산 행렬 곱 연산 시스템은 예를 들어 분산 행렬 곱 연산 장치(100), 즉 단일 중앙 장치(또는 노드)에서 두 행렬
Figure pat00003
Figure pat00004
를 곱하여 연산 결과인
Figure pat00005
를 제공하는 엣지 프로세싱 시스템일 수 있다.
이를 위하여 분산 행렬 곱 연산 장치(100), 즉 중앙 노드는 행렬 AT와 B를 분할한 부분 행렬들을 각각 부호화하고 N개의 연산 노드(즉, 엣지 노드)에게 나눠 연산을 수행하도록 한 다음에 결과를 받아서 복원한다.
보다 구체적으로, 분산 행렬 곱 장치(100)는 전체 행렬 AT와 B을 다음과 같은 pm 개와 pn 개의 부분 행렬(submatrix)로 분할한다.
Figure pat00006
여기서,
Figure pat00007
이다. 이는 도 3을 참조하여 단계(S1)에 대응한다.
다음으로 분산 행렬 곱 연산 장치(100)는 부분 행렬을 부호화한다.
Figure pat00008
여기서,
Figure pat00009
는 각각 부호화 파라미터로서, 연산 노드마다 다르며, 원 결과인 C를 효과적으로 복원할 수 있도록 분산 행렬 곱 연산 장치(100)에서 결정한다. 이에 대하여는 도 3을 참조하여 단계(S2)에서 후술한다.
후속하여, 분산 행렬 곱 연산 장치(100)는 ω번째 연산 노드에
Figure pat00010
를 전송한다 (ω는 N 이하의 자연수). 이는 도 3을 참조하여 단계(S3)에서 살펴본다.
각 연산 노드는 분산 행렬 곱 연산 장치(100)로부터 수신한 부분 행렬을 서로 곱한다. 즉, ω번째 연산 노드는
Figure pat00011
를 곱한다.
분산 행렬 곱 연산 장치(100)는 연산 노드의 연산 결과인
Figure pat00012
를 N' < N 개의 연산 노드로부터 수신한다. 이는 도 3을 참조하여 단계(S4)에서 살펴본다.
분산 행렬 곱 연산 장치(100)는 다음의 단계에 따라 원 결과
Figure pat00013
를 복원한다. 분산 행렬 곱 연산 장치(100)가 연산 결과
Figure pat00014
를 수신한 연산 노드의 인덱스 집합을
Figure pat00015
로 표기한다.
Figure pat00016
의 i번째 행, j번째 열의 성분을 연결한 형태(concatenated version)의 벡터(vector)를
Figure pat00017
로 표기한다. 즉, 다음과 같은 수학식으로 표현한다.
Figure pat00018
여기서
Figure pat00019
는 해당 행렬의 i번째 행, j번째 열의 성분을 나타낸다.
각 연산 노드에서 연산할 부분행렬 곱인
Figure pat00020
꼴을 다음과 같은 열 벡터(column vector)로 정의한다.
Figure pat00021
분산 행렬 곱 연산 장치(100)는 자신의 부호화 과정 및 부호화 파라미터를 알고 있기 때문에
Figure pat00022
Figure pat00023
사이의 관계에 대한 수학식은 다음과 같다.
Figure pat00024
따라서, 분산 행렬 곱 연산 장치(100)는 P-1(즉, P의 역행렬)를
Figure pat00025
에 곱하여
Figure pat00026
, 즉
Figure pat00027
를 얻을 수 있고, 이로부터 원래 구하고자 한 행렬 곱 결과인
Figure pat00028
를 구할 수 있다. 이와 같은 복원 과정에 대하여는 도 3을 참조하여 단계(S5)에서 살펴본다.
한편, 실시예에서 분산 행렬 곱 문제는 텐서 곱(Tensor Product) 형태로 재표현된다. 즉, 행렬 곱의 복잡도를 낮추기 위하여 제 1 입력 행렬(AT)와 제 2 입력 행렬(B)을 각각의 부분행렬들과 기저(base)의 텐서 곱의 합 형태로 재표현할 수 있다.
Figure pat00029
여기서,
Figure pat00030
Figure pat00031
는 각각 m x p 행렬 공간(vector space)과 p x n 행렬 공간을 구성하는 프레임이며, 프레임은 기저의 선형독립성 조건(linear independent condition)을 완화한 집합 구조를 의미한다.
Figure pat00032
는 실시예에 따른 분산 행렬 곱 연산 방법에서 각각 제 1, 제 2 복호화 프레임에 대응한다.
nA와 nB는 각각 제 1, 제 2 복호화 프레임 집합
Figure pat00033
의 원소 개수이다. 또한,
Figure pat00034
Figure pat00035
는 다음과 같이 각각 부분행렬
Figure pat00036
Figure pat00037
의 선형 합으로 표현되는 선형 함수 (linear mapping)이다.
Figure pat00038
선형 함수
Figure pat00039
Figure pat00040
의 계수(coefficient)
Figure pat00041
값이 i행 j열이 되는 행렬들의 집합을
Figure pat00042
로 표현한다.
본 발명에서는 행렬 집합
Figure pat00043
의 값과 선형 함수
Figure pat00044
Figure pat00045
의 계수(coefficient)
Figure pat00046
를 결정하는 방법을 제안한다. 이를 위해 해당하는 값들을 전이 행렬(transition matrix)로 다음과 같이 정의한다.
Figure pat00047
이와 같은 조건 하에서, 실시예에 따른 분산 행렬 곱 연산 방법은 프로세서(110)에 의해 부호화 프레임 행렬 집합
Figure pat00048
을 구성한다. 이 때 부호화 프레임, 즉
Figure pat00049
Figure pat00050
의 모든 경우의 수가 총 연산 노드의 수(N) 보다 작도록(즉,
Figure pat00051
) 부호화 프레임 행렬 집합
Figure pat00052
을 결정한다.
이에 기초하여 곱셈을 수행할 대상인 제 1 입력 행렬(AT)과 제 2 입력 행렬(B)을 다음의 수학식 9에 따라 부호화한다.
Figure pat00053
이와 같이 생성된 노드별 부호화 행렬
Figure pat00054
Figure pat00055
를 노드 ω에게 전송한다. 여기서 ω는 주어진 행렬의 행 인덱스 e1과 열 인덱스 e2에 기초하여 해당 행렬의 모든 행렬 요소를 사전식 순서에 따라 하나씩 탐색하도록 하는 인덱스로서, ω = nB(e1 - 1) + e2이다.
Figure pat00056
각 연산 노드는 수신한 노드별 부호화 행렬에 대한 행렬 곱셈을 수행한다. 즉, ω번째 연산 노드는 곱셈
Figure pat00057
를 수행한다.
중앙 노드는 주어진 시간 기한에서 연산 노드로부터 부분 곱 결과
Figure pat00058
를 수신한다. 수신된 결과
Figure pat00059
에 대한 연산 노드 인덱스 집합을 표현하기에 앞서, 발생할 수 있는 서로 다른 모든 프레임 행렬 집합의 인덱스 (e1, e2)을 다음과 같이 표기한다.
Figure pat00060
수신된 결과
Figure pat00061
에 대한 연산 노드 인덱스 집합 I'는 I의 부분집합으로 다음과 같이 표현될 수 있다.
Figure pat00062
수신된 결과
Figure pat00063
에 해당하는 연산 노드 인덱스 집합에 따른 프레임 행렬
Figure pat00064
을 유동적으로 구성한다. 즉, 원 결과를 복원하기 위해서, 먼저 수신된 결과
Figure pat00065
에 해당하는 연산 노드 인덱스 집합의 부분집합들 중
Figure pat00066
Figure pat00067
의 직접곱(direct product)으로 표현이 되는
Figure pat00068
를 찾는다.
Figure pat00069
는 다음의 수학식을 만족하는 인덱스 집합으로 I'의 부분 집합이다.
Figure pat00070
Figure pat00071
Figure pat00072
을 활용하여, 프레임 행렬
Figure pat00073
를 구성한다.
후속하여, 프레임 행렬
Figure pat00074
을 이용하여 행렬 곱의 원 연산 결과 C(즉,
Figure pat00075
)를 복원한다. 앞서 구한 프레임 행렬
Figure pat00076
을 통해서 중앙 노드에서 최종적으로 다음의 수학식에 의해 원 연산 결과를 복원한다.
Figure pat00077
한편, 본 발명은 실시예에 따른 분산 행렬 곱 연산을 수행하기 위한 부호화 프레임과 복호화 프레임을 디자인하였다. 즉, 본 발명에서 부호화 프레임과 복호화 프레임은 다음과 같은 2단계로 구성된다.
먼저 주어진 부호화 프레임에 따라 최적의 복호화 프레임은 다음과 같이 결정된다.
주어진 인덱스 집합
Figure pat00078
로부터의 연산 결과
Figure pat00079
와 부호화 프레임
Figure pat00080
에 해당하는 전이행렬
Figure pat00081
Figure pat00082
에 대해서, 연산 에러율을 최소로 하는 최적의 복호화 프레임
Figure pat00083
에 해당하는 전이 행렬
Figure pat00084
Figure pat00085
는 다음의 수학식에 따라 결정된다.
Figure pat00086
마지막으로 실시예에 따른 분산 행렬 곱 연산 방법은 등각 프레임(equiangular tight frame)에 기반하여 부호화 프레임
Figure pat00087
을 생성할 수 있다. 이와 같은 부호화 프레임
Figure pat00088
을 이용하여 입력 행렬(AT, B)을 부호화할 경우, 부호화 행렬(
Figure pat00089
)이 입력 행렬(AT, B)의 행렬 공간에 균등하게 분배된다.
즉, 제 1 입력 행렬(AT)의 제 1 부호화 행렬(
Figure pat00090
)과 제 2 입력 행렬(B)의 제 2 부호화 행렬(
Figure pat00091
)이 각각 m x p 행렬 공간과 p x n 행렬 공간에 균등하게 분배되어, 임의의 제 1, 제 2 입력 행렬 AT와 B에 대해서도 편향없이 원 행렬 C(즉,
Figure pat00092
)를 복원할 수 있다.
예시적인 등각 프레임으로 하다마드 프레임(Hadamard frame), 조화 프레임(Harmonic frame) 외에도 커크만 프레임(Kirkman frame), 슈타이너 프레임(Steiner frame) 등이 있으며 실시예에 따른 분산 행렬 곱 연산 방법은 이에 제한되지 않고 다양한 종류의 등각 프레임을 사용가능하다.
이하에서 실시예에 따른 분산 행렬 곱 연산 장치(100)에 의한 분산 행렬 곱 연산 방법을 도면을 참조하여 살펴본다.
도 3은 실시예에 따른 분산 행렬 곱 연산 방법의 흐름도이다.
실시예에 따른 분산 행렬 곱 연산 방법은 제 1 입력 행렬(AT)을 분할한 복수의 제 1 부분 행렬(
Figure pat00093
)및 제 2 입력 행렬(B)을 분할한 복수의 제 2 부분 행렬(
Figure pat00094
)을 생성하는 단계(S1), 복수의 제 1 부분 행렬(
Figure pat00095
) 및 복수의 제 2 부분 행렬(
Figure pat00096
)을 각각 부호화하여 복수의 연산 노드의 연산 노드별 제 1 부호화 행렬(
Figure pat00097
) 및 제 2 부호화 행렬(
Figure pat00098
)을 생성하는 단계(S2), 연산 노드별 제 1 부호화 행렬(
Figure pat00099
) 및 제 2 부호화 행렬(
Figure pat00100
)을 각 연산 노드로 분배하는 단계(S3), 복수의 연산 노드의 적어도 일부로부터 연산 노드별 제 1 부호화 행렬(
Figure pat00101
) 및 제 2 부호화 행렬(
Figure pat00102
)에 기반한 적어도 하나의 부호화 행렬 곱 결과(
Figure pat00103
)를 획득하는 단계(S4), 및 적어도 하나의 부호화 행렬 곱 결과(
Figure pat00104
)에 기반하여 제 1 입력 행렬(AT) 및 제 2 입력 행렬(B)에 대한 행렬 곱 결과(
Figure pat00105
)를 복원하는 단계(S5)를 포함한다.
단계(S1)에서 프로세서(110)는, 메모리(120)에 저장된 명령어를 실행하여, 제 1 입력 행렬(AT)을 분할한 복수의 제 1 부분 행렬(
Figure pat00106
) 및 제 2 입력 행렬(B)을 분할한 복수의 제 2 부분 행렬(
Figure pat00107
)을 생성한다.
단계(S1)에서 프로세서(110)는 수학식 1을 참조하여 제 1 입력 행렬(AT)을 pm개의 제 1 부분 행렬(
Figure pat00108
)로 분할하고 및 제 2 입력 행렬(B)을 pn개의 제 2 부분 행렬(
Figure pat00109
)로 분할한다(p, m, n은 각각 자연수).
단계(S2)에서 프로세서(110)는 복수의 제 1 부분 행렬(
Figure pat00110
) 및 복수의 제 2 부분 행렬(
Figure pat00111
)을 각각 부호화하여 복수의 연산 노드의 연산 노드별 제 1 부호화 행렬(
Figure pat00112
) 및 제 2 부호화 행렬(
Figure pat00113
)을 생성한다.
단계(S2)는 프로세서(110)에 의해 각 연산 노드의 제 1 부호화 프레임 및 복수의 제 1 부분 행렬(
Figure pat00114
)에 기반하여 각 연산 노드의 제 1 부호화 행렬(
Figure pat00115
)을 생성하는 단계 및 각 연산 노드의 제 2 부호화 프레임 및 복수의 제 2 부분 행렬(
Figure pat00116
)에 기반하여 각 연산 노드의 제 2 부호화 행렬(
Figure pat00117
)을 생성하는 단계를 포함할 수 있다.
예를 들어 제 1 부호화 프레임은 제 1 부호화 프레임 집합(
Figure pat00118
)의 원소 중 하나로 결정된다. 예를 들어 제 2 부호화 프레임은 제 2 부호화 프레임 집합(
Figure pat00119
)의 원소 중 하나로 결정된다. 부호화 프레임 집합 및 부호화 프레임에 대하여는 도 4를 참조하여 후술한다.
일 예에서, 제 1 부호화 프레임은 제 1 입력 행렬(AT)의 분할 차수(예를 들어 p x n)에 따른 제 1 행렬 공간(vector space)의 등각 프레임(equiangular tight frame)이고, 제 2 부호화 프레임은 제 2 입력 행렬(B)의 분할 차수(예를 들어 p x m)에 따른 제 2 행렬 공간의 등각 프레임으로 구성될 수 있다.
일 예에서 제 1 부호화 프레임은 각각의 제 1 부분 행렬(
Figure pat00120
)에 대응하는 제 1 부호화 파라미터(
Figure pat00121
)를 행렬성분으로 하는 행렬이고, 제 2 부호화 프레임은 각각의 제 2 부분 행렬(
Figure pat00122
)에 대응하는 제 2 부호화 파라미터(
Figure pat00123
)를 행렬성분으로 하는 행렬로 구성될 수 있다.
일 예에서 단계(S2)는 프로세서(110)에 의해 제 1 부호화 파라미터(
Figure pat00124
) 및 제 1 부호화 파라미터(
Figure pat00125
)에 대응하는 제 1 부분 행렬(
Figure pat00126
)에 기반한 선형 함수(
Figure pat00127
)에 의해 제 1 부호화 행렬(
Figure pat00128
)을 생성하는 단계 및 제 2 부호화 파라미터(
Figure pat00129
) 및 제 2 부호화 파라미터(
Figure pat00130
)에 대응하는 제 2 부분 행렬(
Figure pat00131
)에 기반한 선형 함수(
Figure pat00132
)에 의해 제 2 부호화 행렬(
Figure pat00133
)을 생성하는 단계를 포함할 수 있다. 이는 수학식 7 내지 수학식 9 및 전술한 설명을 참조하여 수행된다.
단계(S3)에서 프로세서(110)는 단계(S2)에서 생성된 연산 노드별 제 1 부호화 행렬(
Figure pat00134
) 및 제 2 부호화 행렬(
Figure pat00135
)을 각 연산 노드로 분배한다.
단계(S3)에서 프로세서(110)는 통신부(130)를 통해 전술한 수학식 10과 관련 설명에 기반하여 사전식 순서에 따른 인덱스를 이용하여 w번째 연산 노드에게 제 1 부호화 행렬(
Figure pat00136
) 및 제 2 부호화 행렬(
Figure pat00137
)을 전송한다.
단계(S4)에서 프로세서(110)는 복수의 연산 노드의 적어도 일부로부터 연산 노드별 제 1 부호화 행렬(
Figure pat00138
) 및 제 2 부호화 행렬(
Figure pat00139
)에 기반한 적어도 하나의 부호화 행렬 곱 결과(
Figure pat00140
)를 획득한다.
예를 들어 프로세서(110)는 전체 N개의 연산 노드에게 연산 노드별 제 1 부호화 행렬(
Figure pat00141
) 및 제 2 부호화 행렬(
Figure pat00142
)를 전송하고 M개의 연산 노드로부터 적어도 하나의 부호화 행렬 곱 결과(
Figure pat00143
)를 획득할 수 있다. 여기서 M은 N이하의 자연수이다.
단계(S5)에서 프로세서(110)는 적어도 하나의 부호화 행렬 곱 결과(
Figure pat00144
)에 기반하여 제 1 입력 행렬(AT) 및 제 2 입력 행렬(B)에 대한 행렬 곱 결과(
Figure pat00145
)를 복원한다.
단계(S5)는 프로세서(110)에 의해 부호화 행렬 곱 결과(
Figure pat00146
)를 연산한 연산 노드의 노드 인덱스 집합(I')에 기반하여 제 1 입력 행렬(AT)에 대한 제 1 복호화 프레임(
Figure pat00147
) 및 제 2 입력 행렬(B)에 대한 제 2 복호화 프레임(
Figure pat00148
)을 결정하는 단계 및 프로세서(110)에 의해 제 1 복호화 프레임, 제 2 복호화 프레임 및 부호화 행렬 곱 결과(
Figure pat00149
)에 기반하여 행렬 곱 결과를 결정하는 단계를 포함할 수 있다.
단계(S5)의 제 1 입력 행렬(AT)에 대한 제 1 복호화 프레임(
Figure pat00150
) 및 제 2 입력 행렬에 대한 제 2 복호화 프레임(
Figure pat00151
)을 결정하는 단계는, 프로세서(110)에 의해, 부호화 행렬 곱 결과를 연산한 연산 노드의 노드 인덱스 집합(I')을 생성하는 단계, 제 1 프레임 인덱스 집합(I1) 및 제 2 프레임 인덱스 집합(I2)의 직접 곱(direct product)이 노드 인덱스 집합(I')의 부분 집합이 되는 제 1 프레임 인덱스 집합(I1) 및 제 2 프레임 인덱스 집합(I2)을 결정하는 단계 및 제 1 프레임 인덱스 집합(I1) 및 제 2 프레임 인덱스 집합(I2)에 기반하여 상기 제 1 복호화 프레임(
Figure pat00152
) 및 제 2 입력 상기 제 2 복호화 프레임(
Figure pat00153
)을 결정하는 단계를 포함한다. 이는 수학식 11 내지 수학식 14과 연계하여 전술한 설명에 따라 수행될 수 있다.
도 4는 예시적인 부호화 프레임 집합을 보여준다.
제 1 부호화 프레임 집합(
Figure pat00154
)은 nA 개의 제 1 부호화 프레임 행렬을 원소로 포함하는 집합이다. 여기서 제 1 부호화 프레임 행렬은 각각 제 1 입력 행렬(AT)의 분할차수(예를 들어 p x m) 만큼의 제 1 부호화 파라미터(
Figure pat00155
)를 행렬원소로 하는 행렬이다. 여기서 e1은 제 1 부호화 프레임 집합(
Figure pat00156
)에 포함된 제 1 부호화 프레임 행렬의 인덱스를 나타낸다.
예를 들어, 첫번째 제 1 부호화 프레임 행렬은 제 1 부호화 파라미터(
Figure pat00157
)를 i 행 j열의 행렬원소로 하는 행렬이다.
마찬가지로, 제 2 부호화 프레임 집합(
Figure pat00158
)은 nB 개의 제 2 부호화 프레임 행렬을 원소로 포함하는 집합이다. 여기서 제 2 부호화 프레임 행렬은 각각 제 2 입력 행렬(B)의 분할차수(예를 들어 p x n) 만큼의 제 2 부호화 파라미터(
Figure pat00159
)를 행렬원소로 하는 행렬이다. 여기서 e2은 제 2 부호화 프레임 행렬 집합(
Figure pat00160
)에 포함된 제 2 부호화 프레임 행렬의 인덱스를 나타낸다.
예를 들어, 첫번째 제 2 부호화 프레임 행렬은 제 2 부호화 파라미터(
Figure pat00161
)를 i 행 j열의 행렬원소로 하는 행렬이다.
도 5는 실시예에 따른 분산 행렬 곱 연산을 위한 복호화 중 일 과정을 예시적으로 설명하기 위한 도면이다.
여기서 e1은 제 1 복호화 프레임 집합(
Figure pat00162
)의 프레임 인덱스이고 e2는 제 2 복호화 프레임 집합(
Figure pat00163
)의 프레임 인덱스를 나타낸다.
예를 들어 도 3을 참조하여 단계(S4)에서 연산 노드 1(w=1), 연산 노드 2(w=2), 연산 노드(w=3), 연산 노드(w=4) 및 연산 노드(w=6)로부터 각각 부호화 행렬 곱 결과를 수신했다고 가정한다.
이 경우 수학식 13과 연계하여 전술한대로 수신된 결과
Figure pat00164
에 해당하는 연산 노드 인덱스 집합의 부분집합들 중
Figure pat00165
Figure pat00166
의 직접곱(direct product)으로 표현이 되는
Figure pat00167
를 찾는다.
결과적으로 도 5에 도시된 예시에서 연산 노드(w=5)로부터 부호화 행렬 곱 결과를 수신하지 못하였으므로, 연산 노드(w=2)는 제외된다. 즉, I1 = {1, 2}이고 I2 = {1, 3}이 되며,
Figure pat00168
는 {1, 3, 4, 6}으로 결정된다.
도 6은 실시예에 의한 노드 수에 따른 평균 에러 확률을 보여주는 그래프이다.
일 예에서 실시예에 따른 방법에 의해 다음의 수학식과 같이 원 행렬 크기 대비 복원된 연산 행렬의 오차의 비율을 복원된 행렬 곱 결과의 정규화 오차(normalized error)로 결정할 수 있다.
Figure pat00169
여기서
Figure pat00170
은 Frobenius norm을 뜻한다.
도 6에서 여러 가지 기법들에 대해서 수학식 16에 따른 오차를 비교하였다. 시뮬레이션 환경은 다음과 같다.
계산하고자 하는 원 행렬은 임의의 값을 가진 300x300 행렬 A와 300x300 행렬 B이며 각각을 pm개와 pn개의 부분행렬로 분할한다. 각 연산 노드가 동일한 컴퓨팅 능력을 사용하도록, 모든 시뮬레이션에서 동일한 크기의 행렬을 곱하도록 하였다. 분할 정도에 대한 파라미터는 p=m=n=2로 결정하였다.
또한, 등각 프레임의 여러 종류 중 하다마드 프레임(Hadamard frame)과 조화 프레임(Harmonic frame)을 사용하여 시뮬레이션 하였다.
시뮬레이션 결과, 정규화된 오차는 도 6의 그래프에 도시되어 있다.
노드 수가 많지 않은 환경에서, 기존 기법은 0.1 내지 1 사이의 확률을 가지게 되는 반면에 실시예에 따른 분산 행렬 곱 연산 방법은 10-2 내지 10-1의 확률을 보이며, 실시예에 따른 방법이 더 성능이 좋음을 확인할 수 있다.
본 발명에서는 사칙연산보다는 구조가 복잡하여 고차원의 연산에 기본이 되는 분산 행렬 곱 기법을 제안한다.
실시예에 따른 방법은 클라우드 서비스를 제공하려는 아마존, 마이크로소프트, 구글 등 다양한 기업들에서 서비스형 함수(Function as a service, FaaS) 측면에서 활용가능하다. 또한, 실시예에 따른 방법은 분산 컴퓨팅의 모든 응용분야, 빅데이터 분석, 증강현실, 촉감통신 등 고지능이라 불리는 어플리케이션들은 물론이고 큰 부하의 고차원의 연산을 요구하는 모든 어플리케이션에 활용가능하다.
실시예에 따른 방법은 큰 부하의 연산을 단일 장치에서 수행하는 경우의 성능 저하를 해결할 수 있으며, 여러 연산 노드가 통신하면서 고차원 행렬 곱셈을 분산적으로 처리함으로써 성능을 개선한다. 특히, 노드 수가 적은 환경에서 일정 수준 이하의 낮은 에러를 보장한다.
전술한 본 발명의 일 실시예에 따른 방법은 프로그램이 기록된 매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 매체는, 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 컴퓨터가 읽을 수 있는 매체의 예로는, HDD(Hard Disk Drive), SSD(Solid State Disk), SDD(Silicon Disk Drive), ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크, 광 데이터 저장 장치 등이 있다.
이상 설명된 본 발명의 실시 예에 대한 설명은 예시를 위한 것이며, 본 발명이 속하는 기술분야의 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 쉽게 변형이 가능하다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시 예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 예를 들어, 단일형으로 설명되어 있는 각 구성 요소는 분산되어 실시될 수도 있으며, 마찬가지로 분산된 것으로 설명되어 있는 구성 요소들도 결합된 형태로 실시될 수 있다.
본 발명의 범위는 상기 상세한 설명보다는 후술하는 청구범위에 의하여 나타내어지며, 청구범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
100: 분산 행렬 곱 연산 장치
110: 프로세서
120: 메모리
130: 통신부

Claims (15)

  1. 분산 행렬 곱 연산 방법으로서,
    제 1 입력 행렬을 분할한 복수의 제 1 부분 행렬 및 제 2 입력 행렬을 분할한 복수의 제 2 부분 행렬을 생성하는 단계;
    상기 복수의 제 1 부분 행렬 및 상기 복수의 제 2 부분 행렬을 각각 부호화하여 복수의 연산 노드의 연산 노드별 제 1 부호화 행렬 및 제 2 부호화 행렬을 생성하는 단계;
    상기 연산 노드별 제 1 부호화 행렬 및 제 2 부호화 행렬을 각 연산 노드로 분배하는 단계;
    상기 복수의 연산 노드의 적어도 일부로부터 상기 연산 노드별 제 1 부호화 행렬 및 제 2 부호화 행렬에 기반한 적어도 하나의 부호화 행렬 곱 결과를 획득하는 단계; 및
    상기 적어도 하나의 부호화 행렬 곱 결과에 기반하여 상기 제 1 입력 행렬 및 상기 제 2 입력 행렬에 대한 행렬 곱 결과를 복원하는 단계
    를 포함하는,
    분산 행렬 곱 연산 방법.
  2. 제 1 항에 있어서,
    상기 연산 노드별 제 1 부호화 행렬 및 제 2 부호화 행렬을 생성하는 단계는,
    각 연산 노드의 제 1 부호화 프레임 및 상기 복수의 제 1 부분 행렬에 기반하여 각 연산 노드의 제 1 부호화 행렬을 생성하는 단계; 및
    각 연산 노드의 제 2 부호화 프레임 및 상기 복수의 제 2 부분 행렬에 기반하여 각 연산 노드의 제 2 부호화 행렬을 생성하는 단계
    를 포함하는,
    분산 행렬 곱 연산 방법.
  3. 제 2 항에 있어서,
    상기 제 1 부호화 프레임은 상기 제 1 입력 행렬의 분할 차수에 따른 제 1 행렬 공간(vector space)의 등각 프레임(equiangular tight frame)이고,
    상기 제 2 부호화 프레임은 상기 제 2 입력 행렬의 분할 차수에 따른 제 2 행렬 공간의 등각 프레임인,
    분산 행렬 곱 연산 방법.
  4. 제 2 항에 있어서,
    상기 제 1 부호화 프레임은 각각의 제 1 부분 행렬에 대응하는 제 1 부호화 파라미터를 행렬성분으로 하는 행렬이고,
    상기 제 2 부호화 프레임은 각각의 제 2 부분 행렬에 대응하는 제 2 부호화 파라미터를 행렬성분으로 하는 행렬인,
    분산 행렬 곱 연산 방법.
  5. 제 4 항에 있어서,
    상기 연산 노드별 제 1 부호화 행렬 및 제 2 부호화 행렬을 생성하는 단계는,
    상기 제 1 부호화 파라미터 및 상기 제 1 부호화 파라미터에 대응하는 제 1 부분 행렬에 기반한 선형 함수에 의해 상기 제 1 부호화 행렬을 생성하는 단계; 및
    상기 제 2 부호화 파라미터 및 상기 제 2 부호화 파라미터에 대응하는 제 2 부분 행렬에 기반한 선형 함수에 의해 상기 제 2 부호화 행렬을 생성하는 단계
    를 포함하는,
    분산 행렬 곱 연산 방법.
  6. 제 1 항에 있어서,
    상기 행렬 곱 결과를 복원하는 단계는,
    상기 부호화 행렬 곱 결과를 연산한 연산 노드의 노드 인덱스 집합에 기반하여 상기 제 1 입력 행렬에 대한 제 1 복호화 프레임 및 상기 제 2 입력 행렬에 대한 제 2 복호화 프레임을 결정하는 단계; 및
    상기 제 1 복호화 프레임, 상기 제 2 복호화 프레임 및 상기 부호화 행렬 곱 결과에 기반하여 상기 행렬 곱 결과를 결정하는 단계
    를 포함하는,
    분산 행렬 곱 연산 방법.
  7. 제 6 항에 있어서,
    상기 제 1 입력 행렬에 대한 제 1 복호화 프레임 및 상기 제 2 입력 행렬에 대한 제 2 복호화 프레임을 결정하는 단계는,
    상기 부호화 행렬 곱 결과를 연산한 연산 노드의 노드 인덱스 집합을 생성하는 단계;
    제 1 프레임 인덱스 집합 및 제 2 프레임 인덱스 집합의 직접 곱(direct product)이 상기 노드 인덱스 집합의 부분 집합이 되는 상기 제 1 프레임 인덱스 집합 및 상기 제 2 프레임 인덱스 집합을 결정하는 단계; 및
    상기 제 1 프레임 인덱스 집합 및 상기 제 2 프레임 인덱스 집합에 기반하여 상기 제 1 복호화 프레임 및 상기 제 2 복호화 프레임을 결정하는 단계
    를 포함하는,
    분산 행렬 곱 연산 방법.
  8. 분산 행렬 곱 연산 장치로서,
    적어도 하나의 명령어를 저장한 메모리; 및
    프로세서
    를 포함하고, 상기 적어도 하나의 명령어는 상기 프로세서에 의하여 실행될 때 상기 프로세서로 하여금,
    제 1 입력 행렬을 분할한 복수의 제 1 부분 행렬 및 제 2 입력 행렬을 분할한 복수의 제 2 부분 행렬을 생성하고,
    상기 복수의 제 1 부분 행렬 및 상기 복수의 제 2 부분 행렬을 각각 부호화하여 복수의 연산 노드의 연산 노드별 제 1 부호화 행렬 및 제 2 부호화 행렬을 생성하고,
    상기 연산 노드별 제 1 부호화 행렬 및 제 2 부호화 행렬을 각 연산 노드로 분배하고,
    상기 복수의 연산 노드의 적어도 일부로부터 상기 연산 노드별 제 1 부호화 행렬 및 제 2 부호화 행렬에 기반한 적어도 하나의 부호화 행렬 곱 결과를 획득하고,
    상기 적어도 하나의 부호화 행렬 곱 결과에 기반하여 상기 제 1 입력 행렬 및 상기 제 2 입력 행렬에 대한 행렬 곱 결과를 복원하도록 구성되는,
    분산 행렬 곱 연산 장치.
  9. 제 8 항에 있어서,
    상기 적어도 하나의 명령어는 상기 프로세서에 의해 실행될 때 상기 프로세서로 하여금, 상기 연산 노드별 제 1 부호화 행렬 및 제 2 부호화 행렬을 생성하기 위하여,
    각 연산 노드의 제 1 부호화 프레임 및 상기 복수의 제 1 부분 행렬에 기반하여 각 연산 노드의 제 1 부호화 행렬을 생성하고,
    각 연산 노드의 제 2 부호화 프레임 및 상기 복수의 제 2 부분 행렬에 기반하여 각 연산 노드의 제 2 부호화 행렬을 생성하도록 구성되는,
    분산 행렬 곱 연산 장치.
  10. 제 9 항에 있어서,
    상기 제 1 부호화 프레임은 상기 제 1 입력 행렬의 분할 차수에 따른 제 1 행렬 공간(vector space)의 등각 프레임(equiangular tight frame)이고,
    상기 제 2 부호화 프레임은 상기 제 2 입력 행렬의 분할 차수에 따른 제 2 행렬 공간의 등각 프레임인,
    분산 행렬 곱 연산 장치.
  11. 제 9 항에 있어서,
    상기 제 1 부호화 프레임은 각각의 제 1 부분 행렬에 대응하는 제 1 부호화 파라미터를 행렬성분으로 하는 행렬이고,
    상기 제 2 부호화 프레임은 각각의 제 2 부분 행렬에 대응하는 제 2 부호화 파라미터를 행렬성분으로 하는 행렬인,
    분산 행렬 곱 연산 장치.
  12. 제 11 항에 있어서,
    상기 적어도 하나의 명령어는 상기 프로세서에 의해 실행될 때 상기 프로세서로 하여금, 상기 연산 노드별 제 1 부호화 행렬 및 제 2 부호화 행렬을 생성하기 위하여,
    상기 제 1 부호화 파라미터 및 상기 제 1 부호화 파라미터에 대응하는 제 1 부분 행렬에 기반한 선형 함수에 의해 상기 제 1 부호화 행렬을 생성하고,
    상기 제 2 부호화 파라미터 및 상기 제 2 부호화 파라미터에 대응하는 제 2 부분 행렬에 기반한 선형 함수에 의해 상기 제 2 부호화 행렬을 생성하도록 구성되는,
    분산 행렬 곱 연산 장치.
  13. 제 8 항에 있어서,
    상기 적어도 하나의 명령어는 상기 프로세서에 의해 실행될 때 상기 프로세서로 하여금, 상기 행렬 곱 결과를 복원하기 위하여,
    상기 부호화 행렬 곱 결과를 연산한 연산 노드의 노드 인덱스 집합에 기반하여 상기 제 1 입력 행렬에 대한 제 1 복호화 프레임 및 상기 제 2 입력 행렬에 대한 제 2 복호화 프레임을 결정하고,
    상기 제 1 복호화 프레임, 상기 제 2 복호화 프레임 및 상기 부호화 행렬 곱 결과에 기반하여 상기 행렬 곱 결과를 결정하도록 구성되는,
    분산 행렬 곱 연산 장치.
  14. 제 13 항에 있어서,
    상기 적어도 하나의 명령어는 상기 프로세서에 의해 실행될 때 상기 프로세서로 하여금, 상기 제 1 입력 행렬에 대한 제 1 복호화 프레임 및 상기 제 2 입력 행렬에 대한 제 2 복호화 프레임을 결정하기 위하여,
    상기 부호화 행렬 곱 결과를 연산한 연산 노드의 노드 인덱스 집합을 생성하고,
    제 1 프레임 인덱스 집합 및 제 2 프레임 인덱스 집합의 직접 곱이 상기 노드 인덱스 집합의 부분 집합이 되는 상기 제 1 프레임 인덱스 집합 및 상기 제 2 프레임 인덱스 집합을 결정하고,
    상기 제 1 프레임 인덱스 집합 및 상기 제 2 프레임 인덱스 집합에 기반하여 상기 제 1 복호화 프레임 및 상기 제 2 복호화 프레임을 결정하도록 구성되는,
    분산 행렬 곱 연산 장치.
  15. 제 1 항 내지 제 7 항 중 어느 한 항에 따른 분산 행렬 곱 연산 방법을 프로세서에 의해 실행하기 위한 적어도 하나의 명령어를 포함한 컴퓨터 프로그램을 저장한 컴퓨터 판독가능한 비-일시적 기록 매체.
KR1020210159700A 2021-11-18 2021-11-18 프레임 양자화에 기반한 분산 행렬 곱 연산 방법 및 장치 KR102621139B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020210159700A KR102621139B1 (ko) 2021-11-18 2021-11-18 프레임 양자화에 기반한 분산 행렬 곱 연산 방법 및 장치
PCT/KR2021/017368 WO2023090502A1 (ko) 2021-11-18 2021-11-24 프레임 양자화에 기반한 분산 행렬 곱 연산 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210159700A KR102621139B1 (ko) 2021-11-18 2021-11-18 프레임 양자화에 기반한 분산 행렬 곱 연산 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20230072962A true KR20230072962A (ko) 2023-05-25
KR102621139B1 KR102621139B1 (ko) 2024-01-04

Family

ID=86397144

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210159700A KR102621139B1 (ko) 2021-11-18 2021-11-18 프레임 양자화에 기반한 분산 행렬 곱 연산 방법 및 장치

Country Status (2)

Country Link
KR (1) KR102621139B1 (ko)
WO (1) WO2023090502A1 (ko)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021060748A (ja) * 2019-10-04 2021-04-15 株式会社日立製作所 演算装置および演算方法
KR20210061119A (ko) * 2019-11-19 2021-05-27 재단법인대구경북과학기술원 큰 규모 분산 행렬 곱 처리 방법 및 그 장치

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102158051B1 (ko) * 2018-06-27 2020-09-21 국민대학교산학협력단 컴퓨터 수행 가능한 클라우드 기반의 인공지능 연산 서비스 방법
US20200104127A1 (en) * 2018-09-28 2020-04-02 Carnegie Mellon University Coded computation strategies for distributed matrix-matrix and matrix-vector products

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021060748A (ja) * 2019-10-04 2021-04-15 株式会社日立製作所 演算装置および演算方法
KR20210061119A (ko) * 2019-11-19 2021-05-27 재단법인대구경북과학기술원 큰 규모 분산 행렬 곱 처리 방법 및 그 장치

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Qian Y외 2명, "Straggler Mitigation in Distributed Matrix Multiplication: Fundamental Limits and Optimal Coding", IEEE TRANSACTIONS ON INFORMATION THEORY, VOL. 66, NO. 3, pp1920-1933,(2020.3.31.)* *

Also Published As

Publication number Publication date
WO2023090502A1 (ko) 2023-05-25
KR102621139B1 (ko) 2024-01-04

Similar Documents

Publication Publication Date Title
US10997176B2 (en) Massive time series correlation similarity computation
Constantine et al. Tall and skinny QR factorizations in MapReduce architectures
CN111753979B (zh) 基于矩阵因子分解的梯度压缩
AU2023200082A1 (en) Method and apparatus for estimating classical capacity of quantum channel, electronic device, and medium
JP2023501730A (ja) 微細構造化マスクを用いたマルチレートニューラル画像圧縮のための方法、装置およびコンピュータプログラム
US10771088B1 (en) Optimal multi-dimensional data compression by tensor-tensor decompositions tensor
JP7418570B2 (ja) スタック可能ネスト化モデル構造を用いたマルチレート・ニューラルイメージ圧縮のための方法および装置
JP2024517688A (ja) 行列の固有値計算のためのハードウェアアクセラレーション
US10893117B2 (en) Enabling high speed and low power operation of a sensor network
US11935271B2 (en) Neural network model compression with selective structured weight unification
US11496775B2 (en) Neural network model compression with selective structured weight unification
JP7426980B2 (ja) 分散型ニューラル・ネットワークのコアのネットワークにおける階層的並列処理
KR102621139B1 (ko) 프레임 양자화에 기반한 분산 행렬 곱 연산 방법 및 장치
US11445198B2 (en) Multi-quality video super resolution with micro-structured masks
CN114626511B (zh) 神经网络的训练方法、推理方法及相关产品
US20210232891A1 (en) Neural network model compression with structured weight unification
US20210201157A1 (en) Neural network model compression with quantizability regularization
US11520855B2 (en) Matrix sketching using analog crossbar architectures
CN113052309A (zh) 压缩神经网络模型的方法、计算机系统以及存储介质
JP7425870B2 (ja) 積み重ね可能な入れ子モデル構造及びマイクロ構造化された重み統一によるマルチレートニューラル画像圧縮のための方法及び装置
CN113112012B (zh) 用于视频图像处理的方法、装置和计算机设备
US20230419088A1 (en) Bundling hypervectors
US20240013050A1 (en) Packing machine learning models using pruning and permutation
CN118036755B (zh) 大语言模型的量化方法及推理方法、装置、设备和介质
CN115034198B (zh) 语言模型中嵌入模块计算优化的方法

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E601 Decision to refuse application
X091 Application refused [patent]
AMND Amendment
X701 Decision to grant (after re-examination)