KR102455310B1 - Apparatus and Method for Convolutional Neural Network Quantization Inference - Google Patents

Apparatus and Method for Convolutional Neural Network Quantization Inference Download PDF

Info

Publication number
KR102455310B1
KR102455310B1 KR1020200055313A KR20200055313A KR102455310B1 KR 102455310 B1 KR102455310 B1 KR 102455310B1 KR 1020200055313 A KR1020200055313 A KR 1020200055313A KR 20200055313 A KR20200055313 A KR 20200055313A KR 102455310 B1 KR102455310 B1 KR 102455310B1
Authority
KR
South Korea
Prior art keywords
convolutional layer
opencl
kernel
neural network
matrix
Prior art date
Application number
KR1020200055313A
Other languages
Korean (ko)
Other versions
KR20210136700A (en
Inventor
홍승태
김정시
Original Assignee
한국전자통신연구원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국전자통신연구원 filed Critical 한국전자통신연구원
Priority to KR1020200055313A priority Critical patent/KR102455310B1/en
Publication of KR20210136700A publication Critical patent/KR20210136700A/en
Priority to KR1020220128648A priority patent/KR102545658B1/en
Application granted granted Critical
Publication of KR102455310B1 publication Critical patent/KR102455310B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference or reasoning models
    • 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/15Correlation function computation including computation of convolution operations
    • G06F17/153Multidimensional correlation or convolution
    • 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

Landscapes

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

Abstract

콘볼루션 신경망 양자화 추론 장치 및 방법이 개시된다. 본 발명의 실시예에 따른 콘볼루션 신경망 양자화 추론 방법은 미리 학습된 콘볼루션 신경망에서 추론하고자 하는 입력 데이터의 특징 및 콘볼루션 계층 정보를 수신함에 따라, 입력 데이터의 특징 및 콘볼루션 계층 정보를 분석하여 임베디드 시스템의 하드웨어 플랫폼에 최적화된 OpenCL 파라미터 및 커널을 설정하는 단계 및 설정된 OpenCL 파라미터 및 커널을 이용하여 콘볼루션 계층에 대한 양자화 추론을 수행하는 단계를 포함한다.A convolutional neural network quantization inference apparatus and method are disclosed. The convolutional neural network quantization inference method according to an embodiment of the present invention receives the characteristics and convolutional layer information of the input data to be inferred from the pre-trained convolutional neural network, by analyzing the characteristics and convolutional layer information of the input data. and setting OpenCL parameters and a kernel optimized for the hardware platform of the embedded system, and performing quantization inference on the convolutional layer using the set OpenCL parameters and kernel.

Description

콘볼루션 신경망 양자화 추론 장치 및 방법{Apparatus and Method for Convolutional Neural Network Quantization Inference} Apparatus and Method for Convolutional Neural Network Quantization Inference

기재된 실시예는 스마트폰과 같은 임베디드 시스템에서 콘볼루션 신경망(Convolutional Neural Network, CNN)을 이용한 실시간 추론하는 기술에 관한 것이다.The described embodiment relates to a technology for real-time reasoning using a convolutional neural network (CNN) in an embedded system such as a smartphone.

최근 딥러닝(DNN: Deep Neural Network) 기술의 발전으로 영상 내 객체 인식 등에 활용되는 콘볼루션 신경망(Convolutional Neural Network, CNN)이 각광받고 있다. 특히 최근 스마트폰과 같은 개인 단말 형태의 임베디드 시스템이 널리 활용됨에 따라 일반 데스크탑 환경이 아닌 임베디드 시스템에서 콘볼루션 신경망을 이용한 실시간 추론(inference) 기술에 대한 수요가 급증하고 있다. With the recent development of deep learning (DNN) technology, convolutional neural networks (CNNs), which are used for object recognition in images, are in the spotlight. In particular, as an embedded system in the form of a personal terminal such as a smartphone is widely used recently, the demand for a real-time inference technology using a convolutional neural network in an embedded system rather than a general desktop environment is rapidly increasing.

특히 임베디드 시스템은 고사양의 데스크탑에 비해 제한된 시스템 자원과 성능을 가지고 있기 때문에, 임베디드 시스템에서 실시간 추론을 위해서는 콘볼루션 신경망을 경량화하여 가속화 할 수 있는 기술이 필수적이다.In particular, since embedded systems have limited system resources and performance compared to high-end desktops, a technology that can lighten and accelerate convolutional neural networks is essential for real-time reasoning in embedded systems.

한국공개특허 10-2019-0034985호Korean Patent Publication No. 10-2019-0034985

기재된 실시예는 스마트폰과 같은 제한된 시스템 자원을 가지는 임베디드 시스템에서 실시간 추론을 위해서는 콘볼루션 신경망을 경량화하여 가속화하는데 그 목적이 있다.The described embodiment aims to lighten and accelerate a convolutional neural network for real-time inference in an embedded system having limited system resources, such as a smartphone.

실시예에 따른 콘볼루션 신경망 양자화 추론 방법은 미리 학습된 콘볼루션 신경망에서 추론하고자 하는 입력 데이터의 특징 및 콘볼루션 계층 정보를 수신함에 따라, 입력 데이터의 특징 및 콘볼루션 계층 정보를 분석하여 임베디드 시스템의 하드웨어 플랫폼에 최적화된 OpenCL 파라미터 및 커널을 설정하는 단계 및 설정된 OpenCL 파라미터 및 커널을 이용하여 콘볼루션 계층에 대한 양자화 추론을 수행하는 단계를 포함한다.The convolutional neural network quantization inference method according to the embodiment receives the characteristics and convolutional layer information of the input data to be inferred from the pre-trained convolutional neural network, and analyzes the characteristics of the input data and the convolutional layer information of the embedded system. and setting OpenCL parameters and a kernel optimized for a hardware platform, and performing quantization inference on a convolutional layer using the set OpenCL parameters and kernel.

실시예에 따라, 제한된 시스템 자원을 가지는 임베디드 시스템에서 GPU를 기반으로 추론 연산 가속 효과를 극대화함으로써 실시간 추론을 가능하게 한다.According to an embodiment, real-time reasoning is enabled by maximizing the effect of accelerating the reasoning operation based on the GPU in an embedded system having limited system resources.

실시예에 따라, OpenCL을 이용함으로써 특정 하드웨어 플랫폼에 제한되지 않게 다양한 임베디드 시스템에서 양자화 추론을 수행할 수 있다. According to an embodiment, by using OpenCL, quantization inference can be performed in various embedded systems without being limited to a specific hardware platform.

실시예에 따라, 하드웨어 플랫폼과 데이터 크기에 최적화된 OpenCL 파라미터 및 커널을 자동으로 설정함으로써 OpenCL에 대한 전문적인 지식이 없더라도 양자화 추론 기능을 활용할 수 있다. According to an embodiment, by automatically setting OpenCL parameters and a kernel optimized for a hardware platform and data size, it is possible to utilize the quantization inference function even without specialized knowledge of OpenCL.

도 1은 실시예에 따른 콘볼루션 신경망 양자화 추론 장치를 포함하는 임베디드 시스템의 블록 구성도이다.
도 2는 실시예에 따른 콘볼루션 신경망 양자화 추론 방법을 설명하기 위한 신호 흐름도이다.
도 3은 도 2에 도시된 최적이 OpenCL 파라미터 및 커널 설정 단계(S230)를 설명하기 위한 순서도이다.
도 4는 벡터화를 이용한 콘볼루션 계층의 연산 과정을 설명하기 위한 도면이다.
도 5는 도 2에 도시된 콘볼루션 계층 병렬 처리 수행 단계(S250)를 상세히 설명하기 위한 순서도이다.
도 6은 8x8인 행렬에서 4x4 기준 행렬을 기준으로 인터리브를 수행하는 예시도이다.
도 7은 8x8인 행렬에서 1x4 기준 행렬을 기준으로 순서 변환을 수행하는 예시도이다.
도 8은 실시 예에 따른 양자화 추론 연산을 설명하기 위한 순서도이다.
도 9는 실시예에 따른 컴퓨터 시스템 구성을 나타낸 도면이다.
1 is a block diagram of an embedded system including a convolutional neural network quantization inference apparatus according to an embodiment.
2 is a signal flow diagram illustrating a method for inferring quantization of a convolutional neural network according to an embodiment.
FIG. 3 is a flowchart for explaining an optimal OpenCL parameter and kernel setting step ( S230 ) shown in FIG. 2 .
4 is a diagram for explaining an operation process of a convolutional layer using vectorization.
FIG. 5 is a flowchart for explaining in detail the step S250 of performing the convolutional layer parallel processing shown in FIG. 2 .
6 is an exemplary diagram of performing interleaving based on a 4x4 reference matrix in an 8x8 matrix.
7 is an exemplary diagram of performing order transformation based on a 1x4 reference matrix in an 8x8 matrix.
8 is a flowchart illustrating a quantization speculation operation according to an embodiment.
9 is a diagram showing the configuration of a computer system according to an embodiment.

본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 것이며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.Advantages and features of the present invention and methods of achieving them will become apparent with reference to the embodiments described below in detail in conjunction with the accompanying drawings. However, the present invention is not limited to the embodiments disclosed below, but will be implemented in a variety of different forms, only these embodiments allow the disclosure of the present invention to be complete, and common knowledge in the technical field to which the present invention belongs It is provided to fully inform the possessor of the scope of the invention, and the present invention is only defined by the scope of the claims. Like reference numerals refer to like elements throughout.

비록 "제1" 또는 "제2" 등이 다양한 구성요소를 서술하기 위해서 사용되나, 이러한 구성요소는 상기와 같은 용어에 의해 제한되지 않는다. 상기와 같은 용어는 단지 하나의 구성요소를 다른 구성요소와 구별하기 위하여 사용될 수 있다. 따라서, 이하에서 언급되는 제1 구성요소는 본 발명의 기술적 사상 내에서 제2 구성요소일 수도 있다.Although "first" or "second" is used to describe various elements, these elements are not limited by the above terms. Such terms may only be used to distinguish one component from another. Accordingly, the first component mentioned below may be the second component within the spirit of the present invention.

본 명세서에서 사용된 용어는 실시예를 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 "포함한다(comprises)" 또는 "포함하는(comprising)"은 언급된 구성요소 또는 단계가 하나 이상의 다른 구성요소 또는 단계의 존재 또는 추가를 배제하지 않는다는 의미를 내포한다.The terminology used herein is for the purpose of describing the embodiment and is not intended to limit the present invention. In this specification, the singular also includes the plural, unless specifically stated otherwise in the phrase. As used herein, “comprises” or “comprising” implies that the stated component or step does not exclude the presence or addition of one or more other components or steps.

다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어는 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 해석될 수 있다. 또한, 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다.Unless otherwise defined, all terms used herein may be interpreted with meanings commonly understood by those of ordinary skill in the art to which the present invention pertains. In addition, terms defined in a commonly used dictionary are not to be interpreted ideally or excessively unless clearly specifically defined.

이하에서는, 도 1 내지 도 9를 참조하여 실시예에 따른 콘볼루션 신경망 양자화 추론 장치 및 방법이 상세히 설명된다.Hereinafter, a convolutional neural network quantization inference apparatus and method according to an embodiment will be described in detail with reference to FIGS. 1 to 9 .

도 1은 실시예에 따른 콘볼루션 신경망 양자화 추론 장치를 포함하는 임베디드 시스템의 블록 구성도이다. 1 is a block diagram of an embedded system including a convolutional neural network quantization inference apparatus according to an embodiment.

도 1을 참조하면, 콘볼루션 신경망 양자화 추론 장치(이하 '장치'로 기재함)(100)는 미리 학습된 모델인 콘볼루션 신경망(10)을 임베디드 시스템에서 GPU와 같은 OpenCL Deivce(20)를 이용하여 추론한다. Referring to FIG. 1 , a convolutional neural network quantization inference apparatus (hereinafter referred to as 'device') 100 uses a convolutional neural network 10, a pre-trained model, OpenCL Deivce 20 such as a GPU in an embedded system. to infer

이때, 콘볼루션 신경망(10)의 학습 및 학습 모델 변환은 임베디드 시스템이 아닌 자원에 제한이 적은 일반 데스크탑에서 미리 수행된 것일 수 있다. 여기서, 콘볼루션 신경망(10)은 일반적으로 콘볼루션 계층 및 완전 연결 계층으로 구성되는데, 제한된 자원을 갖는 임베디드 시스템에서는 콘볼루션 계층에 대한 추론 속도가 저하될 수 있으므로, 실시예에 따라 장치(100)는 콘볼루션 신경망(10)에서 콘볼루션 계층에 대한 양자화 추론을 수행할 수 있다. In this case, the learning of the convolutional neural network 10 and the transformation of the learning model may be performed in advance on a general desktop having less resource limitations than an embedded system. Here, the convolutional neural network 10 is generally composed of a convolutional layer and a fully connected layer. Since the inference speed for the convolutional layer may be lowered in an embedded system with limited resources, the device 100 according to the embodiment. may perform quantization inference on the convolutional layer in the convolutional neural network 10 .

이때, 장치(100)는 특정 하드웨어에 종속되지 않으며 다양한 임베디드 시스템을 지원할 수 있도록 OpenCL을 이용하여 추론 연산을 가속한다. 이때, OpenCL은 개방형 병렬 컴퓨팅 언어로써 하드웨어 플랫폼에 상관없이 다양한 임베디드 시스템에서 병렬 처리를 수행할 수 있는 표준 규격이다. In this case, the device 100 accelerates the reasoning operation by using OpenCL to support various embedded systems without being dependent on specific hardware. In this case, OpenCL is an open parallel computing language and is a standard specification that can perform parallel processing in various embedded systems regardless of hardware platforms.

실시예에 따른 장치(100)는 응용부(110), 분석부(120) 및 병렬 처리부(130)를 포함한다. The apparatus 100 according to the embodiment includes an application unit 110 , an analysis unit 120 , and a parallel processing unit 130 .

응용부(110)는 콘볼루션 신경망(10)과의 사용자 인터페이스 기능을 수행한다. 즉, 응용부(110)는 콘볼루션 신경망(10)의 입력 데이터 특징 및 콘볼루션 계층의 정보를 분석부(120)에 전달하고, 병렬 처리부(130)로부터 연산 결과를 전달받아 콘볼루션 신경망(10)으로 전달해준다.The application unit 110 performs a user interface function with the convolutional neural network 10 . That is, the application unit 110 transmits the input data characteristics of the convolutional neural network 10 and the information of the convolutional layer to the analysis unit 120 , and receives the operation result from the parallel processing unit 130 to receive the convolutional neural network 10 . ) is passed to

분석부(120)는 OpenCL의 병렬 처리 효과를 극대화하도록 추론을 수행하고자 하는 하드웨어 플랫폼에 최적화된 OpenCL 파라미터(parameter)를 자동으로 설정한다. 또한 추론하고자 하는 데이터의 크기에 따라 최적의 OpenCL 커널(kernel)을 자동으로 선택함으로써, 하드웨어 플랫폼에 최적화된 OpenCL 연산을 수행한다.The analyzer 120 automatically sets OpenCL parameters optimized for a hardware platform on which inference is to be performed so as to maximize the parallel processing effect of OpenCL. In addition, by automatically selecting the optimal OpenCL kernel according to the size of the data to be inferred, the OpenCL operation optimized for the hardware platform is performed.

병렬 처리부(130)는 콘볼루션 신경망 양자화 추론 장치(100)는 양자화를 위해 기존 단정밀도(single precision) 32비트 자료형(=float)으로 학습된 콘볼루션 신경망(10)을 부호있는 8비트 정수형(=signed char)으로 변환하여 추론을 수행한다. The parallel processing unit 130 converts the convolutional neural network quantization reasoning device 100 into a signed 8-bit integer type (= Inference is performed by converting to signed char).

응용부(110), 분석부(120) 및 병렬 처리부(130)의 상세한 동작 설명은 도 2 내지 도 7에 도시된 콘볼루션 신경망 양자화 추론 방법에서 상세히 살펴보기로 한다. Detailed operation descriptions of the application unit 110 , the analysis unit 120 , and the parallel processing unit 130 will be described in detail in the convolutional neural network quantization inference method shown in FIGS. 2 to 7 .

도 2는 실시예에 따른 콘볼루션 신경망 양자화 추론 방법을 설명하기 위한 신호 흐름도이다. 2 is a signal flow diagram illustrating a method for inferring quantization of a convolutional neural network according to an embodiment.

도 2를 참조하면, 응용부(110)는 콘볼루션 신경망(10)으로부터 추론하고자 하는 입력 데이터의 특징 및 콘볼루션 계층 정보를 수신함(S210)에 따라, 이를 분석부(120)에 전달한다(S220). Referring to FIG. 2 , the application unit 110 receives characteristics of input data and convolutional layer information to be inferred from the convolutional neural network 10 ( S210 ), and transmits them to the analysis unit 120 ( S220 ). ).

이때, 추론하고자 하는 입력 데이터의 특징은 이미지 또는 영상의 가로 및 세로의 크기, 입력 이미지 또는 영상의 채널(channel) 수, 채널의 배치 순서 정보, 예컨대, RGB, BGR 등일 수 있다.In this case, the characteristics of the input data to be inferred may be horizontal and vertical sizes of the image or image, the number of channels of the input image or image, and information on the arrangement order of channels, for example, RGB, BGR, and the like.

이때, 콘볼루션 계층의 정보는 입력 계층의 메모리 주소, 필터(filter)의 수, 필터의 크기, 필터 패딩(padding) 크기, 필터 스트라이드(stride) 크기, 편향(bias) 사용 여부 등 중 적어도 하나가 포함될 수 있다.At this time, the information of the convolutional layer includes at least one of the memory address of the input layer, the number of filters, the size of the filter, the size of the filter padding, the size of the filter stride, and whether to use a bias. may be included.

분석부(120)는 응용부(110)를 통해 전달된 콘볼루션 계층과 입력 데이터 특징 정보를 분석하고, 추론을 수행하고자 하는 하드웨어 플랫폼에서 OpenCL 장치의 특징을 분석하여 현재 시스템에 최적화된 OpenCL 파라미터 및 커널을 자동으로 설정한다(S230). 이에 대한 상세한 설명은 도 3을 참조하여 후술하기로 한다. The analysis unit 120 analyzes the convolutional layer and input data characteristic information transmitted through the application unit 110, analyzes the characteristics of the OpenCL device in the hardware platform to be inferred, and OpenCL parameters optimized for the current system and The kernel is automatically set (S230). A detailed description thereof will be described later with reference to FIG. 3 .

분석부(120)는 설정된 OpenCL 파라미터 및 커널을 기반으로 응용부(110)로부터 전달받은 입력 데이터 및 콘볼루션 계층의 정보를 전달하여 병렬 처리 연산을 요청한다(S240). The analysis unit 120 transmits the input data received from the application unit 110 and information on the convolution layer based on the set OpenCL parameter and the kernel to request a parallel processing operation (S240).

병렬 처리부(130)는 전달받은 입력 데이터 및 콘볼루션 계층의 정보를 이용하여 설정된 OpenCL 파라미터 및 커널을 기반으로 병렬 처리 연산을 수행한다(S250). 이에 대한 상세한 설명은 도 5 내지 도 8을 참조하여 후술하기로 한다. The parallel processing unit 130 performs a parallel processing operation based on the OpenCL parameter and the kernel set using the received input data and information of the convolutional layer (S250). A detailed description thereof will be described later with reference to FIGS. 5 to 8 .

병렬 처리부(130)는 콘볼루션 계층에서 수행하는 행렬 곱셈(GEMM: General Matrix Multiply, 이하 GEMM) 연산 결과를 응용부(110)에게 전달(S260)하고, 응용부(110)는 병렬 처리부(130)로부터 전달된 GEMM 연산 결과를 콘볼루션 신경망(10)에 전달한다(S270).The parallel processing unit 130 transmits the result of a general matrix multiply (GEMM) operation performed in the convolutional layer to the application unit 110 ( S260 ), and the application unit 110 performs the parallel processing unit 130 . The GEMM operation result transmitted from the GEMM is transmitted to the convolutional neural network 10 (S270).

그러면, 도면에는 도시되어 있지 않지만, 콘볼루션 신경망(10)은 콘볼루션 계층의 연산 결과를 콘볼루션 계층에 연결된 후단 계층, 예컨대, 완전 연결 계층(Fully Connected Layer)의 입력으로 하여 콘볼루션 신경망에서의 추론이 완성되도록 할 수 있다. Then, although not shown in the figure, the convolutional neural network 10 uses the operation result of the convolutional layer as an input of a back-end layer connected to the convolutional layer, for example, a fully connected layer. You can make your inferences complete.

도 3은 도 2에 도시된 최적 OpenCL 파라미터 및 커널 설정 단계(S230)를 설명하기 위한 순서도이다. FIG. 3 is a flowchart for explaining the optimal OpenCL parameter and kernel setting step ( S230 ) shown in FIG. 2 .

도 3을 참조하면, 분석부(120)는 입력 데이터 및 콘볼루션 계층 정보를 분석한다(S231). Referring to FIG. 3 , the analysis unit 120 analyzes input data and convolutional layer information ( S231 ).

이때, 분석부(120)는 관리하고 있는 입력 계층의 데이터 배치 형태에 따라 콘볼루션 계층에 대한 정보를 저장하는 저장부(미도시)를 검색할 수 있다.In this case, the analysis unit 120 may search for a storage unit (not shown) that stores information on the convolutional layer according to the data arrangement type of the managed input layer.

즉, 저장부에는 입력 계층의 데이터 배치 형태 및 콘볼루션 계층 정보 기준으로 콘볼루션 계층별로 식별자(ID)가 부여되어 저장되고, 식별자(ID) 별로 설정된 OpenCL 파라미터 및 커널이 매핑되어 있다. That is, an identifier (ID) is assigned and stored for each convolutional layer based on the data arrangement type of the input layer and the convolutional layer information, and the OpenCL parameter and the kernel set for each identifier (ID) are mapped in the storage unit.

이때, 입력 계층의 데이터 배치 형태는 해당 계층의 최대 데이터의 수, 해당 데이터의 채널, 해당 데이터의 높이, 해당 데이터의 넓이를 포함할 수 있다. In this case, the data arrangement form of the input layer may include the maximum number of data of the corresponding layer, the channel of the corresponding data, the height of the corresponding data, and the width of the corresponding data.

따라서, 분석부(120)는 입력 데이터 및 콘볼루션 계층 정보를 분석하여, 저장부에 입력 계층의 데이터 배치 형태 및 콘볼루션 계층에 상응하는 식별자가 존재하는지를 판단하여, 입력 데이터 및 콘볼루션 계층 정보가 최초 수행되는지를 판단한다(S232). Therefore, the analysis unit 120 analyzes the input data and the convolutional layer information, determines whether there is an identifier corresponding to the data arrangement form of the input layer and the convolutional layer in the storage unit, so that the input data and the convolutional layer information are It is determined whether it is first performed (S232).

S232의 판단 결과 해당 콘볼루션 계층이 최초 수행되는 경우, 분석부(120)는 병렬 처리부(130)와의 연동을 통해 최적 OpenCL 파라미터 및 커널을 신규 설정한다(S233). 이때, 분석부(120)에서는 해당 콘볼루션 계층의 데이터 크기에 따라 OpenCL 커널을 자동으로 설정한다. 즉, 콘볼루션 계층의 연산 수행 시 메모리 읽기 횟수를 최소화하기 위하여 데이터의 크기에 따라 콘볼루션 계층의 양자화 추론 연산을 위한 OpenCL 커널을 동적으로 선택한다. As a result of the determination in S232, when the corresponding convolutional layer is first performed, the analysis unit 120 newly sets the optimal OpenCL parameter and the kernel through interworking with the parallel processing unit 130 (S233). At this time, the analyzer 120 automatically sets the OpenCL kernel according to the data size of the corresponding convolutional layer. That is, in order to minimize the number of memory reads when the operation of the convolutional layer is performed, the OpenCL kernel for the quantization inference operation of the convolutional layer is dynamically selected according to the size of the data.

이때, 하드웨어 플랫폼마다 동일한 데이터 배치 형태일지라도 OpenCL 커널에 대한 성능 차가 발생할 수 있으므로, 분석부(120)는 최초 수행 시 병렬 처리부(130)를 통해 선택 가능한 OpenCL 커널에 대해 연산 속도를 비교함으로써 최적의 OpenCL 커널을 선택한다. 즉, 수행 시간을 비교하여 가장 속도가 빠른 파라미터 및 커널을 해당 콘볼루션 계층에 설정한다. At this time, since a performance difference may occur for the OpenCL kernel even in the same data arrangement form for each hardware platform, the analysis unit 120 compares the operation speed of the OpenCL kernel selectable through the parallel processing unit 130 at the time of initial execution to optimize OpenCL Select the kernel. That is, by comparing the execution time, the fastest parameter and kernel are set in the corresponding convolutional layer.

이때, 설정된 파라미터 저장은 추론을 수행하고자 하는 하드웨어 플랫폼의 특성에 따라 파일 시스템 혹은 메모리 등을 선택적으로 활용할 수 있다.In this case, the set parameter storage may selectively utilize a file system or memory according to the characteristics of the hardware platform to be inferred.

이때, OpenCL 파라미터는 OpenCL 커널에서 벡터화(vectorization)를 위한 값으로써 OpenCL에서 설정 가능한 값 4, 8, 16 중 병렬성을 극대화하기 위한 최적의 값으로 설정될 수 있다.In this case, the OpenCL parameter is a value for vectorization in the OpenCL kernel and may be set to an optimal value for maximizing parallelism among values 4, 8, and 16 that can be set in OpenCL.

여기서, 벡터화는 하나의 명령어를 통해 다수의 데이터를 동시에 처리할 수 있는 OpenCL의 병렬 처리 기능으로써, OpenCL 내장 함수 중 vload n 또는 vstore n(n 은 4, 8, 16)을 통해 사용 가능하다. Here, vectorization is a parallel processing function of OpenCL that can process multiple data simultaneously through one instruction, and can be used through vload n or vstore n ( n is 4, 8, 16) among OpenCL built-in functions.

도 4는 벡터화를 이용한 콘볼루션 계층의 연산 과정을 설명하기 위한 도면이다.4 is a diagram for explaining an operation process of a convolutional layer using vectorization.

도 4를 참조하면, 벡터화 값 n은 4을 나타낸다. OpenCL의 벡터화 기능을 이용할 경우 콘볼루션 계층의 입력 데이터에 해당하는 행렬 B에 대해 vload n 함수를 이용하여 다수의 원소를 한번에 접근 가능하며, 출력 결과 또한 한번에 저장할 수 있다.Referring to FIG. 4 , the vectorized value n represents 4. When using the vectorization function of OpenCL, multiple elements can be accessed at once by using the vload n function for matrix B corresponding to the input data of the convolutional layer, and the output result can also be stored at once.

아울러, 분석부(120)에서 설정 가능한 OpenCL 커널은 연산량에 따라 벡터화만을 적용한 커널과 패딩을 추가한 후 인터리브(interleave) 및 순서 변환(transpose)을 적용한 커널이 존재할 수 있다. In addition, the OpenCL kernel configurable by the analyzer 120 may include a kernel to which only vectorization is applied and a kernel to which interleave and transpose are applied after adding padding according to the amount of computation.

이때, 벡터화만을 적용한 커널은 상대적으로 연산량이 작은 데이터를 대상으로 하며, vload n 또는 vstore n 만을 이용하여 구현된다. 또한, 패딩과 인터리브, 그리고 순서 변환을 적용한 커널은 상대적으로 연산량이 큰 데이터를 대상으로 한다. At this time, the kernel to which only vectorization is applied targets data with a relatively small amount of computation, and is implemented using only vload n or vstore n . In addition, the kernel to which padding, interleaving, and order transformation are applied targets data with a relatively large amount of computation.

다시 도 3을 참조하면, S232의 판단 결과, 해당 콘볼루션 계층이 이전에 수행된 이력이 있는 경우, 분석부(120)는 이전에 수행될 때 사용된 콘볼루션 계층에 미리 설정된 OpenCL 파라미터 및 커널로 설정한다(S234).Referring back to FIG. 3 , as a result of the determination in S232 , if there is a history in which the corresponding convolution layer has been previously performed, the analysis unit 120 uses the OpenCL parameter and kernel preset in the convolution layer used when it was previously performed. set (S234).

도 5는 도 2에 도시된 콘볼루션 계층 병렬 처리 수행 단계(S250)를 상세히 설명하기 위한 순서도이다.FIG. 5 is a flowchart for explaining in detail the step S250 of performing the convolutional layer parallel processing shown in FIG. 2 .

도 5를 참조하면, 병렬 처리부(130)는 OpenCL 커널이 벡터화만 적용하는 것인지의 여부(S251)에 따라 선택적으로 S252 또는 S253으로 진행된다. Referring to FIG. 5 , the parallel processing unit 130 selectively proceeds to S252 or S253 depending on whether the OpenCL kernel applies only vectorization ( S251 ).

OpenCL 커널이 벡터화만 적용하는 것일 경우, 병렬 처리부(130)는 분석부(120)로부터 전달받은 입력 데이터 및 콘볼루션 계층의 정보를 이용하여 설정된 OpenCL 파라미터 및 커널을 기반으로 병렬 처리 연산을 수행한다(S252).When the OpenCL kernel applies only vectorization, the parallel processing unit 130 performs a parallel processing operation based on the OpenCL parameter and the kernel set using the input data received from the analysis unit 120 and the information of the convolution layer ( S252).

반면, OpenCL 커널이 벡터화만 적용하는 것이 아닐 경우, 즉, 패딩과 인터리브, 그리고 순서 변환을 적용한 커널일 경우, 병렬 처리부(130)는 콘볼루션 계층에서 연산을 수행할 행렬이 4의 배수가 아닐 경우 4의 배수가 되도록 각 행렬에 패딩을 추가한다(S263). 이때, 패딩 추가 단계는 OpenCL의 벡터화를 활용하여 수행되며, 벡터화 값은 4, 8, 16 중 최적의 값으로 설정한다. 이때, OpenCL 커널 내에서 데이터 저장 단위는 부호 있는 8비트 정수형의 벡터형 타입인 char n 을 이용하며, n 은 벡터화 값에 따라 결정된다.On the other hand, if the OpenCL kernel does not apply only vectorization, that is, if it is a kernel to which padding, interleaving, and order transformation are applied, the parallel processing unit 130 determines that the matrix to be operated in the convolutional layer is not a multiple of 4. Padding is added to each matrix so as to be a multiple of 4 (S263). In this case, the step of adding padding is performed using OpenCL vectorization, and the vectorization value is set to an optimal value among 4, 8, and 16. In this case, the data storage unit in the OpenCL kernel uses char n , which is a vector type of signed 8-bit integer type, and n is determined according to the vectorized value.

다음으로, 병렬 처리부(130)는 인터리브를 수행한다(S264). 즉, 콘볼루션 계층의 가중치(weight)를 저장하고 있는 행렬 A(도 4 참조)에 대해서 지정된 행렬 크기를 기준으로 전체 행렬 영역을 분할한 후, 각 분할된 영역에서 열 순서대로 값을 재배치한다. Next, the parallel processing unit 130 performs interleaving (S264). That is, after dividing the entire matrix region based on the matrix size specified for the matrix A (see FIG. 4 ) storing the weights of the convolutional layer, the values are rearranged in column order in each divided region.

도 6은 8x8인 행렬에서 4x4 기준 행렬을 기준으로 인터리브를 수행하는 예시도이다. 6 is an exemplary diagram of performing interleaving based on a 4x4 reference matrix in an 8x8 matrix.

여기서, 인터리브 시 기준 행렬의 크기는 데이터 크기에 따라 4x4, 8x8, 16x16 등으로 선택 가능하다. 인터리브 수행 단계는 OpenCL의 벡터화를 활용하여 수행되며, 기준 행렬의 크기에 따라 벡터화 값을 4, 8, 16 중 최적의 값으로 설정한다. 아울러 OpenCL 커널 내에서 데이터 저장 단위는 부호 있는 8비트 정수형의 벡터형 타입인 char n 을 이용하며, n 은 벡터화 값에 따라 결정된다.Here, the size of the reference matrix during interleaving can be selected as 4x4, 8x8, 16x16, etc. according to the data size. The interleaving step is performed using OpenCL vectorization, and the vectorization value is set to an optimal value among 4, 8, and 16 according to the size of the reference matrix. In addition, the data storage unit in the OpenCL kernel uses char n , which is a vector type of signed 8-bit integer type, and n is determined according to the vectorized value.

다음으로, 다시 도 5를 참조하면, 병렬 처리부(130)는 순서 변환한다(S265). 즉, 콘볼루션 계층의 입력 데이터를 저장하고 있는 행렬 B(도 4 참조)에 대해서 지정된 행렬 크기를 기준으로 전체 행렬 영역을 분할한 후, 각 분할된 영역에서 행 순서대로 값을 재배치 한다. Next, referring back to FIG. 5 , the parallel processing unit 130 converts the order ( S265 ). That is, after dividing the entire matrix region based on the matrix size specified for the matrix B (see FIG. 4 ) storing the input data of the convolutional layer, the values are rearranged in row order in each divided region.

도 7은 8x8인 행렬에서 1x4 기준 행렬을 기준으로 순서 변환을 수행하는 예시도이다. 7 is an exemplary diagram of performing order transformation based on a 1x4 reference matrix in an 8x8 matrix.

순서 변환 시 기준 행렬의 크기는 데이터 크기에 따라 1x4, 1x8, 1x16 등으로 선택 가능하다. 순서 변환 수행 단계는 OpenCL의 벡터화를 활용하여 수행되며, 기준 행렬의 크기에 따라 벡터화 값을 4, 8, 16 중 최적의 값으로 설정한다. 아울러 OpenCL 커널 내에서 데이터 저장 단위는 부호 있는 8비트 정수형의 벡터형 타입인 char n 을 이용하며, n 은 벡터화 값에 따라 결정된다.When converting the order, the size of the reference matrix can be selected as 1x4, 1x8, 1x16, etc. depending on the data size. The step of performing the order transformation is performed using OpenCL vectorization, and the vectorization value is set to an optimal value among 4, 8, and 16 according to the size of the reference matrix. In addition, the data storage unit in the OpenCL kernel uses char n , which is a vector type of signed 8-bit integer type, and n is determined according to the vectorized value.

다음으로, 병렬 처리부(130)는 콘볼루션 계층 연산 수행한다(S266). 패딩 추가 및 인터리브, 순서 변환이 수행된 행렬 A와 B에 대해 콘볼루션 계층의 연산을 수행한다. Next, the parallel processing unit 130 performs a convolutional layer operation (S266). Convolutional layer operation is performed on matrices A and B on which padding addition, interleaving, and order transformation have been performed.

병렬 처리부(130)는 결과의 정확성을 보장하기 위해 콘볼루션 계층 연산 수행 결과로부터 추가한 패딩을 제거한다(S268). 이때, OpenCL의 벡터화를 활용하여 수행되며, 벡터화 값은 4로 설정하고 OpenCL 커널 내에서 데이터 저장 단위는 부호 있는 32비트 정수형(=signed int)의 벡터형 타입인 int 4를 이용한다.The parallel processing unit 130 removes the added padding from the result of performing the convolutional layer operation in order to ensure the accuracy of the result (S268). At this time, the vectorization of OpenCL is utilized, the vectorization value is set to 4, and the data storage unit in the OpenCL kernel uses int 4, a vector type of a signed 32-bit integer type (=signed int).

도 8은 실시 예에 따른 양자화 추론 연산을 설명하기 위한 순서도이다. 8 is a flowchart illustrating a quantization speculation operation according to an embodiment.

도 8을 참조하면, 병렬 처리부(130)는 입력된 데이터에 대해 양자화를 수행한다(S710). 이때, 입력 데이터는 단정밀도 32비트 자료형이며, 입력 데이터와 학습 모델 변환 과정을 통해 구해진 활성화 스케일 변수를 곱셈하는 연산을 수행한다. 여기서, 양자화를 통해 기존 단정밀도 32비트 자료형은 부호 있는 8비트 정수형으로 변환된다.Referring to FIG. 8 , the parallel processing unit 130 quantizes input data ( S710 ). At this time, the input data is a single-precision 32-bit data type, and an operation of multiplying the input data and the activation scale variable obtained through the learning model transformation process is performed. Here, the existing single-precision 32-bit data type is converted into a signed 8-bit integer type through quantization.

병렬 처리부(130)는 콘볼루션 계층의 정보를 분석한다(S720). 이는 콘볼루션 계층의 필터 크기에 따라서 최적화된 연산을 수행하기 위함이다. 즉, 콘볼루션 계층의 필터의 가로/세로 크기가 1, 패딩의 가로/세로 크기가 0, 그리고 스트라이드의 가로/세로 크기가 1일 경우 1x1 필터 확인 변수를 참(true)으로 설정한다.The parallel processing unit 130 analyzes the information of the convolutional layer (S720). This is to perform an optimized operation according to the filter size of the convolutional layer. That is, when the horizontal/vertical size of the filter of the convolutional layer is 1, the horizontal/vertical size of the padding is 0, and the horizontal/vertical size of the stride is 1, the 1x1 filter check variable is set to true.

병렬 처리부(130)는 1x1 필터 확인 변수가 참인지를 확인한다(S730).The parallel processing unit 130 checks whether the 1x1 filter check variable is true (S730).

S730의 확인 결과 1x1 필터 확인 변수가 참이 아닐 경우, 병렬 처리부(130)는 가중치에 대해 IM2COL(Image-to-Column) 연산을 수행한다(S740). 이때, IM2COL 연산은 콘볼루션 계층에서 GEMM 연산을 빠르게 하기 위해 이미지 데이터 배치를 변환하는 연산으로써, 공개된 알고리즘을 이용하여 구현할 수 있다. 또한, IM2COL 연산은 입력 데이터 부호 있는 8비트 정수형 데이터를 입력 받으며, 출력도 동일하게 부호 있는 8비트 정수형 데이터이다.If it is determined in S730 that the 1x1 filter check variable is not true, the parallel processing unit 130 performs an IM2COL (Image-to-Column) operation on the weight ( S740 ). In this case, the IM2COL operation is an operation that transforms the image data arrangement to speed up the GEMM operation in the convolutional layer, and can be implemented using a publicly available algorithm. In addition, the IM2COL operation receives 8-bit signed integer data as input data, and the output is also signed 8-bit integer data.

S730의 확인 결과 1x1 필터 확인 변수가 참이거나 S740을 수행한 이후, 병렬 처리부(130)는 가중치에 대해서 GEMM 연산을 수행한다(S650). As a result of the check in S730, the 1x1 filter check variable is true or after performing S740, the parallel processing unit 130 performs a GEMM operation on the weights (S650).

여기서, GEMM 연산의 일 예는 다음의 <수학식 1>과 같을 수 있다. Here, an example of the GEMM operation may be as in Equation 1 below.

<수학식 1><Equation 1>

C = αAB + βC (A, B, C는 행렬, α, β는 스칼라)C = αAB + βC (A, B, C are matrices, α, β are scalars)

이때, 행렬 A, B, C의 크기는 M, N, K로 구성된다. 즉, 행렬 A는 M * K의 크기이고, 행렬 B는 K * N의 크기이고, 행렬 C는 M * N의 크기일 수 있다.In this case, the sizes of matrices A, B, and C are composed of M, N, and K. That is, matrix A may have a size of M * K, matrix B may have a size of K * N, and matrix C may have a size of M * N.

이때, GEMM 연산 결과의 오버플로우(overflow)를 방지하기 위해 GEMM 연산 결과의 출력은 부호 있는 32비트 정수형(=int)을 사용한다. 또한, GEMM 연산을 수행하기 위한 OpenCL 커널은 분석부(120)에서 설정한 커널을 사용한다.At this time, to prevent overflow of the GEMM operation result, the output of the GEMM operation result uses a signed 32-bit integer type (=int). In addition, the OpenCL kernel for performing the GEMM operation uses the kernel set by the analysis unit 120 .

병렬 처리부(130)는 GEMM 연산 결과에 대해 비양자화를 수행한다(S760). 이때, 비양자화는 GEMM 연산 결과를 활성화 스케일 변수와 가중치 스케일 변수로 나누는 연산을 수행한다. 또한, 비양자화는 부호 있는 32비트 정수형을 입력 받아, 단정밀도 32비트 자료형을 출력한다.The parallel processing unit 130 dequantizes the GEMM operation result (S760). In this case, dequantization performs an operation of dividing the GEMM operation result into an activation scale variable and a weight scale variable. In addition, dequantization receives a signed 32-bit integer type and outputs a single-precision 32-bit data type.

다음으로, 병렬 처리부(130)는 콘볼루션 계층에 편향이 존재하는 지를 확인한다(S770). S770의 확인 결과 콘볼루션 계층에 편향이 존재하지 않을 경우, 양자화 추론 과정은 종료된다.Next, the parallel processing unit 130 checks whether a bias exists in the convolutional layer (S770). If it is determined in S770 that there is no bias in the convolutional layer, the quantization inference process is terminated.

반면, S770의 확인 결과 콘볼루션 계층에 편향이 존재할 경우, 병렬 처리부(130)는 편향에 대한 GEMM 연산을 수행한다(S780). 이때, 편향에 대한 GEMM 연산은 단정밀도 32비트 자료형을 기반으로 수행된다. 아울러, 편향에 대한 GEMM 연산은 연산량이 상대적으로 작기 때문에 벡터화만을 이용하여 수행한다.On the other hand, if bias exists in the convolutional layer as a result of checking in S770, the parallel processing unit 130 performs a GEMM operation on the bias (S780). At this time, the GEMM operation for the bias is performed based on a single-precision 32-bit data type. In addition, the GEMM operation for bias is performed using only vectorization because the amount of computation is relatively small.

도 9는 실시예에 따른 컴퓨터 시스템 구성을 나타낸 도면이다.9 is a diagram showing the configuration of a computer system according to an embodiment.

실시예에 따른 콘볼루션 신경망 양자화 추론 장치는 컴퓨터로 읽을 수 있는 기록매체와 같은 컴퓨터 시스템(1000)에서 구현될 수 있다.The convolutional neural network quantization reasoning apparatus according to the embodiment may be implemented in the computer system 1000 such as a computer-readable recording medium.

컴퓨터 시스템(1000)은 버스(1020)를 통하여 서로 통신하는 하나 이상의 프로세서(1010), 메모리(1030), 사용자 인터페이스 입력 장치(1040), 사용자 인터페이스 출력 장치(1050) 및 스토리지(1060)를 포함할 수 있다. 또한, 컴퓨터 시스템(1000)은 네트워크(1080)에 연결되는 네트워크 인터페이스(1070)를 더 포함할 수 있다. 프로세서(1010)는 중앙 처리 장치 또는 메모리(1030)나 스토리지(1060)에 저장된 프로그램 또는 프로세싱 인스트럭션들을 실행하는 반도체 장치일 수 있다. 메모리(1030) 및 스토리지(1060)는 휘발성 매체, 비휘발성 매체, 분리형 매체, 비분리형 매체, 통신 매체, 또는 정보 전달 매체 중에서 적어도 하나 이상을 포함하는 저장 매체일 수 있다. 예를 들어, 메모리(1030)는 ROM(1031이나 RAM(1032을 포함할 수 있다.Computer system 1000 may include one or more processors 1010 , memory 1030 , user interface input device 1040 , user interface output device 1050 , and storage 1060 that communicate with each other via bus 1020 . can In addition, computer system 1000 may further include a network interface 1070 coupled to network 1080 . The processor 1010 may be a central processing unit or a semiconductor device that executes programs or processing instructions stored in the memory 1030 or storage 1060 . The memory 1030 and the storage 1060 may be a storage medium including at least one of a volatile medium, a non-volatile medium, a removable medium, a non-removable medium, a communication medium, and an information delivery medium. For example, the memory 1030 may include a ROM 1031 or a RAM 1032 .

이상에서 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.Although embodiments of the present invention have been described above with reference to the accompanying drawings, those of ordinary skill in the art to which the present invention pertains can implement the present invention in other specific forms without changing its technical spirit or essential features. You will understand that there is Therefore, it should be understood that the embodiments described above are illustrative in all respects and not restrictive.

100 : 콘볼루션 신경망 양자화 추론 장치
110 : 응용부 120 : 분석부
130 : 병렬 처리부
100: convolutional neural network quantization inference device
110: application unit 120: analysis unit
130: parallel processing unit

Claims (10)

콘볼루션 신경망 양자화 추론 장치에 의해 수행되는 콘볼루션 신경망 양자화 추론 방법에 있어서,
미리 학습된 콘볼루션 신경망에서 추론하고자 하는 입력 데이터의 특징 및 콘볼루션 계층 정보를 수신함에 따라, 입력 데이터의 특징 및 콘볼루션 계층 정보를 분석하여 임베디드 시스템의 하드웨어 플랫폼에 최적화된 OpenCL 파라미터 및 커널을 설정하는 단계: 및
설정된 OpenCL 파라미터 및 커널을 이용하여 콘볼루션 계층에 대한 양자화 추론을 수행하는 단계를 포함하고,
상기 OpenCL 파라미터 및 커널을 설정하는 단계는 입력 계층의 최대 데이터의 수, 해당 데이터의 채널, 해당 데이터의 높이, 해당 데이터의 넓이 중 적어도 어느 하나를 포함하는 상기 입력 계층의 데이터 배치 형태를 이용하여 OpenCL 파라미터 및 커널의 신규 설정 여부를 결정하고,
상기 양자화 추론을 수행하는 단계는,
OpenCL 커널이 벡터화만 적용하는 것이 아닐 경우, 콘볼루션 계층에서 연산을 수행할 행렬이 4의 배수가 아닐 경우 4의 배수가 되도록 각 행렬에 패딩을 추가하는 단계;
콘볼루션 계층의 가중치(weight)를 저장하고 있는 행렬에 대해서 지정된 행렬 크기를 기준으로 전체 행렬 영역을 분할한 후, 각 분할된 영역에서 열 순서대로 값을 재배치하는 인터리브 단계를 수행하는 단계;
콘볼루션 계층의 입력 데이터를 저장하고 있는 행렬에 대해서 지정된 행렬 크기를 기준으로 전체 행렬 영역을 분할한 후, 각 분할된 영역에서 행 순서대로 값을 재배치하는 순서 변환을 수행하는 단계;
패딩 추가 및 인터리브, 순서 변환이 수행된 행렬 A와 B에 대해 콘볼루션 계층의 연산을 수행하는 단계; 및
콘볼루션 계층 연산 수행 결과로부터 추가한 패딩을 제거하는 단계를 포함하는, 콘볼루션 신경망 양자화 추론 방법.
In the convolutional neural network quantization inference method performed by the convolutional neural network quantization inference apparatus,
As the pre-trained convolutional neural network receives the characteristics and convolutional layer information of the input data to be inferred, it analyzes the characteristics of the input data and the convolutional layer information to set the OpenCL parameters and kernel optimized for the hardware platform of the embedded system Steps to do: and
Comprising the step of performing quantization inference on the convolutional layer using the set OpenCL parameter and kernel,
The step of setting the OpenCL parameter and the kernel is performed using the OpenCL data arrangement form of the input layer including at least one of the maximum number of data in the input layer, the channel of the data, the height of the data, and the width of the data. Decide whether to set new parameters and kernels,
The step of performing the quantization inference comprises:
adding padding to each matrix so that, when the OpenCL kernel does not apply only vectorization, the matrix to be operated on in the convolutional layer is not a multiple of 4;
dividing an entire matrix region based on a specified matrix size for a matrix storing weights of the convolutional layer, and then performing an interleaving step of rearranging values in each divided region in column order;
A method comprising: dividing an entire matrix region based on a specified matrix size with respect to a matrix storing input data of a convolutional layer, and performing order transformation in which values are rearranged in row order in each divided region;
performing a convolutional layer operation on matrices A and B on which padding addition, interleaving, and order transformation have been performed; and
A convolutional neural network quantization inference method, comprising removing padding added from a result of performing a convolutional layer operation.
제1 항에 있어서, 입력 데이터의 특징은
입력 이미지 또는 영상의 가로 및 세로의 크기, 입력 이미지 또는 영상의 채널(channel) 수 및 채널의 배치 순서 정보 중 적어도 하나를 포함하는, 콘볼루션 신경망 양자화 추론 방법.
The method of claim 1, wherein the characteristics of the input data are
A convolutional neural network quantization inference method, comprising at least one of horizontal and vertical sizes of the input image or image, the number of channels of the input image or image, and arrangement order information of the channels.
제1 항에 있어서, 콘볼루션 계층의 정보는,
입력 계층의 메모리 주소, 필터(filter)의 수, 필터의 크기, 필터 패딩(padding) 크기, 필터 스트라이드(stride) 크기 및 편향(bias) 사용 여부 중 적어도 하나를 포함하는, 콘볼루션 신경망 양자화 추론 방법.
The method of claim 1, wherein the information of the convolutional layer,
Convolutional neural network quantization inference method, including at least one of the memory address of the input layer, the number of filters, the size of the filter, the size of the filter padding, the size of the filter stride, and whether to use a bias .
제1 항에 있어서, OpenCL 파라미터 및 커널을 설정하는 단계는,
상기 입력 계층의 데이터 배치 형태 및 콘볼루션 계층 정보 기준으로 콘볼루션 계층별로 식별자(ID)가 부여되어 저장되고, 식별자(ID) 별로 설정된 OpenCL 파라미터 및 커널이 매핑되어 있는 저장부를 검색하되,
입력 데이터 및 콘볼루션 계층 정보를 분석하여, 저장부에 입력 계층의 데이터 배치 형태 및 콘볼루션 계층에 상응하는 식별자가 존재하는지를 판단하는 단계;
입력 데이터 및 콘볼루션 계층 정보가 최초 수행될 경우, 해당 콘볼루션 계층이 최초 수행되는 경우, 선택 가능한 OpenCL 커널에 대해 연산 속도를 비교함으로써 최적 OpenCL 파라미터 및 커널을 신규 설정하는 단계; 및
해당 콘볼루션 계층이 이전에 수행된 이력이 있는 경우, 이전에 수행될 때 사용된 콘볼루션 계층에 미리 설정된 OpenCL 파라미터 및 커널로 설정하는 단계를 포함하는, 콘볼루션 신경망 양자화 추론 방법.
The method of claim 1, wherein setting OpenCL parameters and a kernel comprises:
An identifier (ID) is assigned and stored for each convolutional layer based on the data arrangement form of the input layer and the convolutional layer information, and a storage unit to which the OpenCL parameter set for each identifier (ID) and the kernel are mapped,
analyzing the input data and the convolutional layer information to determine whether an identifier corresponding to the data arrangement type of the input layer and the convolutional layer exists in the storage unit;
setting new optimal OpenCL parameters and kernels by comparing operation speeds for selectable OpenCL kernels when input data and convolutional layer information are first performed, when the corresponding convolutional layer is first performed; and
A convolutional neural network quantization inference method, comprising the step of setting OpenCL parameters and a kernel preset in the convolutional layer used when the convolutional layer has been previously performed, if there is a history of performing the corresponding convolutional layer previously.
삭제delete 제1 항에 있어서, 양자화 추론을 수행하는 단계는,
OpenCL 커널이 벡터화만 적용하는 것일 경우, 전달받은 입력 데이터 및 콘볼루션 계층의 정보를 이용하여 설정된 OpenCL 파라미터 및 커널을 기반으로 병렬 처리 연산을 수행하는, 콘볼루션 신경망 양자화 추론 방법.
The method of claim 1, wherein performing quantization inference comprises:
When the OpenCL kernel applies only vectorization, a convolutional neural network quantization inference method that performs parallel processing based on the OpenCL parameter and kernel set using the received input data and information of the convolutional layer.
삭제delete 제1 항에 있어서, 양자화 추론을 수행하는 단계는,
설정된 필터 확인 변수가 참이 아닐 경우, 가중치에 대해 IM2COL(Image-to-Column) 연산을 수행하는, 콘볼루션 신경망 양자화 추론 방법.
The method of claim 1, wherein performing quantization inference comprises:
A convolutional neural network quantization inference method that performs IM2COL (Image-to-Column) operation on weights when the set filter check variable is not true.
제1 항에 있어서, 양자화 추론을 수행하는 단계는,
가중치에 대해서 행렬 곱셈(GEMM: General Matrix Multiply, 이하 GEMM) 연산을 수행하는, 콘볼루션 신경망 양자화 추론 방법.
The method of claim 1, wherein performing quantization inference comprises:
A quantization inference method for a convolutional neural network that performs a matrix multiplication (GEMM: General Matrix Multiply, hereinafter GEMM) operation on weights.
적어도 하나의 프로그램이 기록된 메모리; 및
프로그램을 실행하는 프로세서를 포함하며,
프로그램은,
미리 학습된 콘볼루션 신경망에서 추론하고자 하는 입력 데이터의 특징 및 콘볼루션 계층 정보를 수신함에 따라, 입력 데이터의 특징 및 콘볼루션 계층 정보를 분석하여 임베디드 시스템의 하드웨어 플랫폼에 최적화된 OpenCL 파라미터 및 커널을 설정하는 단계: 및
설정된 OpenCL 파라미터 및 커널을 이용하여 콘볼루션 계층에 대한 양자화추론을 수행하는 단계를 수행하고,
상기 OpenCL 파라미터 및 커널을 설정하는 단계는 해당 계층의 최대 데이터의 수, 해당 데이터의 채널, 해당 데이터의 높이, 해당 데이터의 넓이 중 적어도 어느 하나를 포함하는 입력 계층의 데이터 배치 형태를 이용하여 OpenCL 파라미터 및 커널의 신규 설정 여부를 결정하고,
상기 양자화 추론을 수행하는 단계는,
OpenCL 커널이 벡터화만 적용하는 것이 아닐 경우, 콘볼루션 계층에서 연산을 수행할 행렬이 4의 배수가 아닐 경우 4의 배수가 되도록 각 행렬에 패딩을 추가하는 단계;
콘볼루션 계층의 가중치(weight)를 저장하고 있는 행렬에 대해서 지정된 행렬 크기를 기준으로 전체 행렬 영역을 분할한 후, 각 분할된 영역에서 열 순서대로 값을 재배치하는 인터리브 단계를 수행하는 단계;
콘볼루션 계층의 입력 데이터를 저장하고 있는 행렬에 대해서 지정된 행렬 크기를 기준으로 전체 행렬 영역을 분할한 후, 각 분할된 영역에서 행 순서대로 값을 재배치하는 순서 변환을 수행하는 단계;
패딩 추가 및 인터리브, 순서 변환이 수행된 행렬 A와 B에 대해 콘볼루션 계층의 연산을 수행하는 단계; 및
콘볼루션 계층 연산 수행 결과로부터 추가한 패딩을 제거하는 단계를 포함하는 것
인 콘볼루션 신경망 양자화 추론 장치.
a memory in which at least one program is recorded; and
a processor for executing a program;
program,
As the pre-trained convolutional neural network receives the characteristics and convolutional layer information of the input data to be inferred, it analyzes the characteristics of the input data and the convolutional layer information to set the OpenCL parameters and kernel optimized for the hardware platform of the embedded system Steps to do: and
performing quantization inference on the convolutional layer using the set OpenCL parameters and kernel;
The step of setting the OpenCL parameter and the kernel includes the OpenCL parameter using the data arrangement form of the input layer including at least one of the maximum number of data of the corresponding layer, the channel of the corresponding data, the height of the corresponding data, and the width of the corresponding data. and determining whether to set a new kernel,
The step of performing the quantization inference comprises:
adding padding to each matrix so that, when the OpenCL kernel does not apply only vectorization, the matrix to be operated on in the convolutional layer is not a multiple of 4;
dividing an entire matrix region based on a specified matrix size for a matrix storing weights of the convolutional layer, and then performing an interleaving step of rearranging values in each divided region in column order;
A method comprising: dividing an entire matrix region based on a specified matrix size with respect to a matrix storing input data of a convolutional layer, and performing order transformation in which values are rearranged in row order in each divided region;
performing a convolutional layer operation on matrices A and B on which padding addition, interleaving, and order transformation have been performed; and
Comprising the step of removing the added padding from the result of performing the convolutional layer operation
In convolutional neural network quantization reasoning device.
KR1020200055313A 2020-05-08 2020-05-08 Apparatus and Method for Convolutional Neural Network Quantization Inference KR102455310B1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020200055313A KR102455310B1 (en) 2020-05-08 2020-05-08 Apparatus and Method for Convolutional Neural Network Quantization Inference
KR1020220128648A KR102545658B1 (en) 2020-05-08 2022-10-07 Apparatus and Method for Convolutional Neural Network Quantization Inference

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200055313A KR102455310B1 (en) 2020-05-08 2020-05-08 Apparatus and Method for Convolutional Neural Network Quantization Inference

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020220128648A Division KR102545658B1 (en) 2020-05-08 2022-10-07 Apparatus and Method for Convolutional Neural Network Quantization Inference

Publications (2)

Publication Number Publication Date
KR20210136700A KR20210136700A (en) 2021-11-17
KR102455310B1 true KR102455310B1 (en) 2022-10-18

Family

ID=78703031

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020200055313A KR102455310B1 (en) 2020-05-08 2020-05-08 Apparatus and Method for Convolutional Neural Network Quantization Inference
KR1020220128648A KR102545658B1 (en) 2020-05-08 2022-10-07 Apparatus and Method for Convolutional Neural Network Quantization Inference

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020220128648A KR102545658B1 (en) 2020-05-08 2022-10-07 Apparatus and Method for Convolutional Neural Network Quantization Inference

Country Status (1)

Country Link
KR (2) KR102455310B1 (en)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20240035013A (en) 2022-09-08 2024-03-15 한양대학교 산학협력단 Sparse data based convolution calculate method and apparatus using artificial neural network
KR102577125B1 (en) * 2023-02-16 2023-09-12 (주)밀 Artificial neural network model

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
US20180308208A1 (en) 2017-04-24 2018-10-25 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
US20180308206A1 (en) 2017-04-24 2018-10-25 Prasoonkumar Surti Compute optimization mechanism for deep neural networks
US20180315158A1 (en) 2017-04-28 2018-11-01 Intel Corporation Programmable coarse grained and sparse matrix compute hardware with advanced scheduling
US20190114533A1 (en) 2017-10-17 2019-04-18 Xilinx, Inc. Machine learning runtime library for neural network acceleration

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108073549B (en) * 2016-11-14 2021-04-27 耐能股份有限公司 Convolution operation device and method
KR102415508B1 (en) * 2017-03-28 2022-07-01 삼성전자주식회사 Convolutional neural network processing method and apparatus
KR20190034985A (en) 2017-09-25 2019-04-03 삼성전자주식회사 Method and apparatus of artificial neural network quantization
KR102228586B1 (en) * 2018-01-19 2021-03-16 한국전자통신연구원 Gpu-based adaptive blas operation acceleration apparatus and method thereof
US11880760B2 (en) * 2019-05-01 2024-01-23 Samsung Electronics Co., Ltd. Mixed-precision NPU tile with depth-wise convolution

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
US20180308208A1 (en) 2017-04-24 2018-10-25 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
US20180308206A1 (en) 2017-04-24 2018-10-25 Prasoonkumar Surti Compute optimization mechanism for deep neural networks
US20180315158A1 (en) 2017-04-28 2018-11-01 Intel Corporation Programmable coarse grained and sparse matrix compute hardware with advanced scheduling
US20190114533A1 (en) 2017-10-17 2019-04-18 Xilinx, Inc. Machine learning runtime library for neural network acceleration

Also Published As

Publication number Publication date
KR20220143792A (en) 2022-10-25
KR102545658B1 (en) 2023-06-21
KR20210136700A (en) 2021-11-17

Similar Documents

Publication Publication Date Title
KR20220143792A (en) Apparatus and Method for Convolutional Neural Network Quantization Inference
CN110378468B (en) Neural network accelerator based on structured pruning and low bit quantization
CN110555450B (en) Face recognition neural network adjusting method and device
US20210133278A1 (en) Piecewise quantization for neural networks
US20240161474A1 (en) Neural Network Inference Acceleration Method, Target Detection Method, Device, and Storage Medium
TW201915839A (en) Method and apparatus for quantizing artificial neural network and floating-point neural network
CN111047563B (en) Neural network construction method applied to medical ultrasonic image
CN112287986B (en) Image processing method, device, equipment and readable storage medium
CN110363297A (en) Neural metwork training and image processing method, device, equipment and medium
CN112101525A (en) Method, device and system for designing neural network through NAS
CN114781650B (en) Data processing method, device, equipment and storage medium
US11562554B1 (en) Workload reduction for non-maximum suppression operation
CN117616424A (en) Systems and methods for balancing sparsity in weights for accelerating deep neural networks
CN116991560A (en) Parallel scheduling method, device, equipment and storage medium for language model
CN117196000A (en) Edge side model reasoning acceleration method for containerized deployment
KR20210111677A (en) Method for clipping neural networks, method for calculating convolution of neural networks and apparatus for performing the methods
CN112766397A (en) Classification network and implementation method and device thereof
CN111582444A (en) Matrix data processing device, electronic equipment and storage medium
KR20210138382A (en) Method and apparatus for multi-level stepwise quantization for neural network
CN115130672B (en) Software and hardware collaborative optimization convolutional neural network calculation method and device
CN115496181A (en) Chip adaptation method, device, chip and medium of deep learning model
KR20220110460A (en) Method and apparatus for analyzing data using artificial neural network model
CN116244059A (en) Operator tuning method and device, electronic equipment and storage medium
CN110929623A (en) Multimedia file identification method, device, server and storage medium
US20220414457A1 (en) Selective data structure encoding for deep neural network training

Legal Events

Date Code Title Description
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant