WO2025239128A1 - ニューラルネットワーク処理装置及びニューラルネットワーク処理方法 - Google Patents
ニューラルネットワーク処理装置及びニューラルネットワーク処理方法Info
- Publication number
- WO2025239128A1 WO2025239128A1 PCT/JP2025/015227 JP2025015227W WO2025239128A1 WO 2025239128 A1 WO2025239128 A1 WO 2025239128A1 JP 2025015227 W JP2025015227 W JP 2025015227W WO 2025239128 A1 WO2025239128 A1 WO 2025239128A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- processing
- neural network
- floating
- integer
- layers
- Prior art date
- Legal status (The legal status 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 status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/0464—Convolutional networks [CNN, ConvNet]
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/0495—Quantised networks; Sparse networks; Compressed networks
Definitions
- the present invention generally relates to neural network processing.
- Known neural network processing devices include those described in Patent Documents 1 and 2, for example.
- the device shown in Figure 1 can be considered as a first comparative example of a neural network processing device.
- "I” stands for integerization
- “C” stands for convolution
- “F” stands for FP (floating-point) conversion.
- This neural network processing device acquires floating-point input data, quantizes (integerizes) the floating-point input data to obtain quantized input data, and provides the quantized input data to an arithmetic unit.
- This neural network processing device also includes a quantization unit that performs inverse quantization (FP conversion) on the arithmetic results output by the arithmetic unit to obtain the inverse quantized results.
- FP conversion inverse quantization
- the arithmetic unit performs matrix-vector operations and/or convolution operations on the quantized (integer) input data to obtain the arithmetic results of the input data.
- the convolution operations by performing the convolution operations using integers, processing can be performed faster than when convolution is performed using floating-point numbers.
- the device shown in Figure 2 can be considered as a second comparative example of a neural network processing device.
- R means reading from memory
- C means convolution
- A means activation function processing
- W means writing to memory.
- This neural network processing device performs neural network processing including convolution processing, which performs product-sum operations between multiple input data and multiple weight data to generate multiple intermediate data, and activation function processing, which calculates the value of a predetermined function using the multiple intermediate data as input to generate multiple output data.
- This neural network processing device performs activation function processing within the convolution processing loop.
- This second comparative example eliminates the need to store the results of the convolution processing in memory, thereby reducing the processing time required for memory read/write and enabling faster processing compared to when the convolution processing and activation function processing are performed using different functions.
- FIG. 3 shows the processing details of an activation function called "mish.” Because "mish” uses an exponential function (e x ), when performing convolution processing with integers, the activation function cannot be calculated using the results of the convolution processing (integers). Instead, the results of the convolution processing must be converted to floating-point numbers before calculating the activation function. Therefore, to combine the first and second comparative examples, the processing details shown in FIG. 4 are required.
- the data stored in memory (layer n-1 output (FP), layer n output (FP)) is a floating-point number.
- FP layer n-1 output
- FP layer n output
- the ratio of the processing time for reading and writing from memory often becomes relatively large.
- the present invention aims to reduce the processing time of a neural network processing device by reducing the amount of data stored in memory.
- FIG. 10 is a diagram illustrating processing contents of a first comparative example.
- FIG. 10 is a diagram illustrating processing contents of a second comparative example.
- FIG. 10 is a diagram illustrating the processing content of the mish activation function.
- FIG. 10 is a diagram illustrating processing contents when the first comparative example and the second comparative example are combined.
- FIG. 2 is a hardware configuration diagram of a neural network processing device.
- FIG. 6 is a diagram illustrating a first example of the configuration of neural network processing executed by the neural network processing device of FIG. 5 .
- FIG. 7 is a diagram illustrating an example of processing of one layer of the neural network processing of FIG. 6.
- FIG. 8 is a diagram illustrating the contents of the integer conversion process in FIG. 7 .
- FIG. 10 is a diagram illustrating variations of software for performing activation function processing.
- FIG. 7 is a diagram illustrating an example of a combination of parameters of product-sum operation processing and activation function processing for each layer of the neural network processing in FIG. 6 .
- FIG. 17 is a diagram showing the results of selecting combinations of parameters and activation functions from those in FIG. 16, excluding overlaps.
- an "interface apparatus” may refer to one or more interface devices, which may be at least one of the following:
- An I/O interface unit is one or more I/O (Input/Output) interface devices.
- the I/O (Input/Output) interface devices are interface devices to at least one of an I/O device and a remote display computer.
- the I/O interface device to the display computer may be a communications interface device.
- the at least one I/O device may be a user interface device, for example, either an input device such as a keyboard and a pointing device, or an output device such as a display device.
- a communication interface apparatus that is one or more communication interface devices.
- the one or more communication interface devices may be one or more communication interface devices of the same type (e.g., one or more NICs (Network Interface Cards)) or two or more communication interface devices of different types (e.g., a NIC and an HBA (Host Bus Adapter)).
- NICs Network Interface Cards
- HBA Home Bus Adapter
- memory refers to one or more memory devices, which are an example of one or more storage devices, and may typically be a primary storage device. At least one memory device in the memory may be a volatile memory device or a non-volatile memory device.
- a “persistent storage device” may be one or more persistent storage devices, which are an example of one or more storage devices.
- a persistent storage device may typically be a non-volatile storage device (e.g., an auxiliary storage device), and more specifically, may be, for example, an HDD (Hard Disk Drive), an SSD (Solid State Drive), an NVME (Non-Volatile Memory Express) drive, or an SCM (Storage Class Memory).
- an HDD Hard Disk Drive
- SSD Solid State Drive
- NVME Non-Volatile Memory Express
- SCM Storage Class Memory
- storage device may refer to at least memory, including memory and persistent storage devices.
- a "processor” may refer to one or more processor devices.
- At least one processor device may typically be a microprocessor device such as a CPU (Central Processing Unit), but may also be other types of processor devices such as a GPU (Graphics Processing Unit).
- At least one processor device may be single-core or multi-core.
- At least one processor device may also be a processor core.
- At least one processor device may be a broader processor device such as a circuit that is a collection of gate arrays written in a hardware description language that performs some or all of the processing (for example, an FPGA (Field-Programmable Gate Array), CPLD (Complex Programmable Logic Device), or ASIC (Application Specific Integrated Circuit)).
- FPGA Field-Programmable Gate Array
- CPLD Complex Programmable Logic Device
- ASIC Application Specific Integrated Circuit
- Figure 5 is a hardware configuration diagram of a neural network processing device.
- the neural network processing device 508 has a microprocessor 501, a GPU 511, and memory (e.g., ROM (Read Only Memory) 509, RAM (Random Access Memory) 510_1 and 510_2).
- the microprocessor 501 has a CPU 502 and multiple interface circuits (e.g., 503_1 to 503_5).
- Interface circuit 503_1 is an interface circuit for ROM 509.
- Interface circuit 503_2 is an interface circuit for RAM 510_1.
- Interface circuit 503_3 is an interface circuit for GPU 511.
- Interface circuit 503_4 is an interface circuit for cameras 513_1 and 513_2.
- Interface circuit 503_5 is an interface circuit for display 515.
- the neural network processing device 508 inputs image data from cameras 513_1 and 513_2, performs recognition using a neural network, and displays the recognition results on display 515.
- this embodiment illustrates an example of image recognition
- the present invention is not limited to this and can be applied to neural network processing devices in general, such as voice recognition and text analysis.
- the neural network processing device 508 may be mounted on a train consisting of n cars (n is a natural number) (or mounted so as to be able to communicate with the train), and the image recognition results by the neural network processing device 508 may be input to a train control device, which may perform train operation control (e.g., automatic driving control) based on the image recognition results.
- train operation control e.g., automatic driving control
- a train may be an example of a vehicle
- the neural network processing device 508 may be mounted on a vehicle other than a train (e.g., a passenger car or truck) (or mounted so as to be able to communicate with the vehicle), and the image recognition results by the neural network processing device 508 may be input to a vehicle control device, which may perform vehicle operation control (e.g., automatic driving control) based on the image recognition results.
- vehicle operation control e.g., automatic driving control
- Camera 513_1 and camera 513_2 each capture images in different directions. This makes it possible to capture all images of the area to be recognized and perform recognition processing. Cameras with a large number of pixels and a wide shooting range may also be used for cameras 513_1 and 513_2. This makes it possible to cover the entire area with a small number of cameras, even if the area to be recognized is large. In this case, an image captured by one camera may be divided into multiple areas and recognition processing performed separately. This makes it possible to exclude areas that do not need to be recognized, such as the sky, and perform recognition processing only on the necessary areas.
- Microprocessor 501 is an LSI that integrates CPU 502 and interface circuits 503_1 to 503_5 on a single chip. This configuration is one example, and ROM 509, RAMs 510_1 and 510_2, and some or all of GPU 511 may be built into microprocessor 501.
- RAM 510_1 may be an example of a memory that stores the results of calculations by microprocessor 501
- RAM 510_2 may be an example of a memory that stores the results of calculations by GPU 511.
- CPU 502 loads and executes software stored in ROM 509 via interface circuit 503_1. Note that since ROM 509 is often slower than RAM 510_1, software may be copied from ROM 509 to RAM 510_1 at startup, and then loaded from RAM 510_1. CPU 502 performs the following series of processes in accordance with the software loaded from ROM 509 or RAM 510_1.
- the CPU 502 first captures image data from cameras 513_1 and 513_2 via interface circuit 503_4, and then stores the captured image data in RAM 510_1 via interface circuit 503_2.
- the CPU 502 then reads the image data stored in RAM 510_1 via interface circuit 503_2 and transfers it to GPU 511 via interface circuit 503_3.
- the CPU 502 then reads the software stored in the ROM 509 or RAM 510_1 via the interface circuit 503_1 or 503_2, transfers the read software to the GPU 511 via the interface circuit 503_3, and instructs the GPU 511 to start calculations.
- the CPU 502 when the CPU 502 receives a notification of the completion of the calculation from the GPU 511 via the interface circuit 503_3, it retrieves the calculation result from the GPU 511 via the interface circuit 503_3 and stores the calculation result in the RAM 510_1 via the interface circuit 503_2.
- the CPU 502 then retrieves the calculation results of the GPU 511 from the RAM 510_1 via the interface circuit 503_2, performs predetermined processing based on the calculation results, and displays the results of the predetermined processing on the display 515 via the interface circuit 503_5.
- the GPU 511 When the GPU 511 receives image data from the CPU 502 via the interface circuit 503_3, it stores the image data in the RAM 510_2.
- the GPU 511 When the GPU 511 receives a request to read the calculation results from the CPU 502 via the interface circuit 503_3, it reads the calculation results from the RAM 510_2 and outputs the calculation results to the interface circuit 503_3.
- Figure 6 is a diagram showing a first example of the configuration of neural network processing executed by the neural network processing device 508 in Figure 5. Note that this diagram describes recognition processing for a single input image; when performing recognition processing for multiple images, the processing in Figure 6 is executed for each input image. In this case, the processing content may be the same for all images, or may be different for each image depending on the purpose of the recognition processing.
- Figure 7 shows an example of software that processes one layer of the neural network processing in Figure 6.
- This processing is executed by the GPU 511.
- I8 , k I8 , and out I8 are 8-bit integers
- d I32 is a 32-bit integer
- d F , p F , q F , out F , r F , and s F are floating-point numbers.
- H indicates the number of pixels in the vertical direction of the image
- the loop processing by h indicates processing for each vertical coordinate of the image.
- W indicates the number of pixels in the horizontal direction of the image, and the loop processing by w indicates processing for each horizontal coordinate of the image.
- CO indicates the number of types of attribute information for each pixel of the output data
- the loop processing by co indicates processing for each type of attribute information for a single pixel of the output data.
- CO The value of CO is often several tens to several hundreds.
- convolution see reference numeral 701
- FP floating-point conversion
- activation function see reference numeral 703
- integer conversion see reference numeral 704
- Convolution is a multiply-and-accumulate operation of the input (in I8 ) and weight (k I8 ). Because the number of bits in the calculation result is greater than the input or weight due to the multiply-and-accumulate operation, the calculation result (d I32 ) is a 32-bit integer.
- CI indicates the number of types of attribute information for each pixel of the input data
- the loop processing by ci indicates processing for each type of attribute information for a single pixel of the input data.
- the value of CI is typically 3 (corresponding to the three primary colors of R (red), G (green), and B (blue)) for Layer 1, which uses the input image as input data, but for other layers, the output of the previous layer is used as input, so it often ranges from tens to hundreds.
- the activation function calculates a predetermined function (f()) for the FP processing result (d F ). The details of the FP conversion and integer conversion processes will be described later.
- Figure 8 shows the integer conversion process shown in Figure 7.
- XF min the minimum value of the data to be converted into integers
- XF max the maximum value of an 8-bit integer
- the integer conversion result is obtained by adding 128 to the calculation result of the linear equation (r F * out F + s F ), performing integer conversion in C language (int()), and then subtracting 128.
- adding 128 results in 0.1
- performing integer conversion in C language (int()) results in 0
- subtracting 128 results in ⁇ 128, thereby obtaining the expected result.
- the coefficients of the linear equation used for integer conversion differ for each layer. Since the floating-point conversion process is an inverse function of the integer conversion, it can be calculated using a linear expression, just like the integer conversion. Since the floating-point conversion in Figure 7 targets the results of a product-sum operation of the input and weight, the floating-point conversion coefficients are calculated backward from the coefficients when the input and weight are converted to integers.
- Figure 9 shows the processing flow when the software in Figure 7 is executed, and the data exchange with memory.
- R means reading from RAM 510_2
- C means convolution
- A means activation function processing
- I means integer conversion
- W means writing to memory.
- the neural network processing device 508 reads the calculation result (output) of the layer 901 (e.g., layer n-1 (901_n-1)) immediately before the target layer (e.g., layer n (901_n)) from RAM 510_2, and performs convolution on the target layer using the integer resulting from the calculation.
- the neural network processing device 508 performs FP conversion, which converts the integer resulting from the convolution into a floating-point number, and performs activation function processing using the floating-point number obtained by the FP conversion.
- the neural network processing device 508 performs integer conversion, which converts the floating-point number obtained by the activation function processing into an integer, and writes the integer obtained by the integer conversion processing to RAM 510_2 as the calculation result for the target layer.
- activation function processing uses floating-point numbers and cannot be performed using integers. Therefore, the output of the activation function processing in the layer is a floating-point number (output (FP)), but integer conversion is performed after the activation function processing. As a result, the integer conversion result is written to RAM 510_2. Therefore, the data stored in RAM 510_2 is an 8-bit integer (layer n-1 output (integer), layer n output (integer)), and the size of the data stored in memory is reduced compared to Figure 4. Furthermore, because the data stored in RAM 510_2 (8-bit integer) is read and used for the convolution processing, the convolution processing can be performed using 8-bit integers, and the convolution processing time is also reduced. As a result, the processing time of the neural network processing device can be reduced overall.
- FP floating-point number
- the integers stored in RAM 510_2 as the calculation results for that layer 901 may be accumulated in RAM 510_2 as a log of the calculation results. Since integers for each layer 901 are recorded in RAM 510_2, it can be inferred that neural network processing according to Example 1 is being performed.
- Example 2 will now be described. In doing so, differences from the previous example will be mainly explained, and explanations of points in common with the previous example will be omitted or simplified (this also applies to examples 2 and onward).
- Figure 10 is a diagram showing a second example of the configuration of neural network processing executed by the neural network processing device of Figure 5.
- a feature of the configuration in Figure 10 is that the processing of layer 1001 is not serial, and the input to a certain layer is the output of multiple layers prior to that layer. Specifically, for example, the result of performing addition process 1003 on the output of layer-i (1001_i) and the output of layer-j (1001_j) next to layer-i (1001_i) is the input to layer-k (1001_k) next to layer-j (1001_j). Because the coefficients of the linear equation used to convert to integers differ between layer-i (1001_i) and layer-j (1001_j), addition process 1003 cannot be performed as integers; it must be converted to floating-point before addition process 1003.
- Figure 11 shows an example of software that executes the addition process 1003 of the neural network processing in Figure 10.
- the GPU that executes this software converts the first input (in_i I8 ) to floating-point (see reference symbol 1101_i) and the second input (in_j I8 ) to floating-point (see reference symbol 1101_j), then performs addition (see reference symbol 1102), converts the result to an integer (see reference symbol 1103_k), and outputs the integer result (out_k I8 ).
- the coefficients (p_i F , q_i F ) used when converting the first input (in_i I8 ) to floating-point are values that are calculated in advance from the coefficients used when converting the output to an integer in layer-i (1001_i).
- the coefficients (p_j F , q_j F ) used when converting the second input (in_j I8 ) to floating-point are values that are calculated in advance from the coefficients used when converting the output to an integer in layer-j.
- the coefficients (r_k F , s_k F ) used to convert the output into integers are values calculated in advance from the minimum and maximum values of the addition results when the neural network processing before integer conversion is performed with known inputs.
- the output of the addition process 1003 which is the sum of the integer as the output of the first layer and the integer as the output of the second layer, from falling below the minimum integer value or exceeding the maximum integer value.
- the integer as the output of layer-i (1001_i) input to the addition process 1003 first input (in_i I8 )
- the integer as the output of layer-j (1001_j) input to the addition process 1003 second input (in_j I8 )
- the integer as the output of the addition process 1003 (output (out_k I8 )) may be written to the RAM 510_2 and read from the RAM 510_2 in the processing of layer-k (1001_k).
- Figure 12 is a diagram showing a third example of the configuration of neural network processing executed by the neural network processing device of Figure 5.
- Figure 13 shows an example of software that processes one layer of the neural network processing in Figure 12.
- a floating-point conversion coefficient (q F ) is added to the bias value (b F [co]). This allows the addition of the coefficient during floating-point conversion and the bias addition to be performed in a single addition process, thereby reducing processing time compared to when floating-point conversion and bias addition are performed separately.
- reference numeral 1302 represents convolution
- reference numeral 1303 represents FP conversion and bias addition
- reference numeral 1304 represents activation function processing
- reference numeral 1305 represents integer conversion processing.
- One loop process includes an H loop (a loop for the number of vertical pixels in the image), a W loop (a loop for the number of horizontal pixels in the image), and a CO loop (a loop for the number of types of attribute information for each pixel in the output data), but bias value correction is performed outside of (before the start of) these loops. This eliminates the need for bias value correction within the loop, making it possible to reduce the overall processing load.
- addition layer may include bias addition.
- the convolution process and activation function process are executed in one loop (one layer). Therefore, if there are multiple variations of each of the convolution process and activation function process, it will be necessary to write a number of processes equivalent to the product of the number of variations of both, which could take a huge amount of time to write the software and check its operation.
- Figure 14 shows examples of software variations that perform product-sum operations and the corresponding parameters.
- the input format indicates the order in which the input data is arranged, and there are two types: CHW and HWC.
- CHW first arranges the data along the attribute information type axis, then arranges data with the same attribute information type axis value along the vertical axis of the image, and finally arranges data with the same attribute information type axis and vertical axis values along the horizontal axis of the image.
- HWC first arranges data along the vertical axis of the image, then arranges data with the same vertical axis values along the horizontal axis of the image, and finally arranges data with the same vertical and horizontal axis values along the attribute information type axis. Note that the software shown in Figures 7, 11, and 13 is compatible with the HWC input format and cannot be used when the input format is CHW.
- the weight format indicates the sorting order of the weight data, and there are two types: CHW and HWC.
- CHW and HWC The meaning of CHW and HWC is the same as for the input format.
- the software shown in Figures 7, 11, and 13 is software that supports the HWC weight format, and cannot be used when the weight format is CHW.
- the output format indicates the sorting order of the output data, and there are two types: CHW and HWC.
- CHW and HWC The meanings of CHW and HWC are the same as for the input format.
- the software shown in Figures 7, 11, and 13 is software that supports the HWC output format, and cannot be used when the output format is CHW.
- the weight size indicates the range of pixels in the input data that affect each pixel in the output data.
- each pixel in the output data is only affected by pixels in the input data that have the same values on the vertical and horizontal axes. This is represented as 1x1 in Figure 14.
- CI is the number of types of attribute information for each pixel in the input data, and as explained in Figure 7, it can take on a value of 3 for layer 1 and tens to hundreds for other layers. Due to space constraints, only two values, 3 and 32, are shown here.
- CO is the number of types of attribute information for each pixel in the output data, and as described in the explanation of Figure 7, it can take on values ranging from tens to hundreds. Due to space constraints, only one type, 32, is shown here.
- Figure 14 does not cover all possible variations, but there are still a whopping 32 possible variations.
- Figure 15 shows variations in activation function processing. In this figure, the name of each activation function is written, but the function calculation formula is omitted. Figure 15 does not cover all variations, but there are still 10 variations, which is a large number.
- Figure 16 shows an example of a combination of convolution processing parameters and activation function processing for each layer of the neural network processing in Figure 6.
- Figure 17 shows the results of selecting combinations of parameters and activation function processing from those in Figure 16, excluding duplicates. As a result, it can be confirmed that there are only three combinations of parameters and activation function processing, and therefore it is sufficient to write the software in three different ways.
- the development flow may be as follows: For each layer, the user specifies a parameter set including convolution processing parameters (e.g., input format, weight format, output format, size, CI, and CO) and activation function parameters. This lists the parameter sets. Next, parameter sets are aggregated by selecting parameter sets from the specified parameter sets (parameter set list) with duplicates removed. Software is written based on the aggregated parameter sets.
- This development flow can shorten the software design time. Note that this software design may be performed by the neural network processing device, or by a device separate from the neural network processing device (e.g., a computer such as a personal computer).
- Neural network processing is generally used for two types of applications: learning processing and inference processing.
- the learning process involves inputting known data as input for neural network processing, and adjusting the weight data so that the output of the neural network processing approaches the expected value.
- the neural network is trained using a training dataset containing known images and the correct labels for those known images.
- inference processing involves inputting unknown data into neural network processing and using the output of the neural network processing as the recognition result.
- a neural network processing device (e.g., 508) includes an interface device (e.g., multiple interface circuits 503_1 to 503_5), a memory (e.g., RAM 510_2), and a processor (e.g., GPU 511) connected to the interface device and the memory, and performs neural network processing of data input via the interface device (e.g., image data from camera 513).
- an interface device e.g., multiple interface circuits 503_1 to 503_5
- a memory e.g., RAM 510_2
- a processor e.g., GPU 511
- the processor performs convolution processing to perform product-sum operations between the integers input to that layer and the weight data, performs floating-point conversion processing to convert the integers output from the convolution processing into floating-point numbers, performs activation function processing to calculate a predetermined function using the floating-point numbers output from the floating-point conversion processing, performs integer conversion processing to convert the floating-point numbers output from the activation function processing into integers, and performs write processing to write the integers obtained by the integer conversion processing to memory.
- the data stored in memory is converted into integers, reducing the amount of data.
- the amount of data transferred between the computing unit (e.g., GPU 511) and memory connected externally to the computing unit (e.g., RAM 510_2) can be reduced. This reduces the processing time of the neural network processing device.
- predetermined function may be a predetermined activation function, specifically an activation function that uses floating-point numbers (an activation function that cannot be processed using integers).
- the "multiple layers" in a neural network may refer to all or some of the layers that make up the neural network.
- the integers read as data from memory may be integers obtained by performing integer processing on the input data of the neural network and stored in memory.
- the integers input to that layer may be integers written in the previous processing and read from memory in the processing of that layer.
- This "previous processing” may be processing of the previous layer (for example, the layer immediately before), or the addition processing described above.
- the integers stored in memory as the processing results for that layer may be accumulated in memory as a log of the processing results. Since the integers for each layer are recorded in memory, it can be inferred that neural network processing according to the present invention has been performed.
- the neural network may include one or more addition layers in addition to the "multiple layers" (multiple convolutional layers).
- Each of the one or more addition layers is a processing layer that adds the outputs of some of the multiple convolutional layers and outputs the result to one of the multiple convolutional layers.
- the processor may convert the multiple integers input to the addition layer into floating-point numbers, add the multiple floating-point numbers, convert the resulting floating-point number to an integer, and write the converted integer to memory. This prevents the output of the addition layer processing from falling below the minimum integer value or exceeding the maximum integer value.
- the layer may include a loop process, which may include a convolution process, a floating-point conversion process, an activation function process, and an integer conversion process, and the processor may perform a bias value correction by adding a floating-point conversion coefficient to the bias value before starting the loop process, thereby simultaneously performing the addition process and the bias addition process included in the floating-point conversion process in the loop process.
- a loop process which may include a convolution process, a floating-point conversion process, an activation function process, and an integer conversion process
- the processor may perform a bias value correction by adding a floating-point conversion coefficient to the bias value before starting the loop process, thereby simultaneously performing the addition process and the bias addition process included in the floating-point conversion process in the loop process.
- the neural network processing software may be first software written based on a parameter set obtained by removing duplicates from a list of parameter sets including parameters for convolution processing and parameters for activation function processing for multiple layers. This reduces the time required to write the software.
- the software for the inference process may be the first software, which is a learning process in which known data is input into a neural network and weight data (each weight in the neural network) is adjusted so that the output of the neural network approaches an expected value, and an inference process in which unknown data is input into the neural network and the output of the neural network is used as the recognition result.
- the device on which the inference process is performed is generally a so-called edge device (a device on the edge side), and therefore has fewer computational resources than a core device (a device on the core side).
- software that can perform neural network processing as inference processing can be created in a short period of time.
- a software creation method expressed as follows: The following software creation method is executed by a computer.
- ⁇ Expression 1> A method for creating software for neural network processing that combines multiple layer processes, including convolution processing that performs product-sum operations between input data and weight data and activation function processing that calculates a predetermined function from the results of the convolution processing, Listing parameters of convolutional processes and activation function processes of the plurality of layer processes; selecting a set of parameters from the list of parameters with duplicates removed; a step of writing software to execute the convolution process with integers, execute the activation function process with floating-point numbers, and convert the result of the activation function process into integers and write the integers to memory for the layer process corresponding to the set of parameters;
- a method for creating software for neural network processing comprising:
- ⁇ Expression 2> A method for creating software for neural network processing that combines multiple layer processes, including convolution processing that performs product-sum operations between input data and weight
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computational Linguistics (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Artificial Intelligence (AREA)
- Life Sciences & Earth Sciences (AREA)
- Evolutionary Computation (AREA)
- Algebra (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Databases & Information Systems (AREA)
- Image Analysis (AREA)
Abstract
ニューラルネットワーク処理装置は、ニューラルネットワークにおける複数のレイヤの各々において、入力された整数と重みデータの間の積和演算を行う畳み込み処理を行い、畳み込み処理の出力としての整数を浮動小数点数に変換し、当該浮動小数点数を基に活性化関数処理を行い、活性化関数処理の出力としての浮動小数点数を整数に変換する整数化処理を行い、当該整数をメモリに書き込む。
Description
本発明は、概して、ニューラルネットワークの処理に関する。
ニューラルネットワーク処理装置として、例えば、特許文献1及び特許文献2に記載された装置が知られている。
本願発明者の検討によれば、ニューラルネットワーク処理装置の第1の比較例として、図1に記載の装置が考えられる。図1において、「I」は、整数化を意味し、「C」は、畳み込みを意味し、「F」は、FP化(=浮動小数点化)を意味する。このニューラルネットワーク処理装置は、浮動小数点型の入力データを取得し、浮動小数点型の入力データを量子化(整数化)して量子化された後の入力データを得て、量子化された後の入力データを演算ユニットに提供する。また、このニューラルネットワーク処理装置は、演算ユニットによって出力された演算結果に対して逆量子化(FP化)を行って逆量子化結果を得るための量子化ユニットを備える。演算ユニットが、量子化(整数化)された後の入力データに対して行列ベクトル操作及び/又は畳み込み演算を行って、入力データの演算結果を得る。この第1の比較例によれば、畳み込み演算を整数で行うことにより、浮動小数点数で畳み込みを行った場合に比べて高速に処理を行うことができる。
本願発明者の検討によれば、ニューラルネットワーク処理装置の第2の比較例として、図2に記載の装置が考えられる。図2において、「R」は、メモリからの読出しを意味し、「C」は、畳み込みを意味し、「A」は、活性化関数処理を意味し、「W」は、メモリへの書込みを意味する。このニューラルネットワーク処理装置は、複数の入力データと複数の重みデータの間の積和演算を行って複数の中間データを生成する畳み込み処理と、複数の中間データを入力とする所定の関数の値を計算して複数の出力データを生成する活性化関数処理と、を含むニューラルネットワーク処理を実行する。このニューラルネットワーク処理装置は、活性化関数処理を、畳み込み処理のループ処理内で実行する。この第2の比較例によれば、畳み込みの処理結果をメモリに格納する必要がなくなるため、畳み込み処理と活性化関数処理を異なる関数で処理する場合に比べてメモリの読み書きに必要な処理時間を削減し高速に処理を行うことができる。
本願発明者の検討によれば、上記第1の比較例と上記第2の比較例を組み合わせることで、より処理時間の短いニューラルネットワーク処理装置を構成できる可能性がある。その際、活性化関数の処理内容を考慮する必要がある。図3はmishという活性化関数の処理内容を示す。mishは指数関数(ex)を使用しているため、整数で畳み込み処理を行った場合、畳み込み処理の処理結果(整数)を用いて活性化関数を計算することができず、畳み込み処理の処理結果を浮動小数点数に変換してから活性化関数を計算する必要がある。従って、上記第1の比較例と上記第2の比較例を組み合わせるためには図4に示した処理内容とする必要がある。レイヤn-1、レイヤn、レイヤn+1の処理はそれぞれ、一つ前のレイヤの出力をメモリから読み出し、整数化処理、畳み込み、FP化(=浮動小数点化)、活性化関数処理を順次行って、結果をメモリに書き込む。ここで、メモリに格納されるデータ(レイヤn-1出力(FP)、レイヤn出力(FP))は浮動小数点数となる。ニューラルネットワークの処理において、畳み込み演算を整数で行うことにより浮動小数点数で畳み込みを行った場合に比べて畳み込み演算の処理時間を削減した場合、メモリの読み書きの処理時間の比率が相対的に大きくなる場合が多い。図4の処理内容の場合、メモリに格納されるデータは浮動小数点数であるため、メモリに読み書きされるデータのデータ量は第2の比較例と変わらず、この点で、第1の比較例と組み合わせたことによる高速化の効果は限定的である。
本発明はこの問題に対応するため、メモリに格納されるデータのデータ量を削減することによりニューラルネットワーク処理装置の処理時間を削減することを目的とする。
上記の目的を達成するため、ニューラルネットワーク処理装置は、ニューラルネットワークにおける複数のレイヤの各々において、入力された整数と重みデータの間の積和演算を行う畳み込み処理を行い、畳み込み処理の出力としての整数を浮動小数点数に変換する浮動小数点化処理を行い、浮動小数点化処理の出力から予め定められた関数を計算する活性化関数処理を行い、活性化関数処理の計算結果としての浮動小数点数を整数に変換する整数化処理を行い、整数化処理により得られた整数を出力としてメモリに書き込む。
本発明によれば、メモリに格納されるデータが整数となりデータ量が削減されるため、ニューラルネットワーク処理装置の処理時間を削減することができる。
以下の説明では、「インタフェース装置」は、一つ以上のインタフェースデバイスで良い。当該一つ以上のインタフェースデバイスは、下記のうちの少なくとも一つで良い。
・一つ以上のI/O(Input/Output)インタフェースデバイスであるI/Oインタフェース装置。I/O(Input/Output)インタフェースデバイスは、I/Oデバイスと遠隔の表示用計算機とのうちの少なくとも一つに対するインタフェースデバイスである。表示用計算機に対するI/Oインタフェースデバイスは、通信インタフェースデバイスで良い。少なくとも一つのI/Oデバイスは、ユーザインタフェースデバイス、例えば、キーボード及びポインティングデバイスのような入力デバイスと、表示デバイスのような出力デバイスとのうちのいずれでも良い。
・一つ以上の通信インタフェースデバイスである通信インタフェース装置。一つ以上の通信インタフェースデバイスは、一つ以上の同種の通信インタフェースデバイス(例えば一つ以上のNIC(Network Interface Card))であっても良いし二つ以上の異種の通信インタフェースデバイス(例えばNICとHBA(Host Bus Adapter))であっても良い。
・一つ以上のI/O(Input/Output)インタフェースデバイスであるI/Oインタフェース装置。I/O(Input/Output)インタフェースデバイスは、I/Oデバイスと遠隔の表示用計算機とのうちの少なくとも一つに対するインタフェースデバイスである。表示用計算機に対するI/Oインタフェースデバイスは、通信インタフェースデバイスで良い。少なくとも一つのI/Oデバイスは、ユーザインタフェースデバイス、例えば、キーボード及びポインティングデバイスのような入力デバイスと、表示デバイスのような出力デバイスとのうちのいずれでも良い。
・一つ以上の通信インタフェースデバイスである通信インタフェース装置。一つ以上の通信インタフェースデバイスは、一つ以上の同種の通信インタフェースデバイス(例えば一つ以上のNIC(Network Interface Card))であっても良いし二つ以上の異種の通信インタフェースデバイス(例えばNICとHBA(Host Bus Adapter))であっても良い。
また、以下の説明では、「メモリ」は、一つ以上の記憶デバイスの一例である一つ以上のメモリデバイスであり、典型的には主記憶デバイスで良い。メモリにおける少なくとも一つのメモリデバイスは、揮発性メモリデバイスであっても良いし不揮発性メモリデバイスであっても良い。
また、以下の説明では、「永続記憶装置」は、一つ以上の記憶デバイスの一例である一つ以上の永続記憶デバイスで良い。永続記憶デバイスは、典型的には、不揮発性の記憶デバイス(例えば補助記憶デバイス)で良く、具体的には、例えば、HDD(Hard Disk Drive)、SSD(Solid State Drive)、NVME(Non-Volatile Memory Express)ドライブ、又は、SCM(Storage Class Memory)で良い。
また、以下の説明では、「記憶装置」は、メモリと永続記憶装置の少なくともメモリで良い。
また、以下の説明では、「プロセッサ」は、一つ以上のプロセッサデバイスで良い。少なくとも一つのプロセッサデバイスは、典型的には、CPU(Central Processing Unit)のようなマイクロプロセッサデバイスで良いが、GPU(Graphics Processing Unit)のような他種のプロセッサデバイスでも良い。少なくとも一つのプロセッサデバイスは、シングルコアでも良いしマルチコアでも良い。少なくとも一つのプロセッサデバイスは、プロセッサコアでも良い。少なくとも一つのプロセッサデバイスは、処理の一部又は全部を行うハードウェア記述言語によりゲートアレイの集合体である回路(例えばFPGA(Field-Programmable Gate Array)、CPLD(Complex Programmable Logic Device)又はASIC(Application Specific Integrated Circuit))といった広義のプロセッサデバイスでも良い。
また、以下の説明では、同種の要素を区別しないで説明する場合には、参照符号のうちの共通符号を使用し、同種の要素を区別する場合は、参照符号を使用することがある。
図5は、ニューラルネットワーク処理装置のハードウェア構成図である。
ニューラルネットワーク処理装置508に、外部装置として、例えば、一つ又は複数のカメラ513(例えば、513_1及び513_2)のような入出力装置又はセンサや、ディスプレイ515のような入出力装置が接続されている。ニューラルネットワーク処理装置508は、マイクロプロセッサ501と、GPU511と、メモリ(例えば、ROM(Read Only Memory)509、RAM(Random Access Memory)510_1及び510_2)を有する。マイクロプロセッサ501は、CPU502と、複数のインタフェース回路(例えば503_1~503_5)とを有する。インタフェース回路503_1は、ROM509のインタフェース回路である。インタフェース回路503_2は、RAM510_1のインタフェース回路である。インタフェース回路503_3は、GPU511のインタフェース回路である。インタフェース回路503_4は、カメラ513_1及び513_2のインタフェース回路である。インタフェース回路503_5は、ディスプレイ515のインタフェース回路である。
ニューラルネットワーク処理装置508は、カメラ513_1、及びカメラ513_2から画像データを入力し、ニューラルネットワークによる認識を行った後、認識結果をディスプレイ515に表示する。なお、本実施例では画像認識を行う例を示したが、本発明はそれに限定されることは無く、音声認識やテキスト解析などニューラルネットワーク処理装置全般に適用が可能である。例えば、ニューラルネットワーク処理装置508は、n両編成の列車(nは自然数)に搭載(又は、列車と通信可能に搭載)されて良く、ニューラルネットワーク処理装置508による画像認識の結果が列車の制御装置に入力され当該制御装置が当該画像認識結果を基に列車の運転制御(例えば自動運転制御)を行って良い。また、例えば、列車は、車両の一例で良く、ニューラルネットワーク処理装置508は、列車以外の車両(例えば、乗用車やトラック)に搭載(又は、車両と通信可能に搭載)されて良く、ニューラルネットワーク処理装置508による画像認識の結果が車両の制御装置に入力され当該制御装置が当該画像認識結果を基に車両の運転制御(例えば自動運転制御)を行って良い。
カメラ513_1及びカメラ513_2はそれぞれ異なる方向の画像を撮影する。これによって、認識したい領域の全ての画像を取り込んで認識処理を行うことが可能となる。また、カメラ513_1及び513_2として画素数が多く撮影範囲の広いカメラが使用されても良い。これによって、認識したい領域が広かった場合でも少ないカメラの台数で全ての領域をカバーすることが可能となる。この場合、1つのカメラで撮影した画像を複数の領域に分割して別々に認識処理を行っても良い。これによって、空などの認識が不要な領域を除外して必要な領域のみに対して認識処理を行うことが可能となる。
マイクロプロセッサ501は、CPU502とインタフェース回路503_1~503_5を1つのチップに集積したLSIである。この構成は一例であり、ROM509、RAM510_1及び510_2及びGPU511の一部又は全てがマイクロプロセッサ501内に内蔵されても良い。RAM510_1は、マイクロプロセッサ501の演算結果が格納されるメモリの一例で良く、RAM510_2は、GPU511の演算結果が格納されるメモリの一例で良い。
CPU502は、インタフェース回路503_1を経由してROM509に格納されたソフトウェアを取り込み、実行する。なお、ROM509はRAM510_1に比べると低速である場合が多いため、起動時にROM509からRAM510_1にソフトウェアをコピーし、その後はRAM510_1からソフトウェアを取り込む様にしても良い。CPU502は、ROM509又はRAM510_1から取り込んだソフトウェアに従い、以下の一連の処理を行う。
CPU502はまず、インタフェース回路503_4を経由してカメラ513_1及び513_2から画像データを取り込み、取り込んだ画像データを、インタフェース回路503_2を経由してRAM510_1に格納する。
CPU502は次に、インタフェース回路503_2を経由してRAM510_1に格納された画像データを読み出し、インタフェース回路503_3を経由してGPU511に転送する。
CPU502は次に、インタフェース回路503_1又は503_2を経由してROM509又はRAM510_1に格納されたソフトウェアを読み出し、読み出したソフトウェアを、インタフェース回路503_3を経由してGPU511に転送し、GPU511に演算開始を指示する。
CPU502は次に、インタフェース回路503_3を経由してGPU511から演算終了の通知を受け取ると、インタフェース回路503_3を経由してGPU511から演算結果を取り込み、当該演算結果を、インタフェース回路503_2を経由してRAM510_1に格納する。
CPU502は次に、インタフェース回路503_2を経由してRAM510_1からGPU511の演算結果を取り込み、当該演算結果に基づき所定の処理を行ったうえで、当該所定の処理の結果を、インタフェース回路503_5を経由してディスプレイ515に表示する。
GPU511は、インタフェース回路503_3を経由してCPU502から画像データを受け取ると、当該画像データをRAM510_2に格納する。
GPU511はまた、インタフェース回路503_3を経由してCPU502からソフトウェアを受け取ると、そのソフトウェアを実行し、演算結果をRAM510_2に格納する。
GPU511はまた、インタフェース回路503_3を経由してCPU502から演算結果の読み出し要求を受け取ると、RAM510_2から演算結果を読み出し、当該演算結果をインタフェース回路503_3に出力する。
図6は、図5のニューラルネットワーク処理装置508で実行するニューラルネットワーク処理の構成の第1の例を示す図である。なお、この図は単一の入力画像に対する認識処理を記載したものであり、複数の画像に対して認識処理を行う場合には入力画像毎に図6の処理を実行する。その際、処理の内容は全ての画像に対して同一の構成であっても良いし、認識処理の目的に合わせて画像毎に異なる構成であっても良い。
図6の処理は、N個のレイヤ901から構成される。レイヤ-1(901_1)は入力画像を入力し、処理結果をレイヤ-2(901_2)に出力する。レイヤ-N(901_N)は1つ前のレイヤからデータを受け取り、処理結果を認識結果として出力する。それ以外のレイヤは1つ前のレイヤからデータを受け取り、1つ後のレイヤに処理結果を出力する。各レイヤの処理内容は、図9に示す通り、畳み込み処理と活性化関数処理を含む。
図7は、図6のニューラルネットワーク処理の1つのレイヤを処理するソフトウェアの例を示す図である。
この処理はGPU511で実行される。inI8、kI8、outI8は8ビットの整数、dI32は32ビットの整数、dF、pF、qF、outF、rF、sFは浮動小数点数である。Hは画像の縦方向の画素数を示し、hによるループ処理は画像の縦方向の座標ごとの処理を示す。Wは画像の横方向の画素数を示し、wによるループ処理は画像の横方法の座標ごとの処理を示す。COは出力データの各画素の属性情報の種類数を示し、coによるループ処理は出力データの単一画素の属性情報の種類毎の処理を示す。COの値は数十~数百となる場合が多い。coによるループの内部では、畳み込み(符号701参照)、FP化(浮動小数点化)(符号702参照)、活性化関数(符号703参照)、整数化(符号704参照)の処理が行われる。畳み込みは入力(inI8)と重み(kI8)の積和演算である。積和演算によって入力や重みより演算結果のビット数が多くなるため、演算結果(dI32)は32ビットの整数としている。CIは入力データの各画素の属性情報の種類数を示し、ciによるループ処理は入力データの単一画素の属性情報の種類毎の処理を示す。CIの値は、入力画像を入力データとするレイヤ-1では3(R(赤)、G(緑)、B(青)の3原色に相当)となるのが普通であるが、それ以外は1つ前のレイヤの出力を入力とするため、数十~数百となる場合が多い。活性化関数はFP化の処理結果(dF)に対して予め定められた関数(f())を計算する。FP化と整数化の処理内容は後述する。
図8は、図7の整数化の処理内容を示す図である。
整数化対象のデータの最小値をXFmin、最大値をXFmaxとした場合、XFminが8ビット整数の最小値(XI8min=-128)、XFmaxが8ビット整数の最大値(XI8max=127)となる様に直線(1次式)で近似する。XFmin、XFmaxの値は、整数化する前のニューラルネットワーク処理を既知の入力で動作させることで求める。未知の入力で動作させた時の値がXFminとXFmaxの範囲に収まらない可能性があるため、XFminより小さい入力に対してはXI8min、XFmaxより大きい入力に対してはXI8maxを整数化結果とする処理を行った方が好ましいが、図7、図8では省略した。図8には明記していないが、1次式の計算結果を整数化する際には、計算結果を超えない最大の整数を選択する。例えば1次式の計算結果が-127.9であった場合、整数化の結果は-128とする。C言語でプログラムを記述する場合、単純な整数化は小数点以下を切り捨てる処理と解釈されるため、-127.9を整数化すると-127となり期待通りの結果とならない。そこで、図7では1次式の計算結果(rF*outF+sF)に128を加算しC言語の整数化(int())を実行した後128を減算することで整数化の結果を求めている。この方法を採用することで、例えば1次式の計算結果が-127.9であった場合、128を加算すると0.1、C言語の整数化(int())を実行すると0、128を減算すると-128となり、期待通りの結果を得ることができる。XFmin、XFmaxの値はレイヤ毎に異なるため、整数化に使用する1次式の係数(図7のrF、sF)はレイヤ毎に異なる。浮動小数点化の処理は整数化の逆関数であるため、整数化と同様に1次式で計算することができる。図7の浮動小数点化は入力と重みの積和演算結果を対象としているため、入力と重みを整数化した時の係数から浮動小数点化の係数を逆算して求める。
図9は、図7のソフトウェアを実行した時の処理の流れと、メモリとの間のデータのやり取りを示す図である。図9において、「R」は、RAM510_2からの読出しを意味し、「C」は、畳み込みを意味し、「F」は、FP化(=浮動小数点化)を意味し、「A」は、活性化関数処理を意味し、「I」は、整数化を意味し、「W」は、メモリへの書込みを意味する。
ニューラルネットワーク処理装置508は、対象レイヤ(例えばレイヤn(901_n))の1つ前のレイヤ901(例えばレイヤn-1(901_n-1))の演算結果(出力)をRAM510_2から読み出し、当該演算結果としての整数を用いた畳み込みを対象レイヤにおいて行う。ニューラルネットワーク処理装置508は、畳み込みの結果としての整数を浮動小数点数に変換するFP化を行い、FP化により得られた浮動小数点数を用いた活性化関数処理を行う。ニューラルネットワーク処理装置508は、活性化関数処理により得られた浮動小数点数を整数に変換する整数化処理を行い、整数化処理により得られた整数を、対象レイヤの演算結果としてRAM510_2に書き込む。
本実施形態では、活性化関数処理は、浮動小数点数を用いた処理であり、整数を用いた処理を行うことができず、故に、レイヤにおける活性化関数処理の出力は、浮動小数点数(出力(FP))であるが、活性化関数処理の後に整数化処理が行われる。このため、整数化した結果がRAM510_2に書き込まれ、故に、RAM510_2に格納されるデータは8ビットの整数(レイヤn-1出力(整数)、レイヤn出力(整数))となり、図4と比べてメモリに格納されるデータのサイズが削減されている。そして、RAM510_2に格納されたデータ(8ビットの整数)が読み出されて畳み込み処理に使用されるため、畳み込み処理を、8ビットの整数を用いた処理とすることができ、畳み込みの処理時間も削減される。結果として、全体として、ニューラルネットワーク処理装置の処理時間を削減することができる。
なお、レイヤ901毎に、当該レイヤ901での演算結果としてRAM510_2に格納される整数は、演算結果のログとしてRAM510_2に蓄積されても良い。RAM510_2にレイヤ901毎の整数が記録されていることから、実施例1に係るニューラルネットワーク処理の実施が推定される。
実施例2を説明する。その際、前述の実施例との相違点を主に説明し、前述の実施例との共通点については説明を省略又は簡略する(この点は、実施例2以降の実施例についても同様である)。
図10は、図5のニューラルネットワーク処理装置で実行するニューラルネットワーク処理の構成の第2の例を示す図である。
図10の構成の特徴は、レイヤ1001の処理が直列的になっておらず、或るレイヤの入力は、当該或るレイヤよりも前の複数のレイヤの出力である点である。具体的には、例えば、レイヤ-i(1001_i)の出力と、レイヤ-i(1001_i)の次のレイヤ-j(1001_j)の出力に対して加算処理1003を行った結果が、レイヤ-j(1001_j)の次のレイヤ-k(1001_k)の入力である。レイヤ-i(1001_i)とレイヤ-j(1001_j)では整数化を行うための1次式の係数が異なるため、加算処理1003では整数のままで加算を行うことはできず、浮動小数点に変換してから加算処理1003を行う必要がある。
図11は、図10のニューラルネットワーク処理の加算処理1003を実行するソフトウェアの例を示す図である。
当該ソフトウェアを実行するGPUは、第1の入力(in_iI8)を浮動小数点化し(符号1101_i参照)と第2の入力(in_jI8)を浮動小数点化し(符号1101_j参照)、その後に加算を行い(符号1102参照)、結果を整数化し(符号1103_k参照)、整数化された結果を出力(out_kI8)とする。第1の入力(in_iI8)を浮動小数点化する時の係数(p_iF、q_iF)は、レイヤ-i(1001_i)で出力を整数化する時の係数から予め求めておいた値を使用する。同様に、第2の入力(in_jI8)を浮動小数点化する時の係数(p_jF、q_jF)は、レイヤ-jで出力を整数化する時の係数から予め求めておいた値を使用する。出力を整数化する時の係数(r_kF、s_kF)は、整数化する前のニューラルネットワーク処理を既知の入力で動作させた時の加算結果の最小値と最大値から予め求めておいた値を使用する。
実施例2によれば、加算処理1003の出力が、第1のレイヤの出力としての整数と第2のレイヤの出力としての整数との和となって整数の最小値を下回る又は整数の最大値を超えるといったことが生じないようにすることができる。なお、加算処理1003に入力されるレイヤ-i(1001_i)の出力としての整数(第1の入力(in_iI8))も、加算処理1003に入力されるレイヤ-j(1001_j)の出力としての整数(第2の入力(in_jI8))も、RAM510_2からそれぞれ読み出された整数で良い。また、加算処理1003の出力としての整数(出力(out_kI8))は、RAM510_2に書き込まれ、レイヤ-k(1001_k)の処理においてRAM510_2から読み出されて良い。
図12は、図5のニューラルネットワーク処理装置で実行するニューラルネットワーク処理の構成の第3の例を示す図である。
図12の構成の特徴は、各レイヤ1201の処理にバイアス加算が含まれている点である。
図13は、図12のニューラルネットワーク処理の1つのレイヤを処理するソフトウェアの例を示す図である。
バイアス値補正(符号1301参照)のステップで、バイアス値(bF[co])に浮動小数点化の係数(qF)を加算している。これによって、浮動小数点化時の係数の加算とバイアス加算を1つの加算処理で行うことが可能となり、浮動小数点化とバイアス加算を別々に実行する場合に比べて処理時間が短縮される。具体的には、図13によれば、符号1302は、畳み込みを表し、符号1303は、FP化とバイアス加算を表し、符号1304は、活性化関数処理を表し、符号1305は、整数化処理を表す。1つのループ処理(1つのレイヤ)において、Hのループ(画像の縦方向の画素数分のループ)と、Wのループ(画像の横方向の画素数分のループ)と、COのループ(出力データの各画素の属性情報の種類数分のループ)とがあるが、それらのループの外で(開始前に)、バイアス値補正が行われる。このため、ループ内でのバイアス値補正が不要になり、全体としての処理負荷を削減することができる。
なお、例えば、実施例3と実施例2の組合せのニューラルネットワークが採用されても良い。すなわち、加算処理(加算レイヤ)以外のレイヤがバイアス加算を含んで良い。
前述の実施例では畳み込み処理と活性化関数処理を1つのループ処理(1つのレイヤ)で実行するため、畳み込み処理と活性化関数処理にそれぞれ複数のバリエーションがあると、両者のバリエーションの数の積に相当する数の処理を記述する必要があり、ソフトウェアの記述の作成や動作確認に膨大な時間がかかる可能性がある。
図14は、積和演算処理を行うソフトウェアのバリエーションと対応するパラメータの例を示す図である。
図14、図16及び図17において、「入力」は、入力形式を表し、「重み」は、重み形式を表し、「出力」は、出力形式を表し、「サイズ」は、重みサイズを表し、「CI」は、入力データの各画素の属性情報の種類数を表し、「CO」は出力データの各画素の属性情報の種類数を表す。
入力形式は、入力データの並び順を示すもので、CHWとHWCの2通りがある。CHWはまず属性情報の種類の軸でデータを並べ、次に属性情報の種類の軸の値が同じデータ同士で画像の縦方向の軸でデータを並べ、最後に属性情報の種類の軸と画像の縦方向の軸の値が同じデータ同士で画像の横方向の軸でデータを並べる。HWCはまず画像の縦方向の軸でデータを並べ、次に画像の縦方向の軸の値が同じデータ同士で画像の横方向の軸でデータを並べ、最後に画像の縦方向の軸と画像の横方法の軸の値が同じデータ同士で属性情報の種類の軸でデータを並べる。なお、図7、図11及び図13に示したソフトウェアは入力形式がHWCに対応したソフトウェアであり、入力形式がCHWの場合には使用できない。
重み形式は、重みデータの並べ順を示すもので、CHWとHWCの2通りがある。CHWとHWCの意味は入力形式と同様である。図7、図11及び図13に示したソフトウェアは重み形式がHWCに対応したソフトウェアであり、重み形式がCHWの場合には使用できない。
出力形式は、出力データの並べ順を示すもので、CHWとHWCの2通りがある。CHWとHWCの意味は入力形式と同様である。図7、図11及び図13に示したソフトウェアは出力形式がHWCに対応したソフトウェアであり、出力形式がCHWの場合には使用できない。
重みサイズは、出力データの各画素に影響を与える入力データの画素の範囲を示す。図7及び図13に示したソフトウェアでは、出力データの各画素は入力データのうちの縦方向と横方向の軸の値が同じ画素からのみ影響を受ける。これを図14では1x1と表記した。これ以外に、縦方向と横方向の軸の値が同じ画素に加えて上下1画素ずつ範囲を広げた3画素四方の入力データから影響を受ける計算方法もあり、これを図14では3x3と表記した。
CIは、上述したように、入力データの各画素の属性情報の種類数であり、図7の説明に記載した通り、レイヤ-1では3、それ以外では数十~数百の値を取りうる。ここでは、スペースの都合で3と32の2通りのみ記載した。
COは、上述したように、出力データの各画素の属性情報の種類数であり、図7の説明に記載した通り、数十~数百の値を取りうる。ここでは、スペースの都合で32の1通りのみ記載した。
図14でバリエーションの全てを尽くしているわけではないが、それでも32通りという多くのバリエーションが存在する。
図15は、活性化関数処理のバリエーションを示す図である。この図には、それぞれの活性化関数の名称を記載し、関数の計算式は省略した。図15でバリエーションの全てを尽くしているわけではないが、それでも10通りという多くのバリエーションが存在する。
図14と図15のバリエーションを掛け合わせると320通りとなる。すなわち、320通りの処理を記述することが必要となる。このため、ソフトウェアの記述の作成や動作確認に膨大な時間がかかると推定される。この課題に対応するため、アプリケーションに依存して必要な組み合わせのみ処理を記述する方法が考えられる。以下にその開発フローを説明する。
図16は、図6のニューラルネットワーク処理の各レイヤに対する畳み込み処理のパラメータと活性化関数処理の組み合わせの例を示す図である。複雑な認識処理を行う場合には、100以上のレイヤを実行する場合も多いが、ここではスペースの都合でレイヤ数が30の例を記載した。図16からわかる通り、パラメータの組が同一のレイヤが多数存在する。
図17は、図16のパラメータと活性化関数処理の組み合わせの中から重複を除いたものを選択した結果を示す図である。結果としてパラメータと活性化関数処理の組み合わせは3種類しか存在しないことが確認できるため、ソフトウェアは3通り記述すれば良いことがわかる。
GPUメーカがライブラリを作成することを想定すると、畳み込みと活性化関数処理のバリエーションのどれをユーザが使用するか不明のため、全てのバリエーションに対応する320通りの記述を作成する必要があると考えられる。この様な膨大な種類数のバリエーションがあい路(支障)となり、ライブラリの作成が困難となる可能性がある。一方、ユーザの立場からすれば、アプリケーションに依存して必要な組み合わせのみ処理を記述すれば良いため、図17に従ってソフトウェアを作成すればソフトウェアの記述作成に要する時間を短縮する(例えば大幅に短縮する)ことが可能である。
具体的には、例えば、開発フローは次の通りで良い。各レイヤについて、畳み込み処理のパラメータ(例えば、入力形式、重み形式、出力形式、サイズ、CI及びCO)と活性化関数のパラメータとを含んだパラメータセットがユーザから指定される。これにより、パラメータセットがリストされる。次に、指定されたパラメータセット(パラメータセットのリスト)の中から重複を除いたパラメータセットを選択することで、パラメータセットが集約される。集約されたパラメータセットを基にソフトウェアが記述される。このような開発フローにより、ソフトウェアの設計時間を短縮できる。なお、このソフトウェア設計は、ニューラルネットワーク処理装置により行われても良いし、ニューラルネットワーク処理装置とは別の装置(例えばパーソナルコンピュータ等の計算機)により行われて良い。
ソフトウェアの記述作成に要する時間を短縮する別の方法として、ニューラルネットワーク処理が使用される用途に着目する観点もある。一般にニューラルネットワーク処理は学習処理と推論処理という2種類の用途に用いられる。
学習処理は、ニューラルネットワーク処理の入力として既知のデータを入力し、ニューラルネットワーク処理の出力が期待される値に近付く様に重みデータの調整を行う。具体的には、例えば、既知の画像と、既知の画像の正解ラベルとを含んだ教師データセットを用いてニューラルネットワークの学習が行われる。
一方、推論処理は、ニューラルネットワーク処理の入力として未知のデータを入力してニューラルネットワーク処理の出力を認識結果として使用する。
学習処理は、通常は、計算リソースの豊富なサーバ(コア側の装置の一例)で行われる場合が多く、かつ、処理時間の制約は緩い。従って、処理時間短縮の必要性は比較的少ない。
一方、推論処理は、例えば、列車や自動車などに搭載される機器(エッジ側の装置の一例)で実行される場合など、計算リソースが限定されているケースがある。また、自動運転などの様に認識結果を機器の制御に使用する場合には、タイムリーに機器を制御できる様にするため、処理時間の制約が比較的厳しい。従って、処理時間短縮の必要性は比較的高い。
そこで、推論処理に使用するソフトウェアには、本発明に従い整数化処理により得られた整数を出力としてメモリに書き込むソフトウェアを適用して処理時間を短縮し、学習処理に使用するソフトウェアには、本発明を適用せずに設計されたソフトウェア(例えば、全ての処理を浮動小数点数で実行するソフトウェア)を使用することで、ニーズを満たしつつソフトウェアの記述作成に要する時間を短縮することができる。
以上、幾つかの実施例を説明したが、これらは本発明の説明のための例示であって、本発明の範囲をこれらの実施例にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実施することが可能である。例えば、以上の実施例を下記のように総括することができる。下記の総括は、少なくとも一つの実施例の補足説明を含んでも良いし、変形例の説明を含んでも良い。
第1の観点によれば、ニューラルネットワーク処理装置(例えば508)は、インタフェース装置(例えば複数のインタフェース回路503_1~503_5)と、メモリ(例えばRAM510_2)と、インタフェース装置及びメモリに接続されたプロセッサ(例えばGPU511)とを備え、インタフェース装置を介して入力されたデータ(例えばカメラ513からの画像データ)のニューラルネットワーク処理を行う。ニューラルネットワークにおける複数のレイヤの各々において、プロセッサは、当該レイヤに入力された整数と重みデータの間の積和演算を行う畳み込み処理を行い、畳み込み処理の出力としての整数を浮動小数点数に変換する浮動小数点化処理を行い、浮動小数点化処理の出力としての浮動小数点数を用いて所定の関数を計算する活性化関数処理を行い、活性化関数処理の出力としての浮動小数点数を整数に変換する整数化処理を行い、整数化処理により得られた整数をメモリに書き込む書込み処理を行う。これにより、メモリに格納されるデータが整数となりデータ量が削減される。つまり、演算器(例えばGPU511)と演算器の外部に接続されたメモリ(例えばRAM510_2)との間のデータ転送量を削減することができる。このため、ニューラルネットワーク処理装置の処理時間を削減することができる。
なお、「所定の関数」は、所定の活性化関数、具体的には、浮動小数点数が用いられる活性化関数(整数を用いた処理が不可の活性化関数)で良い。
また、浮動小数点数のデータサイズと整数のデータサイズは、ニューラルネットワーク処理のためのソフトウェアを実行するGPUといったハードウェアに依存するが、一般に、ニューラルネットワーク処理のためのソフトウェアを実行するハードウェアは、精度と処理速度の両立のために(例えば、目的とする精度で高速な処理を実現するために)、浮動小数点数のデータサイズよりデータサイズの方が小さい整数をサポートしている場合が多い。例えば、浮動小数点数が16ビット又は32ビットである場合、8ビットの整数をサポートしている場合が多い。浮動小数点数のデータサイズが8ビットとされる場合には、データサイズが4ビットの整数をサポートしている場合が多い。このようなハードウェアの特徴に鑑みたニューラルネットワーク処理のためのソフトウェアがニューラルネットワーク処理装置で実行される。
また、ニューラルネットワークにおける「複数のレイヤ」は、ニューラルネットワークを構成する全てのレイヤでも良いし一部のレイヤでも良い。例えば、先頭のレイヤについては、メモリからの読み出されるデータとしての整数は、ニューラルネットワークの入力データに対して整数化処理が実施されることにより得られてメモリに格納された整数でも良い。また、「複数のレイヤ」の各々について、当該レイヤに入力された整数は、前の処理において書き込まれ、当該レイヤの処理においてメモリから読み出された整数で良い。この「前の処理」は、前のレイヤ(例えば1つ前のレイヤ)の処理でも良いし、上述した加算処理でも良い。
第2の観点によれば、第1の観点において、「複数のレイヤ」の各々について、当該レイヤでの処理結果としてメモリに格納される整数は、処理結果のログとしてメモリに蓄積されて良い。メモリにレイヤ毎の整数が記録されていることから、本発明に係るニューラルネットワーク処理の実施が推定される。
第3の観点によれば、第1又は第2の観点において、ニューラルネットワークは、「複数のレイヤ」(複数の畳み込みレイヤ)の他に、一つ以上の加算レイヤを含んで良い。一つ以上の加算レイヤの各々は、複数の畳み込みレイヤのうちの一部のレイヤの出力を加算して複数の畳み込みレイヤのうちの1つに出力する処理のレイヤである。一つ以上の加算レイヤの各々において、プロセッサは、当該加算レイヤに入力された複数の整数をそれぞれ浮動小数点数に変換し、複数の浮動小数点数の加算を行った後、加算結果としての浮動小数点数を整数に変換し、変換された整数をメモリに書き込んで良い。これにより、加算レイヤの処理の出力が、整数の最小値を下回る又は整数の最大値を超えるといったことが生じないようにすることができる。
第4の観点によれば、第1乃至第3の観点のうちのいずれかの観点において、「複数のレイヤ」(複数の畳み込みレイヤ)の各々において、プロセッサは、浮動小数点化処理の出力にバイアス値を加算するバイアス加算処理を行うようになっており、活性化関数処理における所定の関数は、バイアス加算処理の出力から計算される関数で良く、プロセッサは、浮動小数点化処理に含まれる加算処理とバイアス加算処理を同時に行って良い。これにより、各レイヤについて、レイヤ全体しての処理負荷を削減することができる。
第5の観点によれば、第4の観点において、具体的には、複数のレイヤの各々において、当該レイヤは、ループ処理を含んで良く、当該ループ処理は、畳み込み処理、浮動小数点化処理、活性化関数処理、及び、整数化処理を含んで良く、プロセッサは、当該ループ処理の開始前に、バイアス値に浮動小数点化の係数を加算するバイアス値補正を行うことで、当該ループ処理において、浮動小数点化処理に含まれる加算処理とバイアス加算処理を同時に行って良い。
第6の観点によれば、第1乃至第5の観点のうちのいずれかの観点において、ニューラルネットワーク処理のソフトウェアは、複数のレイヤについての畳み込み処理のパラメータと活性化関数処理のパラメータとを含んだパラメータセットのリストの中から重複を除いたパラメータセットに基づき記述された第1のソフトウェアで良い。これにより、ソフトウェアの記述作成に要する時間を短縮することができる。
第7の観点によれば、第1乃至第6の観点のうちのいずれかの観点において、また、ニューラルネットワークに既知のデータを入力しニューラルネットワークの出力が期待される値に近付く様に重みデータ(ニューラルネットワークにおける各重み)の調整を行う学習処理と、ニューラルネットワークに未知のデータを入力しニューラルネットワークの出力を認識結果として使用する推論処理とのうち、推論処理のソフトウェアが、第1のソフトウェアで良い。推論処理が実行される装置は、一般に、いわゆるエッジ装置(エッジ側の装置)であり、故に、コア装置(コア側の装置)に比べて計算リソースが少ないが、そのような計算リソースでも推論処理としてのニューラルネットワーク処理を行うことができるソフトウェアを短時間で作成することができる。
なお、実施例4及び実施例5の説明や、上述の第1のソフトウェアに鑑みて、例えば、以下に表現するソフトウェア作成方法がある。以下のソフトウェア作成方法はコンピュータにより実行される。
<表現1>
入力データと重みデータの間の積和演算を行う畳み込み処理と前記畳み込み処理の結果から予め定められた関数を計算する活性化関数処理を含むレイヤ処理を複数組み合わせたニューラルネットワーク処理のソフトウェア作成方法において、
前記複数のレイヤ処理の畳み込み処理と活性化関数処理のパラメータをリストするステップと、
前記パラメータのリストの中から重複を除いたパラメータの組を選択するステップと、
前記パラメータの組に対応するレイヤ処理に対して、前記畳み込み処理を整数で実行し、前記活性化関数処理を浮動小数点数で実行し、前記活性化関数処理の処理結果を整数化してメモリに書き込む様にソフトウェアを記述するステップと、
を有することを特徴とするニューラルネットワーク処理のソフトウェア作成方法。
<表現2>
入力データと重みデータの間の積和演算を行う畳み込み処理と前記畳み込み処理の結果から予め定められた関数を計算する活性化関数処理を含むレイヤ処理を複数組み合わせたニューラルネットワーク処理のソフトウェア作成方法において、
前記ニューラルネットワーク処理に既知のデータを入力し、前記ニューラルネットワーク処理の出力が期待される値に近付く様に前記重みデータの調整を行う学習処理のソフトウェアは前記畳み込み処理を浮動小数点数で実行する様に記述し、
前記ニューラルネットワーク処理に未知のデータを入力し、前記ニューラルネットワーク処理の出力を認識結果として使用する推論処理のソフトウェアは、前記畳み込み処理を整数で実行し、前記活性化関数処理を浮動小数点数で実行し、前記活性化関数処理の処理結果を整数化してメモリに書き込む様にソフトウェアを記述すること、
を特徴とするニューラルネットワーク処理のソフトウェア作成方法。
<表現1>
入力データと重みデータの間の積和演算を行う畳み込み処理と前記畳み込み処理の結果から予め定められた関数を計算する活性化関数処理を含むレイヤ処理を複数組み合わせたニューラルネットワーク処理のソフトウェア作成方法において、
前記複数のレイヤ処理の畳み込み処理と活性化関数処理のパラメータをリストするステップと、
前記パラメータのリストの中から重複を除いたパラメータの組を選択するステップと、
前記パラメータの組に対応するレイヤ処理に対して、前記畳み込み処理を整数で実行し、前記活性化関数処理を浮動小数点数で実行し、前記活性化関数処理の処理結果を整数化してメモリに書き込む様にソフトウェアを記述するステップと、
を有することを特徴とするニューラルネットワーク処理のソフトウェア作成方法。
<表現2>
入力データと重みデータの間の積和演算を行う畳み込み処理と前記畳み込み処理の結果から予め定められた関数を計算する活性化関数処理を含むレイヤ処理を複数組み合わせたニューラルネットワーク処理のソフトウェア作成方法において、
前記ニューラルネットワーク処理に既知のデータを入力し、前記ニューラルネットワーク処理の出力が期待される値に近付く様に前記重みデータの調整を行う学習処理のソフトウェアは前記畳み込み処理を浮動小数点数で実行する様に記述し、
前記ニューラルネットワーク処理に未知のデータを入力し、前記ニューラルネットワーク処理の出力を認識結果として使用する推論処理のソフトウェアは、前記畳み込み処理を整数で実行し、前記活性化関数処理を浮動小数点数で実行し、前記活性化関数処理の処理結果を整数化してメモリに書き込む様にソフトウェアを記述すること、
を特徴とするニューラルネットワーク処理のソフトウェア作成方法。
502 CPU
511 GPU
508 ニューラルネットワーク処理装置
509 ROM
510 RAM
511 GPU
508 ニューラルネットワーク処理装置
509 ROM
510 RAM
Claims (8)
- インタフェース装置と、メモリと、前記インタフェース装置及び前記メモリに接続されたプロセッサとを備え、前記インタフェース装置を介して入力されたデータのニューラルネットワーク処理のソフトウェアを前記プロセッサが実行することで前記ニューラルネットワーク処理を行うニューラルネットワーク処理装置において、
前記ニューラルネットワーク処理は、ニューラルネットワークにおける複数のレイヤの各々において、
当該レイヤに入力された整数と重みデータの間の積和演算を行う畳み込み処理と、
前記畳み込み処理の出力としての整数を浮動小数点数に変換する浮動小数点化処理と、
前記浮動小数点化処理の出力としての浮動小数点数を用いて所定の関数を計算する活性化関数処理と、
前記活性化関数処理の出力としての浮動小数点数を整数に変換する整数化処理と、
前記整数化処理により得られた整数をメモリに書き込む書込み処理と
を含む、
ことを特徴とするニューラルネットワーク処理装置。 - 前記複数のレイヤの各々について、当該レイヤでの処理結果として前記メモリに格納される整数は、処理結果のログとして前記メモリに蓄積される、
ことを特徴とする請求項1に記載のニューラルネットワーク処理装置。 - 前記ニューラルネットワークは、前記複数のレイヤである複数の畳み込みレイヤの他に、一つ以上の加算レイヤを含み、
前記一つ以上の加算レイヤの各々は、前記複数の畳み込みレイヤのうちの一部のレイヤの出力を加算して前記複数の畳み込みレイヤのうちの1つに出力する処理のレイヤであり、
前記ニューラルネットワーク処理は、前記一つ以上の加算レイヤの各々において、
当該加算レイヤに入力された複数の整数をそれぞれ浮動小数点数に変換し、複数の浮動小数点数の加算を行った後、加算結果としての浮動小数点数を整数に変換し、変換された整数を前記メモリに書き込むこと、
を含む、
ことを特徴とする請求項1に記載のニューラルネットワーク処理装置。 - 前記複数のレイヤの各々において、
前記ニューラルネットワーク処理は、前記浮動小数点化処理の出力にバイアス値を加算するバイアス加算処理を含み、
前記活性化関数処理における前記所定の関数は、前記バイアス加算処理の出力から計算される関数であり、
前記ニューラルネットワーク処理は、前記浮動小数点化処理に含まれる加算処理と前記バイアス加算処理を同時に行うことを含む、
ことを特徴とする請求項1に記載のニューラルネットワーク処理装置。 - 前記複数のレイヤの各々において、
当該レイヤは、ループ処理を含み、
当該ループ処理は、前記畳み込み処理、前記浮動小数点化処理、前記活性化関数処理、及び、前記整数化処理を含み、
前記ニューラルネットワーク処理は、当該ループ処理の開始前に、バイアス値に浮動小数点化の係数を加算するバイアス値補正を行うことで、当該ループ処理において、前記浮動小数点化処理に含まれる加算処理と前記バイアス加算処理を同時に行うことを含む、
ことを特徴とする請求項4に記載のニューラルネットワーク処理装置。 - 前記ソフトウェアは、前記複数のレイヤについての前記畳み込み処理のパラメータと前記活性化関数処理のパラメータとを含んだパラメータセットのリストの中から重複を除いたパラメータセットに基づき記述された第1のソフトウェアである、
ことを特徴とする請求項1に記載のニューラルネットワーク処理装置。 - 前記ニューラルネットワークの学習処理と前記ニューラルネットワークの推論処理とのうち、前記推論処理のソフトウェアが、前記第1のソフトウェアである、
ことを特徴とする請求項6に記載のニューラルネットワーク処理装置。 - ニューラルネットワークにおける複数のレイヤの各々において、
当該レイヤに入力された整数と重みデータの間の積和演算を行う畳み込み処理と、
前記畳み込み処理の出力としての整数を浮動小数点数に変換する浮動小数点化処理と、
前記浮動小数点化処理の出力としての浮動小数点数を用いて所定の関数を計算する活性化関数処理と、
前記活性化関数処理の出力としての浮動小数点数を整数に変換する整数化処理と、
前記整数化処理により得られた整数をメモリに書き込む書込み処理と
をコンピュータにより行うことを特徴とするニューラルネットワーク処理方法。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2024078400A JP2025173060A (ja) | 2024-05-14 | 2024-05-14 | ニューラルネットワーク処理装置及びニューラルネットワーク処理方法 |
| JP2024-078400 | 2024-05-14 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| WO2025239128A1 true WO2025239128A1 (ja) | 2025-11-20 |
Family
ID=97720049
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| PCT/JP2025/015227 Pending WO2025239128A1 (ja) | 2024-05-14 | 2025-04-18 | ニューラルネットワーク処理装置及びニューラルネットワーク処理方法 |
Country Status (2)
| Country | Link |
|---|---|
| JP (1) | JP2025173060A (ja) |
| WO (1) | WO2025239128A1 (ja) |
Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US11423313B1 (en) * | 2018-12-12 | 2022-08-23 | Amazon Technologies, Inc. | Configurable function approximation based on switching mapping table content |
| WO2023204041A1 (ja) * | 2022-04-21 | 2023-10-26 | 株式会社日立製作所 | 情報処理装置、情報処理方法、情報処理プログラム、ソフトウェア作成装置、ソフトウェア作成方法、及びソフトウェア作成プログラム |
-
2024
- 2024-05-14 JP JP2024078400A patent/JP2025173060A/ja active Pending
-
2025
- 2025-04-18 WO PCT/JP2025/015227 patent/WO2025239128A1/ja active Pending
Patent Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US11423313B1 (en) * | 2018-12-12 | 2022-08-23 | Amazon Technologies, Inc. | Configurable function approximation based on switching mapping table content |
| WO2023204041A1 (ja) * | 2022-04-21 | 2023-10-26 | 株式会社日立製作所 | 情報処理装置、情報処理方法、情報処理プログラム、ソフトウェア作成装置、ソフトウェア作成方法、及びソフトウェア作成プログラム |
Also Published As
| Publication number | Publication date |
|---|---|
| JP2025173060A (ja) | 2025-11-27 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN112862681B (zh) | 一种超分辨率方法、装置、终端设备及存储介质 | |
| US11409986B2 (en) | Trainable vision scaler | |
| US11157764B2 (en) | Semantic image segmentation using gated dense pyramid blocks | |
| CN113989169B (zh) | 一种膨胀卷积加速计算方法及装置 | |
| US11704894B2 (en) | Semantic image segmentation using gated dense pyramid blocks | |
| CN114730331B (zh) | 数据处理装置和数据处理方法 | |
| EP4428760A1 (en) | Neural network adjustment method and corresponding apparatus | |
| CN115280326A (zh) | 用于改进基于卷积神经网络的机器学习模型的系统和方法 | |
| CN110738317A (zh) | 基于fpga的可变形卷积网络运算方法、装置和系统 | |
| US20250148791A1 (en) | Image processing method, apparatus, electronic device and storage medium | |
| CN113869225A (zh) | 一种人脸检测方法、装置及电子设备 | |
| US11741349B2 (en) | Performing matrix-vector multiply operations for neural networks on electronic devices | |
| CN108932715A (zh) | 一种基于深度学习的冠状动脉造影图分割的优化方法 | |
| US20240095522A1 (en) | Neural network generation device, neural network computing device, edge device, neural network control method, and software generation program | |
| CN110597678A (zh) | 一种调试方法及调试单元 | |
| JP2025173060A (ja) | ニューラルネットワーク処理装置及びニューラルネットワーク処理方法 | |
| EP4513382A1 (en) | Information processing device, information processing method, information processing program, software creation device, software creation method, and software creation program | |
| CN117935365B (zh) | 一种司机手势识别方法、装置、计算机设备和储存介质 | |
| CN115147283B (zh) | 一种图像重建方法、装置、设备及介质 | |
| CN115631115B (zh) | 基于递归Transformer的动态图像复原方法 | |
| CN118823430A (zh) | 一种轻量化图像分类方法 | |
| Jose et al. | FPGA Implementation of CNN Accelerator with Pruning for ADAS Applications | |
| US20200394505A1 (en) | Data processing apparatus and control method | |
| CN119360046B (zh) | 一种模型生成方法及电子设备 | |
| JP2021157468A (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: 25803379 Country of ref document: EP Kind code of ref document: A1 |