KR20220143792A - 콘볼루션 신경망 양자화 추론 장치 및 방법 - Google Patents

콘볼루션 신경망 양자화 추론 장치 및 방법 Download PDF

Info

Publication number
KR20220143792A
KR20220143792A KR1020220128648A KR20220128648A KR20220143792A KR 20220143792 A KR20220143792 A KR 20220143792A KR 1020220128648 A KR1020220128648 A KR 1020220128648A KR 20220128648 A KR20220128648 A KR 20220128648A KR 20220143792 A KR20220143792 A KR 20220143792A
Authority
KR
South Korea
Prior art keywords
neural network
opencl
convolutional layer
data
kernel
Prior art date
Application number
KR1020220128648A
Other languages
English (en)
Other versions
KR102545658B1 (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 KR1020220128648A priority Critical patent/KR102545658B1/ko
Publication of KR20220143792A publication Critical patent/KR20220143792A/ko
Application granted granted Critical
Publication of KR102545658B1 publication Critical patent/KR102545658B1/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
    • G06N20/00Machine learning
    • G06N20/10Machine learning using kernel methods, e.g. support vector machines [SVM]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference or reasoning models

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Artificial Intelligence (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Biomedical Technology (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Biophysics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Medical Informatics (AREA)
  • Image Analysis (AREA)
  • Complex Calculations (AREA)

Abstract

콘볼루션 신경망 양자화 추론 장치 및 방법이 개시된다. 본 발명의 실시예에 따른 콘볼루션 신경망 양자화 추론 방법은 미리 학습된 콘볼루션 신경망에서 추론하고자 하는 입력 데이터의 특징 및 콘볼루션 계층 정보를 수신함에 따라, 입력 데이터의 특징 및 콘볼루션 계층 정보를 분석하여 임베디드 시스템의 하드웨어 플랫폼에 최적화된 OpenCL 파라미터 및 커널을 설정하는 단계 및 설정된 OpenCL 파라미터 및 커널을 이용하여 콘볼루션 계층에 대한 양자화 추론을 수행하는 단계를 포함한다.

Description

콘볼루션 신경망 양자화 추론 장치 및 방법{Apparatus and Method for Convolutional Neural Network Quantization Inference}
기재된 실시예는 스마트폰과 같은 임베디드 시스템에서 콘볼루션 신경망(Convolutional Neural Network, CNN)을 이용한 실시간 추론하는 기술에 관한 것이다.
최근 딥러닝(DNN: Deep Neural Network) 기술의 발전으로 영상 내 객체 인식 등에 활용되는 콘볼루션 신경망(Convolutional Neural Network, CNN)이 각광받고 있다. 특히 최근 스마트폰과 같은 개인 단말 형태의 임베디드 시스템이 널리 활용됨에 따라 일반 데스크탑 환경이 아닌 임베디드 시스템에서 콘볼루션 신경망을 이용한 실시간 추론(inference) 기술에 대한 수요가 급증하고 있다.
특히 임베디드 시스템은 고사양의 데스크탑에 비해 제한된 시스템 자원과 성능을 가지고 있기 때문에, 임베디드 시스템에서 실시간 추론을 위해서는 콘볼루션 신경망을 경량화하여 가속화 할 수 있는 기술이 필수적이다.
한국공개특허 10-2019-0034985호
기재된 실시예는 스마트폰과 같은 제한된 시스템 자원을 가지는 임베디드 시스템에서 실시간 추론을 위해서는 콘볼루션 신경망을 경량화하여 가속화하는데 그 목적이 있다.
실시예에 따른 콘볼루션 신경망 양자화 추론 방법은 미리 학습된 콘볼루션 신경망에서 추론하고자 하는 입력 데이터의 특징 및 콘볼루션 계층 정보를 수신함에 따라, 입력 데이터의 특징 및 콘볼루션 계층 정보를 분석하여 임베디드 시스템의 하드웨어 플랫폼에 최적화된 OpenCL 파라미터 및 커널을 설정하는 단계 및 설정된 OpenCL 파라미터 및 커널을 이용하여 콘볼루션 계층에 대한 양자화 추론을 수행하는 단계를 포함한다.
실시예에 따라, 제한된 시스템 자원을 가지는 임베디드 시스템에서 GPU를 기반으로 추론 연산 가속 효과를 극대화함으로써 실시간 추론을 가능하게 한다.
실시예에 따라, OpenCL을 이용함으로써 특정 하드웨어 플랫폼에 제한되지 않게 다양한 임베디드 시스템에서 양자화 추론을 수행할 수 있다.
실시예에 따라, 하드웨어 플랫폼과 데이터 크기에 최적화된 OpenCL 파라미터 및 커널을 자동으로 설정함으로써 OpenCL에 대한 전문적인 지식이 없더라도 양자화 추론 기능을 활용할 수 있다.
도 1은 실시예에 따른 콘볼루션 신경망 양자화 추론 장치를 포함하는 임베디드 시스템의 블록 구성도이다.
도 2는 실시예에 따른 콘볼루션 신경망 양자화 추론 방법을 설명하기 위한 신호 흐름도이다.
도 3은 도 2에 도시된 최적이 OpenCL 파라미터 및 커널 설정 단계(S230)를 설명하기 위한 순서도이다.
도 4는 벡터화를 이용한 콘볼루션 계층의 연산 과정을 설명하기 위한 도면이다.
도 5는 도 2에 도시된 콘볼루션 계층 병렬 처리 수행 단계(S250)를 상세히 설명하기 위한 순서도이다.
도 6은 8x8인 행렬에서 4x4 기준 행렬을 기준으로 인터리브를 수행하는 예시도이다.
도 7은 8x8인 행렬에서 1x4 기준 행렬을 기준으로 순서 변환을 수행하는 예시도이다.
도 8은 실시 예에 따른 양자화 추론 연산을 설명하기 위한 순서도이다.
도 9는 실시예에 따른 컴퓨터 시스템 구성을 나타낸 도면이다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 것이며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
비록 "제1" 또는 "제2" 등이 다양한 구성요소를 서술하기 위해서 사용되나, 이러한 구성요소는 상기와 같은 용어에 의해 제한되지 않는다. 상기와 같은 용어는 단지 하나의 구성요소를 다른 구성요소와 구별하기 위하여 사용될 수 있다. 따라서, 이하에서 언급되는 제1 구성요소는 본 발명의 기술적 사상 내에서 제2 구성요소일 수도 있다.
본 명세서에서 사용된 용어는 실시예를 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 "포함한다(comprises)" 또는 "포함하는(comprising)"은 언급된 구성요소 또는 단계가 하나 이상의 다른 구성요소 또는 단계의 존재 또는 추가를 배제하지 않는다는 의미를 내포한다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어는 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 해석될 수 있다. 또한, 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다.
이하에서는, 도 1 내지 도 9를 참조하여 실시예에 따른 콘볼루션 신경망 양자화 추론 장치 및 방법이 상세히 설명된다.
도 1은 실시예에 따른 콘볼루션 신경망 양자화 추론 장치를 포함하는 임베디드 시스템의 블록 구성도이다.
도 1을 참조하면, 콘볼루션 신경망 양자화 추론 장치(이하 '장치'로 기재함)(100)는 미리 학습된 모델인 콘볼루션 신경망(10)을 임베디드 시스템에서 GPU와 같은 OpenCL Deivce(20)를 이용하여 추론한다.
이때, 콘볼루션 신경망(10)의 학습 및 학습 모델 변환은 임베디드 시스템이 아닌 자원에 제한이 적은 일반 데스크탑에서 미리 수행된 것일 수 있다. 여기서, 콘볼루션 신경망(10)은 일반적으로 콘볼루션 계층 및 완전 연결 계층으로 구성되는데, 제한된 자원을 갖는 임베디드 시스템에서는 콘볼루션 계층에 대한 추론 속도가 저하될 수 있으므로, 실시예에 따라 장치(100)는 콘볼루션 신경망(10)에서 콘볼루션 계층에 대한 양자화 추론을 수행할 수 있다.
이때, 장치(100)는 특정 하드웨어에 종속되지 않으며 다양한 임베디드 시스템을 지원할 수 있도록 OpenCL을 이용하여 추론 연산을 가속한다. 이때, OpenCL은 개방형 병렬 컴퓨팅 언어로써 하드웨어 플랫폼에 상관없이 다양한 임베디드 시스템에서 병렬 처리를 수행할 수 있는 표준 규격이다.
실시예에 따른 장치(100)는 응용부(110), 분석부(120) 및 병렬 처리부(130)를 포함한다.
응용부(110)는 콘볼루션 신경망(10)과의 사용자 인터페이스 기능을 수행한다. 즉, 응용부(110)는 콘볼루션 신경망(10)의 입력 데이터 특징 및 콘볼루션 계층의 정보를 분석부(120)에 전달하고, 병렬 처리부(130)로부터 연산 결과를 전달받아 콘볼루션 신경망(10)으로 전달해준다.
분석부(120)는 OpenCL의 병렬 처리 효과를 극대화하도록 추론을 수행하고자 하는 하드웨어 플랫폼에 최적화된 OpenCL 파라미터(parameter)를 자동으로 설정한다. 또한 추론하고자 하는 데이터의 크기에 따라 최적의 OpenCL 커널(kernel)을 자동으로 선택함으로써, 하드웨어 플랫폼에 최적화된 OpenCL 연산을 수행한다.
병렬 처리부(130)는 콘볼루션 신경망 양자화 추론 장치(100)는 양자화를 위해 기존 단정밀도(single precision) 32비트 자료형(=float)으로 학습된 콘볼루션 신경망(10)을 부호있는 8비트 정수형(=signed char)으로 변환하여 추론을 수행한다.
응용부(110), 분석부(120) 및 병렬 처리부(130)의 상세한 동작 설명은 도 2 내지 도 7에 도시된 콘볼루션 신경망 양자화 추론 방법에서 상세히 살펴보기로 한다.
도 2는 실시예에 따른 콘볼루션 신경망 양자화 추론 방법을 설명하기 위한 신호 흐름도이다.
도 2를 참조하면, 응용부(110)는 콘볼루션 신경망(10)으로부터 추론하고자 하는 입력 데이터의 특징 및 콘볼루션 계층 정보를 수신함(S210)에 따라, 이를 분석부(120)에 전달한다(S220).
이때, 추론하고자 하는 입력 데이터의 특징은 이미지 또는 영상의 가로 및 세로의 크기, 입력 이미지 또는 영상의 채널(channel) 수, 채널의 배치 순서 정보, 예컨대, RGB, BGR 등일 수 있다.
이때, 콘볼루션 계층의 정보는 입력 계층의 메모리 주소, 필터(filter)의 수, 필터의 크기, 필터 패딩(padding) 크기, 필터 스트라이드(stride) 크기, 편향(bias) 사용 여부 등 중 적어도 하나가 포함될 수 있다.
분석부(120)는 응용부(110)를 통해 전달된 콘볼루션 계층과 입력 데이터 특징 정보를 분석하고, 추론을 수행하고자 하는 하드웨어 플랫폼에서 OpenCL 장치의 특징을 분석하여 현재 시스템에 최적화된 OpenCL 파라미터 및 커널을 자동으로 설정한다(S230). 이에 대한 상세한 설명은 도 3을 참조하여 후술하기로 한다.
분석부(120)는 설정된 OpenCL 파라미터 및 커널을 기반으로 응용부(110)로부터 전달받은 입력 데이터 및 콘볼루션 계층의 정보를 전달하여 병렬 처리 연산을 요청한다(S240).
병렬 처리부(130)는 전달받은 입력 데이터 및 콘볼루션 계층의 정보를 이용하여 설정된 OpenCL 파라미터 및 커널을 기반으로 병렬 처리 연산을 수행한다(S250). 이에 대한 상세한 설명은 도 5 내지 도 8을 참조하여 후술하기로 한다.
병렬 처리부(130)는 콘볼루션 계층에서 수행하는 행렬 곱셈(GEMM: General Matrix Multiply, 이하 GEMM) 연산 결과를 응용부(110)에게 전달(S260)하고, 응용부(110)는 병렬 처리부(130)로부터 전달된 GEMM 연산 결과를 콘볼루션 신경망(10)에 전달한다(S270).
그러면, 도면에는 도시되어 있지 않지만, 콘볼루션 신경망(10)은 콘볼루션 계층의 연산 결과를 콘볼루션 계층에 연결된 후단 계층, 예컨대, 완전 연결 계층(Fully Connected Layer)의 입력으로 하여 콘볼루션 신경망에서의 추론이 완성되도록 할 수 있다.
도 3은 도 2에 도시된 최적 OpenCL 파라미터 및 커널 설정 단계(S230)를 설명하기 위한 순서도이다.
도 3을 참조하면, 분석부(120)는 입력 데이터 및 콘볼루션 계층 정보를 분석한다(S231).
이때, 분석부(120)는 관리하고 있는 입력 계층의 데이터 배치 형태에 따라 콘볼루션 계층에 대한 정보를 저장하는 저장부(미도시)를 검색할 수 있다.
즉, 저장부에는 입력 계층의 데이터 배치 형태 및 콘볼루션 계층 정보 기준으로 콘볼루션 계층별로 식별자(ID)가 부여되어 저장되고, 식별자(ID) 별로 설정된 OpenCL 파라미터 및 커널이 매핑되어 있다.
이때, 입력 계층의 데이터 배치 형태는 해당 계층의 최대 데이터의 수, 해당 데이터의 채널, 해당 데이터의 높이, 해당 데이터의 넓이를 포함할 수 있다.
따라서, 분석부(120)는 입력 데이터 및 콘볼루션 계층 정보를 분석하여, 저장부에 입력 계층의 데이터 배치 형태 및 콘볼루션 계층에 상응하는 식별자가 존재하는지를 판단하여, 입력 데이터 및 콘볼루션 계층 정보가 최초 수행되는지를 판단한다(S232).
S232의 판단 결과 해당 콘볼루션 계층이 최초 수행되는 경우, 분석부(120)는 병렬 처리부(130)와의 연동을 통해 최적 OpenCL 파라미터 및 커널을 신규 설정한다(S233). 이때, 분석부(120)에서는 해당 콘볼루션 계층의 데이터 크기에 따라 OpenCL 커널을 자동으로 설정한다. 즉, 콘볼루션 계층의 연산 수행 시 메모리 읽기 횟수를 최소화하기 위하여 데이터의 크기에 따라 콘볼루션 계층의 양자화 추론 연산을 위한 OpenCL 커널을 동적으로 선택한다.
이때, 하드웨어 플랫폼마다 동일한 데이터 배치 형태일지라도 OpenCL 커널에 대한 성능 차가 발생할 수 있으므로, 분석부(120)는 최초 수행 시 병렬 처리부(130)를 통해 선택 가능한 OpenCL 커널에 대해 연산 속도를 비교함으로써 최적의 OpenCL 커널을 선택한다. 즉, 수행 시간을 비교하여 가장 속도가 빠른 파라미터 및 커널을 해당 콘볼루션 계층에 설정한다.
이때, 설정된 파라미터 저장은 추론을 수행하고자 하는 하드웨어 플랫폼의 특성에 따라 파일 시스템 혹은 메모리 등을 선택적으로 활용할 수 있다.
이때, OpenCL 파라미터는 OpenCL 커널에서 벡터화(vectorization)를 위한 값으로써 OpenCL에서 설정 가능한 값 4, 8, 16 중 병렬성을 극대화하기 위한 최적의 값으로 설정될 수 있다.
여기서, 벡터화는 하나의 명령어를 통해 다수의 데이터를 동시에 처리할 수 있는 OpenCL의 병렬 처리 기능으로써, OpenCL 내장 함수 중 vload n 또는 vstore n(n 은 4, 8, 16)을 통해 사용 가능하다.
도 4는 벡터화를 이용한 콘볼루션 계층의 연산 과정을 설명하기 위한 도면이다.
도 4를 참조하면, 벡터화 값 n은 4을 나타낸다. OpenCL의 벡터화 기능을 이용할 경우 콘볼루션 계층의 입력 데이터에 해당하는 행렬 B에 대해 vload n 함수를 이용하여 다수의 원소를 한번에 접근 가능하며, 출력 결과 또한 한번에 저장할 수 있다.
아울러, 분석부(120)에서 설정 가능한 OpenCL 커널은 연산량에 따라 벡터화만을 적용한 커널과 패딩을 추가한 후 인터리브(interleave) 및 순서 변환(transpose)을 적용한 커널이 존재할 수 있다.
이때, 벡터화만을 적용한 커널은 상대적으로 연산량이 작은 데이터를 대상으로 하며, vload n 또는 vstore n 만을 이용하여 구현된다. 또한, 패딩과 인터리브, 그리고 순서 변환을 적용한 커널은 상대적으로 연산량이 큰 데이터를 대상으로 한다.
다시 도 3을 참조하면, S232의 판단 결과, 해당 콘볼루션 계층이 이전에 수행된 이력이 있는 경우, 분석부(120)는 이전에 수행될 때 사용된 콘볼루션 계층에 미리 설정된 OpenCL 파라미터 및 커널로 설정한다(S234).
도 5는 도 2에 도시된 콘볼루션 계층 병렬 처리 수행 단계(S250)를 상세히 설명하기 위한 순서도이다.
도 5를 참조하면, 병렬 처리부(130)는 OpenCL 커널이 벡터화만 적용하는 것인지의 여부(S251)에 따라 선택적으로 S252 또는 S253으로 진행된다.
OpenCL 커널이 벡터화만 적용하는 것일 경우, 병렬 처리부(130)는 분석부(120)로부터 전달받은 입력 데이터 및 콘볼루션 계층의 정보를 이용하여 설정된 OpenCL 파라미터 및 커널을 기반으로 병렬 처리 연산을 수행한다(S252).
반면, OpenCL 커널이 벡터화만 적용하는 것이 아닐 경우, 즉, 패딩과 인터리브, 그리고 순서 변환을 적용한 커널일 경우, 병렬 처리부(130)는 콘볼루션 계층에서 연산을 수행할 행렬이 4의 배수가 아닐 경우 4의 배수가 되도록 각 행렬에 패딩을 추가한다(S263). 이때, 패딩 추가 단계는 OpenCL의 벡터화를 활용하여 수행되며, 벡터화 값은 4, 8, 16 중 최적의 값으로 설정한다. 이때, OpenCL 커널 내에서 데이터 저장 단위는 부호 있는 8비트 정수형의 벡터형 타입인 char n 을 이용하며, n 은 벡터화 값에 따라 결정된다.
다음으로, 병렬 처리부(130)는 인터리브를 수행한다(S264). 즉, 콘볼루션 계층의 가중치(weight)를 저장하고 있는 행렬 A(도 4 참조)에 대해서 지정된 행렬 크기를 기준으로 전체 행렬 영역을 분할한 후, 각 분할된 영역에서 열 순서대로 값을 재배치한다.
도 6은 8x8인 행렬에서 4x4 기준 행렬을 기준으로 인터리브를 수행하는 예시도이다.
여기서, 인터리브 시 기준 행렬의 크기는 데이터 크기에 따라 4x4, 8x8, 16x16 등으로 선택 가능하다. 인터리브 수행 단계는 OpenCL의 벡터화를 활용하여 수행되며, 기준 행렬의 크기에 따라 벡터화 값을 4, 8, 16 중 최적의 값으로 설정한다. 아울러 OpenCL 커널 내에서 데이터 저장 단위는 부호 있는 8비트 정수형의 벡터형 타입인 char n 을 이용하며, n 은 벡터화 값에 따라 결정된다.
다음으로, 다시 도 5를 참조하면, 병렬 처리부(130)는 순서 변환한다(S265). 즉, 콘볼루션 계층의 입력 데이터를 저장하고 있는 행렬 B(도 4 참조)에 대해서 지정된 행렬 크기를 기준으로 전체 행렬 영역을 분할한 후, 각 분할된 영역에서 행 순서대로 값을 재배치 한다.
도 7은 8x8인 행렬에서 1x4 기준 행렬을 기준으로 순서 변환을 수행하는 예시도이다.
순서 변환 시 기준 행렬의 크기는 데이터 크기에 따라 1x4, 1x8, 1x16 등으로 선택 가능하다. 순서 변환 수행 단계는 OpenCL의 벡터화를 활용하여 수행되며, 기준 행렬의 크기에 따라 벡터화 값을 4, 8, 16 중 최적의 값으로 설정한다. 아울러 OpenCL 커널 내에서 데이터 저장 단위는 부호 있는 8비트 정수형의 벡터형 타입인 char n 을 이용하며, n 은 벡터화 값에 따라 결정된다.
다음으로, 병렬 처리부(130)는 콘볼루션 계층 연산 수행한다(S266). 패딩 추가 및 인터리브, 순서 변환이 수행된 행렬 A와 B에 대해 콘볼루션 계층의 연산을 수행한다.
병렬 처리부(130)는 결과의 정확성을 보장하기 위해 콘볼루션 계층 연산 수행 결과로부터 추가한 패딩을 제거한다(S268). 이때, OpenCL의 벡터화를 활용하여 수행되며, 벡터화 값은 4로 설정하고 OpenCL 커널 내에서 데이터 저장 단위는 부호 있는 32비트 정수형(=signed int)의 벡터형 타입인 int 4를 이용한다.
도 8은 실시 예에 따른 양자화 추론 연산을 설명하기 위한 순서도이다.
도 8을 참조하면, 병렬 처리부(130)는 입력된 데이터에 대해 양자화를 수행한다(S710). 이때, 입력 데이터는 단정밀도 32비트 자료형이며, 입력 데이터와 학습 모델 변환 과정을 통해 구해진 활성화 스케일 변수를 곱셈하는 연산을 수행한다. 여기서, 양자화를 통해 기존 단정밀도 32비트 자료형은 부호 있는 8비트 정수형으로 변환된다.
병렬 처리부(130)는 콘볼루션 계층의 정보를 분석한다(S720). 이는 콘볼루션 계층의 필터 크기에 따라서 최적화된 연산을 수행하기 위함이다. 즉, 콘볼루션 계층의 필터의 가로/세로 크기가 1, 패딩의 가로/세로 크기가 0, 그리고 스트라이드의 가로/세로 크기가 1일 경우 1x1 필터 확인 변수를 참(true)으로 설정한다.
병렬 처리부(130)는 1x1 필터 확인 변수가 참인지를 확인한다(S730).
S730의 확인 결과 1x1 필터 확인 변수가 참이 아닐 경우, 병렬 처리부(130)는 가중치에 대해 IM2COL(Image-to-Column) 연산을 수행한다(S740). 이때, IM2COL 연산은 콘볼루션 계층에서 GEMM 연산을 빠르게 하기 위해 이미지 데이터 배치를 변환하는 연산으로써, 공개된 알고리즘을 이용하여 구현할 수 있다. 또한, IM2COL 연산은 입력 데이터 부호 있는 8비트 정수형 데이터를 입력 받으며, 출력도 동일하게 부호 있는 8비트 정수형 데이터이다.
S730의 확인 결과 1x1 필터 확인 변수가 참이거나 S740을 수행한 이후, 병렬 처리부(130)는 가중치에 대해서 GEMM 연산을 수행한다(S650).
여기서, GEMM 연산의 일 예는 다음의 <수학식 1>과 같을 수 있다.
<수학식 1>
C = αAB + βC (A, B, C는 행렬, α, β는 스칼라)
이때, 행렬 A, B, C의 크기는 M, N, K로 구성된다. 즉, 행렬 A는 M * K의 크기이고, 행렬 B는 K * N의 크기이고, 행렬 C는 M * N의 크기일 수 있다.
이때, GEMM 연산 결과의 오버플로우(overflow)를 방지하기 위해 GEMM 연산 결과의 출력은 부호 있는 32비트 정수형(=int)을 사용한다. 또한, GEMM 연산을 수행하기 위한 OpenCL 커널은 분석부(120)에서 설정한 커널을 사용한다.
병렬 처리부(130)는 GEMM 연산 결과에 대해 비양자화를 수행한다(S760). 이때, 비양자화는 GEMM 연산 결과를 활성화 스케일 변수와 가중치 스케일 변수로 나누는 연산을 수행한다. 또한, 비양자화는 부호 있는 32비트 정수형을 입력 받아, 단정밀도 32비트 자료형을 출력한다.
다음으로, 병렬 처리부(130)는 콘볼루션 계층에 편향이 존재하는 지를 확인한다(S770). S770의 확인 결과 콘볼루션 계층에 편향이 존재하지 않을 경우, 양자화 추론 과정은 종료된다.
반면, S770의 확인 결과 콘볼루션 계층에 편향이 존재할 경우, 병렬 처리부(130)는 편향에 대한 GEMM 연산을 수행한다(S780). 이때, 편향에 대한 GEMM 연산은 단정밀도 32비트 자료형을 기반으로 수행된다. 아울러, 편향에 대한 GEMM 연산은 연산량이 상대적으로 작기 때문에 벡터화만을 이용하여 수행한다.
도 9는 실시예에 따른 컴퓨터 시스템 구성을 나타낸 도면이다.
실시예에 따른 콘볼루션 신경망 양자화 추론 장치는 컴퓨터로 읽을 수 있는 기록매체와 같은 컴퓨터 시스템(1000)에서 구현될 수 있다.
컴퓨터 시스템(1000)은 버스(1020)를 통하여 서로 통신하는 하나 이상의 프로세서(1010), 메모리(1030), 사용자 인터페이스 입력 장치(1040), 사용자 인터페이스 출력 장치(1050) 및 스토리지(1060)를 포함할 수 있다. 또한, 컴퓨터 시스템(1000)은 네트워크(1080)에 연결되는 네트워크 인터페이스(1070)를 더 포함할 수 있다. 프로세서(1010)는 중앙 처리 장치 또는 메모리(1030)나 스토리지(1060)에 저장된 프로그램 또는 프로세싱 인스트럭션들을 실행하는 반도체 장치일 수 있다. 메모리(1030) 및 스토리지(1060)는 휘발성 매체, 비휘발성 매체, 분리형 매체, 비분리형 매체, 통신 매체, 또는 정보 전달 매체 중에서 적어도 하나 이상을 포함하는 저장 매체일 수 있다. 예를 들어, 메모리(1030)는 ROM(1031이나 RAM(1032을 포함할 수 있다.
이상에서 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
100 : 콘볼루션 신경망 양자화 추론 장치
110 : 응용부 120 : 분석부
130 : 병렬 처리부

Claims (10)

  1. 콘볼루션 신경망 양자화 추론 장치에 의해 수행되는 콘볼루션 신경망 양자화 추론 방법에 있어서,
    미리 학습된 콘볼루션 신경망에서 추론하고자 하는 입력 데이터의 특징 및 콘볼루션 계층 정보를 수신함에 따라, 입력 데이터의 특징 및 콘볼루션 계층 정보를 분석하여 임베디드 시스템의 하드웨어 플랫폼에 최적화된 OpenCL 파라미터 및 커널을 설정하는 단계: 및
    설정된 OpenCL 파라미터 및 커널을 이용하여 콘볼루션 계층에 대한 양자화 추론을 수행하는 단계를 포함하고,
    상기 OpenCL 파라미터 및 커널을 설정하는 단계는 입력 계층의 데이터 배치 형태 및 상기 콘볼루션 계층 정보를 이용하여 Open CL 파라미터 및 커널을 설정하되, 상기 입력 계층의 데이터 배치 형태는 입력 계층의 최대 데이터의 수, 해당 데이터의 채널, 해당 데이터의 높이 및 해당 데이터의 넓이를 포함하는 것
    을 특징으로 하는 콘볼루션 신경망 양자화 추론 방법.
  2. 제1 항에 있어서, 입력 데이터의 특징은
    입력 이미지 또는 영상의 가로 및 세로의 크기, 입력 이미지 또는 영상의 채널(channel) 수 및 채널의 배치 순서 정보 중 적어도 하나를 포함하는, 콘볼루션 신경망 양자화 추론 방법.
  3. 제1 항에 있어서, 상기 콘볼루션 계층 정보는,
    입력 계층의 메모리 주소, 필터(filter)의 수, 필터의 크기, 필터 패딩(padding) 크기, 필터 스트라이드(stride) 크기 및 편향(bias) 사용 여부 중 적어도 하나를 포함하는, 콘볼루션 신경망 양자화 추론 방법.
  4. 제1 항에 있어서, 상기 OpenCL 파라미터 및 커널을 설정하는 단계는,
    상기 입력 계층의 데이터 배치 형태 및 콘볼루션 계층 정보 기준으로 콘볼루션 계층별로 식별자(ID)가 부여되어 저장되고, 식별자(ID) 별로 설정된 OpenCL 파라미터 및 커널이 매핑되어 있는 저장부를 검색하되,
    상기 입력 데이터 및 콘볼루션 계층 정보를 분석하여, 저장부에 입력 계층의 데이터 배치 형태 및 콘볼루션 계층에 상응하는 식별자가 존재하는지를 판단하는 단계;
    입력 데이터 및 콘볼루션 계층 정보가 최초 수행될 경우, 해당 콘볼루션 계층이 최초 수행되는 경우, 선택 가능한 OpenCL 커널에 대해 연산 속도를 비교함으로써 최적 OpenCL 파라미터 및 커널을 신규 설정하는 단계; 및
    해당 콘볼루션 계층이 이전에 수행된 이력이 있는 경우, 이전에 수행될 때 사용된 콘볼루션 계층에 미리 설정된 OpenCL 파라미터 및 커널로 설정하는 단계를 포함하는, 콘볼루션 신경망 양자화 추론 방법.
  5. 제1 항에 있어서, 상기 양자화 추론을 수행하는 단계는,
    OpenCL 커널이 벡터화만 적용하는 것이 아닐 경우, 콘볼루션 계층에서 연산을 수행할 행렬이 기설정 배수가 아닐 경우 상기 기설정 배수가 되도록 각 행렬에 패딩을 추가하는 단계를 더 포함하는 것
    인 콘볼루션 신경망 양자화 추론 방법.
  6. 제5항에 있어서, 상기 양자화 추론을 수행하는 단계는
    콘볼루션 계층의 가중치(weight)를 저장하고 있는 행렬에 대해서 지정된 행렬 크기를 기준으로 전체 행렬 영역을 분할한 후, 각 분할된 영역에서 열 순서대로 값을 재배치하는 인터리브 단계를 수행하는 단계를 더 포함하는 것
    인 콘볼루션 신경망 양자화 추론 방법.
  7. 제6항에 있어서, 상기 양자화 추론을 수행하는 단계는
    콘볼루션 계층의 입력 데이터를 저장하고 있는 행렬에 대해서 지정된 행렬 크기를 기준으로 전체 행렬 영역을 분할한 후, 각 분할된 영역에서 행 순서대로 값을 재배치하는 순서 변환을 수행하는 단계를 더 포함하는 것
    인 콘볼루션 신경망 양자화 추론 방법.
  8. 제7항에 있어서, 상기 양자화 추론을 수행하는 단계는
    패딩 추가 및 인터리브, 순서 변환이 수행된 행렬 A와 B에 대해 콘볼루션 계층의 연산을 수행하는 단계를 더 포함하는 것
    인 콘볼루션 신경망 양자화 추론 방법.
  9. 제8항에 있어서, 상기 양자화 추론을 수행하는 단계는
    콘볼루션 계층 연산 수행 결과로부터 추가한 패딩을 제거하는 단계를 더 포함하는 것
    인 콘볼루션 신경망 양자화 추론 방법.
  10. 적어도 하나의 프로그램이 기록된 메모리; 및
    프로그램을 실행하는 프로세서를 포함하며,
    프로그램은,
    미리 학습된 콘볼루션 신경망에서 추론하고자 하는 입력 데이터의 특징 및 콘볼루션 계층 정보를 수신함에 따라, 입력 데이터의 특징 및 콘볼루션 계층 정보를 분석하여 임베디드 시스템의 하드웨어 플랫폼에 최적화된 OpenCL 파라미터 및 커널을 설정하는 단계: 및
    설정된 OpenCL 파라미터 및 커널을 이용하여 콘볼루션 계층에 대한 양자화 추론을 수행하는 단계를 수행하고,
    상기 OpenCL 파라미터 및 커널을 설정하는 단계는 입력 계층의 데이터 배치 형태 및 상기 콘볼루션 계층 정보를 이용하여 Open CL 파라미터 및 커널을 설정하되, 상기 입력 계층의 데이터 배치 형태는 입력 계층의 최대 데이터의 수, 해당 데이터의 채널, 해당 데이터의 높이, 해당 데이터의 넓이를 포함하는 것
    을 특징으로 하는 콘볼루션 신경망 양자화 추론 장치.
KR1020220128648A 2020-05-08 2022-10-07 콘볼루션 신경망 양자화 추론 장치 및 방법 KR102545658B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020220128648A KR102545658B1 (ko) 2020-05-08 2022-10-07 콘볼루션 신경망 양자화 추론 장치 및 방법

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020200055313A KR102455310B1 (ko) 2020-05-08 2020-05-08 콘볼루션 신경망 양자화 추론 장치 및 방법
KR1020220128648A KR102545658B1 (ko) 2020-05-08 2022-10-07 콘볼루션 신경망 양자화 추론 장치 및 방법

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020200055313A Division KR102455310B1 (ko) 2020-05-08 2020-05-08 콘볼루션 신경망 양자화 추론 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20220143792A true KR20220143792A (ko) 2022-10-25
KR102545658B1 KR102545658B1 (ko) 2023-06-21

Family

ID=78703031

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020200055313A KR102455310B1 (ko) 2020-05-08 2020-05-08 콘볼루션 신경망 양자화 추론 장치 및 방법
KR1020220128648A KR102545658B1 (ko) 2020-05-08 2022-10-07 콘볼루션 신경망 양자화 추론 장치 및 방법

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020200055313A KR102455310B1 (ko) 2020-05-08 2020-05-08 콘볼루션 신경망 양자화 추론 장치 및 방법

Country Status (1)

Country Link
KR (2) KR102455310B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102577125B1 (ko) * 2023-02-16 2023-09-12 (주)밀 경량화된 인공신경망 모델

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20240035013A (ko) 2022-09-08 2024-03-15 한양대학교 산학협력단 뉴럴 네트워크의 파라미터 양자화 방법 및 장치

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170103299A1 (en) * 2015-10-07 2017-04-13 Altera Corporation Method and Apparatus for Implementing Layers on a Convolutional Neural Network Accelerator
US20180137084A1 (en) * 2016-11-14 2018-05-17 Kneron, Inc. Convolution operation device and method
US20180285715A1 (en) * 2017-03-28 2018-10-04 Samsung Electronics Co., Ltd. Convolutional neural network (cnn) processing method and apparatus
KR20190034985A (ko) 2017-09-25 2019-04-03 삼성전자주식회사 인공 신경망의 양자화 방법 및 장치
KR20190088643A (ko) * 2018-01-19 2019-07-29 한국전자통신연구원 Gpu 기반의 적응적 blas 연산 가속화 장치 및 방법
KR20200128360A (ko) * 2019-05-01 2020-11-12 삼성전자주식회사 뎁스 와이즈 컨벌루션 혼합-정밀도 앤피유 타일

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10417731B2 (en) * 2017-04-24 2019-09-17 Intel Corporation Compute optimization mechanism for deep neural networks
US10417734B2 (en) * 2017-04-24 2019-09-17 Intel Corporation Compute optimization mechanism for deep neural networks
US20180307987A1 (en) * 2017-04-24 2018-10-25 Intel Corporation Hardware ip optimized convolutional neural network
US10186011B2 (en) * 2017-04-28 2019-01-22 Intel Corporation Programmable coarse grained and sparse matrix compute hardware with advanced scheduling
US11694066B2 (en) * 2017-10-17 2023-07-04 Xilinx, Inc. Machine learning runtime library for neural network acceleration

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170103299A1 (en) * 2015-10-07 2017-04-13 Altera Corporation Method and Apparatus for Implementing Layers on a Convolutional Neural Network Accelerator
US20180137084A1 (en) * 2016-11-14 2018-05-17 Kneron, Inc. Convolution operation device and method
US20180285715A1 (en) * 2017-03-28 2018-10-04 Samsung Electronics Co., Ltd. Convolutional neural network (cnn) processing method and apparatus
KR20190034985A (ko) 2017-09-25 2019-04-03 삼성전자주식회사 인공 신경망의 양자화 방법 및 장치
KR20190088643A (ko) * 2018-01-19 2019-07-29 한국전자통신연구원 Gpu 기반의 적응적 blas 연산 가속화 장치 및 방법
KR20200128360A (ko) * 2019-05-01 2020-11-12 삼성전자주식회사 뎁스 와이즈 컨벌루션 혼합-정밀도 앤피유 타일

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102577125B1 (ko) * 2023-02-16 2023-09-12 (주)밀 경량화된 인공신경망 모델

Also Published As

Publication number Publication date
KR20210136700A (ko) 2021-11-17
KR102455310B1 (ko) 2022-10-18
KR102545658B1 (ko) 2023-06-21

Similar Documents

Publication Publication Date Title
KR20220143792A (ko) 콘볼루션 신경망 양자화 추론 장치 및 방법
CN110378468B (zh) 一种基于结构化剪枝和低比特量化的神经网络加速器
CN107451659B (zh) 用于位宽分区的神经网络加速器及其实现方法
CN110555450B (zh) 人脸识别神经网络调整方法和装置
US20210133278A1 (en) Piecewise quantization for neural networks
TW201915839A (zh) 對人工神經網路及浮點神經網路進行量化的方法及裝置
CN111047563B (zh) 一种应用于医学超声图像的神经网络构建方法
CN108776833B (zh) 一种数据处理方法、系统及计算机可读存储介质
CN112101525A (zh) 一种通过nas设计神经网络的方法、装置和系统
KR102655950B1 (ko) 뉴럴 네트워크의 고속 처리 방법 및 그 방법을 이용한 장치
CN109857459B (zh) 一种e级超算海洋模式自动移植优化方法及系统
KR20200111948A (ko) 인공 신경망을 처리하는 방법 및 이를 위한 전자 장치
CN113505883A (zh) 一种神经网络训练方法以及装置
US11562554B1 (en) Workload reduction for non-maximum suppression operation
US20200342292A1 (en) Hardware-software co-design for accelerating deep learning inference
KR20190093932A (ko) 딥러닝 시스템에서의 연산 처리 장치 및 방법
CN114781650B (zh) 一种数据处理方法、装置、设备以及存储介质
CN117616424A (zh) 用于平衡权重中的稀疏性以用于加速深度神经网络的系统和方法
CN116991560A (zh) 针对语言模型的并行调度方法、装置、设备及存储介质
CN115934275A (zh) 任务处理方法及对话任务处理方法
CN112085175B (zh) 基于神经网络计算的数据处理方法和装置
US20240161474A1 (en) Neural Network Inference Acceleration Method, Target Detection Method, Device, and Storage Medium
Peres et al. Faster convolutional neural networks in low density fpgas using block pruning
US20220405561A1 (en) Electronic device and controlling method of electronic device
KR20200139909A (ko) 전자 장치 및 그의 연산 수행 방법

Legal Events

Date Code Title Description
A107 Divisional application of patent
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right