KR20220158768A - 기계 학습 가속을 위한 전력 감소 - Google Patents

기계 학습 가속을 위한 전력 감소 Download PDF

Info

Publication number
KR20220158768A
KR20220158768A KR1020227036577A KR20227036577A KR20220158768A KR 20220158768 A KR20220158768 A KR 20220158768A KR 1020227036577 A KR1020227036577 A KR 1020227036577A KR 20227036577 A KR20227036577 A KR 20227036577A KR 20220158768 A KR20220158768 A KR 20220158768A
Authority
KR
South Korea
Prior art keywords
matrix
tile
layer
matrix multiplication
input
Prior art date
Application number
KR1020227036577A
Other languages
English (en)
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 어드밴스드 마이크로 디바이시즈, 인코포레이티드
Publication of KR20220158768A publication Critical patent/KR20220158768A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0464Convolutional networks [CNN, ConvNet]
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • 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
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • G06N3/0454

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Neurology (AREA)
  • Image Processing (AREA)

Abstract

신경망 연산을 수행하는 기술이 개시된다. 이 기술은 제1 행렬 타일 및 제2 행렬 타일을 식별하는 단계, 제1 행렬 타일에 대한 제1 범위 정보 및 제2 행렬 타일에 대한 제2 범위 정보를 획득하는 단계, 제1 범위 정보 및 제2 범위 정보에 기초하여 행렬 곱셈 경로를 선택하는 단계, 및 행렬 곱셈 곱을 생성하기 위해 상기 선택된 행렬 곱셈 경로를 이용하여 상기 제1 행렬 타일 및 상기 제2 행렬 타일에 행렬 곱셈을 수행하는 단계를 포함한다.

Description

기계 학습 가속을 위한 전력 감소
관련 출원의 상호 참조
본 출원은 2020년 3월 26일에 출원된 미국 비가특허 출원번호 16/831,711의 이익을 주장하며, 그 내용은 본 출원에 참조로 포함된다.
기계 학습 시스템은 트레이닝된 네트워크를 통해 입력을 처리하여 출력을 생성한다. 이러한 평가에는 처리되는 데이터의 양과 네트워크의 복잡성으로 인해 많은 계산이 필요하다.
첨부된 도면과 함께 예로서 주어진 하기 설명으로부터 보다 상세한 이해를 얻을 수 있다.
도 1은 일 예에 따른 신경망 처리 시스템의 블록도이다.
도 2는 신경망 데이터를 나타내는 예시적인 블록도이다.
도 3은 일 예에 따른 추가 세부사항을 도시하는 도 1의 신경망 처리 블록의 블록도이다.
도 4는 일 예에 따른 일반 뉴런 레이어와 관련된 행렬 곱셈 연산을 나타내는 도이다.
도 5는 일 예에 따른 컨볼루션 연산을 나타내는 도이다.
도 6은 일 예에 따른 일괄 처리된 다중 채널 컨볼루션 연산을 나타내는 도이다.
도 7은 다중 채널의 일괄 처리된 컨볼루션이 행렬 곱셈 연산으로서 수행되는 예시적인 방법을 나타내는 도이다.
도 8은 일 예에 따른 행렬 연산을 수행하기 위한 방법의 흐름도이다.
신경망 연산을 수행하는 기술이 개시된다. 상기 기술은 제1 행렬 타일 및 제2 행렬 타일을 식별하는 단계; 상기 제1 행렬 타일에 대한 제1 범위 정보 및 상기 제2 행렬 타일에 대한 제2 범위 정보를 획득하는 단계; 상기 제1 범위 정보 및 상기 제2 범위 정보에 기초하여 행렬 곱셈 경로를 선택하는 단계; 및 타일 행렬 곱셈 곱을 생성하기 위해 상기 선택된 행렬 곱셈 경로를 이용하여 상기 제1 행렬 타일 및 상기 제2 행렬 타일에 행렬 곱셈을 수행하는 단계를 포함한다.
도 1은 일 예에 따른 신경망 처리 시스템(100)의 블록도이다. 상기 신경망 처리 시스템은 신경망 처리 블록(102) 및 신경망 데이터(104)를 포함한다. 상기 신경망 처리 블록(102)은 본 명세서에 설명된 상기 연산을 수행하는 하드웨어 회로, 본 명세서에 설명된 상기 연산을 수행하기 위해 프로세서에서 실행되는 소프트웨어, 또는 본 명세서에 설명된 상기 연산을 수행하는 프로세서에서 실행되는 소프트웨어와 하드웨어 회로의 조합으로 구현된다.
연산 시, 상기 신경망 처리 블록(102)은 신경망 입력(106)을 수신하고, 상기 신경망 데이터(104)에 따라 상기 신경망 입력(106)을 처리하여 신경망 출력(108)을 생성하고, 상기 신경망 출력(108)을 출력한다.
일부 예에서, 상기 신경망 처리 블록(102)은 본 명세서에 설명된 연산을 수행하기 위한 명령을 판독하고 실행하는 하나 이상의 프로세서를 포함하는 컴퓨터 시스템이거나 그 안에 포함된다. 일부 구현예에서, 임의의 이러한 처리 (또는 본 문서 내에 설명된 임의의 프로세서) 는 하나 이상의 메모리로부터 명령을 페치하기 위한 명령 페치 회로, 하나 이상의 메모리로부터 데이터를 페치하기 위한 데이터 페치 회로 및 명령을 실행하기 위한 명령 실행 회로를 포함한다. 다양한 예에서, 상기 신경망 처리 블록(102)의 하나 이상의 프로세서는 하나 이상의 프로세서에 대한 데이터를 입력하고 데이터를 출력하는 하나 이상의 입력 장치 및/또는 하나 이상의 출력 장치에 연결된다. 상기 신경망 데이터(104)는 상기 신경망 처리 블록(102)이 상기 신경망 출력(108)을 생성하기 위해 상기 신경망 입력(106)을 처리하는 하나 이상의 신경망을 정의하는 데이터를 포함한다.
도 2는 신경망 데이터(104)를 나타내는 예시적인 블록도이다. 상기 신경망 데이터(104)는 데이터가 흐르는 레이어(202)의 시퀀스를 포함한다. 상기 신경망 데이터(104)는 상기 데이터가 출력을 생성하기 위해 입력에 대해 수행된 상기 신경망 연산의 시퀀스를 나타내기 때문에 본 명세서에서 단순히 "신경망(104)"으로 지칭되기도 한다. 상기 신경망 처리 블록(102)은 상기 신경망 입력(106)을 상기 레이어(202)에 적용하고, 각 레이어 변환을 적용하여 상기 신경망 출력(108)을 생성한다. 각 레이어는 해당 레이어(202)에서 다음 레이어로 또는 최종 레이어(202)(N) 에 대한 상기 신경망 출력(108)으로 출력을 생성하기 위해 해당 레이어(202)에 의해 수신된 상기 입력에 적용된 자체 레이어 변환을 갖는다. 상기 신경망 데이터(104)는 신경망을 레이어(202)의 수로 정의하고 각 레이어(202)에서의 특정 변환을 정의한다. 예시적인 변환은 일반 뉴런 레이어를 포함하며, 여기서 레이어(202)의 복수의 뉴런 각각은 이전 레이어(202), 단일 요소 변환, 컨볼루션 레이어 및 풀링 레이어의 출력에 대한 연결성을 정의한다. 보다 구체적으로, 전술한 바와 같이, 각 레이어(202)는 상기 이전 레이어(202)로부터 입력 벡터를 수신한다. 일부 레이어(202)는 뉴런 세트를 포함하며, 이러한 각각의 뉴런은 상기 입력 벡터 또는 해당 전체 벡터의 정의된 서브 세트를 수신한다. 또한, 이러한 각 뉴런은 이러한 각 입력에 적용된 가중치를 갖는다. 또한, 상기 각 뉴런의 활성화는 각 입력의 상기 입력 값과 각 입력의 상기 가중치의 상기 곱의 합이다 (따라서 이러한 각 활성화는 해당 뉴런의 상기 입력 벡터와 해당 뉴런의 상기 가중치 벡터의 내적이다).
단일 요소 변환이 적용되는 레이어(202)는 상기 입력 벡터를 수신하고, 해당 입력 벡터의 각 요소에 대해 정의된 일부 변환이 적용된다. 예를 들어, 변환에는 클램핑 기능 또는 일부 다른 비선형 기능이 포함된다. 풀링을 적용하는 레이어(202)는 기술적으로 실행 가능한 모든 방식으로 입력을 다운 샘플링하는 다운 샘플링 기능에 기초하여 상기 입력 벡터에 다운 샘플링을 수행하며 상기 입력 벡터보다 크기가 작은 출력 벡터를 생성한다. 컨볼루션을 적용하는 레이어(202)는 상기 입력 데이터의 필터 컷아웃에 내적이 적용되고 상기 출력을 생성하기 위해 벡터를 필터링하는 컨볼루션 연산을 적용한다.
상기 일반 뉴런 레이어 및 상기 컨볼루션 레이어와 같은 여러 유형의 레이어 연산은 행렬 곱셈으로 구현된다. 보다 구체적으로, 일반 뉴런 레이어에서 상기 뉴런의 활성화 기능의 계산은 내적이기 때문에, 이러한 계산은 행렬 곱셈에 의해 정의된 일련의 내적 연산으로 구현될 수 있다. 유사하게, 컨볼루션 연산에서 상기 필터의 적용은 내적으로 수행되기 때문에, 행렬 곱셈 연산을 사용하여 컨볼루션 레이어를 구현할 수 있다. 부동 소수점 수를 포함하는 큰 행렬 곱셈 연산은 수행되는 부동 소수점 곱셈 연산의 복잡성과 수로 인해 많은 양의 전력을 소비할 수 있다. 따라서, 특정 상황에서 전력 사용량을 줄이는 기술이 본 명세서에 제공된다.
도 3은 일 예에 따른 추가 세부사항을 도시하는 도 1의 신경망 처리 블록(102)의 블록도이다. 상기 신경망 처리 블록(102)은, 상기 신경망 처리 블록(102)이 행렬 곱셈을 사용하는 레이어(202)에 대한 행렬 곱셈을 수행하는 데 사용하는 타일 행렬 곱셈기(302)를 포함한다.
레이어(202)에 대한 행렬 곱셈을 수행하는 과정에서, 상기 신경망 처리 블록(102)은 레이어 입력(308) 및 레이어 가중치(309)를 수신하고, 레이어 입력(310)의 범위 메타데이터 및 가중치(316)의 범위 메타데이터를 생성하거나 수신한다. 상기 레이어 입력(308)은 행렬 곱셈을 사용하는 특정 레이어(202)에 대한 입력을 포함한다. 상기 레이어 가중치(309)는 일반 뉴런 레이어에 대한 뉴런 연결 가중치 또는 컨볼루션 레이어에 대한 필터 가중치를 포함한다. 상기 레이어 입력(308)은 일련의 레이어 입력 타일(312)을 포함하며, 이들 각각은 레이어 입력을 나타내는 입력 행렬의 부분이다. 상기 레이어 가중치(309)는 가중치 타일(313)로 분할된 상기 레이어에 대한 일련의 가중치이다. 상기 가중치(316)에 대한 상기 범위 메타데이터는 각 가중치 타일(318)의 범위 메타데이터를 포함한다. 범위 메타데이터의 각 항목은 해당 가중치 타일(313)의 범위를 나타낸다. 레이어 입력(310)에 대한 상기 범위 메타데이터는 각 레이어 입력 타일(312)의 범위 메타데이터를 포함한다. 레이어 입력 메타데이터의 각 항목은 해당 레이어 입력 타일(312)의 범위를 나타낸다.
상기 범위 (가중치 범위(318) 및 입력 범위(311))는 상기 해당 가중치 타일(313) 또는 입력 타일(312)에 대한 값의 범위를 나타낸다. 일 예에서, 특정 타일의 상기 범위는 -1 내지 1이며, 이는 상기 타일의 모든 요소가 -1 내지 1 사이임을 의미한다. 다른 예에서, 범위는 -256 내지 256이고, 다른 예에서, 범위는 상기 전체 범위 (즉, 상기 가중치의 상기 데이터 항목으로 표현할 수 있는 최대 범위) 이다.
상기 레이어 입력(308)에 의해 상기 레이어 가중치(309)의 행렬 곱셈을 수행할 때, 상기 타일 행렬 곱셈기(302)는 부분 행렬 곱을 생성하기 위해 레이어 가중치 타일(313)과 레이어 입력 타일(312)의 행렬 곱셈을 수행하고 상기 부분 행렬 곱을 조합하여 레이어 출력(320)을 생성한다. 상기 부분 곱을 생성하기 위해 곱해지는 상기 특정 레이어 입력 타일(312)과 가중치 타일(313) 및 이러한 부분 곱이 상기 레이어 출력(320)을 생성하기 위해 조합하는 방식은 상기 레이어의 특성에 따라 결정된다. 일부 예는 본 설명의 다른 부분에 예시되어 있다.
가중치 타일(313)에 의한 레이어 입력 타일(312)의 특정 곱셈을 수행함에 있어서, 상기 타일 행렬 곱셈기는 상기 가중치 타일(318)에 대한 상기 범위 메타데이터 및 상기 입력 타일(311)에 대한 상기 범위 메타데이터를 검출하고, 곱셈 경로(306)를 선택하여 해당 곱셈을 수행한다. 상이한 곱셈 경로(306)는 상이한 범위 조합에 대해 구성되며, 여기서 조합은 레이어 입력 타일(311)의 범위 및 가중치 타일(318)의 범위로 정의된다. 더 제한된 범위의 조합을 위해 구성된 곱셈 경로(306)는 더 넓은 범위 세트의 조합을 위해 구성된 곱셈 경로(306)보다 전력을 더 적게 소비한다. 곱셈 경로(306)는 최대 고정 크기의 두 행렬에 대한 행렬 곱셈을 수행하도록 구성된 회로이다. 본 명세서의 다른 곳에서 설명된 타일식 곱셈 접근법으로 상기 곱셈 경로(306)를 사용하여 이 크기보다 더 큰 두 행렬을 곱하는 것이 가능하다. 간단히 말해서, 이 타일식 곱셈 접근법은 상기 입력 행렬을 타일로 나누는 단계, 이러한 타일을 함께 곱하여 부분 곱을 생성하는 단계 및 상기 부분 곱을 합산하여 상기 최종 출력 행렬을 생성하는 단계를 포함한다. 일부 구현예에서, 각각의 곱셈 경로(306)는 동일한 크기의 피승수 행렬에 대해 구성된다.
더 제한된 범위의 곱셈 경로(306)에 대한 전력 감소는 더 간단한 회로를 통해 달성된다. 일 예에서, 행렬 곱셈에는 부분 내적을 생성하기 위해 내적 승수를 곱하고 최종 내적을 생성하기 위해 부분 내적을 합산하는 것을 포함하는 내적 수행이 포함된다. 상기 부분 내적의 지수는 상기 부분 내적을 합산할 때 폐기되는 부분 내적을 궁극적으로 결정하고, 충분히 작은 지수를 가진 부분 내적은 가장 큰 지수를 가진 상기 부분 곱으로 나타낼 수 있는 최소 단위보다 충분히 작은 것이기 때문에 상기 최종 내적에 기여하지 않는다. 이러한 폐기를 용이하게 하기 위해, 상기 곱셈 경로(306) 중 적어도 일부는 폐기할 부분 내적을 결정하기 위해 상기 부분 내적의 지수를 비교하는 회로를 포함한다. 그러나, 이 비교는 전력을 소비한다. 범위 메타데이터를 이용하면 상기 가중치 타일(313) 및 상기 입력 타일(312) 중 하나 또는 둘 모두가 특정 범위 내에 맞는 경우 더 적은 수의 지수 비교가 이루어질 수 있게 한다. 따라서, 상기 타일 행렬 곱셈기(302)가 가중치 타일(313)과 입력 타일(312)의 곱셈을 수행하여 부분 행렬 곱을 생성하는 경우, 상기 타일 행렬 곱셈기(302)는 상기 입력 타일(312)에 대한 상기 입력 타일 범위(311) 및 상기 가중치 타일(313)에 대한 가중치 타일 범위(318)를 검사하고, 이러한 범위에 적절한 곱셈 경로(306)를 선택한다.
상기 신경망 처리 블록(102)은 다음의 방식으로 상기 신경망(104)에 대한 처리를 수행한다. 상기 신경망 처리 블록(102)은 상기 신경망(104)에 대한 입력(106)을 수신하고, 이러한 입력을 상기 제1 레이어(202)에 제공한다. 상기 신경망 처리 블록(102)은 해당 레이어(202)에서 이러한 입력을 처리하여 출력을 생성하고, 이러한 출력을 상기 다음 레이어(202)에 제공하며, 상기 신경망 처리 블록(102)이 상기 신경망 출력(108)을 생성할 때까지 이 처리를 계속한다. 행렬 곱셈을 통해 구현된 하나 이상의 레이어(202)(예를 들어, 일반 뉴런 레이어 또는 컨볼루션 레이어)에 대해, 상기 신경망 처리 블록(102)은 상기 곱할 행렬의 범위 데이터(예를 들어, 가중치(316)에 대한 상기 범위 메타데이터 및/또는 레이어 입력(310)에 대한 상기 범위 메타데이터를 포함)를 생성하거나 획득하고, 해당 범위 메타데이터에 기초하여 선택된 곱셈 경로(306)를 사용하여 상기 행렬 곱셈을 수행한다. 일부 구현예에서, 상기 신경망 처리 블록(102)은 CPU (일부 구현예에서 운영 체제를 실행함) 와 같은 외부 프로세서로부터의 개입 없이 이 범위 메타데이터를 획득하거나 생성한다. 일부 구현예에서, 상기 신경망 처리 블록(102)은 이 범위 메타데이터를 자동적으로 획득하거나 생성한다. 일부 구현예에서, 상기 신경망 처리 블록(102)은 상기 신경망 처리 블록(102)의 일부가 아닌 프로세서에 의해 그렇게 하도록 지시받지 않고 이 메타데이터를 획득하거나 생성한다. 일부 구현예에서, 상기 신경망 처리 블록(102)은 상기 신경망 처리 블록(102) 외부에 있는 메모리로 이러한 입력을 전달하지 않고 레이어(202)의 입력에 대한 이 메타데이터를 획득하거나 생성한다. 보다 구체적으로, 일부 구현예에서, CPU 또는 다른 프로세서는 레이어(202)에 의해 생성된 상기 출력 데이터를 CPU 또는 다른 프로세서에 의해 액세스 가능한 메모리로 판독하고, 해당 출력 데이터에 대한 상기 범위 메타데이터를 생성하고, 후속 레이어(202)에 상기 범위 메타데이터를 제공한다. 일부 구현예에서, 상기 신경망 처리 블록(102)은 상기 CPU 또는 다른 프로세서의 개입 없이 그리고 상기 출력 데이터가 상기 CPU 또는 다른 프로세서에 의해 액세스 가능한 상기 메모리로 판독될 것을 요구하지 않고, 이러한 범위 메타데이터 생성을 수행한다.
일부 구현예에서, 상기 신경망 처리 블록(102)은 신경망(104)을 통해 입력을 처리하는 동안 가중치(316)에 대한 상기 범위 메타데이터를 생성하지 않는다. 대신, 상기 신경망 처리 블록(102)은 상기 가중치(316)가 상기 신경망(104)을 통해 입력을 처리하는 임의의 특정 사례에 대해 정적이기 때문에 신경망(104)을 통해 입력을 처리하기 전에 상기 가중치(316)에 대한 상기 범위 메타데이터를 생성한다. 행렬 곱셈으로 구현되는 레이어(202)에 대한 입력이 페치될 때, 상기 신경망 처리 블록(102)은 해당 레이어의 상기 가중치에 대해 미리 생성된 범위 데이터를 페치하고, 해당 레이어(202)의 상기 레이어 입력(310)에 대한 상기 범위 메타데이터를 획득한다.
도 4는 일 예에 따른 일반 뉴런 레이어와 관련된 행렬 곱셈 연산을 도시한다. 상기 레이어(202) 중 임의의 레이어는 일반 뉴런 레이어로 구현될 수 있다. 예시적인 신경망 부분(400)은 제1 뉴런 레이어(402 (1)), 제2 뉴런 레이어(402 (2)) 및 제3 뉴런 레이어(402 (3))를 포함한다. 상기 제1 뉴런 레이어(402 (1))에서, 뉴런 N1,1은 가중치 W1,1,1을 입력 1에 적용하고 W1,2,1을 입력 2에 적용하여 W1,1,1*입력 1 + W1,2,1 *입력 2와 같은 활성화 출력을 생성한다. 유사하게, 뉴런 N1,2는 W1,1,2*입력 1 + W1,2,1 *입력 2와 같은 출력을 생성한다. 상기 다른 뉴런 레이어(402)에 대한 활성화는 도시된 상기 가중치 및 입력과 유사하게 계산된다.
도 4는 입력의 다수 세트 (또는 배치) 에 대한 상기 제2 뉴런 레이어(402 (2))의 행렬 곱셈 연산을 도시한다. 입력 세트는 입력 데이터의 독립적인 사례이다. 잠시 도 2를 참조하면, 다수의 상이한 신경망 입력 데이터(106) 세트를 동시에 상기 신경망 데이터(104)에 적용하여 다수의 신경망 출력(108) 세트를 생성하는 것이 가능하며, 이를 통해 다수의 신경망 순방향 전파 연산이 병렬로 수행될 수 있다.
도 4에서, 상기 행렬 곱셈(404) 연산은 세개의 상이한 입력 데이터 세트에 대해 도시된다. 도시된 상기 제1 행렬(406)은 상기 레이어 (402 (2)) 의 뉴런에 대한 상기 입력의 행렬이다. 이러한 입력을 설명된 이전 뉴런의 상기 활성화, 특히 N1,1 활성화 및 N1,2 활성화라고 한다. 따라서, 상기 입력 행렬(406)은 상기 세개의 상이한 세트에 대한 뉴런 N1,1 및 N1,2로부터의 활성화를 포함한다. 이러한 활성화에 대한 표기법은 AX, Y,Z이며, X 및 Y는 상기 뉴런을 정의하고 Z는 상기 입력 세트를 정의한다. 상기 제2 행렬(408)은 상기 제1 레이어(402 (1))의 뉴런과 상기 제2 레이어(402 (2))의 뉴런 사이의 연결의 상기 가중치를 포함한다. 상기 가중치는 WX, Y,Z로 표시되며, X 및 Y는 상기 가중치가 가리키는 뉴런을 나타내고, Z는 상기 가중치가 유래하는 뉴런을 나타낸다.
상기 행렬 곱셈은 상기 활성화 행렬(410)을 얻기 위해 상기 가중치 행렬의 열에 의해 상기 입력의 각 행의 내적을 수행하는 것을 포함한다. 상기 활성화 행렬의 각 행은 상이한 입력 세트에 해당하고 각 열은 레이어(402 (2))의 상이한 뉴런에 해당하며, 내적은 예시된 바와 같이 생성된다.
전술한 바와 같이, 상기 타일 행렬 곱셈기(302)는 상기 행렬을 타일로 분해하고, 상기 타일을 함께 곱하여 부분 행렬 곱을 생성하고, 상기 부분 행렬 곱을 합산하여 상기 최종 출력 행렬을 생성함으로써 행렬을 곱한다. 상기 타일 행렬 곱셈기(302)는 상기 적절한 범위 메타데이터에 기초하여 각 타일-대-타일 곱셈에 대한 곱셈 경로(306)를 선택한다.
큰 행렬을 더 작은 행렬(타일)로 나누어 큰 행렬에 곱하는 방법의 예가 이제 제공된다.
Figure pct00001
x
Figure pct00002
=
Figure pct00003
표 1: 행렬 곱셈의 예
상기 도시된 바와 같이, 행렬 곱셈 연산에 있어서, 상기 행렬 곱에서 x, y 좌표를 갖는 요소는 상기 제1 행렬의 X' 행과 상기 제2 행렬의 Y' 열의 상기 내적을 생성함으로써 생성된다. 상기 동일한 행렬 곱셈은 상기 피승수 행렬의 각각을 타일로 나누고 각 타일을 "굵은" 피승수 행렬의 요소로 처리하여, 이러한 "굵은" 행렬에 행렬 곱셈을 수행함으로써 타일 방식으로 수행될 수 있다. 이러한 굵은 행렬의 상기 곱의 좌표 x, y를 갖는 각 요소는 상기 제1 굵은 행렬의 X' 행과 상기 제2 굵은 행렬의 Y' 열의 "굵은 내적" 으로 인한 행렬이다. 굵은 내적은 곱셈이 행렬 곱셈으로 대체되고 덧셈이 행렬 덧셈으로 대체되는 점을 제외하고는 상기 내적과 동일하다. 이러한 내적은 두 타일의 상기 행렬 곱셈을 포함하기 때문에, 이 곱셈은 부분 행렬 곱을 생성하기 위해 타일 대 타일 행렬 곱셈을 수행하고, 그 다음 상기 최종 곱에 도달하기 위해 해당 부분 행렬 곱을 추가하는 하드웨어에 매핑할 수 있다. 상기 타일 행렬 곱셈기(302)는 각 타일 대 타일 행렬 곱셈에 대한 곱셈 경로(306)를 선택하기 위해, 상기 저장된 범위 메타데이터를 사용하여 타일링된 피승수 행렬을 곱하기 위해 위의 연산을 수행한다.
하기 예에서 표 1의 행렬 곱셈은 타일식 방식으로 수행된다. 행렬 곱셈:
Figure pct00004
x
Figure pct00005
다음과 같이 표현될 수 있다.
Figure pct00006
x
Figure pct00007
여기서, M 요소 및 N 요소는 타일이고,
M1,1 =
Figure pct00008
, M2,1=
Figure pct00009
, M1,2 =
Figure pct00010
, M2.2 =
Figure pct00011
; 및
N1,1 =
Figure pct00012
, N2,1 =
Figure pct00013
, N1,2 =
Figure pct00014
, N2.2 =
Figure pct00015
이다.
표 2: 타일식 행렬 곱셈
따라서, 상기 행렬 곱은 다음과 같이 표현될 수 있다.
Figure pct00016
여기서 각 요소는 타일의 행렬 곱의 합이다. M 타일에 N 타일을 곱하는 것은 표준 행렬 곱셈을 통해 수행된다. 상기 내용은 상기 행렬을 2 x 2 타일로 나누고, 해당 행렬을 곱하여 부분 행렬 곱을 생성하고 상기 최종 행렬 곱을 생성하기 위해 상기 부분 행렬 곱을 합산하는 두 개의 4 x 4 행렬의 행렬 곱셈을 수행하는 방법을 보여준다. 일부 구현예에서, 도 4에 설명된 유형의 일반 뉴런 행렬 곱셈에 대해, 상기 가중치 타일(313) 및 입력 타일(312)은 상기 가중치 행렬 및 상기 입력 행렬 (하나 이상의 입력 세트에 대한)을 타일로 나누는 것을 나타낸다. 도 3의 상기 범위 메타데이터는 각 타일 (M 타일 또는 N 타일) 에 대해 특정된다.
행렬 곱셈으로 구현되는 또 다른 유형의 신경망 연산은 컨볼루션이다. 도 5는 일 예에 따른 컨볼루션 연산(500)을 도시한다. 상기 컨볼루션 연산에서, 입력 행렬(502) (예를 들어, 이미지 또는 다른 행렬 데이터) 은 출력 행렬(506)을 생성하기 위해 필터(504)와 컨볼루션된다. 상기 입력 행렬(502) 내에 여러 필터 컷아웃(508)이 도시되어 있다. 각 필터 컷아웃은 상기 출력 행렬(506)의 요소 O를 생성하기 위해 상기 필터(504)로 내적이 수행되는 상기 입력 행렬(502)의 일부를 나타낸다. 각 필터 컷아우에 대한 상기 연산은 행렬 곱셈이 아니라 상기 필터 컷아웃과 상기 필터의 요소를 1차원 벡터로 배치하여 생성된 두 벡터가 있는 내적이라는 점에 유의한다. 따라서, 출력 요소 O1,1은 I1,1F1,1 + I2,1F2,1 + I3,1F3,1 + I1,2F 1,2 ... + I2,3F2,3 + I3,3F 3,3과 같다. 상기 필터(504)는 도시된 바와 같이 S×R 차원을 갖고 상기 출력 행렬(506)은 Q×P 차원을 갖는다.
상기 필터 컷아웃(508)의 위치는 수평 스트라이드(510) 및 수직 스트라이드(512)에 의해 정의된다. 보다 구체적으로, 상기 제1 필터 컷아웃(508)은 상단 좌측 코너에 위치하고, 상기 수평 스트라이드(510)는 각각의 후속 필터 컷아웃(508)이 이전 필터 컷아웃으로부터 오프셋되는 상기 수평 방향의 입력 행렬 요소의 수를 정의한다. 수평으로 정렬된 (즉, 모든 요소가 정확히 동일한 행에 있음) 필터 컷아웃(508)은 본 명세서에서 필터 컷아웃 행으로 지칭된다. 상기 수직 스트라이드(512)는 각 필터 컷아웃 행이 상기 이전 필터 컷아웃 행으로부터 오프셋되는 상기 수직 방향의 입력 행렬 요소의 수를 정의한다.
일 예에서, 컨볼루션 연산을 행렬 곱셈 연산으로 변환하는 단계는 다음과 같이 수행된다. 각 필터 컷아웃은 입력 피승수 행렬에 배치하기 위한 행의 요소로 배치된다. 이 행은 수직으로 적층되므로 상기 입력 행렬은 일련의 행이고, 각 행은 상이한 필터 컷아웃에 해당하며 각 행에는 해당 필터 컷아웃의 요소가 포함된다. 상기 필터 데이터는 수직으로 배열되어 필터 벡터를 형성한다. 이는 상기 필터 벡터에 의한 상기 입력 데이터의 행렬 곱셈이 상기 출력 이미지(506)를 생성하는 것을 허용하고, 그 이유는 이러한 행렬 곱셈은 상기 출력 이미지(506)의 출력 요소를 생성하기 위해 상기 필터 데이터와 각 필터 컷아웃(508)의 내적을 수행하는 것을 포함하기 때문이다. 이 행렬 곱셈의 상기 출력은 2차원 이미지가 아닌 벡터이지만, 이 벡터는 적절한 형식으로 쉽게 재배열되거나, 상기 벡터가 필요에 따라 적절한 형식으로 바로 처리될 수 있다는 점에 유의한다.
도 6은 일 예에 따른 일괄 처리된 다중 채널 컨볼루션 연산(600)을 도시한다. 일괄 처리된 다중 채널 컨볼루션 연산에서, N개의 입력 세트(610)는 각각 K개의 필터 세트(612)와 컨볼루션되며, 여기서 각 입력 세트(610) 및 각 필터 세트(612)는 각각 C개의 채널을 갖는다. 상기 생성된 출력은 N개의 출력 세트(615)이고, 각 출력 세트(615)는 K개의 출력 이미지를 갖는다.
다중 채널 컨볼루션 연산에는 다중 입력 이미지(502) 및 다중 필터(504)가 있으며, 여기서 각 입력 이미지(502) 및 각 필터(504)는 특정 채널과 연관된다. 상기 다중 채널 컨볼루션은 특정 채널의 상기 입력 이미지를 동일한 채널의 상기 필터로 컨볼루션하는 것을 포함한다. 각 채널에 대해 이러한 다중 컨볼루션 연산을 수행하면 각 채널에 대한 출력 이미지가 생성된다. 이어서, 이러한 출력 이미지는 특정 입력 세트(610) 및 특정 필터 세트(612)에 대한 컨볼루션의 상기 최종 출력 이미지를 획득하기 위해 합산된다. 상기 출력 이미지는 입력 세트 (610)가 주어진 출력 세트(615)를 생성하기 위해 각 입력 세트(610)에 대해 K회 생성된다. 총 출력(606)은 N개의 출력 세트(615)이고, 여기서 각 출력 세트는 K개의 출력 이미지를 포함한다. 따라서, K개의 출력 이미지가 각 입력 세트(610)에 대해 생성되고 K개의 필터 세트(612)가 있기 때문에 출력 이미지의 상기 총 수는 K x N이다.
도 7은 다중 채널의 일괄 처리된 컨볼루션이 행렬 곱셈 연산으로 수행되는 방법의 예를 도시한다. 이 예는 다중 채널, 다중 입력 이미지(N) 및 다중 필터 세트(K)에 대해 설명되지만, 본 명세서에 제시된 교시는 배치되지 않은 컨볼루션 또는 하나의 입력 이미지(N=1), 하나의 필터 세트(K=1) 및/또는 하나의 채널(C=1)을 포함하는 콘볼루션에 적용된다는 점에 유의한다.
상기 입력 데이터(702)는 C개의 채널, N개의 입력 세트(610) 및 PxQ 필터 컷아웃에 대한 데이터를 포함한다. 출력 이미지(506)가 PxQ 요소를 갖기 때문에 입력 세트(610)당 PxQ 필터 컷아웃이 있고, 이러한 요소 각각은 필터와 하나의 필터 컷아웃의 내적을 사용하여 생성된다. 상기 필터 컷아웃은 상기 입력 데이터(702)의 행으로 배열된다. 상기 입력 데이터(702)의 단일 행은 특정 입력 세트(610)로부터의 특정 필터 컷아웃에 대해 수평으로 배열된 모든 채널을 포함한다. 따라서, 상기 입력 데이터(702)에는 N x P x Q 행이 존재하며, 각 행은 모든 채널 및 특정 입력 이미지 세트(610) 및 특정 필터 컷아웃에 대한 필터 컷아웃 데이터를 포함한다.
상기 필터 데이터(704)는 K개의 필터 세트를 포함하고, 각 필터 세트(612)는 각각 C개의 필터 (각 채널에 대해 하나씩) 를 갖는다. 각 필터는 상기 K개의 필터 세트(612) 중 하나의 일 채널에 대한 상기 데이터를 포함한다. 개별 필터에 대한 상기 데이터는 수직으로 배열되며, 단일 필터 세트(612)의 모든 채널에 대한 상기 데이터는 하나의 열에 속하고 총 K개의 열은 상기 필터 데이터(704)에 존재한다.
상기 출력 행렬(706)은 상기 K개의 필터 세트 각각에 대한 N개의 출력 이미지를 포함한다. 상기 출력 행렬(706)은 상기 입력 데이터(702)와 상기 필터 데이터(704)의 정규 행렬 곱셈 연산으로서 생성된다. 이 연산을 타일 방식으로 수행하기 위해, 상기 타일 행렬 곱셈기(302)는 상기 입력 데이터(702) 및 상기 필터 데이터(704) 각각에서 타일을 생성하고, 해당 타일을 함께 곱하여 부분 행렬 곱을 생성하며, 요소가 타일인 "거친" 행렬을 곱하는 것과 관련하여 본 명세서의 다른 곳에서 설명된 방식으로 부분 행렬 곱을 함께 추가한다. 입력 타일(720) 및 필터 데이터 타일(722)은 타일이 상기 입력 데이터(702) 및 필터 데이터(704)로부터 형성될 수 있는 방법을 예시하기 위해 도시되지만, 이러한 타일은 임의의 크기일 수 있다.
상기 곱셈은 하기 방식으로 상기 출력 데이터를 생성한다. 상기 입력 데이터(702)의 각 행은 상기 출력 이미지(706)의 요소를 생성하기 위해 상기 필터링된 데이터(704)의 각 열에 벡터 곱하기 된다. 이 벡터 곱셈은 특정 필터 세트가 있는 특정 필터 컷아웃의 모든 채널의 상기 내적에 해당한다. 상기 채널 컨볼루션 출력이 합산되어 주어진 입력 배치 및 필터 세트에 대한 출력을 생성하기 때문에, 상기 내적은 이러한 출력을 생성하도록 작동한다는 점에 유의한다. 대응하는 벡터 곱은 각 입력 세트 및 각 필터 세트에 대해 수행되어 출력 데이터(706)를 생성한다.
상기 입력 데이터(702)가 중복 데이터를 포함할 수 있음에 유의한다. 보다 구체적으로, 잠시 도 5를 다시 참조하면 필터 컷아웃(5081,1) 및 필터 컷아웃(5082,1)은 입력 행렬 요소 I3,1, I3,2 및 I3,3을 공유한다. 또한, 다시 도 7을 참조하면, 상기 입력 데이터의 타일(720)이 동적으로 생성되는 경우가 많다. 이러한 이유로, 일부 구현예에서, 상기 레이어 입력 범위 메타데이터(310)는 입력 데이터 타일(720) 단위가 아니라 범위 메타데이터 블록(503) 단위로 저장된다. 범위 메타데이터 블록(503)은 입력 이미지 타일(720)이 생성되는 입력 이미지(502)의 일부이다. 특정 범위 메타데이터 블록(503)으로부터 생성된 모든 입력 이미지 타일(720)에는 상기 범위 메타데이터 블록(503)의 범위가 할당된다. 입력 이미지 타일(720)이 다중 범위 메타데이터 블록(503)으로부터 생성되는 경우, 이러한 타일(720)에는 다중 범위 메타데이터 블록(503)의 범위 중에서 가장 넓은 범위가 할당된다. 이 구성은 단일 범위 메타데이터 블록(503)으로부터 생성된 모든 입력 데이터 타일(720)이 해당 범위 메타데이터 블록(503)에 대해 저장된 상기 범위 메타데이터를 사용하도록 허용하기 때문에 레이어 입력 범위 메타데이터(310)가 결정되어야 하는 횟수를 줄인다.
범위 메타데이터 블록은 다중 필터 컷아웃(508)을 포함한다. 일부 예에서, 범위 메타데이터 블록(503)은 전체 필터 컷아웃 행 또는 다중 필터 컷아웃 행을 포함한다.
도 8은 일 예에 따른 행렬 연산을 수행하기 위한 방법(800)의 흐름도이다. 도 1 내지 도 7의 시스템에 관련하여 설명되었지만, 당업자는 임의의 기술적으로 실현 가능한 순서로, 상기 방법(800)의 단계를 수행하도록 구성된 임의의 시스템이 본 개시의 범위 내에 속함을 이해할 것이다.
상기 방법(800)은 타일 행렬 곱셈기(302)가 함께 곱할 제1 타일 및 제2 타일을 식별하는 단계(802)에서 시작된다. 다양한 구현예에서, 상기 제1 타일은 곱할 제1 행렬의 타일이고, 상기 제2 타일은 상기 제1 행렬에 곱해질 제2 행렬의 타일이다. 일부 구현예에서, 행렬의 타일은 해당 행렬의 상기 요소의 서브 세트를 포함하는 해당 행렬의 서브 행렬이다. 보다 구체적으로, 본 명세서의 다른 곳에서 설명된 바와 같이, 두 개의 큰 행렬의 행렬 곱의 결과는 이러한 행렬 중 하나 또는 둘 모두를 타일로 나누고 표준 행렬 곱셈 요소 순서와 유사한 순서로 이러한 타일을 함께 곱함으로써 얻을 수 있다(즉, 각 행 및 각 열의 내적을 획득함). 이는 상대적으로 작은 크기의 행렬에 대해 구성된 행렬 곱셈 회로가 더 큰 행렬을 함께 곱하는 데 사용되도록 허용한다.
단계(804)에서, 상기 타일 행렬 곱셈기(302)는 상기 제1 행렬 타일에 대한 제1 범위 정보 및 상기 제2 행렬 타일에 대한 제2 범위 정보를 획득한다. 상기 제1 범위 정보는 상기 제1 행렬 타일의 모든 요소가 맞는 범위를 나타내고 상기 제2 범위 정보는 제2 행렬 타일의 모든 요소가 맞는 범위를 나타낸다.
단계(806)에서, 상기 타일 행렬 곱셈기(302)는 상기 제1 범위 정보 및 상기 제2 범위 정보에 기초하여 행렬 곱셈 경로(306)를 선택한다. 상이한 곱셈 경로(306)는 상이한 범위 조합을 위해 구성된다. 더 넓은 범위의 조합을 위해 구성된 곱셈 경로(306)는 더 좁은 범위의 조합을 위해 구성된 곱셈 경로(306)보다 더 복잡하고 더 많은 전력을 소비한다. 따라서, 상이한 타일 대 타일 곱셈을 위한 곱셈 경로(306)를 선택하기 위해 상기 범위 정보를 사용하는 것은 전체적으로 사용되는 전력의 양을 줄인다.
일부 구현예에서, 더 제한된 범위에 대한 곱셈 경로(306)는, 더 제한된 범위에 대한 곱셈 경로(306)는 부분 행렬 곱을 합산함에 있어서 어떤 부분 행렬 곱을 폐기할지 결정 할 때 부분 행렬 곱의 지수 값을 비교하기 위한 더 적은 회로를 포함하기 때문에, 더 넓은 범위에 대한 곱셈 경로(306)보다 더 간단하다. 보다 구체적으로, 행렬 곱셈은 곱셈 곱을 합산하는 내적을 수행하는 것을 포함한다. 부동 소수점 덧셈에서, 두 숫자 사이의 덧셈은 너무 작은 숫자를 단순히 폐기하는 것을 포함할 수 있고, 이 폐기는 지수 크기 사이의 비교에 대한 응답으로 수행된다. 행렬 곱셈에서 매우 넓은 범위의 숫자를 사용하면 이러한 지수 비교가 더 많이 수행되므로 추가 특정 회로를 필요로 한다. 따라서, 더 제한된 범위에 대한 곱셈 경로(306)는 더 적은 양의 회로로 구현되고, 따라서 더 넓은 범위에 대한 곱셈 경로(306)보다 전력을 적게 소비한다.
단계 808에서, 상기 선택된 곱셈 경로(306)는 상기 제1 타일 및 제2 타일에 대한 행렬 곱셈을 수행한다.
일부 예에서, 상기 방법(800)은 또한 상기 제1 타일 및 상기 제2 타일에 대한 상기 범위 정보를 검출하는 단계를 포함한다. 일부 예에서, 상기 제1 타일 및 제2 타일은 신경망(104)의 레이어(202)를 구현하는 데 사용되는 행렬의 타일이다. 이전 레이어(202)으로부터 상기 출력을 생성하는 것에 응답하여, 상기 신경망 처리 블록(102)은 해당 출력에 기초하여 상기 범위 정보를 생성하고, 상기 범위 메타데이터를 저장하는 메모리에 해당 범위 정보를 저장한다.
일부 예에서, 행렬 곱셈이 수행되는 상기 레이어는 도 4에 도시된 상기 레이어(402)와 같은 일반 뉴런 레이어이다. 이 예에서, 상기 신경망 처리 블록(102)은 이전 레이어(402)로부터의 뉴런 입력의 벡터를 포함하는 레이어(402)의 상기 입력을 조사하고, 해당 데이터에 기초하여 타일을 생성하고, 이러한 타일에 대한 상기 범위 정보를 결정한다. 일부 구현예에서, 상기 타일은 도 4에 예시된 바와 같이 일괄 처리된 뉴런 입력을 포함하는 행렬의 일부이다. 이러한 일괄 처리된 입력에서, 상기 제1 행렬은 여러 입력 세트 각각에 대한 뉴런 입력 값의 벡터를 포함한다. 세트는 상기 신경망(104)을 통해 처리되는 독립적인 데이터이다.
일부 예에서, 행렬 곱셈이 수행되는 상기 레이어는 컨볼루션 레이어이다. 도 7에 설명된 바와 같이, 상기 입력 행렬은 입력 데이터(702)와 필터 데이터(704)를 포함한다. 그러나, 이 입력은 도 5에 도시된 상기 입력 이미지(502)의 형태로 제공된다. 상기 신경망 처리 블록(102)은 상기 입력 이미지의 범위 메타데이터 블록(503)의 상기 범위를 결정하고 본 명세서의 다른 곳(예를 들어, 도 5 내지 도 7과 관련하여)에 설명된 바와 같이 이러한 컨볼루션 레이어를 처리한다.
본원의 개시에 기초하여 많은 변형이 가능하다는 것을 이해해야 한다. 특징 및 요소가 특정 조합으로 위에서 설명되어 있지만, 각각의 특징 또는 요소는 다른 특징 및 요소 없이 단독으로 또는 다른 특징 및 요소와 함께 또는 이것 없이 다양한 조합으로 사용될 수 있다.
도면에 예시 및/또는 본 명세서에 설명된 다양한 기능 유닛 (적절한 경우, 상기 신경망 처리 블록(102) 및 상기 타일 행렬 곱셈기(302)를 포함)은 하드웨어 회로, 프로그래밍 가능한 프로세서에서 실행되는 소프트웨어 또는 하드웨어와 소프트웨어의 조합으로 구현될 수 있다. 제공된 방법은 범용 컴퓨터, 프로세서, 또는 프로세서 코어에서 구현될 수 있다. 적합한 프로세서는, 예를 들어, 범용 프로세서, 특수 목적 프로세서, 종래의 프로세서, 디지털 신호 프로세서(DSP), 복수의 마이크로프로세서, DSP 코어와 관련된 하나 이상의 마이크로프로세서, 제어기, 마이크로컨트롤러, ASIC(Application Specific Integrated Circuit), FPGA(Field Programmable Gate Array) 회로, 임의의 다른 유형의 IC(integrated circuit) 및/또는 상태 기계를 포함한다. 이러한 프로세서는 처리된 하드웨어 설명 언어(hardware description language, HDL) 명령 및 넷리스트를 포함하는 다른 중간 데이터(이러한 명령은 컴퓨터 판독 가능한 매체에 저장될 수 있음)의 결과를 사용하여 제조 프로세스를 구성함으로써 제조될 수 있다. 이러한 처리의 결과는 실시예의 양태를 구현하는 프로세서를 제조하기 위해 반도체 제조 공정에서 그 다음에 사용되는 마스크 작업일 수 있다.
본원에 제공된 방법 또는 흐름도는, 범용 컴퓨터 또는 프로세서에 의한 실행을 위해 비일시적 컴퓨터 판독가능 저장 매체에 통합된 컴퓨터 프로그램, 소프트웨어, 또는 펌웨어에서 구현될 수 있다. 비일시적 컴퓨터 판독가능 저장 매체의 예는 ROM(read only memory), RAM(random access memory), 레지스터, 캐시 메모리, 반도체 메모리 장치, 내부 하드 디스크 및 탈착식 디스크와 같은 자기 매체, 자기 광학 매체, 및 CD-ROM 디스크 및 DVD(digital versatile disk)와 같은 광학 매체를 포함한다.

Claims (20)

  1. 신경망 연산을 수행하는 방법으로서, 상기 방법은
    제1 행렬 타일 및 제2 행렬 타일을 식별하는 단계;
    상기 제1 행렬 타일에 대한 제1 범위 정보 및 상기 제2 행렬 타일에 대한 제2 범위 정보를 획득하는 단계;
    상기 제1 범위 정보 및 상기 제2 범위 정보에 기초하여 행렬 곱셈 경로를 선택하는 단계; 및
    타일 행렬 곱셈 곱을 생성하기 위해 상기 선택된 행렬 곱셈 경로를 사용하여 상기 제1 행렬 타일 및 상기 제2 행렬 타일에 행렬 곱셈을 수행하는 단계를 포함하는, 방법.
  2. 제1항에 있어서,
    상기 제1 타일은 신경망의 레이어에 대한 입력의 일부이고, 상기 제2 타일은 상기 신경망의 레이어에 대한 가중치 행렬의 일부인, 방법.
  3. 제2항에 있어서,
    상기 레이어에 대한 입력을 분석함으로써 상기 제1 범위 정보를 자동적으로 생성하는 단계를 추가로 포함하는, 방법.
  4. 제1항에 있어서, 상기 행렬 곱셈 경로를 선택하는 단계는 두 개 이상의 행렬 곱셈 경로의 세트로부터 상기 행렬 곱셈 경로를 선택하는 단계를 포함하고, 각 행렬 곱셈 경로는 상이한 세트의 입력 범위에 대해 행렬 곱셈 연산을 수행하도록 구성되는, 방법.
  5. 제2항에 있어서, 상기 레이어는 일반 뉴런 레이어를 포함하는, 방법.
  6. 제5항에 있어서, 상기 제1 행렬 타일과 상기 제2 행렬 타일의 상기 행렬 곱셈은 일괄 처리된 일반 뉴런 레이어 연산의 일부를 포함하는, 방법.
  7. 제2항에 있어서, 상기 레이어는 컨볼루션 레이어를 포함하는, 방법.
  8. 제7항에 있어서, 범위 정보는 다수의 필터 컷아웃을 포함하는 범위 메타데이터 블록의 세트에 저장되는, 방법.
  9. 제8항에 있어서, 상기 제1 범위 정보를 획득하는 단계는 상기 제1 타일이 생성되는 범위 메타데이터 블록의 범위를 검색하는 단계를 포함하는, 방법.
  10. 신경망 연산을 수행하기 위한 시스템으로서, 상기 시스템은
    행렬 곱셈 경로의 세트; 및
    타일 행렬 승수를 포함하고, 상기 타일 행렬 승수는
    제1 행렬 타일 및 제2 행렬 타일을 식별하고;
    상기 제1 행렬 타일에 대한 제1 범위 정보 및 상기 제2 행렬 타일에 대한 제2 범위 정보를 획득하며;
    상기 제1 범위 정보 및 상기 제2 범위 정보에 기초하여 상기 곱셈 경로 세트의 행렬 곱셈 경로를 선택하고;
    타일 행렬 곱셈 곱을 생성하기 위해 상기 선택된 행렬 곱셈 경로를 사용하여 상기 제1 행렬 타일 및 상기 제2 행렬 타일에 행렬 곱셈을 수행하도록 구성되는, 시스템.
  11. 제10에 있어서,
    상기 제1 타일은 신경망의 레이어에 대한 입력의 일부이고, 상기 제2 타일은 상기 신경망의 레이어에 대한 가중치 행렬의 일부인, 시스템.
  12. 제11항에 있어서,
    상기 레이어에 대한 분석 입력으로부터 상기 제1 범위 정보를 자동적으로 생성하도록 구성된 신경망 처리 블록을 추가로 포함하는, 시스템.
  13. 제11항에 있어서, 각 행렬 곱셈 경로는 상이한 세트의 입력 범위에 대해 행렬 곱셈 연산을 수행하도록 구성되는, 시스템.
  14. 제11항에 있어서, 상기 레이어는 일반 뉴런 레이어를 포함하는, 시스템.
  15. 제14항에 있어서, 상기 제1 행렬 타일과 상기 제2 행렬 타일의 상기 행렬 곱셈은 일괄 처리된 일반 뉴런 레이어 연산의 일부를 포함하는, 시스템.
  16. 제11항에 있어서, 상기 레이어는 컨볼루션 레이어를 포함하는, 시스템.
  17. 제16항에 있어서, 범위 정보는 다수의 필터 컷아웃을 포함하는 범위 메타데이터 블록의 세트에 대해 저장되는, 시스템.
  18. 제17항에 있어서, 상기 제1 범위 정보를 획득하는 단계는 상기 제1 타일이 생성되는 범위 메타데이터 블록의 범위를 검색하는 단계를 포함하는, 시스템.
  19. 프로세서에 의해 실행될 때, 상기 프로세서로 하여금,
    제1 행렬 타일 및 제2 행렬 타일을 식별하고;
    상기 제1 행렬 타일에 대한 제1 범위 정보 및 상기 제2 행렬 타일에 대한 제2 범위 정보를 획득하고;
    상기 제1 범위 정보 및 상기 제2 범위 정보에 기초하여 행렬 곱셈 경로를 선택하고;
    타일 행렬 곱셈 곱을 생성하기 위해 상기 선택된 행렬 곱셈 경로를 사용하여 상기 제1 행렬 타일 및 상기 제2 행렬 타일에 행렬 곱셈을 수행하는 단계를 포함하는, 비일시적 컴퓨터 판독 가능 매체.
  20. 제19항에 있어서, 상기 행렬 곱셈 경로를 선택하는 단계는 두개 이상의 행렬 곱셈 경로의 세트로부터 상기 행렬 곱셈 경로를 선택하는 단계를 포함하고, 각 행렬 곱셈 경로는 상이한 세트의 입력 범위에 대해 행렬 곱셈 연산을 수행하도록 구성되는, 비일시적 컴퓨터 판독 가능 매체.
KR1020227036577A 2020-03-26 2021-03-08 기계 학습 가속을 위한 전력 감소 KR20220158768A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/831,711 2020-03-26
US16/831,711 US20210303987A1 (en) 2020-03-26 2020-03-26 Power reduction for machine learning accelerator background
PCT/US2021/021401 WO2021194732A1 (en) 2020-03-26 2021-03-08 Power reduction for machine learning accelerator

Publications (1)

Publication Number Publication Date
KR20220158768A true KR20220158768A (ko) 2022-12-01

Family

ID=77857036

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227036577A KR20220158768A (ko) 2020-03-26 2021-03-08 기계 학습 가속을 위한 전력 감소

Country Status (6)

Country Link
US (1) US20210303987A1 (ko)
EP (1) EP4128064A4 (ko)
JP (1) JP2023518717A (ko)
KR (1) KR20220158768A (ko)
CN (1) CN115298669A (ko)
WO (1) WO2021194732A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115878957B (zh) * 2022-12-29 2023-08-29 珠海市欧冶半导体有限公司 一种矩阵乘法加速装置及方法

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107526709A (zh) * 2016-06-15 2017-12-29 辉达公司 使用低精度格式的张量处理
US10817293B2 (en) * 2017-04-28 2020-10-27 Tenstorrent Inc. Processing core with metadata actuated conditional graph execution
TWI816475B (zh) * 2017-05-17 2023-09-21 美商谷歌有限責任公司 低延遲矩陣乘法單元中之胞元、相關之方法及非暫時性電腦程式產品
WO2019018811A1 (en) * 2017-07-21 2019-01-24 Syntiant SYSTEMS AND METHODS OF OPERATING RARITY
WO2019157599A1 (en) * 2018-02-16 2019-08-22 The Governing Council Of The University Of Toronto Neural network accelerator
US20190278600A1 (en) * 2018-03-09 2019-09-12 Nvidia Corporation Tiled compressed sparse matrix format
US10621489B2 (en) * 2018-03-30 2020-04-14 International Business Machines Corporation Massively parallel neural inference computing elements
KR20200011362A (ko) * 2018-07-24 2020-02-03 에스케이하이닉스 주식회사 신경망 가속 장치 및 그것의 동작 방법
US20210201124A1 (en) * 2018-08-27 2021-07-01 Neuralmagic Inc. Systems and methods for neural network convolutional layer matrix multiplication using cache memory
WO2020050886A1 (en) * 2018-09-05 2020-03-12 Futurewei Technologies, Inc. Compiler-level general matrix multiplication configuration optimization
US11093580B2 (en) * 2018-10-31 2021-08-17 Advanced Micro Devices, Inc. Matrix multiplier with submatrix sequencing
US10515306B1 (en) * 2019-02-28 2019-12-24 DeepCube LTD. Partial activation of multiple pathways in neural networks
US20200302284A1 (en) * 2019-03-18 2020-09-24 Nvidia Corporation Data compression for a neural network
US20210048991A1 (en) * 2019-08-13 2021-02-18 Nvidia Corporation Performing matrix operations in neural networks

Also Published As

Publication number Publication date
CN115298669A (zh) 2022-11-04
US20210303987A1 (en) 2021-09-30
JP2023518717A (ja) 2023-05-08
EP4128064A1 (en) 2023-02-08
EP4128064A4 (en) 2024-04-17
WO2021194732A1 (en) 2021-09-30

Similar Documents

Publication Publication Date Title
EP3373210B1 (en) Transposing neural network matrices in hardware
EP3349153B1 (en) Convolutional neural network (cnn) processing method and apparatus
CN110119809B (zh) 对神经网络中非对称量化数据执行mac运算的装置和方法
CN111247527B (zh) 在卷积神经网络模型中确定特征图像的方法和装置
KR102415576B1 (ko) 컨벌루션 뉴럴 네트워크의 계산 복잡성을 감소시키기 위한 방법 및 시스템
JP6715900B2 (ja) ニューラルネットワークのパラメータを適応させるための方法および装置
EP3602280B1 (en) Accessing prologue and epilogue data
JP2020506454A (ja) ハードウェアにおける平均プーリングの実行
US20170206089A1 (en) Information processing apparatus and computational method
JP6822581B2 (ja) 情報処理装置、情報処理方法及びプログラム
KR20200081044A (ko) 뉴럴 네트워크의 컨볼루션 연산을 처리하는 방법 및 장치
CN113344172A (zh) 将卷积映射到通道卷积引擎
JP2023541350A (ja) 表畳み込みおよびアクセラレーション
KR20220158768A (ko) 기계 학습 가속을 위한 전력 감소
KR101989793B1 (ko) 컨볼루션 신경망을 위한 가속기 인식 가지 치기 방법 및 기록 매체
CN109634556B (zh) 一种乘累加器及累加输出方法
US11573765B2 (en) Fused convolution and batch normalization for neural networks
EP4095719A1 (en) Sparse matrix multiplication in hardware
CN117407640A (zh) 一种矩阵计算方法及装置
CN113672612A (zh) 索引源数组中的元素
JP7494940B2 (ja) 統合装置、統合方法、及び統合プログラム
KR102428033B1 (ko) 트랜스포즈드 콘볼루션 하드웨어 가속장치
EP4361892A1 (en) Methods and systems for performing a per channel affine transformation using a neural network accelerator
KR101974779B1 (ko) 16비트 이하 양의 정수용 파이프라인형 제곱기
US20210357748A1 (en) Hierarchical weight preprocessing for neural network accelerator