WO2021220422A1 - グループ化畳み込み処理定義変更装置、グループ化畳み込み処理定義変更方法およびグループ化畳み込み処理定義変更プログラム - Google Patents
グループ化畳み込み処理定義変更装置、グループ化畳み込み処理定義変更方法およびグループ化畳み込み処理定義変更プログラム Download PDFInfo
- Publication number
- WO2021220422A1 WO2021220422A1 PCT/JP2020/018168 JP2020018168W WO2021220422A1 WO 2021220422 A1 WO2021220422 A1 WO 2021220422A1 JP 2020018168 W JP2020018168 W JP 2020018168W WO 2021220422 A1 WO2021220422 A1 WO 2021220422A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- weight matrix
- convolution
- grouping
- calculation
- divided
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/0464—Convolutional networks [CNN, ConvNet]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
Definitions
- the present invention relates to a grouping convolution processing definition changing device, a grouping convolution processing definition changing method, and a grouping convolution processing definition changing program.
- a convolutional neural network is a feed-forward type neural network that has a structure in which two types of layers, a convolutional layer and a pooling layer, are alternately stacked.
- CNN convolutional neural network
- FIG. 8 is an explanatory diagram showing an example of a convolutional neural network.
- the first convolutional layer, the first pooling layer, the second convolutional layer, and the second pooling layer are alternately stacked.
- C 1 and C 2 shown in FIG. 8 represent the calculation of convolution, respectively.
- the convolution calculation C 1 is executed for the input image input to the first convolution layer.
- the image is an example of the input data.
- the data input to CNN may be data other than images.
- P 1 and P 2 shown in FIG. 8 represent the calculation of pooling, respectively.
- the pooling calculation P 1 is executed for the convolution calculation result input to the first pooling layer.
- F shown in FIG. 8 represents a fully connected network.
- the fully connected network F has the function of a fully connected layer that connects all the nodes of the second pooling layer and the nodes of the output layer. Finally, the output of CNN is obtained from the output layer.
- FIG. 9 is an explanatory diagram showing an example of calculation of convolution in CNN.
- the example of the convolution calculation shown in FIG. 9 corresponds to the convolution calculation C 1 shown in FIG.
- the input image shown in FIG. 9 is an image input to the CNN.
- the input image shown in FIG. 9 is configured by arranging channels 1 to C in (C in is an integer of 2 or more) in order. That is, C in means the number of input channels. Further, as shown in FIG. 9, the vertical size of the image constituting the input image is H, and the horizontal size is W.
- the kernel size is "1 x 1".
- the content of the following description is the same even if the kernel size is a size other than "1x1" (for example, "3x3" or "5x5").
- the calculation of convolution shown in FIG. 9 corresponds to multiplication between matrices. That is, in the convolution calculation shown in FIG. 9, the weight W, the input X, and the output Y 0 are each treated as a matrix.
- the "weight” in the present specification is, to be exact, a “weight matrix”, but for the sake of simplicity, it is also simply referred to as a "weight”.
- the CNNs shown in FIGS. 8 to 9 are trained models. That is, the weight W shown in FIG. 9 is also a weight obtained by executing learning in advance.
- Non-Patent Document 1 describes a description of grouping convolution.
- the calculation of grouped convolution has advantages such as smaller calculation amount and higher accuracy than the calculation of normal convolution.
- AI chip which is a semiconductor integrated circuit specialized in AI (Artificial Intelligence) processing, executes grouping convolution calculations, the calculation speed may decrease.
- Non-Patent Document 1 does not describe a method that does not reduce the calculation speed of grouping convolution.
- an object of the present invention is to provide a grouping convolution processing definition changing device, a grouping convolution processing definition changing method, and a grouping convolution processing definition changing program that can increase the calculation speed of grouping convolution.
- the grouping convolutional processing definition change device is composed of the first channel to the Nth channel (N is an integer of 2 or more) arranged in order, and the input data is G (G is 2 or more) in the channel direction.
- Change means to change from G to g (g is an integer of G excluding G) and ⁇ (j-1) ⁇ N / g + 1 ⁇ channel ⁇ (j) divided after the number to be divided is changed.
- the generation means creates a new j-th weight matrix from the upper left to the lower right of the new j-th weight matrix from the ⁇ (j-1) ⁇ G / g + 1 ⁇ weight matrix to the (j ⁇ G /).
- the weight matrix is arranged in order on the diagonal line and generated by setting all the values of the components other than the component at the place where the weight matrix is arranged to 0.
- the grouping convolutional processing definition change method is composed of the first channel to the Nth channel (N is an integer of 2 or more) arranged in order, and the input data is G (G is 2 or more) in the channel direction.
- Weight matrix ⁇ (j ⁇ G / g) Generated by arranging weight matrices in order diagonally and setting all the values of components other than the components where the weight matrix is arranged to 0. It is characterized by letting it.
- the calculation speed of grouping convolution can be increased.
- FIG. 5 is an explanatory diagram showing another example of calculation of grouping convolution whose definition has been changed by the grouping convolution processing definition change device 100.
- It is a flowchart which shows the operation of the grouping convolution process definition change processing by the grouping convolution process definition change apparatus 100 of this embodiment.
- It is explanatory drawing which shows the hardware configuration example of the grouping convolution processing definition change apparatus 100 by this invention.
- It is a block diagram which shows the outline of the grouping convolution processing definition change apparatus by this invention.
- FIG. 1 is an explanatory diagram showing an example of calculation of grouping convolution in CNN.
- the example of the calculation of the grouped convolution shown in FIG. 1 is an example when the grouped convolution is applied to the calculation of the convolution shown in FIG. Also, in this example, consider the case where the AI chip executes the calculation of grouping convolution.
- the number of groups is defined as "4". That is, the CNN used in the example shown in FIG. 1 is a pre-learned model in which it is defined in advance that the input X is divided into four groups in the channel direction and the convolution calculation is performed.
- the input X which is an image
- the data input to CNN may be data other than images.
- weights W a to W d with a vertical size of (C out / 4) and a horizontal size of (C in / 4) are prepared.
- AI chip for example, the weight W a, the image being composed of a first channel, second C in / 4 channels divided (the number of channels (C in / 4)) is multiplied by a.
- the AI chip obtains an image with the number of channels (C out / 4) as an output.
- the AI chip places the obtained image at the same position as the position of the 4-divided input X used for the calculation. After arranging each of the four images obtained, the AI chip combines the images.
- the AI chip obtains an output Y, which is an image with the number of channels C out , which corresponds to the calculation result of a normal convolution.
- the output Y obtained by the calculation of the grouping convolution shown in FIG. 1 is not equivalent to the output Y 0 obtained by the calculation of the convolution shown in FIG.
- the complexity of convolution is proportional to the size of the weights.
- the complexity of the convolution shown in FIG. 9 is proportional to the size of the weight W (C in ⁇ C out).
- the amount of calculation of the grouping convolution shown in FIG. 1 is proportional to ⁇ (C in / 4) ⁇ (C out / 4) ⁇ 4 ⁇ , which is the sum of the sizes of the weights W a to W d. That is, the calculation amount of the grouped convolution shown in FIG. 1 is 1/4 of the calculation amount of the convolution shown in FIG.
- the complexity of the grouping convolution shown in FIG. 1 is ⁇ (C in /). It is proportional to G) ⁇ (C out / G) ⁇ G ⁇ . That is, the calculation amount of the grouped convolution shown in FIG. 1 is 1 / G of the calculation amount of the convolution shown in FIG.
- the amount of calculation is 1 / G, so the calculation speed of grouped convolution is expected to be G times the calculation speed of normal convolution.
- many AI chips are not suitable for grouped convolution because they are optimized for normal convolution.
- the calculation process for grouping convolution may be implemented as the calculation process for multiple convolutions. Therefore, the AI chip on which the calculation process of multiple convolutions is implemented is affected by the overhead of calling the calculation of convolution G times when performing the calculation of grouped convolutions. When the AI chip is affected by the overhead G times, the calculation speed of the grouping convolution slows down.
- the number of channels of the image to be calculated at one time becomes small ((C in / 4) shown in FIG. 1 etc.). Therefore, it is highly possible that the number of image channels, which is the number of convolution calculation processes that can be executed at the same time, does not reach the maximum number of processes that can be processed in parallel by the AI chip.
- the AI chip can only process up to 8 processes in parallel. That is, the decrease in the degree of parallelism of processing is also one of the factors that decrease the calculation speed of grouping convolution.
- FIG. 2 is a block diagram showing a configuration example of the grouping convolution processing definition changing device according to the embodiment of the present invention.
- the grouping convolutional processing definition change device 100 shown in FIG. 2 is communicably connected to the CNN model storage unit 200 before the change and the CNN model storage unit 300 after the change.
- the pre-change CNN model storage unit 200 stores the trained CNN model described above, including the weights W a to W d shown in FIG.
- the trained CNN model stored in the pre-change CNN model storage unit 200 is a model trained after grouping convolution is defined.
- the changed CNN model storage unit 300 stores the trained CNN model stored in the pre-change CNN model storage unit 200 whose definition has been changed by the grouping convolutional processing definition change device 100.
- the AI chip 400 is communicably connected to the CNN model storage unit 300 after the change.
- the AI chip 400 is a chip that calculates convolution using a trained CNN model stored in the modified CNN model storage unit 300.
- the grouping convolution processing definition change device 100 includes an acquisition unit 110, a definition change unit 120, a weight change unit 130, and a storage unit 140.
- the acquisition unit 110 acquires a model of the CNN that has been learned from the pre-change CNN model storage unit 200, including the weights W a to W d shown in FIG.
- the grouping convolution processing definition changing device 100 of the present embodiment is characterized in that each group in the calculation of grouping convolution is regrouped.
- a method of solving the problem by the grouping convolution processing definition changing device 100 will be described.
- FIG. 3 is an explanatory diagram showing an example of calculation of grouping convolution whose definition has been changed by the grouping convolution processing definition changing device 100.
- the kernel size is "1 x 1".
- the content of this embodiment is the same even if the kernel size is a size other than "1x1" (for example, "3x3" or "5x5").
- the definition change unit 120 changes the number of groups defined in the trained CNN model stored in the pre-change CNN model storage unit 200 from "4" to "1". doing. With the change in the number of groups, the weight changing unit 130 prepares only one weight W 1.
- the weight changing unit 130 arranges the weights W a to W d shown in FIG. 1 diagonally in the order of weights W a to W d from the upper left to the lower right of the weight W 1. .. Next, the weight changing unit 130 generates the weight W 1 by setting all the values of the components other than the components at the locations where the weights W a to W d are arranged to 0.
- the weight W 1 has a vertical size of C out and a horizontal size of C in . Further, the place where "(0)" shown in FIG. 3 is described is a place where the value of the component is 0 (the same applies to other figures).
- the storage unit 140 of the grouping convolution processing definition change device 100 changes the model of the learned CNN whose definition has been changed by the definition change unit 120, including the weight W 1 generated by the weight change unit 130, and then changes the CNN model. It is stored in the storage unit 300.
- the AI chip 400 performs the calculation of multiplying the weight W 1 and the input X only once. By performing the calculation only once, the AI chip 400 obtains the output Y.
- the number of times the AI chip 400 is affected by the overhead is the minimum (1 time).
- the AI chip 400 also performs operations on many weight components having a value of 0. That is, it is highly possible that the convolution calculation shown in FIG. 3 is not a calculation in which the influence of overhead and the load of matrix calculation are balanced.
- FIG. 4 is an explanatory diagram showing another example of the calculation of the grouping convolution whose definition has been changed by the grouping convolution processing definition change device 100.
- the definition change unit 120 sets the number of groups defined in the trained CNN model stored in the pre-change CNN model storage unit 200 from “4” to “2”. It has been changed to. As the number of groups is changed, the weight changing unit 130 prepares weights W 2 to W 3.
- the definition change unit 120 of this embodiment changes the number of groups defined in the trained CNN model to a divisor of the number of groups.
- "2" is a divisor of "4".
- the weight changing unit 130 As shown in FIG. 4, the weight changing unit 130, a weight W a ⁇ weight W b as shown in FIG. 1 toward the lower right from the upper left of the weight W 2, arranged in the order of the weight W a ⁇ weight W b diagonally ..
- the weight changing unit 130 generates the weight W 2 by setting all the values of the components other than the components at the locations where the weights W a to W b are arranged to 0.
- the weight changing unit 130 arranges the weights W c to the weight W d shown in FIG. 1 diagonally in the order of the weights W c to the weight W d from the upper left to the lower right of the weight W 3.
- the weight changing unit 130 generates the weight W 3 by setting all the values of the components other than the components at the locations where the weights W c to W d are arranged to 0.
- the weights W 2 to W 3 have a vertical size of (C out / 2) and a horizontal size of (C in / 2).
- the weight changing unit 130 divides the weight W 1 having a size (C in ⁇ C out ) shown in FIG. 3 into four weights having a size (C in / 2) ⁇ (C out / 2). Then, the weights including the non-zero component among the four divided weights may be generated as the weights W 2 to W 3.
- the storage unit 140 of the grouping convolution processing definition change device 100 includes a model of the trained CNN whose definition has been changed by the definition change unit 120, including the weights W 2 to W 3 generated by the weight change unit 130. After the change, it is stored in the CNN model storage unit 300.
- the AI chip 400 obtains an image having the number of channels (C out / 2) as an output.
- the AI chip 400 obtains two images having the number of channels (C out / 2). The AI chip 400 then places the obtained image at the same position as the two-divided input X used in the calculation.
- the AI chip 400 After arranging the two obtained images respectively, the AI chip 400 combines the images. By combining, the AI chip 400 obtains an output Y.
- the weight changing unit 130 arranges the weight W a and the weight W b diagonally from the upper left to the lower right of the weight W 2 corresponding to the new first weight matrix. Next, the weight changing unit 130 generates the weight W 2 by setting all the values of the components other than the component at the place where the weight is arranged to 0.
- the weight changing unit 130 arranges the weights W c and the weights W d diagonally from the upper left to the lower right of the weights W 3 corresponding to the new second weight matrix. Next, the weight changing unit 130 generates the weight W 3 by setting all the values of the components other than the component at the place where the weight is arranged to 0.
- the number of times the AI chip 400 performs the calculation on the component of the weight having a value of 0 is smaller than the calculation of the convolution shown in FIG. That is, the calculation of the grouping convolution shown in FIG. 4 is likely to be a calculation in which the influence of the overhead and the load of the matrix operation are balanced.
- the grouping convolution processing definition change device 100 of the present embodiment is configured such that the first channel to the Nth channel (N is an integer of 2 or more) are arranged in order, and the input data is in the channel direction. Handles a trained convolutional neural network with defined convolutions that are divided into G (G is an integer of 2 or more).
- G is an integer of 2 or more.
- the definition change unit 120 changes the number of input data to be divided from G to g (g is a divisor of G excluding G).
- the weight changing unit 130 is divided into ⁇ (j-1) ⁇ N / g + 1 ⁇ channels to (j ⁇ N / g) channels after the number of divisions is changed.
- the weight changing unit 130 applies a new j-th weight matrix from the upper left to the lower right of the new j-th weight matrix to the ⁇ (j-1) ⁇ G / g + 1 ⁇ weight matrix to the (j) th (j).
- ⁇ G / g) It is generated by arranging the weight matrix in order on the diagonal line and setting all the values of the components other than the component at the place where the weight matrix is arranged to 0.
- the optimum value of g depends on the AI chip 400. Therefore, the grouping convolution processing definition change device 100 generates a new weight matrix for all divisors of G except G, and the performance of the AI chip 400 when each weight matrix is used is measured and each is measured. It is preferable that the optimum value of g is determined based on the measurement result.
- the definition change unit 120 may change the number of divided data input from G to 1. Further, the definition changing unit 120 may change the optimum value of g for each of a plurality of convolution layers constituting the CNN.
- FIG. 5 is a flowchart showing the operation of the grouping convolution process definition change process by the grouping convolution process definition change device 100 of the present embodiment.
- the acquisition unit 110 of the grouping convolution processing definition change device 100 acquires the trained CNN model from the pre-change CNN model storage unit 200 (step S101).
- the definition change unit 120 changes the number of groups G defined in the acquired model of the learned CNN to a new number of groups g (step S102).
- g is a divisor of G excluding G.
- the weight changing unit 130 generates a new weight from the weight used in the acquired trained CNN model based on the changed g (step S103).
- the weight generation method by the weight changing unit 130 is as described above. For example, when the number of groups G is changed to the number of groups g, the weight changing unit 130 generates a total of g weights. Further, the vertical and horizontal sizes of the weights generated by the weight changing unit 130 are G / g times the vertical and horizontal sizes of the acquired weights.
- the storage unit 140 stores the trained CNN model whose definition has been changed by the definition change unit 120, including the weight generated by the weight change unit 130, in the changed CNN model storage unit 300 (step). S104). After storing, the grouping convolution process definition change device 100 ends the grouping convolution process definition change process.
- the definition changing unit 120 and the weight changing unit 130 speed up the calculation of the grouping convolution by replacing the grouping convolution processing with a processing suitable for the AI chip 400. do.
- the grouping convolution process is replaced with a process that is less affected by overhead and has a high degree of parallelism, which the AI chip 400 is good at, although the amount of calculation increases. Therefore, when the grouping convolution processing definition changing device 100 of the present embodiment is used, the calculation of the grouping convolution is speeded up even though the amount of calculation increases.
- FIG. 6 is an explanatory diagram showing a hardware configuration example of the grouping convolution processing definition changing device 100 according to the present invention.
- the grouping convolution processing definition changing device 100 shown in FIG. 6 includes a CPU (Central Processing Unit) 11, a main storage unit 12, a communication unit 13, and an auxiliary storage unit 14.
- a CPU Central Processing Unit
- main storage unit 12 main storage unit
- communication unit 13 main storage unit
- auxiliary storage unit 14 auxiliary storage unit 14
- an input unit 15 for the user to operate and an output unit 16 for presenting the processing result or the progress of the processing content to the user are provided.
- the grouping convolution processing definition change device 100 is realized by software by executing a program in which the CPU 11 shown in FIG. 6 provides the functions of each component.
- each function is realized by software by the CPU 11 loading the program stored in the auxiliary storage unit 14 into the main storage unit 12 and executing the program to control the operation of the grouping convolution processing definition changing device 100. NS.
- the grouping convolution processing definition changing device 100 shown in FIG. 6 may include a DSP (Digital Signal Processor) instead of the CPU 11.
- the grouping convolution processing definition changing device 100 shown in FIG. 6 may include the CPU 11 and the DSP together.
- the main storage unit 12 is used as a data work area or a data temporary save area.
- the main storage unit 12 is, for example, a RAM (Random Access Memory).
- the communication unit 13 has a function of inputting and outputting data to and from peripheral devices via a wired network or a wireless network (information communication network).
- the auxiliary storage unit 14 is a non-temporary tangible storage medium.
- non-temporary tangible storage media include magnetic disks, opto-magnetic disks, CD-ROMs (CompactDiskReadOnlyMemory), DVD-ROMs (DigitalVersatileDiskReadOnlyMemory), and semiconductor memories.
- the input unit 15 has a function of inputting data and processing instructions.
- the input unit 15 is an input device such as a keyboard or a mouse.
- the output unit 16 has a function of outputting data.
- the output unit 16 is, for example, a display device such as a liquid crystal display device or a printing device such as a printer.
- each component is connected to the system bus 17.
- the auxiliary storage unit 14 stores a program for realizing the acquisition unit 110, the definition change unit 120, the weight change unit 130, and the storage unit 140 in the grouping convolution processing definition change device 100 of the present embodiment.
- the grouping convolution processing definition changing device 100 may be equipped with a circuit including hardware components such as an LSI (Large Scale Integration) that realizes the functions shown in FIG. 2 inside, for example.
- LSI Large Scale Integration
- the grouping convolution processing definition changing device 100 may be realized by hardware that does not include a computer function that uses elements such as a CPU.
- a part or all of each component may be realized by a general-purpose circuit (circuitry), a dedicated circuit, a processor, or a combination thereof. These may be composed of a single chip (for example, the above LSI) or may be composed of a plurality of chips connected via a bus.
- a part or all of each component may be realized by a combination of the above-mentioned circuit or the like and a program.
- the plurality of information processing devices and circuits may be centrally arranged or distributed.
- the information processing device, the circuit, and the like may be realized as a form in which each is connected via a communication network, such as a client-and-server system and a cloud computing system.
- FIG. 7 is a block diagram showing an outline of the grouping convolution processing definition changing device according to the present invention.
- the grouping convolutional processing definition changing device 20 according to the present invention is configured such that the first channel to the Nth channel (N is an integer of 2 or more) are arranged in order, and the input data is G (G is 2) in the channel direction.
- G is 2 in the channel direction.
- For data that is divided into (the above integers) and is composed of ⁇ (i -1) x N / G + 1 ⁇ channels to (i x N / G) channels (i 1 to G).
- (j-1) ⁇ G / g + 1 ⁇ Weight matrix ⁇ (j ⁇ G / g)
- the weight matrix is arranged diagonally, and all the values of the components other than the component where the weight matrix is arranged are set to 0. Generated by setting.
- the grouping convolution processing definition change device can increase the calculation speed of the grouping convolution.
- the changing means 21 may change the number of divided data input from G to 1.
- the grouping convolution processing definition change device can minimize the influence of overhead.
- the changing means 21 may change the number of divisions of the input data for each of a plurality of convolutional layers constituting the learned convolutional neural network.
- the grouping convolution processing definition change device can change the definition of grouping convolution for each convolution layer.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Life Sciences & Earth Sciences (AREA)
- Molecular Biology (AREA)
- Artificial Intelligence (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Complex Calculations (AREA)
- Image Analysis (AREA)
Abstract
グループ化畳み込み処理定義変更装置20は、第1チャネル~第N チャネル(N は2以上の整数)が順に並べられて構成されている入力されたデータがチャネル方向にG (G は2以上の整数)個に分割され、分割された{(i -1)×N/G +1}チャネル~(i×N/G)チャネル(i=1~G)で構成されているデータに対して第i 重み行列が使用されて畳み込みの計算がi =1からi =G に渡ってそれぞれ実行されるグループ化畳み込みが定義された学習済みの畳み込みニューラルネットワークに関して、入力されたデータが分割される数をG からg (g は、G を除くG の約数)に変更する変更手段21と、分割される数が変更された後に分割された{(j -1)×N/g +1}チャネル~(j×N/g)チャネル(j=1~g)で構成されているデータの畳み込みの計算で使用される新たな第j 重み行列を、j =1からj =g に渡ってそれぞれ生成する生成手段22とを備え、生成手段22は、新たな第j 重み行列を、新たな第j 重み行列の左上から右下にかけて第{(j -1)×G/g +1}重み行列~第(j×G/g)重み行列を対角線上に順に配置し、重み行列が配置された箇所の成分以外の成分の値を全て0に設定することによって生成する。
Description
本発明は、グループ化畳み込み処理定義変更装置、グループ化畳み込み処理定義変更方法およびグループ化畳み込み処理定義変更プログラムに関する。
畳み込みニューラルネットワーク(convolutional neural network; CNN) は、畳み込み層とプーリング層の2種類の層が交互に積み重ねられた構造を持つフィードフォーワード型のニューラルネットワークである。以下、畳み込みニューラルネットワークを単にCNN とも呼ぶ。
図8は、畳み込みニューラルネットワークの例を示す説明図である。図8に示すCNN では、第1畳み込み層、第1プーリング層、第2畳み込み層、第2プーリング層が交互に積み重ねられている。
また、図8に示すC1、C2はそれぞれ、畳み込みの計算を表す。例えば、第1畳み込み層に入力される入力画像に対して、畳み込みの計算C1が実行される。
なお、画像は、入力されるデータの一例である。CNN に入力されるデータは、画像以外のデータであってもよい。
また、図8に示すP1、P2はそれぞれ、プーリングの計算を表す。例えば、第1プーリング層に入力される畳み込みの計算結果に対して、プーリングの計算P1が実行される。
また、図8に示すF は、全結合ネットワークを表す。全結合ネットワークF は、第2プーリング層のノードと出力層のノードを全て結合する全結合層の機能を有する。最終的に、出力層からCNN の出力が得られる。
以下、CNN における畳み込みの計算を具体的に説明する。図9は、CNN における畳み込みの計算の例を示す説明図である。なお、図9に示す畳み込みの計算の例は、図8に示す畳み込みの計算C1に相当する。
図9に示す入力画像は、CNN に入力される画像である。図9に示す入力画像は、第1チャネル~第Cin チャネル(Cin は2以上の整数)が順に並べられて構成されている。すなわち、Cin は、入力チャネル数を意味する。また、図9に示すように、入力画像を構成する画像の縦のサイズはH 、横のサイズはW である。
説明を簡便にするため、畳み込みの計算の対象である入力X として、図9に示す格子模様が記された縦のサイズが1、横のサイズが1、チャネル数がCin の画像を考える。図9の下段には、高さ方向から見た場合の入力X が記載されている。また、図9に示す入力X の左の符号は、チャネルの識別番号である(他の図においても同様)。
すなわち、図9に示す畳み込みの計算の例において、カーネルサイズは「1×1」である。しかし、以下の説明の内容は、カーネルサイズが「1×1」以外のサイズ(例えば、「3×3」や「5×5」)であっても同様である。
図9に示す畳み込みの計算では、縦のサイズがCout、横のサイズがCin の重みW と、入力X とが掛け合わされる。掛け合わされた結果、チャネル数がCoutの画像である出力Y0が得られる。すなわち、Coutは、出力チャネル数を意味する。
なお、図9に示す畳み込みの計算は、行列同士の乗算に相当する。すなわち、図9に示す畳み込みの計算では、重みW 、入力X 、出力Y0はそれぞれ、行列として扱われる。本明細書における「重み」は、正確には「重み行列」であるが、簡便のため単に「重み」とも呼ぶ。
また、図8~図9に示すCNN は、学習済みモデルである。すなわち、図9に示す重みW も、事前に学習が実行されることによって得られた重みである。
上記の畳み込みの計算の方法として、グループ化畳み込みを使用するCNN が増加している。例えば、非特許文献1には、グループ化畳み込みの説明が記載されている。
S. Xie, R. Girshick, P. Dollar, Z. Tu, and K. He, "Aggregatedresidual transformations for deep neural networks," in Computer Vision and Pattern Recognition, 2017.
グループ化畳み込みの計算には、通常の畳み込みの計算に比べて演算量が小さい、精度が高い等の利点がある。しかし、AI(Artificial Intelligence) 処理に特化した半導体集積回路であるAIチップがグループ化畳み込みの計算を実行すると、計算速度が低下する場合がある。
グループ化畳み込みとAIチップのどちらも利用の増加が予測されるため、AIチップがグループ化畳み込みの計算を実行しても、計算速度が低下しない方法が求められている。非特許文献1には、グループ化畳み込みの計算速度が低下しない方法が記載されていない。
そこで、本発明は、グループ化畳み込みの計算速度を高めることができるグループ化畳み込み処理定義変更装置、グループ化畳み込み処理定義変更方法およびグループ化畳み込み処理定義変更プログラムを提供することを目的とする。
本発明によるグループ化畳み込み処理定義変更装置は、第1チャネル~第N チャネル(N は2以上の整数)が順に並べられて構成されている入力されたデータがチャネル方向にG (G は2以上の整数)個に分割され、分割された{(i -1)×N/G +1}チャネル~(i×N/G)チャネル(i=1~G)で構成されているデータに対して第i 重み行列が使用されて畳み込みの計算がi =1からi =G に渡ってそれぞれ実行されるグループ化畳み込みが定義された学習済みの畳み込みニューラルネットワークに関して、入力されたデータが分割される数をG からg (g は、G を除くG の約数)に変更する変更手段と、分割される数が変更された後に分割された{(j -1)×N/g +1}チャネル~(j×N/g)チャネル(j=1~g)で構成されているデータの畳み込みの計算で使用される新たな第j 重み行列を、j =1からj =g に渡ってそれぞれ生成する生成手段とを備え、生成手段は、新たな第j 重み行列を、新たな第j 重み行列の左上から右下にかけて第{(j -1)×G/g +1}重み行列~第(j×G/g)重み行列を対角線上に順に配置し、重み行列が配置された箇所の成分以外の成分の値を全て0に設定することによって生成することを特徴とする。
本発明によるグループ化畳み込み処理定義変更方法は、第1チャネル~第N チャネル(N は2以上の整数)が順に並べられて構成されている入力されたデータがチャネル方向にG (G は2以上の整数)個に分割され、分割された{(i -1)×N/G +1}チャネル~(i×N/G)チャネル(i=1~G)で構成されているデータに対して第i 重み行列が使用されて畳み込みの計算がi =1からi =G に渡ってそれぞれ実行されるグループ化畳み込みが定義された学習済みの畳み込みニューラルネットワークに関して、入力されたデータが分割される数をG からg (g は、G を除くG の約数)に変更し、分割される数が変更された後に分割された{(j -1)×N/g +1}チャネル~(j×N/g)チャネル(j=1~g)で構成されているデータの畳み込みの計算で使用される新たな第j 重み行列を、j =1からj =g に渡ってそれぞれ生成し、新たな第j 重み行列を、新たな第j 重み行列の左上から右下にかけて第{(j -1)×G/g +1}重み行列~第(j×G/g)重み行列を対角線上に順に配置し、重み行列が配置された箇所の成分以外の成分の値を全て0に設定することによって生成することを特徴とする。
本発明によるグループ化畳み込み処理定義変更プログラムは、コンピュータに、第1チャネル~第N チャネル(N は2以上の整数)が順に並べられて構成されている入力されたデータがチャネル方向にG (G は2以上の整数)個に分割され、分割された{(i -1)×N/G +1}チャネル~(i×N/G)チャネル(i=1~G)で構成されているデータに対して第i 重み行列が使用されて畳み込みの計算がi =1からi =G に渡ってそれぞれ実行されるグループ化畳み込みが定義された学習済みの畳み込みニューラルネットワークに関して、入力されたデータが分割される数をG からg (g は、G を除くG の約数)に変更する変更処理、および分割される数が変更された後に分割された{(j -1)×N/g +1}チャネル~(j×N/g)チャネル(j=1~g)で構成されているデータの畳み込みの計算で使用される新たな第j 重み行列を、j =1からj =g に渡ってそれぞれ生成する生成処理を実行させるためのグループ化畳み込み処理定義変更プログラムであって、生成処理で、新たな第j 重み行列を、新たな第j 重み行列の左上から右下にかけて第{(j -1)×G/g +1}重み行列~第(j×G/g)重み行列を対角線上に順に配置し、重み行列が配置された箇所の成分以外の成分の値を全て0に設定することによって生成させることを特徴とする。
本発明によれば、グループ化畳み込みの計算速度を高めることができる。
最初に、CNN におけるグループ化畳み込みの計算を具体的に説明する。図1は、CNN におけるグループ化畳み込みの計算の例を示す説明図である。
なお、図1に示すグループ化畳み込みの計算の例は、図9に示す畳み込みの計算にグループ化畳み込みが適用された場合の例である。また、本例ではAIチップがグループ化畳み込みの計算を実行する場合を考える。
図1に示すグループ化畳み込みの計算の例では、グループ数が「4」に定義されている。すなわち、図1に示す例で使用されるCNN は、入力X をチャネル方向に4つのグループに分けて畳み込みの計算を行うことが予め定義された上で事前に学習されたモデルである。
なお、画像である入力X は、入力されるデータの一例である。CNN に入力されるデータは、画像以外のデータであってもよい。
よって、図1に示すように、グループ化畳み込みの計算では、縦のサイズが(Cout/4)、横のサイズが(Cin/4) の重みWa~重みWdが用意される。AIチップは、例えば重みWaと、分割された第1チャネル~第Cin/4 チャネルで構成されている画像(チャネル数が(Cin/4) )とを掛け合わせる。掛け合わせた結果、AIチップは、チャネル数が(Cout/4)の画像を出力として得る。
図1に示すように、AIチップは、上記の計算を重みWb~重みWdに対してもそれぞれ行う。すなわち、AIチップは、入力X をチャネル方向に4個に分割し、分割された第{(i -1)×Cin/4 +1}チャネル~第(i×Cin/4)チャネル(i=1~4) で構成されている画像に対して第i 重み行列を使用して、畳み込みの計算をi =1からi =4に渡ってそれぞれ実行する。なお、第1重み行列~第4重み行列はそれぞれ、重みWa~重みWdに対応する。各計算の結果、AIチップは、チャネル数が(Cout/4)の画像を4つ得る。
最後に、AIチップは、計算に使用された4分割された入力X の位置と同じ位置に、得られた画像を配置する。得られた4つの画像をそれぞれ配置した後、AIチップは、各画像を結合する。
結合することによって、AIチップは、通常の畳み込みの計算結果に相当するチャネル数がCoutの画像である出力Y を得る。なお、図1に示すグループ化畳み込みの計算で得られる出力Y は、図9に示す畳み込みの計算で得られる出力Y0と等価ではない。
畳み込みの計算量は、重みのサイズに比例する。例えば、図9に示す畳み込みの計算量は、重みW のサイズである(Cin×Cout) に比例する。また、図1に示すグループ化畳み込みの計算量は、重みWa~重みWdの各サイズの総和である{(Cin/4)×(Cout/4)×4}に比例する。すなわち、図1に示すグループ化畳み込みの計算量は、図9に示す畳み込みの計算量の1/4 になる。
一般的に、入力X がG (G は2以上の整数)個のグループに分けられてグループ化畳み込みの計算が行われる場合、図1に示すグループ化畳み込みの計算量は、{(Cin/G)×(Cout/G)×G}に比例する。すなわち、図1に示すグループ化畳み込みの計算量は、図9に示す畳み込みの計算量の1/G になる。
上記の理論によれば、計算量が1/G になるため、グループ化畳み込みの計算速度は、通常の畳み込みの計算速度のG 倍になることが予想される。しかし、AIチップには、通常の畳み込みに最適化されているため、グループ化畳み込みに適していないチップも多い。
グループ化畳み込みに適していないAIチップには、例えばグループ化畳み込みの計算処理が複数回の畳み込みの計算処理として実装される可能性がある。よって、複数回の畳み込みの計算処理が実装されたAIチップは、グループ化畳み込みの計算を行う場合、畳み込みの計算の呼び出しに掛かるオーバヘッドの影響をG 回受ける。AIチップがオーバヘッドの影響をG 回受けると、グループ化畳み込みの計算速度が低下する。
また、グループ化畳み込みの計算では、1回の計算対象の画像のチャネル数が小さくなる(図1に示す(Cin/4) 等)。よって、同時に実行可能な畳み込みの計算処理の数である画像のチャネル数が、AIチップが並列で処理可能な処理の最大数に到達しない可能性が高い。
例えば、最大で256個の処理を並列で処理可能なAIチップにチャネル数が8の画像が入力されても、AIチップは、最大で8個の処理しか並列で処理できない。すなわち、処理の並列度が小さくなることも、グループ化畳み込みの計算速度が低下する要因の1つである。
[構成の説明]
以下、上述した課題である、グループ化畳み込みの計算速度を高めることができる本発明の実施形態を図面を参照して説明する。図2は、本発明の実施形態のグループ化畳み込み処理定義変更装置の構成例を示すブロック図である。
以下、上述した課題である、グループ化畳み込みの計算速度を高めることができる本発明の実施形態を図面を参照して説明する。図2は、本発明の実施形態のグループ化畳み込み処理定義変更装置の構成例を示すブロック図である。
図2に示すグループ化畳み込み処理定義変更装置100は、変更前CNN モデル記憶部200と、変更後CNN モデル記憶部300と通信可能に接続されている。
変更前CNN モデル記憶部200には、図1に示す重みWa~重みWdを含め、上述した学習済みのCNN のモデルが記憶されている。変更前CNN モデル記憶部200に記憶されている学習済みのCNN のモデルは、グループ化畳み込みが定義された上で学習されたモデルである。
また、変更後CNN モデル記憶部300には、グループ化畳み込み処理定義変更装置100により定義が変更された、変更前CNN モデル記憶部200に記憶されている学習済みのCNN のモデルが格納される。
また、AIチップ400は、変更後CNN モデル記憶部300と通信可能に接続されている。AIチップ400は、変更後CNN モデル記憶部300に記憶されている学習済みのCNN のモデルを用いて、畳み込みの計算を行うチップである。
また、図2に示すように、グループ化畳み込み処理定義変更装置100は、取得部110と、定義変更部120と、重み変更部130と、格納部140とを備える。
取得部110は、図1に示す重みWa~重みWdを含め、変更前CNN モデル記憶部200から学習済みのCNN のモデルを取得する。
上述した課題を解決するために、本実施形態のグループ化畳み込み処理定義変更装置100は、グループ化畳み込みの計算における各グループを再度まとめることを特徴とする。以下、グループ化畳み込み処理定義変更装置100による課題の解決方法を説明する。
図3は、グループ化畳み込み処理定義変更装置100により定義が変更されたグループ化畳み込みの計算の例を示す説明図である。
なお、図3~図4に示す畳み込みの計算の例において、カーネルサイズは「1×1」である。しかし、本実施形態の内容は、カーネルサイズが「1×1」以外のサイズ(例えば、「3×3」や「5×5」)であっても同様である。
図3に示す畳み込みの計算では、定義変更部120が、変更前CNN モデル記憶部200に記憶されている学習済みのCNN のモデルに定義されているグループ数を「4」から「1」に変更している。グループ数の変更に伴い、重み変更部130が、1つの重みW1のみを用意している。
図3に示すように、重み変更部130は、重みW1の左上から右下にかけて図1に示す重みWa~重みWdを、対角線上に重みWa~重みWdの順で配置する。次いで、重み変更部130は、重みWa~重みWdが配置された箇所の成分以外の成分の値を全て0に設定することによって、重みW1を生成する。
図3に示すように、重みW1は、縦のサイズがCout、横のサイズがCin の重みになる。また、図3に示す「(0)」が記載された箇所は、成分の値が0である箇所である(他の図においても同様)。
グループ化畳み込み処理定義変更装置100の格納部140は、重み変更部130により生成された重みW1も含めて、定義変更部120により定義が変更された学習済みのCNN のモデルを変更後CNN モデル記憶部300に格納する。
よって、図3に示す畳み込みの計算では、AIチップ400が、重みW1と、入力X とを掛け合わせる計算を1回だけ行う。計算を1回だけ行うことによって、AIチップ400は、出力Y を得る。
図3に示す畳み込みの計算では、AIチップ400がオーバヘッドの影響を受ける回数は最少(1回)になる。ただし、値が0である多くの重みの成分に対しても、AIチップ400は、演算を行う。すなわち、図3に示す畳み込みの計算は、オーバヘッドの影響と行列演算の負荷とのバランスがとれた計算ではない可能性が高い。
図4は、グループ化畳み込み処理定義変更装置100により定義が変更されたグループ化畳み込みの計算の他の例を示す説明図である。
図4に示すグループ化畳み込みの計算では、定義変更部120が、変更前CNN モデル記憶部200に記憶されている学習済みのCNN のモデルに定義されているグループ数を「4」から「2」に変更している。グループ数の変更に伴い、重み変更部130が、重みW2~重みW3を用意している。
本実施形態の定義変更部120は、学習済みのCNN のモデルに定義されているグループ数を、グループ数の約数に変更する。図4に示す例であれば、「2」は「4」の約数である。
図4に示すように、重み変更部130は、重みW2の左上から右下にかけて図1に示す重みWa~重みWbを、対角線上に重みWa~重みWbの順で配置する。次いで、重み変更部130は、重みWa~重みWbが配置された箇所の成分以外の成分の値を全て0に設定することによって、重みW2を生成する。
また、重み変更部130は、重みW3の左上から右下にかけて図1に示す重みWc~重みWdを、対角線上に重みWc~重みWdの順で配置する。次いで、重み変更部130は、重みWc~重みWdが配置された箇所の成分以外の成分の値を全て0に設定することによって、重みW3を生成する。
図4に示すように、重みW2~重みW3は、縦のサイズが(Cout/2)、横のサイズが(Cin/2) の重みになる。なお、重み変更部130は、図3に示すサイズが(Cin×Cout) の重みW1を、サイズが(Cin/2) ×(Cout/2)である4個の重みに分割し、分割された4個の重みのうち非零の成分を含む重みを重みW2~重みW3として生成してもよい。
グループ化畳み込み処理定義変更装置100の格納部140は、重み変更部130により生成された重みW2~重みW3も含めて、定義変更部120により定義が変更された学習済みのCNN のモデルを変更後CNN モデル記憶部300に格納する。
よって、図4に示す畳み込みの計算では、AIチップ400が、例えば重みW2と、分割された第1チャネル~第Cin/2 チャネルで構成されている画像(チャネル数が(Cin/2) )とを掛け合わせる。掛け合わせた結果、AIチップ400は、チャネル数が(Cout/2)の画像を出力として得る。
AIチップ400は、上記の計算を重みW3に対しても行う。すなわち、AIチップ400は、入力X をチャネル方向に2個に分割し、分割された第{(j -1)×Cin/2 +1}チャネル~第(j×Cin/2)チャネル(j=1~2) で構成されている画像に対して新たな第j 重み行列を使用して、畳み込みの計算をj =1からj =2に渡ってそれぞれ実行する。なお、新たな第1重み行列~新たな第2重み行列はそれぞれ、重みW2~重みW3に対応する。
各計算の結果、AIチップ400は、チャネル数が(Cout/2)の画像を2つ得る。次いで、AIチップ400は、計算に使用された2分割された入力X の位置と同じ位置に得られた画像を配置する。
得られた2つの画像をそれぞれ配置した後、AIチップ400は、各画像を結合する。結合することによって、AIチップ400は、出力Y を得る。
すなわち、重み変更部130は、新たな第1重み行列に対応する重みW2の左上から右下にかけて重みWa、重みWbを対角線上に順に配置する。次いで、重み変更部130は、重みが配置された箇所の成分以外の成分の値を全て0に設定することによって、重みW2を生成する。
図1に示すグループ化畳み込みでは、重みWaは、第1(={(1 -1)×4/2 +1})重み行列に対応する。また、重みWbは、第2(=(1×4/2))重み行列に対応する。
また、重み変更部130は、新たな第2重み行列に対応する重みW3の左上から右下にかけて重みWc、重みWdを対角線上に順に配置する。次いで、重み変更部130は、重みが配置された箇所の成分以外の成分の値を全て0に設定することによって、重みW3を生成する。
図1に示すグループ化畳み込みでは、重みWcは、第3(={(2 -1)×4/2 +1})重み行列に対応する。また、重みWdは、第4(=(2×4/2))重み行列に対応する。
図4に示すグループ化畳み込みの計算では、AIチップ400がオーバヘッドの影響を受ける回数は、図1に示すグループ化畳み込みの計算での4回から2回に減る。
また、図4に示すグループ化畳み込みの計算では、図3に示す畳み込みの計算に比べて、値が0である重みの成分に対してAIチップ400が演算を行う回数も少なくなる。すなわち、図4に示すグループ化畳み込みの計算は、オーバヘッドの影響と行列演算の負荷とのバランスがとれた計算である可能性が高い。
以上のように、本実施形態のグループ化畳み込み処理定義変更装置100は、第1チャネル~第N チャネル(N は2以上の整数)が順に並べられて構成されている入力されたデータがチャネル方向にG (G は2以上の整数)個に分割されるグループ化畳み込みが定義された学習済みの畳み込みニューラルネットワークを扱う。グループ化畳み込みでは、分割された{(i -1)×N/G +1}チャネル~(i×N/G)チャネル(i=1~G)で構成されているデータに対して第i 重み行列が使用されて畳み込みの計算がi =1からi =G に渡ってそれぞれ実行される。
定義変更部120は、入力されたデータが分割される数をG からg (g は、G を除くG の約数)に変更する。G からg に変更された場合、重み変更部130は、分割される数が変更された後に分割された{(j -1)×N/g +1}チャネル~(j×N/g)チャネル(j=1~g)で構成されているデータの畳み込みの計算で使用される新たな第j 重み行列を、j =1からj =g に渡ってそれぞれ生成する。
具体的には、重み変更部130は、新たな第j 重み行列を、新たな第j 重み行列の左上から右下にかけて第{(j -1)×G/g +1}重み行列~第(j×G/g)重み行列を対角線上に順に配置し、重み行列が配置された箇所の成分以外の成分の値を全て0に設定することによって生成する。
なお、g の最適な値は、AIチップ400に依存する。よって、グループ化畳み込み処理定義変更装置100がG を除くG の約数全てに対して新たな重み行列を生成し、各重み行列が用いられた場合のAIチップ400の性能がそれぞれ計測され、各計測結果を基にg の最適な値が決定されることが好ましい。
また、定義変更部120は、入力されたデータが分割される数をG から1に変更してもよい。また、定義変更部120は、CNN を構成する複数の畳み込み層ごとに、g の最適な値を変更してもよい。
[動作の説明]
以下、本実施形態のグループ化畳み込み処理定義変更装置100の動作を図5を参照して説明する。図5は、本実施形態のグループ化畳み込み処理定義変更装置100によるグループ化畳み込み処理定義変更処理の動作を示すフローチャートである。
以下、本実施形態のグループ化畳み込み処理定義変更装置100の動作を図5を参照して説明する。図5は、本実施形態のグループ化畳み込み処理定義変更装置100によるグループ化畳み込み処理定義変更処理の動作を示すフローチャートである。
最初に、グループ化畳み込み処理定義変更装置100の取得部110が、変更前CNN モデル記憶部200から学習済みのCNN のモデルを取得する(ステップS101)。
次いで、定義変更部120は、取得された学習済みのCNN のモデルに定義されているグループ数G を、新たなグループ数g に変更する(ステップS102)。なお、g は、G を除くG の約数である。
次いで、重み変更部130は、変更されたg を基に、取得された学習済みのCNN のモデルで使用される重みから新たな重みを生成する(ステップS103)。
重み変更部130による重みの生成方法は、上述した通りである。例えば、グループ数G がグループ数g に変更された場合、重み変更部130は、全部でg 個の重みを生成する。また、重み変更部130が生成する重みの縦と横のサイズは、取得された重みの縦と横のサイズのG/g 倍になる。
次いで、格納部140は、変更後CNN モデル記憶部300に、重み変更部130により生成された重みも含めて、定義変更部120により定義が変更された学習済みのCNN のモデルを格納する(ステップS104)。格納した後、グループ化畳み込み処理定義変更装置100は、グループ化畳み込み処理定義変更処理を終了する。
[効果の説明]
本実施形態のグループ化畳み込み処理定義変更装置100は、定義変更部120および重み変更部130がグループ化畳み込みの処理をAIチップ400に適した処理に置き換えることによって、グループ化畳み込みの計算を高速化する。
本実施形態のグループ化畳み込み処理定義変更装置100は、定義変更部120および重み変更部130がグループ化畳み込みの処理をAIチップ400に適した処理に置き換えることによって、グループ化畳み込みの計算を高速化する。
具体的には、グループ化畳み込みの処理は、計算量が増えるものの、オーバヘッドの影響を受ける回数が少なく、かつAIチップ400が得意な並列度が高い処理に置き換えられる。従って、本実施形態のグループ化畳み込み処理定義変更装置100が使用されると、計算量が増えるにも関わらず、グループ化畳み込みの計算が高速化される。
以下、本実施形態のグループ化畳み込み処理定義変更装置100のハードウェア構成の具体例を説明する。図6は、本発明によるグループ化畳み込み処理定義変更装置100のハードウェア構成例を示す説明図である。
図6に示すグループ化畳み込み処理定義変更装置100は、CPU(Central Processing Unit )11と、主記憶部12と、通信部13と、補助記憶部14とを備える。また、ユーザが操作するための入力部15や、ユーザに処理結果または処理内容の経過を提示するための出力部16を備える。
グループ化畳み込み処理定義変更装置100は、図6に示すCPU11が各構成要素が有する機能を提供するプログラムを実行することによって、ソフトウェアにより実現される。
すなわち、CPU11が補助記憶部14に格納されているプログラムを、主記憶部12にロードして実行し、グループ化畳み込み処理定義変更装置100の動作を制御することによって、各機能がソフトウェアにより実現される。
なお、図6に示すグループ化畳み込み処理定義変更装置100は、CPU11の代わりにDSP(Digital Signal Processor)を備えてもよい。または、図6に示すグループ化畳み込み処理定義変更装置100は、CPU11とDSPとを併せて備えてもよい。
主記憶部12は、データの作業領域やデータの一時退避領域として用いられる。主記憶部12は、例えばRAM(Random Access Memory)である。
通信部13は、有線のネットワークまたは無線のネットワーク(情報通信ネットワーク)を介して、周辺機器との間でデータを入力および出力する機能を有する。
補助記憶部14は、一時的でない有形の記憶媒体である。一時的でない有形の記憶媒体として、例えば磁気ディスク、光磁気ディスク、CD-ROM(Compact Disk Read Only Memory )、DVD-ROM(Digital Versatile Disk Read Only Memory )、半導体メモリが挙げられる。
入力部15は、データや処理命令を入力する機能を有する。入力部15は、例えばキーボードやマウス等の入力デバイスである。
出力部16は、データを出力する機能を有する。出力部16は、例えば液晶ディスプレイ装置等の表示装置、またはプリンタ等の印刷装置である。
また、図6に示すように、グループ化畳み込み処理定義変更装置100において、各構成要素は、システムバス17に接続されている。
補助記憶部14は、本実施形態のグループ化畳み込み処理定義変更装置100において、取得部110、定義変更部120、重み変更部130、および格納部140を実現するためのプログラムを記憶している。
なお、グループ化畳み込み処理定義変更装置100は、例えば内部に図2に示すような機能を実現するLSI(Large Scale Integration )等のハードウェア部品が含まれる回路が実装されてもよい。
また、グループ化畳み込み処理定義変更装置100は、CPU等の素子を用いるコンピュータ機能を含まないハードウェアにより実現されてもよい。例えば、各構成要素の一部または全部は、汎用の回路(circuitry )または専用の回路、プロセッサ等やこれらの組み合わせによって実現されてもよい。これらは、単一のチップ(例えば、上記のLSI)によって構成されてもよいし、バスを介して接続される複数のチップによって構成されてもよい。各構成要素の一部または全部は、上述した回路等とプログラムとの組み合わせによって実現されてもよい。
各構成要素の一部または全部が複数の情報処理装置や回路等により実現される場合には、複数の情報処理装置や回路等は集中配置されてもよいし、分散配置されてもよい。例えば、情報処理装置や回路等は、クライアントアンドサーバシステム、クラウドコンピューティングシステム等、各々が通信ネットワークを介して接続される形態として実現されてもよい。
次に、本発明の概要を説明する。図7は、本発明によるグループ化畳み込み処理定義変更装置の概要を示すブロック図である。本発明によるグループ化畳み込み処理定義変更装置20は、第1チャネル~第N チャネル(N は2以上の整数)が順に並べられて構成されている入力されたデータがチャネル方向にG (G は2以上の整数)個に分割され、分割された{(i -1)×N/G +1}チャネル~(i×N/G)チャネル(i=1~G)で構成されているデータに対して第i 重み行列が使用されて畳み込みの計算がi =1からi =G に渡ってそれぞれ実行されるグループ化畳み込みが定義された学習済みの畳み込みニューラルネットワークに関して、入力されたデータが分割される数をG からg (g は、G を除くG の約数)に変更する変更手段21(例えば、定義変更部120)と、分割される数が変更された後に分割された{(j -1)×N/g +1}チャネル~(j×N/g)チャネル(j=1~g)で構成されているデータの畳み込みの計算で使用される新たな第j 重み行列を、j =1からj =g に渡ってそれぞれ生成する生成手段22(例えば、重み変更部130)とを備え、生成手段22は、新たな第j 重み行列を、新たな第j 重み行列の左上から右下にかけて第{(j -1)×G/g +1}重み行列~第(j×G/g)重み行列を対角線上に順に配置し、重み行列が配置された箇所の成分以外の成分の値を全て0に設定することによって生成する。
そのような構成により、グループ化畳み込み処理定義変更装置は、グループ化畳み込みの計算速度を高めることができる。
また、変更手段21は、入力されたデータが分割される数をG から1に変更してもよい。
そのような構成により、グループ化畳み込み処理定義変更装置は、オーバヘッドの影響を最小化できる。
また、変更手段21は、学習済みの畳み込みニューラルネットワークを構成する複数の畳み込み層ごとに入力されたデータが分割される数をそれぞれ変更してもよい。
そのような構成により、グループ化畳み込み処理定義変更装置は、畳み込み層ごとにグループ化畳み込みの定義を変更できる。
11 CPU
12 主記憶部
13 通信部
14 補助記憶部
15 入力部
16 出力部
17 システムバス
20、100 グループ化畳み込み処理定義変更装置
21 変更手段
22 生成手段
110 取得部
120 定義変更部
130 重み変更部
140 格納部
200 変更前CNN モデル記憶部
300 変更後CNN モデル記憶部
400 AIチップ
12 主記憶部
13 通信部
14 補助記憶部
15 入力部
16 出力部
17 システムバス
20、100 グループ化畳み込み処理定義変更装置
21 変更手段
22 生成手段
110 取得部
120 定義変更部
130 重み変更部
140 格納部
200 変更前CNN モデル記憶部
300 変更後CNN モデル記憶部
400 AIチップ
Claims (9)
- 第1チャネル~第N チャネル(N は2以上の整数)が順に並べられて構成されている入力されたデータがチャネル方向にG (G は2以上の整数)個に分割され、分割された{(i -1)×N/G +1}チャネル~(i×N/G)チャネル(i=1~G)で構成されているデータに対して第i 重み行列が使用されて畳み込みの計算がi =1からi =G に渡ってそれぞれ実行されるグループ化畳み込みが定義された学習済みの畳み込みニューラルネットワークに関して、前記入力されたデータが分割される数をG からg (g は、G を除くG の約数)に変更する変更手段と、
前記分割される数が変更された後に分割された{(j -1)×N/g +1}チャネル~(j×N/g)チャネル(j=1~g)で構成されているデータの畳み込みの計算で使用される新たな第j 重み行列を、j =1からj =g に渡ってそれぞれ生成する生成手段とを備え、
前記生成手段は、
前記新たな第j 重み行列を、前記新たな第j 重み行列の左上から右下にかけて第{(j -1)×G/g +1}重み行列~第(j×G/g)重み行列を対角線上に順に配置し、重み行列が配置された箇所の成分以外の成分の値を全て0に設定することによって生成する
ことを特徴とするグループ化畳み込み処理定義変更装置。 - 変更手段は、入力されたデータが分割される数をG から1に変更する
請求項1記載のグループ化畳み込み処理定義変更装置。 - 変更手段は、学習済みの畳み込みニューラルネットワークを構成する複数の畳み込み層ごとに入力されたデータが分割される数をそれぞれ変更する
請求項1記載のグループ化畳み込み処理定義変更装置。 - 第1チャネル~第N チャネル(N は2以上の整数)が順に並べられて構成されている入力されたデータがチャネル方向にG (G は2以上の整数)個に分割され、分割された{(i -1)×N/G +1}チャネル~(i×N/G)チャネル(i=1~G)で構成されているデータに対して第i 重み行列が使用されて畳み込みの計算がi =1からi =G に渡ってそれぞれ実行されるグループ化畳み込みが定義された学習済みの畳み込みニューラルネットワークに関して、前記入力されたデータが分割される数をG からg (g は、G を除くG の約数)に変更し、
前記分割される数が変更された後に分割された{(j -1)×N/g +1}チャネル~(j×N/g)チャネル(j=1~g)で構成されているデータの畳み込みの計算で使用される新たな第j 重み行列を、j =1からj =g に渡ってそれぞれ生成し、
前記新たな第j 重み行列を、前記新たな第j 重み行列の左上から右下にかけて第{(j -1)×G/g +1}重み行列~第(j×G/g)重み行列を対角線上に順に配置し、重み行列が配置された箇所の成分以外の成分の値を全て0に設定することによって生成する
ことを特徴とするグループ化畳み込み処理定義変更方法。 - 入力されたデータが分割される数をG から1に変更する
請求項4記載のグループ化畳み込み処理定義変更方法。 - 学習済みの畳み込みニューラルネットワークを構成する複数の畳み込み層ごとに入力されたデータが分割される数をそれぞれ変更する
請求項4記載のグループ化畳み込み処理定義変更方法。 - コンピュータに、
第1チャネル~第N チャネル(N は2以上の整数)が順に並べられて構成されている入力されたデータがチャネル方向にG (G は2以上の整数)個に分割され、分割された{(i -1)×N/G +1}チャネル~(i×N/G)チャネル(i=1~G)で構成されているデータに対して第i 重み行列が使用されて畳み込みの計算がi =1からi =G に渡ってそれぞれ実行されるグループ化畳み込みが定義された学習済みの畳み込みニューラルネットワークに関して、前記入力されたデータが分割される数をG からg (g は、G を除くG の約数)に変更する変更処理、および
前記分割される数が変更された後に分割された{(j -1)×N/g +1}チャネル~(j×N/g)チャネル(j=1~g)で構成されているデータの畳み込みの計算で使用される新たな第j 重み行列を、j =1からj =g に渡ってそれぞれ生成する生成処理を実行させるためのグループ化畳み込み処理定義変更プログラムであって、
前記生成処理で、
前記新たな第j 重み行列を、前記新たな第j 重み行列の左上から右下にかけて第{(j -1)×G/g +1}重み行列~第(j×G/g)重み行列を対角線上に順に配置し、重み行列が配置された箇所の成分以外の成分の値を全て0に設定することによって生成させる
グループ化畳み込み処理定義変更プログラム。 - コンピュータに、
前記変更処理で、入力されたデータが分割される数をG から1に変更させる
請求項7記載のグループ化畳み込み処理定義変更プログラム。 - コンピュータに、
前記変更処理で、学習済みの畳み込みニューラルネットワークを構成する複数の畳み込み層ごとに入力されたデータが分割される数をそれぞれ変更させる
請求項7記載のグループ化畳み込み処理定義変更プログラム。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/918,945 US20230237322A1 (en) | 2020-04-28 | 2020-04-28 | Grouped convolution processing definition changing device, grouped convolution processing definition changing method, and grouped convolution processing definition changing program |
PCT/JP2020/018168 WO2021220422A1 (ja) | 2020-04-28 | 2020-04-28 | グループ化畳み込み処理定義変更装置、グループ化畳み込み処理定義変更方法およびグループ化畳み込み処理定義変更プログラム |
JP2022518508A JP7501617B2 (ja) | 2020-04-28 | 2020-04-28 | グループ化畳み込み処理定義変更装置、グループ化畳み込み処理定義変更方法およびグループ化畳み込み処理定義変更プログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2020/018168 WO2021220422A1 (ja) | 2020-04-28 | 2020-04-28 | グループ化畳み込み処理定義変更装置、グループ化畳み込み処理定義変更方法およびグループ化畳み込み処理定義変更プログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2021220422A1 true WO2021220422A1 (ja) | 2021-11-04 |
Family
ID=78332318
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2020/018168 WO2021220422A1 (ja) | 2020-04-28 | 2020-04-28 | グループ化畳み込み処理定義変更装置、グループ化畳み込み処理定義変更方法およびグループ化畳み込み処理定義変更プログラム |
Country Status (3)
Country | Link |
---|---|
US (1) | US20230237322A1 (ja) |
JP (1) | JP7501617B2 (ja) |
WO (1) | WO2021220422A1 (ja) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020044527A1 (ja) * | 2018-08-31 | 2020-03-05 | 株式会社アラヤ | 情報処理装置 |
-
2020
- 2020-04-28 US US17/918,945 patent/US20230237322A1/en active Pending
- 2020-04-28 WO PCT/JP2020/018168 patent/WO2021220422A1/ja active Application Filing
- 2020-04-28 JP JP2022518508A patent/JP7501617B2/ja active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020044527A1 (ja) * | 2018-08-31 | 2020-03-05 | 株式会社アラヤ | 情報処理装置 |
Non-Patent Citations (1)
Title |
---|
MACHIDA KAZUYA: "Embedded GPU / CPU implementation for deep learning applications", GPU/CPU MATLAB EXPO, 28 May 2019 (2019-05-28), XP055868617, Retrieved from the Internet <URL:https://www.matlabexpo.com/content/dam/mathworks/mathworks-dot-com/images/events/matlabexpo/jp/2019/b4-deeplearning-embedded-c-mw.pdf> * |
Also Published As
Publication number | Publication date |
---|---|
JPWO2021220422A1 (ja) | 2021-11-04 |
JP7501617B2 (ja) | 2024-06-18 |
US20230237322A1 (en) | 2023-07-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Wu et al. | A high-performance CNN processor based on FPGA for MobileNets | |
EP3179415B1 (en) | Systems and methods for a multi-core optimized recurrent neural network | |
US11610127B2 (en) | Methods and systems for selecting quantisation parameters for deep neural networks using back-propagation | |
US11816532B2 (en) | Performing kernel striding in hardware | |
US11620513B2 (en) | Computing convolutions using a neural network processor | |
Lavin et al. | Fast algorithms for convolutional neural networks | |
Krishnan et al. | Efficient preconditioning of laplacian matrices for computer graphics | |
JP6823495B2 (ja) | 情報処理装置および画像認識装置 | |
KR20190066473A (ko) | 뉴럴 네트워크에서 컨볼루션 연산을 처리하는 방법 및 장치 | |
US20190236449A1 (en) | End-to-End Data Format Selection for Hardware Implementation of Deep Neural Networks | |
US11803360B2 (en) | Compilation method, apparatus, computing device and medium | |
JP2022550730A (ja) | 高速なスパースニューラルネットワーク | |
US20230297819A1 (en) | Processor array for processing sparse binary neural networks | |
US20190236436A1 (en) | Hierarchical Mantissa Bit Length Selection for Hardware Implementation of Deep Neural Network | |
US20220230064A1 (en) | Calibration of analog circuits for neural network computing | |
JP2024539796A (ja) | 人工知能ワークロードのためのランタイム構成可能レジスタファイル | |
JP7401513B2 (ja) | ハードウェアにおけるスパース行列乗算 | |
WO2019182059A1 (ja) | モデル生成装置、モデル生成方法及びプログラム | |
WO2021220422A1 (ja) | グループ化畳み込み処理定義変更装置、グループ化畳み込み処理定義変更方法およびグループ化畳み込み処理定義変更プログラム | |
CN113536222A (zh) | 系统局部字段矩阵更新的方法、系统和存储介质 | |
JP2020080048A (ja) | 並列処理装置およびプログラム | |
JP2021060714A (ja) | 次数変換装置、次数変換方法、および次数変換プログラム | |
KR20220158768A (ko) | 기계 학습 가속을 위한 전력 감소 | |
CN110610227B (zh) | 人工神经网络调整方法及神经网络计算平台 | |
WO2020129149A1 (ja) | 作業集合選択装置、作業集合選択方法および作業集合選択プログラム |
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: 20933465 Country of ref document: EP Kind code of ref document: A1 |
|
ENP | Entry into the national phase |
Ref document number: 2022518508 Country of ref document: JP Kind code of ref document: A |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 20933465 Country of ref document: EP Kind code of ref document: A1 |