CN113269320A - Processing unit, computing device, system on chip, data center and related methods - Google Patents
Processing unit, computing device, system on chip, data center and related methods Download PDFInfo
- Publication number
- CN113269320A CN113269320A CN202010092279.6A CN202010092279A CN113269320A CN 113269320 A CN113269320 A CN 113269320A CN 202010092279 A CN202010092279 A CN 202010092279A CN 113269320 A CN113269320 A CN 113269320A
- Authority
- CN
- China
- Prior art keywords
- quantization
- precision
- deep learning
- learning model
- node
- 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.)
- Granted
Links
- 238000012545 processing Methods 0.000 title claims abstract description 95
- 238000000034 method Methods 0.000 title claims abstract description 35
- 238000013139 quantization Methods 0.000 claims abstract description 313
- 238000013136 deep learning model Methods 0.000 claims abstract description 153
- 230000001133 acceleration Effects 0.000 claims abstract description 85
- 230000015654 memory Effects 0.000 claims abstract description 43
- 238000004422 calculation algorithm Methods 0.000 claims description 51
- 238000004088 simulation Methods 0.000 abstract description 10
- 239000010410 layer Substances 0.000 description 22
- 230000015556 catabolic process Effects 0.000 description 15
- 238000006731 degradation reaction Methods 0.000 description 15
- 238000004364 calculation method Methods 0.000 description 14
- 238000003860 storage Methods 0.000 description 13
- 238000010586 diagram Methods 0.000 description 12
- 230000002776 aggregation Effects 0.000 description 11
- 238000004220 aggregation Methods 0.000 description 11
- 238000011176 pooling Methods 0.000 description 10
- 238000005457 optimization Methods 0.000 description 8
- 239000011159 matrix material Substances 0.000 description 7
- 230000008569 process Effects 0.000 description 7
- 238000013135 deep learning Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 238000010801 machine learning Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 4
- 230000014509 gene expression Effects 0.000 description 4
- 238000013473 artificial intelligence Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000009467 reduction Effects 0.000 description 3
- 238000013528 artificial neural network Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000013527 convolutional neural network Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 239000002346 layers by function Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 101100006960 Caenorhabditis elegans let-2 gene Proteins 0.000 description 1
- 241000700605 Viruses Species 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000003012 network analysis Methods 0.000 description 1
- 238000003062 neural network model Methods 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000011002 quantification Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 238000012549 training Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
The disclosure provides a computing device, a data center and a deep learning model tuning method. The processing unit includes: an instruction fetch unit to retrieve computer instructions from memory; an instruction decode unit to decode the retrieved computer instructions; an instruction execution unit, configured to execute the decoded computer instructions to implement: after each node of the deep learning model is subjected to first quantization according to a first quantization level, a first precision is obtained after simulation operation; for a first node of the deep learning model, carrying out second quantization according to a second quantization level lower than the first quantization level, and obtaining second precision after simulation operation; if the difference between the first precision and the second precision meets a preset condition, performing improved quantization on the first node; and deploying the improved and quantized deep learning model to an acceleration unit. The embodiment of the disclosure reduces the precision loss caused by quantization in the actual operation of the deep learning model.
Description
Technical Field
The present disclosure relates to the field of chips, and more particularly, to a processing unit, computing device, system-on-chip, data center, and related methods.
Background
In the deep learning (deep learning) field, Inference (Inference) refers to pushing a pre-trained deep learning model to an actual business scene for use. Because reasoning is directly user-oriented, reasoning performance is critical, especially for enterprise-level products.
Regarding inference performance, besides optimization at the hardware level, at the algorithm level, Model quantization (Quantized Model) is one of the important means for improving inference performance. Model quantization refers to converting the weight data and input data of each node in the deep learning model from a high precision quantization level to a low precision quantization level, for example, from a 32-bit single precision floating point number (FP32) to 8-bit integer data (INT 8). This, while reducing accuracy, helps to reduce data throughput and memory requirements.
In the actual operation of the deep learning model, the situation of insufficient precision is often encountered. The degradation of precision due to quantization is an important cause of insufficient precision. How to minimize the precision loss in quantization is an urgent problem to be solved.
Disclosure of Invention
In view of this, the embodiments of the present disclosure aim to reduce the precision loss caused by quantization in the actual operation of the deep learning model.
To achieve this object, according to an aspect of the present disclosure, there is provided a processing unit including:
an instruction fetch unit to retrieve computer instructions from a memory external to the processing unit;
an instruction decode unit to decode the retrieved computer instructions;
an instruction execution unit, configured to execute the decoded computer instructions to implement: after each node of the deep learning model is subjected to first quantization according to a first quantization level, the deep learning model after the first quantization is simulated to run, and first precision is obtained; for a first node of the deep learning model, performing second quantization according to a second quantization level, and performing simulated operation on the deep learning model after the second quantization to obtain a second precision, wherein the second quantization level is lower than the first quantization level; if the difference between the first precision and the second precision meets a preset condition, performing improved quantization on the first node; deploying the improved quantized deep learning model to an acceleration unit external to the processing unit.
Optionally, the predetermined condition comprises: the difference is greater than a predetermined difference threshold.
Optionally, the instruction execution unit is further configured to execute the decoded computer instruction to implement, after obtaining the first precision: for second nodes except the first nodes of the deep learning model, third quantization is carried out according to a second quantization level, and the deep learning model after the third quantization is simulated to run to obtain third precision; the predetermined conditions include: if the difference between the first precision and the second precision is greater than the difference between the first precision and the third precision.
Optionally, the first quantization and the second quantization are performed using a first quantization algorithm selected from a set of predetermined quantization algorithms, and the improved quantization is performed using a second quantization algorithm selected from the set of predetermined quantization algorithms, wherein a quantization precision level of the second quantization algorithm is greater than a quantization precision level of the first quantization algorithm.
Optionally, the first accuracy meets a predetermined accuracy criterion.
Optionally, the deploying the improved quantized deep learning model to an acceleration unit outside the processing unit includes: the improved quantized deep learning model is converted into a model recognizable by an instruction set of the acceleration unit and deployed to the acceleration unit.
Optionally, the performing the first quantization on each node of the deep learning model according to a first quantization level includes:
calibrating each node of the deep learning model to obtain a calibration model;
the input parameters and the weight parameters for each node in the calibration model are quantized according to a first quantization level.
Optionally, the performing, by the first node of the deep learning model, second quantization according to a second quantization level includes:
carrying out calibration operation on a first node of the deep learning model to obtain a calibration model;
and quantizing the input parameters and the weight parameters of the first node in the calibration model according to a second quantization level.
Optionally, the first quantization level is a 16-bit integer number and the second quantization level is an 8-bit integer number.
According to an aspect of the present disclosure, there is provided a computing apparatus including:
the processing unit as described above;
a memory for storing the computer instructions;
and the accelerating unit is used for operating the deployed deep learning model.
According to an aspect of the present disclosure, there is provided a system on chip comprising a computing device as described above.
According to an aspect of the present disclosure, there is provided a data center including the system on chip as described above.
According to an aspect of the present disclosure, there is provided a tuning method of a deep learning model, including:
after each node of the deep learning model is subjected to first quantization according to a first quantization level, the deep learning model after the first quantization is simulated to run, and first precision is obtained;
for a first node of the deep learning model, performing second quantization according to a second quantization level, and performing simulated operation on the deep learning model after the second quantization to obtain a second precision, wherein the second quantization level is lower than the first quantization level;
if the difference between the first precision and the second precision meets a preset condition, performing improved quantization on the first node;
deploying the improved quantized deep learning model to an acceleration unit external to the processing unit.
Optionally, the predetermined condition comprises: the difference is greater than a predetermined difference threshold.
Optionally, after obtaining the first precision, the method further includes: for second nodes except the first nodes of the deep learning model, third quantization is carried out according to a second quantization level, and the deep learning model after the third quantization is simulated to run to obtain third precision; the predetermined conditions include: if the difference between the first precision and the second precision is greater than the difference between the first precision and the third precision.
Optionally, the first quantization and the second quantization are performed using a first quantization algorithm selected from a set of predetermined quantization algorithms, and the improved quantization is performed using a second quantization algorithm selected from the set of predetermined quantization algorithms, wherein a quantization precision level of the second quantization algorithm is greater than a quantization precision level of the first quantization algorithm.
Optionally, the first accuracy meets a predetermined accuracy criterion.
Optionally, the deploying the improved quantized deep learning model to an acceleration unit outside the processing unit includes: the improved quantized deep learning model is converted into a model recognizable by an instruction set of the acceleration unit and deployed to the acceleration unit.
Optionally, the first quantization level is a 16-bit integer number and the second quantization level is an 8-bit integer number.
In the embodiment of the disclosure, each node of the deep learning model is quantized according to a first quantization level and then operated to obtain a first precision, then, for the first node, second quantization is performed according to a second quantization level, and after simulation operation, a second precision is obtained, wherein the second quantization level is lower than the first quantization level. If the difference of the second precision relative to the first precision is reduced to meet the preset condition, the second quantization effect on the first node according to the second quantization level is not good, and the precision is reduced too much, and then the improved quantization is carried out on the second node. If the predetermined condition is not met, the second quantization effect on the first node according to the second quantization level is good, and the quantized model can be continuously used without reducing the precision too much. In this way, the loss of precision due to quantization is automatically reduced.
Drawings
The foregoing and other objects, features, and advantages of the disclosure will be apparent from the following description of embodiments of the disclosure, which refers to the accompanying drawings in which:
FIG. 1 is a block diagram of a data center to which one embodiment of the present disclosure is applied;
FIG. 2 is an internal block diagram of a server in a data center according to one embodiment of the present disclosure;
FIG. 3 is an internal block diagram of a processing unit and acceleration unit within a server according to one embodiment of the present disclosure;
FIG. 4 is an internal block diagram of an acceleration unit core according to one embodiment of the present disclosure;
FIG. 5 is an exemplary architecture diagram for compilation and optimization of deep learning models;
FIG. 6 illustrates model states at different stages of a deep learning model provided by embodiments of the present disclosure;
FIG. 7 is a flow chart illustrating a tuning method of a deep learning model according to an embodiment of the disclosure;
fig. 8 shows a first precision and second precision difference list and a distribution curve of each node of the deep learning model in the embodiment of the disclosure.
Detailed Description
The present disclosure is described below based on examples, but the present disclosure is not limited to only these examples. In the following detailed description of the present disclosure, some specific details are set forth in detail. It will be apparent to those skilled in the art that the present disclosure may be practiced without these specific details. Well-known methods, procedures, and procedures have not been described in detail so as not to obscure the present disclosure. The figures are not necessarily drawn to scale.
The following terms are used herein.
Deep learning model: deep Learning is a new research direction in the field of Machine Learning (ML), which is introduced into Machine Learning to make it closer to the original target, Artificial Intelligence (AI). The internal rules and the expression levels of the sample data are deeply learned, and the information obtained in the learning process is greatly helpful for the interpretation of data such as characters, images and sounds. The final aim of the method is to enable the machine to have the analysis and learning capability like a human, and to recognize data such as characters, images and sounds. And the deep learning model is a deep learning model.
An acceleration unit: in the case where the conventional processing unit is not efficient in some special-purpose fields (for example, processing images, processing various operations of the deep learning model, and the like), the processing unit designed to increase the data processing speed in these special-purpose fields is mainly a special processing unit designed to accelerate the operation processing speed of the deep learning model in the embodiment of the present disclosure.
A processing unit: the processing unit, also called a scheduling unit, schedules the acceleration units and allocates instruction sequences to be executed to each acceleration unit, and the processing unit can adopt various forms such as a Central Processing Unit (CPU), an Application Specific Integrated Circuit (ASIC), a Field Programmable Gate Array (FPGA) and the like.
And (3) quantification: the model parameters (e.g., weights) and input parameters of the nodes in the deep learning model are converted from high precision data types to low precision data types, thereby reducing the behavior on data throughput and storage space requirements.
The process of quantization is briefly described below in connection with a specific example of quantization.
In quantization, in order to convert the model parameters and input parameters of the node into data of low-precision data type, it is first necessary to know the value ranges of the model parameters and input parameters, for example, the maximum value is 100, the minimum value is-100, if converting into binary 8-bit integer, let 2 be8A 1, i.e. 11111111, corresponds to a maximum value of 100 and a 0, i.e. 00000000, corresponds to a minimum value of-100. In this case, the method is equivalent to dividing the interval length of 200 in total between-100 and 100 into (2) on average8-1) cells, each cell having a length of 200/(2)8-1) 0.784. Thus, for any value between-100 and 100, the cell in which it is located can be determined. Taking the left end point or the right end point value of the cell asIs a quantized value. For example, for 50, [50- (-100)]The value of/0.784 is 191.3, which corresponds to the 191 th cell, the left end point is 191, i.e., 10111111, and the quantized value is 10111111.
In the case of linear quantization, quantization may be performed by the following formula. δ is a scaling factor, which is equivalent to the difference in the values before quantization being represented by the value after quantization per unit. δ is the maximum x input by the quantization to be performedmaxMinimum value xminAnd (6) determining. It will [ x ]min,xmaxThe input to be quantized is quantized to any integer between 0 and n-1 (including 0 and n-1). Let q (x) be the quantized value of the input x to be quantized, and have the formula:
wherein, clamp is a limit function, and formula 1 represents round ((x-x)min) /δ) is limited to between 0 and n-1. If round ((x-x)min) /δ) is greater than n-1, the value of equation 1 is n-1; if round ((x-x)min) δ) is less than 0, the value of formula 1 is 0; if round ((x-x)min) A/δ) is between 0 and n-1, the value of equation 1 is round ((x-x)min)/δ)。
The scaling factor δ is calculated as follows:
δ=[max(xmax)-min(xmin)]/(n-1) formula 2
Quantization level: model parameters (e.g., weights) and input parameters of the nodes in the quantization are converted into low precision data types. For example, a 32-bit floating point number is converted to an 8-bit integer number or a 16-bit integer number, and the 8-bit integer number and the 16-bit integer number are different quantization levels.
And (3) node: the minimum unit of independent operation in the deep learning model receives input parameters, and generates output after the operation of own weight parameters or parameters (such as hyper parameters) in other models. There are several layers in the learning model of the virus, each layer has several nodes, and the output of each node is the input of the node of the next layer.
Precision: deep learning models actually use a measure of the accuracy of post-inference (inference).
Calibration: as described above, in quantization, the value range of the input parameter of the node in the model is first determined, then the maximum value of the value range corresponds to the quantized maximum value, and the minimum value of the value range corresponds to the quantized minimum value, so that quantization is performed. And determining the value range of the input parameter of each node in the deep learning model, namely calibrating. The input parameters input to a certain node of the deep learning model at a plurality of time points can be extracted, and the value range of the input parameters of the node is summarized from the input parameters of the time points. Calibration is the basis for quantization.
Data center
A data center is a globally collaborative network of devices that is used to communicate, accelerate, present, compute, store data information over an internet network infrastructure. In future development, the data center will become an asset for enterprise competition. With the popularization of data center applications, artificial intelligence and the like are increasingly applied to data centers. Deep learning is an important technology of artificial intelligence, and is widely applied to big data analysis and operation of a data center.
In a conventional large data center, the network structure is generally as shown in fig. 1, i.e., a hierarchical inter-networking model (internetworking model). This model contains the following parts:
the server 140: each server 140 is a processing and storage entity of a data center in which the processing and storage of large amounts of data is performed by the servers 140.
The access switch 130: the access switch 130 is a switch used to access the server 140 to the data center. One access switch 130 accesses multiple servers 140. The access switches 130 are typically located on Top of the Rack, so they are also called set-Top (Top of Rack) switches, which physically connect the servers.
Aggregation switch 120: each aggregation switch 120 connects multiple access switches 130 while providing other services such as firewalls, intrusion detection, network analysis, and the like.
The core switch 110: core switches 110 provide high-speed forwarding of packets to and from the data center and connectivity for aggregation switches 120. The entire data center network is divided into an L3 layer routing network and an L2 layer routing network, and the core switch 110 provides a flexible L3 layer routing network for the entire data center network.
Typically, the aggregation switch 120 is the demarcation point between L2 and L3 layer routing networks, with L2 below and L3 above the aggregation switch 120. Each group Of aggregation switches manages a Point Of Delivery (POD), within each Of which is a separate VLAN network. Server migration within a POD does not have to modify the IP address and default gateway because one POD corresponds to one L2 broadcast domain.
A Spanning Tree Protocol (STP) is typically used between aggregation switch 120 and access switch 130. STP makes only one aggregation layer switch 120 available for a VLAN network and the other aggregation switches 120 are used in the event of a failure (dashed lines in the upper figure). That is, at the level of aggregation switches 120, no horizontal scaling is done, since only one is working even if multiple aggregation switches 120 are added.
Server
Since the server 140 is the real processing device of the data center, fig. 2 shows a block diagram of the internal structure of the server 140. The server 140 includes a bus-connected memory 210, a cluster of processing units 270, and a cluster of acceleration units 280. The cluster of processing units is also called a cluster of scheduling units. Processing unit cluster 270 includes a plurality of processing units 220. The processing unit 220 is also called a scheduling unit. The acceleration unit cluster 280 includes a plurality of acceleration units 230. The acceleration unit is a special processing unit designed to accelerate the operation processing speed of the deep learning model in the embodiment of the present disclosure, and may be embodied as a processing unit specially designed for the operation processing of the deep learning model, a Graphics Processing Unit (GPU), an Application Specific Integrated Circuit (ASIC), a Field Programmable Gate Array (FPGA), or the like. The processing unit is a unit for scheduling the acceleration units and distributing instruction sequences to be executed to each acceleration unit, and can adopt various forms such as a Central Processing Unit (CPU), an Application Specific Integrated Circuit (ASIC), a Field Programmable Gate Array (FPGA) and the like.
In the traditional architecture design of the processing unit, a control unit and a storage unit occupy a large part of space in the architecture, and the space occupied by a computing unit is insufficient, so that the traditional architecture design is very effective in logic control and is not efficient in large-scale parallel computing. Therefore, various special acceleration units have been developed to perform more efficient processing for increasing the operation speed for calculations of different functions and different fields. The acceleration unit provided by the invention is a processing unit special for accelerating the operation processing speed of the deep learning model. The deep learning model is a processing unit which adopts a data-driven parallel computing architecture and is used for processing a large amount of operations (such as convolution, pooling and the like) of each deep learning model node. Because data in a large number of operations (such as convolution, pooling and the like) of each deep learning model node and intermediate results are closely related in the whole calculation process and are frequently used, the existing processing unit framework is used, and because the memory capacity in a core of a processing unit is very small, a large number of frequently accessed out-of-core memories are needed, and the processing efficiency is low. By adopting the accelerating unit special for accelerating the operation processing speed of the deep learning model, each core of the accelerating unit is provided with the on-chip memory suitable for the storage capacity used for the calculation of the deep learning model, so that the frequent access to the memory outside the core is avoided, the processing efficiency can be greatly improved, and the calculation performance is improved.
The acceleration unit 230 is to accept the schedule of the processing unit 220. As shown in fig. 2, various deep learning models including nodes of these models, weight data of the nodes, and the like are stored in the memory 210. These deep learning models are deployed by a processing unit 220 to an acceleration unit 230 in fig. 2 when needed. That is, the processing unit 220 may send addresses of parameters in the model (such as weights of the nodes) in the memory 210 to the acceleration unit 230 in the form of instructions. When the acceleration unit 230 actually uses the deep learning model for calculation, the parameters (e.g., weights) are addressed directly in the memory 210 according to their addresses in the memory 210, and are temporarily stored in its on-chip memory. When the acceleration unit 230 actually uses the deep learning model for calculation, the processing unit 220 further sends the input parameters of the model to the acceleration unit 230 in the form of instructions, and temporarily stores the input parameters in the on-chip memory of the acceleration unit 230. The acceleration unit 230 can then perform inferential calculations based on these input parameters and parameters (e.g., weights) in the model. The disclosed embodiments primarily focus on the quantization process before the processing unit 220 deploys the deep learning model to the acceleration unit 230. The quantization will be described in detail later.
Internal structure of processing unit and accelerating unit
How the processing unit 220 schedules the acceleration unit 230 to operate will be described in detail below with reference to the internal structure diagrams of the processing unit 220 and the acceleration unit 230 in fig. 3.
As shown in fig. 3, processing unit 220 includes a plurality of processor cores 222 and a cache 221 shared by the plurality of processor cores 222. Each processor core 222 includes an instruction fetch unit 203, an instruction decode unit 224, an instruction issue unit 225, and an instruction execution unit 226.
Instruction fetch unit 223 is configured to move an instruction to be executed from memory 210 into an instruction register (which may be one of register files 229 shown in fig. 3 for storing instructions) and receive or compute a next instruction fetch address according to an instruction fetch algorithm, which includes, for example: the address is incremented or decremented according to the instruction length.
After fetching the instruction, the processing unit 220 enters an instruction decode stage, and the instruction decode unit 224 decodes the fetched instruction according to a predetermined instruction format to obtain operand fetch information required by the fetched instruction, in preparation for operation by the instruction execution unit 225. The operand fetch information points, for example, to an immediate, register, or other software/hardware capable of providing source operands.
An instruction issue unit 225 is located between the instruction decode unit 224 and the instruction execution unit 226 for scheduling and control of instructions to efficiently allocate individual instructions to different instruction execution units 226, enabling parallel operation of multiple instructions.
After instruction issue unit 225 issues an instruction to instruction execution unit 226, instruction execution unit 226 begins executing the instruction. But if the instruction execution unit 226 determines that the instruction should be executed by an acceleration unit, it is forwarded to the corresponding acceleration unit for execution. For example, if the instruction is a deep learning model inference (inference) instruction, instruction execution unit 226 no longer executes the instruction, but rather sends the instruction over the bus to acceleration unit 230 for execution by acceleration unit 230.
The acceleration unit 30 internally includes a plurality of cores 236 (4 cores are shown in fig. 3, but it will be understood by those skilled in the art that other numbers of cores 236, a command processor 237, a direct memory access mechanism 235, and a bus channel 231 may be included in the acceleration unit 230.
Direct Memory Access (DMA) mechanism 235 is a function provided by some computer bus architectures that enables data to be written from an attached device directly to the Memory on a computer motherboard. Compared with the mode that all data transmission between the devices needs to pass through the processing unit, the mode greatly improves the efficiency of data access. Due to such a mechanism, the core of the acceleration unit 230 can directly access the memory 210, read parameters (such as the weight of each node) in the deep learning model, and the like, and greatly improve the data access efficiency.
The command handler 237 distributes instructions sent by the processing unit 220 to the acceleration unit 230 for execution by the core 236. Instruction execution unit 226 sends a sequence of instructions to be executed that require execution by acceleration unit 230 to acceleration unit 230. After entering from the bus channel 231, the instruction sequence to be executed is buffered in the command processor 237, and the command processor 237 selects the core 236 to allocate the instruction sequence to its execution. In addition, the command processor 237 is also responsible for synchronizing operations between the cores 236.
Accelerating unit core
FIG. 4 is an internal block diagram of an acceleration unit core according to one embodiment of the present disclosure.
In one embodiment, as shown in fig. 4, the accelerator core 236 includes a tensor engine 310, a pooling engine 320, a memory copy engine 330, a sequencer 350, an instruction buffer 340, an on-chip memory 360, and a constant buffer 370.
The instruction sequence assigned by the command processor 237 to the accelerator unit core 236 first enters the instruction buffer 340 for buffering. The sequencer 350 then fetches instructions from the instruction buffer 340 in a first-in-first-out order, and assigns the instructions to either the tensor engine 310 or pooling engine 320 for execution based on their properties. The tensor engine 310 is responsible for handling related operations such as convolution and matrix multiplication in the deep learning model. The pooling engine 320 is responsible for handling pooling operations in the deep learning model. The memory copy engine 330 is a unit dedicated to handling data copies, where a data copy includes copying some data from the on-chip memory 360 to memory shared by the cores 236, or the on-chip memory 360 of other cores 236, due to the potential for overflow of the on-chip memory 360. The sequencer 350 determines whether the fetched instruction is to be assigned to the tensor engine 310, the pooling engine 320, or the memory copy engine 330, depending on the operational nature of the fetched instruction, such as convolution, matrix multiplication, pooling, or data copying.
The on-chip memory 360 is an in-core memory that stores the weight parameters in the deep learning model, as well as input parameters and various intermediate results when the deep learning model is actually used. The constant buffer 370 is a buffer that stores other constant parameters (e.g., hyper-parameters in the neural network model) in the deep learning model in addition to the weight parameters. As described above, in the process that the processing unit 220 configures the deep learning model in the acceleration unit 230 in advance, the processing unit 220 sends the addresses of the parameters in the model in the memory 210 to the acceleration unit 230 in the form of instructions. These parameters include the weight of the node and other parameters (e.g., hyper-parameters). For the weight, the acceleration unit 230 fetches the actual deep learning model from the corresponding location of the storage 210 and puts the fetched model into the on-chip memory 360 during the actual deep learning model operation. For other parameters, the acceleration unit 230 fetches the corresponding position from the memory 210 during the actual deep learning model operation, and places the fetched position in the constant buffer 370. In addition, when an instruction to actually start inference (inference) is assigned to the core 236 by the command processor 237 for execution, the input parameters in the instruction (input to the deep learning model) are also stored in the on-chip memory 360. In addition, after the tensor engine 310 and the pooling engine 320 perform convolution or pooling operation, various intermediate results obtained are also stored in the on-chip memory 360.
Quantization operation
An exemplary architecture diagram for deep learning model compilation and optimization is described below in conjunction with FIG. 5.
Referring to the top view, the architecture diagram includes an application layer 401, a frame layer 402, and a functional layer 403 from top to bottom.
The application layer 401 is an application of the deep learning model in a specific scene, such as vision 405, natural language 406, recommendation 407, and the like. The applications are built by using the architecture, and the architecture can be called in the applications to provide a running interface so as to obtain reasoning capability in the applications.
The framework layer 402 integrates open source platforms such as TensorFlow408, MXNet 409, Caffe 410, etc., and provides an operator library and tools so that optimization and improvement of various algorithms can continue. TensorFlow408 is a symbolic mathematical system based on data flow programming, and is widely applied to programming realization of various machine learning (machine learning) algorithms. MXNet 409 is a deep learning library of Amazon (Amazon) selection. Caffe 410, called the conditional Architecture for Fast Feature Embedding, is a deep learning framework with expressiveness, speed and thinking modularity.
The functional layer 403 includes a compilation stack 403 and a run stack 404. The compilation stack 403 is used to translate (convert) 411, quantize (equatation) 412, optimize (optimization)413, and compile 414 the various models. Translation 411 is the internal data translation of the provisioning model into an Intermediate (IR) format. Quantization 412 is the conversion of the weight parameters in the deep learning model and the input parameters to the deep learning model from a high precision data type to a low precision data type. Optimization 413 is to perform operations such as fusion of operators inside the model, multi-model optimization linkage, and the like. The compiling 414 is optimizing the model based on hardware (e.g., neural network processor) to generate a binary model that the hardware can recognize. The run stack 404 includes a run API 415, an execution manager 416, a user mode driver 417, and a kernel mode driver 418. Resource allocation, bulk scheduling, performed by the execution manager 416. The optimized run API 415 is used to provide interfaces that various runtimes can call. User mode driver 417 and functions to provide hardware commands, resource scheduling, in kernel mode. The kernel mode driver 418 is used to provide task scheduling and hardware control in the kernel mode, and the like.
The quantization operation referred to herein, i.e., the quantization 412 referred to above, generally involves converting the weight parameters in the deep learning model and the input parameters to the deep learning model from a high precision data type to a low precision data type. This is explained below using a convolutional neural network as an example. The convolutional neural network includes a plurality of convolutional layers, each layer having a plurality of nodes. The node is the minimum calculation unit for obtaining the output characteristic by calculation according to the input in the deep learning model. The characteristics of the node output of each convolutional layer are transmitted to the node of the next convolutional layer as the input to be received by the next convolutional layer. Each layer is subjected to matrix multiplication through a convolution kernel and then subjected to summation calculation to obtain a characteristic graph, the convolution kernel is a two-dimensional matrix, each numerical value in the two-dimensional matrix can be regarded as a weight parameter, and the number of the weight parameters is huge because the convolution neural network has a plurality of layers and the convolution kernel of each layer has a plurality of weight parameters. The number of input parameters in the input matrix multiplied by the convolution kernel is also huge, corresponding to the weight parameters. In the model training stage, the weight parameters are generally stored and calculated by using 32-bit floating point numbers, and the quantization operation is to convert the weight parameters from the 32-bit floating point numbers to a data type with lower precision for storage and calculation, for example, to an 8-bit integer (signed integer or unsigned integer) or a 16-bit floating point type for storage and calculation. The quantization operation may transform only a portion of the weight parameters, e.g., transform only the convolution kernels of a portion of the convolutional layers, with the convolution kernels of the remaining portion of the convolutional layers remaining unchanged. The quantization operation also converts each parameter in the actual input matrix to a lower precision data type for storage and calculation, corresponding to the weight parameters. The processing unit 220 generally deploys the quantized deep learning model to the acceleration unit 230 in the form of instructions after completing the quantization operation. That is, the processing unit 220 converts each weight of the deep learning model stored in the memory 210 from a high-precision data type to a low-precision data type, thereby improving data throughput and saving storage space. Processing unit 220 then sends the addresses of these quantized weights in memory 210 to acceleration unit 230 in the form of instructions. When the deep learning model is actually run to make inference, the acceleration unit 230 can directly fetch the addresses from the memory 210 and put the addresses into the on-chip core 360 of the acceleration unit 230 to run. Meanwhile, when the deep learning model is actually run, the processing unit 220 also converts the quantized model actual input parameters from the high-precision data type to the low-precision data type, and notifies the acceleration unit 230 of their addresses in the memory 210 in the form of instructions, so that the acceleration unit 230 can run the model by using the input parameters and the weight parameters, thereby improving data throughput and saving storage space.
FIG. 6 illustrates model states at different stages of a deep learning model provided by embodiments of the present disclosure. Referring to fig. 6, an original model 501 is a high-precision deep learning model trained in advance, and a quantized model 502 is a deep learning model obtained by quantizing the original model 501. The quantization operation may be performed in steps, for example, calibration is performed first to obtain a calibration model, and then the quantization operation is performed based on the calibration model to obtain the quantization model 502. And calibrating, namely determining the behavior of the value range of the input parameter of each node in the deep learning model. The input parameters input to a certain node of the deep learning model at a plurality of time points can be extracted, and the value range of the input parameters of the node is summarized from the input parameters of the time points. Calibration is the basis for quantization.
Some deep learning models perform calibration and quantization operations in a combined manner, i.e., input the original model 501 and output the quantized model 502 after the calibration and quantization operations. And after the quantization operation is finished, converting the high-precision model into a low-precision model. The quantization model 502 is then converted into an acceleration unit model 503. The acceleration unit model 503 is also a low precision model. The acceleration unit model 503 may be recognized by the instruction set of the acceleration unit 230 so as to be executable on the acceleration unit 230, whereas the original model 501 and the quantized model 502 may only be recognized by the instruction set of the processing unit 220 so as to be executable on the processing unit 220.
It should be noted that fig. 6 is only used for illustrating the execution of the model and not for illustrating the storage of the model, and in fact, the original model 501, the quantization model 502 and the acceleration unit model 503 are all stored in the memory 210 and are loaded into the processing unit 220 or the acceleration unit 230 only when executed.
It should also be noted that the model in general terms actually contains code and data samples that implement the corresponding algorithm. Code exists in many forms, such as source code (e.g., Java, Python implementations) and executable code (secondary system code). The source code can be recognized and executed by the processor after the executable code is compiled, so that the above-mentioned conversion of the quantization model 502 into the acceleration unit model 503 and thus the instruction set of the acceleration unit 230 means that a part of the source code of the quantization model is modified and compiled into the executable code, and then the executable code can be recognized by the instruction set of the acceleration unit 230, and so on. But such strict descriptions will not be made in every step herein for the sake of simplicity of description.
Quantization tuning strategy of the disclosed embodiments
In the actual operation of the deep learning model, the situation of insufficient precision is often encountered. The degradation of precision due to quantization is an important cause of insufficient precision. How to minimize the precision loss in quantization is an urgent problem to be solved. In order to solve this problem, in the embodiments of the present disclosure, each node of the deep learning model is quantized according to a first quantization level and then operated to obtain a first precision, and then, for the first node, a second quantization level lower than the first quantization level is performed to obtain a second precision after simulation operation. If the difference of the second precision relative to the first precision is reduced to meet the preset condition, the second quantization effect on the first node according to the second quantization level is not good, and the precision is reduced too much, and then the improved quantization is carried out on the second node. If the predetermined condition is not met, the second quantization effect on the first node according to the second quantization level is good, and the quantized model can be continuously used without reducing the precision too much. In this way, the loss of precision due to quantization is automatically reduced.
In the disclosed embodiment, the processing unit 220 first determines a first quantization level, which in a preferred embodiment should bring about an accuracy that meets a predetermined accuracy criterion. Thus, in the following process, after quantization is performed for the first node at a second quantization level lower than the first quantization level, if the resulting second precision is not good, improved quantization may be performed. Therefore, it is desirable that the precision by the first quantization level satisfies a predetermined precision criterion for reference.
To ensure that the precision it brings should meet a predetermined precision criterion, in one embodiment the first quantisation stage may be selected from a plurality of candidate quantisation stages. And selecting any one candidate quantization level from the multiple candidate quantization levels, carrying out first quantization on each node of the deep learning model according to the selected candidate quantization level, and simulating and operating the deep learning model after the first quantization to obtain a first precision. Each candidate quantization level is taken from the plurality of candidate quantization levels to obtain a corresponding one of the first accuracies. Therefore, after the candidate quantization levels are all selected respectively, a plurality of first precisions corresponding to the candidate quantization levels are obtained. In one embodiment, the predetermined accuracy criterion may be that the accuracy is greater than a predetermined accuracy threshold. In this way, any one of the plurality of first precisions corresponding to the plurality of candidate quantization levels with a first precision greater than the predetermined precision threshold may be used as the first quantization level. In another embodiment, the predetermined accuracy criterion may be the highest accuracy among the accuracies corresponding to the plurality of candidate quantization levels. In this way, the highest one of the first accuracies corresponding to the candidate quantization levels is selected, and the corresponding candidate quantization level is used as the first quantization level.
The processing unit 220 performs a first quantization on each node of the deep learning model according to a first quantization level, and then performs a simulation operation on the deep learning model after the first quantization to obtain a first precision. The first quantization step is the desired first quantization step if said first precision meets a predetermined precision criterion.
Here, the first quantizing each node of the deep learning model according to the first quantization level may include: calibrating each node of the deep learning model to obtain a calibration model; the input parameters and the weight parameters for each node in the calibration model are quantized according to a first quantization level. During calibration, the input parameters input into each node at a plurality of time points can be extracted for each node in the deep learning model, and the value range of the input parameters of the node can be automatically summarized. For example, the range between the lowest value and the highest value of these input parameters is used as the value range of the input parameters. The configuration parameters selected during quantization are associated with this range, and are selected according to this range. After the value range of the input parameter of each node is determined, a proper quantization configuration parameter can be selected according to the value range for quantization.
In one embodiment, the quantization configuration parameter may comprise a scaling factor δ. As described above, linear quantization can be performed by equation 1:
the scaling factor δ corresponds to the difference in the values before quantization represented by the quantized value per unit. δ is the maximum x input by the quantization to be performedmaxMinimum value xminAnd (6) determining. It will [ x ]min,xmaxThe input x to be quantized is quantized to any integer between 0 and n-1 (including 0 and n-1). q (x) is the value into which the input x to be quantized is quantized. clamp is a limiting function, and equation 1 shows that round ((x-x)min) /δ) is limited to between 0 and n-1. If round ((x-x)min) /δ) is greater than n-1, the value of equation 1 is n-1; if round ((x-x)min) δ) is less than 0, the value of formula 1 is 0; if round ((x-x)min) A/δ) is between 0 and n-1, the value of equation 1 is round ((x-x)min)/δ)。
The scaling factor δ is calculated according to equation 2:
δ=[max(xmax)-min(xmin)]/(n-1) formula 2
After each node of the deep learning model is subjected to the first quantization according to the first quantization level, the processing unit 220 starts to simulate and run the quantized deep learning model. As previously described, the deep learning model is generally executed by the processing unit 220 deployed to the acceleration unit 230. That is, the processing unit 220 informs the acceleration unit 230 of the address of the weight parameter in the model stored in the storage 210 in the form of an instruction, so that the acceleration unit 230 loads to its local on-chip memory 360 when actually running the model. The processing unit 220 issues the acceleration unit 230 to execute only because the acceleration unit 230 is more efficient at processing the computation instructions in the deep learning model, not because the processing unit 220 cannot execute, except that the processing unit 220 is not as efficient as the acceleration unit 230 at executing the instructions in the deep learning model. The meaning of emulation is that instructions that would otherwise be given to the acceleration unit 230 for execution are executed by the processing unit 220 itself, although it is not efficient to execute them. The processing unit 220 generates the accuracy of the model as the first accuracy after the simulation run. The precision is a measure of the accuracy of the inference after the deep learning model is actually used. The selection of the first quantization step is successful if the first precision meets a predetermined precision criterion. For example, the first precision is 93%, and the predetermined precision criterion is greater than or equal to 85%, when it is determined that the first quantization level selection is successful. In one example, the node parameters of the original deep learning model are stored as 32-bit floating point numbers and the first quantization level is a 16-bit integer number.
Then, single-node quantization degradation is respectively carried out on the deep learning models, and only one node in the deep learning models is subjected to quantization degradation according to a first quantization level and then is subjected to quantization degradation according to a second quantization level lower than the first quantization level, and other nodes are still quantized according to the first quantization level. Assume that the node selected for degraded quantization is the first node. And after second quantization is carried out on the first node, simulating and operating the deep learning model generated at the moment to obtain second precision. At this time, it is possible to decide whether or not to perform the improved quantization of the first node by judging whether or not the difference of the second precision from the first precision drop satisfies a predetermined condition.
Here, the second quantization according to the second quantization level also includes the above two procedures of calibration and parameter quantization, and thus is not described in detail. The simulation run of the model is also performed by the processing unit 220 instead of the acceleration unit 230.
In one embodiment, the predetermined condition includes: the difference is greater than a predetermined difference threshold. That is, after the first node is subjected to second quantization according to the second quantization level, the quantized depth learning model is operated, and if the obtained second precision is too large relative to the reduction of the first precision, which indicates that the precision deviation is large due to the second quantization of the first node according to the second quantization level, the improved quantization is considered. A method of improving quantization is described below.
In addition, the degradation quantization may be performed not only for one node but also for a plurality of nodes, and the depth learning model after the degradation quantization for each node may have different accuracies and different degradation differences with respect to the first accuracy. If the difference of the accuracy reduction relative to the first accuracy is larger for a certain node after the reduction quantization is performed on the node than for other nodes, the improvement quantization is considered. In this embodiment, the predetermined condition is not an absolute condition, but a relative condition, which is to compare the accuracy degradation generated after quantization is degraded on the other nodes with the accuracy degradation generated after quantization is degraded on the node.
In this embodiment, for a second node other than the first node of the deep learning model, third quantization may be performed according to a second quantization level, and the deep learning model after the third quantization is simulated and run, so as to obtain a third precision. The predetermined conditions include: if the difference between the first precision and the second precision is greater than the difference between the first precision and the third precision.
For example, the first precision is 99%. And carrying out second quantization on the node A of the deep learning model according to a second quantization level, wherein the second precision obtained after simulation operation is 96.5%, and is reduced by 2.5% relative to the first precision. If the other node B of the deep learning model is subjected to second quantization according to the second quantization level, the second precision obtained after simulation operation is 97.5%, which is reduced by 1.5% relative to the first precision. At this time, since 2.5% > 1.5%, it is shown that node a is quantized according to the second quantization level less effectively than node B. Therefore, improved quantization may be considered.
In one extreme case, each node may be quantized with a single point of degradation. In this single point of downgrade quantization, the node is quantized according to the second quantization level, and the other nodes are still quantized according to the first quantization level. For example, where the first quantization level is a 16-bit integer number, the second quantization level may be an 8-bit integer number. Thus, the weight and the input parameters of the first node of the deep learning model are changed from 16-bit integer number quantization to 8-bit integer number quantization, and the weights and the input parameters of other nodes are still quantized by 16-bit integer numbers to obtain the deep learning model after the first node is quantized and degraded; changing the quantization of 16-bit integer numbers into 8-bit integer numbers for the weights and input parameters of the second node of the deep learning model, still quantizing the weights and input parameters of other nodes by using 16-bit integer numbers, obtaining the deep learning model … … after the quantization and degradation of the second node, and so on to obtain the deep learning model after the quantization and degradation of each node in the deep learning model, and respectively generating the precision after the quantization and degradation of each node after the simulation operation. After the quantization of which node is degraded, the accuracy of the model is reduced most, which indicates that the node is likely to be a node which has a serious influence on the accuracy of the model after quantization, and the node needs to be improved and quantized.
As an example, the left side of fig. 8 lists the difference between the precision generated after the quantization degradation of each node in the deep learning model and the first precision in the order from high to low. It can be seen that the accuracy of the degraded node with node index 46 is 17227 compared to the first accuracy, and the accuracy of the degraded node with node index 44 is 15311 … … compared to the first accuracy, and the right side of fig. 8 shows the profile curves of the accuracy differences of these nodes. The abscissa of the profile is the node name and the ordinate is the resulting accuracy difference. The accuracy differences of each node are arranged in the order from high to low, and are represented as points on the distribution diagram, and the points are connected in sequence to obtain a curve as shown in the right side of fig. 8. When the predetermined condition is that the difference is greater than a predetermined difference threshold, if the predetermined difference threshold is set to 1000, the differences of node indexes 46, 44, 56, 47, 55, 48, 45, 49, 50, 190, 118, 17 are all greater than 1000, and they are determined as nodes for which improved quantization is required.
Specific methods of improving quantization are discussed below. While the foregoing equations (1) and (2) provide one quantization algorithm, there may be other quantization algorithms in practice. These quantization algorithms are of a quantization precision level. The quantization accuracy level is a level obtained by previously evaluating the accuracy of quantization by using a large amount of basic data and quantizing the data according to different quantization algorithms through a large amount of experiments. For example, the algorithm with higher accuracy is evaluated as class a, the algorithm with general accuracy is evaluated as class B, and the algorithm with lower accuracy is evaluated as class C. In this way, a set of quantization algorithms may be predetermined, each quantization algorithm in the set having a quantization precision level. The first quantization and the second quantization are performed using a first quantization algorithm selected from a set of predetermined quantization algorithms. In performing the improved quantization, a second quantization algorithm selected from a set of predetermined quantization algorithms and having a higher quantization level than the first quantization algorithm may be used. For example, the first quantization algorithm is a quantization algorithm that considers only the scaling coefficient δ as shown in equations 1 and 2 above, and the second quantization algorithm is a quantization algorithm that considers both the scaling coefficient δ and the offset zqThe quantization algorithm of (1). Taking into account both the scaling factor delta and the offset zqThe quantization algorithm of (2) is a quantization algorithm having a quantization precision level one level higher than that of a quantization algorithm considering only the scaling coefficient δ.
The offset zqIs added to account for the zero point problem (error free representation with a floating point number of 0). Since the zero point problem is taken into consideration, it cannot be determined which of (x/δ) is quantized to 0 to n-1 based solely on the value of (x/δ), and the amount of offset z is taken into considerationq. The offset zqThe following calculations were made:
taking into account the offset zqThen, a post-quantization value q (x) is determined from the pre-quantization value x according to the following formula:
then, as described above in conjunction with fig. 6, the improved quantized deep learning model, i.e., quantization model 502, is transformed into a model recognizable by the instruction set of the acceleration unit 230, i.e., acceleration unit model 503, and deployed to the acceleration unit 230.
As shown in fig. 7, an embodiment of the present disclosure further provides an optimization method of a deep learning model, including:
and step 640, deploying the improved and quantized deep learning model to an acceleration unit outside the processing unit.
Since the details of the tuning method are already described in detail in the quantitative tuning strategy section of the embodiment of the present disclosure in combination with the structure diagram, the details are not repeated for saving space.
Commercial value of the disclosed embodiments
The embodiment of the disclosure realizes quantitative tuning in an automatic manner when tuning of the running accuracy of the deep learning model is reduced due to quantization, so that the tuning speed is several times faster, and the method has a good market prospect in the aspect of optimizing the deployment and execution of the deep learning model.
It should be understood that the embodiments in this specification are described in a progressive manner, and that the same or similar parts in the various embodiments may be referred to one another, with each embodiment being described with emphasis instead of the other embodiments. In particular, as for the method embodiments, since they are substantially similar to the methods described in the apparatus and system embodiments, the description is simple, and the relevant points can be referred to the partial description of the other embodiments.
It should be understood that the above description describes particular embodiments of the present specification. Other embodiments are within the scope of the following claims. In some cases, the actions or steps recited in the claims may be performed in a different order than in the embodiments and still achieve desirable results. In addition, the processes depicted in the accompanying figures do not necessarily require the particular order shown, or sequential order, to achieve desirable results. In some embodiments, multitasking and parallel processing may also be possible or may be advantageous.
It should be understood that an element described herein in the singular or shown in the figures only represents that the element is limited in number to one. Furthermore, modules or elements described or illustrated herein as separate may be combined into a single module or element, and modules or elements described or illustrated herein as single may be split into multiple modules or elements.
It is also to be understood that the terms and expressions employed herein are used as terms of description and not of limitation, and that the embodiment or embodiments of the specification are not limited to those terms and expressions. The use of such terms and expressions is not intended to exclude any equivalents of the features shown and described (or portions thereof), and it is recognized that various modifications may be made within the scope of the claims. Other modifications, variations, and alternatives are also possible. Accordingly, the claims should be looked to in order to cover all such equivalents.
Claims (19)
1. A processing unit, comprising:
an instruction fetch unit to retrieve computer instructions from a memory external to the processing unit;
an instruction decode unit to decode the retrieved computer instructions;
an instruction execution unit, configured to execute the decoded computer instructions to implement: after each node of the deep learning model is subjected to first quantization according to a first quantization level, the deep learning model after the first quantization is simulated to run, and first precision is obtained; for a first node of the deep learning model, performing second quantization according to a second quantization level, and performing simulated operation on the deep learning model after the second quantization to obtain a second precision, wherein the second quantization level is lower than the first quantization level; if the difference between the first precision and the second precision meets a preset condition, performing improved quantization on the first node; deploying the improved quantized deep learning model to an acceleration unit external to the processing unit.
2. The processing unit of claim 1, wherein the predetermined condition comprises: the difference is greater than a predetermined difference threshold.
3. The processing unit of claim 1, wherein the instruction execution unit is further to execute the decoded computer instructions to, after obtaining the first precision: for second nodes except the first nodes of the deep learning model, third quantization is carried out according to a second quantization level, and the deep learning model after the third quantization is simulated to run to obtain third precision;
the predetermined conditions include: if the difference between the first precision and the second precision is greater than the difference between the first precision and the third precision.
4. The processing unit of claim 1, wherein the first quantization and the second quantization are performed using a first quantization algorithm selected from a set of predetermined quantization algorithms, and the improved quantization is performed using a second quantization algorithm selected from the set of predetermined quantization algorithms, wherein a quantization precision level of the second quantization algorithm is greater than a quantization precision level of the first quantization algorithm.
5. The processing unit of claim 1, wherein the first precision meets a predetermined precision criterion.
6. The computing device of claim 1, wherein the deploying the refined quantified deep learning model to an acceleration unit external to the processing unit comprises: the improved quantized deep learning model is converted into a model recognizable by an instruction set of the acceleration unit and deployed to the acceleration unit.
7. The computing device of claim 1, wherein the first quantizing each node of the deep learning model according to a first quantization level comprises:
calibrating each node of the deep learning model to obtain a calibration model;
the input parameters and the weight parameters for each node in the calibration model are quantized according to a first quantization level.
8. The computing device of claim 1, wherein the second quantizing, according to a second quantization level, for the first node of the deep learning model comprises:
carrying out calibration operation on a first node of the deep learning model to obtain a calibration model;
and quantizing the input parameters and the weight parameters of the first node in the calibration model according to a second quantization level.
9. The computing device of claim 1, wherein the first quantization level is a 16-bit integer number and the second quantization level is an 8-bit integer number.
10. A computing device, comprising:
a processing unit according to any one of claims 1-9;
a memory for storing the computer instructions;
and the accelerating unit is used for operating the deployed deep learning model.
11. A system on a chip comprising the computing device of claim 10.
12. A data center comprising the system-on-chip of claim 11.
13. A tuning method of a deep learning model comprises the following steps:
after each node of the deep learning model is subjected to first quantization according to a first quantization level, the deep learning model after the first quantization is simulated to run, and first precision is obtained;
for a first node of the deep learning model, performing second quantization according to a second quantization level, and performing simulated operation on the deep learning model after the second quantization to obtain a second precision, wherein the second quantization level is lower than the first quantization level;
if the difference between the first precision and the second precision meets a preset condition, performing improved quantization on the first node;
deploying the improved quantized deep learning model to an acceleration unit external to the processing unit.
14. The method of claim 13, wherein the predetermined condition comprises: the difference is greater than a predetermined difference threshold.
15. The method of claim 13, wherein after obtaining the first precision, the method further comprises: for second nodes except the first nodes of the deep learning model, third quantization is carried out according to a second quantization level, and the deep learning model after the third quantization is simulated to run to obtain third precision;
the predetermined conditions include: if the difference between the first precision and the second precision is greater than the difference between the first precision and the third precision.
16. The method of claim 13, wherein the first quantization and the second quantization are performed using a first quantization algorithm selected from a set of predetermined quantization algorithms, and the improved quantization is performed using a second quantization algorithm selected from the set of predetermined quantization algorithms, wherein a quantization precision level of the second quantization algorithm is greater than a quantization precision level of the first quantization algorithm.
17. The method of claim 13, wherein the first precision meets a predetermined precision criterion.
18. The method of claim 13, wherein the deploying the refined quantified deep learning model to an acceleration unit external to the processing unit comprises: the improved quantized deep learning model is converted into a model recognizable by an instruction set of the acceleration unit and deployed to the acceleration unit.
19. The method of claim 13, wherein the first quantization level is a 16-bit integer number and the second quantization level is an 8-bit integer number.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010092279.6A CN113269320B (en) | 2020-02-14 | 2020-02-14 | Processing unit, computing device, system on chip, data center and related methods |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010092279.6A CN113269320B (en) | 2020-02-14 | 2020-02-14 | Processing unit, computing device, system on chip, data center and related methods |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113269320A true CN113269320A (en) | 2021-08-17 |
CN113269320B CN113269320B (en) | 2024-07-26 |
Family
ID=77227214
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010092279.6A Active CN113269320B (en) | 2020-02-14 | 2020-02-14 | Processing unit, computing device, system on chip, data center and related methods |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113269320B (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114118384A (en) * | 2021-12-09 | 2022-03-01 | 安谋科技(中国)有限公司 | Quantization method of neural network model, readable medium and electronic device |
Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106570559A (en) * | 2015-10-09 | 2017-04-19 | 阿里巴巴集团控股有限公司 | Data processing method and device based on neural network |
CN107256422A (en) * | 2017-06-06 | 2017-10-17 | 上海兆芯集成电路有限公司 | Data quantization methods and device |
CN107646116A (en) * | 2015-05-08 | 2018-01-30 | 高通股份有限公司 | Bit wide for pinpointing neutral net selects |
CN108491928A (en) * | 2018-03-29 | 2018-09-04 | 腾讯科技(深圳)有限公司 | Model parameter training method, device, server and storage medium |
CN108734266A (en) * | 2017-04-21 | 2018-11-02 | 展讯通信(上海)有限公司 | Compression method and device, terminal, the storage medium of deep neural network model |
CN108734264A (en) * | 2017-04-21 | 2018-11-02 | 展讯通信(上海)有限公司 | Deep neural network model compression method and device, storage medium, terminal |
CN108734268A (en) * | 2017-04-21 | 2018-11-02 | 展讯通信(上海)有限公司 | Compression method and device, terminal, the storage medium of deep neural network model |
CN109740737A (en) * | 2018-12-30 | 2019-05-10 | 联想(北京)有限公司 | Convolutional neural networks quantizing method, device and computer equipment |
CN110188880A (en) * | 2019-06-03 | 2019-08-30 | 四川长虹电器股份有限公司 | A kind of quantization method and device of deep neural network |
CN110363281A (en) * | 2019-06-06 | 2019-10-22 | 上海交通大学 | A kind of convolutional neural networks quantization method, device, computer and storage medium |
CN110555508A (en) * | 2018-05-31 | 2019-12-10 | 北京深鉴智能科技有限公司 | Artificial neural network adjusting method and device |
CN110555450A (en) * | 2018-05-31 | 2019-12-10 | 北京深鉴智能科技有限公司 | Face recognition neural network adjusting method and device |
CN110598838A (en) * | 2018-06-13 | 2019-12-20 | 国际商业机器公司 | Statistical perceptual weight quantization |
CN110738315A (en) * | 2018-07-18 | 2020-01-31 | 华为技术有限公司 | neural network precision adjusting method and device |
-
2020
- 2020-02-14 CN CN202010092279.6A patent/CN113269320B/en active Active
Patent Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107646116A (en) * | 2015-05-08 | 2018-01-30 | 高通股份有限公司 | Bit wide for pinpointing neutral net selects |
CN106570559A (en) * | 2015-10-09 | 2017-04-19 | 阿里巴巴集团控股有限公司 | Data processing method and device based on neural network |
CN108734268A (en) * | 2017-04-21 | 2018-11-02 | 展讯通信(上海)有限公司 | Compression method and device, terminal, the storage medium of deep neural network model |
CN108734266A (en) * | 2017-04-21 | 2018-11-02 | 展讯通信(上海)有限公司 | Compression method and device, terminal, the storage medium of deep neural network model |
CN108734264A (en) * | 2017-04-21 | 2018-11-02 | 展讯通信(上海)有限公司 | Deep neural network model compression method and device, storage medium, terminal |
CN107256422A (en) * | 2017-06-06 | 2017-10-17 | 上海兆芯集成电路有限公司 | Data quantization methods and device |
CN108491928A (en) * | 2018-03-29 | 2018-09-04 | 腾讯科技(深圳)有限公司 | Model parameter training method, device, server and storage medium |
CN110555508A (en) * | 2018-05-31 | 2019-12-10 | 北京深鉴智能科技有限公司 | Artificial neural network adjusting method and device |
CN110555450A (en) * | 2018-05-31 | 2019-12-10 | 北京深鉴智能科技有限公司 | Face recognition neural network adjusting method and device |
CN110598838A (en) * | 2018-06-13 | 2019-12-20 | 国际商业机器公司 | Statistical perceptual weight quantization |
CN110738315A (en) * | 2018-07-18 | 2020-01-31 | 华为技术有限公司 | neural network precision adjusting method and device |
CN109740737A (en) * | 2018-12-30 | 2019-05-10 | 联想(北京)有限公司 | Convolutional neural networks quantizing method, device and computer equipment |
CN110188880A (en) * | 2019-06-03 | 2019-08-30 | 四川长虹电器股份有限公司 | A kind of quantization method and device of deep neural network |
CN110363281A (en) * | 2019-06-06 | 2019-10-22 | 上海交通大学 | A kind of convolutional neural networks quantization method, device, computer and storage medium |
Non-Patent Citations (1)
Title |
---|
蔡瑞初;钟椿荣;余洋;陈炳丰;卢冶;陈瑶;: "面向"边缘"应用的卷积神经网络量化与压缩方法", 计算机应用, no. 09 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114118384A (en) * | 2021-12-09 | 2022-03-01 | 安谋科技(中国)有限公司 | Quantization method of neural network model, readable medium and electronic device |
CN114118384B (en) * | 2021-12-09 | 2024-06-04 | 安谋科技(中国)有限公司 | Quantification method of neural network model, readable medium and electronic device |
Also Published As
Publication number | Publication date |
---|---|
CN113269320B (en) | 2024-07-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11816561B2 (en) | Methods, systems, articles of manufacture and apparatus to map workloads | |
US11669443B2 (en) | Data layout optimization on processing in memory architecture for executing neural network model | |
WO2022068623A1 (en) | Model training method and related device | |
KR102655950B1 (en) | High speed processing method of neural network and apparatus using thereof | |
JP7246447B2 (en) | Model training method, apparatus, electronic device, storage medium, development system and program | |
CN115129386A (en) | Efficient optimization for neural network deployment and execution | |
CN115878330A (en) | Thread operation control method and system | |
CN117196000A (en) | Edge side model reasoning acceleration method for containerized deployment | |
CN115016938A (en) | Calculation graph automatic partitioning method based on reinforcement learning | |
CN113269320B (en) | Processing unit, computing device, system on chip, data center and related methods | |
CN114662646A (en) | Method and device for realizing neural network | |
CN113688982A (en) | Processing unit, related device and method | |
CN112990461B (en) | Method, device, computer equipment and storage medium for constructing neural network model | |
US12001382B2 (en) | Methods, apparatus, and articles of manufacture to generate command lists to be offloaded to accelerator circuitry | |
CN113139650A (en) | Tuning method and computing device of deep learning model | |
CN113705800A (en) | Processing unit, related device and method | |
US11809849B1 (en) | Global modulo allocation in neural network compilation | |
CN113313242A (en) | Processing unit, related device and method | |
US12093806B1 (en) | Static memory allocation for neural network inference | |
Lambert et al. | Flexible recurrent neural networks | |
US20230004855A1 (en) | Co-operative and adaptive machine learning execution engines | |
US12045611B1 (en) | Reconfigurable neural network processing based on subgraph recognition | |
CN113688979A (en) | Processing unit, acceleration unit, related devices and methods | |
EP4177731A1 (en) | Sparsity uniformity enforcement for multicore processor | |
CN117076098B (en) | Dynamic tensor compiling optimization method and device, electronic equipment and medium |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20240228 Address after: 5th Floor, No. 2, Lane 55, Chuanhe Road, No. 366 Shangke Road, Pudong New Area Free Trade Pilot Zone, Shanghai Applicant after: Pingtouge (Shanghai) semiconductor technology Co.,Ltd. Country or region after: China Address before: 847, 4 / F, capital tower 1, Grand Cayman, British Cayman Islands Applicant before: ALIBABA GROUP HOLDING Ltd. Country or region before: United Kingdom |
|
TA01 | Transfer of patent application right | ||
GR01 | Patent grant | ||
GR01 | Patent grant |