WO2021240633A1 - 情報処理回路および情報処理回路の設計方法 - Google Patents

情報処理回路および情報処理回路の設計方法 Download PDF

Info

Publication number
WO2021240633A1
WO2021240633A1 PCT/JP2020/020701 JP2020020701W WO2021240633A1 WO 2021240633 A1 WO2021240633 A1 WO 2021240633A1 JP 2020020701 W JP2020020701 W JP 2020020701W WO 2021240633 A1 WO2021240633 A1 WO 2021240633A1
Authority
WO
WIPO (PCT)
Prior art keywords
circuit
parameter
parameter value
value output
information processing
Prior art date
Application number
PCT/JP2020/020701
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 JP2022527306A priority Critical patent/JP7456501B2/ja
Priority to US17/926,728 priority patent/US20230205957A1/en
Priority to PCT/JP2020/020701 priority patent/WO2021240633A1/ja
Priority to TW110114833A priority patent/TWI841838B/zh
Publication of WO2021240633A1 publication Critical patent/WO2021240633A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • 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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2119/00Details relating to the type or aim of the analysis or the optimisation
    • G06F2119/02Reliability analysis or reliability optimisation; Failure analysis, e.g. worst case scenario performance, failure mode and effects analysis [FMEA]

Definitions

  • the present invention relates to an information processing circuit that executes an inference phase of deep learning, and a method for designing such an information processing circuit.
  • Deep learning is an algorithm that uses a multi-layered neural network (hereinafter referred to as a network).
  • a learning phase in which each network (layer) is optimized to create a model (learning model) and an inference phase in which inference is performed based on the learning model are executed.
  • the model is sometimes called an inference model.
  • the model may be referred to as an inference device below.
  • an inference device realized by GPU Graphics Processing Unit
  • CPU Central Processing Unit
  • an accelerator dedicated to deep learning has been put into practical use.
  • FIG. 20 is an explanatory diagram showing the structure of VGG (Visual Geometry Group) -16, which is an example of a convolutional neural network (CNN).
  • VGG-16 includes 13 convolutional layers and 3 fully connected layers. Features extracted in the convolutional layer, or in the convolutional layer and the pooling layer, are classified as fully connected layers.
  • the convolution layer is a 3 ⁇ 3 convolution. Therefore, for example, the first convolution operation in FIG. 20 includes a product-sum operation of 3 (vertical size) ⁇ 3 (horizontal size) ⁇ 3 (input channel) ⁇ 64 (output channel) per pixel. Further, for example, the convolution layer of the fifth block in FIG. 20 includes a product-sum operation of 3 (vertical size) ⁇ 3 (horizontal size) ⁇ 512 (input channel) ⁇ 512 (output channel) per pixel. “P” indicates a pooling layer. In the CNN shown in FIG. 20, the pooling layer is a Max Pooling layer.
  • F indicates a fully connected layer.
  • O indicates an output layer.
  • the convolution layer and the fully connected layer include a normalized linear unit (ReLU).
  • the multiplication formula attached to each layer represents the vertical size ⁇ horizontal size ⁇ number of channels of the data corresponding to one input image. Also, the volume of the rectangular parallelepiped representing the layer corresponds to the amount of activation in the layer.
  • the CNN is configured such that the operations of the plurality of layers constituting the CNN are performed by a common arithmetic unit (see, for example, paragraph 0033 of Patent Document 1). ).
  • the arithmetic unit 700 When the operation of each layer of the inferior is executed, the arithmetic unit 700 reads the parameters for the layer to be executed from the DRAM 900. Then, the arithmetic unit 700 executes the product-sum operation in one layer with the parameter as a coefficient.
  • FIG. 22 is an explanatory diagram schematically showing a CNN provided with an arithmetic unit corresponding to each layer.
  • FIG. 22 illustrates six layers 801,802,803,804,805,806 in CNN.
  • Arithmetic units (circuits) 701, 702, 703, 704, 705, 706 corresponding to each of the layers 801, 802, 803, 804, 805, 806 are provided.
  • the CNN function is executed without changing the circuit configuration of the arithmetic units 701 to 706 even if the parameters are changed.
  • the data transfer speed of the DRAM 900 is lower than the calculation speed of the calculator 700. That is, the memory band of the DRAM 900 is narrow. Therefore, the data transfer between the arithmetic unit 700 and the memory becomes a bottleneck. As a result, the calculation speed of CNN is limited.
  • the circuit scale of the adder and the multiplier as a whole CNN becomes smaller.
  • the circuit since the circuit is configured so as to be able to perform completely parallel processing for each layer (fully-parallel), such a circuit configuration increases the circuit scale. Since the circuit is configured to process the operations corresponding to each input channel and each output channel in parallel for each layer, the circuit scale is increased by such a circuit configuration. Further, since the circuit is configured so that completely parallel processing is possible for each layer, it is desirable that the processing time of the input data corresponding to one image is the same for each layer.
  • the higher the layer the layer closer to the output layer
  • the smaller the vertical size and horizontal size of the input data corresponding to one image may be.
  • the pooling layer reduces the vertical and horizontal sizes of the input data corresponding to one image. If each layer processes the data corresponding to one input image in the same time, the amount of calculation in the previous layer is small unless the number of channels in the previous layer is extremely increased. In other words, the higher the layer, the smaller the circuit scale for executing the operations of that layer.
  • the configuration of the CNN described in Non-Patent Document 1 is such that the CNN is divided into two stages, and an arithmetic unit corresponding to each layer is provided in the previous stage. Then, the stage in the subsequent stage is configured so that the parameters are transferred to the DRAM and a programmable accelerator is used as the arithmetic unit. That is, it is described in Non-Patent Document 1 that the CNN is configured to respond to changes in parameters and network configurations to some extent, and the parameters and network configurations are fixed as the CNN as a whole, that is, as the inferior as a whole. It has not been.
  • the parameters and network structure of the inference device as a whole are fixed, it is difficult to change the network structure and weights (parameters) of deep learning once the circuit is manufactured.
  • a circuit manufactured as a face recognition chip can only be used for face recognition. That is, it is difficult for a circuit with fixed parameters and network structure to correspond to other types of CNN.
  • the present invention provides an information processing circuit and a method for designing an information processing circuit that, when the inference device is realized by hardware, is released from the limitation of the memory bandwidth and the utilization rate of the arithmetic unit of each layer in the inference device is improved.
  • the purpose is to provide.
  • the information processing circuit is an information processing circuit that executes layer operations in deep learning, and is a product-sum circuit that performs product-sum operations using input data and parameter values, and a parameter value that outputs parameter values.
  • the parameter value output circuit including the output circuit, is composed of a combinational circuit, and the first parameter value output circuit manufactured by a method in which the circuit configuration cannot be changed and the second parameter value manufactured by a method in which the circuit configuration can be changed. Includes output circuit.
  • the information processing circuit design method is a method for designing an information processing circuit that generates an information processing circuit that executes layer operations in deep learning, and is a plurality of types of parameter sets including a plurality of learned parameter values. And data that can specify the network structure are input, and a product-sum operation is performed using the input data and parameter values. A product-sum circuit specialized for layers in the network structure is created, and multiple types of parameters are created. As a combination circuit that outputs the parameter values in the set, create a first parameter value output circuit that is realized by a method that cannot change the circuit configuration, and create a second parameter value output circuit that is realized by a method that can change the circuit configuration. ..
  • the information processing circuit design program is a program for generating an information processing circuit that executes layer operations in deep learning, and is a set of a plurality of types of parameters including a plurality of learned parameter values in a computer. And the process of inputting data that can specify the network structure, and the process of creating a sum-of-product circuit that is a circuit that performs product-sum operations using input data and parameter values and is specialized for layers in the network structure.
  • a combination circuit that outputs parameter values in multiple types of parameter sets the process of creating the first parameter value output circuit realized by a method that cannot change the circuit configuration and the second parameter realized by a method that can change the circuit configuration.
  • the process of creating a value output circuit is executed.
  • the information processing circuit design apparatus uses an input means for inputting a plurality of types of parameter sets including a plurality of learned parameter values and data capable of specifying a network structure, and a product using the input data and the parameter values.
  • the parameter value output circuit creating means is realized by the first parameter value output circuit creating means for creating the first parameter value output circuit realized by the method in which the circuit configuration cannot be changed and the method in which the circuit configuration can be changed.
  • the second parameter value output circuit creating means for creating the second parameter value output circuit is included.
  • the information processing circuit is a CNN inference device provided with an arithmetic unit corresponding to each layer of the CNN.
  • the parameters are fixed, and the network configuration (type of deep learning algorithm, what type of layer is arranged in what order, size of input data and size of output data of each layer, etc. ) Is fixed to realize a CNN inferior.
  • the information processing circuit is a circuit having a circuit configuration specialized for each layer of the CNN (for example, each of the convolution layer and the fully coupled layer). Specializing means that it is a dedicated circuit that exclusively executes the operations of the relevant layer.
  • the fixed parameters mean that the processing of the learning phase is completed, the appropriate parameters are determined, and the determined parameters are used.
  • the parameters determined in the learning phase may be changed.
  • changing a parameter may be expressed as optimizing the parameter.
  • the degree of parallelism is determined in consideration of the data input speed, the processing speed, and the like.
  • the multiplier of the parameter (weight) and the input data in the inference device is composed of a combination logic circuit (combination circuit). Alternatively, it may be composed of a pipeline arithmetic unit. Alternatively, it may be configured by a sequential circuit.
  • FIG. 1 is an explanatory diagram schematically showing an information processing circuit according to the first embodiment.
  • FIG. 1 illustrates the arithmetic units 201, 202, 203, 204, 205, 206 in the information processing circuit 100 that realizes CNN. That is, FIG. 1 illustrates 6 layers of CNN.
  • Each arithmetic unit 201, 202, 203, 204, 205, 206 executes a product-sum operation for the parameters 211,212,213,214,215,216 used in the layer and the input data.
  • the arithmetic units 201 to 206 are realized by a plurality of combinational circuits.
  • the parameters 211 to 216 are also realized by the combinational circuit.
  • the combinational circuit is a negative logic product circuit (NAND circuit), a NOR circuit, a negative circuit (inverter circuit: NOT circuit), and a combination thereof.
  • NAND circuit negative logic product circuit
  • NOR circuit negative logic product circuit
  • NOT circuit negative circuit
  • one circuit element may be expressed as a combinational circuit, but a circuit including a plurality of circuit elements (NAND circuit, NOR circuit, NOT circuit, etc.) may be expressed as a combinational circuit.
  • parallel operations are executed in each of the arithmetic units 201 to 206, but a circuit that executes one operation in the parallel operations is used as a basic circuit.
  • the basic circuit is predetermined according to the type of layer.
  • the basic circuit 300 includes a product-sum circuit 301 that multiplies the input data and the parameter values from the parameter table (weight table) 302 and adds the multiplied values.
  • the input data may be one value. Further, the input data may be a set of a plurality of values.
  • FIG. 2 shows a parameter table 302 for storing parameter values, but in reality, the parameter values are not stored in the storage unit (storage circuit), and the parameter table 302 is combined. It is realized by the circuit.
  • the parameter table 302 since the parameters are fixed, the parameter values, which are fixed values, are output from the parameter table 302.
  • the parameter table 302 may output one value. Further, the parameter table 302 may output a set of a plurality of values.
  • the product-sum circuit 301 may multiply one input value and one parameter value. Further, the product-sum circuit 301 may multiply the set of input values and the set of parameter values. You may calculate the aggregate sum of the set of the multiplication result of the set of the input value and the set of the parameter value. In general, a plurality of parameters or a plurality of sets of parameters are used for one layer, and the control unit 400 controls which parameter is output.
  • the basic circuit 300 may include a register 303 that temporarily stores the product-sum operation value.
  • the product-sum circuit 301 may include an adder that adds a plurality of multiplication values temporarily stored in the register 303.
  • the output of another basic circuit 300 may be connected to the input of the basic circuit 300.
  • FIG. 3 is an explanatory diagram for explaining a circuit configuration example of the parameter table 302.
  • FIG. 3A shows an example of the truth table 311.
  • the truth table 311 can be realized by the combinational circuit.
  • Each of A, B, and C is an input of a combinational circuit.
  • Z1 and Z2 are outputs of the combinational circuit.
  • FIG. 3A shows the truth table 311 of the full adder as an example, A, B, and C can be regarded as addresses, and Z1 and Z2 can be regarded as output data. That is, Z1 and Z2 can be regarded as output data for the designated addresses A, B, and C.
  • By associating the output data with the parameter value a desired parameter value can be obtained according to some input (designated address).
  • the desired parameter value can be determined regardless of a specific input value (A in the truth table 311)
  • it is simplified to determine the parameter value by the inputs B and C in the truth table 311. All you have to do is use the truth table 312.
  • the circuit scale of the combinational circuit becomes smaller as the number of different types of inputs for determining the parameters decreases.
  • a known technique such as the Quine-McCluskey method is used to simplify the truth table.
  • the arithmetic unit 203 shown in FIG. 2 includes a control unit 400.
  • the control unit 400 controls the data of the designated address corresponding to the output data at a desired timing. Is supplied to the parameter table 302.
  • the parameter table 302 outputs the output data corresponding to the designated address, that is, the parameter value to the product sum circuit 301.
  • the desired timing is when the product-sum circuit 301 executes the multiplication process using the parameter values to be output from the parameter table 302.
  • FIG. 4 is a block diagram showing an example of an information processing circuit design device for designing the circuit configuration of the parameter table of each layer of the CNN and the circuit configuration of the arithmetic unit.
  • the information processing circuit design device 500 includes a parameter table optimization unit 501, a parameter table generation unit 502, a parallel degree determination unit 503, and an arithmetic unit generation unit 504.
  • the parallelism determination unit 503 inputs a network structure (specifically, data indicating the network structure).
  • the arithmetic unit generation unit 504 outputs the circuit configuration of the arithmetic unit for each layer.
  • the parameter table optimization unit 501 inputs the parameter set (weight in each layer) learned in the learning phase and the degree of parallelism determined by the parallel degree determination unit 503.
  • the parameter table generation unit 502 outputs the circuit configuration of the parameter table.
  • the parallel degree determination unit 503 determines the degree of parallelism for each layer.
  • the parameter table optimization unit 501 optimizes the parameter table based on the input parameters for each layer and the degree of parallelism for each layer determined by the parallel degree determination unit 503.
  • the number of parameter tables is determined by the degree of parallelism, but the parameter table optimization unit 501 optimizes each parameter in the plurality of parameter tables 302.
  • optimization means reducing the circuit area of the combinational circuit corresponding to the parameter table.
  • the degree of parallelism is determined to be "128”
  • the number of basic circuits 300 is 128.
  • Each basic circuit 300 is a product of 1152 pieces.
  • the process for the operation (147,456 / 128) is executed. In that case, the basic circuit 300 is provided with only 128 parameter tables having the parameter values of 1152.
  • the parameter table 302 is stored. It is not realized by a circuit, but by a combination circuit.
  • the parameter table optimization unit 501 optimizes the parameter values of the parameter table 302 by using a predetermined method.
  • the parameter table generation unit 502 outputs the circuit configuration for realizing the parameter table 302 having the optimized parameter values as the circuit configuration of the parameter table.
  • the parameter table optimization unit 501 inputs the parameter set (plural parameter values) learned in the learning phase, and the parallelism determination unit 503 inputs data indicating a predetermined network structure (step S11). ..
  • inputting data indicating the network structure is expressed as inputting the network structure.
  • the parallel degree determination unit 503 determines the parallel degree for each layer (step S12). As an example, the parallel degree determination unit 503 determines the parallel degree N by the equation (1). For example, when the number of layers specified by the input type of deep learning algorithm is 19, the parallel degree determination unit 503 determines the degree of parallelism of each of the 19 layers.
  • N C L / DL ... (1)
  • C L denotes a number of clocks required for all pixels of one screen in the parallel degree determination target layer (target layer) to process a single multiplier-adder.
  • D L denotes the number of clocks required for one display of the processor in the target layer (the number of clocks allowed).
  • one screen processes one vertical and horizontal pixel in one clock in a layer (referred to as a layer in the first block) having a vertical size of 224 and a horizontal size of 224 (50,176 pixels). It is assumed that the entire screen is executed with 50,176 clocks.
  • the processing of one vertical and horizontal pixel is performed with 256 clocks. If executed, the processing for one screen can be completed in 50, 176 clocks, which is the same as the first clock.
  • the degree of parallelism of the layer of the fifth block is 9,216.
  • the arithmetic unit of each layer (specifically, a plurality of basic circuits 300 included in the arithmetic unit) can be kept in operation at all times. In the configuration shown in FIG. 22, when no device is applied to the arithmetic units 701 to 706, the operating rate of the arithmetic unit 706 is lower than the operating rate of the arithmetic unit 701.
  • Non-Patent Document 1 Taking the configuration described in Non-Patent Document 1 as an example, since each layer is fully-parallel, the operating rate of the arithmetic unit is lower in the layer close to the output layer. However, in the present embodiment, it is possible to maintain a high operating rate of the arithmetic units of all layers.
  • the parameter table optimization unit 501 generates the parameter table 302 for each layer according to the determined degree of parallelism (step S13). Further, the parameter table optimization unit 501 optimizes the generated parameter table 302 (step S14).
  • FIG. 6 is a flowchart showing an example of the process of optimizing the parameter table 302 (parameter table optimization process).
  • the parameter table optimization unit 501 confirms whether or not the recognition accuracy is equal to or higher than the first reference value (step S142).
  • the first reference value is a predetermined threshold value.
  • the parameter table optimization unit 501 estimates the circuit area of the parameter table 302. Then, it is confirmed whether or not the circuit area of the parameter table 302 is equal to or less than the second reference value (step S144).
  • the second reference value is a predetermined threshold value.
  • the parameter table optimization unit 501 can estimate the circuit area of the parameter table 302 based on, for example, the number of logic circuits in the combinational circuit constituting the parameter table 302.
  • the parameter table optimization unit 501 ends the parameter table optimization process.
  • step S143 when the recognition accuracy is less than the first reference value, the parameter table optimizing unit 501 changes the parameter value in the direction in which the recognition accuracy is expected to improve.
  • the parameter table optimization unit 501 may change the parameter value by cut and try.
  • step S143 when the circuit area of the parameter table 302 exceeds the second reference value, the parameter table optimization unit 501 changes the parameter value so that the circuit area of the parameter table 302 becomes smaller.
  • a method of changing the parameter value for reducing the circuit area of the parameter table 302 for example, there are the following methods.
  • the parameter value whose absolute value is smaller than the predetermined threshold value is changed to 0.
  • the parameter value (positive number) larger than the predetermined threshold value is replaced with the maximum parameter value in the parameter table 302.
  • -Replace the parameter value (negative number) smaller than the predetermined threshold value with the minimum parameter value in the parameter table 302. Set a representative value for each predetermined area in the parameter table 302, and replace all the parameter values in the area with the representative value.
  • typical values are even-numbered values, odd-numbered values, mode values, and the like.
  • the parameter table optimization unit 501 may use one of the above-mentioned plurality of methods, or may use two or more of the above-mentioned plurality of methods in combination.
  • FIG. 7 is an explanatory diagram showing an example of a method of changing a parameter value.
  • FIG. 7 illustrates a parameter table having a size of 3 ⁇ 3.
  • FIG. 7A shows the parameter table 302a before the parameter value is changed.
  • FIG. 7B shows the parameter table 302b after the parameter values have been changed.
  • the purpose common to each of the above methods is to make the same value appear frequently in the parameter table 302, that is, to increase the parameter value of the same value or to make the same pattern continuous.
  • the meaning that the same pattern is continuous means that, for example, the patterns of the parameter values "1", "2", and "3" (an example of the same pattern) appear continuously.
  • the smaller the types of parameter values the smaller the circuit scale of the combinational circuit. Further, even when the same pattern is continuous, it is expected that the circuit scale of the combinational circuit will be smaller.
  • the recognition accuracy of the inference device is equal to or higher than a desired level (specifically, equal to or higher than the first reference value), and the circuit area is equal to or lower than a desired size (specifically). Specifically, when the value is equal to or less than the second reference value), the parameter table optimization process is terminated.
  • the arithmetic unit generation unit 504 generates and outputs the circuit configuration of the arithmetic unit for each layer (steps S15 and S17). That is, the arithmetic unit generation unit 504 outputs the circuit configuration of the arithmetic unit according to the parallelism degree for each layer determined by the parallelism degree determination unit 503.
  • the arithmetic unit generation unit 504 since the basic circuit 300 of each layer is predetermined, the arithmetic unit generation unit 504 has a number of basic circuits 300 (specifically, the number of basic circuits 300 determined by the parallel degree determination unit 503 according to the degree of parallelism). , A product-sum circuit 301) specialized for layers is generated.
  • the parameter table generation unit 502 generates and outputs the circuit configuration of the parameter table 302 (steps S16 and S17). That is, the parameter table generation unit 502 generates and outputs a circuit configuration for outputting the parameter value optimized by the parameter table optimization unit 501.
  • the circuit configuration for outputting the parameter value is, for example, the configuration of a combination circuit that realizes the truth table as illustrated in FIG. 3 (B).
  • the parallel degree determination unit 503 determines an appropriate degree of parallelism, so that the effect of reducing the circuit scale can be obtained. can.
  • the parameter table 302 is realized by the combinational circuit, it is configured to read the parameter value shown in FIG. 21 from the memory.
  • the processing speed is improved compared to the information processing circuit.
  • the degree of parallelism of each layer in the inference device is determined according to the calculation speed desired for that layer, the operation of the calculation unit of all layers is compared with the case where each layer is fully-parallel. The rate can be kept high.
  • the circuit scale is smaller than that in the case where each layer is fully-parallel. As a result, the power consumption of the inferior is reduced.
  • the circuit scale of the inference device can be made smaller.
  • the information processing circuit has been described by taking a CNN inference device as an example, but the present embodiment may be applied to another network having a layer for performing an operation using input data and a parameter value. can.
  • the image data is used as the input data, but the present embodiment can also be utilized in a network in which the input data is other than the image data.
  • the power consumption of the data center is large, it is desirable to execute it with low power consumption when the deep learning algorithm is executed in the data center.
  • the power consumption is reduced, so that the information processing circuit of the present embodiment can be effectively utilized in the data center.
  • the information processing circuit of this embodiment can be effectively used even on the edge side.
  • the first parameter (hereinafter referred to as the first parameter) is a parameter commonly used for each purpose of deep learning.
  • the second parameter (hereinafter referred to as the second parameter) is a parameter used individually for each application.
  • FIG. 8 the arithmetic units 201, 202, 203, 204, 205, and 206 in the information processing circuit 101 using two types of parameters are exemplified. That is, FIG. 8 illustrates 6 layers of CNNs using two types of parameters.
  • Each arithmetic unit 201, 202, 203, 204, 205, 206 has a first parameter 221,222,223,224,225,226 and a second parameter 231,232,233,234,235,236 used in the layer.
  • the product-sum operation is executed for the input data and the input data.
  • the arithmetic units 201 to 206 are realized by a plurality of combinational circuits.
  • the first parameters 221 to 226 and the second parameters 231 to 236 are also realized by a plurality of combinational circuits.
  • the difference in the circuit configuration from the information processing circuit 100 of the first embodiment is that there are circuits constituting the first parameter and the second parameter, respectively.
  • the second parameter output circuit Since the circuit configuration of the second parameter output circuit can be changed, the information stored at the time of manufacture is arbitrary. At the time of manufacture, the second parameter output circuit may not hold individual information, and may hold any parameter according to the application. Since the circuit of the second parameter output circuit is adjusted (updated) according to the application, in FIG. 8, the second parameters 231 to 236 are surrounded by a dotted line to show the state.
  • parallel arithmetic is executed in each of the arithmetic units 201 to 206.
  • a circuit that executes one operation in parallel operation is used as a basic circuit. Further, the basic circuit is predetermined according to the type of layer.
  • FIG. 9 is an explanatory diagram showing a configuration example of the basic circuit of the information processing circuit of the second embodiment.
  • FIG. 9 illustrates the arithmetic units (circuits) 201, 202, 203, 204, 205, and 206 of the six layers, respectively. In each layer, a basic circuit 310 for the number of parallel processes is provided. Although FIG. 9 illustrates the basic circuit 310 included in the arithmetic unit 203, the arithmetic units 201, 202, 204, 205, and 206 of other layers also have the same circuit configuration.
  • the basic circuit 310 includes a product-sum circuit 301, a register 303, a first parameter table 304, and a second parameter table 305.
  • the product-sum circuit 301 is a circuit that multiplies the input data with the parameter values from the first parameter table 304 and the second parameter table 305 and adds the multiplied values, as in the first embodiment. It should be noted that not all the basic circuits 310 need to have the same configuration, and for example, one or more of the plurality of basic circuits 310 includes the product-sum circuit 301, the first parameter table 304, and the second parameter table 305. May be.
  • the first parameter table 304 corresponds to the above-mentioned first parameter output circuit, and is a table that stores parameters commonly used in each application for deep learning using the information processing circuit 101 of the present embodiment.
  • the second parameter table 305 corresponds to the above-mentioned second parameter output circuit and is a table for storing parameters individually used for each application.
  • the basic circuit 310 multiplies the input data by the parameter values from the first parameter table 304 and the second parameter table 305, and adds the multiplied values to the product-sum circuit 301.
  • FIG. 9 illustrates the first parameter table 304 and the second parameter table 305 that store the parameter values.
  • the first parameter table 304 and the second parameter table 305 are not stored in the storage unit (storage circuit) as in the parameter table 302 of the first embodiment, but are realized by a combination circuit. Will be done.
  • the arithmetic unit 203 shown in FIG. 9 includes a control unit 400.
  • the control unit 400 When the parameter values in the first parameter table 304 and the second parameter table 305 are realized as output data corresponding to the designated address as in the first embodiment, the control unit 400 outputs at a desired timing.
  • the data of the designated address corresponding to the data is supplied to the first parameter table 304.
  • the second parameter table 305 via the first parameter table 304 outputs the output data corresponding to the designated address, that is, the parameter value to the product sum circuit 301.
  • the desired timing is when the product-sum circuit 301 executes the multiplication process using the parameter values to be output from the first parameter table 304 and the second parameter table 305.
  • FIG. 10 is a block diagram showing an example of an information processing circuit design device for designing the circuit configuration of the first parameter table and the second parameter table in each layer of the CNN and the circuit configuration of the arithmetic unit.
  • the information processing circuit design device 510 includes a parameter table optimization unit 511, a parameter table generation unit 512, a parallel degree determination unit 513, an arithmetic unit generation unit 514, and a parameter table division unit 515.
  • the configuration is the same as that of the information processing circuit design device 500 of the first embodiment, except that the parameter table division unit 515 exists in the information processing circuit design device 510.
  • the parallelism determination unit 513 inputs a network structure (specifically, data indicating the network structure).
  • the arithmetic unit generation unit 514 outputs the circuit configuration of the arithmetic unit for each layer.
  • the parameter table optimization unit 511 inputs a plurality of parameter sets (weights in each layer) learned in the learning phase and the degree of parallelism determined by the parallel degree determination unit 513.
  • the plurality of parameter sets are specifically neural network parameter sets used for each application.
  • parameter set A is the parameter set used for face detection
  • parameter set B is the parameter set used for vehicle detection
  • types of parameter sets are not limited to two types, and may be three or more types.
  • the degree of parallelism determination unit 513 determines the degree of parallelism for each layer.
  • the method of determining the degree of parallelism for each layer by the degree of parallelism determination unit 513 is the same as that of the first embodiment.
  • the parameter table optimization unit 511 optimizes the parameter table for each parameter set based on the input parameters for each layer and the degree of parallelism for each layer determined by the parallel degree determination unit 513. Similar to the first embodiment, the number of parameter tables is determined by the degree of parallelism, and the parameter table optimization unit 511 optimizes each parameter in each parameter table for each parameter set. The optimization method will be described later.
  • the parameter table division unit 515 divides the parameter table of each optimized parameter set into a common part common to each parameter set and an individual part other than the common part.
  • the parameter table division unit 515 is a combination circuit that outputs a parameter value, a combination circuit that calculates a logical operation common to each parameter set (that is, a common unit), and the parameter table input in addition to the above. Create a circuit divided into a combination circuit (that is, an individual part) that inputs the output of the common part and calculates individual logical operations.
  • the parameter table division unit 515 is a combinational circuit that realizes a parameter table common to each parameter set (that is, a common part) as a combinational circuit that outputs parameter values, and a parameter table (that is, a parameter table in each parameter set excluding the common part). That is, a circuit divided into a combinational circuit that realizes the individual part) may be created.
  • the parameter table division unit 515 creates a logical expression representing the parameter table of each parameter set. Then, the parameter table division unit 515 extracts a common logical expression as a common part from the logical expressions of each created parameter set, and extracts the remaining logical expressions (that is, logical expressions that are not common) of each parameter set. It is an individual part.
  • the combinational circuit that realizes this common part corresponds to the above-mentioned first parameter output circuit, and the combinational circuit that realizes the individual part corresponds to the above-mentioned second parameter output circuit. That is, the parameter table division unit 515 realizes the common unit and the individual unit in this way.
  • the arithmetic unit generation unit 514 inputs the degree of parallelism for each layer determined by the parallel degree determination unit 513.
  • the arithmetic unit generation unit 514 generates a circuit configuration in which the number of basic circuits 310 indicated by the degree of parallelism are arranged for each layer. Then, the arithmetic unit generation unit 514 outputs the generated circuit configuration for each layer as the configuration of the arithmetic unit circuit.
  • FIG. 11 is an explanatory diagram showing an example of the process of dividing the parameter table.
  • the circuit that realizes the parameter table optimized for the parameter set A is referred to as the parameter A circuit 3021
  • the circuit that realizes the parameter table optimized for the parameter set B is referred to as the parameter B circuit 3022.
  • the parameter table division unit 515 extracts the A circuit (A-1) and the B circuit (B-1) as common parts from the parameter A circuit 3021 and the parameter B circuit 3022, respectively. As a result, the A circuit (A-2) and the B circuit (B-2) become individual parts of each parameter set. Then, in the parameter table dividing unit 515, the A circuit (A-1) and the B circuit (B-1) are set as the first parameter table 304 (common part), and the A circuit (A-2) or the B circuit (B-2) is used. ) Is the second parameter table 305 (individual part).
  • FIG. 12 is a flowchart showing the operation of the information processing circuit design device 510 of the second embodiment.
  • the parameter table optimization unit 511 inputs a plurality of types of parameter sets (multiple parameter values) for face detection, vehicle detection, etc. learned in the learning phase, and the parallel degree determination unit 513 is predetermined. Data indicating the network structure is input (step S21).
  • the parallel degree determination unit 503 determines the parallel degree for each layer (step S22).
  • the method for determining the degree of parallelism is the same as the method used in the first embodiment.
  • the parameter table optimization unit 511 generates a parameter table for each layer according to the determined degree of parallelism (step S23). Further, the parameter table optimization unit 511 optimizes the generated parameter table (step S24), and divides the optimized parameter set into two (that is, a common unit and an individual unit) (step S25).
  • FIG. 13 is a flowchart showing an example of the process of optimizing the parameter table (parameter value change process).
  • the parameter table dividing unit 515 divides the parameter table for each parameter set into a common part and an individual part, respectively (step S251). However, if there is no common part, the parameter table division part 515 does not divide. Further, the parameter table optimization unit 511 measures the recognition accuracy of the CNN (inference device) using a plurality of types of parameter sets (for example, parameter set A and parameter set B) (step S252). Then, the parameter table optimization unit 511 determines whether or not the recognition accuracy of the CNN using each parameter set is equal to or higher than the reference value (hereinafter, may be referred to as an accuracy reference value) (step S253).
  • the reference value hereinafter, may be referred to as an accuracy reference value
  • step S253 If each recognition accuracy is equal to or higher than the reference value (accuracy reference value) (Yes in step S253), the process proceeds to step S254.
  • the first reference value and the second reference value are predetermined threshold values.
  • the process proceeds to step S255.
  • the parameter table optimization unit 511 changes the parameter value (specifically, at least one of the first parameter value and the second parameter value) in the parameter table. For example, when the circuit area occupied by the common unit is less than the third reference value, the parameter table optimization unit 511 changes the parameter value of the parameter table in the direction in which the circuit area is expected to improve. When the direction in which the circuit area is expected to improve is unknown, the parameter table optimization unit 511 may change the parameter value by cut and try.
  • the parameter table optimization unit 511 repeats the processes of step S252 and below. That is, the parameter table optimization unit 511 repeatedly changes at least one of the first parameter value and the second parameter value. If the recognition accuracy does not reach the reference value as a result of changing the parameter value in step S255, the parameter table optimization unit 511 returns the value changed in step S255 to the original value before the change. You may. If the recognition accuracy and the circuit area do not reach the reference value no matter how many times the parameter value is changed, the parameter table optimization unit 511 determines the parameter when the number of times the parameter value is changed reaches the limit. The value change process may be terminated.
  • FIG. 14 is an explanatory diagram showing an example of a truth table before changing the parameter value.
  • FIG. 14 shows an example of the truth table of the circuit A (parameter A circuit 3021) before the parameter change and the truth table of the circuit B (parameter B circuit 3022) before the parameter change.
  • each of the designated addresses A, B, and C is an input of the combinational circuit
  • the parameter Z1 is an output of the combinational circuit. That is, Z1 can be regarded as output data for the designated addresses A, B, and C.
  • each of the designated addresses A, B, and C is an input of the combinational circuit
  • the parameter Z2 is an output of the combinational circuit.
  • Z2 can be regarded as output data for the designated addresses A, B, and C.
  • the output parameter (Z1) is represented by a logical expression: A & (NOT B) & C
  • the output parameter (Z2) is represented by a logical expression: A & (NOT B) & C
  • a & B & C, Z2 D
  • FIG. 15 is an explanatory diagram showing an example of a truth table after changing the parameter values illustrated in FIG. 14.
  • FIG. 15 shows an example of the truth table of the circuit A after the parameter change (parameter A circuit 3021) and the truth table of the circuit B after the parameter change (parameter B circuit 3022). Specifically, in the truth table 412, the parameter value (Z2) in the last line shown by the underline is changed from 0 to 1.
  • the output parameter (Z1) is represented by a logical expression: A & (NOT B) & C
  • the output parameter (Z2) is represented by a logical expression: A & (NOT B) & C
  • a & B & C is common to each parameter table.
  • the common part (D) is larger after the change by the amount of the circuit that realizes A & B & C than before the change.
  • the individual part (Z1) is smaller after the change by the amount of the circuit that realizes A & B & C than before the change. That is, after the change, the area ratio of the common part is larger and the area ratio of the individual part is smaller than before the change. Therefore, it can be said that the area efficiency is better after the change.
  • the arithmetic unit generation unit 514 generates and outputs the circuit configuration of the arithmetic unit for each layer (steps S26 and S29). That is, the arithmetic unit generation unit 514 outputs the circuit configuration of the arithmetic unit according to the parallelism degree for each layer determined by the parallelism degree determination unit 513.
  • the arithmetic unit generation unit 514 since the basic circuit 310 of each layer is predetermined, the arithmetic unit generation unit 514 has a number of basic circuits 310 (specifically, the number of basic circuits 310 according to the degree of parallelism determined by the parallel degree determination unit 513). , A product-sum circuit 301) specialized for layers is generated.
  • the parameter table generation unit 512 generates and outputs the circuit configurations of the first parameter table 304 and the second parameter table 305 (steps S27, S28, S29). That is, the parameter table generation unit 512 generates and outputs a circuit configuration for the parameter table optimization unit 511 to optimize and the parameter table division unit 515 to output the divided parameter values.
  • the circuit configuration for outputting the parameter value is the configuration of the first parameter table circuit and the second parameter table circuit.
  • steps S24 to S28 are sequentially executed, but the processes of steps S25, S27, and S28 and the processes of step S26 can be executed in parallel.
  • the first parameter table circuit and the second parameter table circuit are generated by the combinational circuit.
  • the first parameter table circuit is manufactured by a method in which the circuit configuration cannot be changed after manufacturing, for example, a cell-based method.
  • the second parameter table circuit is manufactured by a method in which the circuit configuration can be changed after manufacturing, for example, a gate array method or an FPGA method.
  • FIG. 16 is an explanatory diagram showing the characteristics of the circuit after manufacturing in each manufacturing method.
  • the circuit manufactured by the cell-based method it is “impossible” to change the circuit after manufacturing, but the circuit area can be reduced.
  • the circuit manufactured by the FPGA method it is “possible” to change the circuit after manufacturing, but the circuit area becomes large.
  • the circuit area is larger than that of the cell-based method.
  • it is desirable that the circuit is manufactured by the cell-based method.
  • it is desirable that the circuit is manufactured by the gate array method or the FPGA method.
  • the information processing circuit of the present embodiment has a circuit configuration and a first parameter value output circuit manufactured by a method (for example, a cell-based method) in which the circuit configuration cannot be changed as a parameter value output circuit composed of a combinational circuit.
  • a method for example, a cell-based method
  • the first parameter value output circuit is manufactured based on the first parameter table 304, and the logical operation used in any of the plurality of types of parameter sets used in the CNN is calculated.
  • the first parameter value to be output is output.
  • the second parameter value output circuit is manufactured by a method that allows the circuit configuration to be changed after manufacturing, and is adjusted based on the second parameter table 305 after manufacturing, and is output from the first parameter value output circuit in addition to the input of the parameter table. Is input to output the second parameter value for calculating individual logical operations. In this way, by fixing the parameters that can be shared and making it possible to change the parameters that are used individually for each application, it is possible to update the weights (parameters) while maintaining the area efficiency.
  • the inferior as the information processing circuit of the present embodiment includes a product-sum circuit that performs a product-sum operation using input data and a parameter value, and a parameter value output circuit that outputs a parameter value.
  • the parameter value output circuit is composed of a combinational circuit, and includes a first parameter value output circuit manufactured by a method in which the circuit configuration cannot be changed and a second parameter value output circuit manufactured by a method in which the circuit configuration can be changed. include.
  • the inference device of the present embodiment can update the weight (parameter) while maintaining the area efficiency.
  • the output of the first parameter value output circuit is input in addition to the input of the parameter table, and the calculation result of the individual logical operation is obtained by the second parameter value output circuit. Can be adjusted to output.
  • Each component in the information processing circuit design devices 500 and 510 shown in FIGS. 4 and 10 can be configured by one hardware or one software. Further, each component can be configured by a plurality of hardware or a plurality of software. It is also possible to configure a part of each component with hardware and another part with software.
  • FIG. 17 is a block diagram showing an example of a computer having a CPU.
  • a computer having a processor such as a CPU (Central Processing Unit) and a memory
  • FIG. 17 shows a storage device 1001 and a memory 1002 connected to the CPU 1000.
  • the CPU 1000 realizes each function in the information processing circuit design devices 500 and 510 shown in FIGS. 4 and 10 by executing a process (information processing circuit design process) according to a program stored in the storage device 1001.
  • the computer is a parameter table optimization unit 501, 511, a parameter table generation unit 502, 512, a parallel degree determination unit 503, 513, and an arithmetic unit in the information processing circuit design devices 500 and 510 shown in FIGS. 4 and 10.
  • the functions of the generation unit 504 and 514 and the parameter table division unit 515 are realized.
  • the program may also be stored on various types of temporary computer-readable media (transitory computer readable medium).
  • the temporary computer-readable medium is supplied with a program, for example, via a wired or wireless channel, i.e., via an electrical signal, an optical signal, or an electromagnetic wave.
  • the memory 1002 is realized by, for example, a RAM (RandomAccessMemory), and is a storage means for temporarily storing data when the CPU 1000 executes processing. It is also possible to envision a form in which a program held by the storage device 1001 or a temporary computer-readable medium is transferred to the memory 1002, and the CPU 1000 executes processing based on the program in the memory 1002.
  • a RAM RandomAccessMemory
  • FIG. 18 is a block diagram showing a main part of an information processing circuit.
  • the information processing circuit 10 is an information processing circuit that executes layer operations in deep learning, and is a product-sum circuit 11 that performs a product-sum operation using input data and parameter values (in the embodiment, the product-sum circuit 301).
  • the parameter value output circuit 12 includes a parameter value output circuit 12 (in the embodiment, realized by the first parameter table 304 and the second parameter table 305) that outputs the parameter value.
  • the first parameter value output circuit 13 (in the embodiment, realized by the first parameter table 304), which is composed of a combinational circuit and is manufactured by a method in which the circuit configuration cannot be changed, is manufactured by a method in which the circuit configuration can be changed. It also includes a second parameter value output circuit 14 (in the embodiment, realized by the second parameter table 305).
  • FIG. 19 is a block diagram showing a main part of the information processing circuit design device.
  • the information processing circuit design device 20 is an input means 21 for inputting a plurality of types of parameter sets including a plurality of learned parameter values and data capable of specifying a network structure (in the embodiment, one of the parameter table optimization units 511). It is realized as a part of the unit and the degree of parallelism determination unit 513.), And it is a circuit that performs the product-sum operation using the input data and the parameter value, and creates a product-sum circuit specialized for the layer in the network structure.
  • a parameter value output circuit creating means 23 (in the embodiment) that creates a combination circuit that outputs the parameter values in the arithmetic unit generating means 22 (in the embodiment, realized by the arithmetic unit generating unit 514) and the parameter values in a plurality of types of parameter sets.
  • the parameter value output circuit creating means 23 is realized by a method in which the circuit configuration cannot be changed. 1
  • the first parameter value output circuit creating means 24 (in the embodiment, the parameter table optimization unit 511, the parameter table division unit 515, and the parameter table generation unit 512) for creating the parameter value output circuit, and the circuit configuration.
  • Appendix 1 An information processing circuit that executes layer operations in deep learning.
  • a product-sum circuit that performs a product-sum operation using input data and parameter values, It is equipped with a parameter value output circuit that outputs the parameter value.
  • the parameter value output circuit is composed of a combinational circuit.
  • the first parameter value output circuit manufactured by a method that cannot change the circuit configuration, and
  • Appendix 3 Equipped with a number of basic circuits according to the number of parallel processes, One or more of the plurality of basic circuits is the information processing circuit of Appendix 1 or Appendix 2 including the product-sum circuit, the first parameter value output circuit, and the second parameter value output circuit.
  • a method of designing an information processing circuit that generates an information processing circuit that executes layer operations in deep learning. Enter multiple types of parameter sets including multiple trained parameter values and data that can identify the network structure. Create a product-sum circuit that is specialized for layers in the network structure and is a circuit that performs product-sum operations using input data and parameter values. As a combinational circuit that outputs parameter values in the plurality of types of parameter sets, Create a first parameter value output circuit that can be realized by a method that cannot change the circuit configuration.
  • a method for designing an information processing circuit which comprises creating a second parameter value output circuit realized by a method in which the circuit configuration can be changed.
  • the first parameter value output circuit for calculating the first logical operation used in any type of parameter set is created.
  • the information processing circuit design program is The process of inputting multiple types of parameter sets including multiple trained parameter values and data that can identify the network structure, and A circuit that performs a product-sum operation using input data and parameter values, and a process that creates a product-sum circuit specialized for layers in the network structure.
  • As a combinational circuit that outputs parameter values in the plurality of types of parameter sets The process of creating the first parameter value output circuit realized by a method that cannot change the circuit configuration, and It is characterized by having the processor execute the process of creating a second parameter value output circuit realized by a method that can change the circuit configuration.
  • the information processing circuit design program is Of the plurality of types of parameter sets used in the neural network, the process of creating the first parameter value output circuit for calculating the first logical operation used in any type of parameter set, and The recording medium of Appendix 7 for causing the processor to execute the process of creating the second parameter value output circuit for calculating individual logical operations by inputting the output of the first parameter value output circuit in addition to the input of the parameter table.
  • the first parameter value output circuit creating means calculates the first logical operation used in any of the plurality of types of parameter sets used in the neural network. Create a value output circuit and The second parameter value output circuit creating means creates the second parameter value output circuit by inputting the output of the first parameter value output circuit in addition to the input of the parameter table and calculating individual logic operations.
  • Information processing circuit design device The first parameter value output circuit creating means calculates the first logical operation used in any of the plurality of types of parameter sets used in the neural network. Create a value output circuit and The second parameter value output circuit creating means creates the second parameter value output circuit by inputting the output of the first parameter value output circuit in addition to the input of the parameter table and calculating individual logic operations.
  • Appendix 11 A program for generating an information processing circuit that executes layer operations in deep learning.
  • On the computer The process of inputting multiple types of parameter sets including multiple trained parameter values and data that can identify the network structure, and A circuit that performs a product-sum operation using input data and parameter values, and a process that creates a product-sum circuit specialized for layers in the network structure.
  • As a combinational circuit that outputs parameter values in the plurality of types of parameter sets The process of creating the first parameter value output circuit realized by a method that cannot change the circuit configuration, and An information processing circuit design program for executing the process of creating a second parameter value output circuit realized by a method that can change the circuit configuration.
  • Appendix 12 To the computer Of the plurality of types of parameter sets used in the neural network, the process of creating the first parameter value output circuit for calculating the first logical operation used in any type of parameter set, and Design of the information processing circuit of Appendix 11 to input the output of the first parameter value output circuit in addition to the input of the parameter table and execute the process of creating the second parameter value output circuit for calculating individual logical operations. program.
  • Second parameter value output circuit 100, 101 Information processing circuit 201, 202, 203, 204, 205, 206 Arithmetic unit 211,212,213,214,215,216 Parameter 221,222 , 223,224,225,226 1st parameter 231,232,233,234,235,236 2nd parameter 300,310 Basic circuit 301 Sum of products circuit 302 Parameter table 3021 Parameter A table 3022 Parameter B table 303 Register 304 1st Parameter table 305 Second parameter table 400 Control unit 500, 510 Information processing circuit design device 501,511 Parameter table optimization unit 502,512 Parameter table generation unit 503, 513 Parallel degree determination unit 504, 514 Arithmetic unit generation unit 515 Parameter table Division 1000 CPU 1001 storage device 1002 memory

Landscapes

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

Abstract

情報処理回路10は、深層学習における層の演算を実行する情報処理回路であって、入力データとパラメタ値とを用いて積和演算を行う積和回路11と、パラメタ値を出力するパラメタ値出力回路12とを含み、パラメタ値出力回路12は、組み合わせ回路で構成され、回路構成を変更できない方式で製造された第1パラメタ値出力回路13と、回路構成を変更できる方式で製造された第2パラメタ値出力回路14とを含む。

Description

情報処理回路および情報処理回路の設計方法
 本発明は、深層学習の推論フェーズを実行する情報処理回路、およびそのような情報処理回路の設計方法に関する。
 深層学習は、多層のニューラルネットワーク(以下、ネットワークという。)を使用するアルゴリズムである。深層学習では、各々のネットワーク(層)を最適化してモデル(学習モデル)を作成する学習フェーズと、学習モデルに基づいて推論が行われる推論フェーズとが実行される。なお、モデルは、推論モデルといわれることもある。また、以下、モデルを推論器と表現することがある。
 学習フェーズおよび推論フェーズにおいて、パラメタとしての重みを調整するための演算が実行されたり、入力データと重みとを対象とする演算が行われたりするが、それらの演算の計算量は多い。その結果、各々のフェーズの処理時間が長くなる。
 深層学習を高速化するために、CPU(Central Processing Unit )によって実現される推論器ではなく、GPU(Graphics Processing Unit)によって実現される推論器がよく用いられる。さらに、深層学習専用のアクセラレータが実用化されている。
 図20は、畳み込みニューラルネットワーク(CNN:Convolutional Neural Network)の一例であるVGG(Visual Geometry Group )-16の構造を示す説明図である。VGG-16は、13層の畳み込み層および3層の全結合層を含む。畳み込み層で、または畳み込み層とプーリング層とで抽出された特徴は、全結合層で分類される。
 図20において、「I」は入力層を示す。「C」は畳み込み層を示す。図20において、畳み込み層は3×3の畳み込みである。よって、たとえば、図20の最初の畳み込み演算には1画素あたり3(縦サイズ)×3(横サイズ)×3(入力チャネル)×64(出力チャネル)個の積和演算を含む。また例えば図20の5ブロック目の畳み込み層には、1画素あたり3(縦サイズ)×3(横サイズ)×512(入力チャネル)×512(出力チャネル)個の積和演算を含む。「P」はプーリング層を示す。図20に示すCNNでは、プーリング層は、Max Pooling 層である。「F」は全結合層を示す。「O」は出力層を示す。出力層では、softmax関数が使用される。なお、畳み込み層および全結合層は、正規化線形ユニット(Rectified Linear Unit :ReLU)を含む。各層に付されている乗算式は、一枚の入力画像に対応するデータの縦サイズ×横サイズ×チャネル数を表す。また、層を表す直方体の体積は、層におけるアクティベーションの量に対応する。
特開2019-139742号公報
 アクセラレータで推論器を実現する場合、主として2つの方法が考えられる。
 CNNを例にすると、第1の方法では、CNNは、CNNを構成する複数の層の演算が共通の演算器で実行されるように構成される(例えば、特許文献1の段落0033等参照。)。
 図21は、複数の層の演算が共通の演算器で実行されるように構成されたCNNの演算器を模式的に示す説明図である。推論器における演算を実行する部分は、演算器700とメモリ(例えば、DRAM(Dynamic Random Access Memory))900とで構成される。図21に示す演算器700には、多数の加算器と多数の乗算器とが形成される。図21において、「+」は加算器を示し、「*」は乗算器を示す。なお、図21には、3つの加算器と6個の乗算器とが例示されているが、CNNにおける全ての層の各々の演算が実行可能な数の加算器と乗算器とが形成される。
 推論器の各層の演算が実行される場合、演算器700は、演算実行対象の一層についてのパラメタをDRAM900から読み出す。そして、演算器700は、一層における積和演算を、パラメタを係数として実行する。
 第2の方法では、CNNは、CNNを構成する全ての層の各々(特に、畳み込み層)の演算を、各層に対応する演算器で実行されるように構成される(例えば、非特許文献1参照)。なお、非特許文献1には、CNNが2つのステージに分割され、前段のステージにおいて、各々の層に対応する演算器が設けられることが記載されている。
 図22は、各々の層に対応する演算器が設けられたCNNを模式的に示す説明図である。図22には、CNNにおける6つの層801,802,803,804,805,806が例示されている。層801,802,803,804,805,806のそれぞれに対応する演算器(回路)701,702,703,704,705,706が設けられている。
 演算器701~706は、対応する層801~806の演算を実行するので、パラメタが不変であれば、固定的に回路構成される。そして、非特許文献1には、パラメタを固定値にすることが記載されている。
 上記の第1の方法では、DRAM900が備えられているので、パラメタが変更されても、演算器701~706の回路構成を変更することなく、CNNの機能が実行される。しかし、DRAM900のデータ転送速度は、演算器700の演算速度と比較すると低速である。すなわち、DRAM900のメモリ帯域は狭い。したがって、演算器700とメモリの間のデータ転送がボトルネックになる。その結果、CNNの演算速度が制限される。
 上記の第2の方法では、各層のそれぞれに対応する演算器701~706が設けられるので、CNN全体としての回路規模が大きくなる。
 非特許文献1に記載された方法では、パラメタおよびネットワーク構成を固定することによって、CNN全体としての加算器と乗算器の回路規模が小さくなる。ただし、非特許文献1に記載された方法では、各層に関して、完全に並列処理が可能であるように(fully-parallel)回路構成されるので、そのような回路構成によって、回路規模は大きくなる。なお、各層に関して各入力チャネル、各出力チャネルに対応する演算を並列処理するように回路構成されるので、そのような回路構成によって、回路規模は大きくなる。また、各層に関して、完全に並列処理が可能であるように回路構成されるので、一枚の画像に対応する入力データの処理時間は各層において同じ時間であることが望ましい。
 CNNでは、先の層(出力層に近い層)であるほど、一枚の画像に対応する入力データの縦サイズや横サイズが小さくなる場合がある。例えばプーリング層によって一枚の画像に対応する入力データの縦サイズと横サイズが縮小される。各層が同じ時間で一枚の入力画像に対応するデータを処理するとした場合、先の層のチャネル数を極端に多くしない限り、先の層での計算量は小さくなる。換言すれば、本来、先の層であるほど、その層の演算を実行する回路規模は小さくてよい。しかし、非特許文献1に記載された方法では、演算器700は、すべての入力チャネルと出力チャネルの演算を並列に実行可能に構成されるので、入力データの縦サイズと横サイズが少ない層については、一枚の画像に対応する入力データの処理が早く終わり、次の画像に対応する入力データが供給されるまで待ち時間が発生する。換言すれば演算器700の利用率は低くなる。
 また、非特許文献1に記載されたCNNの構成は、CNNが2つのステージに分割され、前段のステージにおいて各々の層に対応する演算器が設けられるという構成である。そして、後段のステージは、DRAMにパラメタが転送され、演算器としてプログラマブルなアクセラレータを用いるように構成される。すなわち、CNNは、ある程度のパラメタの変更やネットワーク構成の変更に応えられるように構成され、CNN全体として、すなわち、推論器全体として、パラメタおよびネットワーク構成を固定することは、非特許文献1に記載されていない。
 また、推論器全体として、パラメタおよびネットワーク構造を固定した場合、一度回路を製造してしまうと深層学習のネットワーク構造および重み(パラメタ)を変更することは困難である。例えば、顔認証チップとして製造された回路は、顔認証でしか使用できない。すなわち、パラメタおよびネットワーク構造を固定した回路は、他の種類のCNNに対応することが困難である。
 本発明は、推論器がハードウエアで実現される場合に、メモリ帯域の制約から解放され、かつ、推論器における各層の演算器の利用率が向上する情報処理回路および情報処理回路の設計方法を提供することを目的とする。
 本発明による情報処理回路は、深層学習における層の演算を実行する情報処理回路であって、入力データとパラメタ値とを用いて積和演算を行う積和回路と、パラメタ値を出力するパラメタ値出力回路とを含み、パラメタ値出力回路は、組み合わせ回路で構成され、回路構成を変更できない方式で製造された第1パラメタ値出力回路と、回路構成を変更できる方式で製造された第2パラメタ値出力回路とを含む。
 本発明による情報処理回路の設計方法は、深層学習における層の演算を実行する情報処理回路を生成する情報処理回路の設計方法であって、学習済みの複数のパラメタ値を含む複数種類のパラメタセットとネットワーク構造を特定可能なデータとを入力し、入力データとパラメタ値とを用いて積和演算を行う回路であってネットワーク構造における層に特化した積和回路を作成し、複数種類のパラメタセットにおけるパラメタ値を出力する組み合わせ回路として、回路構成を変更できない方式で実現される第1パラメタ値出力回路を作成し、回路構成を変更できる方式で実現される第2パラメタ値出力回路を作成する。
 本発明による情報処理回路の設計プログラムは、深層学習における層の演算を実行する情報処理回路を生成するためのプログラムであって、コンピュータに、学習済みの複数のパラメタ値を含む複数種類のパラメタセットとネットワーク構造を特定可能なデータとを入力する処理と、入力データとパラメタ値とを用いて積和演算を行う回路であってネットワーク構造における層に特化した積和回路を作成する処理と、複数種類のパラメタセットにおけるパラメタ値を出力する組み合わせ回路として、回路構成を変更できない方式で実現される第1パラメタ値出力回路を作成する処理と、回路構成を変更できる方式で実現される第2パラメタ値出力回路を作成する処理とを実行させる。
 本発明による情報処理回路設計装置は、学習済みの複数のパラメタ値を含む複数種類のパラメタセットとネットワーク構造を特定可能なデータとを入力する入力手段と、入力データとパラメタ値とを用いて積和演算を行う回路であってネットワーク構造における層に特化した積和回路を作成する演算器生成手段と、複数種類のパラメタセットにおけるパラメタ値を出力する組み合わせ回路を作成するパラメタ値出力回路作成手段とを含み、パラメタ値出力回路作成手段は、回路構成を変更できない方式で実現される第1パラメタ値出力回路を作成する第1パラメタ値出力回路作成手段と、回路構成を変更できる方式で実現される第2パラメタ値出力回路を作成する第2パラメタ値出力回路作成手段とを含む。
 本発明によれば、メモリ帯域の制約から解放され、かつ、推論器における各層の演算器の利用率が向上する情報処理回路を得ることができる。
第1の実施形態の情報処理回路を模式的に示す説明図である。 第1の実施形態の情報処理回路の基本回路の構成例を示す説明図である。 パラメタテーブルの回路構成例を説明するための説明図である。 第1の実施形態の情報処理回路設計装置の一例を示すブロック図である。 第1の実施形態の情報処理回路設計装置の動作を示すフローチャートである。 パラメタテーブルを最適化する処理の一例を示すフローチャートである。 パラメタ値の変更方法の一例を示す説明図である。 第2の実施形態の情報処理回路を模式的に示す説明図である。 第2の実施形態の情報処理回路の基本回路の構成例を示す説明図である。 第2の実施形態の情報処理回路設計装置の一例を示すブロック図である。 パラメタテーブルを分割する処理の一例を示す説明図である。 第2の実施形態の情報処理回路設計装置の動作を示すフローチャートである。 パラメタテーブルを最適化する処理の一例を示すフローチャートである。 パラメタ値を変更する前の真理値表の一例を示す説明図である。 パラメタ値の変更した後の真理値表の一例を示す説明図である。 各製造方法における製造後の回路の特徴を示す説明図である。 CPUを有するコンピュータの一例を示すブロック図である。 情報処理回路の主要部を示すブロック図である。 情報処理回路設計装置の主要部を示すブロック図である。 VGG-16の構造を示す説明図である。 複数の層の演算が共通の演算器で実行されるように構成されたCNNの演算器を模式的に示す説明図である。 各々の層に対応する演算器が設けられたCNNを模式的に示す説明図である。
 以下、本発明の実施形態を図面を参照して説明する。以下、情報処理回路として、CNNの推論器を例にする。また、CNNに入力されるデータとして、画像(画像データ)を例にする。
 図22に例示された構成と同様に、情報処理回路は、CNNの各々の層に対応する演算器が設けられたCNNの推論器である。そして、情報処理回路は、パラメタが固定され、かつ、ネットワーク構成(深層学習アルゴリズムの種類、どのタイプの層を幾つどういった順で配置するのか、各層の入力データのサイズや出力データのサイズなど)が固定されたCNNの推論器を実現する。すなわち、情報処理回路は、CNNの各層(例えば、畳み込み層および全結合層のそれぞれ)に特化した回路構成の回路である。特化するというのは、専ら当該層の演算を実行する専用回路であるということである。
 なお、パラメタが固定されているということは、学習フェーズの処理が終了して、適切なパラメタが決定され、決定されたパラメタが使用されることを意味する。ただし、以下の実施形態では、学習フェーズで決定されたパラメタが変更されることがある。以下、パラメタが変更されることを、パラメタが最適化されると表現することがある。
 また、本発明による情報処理回路を用いる推論器では、並列度は、データ入力速度や処理速度などを勘案して決定される。推論器におけるパラメタ(重み)と入力データとの乗算器は、組み合わせ論理回路(組み合わせ回路)で構成される。もしくは、パイプライン演算器で構成されてもよい。もしくは、順序回路で構成されてもよい。
実施形態1.
 図1は、第1の実施形態の情報処理回路を模式的に示す説明図である。図1には、CNNを実現する情報処理回路100における演算器201,202,203,204,205,206が例示されている。すなわち、図1には、CNNのうちの6層が例示されている。各演算器201,202,203,204,205,206は、層で使用されるパラメタ211,212,213,214,215,216と入力データとを対象として積和演算を実行する。演算器201~206は、複数の組み合わせ回路で実現される。パラメタ211~216も、組み合わせ回路で実現される。
 なお、組み合わせ回路は、否定論理積回路(NAND回路)、否定論理和回路(NOR回路)、否定回路(反転回路:NOT回路)、および、その組み合わせなどである。以下の説明において、1つの回路素子を組み合わせ回路と表現することもあるが、複数の回路素子(NAND回路、NOR回路、NOT回路など)を含む回路を組み合わせ回路と表現することもある。
 図1において、「+」は加算器を示す。「*」は乗算器を示す。なお、図1に例示された各層の演算器201~206のブロックに示されている加算器の数および乗算器の数は、表記のための単なる一例である。
 本実施形態では、演算器201~206のそれぞれにおいて並列演算が実行されるが、並列演算における1つの演算を実行する回路を基本回路とする。基本回路は、層の種類に応じてあらかじめ決定されている。
 図2は、第1の実施形態の情報処理回路の基本回路の構成例を示す説明図である。6つの層のそれぞれの演算器(回路)201,202,203,204,205,206が例示されている。各層において、並列処理数の基本回路300が設けられる。図2には、演算器203に含まれる基本回路300が例示されているが、他の層の演算器201,202,204,205,206も同様の回路構成を有する。
 図2に示す例では、基本回路300は、入力データとパラメタテーブル(重みテーブル)302からのパラメタ値を乗算し、乗算値を加算する積和回路301を含む。入力データは1つの値であってもよい。また、入力データは複数の値の組であってもよい。なお、図2には、パラメタ値を格納するパラメタテーブル302が示されているが、実際には、パラメタ値は記憶部(記憶回路)に記憶されているのではなく、パラメタテーブル302は、組み合わせ回路で実現される。本実施形態では、パラメタが固定されているので、パラメタテーブル302から、固定的な値であるパラメタ値が出力される。パラメタテーブル302は、1つの値を出力してもよい。また、パラメタテーブル302は、複数の値の組を出力してもよい。積和回路301は、1つの入力値と1つのパラメタ値の乗算を行ってもよい。また、積和回路301は、入力値の組とパラメタ値の組との乗算を行ってもよい。入力値の組とパラメタ値の組との乗算結果の組の集約和の計算を行ってもよい。なお、一般に、1つの層に関して複数のパラメタ、もしくは、複数の組のパラメタが使用される、どのパラメタを出力するかは制御部400が制御する。
 基本回路300は、積和演算値を一時格納するレジスタ303を含んでもよい。積和回路301は、レジスタ303に一時格納された複数の乗算値を加算する加算器を含んでもよい。基本回路300の入力には、別の基本回路300の出力が接続されていてもよい。
 図3は、パラメタテーブル302の回路構成例を説明するための説明図である。図3(A)には、真理値表311の一例が示されている。組み合わせ回路で、真理値表311を実現することができる。A,B,Cのそれぞれは、組み合わせ回路の入力である。Z1,Z2は、組み合わせ回路の出力である。図3(A)には、一例として、全加算器の真理値表311が示されているが、A,B,Cをアドレスと見なし、Z1,Z2を出力データと見なすことができる。すなわち、Z1,Z2を、指定アドレスA,B,Cに対する出力データと見なすことができる。出力データをパラメタ値に対応づけると、何らかの入力(指定アドレス)に応じて、所望のパラメタ値を得ることができる。
 例えば、所望のパラメタ値が、ある特定の入力値(真理値表311ではA)によらず決定できるとすると、真理値表311における入力B、Cでパラメタ値を決定するように簡略化された真理値表312を用いるだけでよい。換言すれば、パラメタテーブル302を組み合わせ回路で実現する場合、パラメタを決定する入力の異種類が少ないほど、組み合わせ回路の回路規模が小さくなる。一般には、真理値表の簡単化にはクワイン・マクラスキー法などの公知技術が使われる。
 図2に示された演算器203は、制御部400を含む。パラメタテーブル302におけるパラメタ値が、図3に示されたように指定アドレスに応じた出力データとして実現される場合には、制御部400は、所望のタイミングで、出力データに対応する指定アドレスのデータをパラメタテーブル302に供給する。パラメタテーブル302は、指定アドレスに応じた出力データすなわちパラメタ値を積和回路301に出力する。なお、所望のタイミングは、積和回路301が、パラメタテーブル302から出力されるべきパラメタ値を用いて乗算処理を実行する時点である。
 次に、図2に例示された演算器の設計方法を説明する。
 図4は、CNNの各層のパラメタテーブルの回路構成および演算器の回路構成を設計する情報処理回路設計装置の一例を示すブロック図である。図4に示す例では、情報処理回路設計装置500は、パラメタテーブル最適化部501、パラメタテーブル生成部502、並列度決定部503、および演算器生成部504を含む。
 並列度決定部503は、ネットワーク構造(具体的には、ネットワーク構造を示すデータ。)を入力する。演算器生成部504は、層毎の演算器の回路構成を出力する。パラメタテーブル最適化部501は、学習フェーズで学習されたパラメタセット(各層における重み)と、並列度決定部503が決定した並列度を入力する。パラメタテーブル生成部502は、パラメタテーブルの回路構成を出力する。
 並列度決定部503は、層毎の並列度を決定する。パラメタテーブル最適化部501は、入力された層毎のパラメタと、並列度決定部503が決定した層毎の並列度とに基づいて、パラメタテーブルを最適化する。パラメタテーブルの個数は並列度で決まるが、パラメタテーブル最適化部501は、複数のパラメタテーブル302におけるそれぞれのパラメタを最適化する。ここで、最適化とは、パラメタテーブルに対応する組み合わせ回路の回路面積を小さくすることである。
 例えば、並列度決定対象の層(対象層)で実行される畳み込み演算が3×3×128×128(=147,456の積和演算(パラメタ値とアクティベーション値とを対象とする積和演算)で構成されている場合を例にすると、並列度が「128」に決定されると、基本回路300の数(並列度)は128である。各々の基本回路300は、1152個の積和演算(147,456/128)に対する処理を実行する。その場合、基本回路300において、1152のパラメタ値を有するパラメタテーブルが128個だけ備えられる。なお、上述したように、パラメタテーブル302は、記憶回路で実現されるのではなく、組み合わせ回路で実現される。
 後述するように、パラメタテーブル最適化部501は、あらかじめ定められた方法を用いて、パラメタテーブル302のパラメタ値を最適化する。パラメタテーブル生成部502は、最適化されたパラメタ値を有するパラメタテーブル302を実現するための回路構成を、パラメタテーブルの回路構成として出力する。
 演算器生成部504は、並列度決定部503が決定した層毎の並列度を入力する。演算器生成部504は、並列度が示す数の基本回路300を並べた回路構成を、層毎に生成する。そして、演算器生成部504は、生成した層毎の回路構成を、演算器回路の構成として出力する。
 次に、図5のフローチャートを参照して、第1の実施形態の情報処理回路設計装置の動作を説明する。図5は、第1の実施形態の情報処理回路設計装置500の動作を示すフローチャートである。
 パラメタテーブル最適化部501は、学習フェーズで学習されたパラメタセット(複数のパラメタ値)を入力し、並列度決定部503は、あらかじめ決められているネットワーク構造を示すデータを入力する(ステップS11)。
 なお、本実施形態におけるネットワーク構造の概念の1つである深層学習アルゴリズムの種類として、例えば、AlexNet、GoogLeNet、ResNet(Residual Network)、SENet(Squeeze-and-Excitation Networks )、MobileNet、VGG-16、VGG-19がある。また、ネットワーク構造の概念の1つである層数として、例えば、深層学習アルゴリズムの種類に応じた層数が考えられる。また、ネットワーク構造の概念として、フィルタサイズなども含められ得る。
 以下、ネットワーク構造を示すデータを入力することを、ネットワーク構造を入力すると表現する。
 並列度決定部503は、層毎の並列度を決定する(ステップS12)。一例として、並列度決定部503は、(1)式で並列度Nを決定する。例えば、入力された深層学習アルゴリズムの種類で特定される層の数が19である場合には、並列度決定部503は、19の層のそれぞれの並列度を決定する。
 N=C/D          ・・・(1)
 (1)式において、Cは、並列度決定対象の層(対象層)において1画面の全画素を1つの積和演算器で処理するのに必要なクロック数を示す。Dは、対象層において1画面の処理に要するクロック数(許容されるクロック数)を示す。
 図20に示されたCNNを例にすると、1画面が縦サイズ224、横サイズ224(50,176画素)の層(第1ブロックにおける層とする。)において1クロックで縦横1画素の処理し、1画面全体を50,176クロックで実行されるとする。これに対して、1画面が縦サイズ14、横サイズ14の層(第5ブロックにおける層とする)では、同じ時間で1画面の処理を完了するためには256クロックで縦横1画素の処理が実行すれば、1画面分の処理を第1クロックと同じ50、176クロックで完了できる。第1ブロックの畳み込み層の処理は、1画素あたり3(縦サイズ)×3(横サイズ)×3(入力チャネル)×64(出力チャネル)(=1728個)である。したがって、全画素を一つの積和演算器で処理するのに必要なクロック数は1728個×50,176画素=86、704、128個である。1画面全体を50,176クロックで完了するために、第1ブロックの層の並列度は、1728である。一方、第5ブロックの畳み込み層の処理は、1画素あたり3(縦サイズ)×3(横サイズ)×512(入力チャネル)×512(出力チャネル)(=2、359、296個)である。したがって、全画素を一つの積和演算器で処理するのに必要なクロック数は2、359、296個×196画素=462、422、016個である。1画面全体を50,176クロックで完了するために、第5ブロックの層の並列度は、9、216である。
 所望される演算速度(1画面の処理量/所要クロック数)に応じて、各層の並列度が決定されることによって、例えば、(1)式に基づいて各層の並列度が決定されることによって、各層の演算器(具体的には、演算器に含まれる複数の基本回路300)を常に稼働する状態にすることができる。図22に示された構成において、演算器701~706に対して何らの工夫も施されない場合には、演算器706の稼働率は、演算器701の稼働率よりも低い。非特許文献1に記載された構成を例にすると、各層はfully-parallelで構成されるので、出力層に近い層では、演算器の稼働率はより低い。しかし、本実施形態では、全ての層の演算器の稼働率を高く維持することができる。
 パラメタテーブル最適化部501は、層毎に、決定された並列度に応じて、パラメタテーブル302を生成する(ステップS13)。さらに、パラメタテーブル最適化部501は、生成したパラメタテーブル302を最適化する(ステップS14)。
 図6は、パラメタテーブル302を最適化する処理(パラメタテーブル最適化処理)の一例を示すフローチャートである。
 パラメタテーブル最適化処理において、パラメタテーブル最適化部501は、CNN(推論器)の認識精度を測定する(S141)。ステップS141では、パラメタテーブル最適化部501は、決定された並列度に応じた数の基本回路300とパラメタテーブルの回路構成とを用いた推論器を使用してシミュレーションを実行する。シミュレーションは、適当な入力データを用いた推論である。そして、シミュレーション結果を正解と比較すること等によって、認識精度を得る。
 パラメタテーブル最適化部501は、認識精度が第1の基準値以上であるか否か確認する(ステップS142)。第1の基準値は、あらかじめ定められたしきい値である。認識精度が第1の基準値以上である場合には、パラメタテーブル最適化部501は、パラメタテーブル302の回路面積を見積もる。そして、パラメタテーブル302の回路面積が第2の基準値以下であるか否か確認する(ステップS144)。第2の基準値は、あらかじめ定められたしきい値である。パラメタテーブル最適化部501は、例えば、パラメタテーブル302を構成する組み合わせ回路における論理回路の数に基づいて、パラメタテーブル302の回路面積を見積もることができる。
 パラメタテーブル302の回路面積が第2の基準値以下である場合には、パラメタテーブル最適化部501は、パラメタテーブル最適化処理を終了する。
 認識精度が第1の基準値未満である場合、または、パラメタテーブル302の回路面積が第2の基準値を超える場合には、パラメタテーブル最適化部501は、パラメタ値を変更する(ステップS143)。そして、ステップS141に移行する。
 ステップS143において、パラメタテーブル最適化部501は、認識精度が第1の基準値未満である場合には、認識精度が向上すると想定される方向にパラメタ値を変更する。認識精度が向上すると想定される方向が不明である場合には、パラメタテーブル最適化部501は、カットアンドトライ(cut and try )でパラメタ値を変更してもよい。
 ステップS143において、パラメタテーブル最適化部501は、パラメタテーブル302の回路面積が第2の基準値を超える場合には、パラメタテーブル302の回路面積が小さくなるようにパラメタ値を変更する。パラメタテーブル302の回路面積を小さくするためのパラメタ値の変更方法として、例えば、以下のような方法がある。
・パラメタテーブル302において、絶対値が所定のしきい値よりも小さいパラメタ値を0に変更する。
・パラメタテーブル302において、所定のしきい値よりも大きいパラメタ値(正数)を、パラメタテーブル302における最大のパラメタ値で置き換える。
・所定のしきい値よりも小さいパラメタ値(負数)を、パラメタテーブル302における最小のパラメタ値で置き換える。
・パラメタテーブル302における所定の領域毎に、代表的な値を設定し、領域内の全てのパラメタ値を代表的な値に置き換える。なお、代表的な値は、一例として、偶数の値、奇数の値、最頻値などである。
・パラメタ値を、パラメタテーブル302における近傍のパラメタ値に置き換える。
 なお、パラメタテーブル最適化部501は、上記の複数の方法のうちの1つの方法を用いてもよいが、上記の複数の方法のうちの2つ以上の方法を併用してもよい。
 図7は、パラメタ値の変更方法の一例を示す説明図である。図7には、3×3のサイズのパラメタテーブルが例示されている。図7(A)には、パラメタ値が変更される前のパラメタテーブル302aが示されている。図7(B)には、パラメタ値が変更された後のパラメタテーブル302bが示されている。
 図7に示す例では、所定のしきい値である「3」よりも小さいパラメタ値が「0」に変更されている。
 上記の各方法に共通する目的は、パラメタテーブル302において、同じ値が頻出する、すなわち、同値のパラメタ値が増加するか、または、同じパターンが連続するようにすることである。なお、同じパターンが連続するという意味は、例えば、パラメタ値「1」「2」「3」(同じパターンの一例)のパターンが連続して出現するということである。
 上述したように、パラメタテーブル302が組み合わせ回路で実現される場合、パラメタ値の種類が少ないほど、組み合わせ回路の回路規模が小さくなる。また、同じパターンが連続する場合にも、組み合わせ回路の回路規模が小さくなることが期待される。
 本実施形態では、情報処理回路設計装置500は、推論器の認識精度が所望のレベル以上(具体的には、第1の基準値以上)であり、かつ、回路面積が所望のサイズ以下(具体的には、第2の基準値以下)になった場合に、パラメタテーブル最適化処理を終了する。
 図5に戻り、演算器生成部504は、層毎の演算器の回路構成を生成して出力する(ステップS15,S17)。すなわち、演算器生成部504は、並列度決定部503が決定した層毎の並列度に応じた演算器の回路構成を出力する。なお、本実施形態では、各層の基本回路300があらかじめ決められているので、演算器生成部504は、並列度決定部503が決定した並列度に応じた数の基本回路300(具体的には、層に特化した積和回路301)を生成する。
 パラメタテーブル生成部502は、パラメタテーブル302の回路構成を生成して出力する(ステップS16,S17)。すなわち、パラメタテーブル生成部502は、パラメタテーブル最適化部501が最適化したパラメタ値を出力するための回路構成を生成して出力する。パラメタ値を出力するための回路構成は、例えば、図3(B)に例示されたような真理値表を実現する組み合わせ回路の構成である。
 なお、図5のフローチャートでは、ステップS14~S16の処理が順次に実行されるが、ステップS14,S16の処理とステップS15の処理とは、並行して実行可能である。
 また、ステップS14の処理を実行するパラメタテーブル最適化部501が設けられていない場合でも、並列度決定部503が適切な並列度を決定することによって、回路規模が小さくなるという効果を得ることができる。
 以上に説明したように、本実施形態の情報処理回路としての推論器において、パラメタテーブル302は組み合わせ回路で実現されているので、図21に示されたパラメタ値をメモリから読み出すように構成された情報処理回路に比べて処理速度が向上する。また、推論器において各層の並列度がその層に所望される演算速度などに応じて定められているので、各層がfully-parallelで構成される場合に比べて、全ての層の演算器の稼働率を高く維持することができる。また、本実施形態の推論器は、各層がfully-parallelで構成される場合に比べて、回路規模が小さくなる。その結果、推論器の消費電力が低減する。
 また、情報処理回路設計装置500がパラメタ値を最適化するように構成される場合には、推論器の回路規模をより小さくすることができる。
 なお、本実施形態では、CNNの推論器を例にして情報処理回路が説明されたが、入力データとパラメタ値とを用いる演算を行う層を有する他のネットワークに本実施形態を適用することができる。また、本実施形態では、入力データとして画像データが用いられているが、画像データ以外を入力データとするネットワークでも、本実施形態を活用することができる。
 データセンタの電力消費量は多いので、データセンタにおいて深層学習のアルゴリズムが実行される場合に、低消費電力で実行されることが望ましい。本実施形態の情報処理回路を用いる場合には消費電力が低減するので、本実施形態の情報処理回路は、データセンタにおいて有効に活用可能である。
 また、エッジ側でも、低消費電力が求められる。本実施形態の情報処理回路は、エッジ側においても有効に活用可能である。
実施形態2.
 図8は、第2の実施形態の情報処理回路を模式的に示す説明図である。本実施形態の情報処理回路は、深層学習を行う情報処理回路が複数の用途(例えば、顔検出用や車検出用など)に用いられる場合であっても、一部のパラメタを更新できるようにすることで、各用途に対応できるようにするものである。
 本実施形態では、2種類のパラメタを想定する。第1のパラメタ(以下、第1パラメタと記す。)は、深層学習を行うそれぞれの用途で共通に用いられるパラメタである。第2のパラメタ(以下、第2パラメタと記す。)は、用途ごとに個別に用いられるパラメタである。図8では、2種類のパラメタを用いた情報処理回路101における演算器201,202,203,204,205,206が例示されている。すなわち、図8には、2種類のパラメタを用いたCNNのうちの6層が例示されている。
 各演算器201,202,203,204,205,206は、層で使用される第1パラメタ221,222,223,224,225,226および第2パラメタ231,232,233,234,235,236と入力データとを対象として積和演算を実行する。演算器201~206は、複数の組み合わせ回路で実現される。また、第1パラメタ221~226および第2パラメタ231~236も複数の組み合わせ回路で実現される。なお、第1の実施形態の情報処理回路100との回路構成の違いは、第1パラメタおよび第2パラメタを構成する回路がそれぞれ存在することである。
 具体的には、第1パラメタを構成する回路は、回路構成を変更できない方式で製造される。一方、第2パラメタを構成する回路は、回路構成を変更できる方式で製造される。回路構成を変更できない方式の一例として、セルベースの回路が挙げられる。また、回路構成を変更できる方式の一例として、ゲートアレイやFPGA(Field Programmable Gate Array )などが挙げられる。以下の説明では、第1パラメタを構成する回路を第1パラメタ出力回路と記し、第2パラメタを構成する回路を第2パラメタ出力回路と記す。また、第1パラメタ出力回路と第2パラメタ出力回路とを含む回路をパラメタ値出力回路と言うことができる。
 第2パラメタ出力回路は、回路構成を変更できることから、製造時に記憶される情報は任意である。製造時において、第2パラメタ出力回路は、個別の情報を保持していなくてもよく、用途に応じたいずれかのパラメタが保持されていてもよい。第2パラメタ出力回路は、用途に応じて回路が調整される(更新される)ことから、図8では、その状態を示すため、第2パラメタ231~236を点線で囲って示している。
 第1の実施形態と同様に、演算器201~206のそれぞれにおいて並列演算が実行される。並列演算における1つの演算を実行する回路を基本回路とする。また、基本回路は、層の種類に応じてあらかじめ決定されている。
 図9は、第2の実施形態の情報処理回路の基本回路の構成例を示す説明図である。図9には、6つの層のそれぞれの演算器(回路)201,202,203,204,205,206が例示されている。各層において、並列処理数の基本回路310が設けられる。図9には、演算器203に含まれる基本回路310が例示されているが、他の層の演算器201,202,204,205,206も同様の回路構成を有する。
 基本回路310は、積和回路301と、レジスタ303と、第1パラメタテーブル304と、第2パラメタテーブル305とを含む。積和回路301は、第1の実施形態と同様、入力データと第1パラメタテーブル304および第2パラメタテーブル305からのパラメタ値を乗算し、乗算値を加算する回路である。なお、全ての基本回路310が同様の構成である必要はなく、例えば、複数の基本回路310のうち1つ以上に積和回路301と第1パラメタテーブル304と第2パラメタテーブル305とが含まれていてもよい。
 第1パラメタテーブル304は、上述する第1パラメタ出力回路に対応し、本実施形態の情報処理回路101を用いた深層学習を行う各用途で共通に用いられるパラメタを格納するテーブルである。また、第2パラメタテーブル305は、上述する第2パラメタ出力回路に対応し、用途ごとに個別に用いられるパラメタを格納するテーブルである。
 上述するように、図9に示す例では、基本回路310は、入力データと、第1パラメタテーブル304および第2パラメタテーブル305からのパラメタ値とを乗算し、乗算値を加算する積和回路301を含む。なお、図9には、パラメタ値を格納する第1パラメタテーブル304および第2パラメタテーブル305を例示する。ただし、実際には、第1パラメタテーブル304および第2パラメタテーブル305は、第1の実施形態のパラメタテーブル302と同様、記憶部(記憶回路)に記憶されているのではなく、組み合わせ回路で実現される。
 図9に示された演算器203は、制御部400を含む。第1パラメタテーブル304および第2パラメタテーブル305におけるパラメタ値が、第1の実施形態と同様に指定アドレスに応じた出力データとして実現される場合には、制御部400は、所望のタイミングで、出力データに対応する指定アドレスのデータを第1パラメタテーブル304に供給する。第1パラメタテーブル304を介した第2パラメタテーブル305は、指定アドレスに応じた出力データ、すなわち、パラメタ値を積和回路301に出力する。なお、所望のタイミングは、積和回路301が、第1パラメタテーブル304および第2パラメタテーブル305から出力されるべきパラメタ値を用いて乗算処理を実行する時点である。
 次に、図9に例示された演算器の設計方法を説明する。
 図10は、CNNの各層における第1パラメタテーブルおよび第2パラメタテーブルの回路構成並びに演算器の回路構成を設計する情報処理回路設計装置の一例を示すブロック図である。図10に示す例では、情報処理回路設計装置510は、パラメタテーブル最適化部511、パラメタテーブル生成部512、並列度決定部513、演算器生成部514、およびパラメタテーブル分割部515を含む。なお、情報処理回路設計装置510にパラメタテーブル分割部515が存在すること以外については、第1の実施形態の情報処理回路設計装置500と同様の構成である。
 並列度決定部513は、ネットワーク構造(具体的には、ネットワーク構造を示すデータ。)を入力する。演算器生成部514は、層毎の演算器の回路構成を出力する。パラメタテーブル最適化部511は、学習フェーズで学習された複数のパラメタセット(各層における重み)と、並列度決定部513が決定した並列度を入力する。複数のパラメタセットは、具体的には、用途ごとに用いられるニューラルネットワークのパラメタセットである。
 以下の説明では、2種類のパラメタセット(以下、パラメタセットA、パラメタセットBと記す。)が入力される場合について説明する。上述の例では、パラメタセットAが顔検出用に用いられるパラメタセットであり、パラメタセットBが車検出用に用いられるパラメタセットである。ただし、パラメタセットの種類は2種類に限定されず、3種類以上であってもよい。
 並列度決定部513は、層毎の並列度を決定する。なお、並列度決定部513が層毎の並列度を決定する方法は、第1の実施形態と同様である。また、パラメタテーブル最適化部511は、パラメタセットごとに、入力された層毎のパラメタと、並列度決定部513が決定した層毎の並列度とに基づいて、パラメタテーブルを最適化する。第1の実施形態と同様、パラメタテーブルの個数は並列度で決まり、パラメタテーブル最適化部511は、パラメタセットごとに各パラメタテーブルにおけるそれぞれのパラメタを最適化する。なお、最適化の方法は後述される。
 パラメタテーブル分割部515は、最適化された各パラメタセットのパラメタテーブルを、各パラメタセットで共通する共通部と、共通部以外の個別部とに分割する。具体的には、パラメタテーブル分割部515は、パラメタ値を出力する組み合わせ回路として、各パラメタセットで共通する論理演算を計算する組み合わせ回路(すなわち、共通部)と、パラメタテーブルの入力に加えて前記共通部の出力を入力して個別の論理演算を計算する組み合わせ回路(すなわち、個別部)とに分割した回路を作成する。また、パラメタテーブル分割部515は、パラメタ値を出力する組み合わせ回路として、各パラメタセットで共通するパラメタテーブル(すなわち、共通部)を実現する組み合わせ回路と、共通部を除く各パラメタセットにおけるパラメタテーブル(すなわち、個別部)を実現する組み合わせ回路とに分割した回路を作成してもよい。
 具体的には、パラメタテーブル分割部515は、各パラメタセットのパラメタテーブルを表わす論理式を作成する。そして、パラメタテーブル分割部515は、作成した各パラメタセットの論理式のうち、共通する論理式を共通部として抽出し、残りの論理式(すなわち、共通していない論理式)を各パラメタセットの個別部とする。この共通部を実現する組み合わせ回路が、上述する第1パラメタ出力回路に対応し、個別部を実現する組み合わせ回路が、上述する第2パラメタ出力回路に対応する。すなわち、パラメタテーブル分割部515は、このように共通部および個別部を実現する。
 共通部として生成できる回路面積が、個別部として生成される回路面積より大きいほど、総回路面積は小さくなる。すなわち、個別部が占める回路面積と共通部が占める回路面積の和に対する共通部が占める回路面積の割合が大きいほど面積効率は良い(言い換えると、個別部が占める回路面積の割合が小さいほど面積効率は良い)と言える。共通部および個別部の回路面積は、例えば、各組み合わせ回路における論理回路の数に基づいて、各々見積もることができる。
 パラメタテーブル生成部512は、第1パラメタテーブル304および第2パラメタテーブル305(すなわち、共通部および個別部)を実現するための回路構成を、パラメタテーブルの回路構成として出力する。なお、上述したように、第1パラメタテーブル304および第2パラメタテーブル305は、記憶回路で実現されるのではなく、組み合わせ回路で実現される。
 演算器生成部514は、並列度決定部513が決定した層毎の並列度を入力する。演算器生成部514は、並列度が示す数の基本回路310を並べた回路構成を、層毎に生成する。そして、演算器生成部514は、生成した層毎の回路構成を、演算器回路の構成として出力する。
 図11は、パラメタテーブルを分割する処理の一例を示す説明図である。図11に示す例では、パラメタセットAを最適化したパラメタテーブルを実現する回路をパラメタA回路3021と示し、パラメタセットBを最適化したパラメタテーブルを実現する回路をパラメタB回路3022と示す。
 パラメタテーブル分割部515は、パラメタA回路3021とパラメタB回路3022のうち、共通部として、それぞれA回路(A-1)およびB回路(B-1)を抽出する。その結果、A回路(A-2)およびB回路(B-2)が、各パラメタセットの個別部になる。そして、パラメタテーブル分割部515は、A回路(A-1)およびB回路(B-1)を第1パラメタテーブル304(共通部)とし、A回路(A-2)またはB回路(B-2)を第2パラメタテーブル305(個別部)とする。
 次に、図12のフローチャートを参照して、第2の実施形態の情報処理回路設計装置の動作を説明する。図12は、第2の実施形態の情報処理回路設計装置510の動作を示すフローチャートである。
 パラメタテーブル最適化部511は、学習フェーズで学習された顔検出用・車検出用などの複数種類のパラメタセット(複数のパラメタ値)を入力し、並列度決定部513は、あらかじめ決められているネットワーク構造を示すデータを入力する(ステップS21)。
 並列度決定部503は、層毎の並列度を決定する(ステップS22)。並列度の決定方法は、第1の実施形態で用いた方法と同様である。
 パラメタテーブル最適化部511は、決定された並列度に応じて、層毎にパラメタテーブルを生成する(ステップS23)。さらに、パラメタテーブル最適化部511は、生成したパラメタテーブルを最適化し(ステップS24)、最適化されたパラメタセットをそれぞれ2つ(すなわち、共通部と個別部)に分割する(ステップS25)。
 ここで、パラメタテーブルを最適化する処理について詳述する。図13は、パラメタテーブルを最適化する処理(パラメタ値変更処理)の一例を示すフローチャートである。
 パラメタ値変更処理において、パラメタテーブル分割部515は、上述したように、パラメタセットごとのパラメタテーブルを各々共通部と個別部とに分割する(ステップS251)。ただし、共通部がない場合は、パラメタテーブル分割部515は、分割を行わない。さらに、パラメタテーブル最適化部511は、複数種類のパラメタセット(例えば、パラメタセットAおよびパラメタセットB)を用いたCNN(推論器)の認識精度を各々測定する(ステップS252)。そして、パラメタテーブル最適化部511は、各パラメタセットを用いたCNNの認識精度が基準値(以下、精度基準値と記すこともある。)以上か否か判定する(ステップS253)。
 例えば、パラメタセットが2種類(パラメタセットAおよびパラメタセットB)の場合、パラメタテーブル最適化部511は、パラメタセットAを用いたCNNの認識精度が第1の基準値以上であり、かつ、パラメタセットBを用いたCNNの認識精度が第2の基準値以上か否か判定する。
 各認識精度が基準値(精度基準値)以上の場合(ステップS253におけるYesの場合)は、ステップS254に移行する。第1の基準値および第2の基準値は、あらかじめ定められたしきい値である。一方、各認識精度が基準値(精度基準値)以上でない場合(ステップS253におけるNoの場合)は、ステップS255に移行する。
 ステップS254において、パラメタテーブル最適化部511は、共通部が占める回路面積を見積もる。そして、共通部の面積が基準値(以下、第3の基準値または面積基準値と記す。)以上の場合(ステップS254におけるYesの場合)、処理は終了する。第3の基準値は、あらかじめ定められたしきい値である。一方、共通部の面積が基準値(面積基準値)以上でない場合(ステップS254におけるNoの場合)、ステップS255に移行する。
 ステップS255において、パラメタテーブル最適化部511は、パラメタテーブルにおけるパラメタ値(具体的には、第1パラメタ値および第2パラメタ値の少なくとも1つ)を変更する。パラメタテーブル最適化部511は、例えば、共通部が占める回路面積が第3の基準値未満である場合には、回路面積が向上すると想定される方向にパラメタテーブルのパラメタ値を変更する。回路面積が向上すると想定される方向が不明である場合には、パラメタテーブル最適化部511は、カットアンドトライ(cut and try )でパラメタ値を変更してもよい。
 以降、パラメタテーブル最適化部511は、ステップS252以下の処理を繰り返す。すなわち、パラメタテーブル最適化部511は、第1パラメタ値および第2パラメタ値のうち少なくとも1つを繰り返し変更する。なお、ステップS255にてパラメタ値を変更した結果、認識精度が基準値に達しない場合には、パラメタテーブル最適化部511は、ステップS255で変更された値を変更する前の元の値に戻してもよい。また、パラメタ値を何度変更しても、認識精度および回路面積が基準値に達しない場合には、パラメタテーブル最適化部511は、パラメタ値の変更回数が回数制限に達したときに、パラメタ値変更処理を終了してもよい。
 図14は、パラメタ値を変更する前の真理値表の一例を示す説明図である。図14には、パラメタ変更前の回路A(パラメタA回路3021)の真理値表と、パラメタ変更前の回路B(パラメタB回路3022)の真理値表の一例が示されている。
 回路Aの真理値表401において、指定アドレスA,B,Cのそれぞれは、組み合わせ回路の入力であり、パラメタZ1は、組み合わせ回路の出力である。すなわち、Z1を、指定アドレスA,B,Cに対する出力データと見なすことができる。
 同様に、回路Bの真理値表402において、指定アドレスA,B,Cのそれぞれは、組み合わせ回路の入力であり、パラメタZ2は、組み合わせ回路の出力である。また、Z2を、指定アドレスA,B,Cに対する出力データと見なすことができる。
 真理値表401において、出力されるパラメタ(Z1)を論理式で表すと、A&(NOT B)&C|A&B&Cである。また、真理値表402において、出力されるパラメタ(Z2)を論理式で表すと、A&(NOT B)&C|(NOT A)&B&(NOT C)である。この場合、A&(NOT B)&Cは、各パラメタテーブルで共通している。したがって、A&(NOT B)&Cを共通部(D)とすると、変換後の式は、D=A&(NOT B)&C,Z1=D|A&B&C,Z2=D|(NOT A)&B&(NOT C)となる。
 一方、図15は、図14に例示するパラメタ値を変更した後の真理値表の一例を示す説明図である。図15には、パラメタ変更後の回路A(パラメタA回路3021)の真理値表と、パラメタ変更後の回路B(パラメタB回路3022)の真理値表の一例が示されている。具体的には、真理値表412において、下線で示す最終行のパラメタ値(Z2)が0から1に変更されている。
 真理値表411において、出力されるパラメタ(Z1)を論理式で表すと、A&(NOT B)&C|A&B&Cである。また、真理値表412において、出力されるパラメタ(Z2)を論理式で表すと、A&(NOT B)&C|(NOT A)&B&(NOT C)|A&B&Cである。この場合、A&(NOT B)&C|A&B&Cは、各パラメタテーブルで共通している。したがって、A&(NOT B)&C|A&B&Cを共通部(D)とすると、変換後の式は、D=A&(NOT B)&C|A&B&C,Z1=D,Z2=D|(NOT A)&B&(NOT C)となる。
 ここで、変更前(図14)と変更後(図15)における第1パラメタテーブル304および第2パラメタテーブル305の回路面積を比較する。共通部(D)は、変更後の方が、変更前よりA&B&Cを実現する回路の分だけ大きくなっている。一方、個別部(Z1)は、変更後の方が、変更前よりA&B&Cを実現する回路の分だけ小さくなっている。すなわち、変更後は、変更前に比べて共通部の面積割合が大きく、個別部の面積割合が小さくなっている。したがって、変更後の方が、面積効率が良いと言える。
 図12に戻り、演算器生成部514は、層毎の演算器の回路構成を生成して出力する(ステップS26,S29)。すなわち、演算器生成部514は、並列度決定部513が決定した層毎の並列度に応じた演算器の回路構成を出力する。なお、本実施形態では、各層の基本回路310があらかじめ決められているので、演算器生成部514は、並列度決定部513が決定した並列度に応じた数の基本回路310(具体的には、層に特化した積和回路301)を生成する。
 パラメタテーブル生成部512は、第1パラメタテーブル304および第2パラメタテーブル305の回路構成を生成して出力する(ステップS27,S28,S29)。すなわち、パラメタテーブル生成部512は、パラメタテーブル最適化部511が最適化し、パラメタテーブル分割部515が分割したパラメタ値を出力するための回路構成を生成して出力する。パラメタ値を出力するための回路構成は、第1パラメタテーブル回路および第2パラメタテーブル回路の構成である。
 なお、図12のフローチャートでは、ステップS24~S28の処理が順次に実行されるが、ステップS25,S27,S28の処理とステップS26の処理とは、並行して実行可能である。
 上述するように、第1パラメタテーブル回路および第2パラメタテーブル回路は、組み合わせ回路で生成される。第1パラメタテーブル回路の製造方法は、製造後に回路構成を変更できない方式、例えば、セルベース方式で製造される。また、第2パラメタテーブル回路の製造方法は、製造後に回路構成を変更できる方式、例えば、ゲートアレイ方式やFPGA方式などで製造される。
 図16は、各製造方法における製造後の回路の特徴を示す説明図である。セルベース方式で製造された回路は、製造後の回路変更は「不可」であるが、回路面積を小さくすることができる。一方、FPGA方式で製造された回路は、製造後の回路変更は「可能」であるが、回路面積は大きくなる。また、ゲートアレイ方式で製造された回路は、ある程度変更可能と言えるが、回路面積はセルベース方式よりも大きくなる。製造後の回路面積の規模を小さくするためには、回路はセルベース方式で製造される方が望ましい。しかし、製造後に回路を変更したい場合は、セルベース方式では困難であるため、回路はゲートアレイ方式やFPGA方式で製造される方が望まれる。
 一方、本実施形態の情報処理回路は、組み合わせ回路で構成されるパラメタ値出力回路として、回路構成を変更できない方式(例えば、セルベース方式)で製造された第1パラメタ値出力回路と、回路構成を変更できる方式(例えば、FPGA方式、ゲートアレイ方式)で製造された第2パラメタ値出力回路とを含むように構成される。
 具体的には、第1パラメタ値出力回路は、第1パラメタテーブル304に基づいて製造され、CNNに用いられる複数種類のパラメタセットのうち、いずれの種類のパラメタセットにおいても用いられる論理演算を計算する第1パラメタ値を出力する。また、第2パラメタ値出力回路は、製造後に回路構成を変更できる方式で製造され、製造後に第2パラメタテーブル305に基づいて調整され、パラメタテーブルの入力に加えて第1パラメタ値出力回路の出力を入力して個別の論理演算を計算する第2パラメタ値を出力する。このように、共通化できるパラメタを固定化しつつ、各用途で個別に使用されるパラメタを変更可能とすることで、面積効率を保ちつつ、重み(パラメタ)を更新することが可能になる。
 以上に説明したように、本実施形態の情報処理回路としての推論器は、入力データとパラメタ値とを用いて積和演算を行う積和回路と、パラメタ値を出力するパラメタ値出力回路とを含む。また、パラメタ値出力回路は、組み合わせ回路で構成され、回路構成を変更できない方式で製造された第1パラメタ値出力回路と、回路構成を変更できる方式で製造された第2パラメタ値出力回路とを含む。その結果、本実施形態の推論器は、面積効率を保ちつつ、重み(パラメタ)を更新することが可能になる。具体的には、本実施形態の推論器では、製造後に、パラメタテーブルの入力に加えて第1パラメタ値出力回路の出力を入力して個別の論理演算の計算結果を、第2パラメタ値出力回路が出力するように調整できる。
 図4および図10に示された情報処理回路設計装置500,510における各構成要素は、1つのハードウエア、または、1つのソフトウエアで構成可能である。また、各構成要素は、複数のハードウエア、または、複数のソフトウエアでも構成可能である。また、各構成要素の一部をハードウエアで構成し、他部をソフトウエアで構成することもできる。
 また、第2の実施形態のパラメタテーブル最適化部511、パラメタテーブル分割部515およびパラメタテーブル生成部512によって、パラメタ値(より具体的には、第1パラメタ値および第2パラメタ値)を出力する回路が作成される。このことから、パラメタテーブル最適化部511、パラメタテーブル分割部515およびパラメタテーブル生成部512をまとめて、パラメタ値出力回路作成手段(より詳しくは、第1パラメタ値出力回路作成手段および第2パラメタ値出力回路作成手段)と言うことができる。
 図17は、CPUを有するコンピュータの一例を示すブロック図である。情報処理回路設計装置500,510における各構成要素が、CPU(Central Processing Unit )等のプロセッサやメモリ等を有するコンピュータで実現される場合には、例えば、図17に示すCPUを有するコンピュータで実現可能である。図17に、CPU1000に接続された、記憶装置1001およびメモリ1002を示す。CPU1000は、記憶装置1001に格納されたプログラムに従って処理(情報処理回路設計処理)を実行することによって、図4および図10に示された情報処理回路設計装置500,510における各機能を実現する。すなわち、コンピュータは、図4および図10に示された情報処理回路設計装置500,510におけるパラメタテーブル最適化部501,511、パラメタテーブル生成部502,512、並列度決定部503,513、演算器生成部504,514、およびパラメタテーブル分割部515の機能を実現する。
 記憶装置1001は、例えば、非一時的なコンピュータ可読媒体(non-transitory computer readable medium )である。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体(tangible storage medium)のいずれかである。非一時的なコンピュータ可読媒体の具体例として、磁気記録媒体(例えば、ハードディスク)、光磁気記録媒体(例えば、光磁気ディスク)、CD-ROM(Compact Disc-Read Only Memory )、CD-R(Compact Disc-Recordable )、CD-R/W(Compact Disc-ReWritable )、半導体メモリ(例えば、マスクROM、PROM(Programmable ROM)、EPROM(Erasable PROM )、フラッシュROM)がある。
 また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体(transitory computer readable medium )に格納されてもよい。一時的なコンピュータ可読媒体には、例えば、有線通信路または無線通信路を介して、すなわち、電気信号、光信号または電磁波を介して、プログラムが供給される。
 メモリ1002は、例えばRAM(Random Access Memory)で実現され、CPU1000が処理を実行するときに一時的にデータを格納する記憶手段である。メモリ1002に、記憶装置1001または一時的なコンピュータ可読媒体が保持するプログラムが転送され、CPU1000がメモリ1002内のプログラムに基づいて処理を実行するような形態も想定しうる。
 図18は、情報処理回路の主要部を示すブロック図である。情報処理回路10は、深層学習における層の演算を実行する情報処理回路であって、入力データとパラメタ値とを用いて積和演算を行う積和回路11(実施形態では、積和回路301で実現される。)と、パラメタ値を出力するパラメタ値出力回路12(実施形態では、第1パラメタテーブル304および第2パラメタテーブル305で実現される。)とを含み、パラメタ値出力回路12は、組み合わせ回路で構成され、回路構成を変更できない方式で製造された第1パラメタ値出力回路13(実施形態では、第1パラメタテーブル304で実現される。)と、回路構成を変更できる方式で製造された第2パラメタ値出力回路14(実施形態では、第2パラメタテーブル305で実現される。)とを含む。
 図19は、情報処理回路設計装置の主要部を示すブロック図である。情報処理回路設計装置20は、学習済みの複数のパラメタ値を含む複数種類のパラメタセットとネットワーク構造を特定可能なデータとを入力する入力手段21(実施形態では、パラメタテーブル最適化部511の一部および並列度決定部513の一部として実現される。)と、入力データとパラメタ値とを用いて積和演算を行う回路であってネットワーク構造における層に特化した積和回路を作成する演算器生成手段22(実施形態では、演算器生成部514で実現される。)と、複数種類のパラメタセットにおけるパラメタ値を出力する組み合わせ回路を作成するパラメタ値出力回路作成手段23(実施形態では、パラメタテーブル最適化部511、パラメタテーブル分割部515、およびパラメタテーブル生成部512で実現される。)とを含み、パラメタ値出力回路作成手段23は、回路構成を変更できない方式で実現される第1パラメタ値出力回路を作成する第1パラメタ値出力回路作成手段24(実施形態では、パラメタテーブル最適化部511、パラメタテーブル分割部515およびパラメタテーブル生成部512で実現される。)と、回路構成を変更できる方式で実現される第2パラメタ値出力回路を作成する第2パラメタ値出力回路作成手段25(実施形態では、パラメタテーブル最適化部511、パラメタテーブル分割部515およびパラメタテーブル生成部512で実現される。)とを含む。
 上記の実施形態の一部または全部は、以下の付記のようにも記載され得るが、以下に限定されるわけではない。
(付記1)深層学習における層の演算を実行する情報処理回路であって、
 入力データとパラメタ値とを用いて積和演算を行う積和回路と、
 前記パラメタ値を出力するパラメタ値出力回路とを備え、
 前記パラメタ値出力回路は、組み合わせ回路で構成され、
 回路構成を変更できない方式で製造された第1パラメタ値出力回路と、
 回路構成を変更できる方式で製造された第2パラメタ値出力回路と
 を含むことを特徴とする情報処理回路。
(付記2)前記第1パラメタ値出力回路は、深層学習を行うそれぞれの用途で共通に用いられるパラメタ値を出力し、
 前記第2パラメタ値出力回路は、前記用途ごとに個別に用いられるパラメタ値を出力する
 付記1の情報処理回路。
(付記3)並列処理数に応じた数の基本回路を備え、
 複数の前記基本回路のうち1つ以上は、前記積和回路と前記第1パラメタ値出力回路と前記第2パラメタ値出力回路とを含む
 付記1または付記2の情報処理回路。
(付記4)深層学習における層の演算を実行する情報処理回路を生成する情報処理回路の設計方法であって、
 学習済みの複数のパラメタ値を含む複数種類のパラメタセットとネットワーク構造を特定可能なデータとを入力し、
 入力データとパラメタ値とを用いて積和演算を行う回路であって前記ネットワーク構造における層に特化した積和回路を作成し、
 前記複数種類のパラメタセットにおけるパラメタ値を出力する組み合わせ回路として、
 回路構成を変更できない方式で実現される第1パラメタ値出力回路を作成し、
 回路構成を変更できる方式で実現される第2パラメタ値出力回路を作成する
 ことを特徴とする情報処理回路の設計方法。
(付記5)ニューラルネットワークに用いられる複数種類のパラメタセットのうち、いずれの種類のパラメタセットにおいても用いられる第1の論理演算を計算する前記第1パラメタ値出力回路を作成し、
 パラメタテーブルの入力に加えて前記第1パラメタ値出力回路の出力を入力して個別の論理演算を計算する前記第2パラメタ値出力回路を作成する
 付記4の情報処理回路の設計方法。
(付記6)複数種類のパラメタセットを用いたニューラルネットワークにおける情報処理回路の各精度を測定し、
 前記第1パラメタ値出力回路の回路面積と、前記第2パラメタ値出力回路の回路面積とを見積り、
 前記複数種類のパラメタセットそれぞれを用いた各ニューラルネットワークの精度が予め定めた精度基準値以上であり、かつ、前記第1パラメタ値出力回路の回路面積の割合が予め定めた面積基準値以上であるという条件が満たされるまで、前記第1パラメタ値および前記第2パラメタ値のうち少なくとも1つを繰り返し変更する
 付記4または付記5の情報処理回路の設計方法。
(付記7)深層学習における層の演算を実行する情報処理回路を生成するための情報処理回路の設計プログラムが格納されたコンピュータ読み取り可能な記録媒体であって、
 前記情報処理回路の設計プログラムは、
 学習済みの複数のパラメタ値を含む複数種類のパラメタセットとネットワーク構造を特定可能なデータとを入力する処理と、
 入力データとパラメタ値とを用いて積和演算を行う回路であって前記ネットワーク構造における層に特化した積和回路を作成する処理と、
 前記複数種類のパラメタセットにおけるパラメタ値を出力する組み合わせ回路として、
 回路構成を変更できない方式で実現される第1パラメタ値出力回路を作成する処理と、
 回路構成を変更できる方式で実現される第2パラメタ値出力回路を作成する処理と
 をプロセッサに実行させることを特徴とする。
(付記8)前記情報処理回路の設計プログラムは、
 ニューラルネットワークに用いられる複数種類のパラメタセットのうち、いずれの種類のパラメタセットにおいても用いられる第1の論理演算を計算する前記第1パラメタ値出力回路を作成する処理と、
 パラメタテーブルの入力に加えて前記第1パラメタ値出力回路の出力を入力して個別の論理演算を計算する前記第2パラメタ値出力回路を作成する処理とをプロセッサに実行させる
 付記7の記録媒体。
(付記9)深層学習における層の演算を実行する情報処理回路を生成する情報処理回路設計装置であって、
 学習済みの複数のパラメタ値を含む複数種類のパラメタセットとネットワーク構造を特定可能なデータとを入力する入力手段と、
 入力データとパラメタ値とを用いて積和演算を行う回路であって前記ネットワーク構造における層に特化した積和回路を作成する演算器生成手段と、
 前記複数種類のパラメタセットにおけるパラメタ値を出力する組み合わせ回路を作成するパラメタ値出力回路作成手段とを備え、
 前記パラメタ値出力回路作成手段は、
 回路構成を変更できない方式で実現される第1パラメタ値出力回路を作成する第1パラメタ値出力回路作成手段と、
 回路構成を変更できる方式で実現される第2パラメタ値出力回路を作成する第2パラメタ値出力回路作成手段と
 を備えたことを特徴とする情報処理回路設計装置。
(付記10)前記第1パラメタ値出力回路作成手段は、ニューラルネットワークに用いられる複数種類のパラメタセットのうち、いずれの種類のパラメタセットにおいても用いられる第1の論理演算を計算する前記第1パラメタ値出力回路を作成し、
 前記第2パラメタ値出力回路作成手段は、パラメタテーブルの入力に加えて前記第1パラメタ値出力回路の出力を入力して個別の論理演算を計算する前記第2パラメタ値出力回路を作成する
 付記9の情報処理回路設計装置。
(付記11)深層学習における層の演算を実行する情報処理回路を生成するためのプログラムであって、
 コンピュータに、
 学習済みの複数のパラメタ値を含む複数種類のパラメタセットとネットワーク構造を特定可能なデータとを入力する処理と、
 入力データとパラメタ値とを用いて積和演算を行う回路であって前記ネットワーク構造における層に特化した積和回路を作成する処理と、
 前記複数種類のパラメタセットにおけるパラメタ値を出力する組み合わせ回路として、
 回路構成を変更できない方式で実現される第1パラメタ値出力回路を作成する処理と、
 回路構成を変更できる方式で実現される第2パラメタ値出力回路を作成する処理と
 を実行させるための情報処理回路の設計プログラム。
(付記12)コンピュータに、
 ニューラルネットワークに用いられる複数種類のパラメタセットのうち、いずれの種類のパラメタセットにおいても用いられる第1の論理演算を計算する前記第1パラメタ値出力回路を作成する処理と、
 パラメタテーブルの入力に加えて前記第1パラメタ値出力回路の出力を入力して個別の論理演算を計算する前記第2パラメタ値出力回路を作成する処理とを実行させる
 付記11の情報処理回路の設計プログラム。
 以上、実施形態を参照して本願発明を説明したが、本願発明は上記の実施形態に限定されない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
 10   情報処理回路
 11   積和回路
 12   パラメタ値出力回路
 13   第1パラメタ値出力回路
 14   第2パラメタ値出力回路
 20   情報処理回路設計装置
 21   入力手段
 22   演算器生成手段
 23   パラメタ値出力回路作成手段
 24   第1パラメタ値出力回路作成手段
 25   第2パラメタ値出力回路作成手段
 100,101  情報処理回路
 201,202,203,204,205,206 演算器
 211,212,213,214,215,216 パラメタ
 221,222,223,224,225,226 第1パラメタ
 231,232,233,234,235,236 第2パラメタ
 300,310  基本回路
 301  積和回路
 302  パラメタテーブル
 3021 パラメタAテーブル
 3022 パラメタBテーブル
 303  レジスタ
 304  第1パラメタテーブル
 305  第2パラメタテーブル
 400  制御部
 500,510  情報処理回路設計装置
 501,511  パラメタテーブル最適化部
 502,512  パラメタテーブル生成部
 503,513  並列度決定部
 504,514  演算器生成部
 515  パラメタテーブル分割部
 1000 CPU
 1001 記憶装置
 1002 メモリ

Claims (10)

  1.  深層学習における層の演算を実行する情報処理回路であって、
     入力データとパラメタ値とを用いて積和演算を行う積和回路と、
     前記パラメタ値を出力するパラメタ値出力回路とを備え、
     前記パラメタ値出力回路は、組み合わせ回路で構成され、
     回路構成を変更できない方式で製造された第1パラメタ値出力回路と、
     回路構成を変更できる方式で製造された第2パラメタ値出力回路と
     を含むことを特徴とする情報処理回路。
  2.  前記第1パラメタ値出力回路は、深層学習を行うそれぞれの用途で共通に用いられるパラメタ値を出力し、
     前記第2パラメタ値出力回路は、前記用途ごとに個別に用いられるパラメタ値を出力する
     請求項1記載の情報処理回路。
  3.  並列処理数に応じた数の基本回路を備え、
     複数の前記基本回路のうち1つ以上は、前記積和回路と前記第1パラメタ値出力回路と前記第2パラメタ値出力回路とを含む
     請求項1または請求項2記載の情報処理回路。
  4.  深層学習における層の演算を実行する情報処理回路を生成する情報処理回路の設計方法であって、
     学習済みの複数のパラメタ値を含む複数種類のパラメタセットとネットワーク構造を特定可能なデータとを入力し、
     入力データとパラメタ値とを用いて積和演算を行う回路であって前記ネットワーク構造における層に特化した積和回路を作成し、
     前記複数種類のパラメタセットにおけるパラメタ値を出力する組み合わせ回路として、
     回路構成を変更できない方式で実現される第1パラメタ値出力回路を作成し、
     回路構成を変更できる方式で実現される第2パラメタ値出力回路を作成する
     ことを特徴とする情報処理回路の設計方法。
  5. ニューラルネットワークに用いられる複数種類のパラメタセットのうち、いずれの種類のパラメタセットにおいても用いられる第1の論理演算を計算する前記第1パラメタ値出力回路を作成し、
     パラメタテーブルの入力に加えて前記第1パラメタ値出力回路の出力を入力して個別の論理演算を計算する前記第2パラメタ値出力回路を作成する
    請求項4記載の情報処理回路の設計方法。
  6.  複数種類のパラメタセットを用いたニューラルネットワークにおける情報処理回路の各精度を測定し、
     前記第1パラメタ値出力回路の回路面積と、前記第2パラメタ値出力回路の回路面積とを見積り、
     前記複数種類のパラメタセットそれぞれを用いた各ニューラルネットワークの精度が予め定めた精度基準値以上であり、かつ、前記第1パラメタ値出力回路の回路面積の割合が予め定めた面積基準値以上であるという条件が満たされるまで、前記第1パラメタ値および前記第2パラメタ値のうち少なくとも1つを繰り返し変更する
     請求項4または請求項5記載の情報処理回路設計方法。
  7.  深層学習における層の演算を実行する情報処理回路を生成するための情報処理回路の設計プログラムが格納されたコンピュータ読み取り可能な記録媒体であって、
     前記情報処理回路の設計プログラムは、
     学習済みの複数のパラメタ値を含む複数種類のパラメタセットとネットワーク構造を特定可能なデータとを入力する処理と、
     入力データとパラメタ値とを用いて積和演算を行う回路であって前記ネットワーク構造における層に特化した積和回路を作成する処理と、
     前記複数種類のパラメタセットにおけるパラメタ値を出力する組み合わせ回路として、
     回路構成を変更できない方式で実現される第1パラメタ値出力回路を作成する処理と、
     回路構成を変更できる方式で実現される第2パラメタ値出力回路を作成する処理と
     をプロセッサに実行させることを特徴とする。
  8.  前記情報処理回路の設計プログラムは、
     ニューラルネットワークに用いられる複数種類のパラメタセットのうち、いずれの種類のパラメタセットにおいても用いられる第1の論理演算を計算する前記第1パラメタ値出力回路を作成する処理と、
     パラメタテーブルの入力に加えて前記第1パラメタ値出力回路の出力を入力して個別の論理演算を計算する前記第2パラメタ値出力回路を作成する処理とをプロセッサに実行させる
     請求項7記載の記録媒体。
  9.  深層学習における層の演算を実行する情報処理回路を生成する情報処理回路設計装置であって、
     学習済みの複数のパラメタ値を含む複数種類のパラメタセットとネットワーク構造を特定可能なデータとを入力する入力手段と、
     入力データとパラメタ値とを用いて積和演算を行う回路であって前記ネットワーク構造における層に特化した積和回路を作成する演算器生成手段と、
     前記複数種類のパラメタセットにおけるパラメタ値を出力する組み合わせ回路を作成するパラメタ値出力回路作成手段とを備え、
     前記パラメタ値出力回路作成手段は、
     回路構成を変更できない方式で実現される第1パラメタ値出力回路を作成する第1パラメタ値出力回路作成手段と、
     回路構成を変更できる方式で実現される第2パラメタ値出力回路を作成する第2パラメタ値出力回路作成手段と
     を備えたことを特徴とする情報処理回路設計装置。
  10. 前記第1パラメタ値出力回路作成手段は、ニューラルネットワークに用いられる複数種類のパラメタセットのうち、いずれの種類のパラメタセットにおいても用いられる第1の論理演算を計算する前記第1パラメタ値出力回路を作成し、
     前記第2パラメタ値出力回路作成手段は、パラメタテーブルの入力に加えて前記第1パラメタ値出力回路の出力を入力して個別の論理演算を計算する前記第2パラメタ値出力回路を作成する
     請求項9記載の情報処理回路設計装置。
PCT/JP2020/020701 2020-05-26 2020-05-26 情報処理回路および情報処理回路の設計方法 WO2021240633A1 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2022527306A JP7456501B2 (ja) 2020-05-26 2020-05-26 情報処理回路および情報処理回路の設計方法
US17/926,728 US20230205957A1 (en) 2020-05-26 2020-05-26 Information processing circuit and method for designing information processing circuit
PCT/JP2020/020701 WO2021240633A1 (ja) 2020-05-26 2020-05-26 情報処理回路および情報処理回路の設計方法
TW110114833A TWI841838B (zh) 2020-05-26 2021-04-26 資訊處理電路及資訊處理電路之設計方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2020/020701 WO2021240633A1 (ja) 2020-05-26 2020-05-26 情報処理回路および情報処理回路の設計方法

Publications (1)

Publication Number Publication Date
WO2021240633A1 true WO2021240633A1 (ja) 2021-12-02

Family

ID=78723071

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2020/020701 WO2021240633A1 (ja) 2020-05-26 2020-05-26 情報処理回路および情報処理回路の設計方法

Country Status (3)

Country Link
US (1) US20230205957A1 (ja)
JP (1) JP7456501B2 (ja)
WO (1) WO2021240633A1 (ja)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002117389A (ja) * 1990-01-24 2002-04-19 Hitachi Ltd 情報処理装置
JP2018133016A (ja) * 2017-02-17 2018-08-23 株式会社半導体エネルギー研究所 ニューラルネットワークシステム
US20190318232A1 (en) * 2013-10-11 2019-10-17 Hrl Laboratories, Llc Scalable Integrated Circuit with Synaptic Electronics and CMOS integrated Memristors

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002117389A (ja) * 1990-01-24 2002-04-19 Hitachi Ltd 情報処理装置
US20190318232A1 (en) * 2013-10-11 2019-10-17 Hrl Laboratories, Llc Scalable Integrated Circuit with Synaptic Electronics and CMOS integrated Memristors
JP2018133016A (ja) * 2017-02-17 2018-08-23 株式会社半導体エネルギー研究所 ニューラルネットワークシステム

Also Published As

Publication number Publication date
TW202147162A (zh) 2021-12-16
JPWO2021240633A1 (ja) 2021-12-02
US20230205957A1 (en) 2023-06-29
JP7456501B2 (ja) 2024-03-27

Similar Documents

Publication Publication Date Title
US11137981B2 (en) Operation processing device, information processing device, and information processing method
CN110413255B (zh) 人工神经网络调整方法和装置
US11880768B2 (en) Method and apparatus with bit-serial data processing of a neural network
Geng et al. LP-BNN: Ultra-low-latency BNN inference with layer parallelism
Qi et al. Accelerating framework of transformer by hardware design and model compression co-optimization
EP3528181B1 (en) Processing method of neural network and apparatus using the processing method
CN111401510A (zh) 一种数据处理方法、装置、计算机设备及存储介质
CN111401538A (zh) 一种数据处理方法、装置、计算机设备及存储介质
Fan et al. Reconfigurable acceleration of 3D-CNNs for human action recognition with block floating-point representation
CN114144794A (zh) 电子装置及用于控制电子装置的方法
CN111401539A (zh) 一种数据处理方法、装置、计算机设备及存储介质
CN111401511A (zh) 一种数据处理方法、装置、计算机设备及存储介质
KR20210060980A (ko) 상이한 희소 수준을 갖는 신경망 다중 프루닝 장치 및 방법
Lu et al. Doomed run prediction in physical design by exploiting sequential flow and graph learning
CN112001491A (zh) 针对处理器确定神经网络架构的搜索方法和装置
CN111401537A (zh) 一种数据处理方法、装置、计算机设备及存储介质
WO2021240633A1 (ja) 情報処理回路および情報処理回路の設計方法
US11995533B1 (en) Executing replicated neural network layers on inference circuit
JP7310910B2 (ja) 情報処理回路および情報処理回路の設計方法
TWI841838B (zh) 資訊處理電路及資訊處理電路之設計方法
CN115563929A (zh) 使用机器学习将芯片设计流程划分成子步骤
Bouzidi et al. Co-Optimization of DNN and Hardware Configurations on Edge GPUs
Syu et al. One-Dimensional Binary Convolutional Neural Network Accelerator Design for Bearing Fault Diagnosis
JP2020190901A (ja) 演算処理装置、演算処理装置の制御プログラム及び演算処理装置の制御方法
WO2020008642A1 (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: 20937572

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2022527306

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

Country of ref document: EP

Kind code of ref document: A1