KR20220051242A - 고속 희소 신경망 - Google Patents

고속 희소 신경망 Download PDF

Info

Publication number
KR20220051242A
KR20220051242A KR1020227009693A KR20227009693A KR20220051242A KR 20220051242 A KR20220051242 A KR 20220051242A KR 1020227009693 A KR1020227009693 A KR 1020227009693A KR 20227009693 A KR20227009693 A KR 20227009693A KR 20220051242 A KR20220051242 A KR 20220051242A
Authority
KR
South Korea
Prior art keywords
neural network
values
elements
null
weights
Prior art date
Application number
KR1020227009693A
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 KR20220051242A publication Critical patent/KR20220051242A/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/0495Quantised networks; Sparse networks; Compressed networks
    • G06N3/0454
    • 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/048Activation functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/82Arrangements for image or video recognition or understanding using pattern recognition or machine learning using neural networks
    • 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
    • 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]
    • G06N3/0481
    • 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
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/40Extraction of image or video features
    • G06V10/513Sparse representations

Landscapes

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

Abstract

신경망 시스템은 희소 가중치 행렬로 정의된 커널을 사용하여 조밀한 활성화 행렬에 1×1 컨볼루션을 적용하는 하나 이상의 계층을 포함한다. 계층은 가중치 행렬에서 널 가중치들이 있는 위치를 나타내는 희소성 데이터세트에 대한 액세스를 이용하여 프로세서에 의해 구현된다. 프로세서는 활성화 행렬을 저장하도록 구성된 메모리 유닛으로부터 다른 가중치에 해당하는 특징값들을 선택한 다음 이러한 추출된 특징값들을 사용하여 컨볼루션 값들을 계산한다.

Description

고속 희소 신경망
본 명세서는 신경망 시스템, 특히 모바일 디바이스와 같이 제한된 메모리 및/또는 처리 능력을 가진 프로세서 디바이스에서 구현될 수 있는 시스템에 관한 것이다.
신경망은 수신 입력에 대한 출력을 예측하기 위해 하나 이상의 단위 또는 노드의 계층을 사용하는 기계 학습 모델이다. 일부 신경망에는 출력 게층 외에 하나 이상의 은닉 계층이 포함된다. 각 은닉 계층의 출력은 네트워크의 다음 계층, 즉 다음 은닉 계층 또는 출력 계층에 대한 입력으로 사용된다. 네트워크의 각 계층은 개별 파라미터 세트의 현재 값에 따라 수신 입력으로부터 출력을 생성한다.
많은 신경망은 엘리먼트 어레이에 기초하여 정의된 입력과 그 엘리먼트 어레이에 기초하는 출력을 갖는 컨볼루션 계층을 포함한다. 일반적으로, 어레이는 W 열의 폭 및 H 행의 높이를 갖는 직사각형 어레이(예를 들어, 정사각형 어레이)와 같은 2차원 어레이이다. 각 엘리먼트는 C' 특징값으로 구성된 특징 벡터인 "입력 채널"과 관련된다(여기서 C'는 일반적으로 1보다 큰 정수이다). HW 입력 채널은 컨볼루션 계층에 대한 입력이다. 따라서, 입력 채널 세트는 C'×HW 성분이 있는 활성화 행렬을 구성한다. 각 엘리먼트에 대해, 컨볼루션 계층은 엘리먼트를 포함하는 어레이의 개별 n×m 부분의 개별 특징 벡터에 커널을 곱하여 엘리먼트에 대한 개별 "출력 채널"을 형성한다. 각 엘리먼트의 출력 채널에는 C 컨볼루션 값이 있다(여기서 C는 일반적으로 C'와 다른 정수이다). ReLU(Rectified Linear) 활성화 함수와 같은 비선형 함수(활성화 함수)는 일반적으로 엘리먼트의 출력 채널의 C 컨벌루션 값 각각에 적용된다.
"1×1 컨볼루션 계층"라고 지칭되는 일 예에서, n과 m은 1과 같으므로 어레이의 엘리먼트의 출력 채널이 의존하는 유일한 입력 채널은 동일한 엘리먼트에 대한 입력 채널이다. 이 경우, 커널은 엘리먼트의 출력 채널을 생성하기 위해 활성화 함수(있는 경우)를 각 컨볼루션 값에 적용하기 전에 가중치 값("가중치")의 C'×C 가중치 행렬을 엘리먼트의 입력 채널에 적용한다.
적어도 하나의 컨볼루션 계층을 포함하는 신경망인 컨볼루션 신경망(CNN)은 다양한 범위의 작업을 해결하는데 탁월한 것으로 입증되었다. 이러한 많은 아키텍처에서, 추론 시간, 부동 소수점 연산(FLOP) 및 파라미터 수는 행렬-행렬 곱셈과 동일한 1×1 컨볼루션에 의해 좌우된다.
본 명세서는 하나 이상의 위치에 있는 하나 이상의 컴퓨터에서 컴퓨터 프로그램으로 구현되는 신경망 시스템을 설명한다.
일반적으로, 본 발명은 조밀한(dense) 활성화 행렬에 적용되는 1×1 컨볼루션 계층(즉, 각 H×W 엘리먼트의 실질적으로 모든 C' 특징값이 엘리먼트의 개별 출력 채널을 생성하는 과정에서 사용됨)이 희소(sparse) C'×C 가중치 행렬로 정의된 커널을 사용하는 것을 제안한다. 즉, 가중치 행렬 값의 절반 이상이 "널(null)" 가중치, 즉 컨볼루션 값의 계산에 사용되지 않고 0으로 간주될 수 있는 가중치이다. 가중치 행렬에서 널 가중치들이 있는 위치를 나타내는 표시인 희소성 데이터 세트를 프로세서에 제공함으로써, 프로세서는 활성화 행렬을 저장하도록 구성된 메모리 유닛으로부터 다른 가중치(널 가중치가 아닌 가중치로 정의된 "비-널(non-null) 가중치")에 해당하는 특징값들(만)을 선택한 다음 이 추출된 특징값들(만)을 사용하여 컨볼루션 값을 계산한다. 이것은 모두 동일한 대응 가중치를 필요로 하기 때문에 어레이의 복수의 상이한 엘리먼트 각각에 대한 대응하는 컨볼루션 값에 대해 매우 효율적으로(예를 들어 병렬로 또는 매우 짧은 시간 간격으로 연속적으로) 수행될 수 있다. 즉, 상이한 엘리먼트에 대한 해당 컨볼루션 값은 동일한 가중치에 의존한다.
복수의 엘리먼트는 어레이의 동일한 행에 위치할 수 있다. 즉, 그들은 엘리먼트의 "행 벡터", 예를 들어 해당 행의 일련의 연속 엘리먼트일 수 있다. 동일한 행의 엘리먼트로서 복수의 엘리먼트의 선택은 특히 많은 공지된 메모리 유닛에서와 같이 특징값을 저장하는데 사용되는 메모리 유닛이 CHW 포멧의 메모리 레이아웃을 갖는 경우에 특히 동기 부여된다. 이 경우, 컨볼루션 벡터의 계산은 동일한 행에 있는 엘리먼트의 연속적인(일반적으로 겹치지 않는) 행 벡터에 대한 내부 루프와 연속적인 행에 대한 외부 루프를 사용하여 효율적으로 수행될 수 있다. 구현에서 메모리 유닛은 물리적으로 분리된 다중 메모리 디바이스로 구현될 수 있다.
활성화 행렬을 저장하는 메모리 유닛은 특징값 메모리 유닛으로 지칭된다. 가중치 값은 가중치 메모리 유닛이라고 하는 다른 메모리 유닛에 저장된다다. 구현에서 가중치 메모리 유닛은 특징값 메모리 유닛을 구현하는 것과 동일한 메모리 디바이스(들) 또는 상이한 메모리 디바이스(들)일 수 있다.
본 명세서에 기술된 주제는 다음 이점 중 하나 이상을 실현하기 위해 특정 실시예로 구현될 수 있다. 첫째, 가중치 메모리 유닛은 널이 아닌 가중치만 저장하면 되므로 가중치 메모리 유닛의 메모리 요구량은 동일한 차원을 갖는 조밀한 가중치 행렬을 갖는 기존의 신경망에 비해 감소된다. 둘째, 활성화 행렬에 기초하여 출력 채널을 생성하기 위한 곱셈 및/또는 나눗셈 연산의 수가 신경망의 기존 컨볼루션 계층에 비해 감소되어 에너지 효율과 처리 속도가 향상된다. 셋째, 다수의 컨볼루션 값을 병렬로 계산하므로 병렬 처리 하드웨어를 효율적으로 사용한다. 특징값을 CHW 메모리 레이아웃에 저장하는 메모리 장치를 갖는 것은 프로세서가 GPU(그래픽 처리 장치) 또는 기타 특수 목적 하드웨어인 경우 특히 효율적이다. 예를 들어, CHW 메모리 계층은 하드웨어에서 행렬 곱셈을 수행하는 특수 목적 하드웨어(예를 들어, 텐서 처리 장치(TPU) 또는 다른 하드웨어 기계 학습 가속기)에서 구현하는 데 특히 적합하다. 실험적으로, 이러한 모든 이점은 제안된 신경망에서 널 가중치(희소성)의 비율이 95%보다 크지 않은 경우 기존의 신경망에 비해 놀라울 정도로 성능 저하가 거의 없이 달성될 수 있음이 밝혀졌다.
예를 들어, 일부 알려진 테스트 문제에 대해, 본 발명자들은 표준 테스트 문제를 해결하도록 트레이닝된 신경망의 적어도 하나의 컨볼루션 계층에서 가중치의 적어도 70% 및/또는 95% 이하를 널로 선택하면(즉, 희소성이 70-95%의 "희소성 범위"에 있음), 신경망의 파라미터의 수를 2배 이상 감소시키고, 입력에서 출력을 생성하기 위해 신경망에서 수행하는 계산 수(부동 소수점 연산(FLOPS))를 최대 3배까지 줄이는 반면 신경망의 성능은 1% 미만으로 줄일 수 있다는 놀라운 결과를 실험적으로 발견했다. 또한 휴대폰, 태블릿 컴퓨터 또는 다른 형태의 모바일 클라이언트 디바이스과 같은 모바일 디바이스의 CPU와 같은 저전력 프로세서에서 신경망을 구현할 경우 신경망의 처리 시간이 1.3~2배 감소하는 것으로 나타났다. 컴퓨터 또는 다른 형태의 모바일 클라이언트 장치. 이것은 현재의 신경망을 그러한 디바이스들에 특히 적합하게 만든다. 신경망의 희소성은 완전히 새로운 개념은 아니지만, 일반적으로 희소 동작은 간섭 중에 실제 속도 향상을 달성할 만큼 충분히 빠를 수 없다는 일반적인 오해 때문에 모델을 가속화하는 실용적인 수단으로 무시되었다. 현재의 실험은 그렇지 않다는 것을 보여준다. 이에 대한 한 가지 이유는 이러한 실험에서 희소 가중치 행렬이 조밀한 활성화 행렬과 결합되어 희소성이 제공되기 때문이다. 또한 이전 작업은 일반적으로 극도로 희소한 문제(99% 이상의 희소성)에 초점을 맞추었지만 실험에 사용된 희소성의 범위는 더 낮다.
각각의 널이 아닌(비-널) 가중치는 임의의 값(예를 들어, 부동 소수점 값 또는 기정의된 정수 범위의 정수 값)을 취할 수 있으며, 일부 구현에서는 선택적으로 0도 포함할 수도 있. 즉, 신경망의 구현이 0이라는 사전 정보를 사용하지 않더라도 이러한 구현에서 널이 아닌 가중치들 중 일부는 0과 같을 수 있다. 일반적으로, 가중치는 트레이닝 절차 중에 생성되며 원칙적으로 트레이닝 절차는 가중치가 널 가중치로 라벨링되지 않고 따라서 널 가중치 표시에 포함되지 않고 0과 동일한 일부 가중치를 생성하는 것과 같을 수 있다. 대안적으로, 다른 구현에서, 트레이닝 후 0인 모든 가중치(또는 트레이닝 후에 사전 결정된 임계값 미만의 크기를 갖는 것과 같이 트레이닝 후에 사전 결정된 기준을 따르기 때문에 0으로 설정됨)는 널 가중치로 라벨링되고, 널 가중치 표시에 포함된다. 즉, 이러한 구현에서 널이 아닌 모든 가중치는 0이 아니다. 다른 구현에서, 트레이닝 절차가 널이 아닌 가중치의 값만 수정하도록 트레이닝 전에 널 가중치들이 지정될 수 있다.
본 개시는 희소 가중치 행렬을 제안하지만, 활성화 행렬(컨볼루션 계층에 대한 입력)에는 실질적으로 희소성이 없다는 점에 유의한다. 따라서, 신경망의 컨볼루션 계층은 어레이로부터 엘리먼트의 연속적인 행 벡터(예를 들어, 각각 동일한 수의 엘리먼트를 가짐)를 연속적으로 선택하도록 구성되고, 각 행 벡터는 신경망의 컨볼루션 계층이 결국 어레이의 모든 엘리먼트를 집합적으로 포함하는 복수의 연속적인 행 벡터를 처리하도록 위에서 설명한 바와 같이 병렬로 처리된다. 실질적으로 "널" 특징값(즉, 컨볼루션 값이 의존하지 않는 특징값)이 없을 수 있다.
신경망의 모든 계층이 위에서 설명한 원리를 사용할 필요는 없다. 예를 들어, 신경망의 입력 계층은 완전 연결될 수 있고 및/또는 신경망의 출력 계층은 완전 연결될 수 있다. 다시 말해, 병렬 처리가 가능한 알려진 컴퓨터 프로세서의 능력에 의해 동기가 부여된 위치인 신경망의 특정 위치에 희소성이 제공될 수 있다.
선택적으로 가중치 행렬은 일정량의 규칙성을 가질 수 있다. 예를 들어, (각 엘리먼트의 복수의 컨볼루션 값에 각각 대응하는) 가중치 행렬의 복수의 행 각각에 대해, 널이 아닌 가중치들은 동일한 위치에 있을 수 있다(즉, 각 엘리먼트의 입력 채널 특징값의 동일한 서브 세트에 해당). 따라서, 주어진 엘리먼트에 대한 컨볼루션 값들 중 다른 값은 엘리먼트의 입력 채널의 특징값의 동일한 서브 세트에 따라 달라진다. 이 경우, 행 벡터에 대한 출력 채널의 컨볼루션된 값을 병렬로("블록"으로) 계산함으로써 계산의 효율성이 더욱 향상될 수 있다. 또한, 희소성 데이터세트는 널이 아닌 가중치 배열의 규칙성으로 인해 널이 아닌 가중치의 주어진 수에 대해 크기가 줄어들 수 있다.
이를 다르게 표현하기 위해, 가중치 행렬의 행은 가중치 행 그룹("가중치 행")으로 수직으로 분할될 수 있으며, 여기서 각 그룹은 적어도 2인 동일한 수의 가중치 행일 수 있으며 연속적인 가중치 행으로 구성될 수 있다. 각 그룹에 대해, 해당 그룹의 모든 가중치 행의 널이 아닌 가중치는 가중치 행을 따라 동일한 위치에 있을 수 있다(즉, 특징값의 동일한 서브 세트에 해당). 이 경우, 엘리먼트의 행 벡터를 처리하여 대응하는 컨볼루션 값을 생성할 때, 가중치 행의 그룹은 연속적으로 처리될 수 있지만 각 그룹의 가중치 행은 해당 컨볼루션 값을 생성하기 위해 병렬로 처리될 수 있다.
H 및 W의 값은 임의의 정수일 수 있지만 일반적으로 각각은 최소 10이다. 입력 채널(C')당 특징값의 수는 일반적으로 적어도 2개이며 2개 이상일 수 있다. 행 벡터당 엘리먼트의 수는 적어도 2이고, 보다 일반적으로 적어도 3(예를 들어 4 또는 8) 또는 적어도 8(예를 들어, 16)이다.
바람직하게는, 복수의 엘리먼트에 대한 각각의 컨볼루션 값을 생성하는 동안, 대응하는 가중치가 널이 아닌 복수의 엘리먼트의 특징값이 메모리 유닛으로부터 예를 들어, 동시에) 추출되면, 추출된 특징값들은 캐시 메모리에 (예를 들어, 동시에) 저장된다. 그러나, 복수의 엘리먼트에 대한 선행 컨볼루션 값의 생성 동안 캐시 메모리에 저장된 특징값에 대해서는 추출 및 저장이 수행되지 않는 것이 바람직하다. 이것은 계산 시간의 또 다른 절약으로 이어진다.
컨벌루션 값이 현재 계산되고 있는 복수의 엘리먼트에 대한 특징값을 메모리 유닛에서 추출하여 이를 캐시 메모리에 기록함과 아울러, 복수의 추가 엘리먼트에 대한 대응하는 특징값 또한 메모리 유닛으로부터 (예를 들어, 동시에) 판독되어 캐시 메모리에 (예를 들어 동시에) 기록된다. 복수의 추가 엘리먼트의 컨볼루션 값은 복수의 엘리먼트에 대한 컨볼루션 값과 병렬로 생성되지 않는다. 예를 들어, 이것은 별도의 처리 루프 동안 수행될 수 있지만 그것들이 프리페치되었다는 사실은 해당 엘리먼트에 대한 컨볼루션 값을 계산할 때 해당 엘리먼트의 특징값이 이미 캐시 메모리에 있음을 의미합니다. 이렇게 하면 추가 엘리먼트에 대한 컨볼루션 값을 생성하는데 필요한 계산 시간이 줄어든다.
본 문서에서 제안하는 개념은 신경망을 구현하는 방법으로 표현하거나 신경망을 트레이닝하는 방법으로 표현할 수 있다. 이 트레이닝 프로세스에는 일반적으로 가중치 행렬 유도가 포함된다.
트레이닝은 가중치 행렬의 가중치들 중 적어도 일부를 널 가중치로 지정하는 것(즉, 가중치 행렬의 성분 중 일부를 널 가중치로 선택하는 것)을 포함할 수 있다. 이것은 가중치를 획득하기 위한 트레이닝 절차를 수행하고, 특정 기준(예를 들어, 임계값 미만의 크기를 가짐)을 충족하는 결과 가중치를 식별하고, 식별된 가중치를 널 가중치로 지정함으로써 수행될 수 있다. 널 가중치로 지정할 결과 가중치를 식별하기 위한 보다 정교한 기준은 예를 들어 식별된 결과 가중치가 가중치 행렬에서 널 가중치 위치의 규칙성에 대한 제약 조건에 따라 상대적으로 낮은 크기를 갖는 가중치임을 보장하기 위해 다수의 결과 가중치를 함께 고려할 수 있다. 대안적으로, 널 가중치의 일부 또는 전부는 위에서 논의된 널이 아닌 가중치의 배열에 규칙성이 있음을 보장하기 위해 미리 지정될 수 있다(즉, 희소성 데이터 세트는 널이 아닌 가중치의 트레이닝 이전에 존재할 수 있음).
본 개념의 대안적인 표현은 방법을 수행하도록 배열된 하나 이상의 위치에 하나 이상의 컴퓨터를 포함하는 컴퓨터 시스템, 또는 프로그램 명령을 저장하는 비일시적 컴퓨터 저장 매체메모리 디바이스) 또는 명령을 포함하는 다운로드 가능한 소프트웨어와 같은 명령을 포함하는 컴퓨터 프로그램 제품에 관한 것일 수 있으며, 여기서 명령은 하나 이상의 컴퓨터에 의해 실행될 때 컴퓨터로 하여금 위에서 설명된 방법 중 하나를 구현하게 한다.
신경망의 구현에는 많은 응용이 있다. 넓은 의미에서 시스템은 어레이의 차원에 해당하는 차원(예를 들어, 2차원)을 갖는 입력 데이터를 수신하는 임의의 신경망에서 사용될 수 있다.
입력 데이터는, 예를 들면, 정지 또는 동영상을 나타낼 수 있으며, 이 경우 데이터의 값은 픽셀 값을 나타낼 수 있다. 입력 데이터는 하나 이상의 스틸 및/또는 비디오 카메라와 같은 하나 이상의 센서 디바이스에 의해 수집된 데이터와 같은 실제 데이터일 수 있다.
신경망은 예를 들어 입력 데이터를 하나 이상의 클래스로 분류하도록 트레이닝된 분류기로 사용될 수 있다. 예를 들어, 신경망 시스템은 이미지(예를 들어, 실세계 또는 시뮬레이션된 환경)를 사전 결정된 복수의 클래스 중 하나로 분류하는데 사용될 수 있다.
대안적으로, 신경망은 예를 들어 부가 정보에 따라 조건화된 예들을 생성하기 위한 생성 모델로 사용될 수 있다. 대안적으로, 이미 생성된 예의 품질, 즉 예들이 트레이닝 데이터와 얼마나 잘 매칭하는지 평가하는데 사용될 수 있다.
대안적으로, 신경망은 예를 들어 실세계 또는 시뮬레이션된 환경에서 움직이는 에이전트(예를 들어, 로봇)를 제어하기 위한 제어 데이터를 생성하기 위해 강화 학습에 사용될 수 있다. 대안적으로, 신경망 시스템은 시뮬레이션된 또는 실세계 환경에서 물리적 객체 또는 에이전트와 관련된 실제 또는 가상 카메라에 의해 보여지는 미래 이미지 또는 비디오 시퀀스를 예측하는 데이터를 생성하도록 트레닝될 수 있다.
본 발명의 실시예는 이제 이하의 도면을 참조하여 예시를 위해 설명될 것이다.
도 1은 현재 개시된 방법을 사용하는 신경망을 도시한다.
도 2는 도 1의 신경망을 구현하기 위한 컴퓨터 시스템을 도시한다.
도 3은 도 1의 신경망의 계층에서 수행되는 제1 컨볼루션 연산을 도시한다.
도 4는 도 1의 신경망의 계층에 의해 수행되는 대안적인 제2 컨볼루션 연산을 도시한.
도 5는 도 5(a)-5(e)로 구성되어 도 3의 컨볼루션 연산을 수행하는 동안 수행되는 메모리 연산의 시퀀스를 개략적으로 도시한다.
도 6은 도 5와 같은 과정 중에 도 1의 신경망에 의해 수행되는 방법의 단계들을 도시한다.
다양한 도면에서 동일한 참조 번호 및 명칭은 동일한 엘리먼트를 나타낸다.
도 1은 본 개시의 일 예인 신경망(100)을 도시한다. 신경망(100)은 하나 이상의 위치에서 하나 이상의 컴퓨터 시스템에 의해 구현될 수 있다.
신경망(100)은 입력 계층(101), 출력 계층(103) 및 하나 이상의 은닉 계층(102a, 102b, 102c)를 포함한다. 입력 계층(101), 은닉 계층(들)(102a, 102b, 102c) 및 출력 게층(103)은 시퀀스로 배열된다. 출력 계층(103)을 제외한 각 계층의 출력은 시퀀스의 다음 계층에 대한 입력을 제공한다. 입력 계층(101), 은닉 계층(들)(102a, 102b, 102c) 및 출력 계층(103) 중 하나 이상은 컨볼루션 계층이다. 실제로, 이 것들 모두 컨볼루션 계층일 수 있지만, 일반적으로 적어도 출력 계층(103)은 그렇지 않다. 각 컨볼루션 게층은 엘리먼트 어레이(일반적으로 2차원 어레이)에 기초하여 정의된 입력을 수신한다. 각 엘리먼트에 대해 C' 특징값으로 구성된 특징 벡터인 개별 입력 채널이 있다. 유사하게, 각 엘리먼트에 대해 컨볼루션 계층은 "컨볼루션(된) 값"이라고 지칭되는 C 값을 갖는 개별 출력 채널을 생성한다. 각 컨볼루션 계층은 가중치 행렬에 의해 정의된 개별 커널을 사용한다.
입력 계층(101)에 대한 입력은 픽셀 어레이 각각에 대해 하나 이상의 값에 대한 값을 지정하는 데이터와 같은 이미지를 정의하는 데이터이다. 픽셀은 각 엘리먼트에 대응할 수 있다. 예를 들어, C'는 이 계층에 대해 3일 수 있고, 각 엘리먼트에 대한 입력 채널의 특징값은 각각 레드, 그린, 블루 채널의 강도일 수 있다.
계층들 중 적어도 하나, 특히 은닉 게층(들)(102a, 102b, 102c) 중 하나는 1×1 컨볼루션 계층이다. 1×1 컨볼루션 게층의 경우, 각 엘리먼트에 대한 출력 채널은 엘리먼트의 입력 채널에만 의존한다. 즉, 커널에는 한 엘리먼트에 대한 출력 채널의 컴포넌트가 다른 엘리먼트의 입력 채널에 의존하도록 하는 가중치가 포함되어 있지 않다.
후술하는 바와 같이, 1×1 컨볼루션을 구현하는 신경망(100)의 하나 이상의 계층(들)은 "희소성"(즉, 0 값을 취하는 가중치의 적어도 특정 비율, 예를 들어 적어도 절반)을 나타내는 커널, 특히 은닉 계층(들)(102a, 102b, 102c) 중 하나를 사용하여 구현될 수 있다. 그러나, 신경망의 모든 계층이 희소성을 나타내는 것은 아니다.
먼저, 입력 계층은(101)는 희소성을 나타내지 않는 커널을 포함할 수 있다. 파라미터 수(count), FLOP 수 및 런타임에 대한 전체 기여도는 작다. 대신에, 입력 게층(101)은 조밀한 컨볼루션 커널을 사용하고 이미지를 입력으로 사용할 수 있다.
또한, 계층(101, 102a, 102b, 102c, 103) 중 하나 이상은 지아 후(Jia Hu)의 "Squeeze 및 excitation 네트워크"에 설명된 바와 같이 "squeeze 및 excitation"(SE) 계층을 구현할 수 있다. 이러한 계층에서 계층에 대한 입력은 (예를 들어, 컨볼루션에 의해) U로 표시된 특징 맵에 매핑되고, 특징 맵들은 채널별 특징 응답의 전역 분포의 임베딩을 생성하기 위해, H×W 공간 차원에 걸쳐 특징 맵들을 집계하여 채널 설명자를 생성하는 "squeeze(압축)" 연산의 대상이다. 이 집계 다음에는 임베딩을 입력으로 취하여 SE 계층의 출력을 생성하기 위해 특징 맵(U)에 적용되는 채널별 가중치의 컬렉션을 생성하는 "excitation(여기)" 연산이 뒤따른다. 이러한 SE 계층이 신경망(100)에 존재하는 경우, 이것은 또한 아래에 설명되는 것처럼 희소 커널을 사용하지 않을 수 있는데, 이는 실험에서 이들이 일반적으로 기존에 사용되는 조밀한 모델의 총 FLOP의 1% 미만에 기여하는 것으로 나타났기 때문이다.
또한, 싱경망(100)의 마지막 계층(103)은 컨볼루션 계층이 아닌 완전 연결 계층으로 구현될 수 있다. 다시 말하지만, 기존 모델에서 완전 연결된 출력 계층은 총 FLOP 수에 미미하게(<1%) 기여하지만, 특히 신경망의 다른 계층이 제거(prun)되도록 신경망을 트레이닝하는 경우 총 파라미터의 상당한 부분(20-50%)에 기여한다는 것이 실험을 통해 알려져 있다.
도 2는 도 1의 신경망(100)을 구현하기 위한 컴퓨터 시스템(200)을 도시한다. 컴퓨터 시스템(200)은 하나 이상의 이미지를 기술하는 이미지 데이터일 수 있는 데이터 입력(201)을 수신한다. 컴퓨터 시스템(200)은 프로세서(202) 및 메모리 유닛(203, 204, 205)을 포함한다. 프로세서(202)는 동시에 병렬로 다수의 계산 스레드를 처리할 수 있는 것일 수 있다. 메모리 유닛(203, 204, 205) 중 첫 번째는 신경망(100)을 구현하고 특히 아래에서 설명되는 은닉 계층(102a, 102b, 102c)의 컨볼루션 연산을 수행하도록 프로세서(202)를 제어하도록 동작하는 프로그램 명령을 저장하는 프로그램 메모리 유닛(203)이다. 메모리 유닛의 두 번째는 신경망(100)의 계층들에 의해 수행되는 연산을 정의하는 가중치를 저장하는 가중치 메모리 유닛(204)이다. 각 계층에는 가중치로 구성된 개별 가중치 행렬이 있다. 가중치 메모리 유닛(204)은 또한 각각의 계층에 대해, 각 출력 채널에 대해 개별 가중치 행렬의 하나 이상의 비-널 가중치 값을 나타내는 각각의 희소성 데이터세트를 저장할 수 있다.
메모리 유닛 중 세 번째는 각 계층에 입출력되는 데이터를 저장하는 특징값 메모리 유닛(205)이다. 데이터 입력(201)을 수신하면, 데이터는 특징값 메모리(205)에 저장된다.
데이터 입력(201)의 데이터 및 특징값 메모리(205)에 저장된 데이터는 하나의 공간 위치에 해당하는 상이한 채널에 대한 값들이 메모리에서 인접하는 표준 HWC 레이아웃일 수 있다. 즉, 어레이의 행당 엘리먼트 수를 W로, 어레이의 행의 수를 H로, 그리고 엘리먼트당 채널의 수를 C로 나타내면, 어레이의 (h, w) 위치에 있는 엘리먼트의 c번째 채널의 값에 대한 메모리 위치(즉, 메모리 공간의 임의의 위치로부터의 오프셋 거리)는 h * (W)* (C) + w * (C) + c로 표현될 수 있다. 데이터 입력(201)을 수신하면, 데이터 입력(201)은 특징 메모리 유닛(205)에 일반적으로 여전히 HWC 포멧으로 저장될 수 있다.
신경망(100)의 계층들 중 하나를 구현하기 위해, 프로세서(202)는 특징 메모리 유닛(205)으로부터 프로세서(202)의 캐시 메모리(206)로 해당 계층에 대한 입력을 기술하는 데이터의 연속적인 부분을 전송할 수 있다. 희소성을 나타내는 계층의 경우, 각 엘리먼트에 대해 전송이 여러 단계로 수행될 수 있으며, 각 단계에서 엘리먼트에 대한 출력 채널의 일부를 생성하는데 필요한 경우 해당 엘리먼트에 대한 입력 채널의 특징값의 서브세트만이 캐시 메모리(206)로 전송된다. 다수의 엘리먼트에 대한 컨볼루션 값이 함께(예를 들어 병렬로) 생성되도록 하기 위해, 다수의 엘리먼트에 대한 특징값이 특징 메모리 유닛(205)으로부터 캐시 메모리(206)로 동시에 전송될 수 있다.
각 계층에 대해(선택적으로 출력 계층(103)은 제외), 각 엘리먼트에 대한 각 출력 채널의 컨볼루션 값은 특징값 메모리 유닛(205)에 저장된다. 출력 채널은 특징값 메모리 유닛(205)으로부터 프로세서(202)에 의해 후속적으로 판독되고, 신경망(100)의 연속적인 계층에 대한 입력 데이터로서 프로세서(202)에 의해 사용된다. 아래에서 설명되는 바와 같이, 입력 계층(101) 및/또는 하나 이상의 은닉 계층(102a, 102b, 102c)과 같은 신경망(100)의 하나 이상의 계층에 대한 출력 채널은 본 명세서에서 CHW 레이아웃이라고도 하는 CHW 포멧의 특징값 메모리 유닛(205)에 저장될 수 있다. CHW 레이아웃에서, 한 채널의 모든 공간 위치의 값은 메모리에서 인접된다. CHW 레이아웃에서, H×W 어레이의 (h,w) 위치에 있는 엘리먼트의 c 번째 채널의 메모리 위치(메모리 공간의 임의 위치로부터의 오프셋)는 c * (W) * (H) + h * (W) + w이다. 입력 데이터가 하나 이상의 은닉 계층(102c, 102b, 102c) 및 출력 계층(103)에 대해, 특히 입력 계층(101) 바로 다음에 오는 컨볼루션 계층(102a)에 대해 CHW 포밋인 경우 희소 컨볼루션 연산에 편리하다.
출력 계층(103)에 대한 출력 채널들은 출력 데이터(207)로서 컴퓨터 시스템(200)으로부터 전송된다. 출력은 예를 들어 이미지 데이터(201)의 분류를 나타낼 수 있다. 대안적으로, 데이터 입력(201)이 부가 데이터이고 신경망(100)이 생성(generative) 네트워크인 경우, 출력 데이터(207)는 이미지 또는 사운드 파형과 같은 신호를 나타내는 데이터세트일 수 있다. 대안적으로, 데이터 입력(201)이 환경을 기술하는 센서 데이터인 경우, 예를 들어 스틸 또는 비디오 카메라로 수집된 실제 환경의 이미지인 경우, 출력 데이터(207)는 환경과 상호 작용하도록 에이전트를 제어하기 위해, 예를 들어 환경 내에서 (변환, 회전 및/또는 재구성을 통해) 이동하기 위해 에이전트로 전송되는 제어 데이터일 수 있다. 대안적으로, 데이터 입력(201)이 자연어의 일부(예를 들어, 자연어가 발화될 때 센서에 의해 수집된 일련의 문자 또는 소리 신호)를 나타내는 데이터인 경우, 출력 데이터(207)는 자연어의 번역과 같은 수정된 자연어일 수 있고, 일련의 문자 또는 소리 신호일 수 있다.
도 3을 참조하면, 신경망(100)의 계층들 중 하나에 의한, 예를 들어, 본 병세서에 개시된 희소성 원리를 사용하여 은닉 계층(102a, 102b, 102b) 중 하나에 의한 1×1 컨볼루션 연산의 성능을 설명하는 도면이 도시되어 있다. 컨볼루션 연산에 대한 입력은 CHW 포멧의 활성화 행렬(301)이다. 활성화 행렬(301)의 각 열은 C' 특징값으로 구성된 어레이의 엘리먼트들 중 하나에 대한 입력 채널을 나타낸다. 활성화 행렬(301)의 개별 특징값은 도 1에서 열들 중 하나의 개별 박스로 도시된다. 도 3에서, 활성화 행렬(301)은 "높이×폭"(즉, HW) 열의 수와 "channels in"으로 표시된 행의 수(C')를 갖는 것으로 표시된다. 활성화 행렬(301)은 임의의 엘리먼트의 임의의 채널에 대한 특징값들 중 어느 것도 실질적으로 사전에 0으로 알려진 "널"이 아니라는(예를 들어, 값중 어느 것도 사전에 0으로 알려져 있지 않거나 1% 이하가 사전에 0으로 얄려짐) 점에서 조밀하다. 실제로 모든 또는 실질적으로 모든 C'×HW 값은 실제로 0이 아닐 수 있다. 비-널 특징값들은 음영 처리된 박스로 도 3에 표시되며, 즉 활성화 매트릭스(301)의 모든 박스는 음영 처리된다.
1×1 컨볼루션 게층의 커널은 C×C' 가중치 행렬(302)로 표시되며, 여기서 C는 각 엘리먼트의 출력 채널에 있는 컨볼루션 값의 수이다. C는 C'와 같을 수도 있고 다를 수도 있다. 0인 가중치 행렬(302)의 값("널 값")은 음영 처리되지 않은(흰색) 박스로 표시되는 반면, 커널 행렬의 0이 아닌 값("비-널 값")은 음영 처리된 박스로 표시된다. 비-널 값의 비율은 25%-10% 범위로 작다. 컨볼루션 연산은 가중치 행렬(302)과 활성화 행렬(301)의 곱으로 구성된다. 이는 도 5를 참조하여 아래에서 설명된다.
도 4는 히든 계층(102a, 102b, 102b) 중 하나에 의해 수행될 수 있는 1×1 컨볼루션 연산의 대안적인 형태를 도시한다. 활성화 행렬(401)은 도 3의 것과 동일하지만, 도 3과 대조적으로, 도 4의 경우 가중치 행렬(402)의 행("가중치 행")은 그룹(403, 404, 405, 406)으로 수직으로 분할된다. 각 그룹에 대해, 해당 그룹의 모든 가중치 행의 비-널 가중치는 가중치 행을 따라 동일한 위치에 있다(즉, 동일한 특징값 서브 세트에 해당함). 각 그룹은 적어도 2인 동일한 수의 가중치 행으로 구성될 수 있다(도 4에서 각 그룹(403, 404, 405, 406)은 4개의 행을 가짐). 도 4에 도시된 바와 같이, 각 그룹(403, 404, 405, 406)의 가중치 행은 연속적인 가중치 행이지만, 대안적인 배열에서 그룹의 행들은 서로 인터리빙될 수 있다.
행렬(401)의 각 열(즉, 각 엘리먼트에 대한 입력값)을 처리하여 대응하는 컨볼루션 값을 생성할 때, 각 그룹의 가중치 행들은 병렬로 처리되어 대응하는 컨볼루션 값을 생성할 수 있다. 그러나, 가중치 행의 다른 그룹은 연속적으로 처리될 수 있다.
도 5는 도 3의 1×1 컨볼루션 연산 중 하나에서 커널 평가를 위한 메모리 읽기 및 쓰기 연산을 보여준다. 단순화를 위해, 이 예에서 활성화 행렬의 행 수(C')(즉, 각 엘리먼트에 대한 입력 채널 수)는 4이고 각 엘리먼트에 대한 출력 채널 수(C)도 4이다. 그러나, 도 5의 방식은 C' 및 C 값이 서로 같거나 다른 임의의 양의 정수(예를 들어, 도 3 및 4에서와 같이 C'=8 및 C=16)인 경우로 용이하게 확장된다. 구체적으로, 도 5(a)는 교차를 포함하는 박스로 표시된 0이 아닌(비-널) 엘리먼트 및 교차되지 않은 박스로 표시된 0(널) 엘리먼트가 있는 예시적인 가중치 행렬(501)을 도시한다. 예를 들어, 네 번째 출력 채널(네 번째 행)은 두 번째 및 네 번째 입력 채널에 대해서만 널이 아닌 가중치 값을 갖는다.
도 5(b)-(e)는 어레이의 8개 엘리먼트에 대한 4개의 채널 값을 함께 처리하지만 함께 처리되는 엘리먼트의 수는 다를 수 있는 일련의 동작을 보여준다. 예를 들어, 16개의 엘리먼트가 함께 처리될 수 있으며, 이는 캐시 메모리(206)의 하나의 캐시 라인에 대응할 수 있다. 캐시 메모리의 메모리 공간은 502로 표시되며, 각 입력 채널의 특징값의 수와 (적어도) 동일한 수의 여러 행(캐시 라인)을 갖는다. 각 행에는 대응하는 특징값을 저장할 수 있도록 각각 구성된 복수의 메모리 위치가 있다. 도 5(b)-(e)는 또한 1×1 컨볼루션 계층의 출력인 컨볼루션 값을 저장하기 위한 특징값 메모리 유닛(205)의 메모리 공간(503)을 도시한다.
도 5(b)에 도시된 첫 번째 단계에서, 프로세서(202)는 희소성 데이터세트로부터 가중치 행렬의 첫 번째 행에서 0이 아닌 가중치의 위치를 결정한다. 이 예에서, 가중치 행렬(501)의 첫 번째 행은 첫 번째 및 네 번째 위치에서 널이 아닌 값을 갖는다. 어레이의 8개 엘리먼트 세트에 대해, 프로세서(202)는 특징값 메모리 유닛(205)으로부터 0이 아닌 가중치들에 대응하는 특징값들을 읽어, 그것들을 가중치 행렬(501)의 첫 번째 행에서 0이 아닌 가중치에 대응하는 메모리 공간(502)의 각각의 행에서, 캐시 메모리(206)의 메모리 공간(502)의 처음 8개 위치에 기록한다. 즉, 8개의 엘리먼트 세트에 대한 첫 번째 특징값들은 메모리 공간(502)의 첫 번째 행의 처음 8개 위치(5021)에 각각 기록되고, 8개의 엘리먼트 세트에 대한 네 번째 특징값들은 메모리 공간(502)의 네 번째 행의 처음 8개 위치(5022)에 각각 기록된다. 위치(5021, 5022)에 기록된 특징값들은 교차된 박스로 표시된다. 이러한 읽기 및 쓰기 동작은 8개 엘리먼트(어레이의 공간 위치)에 대해 실질적으로 동시에 수행된다.
선택적으로, 가중치 행렬(501)의 첫 번째 행(즉, 첫 번째 및 네 번째 가중치)에 있는 널이 아닌 가중치 값 각각에 대해, 프로세서는 또한 예를 들어 8개의 엘리먼트의 제2 세트에 대한 대응하는 특징값(즉, 첫 번째 및 네 번째 특징값)을 읽고. 이것들을 메모리 공간(502)의 대응하는 행(즉, 첫 번째 및 네 번째 행)의 다음 8개 위치(5023, 5024)에 기록한다. 이것들은 도 5(b)에 하나의 좌측 상단에서 우측 하단으로 이어지는 대각선이 있는 박스로 표시된다. 이들 프리페치된 특징값들은 나중에(8개 엘리먼트의 제1 세트에 대한 모든 컨볼루션 값이 생성된 후) 제2 엘리먼트 세트에 대한 컨볼루션 값을 생성하는데 사용된다.
8개의 엘리먼트의 제1 세트 각각에 대해, 프로세서(502)는 가중치 행렬(501)의 첫 번째 행에 있는 각각의 널이 아닌 가중치에 널이 아닌 가중치에 대응하는 메모리 공간(502)의 행에 있는 해당 엘리먼트에 대한 특징값을 곱하고 결과를 누적(가산)함으로써 각각의 컨볼루션 값을 형성한다. 그런 다음 프로세서(202)는 특징값 메모리 유닛(205)의 메모리 공간의 부분(503)의 처음 8개 위치(5031)에 이들 8개의 엘리먼트 각각에 대한 개별 컨볼루션 값을 기록한다. 선택적으로, 1×1 컨볼루션에 포함된 비선형 함수(예를 들어, ReLU 함수)는 컨볼루션 값들 각각에 대해 수행될 수 있다. 따라서, 도 5(b)에 예시된 프로세스는 8개 엘리먼트의 제1 세트에 대한 출력 채널을 위한 첫 번째 컨볼루션 값들을 생성했다. 8개 엘리먼트의 제1 세트에 대한 컨볼루션 값들은 병렬로(또는 짧은 간격으로 연속적으로) 생성될 수 있고 특징값 메모리 유닛(205)에 실질적으로 동시에 기록될 수 있다.
위에서 언급한 바와 같이, 프로세서(202)는 8개의 개별 메모리 위치(5023, 5024)에 8개의 엘리먼트의 제2 세트에 대한 첫 번째 및 네 번째 특징값을 선택적으로 이미 기록했을 수 있다. 이 경우, 프로세서(202)는 동일한 프로세스에 의해 8개의 엘리먼트의 제2 세트에 대한 컨볼루션 값들을 선택적으로 생성할 수 있다. 즉, 8개의 엘리먼트의 제2 세트 각각에 대해, 프로세서(202)는 가중치 행렬(501)의 첫 번째 행에 있는 각각의 널이 아닌 가중치에 널이 아닌 가중치에 대응하는 메모리 공간(502)의 행의 부분(5023, 2024)에 있는 해당 엘리먼트에 대한 특징값을 곱하고, 결과를 누적(가산)하고, 그리고 메모리 공간(503)의 첫 번째 행의 다음 8개 위치(5032)에 기록함으로써 각각의 컨볼루션 값을 형성한다. 1×1 컨볼루션 연산이 비선형 함수를 수행하는 것을 포함하는 경우, 이것은 컨볼루션 값 각각에 대해 수행된다. 8개 엘리먼트의 제2 세트 각각의 첫 번째 출력 채널에 대한 각각의 컨볼루션 값을 계산하는 이 프로세스는 도 5(b)-도 5(e)에 도시된 일련의 단계가 완료된 후에 선택적으로 수행될 수 있기 때문에 이 프로세스는 그림 5(a)에 도시되어 있지 않다.
도 5(c)는 도 5(b)와 동일한 프로세스를 수행하여 8개 엘리먼트의 제1 세트의 출력 채널에 대한 두 번째 컨볼루션 값을 계산하는 방법을 도시한다. 이 예에서 널이 아닌(비-널) 가중치 값은 가중치 행렬(501)의 두 번째 행의 두 번째 및 세 번째 위치에 있으므로, 프로세서는 특징값 메모리 유닛(205)으로부터 8개의 엘리먼트의 제1 세트에 대한 입력 채널의 두 번째 및 세 번째 특징값을 읽어, 이들을 점으로 표시된 메모리 공간(502)의 위치에 기록한다. 이 예에서, 가중치 행렬(501)의 두 번째 행의 널이 아닌 가중치는 가중치 행렬(501)의 첫 번째 행의 널이 아닌 가중치와 다른 위치에 있지만 널이 아닌 가중치가 동일한 위치(즉, 동일한 입력 채널과 관련됨)에 있으면 메모리 공간(502)이 이러한 특징값을 이미 포함하기 때문에 해당 입력 채널에 대한 읽기 및 쓰기 동작은 생략될 수 있다.
선택적으로, 8개 엘리먼트의 제2 세트에 대한 두 번째 및 세 번째 특징값 메모리 공간(502)의 대응하는 행(즉, 두 번째 및 세 번째 행)의 다음 8개 위치에 기록된다(좌측 하단에서 우측 상단까지 하나의 대각선으로 표시됨). 그런 다음 프로세서(202)는 가중치 행렬(501)의 두 번째 행에 있는 널이 아닌 가중치에 8개 엘리먼트의 제1 세트에 대한 대응하는 특징값들을 곱하고 결과를 가산함으로써 8개 엘리먼트의 제1 세트 각각에 대한 출력 채널의 각각의 두 번째 컨볼루션 값을 계산한다.
도 5(d) 및 5(e)는 각각 프로세서가 8개 엘리먼트의 제1 세트의 출력 채널의 세 번째 및 네 번째 컨볼루션 값에 대한 컨볼루션 값을 생성하는 방법을 도시한다. 도 5(b) 및 5(c)에 도시된 프로세스 후에 8개 엘리먼트(공간 위치)의 제1 세트에 대한 모든 특징값은 캐시 메모리(206)에 있으므로, 프로세서(202)는 특징값 메모리 유닛(205)으로부터 더 이상의 데이터를 판독하지 않고 나머지 출력 채널에 대한 컨볼루션 값을 생성할 수 있다. 8개 엘리먼트의 제1 세트 각각의 출력 채널의 세 번째 및 네 번째 컨볼루션 값을 생성하기 위해, 프로세서(202)는 가중치 행렬(501)의 세 번째 및 네 번째 행에 있는 널이 아닌 가중치에 8개 엘리먼트의 제1 세트에 대한 대응하는 특징값들을 곱하고 결과를 가산한다. 이것은 특징값 메모리 유닛(205) 및 캐시 메모리(206)가 랜덤 액세스임에도 불구하고 단계 5(d) 및 5(e)에서 곱셈을 수행하기 위한 특징값의 로딩이 빠르다는 것을 의미한다.
도 5(b)-5(e)에 도시된 일련의 단계에서 외부 루프는 열 위에 있고 내부 루프는 행 위에 있다. 이것은 활성화 행렬의 16개의 공간 위치의 각 스트립이 더 이상 필요하지 않을 때까지 캐시 메모리(206)에 남아 있게 한다. 도 5(b) 및 5(c)의 단계는 캐시 메모리(206)를 프라이밍(prime)하는 반면, 후속 단계 도 5(d) 및 5(e)는 캐시 메모리(206)로부터 모든 특징값을 로드한다.
가중치 행렬(501)의 구조에 임의의 규칙성이 있는 것으로 알려진 경우, 적은 양이라도, 이것은 가중치 및 특징값이 프로세서(202)의 레지스터에 로드된 후 데이터 재사용을 증가시킴으로써 상당한 성능 향상으로 도 5의 프로세스가 변경될 수 있게 한다. 예를 들어, 도 4와 관련하여 위에서 설명한 바와 같이, 가중치 행렬의 다수의 출력 채널은 0/0이 아닌 가중치의 동일한 패턴을 가질 수 있다. 대안적으로 또는 추가적으로, 가중치 행렬의 다수의 열은 0/0이 아닌 가중치의 동일한 패턴을 가질 수 있다. 다수의 출력 또는 입력 채널이 모두 동일한 0/0이 아닌 패턴을 공유하도록 희소성 패턴을 생성하기 위해 가중치 행렬을 생성하는 트레이닝 프로세스를 제한하면 블록이 동일한 희소성 패턴을 갖는 다수의 행의 그룹인 경우 도 4에 도시된 바와 같이 가중치 행렬에 '블록'을 생성한다. 도 4에 도시된 바와같이 출력 채널 차원에서 블록을 생성하는 것은 입력 채널 차원에서 블록을 형성하는 것보다 더 많은 데이터 재사용이 가능하다. 두 선택 모두 정확도에 동일한 영향을 미치지만 동일한 패턴(도 4에서와 같이)을 갖도록 가중치 행렬의 다수의 행을 배열하면 처리 효율성이 높아지므로 이것이 선호되는 실험이 수행되었다. 일정 실험에서, 가중치 행렬은 그룹이 2개의 행으로 구성되거나 그룹이 4개의 행으로 구성된다는 제약 조건으로 트레이닝되었다. 이 경우 내부 루프는 해당 그룹의 모든 행에 대한 출력 채널을 생성하는 것을 포함할 수 있다. 예를 들어, 각 그룹이 2개의 가중치 행을 포함하는 경우, 어레이의 특징 벡터(예를 들어, 어레이의 8개 엘리먼트 행)에 대해 수행되는 단일 내부 루프는 엘리먼트 세트의 출력 채널에 대해 해당하는 두 개의 컨볼루션 값을 생성할 수 있다. 실제로, 도 5의 방식은 도 5a 및 도 5b의 각 단계가 그룹 중 하나에 대한 모든 가중치 행이 대응하는 모든 컨볼루션 값을 생성하는데 사용되는 단계로 대체되도록 변경된다.
도 5에 도시된 프로세스에서 컨볼루션 값을 생성하는 방법(600)은 도 6에 요약되어 있다. 단계(601)에서, 각각의 컨볼루션 값에 대해, 희소성 데이터세트(각 컨볼루션 값에 대응하는 가중치 행렬에서 널이 아닌 가중치의 표시 역할을 함)에 기초하여 활성화 행렬로부터 하나 이상의 특징값이 획득된다. 단계(602)에서, 컨볼루션 값은 각각의 널이 아닌(비-널) 가중치에 의해 가중된 대응하는 추출된 특징값의 합으로 생성된다.
위에서 설명한 기술을 사용하여 계산 부담과 메모리 요구 사항을 크게 줄일 수 있음을 보여주는 실험이 수행되었다. 세 가지 요인이 특히 여기에 기여한다.
1. 가중치 행렬은 희소하지만 활성화 행렬은 조밀하다. 이것은 프로세서(202)가 활성화 행렬로부터 벡터 로드(vector loads)를 수행하고 다수의 공간 위치를 동시에 처리할 수 있음을 의미한다.
2. 올바른 순서로 행렬을 처리함으로써 시스템은 랜덤하게 액세스될 캐시 메모리 값을 유지할 수 있다. 캐시 메모리(206)로부터의 랜덤 액세스는 특징값 메모리 유닛(205)으로부터보다 더 빠르게 수행될 수 있음을 주목한다.
3. 특히 입력 채널의 수가 적을 때, 제2 엘리먼트 세트에 대한 활성화 행렬으로부터 특징값의 프리페칭은 제2 엘리먼트 세트에 대한 컨볼루션 값이 계산되어야 할 때 캐시 메모리(206)가 필요한 특징값을 포함하지 않는 경우의 수를 더 감소시켜, 값이 특징값 메모리 유닛(205)으로부터 얻어져야만 하도록 한다.
실험은 일정한 계산 예산에 대해 희소 컨볼루션 네트워크가 66%의 많은 파라미터만 필요로 하면서 벽시계 시간으로 측정할 때 1.3~2.4의 인수와 같이 조밀한 네트워크보다 더 정확하다는 것을 보여주며, 이는 대략 1세대 전체 개선에 해당한다.
이 본 명세서는 시스템 및 컴퓨터 프로그램 컴포넌트와 관련하여 "구성된"이라는 용어를 사용한다. 하나 이상의 컴퓨터로 구성된 시스템이 특정 동작 또는 액션을 수행하도록 구성된다는 것은 시스템에 소프트웨어, 펌웨어, 하드웨어 또는 동작시 시스템으로 하여금 동작 또는 액션을 수행하게 하는 이들의 조합이 설치되어 있음을 의미한다. 하나 이상의 컴퓨터 프로그램이 특정 동작 또는 액션을 수행하도록 구성된다는 것은 하나 이상의 프로그램이 데이터 처리 장치에 의해 실행될 때 장치로 하여금 동작 또는 액션을 수행하게 하는 명령들을 포함한다는 것을 의미한다.
본 명세서에 기술된 주제 및 기능적 동작의 실시예는 디지털 전자 회로, 유형적으로 구현된 컴퓨터 소프트웨어 또는 펌웨어, 본 명세서에 개시된 구조 및 그 구조적 등가물을 포함하는 컴퓨터 하드웨어, 또는 이들 중 하나 이상의 조합으로 구현될 수 있다. 본 명세서에 기술된 주제의 실시예는 하나 이상의 컴퓨터 프로그램, 즉 데이터 처리 장치에 의해 실행되거나 데이터 처리 장치의 작동을 제어하기 위해 유형의 비-일시적 저장 매체에 인코딩된 컴퓨터 프로그램 명령의 하나 이상의 모듈로 구현될 수 있다. 컴퓨터 저장 매체는 기계 판독 가능 저장 디바이스, 기계 판독 가능 저장 기판, 랜덤 또는 직렬 액세스 메모리 디바이스 또는 이들 중 하나 이상의 조합일 수 있다. 대안적으로 또는 추가적으로, 프로그램 명령들은 데이터 처리 장치에 의한 실행을 위해 적절한 수신기 장치로의 전송을 위한 정보를 인코딩하도록 생성된 인공적으로 생성된 전파 신호, 예를 들어 기계 생성 전기, 광학 또는 전자기 신호에 인코딩될 수 있다.
"데이터 처리 장치"라는 용어는 데이터 처리 하드웨어를 말하며, 예를 들어 프로그램 가능한 프로세서, 컴퓨터, 또는 다중 프로세서 또는 컴퓨터를 포함하여 데이터를 처리하기 위한 모든 종류의 장치, 디바이스 및 기계를 포함한다. 장치는 또한 예를 들어 FPGA(필드 프로그램 가능 게이트 어레이) 또는 ASIC(주문형 집적 회로)와 같은 특수 목적 논리 회로일 수 있거나 추가로 포함할 수 있다. 장치는 하드웨어 외에 컴퓨터 프로그램을 위한 실행 환경을 생성하는 코드, 예를 들어 프로세서 펌웨어, 프로토콜 스택, 데이터베이스 관리 시스템, 운영 체제 또는 이들 중 하나 이상의 조합을 구성하는 코드를 선택적으로 포함할 수 있다.
프로그램, 소프트웨어, 소프트웨어 애플리케이션, 앱, 모듈, 소프트웨어 모듈, 스크립트 또는 코드라고도 지칭되거나 설명될 수 있는 컴퓨터 프로그램은 컴파일 또는 해석된 언어, 선언적 또는 절차적 언어를 포함한 모든 형태의 프로그래밍 언어로 작성할 수 있으며, 독립 실행형 프로그램 또는 모듈, 컴포넌트, 서브루틴 또는 컴퓨팅 환경에서 사용하기에 적합한 기타 장치를 포함하여 모든 형태로 배포될 수 있다. 프로그램은 파일 시스템의 파일에 대응할 수 있지만 반드시 그런 것은 아니다. 프로그램은 다른 프로그램이나 데이터, 예를 들어 마크업 언어 문서에 저장된 하나 이상의 스크립트, 문제의 프로그램 전용 단일 파일 또는 다수의 조정 파일(예를 들어, 하나 이상의 모듈, 하위 프로그램 또는 코드 부분을 저장하는 파일)을 보유하는 파일의 일부에 저장할 수 있다. 컴퓨터 프로그램은 하나의 컴퓨터 또는 한 사이트에 있거나 여러 사이트에 분산되어 있고 데이터 통신 네트워크로 상호 연결된 여러 컴퓨터에서 실행되도록 배포될 수 있다.
본 명세서에서 "데이터베이스"라는 용어는 임의의 데이터 컬렉션을 지칭하는 데 광범위하게 사용되며, 데이터는 특정 방식으로 구조화되거나 전혀 구조화될 필요가 없으며 하나 이상의 위치에 있는 저장 디바이스에 저장될 수 있다. 따라서 예를 들어 인덱스 데이터베이스는 각각 다르게 구성되고 액세스될 수 있는 다수의 데이터 컬렉션을 포함할 수 있다.
유사하게, 본 명세서에서 "엔진"이라는 용어는 하나 이상의 특정 기능을 수행하도록 프로그래밍된 소프트웨어 기반 시스템, 하위 시스템 또는 프로세스를 나타내기 위해 광범위하게 사용된다. 일반적으로 엔진은 하나 이상의 위치에 있는 하나 이상의 컴퓨터에 설치된 하나 이상의 소프트웨어 모듈 또는 컴포넌트로 구현된다. 일부 경우에 하나 이상의 컴퓨터는 특정 엔진 전용이고, 다른 경우에는 다수의 엔진이 동일한 컴퓨터에 설치되어 실행될 수 있다.
본 명세서에 설명된 프로세스 및 논리 흐름은 입력 데이터에 대해 동작하여 출력을 생성함으로써 기능을 수행하기 위해 하나 이상의 컴퓨터 프로그램을 실행하는 하나 이상의 프로그래밍 가능한 컴퓨터에 의해 수행될 수 있다. 프로세스 및 논리 흐름은 또한 FPGA 또는 ASIC과 같은 특수 목적 논리 회로 또는 특수 목적 논리 회로와 하나 이상의 프로그래밍된 컴퓨터의 조합에 의해 수행될 수 있다.
컴퓨터 프로그램의 실행에 적합한 컴퓨터는 범용 또는 특수 목적의 마이크로프로세서 또는 둘 다 또는 기타 모든 종류의 중앙 처리 장치를 기반으로 할 수 있다. 일반적으로, 중앙 처리 장치는 읽기 전용 메모리나 랜덤 액세스 메모리 또는 둘 다에서 명령과 데이터를 수신한다. 컴퓨터의 필수 엘리먼트는 명령을 수행하거나 실행하기 위한 중앙 처리 장치와 명령 및 데이터를 저장하기 위한 하나 이상의 메모리 디바이스이다. 중앙 처리 장치와 메모리는 특수 목적 논리 회로에 의해 보완되거나 이에 통합될 수 있다. 일반적으로, 컴퓨터는 또한 데이터를 저장하기 위한 하나 이상의 대용량 저장 디바이스, 예를 들어 자기, 광자기 디스크, 또는 광 디스크로부터 데이터를 수신하거나 이들로 데이터를 전송하거나 둘 모두를 포함하거나 작동 가능하게 연결된다. 그러나 컴퓨터에는 그러한 장치가 필요하지 않다. 또한, 컴퓨터는 휴대 전화, 개인 휴대 정보 단말기(PDA), 모바일 오디오 또는 비디오 플계층, 게임 콘솔, GPS 수신기 또는 휴대용 저장 디바이스(예를 들어 USB 플래시 드라이브)와 같은 다른 디바이스에 내장될 수 있습니다.
컴퓨터 프로그램 명령 및 데이터를 저장하기에 적합한 컴퓨터 판독 가능 매체는 예를 들어 반도체 메모리 디바이스(예를 들어, EPROM, EEPROM 및 플래시 메모리 디바이스), 자기 디스크(예를 들어, 내부 하드 디스크 또는 이동식 디스크); 자기 광 디스크; 및 CD ROM 및 DVD-ROM 디스크를 비롯하여 임의의 형태의 비휘발성 메모리, 매체 및 메모리 디바이스를 포함한다.
사용자와의 상호 작용을 제공하기 위해, 본 명세서에서 설명하는 주제의 실시예는 사용자에게 정보를 디스플레이하기 위한 디스플레이 디바이스(예를 들어 CRT(음극선관) 또는 LCD(액정 디스플레이) 모니터) 및 사용자가 컴퓨터에 입력을 제공할 수 있는 키보드 및 포인팅 디바이스(예를 들어, 마우스 또는 트랙볼)를 갖는 컴퓨터에서 구현될 수 있다. 다른 종류의 디바이스도 사용자와의 상호 작용을 제공하는데 사용할 수 있는데, 예를 들어, 사용자에게 제공되는 피드백은 시각적 피드백, 청각적 피드백 또는 촉각적 피드백과 같은 임의의 형태의 감각적 피드백일 수 있고, 사용자로부터의 입력은 음향, 음성 또는 촉각 입력을 포함하여 모든 형태로 수신될 수 있다. 또한, 컴퓨터는 예를 들어 웹 브라우저에서 수신된 요청에 대한 응답으로 사용자 디바이스의 웹 브라우저에 웹 페이지를 전송함으로써 사용자가 사용하는 디바이스로 문서를 보내고 문서를 수신하여 사용자와 상호 작용할 수 있다. 또한, 컴퓨터는 문자 메시지 또는 다른 형태의 메시지를 개인 디바이스, 예를 들어, 메시징 응용 프로그램을 실행하는 스마트폰)에 보내고 사용자로부터 응답 메시지를 수신하여 사용자와 상호 작용할 수 있다.
기계 학습 모델을 구현하기 위한 데이터 처리 장치는 또한 예를 들어 기계 학습 트레이닝 또는 생산, 즉 추론, 워크로드의 공통 및 컴퓨팅 집약적 부분을 처리하기 위한 특수 목적 하드웨어 가속기 유닛을 포함할 수 있다.
기계 학습 모델은 기계 학습 프레임워크, 예를 들어 TensorFlow 프레임워크, Microsoft Cognitive Toolkit 프레임워크, Apache Singa 프레임워크 또는 Apache MXNet 프레임워크를 사용하여 구현 및 배포될 수 있다.
본 명세서에 기재된 주제의 실시예는 백엔드 컴포넌트(예를 들어, 데이터 서버)를 포함하거나, 미들웨어 컴포넌트(예를 들어, 애플리케이션 서버)를 포함하거나, 프론트 엔드 컴포넌트(예를 들어, 그래픽 사용자 인터페이스, 웹 브라우저 또는 사용자가 이 사양에 설명된 주제의 구현과 상호 작용할 수 있는 앱이 있는 클라이언트 컴퓨터)를 포함하거나, 하나 이상의 백엔드, 미들웨어 또는 프론트엔드 컴포넌트의 조합을 포함하는 컴퓨팅 시스템에서 구현될 수 있다. 시스템의 컴포넌트는 통신 네트워크와 같은 디지털 데이터 통신의 모든 형태 또는 매체에 의해 상호 연결될 수 있다. 통신 네트워크의 예로는 LAN(Local Area Network) 및 WAN(Wide Area Network), 예를 들어 인터넷이 있다.
컴퓨팅 시스템은 클라이언트와 서버를 포함할 수 있다. 클라이언트와 서버는 일반적으로 서로 멀리 떨어져 있으며 일반적으로 통신 네트워크를 통해 상호 작용한다. 클라이언트와 서버의 관계는 각각의 컴퓨터에서 실행되고 서로 클라이언트-서버 관계를 갖는 컴퓨터 프로그램 덕분에 발생한다. 일부 실시예에서, 서버는 예를 들어 클라이언트로서 작용하는 디바이스와 상호작용하는 사용자로부터 데이터를 표시하고 사용자로부터 사용자 입력을 수신하기 위해 데이터, 예를 들어 HTML 페이지를 사용자 디바이스에 전송한다. 사용자 디바이스에서 생성된 데이터, 예를 들어 사용자 상호작용의 결과는 디바이스로부터 서버에서 수신될 수 있다.
본 명세서에는 많은 구체적인 구현 세부 사항이 포함되어 있지만, 이는 임의의 발명의 범위 또는 청구될 수 있는 범위에 대한 제한으로 해석되어서는 안 되며 오히려 특정 발명의 특정 실시예에 특정할 수 있는 특징의 설명으로 해석되어야 한다. 별도의 실시예와 관련하여 본 명세서에 설명된 특정 특징은 단일 실시예에서 조합하여 구현될 수도 있다. 역으로, 단일 실시예의 맥락에서 설명된 다양한 특징은 또한 개별적으로 또는 임의의 적절한 하위 조합으로 다중 실시예에서 구현될 수 있다. 더욱이, 특징들이 특정 조합으로 작용하는 것으로 위에서 설명될 수 있고 심지어 초기에 그러한 것으로 청구될 수 있지만, 청구된 조합의 하나 이상의 특징은 일부 경우에 조합에서 제거될 수 있으며 청구된 조합은 하위 조합 또는 하위 조합의 변형으로 안내될 수 있다.
유사하게, 동작들이 도면에 도시되어 있고 청구범위에 특정 순서로 인용되어 있지만, 이것은 바람직한 결과를 달성하기 위해 그러한 동작들이 표시된 특정 순서 또는 순차적인 순서로 수행되거나 예시된 모든 작업이 수행되어야 함을 요구하는 것으로 이해되어서는 안된다. 특정 상황에서는 멀티태스킹 및 병렬 처리가 유리할 수 있다. 더욱이, 위에서 설명된 실시예에서 다양한 시스템 모듈 및 컴포넌트의 분리는 모든 실시예에서 이러한 분리를 요구하는 것으로 이해되어서는 안 되며, 설명된 프로그램 컴포넌트 및 시스템은 일반적으로 단일 소프트웨어 제품 또는 여러 소프트웨어 제품으로 패키징된다.
주제의 특정 실시예가 설명되었다. 다른 실시예는 다음 청구항의 범위 내에 있다. 예를 들어, 청구범위에 언급된 동작들은 다른 순서로 수행될 수 있으며 여전히 바람직한 결과를 얻을 수 있다. 일 예로, 첨부 도면에 도시된 프로세스는 바람직한 결과를 달성하기 위해 도시된 특정 순서 또는 순차적인 순서를 반드시 필요로 하지는 않는다. 경우에 따라 멀티태스킹 및 병렬 처리가 유리할 수 있다.

Claims (16)

  1. 신경망 구현 방법으로서,
    신경망은 적어도 하나의 희소 1×1 컨볼루션 계층을 포함하는 복수의 계층을 포함하고, 컨볼루션 계층의 입력은 H×W 어레이로 배열된 복수의 엘리먼트 각각에 대해 특징값의 개별 입력 채널을 포함하고,
    희소 1×1 컨볼루션 계층은 입력 채널에 희소 1×1 컨볼루션을 적용하여 각각 복수의 컨볼루션 값으로 구성된 개별 출력 채널을 형성하도록 구성되고, 희소 1×1 컨볼루션은 0과 동일한 복수의 널(null) 가중치 및 복수의 비-널(non-null) 가중치를 갖는 희소 C×C' 가중치 행렬로 정의되고, 그리고 입력 채널은 활성화 행렬의 각 엘리먼트에 대해 정의된 특징값을 갖는 조밀한 C'×HW 활성화 행렬을 구성하며, 상기 방법은,
    가중치 행렬의 널 가중치들의 표시를 획득하는 단계; 및
    활성화 행렬의 행에 있는 복수의 엘리먼트를 포함하는 행 벡터의 엘리먼트들에 대해:
    (a) 활성화 행렬을 저장하는 메모리 유닛으로부터 입력 채널들의 대응하는 특징값들을 추출하고, 상기 대응하는 특징값들은 상기 표시에 따라 가중치 행렬의 대응하는 가중치가 비-널 가중치인 특징값이고, 그리고
    (b) 각각의 비-널 가중치에 의해 가중된 대응하는 추출된 특징값들의 대응하는 합을 형성함으로써,
    복수의 엘리먼트에 대한 컨볼루션 값들을 생성하여 조밀한 C'×HW 활성화 행렬과 함께 희소 C×C' 가중치 행렬을 처리하는 단계를 포함하는 것을 특징으로 하는 신경망 구현 방법.
  2. 제1항에 있어서,
    상기 널 가중치는,
    가중치 매트릭스의 성분의 실질적으로 70-95%를 구성하는 것을 특징으로 하는 신경망 구현 방법.
  3. 제1항 또는 제2항에 있어서,
    상기 신경망의 출력 계층는,
    완전히 연결된 것을 특징으로 하는 신경망 구현 방법.
  4. 임의의 선행하는 항에 있어서,
    상기 메모리 유닛은,
    CHW 메모리 레이아웃을 갖는 것을 특징으로 하는 신경망 구현 방법.
  5. 제4항에 있어서,
    상기 처리는,
    동일한 행에 있는 엘리먼트의 연속적인 행 벡터에 대한 내부 루프 및 연속적인 행에 대한 외부 루프로 수행되는 것을 특징으로 하는 신경망 구현 방법.
  6. 임의의 선행하는 항에 있어서,
    상기 처리는,
    연속적인 행 벡터에 대해 반복적으로 처리가 수행되고, 상기 행 벡터는 집합적으로 전체 엘리먼트 어레이를 포함하는 것을 특징으로 하는 신경망 구현 방법.
  7. 임의의 선행하는 항에 있어서,
    상기 신경망은,
    컨볼루션 계층을 뒤따르고 하나 이상의 출력값을 생성하도록 배열된 출력 계층을 더 포함하고, 각 출력값은 모든 엘리먼트의 모든 컨볼루션 값에 기초하여 결정되는 것을 특징으로 하는 신경망 구현 방법.
  8. 임의의 선행하는 항에 있어서,
    상기 비-널 가중치들은,
    가중치 행렬의 복수의 행 각각에서 동일한 위치에 있는 것을 특징으로 하는 신경망 구현 방법.
  9. 제8항에 있어서,
    상기 가중치 행렬의 복수의 행에 대한 처리는,
    행 벡터에 대한 출력 채널들의 대응하는 복수의 컨볼루션된 값을 생성하기 위해 병렬로 수행되는 것을 특징으로 하는 신경망 구현 방법.
  10. 임의의 선행하는 항에 있어서,
    복수의 엘리먼트에 대한 컨벌루션 값을 생성하는 동안, 메모리 유닛으로부터 대응하는 특징값의 추출 시 추출된 특징값은 캐시 메모리에 저장되고, 추출 및 저장은 복수의 엘리먼트에 대한 선행 컨볼루션 값을 생성하는 동안 캐시 메모리에 저장된 특징값에 대해 수행되지 않는 것을 특징으로 하는 신경망 구현 방법.
  11. 제10항에 있어서,
    복수의 엘리먼트에 대한 대응하는 특징값에 기초하여 복수의 엘리먼트에 대한 컨볼루션된 값을 생성하는 동안, 복수의 추가 엘리먼트에 대한 대응하는 특징값도 메모리 유닛으로부터 캐시 메모리로 판독되고, 복수의 추가 엘리먼트의 컨볼루션 값은 복수의 엘리먼트에 대한 컨볼루션 값과 병렬로 생성되지 않는 것을 특징으로 하는 신경망 구현 방법.
  12. 임의의 선행하는 항에 따라 구현된 신경망 생성 방법으로서,
    가중치 행렬의 비-널 가중치들을 결정하기 위해 트레이닝 예제들에 기초하여 트레이닝 절차를 수행하는 단계를 포함하는 것을 특징으로 하는 신경망 구현 방법.
  13. 제12항에 있어서,
    상기 가중치 행렬의 널 가중치들은 희소성 데이터세트에 따라 사전 결정되는 것을 특징으로 하는 신경망 구현 방법.
  14. 신경망을 구현하도록 구성된 시스템으로서,
    신경망은 적어도 하나의 희소 1×1 컨볼루션 계층을 포함하는 복수의 계층을 포함하고, 컨볼루션 계층의 입력은 H×W 어레이로 배열된 복수의 엘리먼트 각각에 대해 특징값의 개별 입력 채널을 포함하고,
    희소 1×1 컨볼루션 계층은 입력 채널에 희소 1×1 컨볼루션을 적용하여 각각 복수의 컨볼루션 값으로 구성된 개별 출력 채널을 형성하도록 구성되고, 희소 1×1 컨볼루션은 0과 동일한 복수의 널(null) 가중치 및 복수의 비-널 가중치를 갖는 희소 C×C' 가중치 행렬로 정의되고, 그리고 입력 채널은 활성화 행렬의 각 엘리먼트에 대해 정의된 특징값을 갖는 조밀한 C'×HW 활성화 행렬을 구성하며,
    상기 시스템은 메모리 유닛 및 프로세싱 유닛을 포함하고, 상기 메모리 유닛은 프로세싱 유닛에 의해 구현될 때 프로세싱 유닛으로 하여금:
    가중치 행렬의 널 가중치들의 표시를 획득하고; 그리고
    활성화 행렬의 행에 있는 복수의 엘리먼트를 포함하는 행 벡터의 엘리먼트들에 대해:
    (a) 활성화 행렬을 저장하는 메모리 유닛으로부터 입력 채널들의 대응하는 특징값들을 추출하고, 상기 대응하는 특징값들은 상기 표시에 따라 가중치 행렬의 대응하는 가중치가 비-널 가중치인 특징값이고, 그리고
    (b) 각각의 비-널 가중치에 의해 가중된 대응하는 추출된 특징값들의 대응하는 합을 형성함으로써,
    복수의 엘리먼트에 대한 컨볼루션 값들을 생성하여 조밀한 C'×HW 활성화 행렬과 함께 희소 C×C' 가중치 행렬을 처리하게 하는 명령들을 저장하는 것을 특징으로 하는 신경망을 구현하도록 구성된 시스템.
  15. 제14항에 있어서, 제1항 내지 제11항 중 어느 한 항의 방법을 구현하도록 구성된 시스템.
  16. 제1항 내지 제13항 중 어느 한 항의 방법을 구현하기 위한 컴퓨터 프로그램 명령들을 저장하는 유형의 비-일시적 저장 매체.
KR1020227009693A 2019-09-25 2020-09-23 고속 희소 신경망 KR20220051242A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201962905888P 2019-09-25 2019-09-25
US62/905,888 2019-09-25
PCT/EP2020/076587 WO2021058578A1 (en) 2019-09-25 2020-09-23 Fast sparse neural networks

Publications (1)

Publication Number Publication Date
KR20220051242A true KR20220051242A (ko) 2022-04-26

Family

ID=72644240

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227009693A KR20220051242A (ko) 2019-09-25 2020-09-23 고속 희소 신경망

Country Status (7)

Country Link
US (1) US20220335272A1 (ko)
EP (1) EP4007971A1 (ko)
JP (1) JP7403638B2 (ko)
KR (1) KR20220051242A (ko)
CN (1) CN114424252A (ko)
CA (1) CA3155094A1 (ko)
WO (1) WO2021058578A1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116187420A (zh) * 2023-05-04 2023-05-30 上海齐感电子信息科技有限公司 轻量化的深度神经网络的训练方法、系统、设备和介质
KR102660892B1 (ko) * 2023-06-27 2024-04-26 주식회사 하이퍼엑셀 로터리 포지션 임베딩 연산을 위한 메모리 매핑 방법 및 시스템

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114819119A (zh) * 2017-06-30 2022-07-29 华为技术有限公司 信号处理的系统和方法
US20210264239A1 (en) * 2020-02-20 2021-08-26 Tencent America LLC Method and apparatus for neural network optimized matrix-matrix multiplication (nnmm)
US20220108156A1 (en) * 2020-10-05 2022-04-07 Numenta, Inc. Hardware architecture for processing data in sparse neural network
KR20230063791A (ko) * 2021-11-02 2023-05-09 리벨리온 주식회사 인공지능 코어, 인공지능 코어 시스템 및 인공지능 코어 시스템의 로드/스토어 방법
US20230267301A1 (en) * 2022-02-23 2023-08-24 International Business Machines Corporation Neural network inference quantization

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11003985B2 (en) * 2016-11-07 2021-05-11 Electronics And Telecommunications Research Institute Convolutional neural network system and operation method thereof
CN107239824A (zh) * 2016-12-05 2017-10-10 北京深鉴智能科技有限公司 用于实现稀疏卷积神经网络加速器的装置和方法
US20180330235A1 (en) * 2017-05-15 2018-11-15 National Taiwan University Apparatus and Method of Using Dual Indexing in Input Neurons and Corresponding Weights of Sparse Neural Network

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116187420A (zh) * 2023-05-04 2023-05-30 上海齐感电子信息科技有限公司 轻量化的深度神经网络的训练方法、系统、设备和介质
KR102660892B1 (ko) * 2023-06-27 2024-04-26 주식회사 하이퍼엑셀 로터리 포지션 임베딩 연산을 위한 메모리 매핑 방법 및 시스템

Also Published As

Publication number Publication date
US20220335272A1 (en) 2022-10-20
JP7403638B2 (ja) 2023-12-22
WO2021058578A1 (en) 2021-04-01
EP4007971A1 (en) 2022-06-08
CA3155094A1 (en) 2021-04-01
CN114424252A (zh) 2022-04-29
JP2022550730A (ja) 2022-12-05

Similar Documents

Publication Publication Date Title
KR20220051242A (ko) 고속 희소 신경망
US11227216B2 (en) Batch processing in a neural network processor
CN108073983B (zh) 在硬件中执行核心跨越
US11620513B2 (en) Computing convolutions using a neural network processor
US11693627B2 (en) Contiguous sparsity pattern neural networks
CN111194451B (zh) 门控激活单元运算的并行执行
US20230008777A1 (en) Accelerating convolutions for sparse inputs
KR20240050389A (ko) 그룹 컨볼루션 구현을 위한 신경망 아키텍처
KR20240063137A (ko) 하드웨어 가속기 최적화형 그룹 컨볼루션 기반 신경망 모델
KR20230096904A (ko) 희소 행렬 데이터 압축 방법 및 장치