WO2019082859A1 - 推論装置、畳み込み演算実行方法及びプログラム - Google Patents

推論装置、畳み込み演算実行方法及びプログラム

Info

Publication number
WO2019082859A1
WO2019082859A1 PCT/JP2018/039248 JP2018039248W WO2019082859A1 WO 2019082859 A1 WO2019082859 A1 WO 2019082859A1 JP 2018039248 W JP2018039248 W JP 2018039248W WO 2019082859 A1 WO2019082859 A1 WO 2019082859A1
Authority
WO
WIPO (PCT)
Prior art keywords
input data
weight
unit
multiplication
pes
Prior art date
Application number
PCT/JP2018/039248
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 日本電気株式会社
Priority to JP2019551133A priority Critical patent/JP6927320B2/ja
Priority to US16/757,543 priority patent/US11580369B2/en
Publication of WO2019082859A1 publication Critical patent/WO2019082859A1/ja

Links

Images

Classifications

    • 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/544Methods 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 for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/764Arrangements for image or video recognition or understanding using pattern recognition or machine learning using classification, e.g. of video objects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/82Arrangements for image or video recognition or understanding using pattern recognition or machine learning using neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/48Indexing scheme relating to groups G06F7/48 - G06F7/575
    • G06F2207/4802Special implementations
    • G06F2207/4818Threshold devices
    • G06F2207/4824Neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20081Training; Learning

Definitions

  • the present invention is based on the priority claim of Japanese Patent Application No. 2017-204610 (filed on October 23, 2017), and the entire contents of the same application are incorporated herein by reference. It shall be.
  • the present invention relates to an inference apparatus, a convolution operation execution method, and a program.
  • convolutional neural networks are often used in technical fields such as image recognition.
  • the convolutional neural network includes a convolutional layer, a pooling layer, and an entire combined layer, as described later. In the convolutional layer, processing is performed to convolve the kernel into the entire image.
  • the process of convoluting a kernel on the entire image obtains a set of features convoluted into the image.
  • the set of features is also referred to as a feature map.
  • a feature map is obtained by applying an activation function to the convoluted values. For example, in the field of image recognition, ReLU (Rectified Linear Unit) is often used as an activation function.
  • ReLU Rectified Linear Unit
  • Non-patent documents 1 and 2 disclose techniques for reducing the load associated with the multiplication process. Specifically, Non-Patent Documents 1 and 2 disclose techniques for reducing the number of times of multiplication processing that the result is "0" even if "0" is multiplied by an arbitrary value. .
  • Non-Patent Documents 1 and 2 are required.
  • Non-Patent Document 1 aims to reduce the number of multiplications in a fully connected layer (FC layer; Fully Connected layer). Although it is also desired to reduce the number of multiplications in the entire coupling layer, the number of multiplications in the convolutional layer is overwhelmingly larger when comparing the number of multiplications in the entire coupling layer with the number of multiplications in the convolutional layer.
  • the technique disclosed in Non-Patent Document 1 aims to reduce the multiplication process for the entire combined layer, and can not reduce the multiplication process of the convolutional layer.
  • the main object of the present invention is to provide an inference apparatus, a convolution operation execution method, and a program that contribute to reducing the number of multiplications in the convolution layer.
  • a plurality of PEs Process Elements
  • a plurality of input data a plurality of input data
  • a weight group including a plurality of weights corresponding to the plurality of input data
  • a control unit which realizes convolutional operation in the used convolutional neural network by controlling the plurality of PEs, each of the plurality of PEs including an operation of multiplying one input data and one weight
  • An inference apparatus is provided, which performs the multiplication process included in the convolution operation using an element in which each of the plurality of input data has a non-zero value.
  • each includes a plurality of PEs (Processing Elements) that perform an operation including multiplication processing of one input data and one weight, and each of the plurality of input data
  • each of the plurality of PEs includes the plurality of inputs.
  • a method of performing a convolution operation is provided, including the steps of identifying an element whose value is not zero included in each data, and performing the multiplication process included in the convolution operation using the identified element. .
  • each includes a plurality of PEs (Processing Elements) that perform an operation including a multiplication process of one input data and one weight, and each of the plurality of input data
  • a computer mounted on an inference apparatus for realizing a convolution operation in a convolutional neural network using a plurality of weights including a plurality of weights corresponding to each of the plurality of input data A program is provided that executes processing for specifying an element whose included value is not zero and processing for performing multiplication processing included in the convolution operation using the specified element.
  • this program can be recorded on a computer readable storage medium.
  • the storage medium can be non-transient such as a semiconductor memory, a hard disk, a magnetic recording medium, an optical recording medium, and the like.
  • the invention can also be embodied as a computer program product.
  • an inference apparatus a convolution operation execution method, and a program are provided that contribute to reducing the number of multiplications in the convolution layer.
  • FIG. 1 It is a figure showing an example of the hardware constitutions of an inference device. It is a figure which shows an example of the system configuration containing a weight setting apparatus and an inference apparatus. It is a figure showing an example of the system configuration containing a learning device and an inference device. It is a figure which shows an example of an internal structure of the learning apparatus shown in FIG.
  • connection lines between blocks in each figure include both bidirectional and unidirectional directions.
  • the unidirectional arrows schematically indicate the flow of main signals (data), and do not exclude bidirectionality.
  • input ports and output ports are respectively present at the input end and the output end of each connection line, although they are not explicitly shown. The same is true for the input / output interface.
  • the inference apparatus 100 includes a plurality of PEs (Processing Elements) 101 and a control unit 102 (see FIG. 1).
  • the control unit 102 realizes a convolution operation in a convolutional neural network using a plurality of input data and a weight group including a plurality of weights corresponding to each of the plurality of input data by controlling the plurality of PEs 101.
  • each of the plurality of PEs 101 performs an operation including multiplication processing of one input data and one weight, and is included in the convolution operation using elements whose values included in each of the plurality of input data are not zero. Execute multiplication processing.
  • each PE 101 included in the inference apparatus 100 multiplies input data by weight and weight when it is performing multiplication processing. Do not execute the process. As a result, the number of multiplications in the convolutional layer is reduced.
  • FIG. 2 is a diagram for explaining the structure of an intermediate layer (hidden layer) in image recognition.
  • the input layer and the intermediate layer are connected, and the intermediate layer and the output layer are connected.
  • image data is assumed as data to be input to the input layer.
  • the input layer creates data to be output to the middle layer from the acquired input data.
  • the middle layer combines data in which a feature portion of input data is extracted by a convolutional neural network (CNN (Convolutional Neural Network)) into one node, and outputs a feature variable.
  • CNN convolutional neural network
  • the output layer classifies the input data based on the feature variables acquired from the intermediate layer.
  • the middle layer includes a plurality of "layers", the first layer is connected to the input layer, and the last layer is connected to the entire bonding layer.
  • Each layer forming the middle layer may include a convolution layer, an activation function, and a pooling layer.
  • the structure shown in FIG. 2 is an illustration, and it is not the meaning which limits the structure of an intermediate
  • the intermediate layer may not include the activation function and the pooling layer.
  • the convolution layer extracts the feature amount from the acquired input data.
  • An activation function is applied to the extracted feature amount, and the feature amount after the activation function is applied is input to the pooling layer.
  • the pooling layer combines the acquired feature quantities.
  • processing processing for obtaining invariance
  • processing for allowing positional displacement of an object is performed in the pooling layer.
  • the layer for applying the “activation function” is described in a form independent of the convolution layer and the pooling layer, but in fact, the “activation function” corresponds to the convolution layer and the pooling layer. It may be included in any of the layers.
  • the layers forming the intermediate layer are cascaded, and the output of the preceding layer corresponds to the input of the subsequent layer.
  • FIG. 3 is a diagram for explaining an operation in the convolutional layer.
  • the convolutional layer outputs a feature amount by multiplying input data by a weight (filter).
  • the various parameters used in the present disclosure are defined as illustrated in FIG.
  • K shown in FIG. 3 is the number of output channels of the layer.
  • the number of output channels K of the layer and the number of types of weights match. For example, if the number of types of weights shown in FIG. 3 is “4”, the number K of output channels of the layer is also “4”.
  • One type of weight includes the same number of weights as the number C of input channels. For example, if the number of input channels C is “3”, one type of weight includes three weights.
  • the C weights included in one type of weight are associated with each of the C input data. For example, in FIG. 3, among the C weights in the upper row, the foremost weight is associated with the foremost input data.
  • a set of weights divided for each input channel number C is referred to as a “weight group”.
  • Each weight group includes C weights.
  • the number of types of weights matches the number of output channels K, the number of weights in the convolutional layer is K ⁇ C.
  • a direction toward one input data or one weight toward another input data or weight is referred to as a “channel direction”.
  • the direction toward one weight group with respect to the other weight group is referred to as "kernel direction”.
  • the direction from weight 501 to weight 502 shown in FIG. 3 is the channel direction
  • the direction from weight group 511 to weight group 512 is the kernel direction.
  • the upper left element “1” in the extracted input data is multiplied by the upper left element “ ⁇ 1” of the weight 501 corresponding to the extracted input data.
  • such processing is repeated (in the above example, repeated nine times). Thereafter, the multiplication result is added.
  • (-1) + (-1) + 1 + 0 + 0 + 0 + (-1) + 4 + 0 2.
  • the multiplication of the extracted data and the weight is performed between the corresponding input data and the weight.
  • the weight corresponding to the input data shown at the foremost position is the weight 501 shown at the foremost position.
  • the weight corresponding to the input data shown in the middle is the weight shown in the middle
  • the weight corresponding to the input data shown in the back is the weight 502 shown in the back.
  • the multiplication and addition process is repeated between the corresponding input data and the weight.
  • the result of the multiplication and addition process is added in the channel direction.
  • the multiplication and addition results in the three channels frontmost, middle, deepest are added.
  • the multiplication and addition process and the subsequent addition process are performed for each weight group.
  • the calculation is performed using the weight group 511 illustrated in the upper part and the input data, and the same processing (multiplication and addition processing using the same input data and addition thereafter is performed for the weight group 512 illustrated in the lower part). Processing is performed.
  • the above processing (multiplication and addition processing and addition processing in the channel direction) is repeated while changing the input data to be extracted. For example, as shown in the foremost input data in FIG. 3, the input data is cut out while sliding the area to be extracted. The same processing as described above is applied to the extracted data.
  • Output data of the convolutional layer is obtained by repeating the process of extracting input data as described above and multiplying the extracted input data by a weight and adding in the channel direction.
  • the number of obtained output data and the type of weight match.
  • K 16
  • the size (the size in the vertical direction, the size in the width direction) of each output data is determined by the specification when sliding the area (window) when the data is extracted from the input data. In the example of FIG. 3, data is extracted from the input data such that each output data includes 12 (4 ⁇ 3) elements.
  • the inference apparatus 10 executes the convolution operation described with reference to FIG. 3 in the process of inference.
  • the inference apparatus 10 includes therein an input layer execution unit 11 for realizing an input layer, an intermediate layer execution unit 12 for realizing an intermediate layer, and an output layer for realizing an output layer. And an execution unit 13.
  • the intermediate layer execution unit 12 includes a convolution layer execution unit 31 for realizing the convolution layer, an activation function execution unit 32 for executing the activation function, and a pooling layer execution unit 33 for realizing the pooling layer See Figure 5).
  • the convolution layer execution unit 31 will be described in detail.
  • the other execution units can be realized by a known algorithm or the like, and thus the description thereof will be omitted.
  • the convolution layer execution unit 31 of each layer executes the convolution operation (multiplication and addition process) described with reference to FIG. 3 using a plurality of processing elements (PEs).
  • PEs processing elements
  • FIG. 6 is a diagram for explaining the operation of the PE included in the convolutional layer execution unit 31.
  • input data and weights are illustrated as being expanded into a one-dimensional array (vector). Therefore, in FIG. 6, each row of weights indicates a different weight group (the upper and lower relationships in the example of FIG. 3).
  • the shades of color attached to the input data and the weight indicate the correspondence between the two data. For example, the darkest deepest input data and weights are in a corresponding relationship.
  • multiplication processing and addition processing are performed between input data and weights in a corresponding relationship. More specifically, multiplication processing of input data in the channel direction and a corresponding weight group and addition processing in the channel direction are performed using a plurality of PEs.
  • the convolutional layer execution unit 31 executes a convolution operation including the multiplication process (128 times in the above example) using a plurality of PEs.
  • the convolution layer execution unit 31 will be described below as performing the convolution operation using 16 PEs. However, it is a matter of course that the number of PEs is not limited to 16.
  • the convolutional layer execution unit 31 processes convolution operations (multiplication and addition) on a plurality of weight groups and a plurality of weights included in each weight group in parallel using a plurality of PEs. For example, in the example of FIG. 6, the convolutional layer execution unit 31 processes four channel weights in parallel among the eight channel weights included in each weight group. In addition, the convolutional layer execution unit 31 processes four weight groups in parallel among 16 weight groups.
  • PE (0, 0) to PE (3, 0) process in parallel the weights from the innermost to the fourthmost included in the first line of FIG. 6 (start parallel processing) To do).
  • Each PE sequentially executes a convolution operation using input data and weights at positions skipped by a number corresponding to the parallel number (4 in the above example).
  • PE (0, 0) is the fifth weight from the back when the operation on the innermost weight among the weights included in the first row (uppermost) weight group is completed.
  • PE (0, 0) to PE (0, 3) process the weights in the first to fourth lines of the innermost weights shown in FIG. Start processing).
  • each PE is included in a weight group at a position skipped by a number corresponding to the parallel number (4 in the above example), and sequentially executes a convolution operation using the corresponding channel weight.
  • PE (0, 0) executes a convolution operation using the weights of the first, fifth, ninth, and thirteenth rows from the topmost weight.
  • PE (0, 1) executes a convolution operation using the weights in the second, sixth, tenth, and fourteenth rows from the topmost weight.
  • FIG. 7 is a diagram for describing an operation performed by each PE.
  • an element value other than “0” hereinafter referred to as a non-zero element
  • its index For example, in the example of FIG. 7, "1" is specified as a non-zero element and "1" as its index.
  • each PE multiplication processing of non-zero elements of input data and elements of weights corresponding to the non-zero elements index is performed.
  • the multiplication process is sequentially performed in the kernel direction (processed sequentially).
  • “1” of the input data and the elements (2, 1, 3, 0) of the second column of weights are sequentially multiplied and stored in the primary storage area.
  • the next non-zero element in the input data and its index are identified.
  • “2” is specified as a nonzero element and "7” is specified as its index.
  • “2”, which is a non-zero element, and the element (1, 0, 2, 1) in the eighth column of weights are sequentially multiplied and stored in the primary storage area.
  • the multiplication results of non-zero elements and weights are added for each weight group and become output data of each PE.
  • “4” is output as a result on the weight group in the first row
  • “1” is output as a result on the weight group in the second row.
  • each PE multiplication processing of input data and weight in convolution operation and addition processing for each weight group are executed.
  • the calculation result (addition result for each weight group) in each PE is added in the channel direction, and the final convolution calculation is completed. That is, in the convolution operation in the convolution layer, multiplication processing of input data and weight is performed, and thereafter, addition processing for each weight group (weight direction; that is, direction of S, R; row direction of weights in the example of FIG. 6) Is done. Thereafter, the addition result for each weight group is added in the channel direction.
  • FIG. 8 is a diagram showing an example of the internal configuration of the convolutional layer execution unit 31.
  • the convolutional layer execution unit 31 includes a convolutional layer control unit 40, an input data division unit 41, a plurality of PEs 42-1 to 42-8, a standby unit 43, and a result addition unit 44.
  • Various storage units are included.
  • the various storage units include an input data storage unit 51, a weight storage unit 52, and a result storage unit 53. In the following description, when there is no particular reason to distinguish PEs 42-1 to 42-8, they are simply referred to as "PE 42".
  • the convolutional layer execution unit 31 includes a plurality of PEs 42.
  • the plurality of PEs 42 are managed in units that perform convolution operations in parallel in the channel direction.
  • a set of PEs 42 including one of the PEs 42-1 to 42-4 executes a convolution operation in the channel direction in parallel.
  • a set of PEs 42 including PEs 42-5 to 42-8 performs channel-direction convolution operations in parallel.
  • Each PE 42 performs an operation including multiplication processing of one input data and one weight.
  • each PE 42 executes multiplication processing included in the convolution operation excluding elements whose values included in each of the plurality of input data are zero.
  • the input data division unit 41 is connected to each of the plurality of PEs 42.
  • the convolutional layer control unit 40 is connected to each of the plurality of PEs 42.
  • the waiting unit 43 is provided for each set of PEs 42 that perform convolution operations in parallel in the channel direction.
  • each of the PEs 42-1 to 42-4 is connected to the standby unit 43.
  • the standby unit 43 is connected to the result adding unit 44. In FIG. 8, the standby unit corresponding to the PEs 42-5 to 42-8 and the result addition unit connected to the standby unit are not shown.
  • the convolutional layer control unit 40 is a means for controlling the entire convolutional layer.
  • the convolutional layer control unit 40 controls the plurality of PEs 42 in the convolution operation in the convolutional neural network using each of the plurality of input data and the weight group including the plurality of weights corresponding to each of the plurality of input data. To achieve.
  • the convolutional layer control unit 40 performs multiplication of part of multiplication processing of each of a plurality of input data (each input data of a plurality of channels) and a weight corresponding to each of a plurality of input data.
  • a plurality of PEs 42 are controlled so that the processes are processed in parallel.
  • the convolutional layer control unit 40 controls each PE 42 so that the convolution operation (operation including the multiplication process) of the weight corresponding to the input data for four channels is executed in parallel.
  • the convolutional layer control unit 40 uses weights of different weight groups among multiplication processing of each of the plurality of input data (each input data of the plurality of channels) and each of the plurality of weights included in the plurality of weight groups.
  • the plurality of PEs 42 are controlled so that part of multiplication processing using a weight corresponding to the same input data is executed in parallel.
  • the convolution layer control unit 40 performs a convolution operation (operation including a multiplication process) of the innermost input data corresponding to the first line of the innermost weight, and the second line of the innermost weight.
  • Each PE 42 is controlled such that the convolution operation of the corresponding innermost input data is executed in parallel.
  • the convolutional layer control unit 40 exchanges control information with control modules in other layers, and implements the function of the inference apparatus 10 as a whole. More specifically, when the convolution layer control unit 40 receives the notification of completion of the convolution operation from the previous layer, the convolution layer control unit 40 controls the PE 42 managed by itself and executes the convolution operation (controls the PE 42 to execute the convolution operation) ). Furthermore, the convolutional layer control unit 40 notifies the subsequent layer of the end of the convolution operation in its own layer.
  • the weights used for the convolution operation in each layer are stored in the weight storage unit 52.
  • the weights stored in the weight storage unit 52 may be set in advance before the operation of the inference apparatus 10, or may be stored in the weight storage unit 52 each time receiving weights from a higher-level device (for example, a learning device). .
  • the weight storage unit 52 stores, for example, data on weights as shown in FIG.
  • the convolutional layer control unit 40 reads the weight from the weight storage unit 52 and distributes the necessary weight (data) to each PE 42. For example, in the case where the PE 42-4 shown in FIG. 8 corresponds to the PE (0, 0) shown in FIG. 6, the convolutional layer control unit 40 selects the first and fifth lines of the innermost weight shown in FIG. The weights on the first, fifth, ninth, and thirteenth lines among the fifth, ninth, and ninth lines from the innermost fifth weight are distributed to the PE 42-4.
  • the input data storage unit 51 stores input data (output data of the layer of the previous stage).
  • the input data division unit 41 reads input data from the input data storage unit 51 in accordance with an instruction from the convolutional layer control unit 40. Specifically, the convolutional layer control unit 40 designates the size and position of input data to be extracted from the entire input data, and instructs the input data division unit 41 to read out the designated data.
  • the input data division unit 41 supplies the data read according to the instruction to each PE 42. More specifically, the input data division unit 41 divides a plurality of input data (input data including a plurality of channels), and supplies the divided input data to a PE 42 that processes multiplication processing in parallel. That is, the input data division unit 41 divides and supplies the read data for each PE 42. For example, as shown in FIG. 6, if the parallel number in the channel direction (the number of PEs 42 processing weights in parallel in the channel direction) is “4”, the input data division unit 41 divides the input data into four and divides them. The input data is supplied to each PE 42. In the example shown in FIG. 6, eight pieces of input data are divided into four (divided like the shades of color added to the input data of FIG.
  • each divided input data is supplied to each PE 42.
  • the PE (0, 0) shown in FIG. 6 is supplied with two of the innermost input data and the fifth input data from the rear (both the darkest input data).
  • the same input data is supplied to the PEs 42 whose corresponding channels are the same.
  • the same input data is supplied to PE 42-1 and PE 42-5.
  • the same input data is supplied to PE 42-2 and PE 42-6.
  • Each PE 42 includes a PE control unit 60, an input data processing unit 61, a weight reading unit 62, a multiplication / addition unit 63, a weight primary storage unit 64, and an operation result storage unit 65.
  • the input data processing unit 61 acquires input data output from the input data division unit 41.
  • the weight distributed by the convolutional layer control unit 40 is acquired by the PE control unit 60 and stored in the weight primary storage unit 64.
  • the PE 42 performs a convolution operation using the weight (distributed weight) stored in the weight primary storage unit 64 and the input data acquired from the input data division unit 41. More specifically, the processing described with reference to FIG. 7, that is, multiplication processing between input data and corresponding weights and addition processing for each weight group is performed.
  • the input data processing unit 61 specifies, from the input data input, non-zero elements whose values are other than zero and the positions of the non-zero elements. More specifically, the input data processing unit 61 extracts the index corresponding to the nonzero element from the input data. The input data processing unit 61 delivers the extracted index to the weight reading unit 62. Further, the input data processing unit 61 delivers the non-zero element to the multiplication and addition unit 63.
  • the weight reading unit 62 reads the value of the position corresponding to the position (index) of the non-zero element among the elements of the weight to be multiplied by the input data from the storage medium storing the weight group. More specifically, the weight reading unit 62 sequentially reads elements of the weight corresponding to the acquired index from the weight primary storage unit 64. The weight reading unit 62 delivers the read value to the multiplication and addition unit 63.
  • the multiplication and addition unit 63 multiplies the non-zero element by the value read by the weight reading unit 62. More specifically, the multiplication and addition unit 63 multiplies the non-zero element acquired from the input data processing unit 61 and the element of the weight acquired from the weight readout unit 62.
  • the multiplication and addition unit 63 stores the multiplication result in a primary storage area such as a register.
  • the input data processing unit 61, the weight reading unit 62, and the multiplication and addition unit 63 repeat the above processing.
  • the input data processing unit 61 processes all non-zero elements in the input data
  • the input data processing unit 61 notifies the multiplication / addition unit 63 to that effect.
  • the multiplication and addition unit 63 adds the multiplication result for each weight group, and stores the addition result in the calculation result storage unit 65. That is, when the multiplication on the non-zero element included in the input data is completed, the multiplication and addition unit 63 adds the multiplication result.
  • the PE control unit 60 determines whether or not there is input data that has not been processed among the input data supplied from the input data division unit 41. If there is input data that has not been processed, the PE control unit 60 controls the input data processing unit 61 and the like, and executes the multiplication and addition process described above for input data that has not been processed. For example, consider the case where the fifth input data from the back and the back is supplied to PE (0, 0) shown in FIG. In this case, when the multiplication and addition process on the first input data (for example, the deepest input data) is completed, the PE control unit 60 performs the multiplication and addition process on the next input data (for example, the fifth input data from the far side).
  • the input data processing unit 61 and the like are controlled to execute. That is, each PE 42 sequentially executes the convolution operation on other input data when the convolution operation on one input data is completed.
  • the PE control unit 60 adds the calculation result of the other input data and the calculation result of the previous input data in the channel direction, and calculates the result.
  • the result is stored in the result storage unit 65.
  • the PE control unit 60 When the convolution operation for all input data is completed and the result is stored in the operation result storage unit 65, the PE control unit 60 notifies the standby unit 43 to that effect.
  • the waiting unit 43 is means for waiting until the respective operations of the plurality of PEs 42 that process weights in parallel in the channel direction are completed.
  • the standby unit 43 acquires the above notification (a notification indicating that the calculation result has been stored) from all the connected PEs 42, it cancels the standby, reads the calculation result from the calculation result storage unit 65 of each PE 42, and Hand over to the result addition unit 44.
  • the result addition unit 44 is means for adding the multiplication results of each of the input data and a plurality of weights included in one weight group.
  • the addition processing corresponds to the addition of the operation result in the channel direction.
  • the result addition unit 44 After storing the addition result in the result storage unit 53, the result addition unit 44 notifies the convolution layer control unit 40 to that effect.
  • the convolutional layer control unit 40 obtains the above notification (a notification indicating that the addition result is stored in the result storage unit 53) from all the result addition units 44, it determines that the calculation in its own layer is completed, Is notified to the subsequent layer (activation function).
  • the inference apparatus 10 realizes reduction of the number of multiplications executed in the convolutional layer.
  • the scale of hardware becomes large in order to realize the reduction of the number of times of multiplication.
  • the size of the calculation result storage unit 65 is increased.
  • Each PE 42 must have at least the calculation result storage unit 65 of the above size (capacity).
  • the number of PEs 42 included in one convolutional layer is the multiplication result of the number of PEs 42 (parallel number in the channel direction; M) parallel processing in the channel direction and the number (N) of PEs 42 parallel processing in the kernel direction (N It becomes M ⁇ N).
  • an inference apparatus 10 including an operation result storage unit 65 having a size smaller than the size of the M ⁇ K will be described.
  • FIG. 9 is a view showing an example of the internal configuration of the convolutional layer execution unit 31 according to the second embodiment.
  • the first and second embodiments are different in that repetitive control unit 66 is provided inside convolutional layer control unit 40.
  • the convolutional layer control unit 40 controls each of the PEs 42 to time-divisionally execute the multiplication process in each of the PEs 42 in the kernel direction. For example, as shown in FIG. 7, a case where one PE 42 performs multiplication processing of four weight groups is considered.
  • the repetition control unit 66 which is a submodule of the convolutional layer control unit 40, controls each PE 42 so as to execute the multiplication processing from the top to the second row shown in FIG. 7 and the subsequent addition processing.
  • Each PE 42 stores the calculation result in the calculation result storage unit 65 when the processing up to the second line is completed.
  • the PE control unit 60 of each PE 42 notifies the standby unit 43 to that effect.
  • the standby unit 43 reads the operation result from the operation result storage unit 65 of each PE 42 and delivers the operation result to the result addition unit 44.
  • the result addition unit 44 temporarily stores the acquired calculation result in the result storage unit 53. At that time, if there is a result already stored in the result storage unit 53, the result addition unit 44 adds the already stored result and the acquired operation result.
  • the result addition unit 44 stores the operation result in the result storage unit 53, the result addition unit 44 repeatedly notifies the control unit 66 of the fact.
  • the repetition control unit 66 controls each PE 42 so that each PE 42 executes the remaining time-divided processing (for example, the processing relating to the third and fourth top rows from the top shown in FIG. 7). More specifically, the repetition control unit 66 instructs the PE control unit 60 of each PE 42 to execute the remaining time-divided processing. Each PE 42 performs the remaining time-division processing. Each PE 42, the standby unit 43, the result addition unit 44, and the repetition control unit 66 repeat the above operation until the remaining time-division processing is eliminated. Thus, the calculation result by each PE 42 is stored in the result storage unit 53.
  • the result addition unit 44 Each time the result addition unit 44 receives an operation result from each PE 42, the result addition unit 44 reads out the corresponding operation result (the result by the other PEs 42) stored in the result storage unit 53. Thereafter, the result addition unit 44 adds the operation result in the channel direction by adding the obtained operation result to the read operation result.
  • the convolutional layer control unit 40 After completion of the time-division convolutional operation in the kernel direction, the convolutional layer control unit 40 operates in the same manner as in the first embodiment.
  • the inference apparatus 10 causes each of the plurality of PEs 42 to perform time-division multiple processes for multiplying one input data and weights included in different weight groups. That is, the inference apparatus 10 according to the second embodiment performs time division in the kernel direction in the convolution operation process in each PE 42. As a result, the size of the calculation result storage unit 65 required for each PE 42 can be reduced. Specifically, in the example of FIG. 7, in the first embodiment, the calculation result storage unit 65 of the capacity capable of holding four calculation results is required. However, in the second embodiment, since the calculation result is stored (saved) in the result storage unit 53 each time one time-division processing is completed, the calculation result of the capacity capable of holding two calculation results It suffices to prepare the storage unit 65.
  • the size (capacity) of the calculation result storage unit 65 in each PE 42 is K / N, which is T in the second embodiment.
  • the size of the calculation result storage unit 65 required for one entire convolutional layer is K ⁇ M, but in the second embodiment, it is T ⁇ M ⁇ N. .
  • T is smaller than K / N, the relationship of T ⁇ N ⁇ M ⁇ K ⁇ M holds.
  • a plurality of PEs 42 are used to process channel direction and kernel direction weights in parallel.
  • multiplication processing of non-zero elements and weights included in input data is performed.
  • addition processing in the channel direction is performed.
  • the nonzero element present in the input data is also referred to as activation sparsity. That is, if there is a bias in activation sparsity, a bias in execution time in the PE 42 will occur.
  • an inference apparatus 10 which eliminates the above-mentioned bottleneck as much as possible.
  • FIG. 10 shows two different input data to be input to the PE 42. As shown in FIG. 10,
  • FIG. 10 (a) there are two non-zero elements, so processing results can be obtained relatively quickly, while in FIG. 10 (b) there are seven non-zero elements, so it takes time to obtain processing results.
  • the PE 42 processing the input data in FIG. 10A is on standby until the operation of the PE 42 processing the input data in FIG. 10B is completed.
  • the PE 42 that processes the input data shown in FIG. 10B is a bottleneck of the convolution operation.
  • the other PEs 42 are on standby until the processing of the PE that processes the input data shown in FIG. 10B ends, effective use of resources can not be performed.
  • the weight groups are rearranged in the kernel direction in order to eliminate the above-mentioned inconvenience (the slow processing of the PE 42 is a bottleneck and efficient utilization of resources is inhibited).
  • rearranging the weight group indicates changing the use order (calculation order) of the weight group that performs multiplication processing on input data. For example, in FIG. 3, the multiplication process with input data is performed in the order of weight group 511 and weight group 512 by the multiplication process with input data in order of weight group 512 and weight group 511. This corresponds to "sorting of weight groups in the kernel direction".
  • changing the arrangement in the memory in which the weight group is stored in order to realize the change of the calculation order of the weight group is also equivalent to “rearrangement of the weight group in the kernel direction”. That is, the operation of the processor (convolution control unit) that accesses the memory and reads the weight group may be changed to realize the rearrangement of the weight group, or the arrangement in the memory may be changed without changing the operation of the processor. By doing this, sorting of weight groups may be realized.
  • FIG. 11 is a diagram for explaining the problem solution according to the third embodiment.
  • the parameters that change due to the operation by the pooling layer are the sizes W and H of the input data.
  • parameters related to weight such as weight size R and S, input channel number C, and output channel number K do not change before and after pooling. That is, in the example of FIG. 11, the sizes R and S of the weight of the second layer, the number of input channels C2 and the number of output channels K2 do not change before and after pooling.
  • the sizes W and H of the input data change due to the pooling process, and the change is illustrated in FIG.
  • FIG. 11 implicitly assumes the application of the pooling layer.
  • the cause of the above-mentioned inconvenience is bias (variation) in activation sparsity.
  • bias variation
  • the activation sparsity of the data 401 as the second layer input and the data 402 are significantly different, a large difference occurs in the processing time of the second layer convolution operation using the data 401 and 402. Sometimes.
  • the input data of the second layer is the output data of the layer (first layer) of the preceding stage. Therefore, the bias of activation sparsity in the output data of the first layer affects the calculation processing (execution time) of the second layer.
  • the output data from each layer is the one to which the activation function (for example, the ReLU function) is applied.
  • the ReLU function is a function that replaces a negative value with "0" and outputs a positive value as it is. Therefore, if the data input to the activation function has many negative values, the data input to the subsequent layer tends to have many “0s”. Conversely, if the data input to the activation function has many positive values, the data input to the subsequent layer tends to have less “0”. Note that negative values are not included in the input data to each layer because of the characteristics of the activation function.
  • Whether the data input to the activation function has a positive value or a negative value is determined by a convolution operation. Since the convolution operation is affected by both the input data and the weight, if each element of the weight has many negative values, the operation result is likely to be negative. That is, if the weight contains many negative values, the output of the layer after the activation function is applied contains many “0” s, and if the weight contains many positive values, The output of the layer after the activation function is applied tends to include many non-zero elements.
  • the weight groups of the first layer are rearranged in order to suppress the bias of activation sparsity in the input of the second layer, that is, the output of the first layer. Specifically, in the output data of the first layer, the weight groups of the first layer are rearranged so that variation in activation sparity does not occur as much as possible between adjacent data. That is, the order of calculation of weight groups is switched in the kernel direction.
  • the total number of negative numbers included in each weight group arranged in the kernel direction is calculated as an evaluation criterion, and the weights are rearranged so that the evaluation criterion is in descending or ascending order.
  • the order of the output data of the first layer is switched.
  • the output data corresponding to the weight group 521 is data 401
  • the output data corresponding to the weight group 522 is data 402.
  • the output data of the first layer becomes the order of the data 402 and the data 401.
  • the weight (weight in the channel direction) included in the weight group of each layer is prepared in association with the channel of the input data, so when the order of the output data of the previous stage changes, the correspondence of the input data in the subsequent layer changes. It will be. Therefore, it is necessary to change the order in the channel direction of the weights included in the weight group in the own layer (change the correspondence with the input data) so as to conform to the input data whose order has changed.
  • FIG. 12 is a diagram showing an example of the internal configuration of the convolutional layer control unit 40 according to the third embodiment.
  • the convolutional layer control unit 40 includes a weight acquisition unit 311, an evaluation index calculation unit 312, a weight group rearranging unit 313, an order information notification unit 314, an order information acquisition unit 315, and a weight arrangement. And a replacement unit 316.
  • the weight acquisition unit 311 is means for reading the weight from the weight storage unit 52. The read weight is handed over to the evaluation index calculator 312.
  • the evaluation index calculation unit 312 is means for calculating an evaluation index for evaluating a weight group.
  • the evaluation index is used to rearrange weight groups.
  • FIG. 13 is a diagram for explaining the operation of the convolutional layer control unit 40 according to the third embodiment.
  • FIG. 13 illustrates eight weight groups W G0 to W G7 .
  • Each weight group includes weights for four channels.
  • the weights corresponding to each channel are illustrated as W C0 to W C3 . That is, each row shown in FIG. 13 indicates a weight group in the kernel direction, and each of the weight groups has four weights in the channel direction.
  • FIG. 13A shows the weights immediately after the evaluation index calculation unit 312 acquires them.
  • the evaluation index calculator 312 calculates the total number of negative numbers in each weight group. For example, in FIG. 13 (a), the total number of negative numbers in the weight group W G0 is "5", the total number of negative numbers in the weight group W G1 is calculated as "4".
  • the weight group rearranging unit 313 is a unit that rearranges, in the kernel direction, the weight group to be multiplied by the input data based on the calculated evaluation index. For example, the weight group rearrangement unit 313 rearranges the weight groups such that the evaluation index is in descending order.
  • FIG.13 (b) shows the result of having rearranged the weight (weight group) shown to Fig.13 (a) so that an evaluation index may become descending order.
  • the convolutional layer control unit 40 When the rearrangement of weight groups by the weight group rearrangement unit 313 is completed, the convolutional layer control unit 40 operates in the same manner as the convolutional layer control unit 40 according to the first and second embodiments. More specifically, the convolutional layer control unit 40 sets weights to the respective PEs 42, and when the convolutional operation by the respective PEs 42 is completed, notifies the convolutional layer control unit 40 of the subsequent stage to that effect.
  • the order information notification unit 314 is a means for notifying other layers of order information related to weight group rearrangement by the weight group rearrangement unit 313. More specifically, the order information notification unit 314 notifies the convolutional layer control unit 40 in the subsequent stage of the order information. In the example of FIG. 13, the order information notification unit 314 sets the arrangement order of weight groups such as W G2 , W G3 , W G0 , W G1 , W G7 , W G4 , W G6 , and W G5 to the convoluted layer control unit 40 in the subsequent stage. Notify
  • the order information acquisition unit 315 is a means for acquiring order information on rearrangement of weight groups from the convolutional layer control unit 40 in the previous stage.
  • the weight rearranging unit 316 is a means for changing the correspondence between the input data and the weights included in the weight group based on the acquired order information. More specifically, the weight reordering unit 316 rearranges the weights included in the weight group of the own layer in the channel direction based on the order information acquired from the convolutional layer control unit 40 of the previous stage. In the example of FIG. 13, the weights included in each weight group are rearranged in the channel direction in the order of W G2 , W G3 , W G0 , W G1 , W G7 , W G4 , W G6 , and W G5 .
  • the weight rearranging unit 316 reads the weights from the weight storage unit 52, rearranges the weights included in each weight group in the channel direction according to the order information, and stores the rearranged weights in the weight storage unit 52 again. As described above, the weight rearranging unit 316 changes the correspondence between the weight included in each weight group and the input data, in response to the change of the input data by rearranging the weight group in the previous layer. . When the reordering of weights by the weight reordering unit 316 is completed, the convolutional layer control unit 40 operates in the same manner as the convolutional layer control unit 40 of the first and second embodiments.
  • FIG. 14 is a flowchart for explaining the operation of the convolutional layer control unit 40 according to the third embodiment.
  • the operation of the convolutional layer control unit 40 according to the third embodiment will be outlined with reference to FIG.
  • FIG. 14A is a flowchart showing the operation of the convolutional layer control unit 40 in the case of rearranging the weight group in the kernel direction.
  • the convolutional layer control unit 40 obtains a weight from the weight storage unit 52 (step S101). Thereafter, the convolutional layer control unit 40 calculates an evaluation index (step S102). Thereafter, the convolutional layer control unit 40 rearranges the weight groups in the kernel direction based on the calculated evaluation index (step S103). Thereafter, the convolutional layer control unit 40 notifies the convolutional layer control unit 40 of the subsequent stage of order information on the order of the rearranged weight group.
  • FIG. 14B is a flowchart showing the operation of the convolutional layer control unit 40 in the case of rearranging weights in the channel direction.
  • the convolutional layer control unit 40 acquires order information from the convolutional layer control unit 40 of the previous stage (step S201). After that, the convolutional layer control unit 40 rearranges the weights included in each weight group in the channel direction based on the acquired order information (step S202).
  • the weight groups are rearranged in the kernel direction so as to suppress the bias of activation sparsity.
  • the rearrangement is performed so that the number of “0” s included in the output data is as close as possible between adjacent data. For example, as shown in FIG. 13 (b), when sorting is performed so that the total negative number of each weight group is in descending order, adjacent ones of the rearranged weight groups have similar negative numbers. Therefore, the number of “0s” in the processing result of the convolution operation is likely to be similar. Since the processing result of the convolutional operation corresponds to the input data in the subsequent layer, the above-mentioned rearrangement suppresses the bias of activation sparsity in the subsequent layer.
  • the fact means that the bias of activation sparsity to the PEs 42 processed in parallel in the subsequent layer is suppressed, and it is possible to suppress a large difference in execution time between the PEs 42 processed in parallel. As a result, it is possible to solve the problem that the slow processing PE 42 becomes a bottleneck and the efficient use of resources is impeded.
  • FIG. 15 is a diagram showing an example of the hardware configuration of the inference apparatus 10.
  • the inference apparatus 10 can be configured by a so-called information processing apparatus (computer), and has a configuration illustrated in FIG.
  • the inference apparatus 10 includes a central processing unit (CPU) 71, a memory 72, an input / output interface 73, a network interface card (NIC) 74 as communication means, and the like, which are mutually connected by an internal bus.
  • CPU central processing unit
  • memory 72 volatile and non-volatile memory
  • NIC network interface card
  • the configuration shown in FIG. 15 does not mean that the hardware configuration of the inference apparatus 10 is limited.
  • the inference apparatus 10 may include hardware (not shown).
  • the number of CPUs and the like included in the inference apparatus 10 is not limited to the example illustrated in FIG. 15, and, for example, a plurality of CPUs may be included in the inference apparatus 10.
  • the memory 72 is a random access memory (RAM), a read only memory (ROM), or an auxiliary storage device (such as a hard disk).
  • RAM random access memory
  • ROM read only memory
  • auxiliary storage device such as a hard disk
  • the input / output interface 73 is a means serving as an interface of a display device and an input device (not shown).
  • the display device is, for example, a liquid crystal display or the like.
  • the input device is, for example, a device that receives user operations such as a keyboard and a mouse.
  • the function of the inference apparatus 10 is realized by the above-described processing module.
  • the processing module is realized, for example, by the CPU 71 executing a program stored in the memory 72.
  • the program can be downloaded via a network, or can be updated using a storage medium storing the program.
  • the processing module may be realized by a semiconductor chip. That is, the function performed by the processing module may be realized by executing software in some hardware.
  • the inference apparatus 10 described in the first to third embodiments is an example, and the configuration and operation thereof are not limited. Hereinafter, various modifications will be described.
  • the case where the weight is divided in the channel direction and the convolution operation is performed is mainly described, but the division in the channel direction may not be performed.
  • FIG. 6 illustrates the case where four PEs process channel direction weights in parallel, eight PEs may process all channel direction weights in parallel.
  • each PE 42 sequentially processes a plurality of weight groups and a plurality of weights assigned to each PE, but the sequential process may not be performed.
  • the PE (0, 0) processes the deepest weight included in the weight group in the first row, and then processes the fifth weight from the deep side.
  • these PEs process in parallel the weights from the innermost to the fourth from the weight group in the first row. It is also good.
  • the four PEs (0, 0) to PE (3, 0) may process in parallel the fifth to eighth (most foreground) weights from the back included in the weight group in the first row.
  • the weight reading unit 62 notifies the multiplication / addition unit 63 of “0” even if the element of the read weight is “0”. However, if the value of the read weight is “0”, the weight reading unit 62 may notify the multiplication / addition unit 63 to that effect. In this case, when the multiplication / addition unit 63 is notified that the read value is “0”, multiplication processing with the input data can be disabled (the multiplication processing can be skipped). .
  • the configuration in which the input data processing unit 61 is included in each PE 42 has been described.
  • a module corresponding to the input data processing unit 61 may be commonly provided in the PE 42 in the kernel direction.
  • the operation related to non-zero element detection by the input data processing unit 61 is the same. Therefore, the non-zero element and its index may be notified (broadcasted) to each PE 42 from the input data processing unit 61 provided in common.
  • each PE 42 may be disposed downstream of the result storage unit 53.
  • the non-zero element from the input data in the subsequent layer and the index detection processing of the input data become unnecessary. The process may be performed in advance.
  • each PE 42 may directly read out the necessary weights from the weight storage unit 52.
  • the convolutional layer control unit 40 may notify each PE 42 of address information of a necessary weight.
  • the weight reading unit 62 of each PE 42 may read the necessary weight according to the address information.
  • the standby unit 43 and the result addition unit 44 are described as different modules in the above embodiment, the function of one module may be realized by the other module. That is, the standby unit 43 and the result addition unit 44 may be integrated.
  • the weight groups are rearranged so that the evaluation index is in descending order, but it is a matter of course that the evaluation index may be rearranged in ascending order. If the weight groups are rearranged so that the evaluation index is in descending order, input data having a large number of "0" s will be processed in parallel in the subsequent layer first. On the other hand, if the weight groups are rearranged so that the evaluation index is in ascending order, input data having many non-zero elements will be processed in parallel in the subsequent layer first.
  • the total number of negative numbers included in each weight group is calculated as an index for evaluating a weight group, but another value may be calculated as an evaluation index.
  • the sum of elements in each weight group may be calculated as an evaluation index.
  • the weight group is rearranged in the process of inferring the input data by the inference apparatus 10.
  • the above rearrangement may be performed before setting the weight group in the inference apparatus 10.
  • the weight setting device 80 that sets learned weights from the outside to the inference device 10 may rearrange the weight groups.
  • sorting may be performed in advance.
  • the weight group may be rearranged in the learning device 90 that provides the weight to the inference device 10. That is, in the learning device 90, learning processing is repeated in which “inference”, “estimated error feedback (error back propagation)”, and “weight update” are repeated using teacher data.
  • the series of learning processes may be set as “inference”, “estimated error feedback”, “weight update”, “weight (weight group) rearrangement”.
  • the learning device 90 can receive the effect described in the third embodiment by changing the flow at the time of learning as described above. There is no difference between the inference device 10 and the learning device 90 from the viewpoint of utilization of the convolutional neural network (intermediate layer operation).
  • the input data to the inference apparatus 10 is data to be inferred, and the input data to the inference unit of the learning apparatus 90 is teacher data, but there is no difference between the two in terms of “inference”. That is, an error back propagation unit 91 performing error back propagation, a weight update unit 92 performing weight update, and a sorting unit 93 performing sorting of weights (weight groups) are added to the inference apparatus 10 described above.
  • the learning device 90 can be configured (see FIG. 18).
  • the error back propagation unit 91 and the weight update unit 92 can be realized by a known algorithm or the like.
  • the sorting unit 93 can be realized by the functions of the evaluation index calculating unit 312, the weight group sorting unit 313, the weight sorting unit 316, and the like described in the third embodiment.
  • the control unit The plurality of PEs are controlled so that a part of multiplication processes are processed in parallel among multiplication processes of each of the plurality of input data and each of the weights corresponding to each of the plurality of input data, preferably The inference apparatus of mode 1
  • the control unit Among multiplication processing of each of the plurality of input data and each of the plurality of weights included in the plurality of weight groups, multiplication using a weight corresponding to the same input data which is a weight of different weight groups
  • the plurality of PEs are controlled such that part of processing is performed in parallel.
  • the inference apparatus Preferably, the inference apparatus according to mode 3, further comprising an input data division unit that divides the plurality of input data and supplies the divided input data to a PE that processes the partial multiplication process in parallel.
  • the inference apparatus according to mode 3 or 4 further comprising: a standby unit that waits until the operation of each of the plurality of PEs processing the part of the multiplication processes in parallel is completed.
  • the inference apparatus according to any one of modes 3 to 5, further comprising a result addition unit that adds the multiplication results of each of the plurality of input data and a plurality of weights included in one weight group.
  • Each of the plurality of PEs is A non-zero element whose value is other than zero from the input data input, and an input data processing unit for specifying the position of the non-zero element;
  • a weight reading unit for reading out from a storage medium storing the weight group a value of a position corresponding to the position of the non-zero element among the elements of the weight to be multiplied by the input data input;
  • a multiplication and addition unit that multiplies the non-zero element and the value read by the weight reading unit; Equipped with Preferably, the multiplication and addition unit adds the multiplication result when the multiplication on the non-zero element included in the input data is completed, preferably the inference apparatus according to any one of the first to sixth aspects.
  • Each of the plurality of PEs is The inference device according to Aspect 7, further comprising an operation result storage unit that stores the addition result calculated by the multiplication and addition unit.
  • the control unit Preferably, the inference apparatus according to any one of modes 3 to 8, causing a plurality of processings of multiplying one input data and weights included in different weight groups to be performed by each of the plurality of PEs in a time division manner. .
  • the control unit An evaluation index calculation unit that calculates an evaluation index for evaluating the weight group; A weight group rearranging unit that rearranges the order of the weight group to be multiplied to input data based on the evaluation index; Preferably, the inference apparatus according to any one of the first to ninth aspects.
  • the control unit Preferably, the inference apparatus according to Aspect 10, further comprising: an order information notification unit configured to notify another layer of order information related to rearrangement of the weight group.
  • the control unit An order information acquisition unit that acquires the notified order information;
  • a weight rearranging unit that changes the correspondence between input data and weights included in the weight group based on the order information;
  • the inference device of Form 11 further comprising: [Form 13] It is as a convolution operation execution method concerning the above-mentioned 2nd viewpoint.
  • [Form 14] It is as the program which concerns on the above-mentioned 3rd viewpoint.
  • Form 15 A learning device that performs weight inference using teacher data, feedback of a weight estimation error, update of weights, and reordering of weights, Sorting of the weights is A learning device performed based on an evaluation index for evaluating weights.
  • the forms 13 and 14 can be developed as in the forms 2 to 12 in the same manner as the form 1.

Landscapes

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

Abstract

本発明は、畳み込み層における乗算回数を低減する推論装置を提供する。推論装置は、複数のPE(Processing Element)と、制御部と、を備える。制御部は、複数の入力データのそれぞれと、複数の入力データのそれぞれに対応する複数の重みを含む重み群と、を用いた畳み込みニューラルネットワークにおける畳み込み演算を複数のPEを制御することで実現する。さらに、複数のPEのそれぞれは、1つの入力データと1つの重みの乗算処理を含む演算を実行すると共に、複数の入力データそれぞれに含まれる値がゼロではない要素を用いて畳み込み演算に含まれる乗算処理を実行する。

Description

推論装置、畳み込み演算実行方法及びプログラム
 (関連出願についての記載)
 本発明は、日本国特許出願:特願2017-204610号(2017年10月23日出願)の優先権主張に基づくものであり、同出願の全記載内容は引用をもって本書に組み込み記載されているものとする。
 本発明は、推論装置、畳み込み演算実行方法及びプログラムに関する。
 近年、多層ニューラルネットワークによる画像認識等に関する技術開発が活発に行われている。このような技術は、深層学習(ディープラーニング)とも称される。とりわけ、画像認識等の技術分野において、畳み込みニューラルネットワークが多く用いられる。畳み込みニューラルネットワークには、後述するように、畳み込み層、プーリング層、全結合層が含まれる。畳み込み層では、カーネルを画像全体に畳み込む処理が行われる。
 画像全体にカーネルを畳み込む処理(画像にフィルタを適用する処理)により、画像に畳み込まれた特徴の集合が得られる。当該特徴の集合は、特徴マップとも称される。特徴マップは、畳み込んだ値に活性化関数を適用することで得られる。例えば、画像認識の分野では、ReLU(Rectified Linear Unit)が活性化関数として用いられることが多い。
 上述のように、畳み込み層では、画像(入力画像)にカーネル(重み、フィルタ)を畳み込む処理が行われる。その際、画像の各画素と重みを乗算する処理が数多く行われる。非特許文献1及び2は、当該乗算処理に関する負荷を低減する技術を開示する。具体的には、非特許文献1及び2には、「0」に任意の値を乗算してもその結果は「0」となることを利用した乗算処理の回数低減に関する技術が開示されている。
Song Han, et. al., "EIE: Efficient Inference Engine on Compressed Deep Neural Network", International Symposium on Computer Architecture (ISCA) 2016. Angshuman Parashar, et. al., "SCNN: An Accelerator for Compressed-sparse Convolutional Neural Networks", ISCA '17 Proceedings of the 44th Annual International Symposium on Computer Architecture, 2017
 なお、上記先行技術文献の各開示を、本書に引用をもって繰り込むものとする。以下の分析は、本発明者らによってなされたものである。
 上述のように、深層学習、とりわけ、畳み込み層の演算では膨大な数の乗算処理が必要となる。膨大な乗算処理は、大規模なハードウェアを要求したり、強力な演算処理能力を有するプロセッサを要求したりする。このような要求に答えるため、非特許文献1や2に開示された技術が必要となる。
 ここで、非特許文献1に開示された技術は、全結合層(FC layer;Fully Connected layer)における乗算回数の低減を目的としたものである。全結合層における乗算回数の低減も要望されるが、全結合層における乗算回数と畳み込み層における乗算回数を比較すれば、畳み込み層における乗算回数の方が圧倒的に多い。非特許文献1に開示された技術は、全結合層を対象とした乗算処理の低減を目的としており、畳み込み層の乗算処理を低減することはできない。
 本発明は、畳み込み層における乗算回数を低減することに寄与する、推論装置、畳み込み演算実行方法及びプログラムを提供することを主たる目的とする。
 本発明乃至開示の第1の視点によれば、複数のPE(Processing Element)と、複数の入力データのそれぞれと、前記複数の入力データのそれぞれに対応する複数の重みを含む重み群と、を用いた畳み込みニューラルネットワークにおける畳み込み演算を前記複数のPEを制御することで実現する、制御部と、を備え、前記複数のPEのそれぞれは、1つの入力データと1つの重みの乗算処理を含む演算を実行すると共に、前記複数の入力データそれぞれに含まれる値がゼロではない要素を用いて前記畳み込み演算に含まれる乗算処理を実行する、推論装置が提供される。
 本発明乃至開示の第2の視点によれば、それぞれが、1つの入力データと1つの重みの乗算処理を含む演算を実行する、複数のPE(Processing Element)を含み、複数の入力データのそれぞれと、前記複数の入力データのそれぞれに対応する複数の重みを含む重み群と、を用いた畳み込みニューラルネットワークにおける畳み込み演算を実現する、推論装置において、前記複数のPEのそれぞれが、前記複数の入力データそれぞれに含まれる値がゼロではない要素を特定するステップと、前記特定された要素を用いて前記畳み込み演算に含まれる乗算処理を実行するステップと、を含む、畳み込み演算実行方法が提供される。
 本発明乃至開示の第3の視点によれば、それぞれが、1つの入力データと1つの重みの乗算処理を含む演算を実行する、複数のPE(Processing Element)を含み、複数の入力データのそれぞれと、前記複数の入力データのそれぞれに対応する複数の重みを含む重み群と、を用いた畳み込みニューラルネットワークにおける畳み込み演算を実現する、推論装置に搭載されたコンピュータに、前記複数の入力データそれぞれに含まれる値がゼロではない要素を特定する処理と、前記特定された要素を用いて前記畳み込み演算に含まれる乗算処理を実行する処理と、を実行させる、プログラムが提供される。
 なお、このプログラムは、コンピュータが読み取り可能な記憶媒体に記録することができる。記憶媒体は、半導体メモリ、ハードディスク、磁気記録媒体、光記録媒体等の非トランジェント(non-transient)なものとすることができる。本発明は、コンピュータプログラム製品として具現することも可能である。
 本発明乃至開示の各視点によれば、畳み込み層における乗算回数を低減することに寄与する、推論装置、畳み込み演算実行方法及びプログラムが、提供される。
一実施形態の概要を説明するための図である。 画像認識における中間層(隠れ層)の構造を説明するための図である。 畳み込み層における演算を説明するための図である。 第1の実施形態に係る推論装置の内部構成の一例を示す図である。 第1の実施形態に係る推論装置に含まれる中間層実行部の内部構成の一例を示す図である。 第1の実施形態に係る畳み込み層実行部に含まれるPEの動作を説明するための図である。 各PEにて実行される演算について説明するための図である。 第1の実施形態に係る畳み込み層実行部の内部構成の一例を示す図である。 第2の実施形態に係る畳み込み層実行部の内部構成の一例を示す図である。 異なる2つの入力データの一例を示す図である。 第3の実施形態による問題解決を説明するための図である。 第3の実施形態に係る畳み込み層制御部の内部構成の一例を示す図である。 第3の実施形態に係る畳み込み層制御部の動作を説明するための図である。 第3の実施形態に係る畳み込み層制御部の動作を説明するためのフローチャートである。 推論装置のハードウェア構成の一例を示す図である。 重み設定装置と推論装置を含むシステム構成の一例を示す図である。 学習装置と推論装置を含むシステム構成の一例を示す図である。 図17に示す学習装置の内部構成の一例を示す図である。
 初めに、一実施形態の概要について説明する。なお、この概要に付記した図面参照符号は、理解を助けるための一例として各要素に便宜上付記したものであり、この概要の記載はなんらの限定を意図するものではない。また、各図におけるブロック間の接続線は、双方向及び単方向の双方を含む。一方向矢印については、主たる信号(データ)の流れを模式的に示すものであり、双方向性を排除するものではない。さらに、本願開示に示す回路図、ブロック図、内部構成図、接続図などにおいて、明示は省略するが、入力ポート及び出力ポートが各接続線の入力端及び出力端のそれぞれに存在する。入出力インターフェイスも同様である。
 一実施形態に係る推論装置100は、複数のPE(Processing Element)101と、制御部102と、を備える(図1参照)。制御部102は、複数の入力データのそれぞれと、複数の入力データのそれぞれに対応する複数の重みを含む重み群と、を用いた畳み込みニューラルネットワークにおける畳み込み演算を複数のPE101を制御することで実現する。さらに、複数のPE101のそれぞれは、1つの入力データと1つの重みの乗算処理を含む演算を実行すると共に、複数の入力データそれぞれに含まれる値がゼロではない要素を用いて畳み込み演算に含まれる乗算処理を実行する。
 上述のように、畳み込み層の実現には非常に多くの乗算処理が必要となるが、推論装置100に含まれる各PE101は、乗算処理を実行する際に、ゼロである入力データと重みの乗算処理を実行しない。その結果、畳み込み層における乗算回数は減少する。
 以下に具体的な実施の形態について、図面を参照してさらに詳しく説明する。なお、各実施形態において同一構成要素には同一の符号を付し、その説明を省略する。
[第1の実施形態]
 第1の実施形態について、図面を用いてより詳細に説明する。
 図2は、画像認識における中間層(隠れ層)の構造を説明するための図である。図2を参照すると、入力層と中間層が接続され、中間層と出力層が接続される。なお、第1の実施形態では、入力層に入力されるデータとして画像データを想定している。入力層は、取得した入力データから中間層に出力するためのデータを作成する。例えば、画像データがRGB(Red Green Blue)の3チャネルから構成されている場合には、入力層は、各色の画像データを生成し、中間層に出力する。中間層は、畳み込みニューラルネットワーク(CNN(Convolutional Neural Network))により入力データの特徴部分が抽出されたデータを1つのノードに結合し、特徴変数を出力する。出力層は、中間層から取得した特徴変数に基づき、入力データを分類する。
 中間層には、複数の「層(レイヤ)」が含まれ、初段の層が入力層と接続され、最終段の層は全結合層と接続されている。
 中間層をなす各層には、畳み込み層、活性化関数、プーリング層が含まれ得る。なお、図2に示す構成は例示であり、中間層の構成を限定する趣旨ではない。場合によっては、中間層に活性化関数、プーリング層が含まれていなくともよい。
 畳み込み層は、取得した入力データから特徴量を抽出する。当該抽出された特徴量には活性化関数が適用され、当該活性化関数が適用された後の特徴量がプーリング層に入力される。プーリング層では、取得した特徴量を結合する。その際、プーリング層では、物体の位置が変動しても同一の物体と判断できるようにするための処理(不変性を得るための処理)が行われる。例えば、対象物の位置ずれを許容するための処理がプーリング層にて行われる。なお、図2では、「活性化関数」を適用するための層が、畳み込み層やプーリング層と独立した形で記載されているが、実際には、「活性化関数」が畳み込み層及びプーリング層のいずれかの層に含まれる構成であってもよい。
 図2に示すように、中間層をなす各層は、縦続接続されており、前段の層の出力が後段の層の入力に相当する。
 図3は、畳み込み層における演算を説明するための図である。図3を参照すると、畳み込み層は、入力データと重み(フィルタ)を乗算することで、特徴量を出力する。
 なお、本願開示にて使用する各種パラメータは図3に図示するように定める。入力データにおける一の方向(図3では縦方向)のサイズを「H」と表記する。また、入力データにおける他の方向(図3では幅方向)のサイズを「W」と表記する。例えば、H=25、W=25であれば、H×W=625個の画素が1つの入力データのサイズとなる。さらに、層の入力チャネル数を「C」と表記する。
 重みにおける一の方向(図3では縦方向)のサイズを「R」と表記する。また、重みにおける他の方向(図3では幅方向)のサイズを「S」と表記する。例えば、R=3、S=3とすれば、R×S=9が1つの重みのサイズである。
 図3に示す「K」は層の出力チャネル数である。層の出力チャネル数Kと重みの種類数は一致する。例えば、図3に示す重みの種類数が「4」であれば、層の出力チャネル数Kも「4」となる。
 1種類の重みには、入力チャネル数Cと同じ数の重みが含まれる。例えば、入力チャネル数Cが「3」であれば、1種類の重みには3つの重みが含まれる。1種類の重みに含まれるC個の重みは、C個の入力データそれぞれと対応付けられている。例えば、図3において、上段のC個の重みにおいて、一番手前の重みは一番手前の入力データと対応付けられている。
 なお、本願開示において、入力チャネル数Cごとに区分された重みの集合を「重み群」と表記する。各重み群には、C個の重みが含まれる。また、重みの種類数は出力チャネル数Kに一致するので、畳み込み層における重みの数は、K×C個となる。さらに、本願開示において、一の入力データや一の重みを基準として他の入力データや重みに向かう方向を「チャネル方向」と表記する。同様に、一の重み群を基準として他の重み群に向かう方向を「カーネル方向」と表記する。例えば、図3に示す重み501から重み502に向かう方向がチャネル方向であり、重み群511から重み群512に向かう方向がカーネル方向である。
 畳み込み層では、入力データから重みのサイズに相当するデータを抽出し、当該抽出したデータに含まれる要素と重みの対応する要素を乗算し、且つ、乗算結果をチャネル方向に加算する処理が実行される。例えば、図3に示すように、重みのサイズが3×3=9であれば、入力データから同じサイズのデータ(例えば、図3の一番手前に図示した入力データのうち四角の領域で囲まれたデータ;3×3=9のデータ)が抽出される。その後、抽出された入力データの各要素と対応する重みの各要素が乗算される。例えば、図3の例では、抽出された入力データにおける左上の要素「1」と対応する重み501の左上の要素「-1」が乗算される。畳み込み層では、このような処理が繰り返される(上述の例では9回繰り返される)。その後、乗算結果が加算される。上述の例では、(-1)+(-1)+1+0+0+0+(-1)+4+0=2となる。
 抽出されたデータと重みの乗算は、対応する入力データと重みの間で実行される。例えば、図3において、一番手前に図示した入力データに対応する重みは一番手前に図示された重み501とする。同様に、中間に図示した入力データに対応する重みが中間に図示した重み、最奥に図示した入力データに対応する重みが最奥に図示した重み502である。この場合、対応する入力データと重みの間で上記乗加算処理が繰り返される。
 さらに、上記乗加算処理の結果は、チャネル方向にて加算される。例えば、上述の例では、3チャネル(一番手前、中間、最奥)における乗加算結果が加算される。
 上記乗加算処理及びその後の加算処理は、重み群ごとに行われる。図3の例では、上段に図示した重み群511と入力データを用いた演算が行われ、下段に図示した重み群512に関しても同様の処理(同じ入力データを用いた乗加算処理及びその後の加算処理)が実行される。
 畳み込み層では、上記処理(乗加算処理及びチャネル方向への加算処理)を、抽出する入力データを変更しながら繰り返す。例えば、図3の一番手前の入力データに図示するように、抽出する領域をスライドさせながら入力データを切り出していく。当該切り出されたデータには、上記と同様の処理が適用される。
 上述のような入力データの抽出と、当該抽出された入力データに重みを乗算し、チャネル方向に加算する処理を繰り返すことで畳み込み層の出力データが得られる。なお、上述のように、入力データと重みの乗加算処理は重み群ごとに実行されるため、得られる出力データの数と重みの種類(重み群の数)は一致する。例えば、16個の重み群が用意されていれば、16個の出力データが得られる(K=16)。なお、各出力データのサイズ(縦方向のサイズ、幅方向のサイズ)は、入力データからデータを抽出する際の領域(ウィンドウ)をスライドする際の仕様により定まる。図3の例では、各出力データには、12(4×3)個の要素が含まれるように、入力データからデータが抽出される。
 第1の実施形態に係る推論装置10は、図3を用いて説明した畳み込み演算を推論の過程にて実行する。具体的には、図4に示すように、推論装置10は、その内部に、入力層を実現する入力層実行部11、中間層を実現する中間層実行部12、出力層を実現する出力層実行部13と、を含む。さらに、中間層実行部12には、畳み込み層を実現する畳み込み層実行部31、活性化関数を実行する活性化関数実行部32及びプーリング層を実現するプーリング層実行部33が各層に含まれる(図5参照)。なお、本願開示においては、図4及び図5に示す各種実行部のうち、畳み込み層実行部31について詳細に説明する。他の実行部に関しては、公知のアルゴリズム等により実現可能であるため、その説明を省略する。
 各層の畳み込み層実行部31は、複数のプロセッシングエレメント(PE;Processing Element)を用いて図3を用いて説明した畳み込み演算(乗加算処理)を実行する。
 図6は、畳み込み層実行部31に含まれるPEの動作を説明するための図である。図6には、入力チャネル数Cが「8」であり、出力チャネル数Kが「16」である場合の例を図示している。また、重みのサイズは8(例えば、S=2、R=4)である。なお、図6において、入力データ及び重みは1次元の配列(ベクトル)に展開して図示している。そのため、図6において、重みの各行は、異なる重み群(図3の例では、上段、下段の関係)を示す。なお、図6において、入力データ及び重みに付した色の濃淡は2つのデータの対応関係を示す。例えば、最も色の濃い最奥の入力データ及び重みは対応関係にある。上述のように、対応関係にある入力データと重みの間で乗算処理及び加算処理が行われる。より具体的には、チャネル方向の入力データと対応する重み群の乗算処理及びチャネル方向での加算処理が複数のPEを用いて実行される。
 図6に示す例では、入力チャネル数Cが「8」であり、重み群の数(出力チャネル数K)が「16」であるから、128(8×16)回の入力データと重みの乗算処理が実行される。その後、チャネル方向での加算処理が実行される。畳み込み層実行部31は、当該乗算処理(上記例では128回)を含む畳み込み演算を複数のPEを用いて実行する。ここでは、図6に示すように、畳み込み層実行部31は、16個のPEを用いて畳み込み演算を実行するものとして以下の説明を行う。但し、PEの個数を16に限定する趣旨ではないことは勿論である。
 畳み込み層実行部31は、複数のPEを用いて複数の重み群及び各重み群に含まれる複数の重みに関する畳み込み演算(乗加算)を並列に処理する。例えば、図6の例では、畳み込み層実行部31は、各重み群に含まれる8チャネル分の重みのうち4チャネル分の重みを並列に処理する。また、畳み込み層実行部31は、16個の重み群のうち4個の重み群を並列に処理する。
 チャネル方向の並列処理に関し、例えば、PE(0、0)~PE(3、0)は図6の1行目に含まれる最奥から4番目までの重みを並列に処理する(並列処理を開始する)。また、各PEは、並列数(上記の例では4)に相当する数だけスキップした位置にある入力データ及び重みを用いた畳み込み演算を逐次的に実行する。例えば、図6に示す例では、PE(0、0)は、1行目(最上段)の重み群に含まれる重みのうち、最奥の重みに関する演算が終了すると、奥から5番目の重みに関する畳み込み演算を実行する。
 カーネル方向の分割に関し、例えば、PE(0、0)~PE(0、3)は、図6に示す最奥の重みのうち1行目から4行目までの重みを並列に処理する(並列処理を開始する)。また、各PEは、並列数(上記例では4)に相当する数だけスキップした位置にある重み群に含まれ、対応するチャネルの重みを用いた畳み込み演算を逐次的に実行する。例えば、図6に示す例では、PE(0、0)は、最奥の重みの上から1行目、5行目、9行目、13行目の重みを用いた畳み込み演算を実行する。あるいは、PE(0、1)は、最奥の重みの上から2行目、6行目、10行目、14行目の重みを用いた畳み込み演算を実行する。
 図7は、各PEにて実行される演算について説明するための図である。各PEでは、初めに入力データから要素の値が「0」以外の要素(以下、ノンゼロ要素と表記する)とそのインデックスを特定する。例えば、図7の例では、ノンゼロ要素として「1」及びそのインデックスとして「1」が特定される。
 続いて、各PEでは、ノンゼロ要素のインデックスに対応する重みの要素と入力データのノンゼロ要素の乗算処理が行われる。当該乗算処理は、カーネル方向に順次行われる(逐次的に処理される)。図7の例では、入力データの「1」と重みの2列目の要素(2、1、3、0)が順次乗算され一次記憶領域に格納される。
 最初のノンゼロ要素に関する乗算処理が終了すると、入力データにおける次のノンゼロ要素とそのインデックスが特定される。図7の例では、ノンゼロ要素として「2」及びそのインデックスとして「7」が特定される。次に、上記と同様に、ノンゼロ要素である「2」と重みの8列目の要素(1、0、2、1)が順次乗算され一次記憶領域に格納される。ノンゼロ要素と重みの乗算結果は、重み群ごとに加算され、各PEの出力データとなる。図7の例では、1行目の重み群に関する結果として「4」が、2行目の重み群に関する結果として「1」がそれぞれ出力される。
 このように、各PEでは、畳み込み演算における入力データと重みの乗算処理と、重み群ごとの加算処理とが実行される。なお、各PEにおける演算結果(重み群ごとの加算結果)は、チャネル方向に加算されて最終的な畳み込み演算が終了することになる。つまり、畳み込み層における畳み込み演算では、入力データと重みの乗算処理が行われ、その後、重み群ごと(重み方向;即ち、S、Rの方向。図6の例では重みの行方向)の加算処理が行われる。その後、重み群ごとの加算結果は、チャネル方向にて加算される。
 図8は、畳み込み層実行部31の内部構成の一例を示す図である。図8を参照すると、畳み込み層実行部31には、畳み込み層制御部40と、入力データ分割部41と、複数のPE42-1~42-8と、待機部43と、結果加算部44と、各種記憶部と、が含まれている。各種記憶部には、入力データ記憶部51と、重み記憶部52と、結果記憶部53と、が含まれる。なお、以降の説明において、PE42-1~42-8を区別する特段の理由が無い場合には、単に「PE42」と表記する。
 上述のように、畳み込み層実行部31には複数のPE42が含まれる。当該複数のPE42は、チャネル方向に並列に畳み込み演算を行う単位で管理されている。図8の例では、PE42-1~42-4を一組とするPE42の集合がチャネル方向の畳み込み演算を並列に実行する。同様に、PE42-5~42-8を一組とするPE42の集合がチャネル方向の畳み込み演算を並列に実行する。各PE42は、1つの入力データと1つの重みの乗算処理を含む演算を実行する。また、各PE42は、複数の入力データそれぞれに含まれる値がゼロである要素を除外して畳み込み演算に含まれる乗算処理を実行する。
 入力データ分割部41は、複数のPE42それぞれと接続されている。同様に、畳み込み層制御部40は、複数のPE42それぞれと接続されている。待機部43は、チャネル方向を並列に畳み込み演算をするPE42の集合ごとに設けられる。図8の例では、PE42-1~42-4のそれぞれと待機部43が接続されている。待機部43は、結果加算部44と接続されている。なお、図8において、PE42-5~42-8に対応する待機部及び当該待機部に接続される結果加算部の図示を省略している。
 畳み込み層制御部40は、畳み込み層全体を制御する手段である。畳み込み層制御部40は、複数の入力データのそれぞれと、複数の入力データのそれぞれに対応する複数の重みを含む重み群と、を用いた畳み込みニューラルネットワークにおける畳み込み演算を複数のPE42を制御することで実現する。
 より具体的には、畳み込み層制御部40は、複数の入力データのそれぞれ(複数チャネルの各入力データ)と、複数の入力データそれぞれに対応する重みそれぞれとの乗算処理のうち、一部の乗算処理が並列に処理されるように複数のPE42を制御する。例えば、図6において、畳み込み層制御部40は、4チャネル分の入力データと対応する重みの畳み込み演算(乗算処理を含む演算)が並列に実行されるように、各PE42を制御する。
 また、畳み込み層制御部40は、複数の入力データのそれぞれ(複数チャネルの各入力データ)と、複数の重み群に含まれる複数の重みのそれぞれとの乗算処理のうち、異なる重み群の重みであって同一の入力データに対応する重みを用いた乗算処理の一部が並列に実行されるように複数のPE42を制御する。例えば、図6において、畳み込み層制御部40は、最奥の重みの1行目と対応する最奥の入力データの畳み込み演算(乗算処理を含む演算)と、最奥の重みの2行目と対応する最奥の入力データの畳み込み演算が並列して実行されるように、各PE42を制御する。
 また、畳み込み層制御部40は、他層の制御モジュールと制御情報の交換を行い、推論装置10全体としての機能を実現する。より具体的には、畳み込み層制御部40は、前段の層から畳み込み演算終了の通知を受信すると、自身が管理するPE42を制御して畳み込み演算を実行する(PE42を制御して畳み込み演算を実行させる)。さらに、畳み込み層制御部40は、後段の層に対して自層における畳み込み演算の終了を通知する。
 各層における畳み込み演算に利用する重みは、重み記憶部52に格納される。重み記憶部52に格納する重みは、推論装置10の動作前に予め設定されていてもよいし、上位装置(例えば、学習装置)から都度重みを受け取り、重み記憶部52に格納してもよい。重み記憶部52には、例えば、図6に示すような重みに関するデータが格納される。
 畳み込み層制御部40は、重み記憶部52から重みを読み出し、各PE42に必要な重み(データ)を配布する。例えば、図8に示すPE42-4が図6に示すPE(0、0)に該当する場合には、畳み込み層制御部40は、図6に示す最奥の重みのうち1行目、5行目、9行目、13行目の重みと、最奥から5番目の重みのうち1行目、5行目、9行目、13行目の重みをPE42-4に配布する。
 入力データ記憶部51は、入力データ(前段の層の出力データ)を記憶する。
 入力データ分割部41は、畳み込み層制御部40からの指示に従い入力データを入力データ記憶部51から読み出す。具体的には、畳み込み層制御部40は、入力データ全体から抽出する入力データのサイズ及び位置を指定し、当該指定したデータを読み出すように入力データ分割部41に指示する。
 入力データ分割部41は、指示に従って読み出したデータを各PE42に供給する。より具体的には、入力データ分割部41は、複数の入力データ(複数のチャネルを含む入力データ)を分割し、当該分割された入力データを乗算処理を並列に処理するPE42に供給する。即ち、入力データ分割部41は、読み出したデータをPE42ごとに分割して供給する。例えば、図6に示すように、チャネル方向並列数(チャネル方向で重みを並列に処理するPE42の数)が「4」であれば、入力データ分割部41は入力データを4分割し、分割された入力データを各PE42に供給する。図6に示す例では、8個の入力データが4分割され(図6の入力データに付した色の濃淡のように分割され)、4分割された各入力データは、各PE42に供給される。例えば、図6に示すPE(0、0)には、最奥の入力データと奥から5番目の入力データ(共に最も色の濃い入力データ)の2つが供給される。なお、対応するチャネルが同じであるPE42に関しては同じ入力データが供給される。例えば、図8では、PE42-1とPE42-5には同じ入力データが供給される。同様に、PE42-2とPE42-6には同じ入力データが供給される。
 各PE42には、PE制御部60と、入力データ処理部61と、重み読み出し部62と、乗加算部63と、重み一次記憶部64と、演算結果記憶部65と、が含まれる。
 入力データ分割部41が出力する入力データは、入力データ処理部61が取得する。畳み込み層制御部40が配布する重みは、PE制御部60が取得し、重み一次記憶部64に格納する。
 PE42は、重み一次記憶部64に格納された重み(配布された重み)と入力データ分割部41から取得した入力データを用いて畳み込み演算を実行する。より具体的には、図7を用いて説明した処理、即ち、入力データと対応する重み間の乗算処理及び重み群ごとの加算処理を実行する。
 入力データ処理部61は、入力した入力データから値がゼロ以外であるノンゼロ要素と当該ノンゼロ要素の位置を特定する。より具体的には、入力データ処理部61は、入力データからノンゼロ要素と対応するインデックスを抽出する。入力データ処理部61は、抽出したインデックスを重み読み出し部62に引き渡す。また、入力データ処理部61は、ノンゼロ要素を乗加算部63に引き渡す。
 重み読み出し部62は、入力データと乗算される重みの要素のうち、上記ノンゼロ要素の位置(インデックス)に相当する位置の値を、重み群を記憶する記憶媒体から読み出す。より具体的には、重み読み出し部62は、取得したインデックスに相当する重みの要素を重み一次記憶部64から逐次読み出す。重み読み出し部62は、読み出した値を乗加算部63に引き渡す。
 乗加算部63は、ノンゼロ要素と重み読み出し部62により読み出された値を乗算する。より具体的には、乗加算部63は、入力データ処理部61から取得したノンゼロ要素と重み読み出し部62から取得した重みの要素を乗算する。乗加算部63は、乗算結果をレジスタ等の一次記憶領域に保存する。
 入力データ処理部61、重み読み出し部62及び乗加算部63は、上記処理を繰り返す。入力データ処理部61は、入力データに関して全てのノンゼロ要素を処理した場合には、その旨を乗加算部63に通知する。当該通知を取得すると、乗加算部63は、重み群ごとに乗算結果を加算し、加算結果を演算結果記憶部65に格納する。つまり、入力データに含まれるノンゼロ要素に関する乗算が終了すると、乗加算部63は、乗算結果を加算する。
 PE制御部60は、演算結果が演算結果記憶部65に格納されると、入力データ分割部41から供給された入力データのうち処理をしていない入力データが存在するか否かを判断する。処理されていない入力データが存在する場合には、PE制御部60は、入力データ処理部61等を制御し、処理されていない入力データに関して上記説明した乗加算処理を実行する。例えば、図6に示すPE(0、0)に対し、最奥と奥から5番目の入力データが供給されている場合を考える。この場合、PE制御部60は、最初の入力データ(例えば、最奥の入力データ)に関する乗加算処理が終了すると、次の入力データ(例えば、奥から5番目の入力データ)に関する乗加算処理を実行するように入力データ処理部61等を制御する。即ち、各PE42は、一の入力データに関する畳み込み演算が終了すると、他の入力データに関する畳み込み演算を逐次的に実行する。
 PE制御部60は、他の入力データ(次の入力データ)に関する畳み込み演算が終了すると、当該他の入力データによる演算結果と先の入力データによる演算結果をチャネル方向に加算し、その結果を演算結果記憶部65に格納する。
 PE制御部60は、全ての入力データに関する畳み込み演算が終了し、その結果を演算結果記憶部65に格納すると、その旨を待機部43に通知する。
 待機部43は、重みをチャネル方向に並列処理する複数のPE42それぞれの演算が終了するまで待機する手段である。待機部43は、接続された全てのPE42から上記通知(演算結果を格納した旨の通知)を取得すると、待機を解除し、各PE42の演算結果記憶部65から演算結果を読み出し、当該データを結果加算部44に引き渡す。
 結果加算部44は、入力データのそれぞれと1つの重み群に含まれる複数の重みとの乗算結果を加算する手段である。当該加算処理は、チャネル方向における演算結果の加算に相当する。
 結果加算部44は、加算結果を結果記憶部53に格納すると、その旨を畳み込み層制御部40に通知する。
 畳み込み層制御部40は、全ての結果加算部44から上記通知(結果記憶部53に加算結果を格納した旨の通知)を取得すると、自層での演算は終了したものと判断し、その旨を後段の層(活性化関数)に通知する。
 以上のように、第1の実施形態に係る推論装置10では、畳み込み層の計算をする際に、入力データのノンゼロ要素に限り重みの各要素と乗算している。その結果、畳み込み層にて実行する乗算回数が減少する。例えば、図7の例では、本来、4×8=32回の乗算が必要であったものが、2(ノンゼロ要素の数)×4=8回の乗算に減少する。
[第2の実施形態]
 第2の実施形態について、図面を用いてより詳細に説明する。
 第1の実施形態に係る推論装置10は、畳み込み層にて実行する乗算回数の減少を実現する。しかしながら、当該乗算回数の減少を実現するためにはハードウェアの規模が大きくなるという問題が生じる。具体的には、演算結果記憶部65のサイズが大きくなるという問題がある。
 例えば、出力チャネル数(重み群の数)Kが「16」であり、カーネル方向に並列処理するPEの数(カーネル方向並列数;N)を「4」とすると、各PE42では、4種類(K/N=16/4=4)の重み群に関する加算結果を一時的に保持する必要がある。例えば、図7を参照すると、各行それぞれの重み群に関する4つの加算結果を一時的に保持する必要がある。各PE42は、少なくとも上記サイズ(容量)の演算結果記憶部65を備えなければならない。
 ここで、1つの畳み込み層に含まれるPE42の数は、チャネル方向に並列処理するPE42の数(チャネル方向の並列数;M)とカーネル方向に並列処理するPE42の数(N)の乗算結果(M×N)となる。その結果、全PE42の数(M×N)×各PE42の演算結果記憶部65のサイズ(K/N)=M×Kのサイズを有する記憶媒体(メモリ)が必要となる。第2の実施形態では、当該M×Kのサイズよりも小さいサイズの演算結果記憶部65を備える推論装置10について説明する。
 図9は、第2の実施形態に係る畳み込み層実行部31の内部構成の一例を示す図である。図8及び図9を参照すると、畳み込み層制御部40の内部に繰り返し制御部66を備える点が第1及び第2の実施形態で相違する。
 第2の実施形態に係る畳み込み層制御部40は、各PE42における乗算処理をカーネル方向に時分割して実行するように、各PE42を制御する。例えば、図7に示すように、1つのPE42にて4つの重み群の乗算処理を実行する場合を考える。この場合、畳み込み層制御部40のサブモジュールである繰り返し制御部66は、図7に示す上から2行目までの乗算処理とその後の加算処理を実行するように各PE42を制御する。
 各PE42は、2行目までの処理が終了すると、その演算結果を演算結果記憶部65に格納する。演算結果が格納されると、各PE42のPE制御部60は、その旨を待機部43に通知する。待機部43は、当該通知を受信すると各PE42の演算結果記憶部65から演算結果を読み出し、当該演算結果を結果加算部44に引き渡す。結果加算部44は、待機部43から演算結果を取得すると、取得した演算結果を一時的に結果記憶部53に格納する。その際、結果加算部44は、既に結果記憶部53に格納されている結果が存在すれば、当該既に格納されている結果と取得した演算結果を加算する。結果加算部44は、演算結果を結果記憶部53に格納すると当該事実を繰り返し制御部66に通知する。
 繰り返し制御部66は、時分割された残りの処理(例えば、図7に示す上から3行目、4行目の重み群に関する処理)を各PE42が実行するように、各PE42を制御する。より具体的には、繰り返し制御部66は、各PE42のPE制御部60に対して、時分割された残りの処理を実行するように指示する。各PE42は、時分割された残りの処理を実行する。各PE42、待機部43、結果加算部44及び繰り返し制御部66は、時分割された残りの処理がなくなるまで上記動作を繰り返す。このようにして各PE42による演算結果は、結果記憶部53に格納される。結果加算部44は、各PE42から演算結果を受け取るたびに、結果記憶部53に格納された対応する演算結果(他のPE42による結果)を読み出す。その後、結果加算部44は、当該読み出した演算結果に取得した演算結果を加算することで、チャネル方向における演算結果の加算を実現する。
 カーネル方向に時分割された畳み込み演算処理が終了した後は、畳み込み層制御部40は、第1の実施形態と同様に動作する。
 このように、第2の実施形態に係る推論装置10は、1つの入力データと、異なる重み群に含まれる重みと、を乗算する複数の処理を時分割で複数のPE42のそれぞれに実行させる。即ち、第2の実施形態に係る推論装置10は、各PE42における畳み込み演算処理において、カーネル方向に時分割する。その結果、各PE42に必要となる演算結果記憶部65のサイズを小さくすることができる。具体的には、図7の例において、第1の実施形態では、4つの演算結果を保持できる容量の演算結果記憶部65が必要である。しかし、第2の実施形態では、時分割された1回の処理が終了するたびに、演算結果は結果記憶部53に格納(退避)されるので、2つの演算結果を保持できる容量の演算結果記憶部65を用意すればよいことになる。
 上記効果をより一般化すると、以下のようになる。各PE42にてK/N個の重みを処理する必要がある状況において、時分割された1つの処理にてT(<K/N)個の重みを処理する場合を考える。この場合、第1の実施形態では、各PE42における演算結果記憶部65のサイズ(容量)がK/Nであったものが、第2の実施形態では、Tとなる。また、1つの畳み込み層全体として必要となる演算結果記憶部65のサイズは、第1の実施形態では、K×Mであったものが、第2の実施形態では、T×M×Nとなる。上述のように、Tは、K/Nよりも小さいので、T×N×M<K×Mの関係が成り立つ。
 例えば、C=512、K=512、N=64、M=64、T=4とすれば、第1の実施形態(時分割処理なし)では、512×64=32768個の演算結果を保持できる記憶媒体(メモリ)が必要となる。対して、第2の実施形態(時分割あり)では、4×64×64=16384個の演算結果を保持できる記憶媒体が必要となる。
[第3の実施形態]
 第3の実施形態について、図面を用いてより詳細に説明する。
 第1及び第2の実施形態では、複数のPE42を用いてチャネル方向及びカーネル方向の重みを並列に処理している。その際、各PE42では、入力データに含まれるノンゼロ要素と重みの乗算処理が行われる。その後、並列に演算している他のPE42の処理が終了するとチャネル方向での加算処理が行われる。このように、入力データに含まれるノンゼロ要素と重みの乗算処理が行われるので、各PE42に入力する入力データのノンゼロ要素の数にばらつきが存在すると、各PE42にて演算処理が終了するタイミングがばらつく。即ち、各PE42に入力される入力データに含まれるノンゼロ要素の数に偏りが存在すると、PE42間での実行時間に偏りが生じる。PE42間での実行時間に偏りが生じると、実行時間が最も遅いPE42の処理終了を待つ必要があるため、畳み込み層の演算処理がPE42の最悪実行時間に律速される(実行時間が遅いPE42がボトルネックとなる)。なお、入力データ(即ち、前層の出力データ)に存在するノンゼロ要素は、アクティベーションスパーシティ(Activation Sparsity)とも称される。つまり、アクティベーションスパーシティに偏りが存在すると、PE42における実行時間の偏りが生じることになる。
 第3の実施形態では、上記ボトルネックを極力解消するような推論装置10を説明する。
 初めに、図10を参照しつつ、各PE42に入力するデータが異なると、その演算に要する時間が異なることを説明する。図10は、PE42に入力する異なる2つの入力データを示す図である。
 図10(a)では、ノンゼロ要素が2個であるので、比較的早く処理結果が得られるのに対し、図10(b)ではノンゼロ要素が7個であるので、処理結果を得るまでに時間がかかる。例えば、図10に示す2つの入力データそれぞれを異なるPE42に入力し、並列処理する場合を考える。この場合、図10(b)の入力データを処理するPE42の演算が終了するまでの間、図10(a)の入力データを処理するPE42は待機中となる。つまり、図10(b)に示す入力データを処理するPE42は、畳み込み演算のボトルネックとなる。また、図10(b)に示す入力データを処理するPEの演算処理が終了するまでの間、他のPE42は待機中となるため、リソースの有効活用が行えない。
 上記不都合(処理の遅いPE42がボトルネック、リソースの効率的な利用が阻害)を解消するため、第3の実施形態では、カーネル方向に重み群を並び替える。以下、カーネル方向にて重み群を並び替えることで上記不都合が解消されることを説明する。なお、本願開示において、重み群を並び替えるとは、入力データに対して乗算処理をする重み群の利用順序(計算順序)を変更することを示す。例えば、図3において、重み群511、重み群512の順で入力データとの乗算処理が行われているものを、重み群512、重み群511の順で入力データとの乗算処理を行うことが「カーネル方向での重み群の並び替え」に相当する。さらに、重み群の計算順序の変更を実現するために重み群が格納されているメモリ内の配置を変更することも「カーネル方向での重み群の並び替え」に相当する。つまり、メモリにアクセスして重み群を読み出すプロセッサ(畳み込み制御部)の動作を変更して重み群の並び替えを実現してもよいし、当該プロセッサの動作を変更せずメモリ内の配置を変更することで重み群の並び替えを実現してもよい。
 図11は、第3の実施形態による問題解決を説明するための図である。なお、プーリング層による動作(プーリング前後)により変化するパラメータは入力データのサイズW、Hである。換言するならば、重みに関係するパラメータである、重みのサイズR、Sや入力チャネル数C、出力チャネル数Kに関してはプーリング前後で変化しない。つまり、図11の例では、2層目の重みのサイズR、Sや入力チャネル数C2、出力チャネル数K2はプーリングの前後で変化しない。なお、上述のように、プーリング処理により入力データのサイズW、Hは変化し、図11においても当該変化を図示している。従って、図11は、プーリング層の適用を暗黙的に仮定している。
 上述したように、上記不都合が生じる原因は、アクティベーションスパーシティの偏り(ばらつき)である。図11の例では、2層目の入力となるデータ401とデータ402におけるアクティベーションスパーシティが大きく異なると、当該データ401及び402を使用した2層目の畳み込み演算の処理時間に大きな差が出ることがある。
 図11に示すように、2層目の入力データは、その前段の層(1層目)の出力データである。従って、1層目の出力データにおけるアクティベーションスパーシティの偏りが、2層目の演算処理(実行時間)に影響を与える。
 ここで、各層からの出力データは、活性化関数(例えば、ReLU関数)が適用されたものである。ReLU関数は、負の値を「0」に置換し、正の値はそのまま出力する関数である。そのため、活性化関数に入力するデータに負の値が多ければ、後段の層に入力するデータには「0」が多い傾向となる。逆に、活性化関数に入力するデータに正の値が多ければ、後段の層に入力するデータには「0」が少ない傾向となる。なお、上記活性化関数の特徴から、各層への入力データには負の値は含まれない。
 活性化関数に入力するデータが正の値となるか負の値となるかは、畳み込み演算により定まる。畳み込み演算は、入力データと重みの双方から影響を受けるので、重みの各要素に負の値が多ければ、演算結果は負の値となる可能性が高くなる。即ち、重みに負の値が多く含まれていれば、活性化関数が適用された後の層の出力には「0」が多く含まれ、重みに正の値が多く含まれていれば、活性化関数が適用された後の層の出力にはノンゼロ要素が多く含まれる傾向となる。
 上述のように、アクティベーションスパーシティの偏りが大きいと畳み込み演算の処理時間にも偏りが大きくなる。そこで、第3の実施形態では、2層目の入力、即ち、1層目の出力におけるアクティベーションスパーシティの偏りを抑制するために、1層目の重み群を並べ替える。具体的には、1層目の出力データにおいて、隣接するデータ間ではアクティベーションスパーシティのばらつきが極力発生しないように1層目の重み群を並べ替える。即ち、重み群の計算順序をカーネル方向にて入れ替える。
 例えば、カーネル方向に並ぶ各重み群に含まれる負の数の総数を評価基準として算出し、当該評価基準が降順又は昇順となるように重みを並べ替える。但し、前段の層(1層目)で重み群を並べ替えると、1層目の出力データの順序が入れ替わる。例えば、図11において、重み群521に対応する出力データはデータ401、重み群522に対応する出力データはデータ402とする。ここで、重み群521と重み群522の順序を入れ替えると、1層目の出力データは、データ402とデータ401の順番となる。各層の重み群に含まれる重み(チャネル方向の重み)は、入力データのチャネルと対応付けて用意されるので、前段の出力データの順番が変わると、後段の層における入力データの対応関係が変わることになる。そこで、順番が変わった入力データに適合するように、自層における重み群に含まれる重みのチャネル方向の順番を変更する(入力データとの対応付けを変更する)必要がある。
 図12は、第3の実施形態に係る畳み込み層制御部40の内部構成の一例を示す図である。図12を参照すると、畳み込み層制御部40は、重み取得部311と、評価指標計算部312と、重み群並び替え部313と、順序情報通知部314と、順序情報取得部315と、重み並び替え部316と、を含んで構成される。
 重み取得部311は、重み記憶部52から重みを読み出す手段である。読み出された重みは、評価指標計算部312に引き渡される。
 評価指標計算部312は、重み群を評価するための評価指標を計算する手段である。当該評価指標は、重み群の並び替えに使用される。図13は、第3の実施形態に係る畳み込み層制御部40の動作を説明するための図である。図13には、8個の重み群WG0~WG7を図示している。また、各重み群には、4チャネル分の重みが含まれる。各チャネルに対応する重みのサイズは、2×2=4である。図13では、各チャネルに対応する重みをWC0~WC3として図示している。つまり、図13に示す各行がカーネル方向の重み群を示し、重み群のそれぞれは、チャネル方向に4つの重みを有する。
 図13(a)は、評価指標計算部312が取得した直後の重みを示している。評価指標計算部312は、各重み群における負の数の総数を計算する。例えば、図13(a)では、重み群WG0における負の数の総数は「5」であり、重み群WG1における負の数の総数は「4」と計算される。
 重み群並び替え部313は、計算された評価指標に基づき入力データに対して乗算する重み群をカーネル方向に並べ替える手段である。例えば、重み群並び替え部313は、評価指標が降順となるように重み群を並び替える。図13(b)は、図13(a)に示す重み(重み群)を、評価指標が降順となるように並び替えた結果を示す。
 重み群並び替え部313による重み群の並び替えが終了すると、畳み込み層制御部40は、第1及び第2の実施形態の畳み込み層制御部40と同様に動作する。より具体的には、畳み込み層制御部40は、重みを各PE42に設定し、各PE42による畳み込み演算が終了すると、その旨を後段の畳み込み層制御部40に通知する。
 順序情報通知部314は、重み群並び替え部313による重み群並び替えに関する順序情報を他層に通知する手段である。より具体的には、順序情報通知部314は、順序情報を後段の畳み込み層制御部40に通知する。図13の例では、順序情報通知部314は、WG2、WG3、WG0、WG1、WG7、WG4、WG6、WG5という重み群の並び順を後段の畳み込み層制御部40に通知する。
 順序情報取得部315は、前段の畳み込み層制御部40からの重み群の並び替えに関する順序情報を取得する手段である。
 重み並び替え部316は、取得した順序情報に基づき、入力データと重み群に含まれる重みの対応関係を変更する手段である。より具体的には、重み並び替え部316は、前段の畳み込み層制御部40から取得した順序情報に基づき、自層の重み群に含まれる重みをチャネル方向に並び替える。図13の例では、WG2、WG3、WG0、WG1、WG7、WG4、WG6、WG5の順に各重み群に含まれる重みをチャネル方向に並び替える。重み並び替え部316は、重み記憶部52から重みを読み出し、各重み群に含まれる重みを上記順序情報に従ってチャネル方向に並び替え、並び替え後の重みを重み記憶部52に再び格納する。このように、重み並び替え部316は、前段の層にて重み群を並べ替えたことにより入力データが変更することに対応し、各重み群に含まれる重みと入力データの対応付けを変更する。重み並び替え部316による重みの並び替えが終了すると、畳み込み層制御部40は、第1及び第2の実施形態の畳み込み層制御部40と同様に動作する。
 図14は、第3の実施形態に係る畳み込み層制御部40の動作を説明するためのフローチャートである。図14を参照しつつ、第3の実施形態に係る畳み込み層制御部40の動作を概説する。
 図14(a)は、カーネル方向に重み群を並び替える場合の畳み込み層制御部40の動作を示すフローチャートである。
 初めに、畳み込み層制御部40は、重み記憶部52から重みを取得する(ステップS101)。その後、畳み込み層制御部40は、評価指標を計算する(ステップS102)。その後、畳み込み層制御部40は、計算された評価指標に基づき重み群をカーネル方向に並び替える(ステップS103)。その後、畳み込み層制御部40は、並び替え後の重み群の順序に関する順序情報を後段の畳み込み層制御部40に通知する。
 図14(b)は、チャネル方向に重みを並び替える場合の畳み込み層制御部40の動作を示すフローチャートである。
 初めに、畳み込み層制御部40は、前段の畳み込み層制御部40から順序情報を取得する(ステップS201)。その後、畳み込み層制御部40は、取得した順序情報に基づき、各重み群に含まれる重みをチャネル方向に並び替える(ステップS202)。
 以上のように、第3の実施形態では、アクティベーションスパーシティの偏りを抑制するように、カーネル方向にて重み群の並び替えを行う。当該並び替えは、出力データに含まれる「0」の数が、隣接するデータ間で極力揃うように行われる。例えば、図13(b)に示すように、各重み群の負の総数が降順となるように並び替えると、並び替え後の重み群の隣接するもの同士は、負の数が類似しているため、畳み込み演算の処理結果における「0」の数も似たものとなる可能性が高い。畳み込み演算の処理結果は、後段の層における入力データに相当するので、上記並び替えにより、後段の層におけるアクティベーションスパーシティの偏りが抑制される。当該事実は、後段の層にて並列に処理するPE42へのアクティベーションスパーシティの偏りが抑制されることを意味し、並列処理するPE42間での実行時間が大きく異なることを抑制できる。その結果、処理の遅いPE42がボトルネックとなることやリソースの効率的な利用が阻害されるといった問題点が解消され得る。
 続いて、第1乃至第3の実施形態に係る推論装置10のハードウェア構成について説明する。
 図15は、推論装置10のハードウェア構成の一例を示す図である。推論装置10は、所謂、情報処理装置(コンピュータ)により構成可能であり、図15に例示する構成を備える。例えば、推論装置10は、内部バスにより相互に接続される、CPU(Central Processing Unit)71、メモリ72、入出力インターフェイス73及び通信手段であるNIC(Network Interface Card)74等を備える。
 なお、図15に示す構成は、推論装置10のハードウェア構成を限定する趣旨ではない。推論装置10は、図示しないハードウェアを含んでもよい。あるいは、推論装置10に含まれるCPU等の数も図15の例示に限定する趣旨ではなく、例えば、複数のCPUが推論装置10に含まれていてもよい。
 メモリ72は、RAM(Random Access Memory)、ROM(Read Only Memory)、補助記憶装置(ハードディスク等)である。
 入出力インターフェイス73は、図示しない表示装置や入力装置のインターフェイスとなる手段である。表示装置は、例えば、液晶ディスプレイ等である。入力装置は、例えば、キーボードやマウス等のユーザ操作を受け付ける装置である。
 推論装置10の機能は、上述の処理モジュールにより実現される。当該処理モジュールは、例えば、メモリ72に格納されたプログラムをCPU71が実行することで実現される。また、そのプログラムは、ネットワークを介してダウンロードするか、あるいは、プログラムを記憶した記憶媒体を用いて、更新することができる。さらに、上記処理モジュールは、半導体チップにより実現されてもよい。即ち、上記処理モジュールが行う機能は、何らかのハードウェアにおいてソフトウェアが実行されることによって実現できればよい。
[変形例]
 第1乃至第3の実施形態にて説明した推論装置10は例示であって、その構成及び動作を限定する趣旨ではない。以下、各種変形例について説明する。
 上記実施形態では、重みをチャネル方向に分割して畳み込み演算を実行する場合を主に説明したが、チャネル方向の分割は行われて無くともよい。例えば、図6では、4つのPEがチャネル方向の重みを並列に処理する場合を図示しているが、8つのPEがチャネル方向の重みを全て並列に処理してもよい。
 上記実施形態では、各PE42は、それぞれに割り当てられた複数の重み群、複数の重みを逐次的に処理しているが、当該逐次的処理は行われなくともよい。例えば、図6において、上記実施形態では、PE(0、0)が1行目の重み群に含まれる最奥の重みを処理し、その後、奥から5番目の重みを処理している。しかし、4つのPE(0、0)~PE(3、0)を一組とし、これらのPEにて1行目の重み群に含まれる最奥から4番目までの重みを並列に処理してもよい。その後、上記4つのPE(0、0)~PE(3、0)は、1行目の重み群に含まれる奥から5番目~8番目(最も手前)の重みを並列処理してもよい。
 上記実施形態では、重み読み出し部62は、読み出した重みの要素が「0」であったとしても、当該「0」を乗加算部63に通知している。しかし、重み読み出し部62は、読み出した重みの値が「0」であれば、その旨を乗加算部63に通知する対応であってもよい。この場合、乗加算部63は、読み出された値が「0」である旨の通知を受けた場合は、入力データとの乗算処理を不実施とすることができる(乗算処理をスキップできる)。
 上記実施形態では、各PE42に入力データ処理部61が含まれる構成を説明したが、入力データ処理部61に相当するモジュールを、カーネル方向のPE42にて共通に設けてもよい。上記説明したように、同じチャネルの入力データを処理するPE42には同じ入力データが入力されるので、入力データ処理部61によるノンゼロ要素検出に関する動作は同じとなる。従って、共通に設けられた入力データ処理部61からノンゼロ要素及びそのインデックスを各PE42に通知(ブロードキャスト)してもよい。
 あるいは、各PE42に含まれる入力データ処理部61は、結果記憶部53の後段に配置されていてもよい。上記説明したように、前段の層の出力データは後段の層の入力データとなるので、後段の層にて入力データからノンゼロ要素及びそのインデックス検出処理が不要となるように、前段の層にて当該処理を予め実施してもよい。
 上記実施形態では、各PE42に重み一次記憶部64が含まれる構成を説明したが、各PE42は、重み記憶部52から必要な重みを直接読み出してもよい。例えば、畳み込み層制御部40が、各PE42に対し、必要な重みのアドレス情報を通知してもよい。各PE42の重み読み出し部62は、当該アドレス情報に従って必要な重みを読み出してもよい。
 上記実施形態では、待機部43と結果加算部44は異なるモジュールとして説明したが、一方のモジュールの機能が他方のモジュールにより実現されていてもよい。即ち、待機部43及び結果加算部44が統合されていてもよい。
 第3の実施形態では、評価指標が降順となるように重み群を並び替えることを説明したが、評価指標が昇順となるように並び替えても良いことは勿論である。評価指標が降順となるように、重み群を並び替えると最初に「0」が多い入力データが後段の層にて並列処理されることになる。一方、評価指標が昇順となるように、重み群を並び替えると最初にノンゼロ要素が多い入力データが後段の層にて並列処理されることになる。
 第3の実施形態として、重み群を評価する指標として、各重み群に含まれる負の数の総数を計算しているが、他の値を評価指標として計算してもよい。例えば、各重み群における要素の総和を評価指標として計算してもよい。例えば、図13(a)の例では、重み群WG0の評価指標として、各要素の総和として「-4」が計算される(-1+0+0-1+0+1+0-1+0+1+1-3+0+1+0-2=-4)。
 第3の実施形態では、推論装置10が入力データを推論する過程にて重み群を並び替えているが、推論装置10に重み群を設定する前段階にて上記並び替えを実行してもよい。具体的には、図16に示すように、推論装置10に対して外部から学習済み重みを設定する重み設定装置80において重み群の並び替えを行ってもよい。あるいは、他者から得た学習済み重みを用いて推論装置10を動作させる場合に、事前に並び替えを実行してもよい。
 さらにまた、図17に示すように、推論装置10に重みを提供する学習装置90にて、重み群の並び替えを行っても良い。即ち、学習装置90では、教師データを用いた「推論」、「推定誤差フィードバック(誤差逆伝搬)」、「重みアップデート」を繰り返す学習処理が行われる。当該一連の学習処理を「推論」、「推定誤差フィードバック」、「重みアップデート」、「重み(重み群)並び替え」としてもよい。学習装置90における推論部がアクティベーションスパーシティを活用する場合には、上記のように学習時のフローを変更することで、第3の実施形態にて説明した効果を学習装置90が享受できる。なお、畳み込みニューラルネットワークの活用(中間層の動作)の観点からは、推論装置10と学習装置90では相違する点はない。推論装置10への入力データは推論対象となるデータであり、学習装置90の推論部への入力データは教師データであるが、「推論」の観点からは両者に違いはない。即ち、上記説明した推論装置10に、誤差逆伝搬を行う誤差逆伝搬部91、重みアップデートを行う重みアップデート部92と、重み(重み群)の並び替えを行う並び替え部93と、を付加することで学習装置90を構成することができる(図18参照)。なお、誤差逆伝搬部91及び重みアップデート部92に関しては、公知のアルゴリズム等により実現可能である。また、並び替え部93に関しては、第3の実施形態にて説明した評価指標計算部312、重み群並び替え部313、重み並び替え部316等の機能により実現できる。
 上記の実施形態の一部又は全部は、以下のようにも記載され得るが、以下には限られない。
[形態1]
 上述の第1の視点に係る推論装置のとおりである。
[形態2]
 前記制御部は、
 前記複数の入力データのそれぞれと、前記複数の入力データそれぞれに対応する重みそれぞれとの乗算処理のうち、一部の乗算処理が並列に処理されるように前記複数のPEを制御する、好ましくは形態1の推論装置。
[形態3]
 前記制御部は、
 前記複数の入力データのそれぞれと、複数の前記重み群に含まれる複数の重みのそれぞれとの乗算処理のうち、異なる前記重み群の重みであって同一の入力データに対応する重みを用いた乗算処理の一部が並列に実行されるように前記複数のPEを制御する、好ましくは形態2の推論装置。
[形態4]
 前記複数の入力データを分割し、前記分割された入力データを前記一部の乗算処理を並列に処理するPEに供給する、入力データ分割部をさらに備える、好ましくは形態3の推論装置。
[形態5]
 前記一部の乗算処理を並列に処理する複数のPEそれぞれの演算が終了するまで待機する、待機部をさらに備える、好ましくは形態3又は4の推論装置。
[形態6]
 前記複数の入力データのそれぞれと1つの重み群に含まれる複数の重みとの乗算結果を加算する結果加算部をさらに備える好ましくは形態3乃至5のいずれか一に記載の推論装置。
[形態7]
 前記複数のPEのそれぞれは、
 入力した入力データから値がゼロ以外であるノンゼロ要素と前記ノンゼロ要素の位置を特定する入力データ処理部と、
 前記入力した入力データと乗算される重みの要素のうち、前記ノンゼロ要素の位置に相当する位置の値を、前記重み群を記憶する記憶媒体から読み出す重み読み出し部と、
 前記ノンゼロ要素と前記重み読み出し部により読み出された値を乗算する、乗加算部と、
 を備え、
 前記乗加算部は、前記入力した入力データに含まれるノンゼロ要素に関する乗算が終了すると、乗算結果を加算する、好ましくは形態1乃至6のいずれか一に記載の推論装置。
[形態8]
 前記複数のPEのそれぞれは、
 前記乗加算部により算出された加算結果を記憶する、演算結果記憶部をさらに備える、好ましくは形態7の推論装置。
[形態9]
 前記制御部は、
 1つの入力データと、異なる重み群に含まれる重みと、を乗算する複数の処理を時分割で前記複数のPEのそれぞれに実行させる、好ましくは形態3乃至8のいずれか一に記載の推論装置。
[形態10]
 前記制御部は、
 前記重み群を評価するための評価指標を計算する、評価指標計算部と、
 前記評価指標に基づき、入力データに対して乗算する前記重み群の順序を並び替える重み群並び替え部と、
 を備える、好ましくは形態1乃至9のいずれか一に記載の推論装置。
[形態11]
 前記制御部は、
 前記重み群の並び替えに関する順序情報を、他層に通知する、順序情報通知部をさらに備える、好ましくは形態10の推論装置。
[形態12]
 前記制御部は、
 前記通知された順序情報を取得する、順序情報取得部と、
 前記順序情報に基づき、入力データと前記重み群に含まれる重みの対応関係を変更する、重み並び替え部と、
 をさらに備える、好ましくは形態11の推論装置。
[形態13]
 上述の第2の視点に係る畳み込み演算実行方法のとおりである。
[形態14]
 上述の第3の視点に係るプログラムのとおりである。
[形態15]
 教師データを用いた重みの推論、重みの推定誤差のフィードバック、重みのアップデート、及び重みの並び替えを行う学習装置であって、
 前記重みの並び替えは、
 重みを評価するための評価指標に基づき行われる、学習装置。
 なお、形態13及び形態14は、形態1と同様に、形態2~形態12のように展開することが可能である。
 なお、引用した上記の特許文献等の各開示は、本書に引用をもって繰り込むものとする。本発明の全開示(請求の範囲を含む)の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の全開示の枠内において種々の開示要素(各請求項の各要素、各実施形態ないし実施例の各要素、各図面の各要素等を含む)の多様な組み合わせ、ないし、選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。特に、本書に記載した数値範囲については、当該範囲内に含まれる任意の数値ないし小範囲が、別段の記載のない場合でも具体的に記載されているものと解釈されるべきである。
10、100 推論装置
11 入力層実行部
12 中間層実行部
13 出力層実行部
31 畳み込み層実行部
32 活性化関数実行部
33 プーリング層実行部
40 畳み込み層制御部
41 入力データ分割部
42、42-1~42-8、101 PE(Processing Element)
43 待機部
44 結果加算部
51 入力データ記憶部
52 重み記憶部
53 結果記憶部
60 PE制御部
61 入力データ処理部
62 重み読み出し部
63 乗加算部
64 重み一次記憶部
65 演算結果記憶部
66 繰り返し制御部
71 CPU(Central Processing Unit)
72 メモリ
73 入出力インターフェイス
74 NIC(Network Interface Card)
80 重み設定装置
90 学習装置
91 誤差逆伝搬部
92 重みアップデート部
93 並び替え部
102 制御部
311 重み取得部
312 評価指標計算部
313 重み群並び替え部
314 順序情報通知部
315 順序情報取得部
316 重み並び替え部
401、402 データ
501、502 重み
511、512、521、522 重み群

Claims (14)

  1.  複数のPE(Processing Element)と、
     複数の入力データのそれぞれと、前記複数の入力データのそれぞれに対応する複数の重みを含む重み群と、を用いた畳み込みニューラルネットワークにおける畳み込み演算を前記複数のPEを制御することで実現する、制御部と、
     を備え、
     前記複数のPEのそれぞれは、1つの入力データと1つの重みの乗算処理を含む演算を実行すると共に、前記複数の入力データそれぞれに含まれる値がゼロではない要素を用いて前記畳み込み演算に含まれる乗算処理を実行する、推論装置。
  2.  前記制御部は、
     前記複数の入力データのそれぞれと、前記複数の入力データそれぞれに対応する重みそれぞれとの乗算処理のうち、一部の乗算処理が並列に処理されるように前記複数のPEを制御する、請求項1の推論装置。
  3.  前記制御部は、
     前記複数の入力データのそれぞれと、複数の前記重み群に含まれる複数の重みのそれぞれとの乗算処理のうち、異なる前記重み群の重みであって同一の入力データに対応する重みを用いた乗算処理の一部が並列に実行されるように前記複数のPEを制御する、請求項2の推論装置。
  4.  前記複数の入力データを分割し、前記分割された入力データを前記一部の乗算処理を並列に処理するPEに供給する、入力データ分割部をさらに備える、請求項3の推論装置。
  5.  前記一部の乗算処理を並列に処理する複数のPEそれぞれの演算が終了するまで待機する、待機部をさらに備える、請求項3又は4の推論装置。
  6.  前記複数の入力データのそれぞれと1つの重み群に含まれる複数の重みとの乗算結果を加算する結果加算部をさらに備える請求項3乃至5のいずれか一項に記載の推論装置。
  7.  前記複数のPEのそれぞれは、
     入力した入力データから値がゼロ以外であるノンゼロ要素と前記ノンゼロ要素の位置を特定する入力データ処理部と、
     前記入力した入力データと乗算される重みの要素のうち、前記ノンゼロ要素の位置に相当する位置の値を、前記重み群を記憶する記憶媒体から読み出す重み読み出し部と、
     前記ノンゼロ要素と前記重み読み出し部により読み出された値を乗算する、乗加算部と、
     を備え、
     前記乗加算部は、前記入力した入力データに含まれるノンゼロ要素に関する乗算が終了すると、乗算結果を加算する、請求項1乃至6のいずれか一項に記載の推論装置。
  8.  前記複数のPEのそれぞれは、
     前記乗加算部により算出された加算結果を記憶する、演算結果記憶部をさらに備える、請求項7の推論装置。
  9.  前記制御部は、
     1つの入力データと、異なる重み群に含まれる重みと、を乗算する複数の処理を時分割で前記複数のPEのそれぞれに実行させる、請求項3乃至8のいずれか一項に記載の推論装置。
  10.  前記制御部は、
     前記重み群を評価するための評価指標を計算する、評価指標計算部と、
     前記評価指標に基づき、入力データに対して乗算する前記重み群の順序を並び替える重み群並び替え部と、
     を備える、請求項1乃至9のいずれか一項に記載の推論装置。
  11.  前記制御部は、
     前記重み群の並び替えに関する順序情報を、他層に通知する、順序情報通知部をさらに備える、請求項10の推論装置。
  12.  前記制御部は、
     前記通知された順序情報を取得する、順序情報取得部と、
     前記順序情報に基づき、入力データと前記重み群に含まれる重みの対応関係を変更する、重み並び替え部と、
     をさらに備える、請求項11の推論装置。
  13.  それぞれが、1つの入力データと1つの重みの乗算処理を含む演算を実行する、複数のPE(Processing Element)を含み、
     複数の入力データのそれぞれと、前記複数の入力データのそれぞれに対応する複数の重みを含む重み群と、を用いた畳み込みニューラルネットワークにおける畳み込み演算を実現する、推論装置において、
     前記複数のPEのそれぞれが、
     前記複数の入力データそれぞれに含まれる値がゼロではない要素を特定するステップと、
     前記特定された要素を用いて前記畳み込み演算に含まれる乗算処理を実行するステップと、
     を含む、畳み込み演算実行方法。
  14.  それぞれが、1つの入力データと1つの重みの乗算処理を含む演算を実行する、複数のPE(Processing Element)を含み、
     複数の入力データのそれぞれと、前記複数の入力データのそれぞれに対応する複数の重みを含む重み群と、を用いた畳み込みニューラルネットワークにおける畳み込み演算を実現する、推論装置に搭載されたコンピュータに、
     前記複数の入力データそれぞれに含まれる値がゼロではない要素を特定する処理と、
     前記特定された要素を用いて前記畳み込み演算に含まれる乗算処理を実行する処理と、
     を実行させる、プログラム。
PCT/JP2018/039248 2017-10-23 2018-10-22 推論装置、畳み込み演算実行方法及びプログラム WO2019082859A1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2019551133A JP6927320B2 (ja) 2017-10-23 2018-10-22 推論装置、畳み込み演算実行方法及びプログラム
US16/757,543 US11580369B2 (en) 2017-10-23 2018-10-22 Inference apparatus, convolution operation execution method, and program

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2017-204610 2017-10-23
JP2017204610 2017-10-23

Publications (1)

Publication Number Publication Date
WO2019082859A1 true WO2019082859A1 (ja) 2019-05-02

Family

ID=66247809

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2018/039248 WO2019082859A1 (ja) 2017-10-23 2018-10-22 推論装置、畳み込み演算実行方法及びプログラム

Country Status (3)

Country Link
US (1) US11580369B2 (ja)
JP (1) JP6927320B2 (ja)
WO (1) WO2019082859A1 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020225916A1 (ja) * 2019-05-09 2020-11-12 株式会社アラヤ 情報処理装置
JP2022520912A (ja) * 2020-01-22 2022-04-04 深▲チェン▼市商▲湯▼科技有限公司 データ処理方法、装置及びチップ、電子機器、記憶媒体
WO2022264252A1 (ja) * 2021-06-15 2022-12-22 日本電気株式会社 ニューラルネットワークモデル変換装置および方法
WO2024014002A1 (ja) * 2022-07-15 2024-01-18 日本電信電話株式会社 推論処理装置、推論処理方法、及び推論処理プログラム

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210051920A (ko) * 2019-10-31 2021-05-10 삼성전자주식회사 신경망의 커널들을 정렬하는 전자 장치 및 이의 동작 방법
US20210256357A1 (en) * 2020-02-04 2021-08-19 University Of Louisiana At Lafayette Embedded stochastic-computing accelerator architecture and method for convolutional neural networks

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009080693A (ja) * 2007-09-26 2009-04-16 Canon Inc 演算処理装置および方法
US20160358070A1 (en) * 2015-06-04 2016-12-08 Samsung Electronics Co., Ltd. Automatic tuning of artificial neural networks
CN106447034A (zh) * 2016-10-27 2017-02-22 中国科学院计算技术研究所 一种基于数据压缩的神经网络处理器、设计方法、芯片

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5376920B2 (ja) 2008-12-04 2013-12-25 キヤノン株式会社 コンボリューション演算回路、階層的コンボリューション演算回路及び物体認識装置
JP6365258B2 (ja) 2014-11-19 2018-08-01 株式会社デンソー 演算処理装置
US9767381B2 (en) 2015-09-22 2017-09-19 Xerox Corporation Similarity-based detection of prominent objects using deep CNN pooling layers as features
US10310826B2 (en) 2015-11-19 2019-06-04 Intel Corporation Technologies for automatic reordering of sparse matrices
JP6561877B2 (ja) 2016-03-01 2019-08-21 株式会社デンソー 演算処理装置
US20180082181A1 (en) * 2016-05-13 2018-03-22 Samsung Electronics, Co. Ltd. Neural Network Reordering, Weight Compression, and Processing
US10891538B2 (en) * 2016-08-11 2021-01-12 Nvidia Corporation Sparse convolutional neural network accelerator
US10872290B2 (en) * 2017-09-21 2020-12-22 Raytheon Company Neural network processor with direct memory access and hardware acceleration circuits

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009080693A (ja) * 2007-09-26 2009-04-16 Canon Inc 演算処理装置および方法
US20160358070A1 (en) * 2015-06-04 2016-12-08 Samsung Electronics Co., Ltd. Automatic tuning of artificial neural networks
CN106447034A (zh) * 2016-10-27 2017-02-22 中国科学院计算技术研究所 一种基于数据压缩的神经网络处理器、设计方法、芯片

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
OHNO, YOSHIYUKI ET AL.: "Optimization of Direct Sparse Convolution on Vector Processor", IPSJ SIG TECHNICAL REPORTS, vol. 2017-ARC-227, no. 16, 19 July 2017 (2017-07-19), pages 1 - 7, ISSN: 2188-8574 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020225916A1 (ja) * 2019-05-09 2020-11-12 株式会社アラヤ 情報処理装置
JP2022520912A (ja) * 2020-01-22 2022-04-04 深▲チェン▼市商▲湯▼科技有限公司 データ処理方法、装置及びチップ、電子機器、記憶媒体
WO2022264252A1 (ja) * 2021-06-15 2022-12-22 日本電気株式会社 ニューラルネットワークモデル変換装置および方法
WO2024014002A1 (ja) * 2022-07-15 2024-01-18 日本電信電話株式会社 推論処理装置、推論処理方法、及び推論処理プログラム

Also Published As

Publication number Publication date
JP6927320B2 (ja) 2021-08-25
US11580369B2 (en) 2023-02-14
US20210201120A1 (en) 2021-07-01
JPWO2019082859A1 (ja) 2020-11-12

Similar Documents

Publication Publication Date Title
JP6927320B2 (ja) 推論装置、畳み込み演算実行方法及びプログラム
CN110046702B (zh) 神经网络计算加速器及其执行的方法
US11386644B2 (en) Image preprocessing for generalized image processing
JP7021904B2 (ja) 畳み込み神経網処理方法及び装置
US11816559B2 (en) Dilated convolution using systolic array
US20240220785A1 (en) Schedule-Aware Tensor Distribution Module
US11468145B1 (en) Storage of input values within core of neural network inference circuit
TW201942808A (zh) 深度學習加速器及加快深度學習操作的方法
CN108416437A (zh) 用于乘加运算的人工神经网络的处理系统及方法
EP4024290A1 (en) Implementing fully-connected neural-network layers in hardware
US11763131B1 (en) Systems and methods for reducing power consumption of convolution operations for artificial neural networks
CN114358237A (zh) 多核硬件中神经网络的实现方式
CN112884137A (zh) 神经网络的硬件实现方式
US11580193B2 (en) Computation device, computation method, and program
KR20210033757A (ko) 메모리 장치 및 그 동작 방법
JP7386542B2 (ja) 機械知覚および高密度アルゴリズム集積回路
JP2021108104A (ja) 部分的読み取り/書き込みが可能な再構成可能なシストリックアレイのシステム及び方法
WO2019077933A1 (ja) 演算回路および演算方法
CN115545174A (zh) 包括矩阵乘法的神经网络
US20220138563A1 (en) Method and device with deep learning operations
KR102494565B1 (ko) 콘볼루션 신경망의 하드웨어 구조 최적화 방법
WO2007099950A1 (ja) 高速pe間データ再配置機能を有するプロセッサアレイシステム
JP7169768B2 (ja) 画像処理装置、画像処理方法
CN115115023A (zh) 用于生成关于卷积层权重的损失函数的梯度的方法和系统
WO2020194465A1 (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: 18870600

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2019551133

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: 18870600

Country of ref document: EP

Kind code of ref document: A1