KR102321049B1 - 상이한 희소 수준을 갖는 신경망 다중 프루닝 장치 및 방법 - Google Patents

상이한 희소 수준을 갖는 신경망 다중 프루닝 장치 및 방법 Download PDF

Info

Publication number
KR102321049B1
KR102321049B1 KR1020190148658A KR20190148658A KR102321049B1 KR 102321049 B1 KR102321049 B1 KR 102321049B1 KR 1020190148658 A KR1020190148658 A KR 1020190148658A KR 20190148658 A KR20190148658 A KR 20190148658A KR 102321049 B1 KR102321049 B1 KR 102321049B1
Authority
KR
South Korea
Prior art keywords
pruning
unit
gemm
neural network
weight kernel
Prior art date
Application number
KR1020190148658A
Other languages
English (en)
Other versions
KR20210060980A (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 KR1020190148658A priority Critical patent/KR102321049B1/ko
Priority to US16/951,464 priority patent/US11995552B2/en
Publication of KR20210060980A publication Critical patent/KR20210060980A/ko
Application granted granted Critical
Publication of KR102321049B1 publication Critical patent/KR102321049B1/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/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/082Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Neurology (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Image Analysis (AREA)

Abstract

상이한 희소 수준을 갖는 신경망 다중 프루닝 장치 및 방법과 SIMD 기반의 신경망 프루닝 방법이 개시되며, 본원의 일 실시예에 따른 SIMD 기반의 신경망 프루닝 방법은, 신경망 내 레이어에 적용되는 노드 간 가중치 커널을 GEMM 변환하는 단계 및 상기 GEMM 변환된 가중치 커널을 기 설정된 SIMD 너비를 단위로 하여 프루닝하는 단계를 포함할 수 있다.

Description

상이한 희소 수준을 갖는 신경망 다중 프루닝 장치 및 방법{APPARATUS AND METHOD FOR PRUNING FOR NEURAL NETWORK WITH MULTI-SPARSITY LEVEL}
본원은 상이한 희소 수준을 갖는 신경망 다중 프루닝 장치 및 방법에 관한 것이다. 특히, 본원은 SIMD 기반의 신경망 프루닝 방법에 관한 것이다.
신경망(Neural Network) 압축 기술 중 하나인 프루닝(Pruning)은 신경망 내 뉴런들 사이의 연결을 삭제하는 과정을 의미한다. 일반적으로 프루닝은 네트워크에서 무의미한 여분의 연결을 줄일 수 있기 때문에 많은 비용을 절감할 수 있다.
도 1은 종래의 프루닝 기법을 설명하기 위한 도면이다. 도 1을 참조하면, 프루닝은 훈련된 신경망에서 각 뉴런들의 연결의 중요성을 판단하여 중요하지 않은 순으로 연결을 삭제한다. 여기서, 뉴런들의 연결을 삭제하는 기준은 그 방법에 따라 다양하며, 일반적으론 뉴런의 가중치 값을 0으로 만드는 방법을 사용한다. 참고로, 도 1에서 신경망을 이루는 각각의 뉴런은 원으로, 뉴런들 사이의 연결(가중치)은 뉴런을 잇는 복수의 선으로 도시되어 있다.
또한, 신경망 중 오늘날 컴퓨터 비전, 음성 인식, 자연어 처리 등의 다양한 분야에서 활용되고 있는 컨볼루션 신경망(Convolutional Neural Network, CNN) 분야에서는, 성능 향상을 위하여 신경망의 깊이가 점점 깊어지고 있으며, 일예로 ResNet과 같은 모델은 망의 깊이가 100층을 넘도록 구현된 바 있다. 이처럼 신경망의 깊이가 더욱 깊어짐에 따라 연산량 또한 급격하게 증가하고 있고, 따라서 컨볼루션 신경망 네트워크는 연산 시간의 단축을 위해 Graphic Processing Unit(GPU)와 같은 고성능의 가속기를 통해 구현되는 추세이다. 그러나, 저전력 소모와 초소형 형태가 일반적인 사물 인터넷(Internet of Things, IoT) 기기와 같이 제한된 리소스를 보유한 경량의 임베디드 시스템은 GPU와 같은 고성능의 가속기를 활용하기 어렵다는 한계가 있다. 따라서 이러한 경량의 임베디드 시스템의 경우 중앙 처리 장치(Central Processing Unit, CPU)를 효율적으로 활용하여 CNN을 가속하는 것이 중요하다. 달리 말해, 임베디드 시스템에 적용되는 CNN 추론 모델의 디자인 시에는 연산 요구량(Computation cost), 메모리 크기(Memory Size), 전력(Power) 등의 제약 사항를 적절히 고려하여 네트워크를 설계하여야 한다.
아울러, 오늘날의 CPU에는 Intel AVX, ARM NEON과 같은 단일 명령 다중 데이터 처리(Single Instruction Multiple Data, SIMD) 기능이 일반적으로 탑재되어 있다. SIMD 기능은 특정한 동종의 복수의 연산을 병렬로 수행하는 데이터 병렬화를 제공하는 것을 일컫는다. 이러한 SIMD 기능은 신호 및 이미지 처리 등 응용 분야에서 연산 속도 향상을 위해 활용되고 있다. 이와 관련하여, SIMD 기능이 탑재된 CPU를 활용하여 CNN 구축 시 SIMD를 고려하여 프루닝을 수행하면, 프루닝에 의한 파라미터 수의 감소와 더불어 연산 처리 속도의 향상을 도모할 수 있다. 그러나, 지금까지의 종래 개발된 프루닝 기법은 주로 CNN에 활용되는 파라미터의 양을 줄이기 위한 목적은 달성하였으나, 각각의 프루닝 절차가 비구조적으로(병렬적으로) 수행되기 때문에, 일반적인 시스템에서 프루닝에 의해 제거된 가중치를 식별하여 소정의 연산을 생략하도록 동작하지는 못하였으므로, 연산 처리 속도 측면에서의 성능 향상은 미비하였다. 예를 들어, 커널 단위로 프루닝을 수행하는 프루닝 기법(커널-와이즈 프루닝, 필터 프루닝)의 경우에는 커널 전체를 제거 단위로 하여 프루닝이 수행되어 속도는 일부 향상되었으나 정확도가 크게 감소되는 한계가 있었으며, SIMD 기능을 활용한 종래의 프루닝 기법은 희소 행렬(Sparse Matrix)라는 특수한 행렬 변환 방식에 기초하여서만 수행되므로 범용적으로 활용되기는 어렵다는 단점이 있었다.
본원의 배경이 되는 기술은 한국공개특허공보 제10-2018-0084289호에 개시되어 있다.
본원은 전술한 종래 기술의 문제점을 해결하기 위한 것으로서, 단일 명령 다중 데이터 처리 기법을 적용하여 연산 처리 속도가 향상되며 신경망 구축에 필요한 파라미터의 수를 감소시킬 수 있는 상이한 희소 수준을 갖는 신경망 다중 프루닝 장치 및 방법을 제공하려는 것을 목적으로 한다.
다만, 본원의 실시예가 이루고자 하는 기술적 과제는 상기된 바와 같은 기술적 과제들로 한정되지 않으며, 또 다른 기술적 과제들이 존재할 수 있다.
상기한 기술적 과제를 달성하기 위한 기술적 수단으로서, 본원의 일 실시예에 따른 SIMD 기반의 신경망 프루닝 방법은, 신경망 내 레이어에 적용되는 노드 간 가중치 커널을 GEMM 변환하는 단계 및 상기 GEMM 변환된 가중치 커널을 기 설정된 SIMD 너비를 단위로 하여 프루닝하는 단계를 포함할 수 있다.
또한, 상기 프루닝 하는 단계는, 상기 GEMM 변환된 가중치 커널을 상기 SIMD 너비를 고려하여 복수의 단위 벡터로 분할하는 단계, 분할된 상기 단위 벡터 각각의 크기값을 계산하는 단계 및 상기 크기값이 기 설정된 문턱값보다 작은 상기 단위 벡터를 상기 GEMM 변환된 가중치 커널로부터 제거하는 단계를 포함할 수 있다.
또한, 상기 GEMM 변환된 가중치 커널로부터 제거하는 단계는, 상기 GEMM 변환된 가중치 커널에 대하여 기 설정된 소정의 방향을 따라 상기 단위 벡터를 탐색하면서 상기 단위 벡터의 크기값과 상기 기 설정된 문턱값을 비교하는 단계를 포함할 수 있다.
또한, 본원의 일 실시예에 따른 SIMD 기반의 신경망 프루닝 방법은, SIMD 기능을 구비한 CPU에 의해 수행될 수 있다.
또한, 상기 SIMD 너비는, 상기 CPU의 SIMD 처리 능력에 기초하여 결정될 수 있다.
또한, 상기 SIMD 너비는, 상기 GEMM 변환된 가중치 커널의 4개 내지 8개 중 어느 한 개수의 연속된 셀을 포함하도록 결정될 수 있다.
또한, 본원의 일 실시예에 따른 SIMD 기반의 신경망 프루닝 방법은, 상기 프루닝된 신경망 내의 노드 간 가중치 커널 중 적어도 일부를 회복시키고, 상기 회복된 노드 간 가중치 커널에 대한 재훈련을 수행하는 단계를 포함할 수 있다.
또한, 본원의 일 실시예에 따른 상이한 희소 수준을 갖는 신경망 다중 프루닝 방법은, 신경망 내 레이어 중 어느 하나에 대하여 커널 단위의 조립 수준 프루닝을 수행하는 단계 및 상기 조립 수준 프루닝 수행 결과에 대하여 SIMD 단위의 세립 수준 프루닝을 수행하는 단계를 포함할 수 있다.
또한, 상기 세립 수준 프루닝을 수행하는 단계는, 상기 조립 수준 프루닝 수행 결과에 대한 가중치 커널을 GEMM 변환하는 단계 및 상기 GEMM 변환된 가중치 커널을 기 설정된 SIMD 너비를 단위로 하여 프루닝하는 단계를 포함할 수 있다.
또한, 상기 SIMD 너비를 단위로 하여 프루닝하는 단계는, 상기 GEMM 변환된 가중치 커널을 상기 SIMD 너비를 단위로 하는 복수의 단위 벡터로 분할하는 단계, 분할된 상기 단위 벡터 각각의 크기값을 계산하는 단계 및 상기 크기값이 기 설정된 문턱값보다 작은 상기 단위 벡터를 상기 GEMM 변환된 가중치 커널로부터 제거하는 단계를 포함할 수 있다.
또한, 상기 조립 수준 프루닝을 수행하는 단계는, GEMM 변환되지 않은 원본 가중치 커널의 적어도 일부의 연속적인 영역을 상기 원본 가중치 커널로부터 제거할 수 있다.
또한, 본원의 일 실시예에 따른 상이한 희소 수준을 갖는 신경망 다중 프루닝 방법은, 상기 프루닝된 신경망 내의 노드 간 가중치 커널 중 적어도 일부를 회복시키고, 상기 회복된 노드 간 가중치 커널에 대한 재훈련을 수행하는 단계를 포함할 수 있다.
한편, 본원의 일 실시예에 따른 상이한 희소 수준을 갖는 신경망 다중 프루닝 장치는, 신경망 내 레이어 중 어느 하나에 대하여 커널 단위의 조립 수준 프루닝을 수행하는 제1프루닝부 및 상기 조립 수준 프루닝 수행 결과에 대하여 SIMD 단위의 세립 수준 프루닝을 수행하는 제2프루닝부를 포함할 수 있다.
또한, 상기 제2프루닝부는, 상기 조립 수준 프루닝 수행 결과에 대한 가중치 커널을 GEMM 변환하고, 상기 GEMM 변환된 가중치 커널을 기 설정된 SIMD 너비를 단위로 하여 프루닝할 수 있다.
또한, 상기 제2프루닝부는, 상기 GEMM 변환된 가중치 커널을 상기 SIMD 너비를 단위로 하는 복수의 단위 벡터로 분할하고, 분할된 상기 단위 벡터 각각의 크기값을 계산하고, 상기 크기값이 기 설정된 문턱값보다 작은 상기 단위 벡터를 상기 GEMM 변환된 가중치 커널로부터 제거할 수 있다.
또한, 상기 제1프루닝부는, GEMM 변환되지 않은 원본 가중치 커널의 적어도 일부의 연속적인 영역을 상기 원본 가중치 커널로부터 제거할 수 있다.
또한, 본원의 일 실시예에 따른 상이한 희소 수준을 갖는 신경망 다중 프루닝 장치는, 상기 프루닝된 신경망 내의 노드 간 가중치 커널 중 적어도 일부를 회복시키고, 상기 회복된 노드 간 가중치 커널에 대한 재훈련을 수행하는 회복 재훈련부를 포함할 수 있다.
상술한 과제 해결 수단은 단지 예시적인 것으로서, 본원을 제한하려는 의도로 해석되지 않아야 한다. 상술한 예시적인 실시예 외에도, 도면 및 발명의 상세한 설명에 추가적인 실시예가 존재할 수 있다.
전술한 본원의 과제 해결 수단에 의하면, 단일 명령 다중 데이터 처리 기법을 적용하여 연산 처리 속도가 향상되며 신경망 구축에 필요한 파라미터의 수를 감소시킬 수 있는 상이한 희소 수준을 갖는 신경망 다중 프루닝 장치 및 방법을 제공할 수 있는 효과가 있다.
전술한 본원의 과제 해결 수단에 의하면, 제한된 리소스를 갖는 임베디드 시스템이 GPU 등 별도의 고성능 하드웨어 없이도 연산 처리 속도가 향상되고 정확도 열화가 적은 컨볼루션 신경망 네트워크를 구축할 수 있다.
다만, 본원에서 얻을 수 있는 효과는 상기된 바와 같은 효과들로 한정되지 않으며, 또 다른 효과들이 존재할 수 있다.
도 1은 종래의 프루닝 기법을 설명하기 위한 도면이다.
도 2는 본원의 일 실시예에 따른 상이한 희소 수준을 갖는 신경망 다중 프루닝 장치에 의해 수행되는 조립 수준 프루닝 및 세립 수준 프루닝을 설명하기 위한 도면이다.
도 3은 본원의 일 실시예에 따른 조립 수준 프루닝에 의하여 가중치 커널의 연속적인 영역이 제거된 상태를 나타낸 도면이다.
도 4는 본원의 일 실시예에 따른 세립 수준 프루닝에 의하여 가중치 커널의 일부가 SIMD 단위를 기준으로 제거된 상태를 나타낸 도면이다.
도 5는 본원의 일 실시예에 따른 GEMM 변환된 가중치 커널에 대하여 수행되는 세립 수준 프루닝을 설명하기 위한 개념도이다.
도 6은 본원의 일 실시예에 따른 상이한 희소 수준을 갖는 신경망 다중 프루닝 장치의 개략적인 구성도이다.
도 7은 본원의 일 실시예에 따른 상이한 희소 수준을 갖는 신경망 다중 프루닝 방법의 동작 흐름도이다.
도 8은 본원의 일 실시예에 따른 SIMD 기반의 신경망 프루닝 방법의 동작 흐름도이다.
도 9는 본원의 일 실시예에 따른 SIMD 기반의 세립 수준 프루닝 방법의 세부 동작 흐름도이다.
도 10은 본원의 일 실시예에 따른 상이한 희소 수준을 갖는 신경망 다중 프루닝 방법과 연계된 일 실험예로서 조립 수준 프루닝만 수행한 경우, 세립 수준 프루닝만 수행한 경우 및 조립 수준 프루닝과 세립 수준 프루닝을 함께 수행한 경우 각각에 대한 정확도 성능 및 속도 성능을 나타낸 그래프이다.
아래에서는 첨부한 도면을 참조하여 본원이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 본원의 실시예를 상세히 설명한다. 그러나 본원은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본원을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
본원 명세서 전체에서, 어떤 부분이 다른 부분과 "연결"되어 있다고 할 때, 이는 "직접적으로 연결"되어 있는 경우뿐 아니라, 그 중간에 다른 소자를 사이에 두고 "전기적으로 연결" 또는 "간접적으로 연결"되어 있는 경우도 포함한다.
본원 명세서 전체에서, 어떤 부재가 다른 부재 "상에", "상부에", "상단에", "하에", "하부에", "하단에" 위치하고 있다고 할 때, 이는 어떤 부재가 다른 부재에 접해 있는 경우뿐 아니라 두 부재 사이에 또 다른 부재가 존재하는 경우도 포함한다.
본원 명세서 전체에서, 어떤 부분이 어떤 구성 요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성 요소를 제외하는 것이 아니라 다른 구성 요소를 더 포함할 수 있는 것을 의미한다.
본원은 상이한 희소 수준을 갖는 신경망 다중 프루닝 장치 및 방법에 관한 것이다. 특히, 본원은 SIMD 기반의 신경망 프루닝 방법에 관한 것이다.
도 2는 본원의 일 실시예에 따른 상이한 희소 수준을 갖는 신경망 다중 프루닝 장치에 의해 수행되는 조립 수준 프루닝 및 세립 수준 프루닝을 설명하기 위한 도면이다.
도 2를 참조하면, 본원의 일 실시예에 따른 상이한 희소 수준을 갖는 신경망 다중 프루닝 장치(100)(이하, '신경망 다중 프루닝 장치(100)'라 한다.)는, 신경망 내 레이어에 적용되는 노드 간 가중치 커널에 대하여 상이한 희소 수준을 갖는 두 단계의 프루닝 기법을 적용할 수 있다. 구체적으로, 신경망 다중 프루닝 장치(100)는, 노드 간 가중치 커널에 대하여 커널 단위의 조립 수준 프루닝(P1) 및 SIMD 단위의 세립 수준 프루닝(P2)을 순차적으로 수행할 수 있다. 다만, 이에만 한정되는 것은 아니며, 필요에 따라 신경망 다중 프루닝 장치(100)는, 조립 수준 프루닝 및 세립 수준 프루닝 중 어느 하나를 수행하도록 동작할 수 있다. 예를 들어, 신경망 다중 프루닝 장치(100)는, 프루닝 대상이 되는 신경망에 포함된 복수의 레이어 각각에 대한 프루닝 유형(조립 수준 프루닝 또는 세립 수준 프루닝)을 상이하게 적용하도록 동작할 수 있다.
참고로, 본원에서의 신경망은 컨볼루션 신경망(Convolutional Neural Network, CNN)을 포함할 수 있다. 다만, 이에만 한정되는 것은 아니며, 본원이 적용되는 신경망은 순환신경망(RNN, Recurrent Neural Network) 등 종래에 이미 공지되었거나 향후 개발되는 다양한 신경망(이는 훈련된 신경망, 훈련되지 않은 신경망 등을 포함함)을 포함할 수 있다.
신경망 다중 프루닝 장치(100)는, 신경망 내 레이어 중 어느 하나에 대하여 커널 단위의 조립 수준 프루닝을 수행할 수 있다. 본원의 일 실시예에 따르면, 조립 수준 프루닝은 Coarse-grain pruning, 커널-와이즈 프루닝, 필터 프루닝 등으로 달리 지칭될 수 있다. 구체적으로, 본원의 일 실시예에 따르면, 신경망 다중 프루닝 장치(100)는 조립 수준 프루닝을 통해 신경망의 소정의 노드 간 가중치 커널 중 일부 가중치 커널을 전체적으로 제거하는 것일 수 있다. 본원에서의 가중치 커널이라는 용어는 필터(Filter)로 달리 지칭될 수 있다.
도 3은 본원의 일 실시예에 따른 조립 수준 프루닝에 의하여 가중치 커널의 연속적인 영역이 제거된 상태를 나타낸 도면이다.
도 3을 참조하면, 신경망 다중 프루닝 장치(100)는, 조립 수준 프루닝에 의하여 GEMM 변환되지 않은 원본 가중치 커널의 적어도 일부의 연속적인 영역을 원본 가중치 커널로부터 제거할 수 있다. 도 3의 (a)는 일반적인 3차원 가중치 커널을 도시한 것이고, 도 3의 (b)는 3차원 가중치 커널이 GEMM 변환에 의하여 2차원 행렬 형태로 변환된 것을 나타낸 것이다. 본원의 일 실시예에 따른 조립 수준 프루닝에 의할 때, 도 3의 (a)와 같은 소정의 가중치 커널 전체가 제거되는 것일 수 있으며, 이는 도 3의 (b)의 2차원 행렬 형태로 GEMM 변환된 가중치 커널을 기준으로 설명하면, GEMM 변환된 가중치 커널의 하나의 행이 제거되는 것으로 이해될 수 있다.
참고로, GEMM(General Matrix Multiply) 변환은 오늘날 딥 러닝 추론 엔진에서 널리 사용되는 행렬 변환 방식으로, 본원은 이러한 GEMM 변환을 활용한 변환 행렬을 기반으로 프루닝을 수행함으로써 종래의 프루닝 기법이 CSR(Compressed Sparse Row), CSC(Compressed Sparse Column), COO(Coordinate list) 등의 특수한 희소 행렬(Sparse Matrix)을 활용하기 때문에 다른 종류의 프루닝 기법과 함께 중첩하여 적용될 수 없었던 문제점을 해결하였다.
CNN의 컨볼루션 레이어에서는 행렬 간의 단순 곱셈이 아닌, 입력되는 이미지 또는 특징 맵에 대하여 소정의 간격(예를 들면, 기 설정된 스트라이드 단위)으로 순차적으로 가중치 커널이 슬라이딩되면서 복수의 값들 간의 곱셉 및 합산이 이루어지는 복잡한 연산이 여러 번 처리되게 되는데, 이러한 복잡한 컨볼루션 연산을 일반적인 행렬 곱셈 방식으로 처리할 수 있도록 큐브 형태의 3차원 특징 맵이나 가중치 커널을 2차원의 행렬로 변환하기 위하여 상술한 GEMM 변환이 활용될 수 있다.
조립 수준 프루닝은 본원이 적용되는 CNN의 연산 처리 속도(예를 들면, 학습 속도)를 향상시킬 수 있으나, 조립 수준 프루닝만 적용하는 경우에는 후술하는 바와 같이 정확도의 열화가 클 수 있다. 따라서, 본원의 일 실시예에 따른 신경망 다중 프루닝 장치(100)는 구현하고자 하는 컨볼루션 네트워크의 정확도 요구 사항에 기초하여 조립 수준 프루닝의 적용 여부를 결정할 수 있다.
예를 들어, 입력 이미지 또는 입력 영상에 대한 개략적인 분류 또는 인식이 필요한 상황(달리 말해, 높은 정확도가 요구되지 않는 상황)에서는 조립 수준 프루닝이 적용되도록 구현되고, 입력 이미지 또는 입력 영상에 대한 정확한 분류 또는 인식이 필요한 상황에서는 조립 수준 프루닝이 적용되지 않도록 본 신경망 다중 프루닝 장치(100)가 동작할 수 있다. 또 다른 예로, 조립 수준 프루닝이 적용되는 경우에도 요구되는 정확도에 따라 가중치 커널에서 제거되는 영역을 결정하기 위한 임계값이 상이하게 결정되도록 본 신경망 다중 프루닝 장치(100)가 구현될 수 있다.
도 4는 본원의 일 실시예에 따른 세립 수준 프루닝에 의하여 가중치 커널의 일부가 SIMD 단위를 기준으로 제거된 상태를 나타낸 도면이고, 도 5는 본원의 일 실시예에 따른 GEMM 변환된 가중치 커널에 대하여 수행되는 세립 수준 프루닝을 설명하기 위한 개념도이다.
도 4 및 도 5를 참조하면, 신경망 다중 프루닝 장치(100)는, 조립 수준 프루닝 수행 결과에 대하여 SIMD 단위의 세립 수준 프루닝을 수행할 수 있다. 본원의 실시예에 관한 설명에서 세립 수준 프루닝은 Fine-grain pruning으로 달리 지칭될 수 있다.
달리 말해, 신경망 다중 프루닝 장치(100)는, 선행된 조립 수준 프루닝에 의해 일부 행이 제거된 GEMM 변환된 가중치 커널에 대하여 보다 세밀한(작은) 단위로 제거될 일부 가중치 값을 결정하는 세립 수준 프루닝을 후속하여 적용할 수 있다. 구체적으로, 신경망 다중 프루닝 장치(100)는, 조립 수준 프루닝 수행 결과에 대한 가중치 커널을 GEMM 변환하고, GEMM 변환된 가중치 커널을 기 설정된 SIMD 너비를 단위로 하여 프루닝(제거, 가지 치기)할 수 있다.
도 4의 (a)는 GEMM 변환되기 이전의 일반적인 3차원 형상의 가중치 커널을 나타낸 것이고, 도 4의 (b)는 (a)의 3차원 형상의 가중치 커널이 GEMM 변환에 의해 2차원 행렬 형태로 변환된 것을 나타낸 것이다.
도 4를 참조하면, 세립 수준 프루닝 적용 시의 가중치 제거 단위인 SIMD 단위는 GEMM 변환된 가중치 커널의 같은 열(세로 줄)에 위치하는 소정의 수의 원소를 포함할 수 있다. 또한, 도 4를 참조하면, GEMM 변환된 가중치 커널의 하나의 SIMD 단위에 포함된 가중치 각각은 3차원 형상의 가중치 커널을 기준으로 하면, 복수의 커널에 대하여 동일한 위치에 위치하는 가중치 값을 의미하는 것일 수 있다.
이해를 돕기 위해 예시하면, 도 4의 (b)의 붉은 색으로 표시된 SIMD 단위에 포함된 4개의 가중치 값들은 3차원 형상의 가중치 커널을 기준으로 하면, 도 4의 (a)에서 깊이 방향으로 중첩된 연속한 4개의 커널에서 동일한 (1, 1) 위치에 위치하는 4개의 가중치 값들을 의미하는 것일 수 있다. 마찬가지로, 도 4의 (b)의 노란 색으로 표시된 SIMD 단위에 포함된 4개의 가중치 값들은 3차원 형상의 가중치 커널을 기준으로 하면, 도 4의 (a)에서 깊이 방향으로 중첩된 연속한 4개의 커널에서 동일한 (5, 5) 위치에 위치하는 4개의 가중치 값들을 의미하는 것일 수 있다.
이렇듯, 본원의 세립 수준 프루닝에 의하여, GEMM 변환된 가중치 커널의 같은 열에 위치하는 소정의 수의 원소를 포함하는 SIMD 단위의 가중치가 제거(프루닝, 가지치기)되는 경우, 복수의 가중치 커널에서 대응되는 동일한 위치에 위치한 가중치 값들이 동시에 제거되는 것일 수 있다.
상술한 설명에서 하나의 SIMD 단위에는 가중치 값이 할당된 4개의 원소(셀)를 포함하는 것으로 설명하였으나, 이에만 한정되는 것은 아니다. 본원의 일 실시예에 따르면, SIMD 너비(단위)는 본원이 적용되는 CPU의 SIMD 처리 능력에 기초하여 결정될 수 있다. 예를 들어, SIMD 너비(단위)는 GEMM 변환된 가중치 커널의 4개 내지 8개 중 어느 한 개수의 세로 방향으로 연속된 셀을 포함하도록 결정될 수 있다.
또한, 여기서, CPU의 SIMD 처리 능력은 해당 CPU가 동일한 유형의 연산의 처리를 위하여 동시에 불러올 수 있는 값의 수를 의미하는 것일 수 있다.
도 5를 참조하면, 세립 수준 프루닝을 적용하는 경우, 신경망 다중 프루닝 장치(100)는, GEMM 변환된 가중치 커널(W')을 SIMD 너비(W uv )를 단위로 하는 복수의 단위 벡터(Unit Vector)로 분할할 수 있다. 또한, 신경망 다중 프루닝 장치(100)는 분할된 단위 벡터 각각의 크기값(예를 들면, norm 값)을 계산할 수 있다. 또한, 신경망 다중 프루닝 장치(100)는 계산된 크기값이 기 설정된 문턱값(h)보다 작은 단위 벡터를 GEMM 변환된 가중치 커널로부터 제거할 수 있다.
본원의 일 실시예에 따르면, 신경망 다중 프루닝 장치(100)는 GEMM 변환된 가중치 커널(W')에 대하여 기 설정된 소정의 방향을 따라 단위 벡터를 탐색하면서 단위 벡터의 크기값과 기 설정된 문턱값을 비교할 수 있다. 달리 말해, 신경망 다중 프루닝 장치(100)는 GEMM 변환된 가중치 커널에 포함된 단위 벡터들을 순차적으로 탐색하면서 크기값을 문턱값과 비교함으로써 순차적으로 단위 벡터가 제거되도록 동작할 수 있다. 예를 들어, 기 설정된 소정의 방향은 도 5의 (a)를 참조하면 GEMM 변환된 가중치 커널(W')의 우측 방향에서 좌측 방향을 의미하는 것일 수 있으나, 이에만 한정되는 것은 아니다.
또한, 도 5를 참조하면, RBS(Reduction Block Size)는 본원이 적용되는 CPU와 연계된 메모리의 계층(Hierarchy)에 따라 변동되는 변수값일 수 있다. 단위 벡터는 세립 수준 프루닝 시 동시에 처리(제거, 가지치기, 프루닝)되는 가장 작은 단위이므로, 세립 수준 프루닝 시 단위 벡터는 소정의 방향으로 순차적으로 하나씩 처리될 수 있다. 이러한 방향성 설정을 통해, 본원은 추론 절차를 단순화할 수 있으며, 예를 들어, 소정의 수의 단위 벡터를 포함하는 각각의 서브-블록(여기서, 하나의 서브-블록은 가로 방향으로 기 설정된 RBS 값만큼의 단위 벡터를 포함할 수 있다.)으로부터 마지막 위치에서부터 복수의 연속적인 단위 벡터를 제거하도록 동작할 수 있다. 따라서, 기 구축된 추론 엔진의 기본 구조를 유지할 수 있으며, 예시적으로, n개의 단위 벡터가 서브 블록에서 프루닝되는 경우, 루프 카운트 값만 기존 RBS에서 RBS -n으로 변경되고, 추론 엔진의 기본 구조는 유지될 수 있다.
본원의 일 실시예에 따르면, 각각의 서브 블록에서 프루닝되는 단위 벡터의 수는 기 설정된 문턱값(h)에 의해 결정되며, 보다 구체적으로, 각각의 서브-블록에서, 단위 벡터의 크기값(l2-norm값)이 마지막 위치(예를 들면, 최 우측)부터 기 설정된 문턱값과 비교되고, 크기값(l2-norm 값)이 기 설정된 문턱값(h)보다 크지 않은 단위 벡터가 연속적으로 제거될 수 있다.
도 5를 참조하여 설명하면, 서브 블록 ① 내지 ④ 각각의 가장 우측의 단위 벡터부터 각각 1개, 3개, 5개 및 4 개의 단위 벡터가 제거될 수 있다. 본원의 일 실시예 따르면, 단위 벡터 제거의 기준이 되는 기 설정된 문턱값 h는 미리 설정된 희소 수준에 도달하도록 Greedy Heuristic 알고리즘에 기초하여 탐색될 수 있다.
상술한 설명에서, 본원의 신경망 다중 프루닝 장치(100)는 조립 수준 프루닝을 선행하여 수행하고, 조립 수준 프루닝 결과에 후속하여 세립 수준 프루닝을 적용하는 것으로 설명하였으나, 실시예에 따라 본원의 신경망 다중 프루닝 장치(100)는 세립 수준 프루닝만을 적용하도록 동작할 수 있다. 예를 들어, 본원의 신경망 다중 프루닝 장치(100)는 구축하고자 하는 컨볼루션 신경망 네트워크(CNN)에 높은 정확도 성능이 요구되는 경우, 조립 수준 프루닝을 생략하고 세립 수준 프루닝을 적용할 수 있다.
달리 말해, 신경망 다중 프루닝 장치(100)는, 신경망 내 레이어에 적용되는 노드 간 가중치 커널을 GEMM 변환하고, GEMM 변환된 가중치 커널을 기 설정된 SIMD 너비를 단위로 하여 프루닝할 수 있다.
또한, 본원의 일 실시예에 따르면, 신경망 다중 프루닝 장치(100)는, 프루닝된 신경망 내의 노드 간 가중치 커널 중 적어도 일부를 회복시키고, 회복된 노드 간 가중치 커널에 대한 재훈련을 수행할 수 있다. 또한, 이러한 회복 및 재훈련 절차는 실시예에 따라 복수 회 반복 수행될 수 있다. 참고로, 회복 및 재훈련 횟수에 따라 신경망의 페이즈(Phase)가 결정되는 것으로 이해될 수 있다. 예를 들어, 노드 간 가중치 커널에 대한 회복 및 재훈련 절차가 1회 수행된 경우의 네트워크를 Phase 1으로 지칭하고, 2회 수행된 경우의 네트워크를 Phase 2로 지칭할 수 있다.
본원의 일 실시예에 따르면, 회복 및 재훈련 절차의 수행 횟수에 따라 본원에 의해 여러 버전의 신경망이 구축될 수 있으며, 설계자는 이러한 회복 및 재훈련 절차의 수행 횟수를 조정함으로써 요구되는 정확도 성능 또는 속도 성능에 부합하는 신경망을 설계할 수 있게 된다.
도 6은 본원의 일 실시예에 따른 상이한 희소 수준을 갖는 신경망 다중 프루닝 장치의 개략적인 구성도이다.
도 6을 참조하면, 신경망 다중 프루닝 장치(100)는, 제1프루닝부(110), 제2프루닝부(120) 및 회복 재훈련부(130)를 포함할 수 있다.
제1프루닝부(110)는, 신경망 내 레이어 중 어느 하나에 대하여 커널 단위의 조립 수준 프루닝을 수행할 수 있다. 본원의 일 실시예에 따르면, 제1프루닝부(110)는, GEMM 변환되지 않은 원본 가중치 커널의 적어도 일부의 연속적인 영역을 원본 가중치 커널로부터 제거할 수 있다. 달리 말해, 제1프루닝부(110)는 복수의 2차원 가중치 커널을 포함하는 3차원으로 배열된 원본 가중치 커널로부터 가중치 값이 기 설정된 임계값에 이르지 못하는 하나 이상의 2차원 가중치 커널 자체를 제거할 수 있다(Kernel-wise pruning).
제2프루닝부(120)는, 제1프루닝부(110)의 조립 수준 프루닝 수행 결과에 대하여 SIMD 단위의 세립 수준 프루닝을 수행할 수 있다. 구체적으로, 제2프루닝부(120)는, 제1프루닝부(110)에 의한 조립 수준 프루닝 수행 결과에 대한 가중치 커널을 GEMM 변환하고, GEMM 변환된 가중치 커널을 기 설정된 SIMD 너비를 단위로 하여 프루닝할 수 있다.
본원의 일 실시예에 따르면, 제2프루닝부(120)는, GEMM 변환된 가중치 커널을 SIMD 너비를 단위로 하는 복수의 단위 벡터로 분할하고, 분할된 단위 벡터 각각의 크기값을 계산하고, 크기값이 기 설정된 문턱값보다 작은 단위 벡터를 GEMM 변환된 가중치 커널로부터 제거할 수 있다.
회복 재훈련부(130)는, 프루닝된 신경망 내의 노드 간 가중치 커널 중 적어도 일부를 회복시키고, 회복된 노드 간 가중치 커널에 대한 재훈련을 수행할 수 있다.
이하에서는 상기에 자세히 설명된 내용을 기반으로, 본원의 동작 흐름을 간단히 살펴보기로 한다.
도 7은 본원의 일 실시예에 따른 상이한 희소 수준을 갖는 신경망 다중 프루닝 방법의 동작 흐름도이다.
도 7에 도시된 상이한 희소 수준을 갖는 신경망 다중 프루닝 방법은 앞서 설명된 신경망 다중 프루닝 장치(100)에 의하여 수행될 수 있다. 따라서, 이하 생략된 내용이라고 하더라도 신경망 다중 프루닝 장치(100)에 대하여 설명된 내용은 상이한 희소 수준을 갖는 신경망 다중 프루닝 방법에 대한 설명에도 동일하게 적용될 수 있다.
도 7을 참조하면, 단계 S710에서 제1프루닝부(110)는, 신경망 내 레이어 중 어느 하나에 대하여 커널 단위의 조립 수준 프루닝을 수행할 수 있다.
다음으로, 단계 S720에서 제2프루닝부(120)는, 조립 수준 프루닝 수행 결과에 대하여 SIMD 단위의 세립 수준 프루닝을 수행할 수 있다.
상술한 설명에서, 단계 S710 및 S720은 본원의 구현예에 따라서, 추가적인 단계들로 더 분할되거나, 더 적은 단계들로 조합될 수 있다. 또한, 일부 단계는 필요에 따라 생략될 수도 있고, 단계 간의 순서가 변경될 수도 있다.
도 8은 본원의 일 실시예에 따른 SIMD 기반의 신경망 프루닝 방법의 동작 흐름도이다.
도 8에 도시된 SIMD 기반의 신경망 프루닝 방법은 앞서 설명된 신경망 다중 프루닝 장치(100)에 의하여 수행될 수 있다. 따라서, 이하 생략된 내용이라고 하더라도 신경망 다중 프루닝 장치(100)에 대하여 설명된 내용은 SIMD 기반의 신경망 프루닝 방법에 대한 설명에도 동일하게 적용될 수 있다.
도 8을 참조하면, 단계 S810에서 제2프루닝부(120)는, 가중치 커널을 GEMM 변환할 수 있다. 실시예에 따라, 단계 S810에서 GEMM 변환되는 원본 가중치 커널은 제1프루닝부(110)에 의한 조립 수준 프루닝이 수행된 결과이거나 신경망 내 레이어에 적용되는 노드 간 가중치 커널일 수 있다.
다음으로, 단계 S820에서 제2프루닝부(120)는, GEMM 변환된 가중치 커널을 기 설정된 SIMD 너비를 단위로 하여 프루닝할 수 있다. 본원의 일 실시예에 따르면, SIMD 기반의 신경망 프루닝 방법은 SIMD 기능을 구비한 CPU에 의해 수행되고, SIMD 너비는 CPU의 SIMD 처리 능력에 기초하여 결정되는 것일 수 있다.
본원의 일 실시예에 따르면, SIMD 너비는 GEMM 변환된 가중치 커널의 4개 내지 8개 중 어느 한 개수의 연속된 원소(셀)을 포함하도록 결정될 수 있다.
또한, 도면에는 도시하지 않았으나, SIMD 기반의 신경망 프루닝 방법 및 상이한 희소 수준을 갖는 신경망 다중 프루닝 방법은 프루닝된 신경망 내의 노드 간 가중치 커널 중 적어도 일부를 회복시키고, 회복된 노드 간 가중치 커널에 대한 재훈련을 수행하는 단계를 포함할 수 있다.
상술한 설명에서, 단계 S810 및 S820은 본원의 구현예에 따라서, 추가적인 단계들로 더 분할되거나, 더 적은 단계들로 조합될 수 있다. 또한, 일부 단계는 필요에 따라 생략될 수도 있고, 단계 간의 순서가 변경될 수도 있다.
도 9는 본원의 일 실시예에 따른 SIMD 기반의 세립 수준 프루닝 방법의 세부 동작 흐름도이다.
도 9를 참조하면, 단계 S910에서 제2프루닝부(120)는, GEMM 변환된 가중치 커널을 SIMD 너비를 고려하여 복수의 단위 벡터로 분할할 수 있다.
다음으로, 단계 S920에서 제2프루닝부(120)는, 분할된 상기 단위 벡터 각각의 크기값을 계산할 수 있다.
다음으로, 단계 S930에서 제2프루닝부(120)는, 계산된 크기값이 기 설정된 문턱값보다 작은 단위 벡터를 GEMM 변환된 가중치 커널로부터 제거할 수 있다. 본원의 일 실시예에 따르면, 단계 S930에서 제2프루닝부(120)는, GEMM 변환된 가중치 커널에 대하여 기 설정된 소정의 방향을 따라 상기 단위 벡터를 탐색하면서 순차적으로 단위 벡터의 크기값과 기 설정된 문턱값을 비교할 수 있다.
상술한 설명에서, 단계 S910 내지 S930은 본원의 구현예에 따라서, 추가적인 단계들로 더 분할되거나, 더 적은 단계들로 조합될 수 있다. 또한, 일부 단계는 필요에 따라 생략될 수도 있고, 단계 간의 순서가 변경될 수도 있다.
도 10은 본원의 일 실시예에 따른 상이한 희소 수준을 갖는 신경망 다중 프루닝 방법과 연계된 일 실험예로서 조립 수준 프루닝만 수행한 경우, 세립 수준 프루닝만 수행한 경우 및 조립 수준 프루닝과 세립 수준 프루닝을 함께 수행한 경우 각각에 대한 정확도 성능 및 속도 성능을 나타낸 그래프이다.
도 10을 참조하면, 도 10에 도시된 성능 평가 실험은 CIFAR-10으로 훈련된 VGG-11에 기초하여 수행되었으며, 또한, 성능 평가 실험에 활용된 하드웨어는 8 코어 ARM v8.2 64 비트 CPU가 장착된 NVIDIA Jetson AGX Xavier이었다. 본 성능 평가 실험에서 활용된 플랫폼의 코어의 성능을 고려하여, 세립 수준 프루닝 시의 SIMD 너비는 4로 설정되었다.
도 10에 도시된 그래프는 조립 수준 프루닝(Coarse-grain pruning) 또는 세립 수준 프루닝(Fine-grain pruning)을 개별적으로 적용하거나 두 가지 방식의 프루닝을 함께 적용(combined)하는 경우, 정확도-속도 트레이드 오프(Trade OFF)를 고려한 비교 관찰 결과를 나타낸 것이다. 목표 희소 수준(sparsity)은 77 %로 설정되고, 회복 및 재훈련 절차는 Phase 4까지 반복 수행되었다.
도 10을 참조하면, 조립 수준 프루닝만 수행한 경우(Coarse-grain pruning only), 속도 측면에서 유리한 것을 확인할 수 있으나, 85.5 % 이상의 정확도를 달성하지 못하는 것을 확인할 수 있다. 반대로, 세립 수준 프루닝만 수행한 경우(Fine-grain pruning only), 높은 정확도 수준을 제공하는 반면, 속도 측면에서의 성능 향상은 조립 수준 프루닝만 수행한 경우에 비해 미비한 것을 확인할 수 있다.
요약하면, 조립 수준 프루닝과 세립 수준 프루닝 각각은 속도-정확도를 고려한 2D 설계 공간에서 상호 보완적인 관계에 있는 것으로 이해될 수 있다. 또한, 두 가지 방식을 결합한 본원의 상이한 희소 수준을 갖는 신경망 다중 프루닝 방법(combined)에 의하면, 먼저 Phase 4까지의 조립 수준 프루닝을 VGG-11에 적용하고, 정확도가 충분하지 않은 후보의 경우 세립 수준 프루닝이 추가적으로 수행되었다.
도 10에 도시된 바와 같은 파레토 솔루션의 성능 향상 척도는 일반적으로 발견된 파레토 솔루션 그래프의 하측의 면적(부피)인 하이퍼 볼륨으로 정량화될 수 있다. 본 성능 평가 실험에서의 하이퍼 볼륨 계산에서는 유효한 솔루션의 정확도 및 속도 제약 조건은 각각 80 % 및 40.0으로 가정되었으며, 세립 수준 프루닝과 조립 수준 프루닝을 함께 적용하는 경우, 세립 수준 프루닝만 적용하는 경우와 조립 수준 프루닝만 적용하는 경우보다 하이퍼 볼륨 측면에서 각각 2.745배 및 1.146배 개선되는 것을 확인할 수 있다.
본원의 일 실시 예에 따른 SIMD 기반의 신경망 프루닝 방법 및 상이한 희소 수준을 갖는 신경망 다중 프루닝 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
또한, 전술한 SIMD 기반의 신경망 프루닝 방법 및 상이한 희소 수준을 갖는 신경망 다중 프루닝 방법은 기록 매체에 저장되는 컴퓨터에 의해 실행되는 컴퓨터 프로그램 또는 애플리케이션의 형태로도 구현될 수 있다.
전술한 본원의 설명은 예시를 위한 것이며, 본원이 속하는 기술분야의 통상의 지식을 가진 자는 본원의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 쉽게 변형이 가능하다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 예를 들어, 단일형으로 설명되어 있는 각 구성 요소는 분산되어 실시될 수도 있으며, 마찬가지로 분산된 것으로 설명되어 있는 구성 요소들도 결합된 형태로 실시될 수 있다.
본원의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본원의 범위에 포함되는 것으로 해석되어야 한다.
100: 상이한 희소 수준을 갖는 신경망 다중 프루닝 장치
110: 제1프루닝부
120: 제2프루닝부
130: 회복 재훈련부

Claims (16)

  1. SIMD 기반의 신경망 프루닝 방법에 있어서,
    신경망 내 레이어에 적용되는 노드 간 가중치 커널을 GEMM 변환하는 단계; 및
    상기 GEMM 변환된 가중치 커널을 기 설정된 SIMD 너비를 단위로 하여 프루닝하는 단계,
    를 포함하고,
    상기 프루닝 하는 단계는,
    상기 GEMM 변환된 가중치 커널을 상기 SIMD 너비를 고려하여 복수의 단위 벡터로 분할하는 단계;
    분할된 상기 단위 벡터 각각의 크기값을 계산하는 단계; 및
    상기 크기값이 기 설정된 문턱값보다 작은 상기 단위 벡터를 상기 GEMM 변환된 가중치 커널로부터 제거하는 단계,
    를 포함하고,
    상기 GEMM 변환된 가중치 커널로부터 제거하는 단계는,
    상기 GEMM 변환된 가중치 커널에 대하여 기 설정된 소정의 방향을 따라 상기 단위 벡터를 탐색하면서 상기 단위 벡터의 크기값과 상기 기 설정된 문턱값을 비교하는 단계를 포함하는 것인, 신경망 프루닝 방법.
  2. 삭제
  3. 삭제
  4. 제1항에 있어서,
    SIMD 기능을 구비한 CPU에 의해 수행되는 것을 특징으로 하고,
    상기 SIMD 너비는 상기 CPU의 SIMD 처리 능력에 기초하여 결정되는 것인, 신경망 프루닝 방법.
  5. 제4항에 있어서,
    상기 SIMD 너비는,
    상기 GEMM 변환된 가중치 커널의 4개 내지 8개 중 어느 한 개수의 연속된 셀을 포함하도록 결정되는 것인, 신경망 프루닝 방법.
  6. 제1항에 있어서,
    상기 프루닝된 신경망 내의 노드 간 가중치 커널 중 적어도 일부를 회복시키고, 상기 회복된 노드 간 가중치 커널에 대한 재훈련을 수행하는 단계를 더 포함하는 것인, 신경망 프루닝 방법.
  7. 상이한 희소 수준을 갖는 신경망 다중 프루닝 방법에 있어서,
    신경망 내 레이어 중 어느 하나에 대하여 커널 단위의 조립 수준 프루닝을 수행하는 단계; 및
    상기 조립 수준 프루닝 수행 결과에 대하여 SIMD 단위의 세립 수준 프루닝을 수행하는 단계,
    를 포함하고,
    상기 세립 수준 프루닝을 수행하는 단계는,
    상기 조립 수준 프루닝 수행 결과에 대한 가중치 커널을 GEMM 변환하는 단계; 및
    상기 GEMM 변환된 가중치 커널을 기 설정된 SIMD 너비를 단위로 하여 프루닝하는 단계,
    를 포함하고,
    상기 SIMD 너비를 단위로 하여 프루닝하는 단계는,
    상기 GEMM 변환된 가중치 커널을 상기 SIMD 너비를 단위로 하는 복수의 단위 벡터로 분할하는 단계;
    분할된 상기 단위 벡터 각각의 크기값을 계산하는 단계; 및
    상기 크기값이 기 설정된 문턱값보다 작은 상기 단위 벡터를 상기 GEMM 변환된 가중치 커널로부터 제거하는 단계,
    를 포함하고,
    상기 GEMM 변환된 가중치 커널로부터 제거하는 단계는,
    상기 GEMM 변환된 가중치 커널에 대하여 기 설정된 소정의 방향을 따라 상기 단위 벡터를 탐색하면서 상기 단위 벡터의 크기값과 상기 기 설정된 문턱값을 비교하는 단계를 포함하는 것인, 신경망 다중 프루닝 방법.
  8. 삭제
  9. 삭제
  10. 제7항에 있어서,
    상기 조립 수준 프루닝을 수행하는 단계는,
    GEMM 변환되지 않은 원본 가중치 커널의 적어도 일부의 연속적인 영역을 상기 원본 가중치 커널로부터 제거하는 것인, 신경망 다중 프루닝 방법.
  11. 제7항에 있어서,
    상기 프루닝된 신경망 내의 노드 간 가중치 커널 중 적어도 일부를 회복시키고, 상기 회복된 노드 간 가중치 커널에 대한 재훈련을 수행하는 단계를 더 포함하는 것인, 신경망 다중 프루닝 방법.
  12. 상이한 희소 수준을 갖는 신경망 다중 프루닝 장치에 있어서,
    신경망 내 레이어 중 어느 하나에 대하여 커널 단위의 조립 수준 프루닝을 수행하는 제1프루닝부; 및
    상기 조립 수준 프루닝 수행 결과에 [[대하여]]대한 가중치 커널을 GEMM 변환하고, 상기 GEMM 변환된 가중치 커널을 기 설정된 SIMD 너비를 단위로 하여 SIMD 단위의 세립 수준 프루닝을 수행하는 제2프루닝부,
    를 포함하고,
    상기 제2프루닝부는,
    상기 GEMM 변환된 가중치 커널을 상기 SIMD 너비를 단위로 하는 복수의 단위 벡터로 분할하고, 분할된 상기 단위 벡터 각각의 크기값을 계산하고, 상기 크기값이 기 설정된 문턱값보다 작은 상기 단위 벡터를 상기 GEMM 변환된 가중치 커널로부터 제거하되,
    상기 GEMM 변환된 가중치 커널에 대하여 기 설정된 소정의 방향을 따라 상기 단위 벡터를 탐색하면서 상기 단위 벡터의 크기값과 상기 기 설정된 문턱값을 비교하는 것인, 다중 프루닝 장치.
  13. 삭제
  14. 삭제
  15. 제12항에 있어서,
    상기 제1프루닝부는,
    GEMM 변환되지 않은 원본 가중치 커널의 적어도 일부의 연속적인 영역을 상기 원본 가중치 커널로부터 제거하는 것인, 다중 프루닝 장치.
  16. 제12항에 있어서,
    프루닝된 신경망 내의 노드 간 가중치 커널 중 적어도 일부를 회복시키고, 상기 회복된 노드 간 가중치 커널에 대한 재훈련을 수행하는 회복 재훈련부를 더 포함하는 것인, 다중 프루닝 장치.
KR1020190148658A 2019-11-19 2019-11-19 상이한 희소 수준을 갖는 신경망 다중 프루닝 장치 및 방법 KR102321049B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020190148658A KR102321049B1 (ko) 2019-11-19 2019-11-19 상이한 희소 수준을 갖는 신경망 다중 프루닝 장치 및 방법
US16/951,464 US11995552B2 (en) 2019-11-19 2020-11-18 Apparatus and method for multi-phase pruning for neural network with multi-sparsity levels

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190148658A KR102321049B1 (ko) 2019-11-19 2019-11-19 상이한 희소 수준을 갖는 신경망 다중 프루닝 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20210060980A KR20210060980A (ko) 2021-05-27
KR102321049B1 true KR102321049B1 (ko) 2021-11-02

Family

ID=75910060

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190148658A KR102321049B1 (ko) 2019-11-19 2019-11-19 상이한 희소 수준을 갖는 신경망 다중 프루닝 장치 및 방법

Country Status (2)

Country Link
US (1) US11995552B2 (ko)
KR (1) KR102321049B1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11037330B2 (en) * 2017-04-08 2021-06-15 Intel Corporation Low rank matrix compression
US11681922B2 (en) * 2019-11-26 2023-06-20 Numenta, Inc. Performing inference and training using sparse neural network
US20220300816A1 (en) * 2021-03-19 2022-09-22 Rebellions Inc. Neural processing device and method for pruning thereof
US20230153625A1 (en) * 2021-11-17 2023-05-18 Samsung Electronics Co., Ltd. System and method for torque-based structured pruning for deep neural networks

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130290674A1 (en) * 2012-04-30 2013-10-31 Biju George Modeling Structured SIMD Control FLow Constructs in an Explicit SIMD Language
KR102457463B1 (ko) 2017-01-16 2022-10-21 한국전자통신연구원 희소 파라미터를 사용하는 압축 신경망 시스템 및 그것의 설계 방법
US20200026535A1 (en) * 2018-07-20 2020-01-23 PearCircuit LLC d/b/a Liven Converting Presentations into and Making Presentations from a Universal Presentation Experience
US10970201B2 (en) * 2018-10-24 2021-04-06 Arm Limited System, method and apparatus for data manipulation
US11281974B2 (en) * 2018-10-25 2022-03-22 GM Global Technology Operations LLC Activation zero-bypass and weight pruning in neural networks for vehicle perception systems

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Scalpel: Customizing DNN Pruning to the Underlying 1부*
가속 회로에 적합한 CNN의 Conv-XP 가지치기 1부*

Also Published As

Publication number Publication date
US11995552B2 (en) 2024-05-28
US20210150363A1 (en) 2021-05-20
KR20210060980A (ko) 2021-05-27

Similar Documents

Publication Publication Date Title
KR102321049B1 (ko) 상이한 희소 수준을 갖는 신경망 다중 프루닝 장치 및 방법
Cai et al. Yolobile: Real-time object detection on mobile devices via compression-compilation co-design
US11568258B2 (en) Operation method
US20180260710A1 (en) Calculating device and method for a sparsely connected artificial neural network
US20170262995A1 (en) Video analysis with convolutional attention recurrent neural networks
US11775832B2 (en) Device and method for artificial neural network operation
US20190354865A1 (en) Variance propagation for quantization
Li et al. A multistage dataflow implementation of a deep convolutional neural network based on FPGA for high-speed object recognition
US20210117761A1 (en) Method and apparatus with data processing
WO2022095984A1 (en) Method and system for convolution with workload-balanced activation sparsity
CN113344182A (zh) 一种基于深度学习的网络模型压缩方法
Ju et al. Threshnet: An efficient densenet using threshold mechanism to reduce connections
JP2023544170A (ja) ニューラルネットワークモデルのためのバンクバランストスパース活性化特徴マップ
CN117474061A (zh) 一种抗辐射低延迟神经网络推理加速芯片
Xu et al. An efficient channel-level pruning for CNNs without fine-tuning
Adel et al. Accelerating deep neural networks using FPGA
Rong et al. Soft Taylor pruning for accelerating deep convolutional neural networks
US20210049469A1 (en) Memory remapping for sparse neural networks
Chitty-Venkata et al. Array-aware neural architecture search
Gopalakrishnan et al. Hardware-friendly neural network architecture for neuromorphic computing
Liu et al. A distributed and parallel anomaly detection in hyperspectral images based on low-rank and sparse representation
KR102646447B1 (ko) 프루닝에 의한 손실이 보상된 신경망을 생성하는 방법 및 장치
TWI841838B (zh) 資訊處理電路及資訊處理電路之設計方法
Bao et al. Point distance mask attention network for learning on point cloud
Lv et al. Application of model compression and acceleration algorithms in complex task model

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant