WO2024106556A1 - Method and device for floating-point data compression - Google Patents

Method and device for floating-point data compression Download PDF

Info

Publication number
WO2024106556A1
WO2024106556A1 PCT/KR2022/018017 KR2022018017W WO2024106556A1 WO 2024106556 A1 WO2024106556 A1 WO 2024106556A1 KR 2022018017 W KR2022018017 W KR 2022018017W WO 2024106556 A1 WO2024106556 A1 WO 2024106556A1
Authority
WO
WIPO (PCT)
Prior art keywords
data element
value
data
exponent
compressed data
Prior art date
Application number
PCT/KR2022/018017
Other languages
French (fr)
Korean (ko)
Inventor
한정호
Original Assignee
주식회사 사피온코리아
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 주식회사 사피온코리아 filed Critical 주식회사 사피온코리아
Publication of WO2024106556A1 publication Critical patent/WO2024106556A1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0495Quantised networks; Sparse networks; Compressed networks

Definitions

  • Embodiments of the present invention relate to a method and apparatus for floating point data compression.
  • CNNs convolutional neural networks
  • AI accelerators include hardware components or engines optimized for deep learning algorithms and have faster neural network calculation speeds than general computing devices.
  • the AI accelerator divides the input images or feature maps into a plurality of small tiles and stores the divided tiles in external memory or off-chip memory. Afterwards, the AI accelerator copies some of the necessary tiles among the stored tiles to internal memory or on-chip memory and performs image processing using the copied tiles.
  • the performance of the AI accelerator may deteriorate due to the AI accelerator moving large amounts of data between external memories. For example, a large amount of power is consumed when an AI accelerator writes data to an external memory and reads data from an external memory. Specifically, the power required to move data between an AI accelerator and external memory can be hundreds of times greater than the power required to move data within an AI accelerator. Furthermore, due to bandwidth limitations between the AI accelerator and external memory, not only does it take a lot of time for the AI accelerator to process data, but the performance of the AI accelerator may be limited.
  • the method of reducing the number of times an AI accelerator accesses external memory has limitations in solving power consumption, time consumption, and performance limitations due to data movement between the AI accelerator and external memory.
  • Embodiments of the present invention are a data compression device and method for reducing power consumption and time required for data access by compressing data between an AI accelerator and an external memory, and improving performance limitations of the AI accelerator due to memory bandwidth limitations.
  • the main purpose is to provide.
  • a data compression device comprising: at least one memory storing instructions, and executing the instructions, thereby extracting data blocks containing data elements encoded according to a floating point format.
  • a data compression apparatus includes at least one processor that generates compressed data elements. For a first data element whose exponent value matches one of preset exponent values among the data elements, the processor sends an operation code corresponding to the exponent value of the first data element, the first A first compressed data element containing the sign bit and mantissa bits of the data element is generated. For a second data element whose exponent value among the data elements does not match the preset exponent values and is not a zero value, the processor generates a skip code and a second compressed data element including the second data element. creates .
  • a computer-implemented method for data compression includes generating compressed data elements from a data block containing data elements encoded according to a floating point format.
  • the step of generating the compressed data elements includes, for a first data element whose exponent value matches one of preset exponent values among the data elements, a command code corresponding to the exponent value of the first data element ( operation code), and generating a first compressed data element including sign bits and mantissa bits of the first data element.
  • the step of generating the compressed data elements includes a skip code and a skip code for a second data element whose exponent value does not match the preset exponent values and is not a zero value. and generating a second compressed data element.
  • FIG. 1 is a configuration diagram of an AI acceleration system according to an embodiment of the present invention.
  • Figure 2 is an example diagram to explain the half-precision floating point format.
  • 3A and 3B are diagrams illustrating a compressed data format according to an embodiment of the present invention.
  • Figure 4 is a flowchart of a data compression method according to an embodiment of the present invention.
  • Figure 5 is a diagram showing examples of data elements.
  • Figures 6a and 6b are diagrams showing a data compression method according to an embodiment of the present invention.
  • Figures 7a and 7b are diagrams showing a data compression method according to an embodiment of the present invention.
  • Figures 8a and 8b are diagrams showing a data compression method according to an embodiment of the present invention.
  • Figure 9 is a flowchart of a bit stream generation method according to an embodiment of the present invention.
  • Figure 10 is a diagram for explaining compression of input values of the softmax function according to an embodiment of the present invention.
  • symbols such as first, second, i), ii), a), and b) may be used. These codes are only used to distinguish the component from other components, and the nature, order, or order of the component is not limited by the code. In the specification, when a part is said to 'include' or 'have' a certain component, this means that it does not exclude other components, but may further include other components, unless explicitly stated to the contrary. .
  • Each component of the device or method according to the present invention may be implemented as hardware or software, or may be implemented as a combination of hardware and software. Additionally, the function of each component may be implemented as software and a microprocessor may be implemented to execute the function of the software corresponding to each component.
  • Types of deep neural networks used in deep learning algorithms include Convolutional Neural Network (CNN), Recurrent Neural Network (RNN), or Transformer Neural Network.
  • CNN Convolutional Neural Network
  • RNN Recurrent Neural Network
  • Transformer Neural Network Transformer Neural Network
  • operations on a convolutional neural network include convolutional operations in each of a plurality of convolutional layers, so a deep learning algorithm based on a convolutional neural network requires a hardware device that can process a large amount of calculations.
  • recurrent neural network-based deep learning algorithms require hardware devices that can handle a large amount of calculations.
  • the AI accelerator according to an embodiment of the present invention can accelerate neural network calculations using an AI accelerator including calculation units optimized for neural network calculations.
  • FIG. 1 is a configuration diagram of an AI acceleration system according to an embodiment of the present invention.
  • the AI acceleration system includes an AI accelerator 110 and an external memory 120.
  • the external memory 120 stores data necessary for neural network calculation
  • the AI accelerator 110 loads data stored in the external memory 120 and processes the retrieved data to perform neural network calculation.
  • the external memory 120 stores image data, feature data, weights, and biases as input data or output data of neural network operations.
  • the external memory 120 stores a plurality of tiles divided from an input image or feature maps.
  • the external memory 120 has a larger storage capacity than the data memory 116 within the AI accelerator 110.
  • the external memory 120 may be implemented as Dynamic Random Access Memory (DRAM).
  • DRAM Dynamic Random Access Memory
  • External memory 120 may be referred to as off-chip memory.
  • the AI accelerator 110 is a hardware device optimized for neural network calculations and performs neural network calculations using data stored in the external memory 120.
  • the AI accelerator 110 stores the processed data in the external memory 120.
  • the AI accelerator 110 may perform the neural network calculation on some of the tiles stored in the external memory 120.
  • the AI accelerator 110 includes a processor 111, a computation unit 112, a direct memory access DMA 113, a compression/decompression unit 114, a program memory 115, and a data memory. Includes (116).
  • the processor 111 controls the overall operations of the AI accelerator 110 by executing program instructions stored in the program memory 115.
  • the data memory 116 stores data necessary for controlling the processor 111 and data read from the external memory 120.
  • data memory 116 may store feature data or weights of a neural network.
  • Program memory 115 and data memory 116 may be referred to as internal memory or on-chip memory.
  • the operation unit 112 performs neural network operations such as convolution operations.
  • the calculation unit 112 is configured to be optimized for neural network calculations and has a fast processing speed for neural network calculations.
  • the DMA 113 supports data transfer between the data memory 116 and the external memory 120.
  • the compression/decompression unit 114 supports data compression or data decompression to reduce the amount of data transfer between the data memory 116 and the external memory 120.
  • the compression/decompression unit 114 may be controlled according to program execution of the processor 111 or may include at least one processor and at least one memory that performs a data compression process.
  • the compression/decompression unit 114 can reduce the power and time required for data transmission by reducing the bit length of data between the data memory 116 and the external memory 120.
  • the neural network training device trains the parameters of the neural network in conjunction with the AI accelerator 110.
  • the parameters of the neural network are primarily trained according to the floating point format for the accuracy of the neural network, and secondarily trained according to the fixed point format for the computational speed of the neural network.
  • the parameters of the neural network can be quadratic trained according to the integer format.
  • the floating point format can represent a larger range of numbers than the fixed point format or integer type, the parameters of a neural network trained according to the floating point format can improve the accuracy of the neural network.
  • the compression/decompression unit 114 uses two compression methods: a method of encoding data elements encoded according to a floating point format according to a data compression format, or a method of encoding data elements to be input to the softmax function. At least one method of compressing data can be used.
  • the compression/decompression unit 114 converts the data between the data memory 116 and the external memory 120 from a floating point format to a data format according to an embodiment of the present invention, thereby reducing the bit length of the data element. It can be reduced. In particular, depending on the floating point format, the bit length of the exponent value of the encoded data element is reduced, or the total bit length of the data element with a value of zero is reduced.
  • the compression/decompression unit 114 compresses the data in a range that does not affect or has a slight effect on the result value of the softmax function.
  • the mantissa bits of the element only the upper mantissa bits are stored in the external memory 120.
  • a data compression device for compressing data may correspond to the compression/decompression unit 114.
  • the data compression device may include a processor 111, a program memory 115, a data memory 116, and a compression/decompression unit 114.
  • Figure 2 is an example diagram to explain the half-precision floating point format.
  • Floating point formats are expressed in binary for machine operations.
  • floating point formats can be either half-precision, single-precision, or double-precision.
  • Half-precision floating point points are expressed with 16 bits
  • single-precision floating point points are expressed with 32 bits
  • double-precision floating point points are expressed with 64 bits.
  • the floating point format includes a sign field, an exponent field, and a mantissa field.
  • bit configurations and categories for a half-precision floating point format are shown.
  • the floating point format is based on the floating point format disclosed in the IEEE 754 standard document.
  • the half-precision floating point format includes a 1-bit sign field, a 5-bit exponent field, and a 10-bit mantissa field. In other embodiments, the number of bits in each field may vary.
  • the half-precision floating point format can be normalized number, subnormal number, zero (+/- zero), NaN (Not a Number), and infinity (+/- Infinity) depending on the values of the exponent and mantissa. ) can be indicated.
  • Normal values represent values that can be expressed in the form (-1) S ⁇ 2 (E-15) ⁇ (1.M) 2 .
  • E is the exponent value
  • M is the mantissa bits. Because the exponent field does not have a sign bit, a bias of -15 is used to represent negative numbers.
  • the exponent bits of 10000 represent 16 in decimal representation, but actually represent an exponent value of 1 due to a -15 bias. Meanwhile, the mantissa bits have an implied leading 1.
  • the (1.M) 2 value expressed in binary is shifted to the left by (E-15) and the sign value is applied, the value according to the binary expression is calculated.
  • Non-normal values represent values expressed in the form (-1) S ⁇ 2 -14 ⁇ (0.M) 2 .
  • Non-normal values are intended to represent small numbers that are not represented by regular values. The mantissa bits of non-normal values do not have a leading 1. Numbers close to 0 can be expressed through non-normal values.
  • a zero value represents a value in which both the exponent bits and mantissa bits are zero.
  • the sign bit can be 0 or 1.
  • Infinity represents a value outside the range represented by the normal value.
  • the half-precision floating point format will be described as including a 1-bit sign field, a 6-bit exponent field, and a 9-bit mantissa field.
  • 3A and 3B are diagrams illustrating a compressed data format according to an embodiment of the present invention.
  • Feature values generated during neural network training have similar values as they are closer to each other on feature maps. For example, within an image tile, pixels associated with a particular object are likely to have similar values. In floating point format, adjacent feature values are more likely to have similar exponent values. That is, when the feature values of a neural network are encoded into data elements according to a floating point format, the exponent values of the data elements have locality.
  • the compressed data format according to an embodiment of the present invention is a format that can compress the bits of data elements using the locality of the exponent values of the data elements.
  • the data compression device sets reference exponent values for data elements with locality, and determines data according to whether the exponent values of the data elements are included in the exponent range according to the reference exponent value or whether the exponent values of the data elements are zero values. Compress elements.
  • FIG. 3A a compressed data format according to one embodiment of the present invention is shown.
  • the compressed data format includes a data item and an operation code (OP code) for compressing the exponent bits of the data element.
  • OP code operation code
  • a data item includes the sign bit and mantissa bits of the data element.
  • the data item may contain additional exponent bits as needed, or may contain no bits.
  • the command code may indicate a characteristic of the data element or the zero bits of the data element. Indication according to the command code can be defined in advance.
  • FIG. 3B a table in which instructions according to command codes are recorded is shown.
  • the command code, skip code, and zero code are shorter than the exponent bit length according to the floating point format.
  • the instruction code can be 3 bits long.
  • E in represents the exponent value of the input data element
  • E ref represents the reference exponent value.
  • the exponent range according to the reference exponent value includes E ref , E ref +1, E ref +2, E ref -1, and E ref -2.
  • the command code of 000 bits indicates that the exponent value of the input data element is the same as the reference exponent value.
  • Command codes of 001 bits to 110 bits indicate that the exponent value of the input data element is included in the exponent range according to the reference exponent value.
  • the range of exponent values is evenly distributed around the reference exponent value.
  • the index range may not be symmetrical with respect to the reference index value.
  • the reference index value may be the smallest value within the index range.
  • the reference index value may be the largest value.
  • a command code of 101 bits indicates that the input data element is a zero value.
  • a command code representing an exponent range may be used instead of a command code representing a zero value.
  • the 110-bit command code indicates that the exponent value of the input data element is outside the exponent range according to the reference exponent value.
  • the 111-bit command code indicates a command that sets the exponent value of the input data element as the reference exponent value.
  • the data compression device encodes data elements encoded according to the floating point format according to one of the compressed data formats shown in FIG. 3A.
  • Figure 4 is a flowchart of a data compression method according to an embodiment of the present invention.
  • a data compression device generates compressed data elements from a data block containing data elements encoded according to a floating point format.
  • the data compression device receives a first data element as an initial data element.
  • the data compression device sets the index value of the input first data element as the reference index value (S410).
  • the data compression device sets a plurality of exponent values including the exponent value of the first input data element.
  • the command code corresponding to each of the set exponent values is also set.
  • the data compression device generates a first compressed data element by combining the first data element with a set code indicating the setting of the reference index value (S420).
  • the first encoded data element may include 111 bits, total bits of the first data element.
  • the data compression device generates a second compressed data element depending on whether the exponent value of the input second data element is included in the exponent range according to the reference exponent value (S430).
  • the index range according to the reference index value includes a plurality of index values including the reference index value.
  • whether the exponent value of the second data element is included in the exponent range according to the reference exponent value may be determined depending on whether the exponent value of the second data element matches preset exponent values.
  • the data compression device When the exponent value of the second data element matches one of the preset exponent values, the data compression device provides an instruction code corresponding to the exponent value of the second data element, the sign bit of the second data element, and the second data element. Encode the second data element to produce a second compressed data element containing mantissa bits.
  • the data compression device may skip data compression or set a new reference exponent value.
  • the data compression device when the exponent value of the second data element does not match any one of the preset exponent values, the data compression device generates a second data element to include a skip code indicating compression skip and all bits of the second data element.
  • Data elements can be encoded. If data elements input after the second data element have locality with the first data element rather than the second data element, the compression rate can be increased.
  • the data compression device sets the exponent value of the second data element to the reference exponent value and encodes the second data element to include a setting code indicating the setting of the reference exponent value and all bits of the second data element. You can. If data elements input after the second data element have locality with the second data element, the compression rate can be increased.
  • the data compression device may encode the second data element to include a zero code indicating the zero value. Determining whether the second data element is a zero value may take precedence over determining whether the second data element is included in the exponent range.
  • the second encoded data element is compressed to 3 bits long.
  • the data compression device may apply at least one of a skip code or a zero code to each layer of the neural network.
  • a skip code or a zero code In a layer with many feature values having a value of 0, only zero codes may be used, or zero codes and skip codes may be used.
  • the data compression device can predict the amount of feature values with a value of 0 according to the operation to be processed in each layer of the neural network, and determines whether to use a zero code based on the amount of feature values with a value of 0. can do.
  • the data compression apparatus may analyze the distribution of data elements based on the values of the data elements, and apply at least one of a skip code or a zero code based on the distribution of the data elements. If there are many data elements with a value of 0, only the zero code may be used, or the zero code and skip code may be used. On the other hand, when there are few data elements with a value of 0, only a skip code can be used.
  • the data compression device can reduce the total bit length of the data elements by encoding data elements according to the floating point format according to the compressed data format. Furthermore, no bit loss occurs.
  • the data compression device stores the first compressed data element and the second compressed data element in an external memory (S450).
  • a data compression device can encode data elements in predetermined units and store the encoded data elements in an external memory.
  • a data compression device can encode and then store data elements by element.
  • a data compression device can reduce the number of bits of data elements transmitted for storage in an external memory by ignoring some of the mantissa bits of the compressed data elements.
  • Figure 5 is a diagram showing examples of data elements.
  • Data elements may be grouped into predetermined units to form one data block.
  • Each data element includes a 1-bit sign field, a 6-bit exponent field, and a 9-bit exponent field.
  • Figures 6a and 6b are diagrams showing a data compression method according to an embodiment of the present invention.
  • the table includes command codes for setting reference exponent values and command codes for exponent ranges, but does not include command codes for compression skip and command codes for zero values.
  • the data compression device is a method of determining whether the exponent value of a data element is included in the exponent range according to a preset reference exponent value, and whether the difference between the exponent value of the data element and the reference exponent value is included in the preset range. You can judge whether or not.
  • the data compression device may set values adjacent to the reference exponent value and determine whether the exponent value of the data element matches the set exponent values.
  • the explanation below will be based on the former method.
  • the index range has a value that is 3 greater than the reference index value as the upper limit, and a value that is 3 less than the reference index value as the lower limit.
  • the 0th data element having (0, 11_0000, 0_1111_1111) bits is first input to the data compression device. Since there is no preset reference exponent value, the difference value between the exponent value of the 0th data element and the reference exponent value also does not exist.
  • the exponent value of the 0th data element is set as a reference exponent value by the data compression device.
  • the zeroth data element is encoded to include all bits of the zeroth data element and 111 bits indicating the setting of the reference index value.
  • the number of bits of the first encoded data element is 19.
  • the first data element is encoded to include 001 bits representing a value that is one greater than the reference exponent value, a sign bit of the first data element, and mantissa bits of the first data element.
  • the number of bits of the first encoded data element is 13.
  • the second data element is encoded through a similar process as the first data element.
  • the number of bits of the second encoded data element is 13.
  • the exponent value of the third data element is -48 smaller than the reference exponent value, the difference value between the exponent value of the third data element and the reference exponent value exceeds the preset range of 3. Accordingly, the exponent value of the third data element is set as a new reference exponent value by the data compression device.
  • the third data element is encoded to include all bits of the third data element and 111 bits indicating the setting of the reference exponent value.
  • the exponent value of the fifth data element is set as a new reference exponent value by the data compression device.
  • the data compression device converts each data element encoded into 16 bits into 13 bits or 19 bits depending on the compressed data format. According to the results of converting 14 data elements, the data compression device can reduce the total number of bits of data elements from 224 to 218.
  • Figures 7a and 7b are diagrams showing a data compression method according to an embodiment of the present invention.
  • the table includes command codes for setting reference exponent values, command codes for exponent ranges, and command codes for compression skip, and does not include command codes for zero values.
  • the instruction code for compression skip is encoded along with all bits of the data element when the exponent value of the data element is outside the exponent range according to the reference exponent value.
  • the reference index value is not reset. Once set, the reference index value can be used within one or more data blocks.
  • the command code related to compression skip may be referred to as a skip code.
  • the exponent range has a value that is 2 greater than the reference index value as the upper limit, and a value that is 3 less than the reference index value as the lower limit.
  • the zeroth data element, the first data element and the second data element are encoded the same as described in Figures 7a and 7b.
  • the exponent value of the third data element is -48 smaller than the reference exponent value, so it exceeds the exponent range according to the reference exponent value.
  • the exponent value of the third data element is not set as the new reference exponent value.
  • the third data element is encoded to include all bits of the third data element and a 110-bit skip code representing compression skip.
  • the number of bits of the third encoded data element is 19.
  • the data compression device when a data element with an exponent value exceeding the exponent range according to the reference exponent value is input, the data compression device does not reset the reference exponent value but omits data compression.
  • the data compression device can reduce the number of bits of the data elements from 224 to 212.
  • Figures 8a and 8b are diagrams showing a data compression method according to an embodiment of the present invention.
  • the table includes command codes for setting reference exponent values, command codes for exponent ranges, command codes for compression skip, and command codes for zero values.
  • the command code for the zero value is a code that indicates that all bits of the data element are 0.
  • Data elements are encoded according to the command code for the zero value.
  • the encoded data element consists of bits according to the command code.
  • a command code related to a zero value may be referred to as a zero code.
  • the zeroth data element, the first data element and the second data element are encoded the same as described in Figures 6a and 6b.
  • whether the third data element is a zero value may be determined first. According to this, since the third data element is a zero value, it is encoded to include a zero code of 101 bits. The number of bits of the third encoded data element is three.
  • the data compression device can reduce the number of bits of the data elements from 224 to 196.
  • the more data elements with zero values in a data block the higher the compression ratio.
  • the compression ratio can be increased.
  • Figure 9 is a flowchart of a bit stream generation method according to an embodiment of the present invention.
  • a data compression device generates compressed data elements from a data block containing data elements encoded according to a floating point format.
  • the data compression device groups compressed data elements according to exponent ranges or zero values (S910).
  • a data compression device sets data elements that have similar sizes and are adjacent to each other into one data group. If consecutive data elements have exponent values included within an exponent range according to one reference exponent value, they form one data group. Compressed data elements with zero values are included in the zero group. Accordingly, a zero group and at least one data group are created.
  • the data compression device merges at least one data group according to the number or zero value of compressed data elements (S920).
  • the trailing data group contains one compressed data element
  • the trailing data group is merged into the preceding data group.
  • the command code of the compressed data element included in the trailing data group is changed to a skip code.
  • the trailing data group among two consecutive data groups is a zero group
  • the trailing data group is merged into the leading data group.
  • the data compression device generates a bit stream from data groups (S930).
  • Table 1 is a table showing compression rates according to embodiments of the present invention.
  • Examples of data compression include typical data compression, data compression with a skip code, and data compression with a skip code and zero code.
  • General data compression refers to compression using command codes for setting reference exponent values and command codes for exponent ranges.
  • Data compression according to a skip code indicates that a skip code is applied to general data compression.
  • Data compression with skip code and zero code applied indicates that skip code and zero code are applied to general data compression.
  • mixed compression per layer applies a skip code to layers with a low frequency of occurrence of feature values with a size of 0, and a skip code and zero code to layers with a high frequency of occurrence of feature values with a size of 0. Indicates how to apply.
  • the BERT model is based on the sign field, exponent field, and mantissa field being 1 bit, 6 bit, and 9 bit, respectively.
  • the sign field, exponent field and mantissa field are 1 bit, 4 bit and 3 bit respectively.
  • Data compression with skip code and zero code results in a slightly smaller compression ratio compared to data compression with skip code for the BERT model, but achieves much higher compression rates for the remaining models.
  • the BERT model uses the softmax function as an activation function, so the frequency of occurrence of feature values with a size of 0 is low, whereas in the Resnet50 model and the YOLOv3 model, the frequency of occurrence of feature values with a size of 0 is low because the ReLU function is used. Because it is high.
  • the compression rate of data compression using skip code and zero code is high.
  • the frequency of occurrence of feature values with size 0 in each layer of the neural network is low, the compression rate of data compression using skip code is high. This is because the bits corresponding to the zero code can be used as codes representing the exponent range.
  • the AI accelerator uses Equation 1 to calculate the softmax function in the neural network.
  • Equation 1 X represents a set of data elements, and X max represents the reference data element with the largest value among the data elements. X may be referred to as a vector containing data elements. Data elements within a data block X are expressed as X i . XX max is referred to as the first intermediate value of the softmax function, is referred to as the second intermediate value of the softmax function.
  • Softmax function values are obtained by calculating the softmax median values for some data elements, storing the softmax median values for some data elements in external memory, and normalizing the softmax median values for all data elements.
  • a set of data elements X is stored in external memory.
  • the compressed data elements are stored in external memory.
  • Data elements are stored as inputs to the softmax function.
  • the AI accelerator can identify the reference data element with the largest value among the data elements.
  • the AI accelerator loads the data element Calculate as the second intermediate value of the softmax function and store it in external memory. Before saving, the AI accelerator can obtain the sum of the natural exponential function values for the difference between all data elements and the reference data element by accumulating the median value.
  • the AI accelerator generates data elements X and natural exponential function values for the difference between the data elements and the reference data element. That is, in the process of storing the second intermediate values in external memory and reading them from the external memory, a lot of power and time are consumed depending on the amount of data transfer.
  • the data compression device included in the AI accelerator removes the bits of data elements that are input values of the softmax function, particularly at least one lower mantissa bit among the mantissa bits of the data elements, thereby reducing AI
  • the amount of data transfer between the accelerator and external memory can be reduced.
  • the data compression device omits some of the mantissa bits of the data elements X, which are input values of the softmax function.
  • Compression of data elements considering their influence on the first intermediate value or compression of data elements considering their influence on the second intermediate value may be selectively applied.
  • Figure 10 is a diagram for explaining compression of input values of the softmax function according to an embodiment of the present invention.
  • the lower mantissa bits that affect the difference value between the data element X i and the reference data element X max are identified.
  • the reference data element X max and the one data element X i with the largest value are shown as blocks in binary form.
  • the 1 value preceding the mantissa bits represents the number according to the normal value.
  • the sign bit is not shown.
  • the reference data element X max is a combination of the preceding 1 bit and mantissa bits M 1 .
  • the AI accelerator calculates the difference value X max -X i between the reference data element and the data element.
  • the difference value X max -X i between the reference data element and the data element is referred to as the first intermediate value of the softmax function.
  • the data element is bit shifted to the right relative to the reference data element.
  • the data element is bit shifted to the right by the value obtained by subtracting the exponent value of the data element from the exponent value of the reference data element.
  • the result of subtraction between the reference data element and the data element can be classified into three cases.
  • the most significant bit of the first intermediate value The mantissa bits M 3 of the first intermediate value X max -X i have the same bit range as the mantissa bits M 1 of the reference data element X max . Meanwhile , among the mantissa bits M 2 of the data element That is, among the mantissa bits of the data element, the lower mantissa bits corresponding to the difference between the exponent value E max of the reference data element and the exponent value E i of the data element are not used. Otherwise, the lower order mantissa bits may be rounded off and added to the mantissa bits of the first intermediate value X max -X i .
  • the most significant bit of the first intermediate value X max -X i has the value of 1 at a position one bit below the most significant bit of the reference data element Among the mantissa bits M 2 of the data element X i , the lower mantissa bits located one bit lower than the least significant bit of the reference data element On the other hand, the mantissa bits from the least significant bit among the mantissa bits M 2 of the data element X i to a position two bits lower than the least significant bit of the reference data element
  • the most significant bit of the first intermediate value X max -X i has a value of 1 at a position one bit higher than the most significant bit of the reference data element In other words, carry out occurs.
  • the mantissa bits from the least significant bit among the mantissa bits M 2 of the data element X i to the mantissa bits one bit higher than the least significant bit of the reference data element .
  • the data compression device ignores at least one lower mantissa bit among the mantissa bits included in the data element.
  • the compressed data element X i ' is stored as the input value of the softmax function.
  • the data compression device identifies the reference data element representing the largest value among the data elements and determines the difference between the exponent value of the data element and the exponent value of the reference data element.
  • the data compression device determines the number of at least one lower mantissa bit to be ignored among the mantissa bits included in one compressed data element, based on the difference between the exponent value of the data element and the exponent value of the reference data element.
  • the data compression device stores the secondary compressed data element generated by ignoring the determined at least one lower mantissa bit as an input value of the softmax function.
  • the data compression device may vary the number of at least one lower mantissa bit to be ignored according to comparison between the sign value S i of the data element and the sign value S max of the reference data element.
  • the data compression device ignores the first lower mantissa bits among the mantissa bits included in the data element.
  • the first lower mantissa bits represent lower mantissa bits corresponding to the difference between the exponent value of the reference data element and the exponent value of the data element minus 1 among the mantissa bits. That is , the compressed data element
  • the data compression device ignores the second lower mantissa bits among the mantissa bits included in the data element.
  • the second lower mantissa bits represent lower mantissa bits corresponding to the difference between the exponent value of the data element and the exponent value of the reference data element. That is , the compressed data element
  • the data compression device determines the exponent value of the data element and the exponent value of the reference data element among the mantissa bits included in the compressed data element, regardless of the sign value S i of the data element and the sign value S max of the reference data element.
  • the third lower mantissa bits having a number less than the difference value can be ignored.
  • the data compression device may ignore the lower mantissa bits corresponding to the difference minus 2 among the mantissa bits included in the compressed data element. If the number of lower order mantissa bits to be ignored is small, compression performance deteriorates. On the other hand, if the number of lower order mantissa bits to be ignored is large, compression performance increases.
  • the AI accelerator calculates the difference value X i -X max between the data element and the reference data element. And the AI accelerator is the natural exponential function value for the difference value Calculate . Natural exponential function value for the difference value X i -X max is referred to as the second intermediate value of the softmax function.
  • the AI accelerator stores the second medians in external memory, loads the second medians when the second medians for all data elements have been calculated, and normalizes the second medians to obtain a softmax for the data elements. Calculate the function value.
  • the data compression device ignores the lower mantissa bits according to a predefined table among the mantissa bits included in the data element, and converts the generated compressed data element X i ' into the softmax function. Save it as input value.
  • the predefined table is a table in which the number of upper mantissa bits to be stored among the mantissa bits of the data element, the exponent value of the data element, and the error rate according to data element compression are recorded.
  • the data compression device When the exponent value of a data element is given, the data compression device identifies the number of upper mantissa bits that satisfy a specific error rate and discards lower mantissa bits excluding the upper mantissa bits among the mantissa bits of the data element.
  • one data element can be expressed as an upper part including upper mantissa bits and a lower part including lower mantissa bits, as shown in Equation 2.
  • Equation 2 xi represents a data element, xi H represents the upper part of the data element, and xi L represents the lower part of the data element.
  • S represents the sign value of the data element
  • E represents the exponent value of the data element
  • M H(2) represents the upper mantissa bits in binary form
  • M L(2) represents the lower mantissa bits in binary form.
  • T represents the length of the upper mantissa bits of the data element.
  • the mantissa bit length of a data element is m
  • the length of the lower mantissa bits of the data element is mT.
  • Equation 3 The second intermediate value e (xi-xmax) of the softmax function for data element xi can be expressed as Equation 3.
  • Equation 3 the error rate due to truncation of the lower mantissa bits of the data element is am.
  • the error rate can be expressed as Equation 4.
  • Equation 5 the range of error rate can be expressed as Equation 5.
  • the error rate is The maximum value of am.
  • the exponent value E of the data element the length T of the upper mantissa bits to be stored among the mantissa bits of the data element, and the error rate of the second intermediate value according to data compression.
  • Various tables can be defined from .
  • Table 2 is a table that exemplarily calculates the error rate according to the exponent value of the data element when the length of the upper mantissa bits is 7.
  • Table 3 is a table that exemplarily defines the exponent values of data elements according to the length and error rate of the upper mantissa bits.
  • Table 4 is a table that exemplarily defines the length of the upper mantissa bits according to the exponent value and error rate of the upper data element.
  • E T 7 2 (ET) exp(2 (ET) ) abs(1- exp(2 (ET) )) 0 7.813E-03 1.007843097206E+00 7.843E-03 -One 3.906E-03 1.003913889338E+00 3.914E-03 -2 1.953E-03 1.001955033591E+00 1.955E-03 -3 9.766E-04 1.000977039492E+00 9.770E-04 -4 4.883E-04 1.000488400479E+00 4.884E-04 -5 2.441E-04 1.000244170430E+00 2.442E-04 -6 1.221E-04 1.000122077763E+00 1.221E-04 -7 6.104E-05 1.000061037019E+00 6.104E-05 -8 3.052E-05 1.000030518044E+00 3.052E-05 -9 1.526E-05 1.000015258905E+00 1.526E-05 -10 7.629E
  • E Error ratio [%] One 0.1 0.01 0.001 0 7 10 10 10 -One 6 10 10 10 -2 5 8 10 10 -3 4 7 10 10 -4 3 6 10 10 -5 2 5 10 10 -6 One 4 8 10 -7 - 3 7 10 -8 - 2 6 10 -9 - One 5 8 -10 - - 4 7 -11 - - 3 6 -12 - - 2 5 -13 - - One 4 -14 - - - 3 -15 - - - 2 -16 - - - One
  • the data compression device can preset a specific error rate, identify the exponent value E of the input data element, and identify the T value according to the specific error rate and exponent value E.
  • the data compression device extracts only the T upper mantissa bits from among the mantissa bits of the data element and stores them in external memory.
  • Data compression devices can reduce power consumption and time required for data transfer between AI accelerators and external memory through data compression.
  • the operation of the data compression device using a predefined table is as follows.
  • the data compression device refers to a predefined table and identifies the exponent value of the data element and the mantissa bit length according to the preset error rate.
  • the exponent value of the data element may be referred to as E and the mantissa bit length may be referred to as T.
  • the data element may be data encoded according to a floating point format or may be a data element encoded according to a data compression format.
  • the data compression device stores the upper mantissa bits corresponding to the mantissa bit length among the mantissa bits of the data element as mantissa bits of the input value of the softmax function in an external memory.
  • the compressed data element includes a sign bit, mantissa bits, and high mantissa bits.
  • the data compression device can trade-off the data transfer amount and error rate between the AI accelerator and external memory by considering the length of the upper mantissa bits of the data element according to the error rate.
  • Various implementations of the systems and techniques described herein may include digital electronic circuits, integrated circuits, field programmable gate arrays (FPGAs), application specific integrated circuits (ASICs), computer hardware, firmware, software, and/or these. It can be realized through combination.
  • These various implementations may include being implemented as one or more computer programs executable on a programmable system.
  • the programmable system includes at least one programmable processor (which may be a special purpose processor) coupled to receive data and instructions from and transmit data and instructions to a storage system, at least one input device, and at least one output device. or may be a general-purpose processor).
  • Computer programs also known as programs, software, software applications or code
  • Computer-readable recording media include all types of recording devices that store data that can be read by a computer system. These computer-readable recording media are non-volatile or non-transitory such as ROM, CD-ROM, magnetic tape, floppy disk, memory card, hard disk, magneto-optical disk, and storage device. It may be a medium, and may further include a transitory medium such as a data transmission medium. Additionally, the computer-readable recording medium may be distributed in a computer system connected to a network, and the computer-readable code may be stored and executed in a distributed manner.
  • This invention is a research project (project identification number: 1711152619, detailed task number: 2020-0-01305-003, project management (professional) organization name: Information and Communications Planning and Evaluation Institute, research project name: next-generation intelligent semiconductor technology development (design), research project Name: 2,000 TFLOPS-class server artificial intelligence deep learning processor and module development, contribution rate: 1/1, project performing organization name: Sapion Korea Co., Ltd., research period: 2022-01-01 ⁇ 2022-12-31).

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • General Health & Medical Sciences (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

A method and a device for floating-point data compression are disclosed. According to an aspect of the present invention, a data compression device is provided, the device comprising: at least one memory for storing instructions; and at least one processor for, by executing the instructions, generating compressed data elements from a data block including data elements encoded according to a floating-point format.

Description

부동 소수점 데이터 압축을 위한 방법 및 장치Method and apparatus for floating point data compression
본 발명의 실시예들은 부동 소수점 데이터 압축을 위한 방법 및 장치에 관한 것이다.Embodiments of the present invention relate to a method and apparatus for floating point data compression.
이하에 기술되는 내용은 단순히 본 실시예와 관련되는 배경 정보만을 제공할 뿐 종래기술을 구성하는 것이 아니다.The content described below simply provides background information related to this embodiment and does not constitute prior art.
최근, 딥러닝 알고리즘이 발전함에 따라, 딥러닝 알고리즘이 다양한 기술분야에 적용되고 있다. 일 예로, 딥러닝 알고리즘에 따라 훈련된 신경망은 다양한 문제들에 대한 솔루션들을 제공한다. 특히, 영상처리 분야에서는, 주로 합성곱 신경망(Convolutional Neural Network; CNN)이 이용된다. Recently, as deep learning algorithms develop, deep learning algorithms are being applied to various technical fields. As an example, neural networks trained according to deep learning algorithms provide solutions to various problems. In particular, in the image processing field, convolutional neural networks (CNNs) are mainly used.
합성곱 신경망을 이용한 영상처리는 방대한 양의 데이터 연산을 요구하기 때문에, 효율적인 데이터 연산을 위한 하드웨어 가속기 또는 인공지능(Artificial Intelligence; AI) 가속기에 대한 개발이 이루어지고 있다. AI 가속기는 딥러닝 알고리즘에 최적화된 하드웨어 구성요소들 또는 엔진들을 포함하며, 일반적인 컴퓨팅 장치에 비해 빠른 신경망 연산 속도를 가진다. Since image processing using convolutional neural networks requires a vast amount of data calculation, hardware accelerators or artificial intelligence (AI) accelerators for efficient data calculation are being developed. AI accelerators include hardware components or engines optimized for deep learning algorithms and have faster neural network calculation speeds than general computing devices.
하지만, 내부 메모리의 한계로 인해, AI 가속기는 고화질의 이미지 또는 신경망 연산에 따른 많은 특징맵들을 내부 메모리 또는 온칩 메모리(on-chip memory)에 저장하기 어렵다. However, due to limitations in internal memory, it is difficult for AI accelerators to store high-quality images or many feature maps based on neural network calculations in internal memory or on-chip memory.
이에 따라, AI 가속기는 입력 이미지 또는 특징맵들을 복수의 작은 타일(tile)들로 분할하고, 분할된 타일들을 외부 메모리 또는 오프칩 메모리(off-chip memory)에 저장한다. 이후, AI 가속기는 저장된 타일들 중 필요한 일부 타일들을 내부 메모리 또는 온칩 메모리에 복사하고, 복사된 타일들을 이용하여 영상처리를 수행한다.Accordingly, the AI accelerator divides the input images or feature maps into a plurality of small tiles and stores the divided tiles in external memory or off-chip memory. Afterwards, the AI accelerator copies some of the necessary tiles among the stored tiles to internal memory or on-chip memory and performs image processing using the copied tiles.
그럼에도 불구하고, AI 가속기가 외부 메모리 간 많은 양의 데이터 이동에 의해 AI 가속기의 성능이 저하될 수 있다. 예를 들면, AI 가속기가 외부 메모리에 데이터를 쓰는 동작, 및 외부 메모리로부터 데이터를 읽어오는 동작에 의해 큰 전력이 소모된다. 구체적으로, AI 가속기와 외부 메모리 간 데이터를 이동시키는 데 소요되는 전력은 AI 가속기 내 데이터 이동에 소요되는 전력보다 수백 배 클 수 있다. 나아가, AI 가속기와 외부 메모리 간 대역폭 한계로 인해, AI 가속기가 데이터를 처리하는 데 많은 시간이 소요될 뿐만 아니라, AI 가속기의 성능이 제한될 수 있다.Nevertheless, the performance of the AI accelerator may deteriorate due to the AI accelerator moving large amounts of data between external memories. For example, a large amount of power is consumed when an AI accelerator writes data to an external memory and reads data from an external memory. Specifically, the power required to move data between an AI accelerator and external memory can be hundreds of times greater than the power required to move data within an AI accelerator. Furthermore, due to bandwidth limitations between the AI accelerator and external memory, not only does it take a lot of time for the AI accelerator to process data, but the performance of the AI accelerator may be limited.
따라서, AI 가속기의 외부 메모리에 대한 접근을 최소화하기 위한 방안들이 필요하다. Therefore, methods are needed to minimize access to the external memory of the AI accelerator.
종래에는 주로 AI 가속기가 외부 메모리에 접근하는 횟수를 줄이는 방법들이 연구되었다. 일 예로서, AI 가속기의 내부 메모리에 복사된 데이터가 다시 이용되도록 연산 순서를 설정하는 방법이 있다. 다른 예로서, AI 가속기의 내부 메모리에 복사된 데이터를 이용하여 현재 레이어(layer)에 대한 연산이 끝난 때, 연산 결과를 외부 메모리로 이동시키는 것이 아니라 다음 레이어에서 연산 결과를 이용하는 방법이 있다.Previously, methods to reduce the number of times an AI accelerator accesses external memory were mainly studied. As an example, there is a method of setting the operation order so that data copied to the internal memory of the AI accelerator can be used again. As another example, when the calculation for the current layer is completed using data copied to the internal memory of the AI accelerator, there is a method of using the calculation result in the next layer rather than moving the calculation result to external memory.
하지만, AI 가속기가 외부 메모리에 접근하는 횟수를 줄이는 방법은 AI 가속기와 외부 메모리 간 데이터 이동에 따른 전력 소모, 시간 소요 및 성능 제한을 해결하는 데 한계가 있다.However, the method of reducing the number of times an AI accelerator accesses external memory has limitations in solving power consumption, time consumption, and performance limitations due to data movement between the AI accelerator and external memory.
본 발명의 실시예들은, AI 가속기와 외부 메모리 간 데이터를 압축함으로써, 데이터 접근에 소요되는 전력 소모 및 시간 소요를 줄이고, 메모리 대역폭 한계에 의한 AI 가속기의 성능 제한을 개선하기 위한 데이터 압축 장치 및 방법을 제공하는 데 주된 목적이 있다.Embodiments of the present invention are a data compression device and method for reducing power consumption and time required for data access by compressing data between an AI accelerator and an external memory, and improving performance limitations of the AI accelerator due to memory bandwidth limitations. The main purpose is to provide.
본 발명이 해결하고자 하는 과제들은 이상에서 언급한 과제들로 제한되지 않으며, 언급되지 않은 또 다른 과제들은 아래의 기재로부터 통상의 기술자에게 명확하게 이해될 수 있을 것이다.The problems to be solved by the present invention are not limited to the problems mentioned above, and other problems not mentioned can be clearly understood by those skilled in the art from the description below.
본 발명의 일 측면에 의하면, 데이터 압축 장치에 있어서, 명령어들을 저장하는 적어도 하나의 메모리, 및 상기 명령어들을 실행함으로써, 부동 소수점 포맷에 따라 인코딩된 데이터 요소들(data elements)을 포함하는 데이터 블록으로부터 압축된 데이터 요소들을 생성하는 적어도 하나의 프로세서를 포함하는 데이터 압축 장치를 제공한다. 상기 프로세서는 상기 데이터 요소들 중 지수값이 기 설정된 지수값들 중 어느 하나에 매치되는 제1 데이터 요소에 대해, 상기 제1 데이터 요소의 지수값에 대응되는 명령코드(operation code), 상기 제1 데이터 요소의 부호비트 및 가수비트들을 포함하는 제1 압축된 데이터 요소를 생성한다. 상기 프로세서는 상기 데이터 요소들 중 지수값이 상기 기 설정된 지수값들에 매치되지 않고, 제로값이 아닌 제2 데이터 요소에 대해, 스킵코드 및 상기 제2 데이터 요소를 포함하는 제2 압축된 데이터 요소를 생성한다.According to one aspect of the present invention, there is provided a data compression device, comprising: at least one memory storing instructions, and executing the instructions, thereby extracting data blocks containing data elements encoded according to a floating point format. A data compression apparatus is provided that includes at least one processor that generates compressed data elements. For a first data element whose exponent value matches one of preset exponent values among the data elements, the processor sends an operation code corresponding to the exponent value of the first data element, the first A first compressed data element containing the sign bit and mantissa bits of the data element is generated. For a second data element whose exponent value among the data elements does not match the preset exponent values and is not a zero value, the processor generates a skip code and a second compressed data element including the second data element. creates .
본 실시예의 다른 측면에 의하면, 데이터 압축을 위한 컴퓨터 구현 방법을 제공한다. 방법은 부동 소수점 포맷에 따라 인코딩된 데이터 요소들(data elements)을 포함하는 데이터 블록으로부터 압축된 데이터 요소들을 생성하는 단계를 포함한다. 상기 압축된 데이터 요소들을 생성하는 단계는 상기 데이터 요소들 중 지수값이 기 설정된 지수값들 중 어느 하나에 매치되는 제1 데이터 요소에 대해, 상기 제1 데이터 요소의 지수값에 대응되는 명령코드(operation code), 상기 제1 데이터 요소의 부호비트 및 가수비트들을 포함하는 제1 압축된 데이터 요소를 생성하는 단계를 포함한다. 상기 압축된 데이터 요소들을 생성하는 단계는 상기 데이터 요소들 중 지수값이 상기 기 설정된 지수값들에 매치되지 않고, 제로값이 아닌 제2 데이터 요소에 대해, 스킵코드 및 상기 제2 데이터 요소를 포함하는 제2 압축된 데이터 요소를 생성하는 단계를 더 포함한다.According to another aspect of the present embodiment, a computer-implemented method for data compression is provided. The method includes generating compressed data elements from a data block containing data elements encoded according to a floating point format. The step of generating the compressed data elements includes, for a first data element whose exponent value matches one of preset exponent values among the data elements, a command code corresponding to the exponent value of the first data element ( operation code), and generating a first compressed data element including sign bits and mantissa bits of the first data element. The step of generating the compressed data elements includes a skip code and a skip code for a second data element whose exponent value does not match the preset exponent values and is not a zero value. and generating a second compressed data element.
이상에서 설명한 바와 같이 본 발명의 일 실시예에 의하면, AI 가속기와 외부 메모리 간 데이터를 압축함으로써, 데이터 접근에 소요되는 전력 소모 및 시간 소요를 줄이고, 메모리 대역폭 한계에 의한 AI 가속기의 성능 제한을 개선할 수 있다.As described above, according to an embodiment of the present invention, by compressing data between the AI accelerator and external memory, power consumption and time required for data access are reduced, and performance limitations of the AI accelerator due to memory bandwidth limitations are improved. can do.
본 개시의 효과들은 이상에서 언급한 효과들로 제한되지 않으며, 언급되지 않은 또 다른 효과들은 아래의 기재로부터 통상의 기술자에게 명확하게 이해될 수 있을 것이다.The effects of the present disclosure are not limited to the effects mentioned above, and other effects not mentioned may be clearly understood by those skilled in the art from the description below.
도 1은 본 발명의 일 실시예에 따른 AI 가속 시스템의 구성도이다.1 is a configuration diagram of an AI acceleration system according to an embodiment of the present invention.
도 2는 반정밀도 부동 소수점 포맷을 설명하기 위해 예시한 도면이다.Figure 2 is an example diagram to explain the half-precision floating point format.
도 3a 및 도 3b는 본 발명의 일 실시예에 따른 압축 데이터 포맷을 설명하기 위해 예시한 도면이다.3A and 3B are diagrams illustrating a compressed data format according to an embodiment of the present invention.
도 4는 본 발명의 일 실시예에 따른 데이터 압축 방법의 순서도이다.Figure 4 is a flowchart of a data compression method according to an embodiment of the present invention.
도 5는 데이터 요소들의 예시를 나타낸 도면이다. Figure 5 is a diagram showing examples of data elements.
도 6a 및 도 6b는 본 발명의 일 실시예에 따른 데이터 압축 방법을 나타낸 도면이다.Figures 6a and 6b are diagrams showing a data compression method according to an embodiment of the present invention.
도 7a 및 도 7b는 본 발명의 일 실시예에 따른 데이터 압축 방법을 나타낸 도면이다.Figures 7a and 7b are diagrams showing a data compression method according to an embodiment of the present invention.
도 8a 및 도 8b는 본 발명의 일 실시예에 따른 데이터 압축 방법을 나타낸 도면이다.Figures 8a and 8b are diagrams showing a data compression method according to an embodiment of the present invention.
도 9는 본 발명의 일 실시예에 따른 비트 스트림 생성 방법의 순서도다.Figure 9 is a flowchart of a bit stream generation method according to an embodiment of the present invention.
도 10은 본 발명의 일 실시예에 따른 소프트맥스 함수의 입력값들의 압축을 설명하기 위한 도면이다.Figure 10 is a diagram for explaining compression of input values of the softmax function according to an embodiment of the present invention.
이하, 본 개시의 일부 실시예들을 예시적인 도면을 이용해 상세하게 설명한다. 각 도면의 구성 요소들에 참조 부호를 부가함에 있어서, 동일한 구성 요소들에 대해서는 비록 다른 도면 상에 표시되더라도 가능한 한 동일한 부호를 가지도록 하고 있음에 유의해야 한다. 또한, 본 개시를 설명함에 있어, 관련된 공지 구성 또는 기능에 대한 구체적인 설명이 본 개시의 요지를 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명은 생략한다.Hereinafter, some embodiments of the present disclosure will be described in detail using exemplary drawings. When adding reference signs to components in each drawing, it should be noted that the same components are given the same reference numerals as much as possible even if they are shown in different drawings. Additionally, in describing the present disclosure, if it is determined that a detailed description of a related known configuration or function may obscure the gist of the present disclosure, the detailed description will be omitted.
본 개시에 따른 실시예의 구성요소를 설명하는 데 있어서, 제1, 제2, i), ii), a), b) 등의 부호를 사용할 수 있다. 이러한 부호는 그 구성요소를 다른 구성 요소와 구별하기 위한 것일 뿐, 그 부호에 의해 해당 구성요소의 본질 또는 차례나 순서 등이 한정되지 않는다. 명세서에서 어떤 부분이 어떤 구성요소를 '포함' 또는 '구비'한다고 할 때, 이는 명시적으로 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.In describing the components of the embodiment according to the present disclosure, symbols such as first, second, i), ii), a), and b) may be used. These codes are only used to distinguish the component from other components, and the nature, order, or order of the component is not limited by the code. In the specification, when a part is said to 'include' or 'have' a certain component, this means that it does not exclude other components, but may further include other components, unless explicitly stated to the contrary. .
본 발명에 따른 장치 또는 방법의 각 구성요소는 하드웨어 또는 소프트웨어로 구현되거나, 하드웨어 및 소프트웨어의 결합으로 구현될 수 있다. 또한, 각 구성요소의 기능이 소프트웨어로 구현되고 마이크로프로세서가 각 구성요소에 대응하는 소프트웨어의 기능을 실행하도록 구현될 수도 있다.Each component of the device or method according to the present invention may be implemented as hardware or software, or may be implemented as a combination of hardware and software. Additionally, the function of each component may be implemented as software and a microprocessor may be implemented to execute the function of the software corresponding to each component.
이하에서는, 본 발명의 일 실시예에 따른 데이터 압축 장치가 신경망 연산의 기술적 문제점들과 그에 대한 솔루션들을 여러 도면들에 걸쳐 설명한다.Below, the technical problems of neural network operation and solutions for the data compression device according to an embodiment of the present invention will be explained through several drawings.
딥러닝 알고리즘에 이용되는 심층 신경망들의 종류로는 합성곱 신경망(Convolutional Neural Network; CNN), 순환 신경망(Recurrent Neural Network; RNN) 또는 트랜스포머 신경망(Transformer Neural Network) 등이 있다.Types of deep neural networks used in deep learning algorithms include Convolutional Neural Network (CNN), Recurrent Neural Network (RNN), or Transformer Neural Network.
심층 신경망들 중 합성곱 신경망에 대한 연산은 복수의 컨볼루션 레이어들 각각에서 컨볼루션 연산들을 포함하므로, 합성곱 신경망 기반 딥러닝 알고리즘은 많은 연산량을 처리할 수 있는 하드웨어 장치가 필요하다.Among deep neural networks, operations on a convolutional neural network include convolutional operations in each of a plurality of convolutional layers, so a deep learning algorithm based on a convolutional neural network requires a hardware device that can process a large amount of calculations.
또한, 심층 신경망들 중 순환 신경망 및 트랜스포머 신경망에 대한 연산은 큰 규모의 행렬 곱셉 및 행렬 덧셈을 포함하므로, 순환 신경망 기반 딥러닝 알고리즘은 많은 연산량을 처리할 수 있는 하드웨어 장치가 필요하다.In addition, since operations on recurrent neural networks and transformer neural networks among deep neural networks include large-scale matrix multiplication and matrix addition, recurrent neural network-based deep learning algorithms require hardware devices that can handle a large amount of calculations.
본 발명의 일 실시예에 따른 AI 가속기는 신경망 연산에 최적화된 연산 유닛들을 포함하는 AI 가속기를 이용하여 신경망 연산을 가속할 수 있다.The AI accelerator according to an embodiment of the present invention can accelerate neural network calculations using an AI accelerator including calculation units optimized for neural network calculations.
도 1은 본 발명의 일 실시예에 따른 AI 가속 시스템의 구성도이다.1 is a configuration diagram of an AI acceleration system according to an embodiment of the present invention.
도 1을 참조하면, AI 가속 시스템은 AI 가속기(110) 및 외부 메모리(120)를 포함한다. Referring to FIG. 1, the AI acceleration system includes an AI accelerator 110 and an external memory 120.
신경망 연산 과정에서 특징 데이터(feature data)의 양이 방대하기 때문에, AI 가속기(110)는 모든 레이어들의 특징 데이터를 내부 메모리에 저장하기 어렵다. Because the amount of feature data in the neural network calculation process is enormous, it is difficult for the AI accelerator 110 to store the feature data of all layers in the internal memory.
따라서, 외부 메모리(120)는 신경망 연산에 필요한 데이터를 저장하고, AI 가속기(110)는 외부 메모리(120)에 저장된 데이터를 불러오고, 불러온 데이터를 처리함으로써 신경망 연산을 수행한다.Accordingly, the external memory 120 stores data necessary for neural network calculation, and the AI accelerator 110 loads data stored in the external memory 120 and processes the retrieved data to perform neural network calculation.
이하에서는, AI 가속기 시스템의 각 구성요소를 설명한다.Below, each component of the AI accelerator system is described.
외부 메모리(120)는 신경망 연산의 입력 데이터 또는 출력 데이터로서, 이미지 데이터, 특징 데이터, 가중치들, 및 바이어스들을 저장한다. 합성곱 신경망 연산 시, 외부 메모리(120)는 입력 이미지 또는 특징맵들(feature maps)로부터 분할된 복수의 타일들을 저장한다.The external memory 120 stores image data, feature data, weights, and biases as input data or output data of neural network operations. When calculating a convolutional neural network, the external memory 120 stores a plurality of tiles divided from an input image or feature maps.
외부 메모리(120)는 AI 가속기(110) 내 데이터 메모리(116)보다 큰 저장용량을 가진다. 외부 메모리(120)는 디램(Dynamic Random Access Memory; DRAM)으로 구현될 수 있다.The external memory 120 has a larger storage capacity than the data memory 116 within the AI accelerator 110. The external memory 120 may be implemented as Dynamic Random Access Memory (DRAM).
외부 메모리(120)는 오프칩 메모리(off-chip memory)로 지칭될 수 있다. External memory 120 may be referred to as off-chip memory.
AI 가속기(110)는 신경망 연산에 최적화된 하드웨어 장치로서, 외부 메모리(120)에 저장된 데이터를 이용하여 신경망 연산을 수행한다. AI 가속기(110)는 처리된 데이터를 외부 메모리(120)에 저장한다. 합성곱 신경망 연산 시, AI 가속기(110)는 외부 메모리(120)에 저장된 타일들 중 일부에 대해 신경망 연산을 수행할 수 있다.The AI accelerator 110 is a hardware device optimized for neural network calculations and performs neural network calculations using data stored in the external memory 120. The AI accelerator 110 stores the processed data in the external memory 120. When calculating a convolutional neural network, the AI accelerator 110 may perform the neural network calculation on some of the tiles stored in the external memory 120.
AI 가속기(110)는 프로세서(111), 연산부(computation unit, 112), DMA(Direct Memory Access, 113), 압축/압축해제부(compression/decompression uint, 114), 프로그램 메모리(115), 데이터 메모리(116)를 포함한다.The AI accelerator 110 includes a processor 111, a computation unit 112, a direct memory access DMA 113, a compression/decompression unit 114, a program memory 115, and a data memory. Includes (116).
프로세서(111)는 프로그램 메모리(115)에 저장된 프로그램 명령어들을 실행함으로써, AI 가속기(110)의 전반적인 동작들을 제어한다.The processor 111 controls the overall operations of the AI accelerator 110 by executing program instructions stored in the program memory 115.
데이터 메모리(116)는 프로세서(111)의 제어에 필요한 데이터 및 외부 메모리(120)로부터 읽어들인 데이터를 저장한다. 일 예로서, 데이터 메모리(116)는 신경망의 특징 데이터 또는 가중치들을 저장할 수 있다.The data memory 116 stores data necessary for controlling the processor 111 and data read from the external memory 120. As an example, data memory 116 may store feature data or weights of a neural network.
프로그램 메모리(115)와 데이터 메모리(116)는 내부 메모리 또는 온칩 메모리(on-chip memory)로 지칭될 수 있다. Program memory 115 and data memory 116 may be referred to as internal memory or on-chip memory.
연산부(112)는 합성곱 연산과 같은 신경망 연산을 수행한다. The operation unit 112 performs neural network operations such as convolution operations.
연산부(112)는 신경망 연산에 최적화되도록 구성되어, 신경망 연산에 대해 빠른 처리 속도를 갖는다.The calculation unit 112 is configured to be optimized for neural network calculations and has a fast processing speed for neural network calculations.
DMA(113)는 데이터 메모리(116)와 외부 메모리(120)간 데이터 전송을 지원한다. The DMA 113 supports data transfer between the data memory 116 and the external memory 120.
압축/압축해제부(114)는 데이터 메모리(116)와 외부 메모리(120) 간 데이터 전송량을 줄이기 위해, 데이터 압축 또는 데이터 압축 해제를 지원한다.The compression/decompression unit 114 supports data compression or data decompression to reduce the amount of data transfer between the data memory 116 and the external memory 120.
압축/압축해제부(114)는 프로세서(111)의 프로그램 실행에 따라 제어되거나, 데이터를 압축 프로세스를 수행하는 적어도 하나의 프로세서 및 적어도 하나의 메모리를 포함할 수 있다.The compression/decompression unit 114 may be controlled according to program execution of the processor 111 or may include at least one processor and at least one memory that performs a data compression process.
본 발명의 일 실시예에 따르면, 압축/압축해제부(114)는 데이터 메모리(116)와 외부 메모리(120) 간 데이터의 비트 길이를 줄임으로써, 데이터 전송에 따른 전력 및 시간을 줄일 수 있다.According to one embodiment of the present invention, the compression/decompression unit 114 can reduce the power and time required for data transmission by reducing the bit length of data between the data memory 116 and the external memory 120.
구체적으로, 신경망 훈련 장치는 AI 가속기(110)와 연계하여 신경망의 파라미터들을 훈련한다. 신경망의 파라미터들은 신경망의 정확성을 위해 부동 소수점 포맷에 따라 1차적으로 훈련되고, 신경망의 연산 속도를 위해 고정 소수점 포맷에 따라 2차적으로 훈련된다. 대안으로서, 신경망의 파라미터들은 정수 포맷에 따라 2차 훈련될 수 있다.Specifically, the neural network training device trains the parameters of the neural network in conjunction with the AI accelerator 110. The parameters of the neural network are primarily trained according to the floating point format for the accuracy of the neural network, and secondarily trained according to the fixed point format for the computational speed of the neural network. As an alternative, the parameters of the neural network can be quadratic trained according to the integer format.
구체적으로, 부동 소수점 포맷은 고정 소수점 포맷 또는 정수 타입보다 더 많은 범위의 숫자들을 표현할 수 있기 때문에, 부동 소수점 포맷에 따라 훈련된 신경망의 파라미터들은 신경망의 정확도를 향상시킬 수 있다.Specifically, because the floating point format can represent a larger range of numbers than the fixed point format or integer type, the parameters of a neural network trained according to the floating point format can improve the accuracy of the neural network.
다만, 부동 소수점 포맷으로 인코딩된 데이터는 긴 비트 길이를 가지므로, AI 가속기(110)와 외부 메모리(120) 간 데이터 접근에 따른 전력 소모 및 시간 소요가 크다는 문제점이 있다.However, since data encoded in floating point format has a long bit length, there is a problem in that power consumption and time required to access data between the AI accelerator 110 and the external memory 120 are large.
이러한 문제점을 해결하기 위해, 압축/압축해제부(114)는 두 가지 압축 방법으로서, 부동 소수점 포맷에 따라 인코딩된 데이터 요소를 데이터 압축 포맷에 따라 인코딩하는 방법, 또는 소프트맥스 함수에 입력될 데이터 요소들을 압축하는 방법 중 적어도 하나의 방법을 이용할 수 있다. To solve this problem, the compression/decompression unit 114 uses two compression methods: a method of encoding data elements encoded according to a floating point format according to a data compression format, or a method of encoding data elements to be input to the softmax function. At least one method of compressing data can be used.
구체적으로, 압축/압축해제부(114)는 데이터 메모리(116)와 외부 메모리(120) 간 데이터를 부동 소수점 포맷으로부터 본 발명의 일 실시예에 따른 데이터 포맷으로 변환함으로써, 데이터 요소의 비트 길이를 줄일 수 있다. 특히, 부동 소수점 포맷에 따라 인코딩된 데이터 요소의 지수값의 비트 길이가 줄거나, 값이 제로인 데이터 요소의 전체 비트 길이가 줄어든다.Specifically, the compression/decompression unit 114 converts the data between the data memory 116 and the external memory 120 from a floating point format to a data format according to an embodiment of the present invention, thereby reducing the bit length of the data element. It can be reduced. In particular, depending on the floating point format, the bit length of the exponent value of the encoded data element is reduced, or the total bit length of the data element with a value of zero is reduced.
나아가, 신경망 내 소프트맥스 레이어에서 사용되는 소프트맥스 함수에 관한 프로세스의 특징을 고려하여, 압축/압축해제부(114)는 소프트맥스 함수의 결과값에 영향을 주지 않거나, 미미한 영향을 주는 범위에서 데이터 요소의 가수비트들 중 상위 가수비트들만 외부 메모리(120)에 저장한다. Furthermore, taking into account the characteristics of the process related to the softmax function used in the softmax layer in the neural network, the compression/decompression unit 114 compresses the data in a range that does not affect or has a slight effect on the result value of the softmax function. Among the mantissa bits of the element, only the upper mantissa bits are stored in the external memory 120.
본 발명의 일 실시예에 따르면, 데이터를 압축하기 위한 데이터 압축 장치는 압축/압축해제부(114)에 대응될 수 있다. 다른 실시예에서, 데이터 압축 장치는 프로세서(111), 프로그램 메모리(115), 데이터 메모리(116), 및 압축/압축해제부(114)를 포함할 수 있다.According to one embodiment of the present invention, a data compression device for compressing data may correspond to the compression/decompression unit 114. In another embodiment, the data compression device may include a processor 111, a program memory 115, a data memory 116, and a compression/decompression unit 114.
도 2는 반정밀도 부동 소수점 포맷을 설명하기 위해 예시한 도면이다.Figure 2 is an example diagram to explain the half-precision floating point format.
부동 소수점 포맷은 기계 연산을 위해 2 진수로 표현된다.Floating point formats are expressed in binary for machine operations.
부동 소수점 포맷은 정밀도에 따라 반정밀도(half-precision), 단정밀도(single-precision) 및 배정밀도(double-precision) 중 어느 하나를 가질 수 있다. 반정밀도 부동 소수점은 16 비트(bits)로 표현되며, 단정밀도 부동 소수점은 32 비트로 표현되고, 배정밀도 부동 소수점은 64 비트로 표현된다. 부동 소수점 포맷은 부호 필드(Sign field), 지수 필드(Exponent field), 및 가수 필드(Mantissa field)를 포함한다.Depending on the precision, floating point formats can be either half-precision, single-precision, or double-precision. Half-precision floating point points are expressed with 16 bits, single-precision floating point points are expressed with 32 bits, and double-precision floating point points are expressed with 64 bits. The floating point format includes a sign field, an exponent field, and a mantissa field.
도 2를 참조하면, 반정밀도 부동 소수점 포맷에 관한 비트 구성 및 카테고리들이 도시되어 있다.Referring to Figure 2, bit configurations and categories for a half-precision floating point format are shown.
부동 소수점 포맷은 IEEE 754 표준 문서에 개시된 부동 소수점 포맷을 기반으로 한다. 반정밀도 부동 소수점 포맷은 1 비트의 부호 필드, 5비트의 지수 필드, 및 10 비트의 가수 필드를 포함한다. 다른 실시예에서, 각 필드의 비트 수는 달라질 수 있다.The floating point format is based on the floating point format disclosed in the IEEE 754 standard document. The half-precision floating point format includes a 1-bit sign field, a 5-bit exponent field, and a 10-bit mantissa field. In other embodiments, the number of bits in each field may vary.
반정밀도 부동 소수점 포맷은 지수부 및 가수부의 값에 따라 정규값(normalized number), 비정규값(subnormal number), 제로(+/- zero), NaN(Not a Number), 및 무한대(+/- Infinity)를 나타낼 수 있다. The half-precision floating point format can be normalized number, subnormal number, zero (+/- zero), NaN (Not a Number), and infinity (+/- Infinity) depending on the values of the exponent and mantissa. ) can be indicated.
정규값은 (-1)S×2(E-15) ×(1.M)2의 형태로 표현 가능한 값들을 나타낸다. E는 지수값(exponent value)이고, M은 가수비트들(mantissa bits)이다. 지수 필드는 부호 비트를 가지고 있지 않기 때문에 음수를 나타내기 위해 -15만큼 바이어스를 이용한다. 예를 들어, 10000의 지수비트들(exponent bits)은 십진수 표현에서 16을 나타내지만, -15 바이어스에 의해 실질적으로 1의 지수값을 나타낸다. 한편, 가수비트들은 암시된 선행하는 1을 가진다. 정규값의 해석으로서, 이진수로 표현되는 (1.M)2 값을 (E-15)만큼 왼쪽으로 시프트하고, 부호값을 적용하면, 이진수 표현에 따른 값이 산출된다.Normal values represent values that can be expressed in the form (-1) S × 2 (E-15) × (1.M) 2 . E is the exponent value, and M is the mantissa bits. Because the exponent field does not have a sign bit, a bias of -15 is used to represent negative numbers. For example, the exponent bits of 10000 represent 16 in decimal representation, but actually represent an exponent value of 1 due to a -15 bias. Meanwhile, the mantissa bits have an implied leading 1. As an interpretation of a regular value, if the (1.M) 2 value expressed in binary is shifted to the left by (E-15) and the sign value is applied, the value according to the binary expression is calculated.
비정규값은 (-1)S×2-14 ×(0.M)2의 형태로 표현되는 값들을 나타낸다. 비정규값은 정규값에 의해 표현되지 않은 작은 수를 나타내기 위한 것이다. 비정규값의 가수비트들은 선행하는 1을 가지지 않는다. 비정규값을 통해 0에 가까운 수를 나타낼 수 있다.Non-normal values represent values expressed in the form (-1) S ×2 -14 ×(0.M) 2 . Non-normal values are intended to represent small numbers that are not represented by regular values. The mantissa bits of non-normal values do not have a leading 1. Numbers close to 0 can be expressed through non-normal values.
제로값은 지수비트들과 가수비트들이 모두 제로인 값을 나타낸다. 부호 비트는 0 또는 1일 수 있다.A zero value represents a value in which both the exponent bits and mantissa bits are zero. The sign bit can be 0 or 1.
무한대는 정규값에 의해 표현되는 범위를 벗어난 값을 나타낸다.Infinity represents a value outside the range represented by the normal value.
이하에서는, 두 가지 압축 방법 중 부동 소수점 포맷에 따라 인코딩된 데이터 요소를 데이터 압축 포맷에 따라 인코딩하는 방법에 관해 설명한다.Below, of the two compression methods, a method of encoding data elements encoded according to a floating point format according to a data compression format will be described.
한편, 이하에서는, 반정밀도 부동 소수점 포맷은 1 비트의 부호 필드, 6비트의 지수 필드, 및 9 비트의 가수 필드를 포함하는 것으로 설명한다. Meanwhile, hereinafter, the half-precision floating point format will be described as including a 1-bit sign field, a 6-bit exponent field, and a 9-bit mantissa field.
도 3a 및 도 3b는 본 발명의 일 실시예에 따른 압축 데이터 포맷을 설명하기 위해 예시한 도면이다.3A and 3B are diagrams illustrating a compressed data format according to an embodiment of the present invention.
신경망 훈련 동안 생성되는 특징값들은 특징맵들 상에서 서로 인접할수록 비슷한 값을 가진다. 예를 들면, 이미지 타일 내에서 특정 물체에 관한 픽셀들을 비슷한 값들을 가질 확률이 높다. 부동 소수점 포맷에서, 인접한 특징값들은 비슷한 지수값들을 가질 확률이 높다. 즉, 신경망의 특징값들이 부동 소수점 포맷에 따라 데이터 요소들로 인코딩 될 때, 데이터 요소들의 지수값들은 지역성(locality)을 가진다.Feature values generated during neural network training have similar values as they are closer to each other on feature maps. For example, within an image tile, pixels associated with a particular object are likely to have similar values. In floating point format, adjacent feature values are more likely to have similar exponent values. That is, when the feature values of a neural network are encoded into data elements according to a floating point format, the exponent values of the data elements have locality.
본 발명의 일 실시예에 따른 압축 데이터 포맷은 데이터 요소들의 지수값들의 지역성을 이용하여 데이터 요소들의 비트들을 압축시킬 수 있는 포맷이다.The compressed data format according to an embodiment of the present invention is a format that can compress the bits of data elements using the locality of the exponent values of the data elements.
데이터 압축 장치는 지역성을 갖는 데이터 요소들에 대해 참조 지수값을 설정하고, 데이터 요소들의 지수값이 참조 지수값에 따른 지수범위에 포함되는지 여부 또는 데이터 요소들의 지수값들이 제로값인지 여부에 따라 데이터 요소들을 압축한다. The data compression device sets reference exponent values for data elements with locality, and determines data according to whether the exponent values of the data elements are included in the exponent range according to the reference exponent value or whether the exponent values of the data elements are zero values. Compress elements.
도 3a를 참조하면, 본 발명의 일 실시예에 따른 압축 데이터 포맷이 도시되어 있다. Referring to Figure 3A, a compressed data format according to one embodiment of the present invention is shown.
압축 데이터 포맷은 데이터 요소의 지수비트들을 압축하기 위한 명령 코드(Operation code; OP code)와, 데이터 항목을 포함한다. The compressed data format includes a data item and an operation code (OP code) for compressing the exponent bits of the data element.
데이터 항목은 데이터 요소의 부호비트와 가수비트들을 포함한다. 데이터 항목은 필요에 따라 지수비트들을 더 포함할 수 있고, 아무 비트들을 포함하지 않을 수도 있다.A data item includes the sign bit and mantissa bits of the data element. The data item may contain additional exponent bits as needed, or may contain no bits.
명령코드는 데이터 요소의 특성 또는 데이터 요소의 제로 비트들을 가리킬 수 있다. 명령코드에 따른 지시(indication)는 미리 정의될 수 있다. The command code may indicate a characteristic of the data element or the zero bits of the data element. Indication according to the command code can be defined in advance.
도 3b를 더 참조하면, 명령코드들에 따른 지시들이 기록된 테이블이 도시되어 있다. Referring further to FIG. 3B, a table in which instructions according to command codes are recorded is shown.
명령코드, 스킵코드 및 제로코드는 부동 소수점 포맷에 따른 지수 비트 길이보다 짧다. 반정밀도 부동 소수점 포맷에 따른 5 지수비트길이를 압축하기 위해, 명령 코드는 3 비트길이를 가질 수 있다. The command code, skip code, and zero code are shorter than the exponent bit length according to the floating point format. To compress the 5 exponent bits in length according to the half-precision floating point format, the instruction code can be 3 bits long.
도 3b에서, Ein은 입력된 데이터 요소의 지수값을 나타내고, Eref는 참조 지수값을 나타낸다. 참조 지수값에 따른 지수 범위는 Eref, Eref+1, Eref+2, Eref-1, 및 Eref-2를 포함한다.In Figure 3b, E in represents the exponent value of the input data element, and E ref represents the reference exponent value. The exponent range according to the reference exponent value includes E ref , E ref +1, E ref +2, E ref -1, and E ref -2.
000 비트들의 명령코드는 입력된 데이터 요소의 지수값이 참조 지수값과 동일함을 가리킨다. The command code of 000 bits indicates that the exponent value of the input data element is the same as the reference exponent value.
001 비트들부터 110 비트들의 명령코드들은 입력된 데이터 요소의 지수값이 참조 지수값에 따른 지수 범위에 포함됨을 가리킨다. 도 3b에서, 지수값의 범위는 참조 지수값을 중심으로 균등한 배치를 갖는다. 반면, 다른 실시예에서 지수 범위는 참조 지수값을 기준으로 대칭 구조가 아닐 수 있다. 예를 들면, 지수 범위 내에서 참조 지수값이 가장 작은 값일 수 있다. 다른 예로서, 참조 지수값은 가장 큰 값일 수 있다. Command codes of 001 bits to 110 bits indicate that the exponent value of the input data element is included in the exponent range according to the reference exponent value. In Figure 3b, the range of exponent values is evenly distributed around the reference exponent value. On the other hand, in other embodiments, the index range may not be symmetrical with respect to the reference index value. For example, the reference index value may be the smallest value within the index range. As another example, the reference index value may be the largest value.
101 비트들의 명령코드는 입력된 데이터 요소가 제로값임을 가리킨다. 다른 실시예에서, 제로값을 나타내는 명령코드 대신 지수범위를 나타내는 명령코드가 이용될 수 있다. 신경망의 레이어에서 값이 0인 데이터의 양이 적을 때, 압축율이 증가할 수 있다.A command code of 101 bits indicates that the input data element is a zero value. In another embodiment, a command code representing an exponent range may be used instead of a command code representing a zero value. When the amount of data with zero values in the layers of a neural network is small, the compression rate can be increased.
110 비트들의 명령코드는 입력된 데이터 요소의 지수값이 참조 지수값에 따른 지수 범위를 벗어남을 가리킨다.The 110-bit command code indicates that the exponent value of the input data element is outside the exponent range according to the reference exponent value.
111 비트들의 명령코드는 입력된 데이터 요소의 지수값을 참조 지수값으로 설정하는 명령을 가리킨다.The 111-bit command code indicates a command that sets the exponent value of the input data element as the reference exponent value.
데이터 압축 장치는 부동 소수점 포맷에 따라 인코딩된 데이터 요소들을 도 3a에 도시된 압축 데이터 포맷들 중 하나에 따라 인코딩한다. The data compression device encodes data elements encoded according to the floating point format according to one of the compressed data formats shown in FIG. 3A.
도 4는 본 발명의 일 실시예에 따른 데이터 압축 방법의 순서도이다.Figure 4 is a flowchart of a data compression method according to an embodiment of the present invention.
데이터 압축 장치는 부동 소수점 포맷에 따라 인코딩된 데이터 요소들(data elements)을 포함하는 데이터 블록으로부터 압축된 데이터 요소들을 생성한다.A data compression device generates compressed data elements from a data block containing data elements encoded according to a floating point format.
도 4를 참조하면, 데이터 압축 장치는 초기 데이터 요소로서 제1 데이터 요소를 입력 받는다.Referring to FIG. 4, the data compression device receives a first data element as an initial data element.
미리 설정된 참조 지수값이 존재하지 않을 때, 데이터 압축 장치는 입력된 제1 데이터 요소의 지수값을 참조 지수값으로 설정한다(S410). When a preset reference index value does not exist, the data compression device sets the index value of the input first data element as the reference index value (S410).
나아가, 데이터 압축 장치는 입력되는 제1 데이터 요소의 지수값을 포함하는 복수의 지수값들을 설정한다. 설정된 지수값들 각각에 대응되는 명령코드도 함께 설정된다.Furthermore, the data compression device sets a plurality of exponent values including the exponent value of the first input data element. The command code corresponding to each of the set exponent values is also set.
데이터 압축 장치는 참조 지수값의 설정을 나타내는 설정코드(set code)와 함께 제1 데이터 요소를 결합함으로써, 제1 압축된 데이터 요소를 생성한다(S420). The data compression device generates a first compressed data element by combining the first data element with a set code indicating the setting of the reference index value (S420).
도 3b를 더 참조하면, 제1 인코딩된 데이터 요소는 111 비트들과, 제1 데이터 요소의 전체 비트들을 포함할 수 있다.With further reference to FIG. 3B, the first encoded data element may include 111 bits, total bits of the first data element.
이후, 데이터 압축 장치는 입력되는 제2 데이터 요소의 지수값이 참조 지수값에 따른 지수범위에 포함되는지 여부에 따라 제2 압축된 데이터 요소를 생성한다(S430). Thereafter, the data compression device generates a second compressed data element depending on whether the exponent value of the input second data element is included in the exponent range according to the reference exponent value (S430).
여기서, 참조 지수값에 따른 지수범위는 참조 지수값을 포함하는 복수의 지수값들을 포함한다. 도 3b를 더 참조하면, 제2 데이터 요소의 지수값이 참조 지수값에 따른 지수범위에 포함되는지 여부는 제2 데이터 요소의 지수값이 기 설정된 지수값들에 매치되는지 여부에 따라 결정될 수 있다.Here, the index range according to the reference index value includes a plurality of index values including the reference index value. Referring further to FIG. 3B, whether the exponent value of the second data element is included in the exponent range according to the reference exponent value may be determined depending on whether the exponent value of the second data element matches preset exponent values.
제2 데이터 요소의 지수값이 기 설정된 지수값들 중 어느 하나에 매치되는 경우, 데이터 압축 장치는 제2 데이터 요소의 지수값에 대응되는 명령코드, 제2 데이터 요소의 부호비트 및 제2 데이터 요소의 가수비트들을 포함하는 제2 압축된 데이터 요소를 생성하기 위해, 제2 데이터 요소를 인코딩한다.When the exponent value of the second data element matches one of the preset exponent values, the data compression device provides an instruction code corresponding to the exponent value of the second data element, the sign bit of the second data element, and the second data element. Encode the second data element to produce a second compressed data element containing mantissa bits.
반면, 제2 데이터 요소의 지수값이 기 설정된 지수값들 중 어느 하나에 매치되지 않는 경우, 데이터 압축 장치는 데이터 압축을 스킵하거나, 새로운 참조 지수값을 설정할 수 있다. On the other hand, if the exponent value of the second data element does not match any of the preset exponent values, the data compression device may skip data compression or set a new reference exponent value.
구체적으로, 제2 데이터 요소의 지수값이 기 설정된 지수값들 중 어느 하나에 매치되지 않는 경우, 데이터 압축 장치는 압축 스킵을 나타내는 스킵코드, 및 제2 데이터 요소의 전체 비트들을 포함하도록, 제2 데이터 요소를 인코딩할 수 있다. 제2 데이터 요소 이후에 입력되는 데이터 요소들이 제2 데이터 요소가 아닌 제1 데이터 요소와의 지역성을 갖는다면, 압축율이 증가할 수 있다.Specifically, when the exponent value of the second data element does not match any one of the preset exponent values, the data compression device generates a second data element to include a skip code indicating compression skip and all bits of the second data element. Data elements can be encoded. If data elements input after the second data element have locality with the first data element rather than the second data element, the compression rate can be increased.
그렇지 않으면, 데이터 압축 장치는 제2 데이터 요소의 지수값을 참조 지수값으로 설정하고, 참조 지수값의 설정을 나타내는 설정코드와 제2 데이터 요소의 전체비트들을 포함하도록, 제2 데이터 요소를 인코딩할 수 있다. 제2 데이터 요소 이후에 입력되는 데이터 요소들이 제2 데이터 요소와의 지역성을 갖는다면, 압축율이 증가할 수 있다.Otherwise, the data compression device sets the exponent value of the second data element to the reference exponent value and encodes the second data element to include a setting code indicating the setting of the reference exponent value and all bits of the second data element. You can. If data elements input after the second data element have locality with the second data element, the compression rate can be increased.
한편, 본 발명의 일 실시예에 따르면, 데이터 압축 장치는 입력되는 제2 데이터 요소가 제로값인 경우, 제로값을 나타내는 제로코드를 포함하도록, 제2 데이터 요소를 인코딩할 수 있다. 제2 데이터 요소가 제로값인지 판단하는 것은 제2 데이터 요소가 지수 범위에 포함되는지 여부를 판단하는 것에 우선할 수 있다. 제2 인코딩된 데이터 요소는 3 비트길이로 압축된다. 신경망의 레이어에서 ReLU(Rectified Linear Unit) 함수에 의해 값이 0인 데이터가 많이 발생할 때, 압축율이 증가할 수 있다.Meanwhile, according to an embodiment of the present invention, when the input second data element is a zero value, the data compression device may encode the second data element to include a zero code indicating the zero value. Determining whether the second data element is a zero value may take precedence over determining whether the second data element is included in the exponent range. The second encoded data element is compressed to 3 bits long. When a lot of data with a value of 0 is generated by the ReLU (Rectified Linear Unit) function in the layers of the neural network, the compression rate can increase.
본 발명의 일 실시예에 따르면, 데이터 압축 장치는 신경망의 레이어별로 스킵코드 또는 제로코드 중 적어도 하나를 적용할 수 있다. 값이 0인 특징값들이 많은 레이어에서는, 제로코드만 이용되거나, 제로코드 및 스킵코드가 이용될 수 있다. 반면, 값이 0인 특징값들이 적은 레이어에서는, 스킵코드만 이용될 수 있다. 이를 위해, 데이터 압축 장치는 뉴럴네트워크의 각 레이어에서 처리하고자 하는 연산에 따라 값이 0인 특징값들의 양을 예측할 수 있고, 값이 0인 특징값들의 양에 따라 제로코드를 사용할 것인지 여부를 판단할 수 있다.According to one embodiment of the present invention, the data compression device may apply at least one of a skip code or a zero code to each layer of the neural network. In a layer with many feature values having a value of 0, only zero codes may be used, or zero codes and skip codes may be used. On the other hand, in a layer with few feature values whose value is 0, only skip codes can be used. To this end, the data compression device can predict the amount of feature values with a value of 0 according to the operation to be processed in each layer of the neural network, and determines whether to use a zero code based on the amount of feature values with a value of 0. can do.
본 발명의 다른 실시예에 따르면, 데이터 압축 장치는 데이터 요소들의 값들을 기반으로 데이터 요소들의 분포를 분석하고, 데이터 요소들의 분포에 기초하여 스킵코드 또는 제로코드 중 적어도 하나를 적용할 수 있다. 값이 0인 데이터 요소들이 많은 경우, 제로코드만 이용되거나, 제로코드 및 스킵코드가 이용될 수 있다. 반면, 값이 0인 데이터 요소들이 적은 경우, 스킵코드만 이용될 수 있다.According to another embodiment of the present invention, the data compression apparatus may analyze the distribution of data elements based on the values of the data elements, and apply at least one of a skip code or a zero code based on the distribution of the data elements. If there are many data elements with a value of 0, only the zero code may be used, or the zero code and skip code may be used. On the other hand, when there are few data elements with a value of 0, only a skip code can be used.
전술한 바와 같이, 데이터 압축 장치는 부동 소수점 포맷에 따른 데이터 요소들을 압축 데이터 포맷에 따라 인코딩함으로써, 데이터 요소들의 전체 비트길이를 줄일 수 있다. 나아가, 비트손실이 발생하지 않는다.As described above, the data compression device can reduce the total bit length of the data elements by encoding data elements according to the floating point format according to the compressed data format. Furthermore, no bit loss occurs.
데이터 압축 장치는 제1 압축된 데이터 요소 및 제2 압축된 데이터 요소를 외부 메모리에 저장한다(S450).The data compression device stores the first compressed data element and the second compressed data element in an external memory (S450).
데이터 압축 장치는 소정의 단위로 데이터 요소들을 인코딩하고, 인코딩된 데이터 요소를 외부 메모리에 저장할 수 있다. 대안으로서, 데이터 압축 장치는 데이터 요소별로 인코딩 후 저장할 수 있다.A data compression device can encode data elements in predetermined units and store the encoded data elements in an external memory. As an alternative, a data compression device can encode and then store data elements by element.
본 발명의 일 실시예에 따르면, 데이터 압축 장치는 압축된 데이터 요소의 가수비트들 중 일부를 무시함으로써, 외부 메모리에 저장하기 위해 전송되는 데이터 요소들의 비트 수들을 줄일 수 있다. 자세한 설명은 후술한다.According to one embodiment of the present invention, a data compression device can reduce the number of bits of data elements transmitted for storage in an external memory by ignoring some of the mantissa bits of the compressed data elements. A detailed explanation will be provided later.
도 5는 데이터 요소들의 예시를 나타낸 도면이다. Figure 5 is a diagram showing examples of data elements.
도 5를 참조하면, 14 개의 데이터 요소들이 도시되어 있다. 데이터 요소들은 소정의 단위로 그룹핑되어 하나의 데이터 블록이 될 수 있다. 각 데이터 요소는 1 비트의 부호 필드, 6 비트의 지수 필드, 및 9 비트의 지수 필드를 포함한다. Referring to Figure 5, 14 data elements are shown. Data elements may be grouped into predetermined units to form one data block. Each data element includes a 1-bit sign field, a 6-bit exponent field, and a 9-bit exponent field.
도 5에서, 데이터 요소들의 대부분은 비슷한 크기의 값들을 가지며, 일부 데이터 요소들은 제로값을 가지거나 다른 데이터 요소들과 차이가 큰 값을 가진다.In Figure 5, most of the data elements have values of similar sizes, and some data elements have zero values or values that are significantly different from other data elements.
이하에서는, 도 5에 예시된 데이터 요소들을 압축하는 다양한 실시예들에 관해 설명한다.Below, various embodiments of compressing the data elements illustrated in FIG. 5 will be described.
도 6a 및 도 6b는 본 발명의 일 실시예에 따른 데이터 압축 방법을 나타낸 도면이다.Figures 6a and 6b are diagrams showing a data compression method according to an embodiment of the present invention.
도 6a를 참조하면, 명령코드들에 따른 지시들이 기록된 테이블이 도시되어 있다. 테이블은 참조 지수값 설정에 관한 명령코드 및 지수범위에 관한 명령코드들을 포함하지만, 압축 스킵에 관한 명령코드 및 제로값에 관한 명령코드를 포함하지 않는다. Referring to FIG. 6A, a table in which instructions according to command codes are recorded is shown. The table includes command codes for setting reference exponent values and command codes for exponent ranges, but does not include command codes for compression skip and command codes for zero values.
한편, 데이터 압축 장치는 데이터 요소의 지수값이 기 설정된 참조 지수값에 따른 지수범위에 포함되는지 여부를 판단하는 방법으로서, 데이터 요소의 지수값과 참조 지수값 간 차이값이 기 설정된 범위에 포함되는지 여부를 판단할 수 있다. 다른 방법으로서, 데이터 압축 장치는 참조 지수값과 인접한 값들을 설정하고, 데이터 요소의 지수값이 상기 설정된 지수값들에 매치되는지 여부를 판단할 수 있다. 다만, 이하에서는 전자의 방법을 기준으로 설명한다. Meanwhile, the data compression device is a method of determining whether the exponent value of a data element is included in the exponent range according to a preset reference exponent value, and whether the difference between the exponent value of the data element and the reference exponent value is included in the preset range. You can judge whether or not. As another method, the data compression device may set values adjacent to the reference exponent value and determine whether the exponent value of the data element matches the set exponent values. However, the explanation below will be based on the former method.
지수범위는 참조 지수값보다 3만큼 큰 값을 상한값으로 가지고, 참조 지수값보다 3만큼 작은 값을 하한값으로 가진다.The index range has a value that is 3 greater than the reference index value as the upper limit, and a value that is 3 less than the reference index value as the lower limit.
도 6b를 참조하면, (0, 11_0000, 0_1111_1111) 비트들을 갖는 제0 데이터 요소가 데이터 압축 장치에 처음으로 입력된다. 미리 설정된 참조 지수값이 존재하지 않으므로, 제0 데이터 요소의 지수값과 참조 지수값 간 차이값 또한 존재하지 않는다. Referring to FIG. 6B, the 0th data element having (0, 11_0000, 0_1111_1111) bits is first input to the data compression device. Since there is no preset reference exponent value, the difference value between the exponent value of the 0th data element and the reference exponent value also does not exist.
제0 데이터 요소의 지수값은 데이터 압축 장치에 의해 참조 지수값으로 설정된다. 제0 데이터 요소는 참조 지수값의 설정을 가리키는 111 비트들과 제0 데이터 요소의 전체 비트들을 포함하도록, 인코딩된다. 제1 인코딩된 데이터 요소의 비트들의 개수는 19개다.The exponent value of the 0th data element is set as a reference exponent value by the data compression device. The zeroth data element is encoded to include all bits of the zeroth data element and 111 bits indicating the setting of the reference index value. The number of bits of the first encoded data element is 19.
제1 데이터 요소의 지수값은 참조 지수값보다 1만큼 크므로, 참조 지수값에 따른 지수범위에 포함된다. 따라서, 제1 데이터 요소는 참조 지수값보다 1만큼 큰 값을 나타내는 001 비트들, 제1 데이터 요소의 부호비트, 및 제1 데이터 요소의 가수비트들을 포함하도록, 인코딩된다. 제1 인코딩된 데이터 요소의 비트들의 개수는 13개다.Since the exponent value of the first data element is greater than the reference exponent value by 1, it is included in the exponent range according to the reference exponent value. Accordingly, the first data element is encoded to include 001 bits representing a value that is one greater than the reference exponent value, a sign bit of the first data element, and mantissa bits of the first data element. The number of bits of the first encoded data element is 13.
제2 데이터 요소는 제1 데이터 요소와 유사한 과정을 통해 인코딩된다. 제2 인코딩된 데이터 요소의 비트들의 개수는 13개다.The second data element is encoded through a similar process as the first data element. The number of bits of the second encoded data element is 13.
제3 데이터 요소의 지수값은 참조 지수값보다 -48만큼 작으므로, 제3 데이터 요소의 지수값과 참조 지수값 간 차이값이 기 설정된 3의 범위를 초과한다. 이에 따라, 제3 데이터 요소의 지수값은 데이터 압축 장치에 의해 새로운 참조 지수값으로 설정된다. 제3 데이터 요소는 참조 지수값의 설정을 가리키는 111 비트들과 제3 데이터 요소의 전체 비트들을 포함하도록, 인코딩된다.Since the exponent value of the third data element is -48 smaller than the reference exponent value, the difference value between the exponent value of the third data element and the reference exponent value exceeds the preset range of 3. Accordingly, the exponent value of the third data element is set as a new reference exponent value by the data compression device. The third data element is encoded to include all bits of the third data element and 111 bits indicating the setting of the reference exponent value.
이후, 제5 데이터 요소의 지수값은 재설정된 참조 지수값보다 43만큼 크므로, 제5 데이터 요소의 지수값과 재설정된 참조 지수값 간 차이값이 기 설정된 3의 범위를 초과한다. 이에 따라, 제5 데이터 요소의 지수값은 데이터 압축 장치에 의해 새로운 참조 지수값으로 설정된다.Afterwards, since the exponent value of the fifth data element is greater than the reset reference exponent value by 43, the difference value between the exponent value of the fifth data element and the reset reference exponent value exceeds the preset range of 3. Accordingly, the exponent value of the fifth data element is set as a new reference exponent value by the data compression device.
전술한 과정을 통해, 데이터 압축 장치는 각 16 비트들로 인코딩된 데이터 요소들을 압축 데이터 포맷에 따라 13 비트들 또는 19 비트들로 변환한다. 14개의 데이터 요소들을 변환한 결과에 따르면, 데이터 압축 장치는 데이터 요소들의 비트들의 총 개수를 224개에서 218개로 줄일 수 있다.Through the above-described process, the data compression device converts each data element encoded into 16 bits into 13 bits or 19 bits depending on the compressed data format. According to the results of converting 14 data elements, the data compression device can reduce the total number of bits of data elements from 224 to 218.
다만, 제5 데이터 요소 내지 제10 데이터 요소가 제0 데이터 요소, 제1 데이터 요소, 및 제2 데이터 요소와 비슷한 크기의 지수값을 가지고 있음에도 불구하고, 제로값인 제3 데이터 요소의 존재로 인해, 두 번의 참조 지수값 설정이 필요하다. However, even though the 5th to 10th data elements have exponent values similar in size to the 0th data element, the 1st data element, and the 2nd data element, due to the presence of the 3rd data element with a zero value, , it is necessary to set the reference index value twice.
도 7a 및 도 7b는 본 발명의 일 실시예에 따른 데이터 압축 방법을 나타낸 도면이다.Figures 7a and 7b are diagrams showing a data compression method according to an embodiment of the present invention.
도 7a를 참조하면, 명령코드들에 따른 지시들이 기록된 테이블이 도시되어 있다. 테이블은 참조 지수값 설정에 관한 명령코드, 지수범위에 관한 명령코드들, 및 압축 스킵에 관한 명령코드를 포함하고, 제로값에 관한 명령코드를 포함하지 않는다. Referring to FIG. 7A, a table in which instructions according to command codes are recorded is shown. The table includes command codes for setting reference exponent values, command codes for exponent ranges, and command codes for compression skip, and does not include command codes for zero values.
압축 스킵에 관한 명령코드는 데이터 요소의 지수값이 참조 지수값에 따른 지수범위를 벗어날 때 데이터 요소의 전체비트들과 함께 인코딩된다. 참조 지수값은 재설정되지 않는다. 한 번 설정된 참조 지수값은 하나 이상의 데이터 블록 내에서 이용될 수 있다. 압축 스킵에 관한 명령코드는 스킵 코드로 지칭될 수 있다.The instruction code for compression skip is encoded along with all bits of the data element when the exponent value of the data element is outside the exponent range according to the reference exponent value. The reference index value is not reset. Once set, the reference index value can be used within one or more data blocks. The command code related to compression skip may be referred to as a skip code.
한편, 도 7a에서, 지수범위는 참조 지수값보다 2만큼 큰 값을 상한값으로 가지고, 참조 지수값보다 3만큼 작은 값을 하한값으로 가진다.Meanwhile, in FIG. 7A, the exponent range has a value that is 2 greater than the reference index value as the upper limit, and a value that is 3 less than the reference index value as the lower limit.
도 7b를 참조하면, 제0 데이터 요소, 제1 데이터 요소 및 제2 데이터 요소는 도 7a 및 7b에서 설명된 바와 동일하게 인코딩된다.Referring to Figure 7b, the zeroth data element, the first data element and the second data element are encoded the same as described in Figures 7a and 7b.
제3 데이터 요소의 지수값은 참조 지수값보다 -48만큼 작으므로, 참조 지수값에 따른 지수범위를 초과한다. 여기서, 제3 데이터 요소의 지수값은 새로운 참조 지수값으로 설정되지 않는다. The exponent value of the third data element is -48 smaller than the reference exponent value, so it exceeds the exponent range according to the reference exponent value. Here, the exponent value of the third data element is not set as the new reference exponent value.
제3 데이터 요소는 압축 스킵을 나타내는 110 비트들의 스킵코드와 제3 데이터 요소의 전체 비트들을 포함하도록, 인코딩된다. 제3 인코딩된 데이터 요소의 비트들의 개수는 19개다.The third data element is encoded to include all bits of the third data element and a 110-bit skip code representing compression skip. The number of bits of the third encoded data element is 19.
요약하면, 데이터 압축 장치는 참조 지수값에 따른 지수범위를 초과하는 지수값을 가진 데이터 요소가 입력될 때, 참조 지수값을 재설정하는 것이 아니라 데이터 압축을 생략한다. In summary, when a data element with an exponent value exceeding the exponent range according to the reference exponent value is input, the data compression device does not reset the reference exponent value but omits data compression.
데이터 블록 내에 비슷한 크기를 가지는 데이터 요소들이 많을수록, 압축률이 증가한다. 14개의 데이터 요소들을 변환 결과에 따르면, 데이터 압축 장치는 데이터 요소들의 비트들의 개수를 224개에서 212개로 줄일 수 있다.The more data elements with similar sizes in a data block, the higher the compression rate. According to the results of converting the 14 data elements, the data compression device can reduce the number of bits of the data elements from 224 to 212.
도 8a 및 도 8b는 본 발명의 일 실시예에 따른 데이터 압축 방법을 나타낸 도면이다.Figures 8a and 8b are diagrams showing a data compression method according to an embodiment of the present invention.
도 8a를 참조하면, 명령코드들에 따른 지시들이 기록된 테이블이 도시되어 있다. 테이블은 참조 지수값 설정에 관한 명령코드, 지수범위에 관한 명령코드들, 압축 스킵에 관한 명령코드, 및 제로값에 관한 명령코드를 포함한다. Referring to FIG. 8A, a table in which instructions according to command codes are recorded is shown. The table includes command codes for setting reference exponent values, command codes for exponent ranges, command codes for compression skip, and command codes for zero values.
제로값에 관한 명령코드는 데이터 요소의 전체비트들이 0임을 가리키는 코드이다. 데이터 요소는 제로값에 관한 명령코드에 따라 인코딩된다. 인코딩된 데이터 요소는 명령코드에 따른 비트들로 구성된다. 제로값에 관한 명령코드는 제로 코드로 지칭될 수 있다.The command code for the zero value is a code that indicates that all bits of the data element are 0. Data elements are encoded according to the command code for the zero value. The encoded data element consists of bits according to the command code. A command code related to a zero value may be referred to as a zero code.
도 8b를 참조하면, 제0 데이터 요소, 제1 데이터 요소 및 제2 데이터 요소는 도 6a 및 6b에서 설명된 바와 동일하게 인코딩된다.Referring to Figure 8b, the zeroth data element, the first data element and the second data element are encoded the same as described in Figures 6a and 6b.
한편, 제3 데이터 요소가 지수 범위에 포함되는지 여부를 판단하기 전에 제3 데이터 요소가 제로값인지 여부가 우선적으로 판단될 수 있다. 이에 따르면, 제3 데이터 요소는 제로값이므로, 101 비트들의 제로코드를 포함하도록 인코딩된다. 제3 인코딩된 데이터 요소의 비트들의 개수는 3개다.Meanwhile, before determining whether the third data element is included in the index range, whether the third data element is a zero value may be determined first. According to this, since the third data element is a zero value, it is encoded to include a zero code of 101 bits. The number of bits of the third encoded data element is three.
14개의 데이터 요소들을 변환 결과에 따르면, 데이터 압축 장치는 데이터 요소들의 비트들의 개수를 224개에서 196개로 줄일 수 있다.According to the results of converting the 14 data elements, the data compression device can reduce the number of bits of the data elements from 224 to 196.
데이터 블록 내에 제로값을 가지는 데이터 요소들이 많을수록, 압축률이 증가한다. 일 예로서, 활성화 함수로서 ReLU 함수가 이용되는 경우, 압축률이 증가할 수 있다. The more data elements with zero values in a data block, the higher the compression ratio. As an example, when the ReLU function is used as the activation function, the compression ratio can be increased.
도 9는 본 발명의 일 실시예에 따른 비트 스트림 생성 방법의 순서도다.Figure 9 is a flowchart of a bit stream generation method according to an embodiment of the present invention.
데이터 압축 장치는 부동 소수점 포맷에 따라 인코딩된 데이터 요소들(data elements)을 포함하는 데이터 블록으로부터 압축된 데이터 요소들을 생성한다. A data compression device generates compressed data elements from a data block containing data elements encoded according to a floating point format.
도 9를 참조하면, 데이터 압축 장치는 압축된 데이터 요소들을 지수범위들 또는 제로값에 따라 그룹핑한다(S910).Referring to FIG. 9, the data compression device groups compressed data elements according to exponent ranges or zero values (S910).
데이터 압축 장치는 비슷한 크기들을 가지며 서로 인접한 데이터 요소들을 하나의 데이터 그룹으로 설정한다. 연속적인 데이터 요소들이 하나의 참조 지수값에 따른 지수범위 내에 포함되는 지수값들을 가지면, 하나의 데이터 그룹을 형성한다. 제로값을 가지는 압축된 데이터 요소들은 제로 그룹에 포함된다. 이에 따라, 제로 그룹과 적어도 하나의 데이터 그룹이 생성된다.A data compression device sets data elements that have similar sizes and are adjacent to each other into one data group. If consecutive data elements have exponent values included within an exponent range according to one reference exponent value, they form one data group. Compressed data elements with zero values are included in the zero group. Accordingly, a zero group and at least one data group are created.
데이터 압축 장치는 압축된 데이터 요소들의 개수 또는 제로값에 따라 적어도 하나의 데이터 그룹을 병합한다(S920).The data compression device merges at least one data group according to the number or zero value of compressed data elements (S920).
연속적인 두 데이터 그룹들 중 후행 데이터 그룹이 1 개의 압축된 데이터 요소를 포함하고 있을 때, 후행 데이터 그룹은 선행 데이터 그룹에 병합된다. 후행 데이터 그룹에 포함된 압축된 데이터 요소의 명령코드는 스킵코드로 변경된다.Among two consecutive data groups, when the trailing data group contains one compressed data element, the trailing data group is merged into the preceding data group. The command code of the compressed data element included in the trailing data group is changed to a skip code.
연속적인 두 데이터 그룹들 중 후행 데이터 그룹이 제로 그룹일 때, 후행 데이터 그룹은 선행 데이터 그룹에 병합된다. When the trailing data group among two consecutive data groups is a zero group, the trailing data group is merged into the leading data group.
데이터 압축 장치는 데이터 그룹들로부터 비트 스트림을 생성한다(S930).The data compression device generates a bit stream from data groups (S930).
한편, 표 1은 본 발명의 실시예들에 따른 압축률을 나타낸 표이다.Meanwhile, Table 1 is a table showing compression rates according to embodiments of the present invention.
Figure PCTKR2022018017-appb-img-000001
Figure PCTKR2022018017-appb-img-000001
표 1을 참조하면, 복수의 신경망들 각각에 대해, 데이터 압축 포맷의 실시예들을 적용함으로써, 도출된 압축 결과가 나타나 있다.Referring to Table 1, compression results derived by applying embodiments of data compression formats to each of a plurality of neural networks are shown.
데이터 압축에 관한 실시예들로서, 일반 데이터 압축(typical data compression), 스킵코드가 적용된 데이터 압축, 스킵코드 및 제로코드가 적용된 데이터 압축이 있다.Examples of data compression include typical data compression, data compression with a skip code, and data compression with a skip code and zero code.
일반 데이터 압축은 참조 지수값 설정에 관한 명령코드 및 지수범위에 관한 명령코드들을 이용한 압축을 나타낸다. 스킵 코드에 따른 데이터 압축은 일반 데이터 압축에 스킵 코드가 적용된 것을 나타낸다. 스킵코드 및 제로코드가 적용된 데이터 압축은 일반 데이터 압축에 스킵 코드 및 제로코드가 적용된 것을 나타낸다. General data compression refers to compression using command codes for setting reference exponent values and command codes for exponent ranges. Data compression according to a skip code indicates that a skip code is applied to general data compression. Data compression with skip code and zero code applied indicates that skip code and zero code are applied to general data compression.
한편, 레이어별 혼합 압축(Mixed compression per layer)은 크기가 0인 특징값들의 발생 빈도가 낮은 레이어에는 스킵코드를 적용하고, 크기가 0인 특징값들의 발생 빈도가 높은 레이어에는 스킵코드 및 제로코드를 적용하는 방식을 나타낸다.Meanwhile, mixed compression per layer applies a skip code to layers with a low frequency of occurrence of feature values with a size of 0, and a skip code and zero code to layers with a high frequency of occurrence of feature values with a size of 0. Indicates how to apply.
표 1에서 BERT 모델의 경우에는 부호 필드, 지수 필드 및 가수 필드가 각각 1 비트, 6 비트 및 9 비트인 것에 기반한다. Resnet50 모델과 Yolov3 모델의 경우, 부호 필드, 지수 필드 및 가수 필드가 각각 1 비트, 4 비트 및 3 비트인 것에 기반한다. In Table 1, the BERT model is based on the sign field, exponent field, and mantissa field being 1 bit, 6 bit, and 9 bit, respectively. For Resnet50 model and Yolov3 model, it is based on that the sign field, exponent field and mantissa field are 1 bit, 4 bit and 3 bit respectively.
일반 데이터 압축은 BERT 모델에 대해 약 10% 정도의 압축률을 달성한다.General data compression achieves a compression ratio of about 10% for the BERT model.
스킵 코드에 따른 데이터 압축은 모든 신경망들에 대해 일반 데이터 압축에 비해 더 높은 압축률을 달성한다. 다만, Resnet50 모델에 대해서는 평균 데이터 크기가 원래 데이터 크기보다 증가한다.Data compression based on skip codes achieves higher compression rates than regular data compression for all neural networks. However, for the Resnet50 model, the average data size increases than the original data size.
스킵코드 및 제로코드가 적용된 데이터 압축은 BERT 모델에 대해서는 스킵 코드가 적용된 데이터 압축에 비해 압축률이 약간 작지만, 나머지 모델에서는 훨씬 높은 압축률을 달성한다. 이는, BERT 모델에는 활성화 함수로서 소프트맥스 함수가 이용되기 때문에, 크기가 0인 특징값들의 발생 빈도가 낮은 반면, Resnet50 모델 및 YOLOv3 모델에서는 ReLU 함수가 이용되기 때문에 크기가 0인 특징값들의 발생 빈도가 높기 때문이다. 다시 말하면, 신경망의 각 레이어에서 크기가 0인 특징값들의 발생 빈도가 높을 때, 스킵코드 및 제로코드가 적용된 데이터 압축의 압축률이 높다. 반면, 신경망의 각 레이어에서 크기가 0인 특징값들의 발생 빈도가 낮을 때, 스킵코드가 적용된 데이터 압축의 압축률이 높다. 제로코드에 해당하는 비트들을 지수범위를 나타내는 코드들로 사용할 수 있기 때문이다.Data compression with skip code and zero code results in a slightly smaller compression ratio compared to data compression with skip code for the BERT model, but achieves much higher compression rates for the remaining models. This is because the BERT model uses the softmax function as an activation function, so the frequency of occurrence of feature values with a size of 0 is low, whereas in the Resnet50 model and the YOLOv3 model, the frequency of occurrence of feature values with a size of 0 is low because the ReLU function is used. Because it is high. In other words, when the frequency of occurrence of feature values with size 0 in each layer of the neural network is high, the compression rate of data compression using skip code and zero code is high. On the other hand, when the frequency of occurrence of feature values with size 0 in each layer of the neural network is low, the compression rate of data compression using skip code is high. This is because the bits corresponding to the zero code can be used as codes representing the exponent range.
이하에서는, 두 가지 압축 방법 중 소프트맥스 함수에 입력될 데이터 요소들의 가수비트들을 압축하는 방법을 설명하기 전에, 소프트맥스 함수의 연산 과정 및 기술적 문제점에 대해 설명한다.Below, before explaining the method of compressing the mantissa bits of data elements to be input to the Softmax function among the two compression methods, the calculation process and technical problems of the Softmax function will be explained.
AI 가속기는 신경망 내 소프트맥스 함수를 계산하기 위해, 수학식 1을 이용한다.The AI accelerator uses Equation 1 to calculate the softmax function in the neural network.
Figure PCTKR2022018017-appb-img-000002
Figure PCTKR2022018017-appb-img-000002
수학식 1에서, X는 데이터 요소들의 집합을 나타내고, Xmax는 데이터 요소들 중 가장 큰 값을 가지는 참조 데이터 요소를 나타낸다. X는 데이터 요소들을 포함하는 벡터로 지칭될 수 있다. 데이터 블록 X 내 데이터 요소는 Xi로 표현된다. X-Xmax는 소프트맥스 함수의 제1 중간값으로 지칭되고,
Figure PCTKR2022018017-appb-img-000003
는 소프트맥스 함수의 제2 중간값으로 지칭된다.
In Equation 1, X represents a set of data elements, and X max represents the reference data element with the largest value among the data elements. X may be referred to as a vector containing data elements. Data elements within a data block X are expressed as X i . XX max is referred to as the first intermediate value of the softmax function,
Figure PCTKR2022018017-appb-img-000003
is referred to as the second intermediate value of the softmax function.
지수함수의 입력값으로서, 데이터 요소 Xi 대신 Xi-Xmax를 이용하는 것은 데이터 요소 Xi에 대한 지수함수값이 AI 가속기의 데이터 표현 범위를 넘어 포화(saturation)되는 것을 방지하기 위한 것이다.As an input value of the exponential function, using X i -X max instead of the data element X i is to prevent the exponential function value for the data element
한편, AI 가속기는 소프트맥스 함수에 입력되는 데이터 요소들을 내부 메모리에 한번에 저장하기 어렵기 때문에, 외부 메모리에 저장된 데이터 요소들 중 일부를 로드하고, 일부 데이터 요소들에 대한 소프트맥스 중간값들(intermediate values)을 연산하고, 일부 데이터 요소들에 대한 소프트맥스 중간값들을 외부 메모리에 저장하고, 모든 데이터 요소들에 대한 소프트맥스 중간값들을 정규화함으로써 소프트맥스 함수값들을 획득한다.Meanwhile, since it is difficult for the AI accelerator to store the data elements input to the softmax function in the internal memory at once, it loads some of the data elements stored in external memory and calculates the softmax intermediate values for some data elements. Softmax function values are obtained by calculating the softmax median values for some data elements, storing the softmax median values for some data elements in external memory, and normalizing the softmax median values for all data elements.
구체적으로, 데이터 요소들의 집합 X는 외부 메모리에 저장된다. 데이터 요소들이 데이터 압축 포맷에 따라 압축된 경우, 압축된 데이터 요소들이 외부 메모리에 저장된다. 데이터 요소들은 소프트맥스 함수의 입력값들로서 저장된다. 저장 전, AI 가속기는 데이터 요소들 중 가장 큰 값을 가지는 참조 데이터 요소를 식별할 수 있다.Specifically, a set of data elements X is stored in external memory. When data elements are compressed according to a data compression format, the compressed data elements are stored in external memory. Data elements are stored as inputs to the softmax function. Before saving, the AI accelerator can identify the reference data element with the largest value among the data elements.
이후, AI 가속기는 데이터 요소 Xi를 내부 메모리에 로드하고, 데이터 요소와 참조 데이터 요소 간 차이값에 대한 자연지수 함수값
Figure PCTKR2022018017-appb-img-000004
을 소프트맥스 함수의 제2 중간값으로서 계산하고, 이를 외부 메모리에 저장한다. 저장 전, AI 가속기는 중간값을 누적함으로써, 모든 데이터 요소들과 참조 데이터 요소 간 차이값에 대한 자연지수 함수값들의 총합을 얻을 수 있다.
Afterwards, the AI accelerator loads the data element
Figure PCTKR2022018017-appb-img-000004
Calculate as the second intermediate value of the softmax function and store it in external memory. Before saving, the AI accelerator can obtain the sum of the natural exponential function values for the difference between all data elements and the reference data element by accumulating the median value.
모든 데이터 요소들에 대한 제2 중간값들 및 제2 중간값들의 총합이 계산되면, AI 가속기는 외부 메모리에 저장된 제2 중간값들 중 일부를 로드하고, 이를 제2 중간값들의 총합으로 나눔으로써, 데이터 요소 Xi에 대한 소프트맥스 함수값을 얻는다. 즉, AI 가속기는 소프트맥스 함수의 제2 중간값들을 정규화함으로써, 소프트맥스 함수의 출력값들을 획득할 수 있다. AI 가속기는 데이터 요소들에 대한 소프트맥스 함수값들을 외부 메모리에 저장한다.Once the second medians and the total of the second medians for all data elements are calculated, the AI accelerator loads some of the second medians stored in external memory and divides them by the total of the second medians. , obtain the softmax function value for the data element X i . That is, the AI accelerator can obtain the output values of the softmax function by normalizing the second intermediate values of the softmax function. The AI accelerator stores softmax function values for data elements in external memory.
여기서, AI 가속기가 데이터 요소들 X와, 데이터 요소들과 참조 데이터 요소 간 차이값에 대한 자연지수 함수값들
Figure PCTKR2022018017-appb-img-000005
, 즉 제2 중간값들을 외부 메모리에 저장하고, 외부 메모리로부터 읽어오는 과정에서, 데이터 전송량에 따른 많은 전력과 시간이 소요된다.
Here, the AI accelerator generates data elements X and natural exponential function values for the difference between the data elements and the reference data element.
Figure PCTKR2022018017-appb-img-000005
That is, in the process of storing the second intermediate values in external memory and reading them from the external memory, a lot of power and time are consumed depending on the amount of data transfer.
이하에서는, 두 가지 압축 방법 중 소프트맥스 함수에 입력될 데이터 요소들의 가수비트들을 압축하는 방법을 설명한다.Below, of the two compression methods, a method of compressing the mantissa bits of data elements to be input to the softmax function will be described.
본 발명의 일 실시예에 따르면, AI 가속기에 포함된 데이터 압축 장치는 소프트맥스 함수의 입력값들인 데이터 요소들의 비트들, 특히 데이터 요소들의 가수비트들 중 적어도 하나의 하위 가수비트를 제거함으로써, AI 가속기와 외부 메모리 간 데이터 전송량을 줄일 수 있다. According to one embodiment of the present invention, the data compression device included in the AI accelerator removes the bits of data elements that are input values of the softmax function, particularly at least one lower mantissa bit among the mantissa bits of the data elements, thereby reducing AI The amount of data transfer between the accelerator and external memory can be reduced.
구체적으로, 데이터 요소와 참조 데이터 요소 간 차이값을 가리키는 제1 중간값에 대한 영향, 또는 데이터 요소와 참조 데이터 요소 간 차이값에 대한 자연지수 함수값을 가리키는 제2 중간값에 대한 영향이 적은 범위 안에서, 데이터 압축 장치는 소프트맥스 함수의 입력값들인 데이터 요소들 X의 가수비트들 중 일부를 생략한다.Specifically, the extent to which the influence on the first median value indicating the difference between the data point and the reference data point is low, or the influence on the second median indicating the natural exponential function value for the difference between the data point and the reference data point. Inside, the data compression device omits some of the mantissa bits of the data elements X, which are input values of the softmax function.
제1 중간값에 대한 영향을 고려한 데이터 요소의 압축 또는 제2 중간값에 대한 영향을 고려한 데이터 요소의 압축은 선택적으로 적용될 수 있다.Compression of data elements considering their influence on the first intermediate value or compression of data elements considering their influence on the second intermediate value may be selectively applied.
이하에서는, 제1 중간값에 대한 영향을 고려한 데이터 요소의 압축에 관해 설명된다.Below, compression of data elements considering their influence on the first intermediate value is described.
도 10은 본 발명의 일 실시예에 따른 소프트맥스 함수의 입력값들의 압축을 설명하기 위한 도면이다.Figure 10 is a diagram for explaining compression of input values of the softmax function according to an embodiment of the present invention.
도 10을 참조하면, 소프트맥스 함수 연산 시, 데이터 요소 Xi의 하위 가수비트들 중 데이터 요소 Xi와 참조 데이터 요소 Xmax 간 차이값에 영향을 주는 하위 가수비트들이 식별된다.Referring to FIG. 10, when calculating the softmax function, among the lower mantissa bits of the data element X i , the lower mantissa bits that affect the difference value between the data element X i and the reference data element X max are identified.
데이터 요소들 중 가장 큰 값을 가지는 참조 데이터 요소 Xmax와 일 데이터 요소 Xi가 2진수 형태의 블록으로 도시되어 있다. 가수비트들에 선행하는 1 값은 정규값에 따른 수를 나타낸다. 부호비트는 도시되어 있지 않다. 일 예로서, 참조 데이터 요소 Xmax는 선행하는 1 비트와 가수비트들 M1이 결합된 것이다.Among the data elements, the reference data element X max and the one data element X i with the largest value are shown as blocks in binary form. The 1 value preceding the mantissa bits represents the number according to the normal value. The sign bit is not shown. As an example, the reference data element X max is a combination of the preceding 1 bit and mantissa bits M 1 .
먼저, 소프트맥스 함수에 있어서, AI 가속기는 참조 데이터 요소와 데이터 요소 간 차이값 Xmax-Xi를 계산한다. 참조 데이터 요소와 데이터 요소 간 차이값 Xmax-Xi는 소프트맥스 함수의 제1 중간값으로 지칭된다. 이를 위해, 데이터 요소는 참조 데이터 요소를 기준으로 오른쪽으로 비트 시프트(bit shift)된다. 데이터 요소는 참조 데이터 요소의 지수값에서 데이터 요소의 지수값을 뺀 값만큼 오른쪽으로 비트 시프트된다. 비트 정렬이 완료되면, 참조 데이터 요소와 데이터 요소 간 뺄셈이 수행된다.First, in the softmax function, the AI accelerator calculates the difference value X max -X i between the reference data element and the data element. The difference value X max -X i between the reference data element and the data element is referred to as the first intermediate value of the softmax function. For this purpose, the data element is bit shifted to the right relative to the reference data element. The data element is bit shifted to the right by the value obtained by subtracting the exponent value of the data element from the exponent value of the reference data element. Once bit alignment is complete, subtraction is performed between the reference data element and the data element.
참조 데이터 요소의 지수값과 데이터 요소의 지수값 간 차이가 1보다 클 때, 참조 데이터 요소와 데이터 요소 간 뺄셈 결과는 세 가지의 경우로 분류될 수 있다.When the difference between the exponent value of the reference data element and the exponent value of the data element is greater than 1, the result of subtraction between the reference data element and the data element can be classified into three cases.
a)의 경우, 제1 중간값 Xmax-Xi의 최상위비트가 참조 데이터 요소 Xmax의 최상위비트와 같은 위치에서 1로 유지된다. 제1 중간값 Xmax-Xi의 가수비트들 M3는 참조 데이터 요소 Xmax의 가수비트들 M1과 동일한 비트범위를 갖는다. 한편, 데이터 요소 Xi의 가수비트들 M2 중 참조 데이터 요소 Xmax의 최하위비트보다 아래에 위치한 하위 가수비트들은 제1 중간값 Xmax-Xi의 연산에 이용되지 않는다. 즉, 데이터 요소의 가수비트들 중 참조 데이터 요소의 지수값 Emax와 데이터 요소의 지수값 Ei 간 차이에 대응되는 하위 가수비트들은 이용되지 않는다. 그렇지 않으면, 하위 가수비트들은 반올림되어 제1 중간값 Xmax-Xi의 가수비트들에 더해질 수 있다.In case a), the most significant bit of the first intermediate value The mantissa bits M 3 of the first intermediate value X max -X i have the same bit range as the mantissa bits M 1 of the reference data element X max . Meanwhile , among the mantissa bits M 2 of the data element That is, among the mantissa bits of the data element, the lower mantissa bits corresponding to the difference between the exponent value E max of the reference data element and the exponent value E i of the data element are not used. Otherwise, the lower order mantissa bits may be rounded off and added to the mantissa bits of the first intermediate value X max -X i .
b)의 경우, 제1 중간값 Xmax-Xi의 최상위비트가 참조 데이터 요소 Xmax의 최상위비트보다 한 비트 아래의 위치에서 1 값을 가진다. 데이터 요소 Xi의 가수비트들 M2 중 참조 데이터 요소 Xmax의 최하위비트보다 한 비트 낮은 위치에 있는 하위 가수비트들은 제1 중간값 Xmax-Xi에 영향을 준다. 반면, 데이터 요소 Xi의 가수비트들 M2 중 최하위비트부터 참조 데이터 요소 Xmax의 최하위비트보다 두 비트 낮은 위치까지의 가수비트들은 제1 중간값 Xmax-Xi에 영향을 주지 않는다.In case b), the most significant bit of the first intermediate value X max -X i has the value of 1 at a position one bit below the most significant bit of the reference data element Among the mantissa bits M 2 of the data element X i , the lower mantissa bits located one bit lower than the least significant bit of the reference data element On the other hand, the mantissa bits from the least significant bit among the mantissa bits M 2 of the data element X i to a position two bits lower than the least significant bit of the reference data element
c)의 경우, 참조 데이터 요소와 데이터 요소의 부호 차이로 인해, 제1 중간값 Xmax-Xi의 최상위비트가 참조 데이터 요소 Xmax의 최상위비트보다 한 비트 높은 위치에서 1 값을 가진다. 즉, 캐리 아웃(carry out)이 발생한다. 데이터 요소 Xi의 가수비트들 M2 중 최하위비트부터 참조 데이터 요소 Xmax의 최하위비트보다 한 비트 높은 위치의 가수비트들까지의 가수비트들은 제1 중간값 Xmax-Xi에 영향을 주지 않는다.In case c), due to the sign difference between the reference data element and the data element, the most significant bit of the first intermediate value X max -X i has a value of 1 at a position one bit higher than the most significant bit of the reference data element In other words, carry out occurs. The mantissa bits from the least significant bit among the mantissa bits M 2 of the data element X i to the mantissa bits one bit higher than the least significant bit of the reference data element .
이러한 상황을 고려하여, 참조 데이터 요소의 지수값과 데이터 요소의 지수값 간 차이가 1보다 클 때, 데이터 압축 장치는 데이터 요소에 포함된 가수비트들 중 적어도 하나의 하위 가수비트를 무시함으로써 생성된 압축된 데이터 요소 Xi'를, 소프트맥스 함수의 입력값으로서 저장한다. Considering this situation, when the difference between the exponent value of the reference data element and the exponent value of the data element is greater than 1, the data compression device ignores at least one lower mantissa bit among the mantissa bits included in the data element. The compressed data element X i ' is stored as the input value of the softmax function.
구체적으로, 데이터 압축 장치는 데이터 요소들 중 가장 큰 값을 나타내는 참조 데이터 요소를 식별하고, 데이터 요소의 지수값과 참조 데이터 요소의 지수값 간 차이값을 판단한다. 데이터 압축 장치는 데이터 요소의 지수값과 참조 데이터 요소의 지수값 간 차이값에 기초하여, 하나의 압축된 데이터 요소에 포함된 가수비트들 중 무시될 적어도 하나의 하위 가수비트의 개수를 결정한다. 데이터 압축 장치는 결정된 적어도 하나의 하위 가수비트를 무시함으로써 생성된 2차 압축된 데이터 요소를, 소프트맥스 함수의 입력값으로서 저장한다.Specifically, the data compression device identifies the reference data element representing the largest value among the data elements and determines the difference between the exponent value of the data element and the exponent value of the reference data element. The data compression device determines the number of at least one lower mantissa bit to be ignored among the mantissa bits included in one compressed data element, based on the difference between the exponent value of the data element and the exponent value of the reference data element. The data compression device stores the secondary compressed data element generated by ignoring the determined at least one lower mantissa bit as an input value of the softmax function.
여기서, 데이터 압축 장치는 데이터 요소의 부호값 Si와 참조 데이터 요소의 부호값 Smax간 비교에 따라 무시될 적어도 하나의 하위 가수비트의 개수가 달라질 수 있다.Here, the data compression device may vary the number of at least one lower mantissa bit to be ignored according to comparison between the sign value S i of the data element and the sign value S max of the reference data element.
데이터 요소의 부호값이 참조 데이터 요소의 부호값과 동일한 경우, 데이터 압축 장치는 데이터 요소에 포함된 가수비트들 중 제1 하위 가수비트들을 무시한다. 여기서, 제1 하위 가수비트들은 가수비트들 중 참조 데이터 요소의 지수값과 데이터 요소의 지수값 간 차이값에 1을 뺀 값에 대응되는 하위 가수 비트들을 나타낸다. 즉, 압축된 데이터 요소 Xi'는 데이터 요소 Xi의 가수비트들로부터 (Emax-Ei) 비트길이의 하위비트들이 제외된 것이다.If the sign value of the data element is the same as the sign value of the reference data element, the data compression device ignores the first lower mantissa bits among the mantissa bits included in the data element. Here, the first lower mantissa bits represent lower mantissa bits corresponding to the difference between the exponent value of the reference data element and the exponent value of the data element minus 1 among the mantissa bits. That is , the compressed data element
데이터 요소의 부호값이 참조 데이터 요소의 부호값과 동일하지 않은 경우, 데이터 압축 장치는 데이터 요소에 포함된 가수비트들 중 제2 하위 가수비트들을 무시한다. 제2 하위 가수비트들은 가수비트들 중 데이터 요소의 지수값과 참조 데이터 요소의 지수값 간 차이값에 대응되는 하위 가수비트들을 나타낸다. 즉, 압축된 데이터 요소 Xi'는 데이터 요소 Xi의 가수비트들로부터 (Emax-Ei-1) 비트길이의 하위비트들이 제외된 것이다.If the sign value of the data element is not the same as the sign value of the reference data element, the data compression device ignores the second lower mantissa bits among the mantissa bits included in the data element. The second lower mantissa bits represent lower mantissa bits corresponding to the difference between the exponent value of the data element and the exponent value of the reference data element. That is , the compressed data element
그렇지 않으면, 데이터 압축 장치는 데이터 요소의 부호값 Si와 참조 데이터 요소의 부호값 Smax과 상관없이, 압축된 데이터 요소에 포함된 가수비트들 중 데이터 요소의 지수값과 참조 데이터 요소의 지수값 간 차이값보다 적은 개수를 갖는 제3 하위 가수비트들을 무시할 수 있다. 예를 들면, 데이터 압축 장치는 압축된 데이터 요소에 포함된 가수비트들 중 상기 차이값에 2를 뺀 값에 대응되는 개수만큼 하위 가수 비트들을 무시할 수 있다. 무시될 하위 가수비트들의 개수가 적으면, 압축 성능은 저하된다. 반면, 무시될 하위 가수비트들의 개수가 많으면, 압축 성능이 증가한다.Otherwise, the data compression device determines the exponent value of the data element and the exponent value of the reference data element among the mantissa bits included in the compressed data element, regardless of the sign value S i of the data element and the sign value S max of the reference data element. The third lower mantissa bits having a number less than the difference value can be ignored. For example, the data compression device may ignore the lower mantissa bits corresponding to the difference minus 2 among the mantissa bits included in the compressed data element. If the number of lower order mantissa bits to be ignored is small, compression performance deteriorates. On the other hand, if the number of lower order mantissa bits to be ignored is large, compression performance increases.
이와 같이 데이터 요소의 가수비트들 중 일부를 버리더라도, 데이터 요소와 참조 데이터 요소 간 차이값 Xi-Xmax에 미치는 영향이 없다. 하위 가수비트들에 반올림을 적용하더라도 제1 중간값 Xi-Xmax에 미치는 영향이 미미하다. 즉, 데이터 요소와 참조 데이터 요소 간 차이값에 대한 자연지수 함수값
Figure PCTKR2022018017-appb-img-000006
과, 압축된 데이터 요소와 참조 데이터 요소 간 차이값에 대한 자연지수 함수값
Figure PCTKR2022018017-appb-img-000007
은 동일하거나 유사하다. 소프트맥스 함수의 결과값에 대한 영향이 없거나 미미하다.
In this way, even if some of the mantissa bits of the data element are discarded, there is no effect on the difference value X i -X max between the data element and the reference data element. Even if rounding is applied to the lower mantissa bits, the impact on the first intermediate value X i -X max is minimal. That is, the natural exponential function value for the difference between the data element and the reference data element.
Figure PCTKR2022018017-appb-img-000006
and, the natural exponential function value for the difference between the compressed data element and the reference data element.
Figure PCTKR2022018017-appb-img-000007
are the same or similar. There is no or minimal effect on the result of the softmax function.
한편, 데이터 압축으로 인해, AI 가속기와 외부 메모리 사이 데이터 전송에 따른 전력 소모 및 시간 소요가 감소한다.Meanwhile, due to data compression, power consumption and time required for data transfer between the AI accelerator and external memory are reduced.
이하에서는, 제2 중간값에 대한 영향을 고려한 데이터 요소의 압축에 관해 설명된다.Below, compression of data elements considering their influence on the second intermediate value is described.
AI 가속기는 데이터 요소와 참조 데이터 요소 간 차이값 Xi-Xmax를 계산한다. 그리고 AI 가속기는 차이값 Xi-Xmax에 대한 자연지수 함수값
Figure PCTKR2022018017-appb-img-000008
을 계산한다. 차이값 Xi-Xmax에 대한 자연지수 함수값
Figure PCTKR2022018017-appb-img-000009
은 소프트맥스 함수의 제2 중간값으로 지칭된다. AI 가속기는 제2 중간값을 외부 메모리에 저장하고, 모든 데이터 요소들에 대한 제2 중간값들이 계산된 때 제2 중간값들을 로드하고, 제2 중간값들을 정규화함으로써 데이터 요소들에 대한 소프트맥스 함수값을 계산한다.
The AI accelerator calculates the difference value X i -X max between the data element and the reference data element. And the AI accelerator is the natural exponential function value for the difference value
Figure PCTKR2022018017-appb-img-000008
Calculate . Natural exponential function value for the difference value X i -X max
Figure PCTKR2022018017-appb-img-000009
is referred to as the second intermediate value of the softmax function. The AI accelerator stores the second medians in external memory, loads the second medians when the second medians for all data elements have been calculated, and normalizes the second medians to obtain a softmax for the data elements. Calculate the function value.
본 발명의 일 실시예에 따르면, 데이터 압축 장치는 데이터 요소에 포함된 가수비트들 중 기 정의된 테이블에 따른 하위 가수비트들을 무시함으로써, 생성된 압축된 데이터 요소 Xi'를, 소프트맥스 함수의 입력값으로서 저장한다. 기 정의된 테이블은 데이터 요소의 가수비트들 중 저장될 상위 가수비트들의 개수, 데이터 요소의 지수값 및 데이터 요소 압축에 따른 오류율이 기록된 테이블이다. 데이터 압축 장치는 데이터 요소의 지수값이 주어질 때, 특정 오류율을 만족하는 상위 가수비트들의 개수를 식별하고, 데이터 요소의 가수비트들 중 상위 가수비트들을 제외한 하위 가수비트들을 버린다.According to one embodiment of the present invention, the data compression device ignores the lower mantissa bits according to a predefined table among the mantissa bits included in the data element, and converts the generated compressed data element X i ' into the softmax function. Save it as input value. The predefined table is a table in which the number of upper mantissa bits to be stored among the mantissa bits of the data element, the exponent value of the data element, and the error rate according to data element compression are recorded. When the exponent value of a data element is given, the data compression device identifies the number of upper mantissa bits that satisfy a specific error rate and discards lower mantissa bits excluding the upper mantissa bits among the mantissa bits of the data element.
구체적으로, 하나의 데이터 요소는 수학식 2와 같이 상위 가수비트들을 포함하는 상위파트 및 하위 가수비트들을 포함하는 하위파트로 표현될 수 있다.Specifically, one data element can be expressed as an upper part including upper mantissa bits and a lower part including lower mantissa bits, as shown in Equation 2.
Figure PCTKR2022018017-appb-img-000010
Figure PCTKR2022018017-appb-img-000010
수학식 2에서, xi는 데이터 요소, xiH는 데이터 요소의 상위파트, xiL은 데이터 요소의 하위파트를 나타낸다. S는 데이터 요소의 부호값, E는 데이터 요소의 지수값, MH(2)는 이진수 형태의 상위 가수비트들, ML(2)는 이진수 형태의 하위 가수비트들을 나타낸다. T는 데이터 요소의 상위 가수비트들의 길이를 나타낸다. 데이터 요소의 가수비트길이가 m일 때, 데이터 요소의 하위 가수비트들의 길이는 m-T이다.In Equation 2, xi represents a data element, xi H represents the upper part of the data element, and xi L represents the lower part of the data element. S represents the sign value of the data element, E represents the exponent value of the data element, M H(2) represents the upper mantissa bits in binary form, and M L(2) represents the lower mantissa bits in binary form. T represents the length of the upper mantissa bits of the data element. When the mantissa bit length of a data element is m, the length of the lower mantissa bits of the data element is mT.
이하에서, 데이터 요소의 가수비트들 중 하위 가수비트들 ML이 제외될 때, 소프트맥스 함수의 제2 중간값 e(xi-xmax)이 얼마나 변하는지 설명한다.Below, it will be explained how much the second intermediate value e (xi-xmax) of the softmax function changes when the lower mantissa bits M L among the mantissa bits of the data element are excluded.
데이터 요소 xi에 대한 소프트맥스 함수의 제2 중간값 e(xi-xmax)은 수학식 3처럼 표현될 수 있다.The second intermediate value e (xi-xmax) of the softmax function for data element xi can be expressed as Equation 3.
Figure PCTKR2022018017-appb-img-000011
Figure PCTKR2022018017-appb-img-000011
수학식 3에서, 데이터 요소의 하위 가수비트들의 절단(truncation)에 따른 오류율은
Figure PCTKR2022018017-appb-img-000012
이다.
In Equation 3, the error rate due to truncation of the lower mantissa bits of the data element is
Figure PCTKR2022018017-appb-img-000012
am.
오류율은 수학식 4와 같이 표현될 수 있다.The error rate can be expressed as Equation 4.
Figure PCTKR2022018017-appb-img-000013
Figure PCTKR2022018017-appb-img-000013
제2 중간값 e(xi-xmax)은 항상 0 이하의 값을 가지므로, 수학식 4에서 데이터 요소의 하위파트 xiL의 부호값 S는 1이다. 나아가, 데이터 요소의 하위 가수값 0.ML은 0.5 내지 1 사이 값을 가진다. 이를 고려하면, 오류율의 범위는 수학식 5와 같이 표현될 수 있다.Since the second intermediate value e (xi-xmax) always has a value of 0 or less, the sign value S of the subpart xi L of the data element in Equation 4 is 1. Furthermore, the lower mantissa 0.M L of the data element has a value between 0.5 and 1. Considering this, the range of error rate can be expressed as Equation 5.
Figure PCTKR2022018017-appb-img-000014
Figure PCTKR2022018017-appb-img-000014
오류율은
Figure PCTKR2022018017-appb-img-000015
의 최댓값은
Figure PCTKR2022018017-appb-img-000016
이다.
The error rate is
Figure PCTKR2022018017-appb-img-000015
The maximum value of
Figure PCTKR2022018017-appb-img-000016
am.
데이터 요소의 지수값 E, 데이터 요소의 가수비트들 중 저장대상이 되는 상위 가수비트들의 길이 T, 및 데이터 압축에 따른 제2 중간값의 오류율
Figure PCTKR2022018017-appb-img-000017
로부터 다양한 테이블이 정의될 수 있다.
The exponent value E of the data element, the length T of the upper mantissa bits to be stored among the mantissa bits of the data element, and the error rate of the second intermediate value according to data compression.
Figure PCTKR2022018017-appb-img-000017
Various tables can be defined from .
표 2는 상위 가수비트들의 길이가 7일 때, 데이터 요소의 지수값에 따른 오류율을 예시적으로 계산한 테이블이다.Table 2 is a table that exemplarily calculates the error rate according to the exponent value of the data element when the length of the upper mantissa bits is 7.
표 3는 상위 가수비트들의 길이 및 오류율에 따른 데이터 요소의 지수값을 예시적으로 정의한 테이블이다.Table 3 is a table that exemplarily defines the exponent values of data elements according to the length and error rate of the upper mantissa bits.
표 4는 상위 데이터 요소의 지수값 및 오류율에 따른 상위 가수비트들의 길이를 예시적으로 정의한 테이블이다.Table 4 is a table that exemplarily defines the length of the upper mantissa bits according to the exponent value and error rate of the upper data element.
EE T= 7T = 7
2(E-T) 2 (ET) exp(2(E-T))exp(2 (ET) ) abs(1- exp(2(E-T)))abs(1- exp(2 (ET) ))
00 7.813E-037.813E-03 1.007843097206E+001.007843097206E+00 7.843E-037.843E-03
-1-One 3.906E-033.906E-03 1.003913889338E+001.003913889338E+00 3.914E-033.914E-03
-2-2 1.953E-031.953E-03 1.001955033591E+001.001955033591E+00 1.955E-031.955E-03
-3-3 9.766E-049.766E-04 1.000977039492E+001.000977039492E+00 9.770E-049.770E-04
-4-4 4.883E-044.883E-04 1.000488400479E+001.000488400479E+00 4.884E-044.884E-04
-5-5 2.441E-042.441E-04 1.000244170430E+001.000244170430E+00 2.442E-042.442E-04
-6-6 1.221E-041.221E-04 1.000122077763E+001.000122077763E+00 1.221E-041.221E-04
-7-7 6.104E-056.104E-05 1.000061037019E+001.000061037019E+00 6.104E-056.104E-05
-8-8 3.052E-053.052E-05 1.000030518044E+001.000030518044E+00 3.052E-053.052E-05
-9-9 1.526E-051.526E-05 1.000015258905E+001.000015258905E+00 1.526E-051.526E-05
-10-10 7.629E-067.629E-06 1.000007629424E+001.000007629424E+00 7.629E-067.629E-06
-11-11 3.815E-063.815E-06 1.000003814705E+001.000003814705E+00 3.815E-063.815E-06
-12-12 1.907E-061.907E-06 1.000001907350E+001.000001907350E+00 1.907E-061.907E-06
-13-13 9.537E-079.537E-07 1.000000953675E+001.000000953675E+00 9.537E-079.537E-07
-14-14 4.768E-074.768E-07 1.000000476837E+001.000000476837E+00 4.768E-074.768E-07
-15-15 2.384E-072.384E-07 1.000000238419E+001.000000238419E+00 2.384E-072.384E-07
-16-16 1.192E-071.192E-07 1.000000119209E+001.000000119209E+00 1.192E-071.192E-07
-17-17 5.960E-085.960E-08 1.000000059605E+001.000000059605E+00 5.960E-085.960E-08
-18-18 2.980E-082.980E-08 1.000000029802E+001.000000029802E+00 2.980E-082.980E-08
-19-19 1.490E-081.490E-08 1.000000014901E+001.000000014901E+00 1.490E-081.490E-08
-20-20 7.451E-097.451E-09 1.000000007451E+001.000000007451E+00 7.451E-097.451E-09
-21-21 3.725E-093.725E-09 1.000000003725E+001.000000003725E+00 3.725E-093.725E-09
-22-22 1.863E-091.863E-09 1.000000001863E+001.000000001863E+00 1.863E-091.863E-09
-23-23 9.313E-109.313E-10 1.000000000931E+001.000000000931E+00 9.313E-109.313E-10
-24-24 4.657E-104.657E-10 1.000000000466E+001.000000000466E+00 4.657E-104.657E-10
-25-25 2.328E-102.328E-10 1.000000000233E+001.000000000233E+00 2.328E-102.328E-10
-26-26 1.164E-101.164E-10 1.000000000116E+001.000000000116E+00 1.164E-101.164E-10
-27-27 5.821E-115.821E-11 1.000000000058E+001.000000000058E+00 5.821E-115.821E-11
-28-28 2.910E-112.910E-11 1.000000000029E+001.000000000029E+00 2.910E-112.910E-11
-29-29 1.455E-111.455E-11 1.000000000015E+001.000000000015E+00 1.455E-111.455E-11
-30-30 7.276E-127.276E-12 1.000000000007E+001.000000000007E+00 7.276E-127.276E-12
-31-31 3.638E-123.638E-12 1.000000000004E+001.000000000004E+00 3.638E-123.638E-12
TT Error ratio [%]Error ratio [%]
1One 0.10.1 0.010.01 0.0010.001
88 00 -2-2 -6-6 -9-9
77 00 -3-3 -7-7 -10-10
66 -1-One -4-4 -8-8 -11-11
55 -2-2 -5-5 -9-9 -12-12
44 -3-3 -6-6 -10-10 -13-13
33 -4-4 -7-7 -11-11 -14-14
22 -5-5 -8-8 -12-12 -15-15
1One -6-6 -9-9 -13-13 -16-16
EE Error ratio [%]Error ratio [%]
1One 0.10.1 0.010.01 0.0010.001
00 77 1010 1010 1010
-1-One 66 1010 1010 1010
-2-2 55 88 1010 1010
-3-3 44 77 1010 1010
-4-4 33 66 1010 1010
-5-5 22 55 1010 1010
-6-6 1One 44 88 1010
-7-7 -- 33 77 1010
-8-8 -- 22 66 1010
-9-9 -- 1 One 55 88
-10-10 -- -- 44 77
-11-11 -- -- 33 66
-12-12 -- -- 22 55
-13-13 -- -- 1One 44
-14-14 -- -- -- 33
-15-15 -- -- -- 22
-16-16 -- -- -- 1One
표 4를 참조하면, 데이터 압축 장치는 특정 오류율을 미리 설정하고, 입력된 데이터 요소의 지수값 E를 식별하고, 특정 오류율 및 지수값 E에 따른 T 값을 식별할 수 있다. 데이터 압축 장치는 데이터 요소의 가수비트들 중 T 개의 상위 가수비트들만 추출하여 외부 메모리에 저장한다. 데이터 압축 장치는 데이터 압축을 통해, AI 가속기와 외부 메모리 사이 데이터 전송에 따른 전력 소모 및 시간 소요를 줄일 수 있다.Referring to Table 4, the data compression device can preset a specific error rate, identify the exponent value E of the input data element, and identify the T value according to the specific error rate and exponent value E. The data compression device extracts only the T upper mantissa bits from among the mantissa bits of the data element and stores them in external memory. Data compression devices can reduce power consumption and time required for data transfer between AI accelerators and external memory through data compression.
기 정의된 테이블을 이용하는 데이터 압축 장치의 동작은 아래와 같다.The operation of the data compression device using a predefined table is as follows.
데이터 압축 장치는 기 정의된 테이블을 참조하여, 데이터 요소의 지수값 및 기 설정된 오류율에 따른 가수비트길이를 식별한다. 수학식 4를 참조하면, 데이터 요소의 지수값은 E, 가수비트길이는 T로 지칭될 수 있다.The data compression device refers to a predefined table and identifies the exponent value of the data element and the mantissa bit length according to the preset error rate. Referring to Equation 4, the exponent value of the data element may be referred to as E and the mantissa bit length may be referred to as T.
여기서, 데이터 요소는 부동 소수점 포맷에 따라 인코딩된 데이터일 수도 있고, 데이터 압축 포맷에 따라 인코딩된 데이터 요소일 수도 있다.Here, the data element may be data encoded according to a floating point format or may be a data element encoded according to a data compression format.
데이터 압축 장치는 데이터 요소의 가수비트들 중 가수비트길이에 대응되는 상위 가수비트들을, 소프트맥스 함수의 입력값의 가수비트들로서, 외부 메모리에 저장한다. 압축된 데이터 요소는 부호비트, 가수비트들, 및 상위 가수비트들을 포함한다.The data compression device stores the upper mantissa bits corresponding to the mantissa bit length among the mantissa bits of the data element as mantissa bits of the input value of the softmax function in an external memory. The compressed data element includes a sign bit, mantissa bits, and high mantissa bits.
데이터 압축 장치는 오류율에 따라 데이터 요소의 상위 가수비트들의 길이를 고려하여, AI 가속기와 외부 메모리 간 데이터 전송량과 오류율을 트레이드-오프(trade-off)할 수 있다.The data compression device can trade-off the data transfer amount and error rate between the AI accelerator and external memory by considering the length of the upper mantissa bits of the data element according to the error rate.
다만, 소프트맥스 함수의 중간값들의 압축에 의하면, 일부 데이터 손실이 발생할 수 있다.However, some data loss may occur due to compression of intermediate values of the softmax function.
본 명세서에 설명되는 시스템들 및 기법들의 다양한 구현예들은, 디지털 전자 회로, 집적회로, FPGA(field programmable gate array), ASIC(application specific integrated circuit), 컴퓨터 하드웨어, 펌웨어, 소프트웨어, 및/또는 이들의 조합으로 실현될 수 있다. 이러한 다양한 구현예들은 프로그래밍가능 시스템 상에서 실행 가능한 하나 이상의 컴퓨터 프로그램들로 구현되는 것을 포함할 수 있다. 프로그래밍가능 시스템은, 저장 시스템, 적어도 하나의 입력 디바이스, 그리고 적어도 하나의 출력 디바이스로부터 데이터 및 명령들을 수신하고 이들에게 데이터 및 명령들을 전송하도록 결합되는 적어도 하나의 프로그래밍가능 프로세서(이것은 특수 목적 프로세서일 수 있거나 혹은 범용 프로세서일 수 있음)를 포함한다. 컴퓨터 프로그램들(이것은 또한 프로그램들, 소프트웨어, 소프트웨어 애플리케이션들 혹은 코드로서 알려져 있음)은 프로그래밍가능 프로세서에 대한 명령어들을 포함하며 "컴퓨터가 읽을 수 있는 기록매체"에 저장된다.Various implementations of the systems and techniques described herein may include digital electronic circuits, integrated circuits, field programmable gate arrays (FPGAs), application specific integrated circuits (ASICs), computer hardware, firmware, software, and/or these. It can be realized through combination. These various implementations may include being implemented as one or more computer programs executable on a programmable system. The programmable system includes at least one programmable processor (which may be a special purpose processor) coupled to receive data and instructions from and transmit data and instructions to a storage system, at least one input device, and at least one output device. or may be a general-purpose processor). Computer programs (also known as programs, software, software applications or code) contain instructions for a programmable processor and are stored on a "computer-readable medium."
컴퓨터가 읽을 수 있는 기록매체는, 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 이러한 컴퓨터가 읽을 수 있는 기록매체는 ROM, CD-ROM, 자기 테이프, 플로피디스크, 메모리 카드, 하드 디스크, 광자기 디스크, 스토리지 디바이스 등의 비휘발성(non-volatile) 또는 비일시적인(non-transitory) 매체일 수 있으며, 또한 데이터 전송 매체(data transmission medium)와 같은 일시적인(transitory) 매체를 더 포함할 수도 있다. 또한, 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수도 있다.Computer-readable recording media include all types of recording devices that store data that can be read by a computer system. These computer-readable recording media are non-volatile or non-transitory such as ROM, CD-ROM, magnetic tape, floppy disk, memory card, hard disk, magneto-optical disk, and storage device. It may be a medium, and may further include a transitory medium such as a data transmission medium. Additionally, the computer-readable recording medium may be distributed in a computer system connected to a network, and the computer-readable code may be stored and executed in a distributed manner.
본 명세서의 흐름도/타이밍도에서는 각 과정들을 순차적으로 실행하는 것으로 기재하고 있으나, 이는 본 개시의 일 실시예의 기술 사상을 예시적으로 설명한 것에 불과한 것이다. 다시 말해, 본 개시의 일 실시예가 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 개시의 일 실시예의 본질적인 특성에서 벗어나지 않는 범위에서 흐름도/타이밍도에 기재된 순서를 변경하여 실행하거나 각 과정들 중 하나 이상의 과정을 병렬적으로 실행하는 것으로 다양하게 수정 및 변형하여 적용 가능할 것이므로, 흐름도/타이밍도는 시계열적인 순서로 한정되는 것은 아니다.In the flowchart/timing diagram of this specification, each process is described as being executed sequentially, but this is merely an illustrative explanation of the technical idea of an embodiment of the present disclosure. In other words, a person skilled in the art to which an embodiment of the present disclosure pertains may change the order described in the flowchart/timing diagram and execute one of the processes without departing from the essential characteristics of the embodiment of the present disclosure. Since the above processes can be applied in various modifications and variations by executing them in parallel, the flowchart/timing diagram is not limited to a time series order.
이상의 설명은 본 실시예의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 실시예가 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 실시예의 본질적인 특성에서 벗어나지 않는 범위에서 다양한 수정 및 변형이 가능할 것이다. 따라서, 본 실시예들은 본 실시예의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예에 의하여 본 실시예의 기술 사상의 범위가 한정되는 것은 아니다. 본 실시예의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 실시예의 권리범위에 포함되는 것으로 해석되어야 할 것이다. The above description is merely an illustrative explanation of the technical idea of the present embodiment, and those skilled in the art will be able to make various modifications and variations without departing from the essential characteristics of the present embodiment. Accordingly, the present embodiments are not intended to limit the technical idea of the present embodiment, but rather to explain it, and the scope of the technical idea of the present embodiment is not limited by these examples. The scope of protection of this embodiment should be interpreted in accordance with the claims below, and all technical ideas within the equivalent scope should be interpreted as being included in the scope of rights of this embodiment.
(후원 연구 또는 개발에 관한 진술)(Statement regarding sponsored research or development)
본 발명은 연구과제(과제고유번호: 1711152619, 세부과제번호: 2020-0-01305-003, 과제관리(전문)기관명: 정보통신기획평가원, 연구사업명: 차세대지능형반도체기술개발(설계), 연구과제명: 2,000 TFLOPS급 서버 인공지능 딥러닝 프로세서 및 모듈 개발, 기여율: 1/1, 과제수행기관명: 주식회사 사피온코리아, 연구기간: 2022-01-01~2022-12-31)의 결과물이다.This invention is a research project (project identification number: 1711152619, detailed task number: 2020-0-01305-003, project management (professional) organization name: Information and Communications Planning and Evaluation Institute, research project name: next-generation intelligent semiconductor technology development (design), research project Name: 2,000 TFLOPS-class server artificial intelligence deep learning processor and module development, contribution rate: 1/1, project performing organization name: Sapion Korea Co., Ltd., research period: 2022-01-01 ~ 2022-12-31).
(CROSS-REFERENCE TO RELATED APPLICATION)(CROSS-REFERENCE TO RELATED APPLICATION)
본 특허출원은, 본 명세서에 그 전체가 참고로서 포함되는, 2022년 11월 14일에 한국에 출원한 특허출원번호 제10-2022-0152079호에 대해 우선권을 주장한다.This patent application claims priority to Patent Application No. 10-2022-0152079, filed in Korea on November 14, 2022, which is incorporated herein by reference in its entirety.

Claims (15)

  1. 데이터 압축 장치에 있어서,In the data compression device,
    명령어들을 저장하는 적어도 하나의 메모리; 및at least one memory storing instructions; and
    상기 명령어들을 실행함으로써, 부동 소수점 포맷에 따라 인코딩된 데이터 요소들(data elements)을 포함하는 데이터 블록으로부터 압축된 데이터 요소들을 생성하는 적어도 하나의 프로세서At least one processor, by executing the instructions, to generate compressed data elements from a data block containing data elements encoded according to a floating point format.
    를 포함하되, Including,
    상기 프로세서는,The processor,
    상기 데이터 요소들 중 지수값이 기 설정된 지수값들 중 어느 하나에 매치되는 제1 데이터 요소에 대해, 상기 제1 데이터 요소의 지수값에 대응되는 명령코드(operation code), 상기 제1 데이터 요소의 부호비트 및 가수비트들을 포함하는 제1 압축된 데이터 요소를 생성하고,For a first data element whose exponent value matches one of the preset exponent values among the data elements, an operation code corresponding to the exponent value of the first data element, generate a first compressed data element including sign bits and mantissa bits,
    상기 데이터 요소들 중 지수값이 상기 기 설정된 지수값들에 매치되지 않고, 제로값이 아닌 제2 데이터 요소에 대해, 스킵코드 및 상기 제2 데이터 요소를 포함하는 제2 압축된 데이터 요소를 생성하는, 데이터 압축 장치.For a second data element whose exponent value does not match the preset exponent values among the data elements and is not a zero value, generating a second compressed data element including a skip code and the second data element. , data compression device.
  2. 제1항에 있어서,According to paragraph 1,
    상기 명령코드의 비트길이 및 상기 스킵코드의 비트길이 각각은 상기 부동 소수점 포맷에 따른 지수 비트 길이보다 짧은, 데이터 압축 장치.A data compression device, wherein each of the bit length of the command code and the bit length of the skip code is shorter than the exponent bit length according to the floating point format.
  3. 제1항에 있어서,According to paragraph 1,
    상기 프로세서는,The processor,
    상기 데이터 요소들 중 지수값이 제로값인 제3 데이터 요소에 대해, 제로코드를 포함하는 제3 압축된 데이터 요소를 생성하는, 데이터 압축 장치.A data compression device that generates a third compressed data element including a zero code for a third data element whose exponent value is zero among the data elements.
  4. 제1항에 있어서,According to paragraph 1,
    상기 프로세서는,The processor,
    상기 데이터 요소들 중 초기 데이터 요소에 대해, 상기 초기 데이터 요소의 지수값을 포함하는 상기 지수값들을 설정하고, 기 정의된 설정코드 및 상기 초기 데이터 요소를 포함하는 초기 압축된 데이터 요소를 생성하는, 데이터 압축 장치.For an initial data element among the data elements, setting the exponent values including an exponent value of the initial data element, and generating an initial compressed data element including a predefined setting code and the initial data element, Data compression device.
  5. 제1항에 있어서,According to paragraph 1,
    상기 프로세서는,The processor,
    상기 압축된 데이터 요소들을 외부 메모리에 저장하는, 데이터 압축 장치.A data compression device that stores the compressed data elements in external memory.
  6. 제5항에 있어서,According to clause 5,
    상기 프로세서는,The processor,
    상기 압축된 데이터 요소들 중 가장 큰 값을 나타내는 참조 데이터 요소를 식별하고,Identifying a reference data element representing the largest value among the compressed data elements,
    상기 압축된 데이터 요소들 중 하나의 압축된 데이터 요소의 지수값과 상기 참조 데이터 요소의 지수값 간 차이값을 판단하고, Determine a difference value between an exponent value of one of the compressed data elements and an exponent value of the reference data element,
    상기 하나의 압축된 데이터 요소의 지수값과 상기 참조 데이터 요소의 지수값 간 차이값에 기초하여, 상기 하나의 압축된 데이터 요소에 포함된 가수비트들 중 적어도 하나의 하위 가수비트를 무시함으로써 생성된 2차 압축된 데이터 요소를, 소프트맥스 함수의 입력값으로서 저장하는, 데이터 압축 장치.Generated by ignoring at least one lower mantissa bit among the mantissa bits included in the one compressed data element, based on the difference between the exponent value of the one compressed data element and the exponent value of the reference data element. A data compression device that stores secondary compressed data elements as input values of the softmax function.
  7. 제6항에 있어서,According to clause 6,
    상기 프로세서는, The processor,
    상기 하나의 압축된 데이터 요소의 부호값이 상기 참조 데이터 요소의 부호값과 동일한 경우, 상기 하나의 압축된 데이터 요소에 포함된 가수비트들 중 상기 차이값에 1을 뺀 값에 대응되는 개수를 갖는 제1 하위 가수비트들을 무시하고,When the sign value of the one compressed data element is the same as the sign value of the reference data element, among the mantissa bits included in the one compressed data element, the number corresponding to the difference value minus 1 Ignoring the first lower mantissa bits,
    상기 하나의 압축된 데이터 요소의 부호값이 상기 참조 데이터 요소의 부호값과 동일하지 않은 경우, 상기 하나의 압축된 데이터 요소에 포함된 가수비트들 중 상기 차이값에 대응되는 개수를 갖는 제2 하위 가수비트들을 무시하는, 데이터 압축 장치.If the sign value of the one compressed data element is not the same as the sign value of the reference data element, a second lower number having a number corresponding to the difference value among the mantissa bits included in the one compressed data element A data compression device that ignores mantissa bits.
  8. 제6항에 있어서,According to clause 6,
    상기 프로세서는,The processor,
    상기 하나의 압축된 데이터 요소에 포함된 가수비트들 중 상기 차이값보다 적은 개수를 갖는 제3 하위 가수비트들을 무시하는, 데이터 압축 장치.A data compression device that ignores third lower order mantissa bits having a number less than the difference value among mantissa bits included in the one compressed data element.
  9. 제5항에 있어서,According to clause 5,
    상기 프로세서는,The processor,
    기 정의된 테이블을 참조하여, 상기 압축된 데이터 요소들 중 하나의 압축된 데이터 요소의 지수값 및 기 설정된 오류율에 따른 가수비트길이를 식별하고,Referring to a predefined table, identifying the exponent value of one of the compressed data elements and the mantissa bit length according to a preset error rate,
    상기 하나의 압축된 데이터 요소의 가수비트들 중 상기 가수비트길이에 대응되는 상위 가수비트들을 소프트맥스 함수의 입력값의 가수비트들로서 저장하는, 데이터 압축 장치.A data compression device that stores upper mantissa bits corresponding to the mantissa bit length among the mantissa bits of the one compressed data element as mantissa bits of an input value of a softmax function.
  10. 데이터 압축을 위한 컴퓨터 구현 방법에 있어서,In a computer implementation method for data compression,
    부동 소수점 포맷에 따라 인코딩된 데이터 요소들(data elements)을 포함하는 데이터 블록으로부터 압축된 데이터 요소들을 생성하는 단계Generating compressed data elements from a data block containing data elements encoded according to a floating point format.
    를 포함하되, Including,
    상기 압축된 데이터 요소들을 생성하는 단계는,The step of generating the compressed data elements includes:
    상기 데이터 요소들 중 지수값이 기 설정된 지수값들 중 어느 하나에 매치되는 제1 데이터 요소에 대해, 상기 제1 데이터 요소의 지수값에 대응되는 명령코드(operation code), 상기 제1 데이터 요소의 부호비트 및 가수비트들을 포함하는 제1 압축된 데이터 요소를 생성하는 단계; 및For a first data element whose exponent value matches one of the preset exponent values among the data elements, an operation code corresponding to the exponent value of the first data element, generating a first compressed data element including sign bits and mantissa bits; and
    상기 데이터 요소들 중 지수값이 상기 기 설정된 지수값들에 매치되지 않고, 제로값이 아닌 제2 데이터 요소에 대해, 스킵코드 및 상기 제2 데이터 요소를 포함하는 제2 압축된 데이터 요소를 생성하는 단계For a second data element whose exponent value does not match the preset exponent values among the data elements and is not a zero value, generating a second compressed data element including a skip code and the second data element. step
    를 포함하는, 방법.Method, including.
  11. 제10항에 있어서,According to clause 10,
    상기 압축된 데이터 요소들을 생성하는 단계는,The step of generating the compressed data elements includes:
    상기 데이터 요소들 중 지수값이 제로값인 제3 데이터 요소에 대해, 제로코드를 포함하는 제3 압축된 데이터 요소를 생성하는 단계Generating a third compressed data element including a zero code for a third data element whose exponent value is zero among the data elements.
    를 포함하는, 방법.Method, including.
  12. 제10항에 있어서,According to clause 10,
    상기 압축된 데이터 요소들을 생성하는 단계는,The step of generating the compressed data elements includes:
    상기 데이터 요소들 중 초기 데이터 요소에 대해, 상기 초기 데이터 요소의 지수값을 포함하는 상기 지수값들을 설정하는 단계; 및For an initial data element among the data elements, setting the exponent values including an exponent value of the initial data element; and
    기 정의된 설정코드 및 상기 초기 데이터 요소를 포함하는 초기 압축된 데이터 요소를 생성하는 단계Creating an initial compressed data element including a predefined setting code and the initial data element.
    를 포함하는, 방법.Method, including.
  13. 제10항에 있어서,According to clause 10,
    상기 압축된 데이터 요소들을 외부 메모리에 저장하는 단계Storing the compressed data elements in external memory.
    를 더 포함하는, 방법.A method further comprising:
  14. 제13항에 있어서,According to clause 13,
    상기 압축된 데이터 요소들을 외부 메모리에 저장하는 단계는,The step of storing the compressed data elements in external memory includes:
    상기 압축된 데이터 요소들 중 가장 큰 값을 나타내는 참조 데이터 요소를 식별하는 단계;identifying a reference data element representing the largest value among the compressed data elements;
    상기 압축된 데이터 요소들 중 하나의 압축된 데이터 요소의 지수값과 상기 참조 데이터 요소의 지수값 간 차이값을 판단하는 단계; 및determining a difference between an exponent value of one of the compressed data elements and an exponent value of the reference data element; and
    상기 하나의 압축된 데이터 요소의 지수값과 상기 참조 데이터 요소의 지수값 간 차이값에 기초하여, 상기 압축된 데이터 요소들 중 하나의 압축된 데이터 요소에 포함된 가수비트들 중 적어도 하나의 하위 가수비트를 무시함으로써 생성된 2차 압축된 데이터 요소를, 소프트맥스 함수의 입력값으로서 저장하는 단계Based on the difference value between the exponent value of the one compressed data element and the exponent value of the reference data element, at least one lower mantissa of the mantissa bits included in one of the compressed data elements Storing the secondary compressed data elements generated by ignoring bits as input to the softmax function.
    를 포함하는, 방법.Method, including.
  15. 제14항에 있어서,According to clause 14,
    상기 2차 압축된 데이터 요소를 소프트맥스 함수의 입력값으로서 저장하는 단계는,The step of storing the secondary compressed data element as an input value of the softmax function,
    상기 하나의 압축된 데이터 요소의 부호값이 상기 참조 데이터 요소의 부호값과 동일한 경우, 상기 하나의 압축된 데이터 요소에 포함된 가수비트들 중 상기 차이값에 1을 뺀 값에 대응되는 개수를 갖는 제1 하위 가수비트들을 무시하는 단계; 및When the sign value of the one compressed data element is the same as the sign value of the reference data element, among the mantissa bits included in the one compressed data element, the number corresponding to the difference value minus 1 Ignoring first lower order mantissa bits; and
    상기 하나의 압축된 데이터 요소의 부호값이 상기 참조 데이터 요소의 부호값과 동일하지 않은 경우, 상기 하나의 압축된 데이터 요소에 포함된 가수비트들 중 상기 차이값에 대응되는 개수를 갖는 제2 하위 가수비트들을 무시하는 단계If the sign value of the one compressed data element is not the same as the sign value of the reference data element, a second lower number having a number corresponding to the difference value among the mantissa bits included in the one compressed data element Steps to ignore singer beats
    를 포함하는, 방법.Method, including.
PCT/KR2022/018017 2022-11-14 2022-11-15 Method and device for floating-point data compression WO2024106556A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR10-2022-0152079 2022-11-14
KR1020220152079A KR20240070783A (en) 2022-11-14 2022-11-14 Device and Method for Compressing Floating Point Data

Publications (1)

Publication Number Publication Date
WO2024106556A1 true WO2024106556A1 (en) 2024-05-23

Family

ID=91084652

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/KR2022/018017 WO2024106556A1 (en) 2022-11-14 2022-11-15 Method and device for floating-point data compression

Country Status (2)

Country Link
KR (1) KR20240070783A (en)
WO (1) WO2024106556A1 (en)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001043067A (en) * 1999-07-30 2001-02-16 Hitachi Ltd Arithmetic unit
US8880734B2 (en) * 2009-10-23 2014-11-04 Altera Corporation Block floating point compression with exponent token codes
JP5619326B2 (en) * 2012-06-21 2014-11-05 三菱電機株式会社 Encoding device, decoding device, encoding method, encoding program, decoding method, and decoding program
US9047118B2 (en) * 2011-06-30 2015-06-02 Altera Corporation Computationally efficient compression of floating-point data
KR20190129702A (en) * 2018-05-11 2019-11-20 인텔 코포레이션 System for compressing floating point data

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001043067A (en) * 1999-07-30 2001-02-16 Hitachi Ltd Arithmetic unit
US8880734B2 (en) * 2009-10-23 2014-11-04 Altera Corporation Block floating point compression with exponent token codes
US9047118B2 (en) * 2011-06-30 2015-06-02 Altera Corporation Computationally efficient compression of floating-point data
JP5619326B2 (en) * 2012-06-21 2014-11-05 三菱電機株式会社 Encoding device, decoding device, encoding method, encoding program, decoding method, and decoding program
KR20190129702A (en) * 2018-05-11 2019-11-20 인텔 코포레이션 System for compressing floating point data

Also Published As

Publication number Publication date
KR20240070783A (en) 2024-05-22

Similar Documents

Publication Publication Date Title
WO2020242057A1 (en) Decompression apparatus and control method thereof
WO2017222140A1 (en) Encoding and decoding methods and devices including cnn-based in-loop filter
WO2020235797A1 (en) Apparatus for processing modular multiply operation and methods thereof
WO2020231049A1 (en) Neural network model apparatus and compressing method of neural network model
WO2022005188A1 (en) Entity recognition method, apparatus, electronic device and computer readable storage medium
WO2020138745A1 (en) Image processing method, apparatus, electronic device and computer readable storage medium
WO2020231209A1 (en) Method, apparatus, electronic device, and computer readable storage medium for voice translation
WO2023153821A1 (en) Method of compressing neural network model and electronic apparatus for performing the same
WO2016159518A1 (en) Device for calculating average of nonlinear data
WO2021158085A1 (en) Neural network update method, classification method and electronic device
WO2014189236A1 (en) Lossless image compression and restoration method and apparatus performing same
EP3867824A1 (en) Electronic apparatus and control method thereof
WO2019088657A1 (en) Method and device for compressing image and neural network using hidden variable
WO2017206867A1 (en) Sensor shutdown method and apparatus, storage medium, and electronic device
WO2024106556A1 (en) Method and device for floating-point data compression
WO2021112647A1 (en) Method, apparatus and electronic device for determining word representation vector
WO2023229094A1 (en) Method and apparatus for predicting actions
WO2023042989A1 (en) Add operation method considering data scale, hardware accelerator therefor, and computing device using same
WO2011068315A2 (en) Apparatus for selecting optimum database using maximal concept-strength recognition technique and method thereof
WO2021125496A1 (en) Electronic device and control method therefor
WO2019074185A1 (en) Electronic apparatus and control method thereof
EP3659073A1 (en) Electronic apparatus and control method thereof
WO2018191889A1 (en) Photo processing method and apparatus, and computer device
WO2024014631A1 (en) Quantization method for convolutional data considering data scale, hardware accelerator therefor, and computing apparatus using same
WO2020213885A1 (en) Server and control method thereof

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

Country of ref document: EP

Kind code of ref document: A1