WO2022131389A1 - 딥러닝 알고리즘을 위한 fpga 설계 방법 및 시스템 - Google Patents

딥러닝 알고리즘을 위한 fpga 설계 방법 및 시스템 Download PDF

Info

Publication number
WO2022131389A1
WO2022131389A1 PCT/KR2020/018335 KR2020018335W WO2022131389A1 WO 2022131389 A1 WO2022131389 A1 WO 2022131389A1 KR 2020018335 W KR2020018335 W KR 2020018335W WO 2022131389 A1 WO2022131389 A1 WO 2022131389A1
Authority
WO
WIPO (PCT)
Prior art keywords
fpga
module
architecture
deep learning
design
Prior art date
Application number
PCT/KR2020/018335
Other languages
English (en)
French (fr)
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 주식회사 모빌린트
Publication of WO2022131389A1 publication Critical patent/WO2022131389A1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • G06F15/7871Reconfiguration support, e.g. configuration loading, configuration switching, or hardware OS
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/50Adding; Subtracting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Definitions

  • the present invention relates to a method and system for designing an FPGA (Field Programmable Gate Array) for a deep learning algorithm.
  • FPGA Field Programmable Gate Array
  • Deep learning is a field of artificial intelligence that uses artificial neural networks that mimic human neurons. ) is one of the methods. When sufficient training/learning is performed, according to the deep learning, classification and prediction with very high performance are possible compared to the existing algorithms, and various methods for applying the deep learning to various fields have been proposed.
  • An object of the present invention is to provide an FPGA design method and system optimized for a deep learning algorithm.
  • a field programmable gate array (FPGA) design method for a deep learning algorithm for solving the above-mentioned problems, according to the layer structure of the ResNet algorithm, convolution ( a module architecture design step of setting a module architecture including at least one of a convolution) operation, an addition operation, a pooling operation, and an activation operation; a control architecture design step of connecting input data and weight data in parallel to one or more module architectures, and setting a data path according to an operation in the one or more module architectures; and an FPGA design step of determining, based on the resource size of the FPGA, where the entire architecture, including the one or more module architectures and a control architecture for the one or more module architectures, is placed in the FPGA.
  • the convolution operation is set to be performed in one cycle, and each time the input data passes through two layers, the addition is added to the input data before the two layers. It may include setting up an operation.
  • the convolution operation performs a 3*3 multiplication operation
  • the addition operation performs summing the result values of the convolution operation
  • the pooling operation extracts the largest value among the summed values
  • the activation operation may add a nonlinear characteristic to the extracted value.
  • control architecture design step detects a module architecture in which no operation is performed within the one or more module architectures, and provides an intermediate sequence of operations to the detected module architecture so that a corresponding operation is performed and merged. You can set the data path.
  • the entire architecture is placed in the FPGA so that the maximum number of module architectures in the FPGA is placed.
  • FPGA design system for a deep learning algorithm for solving the above-described problems, convolution operation, addition for each layer according to the layer structure of the ResNet algorithm (add) a module architecture design unit for setting a module architecture including at least one of an operation, a pooling operation, and an activation operation; a control architecture design unit that connects input data and weight data in parallel to one or more module architectures and sets a data path according to an operation in the one or more module architectures; and an FPGA design unit that determines, based on the resource size of the FPGA, a location in which the entire architecture including the one or more module architectures and a control architecture for the one or more module architectures is placed in the FPGA.
  • the convolution operation performs a 3*3 multiplication operation
  • the addition operation performs summing the result values of the convolution operation
  • the pooling operation extracts the largest value among the summed values
  • the activation operation may add a nonlinear characteristic to the extracted value.
  • a computer program according to another aspect of the present invention for solving the above-described problems, in combination with a computer, may be stored in a computer-readable recording medium to execute the FPGA design method for the above-described deep learning algorithm.
  • the present invention by modularizing the architecture for performing the deep learning operation, it is possible to appropriately arrange the modular architecture according to the number of resources of the FPGA. Through this, an architecture that is adaptively optimized according to the size of the FPGA can be implemented quickly and flexibly.
  • 1 is a diagram briefly illustrating the basic concept of an artificial neural network.
  • FIG. 2 is a diagram schematically illustrating a basic residual connection structure of Reznet.
  • FIG. 3 is a flowchart of an FPGA design method for a deep learning algorithm according to an example of the present invention.
  • FIG. 4 is a diagram briefly illustrating a module architecture according to an example of the present invention.
  • FIG. 5 is a diagram showing examples of activation functions applicable to the present invention.
  • FIG. 6 is a diagram briefly showing an architecture structure according to an example of the present invention.
  • FIGS. 7A to 7C are diagrams briefly illustrating an FPGA design step applicable to the present invention.
  • FIG. 8 is a diagram showing the configuration of an FPGA design system according to an example of the present invention.
  • the present invention discloses a method and system for designing a field programmable gate array (FPGA) for a deep learning algorithm.
  • FPGA field programmable gate array
  • the present invention discloses a method and a system for designing on an FPGA having limited resources capable of implementing the deep learning algorithm.
  • the deep learning algorithm is one of the machine learning algorithms and refers to a modeling technique developed from an artificial neural network that mimics a human neural network.
  • the artificial neural network may be configured in a multi-layered hierarchical structure as shown in FIG. 1 .
  • 1 is a diagram briefly illustrating the basic concept of an artificial neural network.
  • an artificial neural network is a layer including an input layer, an output layer, and at least one intermediate layer (or a hidden layer) between the input layer and the output layer.
  • the deep learning algorithm can derive reliable results as a result through learning that optimizes the weight of the activation function between layers based on such a multi-layer structure.
  • the deep learning algorithm applicable to the present invention may include a deep neural network (DNN), a convolutional neural network (CNN), a recurrent neural network (RNN), and the like.
  • DNN deep neural network
  • CNN convolutional neural network
  • RNN recurrent neural network
  • the DNN is basically characterized by increasing the middle layer (or hidden layer) in the existing ANN model to improve the learning result.
  • the DNN is characterized in that the learning process is performed using two or more intermediate layers. Accordingly, the computer can derive the optimal output value by repeating the process of creating a classification label by itself, distorting the space, and classifying the data.
  • CNN is characterized in that it has a structure in which data features are extracted and patterns of features are identified.
  • the CNN may be performed through a convolution process and a pooling process.
  • the CNN may include an algorithm in which a convolution layer and a pooling layer are combined.
  • a process of extracting features of data (aka, convolution process) is performed.
  • the convolution process is a process of examining adjacent components of each component in the data to determine the characteristics and deriving the identified characteristics into a single sheet. As a single compression process, the number of parameters can be effectively reduced.
  • pooling process a process of reducing the size of the convolutional layer (so-called pooling process) is performed.
  • the pooling process may reduce the size of data, cancel noise, and provide consistent features in minute details.
  • the CNN may be used in various fields such as information extraction, sentence classification, and face recognition.
  • RNN is a type of artificial neural network specialized for iterative and sequential data learning, and is characterized by having a cyclic structure inside.
  • the RNN uses the cyclic structure to apply weights to past learning contents and reflect them in current learning, thereby enabling a connection between current learning and past learning, and being dependent on time.
  • the RNN is an algorithm that solves the limitations of the existing continuous, iterative and sequential data learning, and can be used to identify a speech waveform or identify the front and back components of a text.
  • ResNet which is one of CNNs.
  • the technical configuration disclosed in the present invention is not limited to simply being applied to Resnet, and may be applied to various deep learning algorithms similar to Resnet.
  • FIG. 2 is a diagram schematically illustrating a basic residual connection structure of Reznet.
  • an input value of x passes through a certain number of weight layers (eg, two weight layers) and passes through the ReLU function, which is a non-linear activation function. do.
  • the ReLU function is called f(x)
  • f(x)+x obtained by adding x, which is the input value itself (identity) to the activation value f(x)
  • the residual connection structure allows the gradient of x, which is the original input value, to flow directly through the network, and adds the input value itself (identity) to the output value that has passed the nonlinear function to obtain the original gradient. make sure not to lose
  • Resnet to which such a residual connection structure is applied may continuously include a structure having a certain operation regularity.
  • the operator can be configured by modularizing the basic architecture of Reznet.
  • the basic architecture considers the number of resources (or the amount of resources, in this case, the resources may include a digital signal processing (DSP), a look up table (LUT), etc.) of the FPGA, and one or a plurality of them are applied to the FPGA.
  • DSP digital signal processing
  • LUT look up table
  • the modular basic architecture can be applied to FPGAs of various sizes by modifying/supplementing the control architecture that controls them according to the number. Accordingly, the structure of the algorithm itself is very simple, so it is possible to minimize placement and wiring errors when inserting the FPGA.
  • FPGAs are semiconductor devices that contain designable logic elements and programmable internal circuitry.
  • the FPGA has the characteristic of being able to flexibly change the internal operator arrangement and storage use/connection structure according to the user's setting.
  • the design of the operator architecture is very complex and the design has to be changed according to the resources (eg DSP, LUT, etc.) secured by the FPGA.
  • the basic module architecture can be easily added/applied according to the resource size of the FPGA.
  • the control architecture that controls it can be implemented through simple modification according to the number of the basic module architectures.
  • the control architecture can be applied to FPGAs for each size through simple modification according to the number of the basic module architectures.
  • the structure of the basic module architecture itself can be implemented very simply, it is possible to minimize arrangement and wiring errors when inserting it into the FPGA.
  • FIG. 3 is a flowchart of an FPGA design method for a deep learning algorithm according to an example of the present invention.
  • the FPGA design method for a deep learning algorithm (eg, Reznet, etc.) according to the present invention, the module architecture design step (S310), the control architecture design step (S320) and the FPGA design step (S330) ) may be included.
  • the FPGA design method may be implemented by a computer program stored in a computer-readable recording medium to execute the FPGA design system or the FPGA design method. Accordingly, the FPGA design method may receive input/setting information from a user, and provide/display an optimal FPGA design method for a corresponding deep learning algorithm to the user.
  • the FPGA design system may design the operator configuration for each layer according to the layer structure of the ResNet algorithm. More specifically, in step S310, the FPGA design system performs at least one of a convolution operation, an addition operation, a pooling operation, and an activation operation for each layer according to the hierarchical structure of the Reznet algorithm. You can set the module architecture including In this case, the operation structure (or hierarchical structure) of the Reznet algorithm or the deep learning algorithm may be obtained from data input from a user or set data.
  • the convolution operation may be set to be performed in one cycle, and the addition operation may be set to add up input data before the two layers whenever input data passes through two layers.
  • the multiplication-accumulation architecture may be configured so that repeatedly used convolution operations (eg, 3*3 convolution operations, etc.) The pattern may be configured to be merged with input data before the two layers each time.
  • the pooling operation and the activation operation may be set to be placed in a specific layer (eg, a layer identified in an initial layer search step, etc.) to perform an operation operation.
  • FIG. 4 is a diagram briefly illustrating a module architecture according to an example of the present invention.
  • the module architecture may include a 3*3 multiplication operator, an accumulator, a pooling operation, and a ReLU operation.
  • the module architecture may be configured to include an operator that performs a total of nine operations (3*3) at once, and an architecture that accumulates and sums them.
  • the convolution operation performs a 3*3 multiplication operation
  • the addition operation performs summing the result values of the convolution operation
  • the pooling operation extracts the largest value among the summed values
  • the activation operation may be set to add a non-linear characteristic to the extracted value.
  • the module architecture may additionally include a data selector for outputting a predetermined data value from data output from the accumulator, the pooling operation, and the ReLU operation.
  • the added module architecture may be connected in parallel to a loop operated by the existing module architecture. Through this, the entire module architecture may be configured to simultaneously process two Reznet operations.
  • FIG. 5 is a diagram showing examples of activation functions applicable to the present invention.
  • an activation operation in the module architecture may apply an activation function to add a non-linear characteristic to input data (eg, a value extracted from a pooling operation).
  • a non-linear characteristic eg, a value extracted from a pooling operation.
  • the activation function one of various activation functions shown in FIG. 5 may be applied.
  • the present invention discloses an example in which the ReLU function is applied as an activation function, a Sigmoid, Leaky ReLU, ELU function, etc. may be applied instead of the ReLU function according to embodiments.
  • step S320 the FPGA design system connects input data and weight data to one or more module architectures in parallel, and sets a data path according to an operation in the one or more module architectures.
  • the FPGA design system binds one or more module architectures designed as described above into one, and may set an appropriate data flow for the one or more module architectures.
  • the FPGA design system may connect input data and weight data for one module architecture, and set a data path according to an operation within the one module architecture. Then, when one or more (data) module architectures are added, the FPGA design system connects the input data and weight data stored in the existing storage to the one or more module architectures to be added in parallel, and the one or more modules to be added It is possible to detect a module architecture that does not perform each operation (eg, a convolution operation, an addition operation, a pooling operation, an activation operation, etc.) among the architectures. Next, the FPGA design system may set the control architecture to be merged after the operation is performed by providing the operation intermediate sequence to the module architecture in which the operation is not being performed.
  • a module architecture that does not perform each operation (eg, a convolution operation, an addition operation, a pooling operation, an activation operation, etc.) among the architectures.
  • the FPGA design system may set the control architecture to be merged after the operation is performed by providing the operation intermediate sequence to the module architecture
  • step S320 the FPGA design system detects a module architecture in which no operation is performed in one or more module architectures, and provides an intermediate sequence of operations to the detected module architecture so that the corresponding operation is performed and merged. You can set the data path.
  • FIG. 6 is a diagram briefly showing an architecture structure according to an example of the present invention.
  • the entire architecture structure including one or more module architectures and a control architecture for the one or more module architectures can be designed.
  • the module architecture may include one or more computational architectures and a data merging architecture that merges output values from the one or more computational architectures.
  • the control architecture can be set to implement a specific deep learning algorithm (eg, Reznet algorithm, etc.) by providing input input data and weight data to each computational architecture and data merging architecture.
  • the data merging architecture may output result data according to the specific deep learning algorithm.
  • step S330 the FPGA design system, based on the resource size of the FPGA, the entire architecture including one or more module architectures and a control architecture for one or more module architectures is located in the FPGA can be decided
  • the FPGA design system can be set to be implemented by properly inserting the module architecture for the deep learning algorithm (eg, Reznet algorithm) designed according to the above-described method and the control architecture to control it into the actual FPGA. have.
  • the module architecture for the deep learning algorithm eg, Reznet algorithm
  • an FPGA area (eg, a block area) required by the modular architecture may be set as a P-block.
  • the P-block may mean a plan view or a basic unit on the FPGA. Accordingly, by checking whether the P-block can be placed in a specific position in the FPGA, the probability of failure or error for the same P-block is reduced, and as a result, placement and wiring in the FPGA can be successfully performed.
  • the verified module architecture is placed and inserted in the entire area of the FPGA, the time required for inserting the REZNET operation architecture optimized for each size FPGA can be significantly reduced, enabling rational optimization design.
  • FIGS. 7A to 7C are diagrams briefly illustrating an FPGA design step applicable to the present invention.
  • step S330 FPGA design step
  • the resource size calculation step of calculating the total resource size of the FPGA (eg, DSP, LUT resource, etc.) and the resource size for each block (FIG. 7a)
  • the calculation Based on the determined resource size
  • the module block determination step of determining the block type and the number of blocks for one module architecture (FIG. 7b), based on the determined block type and the number of blocks for the one module architecture
  • the FPGA and a block placement step FIG. 7c of determining where the overall architecture, including the one or more module architectures and a control architecture for the one or more module architectures, is placed in the FPGA in the overall architecture.
  • the block arrangement step may include, based on the determined block type and the number of blocks for one module architecture, determining a location where the entire architecture is placed in the FPGA so that the maximum number of module architectures is placed in the FPGA. .
  • the FPGA design system provides the user with the result of placement in the FPGA of the entire architecture including the maximum number of module architectures and the control architecture for the maximum number of module architectures so that the maximum number of module architectures can be placed in the FPGA.
  • the entire architecture is placed in the FPGA to minimize the probability of failure and/or error in the FPGA may include determining
  • the FPGA design system is a configuration in the FPGA of the entire architecture, including the one or more module architectures and the control architecture for the one or more module architectures, such that the probability of implementation failure/error of the one or more module architectures in the FPGA can be minimized. Results can be provided to the user.
  • the above process can be performed through the same algorithm driving in FPGAs of various sizes by using a script for driving a series of algorithms.
  • the FPGA design system according to the present invention can search for and arrange an optimized block for the module architecture.
  • FIG. 8 is a diagram showing the configuration of an FPGA design system for a deep learning algorithm according to an example of the present invention.
  • the FPGA design system may include a module architecture design unit 810 , a control architecture design unit 820 , an FPGA design unit 830 , and an input unit 840 .
  • the module architecture design unit 810 may perform an operation related to the above-described module architecture design.
  • the control architecture design unit 820 may perform an operation related to the aforementioned control architecture design.
  • the FPGA design unit 830 may perform an operation related to the above-described FPGA design.
  • the FPGA design unit 830 a resource size calculation unit for calculating the total resource size of the FPGA and the resource size for each block, based on the calculated resource size, one module architecture
  • a module block determining unit that determines the block shape and the number of blocks for, and the one or more module architectures and the one or more module architectures in the overall structure of the FPGA based on the determined block shape and the number of blocks for one module architecture
  • the entire architecture, including the control architecture for may include a block arrangement unit that determines a location in the FPGA.
  • the input unit 840 obtains the user's input/setting, etc. for the FPGA design system, and converts it into appropriate data (eg, hierarchical structure of deep learning algorithm, input data, weight data, etc.) to the FPGA design system. can provide Through this, the FPGA design system can provide the user with an optimal FPGA design method for the deep learning algorithm set by the user.
  • appropriate data eg, hierarchical structure of deep learning algorithm, input data, weight data, etc.
  • a software module may contain random access memory (RAM), read only memory (ROM), erasable programmable ROM (EPROM), electrically erasable programmable ROM (EEPROM), flash memory, hard disk, removable disk, CD-ROM, or It may reside in any type of computer-readable recording medium well known in the art to which the present invention pertains.
  • RAM random access memory
  • ROM read only memory
  • EPROM erasable programmable ROM
  • EEPROM electrically erasable programmable ROM
  • flash memory hard disk, removable disk, CD-ROM, or It may reside in any type of computer-readable recording medium well known in the art to which the present invention pertains.

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computing Systems (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biophysics (AREA)
  • Health & Medical Sciences (AREA)
  • Mathematical Optimization (AREA)
  • Biomedical Technology (AREA)
  • Artificial Intelligence (AREA)
  • Computer Hardware Design (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Neurology (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)

Abstract

딥러닝 알고리즘을 위한 FPGA (field programmable gate array) 설계 방법은, 레즈넷 (ResNet) 알고리즘의 계층 (layer) 구조에 따라 각 층별로 콘볼루션 (convolution) 연산, 덧셈 (add) 연산, 풀링 연산, 활성화 (activation) 연산 중 적어도 하나 이상의 연산을 포함한 모듈 아키텍쳐를 설정하는 모듈 아키텍쳐 설계 단계; 하나 이상의 모듈 아키텍쳐로 입력 데이터 및 가중치 (weight) 데이터를 병렬로 연결하고, 상기 하나 이상의 모듈 아키텍쳐 내 연산에 따른 데이터 경로를 설정하는 컨트롤 아키텍쳐 설계 단계; 및 FPGA의 자원 크기에 기초하여, 상기 하나 이상의 모듈 아키텍쳐 및 상기 하나 이상의 모듈 아키텍쳐를 위한 컨트롤 아키텍쳐를 포함한 전체 아키텍쳐가 상기 FPGA 내 배치되는 위치를 결정하는 FPGA 설계 단계를 포함한다.

Description

딥러닝 알고리즘을 위한 FPGA 설계 방법 및 시스템
본 발명은 딥러닝 알고리즘을 위한 FPGA (Field Programmable Gate Array) 설계 방법 및 시스템에 관한 것이다.
딥러닝이란 인간의 뉴런을 모방한 인공신경망을 이용하는 인공지능의 한 분야로써 연속된 층(Layer)에서 점진적으로 의미있는 표현을 배우고, 데이터로부터 표현 및 특징을 추출하는데 강점을 가진 기계 학습 (machine learnming) 방법의 하나이다. 충분한 훈련/학습이 수행되는 경우, 상기 딥러닝에 따르면 기존의 알고리즘에 비해 매우 높은 성능의 분류, 예측 등이 가능한 바, 상기 딥러닝을 다양한 분야에 적용하기 위한 여러 방안들이 제안되고 있다.
다만, 이와 같은 딥러닝 알고리즘은 특성상 매우 연산량이 크기 때문에 이를 전용으로 처리해주는 연산 장치를 필요로 한다. 이에, 상기 딥러닝 알고리즘을 위한 전용 연산 장치에 대한 연구가 활발히 진행되고 있으며, 이 중 한가지 방법으로 FPGA (field programmable gate array)를 이용하여 딥러닝 알고리즘 연산기를 설계하는 방법도 활발히 진행되고 있다.
본 발명이 해결하고자 하는 과제는 딥러닝 알고리즘을 위해 최적화된 FPGA 설계 방법 및 시스템을 제공하는 것이다.
본 발명이 해결하고자 하는 과제들은 이상에서 언급된 과제로 제한되지 않으며, 언급되지 않은 또 다른 과제들은 아래의 기재로부터 통상의 기술자에게 명확하게 이해될 수 있을 것이다.
상술한 과제를 해결하기 위한 본 발명의 일 면에 따른 딥러닝 알고리즘을 위한 FPGA (field programable gate array) 설계 방법은, 레즈넷 (ResNet) 알고리즘의 계층 (layer) 구조에 따라 각 층별로 콘볼루션 (convolution) 연산, 덧셈 (add) 연산, 풀링 연산, 활성화 (activation) 연산 중 적어도 하나 이상의 연산을 포함한 모듈 아키텍쳐를 설정하는 모듈 아키텍쳐 설계 단계; 하나 이상의 모듈 아키텍쳐로 입력 데이터 및 가중치 (weight) 데이터를 병렬로 연결하고, 상기 하나 이상의 모듈 아키텍쳐 내 연산에 따른 데이터 경로를 설정하는 컨트롤 아키텍쳐 설계 단계; 및 FPGA의 자원 크기에 기초하여, 상기 하나 이상의 모듈 아키텍쳐 및 상기 하나 이상의 모듈 아키텍쳐를 위한 컨트롤 아키텍쳐를 포함한 전체 아키텍쳐가 상기 FPGA 내 배치되는 위치를 결정하는 FPGA 설계 단계를 포함한다.
본 발명에 있어, 상기 모듈 아키텍쳐 설계 단계는, 상기 콘볼루션 연산을 1 사이클에 수행되도록 설정하고, 상기 입력 데이터가 2개의 계층을 통과할 때마다 상기 2개의 계층 이전의 입력 데이터와 합산되도록 상기 덧셈 연산을 설정하는 것을 포함할 수 있다.
본 발명에 있어, 상기 콘볼루션 연산은 3*3 곱셈 연산을 수행하고, 상기 덧셈 연산은 상기 콘볼루션 연산의 결과 값의 합산을 수행하고, 상기 풀링 연산은 상기 합산된 값들 중 가장 큰 값을 추출하고, 상기 활성화 연산은 상기 추출된 값에 비선형 특성을 부가할 수 있다.
본 발명에 있어, 상기 컨트롤 아키텍쳐 설계 단계는, 상기 하나 이상의 모듈 아키텍쳐 내에서 연산이 수행되지 않는 모듈 아키텍쳐를 감지하고, 상기 감지된 모듈 아키텍쳐로 연산 중간 시퀀스를 제공하여 대응하는 연산이 수행되어 병합되도록 상기 데이터 경로를 설정할 수 있다.
본 발명에 있어, 상기 FPGA 설계 단계는, 상기 FPGA의 전체 자원 크기 및 각 블록 별 자원 크기를 산출하는 자원 크기 산출 단계; 상기 산출된 자원 크기에 기초하여, 하나의 모듈 아키텍쳐를 위한 블록 형태 및 블록 개수를 결정하는 모듈 블록 결정 단계; 및 상기 결정된 하나의 모듈 아키텍쳐를 위한 블록 형태 및 블록 개수에 기초하여, 상기 FPGA의 전체 구조에 상기 하나 이상의 모듈 아키텍쳐 및 상기 하나 이상의 모듈 아키텍쳐를 위한 컨트롤 아키텍쳐를 포함한 상기 전체 아키텍처가 상기 FPGA 내 배치되는 위치를 결정하는 블록 배치 단계를 포함할 수 있다.
본 발명에 있어, 상기 블록 배치 단계는, 상기 결정된 하나의 모듈 아키텍쳐를 위한 블록 형태 및 블록 개수에 기초하여, 상기 FPGA 내 최대 개수의 모듈 아키텍쳐가 배치되도록 상기 전체 아키텍쳐가 상기 FPGA 내 배치되는 위치를 결정할 수 있다.
상술한 과제를 해결하기 위한 본 발명의 일 면에 따른 딥러닝 알고리즘을 위한 FPGA) 설계 시스템은, 레즈넷 (ResNet) 알고리즘의 계층 (layer) 구조에 따라 각 층별로 콘볼루션 (convolution) 연산, 덧셈 (add) 연산, 풀링 연산, 활성화 (activation) 연산 중 적어도 하나 이상의 연산을 포함한 모듈 아키텍쳐를 설정하는 모듈 아키텍쳐 설계부; 하나 이상의 모듈 아키텍쳐로 입력 데이터 및 가중치 (weight) 데이터를 병렬로 연결하고, 상기 하나 이상의 모듈 아키텍쳐 내 연산에 따른 데이터 경로를 설정하는 컨트롤 아키텍쳐 설계부; 및 FPGA의 자원 크기에 기초하여, 상기 하나 이상의 모듈 아키텍쳐 및 상기 하나 이상의 모듈 아키텍쳐를 위한 컨트롤 아키텍쳐를 포함한 전체 아키텍쳐가 상기 FPGA 내 배치되는 위치를 결정하는 FPGA 설계부를 포함한다.
본 발명에 있어, 상기 콘볼루션 연산은 3*3 곱셈 연산을 수행하고, 상기 덧셈 연산은 상기 콘볼루션 연산의 결과 값의 합산을 수행하고, 상기 풀링 연산은 상기 합산된 값들 중 가장 큰 값을 추출하고, 상기 활성화 연산은 상기 추출된 값에 비선형 특성을 부가할 수 있다.
본 발명에 있어, 상기 FPGA 설계부는, 상기 FPGA의 전체 자원 크기 및 각 블록 별 자원 크기를 산출하는 자원 크기 산출부; 상기 산출된 자원 크기에 기초하여, 하나의 모듈 아키텍쳐를 위한 블록 형태 및 블록 개수를 결정하는 모듈 블록 결정부; 및 상기 결정된 하나의 모듈 아키텍쳐를 위한 블록 형태 및 블록 개수에 기초하여, 상기 FPGA의 전체 구조에 상기 하나 이상의 모듈 아키텍쳐 및 상기 하나 이상의 모듈 아키텍쳐를 위한 컨트롤 아키텍쳐를 포함한 상기 전체 아키텍처가 상기 FPGA 내 배치되는 위치를 결정하는 블록 배치부를 포함할 수 있다.
상술한 과제를 해결하기 위한 본 발명의 또 다른 면에 따른 컴퓨터 프로그램은, 컴퓨터와 결합하여, 앞서 상술한 딥러닝 알고리즘을 위한 FPGA 설계 방법을 실행시키기 위하여 컴퓨터 판독가능 기록매체에 저장될 수 있다.
본 발명의 기타 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
상기와 같은 본 발명에 따르면, 딥러닝 알고리즘 (특히, 레즈네 알고리즘)을 위한 FPGA 설계의 능률, 최적화 및 유연성을 높일 수 있다.
또한, 본 발명에 따르면, 딥러닝 연산을 수행하는 아키텍쳐를 모듈화함으로써 FPGA의 자원 수에 따라 상기 모듈화된 아키텍쳐를 적절하게 배치할 수 있다. 이를 통해, FPGA의 사이즈에 따라 적응적으로 최적화된 아키텍쳐를 빠르고 유연하게 구현할 수 있다.
본 발명의 효과들은 이상에서 언급된 효과로 제한되지 않으며, 언급되지 않은 또 다른 효과들은 아래의 기재로부터 통상의 기술자에게 명확하게 이해될 수 있을 것이다.
도 1은 인공 신경망의 기본적인 개념을 간단히 나타낸 도면이다.
도 2는 레즈넷의 기본적인 잔차 연결 (residual connection) 구조를 간단히 나타낸 도면이다.
도 3은 본 발명의 일 예에 따른 딥러닝 알고리즘을 위한 FPGA 설계 방법의 흐름도이다.
도 4는 본 발명의 일 예에 따른 모듈 아키텍쳐를 간단히 나타낸 도면이다.
도 5는 본 발명에 적용 가능한 활성화 함수의 예시들을 나타낸 도면이다.
도 6은 본 발명의 일 예에 따른 아키텍쳐 구조를 간단히 나타낸 도면이다.
도 7a 내지 도 7c는 본 발명에 적용 가능한 FPGA 설계 단계를 간단히 나타낸 도면이다.
도 8은 본 발명의 일 예에 따른 FPGA 설계 시스템의 구성을 나타낸 도면이다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나, 본 발명은 이하에서 개시되는 실시예들에 제한되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술 분야의 통상의 기술자에게 본 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다.
본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 "포함한다(comprises)" 및/또는 "포함하는(comprising)"은 언급된 구성요소 외에 하나 이상의 다른 구성요소의 존재 또는 추가를 배제하지 않는다. 명세서 전체에 걸쳐 동일한 도면 부호는 동일한 구성 요소를 지칭하며, "및/또는"은 언급된 구성요소들의 각각 및 하나 이상의 모든 조합을 포함한다. 비록 "제1", "제2" 등이 다양한 구성요소들을 서술하기 위해서 사용되나, 이들 구성요소들은 이들 용어에 의해 제한되지 않음은 물론이다. 이들 용어들은 단지 하나의 구성요소를 다른 구성요소와 구별하기 위하여 사용하는 것이다. 따라서, 이하에서 언급되는 제1 구성요소는 본 발명의 기술적 사상 내에서 제2 구성요소일 수도 있음은 물론이다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 발명이 속하는 기술분야의 통상의 기술자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있을 것이다. 또한, 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다.
이하, 첨부된 도면을 참조하여 본 발명의 실시예를 상세하게 설명한다.
본 발명에서는 딥러닝 알고리즘을 위한 FPGA (field programmable gate array) 설계 방법 및 시스템을 개시한다. 다시 말해, 본 발명에서는 상기 딥러닝 알고리즘을 구현할 수 있는 제한된 자원을 갖는 FPGA 상에 설계하는 방법 및 이를 위한 시스템을 개시한다.
설명에 앞서 본 명세서에서 사용하는 용어의 의미를 간략히 설명한다. 그렇지만 용어의 설명은 본 명세서의 이해를 돕기 위한 것이므로, 명시적으로 본 발명을 한정하는 사항으로 기재하지 않은 경우에 본 발명의 기술적 사상을 한정하는 의미로 사용하는 것이 아님을 주의해야 한다.
먼저, 딥 러닝 (deep learning) 알고리즘은 머신 러닝 (machine learning) 알고리즘의 하나로 인간의 신경망을 본딴 인공 신경망에서 발전된 모델링 기법을 의미한다. 인공 신경망은 도 1에 도시된 바와 같이 다층 계층 구조로 구성될 수 있다.
도 1은 인공 신경망의 기본적인 개념을 간단히 나타낸 도면이다.
도 1에 도시된 바와 같이, 인공 신경망 (artifical neural network; ANN)은 입력 층, 출력 층, 그리고 상기 입력 층과 출력 층 사이에 적어도 하나 이상의 중간 층 (또는 은닉 층, hidden layer)을 포함하는 계층 구조로 구성될 수 있다. 딥러닝 알고리즘은, 이와 같은 다중 계층 구조에 기반하여, 층간 활성화 함수 (activation function)의 가중치를 최적화 (optimization)하는 학습을 통해 결과적으로 신뢰성 높은 결과를 도출할 수 있다.
본 발명에 적용 가능한 딥러닝 알고리즘은, 심층 신경망 (deep neural network; DNN), 합성곱 신경망 (convolutional neural network; CNN), 순환 신경망 (recurrent neural network; RNN) 등을 포함할 수 있다.
DNN은 기본적으로 기존 ANN 모델 내 중간 층 (또는 은닉 층)을 많이 늘려서 학습의 결과를 향상시키는 것을 특징으로 한다. 일 예로, 상기 DNN은 2개 이상의 중간 층을 이용하여 학습 과정을 수행하는 것을 특징으로 한다. 이에 따라, 컴퓨터는 스스로 분류 레이블을 만들어 내고 공간을 왜곡하고 데이터를 구분짓는 과정을 반복하여 최적의 출력 값을 도출할 수 있다.
CNN은, 기존의 데이터에서 지식을 추출하여 학습 과정이 수행되는 기법과 달리, 데이터의 특징을 추출하여 특징들의 패턴을 파악하는 구조를 갖는 것을 특징으로 한다. 상기 CNN은 콘볼루션 (convolution) 과정과 풀링 (pooling) 과정을 통해 수행될 수 있다. 다시 말해, 상기 CNN은 콘볼루션 층과 풀링 층이 복합적으로 구성된 알고리즘을 포함할 수 있다. 여기서, 콘볼루션 층에서는 데이터의 특징을 추출하는 과정 (일명, 콘볼루션 과정)이 수행된다. 상기 콘볼루션 과정은 데이터에 각 성분의 인접 성분들을 조사해 특징을 파악하고 파악한 특징을 한장으로 도출하는 과정으로써, 하나의 압축 과정으로써 파라미터의 개수를 효과적으로 줄일 수 있다. 풀링 층에서는 콘볼루션 과정을 거친 레이어의 사이즈를 줄여주는 과정 (일명, 풀링 과정)이 수행된다. 상기 풀링 과정은 데이터의 사이즈를 줄이고 노이즈를 상쇄시키고 미세한 부분에서 일관적인 특징을 제공할 수 있다. 일 예로, 상기 CNN은 정보 추출, 문장 분류, 얼굴 인식 등 여러 분야에 활용될 수 있다.
RNN은 반복적이고 순차적인 데이터 (sequential data) 학습에 특화된 인공 신경망의 한 종류로써 내부에 순환 구조를 갖는 것을 특징으로 한다. 상기 RNN은 상기 순환 구조를 이용하여 과거의 학습 내용에 가중치를 적용하여 현재 학습에 반영함으로써, 현재의 학습과 과거의 학습 간 연결을 가능하게 하고 시간에 종속된다는 특징을 갖는다. 상기 RNN은 기존의 지속적이고 반복적이며 순차적인 데이터 학습의 한계를 해결한 알고리즘으로써, 음성 웨이브폼을 파악하거나 텍스트의 앞 뒤 성분을 파악하는 등에 활용될 수 있다.
특히, 이하에서는 CNN 중 하나인 레즈넷 (ResNet)을 기초로 본 발명에 따른 FPGA 설계 방법에 대해 상세히 설명한다. 다만, 본 발명에 개시된 기술 구성은 단순히 레즈넷에 한정되어 적용되지 않으며, 상기 레즈넷과 유사한 다양한 딥러닝 알고리즘에도 적용될 수 있다.
도 2는 레즈넷의 기본적인 잔차 연결 (residual connection) 구조를 간단히 나타낸 도면이다.
도 2에 도시된 바와 같이, 레즈넷에 적용된 잔차 연결에 따르면, x라고 하는 입력 값은 일정 개수의 가중치 레이어들 (예: 2개의 가중치 레이어들)을 통과하고 비선형 활성화 함수인 ReLU 함수를 통과하게 된다. ReLU 함수를 f(x)라고 할 때, 잔차 연결 구조에 따르면 활성화 값인 f(x)에 입력값 자체 (identity)인 x를 더한 f(x)+x 가 다음 활성화 함수의 입력 값으로 적용된다. 즉, 상기 잔차 연결 구조는 본연의 입력값인 x의 그래디언트 (gradient)가 직접적으로 네트워크를 통해 흐를 수 있도록 하고, 비선형 함수를 통과한 출력 값에 입력값 자체 (identity)를 더함으로써 본연의 그래디언트를 손실하지 않도록 한다.
이러한 잔차 연결 구조를 적용한 레즈넷은 일정한 연산 규칙성을 가진 구조를 연속적으로 포함할 수 있다. 이러한 특성을 고려할 때, 레즈넷의 기본 아키텍쳐를 모듈화하여 연산기를 구성할 수 있다. 이때, 상기 기본 아키텍쳐는 FPGA가 갖는 자원 수 (또는 자원 양, 이때, 자원은 DSP (digital signal processing), LUT (look up table) 등을 포함할 수 있음)를 고려하여 하나 또는 복수 개가 FPGA에 적용될 수 있다. 상기 모듈화된 기본 아키텍쳐는 개수에 따라 이를 제어(control)하는 컨트롤 아키텍쳐를 수정/보완함으로써 다양한 사이즈의 FPGA에 적용될 수 있다. 이에 따라, 알고리즘 자체의 구조가 매우 간단하여 FPGA 삽입 시 배치 및 결선 에러를 최소화할 수 있다.
이에, 본 발명에서는 이와 같은 딥러닝 알고리즘 (특히, 레즈넷 알고리즘)의 특성들을 고려한 FPGA 설계 방법 및 시스템에 대해 상세히 설명한다.
FPGA는 설계 가능 논리 소자와 프로그래밍이 가능한 내부 회로가 포함된 반도체 소자이다. 상기 FPGA는 사용자의 설정에 따라 내부의 연산기 배열, 저장소 사용/연결 구조를 유연하게 바꿀 수 있는 특성이 있다. 다만, 연산기 아키텍쳐의 설계는 매우 복잡한데다 FPGA가 확보하고 있는 자원 (예: DSP, LUT 등)에 따라 그 설계를 달리해야 하는 단점이 있다.
다만, 앞서 상술한 바와 같이, 일관성 있게 일정한 구조가 연속되는 딥러닝 알고리즘을 기본 모듈 아키텍쳐로 구성한다면, FPGA의 자원 크기에 따라 상기 기본 모듈 아키텍쳐는 쉽게 추가/적용될 수 있다. 다시 말해, 모듈화된 기본 모듈 아키텍쳐를 활용 시, 기본 모듈 아키텍쳐의 개수 증가에 따라 딥러닝 연산 성능을 쉽게 향상시킬 수 있다. 게다가, 모듈화된 기본 모듈 아키텍쳐를 활용 시, 이를 컨트롤해주는 컨트롤 아키텍쳐는 상기 기본 모듈 아키텍쳐의 개수에 따라 간단한 수정을 통해 구현 가능하다. 다시 말해, 상기 컨트롤 아키텍쳐는 상기 기본 모듈 아키텍쳐의 개수에 따른 간단한 수정을 통해 각 사이즈별 FPGA에 적용될 수 있다. 또한, 상기 기본 모듈 아키텍쳐 자체의 구조는 매우 단순하게 구현가능한 바, 이를 FPGA에 삽입할 때 배치 및 결선 에러를 최소화할 수 있다.
이런 특징들에 기초하여, 이하에서는 딥러닝 알고리즘을 위한 FPGA 설계 방법 및 시스템에 대해 상세히 설명한다.
도 3은 본 발명의 일 예에 따른 딥러닝 알고리즘을 위한 FPGA 설계 방법의 흐름도이다.
도 3에 도시된 바와 같이, 본 발명에 따른 딥러닝 알고리즘 (예: 레즈넷 등)을 위한 FPGA 설계 방법은, 모듈 아키텍쳐 설계 단계 (S310), 컨트롤 아키텍쳐 설계 단계 (S320) 및 FPGA 설계 단계 (S330)을 포함할 수 있다. 본 발명에 있어, 상기 FPGA 설계 방법은 FPGA 설계 시스템 또는 FPGA 설계 방법을 실행시키기 위하여 컴퓨터 판독가능 기록매체에 저장된 컴퓨터 프로그램에 의해 실시될 수 있다. 이에 따라, 상기 FPGA 설계 방법은 사용자로부터 입력/설정 정보를 입력 받고, 대응하는 딥러닝 알고리즘을 위한 최적의 FPGA 설계 방법을 사용자에게 제공/디스플레이할 수 있다.
본 발명에 적용 가능한 일 실시예에 있어, S310 단계에서 FPGA 설계 시스템은 레즈넷 (ResNet) 알고리즘의 계층 (layer) 구조에 따라 각 층별 연산기 구성을 설계할 수 있다. 보다 구체적으로, 상기 FPGA 설계 시스템은 S310 단계에서 상기 레즈넷 알고리즘의 계층 구조에 따라 각 층별로 콘볼루션 (convolution) 연산, 덧셈 (add) 연산, 풀링 연산, 활성화 (activation) 연산 중 적어도 하나 이상의 연산을 포함한 모듈 아키텍쳐를 설정할 수 있다. 이때, 상기 레즈넷 알고리즘 또는 딥러닝 알고리즘의 연산 구조 (또는 계층 구조)는 사용자로부터 입력된 데이터 또는 설정된 데이터로부터 획득될 수 있다.
본 발명에 적용 가능한 일 예로, 콘볼루션 연산은 1 사이클에 수행되도록 설정될 수 있고, 덧셈 연산은 입력 데이터가 2개의 계층을 통과할 때마다 상기 2개의 계층 이전의 입력 데이터와 합산하도록 설정될 수 있다. 보다 구체적으로, 반복적으로 이용되는 콘볼루션 연산 (예: 3*3 콘볼루션 연산 등)은 1 사이클에 수행되도록 곱셈-누산 아키텍쳐가 구성될 수 있고, 덧셈 연산은 입력 데이터가 2개의 계층을 통과할 때마다 상기 2개의 계층 이전의 입력 데이터와 합삼되도록 패턴을 구성할 수 있다. 이와 함께 풀링 연산 및 활성화 연산은 특정 계층 (예: 초기 레이어 탐색 단계에서 파악된 레이어 등)에 배치되어 연산 동작을 수행하도록 설정될 수 있다.
도 4는 본 발명의 일 예에 따른 모듈 아키텍쳐를 간단히 나타낸 도면이다.
도 4에 도시된 바와 같이, 본 발명의 일 예에 따른 모듈 아키텍쳐는 3*3 곱셈 연산기, 누산기, 풀링 연산 및 ReLU 연산을 포함할 수 있다. 다시 말해, 상기 모듈 아키텍쳐는 총 9개의 연산 (3*3)을 한꺼번에 수행하는 연산기 및 이를 누적시켜 합산하는 아키텍쳐를 포함하도록 구성될 수 있다. 일 예로, 상기 콘볼루션 연산은 3*3 곱셈 연산을 수행하고, 상기 덧셈 연산은 상기 콘볼루션 연산의 결과 값의 합산을 수행하고, 상기 풀링 연산은 상기 합산된 값들 중 가장 큰 값을 추출하고, 상기 활성화 연산은 상기 추출된 값에 비선형 특성을 부가하도록 설정될 수 있다. 이때, 상기 모듈 아키텍쳐는 누산기, 풀링 연산, ReLU 연산으로부터 출력되는 데이터로부터 일정 데이터 값을 출력하는 데이터 선택기를 추가적으로 포함할 수 있다. 추가적인 실시예로, 이와 같은 모듈 아키텍쳐가 하나 더 추가되는 경우, 상기 추가되는 모듈 아키텍쳐는 기존 모듈 아키텍쳐가 연산하는 루프에 병렬로 연결될 수 있다. 이를 통해, 전체 모듈 아키텍쳐는 2개의 레즈넷 연산을 동시에 처리 가능하도록 구성될 수도 있다.
도 5는 본 발명에 적용 가능한 활성화 함수의 예시들을 나타낸 도면이다.
도 5에 도시된 바와 같이, 모듈 아키텍쳐 내 활성화 연산은 입력된 데이터 (예: 풀링 연산으로부터 추출된 값)에 비선형 특성을 부가하도록 활성화 함수를 적용할 수 있다. 이때, 상기 활성화 함수로는, 도 5에 도시된 다양한 활성화 함수들 중 하나가 적용될 수 있다. 일 예로, 본 발명에서는 ReLU 함수가 활성화 함수로 적용되는 예시를 개시하였으나, 실시예에 따라 ReLU 함수 대신 Sigmoid, Leaky ReLU, ELU 함수 등이 적용될 수도 있다.
본 발명에 적용 가능한 일 실시예에 있어, S320 단계에서 FPGA 설계 시스템은 하나 이상의 모듈 아키텍쳐로 입력 데이터 및 가중치 (weight) 데이터를 병렬로 연결하고, 상기 하나 이상의 모듈 아키텍쳐 내 연산에 따른 데이터 경로를 설정할 수 있다. 보다 구체적으로, S320 단계에서 상기 FPGA 설계 시스템은 앞서 상술한 바에 따라 설계된 하나 이상의 모듈 아키텍쳐를 하나로 묶어주고, 상기 하나 이상의 모듈 아키텍쳐에 대해 적절한 데이터 흐름을 설정할 수 있다.
보다 구체적으로, FPGA 설계 시스템은 하나의 모듈 아키텍쳐를 위한 입력 데이터 및 가중치 데이터를 연결하고, 상기 하나의 모듈 아키텍쳐 내 연산에 따른 데이터 경로를 설정할 수 있다. 이어, 하나 이상의 (데이터) 모듈 아키텍쳐가 추가되는 경우, 상기 FPGA 설계 시스템은 상기 추가되는 하나 이상의 모듈 아키텍쳐에 기존 저장소에 저장되어 있는 입력 데이터 및 가중치 데이터를 병렬로 연결하고, 상기 추가되는 하나 이상의 모듈 아키텍쳐 중 각각의 연산 (예: 콘볼루션 연산, 덧셈 연산, 풀링 연산, 활성화 연산 등)을 수행하지 않는 모듈 아키텍쳐를 감지할 수 있다. 이어, 상기 FPGA 설계 시스템은 연산 중간 시퀀스를 연산이 미수행중인 모듈 아키텍쳐로 제공하여 연산이 수행된 후 병합되도록 컨트롤 아키텍쳐를 설정할 수 있다. 다시 말해, S320 단계에서, 상기 FPGA 설계 시스템은, 하나 이상의 모듈 아키텍쳐 내에서 연산이 수행되지 않는 모듈 아키텍쳐를 감지하고, 상기 감지된 모듈 아키텍쳐로 연산 중간 시퀀스를 제공하여 대응하는 연산이 수행되어 병합되도록 데이터 경로를 설정할 수 있다.
도 6은 본 발명의 일 예에 따른 아키텍쳐 구조를 간단히 나타낸 도면이다.
앞서 상술한 모듈 아키텍쳐 설계 단계 및 컨트롤 아키텍쳐 설계 단계를 거치면, 도 6에 도시된 바와 같이, 하나 이상의 모듈 아키텍쳐 및 상기 하나 이상의 모듈 아키텍쳐를 위한 컨트롤 아키텍쳐를 포함한 전체 아키텍쳐 구조를 설계할 수 있다.
일 예로, 도 6에 도시된 바와 같이, 모듈 아키텍쳐는 하나 이상의 연산 아키텍쳐 및 상기 하나 이상의 연산 아키텍쳐로부터의 출력 값을 병합하는 데이터 병합 아키텍쳐를 포함할 수 있다. 이어, 컨트롤 아키텍쳐는 입력되는 입력 데이터 및 가중치 데이터를 각 연산 아키텍쳐 및 데이터 병합 아키텍쳐에 제공하여 특정 딥러닝 알고리즘 (예: 레즈넷 알고리즘 등)을 구현하도록 설정할 수 있다. 이어, 상기 데이터 병합 아키텍쳐는 상기 특정 딥러닝 알고리즘에 따른 결과 데이터를 출력할 수 있다.
본 발명에 적용 가능한 일 실시예에 있어, S330 단계에서 FPGA 설계 시스템은, FPGA의 자원 크기에 기초하여, 하나 이상의 모듈 아키텍쳐 및 하나 이상의 모듈 아키텍쳐를 위한 컨트롤 아키텍쳐를 포함한 전체 아키텍쳐가 FPGA 내 배치되는 위치를 결정할 수 있다.
보다 구체적으로, S330 단계에서 FPGA 설계 시스템은 앞서 상술한 방법에 따라 설계된 딥러닝 알고리즘 (예: 레즈넷 알고리즘)을 위한 모듈 아키텍쳐 및 이를 컨트롤하는 컨트롤 아키텍쳐를 실제 FPGA에 적절히 삽입하여 구현할 수 있도록 설정할 수 있다.
일반적으로, 특정 아키텍쳐를 FPGA에 삽입하기 위해 컴퓨터 시스템은 자동적으로 연산기를 배치 및 결선 기능을 제공하나, 이러한 방법은 많은 소요 시간을 필요로 하는데다 실패 여부의 확인이 매우 늦어 비효율적이다. 게다가, FPGA의 사이즈가 달라지는 경우, 이러한 배치 및 결선 작업은 다시 수행되어야하는 단점이 있다.
반면, 본 발명과 같이 모듈화된 아키텍쳐 (예: 모듈 아키텍쳐)를 활용하는 경우, 상기 모듈화된 아키텍쳐가 필요로 하는 FPGA 영역 (예: 블록 영역)을 P-블록으로 설정할 수 있다. 이때, P-블록이란, FPGA 상 평면도 또는 기본 단위를 의미할 수 있다. 이에, 상기 P-블록이 FPGA 내 특정 위치에 배치 가능한지 여부를 확인함으로써 동일한 P-블록에 대한 실패나 오류 확률을 줄이면서 결과적으로 FPGA 내 배치 및 결선을 성공적으로 수행할 수 있다. 이렇게 검증된 모듈 아키텍쳐를 FPGA의 전체 영역에 배치하여 삽입하는 경우, 각 사이즈별 FPGA로 최적화된 레즈넷 연산 아키텍쳐의 삽입에 투입되는 시간을 대폭으로 줄일 수 있어 합리적인 최적화 설계가 가능할 수 있다.
도 7a 내지 도 7c는 본 발명에 적용 가능한 FPGA 설계 단계를 간단히 나타낸 도면이다.
상기와 같은 동작을 위해, S330 단계 (FPGA 설계 단계는), FPGA의 전체 자원 크기 (예: DSP, LUT 자원 등) 및 각 블록 별 자원 크기를 산출하는 자원 크기 산출 단계 (도 7a), 상기 산출된 자원 크기에 기초하여, 하나의 모듈 아키텍쳐를 위한 블록 형태 및 블록 개수를 결정하는 모듈 블록 결정 단계 (도 7b), 상기 결정된 하나의 모듈 아키텍쳐를 위한 블록 형태 및 블록 개수에 기초하여, 상기 FPGA의 전체 구조에 상기 하나 이상의 모듈 아키텍쳐 및 상기 하나 이상의 모듈 아키텍쳐를 위한 컨트롤 아키텍쳐를 포함한 상기 전체 아키텍처가 상기 FPGA 내 배치되는 위치를 결정하는 블록 배치 단계 (도 7c)를 포함할 수 있다.
여기서, 블록 배치 단계는, 결정된 하나의 모듈 아키텍쳐를 위한 블록 형태 및 블록 개수에 기초하여, FPGA 내 최대 개수의 모듈 아키텍쳐가 배치되도록 전체 아키텍쳐가 상기 FPGA 내 배치되는 위치를 결정하는 것을 포함할 수 있다. 다시 말해, FPGA 설계 시스템은, 해당 FPGA 내 최대 개수의 모듈 아키텍쳐가 배치될 수 있도록 상기 최대 개수의 모듈 아키텍쳐 및 상기 최대 개수의 모듈 아키텍쳐를 위한 컨트롤 아키텍쳐를 포함한 전체 아키텍쳐의 FPGA 내 배치 결과를 사용자에게 제공할 수 있다.
다른 예로, FPGA 설계 시스템은, 블록 배치 단계에서, 결정된 하나의 모듈 아키텍쳐를 위한 블록 형태 및 블록 개수에 기초하여, 상기 FPGA 내 실패 및/또는 오류 확률을 최소화되도록 전체 아키텍쳐가 상기 FPGA 내 배치되는 위치를 결정하는 것을 포함할 수 있다. 다시 말해, FPGA 설계 시스템은, 해당 FPGA 내 하나 이상의 모듈 아키텍쳐의 구현 실패/오류 확률이 최소가 될 수 있는 상기 하나 이상의 모듈 아키텍쳐 및 상기 하나 이상의 모듈 아키텍쳐를 위한 컨트롤 아키텍쳐를 포함한 전체 아키텍쳐의 FPGA 내 배치 결과를 사용자에게 제공할 수 있다.
본 발명에 있어, 상기와 같은 과정은 일련의 알고리즘을 구동하는 스크립트를 이용하여 다양한 사이즈의 FPGA에서도 동일한 알고리즘 구동을 통해 수행될 수 있다. 이를 통해, 본 발명에 따른 FPGA 설계 시스템은 모듈 아키텍쳐를 위한 최적화 형태의 블록을 탐색하여 배치할 수 있다.
도 8은 본 발명의 일 예에 따른 딥러닝 알고리즘을 위한 FPGA 설계 시스템의 구성을 나타낸 도면이다.
도 8에 도시된 바와 같이, 상기 FPGA 설계 시스템은, 모듈 아키텍쳐 설계부 (810), 컨트롤 아키텍쳐 설계부 (820), FPGA 설계부 (830) 및 입력부 (840)를 포함할 수 있다.
본 발명에 있어, 모듈 아키텍쳐 설계부 (810)는 앞서 상술한 모듈 아키텍쳐 설계와 관련된 동작을 수행할 수 있다. 또한, 컨트롤 아키텍쳐 설계부 (820)는 앞서 상술한 컨트롤 아키텍쳐 설계와 관련된 동작을 수행할 수 있다. 또한, FPGA 설계부 (830)는 앞서 상술한 FPGA 설계와 관련된 동작을 수행할 수 있다. 특히, 앞서 상술한 FPGA 설계 단계를 위해, FPGA 설계부 (830)는, FPGA의 전체 자원 크기 및 각 블록 별 자원 크기를 산출하는 자원 크기 산출부, 상기 산출된 자원 크기에 기초하여, 하나의 모듈 아키텍쳐를 위한 블록 형태 및 블록 개수를 결정하는 모듈 블록 결정부, 및 상기 결정된 하나의 모듈 아키텍쳐를 위한 블록 형태 및 블록 개수에 기초하여, 상기 FPGA의 전체 구조에 상기 하나 이상의 모듈 아키텍쳐 및 상기 하나 이상의 모듈 아키텍쳐를 위한 컨트롤 아키텍쳐를 포함한 상기 전체 아키텍처가 상기 FPGA 내 배치되는 위치를 결정하는 블록 배치부를 포함할 수 있다.
추가적으로, 입력부 (840)는 FPGA 설계 시스템을 위한 사용자의 입력/설정 등을 획득하고, 이를 적절한 데이터 (예: 딥러닝 알고리즘의 계층 구조, 입력 데이터, 가중치 데이터 등)으로 변환하여 상기 FPGA 설계 시스템에 제공할 수 있다. 이를 통해, 상기 FPGA 설계 시스템은 사용자가 설정한 딥러닝 알고리즘을 위한 최적의 FPGA 설계 방법을 상기 사용자에게 제공할 수 있다.
본 발명의 실시예와 관련하여 설명된 방법 또는 알고리즘의 단계들은 하드웨어로 직접 구현되거나, 하드웨어에 의해 실행되는 소프트웨어 모듈로 구현되거나, 또는 이들의 결합에 의해 구현될 수 있다. 소프트웨어 모듈은 RAM(Random Access Memory), ROM(Read Only Memory), EPROM(Erasable Programmable ROM), EEPROM(Electrically Erasable Programmable ROM), 플래시 메모리(Flash Memory), 하드 디스크, 착탈형 디스크, CD-ROM, 또는 본 발명이 속하는 기술 분야에서 잘 알려진 임의의 형태의 컴퓨터 판독가능 기록매체에 상주할 수도 있다.
이상, 첨부된 도면을 참조로 하여 본 발명의 실시예를 설명하였지만, 본 발명이 속하는 기술분야의 통상의 기술자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로, 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며, 제한적이 아닌 것으로 이해해야만 한다.

Claims (10)

  1. 레즈넷 (ResNet) 알고리즘의 계층 (layer) 구조에 따라 각 층별로 콘볼루션 (convolution) 연산, 덧셈 (add) 연산, 풀링 연산, 활성화 (activation) 연산 중 적어도 하나 이상의 연산을 포함한 모듈 아키텍쳐를 설정하는 모듈 아키텍쳐 설계 단계;
    하나 이상의 모듈 아키텍쳐로 입력 데이터 및 가중치 (weight) 데이터를 병렬로 연결하고, 상기 하나 이상의 모듈 아키텍쳐 내 연산에 따른 데이터 경로를 설정하는 컨트롤 아키텍쳐 설계 단계; 및
    FPGA (field programmable gate array)의 자원 크기에 기초하여, 상기 하나 이상의 모듈 아키텍쳐 및 상기 하나 이상의 모듈 아키텍쳐를 위한 컨트롤 아키텍쳐를 포함한 전체 아키텍쳐가 상기 FPGA 내 배치되는 위치를 결정하는 FPGA 설계 단계를 포함하는 것을 특징으로 하는, 딥러닝 알고리즘을 위한 FPGA 설계 방법.
  2. 제 1항에 있어서,
    상기 모듈 아키텍쳐 설계 단계는,
    상기 콘볼루션 연산을 1 사이클에 수행되도록 설정하고,
    상기 입력 데이터가 2개의 계층을 통과할 때마다 상기 2개의 계층 이전의 입력 데이터와 합산되도록 상기 덧셈 연산을 설정하는 것을 포함하는 것을 특징으로 하는,
    딥러닝 알고리즘을 위한 FPGA 설계 방법.
  3. 제 1항에 있어서,
    상기 콘볼루션 연산은 3*3 곱셈 연산을 수행하고,
    상기 덧셈 연산은 상기 콘볼루션 연산의 결과 값의 합산을 수행하고,
    상기 풀링 연산은 상기 합산된 값들 중 가장 큰 값을 추출하고,
    상기 활성화 연산은 상기 추출된 값에 비선형 특성을 부가하는 것을 특징으로 하는,
    딥러닝 알고리즘을 위한 FPGA 설계 방법.
  4. 제 1항에 있어서,
    상기 컨트롤 아키텍쳐 설계 단계는,
    상기 하나 이상의 모듈 아키텍쳐 내에서 연산이 수행되지 않는 모듈 아키텍쳐를 감지하고,
    상기 감지된 모듈 아키텍쳐로 연산 중간 시퀀스를 제공하여 대응하는 연산이 수행되어 병합되도록 상기 데이터 경로를 설정하는 것을 특징으로 하는,
    딥러닝 알고리즘을 위한 FPGA 설계 방법.
  5. 제 1항에 있어서,
    상기 FPGA 설계 단계는,
    상기 FPGA의 전체 자원 크기 및 각 블록 별 자원 크기를 산출하는 자원 크기 산출 단계;
    상기 산출된 자원 크기에 기초하여, 하나의 모듈 아키텍쳐를 위한 블록 형태 및 블록 개수를 결정하는 모듈 블록 결정 단계; 및
    상기 결정된 하나의 모듈 아키텍쳐를 위한 블록 형태 및 블록 개수에 기초하여, 상기 FPGA의 전체 구조에 상기 하나 이상의 모듈 아키텍쳐 및 상기 하나 이상의 모듈 아키텍쳐를 위한 컨트롤 아키텍쳐를 포함한 상기 전체 아키텍처가 상기 FPGA 내 배치되는 위치를 결정하는 블록 배치 단계를 포함하는 것을 특징으로 하는,
    딥러닝 알고리즘을 위한 FPGA 설계 방법.
  6. 제 5항에 있어서,
    상기 블록 배치 단계는,
    상기 결정된 하나의 모듈 아키텍쳐를 위한 블록 형태 및 블록 개수에 기초하여, 상기 FPGA 내 최대 개수의 모듈 아키텍쳐가 배치되도록 상기 전체 아키텍쳐가 상기 FPGA 내 배치되는 위치를 결정하는 것을 특징으로 하는,
    딥러닝 알고리즘을 위한 FPGA 설계 방법.
  7. 레즈넷 (ResNet) 알고리즘의 계층 (layer) 구조에 따라 각 층별로 콘볼루션 (convolution) 연산, 덧셈 (add) 연산, 풀링 연산, 활성화 (activation) 연산 중 적어도 하나 이상의 연산을 포함한 모듈 아키텍쳐를 설정하는 모듈 아키텍쳐 설계부;
    하나 이상의 모듈 아키텍쳐로 입력 데이터 및 가중치 (weight) 데이터를 병렬로 연결하고, 상기 하나 이상의 모듈 아키텍쳐 내 연산에 따른 데이터 경로를 설정하는 컨트롤 아키텍쳐 설계부; 및
    FPGA (field programmable gate array)의 자원 크기에 기초하여, 상기 하나 이상의 모듈 아키텍쳐 및 상기 하나 이상의 모듈 아키텍쳐를 위한 컨트롤 아키텍쳐를 포함한 전체 아키텍쳐가 상기 FPGA 내 배치되는 위치를 결정하는 FPGA 설계부를 포함하는 것을 특징으로 하는
    딥러닝 알고리즘을 위한 FPGA 설계 시스템.
  8. 제 7항에 있어서,
    상기 콘볼루션 연산은 3*3 곱셈 연산을 수행하고,
    상기 덧셈 연산은 상기 콘볼루션 연산의 결과 값의 합산을 수행하고,
    상기 풀링 연산은 상기 합산된 값들 중 가장 큰 값을 추출하고,
    상기 활성화 연산은 상기 추출된 값에 비선형 특성을 부가하는 것을 특징으로 하는,
    딥러닝 알고리즘을 위한 FPGA 설계 시스템.
  9. 제 7항에 있어서,
    상기 FPGA 설계부는,
    상기 FPGA의 전체 자원 크기 및 각 블록 별 자원 크기를 산출하는 자원 크기 산출부;
    상기 산출된 자원 크기에 기초하여, 하나의 모듈 아키텍쳐를 위한 블록 형태 및 블록 개수를 결정하는 모듈 블록 결정부; 및
    상기 결정된 하나의 모듈 아키텍쳐를 위한 블록 형태 및 블록 개수에 기초하여, 상기 FPGA의 전체 구조에 상기 하나 이상의 모듈 아키텍쳐 및 상기 하나 이상의 모듈 아키텍쳐를 위한 컨트롤 아키텍쳐를 포함한 상기 전체 아키텍처가 상기 FPGA 내 배치되는 위치를 결정하는 블록 배치부를 포함하는 것을 특징으로 하는,
    딥러닝 알고리즘을 위한 FPGA 설계 시스템.
  10. 컴퓨터와 결합하여, 제1 항 내지 제 6 항 중 어느 하나의 항의 딥러닝 알고리즘을 위한 FPGA (field programmable gate array) 설계 방법을 실행시키기 위하여 컴퓨터 판독가능 기록매체에 저장된 컴퓨터 프로그램.
PCT/KR2020/018335 2020-12-14 2020-12-15 딥러닝 알고리즘을 위한 fpga 설계 방법 및 시스템 WO2022131389A1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR10-2020-0174243 2020-12-14
KR1020200174243A KR102268813B1 (ko) 2020-12-14 2020-12-14 딥러닝 알고리즘을 위한 fpga 설계 방법 및 시스템

Publications (1)

Publication Number Publication Date
WO2022131389A1 true WO2022131389A1 (ko) 2022-06-23

Family

ID=76628950

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/KR2020/018335 WO2022131389A1 (ko) 2020-12-14 2020-12-15 딥러닝 알고리즘을 위한 fpga 설계 방법 및 시스템

Country Status (2)

Country Link
KR (1) KR102268813B1 (ko)
WO (1) WO2022131389A1 (ko)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018132830A (ja) * 2017-02-13 2018-08-23 LeapMind株式会社 ニューラルネットワーク構築方法、ニューラルネットワーク装置及びニューラルネットワーク装置更新方法
US20190042529A1 (en) * 2018-09-28 2019-02-07 Intel Corporation Dynamic Deep Learning Processor Architecture
US20190244095A1 (en) * 2018-02-08 2019-08-08 Quanta Computer Inc. Deep learning fpga converter
KR20190098402A (ko) * 2018-02-14 2019-08-22 코가플렉스 주식회사 심층 신경망 시스템
US20200327454A1 (en) * 2020-06-26 2020-10-15 Intel Corporation Secured deployment of machine learning models

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180125843A (ko) 2017-05-16 2018-11-26 광운대학교 산학협력단 (국문)다양한 cnn 모델에 적용 가능한 하드웨어 분류기

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018132830A (ja) * 2017-02-13 2018-08-23 LeapMind株式会社 ニューラルネットワーク構築方法、ニューラルネットワーク装置及びニューラルネットワーク装置更新方法
US20190244095A1 (en) * 2018-02-08 2019-08-08 Quanta Computer Inc. Deep learning fpga converter
KR20190098402A (ko) * 2018-02-14 2019-08-22 코가플렉스 주식회사 심층 신경망 시스템
US20190042529A1 (en) * 2018-09-28 2019-02-07 Intel Corporation Dynamic Deep Learning Processor Architecture
US20200327454A1 (en) * 2020-06-26 2020-10-15 Intel Corporation Secured deployment of machine learning models

Also Published As

Publication number Publication date
KR102268813B1 (ko) 2021-06-25

Similar Documents

Publication Publication Date Title
Lin et al. Software vulnerability discovery via learning multi-domain knowledge bases
WO2018217019A1 (ko) 신경망 학습 기반의 변종 악성 코드를 탐지하기 위한 장치, 이를 위한 방법 및 이 방법을 수행하기 위한 프로그램이 기록된 컴퓨터 판독 가능한 기록매체
CN109740534A (zh) 图像处理方法、装置及处理设备
EP4116885A1 (en) Processing method for neural network model, and related device
US20230297846A1 (en) Neural network compression method, apparatus and device, and storage medium
WO2021132797A1 (ko) 반지도 학습 기반 단어 단위 감정 임베딩과 장단기 기억 모델을 이용한 대화 내에서 발화의 감정 분류 방법
CN110781919A (zh) 分类模型训练方法、分类方法、装置及设备
CN112420205A (zh) 实体识别模型生成方法、装置及计算机可读存储介质
CN112163670A (zh) 对抗攻击的检测方法、系统、设备、计算机可读存储介质
WO2022131389A1 (ko) 딥러닝 알고리즘을 위한 fpga 설계 방법 및 시스템
WO2018212584A2 (ko) 딥 뉴럴 네트워크를 이용하여 문장이 속하는 클래스를 분류하는 방법 및 장치
WO2019107625A1 (ko) 기계 번역 방법 및 이를 위한 장치
WO2022146080A1 (ko) 딥러닝 네트워크의 동적 양자화 정밀도 가변 알고리즘 및 방법
Zhang et al. Experimental evaluation of the performance of Gpipe parallelism
WO2022114368A1 (ko) 뉴로 심볼릭 기반 릴레이션 임베딩을 통한 지식완성 방법 및 장치
Singh et al. Fpga implementation of a trained neural network
WO2022181988A1 (ko) Cnn 기반의 자동 라벨 마스크 교정 방법 및 이를 이용한 시스템
WO2020101121A1 (ko) 딥러닝 기반의 영상분석 방법, 시스템 및 휴대 단말
WO2022191520A1 (ko) 시계열 데이터의 이상 구간 탐지 방법 및 탐지 장치
Guo et al. Hardware accelerator for adversarial attacks on deep learning neural networks
WO2022163996A1 (ko) 자기주의 기반 심층 신경망 모델을 이용한 약물-표적 상호작용 예측 장치 및 그 방법
WO2021054512A1 (ko) 지식 베이스 보강을 위한 시스템 및 방법
CN112733941A (zh) 基于保壳性的医疗用途神经网络鲁棒性验证方法及系统
WO2020175729A1 (ko) 가우시안 특징점맵과 회귀 기법을 이용한 얼굴 특징점 검출 장치 및 방법
WO2024135870A1 (ko) 효율적인 객체 감지를 위한 입력 단위 네트워크 양자화 방법을 수행하는 영상인식장치

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 20966043

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

32PN Ep: public notification in the ep bulletin as address of the adressee cannot be established

Free format text: NOTING OF LOSS OF RIGHTS PURSUANT TO RULE 112(1) EPC (EPO FORM 1205A DATED 18.10.2023)

122 Ep: pct application non-entry in european phase

Ref document number: 20966043

Country of ref document: EP

Kind code of ref document: A1