KR20200093404A - 신경망 가속기 및 그것의 동작 방법 - Google Patents

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

Info

Publication number
KR20200093404A
KR20200093404A KR1020190034583A KR20190034583A KR20200093404A KR 20200093404 A KR20200093404 A KR 20200093404A KR 1020190034583 A KR1020190034583 A KR 1020190034583A KR 20190034583 A KR20190034583 A KR 20190034583A KR 20200093404 A KR20200093404 A KR 20200093404A
Authority
KR
South Korea
Prior art keywords
tiled
feature map
result
bit width
partial sum
Prior art date
Application number
KR1020190034583A
Other languages
English (en)
Other versions
KR102233174B1 (ko
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 US16/751,503 priority Critical patent/US11475285B2/en
Publication of KR20200093404A publication Critical patent/KR20200093404A/ko
Application granted granted Critical
Publication of KR102233174B1 publication Critical patent/KR102233174B1/ko
Priority to US17/944,454 priority patent/US11960986B2/en

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/04Architecture, e.g. interconnection topology

Abstract

본 발명은 채널 루프 타일링(Channel Loop Tiling)을 기반으로 동작하는 신경망 가속기 및 그것의 동작 방법에 관한 것이다. 본 발명의 하나의 실시 예에 따른 신경망 가속기는 제1 타일링된 입력 특징 맵과 제1 타일링된 필터 데이터를 기반으로 제1 연산 결과를 산출하도록 구성된 연산기, 신경망 가속기제1 타일링된 입력 특징 맵의 제1 비트 폭보다 확장된 제2 비트 폭을 기반으로 신경망 가속기제1 연산 결과를 양자화하여 양자화 결과를 생성하도록 구성된 양자화기, 신경망 가속기양자화 결과를 압축하여 부분 합을 생성하도록 구성된 압축기, 및 신경망 가속기부분 합을 압축 해제하여 제2 연산 결과를 생성하도록 구성된 압축 해제기를 포함하고, 신경망 가속기연산기는 제2 타일링된 입력 특징 맵, 제2 타일링된 필터 데이터, 및 신경망 가속기제2 연산 결과를 기반으로 제3 연산 결과를 산출하고, 신경망 가속기제3 연산 결과에 기초하여 출력 특징 맵이 생성된다.

Description

신경망 가속기 및 그것의 동작 방법{NEURAL NETWORK ACCELERATOR AND OPERATING METHOD THEREOF}
본 발명은 반도체 장치에 관한 것으로써, 좀 더 상세하게는 신경망의 채널 루프 타일링(Channel Loop Tiling)을 기반으로 동작하는 신경망 가속기 및 그것의 동작 방법에 관한 것이다.
합성곱 신경망(CNN; Convolutional Neural Network)은 많은 AI(Artificial Intelligence) 응용 분야, 특히 이미지 인식, 검출 및 분할에 널리 사용된다. CNN의 정확도는 향상되었으나, 네트워크 크기, 계산 횟수 및 메모리 사용량이 증가되었다. 네트워크 크기를 줄이기 위한 많은 시도에도 불구하고 최첨단 CNN은 수 십에서 수 백 메가 바이트의 메모리를 필요로 한다. 신경망 가속기의 온 칩(on-chip) 메모리 용량은 증가하고 있으나, CNN을 감당하기에는 여전히 너무 작다.
CNN이 하드웨어 플랫폼에서 구현될 수 있도록 루프 타일링(Loop Tiling)이 수행될 수 있다. 루프 타일링은 CNN을 여러 블록으로 분할하는 것을 의미한다. CNN이 타일링되는 경우, 분할된 CNN의 블록은 온 칩 메모리에 수용될 수 있다. 즉, 루프 타일링은 비교적 큰 CNN이 신경망 가속기에서 구현될 수 있도록 할 수 있다. 그러나, 루프 타일링은 온 칩 메모리와 오프 칩 메모리 간에 반복적인 데이터 이동을 야기시킬 수 있다. 데이터 이동이 많은 경우 병목 현상이 발생되므로, 데이터 처리량 및 에너지 효율성이 감소될 수 있다. 또한, 채널 루프가 타일링됨에 따라 오류가 발생되는 경우, 신경망 가속기의 연산 정확도가 감소될 수 있다.
본 발명은 상술된 기술적 과제를 해결하기 위한 것으로써, 본 발명의 목적은 채널 루프 타일링에 따라 발생되는 오류로 인하여 감소되는 연산 정확도를 향상시키기 위한 신경망 가속기 및 그것의 동작 방법을 제공하는데 있다.
본 발명의 하나의 실시 예에 따른 신경망 가속기는 제1 타일링된 입력 특징 맵과 제1 타일링된 필터 데이터를 기반으로 제1 연산 결과를 산출하도록 구성된 연산기, 상기 제1 타일링된 입력 특징 맵의 제1 비트 폭보다 확장된 제2 비트 폭을 기반으로 상기 제1 연산 결과를 양자화하여 양자화 결과를 생성하도록 구성된 양자화기, 상기 양자화 결과를 압축하여 부분 합을 생성하도록 구성된 압축기, 및 상기 부분 합을 압축 해제하여 제2 연산 결과를 생성하도록 구성된 압축 해제기를 포함하고, 상기 연산기는 제2 타일링된 입력 특징 맵, 제2 타일링된 필터 데이터, 및 상기 제2 연산 결과를 기반으로 제3 연산 결과를 산출하고, 상기 제3 연산 결과에 기초하여 출력 특징 맵이 생성된다.
하나의 실시 예에 있어서, 상기 연산기는 상기 제2 타일링된 입력 특징 맵과 상기 제2 타일링된 필터 데이터를 곱하여 곱셈 결과를 생성하는 곱셈기 및 상기 곱셈 결과와 상기 제2 연산 결과를 더하여 상기 제3 연산 결과를 생성하는 누적기를 포함할 수 있다.
하나의 실시 예에 있어서, 상기 양자화기는 반올림을 통해 상기 제1 연산 결과를 양자화할 수 있다.
하나의 실시 예에 있어서, 상기 양자화 결과는 부호 비트와 정수 부분 및 소수 부분으로 구성된 나머지 비트들을 포함하고, 상기 정수 부분 및 상기 소수 부분 중 적어도 하나는 상기 제2 비트 폭에 따라 비트 폭이 확장될 수 있다.
하나의 실시 예에 있어서, 상기 압축기는 상기 양자화 결과의 상기 나머지 비트들 중 일부 비트들의 절대 값을 생성하도록 구성되는 절대 값 생성 로직, 및 상기 생성된 절대 값을 기반으로 런-렝스 인코딩(run-length encoding)을 수행하여 압축 비트들을 생성하도록 구성된 런-렝스 인코더를 포함할 수 있다.
하나의 실시 예에 있어서, 상기 일부 비트들은 상기 제1 비트 폭과 상기 제2 비트 폭 사이의 비트 폭 차이에 기초하여 상기 나머지 비트들 중 상위 비트부터 하위 비트의 순서로 선정될 수 있다.
하나의 실시 예에 있어서, 상기 부분 합은 상기 런-렝스 인코더로부터 생성된 상기 압축 비트들 및 상기 양자화 결과 중 상기 일부 비트들을 제외한 나머지 비트들을 포함할 수 있다.
하나의 실시 예에 있어서, 상기 압축기는 상기 생성된 부분 합을 외부 메모리에 저장하고, 상기 압축 해제기는 상기 외부 메모리로부터 상기 저장된 부분 합을 수신할 수 있다.
하나의 실시 예에 있어서, 상기 양자화기는 상기 제1 비트 폭에 기초하여 상기 제3 연산 결과를 양자화하여 상기 출력 특징 맵을 생성할 수 있다.
본 발명의 하나의 실시 예에 따른 채널 루프 타일링을 기반으로 동작하는 신경망 가속기의 동작 방법은 제1 타일링된 입력 특징 맵과 제1 타일링된 필터 데이터를 기반으로 제1 연산 결과를 생성하는 단계, 상기 제1 타일링된 입력 특징 맵의 제1 비트 폭보다 확장된 제2 비트 폭을 기반으로 상기 제1 연산 결과를 양자화하여 제1 양자화 결과를 생성하는 단계, 상기 제1 양자화 결과를 압축하여 제1 부분 합을 생성하는 단계, 상기 생성된 제1 부분 합을 외부 메모리에 저장하는 단계, 및 제2 타일링된 입력 특징 맵, 제2 타일링된 필터 데이터, 및 상기 외부 메모리로부터 제공된 상기 제1 부분 합을 기반으로 제2 연산 결과를 생성하는 단계를 포함한다.
하나의 실시 예에 있어서, 상기 제2 연산 결과를 생성하는 단계는 상기 제2 타일링된 입력 특징 맵과 상기 제2 타일링된 필터 데이터를 곱하여 곱셈 결과를 생성하는 단계 및 상기 곱셈 결과 및 상기 제1 부분 합을 더하여 상기 제2 연산 결과를 생성하는 단계를 포함할 수 있다.
하나의 실시 예에 있어서, 상기 제2 타일링된 입력 특징 맵 및 상기 제2 타일링된 필터 데이터가 마지막 데이터가 아닌 경우, 상기 제2 비트 폭을 기반으로 상기 제2 연산 결과를 양자화하여 제2 양자화 결과를 생성하는 단계, 상기 제2 양자화 결과를 압축하여 제2 부분 합을 생성하는 단계, 상기 생성된 제2 부분 합을 상기 외부 메모리에 저장하는 단계, 및 제3 타일링된 입력 특징 맵, 제3 타일링된 필터 데이터, 및 상기 외부 메모리로부터 제공된 상기 제2 부분 합을 기반으로 제3 연산 결과를 생성하는 단계를 더 포함할 수 있다.
하나의 실시 예에 있어서, 상기 제2 타일링된 입력 특징 맵 및 상기 제2 타일링된 필터 데이터가 마지막 데이터인 경우, 상기 제1 비트 폭을 기반으로 상기 제2 연산 결과를 양자화하여 제3 양자화 결과를 생성하는 단계 및 상기 제3 양자화 결과에 기초하여 출력 특징 맵을 생성하는 단계를 더 포함할 수 있다.
하나의 실시 예에 있어서, 상기 제1 양자화 결과는 부호 비트와 정수 부분 및 소수 부분으로 구성된 나머지 비트들을 포함하고, 상기 정수 부분 및 상기 소수 부분 중 적어도 하나는 상기 제2 비트 폭에 따라 비트 폭이 확장될 수 있다.
하나의 실시 예에 있어서, 상기 제1 부분 합을 생성하는 단계는 상기 제1 양자화 결과의 상기 나머지 비트들 중 일부 비트들의 절대 값을 생성하는 단계 및 상기 생성된 절대 값을 기반으로 런-렝스 인코딩을 수행하는 단계를 포함할 수 있다.
하나의 실시 예에 있어서, 상기 일부 비트들은 상기 제1 비트 폭과 상기 제2 비트 폭 사이의 비트 폭 차이에 기초하여 상기 나머지 비트들 중 상위 비트부터 하위 비트의 순서로 선정될 수 있다.
본 발명에 따르면, 채널 루프 타일링에 따라 발생되는 오류로 인하여 감소되는 연산 정확도의 손실을 복구하는 신경망 가속기를 제공할 수 있다.
또한, 본 발명에 따른 신경망 가속기는 외부 메모리의 사용량을 최소화하고 외부 메모리와의 통신 오버 헤드를 최소화할 수 있다.
도 1은 본 발명의 하나의 실시 예에 따른 가속기 시스템의 블록도를 보여준다.
도 2는 도 1의 신경망 가속기가 출력 특징 맵을 생성하는 예시를 보여준다.
도 3은 도 1의 신경망 가속기의 블록도를 보여준다.
도 4는 도 3의 양자화기와 압축기의 동작의 예시를 보여주는 도면이다.
도 5는 본 발명의 실시 예에 따른 비트 폭 확장의 효과의 예시를 보여주는 그래프이다.
도 6은 본 발명의 실시 예에 따른 절대 값 생성의 효과의 예시를 보여주는 그래프이다.
도 7은 본 발명의 실시 예에 따른 신경망 가속기의 동작의 예시를 보여주는 순서도이다.
이하, 첨부된 도면들을 참조하여 본 발명의 실시 예들이 상세하게 설명된다. 이하의 설명에서, 상세한 구성들 및 구조들과 같은 세부적인 사항들은 단순히 본 발명의 실시 예들의 전반적인 이해를 돕기 위하여 제공된다. 그러므로 본 발명의 기술적 사상 및 범위로부터의 벗어남 없이 본문에 기재된 실시 예들의 변형들은 통상의 기술자 의해 수행될 수 있다. 더욱이, 명확성 및 간결성을 위하여 잘 알려진 기능들 및 구조들에 대한 설명들은 생략된다. 본 명세서에서 사용된 용어들은 본 발명의 기능들을 고려하여 정의된 용어들이며, 특정 기능에 한정되지 않는다. 용어들의 정의는 상세한 설명에 기재된 사항을 기반으로 결정될 수 있다.
이하의 도면들 또는 상세한 설명에서의 모듈들은 도면에 도시되거나 또는 상세한 설명에 기재된 구성 요소 이외에 다른 것들과 연결될 수 있다. 모듈들 또는 구성 요소들 사이의 연결은 각각 직접적 또는 비직접적일 수 있다. 모듈들 또는 구성 요소들 사이의 연결은 각각 통신에 의한 연결이거나 또는 물리적인 접속일 수 있다.
상세한 설명에서 사용되는 부 또는 유닛(unit), 모듈(module), 계층(layer), 로직(logic) 등의 용어를 참조하여 설명되는 구성 요소들은 소프트웨어, 또는 하드웨어, 또는 그것들의 조합의 형태로 구현될 수 있다. 예를 들어, 소프트웨어는 기계 코드, 펌웨어, 임베디드 코드, 및 애플리케이션 소프트웨어일 수 있다. 예를 들어, 하드웨어는 전기 회로, 전자 회로, 프로세서, 컴퓨터, 집적 회로, 집적 회로 코어들, 압력 센서, 관성 센서, 멤즈(Micro Electro Mechanical System; MEMS), 수동 소자, 또는 그것들의 조합의 형태로 구현될 수 있다.
다르게 정의되지 않는 한, 본문에서 사용되는 기술적 또는 과학적인 의미를 포함하는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 지닌 자에 의해 이해될 수 있는 의미를 갖는다. 일반적으로 사전에서 정의된 용어들은 관련된 기술 분야에서의 맥락적 의미와 동등한 의미를 갖도록 해석되며, 본문에서 명확하게 정의되지 않는 한, 이상적 또는 과도하게 형식적인 의미를 갖도록 해석되지 않는다.
도 1은 본 발명의 하나의 실시 예에 따른 가속기 시스템의 블록도를 보여준다. 가속기 시스템(1000)은 CNN을 기반으로 동작할 수 있다. 예를 들어, 가속기 시스템(1000)은 입력 특징 맵(input feature map)과 필터(filter)(또는, 가중치(weight), 커널(kernel)) 데이터를 기반으로 출력 특징 맵(OFM; output feature map)을 생성할 수 있다.
입력 특징 맵과 필터 데이터의 크기가 큰 경우, 가속기 시스템(1000)은 채널 루프 타일링을 수행할 수 있다. 채널 루프 타일링에 따라 입력 특징 맵과 필터 데이터는 복수의 블록들로 분할될 수 있다. 가속기 시스템(1000)은 분할된 입력 특징 맵의 블록들과 분할된 필터 데이터의 블록들을 순차적으로 처리하여 출력 특징 맵(OFM)을 생성할 수 있다. 이하에서는, 분할된 입력 특징 맵의 하나의 블록을 타일링된 입력 특징 맵(TIFM)이라 하고, 분할된 필터 데이터의 하나의 블록을 타일링된 필터 데이터(TFD)라 지칭한다. 이에 따라, 가속기 시스템(1000)은 타일링된 입력 특징 맵(TIFM) 및 타일링된 필터 데이터(TFD)를 기반으로 출력 특징 맵(OFM)을 생성할 수 있다.
가속기 시스템(1000)은 신경망 가속기(100), 제1 메모리(200), 제2 메모리(300), 및 프로세서(400)를 포함한다. 신경망 가속기(100)는 프로세서(400)로부터의 제어 신호(CTRL)에 기초하여 동작할 수 있다. 제어 신호(CTRL)에 응답하여, 신경망 가속기(100)는 출력 특징 맵(OFM)을 생성할 수 있다.
구체적으로, 신경망 가속기(100)는 제1 메모리(200)로부터 타일링된 입력 특징 맵(TIFM) 및 타일링된 필터 데이터(TFD)를 수신할 수 있다. 신경망 가속기(100)는 타일링된 입력 특징 맵(TIFM) 및 타일링된 필터 데이터(TFD)를 기반으로 부분 합(PS; Partial Sum)을 생성할 수 있다. 여기서, 부분 합(PS)은 입력 특징 맵과 필터 데이터의 합성곱(convolution) 연산 과정에서 산출되는 데이터일 수 있다. 신경망 가속기(100)는 생성된 부분 합(PS)을 제2 메모리(300)에 저장할 수 있다. 이후, 제1 메모리(200)로부터 새로운 타일링된 입력 특징 맵(TIFM) 및 새로운 타일링된 필터 데이터(TFD)가 제공되는 경우, 신경망 가속기(100)는 타일링된 입력 특징 맵(TIFM), 타일링된 필터 데이터(TFD), 및 제2 메모리(300)로부터 제공된 이전 부분 합(PPS)을 기반으로 새로운 부분 합(PS)을 생성할 수 있다. 여기서, 이전 부분 합(PPS)은 제2 메모리(300)에 저장된 부분 합(PS)과 동일한 데이터일 수 있다. 또는, 신경망 가속기(100)는 타일링된 입력 특징 맵(TIFM), 타일링된 필터 데이터(TFD), 및 이전 부분 합(PPS)을 기반으로 출력 특징 맵(OFM)을 생성할 수 있다.
제1 메모리(200)는 입력 특징 맵 및 필터 데이터를 저장할 수 있다. 이 경우, 입력 특징 맵 및 필터 데이터는 프로세서(400)에 의해 타일링된 형태로 저장될 수 있다. 제1 메모리(200)는 신경망 가속기(100)로 타일링된 입력 특징 맵(TIFM) 및 타일링된 필터 데이터(TFD)를 제공할 수 있다.
제2 메모리(300)는 신경망 가속기(100)로부터 제공되는 부분 합(PS)을 저장할 수 있다. 제2 메모리(300)는 신경망 가속기(100)의 요청에 따라 저장된 부분 합(PS)을 출력하여 이전 부분 합(PPS)으로서 신경망 가속기(100)로 제공할 수 있다. 제2 메모리(300)는 신경망 가속기(100)로부터 제공되는 출력 특징 맵(OFM)을 저장할 수 있다. 출력 특징 맵(OFM)은 CNN의 다른 계층(layer)에서 입력 특징 맵으로 이용될 수 있다. 즉, 도 1에서는 제1 메모리(200) 및 제2 메모리(300)가 별도로 존재하는 것으로 도시되었으나, 본 발명이 이에 한정되는 것은 아니다. 제1 메모리(200) 및 제2 메모리(300)는 하나의 메모리로서 구현될 수 있다.
예를 들어, 제1 메모리(200) 및 제2 메모리(300)는 DRAM(Dynamic RAM), SRAM (Static RAM) 등과 같은 휘발성 메모리 또는 ROM (Read only Memory), 플래시 메모리 등과 같은 불휘발성 메모리로 구현될 수 있다.
도 2는 도 1의 신경망 가속기(100)가 출력 특징 맵을 생성하는 예시를 보여준다. 도 2를 참조하면, 입력 특징 맵은 제1 타일링된 입력 특징 맵(TIFM1) 및 제2 타일링된 입력 특징 맵(TIFM2)으로 분할되고, 필터 데이터는 제1 타일링된 필터 데이터(TFD1) 및 제2 타일링된 필터 데이터(TFD2)로 분할될 수 있다.
제1 타일링된 입력 특징 맵(TIFM1) 및 제1 타일링된 필터 데이터(TFD1)가 제공되는 경우, 신경망 가속기(100)는 제1 타일링된 입력 특징 맵(TIFM1) 및 제1 타일링된 필터 데이터(TFD1)를 기반으로 부분 합(PS)을 생성할 수 있다. 생성된 부분 합(PS)은 외부 메모리(예를 들어, 도 1의 제2 메모리(300))에 저장될 수 있다.
이후, 제2 타일링된 입력 특징 맵(TIFM2) 및 제2 타일링된 필터 데이터(TFD2)가 제공되는 경우, 신경망 가속기(100)는 제2 타일링된 입력 특징 맵(TIFM2), 제2 타일링된 필터 데이터(TFD2), 및 외부 메모리로부터의 이전 부분 합(PPS)을 기반으로 출력 특징 맵(OFM)을 생성할 수 있다. 이 경우, 이전 부분 합(PPS)은 부분 합(PS)과 동일한 데이터일 수 있다.
도 2에서는 첫 번째 생성된 부분 합(PS)으로부터 출력 특징 맵(OFM)이 생성되는 것으로 설명되었으나, 본 발명이 이에 한정되는 것은 아니다. 예를 들어, 입력 특징 맵이 3개의 타일링된 입력 특징 맵으로 분할되는 경우, 신경망 가속기(100)는 첫 번째 부분 합(PS)을 기반으로 두 번째 부분 합(PS)을 생성할 수 있다. 신경망 가속기(100)는 두 번째 부분 합(PS)을 기반으로 출력 특징 맵(OFM)을 생성할 수 있다. 즉, 신경망 가속기(100)는 타일링 횟수에 따라 부분 합(PS)을 단계적으로 생성하고, 생성된 부분 합(PS)을 기반으로 출력 특징 맵(OFM)을 생성할 수 있다.
상술한 바와 같이, 가속기 시스템(1000)은 채널 루프 타일링을 기반으로 입력 특징 맵 및 필터 데이터를 타일링할 수 있다. 입력 특징 맵 및 필터 데이터가 타일링되는 경우, 입력 특징 맵 및 필터 데이터의 크기가 크더라도 데이터가 신경망 가속기(100)의 온 칩 메모리에 수용될 수 있다. 채널 루프 타일링을 기반으로 출력 특징 맵(OFM)이 생성되는 경우, 신경망 가속기(100)로부터 부분 합(PS)이 생성될 수 있고, 생성된 부분 합(PS)은 외부 메모리에 저장될 수 있다. 외부 메모리에 저장된 부분 합(PS)은 출력 특징 맵(OFM)을 생성하기 위해 이전 부분 합(PPS)으로서 신경망 가속기(100)로 제공될 수 있다. 이에 따라, 부분 합(PS)을 저장하기 위한 외부 메모리의 공간이 요구되고, 신경망 가속기(100)와 외부 메모리 사이의 부분 합(PS) 전송에 따른 통신 오버 헤드가 발생될 수 있다.
본 발명의 실시 예에 따른 신경망 가속기(100)는 부분 합(PS)을 저장하기 위한 외부 메모리의 필요 공간을 최소화할 수 있다. 이에 따라, 신경망 가속기(100)와 외부 메모리 사이의 통신 오버 헤드의 증가를 최소화할 수 있다.
또한, 채널 루프 타일링에 따라 부분 합(PS)이 생성되는 경우, 사용되는 메모리 용량 및 통신 오버 헤드를 감소시키기 위해 양자화 및 압축이 수행될 수 있다. 이 경우, 양자화 및 압축에 따라 신경망 가속기(100)의 연산 정확도가 감소될 수 있다. 본 발명의 실시 예에 따른 신경망 가속기(100)는 입력 특징 맵 및 필터 데이터가 타일링됨에 따라 감소되는 연산 정확도를 복구시킬 수 있다.
이하에서는, 도 3 내지 도 7을 참조하여 신경망 가속기(100)의 상세한 동작이 설명될 것이다.
도 3은 도 1의 신경망 가속기의 블록도를 보여준다. 도 3을 참조하면, 신경망 가속기(100)는 연산기(110), 양자화기(120), 압축기(130), 및 압축 해제기(140)를 포함할 수 있다. 연산기(110)는 곱셈기(111) 및 누적기(112)를 포함할 수 있다.
연산기(110)는 타일링된 입력 특징 맵(TIFM), 타일링된 필터 데이터(TFD), 및 압축 해제기(140)로부터의 이전 연산 결과(POR)를 기반으로 연산 결과(OR)를 생성할 수 있다. 타일링된 입력 특징 맵(TIFM) 및 타일링된 필터 데이터(TFD)가 첫 번째로 제공되는 경우, 이전 연산 결과(POR)가 존재하지 않으므로, 연산기(110)는 타일링된 입력 특징 맵(TIFM) 및 타일링된 필터 데이터(TFD)를 기반으로 연산 결과(OR)를 생성할 수 있다.
구체적으로, 곱셈기(111)는 타일링된 입력 특징 맵(TIFM) 및 타일링된 필터 데이터(TFD)를 곱하여 곱셈 결과(MR)를 생성할 수 있다. 누적기(112)는 곱셈 결과(MR)와 이전 연산 결과(POR)를 더하여 연산 결과(OR)를 생성할 수 있다. 이전 연산 결과(POR)가 존재하지 않는 경우, 누적기(112)는 곱셈 결과(MR)를 연산 결과(OR)로서 생성할 수 있다.
곱셈기(111) 및 누적기(112)의 비트 폭은 타일링된 입력 특징 맵(TIFM) 및 타일링된 필터 데이터(TFD)의 비트 폭(bit width)에 따라 설정될 수 있다. 예를 들어, 타일링된 입력 특징 맵(TIFM) 및 타일링된 필터 데이터(TFD)의 비트 폭이 각각 8-비트인 경우, 곱셈기(111)의 비트 폭은 8-비트 곱셈을 수행할 수 있도록 설정될 수 있다. 8-비트 곱셈에 따라 곱셈기(111)로부터 16-비트의 곱셈 결과(MR)가 출력되는 경우, 누적기(112)의 비트 폭은 16-비트 덧셈을 수행할 수 있도록 설정될 수 있다. 즉, 곱셈기(111) 및 누적기(112)의 비트 폭은 오버 플로우(over flow)를 방지할 수 있는 범위로 설정될 수 있다.
양자화기(120)는 연산기(110)로부터 연산 결과(OR)를 수신할 수 있다. 양자화기(120)는 연산 결과(OR)를 미리 정해진 비트 폭을 기준으로 양자화 하거나 확장된(extended) 비트 폭을 기준으로 양자화할 수 있다. 여기서, 미리 정해진 비트 폭 및 확장된 비트 폭은 연산 결과(OR)의 비트 폭보다 작을 수 있고, 확장된 비트 폭은 미리 정해진 비트 폭보다 클 수 있다. 미리 정해진 비트 폭은 타일링된 입력 특징 맵(TIFM)의 비트 폭 또는 출력 특징 맵(OFM)의 비트 폭과 동일할 수 있다. 이 경우, 타일링된 입력 특징 맵(TIFM)의 비트 폭은 출력 특징 맵(OFM)의 비트 폭과 동일할 수 있다. 예를 들어, 연산 결과(OR)의 비트 폭은 16-비트, 미리 정해진 비트 폭은 8-비트, 확장된 비트 폭은 10-비트일 수 있다.
예를 들어, 출력 특징 맵(OFM)을 생성하기 위해, 마지막 타일링된 입력 특징 맵(TIFM)과 마지막 타일링된 필터 데이터(TFD)가 제공되는 경우, 양자화기(120)는 연산 결과(OR)를 미리 정해진 비트 폭을 기준으로 양자화하여 양자화 결과(QR)를 생성할 수 있다. 이 경우, 출력 특징 맵(OFM)은 양자화 결과(QR)를 기반으로 생성될 수 있다. 제공되는 타일링된 입력 특징 맵(TIFM)과 타일링된 필터 데이터(TFD)가 마지막이 아닌 경우, 양자화기(120)는 확장된 비트 폭을 기준으로 연산 결과(OR)를 양자화하여 양자화 결과(QR)를 생성할 수 있다.
양자화기(120)의 양자화 동작에 대한 상세한 설명은 도 4 및 도 5를 참조하여 후술될 것이다.
압축기(130)는 양자화 결과(QR)를 압축하여 부분 합(PS)을 생성할 수 있다. 이 경우, 부분 합(PS)의 비트 수는 양자화 결과(QR)의 비트 수보다 작을 수 있다. 압축 과정에서, 압축기(130)는 양자화 결과(QR)의 비트들을 일부 비트들과 나머지 비트들(RB)로 분리할 수 있다. 압축기(130)는 일부 비트들에 대하여 인코딩을 수행하여 압축 비트들(CTB)을 생성할 수 있다. 예를 들어, 압축기(130)는 일부 비트들에 대하여 런-렝스 인코딩(run-length encoding)을 수행할 수 있다. 이에 따라, 압축기(130)로부터 생성되는 부분 합(PS)은 나머지 비트들(RB) 및 압축 비트들(CTB)을 포함할 수 있다.
압축기(130)의 압축 동작에 대한 상세한 설명은 도 4 및 도 6을 참조하여 후술될 것이다.
압축 해제기(140)는 이전 부분 합(PPS)을 압축 해제하여 이전 연산 결과(POR)를 생성할 수 있다. 부분 합(PS)이 나머지 비트들(RB) 및 압축 비트들(CTB)을 포함하므로, 이전 부분 합(PPS)은 이전 나머지 비트들(PRB) 및 이전 압축 비트들(PCTB)을 포함할 수 있다. 이 경우, 이전 나머지 비트들(PRB)은 나머지 비트들(RB)과 동일하고, 이전 압축 비트들(PCTB)은 압축 비트들(CTB)과 동일할 수 있다.
압축 해제기(140)는 압축기(130)의 압축 방식을 기반으로 이전 부분 합(PPS)을 압축 해제할 수 있다. 예를 들어, 압축 해제기(140)는 이전 압축 비트들(PCTB)에 대하여 런-렝스 디코딩을 수행하여 일부 비트들을 생성할 수 있다. 압축 해제기(140)는 생성된 일부 비트들 및 이전 나머지 비트들(PRB)을 결합하여 이전 연산 결과(POR)를 생성할 수 있다. 이 경우, 압축 해제기(140)는 곱셈 결과(MR)의 비트 폭과 동일한 비트 폭으로 이전 연산 결과(POR)를 생성할 수 있다.
도 4는 도 3의 양자화기와 압축기의 동작의 예시를 보여주는 도면이다. 도 3 및 도 4를 참조하면, 연산기(110)로부터 생성되는 연산 결과(OR)는 부호 비트(s)와 나머지 비트들(db)을 포함할 수 있다. 예를 들어, 연산 결과(OR)는 고정 소수점 방식으로 표현될 수 있다. 이 경우, 나머지 비트들(db)은 정수 부분(integer part) 및 소수 부분(fractional part)으로 구성될 수 있다. 정수 부분은 연산 결과(OR)가 나타낼 수 있는 숫자의 범위(range)를 나타내고, 소수 부분은 정밀도(precision)를 나타낼 수 있다.
양자화기(120)는 연산 결과(OR)를 비트 확장 및 반올림하여 양자화할 수 있다. 양자화기(120)는 미리 정해진 비트 폭보다 추가 비트 폭만큼 비트 폭을 증가시켜 확장된 비트 폭으로 연산 결과(OR)를 양자화할 수 있다. 이 경우, 정수 부분의 비트 폭이 증가되거나 소수 부분의 비트 폭이 증가될 수 있다. 예를 들어, 정수 부분이 2-비트 확장될 수 있다. 또는, 정수 부분 및 소수 부분이 각각 1-비트 확장될 수 있다. 추가 비트 폭에 따라 비트 폭이 확장되는 경우, 연산의 정확도가 증가될 수 있다. 따라서, 원하는 연산의 정확도에 따라 추가 비트 폭이 달라질 수 있다.
연산 결과(OR)가 양자화 되는 경우, 양자화 결과(QR)가 생성될 수 있다. 양자화 결과(QR)는 부호 비트(s), 일부 비트들(tb) 및 나머지 비트들(rb)을 포함할 수 있다. 압축기(130)는 양자화 결과(QR)로부터 일부 비트들(tb)을 분리할 수 있다. 압축기(130)는 부호 비트(s)와 나머지 비트들(rb)을 연결하여 나머지 비트들(RB)을 생성할 수 있다. 이 경우, 일부 비트들(tb)은 부호 비트(s)를 제외한 비트들 중 상위 비트부터 하위 비트의 순서로 선정될 수 있다. 일부 비트들(tb)의 비트 폭은 추가 비트 폭과 동일할 수 있다.
압축기(130)는 절대 값 생성 로직(131)을 통해 일부 비트들(tb)의 절대 값을 생성할 수 있다. 절대 값 생성 로직(131)은 압축기(130)에 포함될 수 있다. 예를 들어, 절대 값 생성 로직(131)는 부호 비트(s)와 일부 비트들(tb)에 대한 배타적 논리합(XOR)을 통해 일부 비트들(tb)에 대한 절대 값을 산출할 수 있다. 이에 따라, 절대 값 비트들(avb)이 생성될 수 있다.
압축기(130)는 런 렝스 인코더(132)를 통해 절대 값 비트들(avb)을 인코딩하여 압축 비트들(CTB)을 생성할 수 있다. 런 렝스 인코더(132)는 압축기(130)에 포함될 수 있다. 예를 들어, 절대 값 비트들(avb)이 '00000'인 경우, 런 렝스 인코더(132)는 런(run) 값으로 '0'을 생성하고, 렝스(length) 값으로 '5'를 생성할 수 있다. 이에 따라, 생성되는 압축 비트들(CTB)의 비트 수는 절대 값 비트들(avb)의 비트 수보다 감소될 수 있다.
압축기(130)로부터 생성된 나머지 비트들(RB) 및 압축 비트들(CTB)은 출력 버퍼(150)에 저장될 수 있다. 출력 버퍼(150)는 압축기(130)를 통해 생성된 부분 합(PS)이 외부 메모리로 제공되기 전에 임시로 저장되는 메모리일 수 있다. 즉, 신경망 가속기(100)는 출력 버퍼(150)를 더 포함할 수 있으나, 본 발명이 이에 한정되는 것은 아니다.
도 5는 본 발명의 실시 예에 따른 비트 폭 확장의 효과의 예시를 보여주는 그래프이다. 도 5를 참조하면, 가로축은 채널 타일의 개수를 나타내고, 세로축은 연산의 정확도를 나타낸다. 비트 폭이 확장되지 않은 경우와 비교하여 비트 폭이 확장된 경우에 연산의 정확도가 증가될 수 있다. 정수 부분이 1-비트 확장되는 경우와 비교하여 소수 부분이 1-비트 확장된 경우에 연산의 정확도가 증가될 수 있다. 또한, 확장되는 비트 수가 증가할수록 연산의 정확도가 증가될 수 있다.
비트 폭이 확장되지 않은 경우, 채널 타일의 개수가 클수록 연산의 정확도가 감소될 수 있다. 이는, 채널 타일의 개수가 클수록 양자화 과정이 증가되고, 비트 수 감소 및 반올림 등의 영향으로 오류 발생이 증가하기 때문이다. 비트 폭이 확장되는 경우, 채널 타일의 개수가 크더라도 연산의 정확도가 유지될 수 있다. 따라서, 본 발명의 실시 예에 따른 양자화 과정에서 비트 폭이 확장되는 경우, 연산의 정확도 감소가 복구될 수 있다.
도 6은 본 발명의 실시 예에 따른 절대 값 생성의 효과의 예시를 보여주는 그래프이다. 도 6을 참조하면, 가로축은 양자화 결과(QR)의 비트 위치를 나타내고, 세로축은 각각의 비트가 '1' 값일 확률을 나타낸다. 구체적으로, 도 6에는 소수 부분(lP) 및 정수 부분(FP)에서 각각 1-비트씩 확장되어 생성된 양자화 결과(QR)가 도시된다.
부호 비트가 제외되는 경우, 양자화 결과(QR)의 최상위 비트(MSB)부터 최하위 비트(LSB)까지의 비트가 '1' 값일 확률은 약 45%일 수 있다. 반면에, 양자화 결과(QR)의 절대 값의 비트 값은 상위 비트일수록 '1' 값일 확률이 감소된다. 즉, 양자화 결과(QR)의 상위 비트들로부터 절대 값을 생성하는 경우, 연속되는 '0' 값을 가지는 비트들이 생성될 확률이 클 수 있다.
이에 따라, 압축기(130)는 양자화 결과(QR)의 상위 비트부터 하위 비트의 순서로 일부 비트들(tb)을 선정하고, 일부 비트들(tb)의 절대 값을 생성할 수 있다. 따라서, 절대 값 비트들(avb)은 연속되는 '0' 값을 가지는 비트들을 포함할 수 있다. 이 경우, 런 렝스 인코딩에 따른 압축 효율이 향상될 수 있다. 압축 효율이 향상되는 경우, 부분 합(PS)을 저장하는 외부 메모리의 사용량이 감소되고, 외부 메모리와 신경망 가속기(100) 사이의 통신 오버 헤드가 감소될 수 있다.
도 7은 본 발명의 실시 예에 따른 신경망 가속기의 동작의 예시를 보여주는 순서도이다. 도 3 및 도 7을 참조하면, S101 단계에서, 신경망 가속기(100)는 타일링된 입력 특징 맵(TIFM) 및 타일링된 필터 데이터(TFD)를 수신할 수 있다. S102 단계에서, 신경망 가속기(100)는 수신된 데이터가 첫 번째로 수신되었는지 여부를 판별할 수 있다. 수신된 데이터가 첫 번째로 수신된 데이터인 경우, S103 단계에서, 신경망 가속기(100)는 타일링된 입력 특징 맵(TIFM) 및 타일링된 필터 데이터(TFD)를 기반으로 연산 결과(OR)를 생성할 수 있다. 예를 들어, 연산 결과(OR)는 타일링된 입력 특징 맵(TIFM)과 타일링된 필터 데이터(TFD)의 곱셈 결과(MR)일 수 있다.
S104 단계에서, 신경망 가속기(100)는 확장된 비트 폭에 따라 연산 결과(OR)를 양자화할 수 있다. 이 경우, 신경망 가속기(100)는 반올림을 통해 연산 결과(OR)를 양자화할 수 있다. 확장된 비트 폭은 원하는 연산의 정확도를 고려하여 미리 결정될 수 있다.
S105 단계에서, 신경망 가속기(100)는 양자화 결과(QR)를 압축하여 부분 합(PS)을 생성할 수 있다. 신경망 가속기(100)는, 도 4에서 설명된 바와 같이, 양자화 결과(QR) 중 일부 비트들의 절대 값을 생성하고, 생성된 절대 값 비트들에 대하여 런 렝스 인코딩을 수행하여 양자화 결과(QR)를 압축할 수 있다.
S106 단계에서, 신경망 가속기(100)는 생성된 부분 합(PS)을 외부 메모리에 저장할 수 있다. 이후, S101 단계에서, 신경망 가속기(100)는 타일링된 입력 특징 맵(TIFM) 및 타일링된 필터 데이터(TFD)를 수신할 수 있다. 이 경우, 수신되는 타일링된 입력 특징 맵(TIFM) 및 타일링된 필터 데이터(TFD)는 첫 번째로 수신되는 데이터와 다를 수 있다.
수신된 데이터가 첫 번째로 수신된 데이터가 아닌 경우, S107 단계에서, 신경망 가속기(100)는 타일링된 입력 특징 맵(TIFM), 타일링된 필터 데이터(TFD), 및 외부 메모리로부터의 부분 합(PS)을 기반으로 연산 결과(OR)를 생성할 수 있다. 이 경우, 외부 메모리로부터의 부분 합(PS)은 이전 부분 합(PPS)으로서 신경망 가속기(100)로 전송될 수 있다.
S108 단계에서, 신경망 가속기(100)는 타일링된 입력 특징 맵(TIFM) 및 타일링된 필터 데이터(TFD)가 마지막 수신 데이터인지 여부를 판별할 수 있다. 수신된 데이터가 마지막 수신 데이터가 아닌 경우, 신경망 가속기(100)는 S104 내지 S106 단계들을 통해 부분 합(PS)을 생성하고, 생성된 부분 합(PS)을 외부 메모리에 저장할 수 있다.
수신된 데이터가 마지막 수신 데이터인 경우, S109 단계에서, 신경망 가속기(100)는 연산 결과(OR)를 기반으로 출력 특징 맵(OFM)을 출력할 수 있다. 예를 들어, 신경망 가속기(100)는 연산 결과(OR)를 미리 정해진 비트 폭에 따라 양자화하여 출력 특징 맵(OFM)을 생성할 수 있다. 생성된 출력 특징 맵(OFM)은 외부 메모리에 저장될 수 있다.
상술된 내용은 본 발명을 실시하기 위한 구체적인 실시 예들이다. 본 발명은 상술된 실시 예들뿐만 아니라, 단순하게 설계 변경되거나 용이하게 변경할 수 있는 실시 예들 또한 포함할 것이다. 또한, 본 발명은 실시 예들을 이용하여 용이하게 변형하여 실시할 수 있는 기술들도 포함될 것이다. 따라서, 본 발명의 범위는 상술된 실시 예들에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 할 것이다.
100: 신경망 가속기
110: 연산기
111: 곱셈기
112: 누적기
120: 양자화기
130: 압축기
140: 압축 해제기
150: 출력 버퍼
200: 제1 메모리
300: 제2 메모리
400: 프로세서

Claims (16)

  1. 제1 타일링된 입력 특징 맵과 제1 타일링된 필터 데이터를 기반으로 제1 연산 결과를 산출하도록 구성된 연산기;
    상기 제1 타일링된 입력 특징 맵의 제1 비트 폭보다 확장된 제2 비트 폭을 기반으로 상기 제1 연산 결과를 양자화하여 양자화 결과를 생성하도록 구성된 양자화기;
    상기 양자화 결과를 압축하여 부분 합을 생성하도록 구성된 압축기; 및
    상기 부분 합을 압축 해제하여 제2 연산 결과를 생성하도록 구성된 압축 해제기를 포함하고,
    상기 연산기는 제2 타일링된 입력 특징 맵, 제2 타일링된 필터 데이터, 및 상기 제2 연산 결과를 기반으로 제3 연산 결과를 산출하고,
    상기 제3 연산 결과에 기초하여 출력 특징 맵이 생성되는 신경망 가속기.
  2. 제 1 항에 있어서,
    상기 연산기는,
    상기 제2 타일링된 입력 특징 맵과 상기 제2 타일링된 필터 데이터를 곱하여 곱셈 결과를 생성하는 곱셈기; 및
    상기 곱셈 결과와 상기 제2 연산 결과를 더하여 상기 제3 연산 결과를 생성하는 누적기를 포함하는 신경망 가속기.
  3. 제 1 항에 있어서,
    상기 양자화기는 반올림을 통해 상기 제1 연산 결과를 양자화하는 신경망 가속기.
  4. 제 1 항에 있어서,
    상기 양자화 결과는 부호 비트와 정수 부분 및 소수 부분으로 구성된 나머지 비트들을 포함하고,
    상기 정수 부분 및 상기 소수 부분 중 적어도 하나는 상기 제2 비트 폭에 따라 비트 폭이 확장된 신경망 가속기.
  5. 제 4 항에 있어서,
    상기 압축기는,
    상기 양자화 결과의 상기 나머지 비트들 중 일부 비트들의 절대 값을 생성하도록 구성되는 절대 값 생성 로직; 및
    상기 생성된 절대 값을 기반으로 런-렝스 인코딩(run-length encoding)을 수행하여 압축 비트들을 생성하도록 구성된 런-렝스 인코더를 포함하는 신경망 가속기.
  6. 제 5 항에 있어서,
    상기 일부 비트들은 상기 제1 비트 폭과 상기 제2 비트 폭 사이의 비트 폭 차이에 기초하여 상기 나머지 비트들 중 상위 비트부터 하위 비트의 순서로 선정되는 신경망 가속기.
  7. 제 5 항에 있어서,
    상기 부분 합은 상기 런-렝스 인코더로부터 생성된 상기 압축 비트들 및 상기 양자화 결과 중 상기 일부 비트들을 제외한 나머지 비트들을 포함하는 신경망 가속기.
  8. 제 1 항에 있어서,
    상기 압축기는 상기 생성된 부분 합을 외부 메모리에 저장하고,
    상기 압축 해제기는 상기 외부 메모리로부터 상기 저장된 부분 합을 수신하는 신경망 가속기.
  9. 제 1 항에 있어서,
    상기 양자화기는 상기 제1 비트 폭에 기초하여 상기 제3 연산 결과를 양자화하여 상기 출력 특징 맵을 생성하는 신경망 가속기.
  10. 채널 루프 타일링을 기반으로 동작하는 신경망 가속기의 동작 방법에 있어서,
    제1 타일링된 입력 특징 맵과 제1 타일링된 필터 데이터를 기반으로 제1 연산 결과를 생성하는 단계;
    상기 제1 타일링된 입력 특징 맵의 제1 비트 폭보다 확장된 제2 비트 폭을 기반으로 상기 제1 연산 결과를 양자화하여 제1 양자화 결과를 생성하는 단계;
    상기 제1 양자화 결과를 압축하여 제1 부분 합을 생성하는 단계;
    상기 생성된 제1 부분 합을 외부 메모리에 저장하는 단계; 및
    제2 타일링된 입력 특징 맵, 제2 타일링된 필터 데이터, 및 상기 외부 메모리로부터 제공된 상기 제1 부분 합을 기반으로 제2 연산 결과를 생성하는 단계를 포함하는 동작 방법.
  11. 제 10 항에 있어서,
    상기 제2 연산 결과를 생성하는 단계는,
    상기 제2 타일링된 입력 특징 맵과 상기 제2 타일링된 필터 데이터를 곱하여 곱셈 결과를 생성하는 단계; 및
    상기 곱셈 결과 및 상기 제1 부분 합을 더하여 상기 제2 연산 결과를 생성하는 단계를 포함하는 동작 방법.
  12. 제 10 항에 있어서,
    상기 제2 타일링된 입력 특징 맵 및 상기 제2 타일링된 필터 데이터가 마지막 데이터가 아닌 경우,
    상기 제2 비트 폭을 기반으로 상기 제2 연산 결과를 양자화하여 제2 양자화 결과를 생성하는 단계;
    상기 제2 양자화 결과를 압축하여 제2 부분 합을 생성하는 단계;
    상기 생성된 제2 부분 합을 상기 외부 메모리에 저장하는 단계; 및
    제3 타일링된 입력 특징 맵, 제3 타일링된 필터 데이터, 및 상기 외부 메모리로부터 제공된 상기 제2 부분 합을 기반으로 제3 연산 결과를 생성하는 단계를 더 포함하는 동작 방법.
  13. 제 10 항에 있어서,
    상기 제2 타일링된 입력 특징 맵 및 상기 제2 타일링된 필터 데이터가 마지막 데이터인 경우,
    상기 제1 비트 폭을 기반으로 상기 제2 연산 결과를 양자화하여 제3 양자화 결과를 생성하는 단계; 및
    상기 제3 양자화 결과에 기초하여 출력 특징 맵을 생성하는 단계를 더 포함하는 동작 방법.
  14. 제 10 항에 있어서,
    상기 제1 양자화 결과는 부호 비트와 정수 부분 및 소수 부분으로 구성된 나머지 비트들을 포함하고,
    상기 정수 부분 및 상기 소수 부분 중 적어도 하나는 상기 제2 비트 폭에 따라 비트 폭이 확장된 동작 방법.
  15. 제 14 항에 있어서,
    상기 제1 부분 합을 생성하는 단계는,
    상기 제1 양자화 결과의 상기 나머지 비트들 중 일부 비트들의 절대 값을 생성하는 단계; 및
    상기 생성된 절대 값을 기반으로 런-렝스 인코딩을 수행하는 단계를 포함하는 동작 방법.
  16. 제 15 항에 있어서,
    상기 일부 비트들은 상기 제1 비트 폭과 상기 제2 비트 폭 사이의 비트 폭 차이에 기초하여 상기 나머지 비트들 중 상위 비트부터 하위 비트의 순서로 선정되는 동작 방법.
KR1020190034583A 2019-01-28 2019-03-26 신경망 가속기 및 그것의 동작 방법 KR102233174B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US16/751,503 US11475285B2 (en) 2019-01-28 2020-01-24 Neural network accelerator and operating method thereof
US17/944,454 US11960986B2 (en) 2019-01-28 2022-09-14 Neural network accelerator and operating method thereof

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20190010293 2019-01-28
KR1020190010293 2019-01-28

Publications (2)

Publication Number Publication Date
KR20200093404A true KR20200093404A (ko) 2020-08-05
KR102233174B1 KR102233174B1 (ko) 2021-03-29

Family

ID=72041508

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190034583A KR102233174B1 (ko) 2019-01-28 2019-03-26 신경망 가속기 및 그것의 동작 방법

Country Status (1)

Country Link
KR (1) KR102233174B1 (ko)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102256289B1 (ko) 2021-03-19 2021-05-27 리벨리온 주식회사 인공 신경망에서 학습을 통한 로드 밸런싱 방법 및 시스템
KR102256288B1 (ko) 2021-03-19 2021-05-27 리벨리온 주식회사 인공 신경망의 가속 하드웨어를 위한 가지치기 기반의 훈련 방법 및 시스템
KR102360116B1 (ko) * 2021-03-26 2022-02-08 세종대학교산학협력단 압축 모듈을 포함하는 인공지능 가속기 및 이를 이용한 데이터 전달 방법
WO2022045401A1 (ko) * 2020-08-27 2022-03-03 한국전자기술연구원 딥러닝 비트스트림 인코더, 디코더 및 그 방법
US11893492B2 (en) 2021-03-19 2024-02-06 Rebellions Inc. Neural processing device and method for pruning thereof

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230121401A (ko) 2022-02-11 2023-08-18 고려대학교 산학협력단 양자화 신경망을 위한 정밀도 변환 가능 메모리 내부 연산 방법 및 장치

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170096105A (ko) * 2014-12-19 2017-08-23 인텔 코포레이션 인공 신경망에서의 분산 및 협력 계산을 위한 방법 및 장치
KR20180052063A (ko) * 2016-11-07 2018-05-17 한국전자통신연구원 컨볼루션 신경망 시스템 및 그것의 동작 방법
US20180276034A1 (en) * 2015-10-08 2018-09-27 Shanghai Zhaoxin Semiconductor Co., Ltd. Neural network unit that interrupts processing core upon condition
US20180307950A1 (en) * 2017-04-24 2018-10-25 Intel Corporation Compute optimizations for neural networks
KR20190005043A (ko) * 2017-07-05 2019-01-15 울산과학기술원 연산 속도를 향상시킨 simd mac 유닛, 그 동작 방법 및 simd mac 유닛의 배열을 이용한 콘볼루션 신경망 가속기
KR20190014900A (ko) * 2017-08-04 2019-02-13 삼성전자주식회사 뉴럴 네트워크의 파라미터들을 양자화하는 방법 및 장치
KR20190137684A (ko) * 2018-06-01 2019-12-11 삼성전자주식회사 신경망의 희박 활성화 맵의 무손실 압축

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170096105A (ko) * 2014-12-19 2017-08-23 인텔 코포레이션 인공 신경망에서의 분산 및 협력 계산을 위한 방법 및 장치
US20180276034A1 (en) * 2015-10-08 2018-09-27 Shanghai Zhaoxin Semiconductor Co., Ltd. Neural network unit that interrupts processing core upon condition
KR20180052063A (ko) * 2016-11-07 2018-05-17 한국전자통신연구원 컨볼루션 신경망 시스템 및 그것의 동작 방법
US20180307950A1 (en) * 2017-04-24 2018-10-25 Intel Corporation Compute optimizations for neural networks
KR20190005043A (ko) * 2017-07-05 2019-01-15 울산과학기술원 연산 속도를 향상시킨 simd mac 유닛, 그 동작 방법 및 simd mac 유닛의 배열을 이용한 콘볼루션 신경망 가속기
KR20190014900A (ko) * 2017-08-04 2019-02-13 삼성전자주식회사 뉴럴 네트워크의 파라미터들을 양자화하는 방법 및 장치
KR20190137684A (ko) * 2018-06-01 2019-12-11 삼성전자주식회사 신경망의 희박 활성화 맵의 무손실 압축

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Guo 등, 'Bit-width Adaptive Accelerator Design for Convolution Neural Network', 2018 IEEE International Symposium on Circuits and Systems (ISCAS), 2018 *

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022045401A1 (ko) * 2020-08-27 2022-03-03 한국전자기술연구원 딥러닝 비트스트림 인코더, 디코더 및 그 방법
KR102256289B1 (ko) 2021-03-19 2021-05-27 리벨리온 주식회사 인공 신경망에서 학습을 통한 로드 밸런싱 방법 및 시스템
KR102256288B1 (ko) 2021-03-19 2021-05-27 리벨리온 주식회사 인공 신경망의 가속 하드웨어를 위한 가지치기 기반의 훈련 방법 및 시스템
KR20220131123A (ko) 2021-03-19 2022-09-27 리벨리온 주식회사 인공 신경망의 가속 하드웨어를 위한 가지치기 기반의 훈련 방법 및 시스템
KR20220131124A (ko) 2021-03-19 2022-09-27 리벨리온 주식회사 인공 신경망에서 학습을 통한 로드 밸런싱 방법 및 시스템
US11893492B2 (en) 2021-03-19 2024-02-06 Rebellions Inc. Neural processing device and method for pruning thereof
KR102360116B1 (ko) * 2021-03-26 2022-02-08 세종대학교산학협력단 압축 모듈을 포함하는 인공지능 가속기 및 이를 이용한 데이터 전달 방법

Also Published As

Publication number Publication date
KR102233174B1 (ko) 2021-03-29

Similar Documents

Publication Publication Date Title
KR102233174B1 (ko) 신경망 가속기 및 그것의 동작 방법
US11960986B2 (en) Neural network accelerator and operating method thereof
US20210150248A1 (en) Dynamic quantization for deep neural network inference system and method
CN101989443B (zh) 用于数据压缩的多模式编码
US10491239B1 (en) Large-scale computations using an adaptive numerical format
US8902090B2 (en) Compressing and decompressing signal data
US11018692B2 (en) Floating point data set compression
CN111144562A (zh) 压缩神经网络的激活图的系统、方法及其解压缩方法
KR102152346B1 (ko) 이미지 파일의 블록 간 차이를 통한 압축율 향상 방법 및 시스템
CN104394418A (zh) 一种视频数据编码、解码的方法及装置
US11017786B2 (en) Vector quantizer
KR20190038746A (ko) 데이터 인코딩 방법, 장치 및 저장매체
KR20190038747A (ko) 데이터 인코딩 방법, 장치 및 저장매체
Cavigelli et al. Extended bit-plane compression for convolutional neural network accelerators
US8754792B2 (en) System and method for fixed rate entropy coded scalar quantization
CN115699020A (zh) 用于神经网络的量化
US20170019125A1 (en) Data compression device and data compression method
KR20180067956A (ko) 데이터 압축 장치 및 방법
CN113495669A (zh) 一种解压装置、加速器、和用于解压装置的方法
CN114207609A (zh) 信息处理装置、信息处理系统和信息处理方法
US20190220739A1 (en) Neural network computing device and operation method thereof
KR20110033154A (ko) 규칙적인 지점의 네트워크에서 벡터를 카운팅하는 방법
CN112200301B (zh) 卷积计算装置及方法
US10057583B2 (en) Encoding method of image encoding device
KR102420763B1 (ko) 뉴럴 네트워크 시스템 및 뉴럴 네트워크의 필터 데이터의 처리 방법

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant