KR20170128080A - 신경 네트워크를 구현하는 방법 및 장치 - Google Patents

신경 네트워크를 구현하는 방법 및 장치 Download PDF

Info

Publication number
KR20170128080A
KR20170128080A KR1020170048036A KR20170048036A KR20170128080A KR 20170128080 A KR20170128080 A KR 20170128080A KR 1020170048036 A KR1020170048036 A KR 1020170048036A KR 20170048036 A KR20170048036 A KR 20170048036A KR 20170128080 A KR20170128080 A KR 20170128080A
Authority
KR
South Korea
Prior art keywords
weights
neural network
zero
rti
reordering
Prior art date
Application number
KR1020170048036A
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
Priority claimed from US15/421,423 external-priority patent/US20180082181A1/en
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to CN201710333745.3A priority Critical patent/CN107392305A/zh
Publication of KR20170128080A publication Critical patent/KR20170128080A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/004Artificial life, i.e. computing arrangements simulating life
    • 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)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • General Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

신경 네트워크는 특징 맵들 및 관련 가중치들을 생성하기 위해 훈련된다. 재정렬은 기능적으로 등가의 네트워크를 생성하기 위해 수행된다. 재정렬은 가중치들의 압축, 부하 밸런싱 및 실행 중, 적어도 하나 이상을 개선하기 위해 수행될 수 있다. 일 실시예에서, 영(0) 값 가중치들은 그룹화되고, 실행 중에 영(0) 값 가중치들이 생략될 수 있다.

Description

신경 네트워크를 구현하는 방법 및 장치{METHOD AND APPARATUS FOR IMPLEMENTING NEURAL NETWORK}
본 개시는 인공 신경 네트워크에 관한 것이다.
인공 신경 네트워크(Artificial neural networks, NN)는 광범위한 기능을 수행하도록 설계되고 훈련될 수 있다. 인공 신경 네트워크의 어플리케이션 예는 다른 어플리케이션들 중에서, 이미지 처리, 음성 인식, 데이터 처리 및 제어를 포함한다. 인공 신경 네트워크의 모델들에는 많은 수의 계층들과 파라미터들(가중치들)을 포함할 수 있다. 그래픽 처리 장치(graphics processing units, GPU)와 같은, 높은 수준의 병렬 아키텍처를 갖는 프로세서는 대형 인공 신경 네트워크의 효율적인 구현을 용이하게 한다.
신경 네트워크를 구현하는 방법 및 장치를 제공하는 것이다. 본 실시예가 이루고자 하는 기술적 과제는 상기된 바와 같은 기술적 과제들로 한정되지 않으며, 이하의 실시예들로부터 또 다른 기술적 과제들이 유추될 수 있다.
일 측면에 따른 신경 네트워크를 구현하는 방법은, 특징 맵들과 가중치들을 포함하는 훈련된 신경 네트워크에 대한 데이터를 수신하는 단계; 상기 훈련된 신경 네트워크의 재정렬된 버전을 생성하기 위해 상기 훈련된 신경 네트워크의 상기 특징 맵들 및/또는 상기 가중치들을 재정렬하는 단계; 및 상기 재정렬을 수행한 후에, 상기 훈련된 신경 네트워크의 상기 재정렬된 버전의 가중치들을 압축하는 단계;를 포함할 수 있다.
다른 측면에 따르면, 신경 네트워크를 실행하는 방법은, 신경 네트워크의 모델을 제공하고, 상기 모델은 훈련된 신경 네트워크의 특징 맵들 및/또는 가중치들을 재정렬함으로써 생성된, 상기 훈련된 신경 네트워크의 재정렬된 버전과 대응하는 것인, 단계; 및 상기 신경 네트워크의 상기 모델을 실행하는 단계;를 포함할 수 있다.
상기된 바에 따르면, 신경 네트워크의 특징 맵들과 가중치들을 재정렬함으로써, 신경 네트워크를 나타내는 데 사용되는 데이터의 양을 줄일 수 있다.
도 1은 일 실시예에 따른 신경 네트워크의 특징 맵들과 가중치들을 재정렬하는 것을 설명하기 위한 블록도이다.
도 2는 일 실시예에 따른, 신경 네트워크의 일부를 설명하기 위한 도면이다.
도 3은 다른 일 실시예에 따른, 신경 네트워크의 일부를 설명하기 위한 도면이다.
도 4는 일 실시예에 따른, 신경 네트워크를 재정렬하는 방법을 설명하기 위한 도면이다.
도 5는 일 실시예에 따른, 재정렬된 신경 네트워크를 실행하는 방법을 설명하기 위한 도면이다.
도 6은 일 실시예에 따른, 가지치기(pruning)을 포함하는 신경 네트워크를 재정렬하는 방법을 설명하기 위한 도면이다.
도 7은 일 실시예에 따른, 영(0) 값 가중치들을 생략하기 위해 재정렬된 신경 네트워크를 실행하는 방법을 설명하기 위한 도면이다.
도 8a 및 도 8b는 일 실시예에 따라, 부하 밸런싱을 개선하기 위해 재정렬하는 방법을 설명하기 위한 도면이다.
도 9a 및 도 9b는 일 실시예에 따라, 가중치들의 허프만 코딩(Huffman coding)을 설명하기 위한 도면이다.
도 10은 일 실시예에 따라, 신경 네트워크에 있는 마스크 스트림 디코딩(mask stream decoding) 및 값 스트림 디코딩(value stream decoding)을 설명하기 위한 도면이다.
이하, 첨부한 도면을 참조하여 본 발명의 실시 예에 대해 상세히 설명한다.
도 1은 일 실시예에 따른 신경 네트워크의 특징 맵들과 가중치들을 재정렬하는 것을 설명하기 위한 블록도이다. 도 1은 일 실시예에 따른 높은 레벨 블록도이다. 단계 105에서, 일 실시예에 따른, 신경 네트워크(NN) 개발 프레임 워크는 네트워크의 모든 계층들을 위한 가중치 세트를 생성한다. 일 실시예에서, 가중치들의 추가적인 처리는 컴퓨터 시스템에서 오프라인으로 수행된다. 단계 110에서, 아래의 구체적인 기재와 같이, 많은 가중치들을 영(0)으로 설정함으로써, 많은 가중치들을 제거하는, 가지치기(pruning)를 포함하는 선택적 후 처리(optional post-processing)가 수행된다. 단계 115에서, 재정렬된 가중치들과 등가의 네트워크를 야기하는, 특징 맵들의 재정렬이 수행된다. 단계 120에서, 재정렬된 가중치들은 압축된다. 단계 125에서, 최적화된 네트워크는 최초 훈련된(trained) 신경 네트워크의 재정렬된 버전에 대응하여 컴파일된다. 일 실시예에서, 압축된 가중치들을 이용하는 신경 네트워크는 병렬 처리(parallel processing)를 이용하도록 구현될 수 있다. 또한, 압축된 가중치들을 이용하는 신경 네트워크는 병렬 프로세서들에 대한 모든 입력 가중치 값들이 영(0) 값을 가질 때마다 처리를 요구하지 않도록 구현될 수 있다.
도 2는 일 실시예에 따른, 신경 네트워크의 일부를 설명하기 위한 도면이다.
도 2는 일 실시예에 따라, 압축된 가중치들을 이용하는 신경 네트워크의 일부 예를 설명하기 위한 블록도이다. IFM들(input feature maps)과 압축된 가중치들을 저장하기 위해, 메모리(예를 들어, Static Random Access Memory, SRAM)들이 제공된다. 일 실시예에서, 제어부는 병렬 유닛들(parallel units)을 제어하는 전용 제어 로직(dedicated control logic) 및 SRAM 메모리, MAA(multiply-accumulate array) 유닛들 및 IDP(input data path) 유닛들의 동작을 제어하기 위해, 조합하여 동작하는 중앙 처리 장치(central processing unit, CPU)를 포함한다. 컨볼루션 신경 네트워크(convolutional neural network)들과 같은 많은 신경 네트워크들에서, MAA 유닛들을 이용하여 계산(calculated)될 수 있는 동작들을 기초로 한 동작들로 많은 계산(computation)들이 구현될 수 있다.
일 실시예에서, 각 IDP 유닛은 압축된 가중치들을 수신하고, 특징 맵 데이터를 입력하고, 압축 해제된 가중치들과 IFM 데이터를 MAA 유닛들로 출력한다. 예를 들어, 각 IDP는 적어도 하나의 압축 해제기(decompressor) 및 입력 데이터를 버퍼링하기 위한 버퍼를 포함할 수 있다. 일 실시예에서, MAA들의 누적된 결과들은 OFM(output feature map data) 및 중간 결과들에 대응한다. 하나 이상의 유닛들(도 2에 DRUs로 표시)은 리스케일링(rescaling), 바이어스 부가(adding bias), 활성화 기능들 적용 및 풀링(pooling)과 같은, MAA 유닛들의 출력에 대한 추가 처리 기능들을 지원하기 위해 제공된다. 일 실시예에서, MAA들은 영(0)이 아닌 가중치들 뿐 아니라, 각 IDP로부터 IFM을 수신한다.
일 실시예에서 IDP들의 개수는 8개 이지만, 일반적으로 상이한 개수의 IDP들이 사용될 수 있다. 일 실시예에서, 각 IDP 유닛은 병렬적으로 동작하며, 각각 하나의 영(0)이 아닌 가중치와 하나의 특징 맵 값 세트(IFM의 서브 세트로서)를 MAA 계산 유닛에 공급한다. 일 실시예에서, 입력 유닛들은 OFM 세트를 병렬로 생성하기 위해, 다수의 주기에 걸쳐 IFM 서브 세트들과 대응하는 가중치들에 따라, 반복한다.
도 3은 다른 일 실시예에 따른, 신경 네트워크의 일부를 설명하기 위한 도면이다.
도 3은 일 실시예에 따라 MAA 유닛들에 공급하는 데이터 스트림의 일부 예를 상세하게 도시한 도면이다. 설명을 위해, 8개의 병렬 IDP들 및 16개의 MAA들이 도시되었다. 그러나, 일반적으로 임의의 개수의 유닛들은 병렬 처리를 지원하기 위해 구성될 수 있다. 예를 들어, 8개의 SRAM 유닛들에 있어서, 각 개별적인 SRAM은 가중치들의 일부(fraction)(예를 들어, 1/8)를 저장한다. 일 실시예에서, 개별적인 IDP는 하나의 영(0)이 아닌 가중치를 MAA에 제공하고, 하나의 IFM(예를 들어, 4 x4블록)을 각 MAA들에 제공한다.
도 4는 일 실시예에 따른, 신경 네트워크를 재정렬하는 방법을 설명하기 위한 도면이다.
도 4는 일 실시예에 따른 재정렬된 신경 네트워크의 압축된 가중치들을 생성하는 방법을 설명하기 위한 흐름도이다. 단계 403에서, 훈련된 신경 네트워크의 특징 맵들 및 가중치들은 수신된다. 단계 404에서, 훈련된 신경 네트워크의 선택적 최적화는 수행될 수 있다. 단계 405에서, 훈련된 신경 네트워크의 재정렬된 버전을 생성하기 위해, 특징 맵들 및/또는 가중치들이 재정렬된다. 재정렬 후에, 단계 407에서 훈련된 신경 네트워크의 재정렬된 버전의 가중치들은 압축될 수 있고, 단계 409에서 저장될 수 있다(예를 들어, 압축된 가중치들은 신경 네트워크 디바이스의 메모리에, 보다 일반적으로는 저장 매체 또는 저장 유닛(storage unit)에 저장될 수 있다).
도 5는 일 실시예에 따른, 재정렬된 신경 네트워크를 실행하는 방법을 설명하기 위한 도면이다.
도 5의 흐름도에 설명된 바와 같이, 압축되어 저장된 가중치들은 신경 네트워크를 실행하는 데 사용될 수 있다. 단계 505에서, 압축된 가중치들은 판독되고, 단계 510에서 압축 해제된다. 단계 515에서, 신경 네트워크의 재정렬된 버전의 가중치들을 이용하여 신경 네트워크의 모델이 실행된다.
신경 네트워크 훈련(training) 알고리즘들은 보통 신경 네트워크의 계층들의 특징 맵들이 임의적으로 메모리에서 조직화되도록 한다. 결과적으로, 특징 맵들과 대응하는 가중치들도 보통 메모리에서 임의적으로 조직화된다. 이러한 임의적인 조직화(arbitrary organization)는 압축 및 실행 효율성에 차례로 영향을 끼친다. 재정렬의 일 측면은 기능적으로 등가인, 다수의 정렬들을 의미한다. 그러나, 일부 기능적으로 동일한 순서들은 다른 것보다 더 나은 압축률을 얻기 위해 활용될 수 있는 구조를 갖기 위해 선택될 수 있다. 일 예시로서, 만약 계층이 대응하는 가중치들 교환(swap)을 만드는 경우, 신경 네트워크의 입력-출력 관계에 영향 없이 교환될 수 있는 계층들의 특징 맵들 0 및 10이 있다고 가정된다. 동일한 가중치들이 동일한 입력들에 적용되고, 그 결과는 원본 및 재정렬된 네트워크들에서 동일한 결과들과 함께 합산된다. 그러나, 재정렬은, 압축에 더 적합하거나 및/또는 실행을 위한 이점을 갖는 구조가 되도록 선택될 수 있다. 예를 들어, 신경 네트워크의 가중치들은 유사한 가중치들이 메모리에서 그룹화되도록 재정렬될 수 있다. 다시 말해서, 신경 네트워크의 훈련 이후 및 신경 네트워크의 가중치들의 압축 이전에, 신경 네트워크의 특징 맵들과, 확장해서는 가중치 값들은, 재정렬될 수 있다.
일 실시예에서, 신경 네트워크 재정렬은 가중치를 압축하는 능력을 증가시키기 위해 (즉, 신경 네트워크를 나타내는 데 사용되는 데이터의 양을 줄이기 위해) 가중치들을 정렬하는 것을 도입하도록 선택 될 수 있다. 네트워크 계층들을 재정렬함으로써 더 나은 가중치 압축을 제공하기 위해 선택된 가중치들을 정렬하는 것은 도입될 수 있다. 하나의 옵션은 가중치들을 압축하는 데 도움이 되는 구조를 도입함으로써, 압축을 향상시키기 위해 재정렬을 수행하는 것이다. 예를 들어, 가중치들은 값들에 의해 그룹화되거나 정렬될 수 있다. 또 다른 옵션은 허프만 코딩(Huffman coding) 또는 골롬-라이스 코딩(Golomb-Rice coding)과 같은, 압축에 사용되는 코딩 기술의 특성에 기초하여 재정렬을 수행하는 것이다. 일 예로서, 특징 맵들은 특정 지역화된 영역에서 빈도 분배(distribution)가 뚜렷해지도록 재정렬될 수 있다. 또한, 재정렬은 인코딩의 예측 정확도를 향상시키기 위해 선택될 수 있다. 또 다른 예로서, 가중치 값들이 증가하거나 영(0) 값 가중치들의 수가 증가하도록 네트워크 특징 맵들은 재정렬될 수 있다.
또한, 영(0)이 아닌 가중치들을 재분배함으로써, 네트워크 실행 동안, 영(0) 값 가중치들을 더 효율적으로 생략할 수 있다. 한가지 옵션은 실행 동안 생략될 수 있도록 영(0) 값 가중치들을 그룹화하기 위한 재정렬을 수행하는 것이다.
또 다른 예로서, 신경 네트워크 모델의 병렬 처리 동안, 더 나은 부하 밸런싱을 위해 가중치들은 재정렬될 수 있다. 예를 들어, 병렬 처리 중에, 각 처리 유닛(processing unit)에서, 선택된 주기의 횟수에 걸쳐 더 많은(예를 들어, 거의 동일한 수), 영(0)이 아닌 가중치들이 공급되는 재정렬이 달성될 수 있도록, 재정렬을 수행할 수 있다.
일 실시예에서, 네트워크 가지치기 및 선택된 가중치들의 가중치 군집(clustering)은 네트워크 훈련 후에 수행될 수 있다. 예를 들어, 군집은 압축을 개선시키기 위해, 다수의 상이한 가중치들을 보다 적은 수의 가중치에 매핑하는 것을 포함한다. 예를 들어, 수 많은 약간씩 다른 가중치들은 32 개의 가중치 값들에 매핑될 수 있다. 군집은 또한 양자화(quantization)로 언급될 수 있다. 일 실시예에서, 낮은 규모(low magnitude)의 가중치들은 가지치기(영(0)으로 설정)된다. 일 실시예에서, 가지치기는 네트워크 정확도에 영향을 미치지 않고 수행된다. 가지치기 단계에서, 낮은 규모의 가중치들은 영(0)으로 고정된다. 나머지 영(0)이 아닌 가중치들은 손실된 정확도를 회복하기 위해 네트워크 재훈련을 통해, 조정될 수 있다. 다시 말해서, 정확성의 상실을 막기 위해, 압축 이점을 유지하면서 재훈련은 전체 네트워크가 동일하거나 거의 동일한 정확도가 유지되도록, 특정 가중치들을 재조정하기 위해 수행될 수 있다.
일 실시예에서, 가지치기는 영(0) 값 가중치들의 비율을 증가시킨다. 이러한 점은 압축 및 실행을 위한 잠재적인 이점을 갖는다. 종단의 신경 네트워크 디바이스에서 실행 동안, 다수의 가중치들은, SIMD(single instruction multiple data stream) 방식에서 주어진 주기로, 병렬로 적용(예를 들어, 모든 병렬 계산 유닛들이 하나의 가중치를 적용하거나, 영(0) 값 가중치를 모두 생략하는 것 중 하나)될 수 있다. 다시 말해서, 아무 영향이 미치지 않으므로, 실행 동안 영(0)에 해당하는 가중치들을 적용할 필요가 없다. 일부 사례들에서, 가지치기는 많은 양의 가중치 (예를 들어, 약 60% 내지 95% 또는 그 이상)가 영(0)으로 만들어, 네트워크 실행 속도를 높일 수 있는 기회를 제공한다.
일 실시예에서, 영(0) 값 가중치들은 실행을 향상시키기 위해 그룹화된다. 많은 영(0) 값 가중치들을 위해 처리 주기들을 제거하는 것은 어려울 수 있다. 그러나, 다수의 영(0) 값 가중치들이 동일한 주기에서 같이 수집되도록, 다수의 영(0) 값 가중치들이 그룹화될 때, 다수의 영(0) 값 가중치들은 생략될 수 있다. 이러한 점은 동일한 시간에 실행 속도를 증가시키고, 압축을 개선하는 데 도움이 될 수 있다.
재정렬된 가중치들의 무손실 압축 및 네트워크 재정렬에 추가로, 실시 예들은, 다른 실시예들에서 생략될 수 있는, 손실 압축을 이용할 수 있다. 이러한 사례에서, 재정렬과 함께 압축을 개선하기 위해 가중치가 조정(예를 들어, 미세한 조정)된다.
도 6은 일 실시예에 따른, 가지치기(pruning)을 포함하는 신경 네트워크를 재정렬하는 방법을 설명하기 위한 도면이다.
도 6은 일 실시예에 따라, 가지치기 및 재훈련을 포함하는 방법을 설명하기 위한 도면이다. 단계 601에서, 특징 맵들과 훈련된 신경 네트워크의 가중치들은 수신된다.
단계 610에서, 가중치들은, 가중치 압축 효율성을 개선하고, 네트워크 계산 비용을 줄이기 위해, 가지치기된다. 일 실시예에서, 가지치기는 가변 임계값(variable threshold)들로 수행된다. 예를 들어, 임계값은 가중치들의 거리 측정치의 미리 결정된 스케일링 팩터(scaling factor)에 기초하여 선택될 수 있다. 일 실시예에서, 임계값은 임계값을 만족시키는 정규화(regularization)와 함께 생성된 각 군집에서 영(0) 값들을 최대화하기 위해, 동적 프로그래밍을 통해 반복적으로 구해질 수 있다.
단계 615에서, 나머지 가중치들은 재훈련된다. 단계 620에 도시된 바와 같이, 일부 실시예에서, 옵션은 사전에 설정된 반복 횟수가 충족되는 것과 같이, 중단 조건이 만족할 때까지, 가지치기 및 재훈련을 한번 또는 그 이상 반복하기 위해 포함될 수 있다.
단계 625에서, 가중치들의 양자화는 선택적 재훈련에서 수행될 수 있다. 일 실시예에서, 가중치들의 군집화(cluster of weights)는 k-평균 군집(k-mean clustering)에 기초하여 수행되며, 여기서 각 군집의 중심은 그 군집에 포함된 가중치들을 나타내는 데 사용된다.
단계 630에서, 양자화된 가중치들 세트들은 재정렬된다. 이전에 설명 된 바와 같이, 재정렬은 완전하게 연결된 계층(fully-connected layer)들에서 특징 맵들 또는 특징 맵 노드들을 스위칭하는 것에 대응하는 재정렬을 포함 할 수 있다. 그러나, 재정렬은 압축을 개선하기 위해 재정렬을 포함할 수도 있다. 재정렬은 군집들을 재정렬하는 것과 열(column)과 행(row) 속성들을 기초로 하여 재정렬하는 것을 포함 할 수 있다. 또한, 군집들 내의 양자화 된 가중치들 세트들은 예측의 유효성을 최대화하기 위해 선택 될 수 있다. 예를 들어, 재정렬은, 가장 일반적인 군집 0에서 재정렬하는 것과 가장 비일반적인 군집 31에서 재정렬하는 것을 포함 할 수 있다. 하나의 옵션으로서, 열들(columns)은 선택된 열들의 수 (예를 들어, 상세 구현 내용에 따라 16 개 열들)의 군집들에 재정렬되어, 일부 열간 압축(inter-column compression)의 유효성을 최대화할 수 있다. 또한, 행 차원에서 반복적이고 효과적으로 압축하기 위해 열들 그룹 내에서 행들을 재정렬할 수 있다. 예를 들어, 행 1 구성 요소들은, 행 0과 몇 개의 작은 양수(positive)인 델타(delta)를 더한 것과 같은 것으로 예측되며, 델타들은 압축된다. 대안적인 실시 예에서, 군집들은 임의의 적절한 수의 열들일 수 있다. 대안적인 실시 예에서, 군집들은 임의의 적절한 구성 요소들(예를 들어, 행들)로부터 형성될 수 있다.
단계 635에서, 델타들은 예측과 대조적으로 계산된다. 예를 들어, 군집 내의 인접한 열들 및/또는 행들 간의 차이가 계산될 수 있다. 다른 변환은 다른 열들과 행들에 대한 예측을 수행하는 데 사용되는 "기본" 열 또는 행에 적용될 수 있다. 예를 들어, 열 0이 "기본" 열로 선택되고 그룹(예를 들어, 16개의 열들이 포함된 그룹)에 있는 다른 모든 열들이 기본 열에 적용된 스케일링 팩터와 다른 스케일링 팩터들에 의해 예측된다고 가정한다. 예를 들어, 한 행은 행 0에 스케일링 팩터와 몇 가지 델타들을 곱한 것으로 예측 될 수 있다. 경우에 따라 델타들은 작을 수 있다.
단계 645에서, 델타들의 선택적인 조정은 압축률을 개선하기 위해 수행될 수 있고, 그 후 정확도 손실을 완화하기 위해 수행되는 재훈련이 수행될 수 있다. 예를 들어, 압축률을 개선 위해 델타 값을 약간 올리거나 내릴 수 있다. 이러한 조정은 압축 방식의 손실 성분(lossy componenet)이 될 수 있다.
단계 650에서, 델타들과 기본 예측은 압축된다. 엔트로피 코딩(entropy coding) 방식과 같은 코딩 방식이 사용될 수 있다. 예를 들어, 허프만 코딩은 델타들을 나타내기 위해, 다수의 비트들이 사용될 수 있다. 가능한 가장 적은 비트로 가장 일반적인 델타를 표현함으로써, 효율적인 압축이 성취될 수 있다.
단계 655에서, 재정렬된 모델의 압축된 표현은 데이터 저장 장치에 기록된다.
도 7은 일 실시예에 따른, 영(0) 값 가중치들을 생략하기 위해 재정렬된 신경 네트워크를 실행하는 방법을 설명하기 위한 도면이다.
도 7은 일 실시 예에 따라, 영(0) 값 가중치들을 생략하는 것을 포함하는 실행 방법을 설명하기 위한 흐름도이다. 단계 705에서, 압축된 가중치들을 판독한다. 단계 710에서, 가중치들은 압축 해제된다. 단계 715에서, 가중치들은 신경 네트워크의 실행 동안, 병렬로, 선택된 수의 그룹들(예를 들어, 상세 구현 내용에 따라 16개의 그룹들)에 적용된다. 단계 720에서, (그룹에 대한) 값들의 군집은 모든 가중치들이 0으로 설정될 때마다, 군집이 생략된다. 그렇지 않은 경우, 신경 네트워크의 실행은 일반적인 신경 네트워크 실행과 같이, 컨볼루션들(convolutions)과 벡터 곱(vector products)들을 처리한다.
일 실시예에서, 영(0) 값들이 처리되는 방식은 계층 종류(예를 들어, 컨벌루션 계층 대 완전하게 연결된 계층)에 부분적으로 의존한다. 다시 말해서, 영(0) 값 가중치들을 생략하는 방식은 계층 종류에 따라 다르게 구현된다. (완전히 연결된 계층들 및 컨볼루션 계층들에 대한 벡터-곱 연산들과 같은, 다른 수학적 동작들에 대응된다). 예를 들어, 영(0) 값 가중치들은, 벡터 곱들이 계산되는 완전하게 연결된 계층에서 더 효율적으로 생략하기 위해, 그룹화될 수 있다. 그러나, 컨벌루션 계층에서는, 병렬 계산 유닛들에서 부하 밸런싱을 지원하기 위해, 영(0) 값들이 분산(확산) 될 수 있다. 이는, 컨볼루션 계층에 대한 컨볼루션 동작에서, 영(0) 값 처리를 생략하도록 영(0) 가중치들을 그룹화 할 필요가 없기 때문이다. 부하 밸런싱이 있는 컨볼루션 계층의 예를 고려해본다. 이러한 예에서, 각 입력 유닛은 입력들의 서브 세트를 위한, 영(0)이 아닌 다음 가중치(next non-zero weight)를 찾고, 영(0)이 아닌 다음 가중치로 이동한다. 각 입력 유닛은 입력 데이터를 통해 서로 다른 속도로 이동하여, 하나의 영(0)이 아닌 가중치에서 다음 가중치로 넘어간다. 그들은 모두 다른 속도로 데이터를 이동한다. 각 입력 유닛이 입력 서브 세트에 걸쳐 적용하기 위한, 동일한 수의 영(0)이 아닌 가중치를 가지면, 시스템은 부하 밸런싱되어 영(0) 값 가중치들을 적용하는 데 필요한 주기를 효과적으로 생략한다. 도 8a 및 도 8b는 일 실시예에 따라, 부하 밸런싱을 개선하기 위해 재정렬하는 방법을 설명하기 위한 도면이다. 도 8a 및 도 8b는 컨볼루션 계층에서 부하 밸런싱을 개선하기 위한 재정렬의 예를 도시한다. 도 8a는 2 개의 입력 유닛들(제 1 입력 유닛 및 제 2 입력 유닛)이 있는 예를 도시한다. 제 1 입력 유닛은 제 1 특징 맵 및 제 1 커널과 (여기서, * 연산은 컨볼루션 연산이다); 그리고, 제 3 특징 맵 및 제 3 커널을 처리한다. 제 2 입력 유닛은 제 2 특징 맵, 제 2 커널과 제 4 특징 맵, 제 4 커널을 처리한다.
도 8a는 재정렬 없이, 큰 부하 불균형이 있는 예를 도시한다. 제 1 입력 유닛은 제 1 커널에서 4개의 영(0)이 아닌 가중치들을 방출하기 위해 4번 주기가 필요하고, 제 3 커널에서 3개의 영(0)이 아닌 가중치들을 방출하기 위해 3번 주기가 필요하므로, 총 7번 주기가 필요하다. 제 2 입력 유닛은 제 2 커널에서 5개의 영(0)이 아닌 가중치들을 방출하기 위해 5번 주기가 필요하고, 제 4 커널에서 6개의 영(0)이 아닌 가중치들을 방출하기 위해 6번 주기가 필요하므로, 총 11번 주기가 필요하다. 그러므로, 부하 불균형으로 인해 2개의 입력 유닛에 걸쳐 4개의 특징 맵들을 처리하기 위해서는 총 11번 주기가 요구된다.
도 8b는 일 실시 예에 따른, 부하 밸런싱이 맞춰진 등가의 네트워크를 얻기 위해, 네트워크에서 IFM 셔플들(shuffles)을 재정렬하는 예를 도시한다. 신경 네트워크를 재정의함으로써 제 2 특징 맵과 제 3 특징 맵이 교환되고, 여기서 대응하는 가중치 커널의 교환도 이루어진다. 이에 따라, 제 3 특징 맵은 대응하는 제 3' 커널을 갖는 제 3'특징 맵으로 재정렬된다. 재정렬된 제 2 ' 특징 맵 와 그에 대응하는 제 2 ' 커널도 있다. 이러한 예에서 재정렬은 부하 밸런싱을 향상시킨다. 제 1 입력 유닛은 제 1 커널에서 4 개의 영(0)이 아닌 가중치들을 방출하기 위해 4번 주기가 필요하고, 그 후 제 3' 커널에서 영(0)이 아닌 가중치들을 방출하기 위해 5번 주기가 필요하므로, 총 9번 주기 동안 제 1 특징 맵과 제 3' 특징 맵이 처리된다. 제 2 입력 유닛은 제 2'커널에서 3 개의 영(0)이 아닌 가중치들을 방출하기 위해 3번 주기가 필요하고, 제 4 커널에서 영(0)이 아닌 가중치들을 방출하기 위해 6번 주기가 필요하므로, 총 9번 주기가 필요하다. 따라서, 도 8b에서, 2개의 입력 유닛에서 4 개의 특징 맵들을 처리하기 위해 총 9번 주기가 요구된다.
일 실시 예에서, 부하 밸런싱이 즉각적으로 수행되기 위해, 하드웨어 지원이 제공된다. 예를 들어, 오프라인 처리는 IFM들의 최적화된 재정렬을 산출하고 OFM들의 재정렬을 수행하기 위해, 수행될 수 있다. 일 실시 예에서, 재매핑 로직(remapping logic) 및 재매핑 테이블들은 네트워크의 하드웨어 실행 동안, 변수 재 매핑(variable remapping)이 수행되는 것을 지정하기 위해 지원된다.
전술 한 바와 같이, 재정렬은 다른 계층들에 대한 특징 맵을 교환하고 대응하는 가중치들을 교환함으로써 (예를 들어, 제 2 맵과 제 10 맵을 교환하고 제 2 맵에 대응하는 가중치를 교환하는 것과 같이) 동일한 네트워크의 등가 버전을 초래할 수 있다. 그러나, 일 실시 예에서, 재정렬은 신경 처리 유닛에 있는 하드웨어를 지원하기 위해, 추가 재매핑 테이블들(additional remapping tables)을 생성하는 것을 포함한다. 재매핑 테이블은 하드웨어가 교환을 수행하도록 지시 할 수 있다. 예를 들어, 재매핑 테이블은 제 2 입력 맵과 제 10 입력 맵을 교환하기 위해 하드웨어에 제 3 출력 맵을 지시 할 수 있다.
전술 한 바와 같이, 허프만 코딩 또는 골롬-라이스 코딩과 같은 임의의 다른 적절한 압축 알고리즘과 같은, 다수의 상이한 데이터 압축 알고리즘들은 가중치들을 위해 사용될 수 있으나, 이에 제한되지 않는다. 압축 성능은 압축되는 데이터의 조직(organization)에 따라 달라질 수 있다. 예를 들어, 압축은 주로 예측을 수행하는 것과 다양한 비트 수를 사용한 예측과의 차이를 나타내는 것에 따라 달라질 수 있다. 예를 들어, 더 일반적으로 발생하는 값들은 더 적은 비트들로 압축된다.
도 9a 및 도 9b는 일 실시예에 따라, 가중치들의 허프만 코딩(Huffman coding)을 설명하기 위한 도면이다. 도 9a 및 9b는 개시의 일 실시 예에 따른 허프만 코딩의 일 측면을 도시한다. 도 9a에 도시 된 바와 같이, 원칙적으로 단일 공유 허프만 테이블(single shared Huffman table)은 가중치 디코딩을 위해 사용될 수 있다. 출력 노드들(예를 들어, O0 내지 O7)의 시퀀스에 대한, 가중치 지수들 세트가 있다. 낮은 지수에 있는 가중치 지수 사용의 분포는 높은 지수에 있는 가중치 지수 사용의 분포보다 더 균등하다. 단일 허프만 테이블은 전체 가중치들 세트에 걸쳐, 낮은 지수들을 더 높은 빈도로 이용하기 위해 사용된다. 그러나, 도 9a에서, 낮은 지수가 높은 지수보다 가중치 지수 사용이 균등한 것이 전제되었으므로, 좌측 열들에 있는 지수들은 우측 열들에 있는 지수보다 일반적이지 않다. 도 9a의 예에서, 가중치 지수들의 각 열들은 무작위 순서(random order)를 갖는다. 예를 들어, 열 O0는 훈련에서 도출된 것들과 대응하는 무작위 지수 분포(random index distribution)를 가진다. 열 O1은 도 9a의 가중치 지수들의 각 열들에 대해 무작위 지수 분포를 갖는다.
도 9b는 일 실시 예에 따른, 컨텍스트 적응형 가변 가중치 압축(context adaptive variable weight compression)을 위한 허프만 코딩의 사용을 도시한다. 열들 (및/또는 행들)은 두 개 이상의 서로 다른 허프만 테이블들이 사용될 수 있도록, 빈도가 낮은 가중치 조직을 생성하기 위해 정렬될 수 있다. 예를 들어, 가중치 지수 사용 분포는 왼쪽 열의 지수들보다 오른쪽 열의 지수들이 더 일반적이고, 낮은 지수들이 높은 지수들보다 더 일반적이도록, 선택 될 수 있다. 도 9b의 예에서, 재정렬은 행렬의 한 측면에 낮은 값 가중치들을 이동시키고, 다른 측면에 높은 값 가중치들을 이동시킨다. 가중치 행렬의 재정렬 이후에, 허프만 테이블들의 세트는 노드들의 서브 세트들에 대해 최적화된다. 예를 들어, 각 테이블은 노드들의 다른 세트에 대응할 수 있으며, 각각의 테이블들은 낮은 지수의 상이한 빈도를 갖는다. 예를 들어, 가장 왼쪽의 두 열들을 먼저 고려한다. 출력 노드 O0'에 대한 가중치 지수들의 열은, 열에서 가장 낮은 가중치가 낮은 지수를 가진다. 출력 노드 O1'에 대한 가중치 지수들의 열은, 왼쪽 열과 유사한 지수 분포를 가진다. 처음 두 노드 (노드 O '및 노드 1')에 대한 가중치 지수는 낮은 지수의 빈도가 매우 높은 노드 0 '및 노드 1'에 대한 첫 번째 허프만 테이블을 가진다. 다음 2 개의 열들로 이동하면, 출력 노드 O2'에 대한 가중치 지수들의 열은 왼쪽 열보다 낮은 지수가 덜 일반적이다. 출력 노드 O3'에 대한 가중치 지수들의 열은 왼쪽에 있는 열과 비슷한 분포를 가진다. 노드 2 '및 노드 3'에 대한 가중치 지수는 노드 2 및 노드 3에 대한 제 2 허프만 테이블을 가진다. 이러한 정렬은 재정렬된 출력 노드들에 걸쳐 왼쪽에서 오른쪽으로 계속되며, 가장 낮은 빈도의 낮은 지수를 갖는 출력 노드 O6'에 대한 가중치 지수 및 출력 노드 O6'와 유사한 분포를 갖는 출력 노드 O7'로 끝난다.
도 10은 일 실시예에 따라, 신경 네트워크에 있는 마스크 스트림 디코딩(mask stream decoding) 및 값 스트림 디코딩(value stream decoding)을 설명하기 위한 도면이다. 도 10은 허프만 또는 골롬-라이스 디코딩을 위한 IDP 압축 해제기가 압축된 가중치 마스크 스트림 디코더(compressed weight mask stream decoder) 및 압축된 가중치 값 스트림 디코더(compressed weight value stream decoder)를 포함하는 실시 예를 도시한다. 일 실시 예에서, 가중치 커널들은 (가지치기된) 가중치들을 지정하는 마스크들 및 영(0)이 아닌 가중치들의 지수들로 표현된다. 추가적인 룩업 테이블(LookUp Tables, LUTs)은 디코딩을 지원하기 위해, 제공될 수 있다. 일 실시 예에서, 출력들은 제로-마스크 버퍼(zero-mask buffer) 및 가중치 값들 버퍼(weight values buffer)를 포함한다.
예시적인 실시 예들은 명령어를 저장하는 프로세서 및 메모리를 포함하는 전자 디바이스에 배치될 수 있다. 또한, 실시 예들은 단독형 디바이스(standalone device)에 배치되거나 분산된 클라이언트-서버 네트워크 시스템(distributed client-server networked system)에서 다수의 디바이스들에 배치될 수 있음은 인정될 것이다.
본 개시의 실시 예들에 대한 실행 환경의 비 제한적 예(non-limiting example)는 그래픽 처리 장치들(GPUs)에 있다. GPU들은 신경 네트워크를 구현하기 위해, 상당한 계산 능력을 제공할 수 있지만, 제한된 메모리 및/또는 전력을 가진 디바이스에 신경 네트워크를 구현하는 것은 어려울 수 있다. 본 개시의 예시적인 실시 예들은 GPU의 메모리에 저장하기 위해 신경 네트워크 가중치 파라미터들의 개선된 압축을 가능하게 하고, 영(0) 값 가중치를 군집화함으로써, 효율적으로 영(0) 값 가중치들이 생략될 수 있으므로, 네트워크 실행의 개선된 효율을 제공할 수 있다.
본 개시에 기재된, "컴퓨터 판독 가능한 비일시적 저장 매체(computer-readable non-transitory storage medium or media)"는 컴퓨터에 의해 액세스될 수 있는 임의의 기록 매체일 수 있고, 휘발성 및 비휘발성 매체, 분리형 및 비분리형 매체를 포함할 수 있다. 컴퓨터 판독 가능 매체는 마그네틱 저장매체, 예를 들면, 롬, 플로피 디스크, 하드 디스크 등을 포함하고,) 광학적 판독 매체, 예를 들면, 시디롬, DVD 등과 같은 저장 매체를 포함할 수 있으나, 이에 제한되지 않는다. 또한, 컴퓨터 판독 가능 매체는 컴퓨터 저장 매체 및 통신 매체를 포함할 수 있다.
본 개시에 기재된, "적어도 하나", "하나 이상" 및 "및/또는"이란 용어들은 다른 언급이 없는 한, 개방형 표현이다. 예를 들어, "A, B 및 C 중 적어도 하나", "A, B 또는 C 중 적어도 하나", "A, B 및 C 중 하나 이상", "A, B 또는 C 중 하나 이상" 및 "A, B 및/또는 C"는 A 단독, B 단독, C 단독, A 및 B, A 및 C, B 및 C 또는, A, B 및 C를 의미한다.
이상에서와 같이 도면과 명세서에서 예시적인 실시예들이 개시되었다. 본 명세서에서 특정한 용어를 사용하여 실시예들을 설명되었으나, 이는 단지 본 개시의 기술적 사상을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 개시의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 개시의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.

Claims (10)

  1. 신경 네트워크를 구현하는 방법에 있어서,
    특징 맵들과 가중치들을 포함하는 훈련된 신경 네트워크에 대한 데이터를 수신하는 단계;
    상기 훈련된 신경 네트워크의 재정렬된 버전을 생성하기 위해 상기 훈련된 신경 네트워크의 상기 특징 맵들 및/또는 상기 가중치들을 재정렬하는 단계; 및
    상기 재정렬을 수행한 후에, 상기 훈련된 신경 네트워크의 상기 재정렬된 버전의 가중치들을 압축하는 단계;
    를 포함하는, 방법.
  2. 제 1 항에 있어서,
    상기 재정렬하는 단계는,
    상기 신경 네트워크의 상기 가중치들을 재정렬하기 위해, 상기 신경 네트워크의 상기 특징 맵들을 재정렬하는 단계;
    를 포함하는, 방법.
  3. 제 1 항에 있어서,
    상기 재정렬하는 단계는,
    상기 수신된 데이터의 상기 가중치들과 비교하여, 압축 효율을 향상 시키도록 선택된 구조를 갖도록 상기 신경 네트워크의 가중치를 재정렬하는 단계;
    를 포함하는, 방법.
  4. 제 1 항에 있어서,
    상기 재정렬하는 단계는,
    부하 밸런싱에 기초하여, 상기 가중치들을 분산시키기 위해, 상기 가중치들 중 적어도 일부 가중치들을 재정렬하는 단계;
    를 포함하는, 방법.
  5. 제 1 항에 있어서,
    상기 압축하는 단계 이전에, 재정렬된 입력 노드들 및 출력 노드들의 가중치들의 지수들을 재정렬하는 단계;
    를 더 포함하는, 방법.
  6. 신경 네트워크를 실행하는 방법에 있어서,
    상기 신경 네트워크의 모델을 제공하고, 상기 모델은 훈련된 신경 네트워크의 특징 맵들 및/또는 가중치들을 재정렬함으로써 생성된, 상기 훈련된 신경 네트워크의 재정렬된 버전과 대응하는 것인, 단계; 및
    상기 신경 네트워크의 상기 모델을 실행하는 단계;
    를 포함하는 방법.
  7. 제 6 항에 있어서,
    상기 모델을 실행하는 단계는,
    영(0) 값을 갖는 모든 가중치들의 그룹들의 실행을 생략하는 단계;
    를 포함하는, 방법.
  8. 제 6 항에 있어서,
    상기 모델을 실행하는 단계는,
    컨볼루션 모드(convolution mode)에서 분산된 영(0)값 가중치들(distributed zero-value weights)의 실행을 생략하는 단계;
    를 포함하는, 방법.
  9. 제 6 항에 있어서,
    상기 훈련된 신경 네트워크의 상기 재정렬된 버전은,
    병렬 처리 입력 유닛들 세트의 실행을 위해, 부하 밸런싱 조건에 기초하여, 상기 가중치들을 정렬하는 것을 포함하는, 방법.
  10. 제 6 항에 있어서,
    상기 신경 네트워크의 가중치들은 압축된 형식으로 저장되고, 상기 방법은,
    압축된 가중치들을 판독하는 단계;
    상기 압축된 가중치들을 압축 해제 하는 단계;
    완전하게 연결된 계층을 위한 모든 가중치들이 영(0)값인 가중치 군집(cluster)을 생략하거나, 컨볼루션 계층에 대해 분산된 영(0)값 가중치의 실행을 생략하는 것 중 적어도 하나는 포함하는, 영(0) 값 가중치들의 실행을 생략하는 단계; 및
    상기 신경 네트워크 실행을 위해, 생략되지 않은 나머지 압축 해제된 가중치들을 적용하는 단계;
    를 더 포함하는, 방법.
KR1020170048036A 2016-05-13 2017-04-13 신경 네트워크를 구현하는 방법 및 장치 KR20170128080A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710333745.3A CN107392305A (zh) 2016-05-13 2017-05-12 实现和执行神经网络的方法及计算机可读介质

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201662336493P 2016-05-13 2016-05-13
US62/336,493 2016-05-13
US15/421,423 US20180082181A1 (en) 2016-05-13 2017-01-31 Neural Network Reordering, Weight Compression, and Processing
US15/421,423 2017-01-31

Publications (1)

Publication Number Publication Date
KR20170128080A true KR20170128080A (ko) 2017-11-22

Family

ID=60809942

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170048036A KR20170128080A (ko) 2016-05-13 2017-04-13 신경 네트워크를 구현하는 방법 및 장치

Country Status (1)

Country Link
KR (1) KR20170128080A (ko)

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108133266A (zh) * 2017-12-12 2018-06-08 北京信息科技大学 一种基于非均匀量化的神经网络权值压缩方法及使用方法
CN109993298A (zh) * 2017-12-29 2019-07-09 百度在线网络技术(北京)有限公司 用于压缩神经网络的方法和装置
WO2020101350A1 (en) * 2018-11-13 2020-05-22 Samsung Electronics Co., Ltd. Method for processing data using neural network and electronic device for supporting the same
KR20200094056A (ko) * 2019-01-29 2020-08-06 주식회사 디퍼아이 컨벌루션 신경망 파라미터 최적화 방법, 컨벌루션 신경망 연산방법 및 그 장치
KR20210015990A (ko) * 2019-05-18 2021-02-10 주식회사 디퍼아이 학습된 파라미터의 형태변환을 이용한 컨벌루션 신경망 파라미터 최적화 방법, 컨벌루션 신경망 연산방법 및 그 장치
KR20210043626A (ko) * 2019-05-24 2021-04-21 넥스트브이피유 (상하이) 코포레이트 리미티드 심층 신경망용 압축 방법, 칩, 전자 장치 및 매체
WO2021085996A1 (ko) * 2019-10-31 2021-05-06 삼성전자 주식회사 신경망의 커널들을 정렬하는 전자 장치 및 이의 동작 방법
KR20210060011A (ko) 2019-11-18 2021-05-26 성균관대학교산학협력단 심층신경망의 그룹-레벨 프루닝 방법 및 장치
WO2022080758A1 (ko) * 2020-10-15 2022-04-21 삼성전자주식회사 전자 장치 및 전자 장치의 제어 방법
US11502701B2 (en) 2020-11-24 2022-11-15 Samsung Electronics Co., Ltd. Method and apparatus for compressing weights of neural network
US11977928B2 (en) 2018-12-12 2024-05-07 Samsung Electronics Co., Ltd. Apparatus and method for performing a recognition operation in a neural network

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108133266B (zh) * 2017-12-12 2021-07-09 北京信息科技大学 一种基于非均匀量化的神经网络权值压缩方法及使用方法
CN108133266A (zh) * 2017-12-12 2018-06-08 北京信息科技大学 一种基于非均匀量化的神经网络权值压缩方法及使用方法
CN109993298A (zh) * 2017-12-29 2019-07-09 百度在线网络技术(北京)有限公司 用于压缩神经网络的方法和装置
CN109993298B (zh) * 2017-12-29 2023-08-08 百度在线网络技术(北京)有限公司 用于压缩神经网络的方法和装置
US11561516B2 (en) 2018-11-13 2023-01-24 Samsung Electronics Co., Ltd. Method for processing data using neural network and electronic device for supporting the same
WO2020101350A1 (en) * 2018-11-13 2020-05-22 Samsung Electronics Co., Ltd. Method for processing data using neural network and electronic device for supporting the same
US11977928B2 (en) 2018-12-12 2024-05-07 Samsung Electronics Co., Ltd. Apparatus and method for performing a recognition operation in a neural network
KR20200094056A (ko) * 2019-01-29 2020-08-06 주식회사 디퍼아이 컨벌루션 신경망 파라미터 최적화 방법, 컨벌루션 신경망 연산방법 및 그 장치
KR20210015990A (ko) * 2019-05-18 2021-02-10 주식회사 디퍼아이 학습된 파라미터의 형태변환을 이용한 컨벌루션 신경망 파라미터 최적화 방법, 컨벌루션 신경망 연산방법 및 그 장치
KR20210043626A (ko) * 2019-05-24 2021-04-21 넥스트브이피유 (상하이) 코포레이트 리미티드 심층 신경망용 압축 방법, 칩, 전자 장치 및 매체
US11272188B2 (en) 2019-05-24 2022-03-08 NextVPU (Shanghai) Co., Ltd. Compression for deep neural network
WO2021085996A1 (ko) * 2019-10-31 2021-05-06 삼성전자 주식회사 신경망의 커널들을 정렬하는 전자 장치 및 이의 동작 방법
KR20210060011A (ko) 2019-11-18 2021-05-26 성균관대학교산학협력단 심층신경망의 그룹-레벨 프루닝 방법 및 장치
WO2022080758A1 (ko) * 2020-10-15 2022-04-21 삼성전자주식회사 전자 장치 및 전자 장치의 제어 방법
US11502701B2 (en) 2020-11-24 2022-11-15 Samsung Electronics Co., Ltd. Method and apparatus for compressing weights of neural network
US11632129B2 (en) 2020-11-24 2023-04-18 Samsung Electronics Co., Ltd. Method and apparatus for compressing weights of neural network

Similar Documents

Publication Publication Date Title
KR20170128080A (ko) 신경 네트워크를 구현하는 방법 및 장치
US20180082181A1 (en) Neural Network Reordering, Weight Compression, and Processing
CN107392305A (zh) 实现和执行神经网络的方法及计算机可读介质
CN110880038B (zh) 基于fpga的加速卷积计算的系统、卷积神经网络
JP6998968B2 (ja) ディープニューラルネットワークの実行方法、実行装置、学習方法、学習装置及びプログラム
US10599935B2 (en) Processing artificial neural network weights
CN111062472B (zh) 一种基于结构化剪枝的稀疏神经网络加速器及其加速方法
CN109791628B (zh) 神经网络模型分块压缩方法、训练方法、计算装置及系统
JP2018055260A (ja) 情報処理装置、情報処理方法及びプログラム
US20200019839A1 (en) Methods and apparatus for spiking neural network computing based on threshold accumulation
CN112329910B (zh) 一种面向结构剪枝结合量化的深度卷积神经网络压缩方法
CN111368699A (zh) 基于图案的卷积神经网络剪枝方法及图案感知加速器
WO2022112739A1 (en) Activation compression method for deep learning acceleration
JP7323715B2 (ja) 微細構造化マスクを用いたマルチレートニューラル画像圧縮のための方法、装置およびコンピュータプログラム
WO2021133422A1 (en) Flexible accelerator for sparse tensors (fast) in machine learning
CN115129386A (zh) 用于神经网络部署和执行的有效优化
CN115362449A (zh) 在机器学习作业期间基于改善的存储器压缩传输的稀疏度的特征重排序
TWI831076B (zh) 使用叢集連接神經網路進行訓練或預測的方法及使用叢集連接神經網路進行訓練或預測的系統
WO2022150093A1 (en) Performing tensor operations using a programmable control engine
TWI745697B (zh) 用於神經網路參數的運算系統及其壓縮方法
CN111626415A (zh) 适用于人工神经网络的高效矩阵数据格式
KR102315617B1 (ko) 그래픽 처리 장치의 구조를 고려한 신경망 프루닝 장치 및 방법
GB2571818A (en) Selecting encoding options
JP2024502225A (ja) ワークロードが平準化された活性化スパース性を用いた畳込みのための方法およびシステム
CN113177627A (zh) 优化系统、重新训练系统及其方法及处理器和可读介质

Legal Events

Date Code Title Description
A201 Request for examination
WITB Written withdrawal of application