KR20200118815A - 신경망 가속기 - Google Patents

신경망 가속기 Download PDF

Info

Publication number
KR20200118815A
KR20200118815A KR1020207023816A KR20207023816A KR20200118815A KR 20200118815 A KR20200118815 A KR 20200118815A KR 1020207023816 A KR1020207023816 A KR 1020207023816A KR 20207023816 A KR20207023816 A KR 20207023816A KR 20200118815 A KR20200118815 A KR 20200118815A
Authority
KR
South Korea
Prior art keywords
activation
weight
lane
multiplexer
tile
Prior art date
Application number
KR1020207023816A
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 KR20200118815A publication Critical patent/KR20200118815A/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/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
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • 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
    • 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
    • G06N3/0481

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Complex Calculations (AREA)

Abstract

입력 희소성을 이용하기 위한 신경망 가속기 타일이 설명된다. 상기 타일은 각각의 가중치 레인에 가중치 및 가중치 선택 메타데이터를 공급하기 위한 가중치 메모리; 입력 활성화 값 세트를 수신하고 상기 입력 활성화 값 세트를 재배열하여 재배열된 활성화 값 세트를 각각의 활성화 레인에 공급하기 위한 활성화 선택 유닛; 멀티플렉서 세트로서, 상기 멀티플렉서 세트는 활성화 레인과 가중치 레인의 쌍마다 적어도 하나의 멀티플렉서를 포함하고, 각각의 멀티플렉서는 상기 가중치 레인의 가중치 선택 메타데이터에 기초하여 재배열된 활성화 값의 상기 활성화 레인 세트로부터 상기 활성화 레인에 대한 결합 활성화 값을 선택하도록 구성된, 상기 멀티플렉서 세트; 및 멀티플렉서마다 적어도 하나의 결합 유닛을 포함하는 결합 유닛 세트로서, 각각의 결합 유닛은 상기 활성화 레인의 결합값을 상기 가중치 레인의 가중치와 결합시켜 가중치 레인 곱을 출력하도록 구성된, 상기 결합 유닛 세트를 포함한다.

Description

신경망 가속기
본 명세서는 일반적으로 신경망(neural network)을 위한 하드웨어 아키텍처에 관한 것으로, 보다 상세하게는 신경망 하드웨어 가속기에 관한 것이다.
심층 학습 신경망(Deep Learning Neural Network: DNN)은 하이-엔드 서버(high-end server)부터 모바일 및 임베디드 시스템에 이르기까지 다양한 컴퓨팅 플랫폼에서 실행되는 애플리케이션이 점점 더 증가하는 것을 발견하고 있다. DNN 작업 부하(workload)의 중요성이 증가하고 계산 및 메모리 요구가 높아짐에 따라 특수 하드웨어 가속기가 등장했다.
이미지 기반 애플리케이션을 지배하고 있는 컨볼루션 신경망(Convolutional Neural Network: CNN)과 같은 여러 유형의 DNN이 존재한다. 예를 들어, CNN은 이미지 또는 비디오 프레임을 추론하는 데 사용될 수 있으며, CNN으로 추론을 가속하는 것, 특히 CNN에서 실행 시간을 지배하는 경향이 있는 컨볼루션 층을 추론하는 것을 가속하는 것이 종종 요구된다.
신경망의 가속 분야에서 최근의 발전은 하드웨어 구현을 향한 추진을 포함한다. 예를 들어, 높은 네트워크 연결성 또는 다른 기능으로 뉴런의 거동을 보다 정밀하게 모방하도록 설계된 회로가 개발되었다.
본 발명의 일 실시형태에 따르면, 가중치 레인(weight lane) 세트 및 활성화 레인(activation lane) 세트를 규정하는 입력 희소성(input sparsity)을 이용하기 위한 신경망 가속기 타일(neural network accelerator tile)로서, 각 가중치 레인은 활성화 레인에 대응하고, 상기 타일은, 상기 가중치 레인 세트의 각각의 가중치 레인에 가중치 및 가중치 선택 메타데이터를 공급하기 위한 가중치 메모리; 입력 활성화 값 세트를 수신하고 상기 입력 활성화 값 세트를 재배열하여 재배열된 활성화 값 세트를 각각의 활성화 레인에 공급하기 위한 활성화 선택 유닛; 멀티플렉서 세트로서, 상기 멀티플렉서 세트는 활성화 레인과 가중치 레인의 쌍마다 적어도 하나의 멀티플렉서를 포함하고, 각각의 멀티플렉서는 상기 가중치 레인의 가중치 선택 메타데이터에 기초하여 재배열된 활성화 값의 상기 활성화 레인 세트로부터 상기 활성화 레인에 대한 결합 활성화 값을 선택하도록 구성된, 상기 멀티플렉서 세트; 및 멀티플렉서마다 적어도 하나의 결합 유닛을 포함하는 결합 유닛 세트로서, 각각의 결합 유닛은 상기 활성화 레인의 결합값을 상기 가중치 레인의 가중치와 결합시켜 가중치 레인 곱(product)을 출력하도록 구성된, 상기 결합 유닛 세트를 포함하는, 상기 신경망 가속기 타일이 제공된다.
본 발명의 다른 실시형태에 따르면, 가속기 타일로서, 활성화 값 세트를 수신하고 상기 활성화 값 세트를 적어도 하나의 멀티플렉서 입력값 세트로 재배열하기 위한 활성화 선택 유닛; 적어도 하나의 가중치 및 적어도 하나의 가중치 선택 메타데이터를 수신하기 위한 가중치 값 수용체(receptor) 세트; 상기 적어도 하나의 멀티플렉서 입력값 세트 중 적어도 하나와 적어도 하나의 가중치 선택 메타데이터를 수신하기 위한 적어도 하나의 멀티플렉서로서, 상기 적어도 하나의 가중치 선택 메타데이터를 적용하여 상기 적어도 하나의 멀티플렉서 입력값 세트로부터 적어도 하나의 결합 활성화 값을 선택하도록 구성된 상기 적어도 하나의 멀티플렉서; 상기 적어도 하나의 결합 활성화 값을 상기 적어도 하나의 가중치에 적용하여 적어도 하나의 곱을 생성하기 위한 적어도 하나의 결합기; 및 상기 적어도 하나의 곱을 출력하기 위한 적어도 하나의 곱 출력 분배기(product output dispenser)를 포함하는, 상기 가속기 타일이 제공된다.
본 출원에 따른 다른 양태 및 특징은 첨부 도면과 관련하여 본 발명의 다음의 실시형태의 설명을 검토할 때 이 기술 분야에 통상의 지식을 가진 자에게 명백해질 것이다.
본 발명의 원리는 본 발명의 원리 및 양태를 포함하는 예시적인 실시형태 또는 실시형태들의 예시로서 제공된 첨부 도면을 참조하여 더 잘 이해될 수 있을 것이다.
도 1은 예시적인 컨볼루션 층의 개략도;
도 2는 의사 코드 컨볼루션 층을 계산하는 일례를 도시하는 도면;
도 3은 조밀한 신경망 가속기 타일의 개략도;
도 4a 내지 도 4b는 CNN 기능의 예시적인 개략도;
도 5a 내지 도 5c는 일 실시형태에 따른 전방 탐색(lookahead) 기능의 개략도;
도 6a 내지 도 6b는 일 실시형태에 따른 측방 탐색(lookaside) 기능의 개략도;
도 7a 내지 도 7c는 일 실시형태에 따른 가중치 스킵(skip) 가속기 타일 아키텍처의 개략도;
도 8은 일 실시형태에 따라 비-유효(ineffectual) 활성화 비트를 스킵하는 능력을 추가하는 가속기 타일 아키텍처의 개략도;
도 9는 일 실시형태에 따른 다중 타일 가속기의 개략도;
도 10은 3개의 실시형태에 따른 AlexNet-ES의 성능 개선을 나타내는 도면;
도 11은 3개의 실시형태에 따른 GoogLeNet-Es의 성능 개선을 나타내는 도면;
도 12는 가중치 스킵만을 갖는 일 실시형태에 따른 희소 승격 창(sparse promotion window)의 성능을 나타내는 도면;
도 13a 및 도 13b는 두 실시형태의 구성의 에너지 효율을 비교하는 도면;
도 14는 5개의 압축 방식 실시형태의 성능을 도시하는 도면; 및
도 15는 Mux 선택 테이블(Mux Select Table: MST)이 각각의 필터 레인에 도입되는 일 실시형태의 개략도.
도면에서 동일한 참조 번호는 동일하거나 대응하는 요소를 나타낸다.
본 명세서에 기술된 다음의 설명 및 실시형태는 본 발명의 원리의 특정 실시형태의 실시예 또는 실시예들을 예시적으로 제공된다. 이들 실시예는 본 발명을 설명하기 위한 것일 뿐 본 발명의 이들 원리 및 본 발명을 제한하기 위한 것이 아니다. 본 설명에서, 동일한 부분은 명세서 및 도면 전체에 걸쳐 동일한 각각의 참조 번호로 표시된다. 도면은 반드시 축척에 맞게 도시된 것은 아니며, 일부 경우에, 본 발명의 특정 특징을 보다 명확하게 도시하기 위해 비율이 과장되었을 수 있다.
본 설명은 신경망을 위한 하드웨어 가속기에 관한 것이고, 특히 컨볼루션 신경망(Convolutional Neural Network: CNN)으로 추론하는 데 사용되는 구성과 관련하여 설명된다.
CNN은 종종 많은 이미지 관련 애플리케이션에 대한 실행 시간을 지배하는 컨볼루션 층(convolutional layer)(CVL)과 함께 층 체인 또는 직접 비순환 그래프를 포함한다. 도 1에 도시된 실시형태에서, 컨볼루션 층(1000)은 Ax×Ay×C 활성화 어레이(1100)를 수신하고, 이 활성화 어레이는 K개의 가중치 필터 어레이의 세트(1200)(이 세트(1200)는 F0 내지 F(K-1)의 Fx×Fy×C 필터 어레이 세트임)와 컨벌빙(convolved)되어, Ox×Oy×K 출력 활성화 어레이(1300)를 생성한다. 출력 활성화 어레이(1300)의 각각의 출력 활성화 o(x, y, k)는 입력 활성화 어레이(1100)의 Fx×Fy×C 서브 어레이 창과 필터(Fk)의 도트 곱(dot product)이다. 창들은 스트라이드(stride)(S)를 사용하여 균일하게 이격되어,
Figure pct00001
×
Figure pct00002
= Ox×Oy를 생성한다. 정류기 선형 장치(rectifier linear unit)(ReLU)와 같은 활성화 함수가 각 출력 활성화에 적용된다. 종종, 도 1에 도시된 실시형태와 같은 층은 100개 내지 1000개의 입력 가중치와 활성화 쌍 각각의 출력 활성화 어레이를 생성하기 위해 100개 내지 1000개의 도트 곱 계산을 요구한다.
도 2에 도시된 바와 같이, 일 실시형태에서 CVL은 6 중첩 루프(nested loop)로서 구현될 수 있다. 일부 실시형태에서, 루프의 곱셈은 독립적이며, 루프의 상이한 순열(permutation)은 동일한 출력 활성화 어레이를 생성하고, 일부 순열에서는 계산이 동시에 실행될 수 있다.
CVL은 종종 특정 유형의 신경망에서 특정 유형의 층으로 보이지만, 다른 유형의 층은 CVL의 변형으로서 구현될 수 있다. 예를 들어, 완전히 연결된 층은 단일 창을 가진 CVL로 구현될 수 있으며 여기서 필터와 입력은 동일한 차원이다.
도 2의 6-중첩 루프에 의해 구현된 CVL은 모든 가중치 및 활성화를 처리하기 때문에 조밀한 CNN을 처리하는 것처럼 활성화 및 가중치를 처리하였다. 그러나 실제로 일부 가중치는 0(zero)이고, 일부 활성화는 0으로 처리될 정도로 0이거나 0에 가깝기 때문에 비-유효하다. 많은 신경망은 다양한 이유로 희소한 데, 예를 들어, 종종 CNN 재훈련이 필요한 가중치 프루닝(weight pruning)도 가중치 희소성에 기여할 수 있다.
하드웨어 가속기의 실시형태는 가중치와 활성화 중 하나 또는 둘 모두의 희소성과 같은 희소성을 이용한다. 본 발명의 실시형태에서, 가중치 희소성이 직접 이용되고, 활성화 희소성이 간접 이용된다. 실시형태는 유효 활성화에도 이점을 생성할 수 있다.
조밀한 CNN을 처리하기 위한, 예를 들어, 도 1에 도시된 CVL을 처리하기 위한 데이터 병렬 하드웨어 가속기(3000)의 일례가 도 3에 도시되어 있다. 데이터 병렬 하드웨어 가속기(3000)는 사이클에서 가중치 및 활성화를 처리하고, 사이클마다 k개의 부분 출력 활성화를 생성한다. 데이터 병렬 하드웨어 가속기(3000)는 N개의 활성화의 동일한 세트에 대해 병렬로 동작하는 k개의 내적 유닛(Inner Product Unit: IPU)(3100)을 포함한다. 각 입력 활성화는 필터(1200) 세트의 필터마다 하나씩 k개의 가중치와 다음과 같이 곱해지고, 즉 각 IPU(3100)는 사이클마다 N개의 가중치의 벡터를 입력 활성화마다 하나씩 수신하고, N개의 곱을 계산하고, 이를 가산기 트리(adder tree)를 통해 감소시키고, 결과를 출력 레지스터에 누산한다. 일반적으로 다수의 사이클에 걸쳐 전체 창이 처리되면 출력 레지스터는 대응하는 출력 활성화를 포함한다.
데이터 병렬 하드웨어 가속기(3000)는 가중치 및 활성화를 가속기(3000)에 각각 제공하는 가중치 메모리(3200) 및 활성화 메모리(3300)를 포함한다. 문헌[Y. Chen, T. Luo, S. Liu, S. Zhang, L. He, J. Wang, L. Li, T. Chen, Z. Xu, N. Sun 및 O. Temam, "Dadiannao: A machine-learning supercomputer" in Microarchitecture (MICRO), 2014 47th Annual IEEE/ACM International Symposium on, pp. 609-622, Dec 2014]에 개시된 실시형태와 유사한 도시된 실시형태에서, 가중치 메모리(3200) 및 활성화 메모리(3300)는 한 번에 전체 층을 보유할 수 있을 만큼 충분히 크며, 가중치 메모리(3200)는 단일 광폭 판독 포트를 통해 사이클마다 N×k 가중치를 공급할 수 있고, 활성화 메모리(3300)는 광폭 판독 포트를 통해 사이클마다 N개의 활성화를 공급할 수 있고, 가중치 및 활성화 버퍼는 가중치 메모리(3200) 및 활성화 메모리(3300)의 대기 시간을 감추고, 출력 활성화 버퍼는 신경망의 다음 층에 대해 활성화 메모리(3300)에 결과를 다시 기입하기 전에 결과를 수집할 수 있다. 도시된 바와 같이, 가속기(3000)는 추론 가속기의 많은 실시형태에서와 같이 16 비트 고정 소수점 형식을 사용하여 활성화 및 가중치를 나타낸다. 도 3에 도시된 실시형태는 다수의 타일이 존재하는 경우 이들 타일은 사이클마다 N개의 활성화의 블록을 모든 타일에 브로드캐스트(broadcast)하는 동일한 활성화 메모리(3300)에 모두 연결된다고 가정한다.
도 4a 및 도 4b는 도 3의 가속기(3000)의 IPU(3100)가 활성화 및 단계(step)를 처리할 수 있는 방식의 일례를 도시하며 여기서 N은 4로 설정되고 k는 1로 설정된다. 활성화는
Figure pct00003
로 표시되고, 가중치는
Figure pct00004
로 표시되며, 여기서 레인은 레인이 보이는 활성화 열(column) 및 가중치 행(row)을 나타내고, 단계는 단계가 곱해지는 시간에서 차수(order)를 나타낸다. 각각의 단계가 단일 사이클을 필요로 한다고 가정하면, 가속기(3000)는 가중치 세트가 도 4a에서와 같이 조밀한지 또는 도 4b에서와 같이 희소한지 여부에 관계 없이 4 사이클로 16개의 곱을 처리한다. 이것은 도 4b의 예에서 필요한 6개의 곱이 이 곱이 자유로이 스케줄링되었다면 2 사이클에서 수행될 수 있음에도 불구하고 그러하다. 본 발명의 실시형태는 가중치 및 활성화의 비-제한된 스케줄의 복잡성을 피하면서 비-유효 가중치와의 곱을 제거한다.
본 발명의 실시형태는 시간적으로 유효 가중치를 정적으로 승격시켜, 비-유효 가중치를 처리할 수 있을 때 이를 처리함으로써 비-유효 가중치를 제거한다. 소프트웨어 스케줄링 패스(pass)는 처리 전에 가중치를 재배열하여 오른쪽 레인에 보이고 런타임에 페치(fetch)될 때 단계를 수행한다. 그 결과, 이러한 실시형태의 타일은 연관된 가중치 메모리에 단일 광폭 액세스를 사용하여 단계마다 필요한 모든 k×N개의 가중치에 액세스할 수 있다. 각 효과적인 가중치는 런타임 시 적절한 활성화와 일치될 수 있도록 원래 조밀한 가중치 스케줄에서 그 위치를 식별하기 위해 협소한 메타데이터를 포함한다.
실시형태에서 가중치 스케줄링 유연성은 예를 들어 단 2개의 필터 내 가중치 움직임, 즉 전방 탐색 움직임 및 측방 탐색 움직임만을 허용하는 스케줄을 허용함으로써 에너지 및 면적 효율과 균형을 이룰 수 있다. 전방 탐색 움직임은 유효 가중치가 단계적으로 전진하여 비-유효 가중치를 대체하는 것을 허용하고, 예를 들어, 유효 가중치(w[레인, 단계])를 전진시켜 비-유효 가중치(w[레인, 단계-h])를 대체시키며, 여기서, h는 가속기 아키텍처에서 이용 가능하게 되어야 하는 활성화 값의 수에 연결된 전방 탐색 깊이이다. 측방 탐색 움직임은 유효 가중치가 다른 레인에서 비-유효 가중치를 대체할 수 있게 하고, 예를 들어, 유효 가중치(w[레인, 단계])는 하나의 시간 단계 전진될 수 있고, d개의 레인을 시프트시켜 비-유효 가중치(w[(레인 + d) MOD(N-1), 단계-1])를 대체하도록 할 수 있다.
도 5a 내지 도 5c는 도 4b에 도시된 희소 필터를 적용하는 가속기(5000)에 대한 전방 탐색 가중치 스케줄링의 일례의 개략도를 도시한다. 도 5a 내지 도 5c에 도시된 바와 같이, h = 1로 설정하면 실행 시간이 4 사이클로부터 3으로 감소된다. 도 4a 내지 도 4b의 가속기 실시형태와 같이, 도 5a 내지 도 5c의 가속기(5000)는 사이클마다 4개의 곱을 처리할 수 있다. 전방 탐색을 사용하면 가속기(5000)가 h + 1의 슬라이딩 창을 수립할 수 있고, 이 창에서 유효 가중치는 동일한 레인에 보이는 비-유효 가중치에 비해 승격될 수 있다.
도 5a에 도시된 사이클 0에서, 전방 탐색 창(5100)은 가중치(w[2, 2])가 전방 탐색 거리 2이고 h는 1로 설정되어 있기 때문에 가중치 레인 2를 이용하지 못한다. 도 5b에서, 사이클 1에서 유효 가중치(w[1, 1])가 처리되고 있으므로, 전방 탐색 창(5100)은 가속기(5000)의 도달 범위를 단계 1 = h 또는 2로 확장한다. 이는 가속기(5000)가 유효 가중치(w[2, 2])를 승격시켜 비-유효 가중치(w[2, 1])를 대체시키는 반면, 가중치(w[3, 3))는 전방 탐색 창(5100)을 벗어난 상태에 유지된다. 그러나, 더 이상 단계 3에서 처리될 가중치가 없기 때문에, 가속기(5000)는 2개의 단계를 단계 = 3으로 진행하여, 도 5c에 도시된 바와 같이, 사이클 2에서 가중치(w[3, 3])가 처리된다.
도 5a 내지 도 5c에 도시된 바와 같이, 레인 내 가중치의 정적 승격은 가속기(5000)가 런타임에 대응하는 활성화에 액세스할 것을 요구한다. 도시된 바와 같이, 이러한 쌍을 이루는 것을 허용하기 위해, 가속기(5000)는 전체 전방 탐색 창(5100)에 대한 모든 활성화에 액세스한다. h가 1로 설정됨에 따라, 각각의 사이클에서 가속기(5000)에 이용 가능한 2개의 활성화 레인이 존재한다. 가속기(5000)는 가중치 레인 2-대-1 멀티플렉서를 통해 적절한 활성화를 선택하고, 멀티플렉서에 대한 제어 신호는, 가중치 스케줄이 전방 탐색 기능에 대해 수정될 때 정적으로 결정되고, 제어 신호는 대응하는 가중치와 함께 저장된다.
가속기(5000)는 h개의 여분의 활성화 레인 및 (h + 1)-대-1 멀티플렉서를 사용하여 h의 전방 탐색 창에 대한 적절한 활성화를 선택하는 데, 여기서 h는 1로 설정된다. 다양한 실시형태에서, 더 넓은 활성화 그룹을 지원하면 가속기를 구성하는 데 비용과 실용성이 변하게 된다. 활성화 레인이 가속기의 다른 실시형태에서 타일마다 k개의 필터 간에 공유될 때, 활성화 레인을 포함하는 비용은 종종 다수의 가중치 레인에 걸쳐 상쇄(amortized)될 수 있다. 많은 경우 가속기에 전방 탐색 구조를 적용하는 이점은 2 이하의 h에서 이용 가능할 수 있다.
도 6a 내지 도 6b는 측방 탐색 구조를 이용하는 가속기(6000)의 개략도이다. 가속기(5000)의 전방 탐색 구조에 의해 허용되는 사이클 감소는 가장 유효 가중치를 갖는 레인에서 유효 가중치의 수로 제한된다. 가속기(6000)의 측방 탐색 구조는 가속기(6000)가 다른 레인에서 하나의 레인의 가중치를 처리할 수 있게 하여, 가속기(6000)가 이웃하는 덜 조밀하게 채워진 레인의 시간 및 레인 단계에서 원래의 가중치 구조의 더 조밀하게 채워진 레인의 가중치를 처리할 수 있게 한다.
가속기(6000)는 d가 1로 설정된 측방 탐색 구조를 이용한다. 도 6a에 도시된 바와 같이, 사이클 0에서, 레인 2는 레인 1로부터 가중치(w[1, 1])를 처리하여 가속기(6000)의 레인 2가 단계 0에서 유휴 상태로 유지되는 것이 아니라 가중치를 처리하게 한다. 이에 의해 가속기(6000)는 단계 2로 진행할 수 있고 또한 h = 1의 전방 탐색을 이용할 때 사이클 1에서 가중치(w[2, 2]) 및 가중치(w[3, 3])를 모두 처리할 수 있기 때문에 가속기는 또한 2개의 단계로 가중치 세트를 처리할 수 있다. 따라서 가속기(6000)는 전방 탐색 및 측방 탐색 구조를 이용하고 h = d = 1로 설정함으로써 최소 사이클 수에서 도 4b의 가중치 세트를 처리할 수 있다.
가속기(6000)는 h = 1인 전방 탐색 구조를 이용할 때, 가속기는 각각의 시간 단계에서 각각의 가중치 레인에 이용 가능한 2개의 활성화 레인을 가졌다. 그 결과, d = 1인 측방 탐색 구조를 이용하는 데 가속기(6000)에 추가 활성화 레인이 제공될 필요가 없고, 가속기(6000)는 더 많은 입력을 갖는 활성 멀티플렉서만을 요구한다. 가속기(6000)는 측방 탐색을 h로 설정하고 전방 탐색을 d로 설정하기 위해 (h + d + 1)-대-1 멀티플렉서를 이용한다. 이 멀티플렉서의 데이터 입력 연결은 정적으로 결정되고 정기적이다. 가속기(5000)와 같이, 가속기(6000)의 멀티플렉서에 대한 제어 신호는 정적으로 결정되고 가중치와 함께 저장되며, 가속기는 lg(h + d + 1) 비트를 요구한다. 가속기 변형에서, 증가된 d값은 더 큰 스케줄링 유연성을 허용할 수 있지만 증가된 상호 연결 비용이 들 수 있다.
도 7a 내지 도 7c는 가중치 스킵 가속기 타일(7000)의 구조를 도시한다. 가속기 타일(7000)은 k개의 필터에 대해 병렬로 필터마다 N개의 생성물(produce)을 처리한다. 타일(7000)은 활성화 메모리(7200)에서 제공하는 활성화를 버퍼링하는 활성화 선택 유닛(Activation Select Unit: ASU)(7100)을 포함한다. ASU(7100)는 가중치 스킵 유닛(Weight Skipping Unit: WSU)(7300)이 적절한 활성화를 직접 선택할 수 있도록 활성화를 재배열한다.
WSU(7300)의 WSU 슬라이스(slice)(7310)는 도 7b에 더 상세히 도시되어 있다. WSU(7300)는 타일마다 총 k개의 슬라이스에 대해 필터마다 하나의 슬라이스를 포함한다. 가속기(7000)의 WSU 슬라이스(7310)는 단일 가중치 메모리(7400) 포트를 통해 멀티플렉서 선택 메타데이터와 함께 미리 스케줄링된 가중치의 열을 판독한다. WSU(7300)는 액세스마다 N×k개의 가중치와 메타데이터 쌍 플러스 및 활성화 레인 제어(ALC) 필드를 판독한다. 도시된 바와 같이, 가속기 타일(7000)은 WSU 슬라이스(7310)마다 N개의 가중치를 처리하고, 모든 가중치는 하나의 단계에서 처리된다.
WSU 슬라이스(7310)는 승산기(multiplier)(7311)의 입력 중 하나를 공급하는 별도의 가중치 레인에 각각 매핑되는 N개의 가중치(w1 내지 wN)를 취한다. (h+d+1)-대-1 멀티플렉서는 승산기(7311)에 제2 입력을 선택한다. 멀티플렉서 제어 신호는 WSU(7300)가 가중치 메모리(7400)로부터 판독하는 가중치 선택(ws) 메타데이터(7312)로부터 온다. (h+d+1)-대-1 멀티플렉서(7313)는 승산기(7311)가 가능한 활성화에 액세스할 수 있을 만큼 충분한 활성화 값이 입력되는 것을 허용한다.
타일(7000)에 의해 처리된 각각의 가중치(wi)에 대해, h개의 활성화의 전방 탐색 창에 대응하는 h + 1개의 활성화(Ai,0 내지 Ai,h)가 존재한다. 예를 들어, w1의 경우 A1,2는 전방 탐색 2에 있는 활성화이고, wN의 경우 AN,h는 전방 탐색 h에 있는 활성화이다. ASU(7200)는 논리적인 전방 탐색 차수와 일치할 것을 활성화에 지시하여 WSU(7300)가 멀티플렉서 입력에 Ai,j 신호를 정적으로 할당함으로써 전방 탐색 및 측방 탐색을 구현할 수 있게 한다. 예를 들어, w2에 대한 측방 탐색 1 연결은 A3,1에 대한 것이고, 전방 탐색 2 연결은 A2,2에 대한 것이다. 모든 WSU 슬라이스(7310)는 동일한 (h + 1)×N개의 활성화를 공유한다.
도 7b에 도시된 바와 같이, 가속기 타일(7000)의 WSU 슬라이스(7310)는 사이클마다 N개의 16b×16b 곱을 생성하고, t1 내지 tN으로서 출력된다. 이러한 곱은 다수의 사이클에 걸쳐 출력이 출력 활성화로 누산되는 가산기 트리에 공급된다. 일부 실시형태에서, 본 가속기 타일(7000)의 변형은 활성화 특성을 이용하기 위해 AND 게이트 또는 시프터로 대체된 승산기(7311)를 가질 수 있다.
도 7c에 도시된 바와 같이, ASU(7200)는 WSU(7300)가 사용하는 A 레인 , 전방 탐색 신호를 생성한다. ASU(7200)는 대응하는 가중치 레인 및 단계 거리 전방 탐색에 필요한 입력 활성화를 승산기(7311)에 제공하기 위해 제공된다. ASU(7200)는 N개의 입력 활성화를 각각 보유하는 h + 1개의 활성화 블록 레지스터(ABR)(7210)를 포함한다. 각각의 ABR(7210)은 일부 특정 전방 탐색 거리(ℓ = 0 내지 h)에서 모든 가중치 레인에 필요한 N개의 활성화를 보유한다. ABR(7210)은 전방 탐색 = ℓ = 0에서 활성화를 보유하는 ABR을 가리키는 헤드 레지스터(head register)를 갖는 원형 큐(circular queue)로서 논리적으로 동작한다. 각각 (h + 1)-대-1 멀티플렉서인 h + 1개의 멀티플렉서(7220)의 어레이는 ABR 출력을 도 7c의 하단 근처에 도시된 바와 같이 가중치 열을 따라 분포된 A 레인, 전방 탐색 신호를 생성하는 적절한 차수로 셔플링(shuffle)한다. WSU(7300)가 각각의 N×k 가중치 열과 함께 WM(7400)으로부터 판독하는 ALC 메타데이터는 헤드 레지스터를 전진시키는 데 사용되며, 슬라이딩 전방 탐색 창을 구현한다.
활성화 버퍼(AB)(7230)는 활성화 메모리(AM)(7100)로부터 판독될 때 활성화를 버퍼링한다. AB(7230)는 h + 1개의 뱅크(bank)를 갖고, 각각의 뱅크는 전용 단일 판독 포트를 통해 하나의 ABR(7210)에 연결된다. 이러한 방식으로, 사이클마다 임의의 수의 ABR(7210)이 동시에 업데이트될 수 있으며, ALC 메타데이터에 의해 지시된 바에 따라 전방 탐색 창을 효과적으로 전진시킨다. 이 배열은 가속기 타일(7000)이 또한 비-유효 가중치만을 포함하는 열을 스킵할 수 있게 한다.
가중치 스킵은 가중치 희소성을 이용하지만, 이 스킵은 입력 활성화의 잠재적으로 가치 있는 특성을 이용하는 것은 아니다. 본 발명의 일부 실시형태에서, 가속기 또는 가속기 타일은 입력 활성화의 특성을 이용하거나 또는 입력 활성화 및 가중치 모두의 특성을 이용하도록 구성될 수 있다. 본 발명의 실시형태는 상이한 영역, 성능 및 에너지 효율 트레이드오프를 제공한다. 일부 실시형태는 활성화의 유효 비트 내용을 이용하고 성능을 우선시한다. 일부 실시형태는 고입도 동적 활성화 정밀도 가변성 및 우선 순위 에너지 효율을 이용한다. 일부 실시형태는 비-유효이든 아니든 간에 모든 활성화에 이점을 제공한다. 아래에 상세히 논의된 실시형태는 비-유효 활성화를 제거하려고 의도하는 것이 아니고 두 실시형태는 비-유효 활성화를 이용한다.
신경망의 층에 대한 평균 입력 활성화 세트의 많은 활성화 비트는 심지어 0이 아닌 활성화의 일부라도 0이므로 곱셈 동안에는 비-유효하다. 본 발명의 실시형태는 별개로 또는 가중치 희소성을 이용하는 것과 함께 비-유효 활성화 비트를 이용한다.
도 8에 도시된 바와 같이, 가속기(8000)는 시간에 따라 비트-직렬로 활성화의 유효 비트만을 처리하도록 구성된다. 예를 들어, 가속기(8000)는 대응하는 가중치에 부호 있는 2의 거듭 제곱{27, -24, +20}을 각각 곱하는 3 사이클에 걸쳐 활성화 값{0000 0000 1000 1111b}을 처리한다. 이러한 거듭 제곱은 활성화 값의 부스 인코딩(Booth-encoded) 표현이다. 이 구조는 가속기(8000)가 유효 활성화 비트의 수에 비례하는 실행 시간에서 입력 활성화를 처리할 수 있게 한다. 그러나, 활성화는 이제 비트-직렬로 처리되기 때문에, 가속기(8000)가 사이클마다 N×N 가중치와 활성화 쌍만을 처리하면 전체 처리량이 낮아진다. 가속기(8000)는 16개의 활성화 창을 병렬로 처리하여 전체 처리량을 증가시킴으로써 이러한 처리량 손실을 보상한다. 그 결과, 동일한 가중치가 16개의 창에 걸쳐 재사용될 수 있고, WM 인터페이스는 이전 실시형태에서와 같이 유지된다. 그러나, 가속기(8000)는 모든 레인이 활성화 그룹에 걸쳐 동기화된 공통 가산기 트리를 공급하는 것을 유지하는 데, 즉, 모든 레인은 다음 그룹의 활성화 값으로 진행하기 전에 가장 효과적인 비트를 사용하여 활성화를 처리하기를 기다린다. 설계자는 원하는 성능, 면적, 에너지 효율 목표를 달성하기 위해 병렬로 처리하기 위해 다른 개수의 활성화 창을 선택할 수 있다.
설계 시, 도 8의 가속기(8000)는 활성화를 처리하기 위한 실용적 가속기(Pragmatic Accelerator)(PRA) 설계의 많은 요소를 반영한다(PRA 설계를 논의하는 것에 대해서는, 전체 내용이 본 명세서에 병합된 문헌[J. Albericio , A. Delm
Figure pct00005
s, P. Judd, S. Sharify , G. O'Leary , R. Genov , and A. Moshovos, "Bit-pragmatic deep neural network computing", in Proceedings of the 50th Annual IEEE/ACM International Symposium on Microarchitecture, MICRO-50 '17, pp. 382-394, 2017] 참조). PRA 설계는 조밀한 CNN을 목표로 하고, 비-유효 활성화 비트를 이용하여 유효 활성화 비트 내용에 비례하는 실행 시간을 제공한다. PRA 설계는 활성화를 비트-직렬로 한번에 하나의 유효 비트로 처리한다. 타일별 유닛은 수정된 부스 인코딩을 적용한 후 활성화를 2의 유효 거듭 제곱 또는 oneffset의 스트립으로 변환한다. PRA 설계는 각 사이클마다 2의 거듭 제곱을 가중치와 곱하기 때문에 대신 시프터로도 충분하다. oneffset 부호는 가산기 트리를 통해 시프트된 가중치를 가산하거나 감산하는 데 사용된다. 등가 비트-병렬 설계의 처리량을 유지하기 위해 PRA 설계는 다수의 활성화 창을 병렬로 처리함으로써, 설계에서 창 처리에 걸쳐 동일한 가중치를 재사용할 수 있다.
실용적 가속기(PRA) 설계의 백엔드(back-end)는 일부 가속기 실시형태에서 수정될 수 있다. 일부 실시형태에서, PRA와 같이, 가속기 실시형태는 한번에 비트-직렬로 하나의 유효 거듭 제곱만큼 활성화를 처리한다. ABR별 유닛은 수정된 부스 인코딩을 적용한 후 활성화를 2의 유효 거듭 제곱 또는 oneffset의 스트림으로 변환한다. 일부 실시형태에서, 본 발명의 가속기는 시프터를 사용하여 가중치에 oneffset를 곱하고, 결과는 oneffset 부호에 따라 가산기 트리를 통해 가산되거나 감산된다. 본 발명의 가속기가 등가 비트-병렬 설계의 처리량과 항상 일치하거나 이를 초과하는 것을 보장하기 위해, 이 가속기는 16개의 활성화 창을 동시에 처리할 수 있다. 이에 의해 이 가속기는 16개의 IP 유닛에 걸쳐 동일한 가중치를 재사용할 수 있다.
도 8은 가속기(8000)의 타일을 도시한다. 도 3의 k개의 내적(IP) 유닛은 16×k개의 더 간단한 IP 유닛(8100)의 그리드로 확장되었다. 실용적 설계의 주요 수정은 WSU 및 ASU 슬라이스를 포함하고, 행마다 링(ring)을 사용하여 하나의 열만큼 부분 합을 이동시키는 능력을 포함한다. 구체적으로, 도 7a 내지 도 7c와 관련하여 논의된 원래의 WSU는 16개의 열(8200)에서 k개의 IP(8100)의 열마다 하나씩 WSU/0 내지 WSU/15로 슬라이스된다. 이 16개의 열 각각은 상이한 창에 대응한다. 각 IP(8100)는 16개의 입력 가산기 트리를 갖고, N개의 승산기 대신 N개의 시프터를 갖는다. 이들 각각은 활성화 oneffset 입력에 의해 지시된 만큼 16b 가중치 입력을 시프트시킨다. 동일한 행을 따른 모든 IP(8100)는 동일한 w(가중치) 신호 및 ws(가중치 선택) 신호를 공유하며, 이들 모두는 정확히 동일한 전방 탐색 및 측방 탐색 활성화 선택을 수행한다. 도 6과 달리, 멀티플렉서는 여기서 4b 활성화 oneffset를 선택하여 면적을 크게 감소시킨다. 이 oneffset는 최대 3개의 위치 + 부호 및 인에이블만큼 시프트를 인코딩한다. 각 열마다 ASU(8300)의 대응하는 ASU 슬라이스(ASU/0 내지 ASU/15)는 N개의 활성화 그룹에 대해 이전과 같이 가중치 레인마다 하나씩 데이터를 제공하고, 각각은 전방 탐색을 지원하는 h개의 활성화를 위한 데이터를 포함한다. 도 6과 달리, ASU는 4b oneffset를 제공한다. 모든 WSU 열(8200)이 동일한 가중치 스케줄을 실행하기 때문에, 모두 16개의 ASU 슬라이스는 동시에 활성화 버퍼에 액세스하고 동일한 활성화 선택 논리 및 신호를 공유한다.
실용적 가속기 설계에서, 각 열은 다른 창을 계산하기 때문에, 창이 겹치는 곳에서, 각각의 입력 활성화는 결국 다른 열에 나타나야 한다. 그 결과 실용적 가속기 설계를 간단히 확장하려면 각 타일의 활성화 버퍼와 AM 사이에 크로스바(crossbar)가 필요하다. TCL은 입력 활성화 공간을 16개의 IP 열에 정적으로 인터리브(interleave)하므로 크로스바가 필요치 않다. 구체적으로, 모든 활성화 a(c, x, y)는 열(x×S) MOD 16에 매핑된다. 이러한 수정에 의해 더 이상 IP에서 각 출력 활성화를 완전히 계산할 수 없다. 가속기 실시형태는 도 8에 도시된 링(8400)을 사용하여 부분 합들을 하나의 열만큼 수평으로 슬라이딩시킨다. 실용적 가속기 설계는 이미 완료된 결과를 판독하고 채널 수가 적은 층의 활용도를 높이기 위해 사용하는 인접한 열 IP들 간의 연결을 이미 포함한다. 부분 합계는, 열에 매핑되는 활성화를 사용하여 모든 합을 누산하는 데 필요한 한, 열에 유지된다. 그런 다음 모든 부분 합은 다음 열로 동시에 전진한다. 표 1은 JaZe에서 처리가 진행되는 방식의 일례를 보여준다.
Figure pct00006
처리: 16개의 채널이 있는 입력 활성화 어레이에서 3×3 필터의 16개의 창을 처리하려면 9개의 단계가 필요하다. 단계 0에서 출력 o(0, 0, 0)는 열 0에서 시작하여 단계 3 및 단계 6에서 각각 열 1과 열 2로 이동한다. 활성화 a(c, x, y)는 열×MOD 16에만 나타난다. 이 예에서 좌표는 a(채널, x, y)이다.
일부 실시형태에서, 비-유효 활성화 비트 또는 활성화 비트는 다르게 이용될 수 있다. 예를 들어, 일부 실시형태에서, 활성화의 유효 비트 내용은 정밀 요구 사항을 이용함으로써 이용된다. 정밀한 활성화 요구는 네트워크 및 층에 따라 다르며, 예를 들어 프로파일링을 통해 결정될 수 있다. 일 실시형태에서, 16b의 기준선 정밀도에 비해, 실행 시간은 16/p만큼 감소될 수 있으며, 여기서 p는 활성화가 사용하는 정밀도이다. 예를 들어, 스트라이프(stripe)(STR) 가속기 타일 설계가 이용될 수 있다. STR 가속기 타일 설계는 문헌[P. Judd, J. Albericio, T. Hetherington, T. Aamodt, and A. Moshovos, "Stripes: Bit-serial Deep Neural Network Computing", in Proceedings of the 49th Annual IEEE/ACM International Symposium on Microarchitecture, MICRO-49, 2016] 및 미국 특허 출원 공개 번호 US 2017/0357891 A1(발명의 명칭: "Accelerator for Deep Neural Networks", 발명자: Patrick Judd, Jorge Albericio, Alberto Delmas Lascorz, Andreas Moshovos, and Sayeh Sharify, 출원인: The Governing Council of the University of Toronto)에 개시되어 있고, 이 두 문헌은 전체 내용이 본 명세서에 병합된다.
STR 설계는 비트-직렬로 활성화를 처리하고, 따라서 p 비트로 표현된 활성화를 처리하는 데 p 사이클이 소요된다. PRA 설계에서와 같이, 비트-병렬 설계에 비해 계산 대역폭의 손실을 보상하기 위해, STR 설계를 이용하는 실시형태는 다수의 창을 병렬로 처리하고, 예를 들어, 16개의 창을 병렬로 처리한다. STR 설계는 승산기보다 AND 게이트를 이용한다. STR 설계의 블록 레벨 묘사는 도 8에 도시된 PRA 설계의 것과 유사하다. 그러나, STR 설계는 한번에 단일 oneffset 대신 한번에 단일 비트로 활성화를 전송하는 ASU를 이용하며, 활성화를 oneffset로 인코딩할 필요가 없다. 일반적인 STR 설계에서는 PRA 설계보다 활성화마다 필요한 와이어 수가 적고, 시프터가 없으며, 가산기 트리의 입력 폭은 16b이다.
가중치 희소성 이용 구조를 사용하는 모든 상황에서 입력 활성화 이용 가속기 구조를 사용하는 것은 바람직하지 않을 수 있다. 예를 들어, STR은 프로파일로-도출된 정밀도 요구 사항을 사용했지만 정밀도는 임의의 가능한 입력을 수용해야 하고 정밀도는 층에 대한 모든 활성화를 수용해야 하기 때문에 층에 대한 프로파일로-도출된 정밀도가 비관적인 것으로 관찰되었다. 그러나, 실제로, 일부 실시형태에서, 하나의 특정 입력에 대한 제한된 활성화 세트만이 런타임에 동시에 처리될 것이다. 더욱이, 일부 실시형태에서 대부분의 활성화는 거의 0에 이르므로, 이 접근법은 동시에 처리된 활성화의 그룹별 필요한 정밀도를 상당히 감소시킨다. 각 활성화 그룹에 필요한 정밀도는 정밀도가 활성화 메모리로부터 판독되고 활성화 값과 함께 전달될 때 검출된다. 대안적으로, 각 활성화 그룹에 대한 정밀도는 메모리에 저장하기 전에 출력에서 검출될 수 있다. ReLU 이외의 가중치 및 활성화 함수를 수용하기 위해 부호 없는 및 부호 없는 숫자에 대한 정밀 요구 사항을 검출할 수 있다. STR 구조를 이용하는 상기 실시형태의 경우, 동적 정밀도 감소는 실행 시간을 감소시키는 한편, STR 구조를 이용하는 상기 실시형태 및 PRA 구조를 이용하는 실시형태 모두의 경우, 이것은 활성화 메모리로부터 활성화를 판독한 후 전송되어야 하는 비트 수를 감소시킨다. PRA 구조를 이용하는 상기 실시형태는 각각의 타일에서 국부적으로 oneffset를 발생시킨다는 것이 주목된다.
신경망이 정확히 동작하는 데 필요한 수치적 정밀도는 네트워크 및 동일한 네트워크의 층에 따라 상당히 다른 것으로 밝혀졌다. 예를 들어, 전체 내용이 본 명세서에 병합된 문헌[P. Judd, J. Albericio, T. H. Hetherington, T. M. Aamodt, N. D. Enright Jerger, R. Urtasun, and A. Moshovos "Reduced-Precision Strategies for Bounded Memory in Deep Neural Nets", CoRR abs/1511.05236 (2015) ('Judd et al.')]에서, 프로파일링을 사용하여 층별 수치 정밀도를 결정하는 방법이 제안되었다. 그러나 전체 내용이 본 명세서에 병합된 문헌[A. Delmas, P. Judd, S. Sharify, and A. Moshovos, "Dynamic Stripes: Exploiting the Dynamic Precision Requirements of Activation Values in Neural Networks", CoRR abs/1706.00504 (2017) ('Delmas et al.')]에서는 정밀도의 이러한 변동이 층 입도보다 훨씬 더 작은 입도에서 더 현저해지는 것으로 관찰되었다. 수치 정밀도는 숫자를 안전하게 나타내는 데 필요한 비트 수를 나타낸다. 고정 소수점 표현의 경우 이것은 정확히 정수의 비트 카운트이다. 다른 표현의 경우, 부동 소수점 수에 대한 지수 또는 가수와 같이 다른 표현 성분으로 별도의 비트 카운트가 필요할 수 있다.
가속기의 실시형태는 곱셈을 처리하는 데 필요한 사이클의 수를 감소시키기 위한 이용 정밀도 요구 사항을 설명하였다. 그러나 계산에 더하여 통신 및 저장은 심층 학습 컴퓨팅의 주요 과제이기도 하다. 따라서, 활성화 및 가중치의 정밀 요구 사항의 변동을 이용하는 방법이 저장 및 통신 요구를 감소시키기 위해 제시된다. 특정 구현예는 아래에 설명된다. 첫째, 델마스(Delmas) 등의 동적 정밀도 검출 방법은 음의 값에도 잘 적용된다는 것이 주목되는 데, 여기서 선행하는 1을 찾는 것이 아니라 선행하는 0을 찾아 최종 정밀도 길이에 1을 더해야 한다. 대안적으로 음수는 부호 크기 표현으로 변환될 수 있고, 부호 비트는 최하위 위치에 배치될 수 있다. 이 제2 접근법은 모든 음수값을 0과 가중치로 변환하지 않는 활성화 함수를 수신한다.
다음의 설명은 모든 숫자에 대해 16 비트 고정 소수점 표현을 가정하지만, 설명된 메커니즘은 다른 표현 길이 및 유형에도 직접 적용된다. 압축 방식은 입력값, 가중치 또는 활성화를 예를 들어 16 또는 256과 같은 고정된 수의 요소 그룹으로 고려한다. 그런 다음 각 그룹 내에서 모든 값에 걸쳐 최상위 1 비트의 위치를 스캔함으로써 필요한 최대 정밀도를 결정한다. 음수값은 부호 크기 표현으로 변환된다. 가중치 처리는 오프라인으로 수행할 수 있는 반면, 활성화는 각 층의 출력에서 처리된다. 그런 다음 4 비트를 사용하여 필요한 정밀도를 저장한 다음 그룹의 정밀도와 동일한 비트 수를 사용하여 각 값을 저장함으로써 값을 패킹(packing)한다. 여기에 설명된 가속기의 경우, 가중치 레인 및 활성화 레인에 따라 그룹화가 수행되며, 주드(Judd) 등의 가상 열 접근법을 사용하여 데이터가 메모리에 저장된다. 예를 들어, 주드 등의 방법을 사용하여 데이터 경로로 언패킹(unpacking)이 수행될 수 있고, 가중치는 16b-대-16b 크로스바이다. 크로스바가 필요 없이 활성화는 비트 평면을 따라 메모리에 저장될 수 있다. 아래 표 2는 가상 열별 그룹 저장 형식을 보여준다. 정밀도는 메모리에 별도로 저장하는 것이 가장 좋을 수 있다. 일부 실시형태에서, 다수의 연속 그룹에 대한 정밀도는 단일 메모리 블록에 함께 저장되어, 다수의 그룹에 대한 이러한 추가 메모리 액세스 비용을 상쇄한다.
정밀도 P:
4비트
값 1:
P 비트
값 2:
P 비트
값 3:
P 비트
... 값 G:
P 비트
대안적인 방식은 각 비트가 표 3에 도시된 바와 같이 그룹 내의 값이 0과 같은지 또는 0과 다른지를 나타내는 비트맵을 포함한다. 값이 0과 같으면, 이 값은 코딩되지 않는다. 따라서 그룹별 코딩된 요소의 수는 다르다. 이를 통해 0의 수가 많은 데이터의 압축률은 높아진다. 언패킹은 패킹된 그룹을 판독하고 필요에 따라 비트 벡터를 사용하여 그룹을 직렬로 확장하여 필요한 경우 0을 삽입함으로써 수행된다. 충분한 수의 그룹을 동시에 페치하고 언패킹함으로써 가속기의 대역폭 요구 사항이 유지될 수 있다.
정밀도 P:
4비트
존재 비트맵:
G 비트(n개)
NZ값 1:
P 비트
... NZ 값 n:
P 비트
도 14는 층별로 고정된 비트 수를 사용하여 달성할 수 있는 비율과 함께 디스플레이된, 전술한 0이 강화된 접근법을 사용하여 그리고 사용함이 없이 AlexNet-ES 및 GoogLeNet-ES에서의 가중치 및 활성화 데이터 모두에 대한 압축 방식의 효과를 나타낸다. 값이 2이면 원래 크기의 절반으로 줄어드는 것을 나타낸다. 두 그룹별 방식은 모두 가중치 및 활성화에 대한 층별 압축 방식을 능가한다. 0이 강화된 압축 방식은 특히 가중치에 대한 압축률을 더욱 향상시킨다. 이것은 네트워크가 희소한 경우에 특히 예상될 수 있다.
가중치 특성 이용 구조와 활성화 특성 이용 구조를 결합할 때, 가속 타일은 증가된 전방 탐색 구조로 활성화 최적화의 효과가 감소되는 것을 경험할 수 있다. 구체적으로, STR 및 PRA 구조에서 동시에 처리된 활성화 그룹은 다음 그룹으로 진행하기 전에 가장 느린 활성화가 처리될 때까지 기다려야 한다. 예를 들어, PRA 구조에서 전체 그룹에 필요한 사이클의 수를 결정하는 것은 가장 높은 수의 oneffset를 가진 활성화이다. 전방 탐색의 정도가 증가함에 따라, STR 또는 PRA 활성화 특성 이용 구조를 이용하는 본 발명의 실시형태는 전방 탐색 창 내의 모든 활성화를 고려해야 한다. 많은 실시형태에서, 전방 탐색 창이 넓을수록 이러한 "병목" 활성화의 영향이 높아진다. 일반적으로, 측방 탐색은, 전술한 바와 같이 전방 탐색이 적어도 1일 때, 동기화 그룹에 포함되는, 1의 전방 탐색 거리에서 활성화를 사용하기 때문에 더 이상의 효과를 갖지 않는다.
다른 실시형태에서, 활성화 특성 이용 구조는 STR 구조 또는 PRA 구조를 이용하지 않을 수 있다. 예를 들어, STR 또는 PRA 구조 중 그 어느 것도 비-유효 활성화를 정면으로 공격하지 않아서, CNN의 활성화의 종종 거의 절반이 비-유효인 경향이 있는 것으로 입증되었으므로 직관에 반하는 것일 수 있다. 그러나 STR 및 PRA 구조는 모두 비-유효 및 유효 활성화 모두에 이점을 제공하며, 이러한 구조는 종종 비-유효 활성화만을 정면으로 공격하는 구조보다 향상된 기능을 제공할 수 있다. 구체적으로, STR 또는 PRA 구조를 사용하는 가속기 구조는 임의의 유효 활성화에 유리할 수 있는 반면, 비-유효 활성화를 스킵할 수 있는 구조는 비-유효 활성화에 유리할 수 있지만, STR 또는 PRA 구조를 이용하는 가속기의 기회 손실은 일반적으로 비-유효 활성화마다 1보다 훨씬 더 적다.
예를 들어, PRA 구조를 사용하는 가속기에 의해 그룹으로서 처리되는 모든 활성화가 0으로 발생하는 경우, 가속기는 단일 사이클에서 이들을 처리하여, PRA 구조를 사용하는 가속기는 비트-병렬이 아니라 비트-직렬로 각 활성화를 처리하기 때문에 비-유효 활성화를 스킵할 수 있는 가속기에 비해 1/16의 기회 손실만을 나타낸다. 일반적으로, PRA 구조를 사용하는 가속기가 p 사이클에 걸쳐 비-유효 활성화를 처리할 때, 기회 손실은 p/16이며, 비트의 평균 10% 미만이 유효하다고 하면, 비-유효 활성화를 완전히 스킵하지 않는 기회 손실은 낮을 것으로 예상된다. STR 구조를 사용하는 가속기에도 유사한 추론이 적용된다.
일반적으로, 비-유효 활성화, 동적 정밀도 변동 및 비-유효 활성화 비트는 CNN과 같은 네트워크에서 활성화 값의 분포의 결과이다: 종종 대부분의 활성화는 거의 0에 가까이 모이고, 몇몇 활성화는 0에서 멀리 떨어진 값으로 급증한다. 이미지 분류 CNN의 경우 층마다 정밀도를 줄인 후에도 종종 활성화의 약 45%가 0인 반면, 종종 활성화 비트의 90% 초과가 0으로 발견되어서, 비-유효 비트 내용을 목표로 하는 경우 성능 향상 가능성이 훨씬 더 높은 것을 나타낸다. 이와 같이, 본 발명의 많은 실시형태는 비-유효 비트 내용을 직접 또는 간접 이용하는 기술을 사용할 수 있다.
도 9에 도시된 바와 같이, 가속기(9000)는 다수의 타일(9100)을 포함한다. 각각의 타일(9100)은 AM(9110)의 자체 로컬 슬라이스, 로컬 WM(도시되지 않음), 입력 활성화 버퍼(도시되지 않음) 및 출력 활성화 버퍼(도시되지 않음)를 갖는다. AM 슬라이스(9110)마다 디스패처(dispatcher)(9120)는 본 발명의 전방 탐색 실시형태의 구조의 전방 탐색 요구를 수용하면서 STR 및 PRA 구조에서와 같이 적절한 활성화를 판독한다. 일부 실시형태에서, 에너지 및 대역폭 요건을 감소시키기 위해, 디스패처(9120)는 AM(9110)으로부터 필요한 만큼 많은 활성화 비트만을 판독하기 위해 프로파일로-도출된 층별 정밀도를 사용한다. 각 활성화 그룹을 모든 타일에 브로드캐스트하기 전에, 디스패처(9110)는 또한 주어진 값에 따라 필요한 정밀도를 동적으로 더 검출함으로써 활성화를 트리밍(trim)한다. 국부적으로, 각각의 타일(9100)은 자체 페이스(pace)에 따라 활성화를 소비한다. 버퍼는 타일이 활성화 공간에서 떨어져 있는 거리를 결정한다. 국부적으로, 각각의 타일(9100)은, 예를 들어 타일이 2의 거듭 제곱으로 인코딩을 수행할 수 있는 PRA 아키텍처를 이용하는 구조에 대해 추가 처리를 수행할 수 있다.
일부 실시형태에서 각각의 타일은 AM의 자체 로컬 슬라이스, 로컬 WM, 입력 활성화 버퍼 및 출력 활성화 버퍼를 갖는다. AM과 WM은 컴퓨팅 코어에 필요한 대역폭을 유지하기 위해 뱅킹된다. 데이터는 오프-칩 메모리로부터 로드(loaded)되어 개별 AM 또는 WM 타일로 복사되거나 다수의 타일로 멀티캐스트(multicast)된다. 실시형태는 오프-칩 및 온-칩 트래픽을 줄이기 위해 압축을 사용한다. 온-칩 및 오프-칩 데이터 전송 모두를 위해, 가속기 실시형태는 이전 층의 출력에서 동적으로(활성화) 검출되거나 또는 정적으로(가중치) 검출되는 그룹별 정밀도를 사용하여 활성화 및 가중치를 인코딩한다. 가중치는 메모리에 패킹되고, WM은 가중치 레인과 일치하는 가상 열에 패킹된다. 또한, 0값은 저장되지 않고, 대신 그룹별 비트 벡터는 0이 아닌 값의 위치를 식별한다. 일부 실시형태에서, 16개의 활성화 또는 가중치의 그룹은 압축률과 메타데이터 오버헤드 사이에 양호한 균형을 제공하는 것으로 사용될 수 있다. 각 그룹에 대해 정밀도는 비트 및 0값 비트 벡터로 저장되고, 256 비트의 비-압축된 활성화 또는 가중치인 것에 대한 오버헤드는 각각 4 비트 및 16 비트이다. 활성화를 복사하기 전에 활성화 버퍼는 값을 압축 해제한다.
표 4는 여기서 연구된 구성을 보고한다. 표 4는 예시적인 가속기 실시형태의 구성의 일례를 제공한다:
Figure pct00007
가속기 실시형태의 구성
실제로, 전술한 아키텍처의 다양한 양태 및 특징을 이용하는 가속기 실시형태는 실행 이점을 제공하는 것으로 나타났다.
사이클 레벨 시뮬레이터는 컨볼루션 및 완전히 연결된 층의 실행 시간을 모델링함으로써 몇 가지 실시형태의 상대적인 성능을 평가하는 데 사용되었다. 표 5는 희소해진 사용된 CNN을 보고한다(이를 추가적으로 논의하는 것에 대해서는, 전체 내용이 본 명세서에 병합된 문헌[Yang, Tien - Ju and Chen, Yu - Hsin and Sze , Vivienne, "Designing Energy-Efficient Convolutional Neural Networks using Energy-Aware Pruning", in IEEE Conference on Computer Vision and Pattern Recognition (CVPR), 2017] 참조). 모든 면적 및 에너지 측정은 대표적인 데이터 입력을 위한 회로 활동을 사용하여 레이아웃을 통해 수행되었다. 시놉시스 디자인 컴파일러(Synopsys Design Compiler)로 이들을 합성한 후 카덴스 이노부스(Cadence Innovus)를 사용하여 TMSC 65mm 기술에 대한 레이아웃을 생성하였다. 일반적인 케이스 설계 라이브러리가 테스트된 설계에 대해 더 비관적인 결과를 제공하여 이를 사용하였다. 모든 테스트된 설계는 1GHz에서 동작되었다. SRAM은 CACTI(추가적으로 논의하는 것에 대해서는, 전체 내용이 본 명세서에 병합된 문헌[J. Park, S. Li , W. Wen, P. T. P. Tang, H. Li , Y. Chen, and P. Dubey, "Faster CNNs with Direct Sparse Convolutions and Guided Pruning", in 5th International Conference on Learning Representations ( ICLR ), 2017] 참조) 및 데스티니(Destiny)를 통한 eDRAM(추가적으로 논의하는 것에 대해서는, 전체 내용이 본 명세서에 병합된 문헌[N. Muralimanohar and R. Balasubramonian, "Cacti 6.0: A tool to understand large caches", HP technical report HPL-2009-85, http://www.hpl.hp.com/techreports/2009/HPL-2009-85.html] 참조)를 통해 모델링되었다.
네트워크 약어
AlexNet-Eyeriss AlexNet-ES
GoogLeNet-Eyeriss GoogLeNet-ES
연구된 네트워크
다음은 가중치 및 활성화 이용에 비해 가중치 스킵에 대한 논의를 포함한다. 다음은 다양한 실시형태의 성능, 에너지 효율 및 영역의 평가를 포함한다.
테스트된 실시형태에서, 다양한 전방 탐색 및 측방 탐색값이 테스트되었고, 성능은 참조 구조와 비교되었다. 결과에 따르면 더 큰 멀티플렉서를 사용하면 전방 탐색 및 측방 탐색 믹스에 관계 없이 성능이 향상된다. 아래에서 논의되는 실시형태에서, 전방 탐색(h)과 측방 탐색(d)의 결합은 h + d + 1 = 2n, 및 n = {8}이 되도록 고려된다. 도 10 및 도 11은 가중치 스킵을 사용하지 않고 활성화 값의 특성을 이용하도록 구성되지 않은 가속기 구조에 대한 것으로 속도 증가를 나타낸다. 도 10 및 도 11은 그래프화된 결과의 각 세트의 베이스에 표시된 바와 같이, (전방 탐색, 측방 탐색) 또는 (h, d)로 설정된 전방 탐색 및 측방 탐색에 대한 속도 증가를 나타낸다. 도 10은 ES-AlexNet을 처리할 때 속도 증가를 나타내는 반면, 도 11은 ES-GoogLeNet을 처리하는 동안 속도 증가를 나타낸다. 지시된 바와 같이, 3개의 가속기 구조 실시형태가 테스트되었고, 하나는 가중치 스킵 구조만을 사용하였고, 하나는 가중치 스킵 및 STR 구조를 이용하였고, 하나는 가중치 스킵 및 PRA 구조를 사용하였다.
도 10 및 도 11에 도시된 바와 같이, 전방 탐색 입력을 희생시킴으로써 적은 수의 측방 탐색 입력을 추가하면 (7, 0)으로부터 (4. 3)로 전이할 때 볼 수 있는 바와 같이 가중치 스킵 구조만을 사용하는 실시형태를 테스트할 때 성능이 상당히 한계 이득을 제공한다. 예를 들어, (7, 0) 또는 측방 탐색이 없는 경우 속도는 도 10에 도시된 바와 같이 AlexNet-ES의 경우 2.3배이고, (4, 3)의 경우 2.7배이다.
도 10 및 도 11은 값을 0으로 설정하는 것에 비해 측방 탐색 또는 전방 탐색값의 변화로 관찰된 일부 경향을 나타낸다. 개념적으로 측방 탐색을 사용하면 유효 가중치로 많이 채워진 가중치 레인이 그 부하를 주변 레인으로 분배하여 가중치 레인 불균형을 줄일 수 있다. 그러나 일반적으로 일부 가중치 레인이 다수의 인접한 많이 채워진 레인을 가질 가능성은 거의 없다. 이와 같이, 측방 탐색 창을 임의로 확장하는 것은 리턴 감소를 초래할 것으로 예상될 수 있고, 이는 주어진 실시형태에 대해 도시된 결과와 일치한다. 유사하게, 큰 전방 탐색을 추가하는 것은 위에서 논의된 바와 같이 활성화 핸들링 백엔드의 효과에 영향을 미치는 것으로 이해될 수 있다. 결과에 따르면 동일한 총 멀티플렉스 입력 수(h + d + 1)에 대해 그리고 몇 가지 측방 탐색 옵션이 있는 한, 더 많은 전방 탐색에서 성능이 향상되었다.
전반적으로, 차이는 비교적 경감된 것으로 보이지만, 도면에 나타낸 바와 같이, STR 또는 PRA 구조의 사용과 같은 활성화 특성을 이용하는 구조와 결합될 때 이점이 크게 증가한다. 따라서, 실시형태에서, 가중치 스킵으로부터 성능의 차이가 비교적 작아도 최종 설계에서 이점은 훨씬 더 크게 된다.
상이한 구성은 또한 상이한 이점을 초래한다. 면적별 구성 간 차이는 작지만, 전방 탐색이 작을수록 일반적으로 가중치 스킵 구조를 구현하기 위한 와이어 카운트가 줄어든다. 따라서, 전방 탐색과 측방 탐색 쌍을 (2, 5) 또는 (4, 3)으로 설정하면 많은 실시형태 및 상황에서 합리적인 절충 구성을 이룰 수 있다.
도 10 및 도 11에 도시된 바와 같이, 활성화 특성 이용 구조의 추가는 가중치 스킵 구조의 이점에 추가된다. 활성화 메모리 및 상호 연결부의 설계에서와 같이 비용 및 원하는 성능의 균형을 유지하도록 다양한 구성이 설계될 수 있다.
도 10 및 도 11에 도시된 바와 같이, 정밀도 변동을 이용하는 능력을 추가하면 비-유효 가중치 스킵을 대부분 보완한다. 도시된 가장 성능이 낮은 구성(1, 6)이라도 AlexNet-ES 및 GoogLeNet-ES의 성능을 각각 7.2배 및 4.3배 향상시킨다. Alexnet-ES 세트는 GoogLeNet-ES 세트와 비교하여 더 큰 소수의 층만을 갖는다. 지시된 바와 같이, PRA 구조와 같은 비-유효 활성화 비트 내용을 이용하는 활성화 특성 이용 구조를 사용하면 STR 구조와 같은 정밀도를 이용하는 활성화 특성 이용 구조를 사용하는 것보다 더 나은 성능이 얻어진다. 전체 성능 이점이 비-유효 비트 내용이 제안하는 것보다 더 낮은 경우, 전방 탐색 창 내 모든 활성화 레인은 다음 전방 탐색 창으로 진행하기 전에 가장 oneffset를 갖는 활성화 레인이 완료될 때까지 기다려야 하기 때문에 원인(culprit)은 활성화 레인 간 동기화일 수 있다. 지시된 바와 같이 테스트된 최상의 구성은 전방 탐색 및 측방 탐색이 (4, 3)으로 설정된 것이며, 이는 AlexNet-ES 및 GoogLeNet-ES의 성능이 각각 15.8배 및 8.4배 향상시킨다.
상기 설명은 전방 탐색 및 측방 탐색 패턴이 시간 및 레인 방향으로 연속하는 창을 구성해야 한다고 가정한 가중치 승격에 중점을 두었지만, 필터 내 가중치 승격의 개념은 전방 탐색 및 측방 탐색 방향으로 연속하는 창으로 제한되지 않고, 전방 탐색과 측방 탐색의 결합인 임의의 좌표로부터 올 수 있다. 즉, h의 전방 탐색 거리가 주어지면, 이 창에서 16×h 위치의 임의의 서브세트로부터 승격될 수 있는 측방 탐색 패턴을 구현할 수 있으며, 여기서 16은 필터 레인 폭이다.
이러한 구성의 변형에서, 가중치 스트림 내 임의의 위치로부터 가중치 승격을 허용하는 희소 승격 패턴이 이용될 수 있다. 여기서 '희소'라는 용어는 위치([레인 + d, 단계 + h])로부터 절취(steal)될 수 있는 가중치(w[레인, 단계])가 예를 들어 위치([레인 + d - 1, 단계 + h] 또는 [레인 + d, 단계 + h - 1])로부터 절취되기 위해 연결될 필요가 없다는 것을 나타낸다.
도 12에서 비교한 3개의 구성 세트에서, 기본 구성이 좌측에 제시되고, 여기서 (2, 5) 가중치 스킵 구성이 전술된 바와 같이 사용되었다. 다른 두 구성은 총 2 + 2*7 = 16개의 가능한 승격 사이트에서 전방 탐색이 2로 설정되고 측방 탐색이 5로 설정되고 측방 탐색은 7개의 레인의 거리로 제한된, 원래의 구성으로부터 생성된 희소 구성이다. 전력 및 면적 고려 사항으로 인해 전체 연결은 h + d = 7개의 승격 사이트로 감소되어 왼쪽의 기본 설계와 동일한 크기의 8-입력 멀티플렉서가 생성되었다. 오른쪽의 네트워크 최적화 설계의 경우 연결 사이트는 반복적으로 제거되어 주어진 네트워크의 성능 저하가 최소화되었고; 2개의 테스트된 네트워크의 각 네트워크에 맞는 연결 패턴을 제공한다. 도 12의 중앙에 제시된 체커(checker) 구성의 경우, 고정된 체커판형 연결 패턴은 제거할 연결을 반복적으로 선택함이 없이 직접 사용되었다. 지시된 바와 같이 체커 구성은 네트워크별 최적화 패턴의 많은 속도 증가 이점을 제공한다. 아래 설명으로부터 예상된 바와 같이 활성화 특성 이용 구조를 추가하면 속도 증가 이점이 배가되는 것으로 예상될 수 있다.
다양한 요인이 전체 바람직한 구조의 결정을 유도할 수 있다. 예를 들어, PRA 구조의 사용이 많은 실시형태에서 STR 구조의 사용을 능가하는 것으로 보이지만, 이것은 활성화별로 더 많은 와이어를 요구하기 때문에 더 비쌀 수 있다. 성능 이득이 가치가 있는지 여부를 결정할 때 예를 들어 상대 면적 및 에너지 효율을 고려할 수 있다.
도 13a 및 도 13b는 가중치 스킵 또는 활성화 특성 이용 아키텍처를 사용하지 않는 가속기에 비해 STR 아키텍처로 가중치 스킵하고 PRA 아키텍처로 가중치 스킵하는 에너지 효율을 나타낸다. 도 13a는 AlexNet-ES에서 실행될 때 에너지 효율을 도시하는 반면, 도 13b는 GoogLeNet-ES에서 실행될 때 에너지 효율을 도시한다. 지시된 바와 같이, 성능 이점이 추가 하드웨어 전력 비용을 능가하기 때문에 각 경우에 설계는 기준선보다 에너지 효율이 더 높다. (1, 6) 구성을 사용하는 경우를 제외하고, STR 구조의 사용은 PRA 구조의 사용보다 에너지 효율이 높았으며, 이는 저비용 설계와 비 문맥적으로 일치한다. 테스트된 가장 에너지 효율적인 설계는, STR 구조를 포함하고 (4, 3) 구성을 사용하는 실시형태였으며, 이는 AlexNet-ES 및 GoogLeNet-ES에 대해 각각 5.6배 및 2.9배의 상대적 에너지 효율을 나타냈다.
표 6은 (1, 6) 구성이 상세히 제시된 다양한 가속기 실시형태의 면적을 나타낸다. 면적 대 성능 트레이드오프는 하위 선형(sublinear)이고, 이는 가중치 스킵 또는 활성화 특성 이용 구조를 사용하지 않는 기준선 구조에 대해 성능이 선형으로 확장될 수 있더라도 여전히 면적당 성능이 뒤떨어지는 것을 의미한다. 테스트 결과에 따르면 기준선 구조의 성능이 일반적인 필터 카운트, 필터의 일반적인 치수, 입력 및 출력이 기준선 구조의 더 넓은 구성에 대한 불완전 활용(underutilization)이 더 높아지기 때문에 기준선 구조의 성능이 면적에 따라 하위 선형적으로 확장되는 것을 나타낸다. 전방 탐색과 측방 탐색의 합은 아래의 3개의 구성(1, 6), (2, 5) 및 (4, 3) 각각에 대해 동일하므로 구성 간의 면적 차이는 무시할 수 있다. 전반적으로, 이들 실시형태의 많은 영역은 메모리에 있다.
PRA 구조(1, 6)
면적( mm 2 )
STR 구조(1, 6)
면적( mm 2 )
기준선 구조
( mm 2 )
컴퓨팅 코어 16.18 9.22 3.3
가중치 메모리 12.03 12.03 12.03
활성화 입력 버퍼 0.91 0.91 0.91
활성화 출력 버퍼 0.91 0.91 0.91
활성화 메모리 7.13 7.13 7.13
디스패처 0.37 0.39 -
오프셋 생성기 2.89 - -
총계 40.58 30.63 24.35
정규화 총계 1.67 1.26 1.00
PRA 구조(2, 5)
면적( mm 2 )
STR 구조(2, 5)
면적( mm 2 )
기준선 구조
( mm 2 )
정규화 총계 1.7 1.24 1.00
PRA 구조(4, 3)
면적( mm 2 )
STR 구조(4, 3)
면적(mm 2 )
기준선
구조
( mm 2 )
정규화 총계 1.78 1.26 1.00
PRA 및 STR 구조를 사용하기 위한 면적 분석
하기 표 7은 본 명세서에 개시된 가중치 스킵 및 활성화 특성 이용 가속기의 일 실시형태를 다른 이용 가능한 가속기와 비교한다. 표 7은 1) 곱하기-누산 계산을 스킵하는 입력 데이터, 2) 메모리 참조를 피하는 입력 데이터, 3) 감소된 비용 곱하기-누산을 수행하는 입력 데이터, 4) 감소된 비용 메모리 액세스를 수행하는 입력 데이터, 5) 입력 데이터를 적절한 계산 유닛 또는 저장 유닛으로 라우팅하는 방식, 및 6) 내적 계산에 사용되는 순서와 같은, 이러한 설계의 몇 가지 관련 특성을 보여준다.
Cnvlutin(전체 내용이 본 명세서에 병합된 문헌[J. Albericio , P. Judd, T. Hetherington , T. Aamodt , N. Enright Jerger , and A. Moshovos, "Cnvlutin: Ineffectual-neuron-free deep neural network computing", in 2016 IEEE/ACM International Conference on Computer Architecture (ISCA), 2016] 및 전체 내용이 본 명세서에 병합된, PCT 특허 출원 공개 번호 WO 2017/214728 A1(발명자: Patrick Judd, Jorge Albercio, Andreas Moshovos, Sayeh Sharify and Alberto Delmas Lascorz, 발명의 명칭: Accelerator for Deep Neural Networks, 출원인: The Governing Council of the University of Toronto) 참조)은 비-유효 활성화(IA)에 대한 계산과 메모리 액세스를 모두 스킵한다. 이것은 각 활성화와 쌍을 이루는 가중치 그룹별 독립적인 가중치 포트 이외의 특별한 입력 또는 출력 라우팅 메커니즘을 요구하지 않는다.
Cambricon-X(전체 내용이 본 명세서에 병합된 문헌[S. Zhang , Z. Du, L. Zhang, H. Lan , S. Liu , L. Li , Q. Guo , T. Chen, and Y. Chen, "Cambricon-x: An accelerator for sparse neural networks", in 49th Annual IEEE/ACM International Symposium on Microarchitecture , MICRO 2016, Taipei, Taiwan, October 15-19, 2016, pp. 1-12, 2016] 참조)는 내적 기반 가속기에서 비-유효 가중치(IW)를 이용한다. 0이 아닌 가중치는 메모리에서 압축되고 델타(가중치들 사이의 거리)로 태그 부착된다. 각 사이클마다 하나의 PE(본 내적 유닛과 등가임)는 16개의 가중치를 페치하고, 256의 벡터로부터 대응하는 16개의 활성화를 선택한다. 체인으로 연결된 가산기는 델타를 절대 오프셋으로 디코딩하는 데 사용된다. 이것은 256 폭의 입력 활성화 크로스바를 사용하여 활성화를 대응하는 가중치와 쌍을 이룬다. 이 접근법은 매우 큰 16x16 전방 탐색 창 및 인코딩된 mux 선택을 갖는 본 발명의 가중치 스킵 가속기와 유사하다. 이것은 256개의 활성화를 위한 메모리 인터페이스를 요구한다. 저자는 이 활성화 대역폭이 그 접근법이 확장 가능한 가속기에는 비실용적이라고 논의한다.
SCNN(전체 내용이 본 명세서에 병합된 문헌[A. Parashar , M. Rhu , A. Mukkara, A. Puglielli , R. Venkatesan , B. Khailany , J. Emer , S. W. Keckler , and W. J. Dally, "Scnn: An accelerator for compressed-sparse convolutional neural networks", in Proceedings of the 44th Annual International Symposium on Computer Architecture, ISCA '17, (New York, NY, USA), pp. 27-40, ACM, 2017] 참조)은 비-유효 가중치와 비-유효 활성화 모두를 위해 계산 및 메모리 액세스를 스킵한다. 이것은 유효 요소만이 각각 저장되고 그 뒤에 생략된 비-유효 요소의 수가 저장되는 메모리에 가중치 및 활성화를 압축한다. 16×32 출력 크로스바는 곱셈 결과를 32개의 누산기 뱅크로 라우팅한다. SCNN은 입력 판독 대역폭을 최소화하도록 설계되었다. SCNN은 4×4 카테시안 곱(Cartesian Product)을 사용하므로 이것은 가중치 재사용이 없는 FCL에 16개의 승산기 중 4개만을 사용할 수 있다.
본 발명의 가중치 스킵 가속기는 SCNN 또는 Cambricon-X와는 다른 정도이긴 하지만 비-유효 가중치에 대한 계산 및 메모리 액세스를 스킵한다. 이 가속기는 비-유효 및 유효 활성화(EA) 모두에 대해 메모리 액세스의 대역폭 및 에너지 비용을 줄인다. 이 가속기는 입력 활성화를 위해 희소 셔플링 네트워크를 이용하고 가중치에 대한 제한된 정적 스케줄링을 이용하기 때문에 하이브리드 입력 가중치-정적/활성화-동적 접근법을 사용하여 활성화 및 가중치를 일치시킨다.
희소성을 포착하기 위해, SCNN 및 Cambricon-X는 조밀한 하드웨어 상호 연결을 사용한다. SCNN은 출력 크로스바를 사용하는 반면, Cambricon-X는 입력 크로스바를 사용한다. 본 발명의 가중치 스킵 가속기는 희소 입력 상호 연결을 사용하여 충분한 수의 비-유효 가중치를 포착하고 대신 모든 활성화를 목표로 함으로써 기회 손실을 보상한다.
스킵
MACC
스킵
메모리
액세스
감소된
MACC
감소된
메모리
액세스
데이터 라우팅
유형 및 메커니즘
내부 공간
데이터 흐름
Cnvlutin IA IA - - 가중치-동적/활성화-정적
입력에서 희소: 독립적인
가중치 포트
도트 곱
감소
Cambricon-X IW IW - - 가중치-정적/활성화-동적
입력에서 조밀: 활성화
크로스바
도트 곱
감소
SCNN IA+IW IA+IW - - 가중치-동적/활성화-동적
출력에서 조밀: 곱 크로스바
카테시안
본 가속기 IW IW IA+EA IA+EA 가중치-정적/활성화-동적
입력에서 희소: 활성화용
희소 셔플링 네트워크
도크 곱
감소
CNN 가속기의 비교
도 7b의 실시형태에 제시된 바와 같이, 프론트-엔드(front-end)는 가중치별 멀티플렉서 신호(도 7b의 ws)를 사용하여 각 가중치 레인이 다른 가중치 레인과 독립적으로 가중치 승격을 수행할 수 있게 한다. 그러나 이러한 신호는 메모리 오버헤드를 나타낸다. 이러한 오버헤드를 감소시키는 것이 바람직하고, 가중치 데이터 폭이 더 좁을수록 더 바람직하다. 이를 위해, 다음과 같은 관찰이 수행된다: 1) PE마다 모든 ws 신호를 고려할 때, 모든 결합이 유효한(valid) 것은 아니기 때문에, 가중치마다 ws 신호를 사용하는 것은 초과 프로비저닝(over-provisioning)에 해당한다; 그리고 2) 유효한 결합 중 일부(예를 들어, 발생하지 않거나 자주 사용되지 않는 결합)라도 제거하면 TCL이 희소성을 충분히 이용하는 능력에 악영향을 미치지 않을 수 있다. 따라서, TCL 프론트-엔드가 지원하는 가중치 이동 결합을 제한해서 모든 단계에서 사용하는 스케줄을 지정하는 데 필요한 비트 수를 줄일 수 있다. 예를 들어, 가중치 그룹별 스케줄 선택 필드(SS)를 저장할 수 있다. TCL은 타일의 가중치마다 ws 신호로 SS를 확장하여 설계를 외과적으로 수정할 수 있다. 예를 들어, 16개의 가중치의 그룹마다 4-비트 SS 필드는 2S S = 16개의 상이한 스케줄 패턴을 지원할 수 있으며, 각각의 패턴은 16개의 ws 신호를 포함하는 3b 16 = 48b 벡터에 매핑된다. SS 신호를 ws에 매핑하는 것은 정적이거나 프로그래밍 가능할 수 있다. 후자의 경우, 이것은 예를 들어 필터마다 또는 층마다 적절한 입도로 제공될 수 있다. 이 예에서 16×48b 테이블은 이러한 SS 신호를 필터마다 16개의 스케줄 단계 세트에 매핑할 수 있다. 프로파일링에 따르면 이러한 배열은 연구된 네트워크의 성능에 큰 영향을 미치지 않는다(예를 들어, GoogleNet-ES의 모든 스케줄 단계의 96%를 포함한다)는 것을 보여준다.
도 15는 전술한 접근법의 일 구현예를 도시한다. 이 구현예(1500)에서, Mux 선택 테이블(MST)(1520)이 각각의 필터 레인(1540)에 도입된다. 대안적으로, MST는 다수의 레인 중에 공유될 수 있다. MST를 사용하면 mux 선택 신호 중 가장 자주 사용되는 조합 중 일부만을 로드할 수 있다. 이러한 로드는 층마다 필터마다 한번, 수 개의 층마다 한번 또는 심지어 하위 필터 입도와 같이 편리한 간격으로 수행될 수 있다. 이 구현예에서, 가중치의 행마다 작은 ws 필드는 각 단계에서 사용될 스케줄을 지정하기 위해 사용될 수 있다. 그 결과, 선택 신호의 오버헤드가 크게 감소될 수 있다.
프론트-엔드 실시형태는 희소성이 존재하는 한, 훈련을 가속화하는 데에도 사용될 수 있다. 이것은 예를 들어 일부 업데이트만이 수행되는 선택적 역방향 전파 방법의 경우이다. 이러한 방법은 가중치 업데이트 값 중 일부를 0으로 효과적으로 변환하여 역방향 전파 단계 동안 희소성을 도입한다. 역방향 전파 동안 각 층의 출력에서, 스케줄러, 가장 바람직하게는 많이 요구되는 것, 및 하드웨어를 경량으로 구현하는 것은 업데이트를 처리 요소로 보내기 전에 업데이트를 재배열할 수 있다. 프론트-엔드는 데이터 유형에 관계 없이 사용되므로 순방향 및 역방향 전파 단계에서 부동 소수점, 고정 소수점 또는 혼합된 표현으로 사용될 수 있다.
이 기술 분야에 통상의 지식을 가진 자라면 이해할 수 있는 바와 같이, 동작 시 전술한 구성 요소는 예를 들어 가속기를 기능 유닛으로서 제어할 수 있는 프로그래밍 가능한 프로세서 또는 프로그래밍 가능한 유한 상태 기계일 수 있는 제어기에 의해 제어될 수 있다. 일 실시형태에 따르면, 프로그래밍 가능한 유한 상태 기계는 여러 제어 및 데이터 레지스터 및 잠재적으로 프로그램 및 데이터 메모리를 가질 수 있고, 다양한 제어 신호를 신경망 시스템에서 본 명세서에 설명된 다른 구성 요소로 출력할 수 있다.
본 발명은 본 발명의 사상 또는 본질적인 특성을 벗어나지 않고 다른 특정 형태로 구현될 수 있다. 본 발명의 특정 개조 및 수정은 이 기술 분야에 통상의 지식을 가진 자에게 명백할 것이다. 따라서, 현재 논의된 실시형태는 본 발명을 예시하는 것일 뿐 본 발명을 제한하는 것으로 고려되어서는 안 되고, 본 발명의 범위는 전술한 설명이 아니라 첨부된 청구 범위에 의해 한정되고, 청구 범위의 의미 및 등가 범위 내에 있는 모든 변경은 본 청구 범위에 포함되는 것으로 의도된다.

Claims (39)

  1. 가중치 레인(weight lane) 세트 및 활성화 레인(activation lane) 세트를 규정하는 입력 희소성(input sparsity)을 이용하기 위한 신경망 가속기 타일(neural network accelerator tile)로서,
    각 가중치 레인은 활성화 레인에 대응하고, 상기 타일은,
    상기 가중치 레인 세트의 각각의 가중치 레인에 가중치 및 가중치 선택 메타데이터를 공급하기 위한 가중치 메모리;
    입력 활성화 값 세트를 수신하고 상기 입력 활성화 값 세트를 재배열하여 재배열된 활성화 값 세트를 각각의 활성화 레인에 공급하기 위한 활성화 선택 유닛;
    멀티플렉서 세트로서, 상기 멀티플렉서 세트는 활성화 레인과 가중치 레인의 쌍마다 적어도 하나의 멀티플렉서를 포함하고, 각각의 멀티플렉서는 상기 가중치 레인의 가중치 선택 메타데이터에 기초하여 재배열된 활성화 값의 상기 활성화 레인 세트로부터 상기 활성화 레인에 대한 결합 활성화 값을 선택하도록 구성된, 상기 멀티플렉서 세트; 및
    멀티플렉서마다 적어도 하나의 결합 유닛을 포함하는 결합 유닛 세트로서, 각각의 결합 유닛은 상기 활성화 레인의 결합값을 상기 가중치 레인의 가중치와 결합시켜 가중치 레인 곱(product)을 출력하도록 구성된, 상기 결합 유닛 세트를 포함하는, 신경망 가속기 타일.
  2. 제1항에 있어서, 상기 입력 활성화 값 세트를 상기 활성화 선택 유닛에 공급하기 위한 활성화 메모리를 더 포함하는, 신경망 가속기 타일.
  3. 제1항에 있어서, 상기 멀티플렉서 세트의 각각의 멀티플렉서는 대응하는 재배열된 활성화 값 세트로부터 및 추가 레인 활성화 값 세트로부터 결합 활성화를 선택하도록 구성되고, 상기 추가 레인 활성화 값 세트는 적어도 하나의 추가 활성화 레인의 적어도 하나의 재배열된 활성화 값으로 형성된, 신경망 가속기 타일.
  4. 제1항에 있어서, 적어도 2개의 8 레인 곱을 수신하기 위해 가산기 트리를 더 포함하는, 신경망 가속기 타일.
  5. 제1항에 있어서, 상기 가중치 레인 세트의 가중치 레인의 가중치는 적어도 하나의 신경망 필터를 규정하는, 신경망 가속기 타일.
  6. 제1항에 있어서, 상기 결합 유닛은 승산기, 가산기 및 시프터 중 하나인, 신경망 가속기 타일.
  7. 제1항의 타일을 적어도 2개 포함하는 신경망 가속기.
  8. 제1항에 있어서, 각각의 재배열된 활성화 값 세트는 표준 가중치 활성화 값 및 적어도 하나의 전방 탐색 활성화 값(lookahead activation value)을 포함하는, 신경망 가속기 타일.
  9. 제1항에 있어서, 활성화 효율을 이용하는 가속기 구조로 구현되는, 신경망 가속기 타일.
  10. 제1항에 있어서, 상기 초기 활성화 값 세트는 활성화 비트인, 신경망 가속기 타일.
  11. 제1항에 있어서, 상기 초기 활성화 값 세트는 2의 부호 있는 거듭 제곱인, 신경망 가속기 타일.
  12. 제3항에 있어서, 상기 멀티플렉서 세트는 균일한 크기의 멀티플렉서 세트인, 신경망 가속기 타일.
  13. 제12항에 있어서, 상기 균일한 크기는 2의 거듭 제곱인, 신경망 가속기 타일.
  14. 제13항에 있어서, 상기 재배열된 활성화 값 세트의 크기는 상기 추가 레인 활성화 값 세트의 크기보다 더 큰, 신경망 가속기 타일.
  15. 제12항에 있어서, 결합된 활성화 값 세트에 대한 상기 재배열된 활성화 값 세트와 상기 추가 레인 활성화 값 세트, 및 상기 결합된 활성화 값 세트는 8개의 활성화를 포함하는, 신경망 가속기 타일.
  16. 제3항에 있어서, 상기 추가 레인 활성화 값 세트는 적어도 2개의 추가 활성화 레인 각각으로부터 적어도 하나의 재배열된 활성화 값으로 형성되는, 신경망 가속기 타일.
  17. 제16항에 있어서, 상기 적어도 2개의 추가 활성화 레인은 비-연속 활성화 레인인, 신경망 가속기 타일.
  18. 제1항에 있어서, 상기 타일은 정밀도 값에 의해 규정된 요구 정밀도에 비트 단위로 저장된 적어도 하나의 패킹된(packed) 활성화 값 세트로서 상기 입력 활성화 값 세트를 수신하도록 구성되고, 상기 타일은 적어도 하나의 패킹된 활성화 값 세트를 언패킹(unpack)하도록 구성된, 신경망 가속기 타일.
  19. 제18항에 있어서, 상기 적어도 하나의 패킹된 활성화 값 세트는 제1 세트의 패킹된 활성화 값 및 제2 세트의 패킹된 활성화 값을 포함하고, 상기 제1 세트의 패킹된 활성화 값은 제1 정밀도 값에 의해 규정된 제1 요구 정밀도로 비트 단위로 저장되고, 상기 제2 세트의 패킹된 활성화 값은 제2 정밀도 값에 의해 규정된 제2 요구 정밀도로 비트 단위로 저장되고, 상기 제1 정밀도 값은 상기 제2 정밀도 값과 독립적인, 신경망 가속기 타일.
  20. 제18항에 있어서, 상기 타일은 상기 입력 활성화 값 세트의 각각의 패킹된 활성화 값 세트에 대응하는 비트 벡터를 포함하는 비트 벡터 세트를 수신하도록 구성되고, 상기 타일은 대응하는 비트 벡터에 의해 지시된 바대로 0 값을 삽입하기 위해 각각의 패킹된 활성화 값 세트를 언패킹하도록 구성된, 신경망 가속기 타일.
  21. 제1항에 있어서, 상기 타일은 정밀도 값에 의해 규정된 요구 정밀도로 비트 단위로 저장된 적어도 하나의 패킹된 가중치 레인 가중치 세트로서 상기 가중치 레인 세트의 가중치 레인 가중치를 수신하도록 구성되고, 상기 타일은 적어도 하나의 가중치 레인 가중치 세트를 언패킹하도록 구성된, 신경망 가속기 타일.
  22. 제1항에 있어서, 상기 활성화 레인 세트는 적어도 2개의 열 활성화 레인(column activation lane) 세트이고, 각 열 활성화 레인 세트는 각각의 활성화 레인이 가중치 레인에 대응하는 열을 형성하고, 상기 타일은 상기 열들 간에 적어도 하나의 가중치 레인 곱을 전달하기 위해 적어도 2개의 열들 간에 적어도 하나의 연결을 더 포함하는, 신경망 가속기 타일.
  23. 신경망에서 비트-직렬 계산을 위한 시스템으로서,
    신경망에서 비트-직렬 계산을 수행하기 위해 제1항에 따라 구성된 하나 이상의 비트-직렬 타일로서, 각각의 비트-직렬 타일은 입력 뉴런 및 시냅스를 수신하고, 상기 입력 뉴런은 적어도 하나의 입력 활성화 값 세트를 포함하고, 상기 시냅스는 적어도 하나의 가중치 세트 및 적어도 하나의 가중치 선택 메타데이터 세트를 포함하고, 상기 하나 이상의 비트-직렬 타일은 출력 뉴런을 생성하고, 각각의 출력 뉴런은 적어도 하나의 가중치 레인 곱을 사용하여 형성된, 상기 하나 이상의 비트-직렬 타일; 및
    뉴런을 저장하고 디스패처 및 리듀서(reducer)를 통해 상기 하나 이상의 비트-직렬 타일과 통신하기 위한 활성화 메모리를 포함하되;
    상기 디스패처는 상기 활성화 메모리로부터 뉴런을 판독하고, 상기 뉴런을 제1 인터페이스를 통해 상기 하나 이상의 비트-직렬 타일에 전달하고,
    상기 디스패처는 메모리로부터 시냅스를 판독하고 상기 시냅스를 제2 인터페이스를 통해 상기 하나 이상의 비트-직렬 타일에 전달하고;
    상기 리듀서는 상기 하나 이상의 비트-직렬 타일로부터 상기 출력 뉴런을 수신하고, 상기 출력 뉴런을 제3 인터페이스를 통해 상기 활성화 메모리에 전달하고;
    상기 제1 인터페이스와 상기 제2 인터페이스 중 하나는 상기 뉴런 또는 상기 시냅스를 상기 하나 이상의 비트-직렬 타일에 비트-직렬로 전달하고, 상기 제1 인터페이스와 상기 제2 인터페이스 중 다른 하나는 상기 뉴런 또는 상기 시냅스를 상기 하나 이상의 비트-직렬 타일에 비트-병렬로 전달하는, 신경망에서 비트-직렬 계산을 위한 시스템.
  24. 신경망에서 층을 계산하기 위한 시스템으로서,
    신경망에서 계산을 수행하기 위해 제1항에 따라 구성된 하나 이상의 타일로서, 각각의 타일은 입력 뉴런 및 시냅스를 수신하고, 상기 입력 뉴런 각각은 적어도 하나의 오프셋을 포함하고, 각각의 오프셋은 적어도 하나의 활성화 값을 포함하고, 상기 시냅스는 적어도 하나의 가중치 세트 및 적어도 하나의 가중치 선택 메타데이터 세트를 포함하고, 상기 하나 이상의 타일은 출력 뉴런을 생성하고, 각각의 출력 뉴런은 적어도 하나의 가중치 레인 곱을 사용하여 형성된, 상기 하나 이상의 타일; 및
    뉴런을 저장하고 디스패처 및 인코더(encoder)를 통해 상기 하나 이상의 타일과 통신하기 위한 활성화 메모리를 포함하되;
    상기 디스패처는 상기 활성화 메모리로부터 뉴런을 판독하고, 상기 뉴런을 상기 하나 이상의 타일에 전달하고, 상기 디스패처는 메모리로부터 시냅스를 판독하고, 상기 시냅스를 상기 하나 이상의 타일에 전달하고,
    상기 인코더는 상기 하나 이상의 타일로부터 상기 출력 뉴런을 수신하고, 상기 출력 뉴런을 인코딩하고, 상기 출력 뉴런을 상기 활성화 메모리에 전달하고;
    상기 오프셋은 0이 아닌 뉴런에 대해서만 계산을 수행하기 위해 상기 타일에 의해 처리되는, 신경망에서 층을 계산하기 위한 시스템.
  25. 가속기 타일로서,
    활성화 값 세트를 수신하고 상기 활성화 값 세트를 적어도 하나의 멀티플렉서 입력값 세트로 재배열하기 위한 활성화 선택 유닛;
    적어도 하나의 가중치 및 적어도 하나의 가중치 선택 메타데이터를 수신하기 위한 가중치 값 수용체(receptor) 세트;
    상기 적어도 하나의 멀티플렉서 입력값 세트 중 적어도 하나와 적어도 하나의 가중치 선택 메타데이터를 수신하기 위한 적어도 하나의 멀티플렉서로서, 상기 적어도 하나의 멀티플렉서는 상기 적어도 하나의 가중치 선택 메타데이터를 적용하여 상기 적어도 하나의 멀티플렉서 입력값 세트로부터 적어도 하나의 결합 활성화 값을 선택하도록 구성된, 상기 적어도 하나의 멀티플렉서;
    상기 적어도 하나의 결합 활성화 값을 상기 적어도 하나의 가중치에 적용하여 적어도 하나의 곱을 생성하기 위한 적어도 하나의 결합기; 및
    상기 적어도 하나의 곱을 출력하기 위한 적어도 하나의 곱 출력 분배기를 포함하는, 가속기 타일.
  26. 제25항의 타일을 적어도 하나 포함하는 신경망 가속기.
  27. 제25항에 있어서, 상기 활성화 값 세트를 상기 활성화 선택 유닛에 공급하기 위한 활성화 메모리를 더 포함하는, 가속기 타일.
  28. 제25항에 있어서, 상기 적어도 하나의 멀티플렉서 입력값 세트는 적어도 2개의 멀티플렉서 입력값 세트이고, 상기 적어도 하나의 멀티플렉서는 상기 적어도 2개의 멀티플렉서 입력 세트 중 적어도 하나의 멀티플렉서 입력 세트, 및 적어도 하나의 다른 멀티플렉서 입력값 세트로부터의 적어도 하나의 활성화 값을 수신하도록 구성된, 가속기 타일.
  29. 제25항에 있어서, 상기 결합기는 승산기, 가산기 및 시프터 중 적어도 하나인, 가속기 타일.
  30. 제25항에 있어서, 각각의 멀티플렉서 입력값 세트는 표준 활성화 값 및 적어도 하나의 전방 탐색 활성화 값을 포함하는, 가속기 타일.
  31. 제25항에 있어서, 활성화 효율을 이용하는 가속기 구조로 구현되는, 가속기 타일.
  32. 제25항에 있어서, 상기 활성화 값 세트는 활성화 비트인, 가속기 타일.
  33. 제25항에 있어서, 상기 활성화 값 세트는 2의 부호 있는 거듭 제곱인, 가속기 타일.
  34. 제25항에 있어서, 상기 적어도 하나의 멀티플렉서의 각각의 멀티플렉서의 크기는 2의 거듭 제곱인, 가속기 타일.
  35. 제34항에 있어서, 상기 적어도 하나의 멀티플렉서의 각각의 멀티플렉서의 크기는 8인, 가속기 타일.
  36. 제1항의 신경망 가속기 타일을 훈련에 사용하는 방법.
  37. 제25항의 가속기 타일을 훈련에 사용하는 방법.
  38. 제1항에 있어서, 상기 가중치 레인의 가중치 선택 메타데이터는 멀티플렉서 선택 신호를 지정하는 표를 인덱싱(index)하는, 신경망 가속기 타일.
  39. 제25항에 있어서, 상기 가중치 선택 메타데이터는 멀티플렉서 선택 신호를 지정하는 표를 인덱싱하는, 가속기 타일.
KR1020207023816A 2018-02-16 2019-02-15 신경망 가속기 KR20200118815A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201862710488P 2018-02-16 2018-02-16
US62/710,488 2018-02-16
US201862664190P 2018-04-29 2018-04-29
US62/664,190 2018-04-29
PCT/CA2019/050187 WO2019157599A1 (en) 2018-02-16 2019-02-15 Neural network accelerator

Publications (1)

Publication Number Publication Date
KR20200118815A true KR20200118815A (ko) 2020-10-16

Family

ID=67619691

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207023816A KR20200118815A (ko) 2018-02-16 2019-02-15 신경망 가속기

Country Status (7)

Country Link
US (1) US20210004668A1 (ko)
JP (1) JP7349438B2 (ko)
KR (1) KR20200118815A (ko)
CN (1) CN111742331B (ko)
CA (1) CA3090329C (ko)
SG (1) SG11202007532TA (ko)
WO (1) WO2019157599A1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220029611A (ko) * 2019-11-27 2022-03-08 고려대학교 산학협력단 이종 곱셈-누셈 유닛을 이용하는 심층 신경망의 가속기
WO2022145713A1 (ko) * 2020-12-31 2022-07-07 주식회사 메이아이 인공 신경망 모델을 경량화하기 위한 방법, 시스템 및 비일시성의 컴퓨터 판독 가능한 기록 매체
WO2022231090A1 (ko) * 2021-04-27 2022-11-03 삼성전자 주식회사 인공 지능 모델에 기반하여 데이터를 처리하는 전자 장치 및 그 동작 방법

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11966835B2 (en) * 2018-06-05 2024-04-23 Nvidia Corp. Deep neural network accelerator with fine-grained parallelism discovery
US11769040B2 (en) 2018-09-10 2023-09-26 Nvidia Corp. Scalable multi-die deep learning system
CN109543830B (zh) * 2018-09-20 2023-02-03 中国科学院计算技术研究所 一种用于卷积神经网络加速器的拆分累加器
US11747205B2 (en) * 2019-02-27 2023-09-05 Deep Smart Light Ltd. Noninvasive, multispectral-fluorescence characterization of biological tissues with machine/deep learning
US11270197B2 (en) 2019-03-12 2022-03-08 Nvidia Corp. Efficient neural network accelerator dataflows
US20210110243A1 (en) * 2019-10-10 2021-04-15 Hewlett Packard Enterprise Development Lp Deep learning accelerator system interface
CN110991609B (zh) * 2019-11-27 2023-12-26 天津大学 用于数据传输的行缓存器
US11615256B1 (en) * 2019-12-30 2023-03-28 Ali Tasdighi Far Hybrid accumulation method in multiply-accumulate for machine learning
US11610104B1 (en) * 2019-12-30 2023-03-21 Ali Tasdighi Far Asynchronous analog accelerator for fully connected artificial neural networks
US20210303987A1 (en) * 2020-03-26 2021-09-30 Advanced Micro Devices, Inc. Power reduction for machine learning accelerator background
US11175844B1 (en) * 2020-05-13 2021-11-16 International Business Machines Corporation Optimal placement of data structures in a hybrid memory based inference computing platform
US20210357748A1 (en) * 2020-05-14 2021-11-18 Samsung Electronics Co., Ltd. Hierarchical weight preprocessing for neural network accelerator
US11500811B2 (en) * 2020-06-12 2022-11-15 Alibaba Group Holding Limited Apparatuses and methods for map reduce
EP4168943A4 (en) * 2020-07-21 2024-07-24 Governing Council Univ Toronto SYSTEM AND METHOD FOR ACCELERATE FOR TRAINING DEEP LEARNING NETWORKS
CN114692865A (zh) * 2020-12-31 2022-07-01 安徽寒武纪信息科技有限公司 一种神经网络量化训练方法、装置及相关产品
CN113269316B (zh) * 2021-03-26 2022-10-11 复旦大学 支持稀疏神经网络计算加速器的稀疏数据选择逻辑模块
US11269632B1 (en) 2021-06-17 2022-03-08 International Business Machines Corporation Data conversion to/from selected data type with implied rounding mode
US11693692B2 (en) 2021-06-17 2023-07-04 International Business Machines Corporation Program event recording storage alteration processing for a neural network accelerator instruction
US12079658B2 (en) 2021-06-17 2024-09-03 International Business Machines Corporation Detection of invalid machine-specific data types during data conversion
US11669331B2 (en) 2021-06-17 2023-06-06 International Business Machines Corporation Neural network processing assist instruction
US11675592B2 (en) 2021-06-17 2023-06-13 International Business Machines Corporation Instruction to query for model-dependent information
US11734013B2 (en) 2021-06-17 2023-08-22 International Business Machines Corporation Exception summary for invalid values detected during instruction execution
US11797270B2 (en) 2021-06-17 2023-10-24 International Business Machines Corporation Single function to perform multiple operations with distinct operation parameter validation
US20210319317A1 (en) * 2021-06-24 2021-10-14 Intel Corporation Methods and apparatus to perform machine-learning model operations on sparse accelerators
CN113592066B (zh) * 2021-07-08 2024-01-05 深圳市易成自动驾驶技术有限公司 硬件加速方法、装置、设备及存储介质
CN113692592B (zh) * 2021-07-08 2022-06-28 香港应用科技研究院有限公司 动态瓦片并行神经网络加速器
KR20240037233A (ko) * 2021-07-27 2024-03-21 퀄컴 인코포레이티드 뉴럴 네트워크 가속기에서의 데이터-재사용을 위한 활성화 버퍼 아키텍처
KR20230133066A (ko) * 2022-03-10 2023-09-19 리벨리온 주식회사 뉴럴 프로세싱 장치

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5751913A (en) * 1996-07-29 1998-05-12 Industrial Technology Research Institute Reconfigurable neural network and difference-square neuron
KR20000052725A (ko) * 1996-10-23 2000-08-25 제이. 알. 드로우일래드 비트-시리얼에 근거한 회귀성 뉴로프로세서를 포함하는 차량용 엔진 불발 감지 장치
US9449257B2 (en) * 2012-12-04 2016-09-20 Institute Of Semiconductors, Chinese Academy Of Sciences Dynamically reconstructable multistage parallel single instruction multiple data array processing system
US10192162B2 (en) * 2015-05-21 2019-01-29 Google Llc Vector computation unit in a neural network processor
US10417555B2 (en) * 2015-05-29 2019-09-17 Samsung Electronics Co., Ltd. Data-optimized neural network traversal
US20160358069A1 (en) * 2015-06-03 2016-12-08 Samsung Electronics Co., Ltd. Neural network suppression
KR102120396B1 (ko) 2016-05-26 2020-06-08 더 가버닝 카운슬 오브 더 유니버시티 오브 토론토 심층 신경망용 가속기
CN109328361B (zh) * 2016-06-14 2020-03-27 多伦多大学管理委员会 用于深度神经网络的加速器
US10891538B2 (en) * 2016-08-11 2021-01-12 Nvidia Corporation Sparse convolutional neural network accelerator
US20180046898A1 (en) 2016-08-11 2018-02-15 Vivante Corporation Zero Coefficient Skipping Convolution Neural Network Engine
US10360163B2 (en) * 2016-10-27 2019-07-23 Google Llc Exploiting input data sparsity in neural network compute units
US10175980B2 (en) * 2016-10-27 2019-01-08 Google Llc Neural network compute tile
US11003985B2 (en) * 2016-11-07 2021-05-11 Electronics And Telecommunications Research Institute Convolutional neural network system and operation method thereof
WO2018103736A1 (en) * 2016-12-09 2018-06-14 Beijing Horizon Information Technology Co., Ltd. Systems and methods for data management
US10521488B1 (en) * 2016-12-30 2019-12-31 X Development Llc Dynamic partitioning
US10096134B2 (en) * 2017-02-01 2018-10-09 Nvidia Corporation Data compaction and memory bandwidth reduction for sparse neural networks
US10467795B2 (en) * 2017-04-08 2019-11-05 Intel Corporation Sub-graph in frequency domain and dynamic selection of convolution implementation on a GPU
US10127494B1 (en) * 2017-08-02 2018-11-13 Google Llc Neural network crossbar stack
CN107688850B (zh) * 2017-08-08 2021-04-13 赛灵思公司 一种深度神经网络压缩方法
EP3718023A1 (en) * 2017-12-01 2020-10-07 MemSQL Inc. Accelerated filtering, grouping and aggregation in a database system

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220029611A (ko) * 2019-11-27 2022-03-08 고려대학교 산학협력단 이종 곱셈-누셈 유닛을 이용하는 심층 신경망의 가속기
WO2022145713A1 (ko) * 2020-12-31 2022-07-07 주식회사 메이아이 인공 신경망 모델을 경량화하기 위한 방법, 시스템 및 비일시성의 컴퓨터 판독 가능한 기록 매체
WO2022231090A1 (ko) * 2021-04-27 2022-11-03 삼성전자 주식회사 인공 지능 모델에 기반하여 데이터를 처리하는 전자 장치 및 그 동작 방법

Also Published As

Publication number Publication date
WO2019157599A1 (en) 2019-08-22
SG11202007532TA (en) 2020-09-29
US20210004668A1 (en) 2021-01-07
JP7349438B2 (ja) 2023-09-22
CN111742331B (zh) 2024-09-24
CA3090329C (en) 2021-07-27
JP2021515300A (ja) 2021-06-17
CN111742331A (zh) 2020-10-02
CA3090329A1 (en) 2019-08-22

Similar Documents

Publication Publication Date Title
KR20200118815A (ko) 신경망 가속기
Gondimalla et al. SparTen: A sparse tensor accelerator for convolutional neural networks
JP7474586B2 (ja) テンソル計算データフロー加速器半導体回路
EP3500945B1 (en) Low latency matrix multiply unit
Cho et al. Fa3c: Fpga-accelerated deep reinforcement learning
KR102459855B1 (ko) 심층 신경망용 가속기
KR20190010642A (ko) 심층 신경망용 가속기
KR20200128356A (ko) 혼합-정밀도 앤피유 타일
Delmas et al. Bit-tactical: Exploiting ineffectual computations in convolutional neural networks: Which, why, and how
Lichtenstein et al. Block-cyclic dense linear algebra
Tao et al. Lw-gcn: A lightweight fpga-based graph convolutional network accelerator
Umuroglu et al. Optimizing bit-serial matrix multiplication for reconfigurable computing
KR20210084220A (ko) 부분 판독/기입을 갖는 재구성 가능한 시스톨릭 어레이를 위한 시스템 및 방법
Gondimalla et al. Eureka: Efficient Tensor Cores for One-sided Unstructured Sparsity in DNN Inference
CN114329329A (zh) 硬件中的稀疏矩阵乘法
CN111522776B (zh) 一种计算架构
Choi et al. MLogNet: A logarithmic quantization-based accelerator for depthwise separable convolution
Xu et al. Sparkle: A high efficient sparse matrix multiplication accelerator for deep learning
Anh et al. Reducing vector I/O for faster GPU sparse matrix-vector multiplication
EP4136552A1 (en) Systolic array cells with multiple accumulators
US20240004830A1 (en) Floorplan-optimized matrix extension architecture for processors
Wang et al. SparG: a sparse GEMM accelerator for deep learning applications
Gondimalla ACCELERATING SPARSE MACHINE LEARNING INFERENCE
Tareen et al. HiHiSpMV: Sparse Matrix Vector Multiplication with Hierarchical Row Reductions on FPGAs with High Bandwidth Memory
Ecker et al. New efficient general sparse matrix formats for parallel SpMV operations

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal