KR20200125212A - 신경망 가속 장치 및 그것의 동작 방법 - Google Patents

신경망 가속 장치 및 그것의 동작 방법 Download PDF

Info

Publication number
KR20200125212A
KR20200125212A KR1020190049176A KR20190049176A KR20200125212A KR 20200125212 A KR20200125212 A KR 20200125212A KR 1020190049176 A KR1020190049176 A KR 1020190049176A KR 20190049176 A KR20190049176 A KR 20190049176A KR 20200125212 A KR20200125212 A KR 20200125212A
Authority
KR
South Korea
Prior art keywords
value
zero
neural network
weight
input feature
Prior art date
Application number
KR1020190049176A
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 에스케이하이닉스 주식회사
Priority to KR1020190049176A priority Critical patent/KR20200125212A/ko
Priority to US16/696,717 priority patent/US20200342294A1/en
Priority to CN201911216207.1A priority patent/CN111860800A/zh
Priority to JP2020024919A priority patent/JP2020184309A/ja
Publication of KR20200125212A publication Critical patent/KR20200125212A/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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • 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

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)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Artificial Intelligence (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Neurology (AREA)
  • Image Analysis (AREA)
  • Complex Calculations (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

본 발명의 실시 예에 따른 신경망 가속 장치는, 입력 피처(Input Feature)에 가중치(Weight)를 적용하여 제로(0) 값을 필터링하고 입력 피처의 각 픽셀에 대한 상대좌표 및 바운더리 정보를 포함하는 인덱스 정보를 매칭하여 압축된 형태의 패킷 데이터를 생성하는 제로 값 필터; 패킷 데이터의 상기 입력 피처와 가중치에 대해 곱셈 연산을 수행하여 결과 데이터를 획득하는 곱셈기; 및 곱셈기로부터 전달되는 결과 데이터의 상기 상대좌표 및 상기 바운더리 정보를 기초로 곱셈 연산 된 결과 데이터들 간의 덧셈 연산을 수행하고 재배열하여 출력 피처 맵을 생성하는 피처 맵 추출기;를 포함한다.

Description

신경망 가속 장치 및 그것의 동작 방법{accelerating Appratus of neural network and operating method thereof}
본 발명은 신경망 가속 장치 및 그것의 동작 방법에 관한 것이다.
CNN(Convolutional Neural Network) 어플리케이션은 이미지 인식 및 분석을 위해 주로 사용되는 신경망 어플리케이션이다. 이때, 어플리케이션은 특정 필터를 이용하여 이미지에서 피처(feature)를 추출하는 콘볼루션(convolution) 연산이 요구된다. 상기 콘볼루션 연산을 위해서는 곱셈 연산과 덧셈 연산을 수행하는 행렬 곱셈 장치를 사용하게 된다. 0의 분포가 적은 경우(Sparsity가 적은 경우), Dense 이미지 및 필터를 사용하면 상술한 연산 장치가 효율적으로 사용될 수 있다. 그러나, CNN 어플리케이션에서 사용되는 대부분의 이미지 및 필터는 30% 내지 70% 정도의 Sparsity를 갖게 되기 때문에, 다수의 제로 값(zero value)을 포함할 수 있다. 이때 제로 값은 연산 시 불필요한 레이턴시와 파워 소비를 발생시킬 수 있다.
이에, 운용자는 CNN 어플리케이션에서 콘볼루션 연산을 효율적으로 수행할 수 있는 방안을 모색하게 되었다.
본 발명의 실시 예는 연산 능력이 향상된 신경망 가속 장치 및 그것의 동작 방법을 제공한다.
본 발명의 실시 예에 따른 신경망 가속 장치는, 입력 피처(Input Feature)에 가중치(Weight)를 적용하여 제로(0) 값을 필터링하고 상기 입력 피처의 각 픽셀에 대한 상대좌표 및 바운더리 정보를 포함하는 인덱스 정보를 매칭하여 압축된 형태의 패킷 데이터를 생성하는 제로 값 필터; 상기 압축된 형태의 패킷 데이터의 상기 입력 피처와 상기 가중치에 대해 곱셈 연산을 수행하여 결과 데이터를 획득하는 곱셈기; 및 상기 상대좌표 및 상기 바운더리 정보를 기초로 상기 결과 데이터들 간의 덧셈 연산을 수행하고 상기 덧셈 연산의 결과값을 최초 입력 피처 형태로 재배열하여 출력 피처 맵을 생성하는 피처 맵 추출기;를 포함할 수 있다.
본 발명의 실시 예에 따른 신경망 가속 장치의 동작 방법은, 신경망 가속 장치는 입력 피처(Input Feature) 및 가중치(Weight)를 수신하는 단계; 상기 입력 피처에 가중치를 적용하여 제로(0) 값을 필터링하고 상기 입력 피처의 각 픽셀에 대한 상대좌표 및 바운더리 정보를 포함하는 인덱스 정보를 매칭하여 압축된 형태의 패킷 데이터를 생성하는 단계; 상기 압축된 형태의 패킷 데이터의 상기 입력 피처와 상기 가중치에 대해 곱셈 연산을 수행하여 결과 데이터를 획득하는 단계; 상기 결과 데이터의 상기 상대좌표 및 상기 바운더리 정보를 기초로 상기 곱셈 연산 된 상기 결과 데이터들 간의 덧셈 연산을 수행하고 상기 덧셈 연산의 결과값을 최초 입력 피처 형태로 재배열하여 출력 피처 맵을 생성하는 단계; 및 상기 출력 피처 맵에 액티베이션 기능(Activation Function)을 적용하여 비선형 값으로 변경하고 풀링(pooling) 처리하여 최종 출력 피처 맵을 생성하는 단계;를 포함할 수 있다.
본 실시 예들에 따르면, 스트라이드(stride) 값에 따라 입력 피처 및 가중치의 제로 값에 대해 스킵을 지원하기 때문에 신경망 가속 장치에서의 연산 능력이 향상될 수 있다는 효과를 기대할 수 있다.
또한, 본 실시 예에 따르면, 불필요한 레이턴시와 파워 소비를 줄일 수 있다는 것이다.
도 1은 본 발명의 실시 예에 따른 신경망 가속 장치의 구성을 나타낸 도면이다.
도 2는 본 발명의 실시 예에 따른 입력 피처의 픽셀을 그룹화하는 방법을 설명하기 위한 도면이다.
도 3 내지 도 4는 본 발명의 실시 예에 따른 패킷 데이터의 예시를 나타내는 도면이다.
도 5는 본 발명의 실시 예에 따른 입력 피처의 제로 값을 감지하기 위한 방법을 설명하기 위한 도면이다.
도 6은 본 발명의 실시 예에 따른 가중치의 제로 값을 감지하기 위한 방법을 설명하기 위한 도면이다.
도 7 내지 도 10은 본 발명의 실시 예에 따른 입력 피처에 가중치를 적용하여 비 제로 값을 감지하기 위한 방법을 설명하기 위한 도면이다.
도 11은 본 발명의 실시 예에 따른 신경망 가속 장치의 동작방법을 설명하기 위한 흐름도이다.
도 12는 도 11의 압축된 패킷 데이터를 생성하는 방법을 보다 상세히 설명하기 위한 도면이다.
이하, 첨부한 도면에 의거하여 본 발명의 바람직한 실시 예를 설명하도록 한다.
도 1은 본 발명의 실시 예에 따른 신경망 가속 장치의 구성을 나타낸 도면이다.
이하에서는, 본 발명의 실시 예에 따른 입력 피처의 픽셀을 그룹화하는 방법을 설명하기 위한 도 2, 본 발명의 실시 예에 따른 패킷 데이터의 예시를 나타내는 도 3 내지 도 4, 본 발명의 실시 예에 따른 입력 피처의 제로 값을 감지하기 위한 방법을 설명하기 위한 도 5, 본 발명의 실시 예에 따른 가중치의 제로 값을 감지하기 위한 방법을 설명하기 위한 도 6, 본 발명의 실시 예에 따른 입력 피처에 가중치를 적용하여 비 제로 값을 감지하기 위한 방법을 설명하기 위한 도 7 내지 도 10을 참조하여 설명하기로 한다.
도 1을 참조하면, 본 실시 예에 따른 신경망 가속 장치(10)는 제1 메모리(100), 제로 값 필터(200), 제2 메모리(300), 곱셈기(400), 피처 맵 추출기(500) 및 출력 피처 맵 생성기(600)를 포함할 수 있다.
보다 상세히 설명하면, 제1 메모리(100)는 피처(Feature) 및 가중치(Weight)를 비롯하여 신경망 가속 장치(10)와 관련된 정보를 저장하고, 저장된 피처 및 가중치를 제로 값 필터(200)로 전달할 수 있다. 이때, 피처는 이미지(image) 데이터 또는 음성 데이터일 수 있다. 또한, 가중치는 피처로부터 제로 값을 필터링하는 데 이용되는 필터일 수 있다. 상기 제1 메모리(100)는 DRAM(Dynamic Random Access Memory)으로 구현될 수 있으며 이에 한정되지 않는다.
제로 값 필터(zero-value filter)(200)는 입력 피처(Input Feature)에 가중치(Weight)를 적용하여 제로(0) 값을 필터링하고 상기 입력 피처의 각 픽셀에 대한 상대좌표 및 바운더리 정보(boundary indication)를 포함하는 인덱스 정보를 매칭하여 압축된 형태의 패킷 데이터를 생성할 수 있다. 이때, 입력 피처와 가중치는 제1 메모리(100)로부터 획득할 수 있다.
제로 값 필터(200)는 입력 피처 및 가중치의 제로 값 위치 및 스트라이드(stride) 값을 이용하여 제로 값 필터링을 수행할 수 있다. 이때, 스트라이드 값은 필터를 적용하는 간격 값을 의미하는 것으로 정의할 수 있다. 도 7을 참조하면, 스트라이드 값은 입력 피처(a-2)에 가중치인 필터(b-2)를 슬라이딩 윈도우 할 때, 이동하는 간격인 것일 수 있다.
제로 값 필터(200)는 입력 피처의 픽셀들을 기 설정된 기준에 따라 그룹화하고, 복수의 그룹간 상대좌표를 생성하여 각 그룹 내 픽셀에 매칭할 수 있다.
도 2를 참조하면, 제로 값 필터(200)는 입력 피처에 대해 (b)와 같이 그룹 1, 그룹 2, 그룹 3 및 그룹 4로 그룹화하고, 그룹 간 동일 위치에 대해 동일한 좌표를 나타내는 상대좌표를 생성하여 각 그룹 내 픽셀에 매칭할 수 있다. 예를 들어, 입력 피처에 대한 원 좌표는 도 2의 (a)에서 도시하는 바와 같이, 1, 2, 3, 4 ~ 15 및 16인데, 그룹화된 입력 피처에 대한 좌표는 (b)에서 도시하는 바와 같이, 그룹 1의 0, 1, 2 및 3, 그룹 2의 0, 1, 2 및 3, 그룹 3의 0, 1, 2 및 3, 그룹 4의 0, 1, 2 및 3일 수 있는 것이다. 이때, 그룹 간 상대좌표를 생성하기 때문에 저장되는 인덱스 값의 크기를 줄일 수 있다는 효과를 기대할 수 있다.
여기에서, 각 픽셀은 바운더리 정보(boundary indication)를 가지고 있고, 출력 피처 맵 생성기(600)는 바운더리 정보를 통해 새로운 픽셀 그룹의 전송 여부를 판단할 수 있다. 상기 바운더리 정보는 상기 복수의 그룹을 각각 구분하기 위한 1 비트의 정보를 의미할 수 있다.
도 3 및 도 4는 압축된 형태의 패킷 데이터의 예시를 나타내는 것으로서, 압축된 형태의 패킷 데이터는 도 3과 같이 바운더리 정보(boundary indicator), 해당 픽셀 데이터 모두가 제로 값(0)인지 여부를 나타내는 제로 플래그(All 0 flag), 픽셀 데이터의 좌표(Coordinate info) 및 픽셀 데이터(Data)를 포함할 수 있다. 이때, 바운더리 정보와 제로 플래그는 각각 1 비트일 수 있다. 상기 바운더리 정보는 1 또는 0으로 새로운 패킷 전송이 시작되면 값이 반전될 수 있다.
도 4의 (a)는 비 제로(non-zero) 패킷 데이터의 예시를 나타내는 것이고, (b)는 모든 픽셀 데이터가 제로(zero)인 패킷 데이터의 예시를 나타내는 것이다. 곱셈기(400)는 제로 값 필터(200)로부터 전달된 패킷 데이터의 제로 플래그 값이 1인 경우, 해당 패킷 데이터의 픽셀 데이터에 대한 곱셈 연산을 모두 생략할 수 있다.
즉, 제로 값 필터(200)는 곱셈기(400)에 입력되는 입력값 중 불필요한 연산 이 발생할 것으로 예상되는 값(예를 들어, 0이 포함된 조합)을 사전에 제거하여, 곱셈기(400)의 불필요한 연산을 미리 차단하는 것이다.
이로 인해, 곱셈기(400)에서 불필요한 연산으로 발생할 수 있는 불필요한 레이턴시(latency)와 파워 소모(power consumption)를 줄일 수 있다는 효과를 기대할 수 있다. 이때, 곱셈기(400)는 카르테시안(Cartesian) 곱셈기일 수 있으며, 이에 한정되지 않는다.
제로 값 필터(200)는 입력 피처와 가중치를 각각 1차원 벡터 형태로 변환하고 입력 피처 및 가중치 각각을 비트 OR 연산하여 비 제로 값 위치(non-zero value position)를 필터링할 수 있다.
도 5를 참조하면, 제로 값 필터(200)는 4 X 4 형태의 입력 피처(a)를 필터(가중치) 사이즈에 맞게 1차원 벡터 형태로 나열(1, 5, 0, 6, 3, 0, 4, 8, 0, 13, 10, 14, 11, 15, 12, 0)(a-1)하고, 피처의 비 제로 값 위치를 추출하기 위해 비트 OR 연산을 수행하여, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0(a-2)와 같은 값을 획득할 수 있다.
도 6을 참조하면, 제로 값 필터(200)는 2 X 2 형태의 가중치(b)를 1차원 벡터 형태로 나열(10, 0, 0, 11)(b-1)하고 가중치(필터)의 비 제로 값 위치를 추출하기 위해 비트 OR 연산을 수행하여, 1, 0, 0, 1(b-2)와 같은 값을 획득할 수 있다. 즉, 제로 값 필터(200)는 피처와 가중치에 대한 비 제로 값 위치를 인식할 수 있는 것이다.
또한, 제로 값 필터(200)는 필터링된 입력 피처 및 가중치의 비 제로 위치 값을 비트 AND 연산하여 바운더리 차수 별 상기 가중치 위치에 따른 비 제로 위치 값을 획득할 수 있다.
상기 바운더리 차수는 1차원 벡터 형태의 가중치가 1차원 벡터 형태의 입력 피처를 슬라이딩 윈도우(Sliding Window) 한 차수와 동일할 수 있다.
도 7 및 도 8을 참고하면, 제로 값 필터(200)는 필터링된 1차원 벡터 형태의 입력 피처(a-2)와 가중치(b-2)의 비 제로 위치 값을 서로 대향한 후, 가중치를 피처에 슬라이딩 윈도우 하면서 비트 AND 연산하는 것이다. 이때, 스트라이드 값은 2-D 필터의 컬럼 너비(column width)의 배수일 수 있다.
예를 들어 2 x 2인 경우, column width가 2이므로, stride = 1인 경우에는 column width의 1배, stride = 2인 경우에는 column width의 2배만큼 필터가 이동(shift)될 수 있는 것이다.
도 8을 참고하면, 제로 값 필터(200)는 가중치(b-2)가 슬라이딩 윈도우 함에 따라 (c)와 같은 복수의 타켓 바운더리(1th 타겟 바운더리 ~ 7th 타겟 바운더리)를 획득할 수 있다.
제로 값 필터(200)는 바운더리 차수 별 비 제로 위치 값을 비트 OR 연산하여 통합 바운더리 정보를 획득할 수 있다. 이때, 통합 바운더리 정보가 상술한 인덱스 정보의 바운더리 정보로 포함된다.
도 8을 참조하면, 제로 값 필터(200)는 1th 타겟 바운더리 ~ 7th 타겟 바운더리의 비 제로 위치 값(1, 0, 0, 0, 0, 0, 0)(c-1)을 비트 OR 연산하여 통합 바운더리 정보(d-1)를 획득할 수 있다. 제로 값 필터(200)는 상술한 과정을 반복 수행하여 최종 통합 바운더리 정보를 획득할 수 있다.
한편, 제로 값 필터(200)는 통합 바운더리 정보를 획득할 때, 비트 OR 연산을 수행하는 비 제로 위치 값의 바운더리 차수를 스트라이드(stride) 값에 따라 변경할 수 있다.
스트라이드 값이 1이 아닌 경우, 제로 값 필터(200)는 도 8과 같은 스트라이드 값이 1인 경우에서 스트라이드 값에 따라 바운더리 차수를 선택적으로 적용하여 비 제로 위치 값을 추출할 수 있다.
도 9를 참조하면, 스트라이드 값이 2(stride = 2)인 경우, 제로 값 필터(200)는 도 8과 같은 스트라이드 값이 1인 경우에서 짝수 차수의 바운더리 정보를 통합 바운더리 정보 획득 시 스킵(skip)하면 스트라이드 값이 2인 경우에 대한 비 제로 위치 값(non-zero position value)을 추출할 수 있다.
도 10을 참조하면, 제로 값 필터(200)는 선택된 1차, 3차, 5차 및 7차 타켓 바운더리 정보를 기초로 비트 OR 연산을 수행하여 통합 바운더리 정보를 획득할 수 있다.
제로 값 필터(200)는 스트라이드 값이 3인 경우에도 스트라이드 값이 1인 경우에서 홀수 차수의 바운더리 정보를 스킵하여 통합 바운더리 정보를 획득할 수 있다. 이때, 제로 값 필터(200)는 스킵 하는 홀수 차수 중 1번째 차수는 제외하고 스킵 할 수 있다.
상술한 스트라이드 값이 1이 아닌 경우는 2차 벡터로 구성된 피처에 필터를 이동(shifting)하면서 비 제로 값 위치(non-zero value position)를 추출하는 것과 동일한 효과를 얻을 수 있지만, 1차 벡터로 관련 동작을 구현하기 때문에 로직(logic)이 단순화되는 효과를 기대할 수 있다. 위 결과값에서 비 제로 값(non-zero value)을 추출한 후, 곱셈(Cartesian product) 연산을 하게 되면 불필요한 연산을 생략하기 때문에 레이턴시 및 파워 소모의 감소 효과를 기대할 수 있다.
제2 메모리(300)는 제로 값 필터(200)로부터 전달되는 인덱스 정보를 포함하는 패킷 데이터를 저장할 수 있다. 또한, 제2 메모리(300)는 출력 피처 맵 생성기(600)로부터 전달되는 최종 출력 피처 맵을 비롯하여 신경망 가속 장치(10)와 관련된 정보를 저장할 수 있다. 이때 제2 메모리(300)는 SRAM(Random Access Memory)으로 구현될 수 있으며, 이에 한정되지 않는다. SRAM의 특성 상 제2 메모리(300)는 한 번에 하나의 패킷 만을 꺼낼 수 있기 때문에 이를 위한 사이클에 다수의 시간이 소요되는데 동시에 제로 스킵 동작까지 수행하면 사이클에 대한 부담이 있을 수 있다. 본 발명의 실시예는 제로 값 필터링을 통해 이미 여러 비트가 처리된 형태의 입력 피처 맵을 저장하기 때문에 상술한 사이클에 대한 부담을 줄일 수 있다는 효과를 기대할 수 있다.
곱셈기(Cartesian Product Module)(400)는 압축된 형태의 패킷 데이터의 입력 피처와 가중치에 대해 곱셈 연산을 수행하여 결과 데이터를 획득할 수 있다.
곱셈기(400)는 곱셈 연산을 수행할 때, 인덱스 정보를 참조하여 제로 값 필터링된 패킷 데이터에 대한 상기 곱셈 연산을 생략할 수 있다.
피처 맵 추출기(Feature map extractor)(500)는 곱셈기(400)로부터 전달되는 결과 데이터의 상대좌표 및 바운더리 정보를 기초로 곱셈 연산 된 결과 데이터들 간의 덧셈 연산을 수행하고 상기 덧셈 연산의 결과값을 최초 입력 피처 형태로 재배열하여 출력 피처 맵을 생성할 수 있다. 즉, 피처 맵 추출기(500)는 상대좌표 및 바운더리 정보를 기초로 덧셈 연산 결과값을 픽셀 그룹화 이전의 형태(도 2의 (a))로 재배열하는 것이다.
출력 피처 맵 생성기(Output feature map generator)(600)는 출력 피처 맵에 액티베이션 기능(Activation Function)을 적용하여 비선형 값으로 변경하고 풀링(pooling) 처리하여 최종 출력 피처 맵을 생성하고 제1 메모리(100), 제2 메모리(300) 및 상기 제로 값 필터(200) 중 적어도 하나로 전송할 수 있다.
도 11은 본 발명의 실시 예에 따른 신경망 가속 장치의 동작방법을 설명하기 위한 흐름도이다.
도 11을 참조하면, 신경망 가속 장치(10)의 제로 값 필터(200)는 입력 피처(Input Feature) 및 가중치(Weight)를 수신할 수 있다(S101).
도 1을 참조하면, 제로 값 필터(200)는 제1 메모리(100)로부터 기 저장된 피처 및 가중치를 전달받을 수 있다.
다음, 제로 값 필터(200)는 입력 피처에 가중치를 적용하여 제로(0) 값을 필터링하고 상기 입력 피처의 각 픽셀에 대한 상대좌표 및 바운더리 정보를 포함하는 인덱스 정보를 매칭하여 압축된 형태의 패킷 데이터를 생성할 수 있다(S103).
보다 구체적으로, 제로 값 필터(200)는 입력 피처 및 가중치의 제로 값 위치 및 스트라이드(stride) 값을 이용하여 제로 값 필터링을 수행할 수 있다.
또한, 제로 값 필터(200)는 입력 피처의 픽셀들을 기 설정된 기준에 따라 그룹화하고, 복수의 그룹간 상대좌표를 생성하여 각 그룹 내 픽셀에 매칭할 수 있다.
다음, 신경망 가속 장치(10)의 곱셈기(400)는 제로 값 필터(200)로부터 전달되는 압축된 형태의 패킷 데이터의 상기 입력 피처와 상기 가중치에 대해 곱셈 연산을 수행하여 결과 데이터를 획득할 수 있다(S105). 이때, 압축된 형태의 패킷 데이터는 제로 값 필터(200)로부터 직접 수신하지 않고, 제2 메모리(300)로부터 전달받는 것 역시 가능하다 할 것이다.
도 3 및 도 4를 참조하면, 압축된 형태의 패킷 데이터는 바운더리 정보(boundary indicator), 해당 픽셀 데이터 모두가 제로 값(0)인지 여부를 나타내는 제로 플래그(All 0 flag), 픽셀 데이터의 좌표(Coordinate info) 및 픽셀 데이터(Data)를 포함할 수 있다. 이때, 바운더리 정보는 제로 값 필터(200)에서 바운더리 차수 별 비 제로 위치 값을 비트 OR 연산하여 획득한 통합 바운더리 정보일 수 있다.
도 8을 참조하면, 제로 값 필터(200)는 1th 타겟 바운더리 ~ 7th 타겟 바운더리의 비 제로 위치 값(1, 0, 0, 0, 0, 0, 0)(c-1)을 비트 OR 연산하여 통합 바운더리 정보(d-1)를 획득할 수 있다.
곱셈기(400)는 곱셈 연산을 수행할 때, 인덱스 정보를 참조하여 제로 값 필터링된 패킷 데이터에 대한 상기 곱셈 연산을 생략할 수 있다. 구체적으로, 제로 값 필터(200)로부터 전달된 패킷 데이터의 제로 플래그 값이 1인 경우, 곱셈기(400)는 해당 패킷 데이터의 픽셀 데이터에 대한 곱셈 연산을 모두 생략할 수 있다. 즉, 제2 메모리(300)에 0이 제거된 패킷 데이터가 저장되므로 곱셈기(400) 이전 단에서 불필요한 데이터가 제거되는 것이다. 이때, Full zero skip case의 경우는 저장되지 않는 경우에서 예외일 수 있다.
이로 인해, 곱셈기(400)에서 불필요한 연산으로 발생할 수 있는 불필요한 레이턴시(latency)와 파워 소모(power consumption)를 줄일 수 있다는 효과를 기대할 수 있다.
다음, 피처 맵 추출기(500)는 결과 데이터의 상기 상대좌표 및 상기 바운더리 정보를 기초로 상기 곱셈 연산 된 상기 결과 데이터들 간의 덧셈 연산을 수행하고 상기 덧셈 연산의 결과값을 최초 입력 피처 형태로 재배열하여 출력 피처 맵을 생성할 수 있다(S107).
다음, 출력 피처 맵 생성기(600)는 출력 피처 맵에 액티베이션 기능(Activation Function)을 적용하여 비선형 값으로 변경하고 풀링(pooling) 처리하여 최종 출력 피처 맵을 생성할 수 있다(S109).
도 12는 도 11의 압축된 패킷 데이터를 생성하는 방법인 단계 S103을 보다 상세히 설명하기 위한 도면이다.
도 12를 참조하면, 신경망 가속 장치(10)의 제로 값 필터(200)는 입력 피처와 가중치를 각각 1차원 벡터 형태로 변환하고 입력 피처 및 가중치 각각을 비트 OR 연산하여 비 제로 값 위치(non-zero value position)를 필터링할 수 있다(S201).
도 5를 참조하면, 제로 값 필터(200)는 4 X 4 형태의 입력 피처(a)를 필터(가중치) 사이즈에 맞게 1차원 벡터 형태로 나열(1, 5, 0, 6, 3, 0, 4, 8, 0, 13, 10, 14, 11, 15, 12, 0)(a-1)하고, 피처의 비 제로 값 위치를 추출하기 위해 비트 OR 연산을 수행하여, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0(a-2)와 같은 값을 획득할 수 있다.
도 6을 참조하면, 제로 값 필터(200)는 2 X 2 형태의 가중치(b)를 1차원 벡터 형태로 나열(10, 0, 0, 11)(b-1)하고 가중치(필터)의 비 제로 값 위치를 추출하기 위해 비트 OR 연산을 수행하여, 1, 0, 0, 1(b-2)와 같은 값을 획득할 수 있다. 즉, 제로 값 필터(200)는 피처와 가중치에 대한 비 제로 값 위치를 인식할 수 있는 것이다.
다음, 제로 값 필터(200)는 필터링된 상기 입력 피처 및 상기 가중치의 비 제로 위치 값을 비트 AND 연산하여 바운더리 차수 별 상기 가중치 위치에 따른 비 제로 위치 값을 획득할 수 있다(S203).
상기 바운더리 차수는 1차원 벡터 형태의 가중치가 1차원 벡터 형태의 입력 피처를 슬라이딩 윈도우(Sliding Window) 한 차수와 동일할 수 있다.
도 7 및 도 8을 참고하면, 제로 값 필터(200)는 필터링된 1차원 벡터 형태의 입력 피처(a-2)와 가중치(b-2)의 비 제로 위치 값을 서로 대향한 후, 가중치를 피처에 슬라이딩 윈도우 하면서 비트 AND 연산하는 것이다. 이때, 스트라이드 값은 2-D 필터의 컬럼 너비(column width)의 배수일 수 있다.
도 8을 참고하면, 제로 값 필터(200)는 가중치(b-2)가 슬라이딩 윈도우 함에 따라 (c)와 같은 복수의 타켓 바운더리(1th 타겟 바운더리 ~ 7th 타겟 바운더리)를 획득할 수 있다.
다음, 제로 값 필터(200)는 바운더리 차수 별 비 제로 위치 값을 비트 OR 연산하여 통합 바운더리 정보를 획득할 수 있다(S205). 이때, 통합 바운더리 정보가 상술한 단계 S103의 인덱스 정보의 바운더리 정보로 포함된다.
도 8을 참조하면, 제로 값 필터(200)는 1th 타겟 바운더리 ~ 7th 타겟 바운더리의 비 제로 위치 값(1, 0, 0, 0, 0, 0, 0)(c-1)을 비트 OR 연산하여 통합 바운더리 정보(d-1)를 획득할 수 있다. 제로 값 필터(200)는 상술한 과정을 반복 수행하여 최종 통합 바운더리 정보를 획득할 수 있다.
단계 S205에서 제로 값 필터(200)는 통합 바운더리 정보를 획득할 때, 비트 OR 연산을 수행하는 비 제로 위치 값의 바운더리 차수를 스트라이드(stride) 값에 따라 변경할 수 있다.
본 발명이 속하는 기술분야의 통상의 기술자는 본 발명이 그 기술적 사상이나 필수적 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있으므로, 이상에서 기술한 실시 예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로서 이해해야만 한다. 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 등가개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
10 : 신경망 가속 장치
100 : 제1 메모리
200 : 제로 값 필터
300 : 제2 메모리
400 : 곱셈기
500 : 피처 맵 추출기
600 : 출력 피처 맵 생성기

Claims (17)

  1. 입력 피처(Input Feature)에 가중치(Weight)를 적용하여 제로(0) 값을 필터링하고 상기 입력 피처의 각 픽셀에 대한 상대좌표 및 바운더리 정보를 포함하는 인덱스 정보를 매칭하여 압축된 형태의 패킷 데이터를 생성하는 제로 값 필터;
    상기 압축된 형태의 패킷 데이터의 상기 입력 피처와 상기 가중치에 대해 곱셈 연산을 수행하여 결과 데이터를 획득하는 곱셈기; 및
    상기 상대좌표 및 상기 바운더리 정보를 기초로 상기 결과 데이터들 간의 덧셈 연산을 수행하고 상기 덧셈 연산의 결과값을 최초 입력 피처 형태로 재배열하여 출력 피처 맵을 생성하는 피처 맵 추출기;
    를 포함하는 신경망 가속 장치.
  2. 제1항에 있어서,
    상기 신경망 가속 장치는,
    상기 출력 피처 맵에 액티베이션 기능(Activation Function)을 적용하여 비선형 값으로 변경하고 풀링(pooling) 처리하여 최종 출력 피처 맵을 생성하고 제1 메모리, 제2 메모리 및 상기 제로 값 필터 중 적어도 하나로 전송하는 출력 피처 맵 생성기;
    를 더 포함하는 신경망 가속 장치.
  3. 제1항에 있어서,
    상기 제로 값 필터는,
    상기 입력 피처 및 상기 가중치의 제로 값 위치 및 스트라이드(stride) 값을 이용하여 상기 제로 값 필터링을 수행하는 신경망 가속 장치.
  4. 제1항에 있어서,
    상기 제로 값 필터는,
    상기 입력 피처의 픽셀들을 기 설정된 기준에 따라 그룹화하고, 복수의 그룹간 상대좌표를 생성하여 각 그룹 내 픽셀에 매칭하는 신경망 가속 장치.
  5. 제4항에 있어서,
    상기 바운더리 정보는,
    상기 복수의 그룹을 각각 구분하기 위한 1 비트의 정보인 신경망 가속 장치.
  6. 제1항에 있어서,
    상기 제로 값 필터는,
    상기 입력 피처와 상기 가중치를 각각 1차원 벡터 형태로 변환하고 상기 입력 피처 및 상기 가중치 각각을 비트 OR 연산하여 비 제로 값 위치(non-zero value position)를 필터링하고, 필터링된 상기 입력 피처 및 상기 가중치의 비 제로 위치 값(non-zero position value)을 비트 AND 연산하여 바운더리 차수 별 상기 가중치 위치에 따른 비 제로 위치 값을 획득하는 신경망 가속 장치.
  7. 제6항에 있어서,
    상기 제로 값 필터는,
    상기 바운더리 차수 별 비 제로 위치 값을 비트 OR 연산하여 통합 바운더리 정보를 획득하는 신경망 가속 장치.
  8. 제7항에 있어서,
    상기 제로 값 필터는,
    상기 통합 바운더리 정보를 획득할 때, 상기 비트 OR 연산을 수행하는 상기 비 제로 위치 값의 바운더리 차수를 스트라이드(stride) 값에 따라 변경하는 신경망 가속 장치.
  9. 제6항에 있어서,
    상기 바운더리 차수는 상기 1차원 벡터 형태의 가중치가 상기 1차원 벡터 형태의 입력 피처를 슬라이딩 윈도우(Sliding Window) 한 차수와 동일한 신경망 가속 장치.
  10. 제1항에 있어서,
    상기 곱셈기는,
    상기 곱셈 연산을 수행할 때, 상기 인덱스 정보를 참조하여 상기 제로 값 필터링된 상기 패킷 데이터에 대한 상기 곱셈 연산을 생략하는 신경망 가속 장치.
  11. 제1항에 있어서,
    상기 신경망 가속 장치는,
    상기 입력 피처 및 상기 가중치를 저장하는 저장하는 제1 메모리; 및
    상기 제로 값 필터로부터 전달되는 상기 인덱스 정보를 포함하는 상기 패킷 데이터를 저장하는 제2 메모리를 더 포함하는 신경망 가속 장치.
  12. 신경망 가속 장치는 입력 피처(Input Feature) 및 가중치(Weight)를 수신하는 단계;
    상기 입력 피처에 가중치를 적용하여 제로(0) 값을 필터링하고 상기 입력 피처의 각 픽셀에 대한 상대좌표 및 바운더리 정보를 포함하는 인덱스 정보를 매칭하여 압축된 형태의 패킷 데이터를 생성하는 단계;
    상기 압축된 형태의 패킷 데이터의 상기 입력 피처와 상기 가중치에 대해 곱셈 연산을 수행하여 결과 데이터를 획득하는 단계;
    상기 결과 데이터의 상기 상대좌표 및 상기 바운더리 정보를 기초로 상기 곱셈 연산 된 상기 결과 데이터들 간의 덧셈 연산을 수행하고 상기 덧셈 연산의 결과값을 최초 입력 피처 형태로 재배열하여 출력 피처 맵을 생성하는 단계; 및
    상기 출력 피처 맵에 액티베이션 기능(Activation Function)을 적용하여 비선형 값으로 변경하고 풀링(pooling) 처리하여 최종 출력 피처 맵을 생성하는 단계;
    를 포함하는 신경망 가속 장치의 동작 방법.
  13. 제12항에 있어서,
    상기 압축된 형태의 패킷 데이터를 생성하는 단계에서,
    상기 입력 피처 및 상기 가중치의 제로 값 위치 및 스트라이드(stride) 값을 이용하여 상기 제로 값 필터링을 수행하는 신경망 가속 장치의 동작 방법.
  14. 제12항에 있어서,
    상기 압축된 형태의 패킷 데이터를 생성하는 단계에서,
    상기 입력 피처의 픽셀들을 기 설정된 기준에 따라 그룹화하고, 복수의 그룹간 상대좌표를 생성하여 각 그룹 내 픽셀에 매칭하는 신경망 가속 장치의 동작 방법.
  15. 제12항에 있어서,
    상기 압축된 형태의 패킷 데이터를 생성하는 단계는,
    상기 입력 피처와 상기 가중치를 각각 1차원 벡터 형태로 변환하고 상기 입력 피처 및 상기 가중치 각각을 비트 OR 연산하여 비 제로 값 위치(non-zero value position)를 필터링하는 단계;
    상기 필터링된 상기 입력 피처 및 상기 가중치의 비 제로 위치 값을 비트 AND 연산하여 바운더리 차수 별 상기 가중치 위치에 따른 비 제로 위치 값을 획득하는 단계; 및
    상기 바운더리 차수 별 상기 비 제로 위치 값을 비트 OR 연산하여 통합 바운더리 정보를 획득하는 단계를 포함하는 신경망 가속 장치의 동작 방법.
  16. 제15항에 있어서,
    상기 통합 바운더리 정보를 획득하는 단계에서,
    상기 비트 OR 연산을 수행하는 상기 비 제로 위치 값의 바운더리 차수를 스트라이드(stride) 값에 따라 변경하는 신경망 가속 장치의 동작 방법.
  17. 제15항에 있어서,
    상기 바운더리 차수는 상기 1차원 벡터 형태의 가중치가 상기 1차원 벡터 형태의 입력 피처를 슬라이딩 윈도우(Sliding Window) 한 차수와 동일한 신경망 가속 장치의 동작 방법.
KR1020190049176A 2019-04-26 2019-04-26 신경망 가속 장치 및 그것의 동작 방법 KR20200125212A (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020190049176A KR20200125212A (ko) 2019-04-26 2019-04-26 신경망 가속 장치 및 그것의 동작 방법
US16/696,717 US20200342294A1 (en) 2019-04-26 2019-11-26 Neural network accelerating apparatus and operating method thereof
CN201911216207.1A CN111860800A (zh) 2019-04-26 2019-12-02 神经网络加速设备及其操作方法
JP2020024919A JP2020184309A (ja) 2019-04-26 2020-02-18 神経網加速装置及びその動作方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190049176A KR20200125212A (ko) 2019-04-26 2019-04-26 신경망 가속 장치 및 그것의 동작 방법

Publications (1)

Publication Number Publication Date
KR20200125212A true KR20200125212A (ko) 2020-11-04

Family

ID=72917272

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190049176A KR20200125212A (ko) 2019-04-26 2019-04-26 신경망 가속 장치 및 그것의 동작 방법

Country Status (4)

Country Link
US (1) US20200342294A1 (ko)
JP (1) JP2020184309A (ko)
KR (1) KR20200125212A (ko)
CN (1) CN111860800A (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022065937A1 (ko) 2020-09-25 2022-03-31 주식회사 경동나비엔 가습된 공기를 제공받는 물 가열기
WO2024043696A1 (ko) * 2022-08-23 2024-02-29 삼성전자 주식회사 인공지능 모델을 이용하여 연산을 수행하는 전자 장치 및 전자 장치의 동작 방법

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11222092B2 (en) * 2019-07-16 2022-01-11 Facebook Technologies, Llc Optimization for deconvolution
US11714998B2 (en) * 2020-05-05 2023-08-01 Intel Corporation Accelerating neural networks with low precision-based multiplication and exploiting sparsity in higher order bits
US20220383121A1 (en) * 2021-05-25 2022-12-01 Applied Materials, Inc. Dynamic activation sparsity in neural networks
CN115759212A (zh) * 2021-09-03 2023-03-07 Oppo广东移动通信有限公司 卷积运算电路及方法、神经网络加速器和电子设备

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102930061B (zh) * 2012-11-28 2016-01-06 安徽水天信息科技有限公司 一种基于运动目标检测的视频摘要方法
US10891538B2 (en) * 2016-08-11 2021-01-12 Nvidia Corporation Sparse convolutional neural network accelerator
EP3998539A1 (en) * 2016-12-30 2022-05-18 INTEL Corporation Deep learning hardware
CN107168927B (zh) * 2017-04-26 2020-04-21 北京理工大学 一种基于流水反馈滤波结构的稀疏傅里叶变换实现方法
TWI684141B (zh) * 2017-10-12 2020-02-01 英屬開曼群島商意騰科技股份有限公司 人工神經元中以非零封包加速乘法運算的裝置及方法
SG11201912745WA (en) * 2017-10-16 2020-01-30 Illumina Inc Deep learning-based splice site classification
US11295200B1 (en) * 2018-04-20 2022-04-05 Perceive Corporation Time-multiplexed dot products for neural network inference circuit
CN108932548A (zh) * 2018-05-22 2018-12-04 中国科学技术大学苏州研究院 一种基于fpga的稀疏度神经网络加速系统

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022065937A1 (ko) 2020-09-25 2022-03-31 주식회사 경동나비엔 가습된 공기를 제공받는 물 가열기
WO2024043696A1 (ko) * 2022-08-23 2024-02-29 삼성전자 주식회사 인공지능 모델을 이용하여 연산을 수행하는 전자 장치 및 전자 장치의 동작 방법

Also Published As

Publication number Publication date
US20200342294A1 (en) 2020-10-29
JP2020184309A (ja) 2020-11-12
CN111860800A (zh) 2020-10-30

Similar Documents

Publication Publication Date Title
KR20200125212A (ko) 신경망 가속 장치 및 그것의 동작 방법
US11461684B2 (en) Operation processing circuit and recognition system
KR20190055447A (ko) 연산 가속화가 적용된 신경망 모델의 생성 및 활용을 위한 장치 및 방법
CN110781923B (zh) 特征提取方法及装置
CN107480203A (zh) 一种针对相同及相似图片去重的图像数据清洗方法
CN111382867A (zh) 神经网络压缩的方法、数据处理的方法及相关装置
CN112149694B (zh) 一种基于卷积神经网络池化模块的图像处理方法、系统、存储介质及终端
CN109284700B (zh) 图像中多个人脸检测的方法、存储介质、设备及系统
CN111914213A (zh) 一种稀疏矩阵向量乘运算时间预测方法及系统
CN110677552B (zh) 一种基于完备分组基的无载体信息隐藏方法
US9015429B2 (en) Method and apparatus for an efficient hardware implementation of dictionary based lossless compression
CN109815199A (zh) 一种图片压缩算法的选取方法及装置
CN111639523B (zh) 目标检测方法、装置、计算机设备和存储介质
CN111222558B (zh) 图像处理方法及存储介质
CN116385297A (zh) 一种计算机图像处理系统
CN114625903A (zh) 一种图像检索方法和装置、图像检索设备
US11210105B1 (en) Data transmission between memory and on chip memory of inference engine for machine learning via a single data gathering instruction
CN111160517A (zh) 一种深度神经网络的卷积层量化方法及装置
CN113938751B (zh) 视频转场类型确定方法、设备及存储介质
CN113496228A (zh) 一种基于Res2Net、TransUNet和协同注意力的人体语义分割方法
JP4159761B2 (ja) Fftのためのインプレイスメモリ管理
CN112991141A (zh) 一种基于gpu并行加速的频域幸运成像方法
CN113343646A (zh) 数据转换方法和装置
US5943446A (en) Method and apparatus for increasing the speed of a full code book search in a quantizer encoder
JP2010244446A (ja) データ処理装置、データ処理方法およびプログラム

Legal Events

Date Code Title Description
A201 Request for examination