KR102120395B1 - 심층 신경망용 가속기 - Google Patents
심층 신경망용 가속기 Download PDFInfo
- Publication number
- KR102120395B1 KR102120395B1 KR1020187036799A KR20187036799A KR102120395B1 KR 102120395 B1 KR102120395 B1 KR 102120395B1 KR 1020187036799 A KR1020187036799 A KR 1020187036799A KR 20187036799 A KR20187036799 A KR 20187036799A KR 102120395 B1 KR102120395 B1 KR 102120395B1
- Authority
- KR
- South Korea
- Prior art keywords
- neuron
- neurons
- zero
- tile
- activation
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G06N3/0454—
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/048—Activation functions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/082—Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
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 Health & Medical Sciences (AREA)
- General Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Image Processing (AREA)
- Complex Calculations (AREA)
- Image Analysis (AREA)
- Memory System (AREA)
Abstract
신경망에서 층의 프로세싱에서 비유효 계산을 감소시키기 위한 시스템, 집적 회로 및 방법이 설명된다. 하나 이상의 타일이 계산을 수행하며 여기에서 각각의 타일은 입력 뉴런, 오프셋 및 시냅스를 수신하며, 각각의 입력 뉴런은 연관된 오프셋을 갖는다. 각각의 타일은 출력 뉴런을 생성하며, 디스패처 및 인코더를 통해 타일과 통신하는 뉴런을 저장하기 위한 활성화 메모리가 또한 있다. 디스패처는 활성화 메모리로부터 뉴런을 판독하며 타일로 뉴런을 전달하고 메모리로부터 시냅스를 판독하며 시냅스를 타일로 전달한다. 인코더는 타일로부터 출력 뉴런을 수신하고, 인코딩하며 출력 뉴런을 활성화 메모리로 전달한다. 오프셋은 단지 비-제로 뉴런에 대해서만 계산을 수행하도록 타일에 의해 프로세싱된다. 선택적으로, 시냅스는 비유효 연산을 건너뛰기 위해 유사하게 프로세싱될 수 있다.
Description
본 명세서는 일반적으로 신경망에 관한 것이며, 보다 구체적으로 곱셈의 입력이 제로인 가장 유효하지 않은 연산을 제거하거나 또는 건너뜀으로써 성능 및 에너지 개선을 달성하는 심층 신경망(deep neural network: DNN)을 위한 가속기에 관한 것이다.
심층 신경망(DNN)은 오브젝트 및 스피치 인식과 같은 많은 인식 태스크에서의 최신 기술이다. DNN은 각각이 흔히 그래픽스 프로세싱 유닛(GPU)을 사용해서 이용되는 높은 계산 수요 및 병렬성을 보이는 층의 피드-포워드 배열을 포함한다. 그러나, DNN의 높은 계산 수요 및 보다 높은 에너지 효율에 대한 요구는 특수 목적 아키텍처의 개발 및 제안에 동기를 부여하여 왔다. 그러나, 프로세싱 속도는 몇몇 DNN 설계에서, 특히 보다 복잡한 애플리케이션에 대해 계속해서 제한 요인이 된다.
따라서, 이 기술분야에서 개선에 대한 요구가 남아 있다.
본 발명의 양상에 따르면, 곱셈의 입력이 제로이거나, 또는 몇몇 실시예에서 제로에 가깝도록 임계치 미만인 가장 유효하지 않은 연산을 제거하거나 또는 건너뜀으로써 성능 및 에너지 개선을 달성하는 심층 신경망을 위한 가속기가 제공되고 있다.
본 발명의 실시예에 따르면, 신경망에서 층의 계산을 위한 시스템이 제공되고 있으며, 상기 시스템은, 하나 이상의 타일로서, 상기 하나 이상의 타일은 신경망에서 계산을 수행하기 위한 것으로서, 각각의 타일은 입력 뉴런, 오프셋 및 시냅스를 수신하며, 각각의 입력 뉴런은 연관된 오프셋을 갖는, 상기 계산 수행하기, 및 출력 뉴런을 생성하기 위한, 상기 하나 이상의 타일; 뉴런을 저장하기 위한 것이며 디스패처(dispatcher) 및 인코더를 통해 상기 하나 이상의 타일과 통신하는 활성화 메모리로서, 상기 디스패처는 상기 활성화 메모리로부터 이들의 연관된 오프셋을 갖는 뉴런을 판독하며 이들의 연관된 오프셋을 갖는 뉴런을 상기 하나 이상의 타일로 전달하고, 상기 디스패처는 메모리로부터 시냅스를 판독하며 상기 시냅스를 상기 하나 이상의 타일로 전달하고, 상기 인코더는 상기 하나 이상의 타일로부터 상기 출력 뉴런을 수신하고, 인코딩하며 상기 출력 뉴런을 상기 활성화 메모리로 전달하는, 상기 활성화 메모리를 포함하되, 상기 오프셋은 단지 비-제로 뉴런에 대해서만 계산을 수행하도록 상기 타일에 의해 프로세싱된다.
추가 실시예에 따르면, 본 발명은 신경망에서 층을 계산하는데 사용하기 위한 가속기를 포함한 집적 회로를 제공하며, 상기 집적 회로는, 하나 이상의 타일로서, 상기 하나 이상의 타일은, 신경망에서 계산을 수행하는 것으로서, 각각의 타일은 입력 뉴런, 오프셋 및 시냅스를 수신하고, 각각의 입력 뉴런은 연관된 오프셋을 갖는, 상기 계산 수행하기, 및 출력 뉴런을 생성하기 위한, 상기 하나 이상의 타일; 뉴런을 저장하기 위한 것이며 디스패처 및 인코더를 통해 상기 하나 이상의 타일과 통신하는 활성화 메모리로서, 상기 디스패처는 상기 활성화 메모리로부터 이들의 연관된 오프셋을 갖는 뉴런을 판독하며 이들의 연관된 오프셋을 갖는 상기 뉴런을 상기 하나 이상의 타일로 전달하고, 상기 디스패처는 메모리로부터 시냅스를 판독하며 상기 시냅스를 상기 하나 이상의 타일로 전달하고, 상기 인코더는 상기 하나 이상의 타일로부터 상기 출력 뉴런을 수신하고, 인코딩하며 상기 출력 뉴런을 상기 활성화 메모리로 전달하는, 상기 활성화 메모리를 포함하며, 상기 오프셋은 단지 비-제로 뉴런에 대해서만 계산을 수행하도록 상기 타일에 의해 프로세싱된다.
추가 실시예에 따르면, 본 발명은 신경망에서 계산을 수행할 때 비유효 연산을 감소시키기 위한 방법을 제공하며, 상기 방법은, 뉴런 스트림에서 비-제로 뉴런을 식별하며 각각의 뉴런에 대한 오프셋 값을 생성하는 단계; 상기 뉴런을 이용해서 각각의 뉴런에 대한 상기 오프셋 값을 상기 뉴런을 프로세싱하는 타일로 전달하는 단계; 상기 타일이 계산을 수행할 상기 비-제로 뉴런을 식별하기 위해 상기 오프셋 값을 사용하는 단계; 상기 타일이 단지 상기 비-제로 뉴런에 대해서만 계산을 수행하며 출력 뉴런을 생성하는 단계; 및 출력 뉴런을 활성화 메모리에 저장하는 단계를 포함한다.
본 출원에 따른 다른 양상 및 특징은 수반되는 도면과 함께 본 발명의 실시예에 대한 다음의 설명의 검토 시 이 기술분야의 통상의 기술자에게 명백해질 것이다.
참조가 이제 단지 예로서, 본 발명의 실시예를 도시하는 수반되는 도면, 및 그들이 어떻게 실시될 수 있는지에 대해 이루어질 것이다:
도 1은 제로인 컨볼루션 층 곱셈 입력 뉴런 값의 평균 부분을 도시한 막대 그래프;
도 2A 내지 도 2C는 출력 뉴런 어레이를 생성한 입력 뉴런 어레이로의 필터의 적용의 종래 기술에 따른 단계를 도시한 도면;
도 3A 내지 도 3D는 종래 기술의 DaDianNao DNN 가속기의 동작을 도시한 도면;
도 4A 및 도 4B는 본 발명의 실시예에 따른 신경 기능 유닛에서 뉴런의 프로세싱을 도시한 도면;
도 5A는 종래 기술의 DaDianNao 신경 기능 유닛(NFU)의 다이어그램이며 도 5B는 본 발명의 실시예에 따른 유닛의 다이어그램;
도 6A는 종래 기술의 DaDianNao 가속기에서 프로세싱 순서 및 작업 할당을 도시한 그래픽 다이어그램이며 도 6B는 본 발명의 실시예에 따른 가속기에서 프로세싱 순서 및 작업 할당을 도시한 그래픽 다이어그램;
도 7은 본 발명의 실시예에서 사용된 제로-프리 뉴런 어레이 포맷(ZFNAf)을 도시한 그래픽 다이어그램;
도 8은 본 발명의 실시예에 따른 디스패처를 도시한 도면;
도 9는 컨볼루션 신경망의 테이블;
도 10은 베이스라인에 대한 본 발명의 실시예의 속도 향상을 도시한 막대 그래프;
도 11은 실행 활동의 분할을 도시한 막대 그래프;
도 12는 본 발명의 실시예에 따른 베이스라인 및 아키텍처의 영역 분할을 도시한 막대 그래프;
도 13은 본 발명의 실시예에 따른 베이스라인에서 평균 전력 소비의 분할을 도시한 막대 그래프;
도 14는 에너지 지연 곱 및 에너지 지연 제곱된 곱을 위한 DaDianNao에 대해 본 발명의 실시예의 개선을 도시한 막대 그래프;
도 15는 뉴런을 잘라내는 것으로부터의 속도 향상과 정확성 사이에서의 트레이드-오프를 도시한 차트;
도 16은 무손실 비유효 뉴런 임계치를 도시한 테이블;
도 17은 실시예에 따라, 브릭 버퍼 및 디스패처에서 비유효 활성화를 검출하고 건너뛰는 것을 도시한 그래픽 다이어그램; 및
도 18A 내지 도 18C는 본 발명의 추가 실시예의 동작의 예를 도시한 도면.
유사한 참조 부호는 도면에서 유사한 또는 대응하는 요소를 나타낸다.
도 1은 제로인 컨볼루션 층 곱셈 입력 뉴런 값의 평균 부분을 도시한 막대 그래프;
도 2A 내지 도 2C는 출력 뉴런 어레이를 생성한 입력 뉴런 어레이로의 필터의 적용의 종래 기술에 따른 단계를 도시한 도면;
도 3A 내지 도 3D는 종래 기술의 DaDianNao DNN 가속기의 동작을 도시한 도면;
도 4A 및 도 4B는 본 발명의 실시예에 따른 신경 기능 유닛에서 뉴런의 프로세싱을 도시한 도면;
도 5A는 종래 기술의 DaDianNao 신경 기능 유닛(NFU)의 다이어그램이며 도 5B는 본 발명의 실시예에 따른 유닛의 다이어그램;
도 6A는 종래 기술의 DaDianNao 가속기에서 프로세싱 순서 및 작업 할당을 도시한 그래픽 다이어그램이며 도 6B는 본 발명의 실시예에 따른 가속기에서 프로세싱 순서 및 작업 할당을 도시한 그래픽 다이어그램;
도 7은 본 발명의 실시예에서 사용된 제로-프리 뉴런 어레이 포맷(ZFNAf)을 도시한 그래픽 다이어그램;
도 8은 본 발명의 실시예에 따른 디스패처를 도시한 도면;
도 9는 컨볼루션 신경망의 테이블;
도 10은 베이스라인에 대한 본 발명의 실시예의 속도 향상을 도시한 막대 그래프;
도 11은 실행 활동의 분할을 도시한 막대 그래프;
도 12는 본 발명의 실시예에 따른 베이스라인 및 아키텍처의 영역 분할을 도시한 막대 그래프;
도 13은 본 발명의 실시예에 따른 베이스라인에서 평균 전력 소비의 분할을 도시한 막대 그래프;
도 14는 에너지 지연 곱 및 에너지 지연 제곱된 곱을 위한 DaDianNao에 대해 본 발명의 실시예의 개선을 도시한 막대 그래프;
도 15는 뉴런을 잘라내는 것으로부터의 속도 향상과 정확성 사이에서의 트레이드-오프를 도시한 차트;
도 16은 무손실 비유효 뉴런 임계치를 도시한 테이블;
도 17은 실시예에 따라, 브릭 버퍼 및 디스패처에서 비유효 활성화를 검출하고 건너뛰는 것을 도시한 그래픽 다이어그램; 및
도 18A 내지 도 18C는 본 발명의 추가 실시예의 동작의 예를 도시한 도면.
유사한 참조 부호는 도면에서 유사한 또는 대응하는 요소를 나타낸다.
심층 신경망(DNN)은 텍스트, 이미지 또는 음성과 같은 정보의 복잡한 조각으로부터 의미있는 특징을 추출하기 위한 그들의 극히 예외적인 용량 덕분에 아주 흔하게 되고 있다. DNN 및 특히, 컨볼루션 신경망(Convolutional Neural Network: CNN)은 대안적인 오브젝트 인식 또는 이미지 분류 알고리즘에 비교하여 매우 양호한 인식 품질을 제공한다. DNN은 일반-목적 그래픽스 프로세서와 같은 범용 컴퓨팅 플랫폼에서 이용 가능한 컴퓨팅 능력으로부터 이익을 얻는다.
미래 DNN은 보다 크고, 보다 깊고, 보다 큰 입력을 프로세싱하며, 현재 DNN보다 복잡한 분류 태스크를, 실시간을 포함한 보다 빠른 속도로 수행하기 위해 사용되도록 요구할 가능성이 있다. 따라서, 연산당 에너지를 감소시키면서 하드웨어 계산 능력을 신장시키며 가능하게는 보다 작은 형태 인자 디바이스에 대해 그렇게 하기 위한 요구가 있다.
이하에서 추가로 논의되는 바와 같이, DaDianNao 가속기는 DNN의 규칙적인 액세스 패턴 및 계산 구조를 이용함으로써 DNN 성능을 개선하고자 한다. 그것은 수백 개의 곱셈 레인의 그룹에서 동시에 동작하는 넓은 SIMD(단일-지시 다중-데이터) 유닛을 사용한다.
실시예에 따르면, DNN 성능은 DNN에 의해 동작되는 콘텐트의 인식을 통해 가속될 수 있다. 특히, 심층 신경망에 의해 수행된 계산의 큰 부분은 본질적으로 그들이 입력 중 하나가 제로인 곱셈을 수반함에 따라 유효하지 않다. DNN에서 우세한 계산에 의해 수행된 연산의 평균하여 44%는 이 카테고리가 될 수 있다. 비유효 연산의 대다수는 상이한 입력에 걸쳐 상당히 달라지는 것처럼 보이지 않으며, 비유효 곱이 DNN의 내재적 속성의 결과일 수 있음을 시사한다. 결과가 최종 결과에 의미 있게 기여하지 않는 이들 연산을 실행하는 것은 많은 시간, 에너지, 및 계산 리소스를 낭비한다.
DaDianNao 가속기의 조직은 뉴런 레인이 독립적으로 이동하도록 허용하지 않는다. 그 결과, 이러한 유형의 가속기는 제로-값 입력을 "무시할 수" 없으므로 DNN 콘텐트를 이용할 수 없다.
이하에서 보다 상세하게 논의되는 바와 같이, 본 발명의 실시예는 가장 유효하지 않은 연산을 동적으로 제거하기 위해 가치-기준 접근법을 따르는 DNN 가속기를 제공한다. 이것은 정확성에서의 손실 없이 DaDianNao 가속기에 대해 성능 및 에너지를 개선할 수 있다.
본 발명의 실시예는 계층적 데이터-병렬 유닛을 이용하여, 레인의 그룹이 주로 독립적으로 진행되도록 허용하며 그들이 비유효 연산을 건너뛸 수 있게 한다. 공동-설계된 데이터 저장 포맷은 관련 있는 층의 입력 및 출력을 저장하며 계산 제거 결정을 인코딩한다. 이것은 데이터 병렬 유닛에서 제어 발산을 피하면서 임계 경로를 벗어나 이들 결정을 취한다. 데이터-병렬 유닛으로의 작업의 할당이 또한 수정된다. 조합된, 유닛 및 데이터 저장 포맷은 메모리 계층으로의 넓고, 정렬된 액세스를 유지하며 입력에서 제로의 분포에 독립적으로 데이터 레인을 거의 바쁘게 유지하는 데이터-병렬 아키텍처를 야기한다.
일단 제로-피연산자 곱셈을 건너뛰기 위한 능력이 준비가 되면, 비유효 연산 식별 기준은 정확도 손실 없이 추가 개선을 가능하게 하기 위해 완화되거나 또는 느슨해질 수 있다. 정확도에서의 몇몇 손실이 수용 가능하다면, 성능 및 에너지 효율에서의 추가 개선은 기준의 추가 완화와 정확도를 트레이드 오프함으로써 획득될 수 있다.
본 발명의 실시예는 DNN의 컨볼루션 층을 타겟팅한다. DNN에서, 컨볼루션 층은 그들이 계산의 대부분을 수행함에 따라 실행 시간을 주도한다. 컨볼루션 층은 3-차원 입력에 대해 여러 개의 3-차원 필터를 적용한다. 이것은 입력 요소, 또는 뉴런 및 필터 가중치, 또는 시냅스 간에 쌍별 곱셈을 수반하는 내적 산출이다. 이들 곱은 그 후 덧셈을 사용하여 단일 출력 뉴런으로 감소된다.
실제로, 많은 뉴런 값은 제로인 것으로 나타나며, 따라서 대응하는 곱셈 및 덧셈은 최종 결과에 기여하지 않으며 회피될 수 있다. 따라서, 이 섹션은 공개적으로 이용 가능한 대중적인 DNN의 컨볼루션 층에서 제로와 같은 입력 뉴런의 부분을 특성화한다. 이들 측정을 위해, DNN은 Imagenet 데이터세트로부터 1천 개의 이미지를 분류하기 위해 사용되었다.
도 1은 모든 컨볼루션 층에 걸쳐 및 모든 입력에 걸쳐 제로의 값을 가진 뉴런 입력인 곱셈 피연산자의 평균 총 부분을 보고한다. 이러한 부분은 nin에 대해 37%로부터, cnnS에 대해 50%까지 달라지며, 모든 망에 걸친 평균은 44%이다. 에러 바는 입력 이미지에 걸쳐 적은 변화를 보여주며, 1,000개의 이미지의 샘플 세트가 사이징 가능하다는 것을 고려해 볼 때, 제로 뉴런의 비교적 큰 부분은 입력의 속성이 아닌, 망의 연산에 기인한다.
망이 아주 많은 제로 뉴런을 생성하는 이유에 대한 하나의 설명은 DNN의 특징 및 구조에 있다. 높은 레벨에서, DNN은 각각의 DNN 층이, 입력이 라인, 곡선 또는 보다 정교한 구조물과 같은 특정한 학습된 "특징"을 포함하는지 및 장소를 결정하려고 시도하도록 설계된다. 특징의 존재는 양의 값 뉴런 출력으로 및 부재는 제로-값 뉴런으로 인코딩된다. 따라서, 특징이 존재할 때, 그들은 입력에 걸쳐 모두를 나타내지 않을 가능성이 가장 높다. 게다가, 모든 특징이 존재하는 것은 아닐 것이다. DNN은 숫자로 특징이 특정한 위치에 존재하는 가능성을 인코딩한 출력을 생성하기 위해 컨볼루션 층을 사용하여 특징의 존재를 검출한다. 음의 값은 특징이 존재하지 않음을 시사한다. 컨볼루션 층은 Rectifier, 또는 양의 값이 통과하게 하지만, 임의의 음의 입력을 제로로 변환하는 ReLU 층으로 이어질 수 있다.
많은 제로-값 뉴런이 있지만, 그들의 위치는 입력 데이터 값에 의존하며, 그러므로 정적 접근법이 대응하는 계산을 제거하는 것은 도전적일 것이다. 특히, 모든 입력에 걸쳐 항상 제로인 뉴런은 없었다. 높은 확률을 갖고 제로인 뉴런을 제거하는 것이 가능할지라도, 많지 않을 것이다. 예를 들면, 단지 0.6%의 뉴런만이 99% 확률을 갖고 제로이다. 이하에서 추가로 설명된 아키텍처는 런타임 시 이러한 계산을 검출하며 제거한다.
컨볼루션 층을 계산하기 위해 요구된 시간이 프로세싱된 요소의 수에 따라 주로 선형적으로 증가하므로 및 컨볼루션 층이 실행 시간을 주도하므로, 이들 측정은 제로-값 뉴런에 대응하는 계산을 건너뛰도록 관리하는 아키텍처에 대한 잠재적인 성능 개선에 대한 상계를 나타낼 수 있다.
많은 뉴런이 제로임을 보여주었지만, 본 발명의 실시예는, 1) 레인 분해, 및 2) 제로 값 입력의 제거를 가능하게 하는 적절한 포맷으로 즉시 입력을 저장함으로써 대응하는 계산을 건너뛸 수 있다.
컨볼루션 층의 계산
CNN을 계산하는데 수반된 연산은 DNN에서와 특징이 동일하다. 주요 차이는 전반에, 입력(즉, 이미지)에서의 상이한 포인트에서 특징을 찾기 위해 가중이 반복된다는 것이다. 컨볼루션 층으로의 입력은 실수의 치수의 3D 어레이(Ix×Iy×i)이다. 이들 숫자는 제1 층에서의 입력 데이터 및 뒤이은 층에 대한 이전 층의 뉴런의 출력이다. 이러한 작업의 나머지에서, 그들은 지정된 "입력 뉴런"일 수 있다. 각각의 층은 입력된 층의 x 및 y 차원을 따라 다수의 위치에서 N개의 필터를 이용한다. 각각의 필터는 시냅스를 포함한 치수의 3D 어레이(Fx×Fy×i)이다. 모든 필터는 동일한 치수이며 그들의 깊이는 입력 뉴런 어레이와 동일하다. 층은 치수의 3D 출력 뉴런 어레이(Ox×Oy×N)를 생성한다. 출력의 깊이는 필터의 수와 동일하다.
출력 뉴런을 산출하기 위해, 하나의 필터는 윈도우, 또는 필터와 동일한 치수를 가진 입력 뉴런 어레이의 서브어레이(Fx×Fy×i)에 걸쳐 이용된다. n(x, y, z) 및 o(x, y, z)를 각각 입력 및 출력 뉴런이라 하며, sf(x, y, z)를 필터(f)의 시냅스라 하자. 위치(k, l, f)에서 출력 뉴런은, 활성화 기능 이전에, 다음과 같이 산출된다:
윈도우 및 필터당 하나의 출력 뉴런이 있다. 필터는 출력 뉴런 모두를 생성하기 위해 일정한 스트라이드(S)를 사용하여 X 및 Y 차원을 따라 이동하는 상이한 윈도우에 걸쳐 반복적으로 이용된다. 따라서, 출력 뉴런 어레이 치수는 Ox = (Ix - Fx)/S + 1이며, Oy = (Iy - Fy)/S + 1이다. 도 2는 3×3×2 입력 뉴런 어레이, 단일 2×2×2 필터 및 2×2×1의 출력 뉴런 어레이를 생성하는 유닛 스트라이드를 가진 예를 도시한다.
입력 뉴런이 제로일 때, 대응하는 곱셈 및 덧셈은 출력 값을 변경하지 않고 시간 및 에너지를 절약하기 위해 제거될 수 있다.
도 2A에 도시된 바와 같이, 위치 (0, 0, 0) 또는 o(0, 0, 0)에서의 출력 뉴런은 원점 n(0, 0, 0)을 갖고 입력의 2×2×2 윈도우 상에서 필터를 적용함으로써 생성된다. 각각의 시냅스(s(x, y, z))는 총 2×2×2 또는 8개의 곱에 대해, 대응하는 입력 뉴런(n(x, y, z))으로 곱하여지며, 예로서 n(0, 0, 0)×s(0, 0, 0), 및 n(0, 1, 0)×s(0, 1, 0)이다. 8개의 곱은 덧셈을 사용하여 단일 출력 뉴런으로 감소된다. 그 후, 윈도우는 원점(n(1, 0, 0))에서 뉴런 입력 윈도우를 사용하여 o(1, 0, 0)을 생성하기 위해 먼저 X 차원을 따라 S만큼 미끄러진다. 예를 들면, 이제 s(0, 0, 0)는 n(1, 0, 0)으로 및 s(1, 1, 0)은 n(2, 1, 0)으로 곱하여진다.
일단 제1 차원이 고갈되면, 윈도우는 도면이 보여주는 바와 같이, Y 차원을 따라 S만큼 미끄러지며 다시 X 차원을 따라 스캐닝하기 시작한다. 통틀어, 결과는 2×2×1 출력 뉴런이다. 깊이는 단지 하나의 필터가 있으므로 1이다.
도 2B 및 도 2C는 두 개의 2×2×2 필터를 가진 컨볼루션 층을 도시한다. 출력은 이제2×2×2 어레이이며, 각각의 필터는 출력의 두 개의 평면 또는 층 중 하나를 생성한다. 도 2B가 보여주는 바와 같이, 제1 필터는 출력 요소(o(x, y, 0))를 생성한다. 도 2C는 제2 필터가 출력 뉴런(o(x, y, 1))을 생성한다는 것을 보여준다.
단순화된 베이스라인 아키텍처(DaDianNao)
베이스라인 아키텍처는 Chen 외에 의해 제안된 DaDianNao 최신 가속기에 기초한다. 이 섹션은 이러한 아키텍처의 단순화된 유닛이 어떻게 컨볼루션 층을 산출하는지 및 현재 상태 그대로, 그것이 제로 값 입력 뉴런을 건너뛸 수 없는 이유를 예를 통해 설명한다.
DaDianNao 가속기의 연산은 도 3에 도시된다. 도 3(a)에서, 3×3×2 뉴런 어레이는 2×2×2 출력 뉴런 어레이를 생성하는 두 개의 2×2×2 필터에 의해 유닛 스트라이드를 갖고 컨볼빙된다. 도 3(b)에서, 예시적인 유닛은, 1) 두 개의 뉴런 레인(140), 및 2) 각각이 두 개의 시냅스 서브레인(160)을 포함하는 두 개의 필터 레인(150)을 포함한다. 각각의 뉴런 레인(140) 및 시냅스 서브레인은 각각 입력 뉴런 버퍼(NBin)(120)와 시냅스 버퍼(SB)(110) 레인으로부터 단일 요소를 공급받는다. 사이클마다, 각각의 뉴런 레인(140)은 그것의 뉴런을 두 개의 대응하는 시냅스 서브레인(160)으로 브로드캐스팅하여, 시냅스 서브레인마다 하나씩 뉴런 및 시냅스의 4개의 쌍을 야기한다. 시냅스 서브레인당 곱셈기(171)는 뉴런 및 시냅스 입력을 곱한다. 필터 레인당 가산기 트리(173)는 두 개의 곱을 필터당 출력 뉴런 버퍼(NBout)(130) 레인으로 누적시키는 부분 합으로 감소시킨다.
층 계산의 구조를 이용하여, 유닛은, 락-스텝(lock-step)으로 진행되도록 모든 뉴런 및 필터 레인을 결합한다. 이것은 모든 계산이 수행되어야 하는 것이 아니라면 대부분이라고 가정하여 단지 계산의 구조만을 고려하는 경우 적절하다. 그러나, 있는 그대로, 이러한 유닛은 제로 뉴런을 건너뛸 수 없다. 이 예에서, 양쪽 뉴런 레인에서의 제로는 불운하게도 비-제로 뉴런과 결합된다. 안전하게 회피될 수 있는 4개의 곱셈이 있어서 잠재적으로 성능 및 에너지를 개선한다.
도 3의 예에서, 완전 필터의 산출은 하나의 부가적인 사이클을 취할 것이며, 단지 첫 3개의 사이클만이 여기에서 도시된다. 양쪽 필터의 요소는 단지 명료함을 위해서만 반대 부호를 가진 동일한 값을 가진다. 도 3A에서, 입력 뉴런 및 시냅스의 부분 세트가 있다. 도 3B 내지 도 3D는 프로세싱의 3개의 사이클을 도시한다. 최상부 부분은 어떤 뉴런 및 시냅스가 프로세싱되는지를 도시하며, 최하부 부분은 유닛 프로세싱이다.
도 3B, 사이클 0에서, NBin(1 및 0)로부터 첫 두 개의 뉴런은 두 개의 필터의 각각의 시냅스로 곱하여지며, ((1,2) 및 (-1, -2)), 필터당 각각의 곱 쌍은 가산기를 통해 감소되며 NBout에 저장된다(1 및 -1). SB 포인터는 1만큼 전진하며 뉴런은 NBin으로부터 폐기된다.
도 3C 및 도 3D, 사이클 1 및 사이클 2에서, 동일한 시퀀스의 동작이 다음 입력 뉴런 및 필터 시냅스 쌍에 대해 도시된다. NBout 부분 합은, 가산기 트리 만들기로의 추가 입력이 최종 출력 뉴런을 산출하는 것을 향해 진행됨에 따라 판독되고 사용된다.
베이스라인 아키텍처
이상의 설명은 한 번에 두 개의 필터의 두 개의 입력 뉴런 및 두 개의 시냅스를 프로세싱한 DaDianNao 베이스라인 유닛의 단순화된 버전을 기술하였지만, 각각의 DaDianNao 칩, 또는 노드는 16개의 신경 기능 유닛(NFU), 또는 간단히 유닛을 포함한다. 도 5A는 하나의 이러한 유닛을 도시한다. 사이클마다 유닛은 16개의 필터로부터 16개의 입력 활성화 또는 뉴런, 256개 가중 또는 시냅스를 프로세싱하며, 16개의 부분 출력 활성화 또는 뉴런을 생성한다. 상세하게는, 유닛은 16개의 뉴런 레인, 각각이 16개 시냅스 레인(160)을 갖는 16개의 필터 레인(150)(총 256)을 가지며, 16개의 출력 뉴런에 대해 16개의 부분 합을 생성한다. 유닛의 SB(110)는 256개 시냅스 레인을 공급하는 256 레인(16×16)을 갖고, NBin(120)은 16개 뉴런 레인을 공급하는 16개 레인을 가지며, NBout(130)은 16개 레인을 가진다. 각각의 뉴런 레인은, 16개 필터 레인(160)의 각각으로부터 온, 16개 시냅스 레인(150)에 연결된다. 유닛은 256개 곱셈기 및 16개의 17-입력 가산기 트리(16개 곱 플러스 NBout으로부터의 부분 합)를 가진다. 유닛 당 뉴런 레인 및 필터의 수는 변경될 수 있는 설계 시간 파라미터이다. 모든 레인은 락-스텝으로 동작한다.
DaDianNao는 오프-칩 대역폭을 최소화하며 온-칩 계산 활용을 최대화하기 위한 의도를 갖고 설계된다. 노드의 모든 16개 유닛에 의해 요구된 총 사이클 당 시냅스 대역폭은 사이클 당 4K 시냅스이거나, 또는 1GHz 클록 및 16-비트 시냅스를 가정할 때 8TB/초이다. 총 SB(110) 용량은 프로세싱되는 층에 대한 모든 시냅스를 저장하기에 충분하도록 설계되며(유닛당 32MB 또는 2MB) 따라서 오프-칩으로부터 시냅스를 인출하는 것을 회피한다. 최대 256개 필터가, 유닛당 16개씩, 병렬로 프로세싱될 수 있다. 초기 입력 및 최종 출력을 제외한 모든 층-간 뉴런 출력은 또한 적절하게 사이징된 중앙 eDRAM, 또는 뉴런 메모리(Neuron Memory; NM)에 저장된다. NM은 모든 16개 유닛 간에 공유되며 원래 설계를 위해 4MB이다. 외부에 보여지는 유일한 트래픽은 초기 입력을 위한, 층당 1번 시냅스를 로딩하기 위한, 및 최종 출력을 기록하기 위한 것이다.
프로세싱은 외부 메모리로부터 판독함으로써 시작된다: 1) 필터 시냅스, 및 2) 초기 입력. 필터 시냅스는 그에 따라 SB로 분배되는 반면 뉴런 입력은 NBin으로 공급된다. 층 출력은 NBout을 통해 NM으로 저장되며 그 후 다음 층을 프로세싱하기 위해 NBin으로 공급된다. 외부 메모리로부터 다음 세트의 시냅스를 로딩하는 것은 필요에 따라 현재 층의 프로세싱과 중첩될 수 있다. 다수의 노드가 단일 노드에서 이용 가능한 NM 및 SB에 맞지 않은 보다 큰 DNN을 프로세싱하기 위해 사용될 수 있다. NM 및 SB는 용량이 높을수록 외부 메모리 스필링 및 과도한 오프-칩 액세스를 강요하지 않고 단일 칩에 의해 프로세싱될 수 있는 뉴런 및 필터가 더 많으므로 eDRAM을 사용하여 구현된다.
도 6(a)는 DaDianNao 아키텍처가 어떻게 동시에 256개 필터를 적용하는 입력 뉴런 어레이를 프로세싱하는지를 보여준다. 각각의 유닛은 16개 필터를 프로세싱하며, 유닛 0은 필터(0 내지 15)를 프로세싱하며 유닛 15는 필터(240 내지 255)를 프로세싱한다. 단순성을 위해, 도면은 단지 i 차원상에서 요소의 위치를 보여준다(예를 들면, 필터(7)의 위치(0, 0, 15)는 s7 15로서 도시될 것이다). 사이클마다, 16개 입력 뉴런의 인출 블록(각각 16-비트 길이)은 16개 유닛 모두로 공급된다. 인출 블록은 유닛당 16개 필터 레인의 각각에 대해 시냅스 레인당 하나의 뉴런을 포함한다. 예를 들면, 사이클 0에서, 인출 블록은 뉴런(n(0, 0, 0) 내지 n(0, 0, 15))을 포함할 것이다. 뉴런 n(0, 0, 0)은 유닛 0에서 시냅스(s0(0, 0, 0) 내지 s15(0, 0, 0)으로, 및 유닛 15에서 시냅스(s240(0, 0, 0) 내지 s255(0, 0, 0))로 곱하여질 것이다. 뉴런 n(0, 0, 1)은 유닛 0에서 시냅스(s0(0, 0, 1) 내지 s15(0, 0, 1))로 곱하여진다. 시냅스는 도면에 도시된 순서로 SB에 저장되며, 따라서 유닛은 병렬로 적절한 시냅스를 인출할 수 있다. 예를 들면, 유닛 0에서 SB의 제1 엔트리(컬럼)는 다음 256개 시냅스를 포함한다: s0(0, 0, 0) - s0(0, 0, 15), ..., s15(0, 0, 0) - s15(0, 0, 15).
현재 윈도우가 프로세싱되었다면, 다음 윈도우는 대응하는 뉴런이 시작되는 위치가 그들의 좌표를 고려해볼 때 직접 산출될 수 있으므로 개시될 수 있다. 윈도우가 모든 필터에 의해 프로세싱되어야 하므로, 다른 작업 할당이 가능하다. 선택된 할당은 그것이 또한 도면상에서 보여질 수 있으므로 뉴런 레벨에서 레인에 걸쳐 입력을 인터리빙한다. 어떤 시도도 제로를 건너뛰기 위해 이루어지지 않으므로, NM으로부터 단일의 16-뉴런 폭 인출은 모든 유닛에 걸쳐 모든 레인에 대한 작업을 제공할 수 있어서, 100% 활용을 달성한다.
개괄하기 위해 DaDN은 그들의 값에 관계없이 모든 활성화를 프로세싱한다. DaDN은 초 데이터-병렬 아키텍처이다. 사이클마다, 그것은 16개의 활성화 값, 및 256개 필터까지로부터의 가중을 프로세싱한다. 구체적으로, 각각의 필터에 대해, DaDN은 16개 가중으로 16개 활성화 값을 곱하며 부분 출력 활성화로 결과를 누적시킨다. 이러한 프로세스는 필요한 모든 활성화 값이 각각의 원하는 출력 활성화를 위해 프로세싱될 때까지 반복된다.
본 발명의 실시예에 따른 단순화된 아키텍처
뉴런 스트림에서 제로의 상당한 부분을 이용하기 위해, 모든 뉴런 레인이 함께 결합되는 종래 기술의 구조가 변경된다. 본 발명의 실시예는 뉴런 레인을 분리하여 그들이 독립적으로 진행되도록 허용한다. 도 4는 본 발명의 실시예의 동등한 단순화된 설계 및 그것이 두 개의 사이클에 걸쳐 어떻게 진행되는지를 보여준다. DaDianNao 유닛은 이제1) 가산기 트리 및 NBout(230)을 포함한 백-엔드, 및 2) 뉴런 레인(280), 시냅스 서브레인(260), 및 곱셈기를 포함한 프론트-엔드로 분리된다. 백-엔드는 변경되지 않은 채로 있지만, 프론트-엔드는 이제 뉴런 레인(280)당 하나씩 두 개의 서브유닛(205)으로 분리된다. 각각의 서브유닛(205)은 두 개의 필터(250)의 각각으로부터 하나의 뉴런 레인(280) 및 시냅스 서브레인(260)을 포함한다. 사이클마다, 각각의 서브유닛은 필터당 하나씩, 곱셈기(271)에서 두 개의 곱을 생성한다. 곱은 부분 출력 뉴런 합을 생성하기 전처럼 두 개의 가산기 트리(273)로 공급된다. 이러한 조직을 갖고, 뉴런 레인(280)은 이제 서로로부터 독립적으로 진행될 수 있으며 따라서 제로를 건너뛸 가능성을 가진다.
입력에서 나타나는 바와 같이 뉴런 레인(280)이 제로 뉴런을 능동적으로 건너뛰는 대신에, 본 발명의 실시예에 따르면, 제로 뉴런이 이전 층의 출력에서 제거되는 동적 하드웨어 접근법이 사용될 수 있다. 그 결과, 단지 비-제로 뉴런만이 NBin(220)에 나타난다. 이러한 목적을 위해, 입력 뉴런 어레이는 이하에서 추가로 설명되는 바와 같이, 제로-프리 뉴런 어레이 포맷(ZFNAf)에 저장된다. 여기에서 우리는 개개의 뉴런 레인이 다른 뉴런 레인으로부터 독립적으로 진행되는 비-제로 뉴런만을 보도록 허용하는 방법을 설명하는 이러한 포맷의 단순화된 버전을 보여준다. 일단 제로 뉴런이 제거되면, 각각의 비-제로 뉴런은 적절한 SB 엔트리와 매칭된다. ZFNAf는 이러한 목적을 위해 오프셋에 따라 각각의 비-제로 입력 뉴런을 증가시킨다. 예를 들면, 뉴런의 원래 스트림이 (1, 0, 0, 3)이면, 그들은 ((1,0), (3, 3))으로서 인코딩될 것이다. 오프셋(285)은 적절한 시냅스 컬럼을 액세스할 수 있도록 SB 서브레인의 인덱스를 조정할 수 있다. 본 발명의 실시예에 따르면, ZFNAf는 즉시 생성될 수 있다.
도 4에서, 본 발명의 실시예에 따른 단순화된 유닛은 단지 두 개의 사이클에서 도 3의 종래 기술의 유닛과 동일한 출력을 생성한다. 양쪽 필터의 요소는 단지 명료함을 위해 반대 부호를 갖는 동일한 값을 가진다.
도 4A, 사이클 0에서, 서브유닛 0은 다음 NB 뉴런 값 1 및 그것의 오프셋 0을 판독한다. 오프셋을 사용하여, 필터 0 및 필터 1에 대응하는 적절한 SB 시냅스(1 및 -1)를 인덱싱한다. 결과물 (1 및 -1)은 전용 가산기 트리를 사용하여 대응하는 필터에 대한 출력 뉴런에 가산된다. 유사하게, 서브유닛 1은 오프셋 1을 갖고 뉴런 2를 인출하며 필터에 대한 대응하는 가산기 트리를 공급하는 시냅스(4 및 -4)로 곱할 것이다.
도 4B, 사이클 1에서, 연산은 전처럼 서브유닛 0이 오프셋 2에서 뉴런 3을 인출하며 서브유닛 1이 오프셋 2에서 뉴런 4을 인출하는 것으로 반복한다. 베이스라인(48, -48)에서와 동일한 결과는 단지 두 개의 사이클에서만 산출된다.
본 발명의 실시예에 따른 아키텍처
도 5B에서, DaDianNao 유닛과 동일한 계산 대역폭을 제공할 수 있는 실시예에 따른 유닛을 도시한다. 뉴런 레인(280) 및 대응하는 시냅스 레인(260)을 포함한 프론트-엔드는 각각이 단일 뉴런 레인(280) 및 16개 시냅스 레인(260)을 포함하는, 16개의 독립적으로 동작하는 서브유닛(205)으로 분할된다. 각각의 시냅스 레인(260)은 총 16개에 대해 상이한 필터를 프로세싱한다. 사이클마다, 각각의 서브유닛(205)은 NBin으로부터 단일(뉴런, 오프셋) 쌍을 인출하고, 16개의 시냅스를 인출하기 위해 그것의 SBin으로부터 대응하는 엔트리를 인덱싱하기 위해 오프셋(285)을 사용하며, 필터(250)마다 하나씩, 16개의 곱을 생성한다. 백엔드는 변경되지 않는다. 그것은 16개 가산기 트리(273)를 사용하여 감소되는 16개 서브유닛(205)으로부터 16×16 곱을 수용한다. 가산기 트리(273)는 유닛이 인코더(235)에 의해 인코딩되며 활성화 메모리로 전달될 수 있는 64개 NBout(230) 엔트리를 사용하여 누적되는 16개 부분 출력 뉴런을 생성한다. 서브유닛 NBin은 깊이가 64 엔트리이며 각각의 엔트리는 16-비트 고정-포인트 값 더하기 오프셋 필드를 포함한다. 총 SB 용량은 원래 DaDianNao 설계에 따라 유닛당 2MB에 남아있으며, 각각의 서브유닛은 128KB의 SB를 가진다. 각각의 서브유닛 SB 엔트리는 16개 시냅스에 대응하는 16×16 비트를 포함한다. 요약하면, 각각의 서브유닛은 단일 뉴런 레인에 대응하며 필터당 하나씩, 16개 시냅스를 프로세싱한다. 총괄하여, 모든 서브유닛은 16개 뉴런 레인, 256개 시냅스 레인을 가지며 각각 상이한 필터로부터 16개 부분 출력 뉴런을 생성한다.
본 발명의 실시예에 따른 유닛은 인코딩된 종래의 뉴런 어레이 양쪽 모두를 프로세싱하기 위해 사용될 수 있다. 각각의 층에 대해 소프트웨어에 의해 설정된 구성 플래그는 유닛이 뉴런 오프셋 필드를 사용할지를 제어한다.
본 발명의 실시예에 따른 설계는 베이스라인에 대해 성능을 개선하기 위해 다음을 수행한다: 1) 인코딩된 뉴런 어레이를 즉시 생성하고; 2) 유닛 및 모든 레인을 바쁘게 유지하며; 그리고 3) 중앙 eDRAM으로의 광범위한 액세스를, 순서대로 유지한다. 이러한 기능을 가능하게 하는 본 발명의 실시예의 구조적 특징은 입력 뉴런 어레이를 인코딩하기 위해 사용된 포맷이며 상기 방식으로 작업은 유닛에 걸쳐 나뉜다.
이러한 포맷은 도 7에 도시된 제로-프리 뉴런 어레이 포맷(ZFNAf)이다. ZFNAf는 본 발명의 실시예가 제로-값 뉴런을 가진 계산을 회피할 수 있게 한다. 단지 비-제로 뉴런만이, 각각 그것의 원래 위치를 나타내는 오프셋과 함께, 저장된다. ZFNAf는 본 발명의 실시예가 어떤 뉴런을 임계 경로를 벗어나 프로세싱할지 및 그들을 이전 층의 끝에 둘지에 대한 결정을 내리도록 허용한다. 따라서, ZFNAf는 그 외 제어 흐름 결정은 어떨지를 효과적으로 구현한다.
구체적으로, ZFNAf는 브릭으로 불리우는 그룹에서 (값, 오프셋) 쌍으로서 뉴런을 인코딩한다. 각각의 브릭은 16개 뉴런의 입력 특징 차원 i 그룹을 따라 정렬된, 연속적인, DaDianNao 설계의 인출 블록에 대응하며, 즉 그들은 모두 동일한 x 및 y 좌표를 가진다. 브릭은 그들의 제1 뉴런이 오프셋 필드를 감안하도록 조정된 종래의 3D 어레이 포맷에 저장될 위치에서 시작하여 저장되며 제로 패딩된다. 브릭에서의 그룹핑은 각각의 층을 프로세싱하기 위해 필요한 입도에서 활성화 어레이를 인덱싱하기 위한 능력을 유지한다.
따라서, ZFNAf에서 단지 유효한 활성화만이, 각각이 그것의 원래 위치를 나타내는 오프셋과 함께, 저장된다. ZFNAf는 이전 층의 출력에서 생성되며, 통상적으로 각각의 활성화를 생성하기 위해 수십 개의 사이클 이상을 취할 것이다.
ZFNAf 인코딩은 압축 희소 로우(Compressed Sparse Row; CSR) 포맷애 대한 몇몇 유사성을 지닌다. 그러나, 극한 레벨의 희소성을 가진 매트릭스를 타겟팅하는 가장 희소한 매트릭스 포맷처럼, CSR은 두 개의 목적을 가진다: 단지 비-제로 요소만을 저장하며 메모리 풋프린트를 감소시키고, ZFNAf만이 첫 번째를 공유한다. CSR에서, 각각의 로우가 시작되는 곳의 위치를 찾는 것은 용이하지만; 유닛을 바쁘게 유지하기 위해, 본 발명의 실시예는 임의의 메모리 풋프린트 절감을 희생시키는 보다 미세한 입도에서 직접 인덱싱을 허용한다.
이러한 그룹핑은 본 발명의 실시예에 유용한 두 개의 속성을 가진다: 1) 그것은 브릭의 제1 뉴런의 좌표만을 사용하여 브릭 입도에서 뉴런 어레이로 인덱싱하기 위한 능력을 유지하며, 그리고 2) 그것은 오프셋 필드의 크기를 짧게 유지하며 따라서 오프셋을 저장하기 위한 오버헤드를 감소시킨다. 제1 속성은 작업이 독립적으로 서브유닛에 할당되도록 허용하며 또한 본 발명의 실시예가 윈도우가 시작되는 곳의 위치를 쉽게 찾도록 허용한다. 브릭은 본 발명의 실시예가 모든 서브유닛을 바쁘게 유지하며 서로에 독립적으로 진행되고 따라서 제로를 건너뛰거나 또는 필요에 따라 새로운 윈도우를 프로세싱하는 것을 시작할 수 있게 한다. 도 7은 ZFNAf의 예를 도시한다. 본 발명의 실시예가 16개 뉴런의 브릭을 사용할 수 있으므로, 오프셋 필드는 연구된 구성에 대해 NM 또는 1MB를 위한 4-비트 폭, 25% 용량 오버헤드이도록 요구한다. 영역의 대부분이 SB(32MB)만큼 차지된다는 것을 고려해볼 때, 전체 결과적인 영역 오버헤드는 4.49%로 작음을 입증한다.
위에서 설명된 바와 같이, DaDianNao는 모든 16개 유닛으로 브로드캐스팅하는 사이클당 16개 뉴런의 단일 인출 블록을 인출한다. 이 블록은 256개 필터에 걸쳐 모든 시냅스 레인에 대한 작업을 포함한다. 뉴런 레인에 걸친 작업의 동일한 분포는 본 발명의 실시예에 대해 모든 유닛을 바쁘게 유지하는데 충분하지 않다. 도 6B가 도시하는 바와 같이, ZFNAf에서 인출 블록은 베이스라인 작업 할당을 갖고 대응하는 원래 뉴런 어레이 그룹이 어떤 제로 뉴런도 포함하지 않는 경우에만 모든 뉴런 레인에 대한 작업을 포함할 단일 브릭을 포함한다.
뉴런 레인을 가능한 많이 바쁘게 유지하기 위해, 본 발명의 실시예는 다양한 뉴런 레인에 작업을 상이하게 할당한다. 구체적으로, 원래 설명된 바와 같이, DaDianNao는 뉴런 레인에 입력 뉴런의 뉴런 인터리빙 할당을 사용했지만, 본 발명의 실시예는 브릭 인터리빙 할당을 사용한다.
예로서, DaDianNao에서 뉴런 레인 0이 활성화 a(x,y,i)를 제공받았다면, 뉴런 레인 1은 a(x,y,i+1)을 제공받을 것이다. 본 발명의 실시예에 따르면, 뉴런 레인이 a(x,y,i)에서 시작하는 활성화 브릭을 프로세싱한다면, 뉴런 레인 1은 a(x,y,i+16)에서 시작하는 브릭을 제공받을 것이다.
도 6B가 도시하는 바와 같이, 본 발명의 실시예는 윈도우를, 뉴런 레인당 하나씩, 16개 슬라이스로 균일하게 나눈다. 각각의 슬라이스는 윈도우의 완전한 수직 청크에 대응한다(이를 가진 모든 브릭은 z 좌표를 시작한다). 사이클마다, 슬라이스당 하나의 뉴런이 인출되어 레인당 하나씩 16개 뉴런의 그룹이 되며 따라서 모든 레인을 바쁘게 유지한다. 예를 들면, e(x, y, z)를 ZFNAf에서 입력 어레이의 위치(x, y, z)에 저장된 (뉴런, 오프셋) 쌍이라고 하자. 사이클 0에서, 위치 e(0, 0, 0), e(0, 0, 16), ..., e(0, 0, 240)에서 인코딩된 뉴런은 인출되며 모든 유닛으로 브로드캐스팅할 것이고 각각 뉴런 레인(0 내지 15)에 의해 프로세싱될 것이다. 모든 16개 브릭이 제2 비-제로 뉴런을 갖는 한, 사이클 1에서, e(0, 0, 1), e(0, 0, 17), ..., e(0, 0, 241)이 프로세싱될 것이다. 예를 들면, 브릭 0이 단지 하나의 비-제로 뉴런을 갖는다면, 다음 사이클에서, 인출될 제1 뉴런은 256의 입력 뉴런 깊이(i)를 가정할 때 e(1, 0, 0)일 것이다.
각각의 뉴런 레인은 브릭마다 얼마나 많은 비-제로 요소를 포함하는지에 기초하여 독립적으로 진행되므로, 뉴런 레인당 상이한 인출 포인터가 있다. 정통한 구현은 사이클마다 16개 단일 뉴런 액세스를 수행할 것이어서, NM에 과도하게 부담을 지운다. 이하에서 설명된, 디스패처는 DaDianNao와 동일한 수의 16-뉴런-폭 및 정렬된 NM 액세스를 요구하는 단순한 확장을 보여준다.
입력 뉴런이 유닛에서 뉴런 레인에 할당되는 순서가 변하였으므로, 도 6B가 도시하는 바와 같이 시냅스가 SB에 저장되는 순서에서 변화가 또한 있다. 예를 들면, 사이클 0에서, j가 e(0, 0, 0)의 오프셋이면, 유닛 0의 서브유닛 0은 s0(0, 0, j) 내지 s15(0, 0, j)를 요구할 것이고, 유닛 0의 서브유닛 15는 s15(0, 0, 240+j) 내지 s15(0, 0, 240+j)를 요구할 것이며, 유닛 15의 서브유닛 0은 s240(0, 0, j) 내지 s255(0, 0, j)를 요구할 것이다. 이것은 서브유닛마다 SB 저장 순서를 뒤바꾸는 것과 같다는 것을 입증한다. 시냅스가 미리 알려져 있으므로, 이러한 재배열은 소프트웨어에서 정적으로 행해질 수 있다. 따라서, 서브유닛마다 병렬로 적절한 시냅스를 액세스하는 것은 간단하다.
이러한 작업 할당은 각각의 유닛이 생성하는 출력 뉴런 값을 변경하지 않으며, 이것은 DaDianNao와 동일한 채로 있다. 할당은 단지 입력 뉴런이 출력 뉴런을 생성하기 위해 프로세싱되는 순서를 변경한다.
사이클마다 16개의 독립적인, 단일-뉴런-폭 NM 액세스를 수행하는 것을 피하기 위해, CNV는 모든 뉴런 레인을 바쁘게 유지하면서 NM으로의 16-뉴런 폭 액세스를 하는 디스패처 유닛을 사용한다. 이러한 목적을 위해, NM이 자연스럽게 구성되는 서브어레이는 16개 독립 뱅크로 그룹핑되며 입력 뉴런 슬라이스는 뱅크당 하나씩 정적으로 분배된다. 디스패처는 물리적으로 NM 뱅크에 걸쳐 분배되지만, 그것의 동작을 설명하는 것은 그것이 집중화 유닛으로 여겨지는 경우에 더 용이하다.
도 8은 디스패처가 각각의 엔트리가 단일 브릭을 유지할 수 있는 16-엔트리 브릭 버퍼(BB)를 갖는다는 것을 보여준다. 각각의 BB 엔트리는 16-뉴런-폭 버스를 통해 하나의 NM 뱅크에 연결되며 단일-뉴런-폭 연결을 통해 모든 유닛에 걸쳐 뉴런 레인 중 하나를 공급한다. 예를 들면, BB[0]은 NM 뱅크 0으로부터 뉴런 브릭을 수용하며 모든 유닛에서 뉴런 레인 0으로 그것의 뉴런 중 임의의 것을 브로드캐스팅할 수 있다. 처음에, 디스패처는 총 16개 뉴런 브릭에 대해 각각의 뱅크로부터 하나의 브릭을 병렬로 판독한다. 뒤이은 사이클에서, 디스패처는 한 번에, 총 16개 뉴런에 대해, BB 엔트리당 및 따라서 사이클마다 뉴런 레인당 하나씩, 각각의 BB 엔트리로부터의 단일 뉴런인, 비-제로 뉴런을 방송한다. 브릭의 비-제로 뉴런 모두가 유닛으로 전송되기 전에, 디스패처는 대응하는 NM 뱅크로부터 다음 브릭을 인출한다. NM의 응답을 위해 지연되는 것을 피하기 위해, 뱅크당 프로세싱 순서에서 다음 브릭의 인출은 각각의 브릭의 시작 어드레스 및 프로세싱 순서가 미리 알려져 있으므로 원하는 만큼 용이하게 개시될 수 있다. 각각의 BB가 빠지는 레이트가 브릭당 접하게 되는 비-제로 뉴런의 수에 의존하여 달라질 수 있으므로, 디스패처는 NM 뱅크당 인출 포인터를 유지한다.
디스패처는 슬라이스/뱅크당 하나씩, 16개 NM 요청까지 동시에 발행할 수 있다. 최악의 경우에, 브릭이 단지 제로 값 뉴런만을 갖게 될 때, NM 뱅크는 사이클마다 새로운 브릭을 공급해야 할 것이다. 이것은 좀처럼 실제로 일어나지 않으며, NM 뱅크는 비교적 크고 이러한 최악의 경우의 대역폭을 지속시키기 위해 서브-뱅킹된다.
DaDianNao에서, 단일의 16-뉴런 폭 상호 연결은 인출 블록을 모든 16개 유닛으로 브로드캐스팅하기 위해 사용된다. 상호 연결 구조는 본 발명의 실시예에 따라 변경되지 않은 채로 있지만 폭은 뉴런 오프셋을 수용하기 위해 증가한다.
연구된 DNN으로의 초기 입력은 종래의 3D 어레이 포맷을 사용하여 프로세싱되는 이미지이다. 제1 층은 각각의 컬러 평면이 특징인 3-특징 깊이 뉴런 어레이로서 그들을 처리한다. 모든 다른 컨볼루션 층은 본 발명의 실시예가 직전 층의 출력에서 즉시 생성하는 ZFNAf를 사용한다.
DaDianNao에서처럼 본 발명의 실시예에 따르면, 출력 뉴런은 그들이 또 다른 층으로의 입력으로 공급될 수 있기 전에 NBout으로부터 NM으로 기록된다. eDRAM NM은 광범위한 액세스를 지지하므로, 이들 기록들은 16개 뉴런 폭인 채로 있다. 그러나, NM으로 기록하기 전에, 각각의 16-뉴런 그룹은 ZFNAf에서 브릭으로 인코딩된다. 이것은 인코더 서브유닛에 의해 행해진다. 하나의 인코더 서브유닛은 본 발명의 실시예에 따라 유닛마다 존재할 수 있다.
본 발명의 실시예는 DaDianNao와 상이한 순서로 입력 뉴런 어레이를 프로세싱할 수 있지만, 본 발명의 실시예에 따른 유닛은 여전히 DaDianNao와 동일한 출력 뉴런을 생성할 수 있다. 각각의 출력 뉴런은 하나의 필터를 사용하여 전체 윈도우를 프로세싱함으로써 생성된다. 유닛으로의 필터의 할당은 본 발명의 실시예에 따라 동일한 채로 있다. 따라서, 본 발명의 실시예에 따른 유닛에 의해 생성된 출력 뉴런은 출력 뉴런 어레이의 브릭에 대응할 수 있다. 모든 인코더 유닛은 그렇게 해야 하며, 브릭 내에서 비-제로 뉴런을 패킹한다.
인코더는 16-뉴런 입력 버퍼(IB), 16-인코딩된-뉴런 출력 버퍼(OB), 및 오프셋 카운터를 사용한다. 변환은 모든 OB 엔트리를 삭제하는 동안 NBout으로부터 IB로 16-뉴런 엔트리를 판독함으로써 시작한다. 사이클마다, 인코더는 IB로부터 다음 뉴런을 판독하며 그것의 오프셋 카운터를 증가시킨다. 뉴런은 그것이 비제로인 경우에만 다음 OB 위치로 복사된다. 오프셋 카운터의 현재 값이 또한 기록되어 인코딩된 뉴런 쌍을 완성한다. 일단 모든 16개 IB 뉴런이 프로세싱되었다면, OB는 ZFNMf에 브릭을 포함하며 NM으로 전송될 수 있다. DaDianNao에서처럼 동일한 상호 연결이 사용되어 오프셋 필드를 수용하기 위해 넓혀진다. 인코더는 1) 출력 뉴런이 훨씬 더 느린 레이트로 생성되며, 2) 인코딩된 브릭이 다음 층을 위해 요구되므로 인코딩을 순차적으로 할 수 있다.
DaDianNao에서, 모든 유닛은 동일한 윈도우로부터의 뉴런을 프로세싱하며 다음 윈도우를 프로세싱하는 것은 현재 윈도우가 프로세싱된 후에만 진행된다. 본 발명의 실시예는 이러한 접근법을 따라서 유닛의 백-엔드 및 제어에 대한 추가 수정을 피할 수 있다. 뉴런 레인이 그들의 브릭을 독립적으로 프로세싱함에 따라, 모든 슬라이스가 정확하게 동일한 수의 비-제로 뉴런을 갖지 않는다면, 몇몇 뉴런 레인은 다른 것보다 앞서 그들의 윈도우 슬라이스를 프로세싱하는 것을 마칠 것이다. 이들 뉴런 레인은 모든 다른 레인이 그들의 프로세싱을 완료할 때까지 유휴 상태인 채로 있을 것이다.
평가 방법론
평가는 도 9에서 제공된 테이블에 도시된 바와 같이 대중적인 최신의 컨볼루셔 신경망의 세트를 사용한다. 이들 망은, 1000개의 클래스에 걸쳐 256×256 이미지를 포함하는, ILSVRC12 데이터세트에 대한 이미지 분류를 수행한다. 실험은 각각의 클래스로부터 하나씩, 랜덤하게 선택된 세트의 1000개 이미지를 사용한다. 망은 이용 가능하며, 분배의 부분으로서 또는 Caffe Model Zoo에서, Caffe에 대해 사전-트레이닝된다.
본 발명의 실시예에 따른 베이스라인 가속기의 사이클 정확한 시뮬레이터가 사용되었다. 시뮬레이터는 층 출력 뉴런의 즉시 검증을 가능하게 하기 위해 Caffe 프레임워크와 통합한다. 본 발명의 실시예 및 DaDianNao의 영역 및 전력 특성은 합성된 구현으로 측정되었다. 두 개의 설계는 Verilog에서 구현되었으며 TSMC 65nm 라이브러리를 갖고 시놉시스 디자인 컴파일러를 통해 합성되었다. NBin, NBout, 및 오프셋 SRAM 버퍼는 사이클마다 판독 및 기록을 허용하기 위해 이중-펌핑을 사용하여 Artisan 단일-포팅 레지스터 파일 메모리 컴파일러를 사용하여 모델링되었다. eDRAM 영역 및 에너지는 Destiny를 갖고 모델링되었다.
성능
도 10은 베이스라인에 대한 본 발명의 실시예의 속도 향상을 보여준다. 제1 바(CNV)는 단지 제로 뉴런만이 고려될 때의 속도 향상을 보여주지만, 제2 바(CNV + 프루닝)는 부가적인 뉴런이 또한 망 전체 정확도에 영향을 주지 않고 건너 뛰어질 때 속도 향상을 보여준다. 이러한 섹션의 나머지는 제1 바에 초점을 맞춘다.
평균하여, 본 발명의 실시예는 37%만큼, 최대 55%(cnnS)만큼 및 적어도 24%(구글(google))만큼 성능을 개선한다. 성능 개선은 제로-값 뉴런의 부분뿐만 아니라 대응하는 층(본 발명의 평가된 실시예는 제1 층을 가속시키지 않는다)에 의해 취해진 전체 실행 시간의 부분에 및 서브유닛이 모든 다른 것에 의해 프로세싱될 현재 윈도우를 유휴 대기할 때 손실된 가능성에 또한 의존한다. 구글은 제로 뉴런의 평균 부분보다 높게 보이지만, 그것의 제1 층은 베이스라인에 대해 측정된 바와 같이 평균하여 총 런타임의 35% 대 21%를 감안한 다른 망보다 비교적 긴 런타임을 가진다. 구글은 또한 다른 층을 계산한 그것의 타이밍의 보다 높은 부분을 쓴다.
망에 대한 성능 결과는 도 11에 도시된 바와 같이 망마다 베이스라인에서 시간이 가는 곳(b) 및 본 발명의 실시예(c)의 분할을 봄으로써 보다 잘 이해될 수 있다. 실행 활동은 다음의 카테고리로 나뉜다: 1) 비-컨볼루션 층(기타)을 프로세싱하는 것, 2) 제1 컨볼루션 층(conv1)을 실행하는 것, 3) 비-제로 뉴런(비-제로)을 프로세싱하는 것, 4) 제로 뉴런(제로)을 프로세싱하는 것, 및 5) 유휴 상태(기능 정지). 사이클인, 시간 유닛을 고유하게 각각의 카테고리에 할당하는 것은 가능하지 않다. 예를 들면, 베이스라인에서 동일한 사이클 동안, 몇몇 뉴런 레인은 다른 것이 비-제로 뉴런을 프로세싱하는 동안 제로 뉴런을 프로세싱할 수 있다. 또한, 본 발명의 실시예에서, 몇몇 뉴런 레인은 모든 다른 것이 현재 윈도우를 프로세싱하는 것을 마치도록 유휴 대기할 수 있다. 따라서, 도면은 사이클마다 별도로 각각의 뉴런 레인(본 발명의 실시예에서 서브유닛과 같은)을 감안하는 실행 활동의 분할을 보고한다. 감안된 이벤트의 총 수는, 유닛×(뉴런_레인/유닛)×사이클이며, 실행 시간에 정비례하며 각각의 이벤트가 단일 카테고리에 할당되도록 허용하는 메트릭을 야기한다.
결과는 제1 층을 포함하는 컨볼루션 층이 베이스라인 상에서 모든 망에 걸쳐 실행 활동을 주도한다는 것을 확증한다. 본 발명의 실시예의 서브유닛이 유휴 상태인 활동의 비교적 작은 부분은, 실시예가 제로-값 뉴런을 제거하는 것으로부터 존재하는 가능성의 대부분을 캡처하도록 관리한다는 것을 보여준다.
영역
도 12는 베이스 아키텍처 및 본 발명의 실시예에 따른 아키텍처의 영역 분할을 보여준다. 전체적으로, 본 발명의 실시예는 베이스라인에 대해 단지 4.49%만큼 총 영역을 증가시키며, 측정된 성능 개선을 고려해볼 때 작은 오버헤드이다. 영역은 다음과 같이 두 개의 아키텍처에 걸쳐 비교한다: 1) 필터 저장(SB)은 양쪽 아키텍처에 대한 총 영역을 주도한다. 본 발명에 따른 실시예는 서브유닛에 걸쳐 SBin을 분할하지만, 그렇게 하기 위한 오브헤드는 각각의 청크가 큰(서브유닛당 128KB) 채로 있으므로 무시해도 될 정도이다. 2) 본 발명에 따른 실시예는 그것이 a) 오프셋에 대해 25% 더 큰 저장 장치를 요구하며 b) 16개 뱅크를 사용하므로 34%만큼 뉴런 메모리(NM) 영역을 증가시킨다. 3) 유닛 로직에서 본 발명에 따른 실시예의 부가적인 비용은 무시해도 될 정도이다. 4) 본 발명에 따른 실시예는 15.8%만큼 SRAM 영역을 증가시킨다. 이것은 오프셋의 저장에 전용된 부가적인 버퍼 공간에 기인한다.
전력
도 13은 본 발명에 따른 실시예 및 베이스라인에서 평균 전력 소비의 분할을 도시한다. 3개의 바가 정적, 동적 및 전체 전력에 대응하는 각각의 아키텍처에 대해 도시된다. 각각의 카테고리는 NM, SB, 로직, 및 SRAM에 걸쳐 추가로 나뉜다. 로직은 데이터경로, 제어 로직, 인코더 및 메모리 디스패처를 포함하지만, SRAM은 NBin 및 NBout을 포함한다. NM 전력은 베이스라인보다 본 발명에 따른 실시예에서 53% 더 높다. 이것은, NM이 더 넓으며 뱅킹됨에 따라, 예상된다. 그러나, NM은 단지 전체 전력 비용이 작도록 베이스라인에서 총 칩 전력의 22%만을 감안한다. NBin을 분리하며 유닛에서 로직을 부가하는 오버헤드는 단지 2%만큼 그것의 전력을 증가시킨다. SB를 재조직하는 것은 그것의 전력 비용에 적은 영향을 주며 서브유닛이 정지될 때 시냅스가 판독되지 않으므로, SB의 동적 전력은 18%만큼 감소한다. 전체적으로, 32MB의 SB는 총 전력 소비의 대부분을 감안하며, 동적 SB 에너지에서의 절감은 NM, 로직 및 SRAM에서의 오버헤드보다 크다. 그 결과, 본 발명의 실시예의 전력 비용은 평균적으로 베이스라인보다 7% 더 낮다.
EDP 및 ED2P
이 섹션은 두 개의 아키텍처에 대한 에너지-지연 곱(Energy-Delay Product: EDP) 및 에너지-지연 제곱 곱(Energy-Delay Squared Product: ED2P)을 보고한다. 에너지 및 성능을 고려하여 두 개의 계산 시스템을 적절히 비교하는 방법에 대한 만장일치의 합의는 없지만, 두 개의 일반적으로 사용된 메트릭은 EDP 및 ED2P(ET2)이다. 도 14는 베이스라인에 대한 본 발명의 실시예의 EDP 및 ED2P 개선을 보고한다. 평균하여, 본 발명의 EDP에 따른 실시예는 1.47배 및 ED2P는 2.01배 개선한다.
보다 유효하지 않은 뉴런을 제거하는 것
프루닝(pruning)은 비유효 시냅스 또는 뉴런을 제거하는 신경망에서의 계산 감소 기술이다. 본 발명의 실시예의 아키텍처는 그들의 계산이 건너 뛰어지도록 뉴런 값을 제로로 설정함으로써 동적 뉴런 프루닝의 형태를 허용할 수 있다. 이러한 능력을 입증하기 위해, 이 섹션은 제로에 가까운 뉴런이 크기가 사전-특정된, 층단위 임계치 미만일 때 제로로 설정되는 단순한 프루닝 접근법을 고려한다. 베이스라인 설계는 본 발명의 실시예가 임계치 비교를 위해 재사용하는 최대 풀링을 위한 비교기를 통합한다. 임계값은 사전에 결정되며 입력 치수, 패딩 및 스트라이드와 같은, 층 메타-데이터와 함께 전달된다.
거의 최적의 층-단위 임계치 구성을 찾기 위해, 층 단위 정밀도 요건을 찾기 위한 이전 작업에서 사용된 접근법과 유사한, 경사 하강법을 사용하여 탐구가 행해진다. 단순성을 위해, 두 개의 임계치의 거듭제곱이 탐구되지만, 하드웨어는 임의의 고정-포인트 임계치를 지원할 수 있다. 망 정확도는 각각의 클래스에 걸쳐 균일하게 샘플링된, ImageNet 검증 세트로부터의 5000개의 이미지에 걸쳐 측정되었다.
도 15는 뉴런이 층-단위 임계치를 사용하여 동적으로 프루닝될 때 정확도(y-축)와 성능(x-축) 사이에서의 트레이드-오프를 보여준다. 각각의 망에 대한 탐구된 구성의 파레토 프론티어가 도시된다. 각각의 망에 대한 가장 왼쪽 포인트는 단지 제로-값 뉴런만이 제거된 도 10에서 본 발명에 따른 실시예에 대응한다. 일반적으로, 모든 망은 뉴런이 정확도에 영향을 주지 않고 프루닝될 수 있는 초기 영역을 나타낸다. 이러한 영역은 도 15에서 실선으로 도시된다. 정확도의 손실이 없는 최대 속도-향상은 또한 도 10에서 (CNV + 프루닝)으로 보고된다. 도 16에서의 테이블은 정확도에서의 손실이 없는 최고 속도-향상을 산출하는 임계치를 도시한다. 평균하여, 프루닝은 속도 향상을, 11%의 증가인, 1.52배까지 증가시킬 수 있다. 구글을 위해, 임계치는 대신에 '인셉션 모듈'마다 특정된다.
모든 망에 대해, 성능은 추가로 그러나 성능 개선에 따라 지수적으로 감쇠하는 정확도를 가진 정확도 손실에서 개선할 수 있다. 예를 들면, 1%까지의 상대적 정확도에서의 저하를 용인하는 것은 베이스라인에 대해 1.60배까지 평균 성능 개선을 추가로 증가시키는 반면, 10%까지의 상대적 정확도에서의 저하를 허용하는 것은 베이스라인에 대해 1.87배 속도 향상을 산출한다.
위에서 설명된 바와 같이, ZFNAf 포맷은 브릭 컨테이너의 초반에서 그들을 패킹함으로써 유효한 뉴런 값을 인코딩한다. 이들의 오프셋은 16개 값의 브릭에 대한 값마다 4비트를 사용하여 별도로 인코딩되었다. 이것은 16-비트 값에 대한 25% 오버헤드 및 16개 요소의 브릭(s)을 나타낸다. 실시예에 따르면, 메모리 오버헤드를 감소시키는 대안적인 활성화 어레이 포맷이 제공될 수 있다. 명료함을 위해, 이어지는 논의는 단지 제로-값 활성화가 비유효한 것으로 고려되는 예를 사용한다. 그러나, 기준은 실제로 더 완화될 수 있다.
RAW 또는 인코딩된 포맷(RoE)
이러한 인코딩은 비유효 값의 모든 가능한 조합을 인코딩할 수 없다는 비용으로 브릭 컨테이너마다 하나의 추가 비트를 사용한다. 구체적으로, 브릭의 제1 비트는 브릭이 인코딩되는지 여부를 특정한다. 브릭이 인코딩될 때, 남아있는 비트는 뉴런 값 및 이들의 오프셋을 저장하기 위해 사용된다. 유효한 활성화의 수가 브릭 컨테이너에 맞도록 하는 한, 브릭은 인코딩될 수 있다. 그렇지 않다면, 모든 활성화 값은 있는 그대로 저장되며, 비유효 활성화를 건너뛰기 위한 능력은 특정 브릭에 대해 이용 가능하지 않을 것이다. 예를 들면, 크기 4 및 16비트 값의 브릭이 제공된다. 통틀어, 각각의 이러한 브릭은 4×16 = 64비트를 요구한다. 값 (1,2,0,0)을 포함한 브릭은 다음과 같이 65비트를 사용하여 인코딩될 수 있다: (1,(0,1),(1,2)). 첫 1은 브릭이 인코딩됨을 의미한다. 이어지는 (오프셋,값) = (0,1)은 오프셋에 대해 2비트를 및 값에 대해 16비트를 사용한다. 통틀어, 앞서 언급된 브릭은 1+2×(16+4) = 41비트를 요구하며 이용 가능한 65비트 내에 맞출 수 있다. 값 (2,1,3,4)를 포함한 브릭은 65비트 내에 맞을 수 없으며 따라서 원 포맷: 65비트를 사용한 (0,2,1,3,4)에 저장될 것이고 여기에서 첫 1은 브릭의 나머지가 인코딩되지 않음을 나타내는 단일 비트이며 모든 값은 16비트 길이이다.
벡터 비유효 활성화 식별자(Vector Ineffectual Activation Identifier: VIAI) 포맷
대안적인 인코딩은 그 자리에 활성화 값을 남기며 어떤 것이 유효하지 않으며 따라서 건너 뛰어질 수 있는지를 인코딩하기 위해 추가 16-비트 비트 벡터 I를 사용한다. 예를 들면, 4개 요소의 브릭을 가정할 때, (1,2,0,4)를 포함한 브릭은 있는 그대로 더하기 (1101)을 포함한 4 비트 I 벡터로 인코딩될 수 있다. 각각이 16비트인 16개 활성화의 브릭에 대해, 이러한 포맷은 16/256, 또는 6.25%의 오버헤드를 도입한다. 대안적으로, 비-제로 요소는 함께 패킹될 수 있으며 벡터는 그들의 원래 오프셋을 도출하기 위해 사용될 수 있다. 예를 들면, (1,2,0,4)를 포함한 브릭은 (1,2,4,0) 더하기 (1101)을 포함한 4-비트 벡터로서 저장될 것이다. 이러한 방법의 이점은 제로 활성화를 저장하거나 또는 전달하는 것을 피하는 것이 가능할 수 있다는 것이다.
단지 유효 활성화만을 저장하는 것
또 다른 포맷은 단지 유효한 값만을 저장하는 VIAI 상에 구축한다. 예를 들면, VIAI에서 (1,0,0,4)의 4-요소 활성화 브릭은 (1001,1,0,0,4)로서 저장될 것이다. 압축 VIAI에서, 그것은 대신에 (1001,1,4)로서 저장될 것이다. 여기에서 두 개의 비유효 제로 활성화는 메모리에 저장되지 않았다. 이제 브릭이 더 이상 고정된 크기를 갖지 않으므로, 간접 수준은 임의의 브릭의 인출을 지원하기 위해 필요하다. 원래 활성화 어레이 차원이 (X,Y,I)이면, 이러한 간접 어레이(IR)는 (X,Y,[I/16]) 포인터를 가질 것이다. 이들은 이전 층의 출력에서 생성될 수 있다.
메모리 저장에서의 추가 감소는 감소된 정밀도로 활성화를 저장함으로써 가능할 수 있다. 예를 들면, https://arxiv.org/abs/1511.05236에서 코넬 대학교 도서관을 통해 온라인으로 공개적으로 액세스 가능한, 문헌["Reduced-Precision Strategies for Bounded Memory in Deep Neural Nets", 2016]에서 설명된 Patrick Judd, Jorge Albericio, Tayler Hetherington, Tor Aamodt, Natalie Enright Jerger, Raquel Urtasun, 및 Andreas Moshovos의 방법을 사용하여, 프로파일링에 기초하여 미리 층마다 정밀도를 결정하는 것이 가능하다. 보다 미세한 입도로 정밀도를 조정하는 것이 가능할 수 있다. 그러나, 포인터 및 정밀도 지정자 양쪽 모두는 가능한 풋프린트 감소를 감소시키는 오버헤드이다.
원래 CNV 구현에서, 비유효 활성화는 이전 층의 출력에서 "제거"되었다. ZFNAf는 메모리 저장오버헤드를 초래하며 활성화 오프셋 값의 기록 및 판독은 부가적인 에너지를 요구한다. 이 섹션은 NM으로부터 그들을 인출하는 동안 및 이들 활성화 값을 타일로 전달하기 전에 비유효 활성화를 "제거하는" 대안적인 디스패처 설계를 설명한다.
구체적으로, 층에 대한 프로세싱은 이전에 설명된 바와 같이, 디스패처를 가짐으로써 시작되고, 뉴런 레인당 하나의 브릭으로, 16개의 활성화 브릭을 인출한다. 디스패처는 그 후 활성화 값 당 하나씩, 브릭 당 16개의 비교기를 사용하여 즉각 I(VIAI 포맷에서 이전에 설명된 바와 같이) 벡터를 산출한다.
디스패처는 그 후 사이클 당 하나의 레이트로 유효 활성화를 전달하도록 진행한다. 활성화 값을 전달할 때, 디스패처는 또한 그것의 포함한 브릭 내에서 활성화의 오프셋을 전송할 것이다. 예를 들면, 입력 활성화 브릭이 (1,0,0,4)를 포함한다면, 두 개의 사이클에 걸친 디스패처는 타일로 (11b,4)에 앞서, 먼저 (00b,1)((오프셋, 값))을 전송할 것이다. 일단 모든 유효 활성화 값이 타일로 전달되었다면, 디스패처는 그 후 특정 뉴런 레인에 대한 또 다른 브릭을 프로세싱하도록 진행될 수 있다. 많은 옵션이 무엇이 비유효 활성화를 검출하기 위한 기준이어야 하는지에 대해 존재한다. 예를 들면, 제로를 가진 단순한 비교, 임의의 임계치를 가진 비교, 또는 둘의 거듭제곱인 임계치와의 비교가 사용될 수 있다.
도 17은 디스패처에서 건너뛴 활성화의 예시적인, 상세한 브릭 버퍼 구현을 도시한다. 명료함을 위해, 도면은 16개 브릭 버퍼(335) 중 단지 하나만을 도시하며 브릭이 단지 8개의 활성화만을 포함한다고 가정한다. 활성화 레인(도시되지 않음)당 제2 브릭 버퍼(335)는 다음 브릭의 인출과 현재 브릭으로부터의 유효 활성화의 검출 및 전달을 중첩시킬 수 있다. 보다 많은 이러한 브릭 버퍼(335)는 NM(330)의 지연 시간을 완전히 숨기기 위해 요구될 수 있다.
도 17에서, 브릭 버퍼(335)로 위치되는 활성화 브릭(340)이 도시된다. 각각의 브릭 버퍼(335) 엔트리 다음에, "비유효 활성화"("In?"으로 표기된 6각형으로 도시됨) 검출기(345)가 있다. 이들 검출기(345)는 유효하지 않은 이들 활성화를 식별한다. 도시된 바와 같이, 출력은 활성화가 유효하지 않으면 제로로 설정된다. 이들 검출기의 공동 출력은 "1인 리딩 비트" 검출기(355)를 구동하는 E 벡터(350)를 형성한다. 이러한 검출기(355)의 출력은 브릭 버퍼(335)로부터 활성화 값을 독출하는 디코더(320)를 구동하는 제1 유효 활성화의 오프셋이다. 활성화 값 및 이의 오프셋은 그 후 타일로 브로드캐스팅된다. 이러한 활성화를 위한 E 벡터(350) 위치는 리셋되며 프로세스는 다음 유효 활성화로 이어진다. 이 예를 위해, 4개의 사이클이 4개의 유효 활성화 값을 전달하기 위해 요구될 것이다.
비유효 시냅스(가중)를 건너뛰는 것
이 섹션은 또한 비유효 가중을 건너뛸 수 있는 본 발명의 추가 실시예를 설명한다. 가중 또는 시냅스의 큰 부분이 유효하지 않은 것이 알려져 있다. 예를 들면, 정밀도가 https://arxiv.org/abs/1511.05236에서 코넬 대학교 도서관을 통해 온라인으로 공개적으로 액세스 가능한, 문헌[“Reduced-Precision Strategies for Bounded Memory in Deep Neural Nets", 2016]에서 설명된 Patrick Judd, Jorge Albericio, Tayler Hetherington, Tor Aamodt, Natalie Enright Jerger, Raquel Urtasun, 및 Andreas Moshovos의 방법론에 따라 층마다 트리밍된다면, 가중의 많은 부분은 제로가 된다. 가장 가능성 있는, 부가적인 가중은 비유효, 예를 들면, 그 값이 제로에 가까운 가중이다. 다른 작업은 망이 또한 비유효 가중의 부분을 증가시키도록 트레이닝될 수 있음을 도시하였다. 활성화와 상이한, 가중 값은 미리 이용 가능하며 따라서 어떤 것이 유효하지 않은지 식별하는 것은 정적으로 행해질 수 있다. 이러한 정보는 미리 인코딩되며 그 후 대응하는 활성화 값이 비-제로(또는 일반적으로, 유효하지 않은 것으로 활성화를 분류하기 위해 사용되는 기준에 의존하여 유효한)일 때도 런-타임시 대응하는 곱셈을 건너뛸 수 있는 하드웨어로 운반될 수 있다.
이전에 설명된 바와 같이, 사이클마다, 본 발명의 실시예는 유닛당 16개 필터에 걸쳐 16개 활성화를 병렬로 프로세싱한다. 유닛당 활성화 및 필터의 수는 그에 따라 조정될 수 있는 설계 파라미터이다. 비유효 가중을 건너뛰는 본 발명의 이러한 추가 실시예에 대해 양쪽 모두 16이라고 가정될 것이다.
일반성의 손실 없이, 입력 뉴런 어레이는 256의 깊이 및 1의 윈도우 스트라이드를 가질 수 있다. 명료성을 위해, n(x,y,i)...n(x,y,i + 15)를 포함하는 활성화 브릭을 나타내기 위해 nB(x,y,i)를 사용하며 여기에서 (i MOD 16) = 0이다. 유사하게, sB f(x,y,i)는 필터(f)의 가중(sf(x,y,i) ...sf(x,y,i + 15))을 포함한 가중 브릭을 나타내며 여기에서 다시 (i MOD 16) = 0이다.
각각의 입력 활성화 브릭(nB(x,y,i))에 대해, 16-비트 벡터 IB(x,y,i)가 이용 가능하다는 것이 추가로 가정되며, 비트(j)는 활성화(n(x,y,i + j))가 유효하지 않은지를 나타낸다. 입력 활성화 브릭당 하나의 I(x,y,i) 벡터가 있으며, 그러므로 i는 16으로 나눌 수 있다. ZFNAf와 마찬가지로, I 벡터는 이전 층의 출력에서, 또는 런타임 시, 활성화 브릭이 이전 섹션의 논의에 따라 NM으로부터 판독됨에 따라 산출될 수 있다. 각각의 가중 브릭에 대해, 유사한 IS 벡터가 이용 가능하다. 구체적으로, f가 필터인 각각의 가중 브릭(sBf(x,y,i))에 대해, 어떤 가중이 유효하지 않은지를 나타내는 16-비트 비트 벡터 ISB f(x,y,i)가 있다. 예를 들면, ISB 0(x,y,i)의 비트(j)는 가중 s0(x,y,i + j)(필터 0)이 유효하지 않은지를 나타낸다. IS 벡터는 사전 산출되며 SB의 확장 시 저장된다.
일반성의 손실 없이, 몇몇 사이클(C)에서, 본 발명의 실시예에서, 그것의 16 뉴런 레인에서 다음의 세트의 16개 활성화 브릭을 프로세싱하기 시작한다면, 뉴런 레인 0은 뉴런 레인 15가 nB(x,y,240)을 프로세싱하는 동안 활성화 nB(x,y,0)을 프로세싱할 것이다. 모든 활성화 값이 유효하면, 16개 사이클은 이들 16개 활성화 브릭을 프로세싱하기 위해 요구될 것이다. 그러나, 본 발명의 이전 설명된 실시예에서, 활성화 브릭은 단지 유효 활성화만이 프로세싱되도록 인코딩된다.
상기 경우에, 모든 뉴런 레인은 다음 세트의 브릭으로 진행되기 전에 가장 유효한 활성화를 가진 하나를 대기할 것이다. 동등하게, 이것은 브릭당 유효 활성화의 위치가 앞서 언급된 I 벡터를 사용하여 인코딩된다면 가능하다. 디스패처는 어떤 것이 레인에 대해 프로세싱할 다음 유효 활성화인지를 식별하기 위해 뉴런 레인당 I 벡터에 대한 리딩 제로 검출을 수행한다. 그 후 모든 유효 활성화가 레인에 대해 프로세싱될 때까지 I에서 다음 제로 비트로 진행된다. 모든 뉴런 레인이 그들의 유효 활성화를 프로세싱하였을 때, 모두는 다음 세트의 브릭으로 진행한다.
이제 IS 벡터가 또한 이용 가능하므로, 디스패처 모두가 할 필요가 있는 것은 활성화가 전달되어야 하는지를 결정하기 위해 그들을 고려하는 것이다. 구체적으로, 각각의 활성화가, 각각이 상이한 필터로부터 온, 16개 가중과 조합되므로, 유효 활성화는 모든 대응하는 가중이 유효하지 않은 경우 건너 뛰어질 수 있다. 즉, 각각의 뉴런 레인은 어떤 활성화를 프로세싱해야 하는지를 결정하기 위해 대응하는 가중 브릭에 대해 16개 IS 벡터와 그것의 단일 I 벡터를 조합할 수 있다. 구체적으로, nB(x,y,i)를 프로세싱하는 뉴런 레인은 다음과 같이 Can Skip 16-비트 벡터의 각각의 비트 j를 산출한다:
여기에서 연산은 부울(boolan)이다: 곱은 AND이고 합은 OR이다. 즉, 활성화 값은 I(활성화 벡터)에 의해 특정된 바와 같이 활성화가 유효하지 않으면 또는 모든 대응하는 가중이 유효하지 않으면 건너 뛰어질 수 있다. 동시에 프로세싱되는 필터의 수가 많을수록, 그 외 유효 활성화가 건너 뛰어질 확률은 더 낮다. 각각 16개 필터의 16개 타일을 사용하는 원래 DaDianNao 구성에 대해, 필터당 하나씩, 256개 가중은 활성화가 건너 뛰어지도록 유효하지 않아야 할 것이다. 그러나, 프루닝은 비유효 가중을 식별할 수 있는 것으로 알려져 있으며 재트레이닝은 비유효 가중의 수를 증가시키는 것으로 알려져 있다. 양쪽 모두는 본 발명의 이전 설명된 실시예에 따라 가능한 것을 넘어 부가적인 뉴런을 건너뛰기 위한 기회를 증가시킬 것이다. 게다가, 다른 구성은 동시에 보다 적은 필터를 프로세싱할 수 있으며, 따라서 모두 비유효 가중과 활성화를 조합하는 보다 큰 확률을 가진다.
상기 식에서, IS 곱 항 모두는 상수라는 것이 관찰될 수 있다. 본 발명의 이전 설명된 실시예에서 설명된 바와 같이, 동일한 세트의 16개 가중 브릭이 상이한 윈도우에 걸쳐 동시에 프로세싱될 것이다. 따라서, IS 곱(합의 첫 항)은 사전-산출될 수 있으며 단지 최종 결과만이 저장되고 하드웨어로 전달되도록 요구한다. 16의 브릭 크기에 대해 및 동시에 16개 필터를 프로세싱하는 타일에 대해, 오버헤드는 브릭당 16비트로부터 16개 브릭당 16비트로 떨어진다. 16-비트 가중을 가정할 때, 오버헤드는 1/16으로부터 1/256으로 떨어진다.
도 18A 내지 도 18C는 비유효 가중을 건너뛰는 본 발명의 이러한 추가 실시예의 연산의 예를 도시한다. 명료함을 위해, 예는 브릭 크기가 4라고 가정하며 병렬로 두 개의 필터 및 필터당 두 개의 가중(시냅스)을 프로세싱하는 타일을 도시한다. 부분(b)이 도시하는 바와 같이, 그것은 활성화(뉴런) 브릭 nB(x,y,i + 12)가 3개의 유효 활성화를 포함함에 따라 모든 입력 브릭을 프로세싱하기 위해 3개의 사이클을 취한다는 것을 보여준다. 그러나, 도 18C가 도시하는 바와 같이, 이들 유효 활성화 중 하나, 구체적으로 n(x,y,13) = 6은 양쪽 모두 0이며 그러므로 비유효 가중(s0(x,y,13) 및 s1(x,y,13))과 조합되었음을 도시한다. 본 발명의 이러한 추가 실시예는 이러한 계산을 건너뛰며 이제 입력 활성화 브릭은 모두 단지 2개의 사이클에서 프로세싱될 수 있다. 부가적인 유효 활성화는 건너 뛰어질 뿐만 아니라 그들은 비유효 가중과 조합될 것이다.
실시예에 따르면, 가속기는 또한 제로에 가까운 값을 선택적으로 건너뜀으로써 역전파 트레이닝 절차의 속도를 향상시킬 수 있다. 신경망을 트레이닝하기 위해, 가속기는 분류 에러가 역전파되며 망의 가중이 그에 따라 업데이트되는 프로세스를 구현할 수 있다. 성능이 값 크기에 의존하는 실시예에서, 몇몇 세트 기준에 따라 에러를 문턱 처리함으로써 작은 업데이트를 회피하는 것이 유리할 수 있다. 이러한 방식으로, 엔진은 이들 값을 함께 프로세싱하는 것을 건너뛸 수 있다. 신경망의 세부사항 및 임계 처리 기준에 의존하여, 그것은 몇몇 가중 업데이트가 생략되므로 보다 많은 트레이닝 단계가 특정한 분류 정확도를 달성하기 위해 요구되는 경우일 수 있지만, 이들 단계의 각각은 적은 시간에 수행되어 전체적으로 더 빠른 트레이닝 절차를 야기한다. 실시예에 따르면, 시스템은 역전파된 에러 값이 동적으로 또는 정적으로 설정된 임계값에 기초하여 0으로 설정되는 신경망 트레이닝을 위해 제공될 수 있으며, 또한, 시스템은 0의 에러 값에 대한 가중 업데이트 계산을 생략할 수 있다.
위에서 설명 및 연관된 도면의 부분은 하드웨어의 사용을 설명하거나 또는 제안할 수 있지만, 본 발명은 GPU(그래픽 프로세싱 유닛)와 같은, 프로세서 상에서 소프트웨어로 에뮬레이션될 수 있으며 유사한 성능 강화를 생성할 수 있다는 것이 또한 주의된다. 게다가, 사용된 바와 같이 용어 "활성화" 및 "뉴런"은 이 기술 및 문헌에서 상호 교환 가능하며, 이는 여기에서, 제한 없이, 이용될 것이라는 것이 알려져 있다. 상기 논의된 뉴런 메모리(NM)는 요구된 구현에 따라 전용되고, 공유되고, 분배되거나, 또는 그것의 조합일 수 있다.
본 발명은 그것의 사상 또는 본질적 특성으로부터 벗어나지 않고 다른 특정 형태로 구체화될 수 있다. 본 발명의 특정한 적응화 및 수정은 이 기술분야의 숙련자에게 명백할 것이다. 그러므로, 현재 논의된 실시예는 제한적이 아닌, 예시적인 것으로 고려되며, 본 발명의 범위는 앞서 기술한 설명보다는 첨부된 청구항에 의해 표시되며 청구항의 동등성의 의미 및 범위 내에 있는 모든 변화는 그러므로 그 안에서 포괄되도록 의도된다.
Claims (24)
- 신경망에서 층의 계산을 위한 시스템으로서,
신경망에서 계산을 수행하며, 출력 뉴런을 생성하기 위한 하나 이상의 타일로서, 각각의 타일은 입력 뉴런, 오프셋 및 시냅스를 수신하고, 각각의 입력 뉴런은 연관된 오프셋을 갖는, 상기 하나 이상의 타일;
뉴런을 저장하기 위한 것이며 디스패처(dispatcher) 및 인코더를 통해 상기 하나 이상의 타일과 통신하는 활성화 메모리를 포함하되,
상기 디스패처는 상기 활성화 메모리로부터 이들의 연관된 오프셋을 갖는 뉴런을 판독하며 이들의 연관된 오프셋을 갖는 상기 뉴런을 상기 하나 이상의 타일로 전달하고, 상기 디스패처는 메모리로부터 시냅스를 판독하며 상기 시냅스를 상기 하나 이상의 타일로 전달하고,
상기 인코더는 상기 하나 이상의 타일로부터 상기 출력 뉴런을 수신하고, 인코딩하며, 상기 출력 뉴런을 상기 활성화 메모리로 전달하며;
상기 오프셋은 단지 비-제로 뉴런에 대해서만 계산을 수행하기 위해 상기 타일에 의해 프로세싱되는, 신경망에서 층의 계산을 위한 시스템. - 제1항에 있어서, 인코더는 연관된 오프셋과 쌍을 이룬 포맷으로 출력 뉴런을 인코딩하는, 신경망에서 층의 계산을 위한 시스템.
- 제1항에 있어서, 상기 인코더는 제로-프리 뉴런 어레이 포맷으로 출력 뉴런을 인코딩하는, 신경망에서 층의 계산을 위한 시스템.
- 제1항에 있어서, 상기 인코더는 RAW 또는 인코딩된 포맷(RoE)으로 출력 뉴런을 인코딩하는, 신경망에서 층의 계산을 위한 시스템.
- 제1항에 있어서, 상기 인코더는 벡터 비유효 활성화 식별자(Vector Ineffectual Activation Identifier: VIAI) 포맷으로 출력 뉴런을 인코딩하는, 신경망에서 층의 계산을 위한 시스템.
- 제1항에 있어서, 상기 인코더는 압축 VIAI 포맷으로 출력 뉴런을 인코딩하는, 신경망에서 층의 계산을 위한 시스템.
- 제1항에 있어서, 상기 타일은 시냅스를 유효하지 않은 것으로 식별하는 하나 이상의 비트를 추가로 수신하며 상기 타일은 단지 유효 가중을 가진 비-제로 뉴런에 대해서만 계산을 수행하도록 상기 하나 이상의 비트를 프로세싱하는, 신경망에서 층의 계산을 위한 시스템.
- 제1항에 있어서, 임계값 미만의 적어도 하나의 비-제로 뉴런은, 계산이 상기 임계값 미만의 적어도 하나의 비-제로 뉴런에 대해 수행되지 않도록, 제로로 설정되는, 신경망에서 층의 계산을 위한 시스템.
- 신경망에서 층을 계산하는데 사용하기 위한 가속기를 포함한 집적 회로에 있어서,
신경망에서 계산을 수행하며, 출력 뉴런을 생성하기 위한 하나 이상의 타일로서, 각각의 타일은 입력 뉴런, 오프셋 및 시냅스를 수신하며, 각각의 입력 뉴런은 연관된 오프셋을 갖는, 상기 하나 이상의 타일;
뉴런을 저장하기 위한 것이며 디스패처 및 인코더를 통해 상기 하나 이상의 타일과 통신하는 활성화 메모리를 포함하며,
상기 디스패처는 상기 활성화 메모리로부터 이들의 연관된 오프셋을 갖는 뉴런을 판독하며 이들의 연관된 오프셋을 갖는 상기 뉴런을 상기 하나 이상의 타일로 전달하고, 상기 디스패처는 메모리로부터 시냅스를 판독하며 상기 시냅스를 상기 하나 이상의 타일로 전달하고,
상기 인코더는 상기 하나 이상의 타일로부터 상기 출력 뉴런을 수신하고, 인코딩하며 상기 출력 뉴런을 상기 활성화 메모리로 전달하며;
상기 오프셋은 단지 비-제로 뉴런에 대해서만 계산을 수행하도록 상기 타일에 의해 프로세싱되는, 집적 회로. - 제9항에 있어서, 인코더는 연관된 오프셋과 쌍을 이룬 포맷으로 출력 뉴런을 인코딩하는, 집적 회로.
- 제9항에 있어서, 상기 인코더는 제로-프리 뉴런 어레이 포맷으로 출력 뉴런을 인코딩하는, 집적 회로.
- 제9항에 있어서, 상기 인코더는 RAW 또는 인코딩된 포맷(RoE)으로 출력 뉴런을 인코딩하는, 집적 회로.
- 제9항에 있어서, 상기 인코더는 벡터 비유효 활성화 식별자(VIAI) 포맷으로 출력 뉴런을 인코딩하는, 집적 회로.
- 제9항에 있어서, 상기 인코더는 압축 VIAI 포맷으로 출력 뉴런을 인코딩하는, 집적 회로.
- 제9항에 있어서, 상기 타일은 시냅스를 유효하지 않은 것으로 식별하는 하나 이상의 비트를 추가로 수신하며 상기 타일은 단지 유효 가중을 가진 비-제로 뉴런에 대해서만 계산을 수행하도록 상기 하나 이상의 비트를 프로세싱하는, 집적 회로.
- 제9항에 있어서, 임계값 미만의 적어도 하나의 비-제로 뉴런은, 계산이 상기 임계값 미만의 적어도 하나의 비-제로 뉴런에 대해 수행되지 않도록, 제로로 설정되는, 집적 회로.
- 신경망에서 계산을 수행할 때 비유효 연산을 감소시키기 위한 방법으로서,
인코더가, 뉴런 스트림에서 비-제로 뉴런을 식별하며 각각의 뉴런에 대한 오프셋 값을 생성하는 단계;
디스패처가, 상기 뉴런이 가진 각각의 뉴런에 대한 상기 오프셋 값을 상기 뉴런을 프로세싱하는 타일로 전달하는 단계;
상기 타일이, 계산을 수행할 상기 비-제로 뉴런을 식별하기 위해 상기 오프셋 값을 사용하는 단계;
상기 타일이 단지 상기 비-제로 뉴런에 대해서만 계산을 수행하고 출력 뉴런을 생성하는 단계; 및
상기 인코더가 상기 출력 뉴런을 활성화 메모리로 전달하는 단계를 포함하는, 비유효 연산을 감소시키기 위한 방법. - 제17항에 있어서, 상기 방법은 상기 인코더가 연관된 오프셋 값을 이용해서 상기 출력 뉴런을 인코딩하는 단계를 더 포함하는, 비유효 연산을 감소시키기 위한 방법.
- 제18항에 있어서, 상기 인코딩은 제로-프리 뉴런 어레이 포맷에 있는, 비유효 연산을 감소시키기 위한 방법.
- 제18항에 있어서, 상기 인코딩은 RAW 또는 인코딩된 포맷(RoE)에 있는, 비유효 연산을 감소시키기 위한 방법.
- 제18항에 있어서, 상기 인코딩은 벡터 비유효 활성화 식별자(VIAI) 포맷에 있는, 비유효 연산을 감소시키기 위한 방법.
- 제18항에 있어서, 상기 인코딩은 압축 VIAI 포맷에 있는, 비유효 연산을 감소시키기 위한 방법.
- 제17항에 있어서, 상기 타일이, 시냅스를 유효하지 않은 것으로 식별하는 하나 이상의 비트를 수신하고 단지 유효 가중을 가진 비-제로 뉴런에 대해서만 계산을 수행하도록 상기 하나 이상의 비트를 프로세싱하는 단계를 더 포함하는, 비유효 연산을 감소시키기 위한 방법.
- 제17항에 있어서, 계산이 임계값 미만의 적어도 하나의 비-제로 뉴런에 대해 수행되지 않도록, 상기 임계값 미만의 적어도 하나의 비-제로 뉴런은 제로로 설정되는, 비유효 연산을 감소시키기 위한 방법.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020207015811A KR102459855B1 (ko) | 2016-06-14 | 2017-06-14 | 심층 신경망용 가속기 |
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201662349716P | 2016-06-14 | 2016-06-14 | |
US62/349,716 | 2016-06-14 | ||
US201762490712P | 2017-04-27 | 2017-04-27 | |
US62/490,712 | 2017-04-27 | ||
PCT/CA2017/050731 WO2017214728A1 (en) | 2016-06-14 | 2017-06-14 | Accelerator for deep neural networks |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020207015811A Division KR102459855B1 (ko) | 2016-06-14 | 2017-06-14 | 심층 신경망용 가속기 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20190019081A KR20190019081A (ko) | 2019-02-26 |
KR102120395B1 true KR102120395B1 (ko) | 2020-06-08 |
Family
ID=60662974
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020207015811A KR102459855B1 (ko) | 2016-06-14 | 2017-06-14 | 심층 신경망용 가속기 |
KR1020187036799A KR102120395B1 (ko) | 2016-06-14 | 2017-06-14 | 심층 신경망용 가속기 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020207015811A KR102459855B1 (ko) | 2016-06-14 | 2017-06-14 | 심층 신경망용 가속기 |
Country Status (7)
Country | Link |
---|---|
US (2) | US11423289B2 (ko) |
EP (1) | EP3469522A4 (ko) |
JP (2) | JP6898359B2 (ko) |
KR (2) | KR102459855B1 (ko) |
CN (1) | CN109328361B (ko) |
CA (1) | CA2990712C (ko) |
WO (1) | WO2017214728A1 (ko) |
Families Citing this family (44)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10891538B2 (en) * | 2016-08-11 | 2021-01-12 | Nvidia Corporation | Sparse convolutional neural network accelerator |
KR102415506B1 (ko) * | 2016-10-26 | 2022-07-01 | 삼성전자주식회사 | 뉴럴 네트워크 간소화 방법 및 장치 |
EP3563307B1 (en) | 2017-02-23 | 2023-04-12 | Cerebras Systems Inc. | Accelerated deep learning |
CN109359736A (zh) * | 2017-04-06 | 2019-02-19 | 上海寒武纪信息科技有限公司 | 网络处理器和网络运算方法 |
CA3108089C (en) | 2017-04-17 | 2024-04-02 | Cerebras Systems Inc. | Task activating for accelerated deep learning |
WO2018193353A1 (en) | 2017-04-17 | 2018-10-25 | Cerebras Systems Inc. | Neuron smearing for accelerated deep learning |
US11488004B2 (en) | 2017-04-17 | 2022-11-01 | Cerebras Systems Inc. | Neuron smearing for accelerated deep learning |
US11636327B2 (en) * | 2017-12-29 | 2023-04-25 | Intel Corporation | Machine learning sparse computation mechanism for arbitrary neural networks, arithmetic compute microarchitecture, and sparsity for training mechanism |
CN108256628B (zh) * | 2018-01-15 | 2020-05-22 | 合肥工业大学 | 基于多播片上网络的卷积神经网络硬件加速器及其工作方法 |
SG11202007532TA (en) * | 2018-02-16 | 2020-09-29 | Governing Council Univ Toronto | Neural network accelerator |
US20190303757A1 (en) * | 2018-03-29 | 2019-10-03 | Mediatek Inc. | Weight skipping deep learning accelerator |
US11568227B1 (en) | 2018-04-20 | 2023-01-31 | Perceive Corporation | Neural network inference circuit read controller with multiple operational modes |
US11783167B1 (en) | 2018-04-20 | 2023-10-10 | Perceive Corporation | Data transfer for non-dot product computations on neural network inference circuit |
US11468145B1 (en) | 2018-04-20 | 2022-10-11 | Perceive Corporation | Storage of input values within core of neural network inference circuit |
US10977338B1 (en) | 2018-04-20 | 2021-04-13 | Perceive Corporation | Reduced-area circuit for dot product computation |
CN108647774B (zh) * | 2018-04-23 | 2020-11-20 | 瑞芯微电子股份有限公司 | 一种优化稀疏性矩阵运算的神经网络方法和电路 |
JP7490572B2 (ja) * | 2018-05-08 | 2024-05-27 | 三星電子株式会社 | ニューラル・ネットワーク処理要素 |
CN109086819B (zh) * | 2018-07-26 | 2023-12-05 | 北京京东尚科信息技术有限公司 | caffemodel模型压缩方法、系统、设备及介质 |
US11328207B2 (en) | 2018-08-28 | 2022-05-10 | Cerebras Systems Inc. | Scaled compute fabric for accelerated deep learning |
US11328208B2 (en) | 2018-08-29 | 2022-05-10 | Cerebras Systems Inc. | Processor element redundancy for accelerated deep learning |
US11321087B2 (en) | 2018-08-29 | 2022-05-03 | Cerebras Systems Inc. | ISA enhancements for accelerated deep learning |
US11586417B2 (en) * | 2018-09-28 | 2023-02-21 | Qualcomm Incorporated | Exploiting activation sparsity in deep neural networks |
GB2577732B (en) * | 2018-10-04 | 2022-02-23 | Advanced Risc Mach Ltd | Processing data in a convolutional neural network |
US20200117988A1 (en) * | 2018-10-11 | 2020-04-16 | International Business Machines Corporation | Networks for distributing parameters and data to neural network compute cores |
KR20200057814A (ko) * | 2018-11-13 | 2020-05-27 | 삼성전자주식회사 | 뉴럴 네트워크를 이용한 데이터 처리 방법 및 이를 지원하는 전자 장치 |
US11995533B1 (en) | 2018-12-05 | 2024-05-28 | Perceive Corporation | Executing replicated neural network layers on inference circuit |
WO2020121202A1 (en) * | 2018-12-11 | 2020-06-18 | Mipsology SAS | Realigning streams of neuron outputs in artificial neural network computations |
KR102556506B1 (ko) * | 2019-01-15 | 2023-07-19 | 한국전자통신연구원 | 뉴로모픽 연산 장치 및 그것의 동작 방법 |
US11347297B1 (en) | 2019-01-23 | 2022-05-31 | Perceive Corporation | Neural network inference circuit employing dynamic memory sleep |
US10878321B2 (en) * | 2019-02-28 | 2020-12-29 | DeepCube LTD. | Partial activation of multiple pathways in neural networks |
US11379420B2 (en) * | 2019-03-08 | 2022-07-05 | Nvidia Corporation | Decompression techniques for processing compressed data suitable for artificial neural networks |
KR20200111939A (ko) * | 2019-03-20 | 2020-10-05 | 에스케이하이닉스 주식회사 | 신경망 가속 장치 및 그것의 동작 방법 |
US20200311511A1 (en) * | 2019-03-26 | 2020-10-01 | Mipsology SAS | Accelerating neuron computations in artificial neural networks by skipping bits |
US11868901B1 (en) | 2019-05-21 | 2024-01-09 | Percieve Corporation | Compiler for optimizing memory allocations within cores |
TWI737228B (zh) | 2020-03-20 | 2021-08-21 | 國立清華大學 | 基於記憶體內運算電路架構之量化方法及其系統 |
WO2022016257A1 (en) * | 2020-07-21 | 2022-01-27 | The Governing Council Of The University Of Toronto | System and method for using sparsity to accelerate deep learning networks |
US20220188492A1 (en) * | 2020-12-10 | 2022-06-16 | Memryx Incorporated | Chiplet based artificial intelligence accelerators and configuration methods |
US20220197634A1 (en) * | 2020-12-21 | 2022-06-23 | Intel Corporation | Efficient divide and accumulate instruction when an operand is equal to or near a power of two |
KR102644702B1 (ko) * | 2021-02-08 | 2024-03-06 | 한양대학교 산학협력단 | 컨볼루션 신경망 가속 방법 및 장치 |
CN113128681B (zh) * | 2021-04-08 | 2023-05-12 | 天津大学 | 一种多边缘设备辅助的通用cnn推理加速系统 |
JP2022178980A (ja) | 2021-05-21 | 2022-12-02 | 富士通株式会社 | 機械学習プログラム、機械学習方法および情報処理装置 |
US20230053294A1 (en) * | 2021-08-13 | 2023-02-16 | Taiwan Semiconductor Manufacturing Co., Ltd. | Bitwise product-sum accumulations with skip logic |
US11694733B2 (en) | 2021-08-19 | 2023-07-04 | Apple Inc. | Acceleration of in-memory-compute arrays |
GB2621383A (en) * | 2022-08-11 | 2024-02-14 | Advanced Risc Mach Ltd | Mechanism for neural network processing unit skipping |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6658554B1 (en) | 1999-03-09 | 2003-12-02 | Wisconsin Alumni Res Found | Electronic processor providing direct data transfer between linked data consuming instructions |
US20110235914A1 (en) | 2010-03-26 | 2011-09-29 | Izhikevich Eugene M | Invariant pulse latency coding systems and methods systems and methods |
US20140114893A1 (en) | 2011-05-31 | 2014-04-24 | International Business Machines Corporation | Low-power event-driven neural computing architecture in neural networks |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5740270A (en) | 1988-04-08 | 1998-04-14 | Neuromedical Systems, Inc. | Automated cytological specimen classification system and method |
JPH0748207B2 (ja) * | 1989-04-14 | 1995-05-24 | シャープ株式会社 | 行列演算装置 |
FR2664072A1 (fr) * | 1990-06-29 | 1992-01-03 | Thomson Csf | Systeme de calcul neuronal. |
JPH08315141A (ja) | 1995-05-15 | 1996-11-29 | Mitsubishi Electric Corp | 画像認識装置 |
JP4620943B2 (ja) * | 2003-10-16 | 2011-01-26 | キヤノン株式会社 | 積和演算回路及びその方法 |
US8442927B2 (en) | 2009-07-30 | 2013-05-14 | Nec Laboratories America, Inc. | Dynamically configurable, multi-ported co-processor for convolutional neural networks |
US8275727B2 (en) * | 2009-11-13 | 2012-09-25 | International Business Machines Corporation | Hardware analog-digital neural networks |
US8311965B2 (en) * | 2009-11-18 | 2012-11-13 | International Business Machines Corporation | Area efficient neuromorphic circuits using field effect transistors (FET) and variable resistance material |
US8510239B2 (en) * | 2010-10-29 | 2013-08-13 | International Business Machines Corporation | Compact cognitive synaptic computing circuits with crossbar arrays spatially in a staggered pattern |
US9373073B2 (en) * | 2012-12-21 | 2016-06-21 | International Business Machines Corporation | Time-division multiplexed neurosynaptic module with implicit memory addressing for implementing a universal substrate of adaptation |
US9262712B2 (en) * | 2013-03-08 | 2016-02-16 | International Business Machines Corporation | Structural descriptions for neurosynaptic networks |
US9753959B2 (en) * | 2013-10-16 | 2017-09-05 | University Of Tennessee Research Foundation | Method and apparatus for constructing a neuroscience-inspired artificial neural network with visualization of neural pathways |
US10255547B2 (en) * | 2014-12-04 | 2019-04-09 | Nvidia Corporation | Indirectly accessing sample data to perform multi-convolution operations in a parallel processing system |
CN104915322B (zh) * | 2015-06-09 | 2018-05-01 | 中国人民解放军国防科学技术大学 | 一种卷积神经网络硬件加速方法 |
CN105488565A (zh) * | 2015-11-17 | 2016-04-13 | 中国科学院计算技术研究所 | 加速深度神经网络算法的加速芯片的运算装置及方法 |
US20170193361A1 (en) * | 2015-12-31 | 2017-07-06 | Microsoft Technology Licensing, Llc | Neural network training performance optimization framework |
US11170294B2 (en) * | 2016-01-07 | 2021-11-09 | Intel Corporation | Hardware accelerated machine learning |
US10175980B2 (en) * | 2016-10-27 | 2019-01-08 | Google Llc | Neural network compute tile |
-
2017
- 2017-06-14 WO PCT/CA2017/050731 patent/WO2017214728A1/en unknown
- 2017-06-14 CN CN201780036696.5A patent/CN109328361B/zh active Active
- 2017-06-14 KR KR1020207015811A patent/KR102459855B1/ko active IP Right Grant
- 2017-06-14 US US16/314,422 patent/US11423289B2/en active Active
- 2017-06-14 JP JP2018565018A patent/JP6898359B2/ja active Active
- 2017-06-14 CA CA2990712A patent/CA2990712C/en active Active
- 2017-06-14 EP EP17812360.0A patent/EP3469522A4/en active Pending
- 2017-06-14 KR KR1020187036799A patent/KR102120395B1/ko active IP Right Grant
-
2021
- 2021-06-10 JP JP2021097593A patent/JP7266065B2/ja active Active
-
2022
- 2022-06-22 US US17/846,837 patent/US20220327367A1/en active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6658554B1 (en) | 1999-03-09 | 2003-12-02 | Wisconsin Alumni Res Found | Electronic processor providing direct data transfer between linked data consuming instructions |
US20110235914A1 (en) | 2010-03-26 | 2011-09-29 | Izhikevich Eugene M | Invariant pulse latency coding systems and methods systems and methods |
US20140114893A1 (en) | 2011-05-31 | 2014-04-24 | International Business Machines Corporation | Low-power event-driven neural computing architecture in neural networks |
Non-Patent Citations (1)
Title |
---|
accelerator for deep neural networks(2017.05.26) |
Also Published As
Publication number | Publication date |
---|---|
EP3469522A4 (en) | 2020-03-18 |
KR102459855B1 (ko) | 2022-10-27 |
CN109328361B (zh) | 2020-03-27 |
JP7266065B2 (ja) | 2023-04-27 |
JP2019522850A (ja) | 2019-08-15 |
CA2990712C (en) | 2018-09-04 |
US20190205740A1 (en) | 2019-07-04 |
JP6898359B2 (ja) | 2021-07-07 |
JP2021144750A (ja) | 2021-09-24 |
US20220327367A1 (en) | 2022-10-13 |
US11423289B2 (en) | 2022-08-23 |
WO2017214728A1 (en) | 2017-12-21 |
EP3469522A1 (en) | 2019-04-17 |
CA2990712A1 (en) | 2017-12-21 |
KR20200067916A (ko) | 2020-06-12 |
CN109328361A (zh) | 2019-02-12 |
KR20190019081A (ko) | 2019-02-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102120395B1 (ko) | 심층 신경망용 가속기 | |
Umuroglu et al. | Finn: A framework for fast, scalable binarized neural network inference | |
CN111897579B (zh) | 图像数据处理方法、装置、计算机设备和存储介质 | |
Keuper et al. | Distributed training of deep neural networks: Theoretical and practical limits of parallel scalability | |
US8400458B2 (en) | Method and system for blocking data on a GPU | |
JP2021515300A (ja) | ニューラル・ネットワーク・アクセラレータ | |
US11763156B2 (en) | Neural network compression based on bank-balanced sparsity | |
US11663491B2 (en) | Allocation system, method and apparatus for machine learning, and computer device | |
CN110738308B (zh) | 一种神经网络加速器 | |
US20200356809A1 (en) | Flexible pipelined backpropagation | |
CN111695693A (zh) | 学习装置及学习方法 | |
JP7095479B2 (ja) | 学習装置および学習方法 | |
US20230273828A1 (en) | System and method for using sparsity to accelerate deep learning networks | |
US11797884B2 (en) | Learning device and learning method | |
Peng et al. | Adaptive runtime exploiting sparsity in tensor of deep learning neural network on heterogeneous systems | |
US20220083844A1 (en) | Spatial tiling of compute arrays with shared control | |
WO2022016261A1 (en) | System and method for accelerating training of deep learning networks | |
Sohrabizadeh et al. | StreamGCN: Accelerating graph convolutional networks with streaming processing | |
CN111860797B (zh) | 运算装置 | |
Sapna et al. | DAPP: Accelerating Training of DNN | |
Wang et al. | Bandwidth Efficient Architectures for Convolutional Neural Network | |
CN116997910A (zh) | 张量控制器架构 | |
CN117933325A (zh) | 一种新型计算体系结构 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
A302 | Request for accelerated examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
A107 | Divisional application of patent | ||
GRNT | Written decision to grant |