WO2022201352A1 - 推論装置、推論方法、及び、推論プログラム - Google Patents
推論装置、推論方法、及び、推論プログラム Download PDFInfo
- Publication number
- WO2022201352A1 WO2022201352A1 PCT/JP2021/012193 JP2021012193W WO2022201352A1 WO 2022201352 A1 WO2022201352 A1 WO 2022201352A1 JP 2021012193 W JP2021012193 W JP 2021012193W WO 2022201352 A1 WO2022201352 A1 WO 2022201352A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- quantization
- inference
- feature data
- data
- quantized
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 71
- 238000013139 quantization Methods 0.000 claims abstract description 157
- 238000013075 data extraction Methods 0.000 claims abstract description 22
- 238000010801 machine learning Methods 0.000 claims abstract description 13
- 238000012545 processing Methods 0.000 claims description 26
- 238000013135 deep learning Methods 0.000 claims description 5
- 238000004364 calculation method Methods 0.000 abstract description 13
- 239000000284 extract Substances 0.000 abstract description 8
- 230000008569 process Effects 0.000 description 46
- 238000004422 calculation algorithm Methods 0.000 description 34
- 230000004048 modification Effects 0.000 description 10
- 238000012986 modification Methods 0.000 description 10
- 238000004891 communication Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 6
- 238000013528 artificial neural network Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 239000000470 constituent Substances 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000012549 training Methods 0.000 description 2
- 239000002131 composite material Substances 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000007619 statistical method Methods 0.000 description 1
- 239000013585 weight reducing agent Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
Definitions
- the present disclosure relates to an inference device, an inference method, and an inference program.
- Patent Literature 1 discloses a technique of estimating data distribution using a statistical method in order to perform quantization for speeding up inference with relatively high accuracy.
- the reasoning device is a quantization inference unit that uses the inference data to perform at least one quantization operation based on machine learning techniques; a non-quantization inference unit that performs at least one of at least one non-quantization operation corresponding to each of the at least one quantization operation using the inference data, the inference device comprising: each of the at least one quantization operation is an operation corresponding to each of at least one quantization feature data indicating a feature of each of the at least one quantization operation; each of the at least one unquantized operation is an operation corresponding to each of at least one piece of unquantized feature data representing a feature of each of the at least one unquantized operation; The reasoning device further When overflow occurs in at least one of the at least one quantization operations, quantization feature data corresponding to each of the quantization operations in which overflow has occurred, and quantization feature data corresponding to each of the quantization operations in which overflow has occurred.
- a feature data extraction unit for extracting non-quantized feature data corresponding to the non-quantized operation
- the feature data extraction unit extracts quantized feature data and non-quantized feature data related to the overflow.
- each of the quantized feature data and the non-quantized feature data is data different from the inference data. Therefore, according to the present disclosure, when an overflow occurs when inference is executed using certain inference data, data for analyzing the overflow that has occurred and is different from the inference data can be obtained.
- FIG. 1 is a diagram showing a configuration example of an inference apparatus 100 according to Embodiment 1;
- FIG. 4 is a diagram for explaining the priority of processes according to the first embodiment;
- FIG. 2 is a diagram showing a hardware configuration example of the inference apparatus 100 according to Embodiment 1;
- FIG. 4 is a flowchart showing the operation of the inference device 100 according to Embodiment 1;
- 4A and 4B are diagrams for explaining the operation of the inference apparatus 100 according to the first embodiment;
- FIG. FIG. 10 is a diagram showing a hardware configuration example of an inference device 100 according to a modification of Embodiment 1;
- FIG. 10 is a diagram showing a hardware configuration example of an inference device 100 according to a modification of Embodiment 1;
- FIG. 10 is a diagram showing a configuration example of an inference apparatus 100 according to Embodiment 2;
- 8 is a flowchart showing the operation of the inference device 100 according to Embodiment 2;
- FIG. 1 shows a configuration example of an inference device 100 according to this embodiment.
- the inference device 100 includes a quantized inference unit 110, a non-quantized inference unit 120, and a data extraction unit 130, as shown in the figure.
- Reasoning apparatus 100 is typically part of an embedded system.
- the inference apparatus 100 may include an inference process management unit, and the inference process management unit may control the quantization inference unit 110 and the non-quantization inference unit 120 .
- the quantization inference unit 110 performs a quantization inference process, ie, performs at least one quantization operation based on machine learning techniques.
- Each of the at least one quantization operation is an operation corresponding to each of at least one piece of quantized feature data.
- Each of the at least one quantization feature data indicates a feature of each of the at least one quantization operation, and may include parameters corresponding to each of the at least one quantization operation.
- the quantization inference unit 110 uses inference data. Inference data is data that is input to a trained model when performing inference.
- a quantized inference process is also called a quantized inference process.
- a quantization algorithm is executed in the quantization inference process. Quantized algorithms are also called quantized inference algorithms.
- the quantization inference unit 110 records information about the overflow or the like when an overflow or the like occurs in the quantization inference process.
- the unquantized inference unit 120 performs an unquantized inference process, ie, performs at least one unquantized operation corresponding to each at least one quantized operation and/or. At least one quantization operation and at least one non-quantization operation are operations based on the same machine learning method. When the machine learning method is a neural network, each quantization operation and each non-quantization operation are operations of each layer of the neural network. Each of the at least one unquantized operation is an operation corresponding to each of at least one unquantized feature data. Each of the at least one unquantized feature data indicates characteristics of each of the at least one unquantized operation and may include parameters corresponding to each of the at least one unquantized operation.
- the non-quantization inference unit 120 uses inference data and saved data, which will be described later.
- An unquantized inference process is also called an unquantized inference process.
- An unquantized algorithm is executed in the unquantized inference process.
- Non-quantized algorithms are also called non-quantized inference algorithms.
- a non-quantized algorithm is an algorithm obtained as a result of executing learning using data for learning. Quantized and non-quantized algorithms are basically the same.
- the quantization algorithm is a non-quantization algorithm modified appropriately to accommodate quantization. Quantization typically replaces floating point operations with fixed point or integer operations. Also, each of the quantized algorithm and the non-quantized algorithm may be generated by the inference device 100 or by another device. Also, the non-quantization inference unit 120 executes operations according to input data and the like used when an overflow occurs in the quantization inference process.
- the data extraction unit 130 extracts saved data from the quantization inference process and the non-quantization inference process when an overflow occurs in the quantization inference process.
- the saved data is data used when analyzing overflow in the quantization inference process, and as a specific example, consists of input data and feature data.
- Input data is data that is input in performing each of the at least one quantized operation and each of the at least one unquantized operation.
- Feature data is data utilized in the quantization operation.
- Feature data is a general term for quantized feature data and non-quantized feature data, and exists for each of at least one quantized operation and at least one non-quantized operation.
- the data extracting unit 130 extracts quantization feature data corresponding to each of the quantization operations in which the overflow occurs, and the quantization operation in which the overflow occurs. and unquantized feature data corresponding to the unquantized operations corresponding to each of .
- the feature data extraction unit 130 may extract, as the quantized feature data, data indicating parameters for the layer corresponding to the quantization operation in which the overflow occurred. Data indicating parameters for a layer corresponding to a non-quantization operation corresponding to a quantization operation in which an overflow has occurred may be extracted as the quantization feature data.
- FIG. 2 shows the priority of each process executed by the inference device 100.
- the priority of quantized inference processes is higher than the priority of non-quantized inference processes.
- the parentheses surrounding the notation "other process" indicate that the other process may or may not exist.
- FIG. 3 shows a hardware configuration example of the inference device 100 according to this embodiment.
- the inference device 100 consists of a computer.
- the reasoning apparatus 100 may consist of multiple computers.
- the inference device 100 is a computer equipped with hardware such as a processor 11, a memory 12, an auxiliary storage device 13, an input/output IF (Interface) 14, and a communication device 15, as shown in the figure. These pieces of hardware are appropriately connected via signal lines 19 .
- the processor 11 is an IC (Integrated Circuit) that performs arithmetic processing and controls hardware included in the computer.
- the processor 11 is, for example, a CPU (Central Processing Unit), a DSP (Digital Signal Processor), or a GPU (Graphics Processing Unit).
- the inference apparatus 100 may include multiple processors in place of the processor 11 . A plurality of processors share the role of processor 11 .
- the memory 12 is typically a volatile storage device. Memory 12 is also referred to as main storage or main memory.
- the memory 12 is, as a specific example, a RAM (Random Access Memory).
- the data stored in the memory 12 is saved in the auxiliary storage device 13 as required.
- Auxiliary storage device 13 is typically a non-volatile storage device.
- the auxiliary storage device 13 is, for example, a ROM (Read Only Memory), an HDD (Hard Disk Drive), or a flash memory.
- the data stored in the auxiliary storage device 13 are loaded into the memory 12 as required.
- the memory 12 and the auxiliary storage device 13 may be constructed integrally.
- the input/output IF 14 is a port to which an input device and an output device are connected.
- the input/output IF 14 is, as a specific example, a USB (Universal Serial Bus) terminal.
- Input devices are, as specific examples, a camera, a keyboard and a mouse.
- a specific example of the output device is a display.
- the communication device 15 is a receiver and a transmitter.
- the communication device 15 is, as a specific example, a communication chip or a NIC (Network Interface Card).
- Each unit of the inference device 100 may appropriately use the communication device 15 when communicating with other devices.
- Each part of the inference device 100 may receive data via the input/output IF 14 or may receive data via the communication device 15 .
- the auxiliary storage device 13 stores an inference program.
- the inference program is a program that causes a computer to implement the functions of the units included in the inference apparatus 100 .
- the inference program is loaded into memory 12 and executed by processor 11 .
- the function of each unit included in the inference apparatus 100 is realized by software.
- the auxiliary storage device 13 also stores an OS (Operating System). At least part of the OS is loaded into memory 12 and executed by processor 11 . That is, the processor 11 executes the inference program while executing the OS.
- OS Operating System
- the storage device comprises at least one of memory 12 , auxiliary storage device 13 , registers within processor 11 , and cache memory within processor 11 , as a specific example. Note that data and information may have the same meaning.
- the storage device may be independent of the computer.
- the functions of the memory 12 and auxiliary storage device 13 may be realized by another storage device.
- the inference program may be recorded on a computer-readable non-volatile recording medium.
- a nonvolatile recording medium is, for example, an optical disk or a flash memory.
- the reasoning program may be provided as a program product.
- An operation procedure of the inference device 100 corresponds to an inference method.
- a program that implements the operation of the inference apparatus 100 corresponds to an inference program.
- FIG. 4 is a flowchart showing an example of the operation of the inference device 100.
- FIG. FIG. 5 is a diagram schematically explaining an example of the operation of the inference device 100. As shown in FIG. In FIG. 5, parallelograms represent data used in calculations, excluding output data. The operation of the inference device 100 will be described with reference to FIGS. 4 and 5.
- Step S101 A quantization inference process of the quantization inference unit 110 is activated.
- Step S102 If there is an instruction to start inference, the inference apparatus 100 proceeds to step S103. Otherwise, the inference apparatus 100 executes the process of this step again.
- the quantization inference unit 110 starts inference processing using inference data.
- the inference data may be data received by the inference apparatus 100 along with an instruction to start inference.
- Step S104 The quantization inference unit 110 performs layer operations on the target layer.
- the layer is a layer in deep learning, and when the layer operation is performed for the first time in the loop processing from step S104 to step S106, the top layer is the target layer, and in other cases, the layer that was performed one time before The layer next to the target layer in the calculation is set as the target layer.
- the calculation in FIG. 5 corresponds to the layer calculation.
- quantization inference section 110 executes a layer operation using the data indicated on the left side of the thick arrow indicated immediately below the operation as input data, and outputs the data indicated on the right side of the arrow. .
- Step S105 The quantization inference unit 110 confirms whether an overflow has occurred in the process of step S104. Specific examples of methods for confirming whether an overflow has occurred include a method of referring to CPU flags, a method of confirming variables related to computation before and after computation, or a method of confirming by an original circuit such as an FPGA. The method. If overflow occurs, the inference apparatus 100 proceeds to step S109. Otherwise, the inference apparatus 100 proceeds to step S106.
- Step S106 If all layer operations have been completed, the inference apparatus 100 proceeds to step S107. Otherwise, the inference apparatus 100 proceeds to step S104.
- Step S107 The quantization inference unit 110 appropriately notifies the person who instructed the inference of the inference result.
- Step S108 If an overflow occurs in at least one layer operation, the reasoning apparatus 100 proceeds to step S111. Otherwise, the inference apparatus 100 returns to step S102.
- Step S109 The data extraction unit 130 saves saved data corresponding to the target layer.
- the data extraction unit 130 extracts data about the target layer and saves the extracted data as save data.
- Data about the target layer is, as a specific example, input data for the target layer, variable data in the target layer, and feature data in the target layer.
- the data extracting unit 130 does not extract the input data as saved data because the input data is inference data.
- the data extraction unit 130 may save the inference data.
- the inference data is data input to the first layer.
- the data extracting unit 130 saves, as saved data corresponding to the target layer, data for the target layer in which overflow has occurred and data for the layer immediately preceding the target layer.
- the data saved by the data extraction unit 130 may be only the data about the target layer, or the data about each layer from the target layer to the layer n (n is a natural number) before the target layer. may
- Step S110 The quantization inference unit 110 performs a saturation operation, and then proceeds to step S106.
- Step S111 A non-quantized inference process of the non-quantized inference unit 120 is activated. Thereafter, the inference apparatus 100 executes the processing from step S102 onward and the processing from step S121 onward in parallel.
- Step S121 A non-quantized inference unit 120 performs a non-quantized inference process using inference data.
- the non-quantization inference unit 120 outputs output data by executing the non-quantization inference process to the end. It suffices to perform the layer operations up to the layer corresponding to the layer that was selected.
- Step S122 The data extraction unit 130 extracts, as saved data, data about the layer corresponding to the layer in which the overflow occurred.
- data extraction section 130 saves data for the same layer as the layer corresponding to the data saved in the quantization inference process.
- the data extraction unit 130 saves, as saved data, data for layers of non-quantization inference processes corresponding to the layer corresponding to the layer in which the overflow occurred and the layer immediately preceding the layer in which the overflow occurred.
- the data in the quantized inference process and the data in the non-quantized inference process saved by the data extraction unit 130 may be output to the outside of the inference apparatus 100 .
- Engineers may obtain the output data, reset the parameters of the quantization inference process based on the obtained data, and change the parameters of the quantization inference process in the source code based on the obtained data. You may
- Step S123 The unquantized inference process of the unquantized inference unit 120 is terminated.
- the data for inference is confidential information
- the data for inference is not extracted, and only the data related to the calculation in which the overflow occurs is extracted.
- the data related to the operation in which the overflow occurred is data from which confidentiality has been removed from the inference data. Therefore, according to this embodiment, it is possible to analyze an overflow occurring in a quantization operation while maintaining confidentiality while maintaining accuracy in an inference environment. Therefore, according to the present embodiment, it is possible to obtain the data necessary for improving the trained model to cope with the overflow that has occurred. Further, according to the present embodiment, it is possible to adjust parameters and the like in machine learning involving quantization based on actual inference data as well as learning data and the like.
- the quantization inference unit 110 may abort the inference when an overflow occurs. As a specific example, the quantization inference unit 110 does not execute operations subsequent to the operation in which the overflow occurs when an overflow occurs in at least one of the quantization operations.
- FIG. 6 shows a hardware configuration example of the inference device 100 according to this modification.
- the inference apparatus 100 according to this modification includes an offload device 16 as shown in the figure.
- the quantization inference process may be performed by offload device 16 .
- Offload device 16 is, for example, a GPU or FPGA.
- the unquantized inference process may be running on processor 11 , with appropriate communication between processor 11 and offload device 16 .
- FIG. 7 shows a hardware configuration example of the inference device 100 according to this modification.
- the inference apparatus 100 includes a processing circuit 18 in place of the processor 11 , the processor 11 and memory 12 , the processor 11 and auxiliary storage device 13 , or the processor 11 , memory 12 and auxiliary storage device 13 .
- the processing circuit 18 is hardware that implements at least part of each unit included in the inference apparatus 100 .
- Processing circuitry 18 may be dedicated hardware or may be a processor that executes programs stored in memory 12 .
- processing circuitry 18 When processing circuitry 18 is dedicated hardware, processing circuitry 18 may be, for example, a single circuit, a composite circuit, a programmed processor, a parallel programmed processor, an ASIC (ASIC is an Application Specific Integrated Circuit), an FPGA. (Field Programmable Gate Array) or a combination thereof.
- the reasoning apparatus 100 may include multiple processing circuits that substitute for the processing circuit 18 . A plurality of processing circuits share the role of processing circuit 18 .
- the inference device 100 some functions may be implemented by dedicated hardware, and the remaining functions may be implemented by software or firmware.
- the processing circuit 18 is implemented by hardware, software, firmware, or a combination thereof, as a specific example.
- the processor 11, memory 12, auxiliary storage device 13, and processing circuitry 18 are collectively referred to as "processing circuitry.”
- processing circuitry the function of each functional component of the inference device 100 is implemented by the processing circuitry.
- An inference apparatus 100 according to another embodiment may also have a configuration similar to that of this modified example.
- FIG. 8 shows a configuration example of the inference device 100 according to this embodiment.
- the inference apparatus 100 includes a requantization section 140 as shown in the figure.
- the requantization section 140 generates a requantization algorithm by changing the quantization algorithm based on the data extracted by the data extraction section 130 .
- the requantization algorithm is the quantization algorithm changed by the requantization unit 140 .
- the re-quantization unit 140 manages the timing of executing re-quantization.
- Requantization is changing a requantization algorithm, and may include replacing a quantization algorithm with a requantization algorithm.
- the re-quantization unit 140 Based on the quantized feature data and non-quantized feature data extracted by the data extraction unit 130, the re-quantization unit 140 detects an overflow in the target operation, which is the quantization operation corresponding to the extracted quantized feature data. Change the quantized feature data corresponding to the target operation so that this does not occur.
- Quantization inference section 110 according to the present embodiment appropriately uses the requantization algorithm generated by requantization section 140, and executes a quantization operation according to the changed quantized feature data. The quantization inference unit 110 also manages the timing of switching between the re-quantization algorithm and the quantization algorithm in operation.
- FIG. 9 is a flow chart showing an example of the operation of the inference apparatus 100. As shown in FIG. Differences between the operation of the inference apparatus 100 according to the first embodiment and the operation of the inference apparatus 100 according to the present embodiment will be mainly described with reference to this figure.
- Step S102 The inference apparatus 100 proceeds to step S201 instead of executing the process of this step again.
- Step S108 The inference apparatus 100 proceeds to step S201 instead of returning to step S102.
- Step S201 If the requantization algorithm has not been prepared by the requantization unit 140, the quantization inference unit 110 proceeds to step S102. Otherwise, the quantization inference unit 110 proceeds to step S202.
- Step S202 The quantization inference unit 110 replaces the quantization algorithm in the quantization inference process with the requantization algorithm prepared by the requantization unit 140 .
- the requantization unit 140 generates a requantization algorithm by performing requantization using the saved data.
- Requantization is the adjustment of the quantization algorithm so that overflow does not occur in the layer where overflow occurred.
- the re-quantization unit 140 changes the feature data in the layer where the overflow occurs. Note that when overflow occurs in a plurality of layers, re-quantization section 140 may adjust only the feature data corresponding to the layer that is processed earliest, and for all layers in which overflow occurs, The feature data to be used may be adjusted collectively.
- Step S222 The requantization unit 140 stores the requantization algorithm generated in step S221.
- the process of changing the quantization algorithm can be automatically executed so as not to cause overflow.
- the timing at which the quantization inference unit 110 replaces the quantization algorithm in the quantization inference process with the quantization algorithm prepared by the re-quantization unit 140 may be when the embedded system including the inference apparatus 100 is restarted.
- the quantization inference unit 110 replaces the quantization algorithm by an operation reservation method so as to switch the quantization algorithm when it is determined that there is no influence on the next inference in consideration of the next inference execution timing.
- processor 12 memory, 13 auxiliary storage device, 14 input/output IF, 15 communication device, 16 offload device, 18 processing circuit, 19 signal line, 100 inference device, 110 quantized inference unit, 120 non-quantized inference unit, 130 data extraction unit, 140 requantization unit.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Medical Informatics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Physics & Mathematics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Artificial Intelligence (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
推論装置(100)は、量子化推論部(110)と非量子化推論部(120)と特徴データ抽出部(130)とを備える。量子化推論部(110)は、推論用データを用いて機械学習の手法に基づいた少なくとも1回の量子化演算を実行する。非量子化推論部(120)は、推論用データを用いて少なくとも1回の量子化演算それぞれに対応する少なくとも1回の非量子化演算の少なくともいずれかを実行する。特徴データ抽出部(130)は、少なくとも1回の量子化演算の少なくともいずれかにおいてオーバーフローが発生した場合に、オーバーフローが発生した量子化演算の各々に対応する量子化特徴データと、オーバーフローが発生した量子化演算の各々に対応する非量子化演算に対応する非量子化特徴データとを抽出する。
Description
本開示は、推論装置、推論方法、及び、推論プログラムに関する。
ディープラーニングの推論環境を組込機器等のリソース制約がある装置に搭載する場合、ディープラーニングに関する演算を軽量化する必要がある。軽量化する手法の一つとして、浮動小数点演算を固定小数点演算又は整数演算に置き換える技術がある。当該技術は、一般的に量子化と呼ばれる。特許文献1は、推論を高速化するための量子化を比較的高い精度で実施するために統計的手法を用いてデータ分布を推定する技術を開示している。
特許文献1が開示する技術によれば、量子化において、学習用データセット等を用いた場合においてオーバーフローが発生しないよう、推論に関する演算のパラメータ等が調整される。しかしながら、学習用データセット等があらゆる推論用データを網羅することはできない。そのため、特許文献1が開示する技術によれば、どのような推論用データを用いた場合であってもオーバーフローが発生しないことを保証することはできず、推論用データによってはオーバーフローが発生し得るという課題がある。ここで、推論用データは機密情報であることもあるため、ある推論用データを用いて推論を実行した際にオーバーフローが発生した場合であっても、発生したオーバーフローを当該ある推論用データを用いて解析することができるとは限らない。
本開示は、ある推論用データを用いて推論を実行した際にオーバーフローが発生した場合において、発生したオーバーフローを解析するためのデータであって当該ある推論用データとは異なるデータを取得することを目的とする。
本開示に係る推論装置は、
推論用データを用いて機械学習の手法に基づいた少なくとも1回の量子化演算を実行する量子化推論部と、
前記推論用データを用いて前記少なくとも1回の量子化演算それぞれに対応する少なくとも1回の非量子化演算の少なくともいずれかを実行する非量子化推論部と
を備える推論装置であって、
前記少なくとも1回の量子化演算それぞれは、前記少なくとも1回の量子化演算それぞれの特徴を示す少なくとも1つの量子化特徴データそれぞれに応じた演算であり、
前記少なくとも1回の非量子化演算それぞれは、前記少なくとも1回の非量子化演算それぞれの特徴を示す少なくとも1つの非量子化特徴データそれぞれに応じた演算であり、
前記推論装置は、さらに、
前記少なくとも1回の量子化演算の少なくともいずれかにおいてオーバーフローが発生した場合に、オーバーフローが発生した量子化演算の各々に対応する量子化特徴データと、オーバーフローが発生した量子化演算の各々に対応する非量子化演算に対応する非量子化特徴データとを抽出する特徴データ抽出部
を備える。
推論用データを用いて機械学習の手法に基づいた少なくとも1回の量子化演算を実行する量子化推論部と、
前記推論用データを用いて前記少なくとも1回の量子化演算それぞれに対応する少なくとも1回の非量子化演算の少なくともいずれかを実行する非量子化推論部と
を備える推論装置であって、
前記少なくとも1回の量子化演算それぞれは、前記少なくとも1回の量子化演算それぞれの特徴を示す少なくとも1つの量子化特徴データそれぞれに応じた演算であり、
前記少なくとも1回の非量子化演算それぞれは、前記少なくとも1回の非量子化演算それぞれの特徴を示す少なくとも1つの非量子化特徴データそれぞれに応じた演算であり、
前記推論装置は、さらに、
前記少なくとも1回の量子化演算の少なくともいずれかにおいてオーバーフローが発生した場合に、オーバーフローが発生した量子化演算の各々に対応する量子化特徴データと、オーバーフローが発生した量子化演算の各々に対応する非量子化演算に対応する非量子化特徴データとを抽出する特徴データ抽出部
を備える。
本開示によれば、機械学習の手法に基づいた推論においてオーバーフローが発生した場合に、特徴データ抽出部が、発生したオーバーフローに関係のある量子化特徴データと非量子化特徴データとを抽出する。ここで、量子化特徴データと非量子化特徴データとの各々は推論用データとは異なるデータである。そのため、本開示によれば、ある推論用データを用いて推論を実行した際にオーバーフローが発生した場合において、発生したオーバーフローを解析するためのデータであって当該ある推論用データとは異なるデータを取得することができる。
実施の形態の説明及び図面において、同じ要素及び対応する要素には同じ符号を付している。同じ符号が付された要素の説明は、適宜に省略又は簡略化する。図中の矢印はデータの流れ又は処理の流れを主に示している。また、「部」を、「回路」、「工程」、「手順」、「処理」又は「サーキットリー」に適宜読み替えてもよい。
実施の形態1.
以下、本実施の形態について、図面を参照しながら詳細に説明する。
以下、本実施の形態について、図面を参照しながら詳細に説明する。
***構成の説明***
図1は、本実施の形態に係る推論装置100の構成例を示している。推論装置100は、本図に示すように、量子化推論部110と、非量子化推論部120と、データ抽出部130とを備える。
推論装置100は、典型的には組込みシステムの一部である。なお、推論装置100が推論プロセス管理部を備え、推論プロセス管理部が量子化推論部110と非量子化推論部120とを制御する構成であってもよい。
図1は、本実施の形態に係る推論装置100の構成例を示している。推論装置100は、本図に示すように、量子化推論部110と、非量子化推論部120と、データ抽出部130とを備える。
推論装置100は、典型的には組込みシステムの一部である。なお、推論装置100が推論プロセス管理部を備え、推論プロセス管理部が量子化推論部110と非量子化推論部120とを制御する構成であってもよい。
量子化推論部110は、量子化推論プロセスを実行する、即ち、機械学習の手法に基づいた少なくとも1回の量子化演算を実行する。少なくとも1回の量子化演算それぞれは、少なくとも1つの量子化特徴データそれぞれに応じた演算である。少なくとも1つの量子化特徴データそれぞれは、少なくとも1回の量子化演算それぞれの特徴を示しており、また、少なくとも1回の量子化演算それぞれに対応するパラメータを含んでもよい。また、量子化推論部110は推論用データを用いる。推論用データは推論を実行する際に学習済モデルに入力されるデータである。
量子化推論プロセスは量子化済推論プロセスとも呼ばれる。量子化推論プロセスにおいて量子化アルゴリズムが実行される。量子化アルゴリズムは量子化推論アルゴリズムとも呼ばれる。また、量子化推論部110は、量子化推論プロセスにおいてオーバーフロー等が発生した場合に、発生したオーバーフロー等に関する情報を記録する。
量子化推論プロセスは量子化済推論プロセスとも呼ばれる。量子化推論プロセスにおいて量子化アルゴリズムが実行される。量子化アルゴリズムは量子化推論アルゴリズムとも呼ばれる。また、量子化推論部110は、量子化推論プロセスにおいてオーバーフロー等が発生した場合に、発生したオーバーフロー等に関する情報を記録する。
非量子化推論部120は、非量子化推論プロセスを実行する、即ち、少なくとも1回の量子化演算それぞれに対応する少なくとも1回の非量子化演算の少なくともいずれかを実行する。少なくとも1回の量子化演算と、少なくとも1回の非量子化演算とは、同一の機械学習の手法に基づいた演算である。機械学習の手法がニューラルネットワークである場合において、各量子化演算と各非量子化演算とはニューラルネットワークの各レイヤの演算である。少なくとも1回の非量子化演算それぞれは、少なくとも1つの非量子化特徴データそれぞれに応じた演算である。少なくとも1つの非量子化特徴データそれぞれは、少なくとも1回の非量子化演算それぞれの特徴を示しており、また、少なくとも1回の非量子化演算それぞれに対応するパラメータを含んでもよい。非量子化推論部120は推論用データと後述の退避データとを用いる。
非量子化推論プロセスは未量子化推論プロセスとも呼ばれる。非量子化推論プロセスにおいて非量子化アルゴリズムが実行される。非量子化アルゴリズムは非量子化推論アルゴリズムとも呼ばれる。非量子化アルゴリズムは学習用のデータを用いて学習を実行した結果得られたアルゴリズムである。量子化アルゴリズムと、非量子化アルゴリズムとは基本的には同じである。量子化アルゴリズムは、非量子化アルゴリズムを、量子化に対応するよう適宜変更したものである。量子化は、典型的には浮動小数点演算を固定小数点演算又は整数演算に置き換えることである。また、量子化アルゴリズムと、非量子化アルゴリズムとの各々を、推論装置100が生成してもよく、他の装置が生成してもよい。また、非量子化推論部120は、量子化推論プロセスにおいてオーバーフローが発生した際に用いられた入力データ等に応じて演算を実行する。
非量子化推論プロセスは未量子化推論プロセスとも呼ばれる。非量子化推論プロセスにおいて非量子化アルゴリズムが実行される。非量子化アルゴリズムは非量子化推論アルゴリズムとも呼ばれる。非量子化アルゴリズムは学習用のデータを用いて学習を実行した結果得られたアルゴリズムである。量子化アルゴリズムと、非量子化アルゴリズムとは基本的には同じである。量子化アルゴリズムは、非量子化アルゴリズムを、量子化に対応するよう適宜変更したものである。量子化は、典型的には浮動小数点演算を固定小数点演算又は整数演算に置き換えることである。また、量子化アルゴリズムと、非量子化アルゴリズムとの各々を、推論装置100が生成してもよく、他の装置が生成してもよい。また、非量子化推論部120は、量子化推論プロセスにおいてオーバーフローが発生した際に用いられた入力データ等に応じて演算を実行する。
データ抽出部130は、量子化推論プロセスにおいてオーバーフローが発生した場合に、量子化推論プロセスと非量子化推論プロセスとから退避データを抽出する。退避データは、量子化推論プロセスにおけるオーバーフローを解析する際に用いられるデータであり、具体例として、入力データと特徴データとから成る。入力データは、少なくとも1回の量子化演算の各々と少なくとも1回の非量子化演算の各々とを実行する際に入力されるデータである。特徴データは、量子化演算において活用されるデータである。特徴データは、量子化特徴データと非量子化特徴データとの総称であり、少なくとも1回の量子化演算と少なくとも1回の非量子化演算との各々の演算ごとに存在し、具体例として演算における入力データの振れ幅を表す。入力データの振れ幅は、入力データとして想定されるデータが示す値の最小値から最大値までの範囲である。データ抽出部130は、少なくとも1回の量子化演算の少なくともいずれかにおいてオーバーフローが発生した場合に、オーバーフローが発生した量子化演算の各々に対応する量子化特徴データと、オーバーフローが発生した量子化演算の各々に対応する非量子化演算に対応する非量子化特徴データとを抽出する。
機械学習の手法がディープラーニングである場合において、特徴データ抽出部130は、量子化特徴データとしてオーバーフローが発生した量子化演算に対応するレイヤについてのパラメータを示すデータを抽出してもよく、非量子化特徴データとしてオーバーフローが発生した量子化演算に対応する非量子化演算に対応するレイヤについてのパラメータを示すデータを抽出してもよい。
機械学習の手法がディープラーニングである場合において、特徴データ抽出部130は、量子化特徴データとしてオーバーフローが発生した量子化演算に対応するレイヤについてのパラメータを示すデータを抽出してもよく、非量子化特徴データとしてオーバーフローが発生した量子化演算に対応する非量子化演算に対応するレイヤについてのパラメータを示すデータを抽出してもよい。
図2は、推論装置100が実行する各プロセスの優先度を示している。本図に示すように、量子化推論プロセスの優先度は、非量子化推論プロセスの優先度よりも高い。また、量子化推論プロセスの優先度よりも優先度が低く、かつ、非量子化推論プロセスの優先度よりも優先度が高いプロセスがあってもよい。なお、他プロセスという表記を挟む丸括弧は、他プロセスがあってもなくてもよいことを示している。
図3は、本実施の形態に係る推論装置100のハードウェア構成例を示している。推論装置100は、コンピュータから成る。推論装置100は、複数のコンピュータから成ってもよい。
推論装置100は、本図に示すように、プロセッサ11と、メモリ12と、補助記憶装置13と、入出力IF(Interface)14と、通信装置15等のハードウェアを備えるコンピュータである。これらのハードウェアは、信号線19を介して適宜接続されている。
プロセッサ11は、演算処理を行うIC(Integrated Circuit)であり、かつ、コンピュータが備えるハードウェアを制御する。プロセッサ11は、具体例として、CPU(Central Processing Unit)、DSP(Digital Signal Processor)、又はGPU(Graphics Processing Unit)である。
推論装置100は、プロセッサ11を代替する複数のプロセッサを備えてもよい。複数のプロセッサは、プロセッサ11の役割を分担する。
推論装置100は、プロセッサ11を代替する複数のプロセッサを備えてもよい。複数のプロセッサは、プロセッサ11の役割を分担する。
メモリ12は、典型的には、揮発性の記憶装置である。メモリ12は、主記憶装置又はメインメモリとも呼ばれる。メモリ12は、具体例として、RAM(Random Access Memory)である。メモリ12に記憶されたデータは、必要に応じて補助記憶装置13に保存される。
補助記憶装置13は、典型的には、不揮発性の記憶装置である。補助記憶装置13は、具体例として、ROM(Read Only Memory)、HDD(Hard Disk Drive)、又はフラッシュメモリである。補助記憶装置13に記憶されたデータは、必要に応じてメモリ12にロードされる。
メモリ12及び補助記憶装置13は一体的に構成されていてもよい。
メモリ12及び補助記憶装置13は一体的に構成されていてもよい。
入出力IF14は、入力装置及び出力装置が接続されるポートである。入出力IF14は、具体例として、USB(Universal Serial Bus)端子である。入力装置は、具体例として、カメラ、キーボード及びマウスである。出力装置は、具体例として、ディスプレイである。
通信装置15は、レシーバ及びトランスミッタである。通信装置15は、具体例として、通信チップ又はNIC(Network Interface Card)である。
推論装置100の各部は、他の装置等と通信する際に、通信装置15を適宜用いてもよい。推論装置100の各部は、入出力IF14を介してデータを受け付けてもよく、また、通信装置15を介してデータを受け付けてもよい。
補助記憶装置13は、推論プログラムを記憶している。推論プログラムは、推論装置100が備える各部の機能をコンピュータに実現させるプログラムである。推論プログラムは、メモリ12にロードされて、プロセッサ11によって実行される。推論装置100が備える各部の機能は、ソフトウェアにより実現される。
また、補助記憶装置13は、OS(Operating System)を記憶している。OSの少なくとも一部は、メモリ12にロードされて、プロセッサ11によって実行される。つまり、プロセッサ11は、OSを実行しながら、推論プログラムを実行する。
また、補助記憶装置13は、OS(Operating System)を記憶している。OSの少なくとも一部は、メモリ12にロードされて、プロセッサ11によって実行される。つまり、プロセッサ11は、OSを実行しながら、推論プログラムを実行する。
推論プログラムを実行する際に用いられるデータと、推論プログラムを実行することによって得られるデータと等は、記憶装置に適宜記憶される。推論装置100の各部は、適宜記憶装置を利用する。記憶装置は、具体例として、メモリ12と、補助記憶装置13と、プロセッサ11内のレジスタと、プロセッサ11内のキャッシュメモリとの少なくとも1つから成る。なお、データと情報とは、同等の意味を有することもある。記憶装置は、コンピュータと独立したものであってもよい。
メモリ12及び補助記憶装置13の機能は、他の記憶装置によって実現されてもよい。
メモリ12及び補助記憶装置13の機能は、他の記憶装置によって実現されてもよい。
推論プログラムは、コンピュータが読み取り可能な不揮発性の記録媒体に記録されていてもよい。不揮発性の記録媒体は、具体例として、光ディスク又はフラッシュメモリである。推論プログラムは、プログラムプロダクトとして提供されてもよい。
***動作の説明***
推論装置100の動作手順は、推論方法に相当する。また、推論装置100の動作を実現するプログラムは、推論プログラムに相当する。
推論装置100の動作手順は、推論方法に相当する。また、推論装置100の動作を実現するプログラムは、推論プログラムに相当する。
図4は、推論装置100の動作の一例を示すフローチャートである。また、図5は、推論装置100の動作の一例を模式的に説明する図である。図5において、平行四辺形は、出力データを除いて演算において用いられるデータを表現している。図4及び図5を参照して推論装置100の動作を説明する。なお、本実施の形態は、量子化したデータを用いることもできる機械学習の手法に対して適用することができるが、説明の便宜上、推論装置100の動作の説明において機械学習の手法はディープラーニングとする。
(ステップS101)
量子化推論部110の量子化推論プロセスが起動される。
量子化推論部110の量子化推論プロセスが起動される。
(ステップS102)
推論を開始する指示がある場合、推論装置100はステップS103に進む。それ以外の場合、推論装置100は本ステップの処理を再度実行する。
推論を開始する指示がある場合、推論装置100はステップS103に進む。それ以外の場合、推論装置100は本ステップの処理を再度実行する。
(ステップS103)
量子化推論部110は、推論用データを用いて推論処理を開始する。推論用データは、推論を開始する指示と併せて推論装置100が受け取ったデータであってもよい。
量子化推論部110は、推論用データを用いて推論処理を開始する。推論用データは、推論を開始する指示と併せて推論装置100が受け取ったデータであってもよい。
(ステップS104)
量子化推論部110は、対象レイヤについてのレイヤ演算を実行する。ここで、レイヤはディープラーニングにおけるレイヤであり、ステップS104からステップS106から成るループ処理においてレイヤ演算を初めて実行する場合に先頭のレイヤを対象レイヤとし、それ以外の場合に1回前に実行したレイヤ演算における対象レイヤの次のレイヤを対象レイヤとする。
図5における演算がレイヤ演算に相当する。また、量子化推論部110は、演算の直下に示されている太い矢印の左側に示されているデータを入力データとしてレイヤ演算を実行し、当該矢印の右側に示されているデータを出力する。
量子化推論部110は、対象レイヤについてのレイヤ演算を実行する。ここで、レイヤはディープラーニングにおけるレイヤであり、ステップS104からステップS106から成るループ処理においてレイヤ演算を初めて実行する場合に先頭のレイヤを対象レイヤとし、それ以外の場合に1回前に実行したレイヤ演算における対象レイヤの次のレイヤを対象レイヤとする。
図5における演算がレイヤ演算に相当する。また、量子化推論部110は、演算の直下に示されている太い矢印の左側に示されているデータを入力データとしてレイヤ演算を実行し、当該矢印の右側に示されているデータを出力する。
(ステップS105)
量子化推論部110は、ステップS104の処理においてオーバーフローが発生したか否かを確認する。オーバーフローが発生したか否かを確認する方法は、具体例として、CPUのフラグを参照する方法、演算に関係する変数を演算の前後に確認する方法、又は、FPGA等の独自の回路により確認する方法である。
オーバーフローが発生した場合、推論装置100はステップS109に進む。それ以外の場合、推論装置100はステップS106に進む。
量子化推論部110は、ステップS104の処理においてオーバーフローが発生したか否かを確認する。オーバーフローが発生したか否かを確認する方法は、具体例として、CPUのフラグを参照する方法、演算に関係する変数を演算の前後に確認する方法、又は、FPGA等の独自の回路により確認する方法である。
オーバーフローが発生した場合、推論装置100はステップS109に進む。それ以外の場合、推論装置100はステップS106に進む。
(ステップS106)
全てのレイヤ演算が終了した場合、推論装置100はステップS107に進む。それ以外の場合、推論装置100はステップS104に進む。
全てのレイヤ演算が終了した場合、推論装置100はステップS107に進む。それ以外の場合、推論装置100はステップS104に進む。
(ステップS107)
量子化推論部110は、推論を指示した者に推論の結果を適宜通知する。
量子化推論部110は、推論を指示した者に推論の結果を適宜通知する。
(ステップS108)
少なくともいずれかのレイヤ演算においてオーバーフローが発生した場合、推論装置100はステップS111に進む。それ以外の場合、推論装置100はステップS102に戻る。
少なくともいずれかのレイヤ演算においてオーバーフローが発生した場合、推論装置100はステップS111に進む。それ以外の場合、推論装置100はステップS102に戻る。
(ステップS109)
データ抽出部130は、対象レイヤに対応する退避データを退避する。具体例として、データ抽出部130は、対象レイヤについてのデータを抽出し、抽出したデータを退避データとして退避する。対象レイヤについてのデータは、具体例として、対象レイヤに対する入力データと、対象レイヤにおける変数データと、対象レイヤにおける特徴データとである。ただし、対象レイヤが先頭のレイヤである場合、データ抽出部130は、入力データが推論用データであるため、退避データとして入力データを抽出しない。なお、データ抽出部130は推論用データを退避してもよい。ここで、推論用データは先頭のレイヤに入力されるデータである。
図5は、対象レイヤに対応する退避データとして、オーバーフローが発生した対象レイヤについてのデータと、対象レイヤの1つ前のレイヤについてのデータとをデータ抽出部130が退避する様子を示している。なお、データ抽出部130が退避するデータは、対象レイヤについてのデータのみであってもよく、対象レイヤから対象レイヤのn(nは自然数)個前のレイヤまでの各々のレイヤについてのデータであってもよい。
データ抽出部130は、対象レイヤに対応する退避データを退避する。具体例として、データ抽出部130は、対象レイヤについてのデータを抽出し、抽出したデータを退避データとして退避する。対象レイヤについてのデータは、具体例として、対象レイヤに対する入力データと、対象レイヤにおける変数データと、対象レイヤにおける特徴データとである。ただし、対象レイヤが先頭のレイヤである場合、データ抽出部130は、入力データが推論用データであるため、退避データとして入力データを抽出しない。なお、データ抽出部130は推論用データを退避してもよい。ここで、推論用データは先頭のレイヤに入力されるデータである。
図5は、対象レイヤに対応する退避データとして、オーバーフローが発生した対象レイヤについてのデータと、対象レイヤの1つ前のレイヤについてのデータとをデータ抽出部130が退避する様子を示している。なお、データ抽出部130が退避するデータは、対象レイヤについてのデータのみであってもよく、対象レイヤから対象レイヤのn(nは自然数)個前のレイヤまでの各々のレイヤについてのデータであってもよい。
(ステップS110)
量子化推論部110は、飽和演算を実行し、その後、ステップS106に進む。
量子化推論部110は、飽和演算を実行し、その後、ステップS106に進む。
(ステップS111)
非量子化推論部120の非量子化推論プロセスが起動される。
以下、推論装置100は、ステップS102以降の処理と、ステップS121以降の処理とを並列に実行する。
非量子化推論部120の非量子化推論プロセスが起動される。
以下、推論装置100は、ステップS102以降の処理と、ステップS121以降の処理とを並列に実行する。
(ステップS121)
非量子化推論部120は、推論用データを用いて非量子化推論プロセスを実行する。
なお、図5において、非量子化推論部120が非量子化推論プロセスを最後まで実行することによって出力データを出力しているが、非量子化推論部120は、量子化推論プロセスにおいてオーバーフローが発生したレイヤに対応するレイヤまでのレイヤ演算を実行すれば十分である。
非量子化推論部120は、推論用データを用いて非量子化推論プロセスを実行する。
なお、図5において、非量子化推論部120が非量子化推論プロセスを最後まで実行することによって出力データを出力しているが、非量子化推論部120は、量子化推論プロセスにおいてオーバーフローが発生したレイヤに対応するレイヤまでのレイヤ演算を実行すれば十分である。
(ステップS122)
データ抽出部130は、退避データとして、オーバーフローが発生したレイヤに対応するレイヤについてのデータを抽出する。ここで、データ抽出部130は、量子化推論プロセスにおいて退避したデータに対応するレイヤと同一のレイヤについてのデータを退避する。具体例として、図5に示すように、データ抽出部130が量子化推論プロセスにおいてオーバーフローが発生したレイヤと当該レイヤの1つ前のレイヤとの各々についてのデータを退避した場合、データ抽出部130は、オーバーフローが発生したレイヤに対応するレイヤとオーバーフローが発生したレイヤの1つ前のレイヤとの各々に対応する非量子化推論プロセスのレイヤについてのデータを退避データとして退避する。
データ抽出部130が退避した量子化推論プロセスにおけるデータと非量子化推論プロセスにおけるデータとは推論装置100の外部に出力されてもよい。エンジニア等は、出力されたデータを入手し、入手したデータに基づいて量子化推論プロセスのパラメータを再設定してもよく、入手したデータに基づいてソースコード内の量子化推論プロセスに関するパラメータを変更してもよい。
データ抽出部130は、退避データとして、オーバーフローが発生したレイヤに対応するレイヤについてのデータを抽出する。ここで、データ抽出部130は、量子化推論プロセスにおいて退避したデータに対応するレイヤと同一のレイヤについてのデータを退避する。具体例として、図5に示すように、データ抽出部130が量子化推論プロセスにおいてオーバーフローが発生したレイヤと当該レイヤの1つ前のレイヤとの各々についてのデータを退避した場合、データ抽出部130は、オーバーフローが発生したレイヤに対応するレイヤとオーバーフローが発生したレイヤの1つ前のレイヤとの各々に対応する非量子化推論プロセスのレイヤについてのデータを退避データとして退避する。
データ抽出部130が退避した量子化推論プロセスにおけるデータと非量子化推論プロセスにおけるデータとは推論装置100の外部に出力されてもよい。エンジニア等は、出力されたデータを入手し、入手したデータに基づいて量子化推論プロセスのパラメータを再設定してもよく、入手したデータに基づいてソースコード内の量子化推論プロセスに関するパラメータを変更してもよい。
(ステップS123)
非量子化推論部120の非量子化推論プロセスは終了される。
非量子化推論部120の非量子化推論プロセスは終了される。
***実施の形態1の効果の説明***
以上のように、本実施の形態によれば、推論用データが機密情報である場合であっても、推論用データを抽出せず、オーバーフローが発生した演算に関するデータのみを抽出する。ここで、オーバーフローが発生した演算に関するデータは、推論用データに存在する機密性が排除されたデータである。そのため、本実施の形態によれば、推論環境における精度を維持しつつ、機密性を保持したまま量子化演算において発生したオーバーフローを解析することができる。そのため、本実施の形態によれば、発生したオーバーフローに対処するための学習済モデルの改良に必要なデータを取得することができる。
また、本実施の形態によれば、学習用データ等のみならず、実際の推論用データに基づいて量子化を伴う機械学習におけるパラメータ等を調整することができる。
以上のように、本実施の形態によれば、推論用データが機密情報である場合であっても、推論用データを抽出せず、オーバーフローが発生した演算に関するデータのみを抽出する。ここで、オーバーフローが発生した演算に関するデータは、推論用データに存在する機密性が排除されたデータである。そのため、本実施の形態によれば、推論環境における精度を維持しつつ、機密性を保持したまま量子化演算において発生したオーバーフローを解析することができる。そのため、本実施の形態によれば、発生したオーバーフローに対処するための学習済モデルの改良に必要なデータを取得することができる。
また、本実施の形態によれば、学習用データ等のみならず、実際の推論用データに基づいて量子化を伴う機械学習におけるパラメータ等を調整することができる。
***他の構成***
<変形例1>
量子化推論部110は、オーバーフローが発生した場合に推論を途中で打ち切ってもよい。具体例として、量子化推論部110は、少なくとも1回の量子化演算のいずれかにおいてオーバーフローが発生した場合に、オーバーフローが発生した演算よりも後の演算を実行しない。
<変形例1>
量子化推論部110は、オーバーフローが発生した場合に推論を途中で打ち切ってもよい。具体例として、量子化推論部110は、少なくとも1回の量子化演算のいずれかにおいてオーバーフローが発生した場合に、オーバーフローが発生した演算よりも後の演算を実行しない。
<変形例2>
図6は、本変形例に係る推論装置100のハードウェア構成例を示している。本変形例に係る推論装置100は、本図に示すように、オフロードデバイス16を備える。
量子化推論プロセスは、オフロードデバイス16によって実行されてもよい。オフロードデバイス16は具体例として、GPU又はFPGAである。本変形例において、非量子化推論プロセスはプロセッサ11で実行されていてもよく、このとき、プロセッサ11とオフロードデバイス16との間で適宜通信が実行される。
図6は、本変形例に係る推論装置100のハードウェア構成例を示している。本変形例に係る推論装置100は、本図に示すように、オフロードデバイス16を備える。
量子化推論プロセスは、オフロードデバイス16によって実行されてもよい。オフロードデバイス16は具体例として、GPU又はFPGAである。本変形例において、非量子化推論プロセスはプロセッサ11で実行されていてもよく、このとき、プロセッサ11とオフロードデバイス16との間で適宜通信が実行される。
<変形例3>
図7は、本変形例に係る推論装置100のハードウェア構成例を示している。
推論装置100は、プロセッサ11、プロセッサ11とメモリ12、プロセッサ11と補助記憶装置13、あるいはプロセッサ11とメモリ12と補助記憶装置13に代えて、処理回路18を備える。
処理回路18は、推論装置100が備える各部の少なくとも一部を実現するハードウェアである。
処理回路18は、専用のハードウェアであってもよく、また、メモリ12に格納されるプログラムを実行するプロセッサであってもよい。
図7は、本変形例に係る推論装置100のハードウェア構成例を示している。
推論装置100は、プロセッサ11、プロセッサ11とメモリ12、プロセッサ11と補助記憶装置13、あるいはプロセッサ11とメモリ12と補助記憶装置13に代えて、処理回路18を備える。
処理回路18は、推論装置100が備える各部の少なくとも一部を実現するハードウェアである。
処理回路18は、専用のハードウェアであってもよく、また、メモリ12に格納されるプログラムを実行するプロセッサであってもよい。
処理回路18が専用のハードウェアである場合、処理回路18は、具体例として、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ASIC(ASICはApplication Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)又はこれらの組み合わせである。
推論装置100は、処理回路18を代替する複数の処理回路を備えてもよい。複数の処理回路は、処理回路18の役割を分担する。
推論装置100は、処理回路18を代替する複数の処理回路を備えてもよい。複数の処理回路は、処理回路18の役割を分担する。
推論装置100において、一部の機能が専用のハードウェアによって実現されて、残りの機能がソフトウェア又はファームウェアによって実現されてもよい。
処理回路18は、具体例として、ハードウェア、ソフトウェア、ファームウェア、又はこれらの組み合わせにより実現される。
プロセッサ11とメモリ12と補助記憶装置13と処理回路18とを、総称して「プロセッシングサーキットリー」という。つまり、推論装置100の各機能構成要素の機能は、プロセッシングサーキットリーにより実現される。
他の実施の形態に係る推論装置100についても、本変形例と同様の構成であってもよい。
プロセッサ11とメモリ12と補助記憶装置13と処理回路18とを、総称して「プロセッシングサーキットリー」という。つまり、推論装置100の各機能構成要素の機能は、プロセッシングサーキットリーにより実現される。
他の実施の形態に係る推論装置100についても、本変形例と同様の構成であってもよい。
実施の形態2.
以下、主に前述した実施の形態と異なる点について、図面を参照しながら説明する。
以下、主に前述した実施の形態と異なる点について、図面を参照しながら説明する。
***構成の説明***
図8は、本実施の形態に係る推論装置100の構成例を示している。推論装置100は、本図に示すように再量子化部140を備える。
再量子化部140は、データ抽出部130が抽出したデータに基づいて量子化アルゴリズムを変更することにより再量子化アルゴリズムを生成する。ここで、再量子化アルゴリズムは、再量子化部140によって変更された量子化アルゴリズムである。また、再量子化部140は、再量子化を実行するタイミングを管理する。再量子化は、再量子化アルゴリズムを変更することであり、量子化アルゴリズムを再量子化アルゴリズムに置き換えることを含んでもよい。再量子化部140は、データ抽出部130によって抽出された量子化特徴データと非量子化特徴データとに基づいて、抽出された量子化特徴データに対応する量子化演算である対象演算においてオーバーフローが発生しないよう、対象演算に対応する量子化特徴データを変更する。
本実施の形態に係る量子化推論部110は、再量子化部140が生成した再量子化アルゴリズムを適宜利用し、変更された量子化特徴データに応じた量子化演算を実行する。また、量子化推論部110は、再量子化アルゴリズムと動作している量子化アルゴリズムとを入れ替えるタイミングを管理する。
図8は、本実施の形態に係る推論装置100の構成例を示している。推論装置100は、本図に示すように再量子化部140を備える。
再量子化部140は、データ抽出部130が抽出したデータに基づいて量子化アルゴリズムを変更することにより再量子化アルゴリズムを生成する。ここで、再量子化アルゴリズムは、再量子化部140によって変更された量子化アルゴリズムである。また、再量子化部140は、再量子化を実行するタイミングを管理する。再量子化は、再量子化アルゴリズムを変更することであり、量子化アルゴリズムを再量子化アルゴリズムに置き換えることを含んでもよい。再量子化部140は、データ抽出部130によって抽出された量子化特徴データと非量子化特徴データとに基づいて、抽出された量子化特徴データに対応する量子化演算である対象演算においてオーバーフローが発生しないよう、対象演算に対応する量子化特徴データを変更する。
本実施の形態に係る量子化推論部110は、再量子化部140が生成した再量子化アルゴリズムを適宜利用し、変更された量子化特徴データに応じた量子化演算を実行する。また、量子化推論部110は、再量子化アルゴリズムと動作している量子化アルゴリズムとを入れ替えるタイミングを管理する。
***動作の説明***
図9は、推論装置100の動作の一例を示すフローチャートである。本図を参照して、実施の形態1に係る推論装置100の動作と、本実施の形態に係る推論装置100の動作との差異を主に説明する。
図9は、推論装置100の動作の一例を示すフローチャートである。本図を参照して、実施の形態1に係る推論装置100の動作と、本実施の形態に係る推論装置100の動作との差異を主に説明する。
(ステップS102)
推論装置100は、本ステップの処理を再度実行する代わりに、ステップS201に進む。
推論装置100は、本ステップの処理を再度実行する代わりに、ステップS201に進む。
(ステップS108)
推論装置100はステップS102に戻る代わりに、ステップS201に進む。
推論装置100はステップS102に戻る代わりに、ステップS201に進む。
(ステップS201)
再量子化部140によって再量子化アルゴリズムが準備されていない場合、量子化推論部110はステップS102に進む。それ以外の場合、量子化推論部110はステップS202に進む。
再量子化部140によって再量子化アルゴリズムが準備されていない場合、量子化推論部110はステップS102に進む。それ以外の場合、量子化推論部110はステップS202に進む。
(ステップS202)
量子化推論部110は、量子化推論プロセスにおける量子化アルゴリズムを再量子化部140が準備した再量子化アルゴリズムに入れ替える。
量子化推論部110は、量子化推論プロセスにおける量子化アルゴリズムを再量子化部140が準備した再量子化アルゴリズムに入れ替える。
(ステップS221)
再量子化部140は、退避データを用いて再量子化を実行することにより再量子化アルゴリズムを生成する。再量子化は、オーバーフローが発生したレイヤにおいてオーバーフローが発生しないように量子化アルゴリズムを調整することである。再量子化部140は、具体例として、オーバーフローが発生したレイヤにおける特徴データを変更する。
なお、複数のレイヤにおいてオーバーフローが発生した場合に、再量子化部140は、最も早く処理されるレイヤに対応する特徴データのみを調整してもよく、オーバーフローが発生した全てのレイヤの各々に対応する特徴データを一括で調整してもよい。
再量子化部140は、退避データを用いて再量子化を実行することにより再量子化アルゴリズムを生成する。再量子化は、オーバーフローが発生したレイヤにおいてオーバーフローが発生しないように量子化アルゴリズムを調整することである。再量子化部140は、具体例として、オーバーフローが発生したレイヤにおける特徴データを変更する。
なお、複数のレイヤにおいてオーバーフローが発生した場合に、再量子化部140は、最も早く処理されるレイヤに対応する特徴データのみを調整してもよく、オーバーフローが発生した全てのレイヤの各々に対応する特徴データを一括で調整してもよい。
(ステップS222)
再量子化部140は、ステップS221において生成した再量子化アルゴリズムを保存する。
再量子化部140は、ステップS221において生成した再量子化アルゴリズムを保存する。
***実施の形態2の効果の説明***
以上のように、本実施の形態によれば、オーバーフローが発生しないように量子化アルゴリズムを変更する処理を自動的に実行することができる。
以上のように、本実施の形態によれば、オーバーフローが発生しないように量子化アルゴリズムを変更する処理を自動的に実行することができる。
***他の構成***
<変形例4>
量子化推論プロセスにおける量子化アルゴリズムを再量子化部140が準備した量子化アルゴリズムに量子化推論部110が入れ替えるタイミングは、推論装置100を備える組込みシステムの再起動時であってもよい。また、量子化推論部110は、次に推論を実行するタイミングを考慮して次に実行する推論に影響がないと判断した際に量子化アルゴリズムを入れ替えるよう動作予約する方式により量子化アルゴリズムを入れ替えてもよい。
<変形例4>
量子化推論プロセスにおける量子化アルゴリズムを再量子化部140が準備した量子化アルゴリズムに量子化推論部110が入れ替えるタイミングは、推論装置100を備える組込みシステムの再起動時であってもよい。また、量子化推論部110は、次に推論を実行するタイミングを考慮して次に実行する推論に影響がないと判断した際に量子化アルゴリズムを入れ替えるよう動作予約する方式により量子化アルゴリズムを入れ替えてもよい。
***他の実施の形態***
前述した各実施の形態の自由な組み合わせ、あるいは各実施の形態の任意の構成要素の変形、もしくは各実施の形態において任意の構成要素の省略が可能である。
また、実施の形態は、実施の形態1から2で示したものに限定されるものではなく、必要に応じて種々の変更が可能である。フローチャート等を用いて説明した手順は、適宜変更されてもよい。
前述した各実施の形態の自由な組み合わせ、あるいは各実施の形態の任意の構成要素の変形、もしくは各実施の形態において任意の構成要素の省略が可能である。
また、実施の形態は、実施の形態1から2で示したものに限定されるものではなく、必要に応じて種々の変更が可能である。フローチャート等を用いて説明した手順は、適宜変更されてもよい。
11 プロセッサ、12 メモリ、13 補助記憶装置、14 入出力IF、15 通信装置、16 オフロードデバイス、18 処理回路、19 信号線、100 推論装置、110 量子化推論部、120 非量子化推論部、130 データ抽出部、140 再量子化部。
Claims (6)
- 推論用データを用いて機械学習の手法に基づいた少なくとも1回の量子化演算を実行する量子化推論部と、
前記推論用データを用いて前記少なくとも1回の量子化演算それぞれに対応する少なくとも1回の非量子化演算の少なくともいずれかを実行する非量子化推論部と
を備える推論装置であって、
前記少なくとも1回の量子化演算それぞれは、前記少なくとも1回の量子化演算それぞれの特徴を示す少なくとも1つの量子化特徴データそれぞれに応じた演算であり、
前記少なくとも1回の非量子化演算それぞれは、前記少なくとも1回の非量子化演算それぞれの特徴を示す少なくとも1つの非量子化特徴データそれぞれに応じた演算であり、
前記推論装置は、さらに、
前記少なくとも1回の量子化演算の少なくともいずれかにおいてオーバーフローが発生した場合に、オーバーフローが発生した量子化演算の各々に対応する量子化特徴データと、オーバーフローが発生した量子化演算の各々に対応する非量子化演算に対応する非量子化特徴データとを抽出する特徴データ抽出部
を備える推論装置。 - 前記少なくとも1つの量子化特徴データそれぞれは、前記少なくとも1回の量子化演算それぞれに対応するパラメータを含み、
前記少なくとも1つの非量子化特徴データそれぞれは、前記少なくとも1回の非量子化演算それぞれに対応するパラメータを含む請求項1に記載の推論装置。 - 前記機械学習の手法は、ディープラーニングであり、
前記特徴データ抽出部は、
前記量子化特徴データとして、オーバーフローが発生した量子化演算に対応するレイヤについてのパラメータを示すデータを抽出し、
前記非量子化特徴データとして、オーバーフローが発生した量子化演算に対応する非量子化演算に対応するレイヤについてのパラメータを示すデータを抽出する請求項1又は2に記載の推論装置。 - 前記推論装置は、さらに、
抽出された量子化特徴データと非量子化特徴データとに基づいて、抽出された量子化特徴データに対応する量子化演算である対象演算においてオーバーフローが発生しないよう、前記対象演算に対応する量子化特徴データを変更する再量子化部を
備え、
前記量子化推論部は、変更された量子化特徴データに応じた量子化演算を実行する請求項1から3のいずれか1項に記載の推論装置。 - 推論用データを用いて機械学習の手法に基づいた少なくとも1回の量子化演算を実行し、
前記推論用データを用いて前記少なくとも1回の量子化演算それぞれに対応する少なくとも1回の非量子化演算の少なくともいずれかを実行する推論方法であって、
前記少なくとも1回の量子化演算それぞれは、前記少なくとも1回の量子化演算それぞれの特徴を示す少なくとも1つの量子化特徴データそれぞれに応じた演算であり、
前記少なくとも1回の非量子化演算それぞれは、前記少なくとも1回の非量子化演算それぞれの特徴を示す少なくとも1つの非量子化特徴データそれぞれに応じた演算であり、
前記少なくとも1回の量子化演算の少なくともいずれかにおいてオーバーフローが発生した場合に、オーバーフローが発生した量子化演算の各々に対応する量子化特徴データと、オーバーフローが発生した量子化演算の各々に対応する非量子化演算に対応する非量子化特徴データとを抽出する推論方法。 - 推論用データを用いて機械学習の手法に基づいた少なくとも1回の量子化演算を実行する量子化推論処理と、
前記推論用データを用いて前記少なくとも1回の量子化演算それぞれに対応する少なくとも1回の非量子化演算の少なくともいずれかを実行する非量子化推論処理と
をコンピュータである推論装置に実行させる推論プログラムであって、
前記少なくとも1回の量子化演算それぞれは、前記少なくとも1回の量子化演算それぞれの特徴を示す少なくとも1つの量子化特徴データそれぞれに応じた演算であり、
前記少なくとも1回の非量子化演算それぞれは、前記少なくとも1回の非量子化演算それぞれの特徴を示す少なくとも1つの非量子化特徴データそれぞれに応じた演算であり、
前記推論プログラムは、さらに、
前記少なくとも1回の量子化演算の少なくともいずれかにおいてオーバーフローが発生した場合に、オーバーフローが発生した量子化演算の各々に対応する量子化特徴データと、オーバーフローが発生した量子化演算の各々に対応する非量子化演算に対応する非量子化特徴データとを抽出する特徴データ抽出処理を前記推論装置に実行させる推論プログラム。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2023508251A JP7350214B2 (ja) | 2021-03-24 | 2021-03-24 | 推論装置、推論方法、及び、推論プログラム |
PCT/JP2021/012193 WO2022201352A1 (ja) | 2021-03-24 | 2021-03-24 | 推論装置、推論方法、及び、推論プログラム |
TW110130424A TW202238458A (zh) | 2021-03-24 | 2021-08-18 | 推論裝置、推論方法及推論程式產品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2021/012193 WO2022201352A1 (ja) | 2021-03-24 | 2021-03-24 | 推論装置、推論方法、及び、推論プログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2022201352A1 true WO2022201352A1 (ja) | 2022-09-29 |
Family
ID=83396538
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2021/012193 WO2022201352A1 (ja) | 2021-03-24 | 2021-03-24 | 推論装置、推論方法、及び、推論プログラム |
Country Status (3)
Country | Link |
---|---|
JP (1) | JP7350214B2 (ja) |
TW (1) | TW202238458A (ja) |
WO (1) | WO2022201352A1 (ja) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170316307A1 (en) * | 2016-04-29 | 2017-11-02 | Intel Corporation | Dynamic management of numerical representation in a distributed matrix processor architecture |
JP2020009048A (ja) * | 2018-07-05 | 2020-01-16 | 株式会社日立製作所 | ニューラルネットワークの学習装置および学習方法 |
JP2020064635A (ja) * | 2018-10-17 | 2020-04-23 | 三星電子株式会社Samsung Electronics Co.,Ltd. | ニューラルネットワークのパラメータを量子化する方法及びその装置 |
-
2021
- 2021-03-24 WO PCT/JP2021/012193 patent/WO2022201352A1/ja active Application Filing
- 2021-03-24 JP JP2023508251A patent/JP7350214B2/ja active Active
- 2021-08-18 TW TW110130424A patent/TW202238458A/zh unknown
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170316307A1 (en) * | 2016-04-29 | 2017-11-02 | Intel Corporation | Dynamic management of numerical representation in a distributed matrix processor architecture |
JP2020009048A (ja) * | 2018-07-05 | 2020-01-16 | 株式会社日立製作所 | ニューラルネットワークの学習装置および学習方法 |
JP2020064635A (ja) * | 2018-10-17 | 2020-04-23 | 三星電子株式会社Samsung Electronics Co.,Ltd. | ニューラルネットワークのパラメータを量子化する方法及びその装置 |
Also Published As
Publication number | Publication date |
---|---|
JP7350214B2 (ja) | 2023-09-25 |
JPWO2022201352A1 (ja) | 2022-09-29 |
TW202238458A (zh) | 2022-10-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20180107451A1 (en) | Automatic scaling for fixed point implementation of deep neural networks | |
KR20180072562A (ko) | 인공 뉴럴 네트워크 클래스-기반 프루닝 | |
TWI796286B (zh) | 一種機器學習系統的訓練方法和訓練系統 | |
JP7226514B2 (ja) | 事前訓練言語モデル、装置及びコンピュータ読み取り可能な記憶媒体 | |
US20100275186A1 (en) | Segmentation for static analysis | |
US11257008B2 (en) | Method of setting artificial intelligence execution model and artificial intelligence execution acceleration system for artificial intelligence execution acceleration | |
CN110874634A (zh) | 神经网络的优化方法及装置、设备和存储介质 | |
CN115080248B (zh) | 调度装置的调度优化方法、调度装置和存储介质 | |
WO2022201352A1 (ja) | 推論装置、推論方法、及び、推論プログラム | |
KR20200112189A (ko) | 기계학습용 이미지 데이터 생성 시스템 및 방법 | |
US20210133552A1 (en) | Neural network learning device, neural network learning method, and recording medium on which neural network learning program is stored | |
CN113408704A (zh) | 数据处理方法、装置、设备及计算机可读存储介质 | |
US8281263B2 (en) | Propagating design tolerances to shape tolerances for lithography | |
KR20210151727A (ko) | 신경망 가속기의 데이터 처리 방법, 장치, 기기 및 저장 매체 | |
US20210012192A1 (en) | Arithmetic processing apparatus, control method, and non-transitory computer-readable recording medium having stored therein control program | |
US10929177B2 (en) | Managing resources for multiple trial distributed processing tasks | |
JP6548848B2 (ja) | 情報処理装置、情報処理方法及び情報処理プログラム | |
CN111045687B (zh) | 一种人工智能应用的部署方法及相关装置 | |
CN113361677A (zh) | 神经网络模型的量化方法和装置 | |
US20210319285A1 (en) | Information processing apparatus, information processing method and computer readable medium | |
CN118410851B (zh) | 一种混合专家模型路由网络优化方法、产品、装置及介质 | |
CN112991206B (zh) | 图像处理方法、装置、设备和存储介质 | |
US20220309351A1 (en) | Structure transformation device, structure transformation method, and computer readable medium | |
CN116362235A (zh) | 文本处理方法、用于文本处理的训练方法和相关设备 | |
CN117830857A (zh) | 一种基于Atlas200DK的空间目标检测方法及相关设备 |
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: 21932962 Country of ref document: EP Kind code of ref document: A1 |
|
ENP | Entry into the national phase |
Ref document number: 2023508251 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: 21932962 Country of ref document: EP Kind code of ref document: A1 |