[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

WO2024158174A1 - Electronic device and method for quantization of operator related to computation of model - Google Patents

Electronic device and method for quantization of operator related to computation of model Download PDF

Info

Publication number
WO2024158174A1
WO2024158174A1 PCT/KR2024/000928 KR2024000928W WO2024158174A1 WO 2024158174 A1 WO2024158174 A1 WO 2024158174A1 KR 2024000928 W KR2024000928 W KR 2024000928W WO 2024158174 A1 WO2024158174 A1 WO 2024158174A1
Authority
WO
WIPO (PCT)
Prior art keywords
processor
data type
operator
weights
electronic device
Prior art date
Application number
PCT/KR2024/000928
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
Priority claimed from KR1020230030093A external-priority patent/KR20240117447A/en
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Publication of WO2024158174A1 publication Critical patent/WO2024158174A1/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/04Architecture, e.g. interconnection topology
    • G06N3/0495Quantised networks; Sparse networks; Compressed networks
    • 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

Definitions

  • an electronic device may include memory and at least one processor.
  • the at least one processor may obtain, from the memory, a first weight set of a first data type included in a first operator, which is one of at least one operator included in the model.
  • the at least one processor generates a set of sub-output data corresponding to a set of input data used for computation of the first operator from profile information stored in the memory and generated by execution of the model. It can be obtained.
  • the at least one processor may obtain a second weight set of a second data type supported by at least one accelerator by performing quantization on the first weight set based on the set of sub-output data. .
  • the at least one processor may store the second weight set in the memory based on obtaining the second weight set.
  • a method performed by an electronic device includes obtaining, in a memory, a first set of weights of a first data type included in a first operator, one of at least one operator included in the model.
  • the method includes an operation of obtaining a set of sub-output data corresponding to a set of input data used for computation of the first operator from profile information stored in the memory and generated by execution of the model. It can be included.
  • the method may include, based on the set of sub-output data, obtaining a second weight set of a second data type supported by at least one accelerator by performing quantization on the first weight set. .
  • the method may include storing the second set of weights in the memory based on obtaining the second set of weights.
  • a computer readable storage medium storing one or more programs
  • the one or more programs when executed by a processor of an electronic device, are stored in memory, at least one of the programs included in the model. and instructions causing the electronic device to obtain a first set of weights of a first data type included in a first operator, one of the operators.
  • the at least one program obtains a set of sub-output data corresponding to a set of input data used for computation of the first operator from profile information stored in the memory and generated by execution of the model. It may include instructions that cause the electronic device to do so.
  • the electronic device allows the at least one program to obtain a second weight set of a second data type supported by at least one accelerator by performing quantization on the first weight set based on the set of sub-output data. It may contain instructions that cause .
  • the at least one or more programs may include instructions that cause the electronic device to store the second set of weights in the memory based on obtaining the second set of weights.
  • the one or more programs are included in the model in the memory when executed by a processor of an electronic device. and instructions that cause the electronic device to obtain a first set of weights of a first data type included in a first operator, one of at least one operator.
  • the one or more programs obtain, from profile information generated by execution of the model and stored in the memory, a set of sub-output data corresponding to a set of input data used for computation of the first operator. It may include instructions that cause the electronic device to do so.
  • the one or more programs based on the set of sub-output data, perform quantization on the first set of weights to obtain a second set of weights of a second data type supported by at least one accelerator. It may contain instructions that cause .
  • the one or more programs may include instructions that cause the electronic device to store the second set of weights in the memory based on obtaining the second set of weights.
  • an electronic device may include a memory that stores instructions, and at least one processor.
  • the instructions when executed by the at least one processor, cause the electronic device to generate, in the memory, a first set of weights of a first data type included in a first operator that is one of at least one operator included in the model.
  • FIG. 1 is a block diagram of an electronic device in a network environment, according to embodiments.
  • FIG. 2 is a block diagram illustrating one or more processors included in an electronic device according to an embodiment.
  • FIG. 3 is an exemplary diagram illustrating a neural network running on an electronic device according to an embodiment.
  • Figure 4 is an example diagram for explaining quantization of weights according to an embodiment.
  • Figure 5 is a block diagram for explaining the operation of a memory included in an electronic device according to an embodiment.
  • FIG. 6 is a block diagram illustrating reliability evaluation of a model executed in an electronic device according to an embodiment.
  • FIG. 7 illustrates a flow of operations of an electronic device for storing quantized second weight sets according to an embodiment.
  • Figure 8 shows a flow of operations for executing quantization using a server according to an embodiment.
  • FIG. 9 illustrates a flow of operations of an electronic device for acquiring a second set of weights through quantization according to an embodiment.
  • FIG. 10 illustrates a flow of operations of an electronic device for storing a second set of weights based on reliability evaluation according to an embodiment.
  • FIG. 11 illustrates a flow of operations of an electronic device for identifying a quantization method according to reliability, according to an embodiment.
  • Terms used in the following description refer to signals (e.g., signal, information, message, signaling), terms for operational states (e.g., step, operation, procedure), and terms that refer to data.
  • Terms referring to artificial intelligence (AI) e.g. packet, user stream, information, bit, symbol, codeword
  • terms referring to artificial intelligence (AI) e.g. neural network
  • AI artificial intelligence
  • neural network network
  • weight e.g. weight
  • term referring to profile information, operator e.g., layer
  • terms referring to network entities, terms referring to components of a device, etc. are exemplified for convenience of explanation. Accordingly, the present disclosure is not limited to the terms described below, and other terms having equivalent technical meaning may be used.
  • terms such as '... part', '... base', '... water', and '... body' used hereinafter mean at least one shape structure or a unit that processes a function. It can mean.
  • the expressions greater than or less than may be used to determine whether a specific condition is satisfied or fulfilled, but this is only a description for expressing an example, and the description of more or less may be used. It's not exclusion. Conditions written as ‘more than’ can be replaced with ‘more than’, conditions written as ‘less than’ can be replaced with ‘less than’, and conditions written as ‘more than and less than’ can be replaced with ‘greater than and less than’.
  • 'A' to 'B' means at least one of the elements from A to (including A) and B (including B).
  • 'C' and/or 'D' means including at least one of 'C' or 'D', for example ⁇ 'C', 'D', 'C' and 'D' ⁇ .
  • FIG. 1 is a block diagram of an electronic device 101 in a network environment 100, according to various embodiments.
  • the electronic device 101 communicates with the electronic device 102 through a first network 198 (e.g., a short-range wireless communication network) or a second network 199. It is possible to communicate with at least one of the electronic device 104 or the server 108 through (e.g., a long-distance wireless communication network). According to one embodiment, the electronic device 101 may communicate with the electronic device 104 through the server 108.
  • a first network 198 e.g., a short-range wireless communication network
  • a second network 199 e.g., a long-distance wireless communication network.
  • the electronic device 101 may communicate with the electronic device 104 through the server 108.
  • the electronic device 101 includes a processor 120, a memory 130, an input module 150, an audio output module 155, a display module 160, an audio module 170, and a sensor module ( 176), interface 177, connection terminal 178, haptic module 179, camera module 180, power management module 188, battery 189, communication module 190, subscriber identification module 196 , or may include an antenna module 197.
  • at least one of these components eg, the connection terminal 178) may be omitted or one or more other components may be added to the electronic device 101.
  • some of these components e.g., sensor module 176, camera module 180, or antenna module 197) are integrated into one component (e.g., display module 160). It can be.
  • Processor 120 may, for example, execute software (e.g., program 140) to operate at least one other component (e.g., hardware or software component) of electronic device 101 connected to processor 120. It can be controlled and various data processing or operations can be performed. According to one embodiment, as at least part of data processing or computation, the processor 120 stores commands or data received from another component (e.g., sensor module 176 or communication module 190) in volatile memory 132. The commands or data stored in the volatile memory 132 can be processed, and the resulting data can be stored in the non-volatile memory 134.
  • software e.g., program 140
  • the processor 120 stores commands or data received from another component (e.g., sensor module 176 or communication module 190) in volatile memory 132.
  • the commands or data stored in the volatile memory 132 can be processed, and the resulting data can be stored in the non-volatile memory 134.
  • the processor 120 includes a main processor 121 (e.g., a central processing unit or an application processor) or an auxiliary processor 123 that can operate independently or together (e.g., a graphics processing unit, a neural network processing unit ( It may include a neural processing unit (NPU), an image signal processor, a sensor hub processor, or a communication processor).
  • a main processor 121 e.g., a central processing unit or an application processor
  • auxiliary processor 123 e.g., a graphics processing unit, a neural network processing unit ( It may include a neural processing unit (NPU), an image signal processor, a sensor hub processor, or a communication processor.
  • the electronic device 101 includes a main processor 121 and a auxiliary processor 123
  • the auxiliary processor 123 may be set to use lower power than the main processor 121 or be specialized for a designated function. You can.
  • the auxiliary processor 123 may be implemented separately from the main processor 121 or as part of it.
  • the auxiliary processor 123 may, for example, act on behalf of the main processor 121 while the main processor 121 is in an inactive (e.g., sleep) state, or while the main processor 121 is in an active (e.g., application execution) state. ), together with the main processor 121, at least one of the components of the electronic device 101 (e.g., the display module 160, the sensor module 176, or the communication module 190) At least some of the functions or states related to can be controlled.
  • coprocessor 123 e.g., image signal processor or communication processor
  • may be implemented as part of another functionally related component e.g., camera module 180 or communication module 190. there is.
  • the auxiliary processor 123 may include a hardware structure specialized for processing artificial intelligence models.
  • Artificial intelligence models can be created through machine learning. For example, such learning may be performed in the electronic device 101 itself on which the artificial intelligence model is performed, or may be performed through a separate server (e.g., server 108).
  • Learning algorithms may include, for example, supervised learning, unsupervised learning, semi-supervised learning, or reinforcement learning, but It is not limited.
  • An artificial intelligence model may include multiple artificial neural network layers.
  • Artificial neural networks include deep neural network (DNN), convolutional neural network (CNN), recurrent neural network (RNN), restricted boltzmann machine (RBM), belief deep network (DBN), bidirectional recurrent deep neural network (BRDNN), It may be one of deep Q-networks or a combination of two or more of the above, but is not limited to the examples described above.
  • artificial intelligence models may additionally or alternatively include software structures.
  • the memory 130 may store various data used by at least one component (eg, the processor 120 or the sensor module 176) of the electronic device 101. Data may include, for example, input data or output data for software (e.g., program 140) and instructions related thereto.
  • Memory 130 may include volatile memory 132 or non-volatile memory 134.
  • the program 140 may be stored as software in the memory 130 and may include, for example, an operating system 142, middleware 144, or application 146.
  • the input module 150 may receive commands or data to be used in a component of the electronic device 101 (e.g., the processor 120) from outside the electronic device 101 (e.g., a user).
  • the input module 150 may include, for example, a microphone, mouse, keyboard, keys (eg, buttons), or digital pen (eg, stylus pen).
  • the sound output module 155 may output sound signals to the outside of the electronic device 101.
  • the sound output module 155 may include, for example, a speaker or a receiver. Speakers can be used for general purposes such as multimedia playback or recording playback.
  • the receiver can be used to receive incoming calls. According to one embodiment, the receiver may be implemented separately from the speaker or as part of it.
  • the display module 160 can visually provide information to the outside of the electronic device 101 (eg, a user).
  • the display module 160 may include, for example, a display, a hologram device, or a projector, and a control circuit for controlling the device.
  • the display module 160 may include a touch sensor configured to detect a touch, or a pressure sensor configured to measure the intensity of force generated by the touch.
  • the audio module 170 can convert sound into an electrical signal or, conversely, convert an electrical signal into sound. According to one embodiment, the audio module 170 acquires sound through the input module 150, the sound output module 155, or an external electronic device (e.g., directly or wirelessly connected to the electronic device 101). Sound may be output through the electronic device 102 (e.g., speaker or headphone).
  • the electronic device 102 e.g., speaker or headphone
  • the sensor module 176 detects the operating state (e.g., power or temperature) of the electronic device 101 or the external environmental state (e.g., user state) and generates an electrical signal or data value corresponding to the detected state. can do.
  • the sensor module 176 includes, for example, a gesture sensor, a gyro sensor, an air pressure sensor, a magnetic sensor, an acceleration sensor, a grip sensor, a proximity sensor, a color sensor, an IR (infrared) sensor, a biometric sensor, It may include a temperature sensor, humidity sensor, or light sensor.
  • the interface 177 may support one or more designated protocols that can be used to connect the electronic device 101 directly or wirelessly with an external electronic device (eg, the electronic device 102).
  • the interface 177 may include, for example, a high definition multimedia interface (HDMI), a universal serial bus (USB) interface, an SD card interface, or an audio interface.
  • HDMI high definition multimedia interface
  • USB universal serial bus
  • SD card interface Secure Digital Card interface
  • audio interface audio interface
  • connection terminal 178 may include a connector through which the electronic device 101 can be physically connected to an external electronic device (eg, the electronic device 102).
  • the connection terminal 178 may include, for example, an HDMI connector, a USB connector, an SD card connector, or an audio connector (eg, a headphone connector).
  • the haptic module 179 may convert electrical signals into mechanical stimulation (e.g., vibration or movement) or electrical stimulation that the user can perceive through tactile or kinesthetic senses.
  • the haptic module 179 may include, for example, a motor, a piezoelectric element, or an electrical stimulation device.
  • the camera module 180 can capture still images and moving images.
  • the camera module 180 may include one or more lenses, image sensors, image signal processors, or flashes.
  • the power management module 188 can manage power supplied to the electronic device 101.
  • the power management module 188 may be implemented as at least a part of, for example, a power management integrated circuit (PMIC).
  • PMIC power management integrated circuit
  • the battery 189 may supply power to at least one component of the electronic device 101.
  • the battery 189 may include, for example, a non-rechargeable primary battery, a rechargeable secondary battery, or a fuel cell.
  • Communication module 190 is configured to provide a direct (e.g., wired) communication channel or wireless communication channel between electronic device 101 and an external electronic device (e.g., electronic device 102, electronic device 104, or server 108). It can support establishment and communication through established communication channels. Communication module 190 operates independently of processor 120 (e.g., an application processor) and may include one or more communication processors that support direct (e.g., wired) communication or wireless communication.
  • processor 120 e.g., an application processor
  • the communication module 190 may be a wireless communication module 192 (e.g., a cellular communication module, a short-range wireless communication module, or a global navigation satellite system (GNSS) communication module) or a wired communication module 194 (e.g., : LAN (local area network) communication module, or power line communication module) may be included.
  • a wireless communication module 192 e.g., a cellular communication module, a short-range wireless communication module, or a global navigation satellite system (GNSS) communication module
  • GNSS global navigation satellite system
  • wired communication module 194 e.g., : LAN (local area network) communication module, or power line communication module
  • the corresponding communication module is a first network 198 (e.g., a short-range communication network such as Bluetooth, wireless fidelity (WiFi) direct, or infrared data association (IrDA)) or a second network 199 (e.g., legacy It may communicate with an external electronic device 104 through a telecommunication network such as a cellular network, a 5G network, a next-generation communication network, the Internet, or a computer network (e.g., LAN or WAN).
  • a telecommunication network such as a cellular network, a 5G network, a next-generation communication network, the Internet, or a computer network (e.g., LAN or WAN).
  • a telecommunication network such as a cellular network, a 5G network, a next-generation communication network, the Internet, or a computer network (e.g., LAN or WAN).
  • a telecommunication network such as a cellular network, a 5G network, a next-generation communication network
  • the wireless communication module 192 uses subscriber information (e.g., International Mobile Subscriber Identifier (IMSI)) stored in the subscriber identification module 196 to communicate within a communication network such as the first network 198 or the second network 199.
  • subscriber information e.g., International Mobile Subscriber Identifier (IMSI)
  • IMSI International Mobile Subscriber Identifier
  • the wireless communication module 192 may support 5G networks after 4G networks and next-generation communication technologies, for example, NR access technology (new radio access technology).
  • NR access technology provides high-speed transmission of high-capacity data (eMBB (enhanced mobile broadband)), minimization of terminal power and access to multiple terminals (mMTC (massive machine type communications)), or high reliability and low latency (URLLC (ultra-reliable and low latency). -latency communications)) can be supported.
  • the wireless communication module 192 may support a high frequency band (eg, mmWave band), for example, to achieve a high data rate.
  • a high frequency band eg, mmWave band
  • the wireless communication module 192 uses various technologies to secure performance in high frequency bands, for example, beamforming, massive array multiple-input and multiple-output (MIMO), and full-dimensional multiplexing. It can support technologies such as input/output (FD-MIMO: full dimensional MIMO), array antenna, analog beam-forming, or large scale antenna.
  • the wireless communication module 192 may support various requirements specified in the electronic device 101, an external electronic device (e.g., electronic device 104), or a network system (e.g., second network 199).
  • the wireless communication module 192 supports peak data rate (e.g., 20 Gbps or more) for realizing eMBB, loss coverage (e.g., 164 dB or less) for realizing mmTC, or U-plane latency (e.g., 164 dB or less) for realizing URLLC.
  • peak data rate e.g., 20 Gbps or more
  • loss coverage e.g., 164 dB or less
  • U-plane latency e.g., 164 dB or less
  • the antenna module 197 may transmit or receive signals or power to or from the outside (eg, an external electronic device).
  • the antenna module 197 may include an antenna including a radiator made of a conductor or a conductive pattern formed on a substrate (eg, PCB).
  • the antenna module 197 may include a plurality of antennas (eg, an array antenna). In this case, at least one antenna suitable for a communication method used in a communication network such as the first network 198 or the second network 199 is, for example, connected to the plurality of antennas by the communication module 190. can be selected Signals or power may be transmitted or received between the communication module 190 and an external electronic device through the at least one selected antenna.
  • other components eg, radio frequency integrated circuit (RFIC) may be additionally formed as part of the antenna module 197.
  • RFIC radio frequency integrated circuit
  • the antenna module 197 may form a mmWave antenna module.
  • a mmWave antenna module includes a printed circuit board, an RFIC disposed on or adjacent to a first side (e.g., bottom side) of the printed circuit board and capable of supporting a designated high-frequency band (e.g., mmWave band); And a plurality of antennas (e.g., array antennas) disposed on or adjacent to the second side (e.g., top or side) of the printed circuit board and capable of transmitting or receiving signals in the designated high frequency band. can do.
  • a mmWave antenna module includes a printed circuit board, an RFIC disposed on or adjacent to a first side (e.g., bottom side) of the printed circuit board and capable of supporting a designated high-frequency band (e.g., mmWave band); And a plurality of antennas (e.g., array antennas) disposed on or adjacent to the second side (e.g., top or side)
  • peripheral devices e.g., bus, general purpose input and output (GPIO), serial peripheral interface (SPI), or mobile industry processor interface (MIPI)
  • signal e.g. commands or data
  • commands or data may be transmitted or received between the electronic device 101 and the external electronic device 104 through the server 108 connected to the second network 199.
  • Each of the external electronic devices 102 or 104 may be of the same or different type as the electronic device 101.
  • all or part of the operations performed in the electronic device 101 may be executed in one or more of the external electronic devices 102, 104, or 108.
  • the electronic device 101 may perform the function or service instead of executing the function or service on its own.
  • one or more external electronic devices may be requested to perform at least part of the function or service.
  • One or more external electronic devices that have received the request may execute at least part of the requested function or service, or an additional function or service related to the request, and transmit the result of the execution to the electronic device 101.
  • the electronic device 101 may process the result as is or additionally and provide it as at least part of a response to the request.
  • cloud computing distributed computing, mobile edge computing (MEC), or client-server computing technology can be used.
  • the electronic device 101 may provide an ultra-low latency service using, for example, distributed computing or mobile edge computing.
  • the external electronic device 104 may include an Internet of Things (IoT) device.
  • Server 108 may be an intelligent server using machine learning and/or neural networks.
  • the external electronic device 104 or server 108 may be included in the second network 199.
  • the electronic device 101 may be applied to intelligent services (e.g., smart home, smart city, smart car, or healthcare) based on 5G communication technology and IoT-related technology.
  • Electronic devices may be of various types.
  • Electronic devices may include, for example, portable communication devices (e.g., smartphones), computer devices, portable multimedia devices, portable medical devices, cameras, wearable devices, or home appliances.
  • Electronic devices according to embodiments of this document are not limited to the above-described devices.
  • first, second, or first or second may be used simply to distinguish one element from another, and may be used to distinguish such elements in other respects, such as importance or order) is not limited.
  • One (e.g. first) component is said to be “coupled” or “connected” to another (e.g. second) component, with or without the terms “functionally” or “communicatively”.
  • any of the components can be connected to the other components directly (e.g. wired), wirelessly, or through a third component.
  • module used in various embodiments of this document may include a unit implemented in hardware, software, or firmware, and is interchangeable with terms such as logic, logic block, component, or circuit, for example. It can be used as A module may be an integrated part or a minimum unit of the parts or a part thereof that performs one or more functions. For example, according to one embodiment, the module may be implemented in the form of an application-specific integrated circuit (ASIC).
  • ASIC application-specific integrated circuit
  • Various embodiments of the present document are one or more instructions stored in a storage medium (e.g., built-in memory 136 or external memory 138) that can be read by a machine (e.g., electronic device 101). It may be implemented as software (e.g., program 140) including these.
  • a processor e.g., processor 120
  • the one or more instructions may include code generated by a compiler or code that can be executed by an interpreter.
  • a storage medium that can be read by a device may be provided in the form of a non-transitory storage medium.
  • 'non-transitory' only means that the storage medium is a tangible device and does not contain signals (e.g. electromagnetic waves).
  • This term refers to cases where data is stored semi-permanently in the storage medium. There is no distinction between temporary storage cases.
  • Computer program products are commodities and can be traded between sellers and buyers.
  • the computer program product may be distributed in the form of a machine-readable storage medium (e.g. compact disc read only memory (CD-ROM)) or through an application store (e.g. Play StoreTM) or on two user devices (e.g. It can be distributed (e.g. downloaded or uploaded) directly between smart phones) or online.
  • a machine-readable storage medium e.g. compact disc read only memory (CD-ROM)
  • an application store e.g. Play StoreTM
  • two user devices e.g. It can be distributed (e.g. downloaded or uploaded) directly between smart phones) or online.
  • at least a portion of the computer program product may be at least temporarily stored or temporarily created in a machine-readable storage medium, such as the memory of a manufacturer's server, an application store's server, or a relay server.
  • each component (e.g., module or program) of the above-described components may include a single or plural entity, and some of the plurality of entities may be separately placed in other components. there is.
  • one or more of the components or operations described above may be omitted, or one or more other components or operations may be added.
  • multiple components eg, modules or programs
  • the integrated component may perform one or more functions of each component of the plurality of components identically or similarly to those performed by the corresponding component of the plurality of components prior to the integration. .
  • operations performed by a module, program, or other component may be executed sequentially, in parallel, iteratively, or heuristically, or one or more of the operations may be executed in a different order, or omitted. Alternatively, one or more other operations may be added.
  • FIG. 2 is a block diagram illustrating one or more processors included in the electronic device 101 according to an embodiment.
  • the electronic device 101 of FIG. 2 may correspond to the electronic device 101 of FIG. 1 .
  • the electronic device 101 may include at least one of a CPU 200, an NPU 210, a GPU 220, or a memory 130.
  • the CPU 200, the NPU 210, the GPU 220, and the memory 130 are electrically and/or connected to each other by an electronic component such as a communication bus 230.
  • the type and/or number of hardware components included in the electronic device 101 are not limited to those shown in FIG. 2.
  • the electronic device 101 includes the display module 160 and the communication module of FIG. 1. (190) may be further included.
  • the CPU 200 of the electronic device 101 may include hardware components for processing data based on one or more instructions.
  • Hardware components for processing data may include, for example, an Arithmetic and Logic Unit (ALU), a Floating Point Unit (FPU), and/or a Field Programmable Gate Array (FPGA).
  • the FPU may be a module for efficiently processing floating point operations.
  • the ALU may be a module for efficiently processing integer operations.
  • the CPU 200 may have the structure of a multi-core processor such as dual core, quad core, or hexa core.
  • the CPU 200 of FIG. 2 may correspond to an example of the processor 120 and/or the main processor 121 of FIG. 1.
  • the GPU 220 of the electronic device 101 may include one or more pipelines that perform a plurality of operations required to execute instructions related to computer graphics.
  • the pipeline of the GPU 220 is a graphics pipeline or rendering pipeline for generating a 3D image and generating a 2D raster image from the generated 3D image. may include.
  • the graphics pipeline is included in a file stored in the memory 130 and can be controlled based on code written in a shading language. For example, code written in a shading language may be compiled by the CPU 200 into instructions executable on the GPU 220.
  • the NPU 210 of the electronic device 101 may include hardware components to support one or more functions based on a neural network.
  • the neural network is a recognition model implemented in software or hardware that imitates the computational ability of a biological system using a large number of artificial neurons (or nodes).
  • a neural network may be referred to as a model.
  • the electronic device 101 may execute functions similar to human cognitive functions or learning processes based on a neural network.
  • one or more functions based on the neural network supported by the NPU 210 include the function of training a neural network, image recognition, voice recognition, and/or handwriting recognition using a trained neural network. It may include a function to perform, a function personalized to the user of the electronic device 101 based on a neural network, and a function to control a neural network based on an application using an API (Application Programming Interface).
  • API Application Programming Interface
  • the CPU 200, NPU 210, and GPU 220 of FIG. 2 are each included as different integrated circuits in the electronic device 101, or are based on a System on Chip (SoC). may be included in a single integrated circuit (single IC).
  • SoC System on Chip
  • the CPU 200, the NPU 210, the GPU 220, or a combination thereof may be included in a single integrated circuit included in the electronic device 101.
  • the type of processing unit included based on the SoC is not limited to the above example, and for example, other hardware components (e.g., communication processor) not shown in FIG. 2 may be included in the CPU 200 and the NPU.
  • 210 and the GPU 220 may be included in a single integrated circuit.
  • the memory 130 of the electronic device 101 stores data and/or instructions input and/or output to the CPU 200, the NPU 210, and/or the GPU 220. May include hardware components for storage.
  • the memory 130 may include, for example, volatile memory 132 such as RAM (Random-Access Memory) and/or non-volatile memory such as ROM (Read-Only Memory). It may include (134).
  • the volatile memory 132 may include, for example, at least one of Dynamic RAM (DRAM), Static RAM (SRAM), Cache RAM, and Pseudo SRAM (PSRAM).
  • the non-volatile memory 134 is, for example, at least one of PROM (Programmable ROM), EPROM (Erasable PROM), EEPROM (Electrically Erasable PROM), flash memory, hard disk, compact disk, and eMMC (Embedded Multi Media Card). It can contain one.
  • PROM Programmable ROM
  • EPROM Erasable PROM
  • EEPROM Electrical Erasable PROM
  • flash memory hard disk, compact disk, and eMMC (Embedded Multi Media Card). It can contain one.
  • the memory 130, the volatile memory 132, and the non-volatile memory 134 of FIG. 2 may correspond to the memory 130, the volatile memory 132, and the non-volatile memory 134 of FIG. 1, respectively. .
  • a set of parameters for calculating a neural network may be stored.
  • Parameters representing the neural network may, for example, represent a plurality of nodes included in the neural network and/or weights assigned to connections between the plurality of nodes.
  • the structure of a neural network represented by a set of parameters stored in the memory 130 of the electronic device 101 according to one embodiment will be described later with reference to FIG. 3.
  • at least one of the CPU 200, GPU 220, or NPU 210 may perform an operation based on the set of parameters.
  • the NPU 210 may include a neural engine, buffer, and/or controller.
  • the neural engine, the buffer, and the controller may be electrically and/or operatively connected to each other by electronic devices such as a communication bus.
  • the neural engine and/or controller may be implemented in software.
  • the neural engine and/or controller may be implemented in hardware.
  • the NPU 210 may perform operations required to execute network-related functions.
  • the NPU 210 may at least temporarily store one or more numerical values used in the calculation or one or more output numerical values in order to perform the calculation.
  • the controller of the NPU 210 may control operations based on the neural engine included in the NPU 210.
  • the controller may be a software module.
  • the controller may be a hardware module.
  • the electronic device 101 may identify a specific numerical value from one or more bits based on a plurality of data types.
  • the data type may be a predetermined category for interpretation of one or more bits by the electronic device 101.
  • the electronic device 101 may interpret a set of one or more bits based on a data type corresponding to the set and identify data represented by the set. For example, when the electronic device 101 stores one or more bits representing a specific numerical value in the memory 130, the number of bits corresponding to the specific numerical value within the memory 130 varies depending on the data type. may be differentiated.
  • the NPU 210 may support binary arithmetic operations for each of a plurality of data types. As the NPU 210 supports binary arithmetic operations of multiple data types, the buffer can be managed more efficiently. Hereinafter, multiple data types may have different precisions.
  • the NPU 210 may support performance of arithmetic operations based on a designated data type. For example, if the data type included in the neural network stored in the memory 130 and the data type supported by the NPU 210 are different, the NPU 210 may not support operations of the different data type. there is.
  • the electronic device 101 is capable of performing neural network operations such as the NPU 210, a graphic processing unit (GPU), a tensor processing unit (TPU), and/or a digital signal processor (DSP). If the precision (or data type) supported by the module is different from the precision (or data type) of the parameters (e.g.
  • the precision of the parameters can be changed using a type conversion algorithm such as ).
  • the electronic device 101 inputs the parameters to the CPU 200, performs an operation related to the neural network, and changes the precision of the parameters using the results of the operation. You can.
  • the precision refers to quantization level, resolution, bit depth, digital level, and representation density in terms of representing the unit of each representation value within the quantized range. (representation density), quantum density, quantum range, indication capability, indication density, indication level. and/or may be referred to by equivalent technical terms.
  • Quantization may refer to the operation of converting a real number variable into an integer variable.
  • the CPU 200 may convert a variable of a data type representing a floating point number based on 16 bits into a variable of a data type representing an integer based on 8 bits.
  • the CPU 200 may convert a variable of a data type representing a floating point number based on 8 bits to a variable of a data type representing an integer based on 4 bits.
  • Methods for performing the quantization can be divided into symmetric methods and asymmetric methods.
  • the values of weights and/or biases included in the model can be proportionally converted.
  • the values of weights and/or biases included in the model may change non-proportionally. For example, based on an asymmetric method, when parameters (e.g., weights and/or biases) of a first data type for expressing floating point numbers are quantized into a second data type for expressing integers, the first The length of the first section of the first data type matching the first integer of the second data type and the length of the second section of the first data type matching the second integer of the second data type may be different from each other. .
  • the method of performing quantization may be determined depending on the quantization method supported by the processor.
  • quantization can be performed in an asymmetric manner.
  • the processor may perform quantization through a quantizer.
  • the quantizer may include an application and/or an application programming interface (API) (eg, runtime library) provided for model calculation.
  • API application programming interface
  • the embodiment is not limited to this, and the quantizer may include an accelerator and/or a combination of applications (or instructions) for controlling the accelerator.
  • the quantizer may include a software application for quantizing a set of weights and a bias.
  • the accelerator may support operations for operators to execute models.
  • the model may include a machine learning model.
  • the accelerator may be a hardware component (eg, a processor, a component included in the processor, or a component separate from the processor) and/or software within the processor.
  • the information described below with respect to FIG. 2 may be referred to.
  • the present invention can perform quantization in units of individual operators constituting a neural network model. Quantization operations for individual operators are described in Figure 4.
  • the quantized operator can be stored along with the hash value of the operator before quantization.
  • the electronic device may perform an operation on the operator before quantization based on the quantized weight and bias.
  • the quantized weights and biases may be identified based on the stored hash values.
  • the electronic device may perform a reliability evaluation on the quantized neural network model and replace the model before quantization with a neural network model that has passed the reliability evaluation.
  • the operation for the reliability evaluation is described in FIG. 6. If the neural network model does not pass the reliability evaluation, the neural network model before quantization may be quantized again in the server.
  • the server may transmit sub-output data from various electronic devices (e.g., terminals) and perform quantization on a neural network model before quantization through the transmitted data.
  • the operation for quantization through the server is described in FIG. 8.
  • the quantizer may be a software application that quantizes the first weight and bias of the first data type to generate the second weight and bias of the second data type.
  • the processor 120 may perform quantization through a quantizer.
  • the quantizer may include an application and/or an application programming interface (API) (eg, runtime library) provided for model calculation.
  • API application programming interface
  • the embodiment is not limited to this, and the quantizer may include an accelerator and/or a combination of applications (or instructions) for controlling the accelerator.
  • an accelerator may be a hardware component or a software application to support operations for an operator.
  • the accelerator may support operations for operators to execute models.
  • the model may include a machine learning model.
  • the accelerator may include hardware components within the processor 120.
  • the accelerator may include a cortex matrix engine (CME) within a central processing unit (CPU).
  • the accelerator may include a tensor processing unit (TPU) within a graphic processing unit (GPU).
  • the accelerator may include software executed by the processor 120.
  • the accelerator may be a software application executed by at least one of the CPU, neural processing unit (NPU), or GPU.
  • the accelerator may be a processor 120 capable of executing the model.
  • the accelerator may include a CPU.
  • the accelerator may include an NPU.
  • the accelerator may include a GPU.
  • the accelerator may include a TPU.
  • FIG. 3 is an exemplary diagram illustrating a neural network 300 running on an electronic device according to an embodiment.
  • the electronic device of FIG. 3 may correspond to an example of the electronic device 101 of FIG. 1 and/or FIG. 2 .
  • the neural network 300 of FIG. 3 may be obtained, for example, from a set of parameters stored in a memory (e.g., memory 130 of FIGS. 1 and/or 2) by an electronic device according to one embodiment. .
  • the neural network 300 may include a plurality of layers.
  • the neural network 300 may include an input layer 310, one or more hidden layers 320, and an output layer 330.
  • the input layer 310 may correspond to a vector and/or matrix representing input data of the neural network 300.
  • a vector representing the input data may have elements corresponding to the number of nodes included in the input layer 310.
  • elements included in the matrix representing the input data may correspond to each of the nodes included in the input layer 310.
  • Signals generated by the input data at each node in the input layer 310 may be transmitted from the input layer 310 to the hidden layers 320.
  • the output layer 330 may generate output data of the neural network 300 based on one or more signals received from the hidden layers 320.
  • the output data may correspond to a vector and/or matrix having elements corresponding to the number of nodes included in the output layer 330.
  • the first nodes included in a specific layer among the plurality of layers included in the neural network 300 are at least the second nodes of the previous layer of the specific layer within the sequence of the plurality of layers. It can correspond to a single weighted sum.
  • the electronic device 101 may identify a weight to be applied to at least one of the second nodes from a set of parameters stored in the memory. Training the neural network 300 may include changing and/or determining one or more weights related to the weighted sum.
  • one or more hidden layers 320 may be located between the input layer 310 and the output layer 330, and predict input data transmitted through the input layer 310. It can be easily converted to a value.
  • the input layer 310, the one or more hidden layers 320, and the output layer 330 may include a plurality of nodes.
  • One or more hidden layers 320 may be a convolutional filter or a fully connected layer in a convolutional neural network (CNN), or various types of filters or layers grouped based on special functions or characteristics. You can.
  • the one or more hidden layers 320 may be a layer based on a recurrent neural network (RNN) whose output value is re-input to the hidden layer at the current time.
  • the neural network 300 may include numerous hidden layers 320 to form a deep neural network. Training a deep neural network is called deep learning.
  • nodes included in the hidden layers 320 are referred to as hidden nodes.
  • Nodes included in the input layer 310 and the one or more hidden layers 320 may be connected to each other through connection lines with connection weights, and nodes included in the hidden layer and the output layer 330 may also be connected. They can be connected to each other through connection lines with weights.
  • Tuning and/or training the neural network 300 includes layers included in the neural network 300 (e.g., an input layer 310, one or more hidden layers 320, and an output layer 330). This may mean changing the connection weight between nodes included in each. Tuning of the neural network 300 may be performed based on, for example, supervised learning and/or unsupervised learning.
  • the electronic device may tune the neural network 300 based on reinforcement learning in unsupervised learning. For example, the electronic device may change policy information used by the neural network 300 to control the agent based on the interaction between the agent and the environment. The electronic device according to one embodiment may cause a change in the policy information by the neural network 300 in order to maximize the agent's goal and/or reward due to the interaction.
  • the electronic device in a state of acquiring the neural network 300, may include the input layer 310, the one or more hidden layers 320, and/or the output layer ( 330), the weight corresponding to the connecting line between them can be identified.
  • the electronic device uses a plurality of layers (e.g., the input layer 310, the one or more hidden layers) of the neural network 300.
  • a weighted sum based on the connection line may be obtained sequentially along the layers 320 and the output layer 330.
  • the obtained weighted sum may be stored in the NPU 210 and/or memory 130 of FIG. 2.
  • the electronic device may repeatedly update the weighted sum stored in the memory by sequentially obtaining the weighted sum along the plurality of layers.
  • Each of the plurality of layers of the neural network 300 may have an independent data type and/or precision. For example, when connection lines between a first layer and a second layer among the plurality of layers have weights based on a first data type to represent a floating point number, the electronic device may From the numerical values corresponding to the nodes of the first layer and the weights, weighted sums based on the first data type can be obtained. In the above example, when the connecting lines between the second layer and the third layer among the plurality of layers have weights based on the second data type to represent an integer number, the electronic device includes the obtained weighted sums and From weights based on the second data type, weighted sums based on the second data type can be obtained.
  • the electronic device may, for example, use the NPU 210 of FIG. 2 to provide information to each of the plurality of layers based on the different data types. Corresponding weighted sums can be obtained. As the electronic device accesses memory based on weighted sums obtained based on different data types, the bandwidth of the memory can be used more efficiently. As the bandwidth of memory is used more efficiently, the electronic device according to one embodiment can more quickly obtain output data from the neural network 300 based on the plurality of layers.
  • An electronic device may store sets of parameters representing each of a plurality of neural networks with different precisions.
  • a neural network involving super resolution for upscaling images and/or video may require the precision of a data type to represent a floating point number based on 32 bits.
  • a neural network related to super resolution for upscaling images and/or video may use a data type (e.g. in IEEE 754) to represent floating point numbers based on 16 bits.
  • the precision of the half-precision floating point format defined by For example, a neural network for recognizing a subject included in an image and/or video may require the precision of a data type to represent an integer based on 8 bits and/or 4 bits.
  • a neural network for performing handwriting recognition may require precision of a data type to represent an integer based on the first bit and/or the second bit.
  • An electronic device may perform an operation to obtain a weighted sum based on different precisions corresponding to each of a plurality of neural networks.
  • Figure 4 is an example diagram for explaining quantization of weights according to an embodiment.
  • layers included in the neural network model e.g., the input layer 310, hidden layers 320, and/or output layer 330 in FIG. 3 may correspond to at least one operator.
  • model 401 may include a first operator 405 with a first set of weights of a first data type.
  • Model 403 can be created by quantizing model 401. For example, the quantization of model 403 may be obtained from model 401.
  • the 'first' operator 407 can be created by quantizing the first operator 405.
  • Output data may be generated by operations included in the models 401 and 403 based on the input data.
  • Model 403 may include a first' operator 407 with a second set of weights of a second data type.
  • an operator may be a unit of computation performed by a neural network and/or model.
  • a model may be formed by sequential concatenation of operators distinguished by different parameters (eg, weights and/or biases).
  • the model 401 may include at least one operator.
  • the first operator 405 may be one of at least one operator included in the model 401.
  • the first operator 405 may include a first set of weights and a bias of a first data type.
  • the first data type may represent a floating point number.
  • the first data type may represent a floating point number using 32 bits.
  • the first data type may represent a floating point number using 16 bits.
  • the second data type may represent an integer.
  • the second data type may represent an integer using 8 bits.
  • the second data type may represent an integer using 4 bits.
  • An electronic device e.g., the electronic device 101 of FIG.
  • At least one processor may obtain first sub-output data from input data through an operation of a first operator.
  • the first sub-output data may be input as input data to a second operator connected to the first operator.
  • the at least one processor 120 may obtain second sub-output data from the first sub-output data through an operation of a second operator.
  • the second sub-output data may be input as input data to a third operator connected to the second operator.
  • the at least one processor may obtain output data of the model 401 through an operation of an output operator on sub-output data.
  • the output operator may generate output data of the neural network model.
  • the at least one processor 120 may change the first weight set of the first data type to the second weight set of the second data type.
  • the at least one processor 120 may change a first weight set, which is a floating point number expressed using 16 bits, to a second weight set, which is an integer expressed using 8 bits.
  • the at least one processor 120 may change a first weight set, which is a floating point number expressed using 32 bits, to a second weight set, which is an integer expressed using 4 bits.
  • An accelerator may be a hardware component or a software application to support operations for an operator. The accelerator may support operations for operators to execute models.
  • the model may include a machine learning model.
  • the accelerator can process calculations related to neural networks.
  • the accelerator may perform matrix operations requiring floating point numbers and/or integers of a specific data type.
  • the matrix operations may include multiplication operations of different matrices.
  • the accelerator may include a plurality of FPUs and/or a plurality of arithmetic logic units (ALUs) for multiplication operations of floating point numbers and/or integers of a specific data type.
  • ALUs arithmetic logic units
  • the data type of the weight set may vary depending on the operator. Therefore, whether to quantize an individual operator can be determined based on the data type of the individual operator.
  • the at least one processor 120 may obtain a set of sub-output data from a set of input data based on an operation of an individual operator.
  • the at least one processor 120 may obtain a set of output data from a set of input data by performing an operation on at least one operator.
  • the at least one processor 120 may store the set of input data, the set of sub-output data, and the set of output data as profile information.
  • the at least one processor 120 calculates the first set of weights based on the distribution of the set of sub-output data.
  • the second weight set can be obtained by performing quantization.
  • the at least one processor 120 may obtain a set of sub-output data by performing an operation on the first operator 405 on a set of input data that is actually used data. Quantization of the first weight of the first operator 405 may be generated based on the section of the sub-output data.
  • the numeric interval that can be expressed by the first data type for expressing a floating point number may be the first interval.
  • the numeric interval that can be expressed by the second data type for expressing an integer may be the second interval.
  • the first section may range from negative infinity to positive infinity.
  • the second interval may be from -128 to 127 in the case of a data type expressed by 8 bits.
  • the second interval may be from -32768 to 32767.
  • the first weight set of the first operator 405 is expressed as an 8-bit integer instead of a data type for expressing a floating point number.
  • the at least one processor 120 may change the data type of the first weight set based on the section of the sub-output data. The at least one processor 120 determines the number of second sections having a length smaller than the length of the first section from the first weight set of a first data type for expressing the number of the first sections through quantization.
  • a second weight set of a second data type for expressing can be obtained.
  • the at least one processor 120 may store the quantized second weight set in memory.
  • the at least one processor 120 may obtain output data by performing an operation on the first operator 405 based on the second weight set.
  • the quantization may be performed for each operator. Even if the data type of the first operator's weight set is different from the data type supported by the accelerator and quantization is performed for the first operator, if the data type of the second operator's weight set is the same as the data type supported by the accelerator, the second operator Quantization may not proceed for the operator.
  • the at least one processor 120 may store the second weight set in the memory along with a hash value of the first weight set.
  • the at least one processor 120 may identify a second weight set based on a hash value of the first weight set when the model 401 is executed after the model 401 is quantized.
  • the at least one processor 120 may perform an operation for the first operator based on a second weight set corresponding to a hash value of the first weight set.
  • an accelerator may be a hardware component or a software application to support operations for an operator.
  • the accelerator may support operations for operators to execute models.
  • the model may include a machine learning model.
  • the type of the accelerator the information described below with respect to FIG. 2 may be referred to.
  • the accelerator can process calculations related to neural networks.
  • the accelerator may perform matrix operations requiring floating point numbers and/or integers of a specific data type.
  • the matrix operations may include multiplication operations of different matrices.
  • the accelerator may include a plurality of FPUs and/or a plurality of arithmetic logic units (ALUs) for multiplication operations of floating point numbers and/or integers of a specific data type.
  • the FPU may be a module for efficiently processing floating point operations.
  • the ALU may be a module for efficiently processing integer operations.
  • the accelerator may not support operations on high-precision data depending on the model. For example, the accelerator may perform an operation based on a second data type for representing integers rather than a first data type for representing floating point numbers.
  • the accelerator may perform an operation based on a second data type for representing an integer through 8 bits rather than a first data type for representing an integer through 64 bits.
  • the accelerator can mainly perform low-precision calculations for versatility. Therefore, the at least one processor 120 can increase accelerator utilization by changing the first weight set of the first data type to the second weight set of the second data type.
  • the model 403 may include at least one operator.
  • the 'first' operator 407 may be one of at least one operator included in the model 403.
  • the 'first' operator 407 may include a second set of weights and a bias based on a second data type.
  • the second data type may represent a floating point number.
  • the second data type may represent a floating point number using 16 bits.
  • the second data type may represent an integer.
  • the second data type may represent an integer using 8 bits.
  • the second data type may represent an integer using 4 bits.
  • the second data type may represent an integer using 2 bits.
  • Figure 5 is a block diagram for explaining the operation of a memory included in an electronic device according to an embodiment.
  • an electronic device may include a memory 501 , a first processor 511 , and a second processor 521 .
  • the memory 501 can store profile information 507.
  • the profile information 507 may include input data 502, data for the model 503, and output data 505.
  • the model 503 may include at least one operator including the kth operator 504.
  • the kth operator 504 may include a first set of weights and a bias.
  • the kth operator 504 can be quantized through the quantizer 514.
  • the kth operator 504 can be changed to the k'th operator 506 through a quantization process.
  • the first processor 511 may include a quantizer 514.
  • the first processor 511 and/or the second processor 521 may include a floating point unit (FPU) and/or an accelerator.
  • An accelerator may be a hardware component or a software application to support operations for an operator.
  • the accelerator may support operations for operators to execute models.
  • the model may include a machine learning model.
  • the type of the accelerator the information described below with respect to FIG. 2 may be referred to.
  • the memory 501, the first processor 511, and the second processor 521 are electrically and/or operationally connected to each other by an electronic component such as a communication bus 531. Can be connected (electronically and/or operably coupled with each other).
  • the processor e.g., the first processor 511 and/or the second processor 521
  • the processor may perform operations on operators having data types supported by the FPU through the FPU.
  • the processor may perform operations on operators having data types supported by the accelerator through the accelerator.
  • the quantizer may be a software application for quantizing a weight set and bias. The first processor 511 may quantize the first weight and bias of the first data type into the second weight and bias of the second data type through the quantizer 514.
  • the first processor 511 may be a central processing unit (CPU).
  • the first processor 511 may generate the k'th operator 506 by quantizing the first weight and bias of the kth operator 504 through the quantizer 514.
  • the FPU can perform an operation on the first weight of the first data type that requires high precision before quantization.
  • the FPU may be a module for efficiently processing floating point operations.
  • the quantizer 514 may include an application and/or an application programming interface (API) (eg, runtime library) provided for model calculation. The embodiment is not limited to this, and the quantizer 514 may include a combination of an accelerator and/or an application for controlling the accelerator.
  • the quantizer 514 may be a software application for quantizing the weight set and bias calculated by the accelerator.
  • the processor may quantize the first weight and bias of the first data type into the second weight and bias of the second data type through the quantizer 514.
  • the accelerator may support operations for operators to execute models.
  • the first processor 511 may identify the second data type supported by the accelerator for computation for an operator.
  • the second data type may correspond to low precision.
  • the accelerator may support only data types expressed as 8-bit integers and data types expressed as 16-bit integers.
  • the first processor 511 may identify the first data type of the first weight set included in the first operator that is different from the second data type.
  • the first data type may be a data type expressed as a 32-bit floating point number.
  • the first processor 511 is included in the kth operator 504, which is one of at least one operator included in the model 503, based on identifying the first data type that is different from the second data type.
  • the first weight set of the first data type may be obtained.
  • the kth operator 504 of the model 503 has a first weight of a first data type expressed as a floating point number of 32 bits, and the accelerators have a first weight of a second data type expressed as an integer of 8 bits. can support.
  • the first processor 511 may obtain the first weight set of the kth operator 504 based on identifying that the first data type and the second data type are different.
  • the first processor 511 may quantize the obtained first weight set.
  • the first processor 511 calculates the first weight set based on the distribution of the set of sub-output data.
  • the second weight set can be obtained by performing quantization. For example, if the set of sub-output data has values between -120 and 110, the first weight set of the kth operator is the 8-bit set supported by the accelerator instead of the data type for representing floating point numbers. Being written as a data type expressed as an integer may be advantageous in terms of computational speed and use of accelerators included in electronic devices. Therefore, the first processor 511 can change the data type of the first weight set based on the section of the sub-output data.
  • the first processor 511 calculates the number of second sections having a length smaller than the length of the first section from the first weight set of the first data type for expressing the number of the first sections through quantization. A second weight set of a second data type for expression may be obtained. The first processor 511 may store the quantized second weight set in the memory 501. When performing the neural network model 503, the first processor 511 may obtain output data by performing an operation on the kth operator 504 based on the second weight set.
  • the second data type of the second weight set of the k'th operator 506 obtained through the quantization may be operable by the accelerator. This is because the accelerator supports the second data type.
  • the first processor 511 may perform an operator's calculation for the second weight set in at least one of the accelerators. When two or more neural network models are executed, the first processor 511 can designate an accelerator on which operations of operators included in each model will be performed. Therefore, the computation speed and efficiency of a quantized model may be higher than the computation speed and efficiency of a non-quantized model. Since the input data and output data input to the model by the user are used to evaluate the accuracy of the quantized model, the electronic device 101 can obtain a model personalized to the user based on quantization.
  • the electronic device After obtaining the quantized operator through the operation described above in FIG. 5, the electronic device can measure the reliability of a model including the quantized operator. Based on the result of measuring the reliability, the electronic device may determine whether to replace the existing operator included in the model with the quantized operator. In Figure 6 below, the reliability measurement operation is explained.
  • FIG. 6 is a block diagram illustrating reliability evaluation of a model executed in an electronic device according to an embodiment.
  • model 611 may include a neural network.
  • the model 611 may include at least one operator including a first operator 613.
  • the model 621 can be created by quantizing the model 611. For example, the quantization of model 621 may be obtained from model 611 by the operation described in FIG. 5 .
  • the 'first' operator 623 may be created by quantizing the first operator 613.
  • First output data 615 may be generated by an operation included in the model 611 based on the input data 601.
  • Second output data 625 may be generated by an operation included in the model 621 based on the input data 601.
  • At least one processor (e.g., processor 120 in FIG. 1) generates a quantized model 621 based on the difference between the first output data 615 and the second output data 625. ) can be evaluated. Since the model 621 is created by quantizing the model 611, the reliability of the model 621 can be evaluated in order to replace the model 611 with the model 621.
  • the at least one processor 120 may evaluate reliability by comparing first output data 615 of the model 611 and second output data 625 of the model 621. This may be because when the difference between output data for the same input data is less than the reference value, there is a low possibility that a problem will occur even if the model 621 replaces the model 611.
  • the at least one processor 120 may identify, from the profile information generated by execution of the model 611, a set of first output data 615 obtained by performing an operation for the at least one operator. You can. Since the model 611 has been executed more times than necessary for quantization and/or reliability evaluation, the profile information may include more than a specified number of input data, more than a specified number of sub-output data, and more than a specified number of output data. Therefore, the profile information may include a set of input data, a set of sub-output data, and a set of output data for the model 611.
  • the at least one processor 120 may perform a reliability evaluation on the model 621 based on obtaining the second weight set. For example, the at least one processor 120 may perform a reliability evaluation on the model 621 based on identifying that the creation of the model 621 is complete. According to one embodiment, the at least one processor 120 may identify the set of the first output data 615 obtained by performing an operation for the at least one operator from the profile information. The at least one processor 120 obtains a second set of output data 625 from the set of input data 601 by performing an operation for the at least one operator based on the second weight set. can do. For example, the at least one processor 120 may obtain a set of second output data 625 through an operation on the input data 601 in the model 621.
  • the at least one processor 120 generates a first output data of the model 611 based on a set of difference values between the first output data 615 and the corresponding second output data 625.
  • the first weight set included in the operator 613 can be replaced with the second weight set. This is because when the sets of difference values between the first output data 615 and the second output data 625 are all less than the reference value, there is a low possibility of a problem occurring even if the model 621 replaces the model 611. . For example, if the sets of difference values are about 0.5%, about 0.7%, about 0.5%, about 0.2%, about 0.9%, and the reference value is about 1%, then the model 621 is ) can be replaced.
  • the model 621 may replace the model 611. I can't. For example, if the sets of difference values are about 0.5%, about 0.7%, about 0.5%, about 3.5%, about 0.9%, and the reference value is about 1%, then the model 621 is the model 611. cannot replace .
  • the at least one processor 120 performs quantization again, or Quantization can be performed through the server.
  • the at least one processor 120 when at least one difference value among the set of difference values between the first output data 615 and the second output data 625 is greater than or equal to a reference value, the at least one processor 120, Quantization can be performed again. Since quantization takes time and resources, the time zone in which quantization of the model 611 is performed can be adjusted. For example, the at least one processor 120 may perform quantization of the model 611 during off-peak hours. As an example, quantization of the model 611 may be performed in the middle of the night. For example, based on the amount of mobile phone usage depending on the time of day, quantization may be performed during times when mobile phone usage is low. In the case of students, the times when mobile phone usage is low may be class times.
  • the times when mobile phone usage is low may be business hours.
  • the at least one processor 120 may display a notification on the display to guide the user to select a time zone at which quantization will be performed.
  • the at least one processor 120 may perform quantization at a time designated by the user.
  • Quantization can be performed through the server. Quantization performed in the server is described below in FIG. 8.
  • the second operator includes weight sets of the second data type supported by the accelerator, so quantization may not be performed.
  • a second operator on which quantization is not performed may have the same weight set and bias in the model 621 and the model 611.
  • the model 621 is shown as being stored in memory separately from the model 611, but the embodiment of the present disclosure is not limited thereto.
  • the at least one processor 120 may not store the model 621 itself, but may store the second weight set and bias of the quantized operator in memory.
  • the at least one processor 120 may store the quantized second weight set in the memory together with a hash value of the first weight set.
  • the at least one processor 120 may identify a second weight set based on a hash value of the first weight set.
  • the at least one processor 120 may perform an operation for the first operator 613 based on a second weight set corresponding to a hash value of the first weight set.
  • FIG. 7 illustrates a flow of operations of an electronic device for storing quantized second weight sets according to an embodiment.
  • At least one processor may obtain a first set of weights.
  • a model including a neural network may include a first operator (eg, the first operator 613 in FIG. 6).
  • the first weight set may be weights included in the first operator.
  • the at least one processor 120 identifies a second data type of the accelerator that is different from the first data type of the first operator 613, the absence of quantization information, and / Or it can be identified whether to identify the absence of a quantization model.
  • the at least one processor 120 may perform operation 704. If quantization information is not identified, the at least one processor 120 may perform operation 704.
  • the at least one processor 120 may perform operation 704.
  • the at least one processor 120 may perform operation 703.
  • the at least one processor 120 may perform operation 703.
  • the at least one processor 120 may identify a second data type of the accelerator that is different from the first data type of the first operator (eg, the first operator 613 in FIG. 6).
  • the first data type may represent a 32-bit floating point number.
  • the accelerator can only support a data type expressed as an 8-bit integer and a second data type expressed as a 16-bit integer.
  • the first data type may represent a floating point number expressed using 16 bits.
  • the second data type can represent an integer using 8 bits.
  • the precision and/or range of the second data type is lower than that of the first data type, and the electronic device 101 uses a model based on the second data type. If the calculation of is possible, the quantization function can be performed.
  • the at least one processor 120 may identify the absence of quantization information and/or a quantization model. According to one embodiment, the at least one processor 120 may identify the absence of a quantization model.
  • the quantization model may be a quantized model.
  • the quantized model may be a 'first' operator corresponding to the hash value of the first operator. If there is no other operator corresponding to the hash value of the first operator, the at least one processor 120 may identify the absence of a quantized model.
  • the at least one processor 120 may identify the absence of quantization information.
  • the quantization information may be a value included in the quantized model.
  • the quantization information may be a second weight set and/or bias within the first' operator. In the absence of the second set of weights and/or bias in the first' operator, the at least one processor 120 may identify the absence of quantized information.
  • the at least one processor 120 may perform a first operator operation on the second quantized weight set.
  • the quantized second weight set may be stored in the memory along with a hash value of the first weight set.
  • the at least one processor 120 may identify a second weight set based on a hash value of the first weight set.
  • the at least one processor 120 may perform an operation on the first operator 613 based on a second weight set corresponding to a hash value of the first weight set.
  • the at least one processor 120 may perform a first operator operation with a first set of weights through a quantizer. This is because sub-output data is required for quantization.
  • the first operator operation using the first weight set may take more time than the first operator operation using the quantized second weight set.
  • the at least one processor 120 may collect and store profile information through the quantizer.
  • the profile information may include a set of input data, a set of sub-output data, and a set of output data for the neural network model.
  • the set of input data may be obtained by executing the neural network model.
  • the at least one processor 120 may generate and store second weight sets through the quantizer. According to one embodiment, the at least one processor 120 may obtain the second weight set by performing quantization on the first weight set based on the distribution of the set of sub-output data. For example, the at least one processor 120 may obtain a set of sub-output data by performing an operation for the first operator on a set of input data that is actually used data. Quantization for the first weight of the first operator may be generated based on the section of the sub-output data. As an example, the numeric interval that can be expressed by the first data type for expressing a floating point number may be the first interval. The numeric interval that can be expressed by the second data type for expressing an integer may be the second interval.
  • the first section may range from negative infinity to positive infinity.
  • the second interval may be from -128 to 127 in the case of a data type expressed by 8 bits. In the case of a data type expressed in 16 bits, the second interval may be from -32768 to 32767.
  • the first weight set of the first operator is described as a data type expressed as an 8-bit integer instead of a data type for expressing a floating point number. This can be advantageous in terms of computational speed and use of accelerators. Therefore, the at least one processor 120 may change the data type of the first weight set based on the section of the sub-output data.
  • the at least one processor 120 may store the quantized second weight set in memory. When the neural network model is executed, the at least one processor 120 may obtain output data by performing an operation for the first operator based on the second weight set.
  • Figure 8 shows a flow of operations for executing quantization using a server according to an embodiment.
  • an electronic device eg, the electronic device 101 of FIG. 1 may perform the following operations.
  • At least one processor e.g., processor 120 of FIG. 1 performs quantization by a first set of weights through a quantizer.
  • the first operator can operate.
  • the operation 801 may be performed similarly to the operation 704 of FIG. 7.
  • the at least one processor 120 performs operation 801 when identifying a second data type of the accelerator that is different from the first data type of the first operator or identifying the absence of quantization information and/or the absence of a quantization model. can do.
  • the at least one processor 120 identifies a second data type of the accelerator that is the same as the first data type of the first operator, and when identifying quantization information and a quantization model, the at least one processor 120 determines the first data type for the second quantized weight set. Operations can be performed on operators. Sub-output data may be required for quantization.
  • the at least one processor 120 may collect and store profile information through the quantizer.
  • the profile information may include a set of input data, a set of sub-output data, and a set of output data.
  • the at least one processor 120 may obtain the second weight set by performing quantization on the first weight set based on the distribution of the set of sub-output data.
  • the at least one processor 120 may identify a reliability of the model that is outside a reference range. To perform operation 803, the at least one processor 120 may evaluate the reliability of the quantized model. The reliability of the quantized model may be identified based on whether at least one difference value among a set of difference values between first output data and second output data is greater than or equal to a reference value. First output data may be obtained by performing an operation for at least one operator based on the first weight set. The second output data may be obtained by performing an operation for at least one operator based on the second weight set.
  • the at least one processor 120 when at least one difference value among the set of difference values between the first output data and the second output data is greater than or equal to a reference value, the at least one processor 120 operates on a server (e.g., FIG. 1 Quantization can be performed through the server 108).
  • a server e.g., FIG. 1 Quantization can be performed through the server 108.
  • the at least one processor 120 may transmit sub-output data information.
  • the at least one processor 120 may transmit the sub-output data to the server 108.
  • the at least one processor 120 selects the profile information based on identifying that at least one difference value of the set of difference values between the first output data and the corresponding second output data is greater than or equal to a reference value.
  • the acquired set of sub-output data may be transmitted to the server 108 through the communication circuit.
  • the sub-output data information may be generated through the first operator operation including the first weight set.
  • the server 108 may receive sub-output data information.
  • the sub-output data information may be received from a plurality of electronic devices.
  • the at least one processor 120 may perform quantization through sub-output data information transmitted from a plurality of electronic devices of the same model. Since input data, which is actual data, is not transmitted to the server 108, it may be advantageous in terms of privacy protection compared to the case where input data is transmitted to the server 108. For example, since the input data and output data input to the model by the user are used to evaluate the accuracy of the quantized model, the electronic device 101 may obtain a model personalized to the user based on quantization. You can.
  • the server 108 may aggregate sub-output data information.
  • the at least one processor 120 may stop receiving sub-output data information.
  • the server 108 may generate third weight sets.
  • the server 108 may obtain the third weight set by performing quantization on the first weight set based on the distribution of the set of sub-output data. For example, quantization for the first weight of the first operator may be generated based on the section of the sub-output data.
  • the server 108 expresses the number of third sections having a length smaller than the length of the first section from the first weight set of the first data type for expressing the number of the first section through quantization.
  • a third weight set of the second data type may be obtained. For information about quantization, the information described in operation 706 of FIG. 7 may be referred to.
  • the server 108 may transmit third weight sets. Based on the sub-output data, the server 108 transmits third weight sets of the second data type on which quantization of the first weight set has been performed to the electronic device 101 through the communication circuit. You can. The server 108 may transmit the third weight sets to a plurality of electronic devices that have requested quantization according to execution of the application.
  • the at least one processor 120 may store the received third weight sets.
  • the at least one processor 120 may store the received third weight set in the memory.
  • the at least one processor 120 may obtain output data by performing an operation for the first operator based on the third weight set in a neural network.
  • FIG. 9 illustrates a flow of operations of an electronic device for acquiring a second set of weights through quantization according to an embodiment.
  • the at least one processor 120 may obtain a first set of weights. According to one embodiment, the at least one processor 120 performs operation 901 of FIG. 9 to determine whether the data type of the first weight set is different from the data type supported by the accelerator and whether quantization information is absent. , and/or based on the absence of a quantization model. According to one embodiment, the at least one processor 120 may identify a second data type of the accelerator that is different from the first data type of the operator (eg, the first operator 405 in FIG. 4). The at least one processor 120 may identify the absence of quantization information and/or the absence of a quantization model.
  • the at least one processor 120 determines the first weight set.
  • a first set of weights may be obtained to quantize the set of weights.
  • the precision required for the first data type may be higher than the precision required for the second data type.
  • the first data type may represent a floating point number using 16 bits.
  • the second data type can represent an integer using 8 bits.
  • the data type of the weight set may be different depending on the individual operator. Therefore, whether to quantize an individual operator can be determined based on the data type of the individual operator.
  • the at least one processor 120 may obtain a set of sub-output data from profile information. This is because quantization is performed based on the set of sub-output data.
  • the profile information may include the set of input data, the set of sub-output data, and the set of output data.
  • the at least one processor 120 may obtain a set of sub-output data from a set of input data based on the operation of the first operator.
  • the at least one processor 120 may obtain a set of output data from a set of input data by performing an operation on at least one operator.
  • the at least one processor 120 may obtain a second set of weights based on a set of sub-output data.
  • the at least one processor 120 calculates the first set of weights based on the distribution of the set of sub-output data.
  • the second weight set can be obtained by performing quantization. Quantization for the first weight of the first operator may be generated based on the section of the sub-output data.
  • the numeric interval that can be expressed by the first data type for expressing a floating point number may be the first interval.
  • the numeric interval that can be expressed by the second data type for expressing an integer may be the second interval.
  • the at least one processor 120 determines the number of second sections having a length smaller than the length of the first section from the first weight set of a first data type for expressing the number of the first sections through quantization. A second weight set of a second data type for expressing can be obtained.
  • the at least one processor 120 may store a second set of weights based on obtaining the second set of weights.
  • the at least one processor 120 may perform calculations based on the quantized second weight set when performing a neural network model.
  • the at least one processor 120 may obtain output data by performing an operation for the first operator based on the second weight set.
  • the at least one processor 120 may store the second weight set in the memory along with a hash value of the first weight set.
  • the at least one processor 120 may identify a second weight set based on a hash value of the first weight set.
  • the at least one processor 120 may perform an operation for the first operator based on a second weight set corresponding to a hash value of the first weight set.
  • FIG. 10 illustrates a flow of operations of an electronic device for storing a second set of weights based on reliability evaluation according to an embodiment.
  • the flow of operation of FIG. 10 may embody operation 904 of FIG. 9 .
  • the at least one processor 120 may obtain a set of first output data from profile information. According to one embodiment, the at least one processor 120 may perform a reliability evaluation on a quantized neural network model based on obtaining the second weight set. For example, based on identifying that the generation of the quantized neural network model is complete, a reliability evaluation of the quantized neural network model may be performed. According to one embodiment, the at least one processor 120 may identify a set of first output data obtained by performing an operation for the at least one operator from the profile information.
  • the at least one processor 120 may obtain a second output data set based on a second set of weights.
  • the at least one processor 120 may obtain a second set of output data from the set of input data by performing an operation for the at least one operator based on the second weight set.
  • the at least one processor 120 may obtain a set of second output data through an operation on the input data in the quantized neural network model.
  • the at least one processor 120 replaces the first set of weights with a second set of weights based on the difference values between the first output data and the second output data. You can.
  • the at least one processor 120 is configured to operate the first operator included in the neural network model based on a set of difference values between the first output data and the corresponding second output data.
  • the first weight set can be replaced with the second weight set.
  • the quantized neural network model is It can replace the neural network model.
  • the quantized neural network model cannot replace the neural network model before quantization.
  • the quantized neural network model is There is no replacement for the network model.
  • the at least one processor 120 performs quantization again or performs quantization through a server. can do.
  • FIG. 11 illustrates a flow of operations of an electronic device for identifying a quantization method according to reliability, according to an embodiment.
  • the at least one processor 120 may obtain a first set of weights. According to one embodiment, the at least one processor 120 performs operation 1101 of FIG. 11 to determine whether the data type of the first weight set is different from the data type supported by the accelerator and whether quantization information is absent. , and/or based on the absence of a quantization model. According to one embodiment, the at least one processor 120 may identify a second data type of the accelerator that is different from the first data type of the operator. The at least one processor 120 may identify the absence of quantization information and/or the absence of a quantization model.
  • the at least one processor 120 may obtain a first weight set from profile information in order to quantize the first weight set.
  • the at least one processor 120 may obtain a set of sub-output data from profile information. This is because quantization is performed based on the set of sub-output data. According to one embodiment, the at least one processor 120 may obtain a set of sub-output data from a set of input data based on the operation of the first operator. Operation 1102 may be performed similarly to operation 902 of FIG. 9 . Hereinafter, duplicate descriptions will be omitted.
  • the at least one processor 120 may obtain a second set of weights based on a set of sub-output data.
  • the at least one processor 120 calculates the first set of weights based on the distribution of the set of sub-output data.
  • the second weight set can be obtained by performing quantization. Quantization of the first weight of the first operator may be performed based on the section of the sub-output data. Operation 1103 may be performed similarly to operation 903 of FIG. 9 . Hereinafter, duplicate descriptions will be omitted.
  • the at least one processor 120 may identify whether the reliability is within a reference range. When the reliability is within the reference range, the at least one processor 120 may perform operation 1105. When the reliability is outside the reference range, the at least one processor 120 may perform operation 1106. According to one embodiment, the at least one processor 120 obtains the first information by performing an operation on the at least one operator from profile information generated by executing (or simulating) a neural network model before quantization. A set of output data can be identified. According to one embodiment, the at least one processor 120 may perform a reliability evaluation on the quantized neural network model based on obtaining the second weight set. For example, the at least one processor 120 may perform a reliability evaluation based on identifying that quantization of the neural network model before quantization is complete.
  • the at least one processor 120 may obtain a second set of output data from the set of input data by performing an operation for the at least one operator based on the second weight set.
  • the at least one processor 120 may obtain reliability greater than or equal to a specified criterion for a quantized neural network based on a set of difference values between the first output data and the corresponding second output data. there is. This is because when the sets of difference values between the first output data and the second output data are all less than the reference value, the possibility of a problem occurring is low.
  • the at least one processor 120 obtains reliability greater than a specified standard for the quantized neural network when at least one difference value among the set of difference values between the first output data and the second output data is greater than or equal to a reference value. Can not.
  • the at least one processor 120 may store a second set of weights.
  • the at least one processor 120 when the sets of difference values between the first output data and the corresponding second output data are all less than a reference value, sets the first weight set to the second weight value. It can be replaced as a set. This is because it is advantageous in terms of time resources to perform calculations for the operator based on the second weight set.
  • the at least one processor 120 may transmit a set of sub-output data to a server.
  • the first weight set cannot replace the second weight set.
  • the at least one processor 120 may perform quantization again or may perform quantization through a server.
  • the at least one processor 120 may receive a third quantized weight set from a server. Based on the sub-output data, the server may transmit the third weight sets on which quantization of the first weight set was performed to the electronic device 101 through the communication circuit. The server may transmit the third weight sets to a plurality of electronic devices that have requested quantization according to execution of the application. The at least one processor 120 may store the received third weight set in the memory. When the neural network model is executed, the at least one processor 120 may obtain output data by performing an operation for the first operator based on the third weight set. When executing an operation for the first operator based on the third weight set of the second data type, the operation may be executed based on an accelerator optimized for operations on machine learning, such as an NPU. Calculation speed can be improved and current consumption can be reduced.
  • an accelerator optimized for operations on machine learning such as an NPU. Calculation speed can be improved and current consumption can be reduced.
  • the present disclosure relates to an electronic device and method for quantizing a weight set included in an operator based on the range of sub-output data.
  • the electronic device can improve calculation speed and reduce current consumption by performing quantization for each operator based on the range of sub-output data.
  • reliability evaluation is performed and quantization is performed on the server for models with reliability less than a reference value, thereby reducing resources for performing quantization of various electronic devices.
  • the electronic device 101 may include a memory 130; 501 and at least one processor 120; 200; 511.
  • the at least one processor (120;200;511) in the memory (130;501), operates the first operator (613) included in the first operator (613), which is one of the at least one operator included in the model (503;611).
  • a first set of weights of the data type may be obtained.
  • the at least one processor (120; 200; 511) calculates the operation ( A set of sub-output data corresponding to the set of input data 502 and 601 used for computation can be obtained.
  • the at least one processor (120; 200; 511) performs quantization on the first set of weights based on the set of sub-output data, thereby generating a second weight of a second data type supported by at least one accelerator. You can obtain a set.
  • the at least one processor (120;200;511) may store the second weight set in the memory (130;501) based on obtaining the second weight set.
  • the at least one processor 120; 200; 511) uses a weight set of the first data type for representing a floating point number of the first interval. From the first weight set, through the quantization, the second weight set of the second data type for expressing the number of second sections having a length smaller than the length of the first section can be obtained.
  • the accelerator may include a circuit for performing an operation based on the second data type, either the first data type or the second data type.
  • the accelerator may be configured to perform an operation based on the second data type, either the first data type or the second data type.
  • the at least one processor responds to a request to execute a function associated with the model (503; 611), either the first weight set or the second weight set. , By inputting the second weight set to the accelerator, the calculation of the first operator 613 can be additionally performed.
  • a set of output data 615 can be identified.
  • the at least one processor (120; 200; 511) performs an operation for the at least one operator based on the second set of weights, thereby generating second output data from the set of input data (502; 601). 625) set can be obtained.
  • the at least one processor (120; 200; 511) operates on the model (503) based on a set of difference values between the first output data (615) and the corresponding second output data (625). ;611), the first weight set included in the first operator 613 can be replaced with the second weight set.
  • the electronic device may additionally include a communication circuit.
  • the at least one processor (120; 200; 511) determines that at least one difference value among the set of difference values between the first output data 615 and the corresponding second output data 625 is greater than or equal to a reference value. Based on the identification, the set of sub-output data obtained from the profile information can be additionally transmitted to the server through a communication circuit.
  • the at least one processor (120; 200; 511) based on the sub-output data, sends a third weight set of the second data type on which quantization of the first weight set was performed to a server through the communication circuit. You can receive additional information from.
  • the at least one processor (120;200;511) may additionally store the received third weight set in the memory (130;501).
  • the at least one processor 120; 200; 511
  • the second weight set can be obtained by performing quantization on the weight set.
  • the at least one processor (120;200;511) may additionally store the second weight set in the memory (130;501) along with the hash value of the first weight set.
  • the at least one processor (120; 200; 511) additionally performs an operation on the first operators 613 based on a second weight set corresponding to a hash value of the first weight set. It can be done.
  • the set of sub-output data of the first operator 613 is the input data 502; 601 of a second operator connected to the first operator 613, which is one of the at least one operator. It may be a set of
  • the at least one processor (120; 200; 511) is connected to the accelerator for computation for an operator.
  • the second data type supported by can be identified.
  • the at least one processor (120;200;511) includes a first operator (613) different from the second data type. A first data type of the first weight set may be identified.
  • the at least one processor 120;200;5111, based on identifying the first data type that is different from the second data type, , in the memory 130; 501, to obtain the first weight set of the first data type included in the first operator 613, which is one of at least one operator included in the model 503; 611. You can.
  • the at least one processor (120; 200; 511) is connected to the accelerator for computation for an operator.
  • the second data type supported by can be identified.
  • the at least one processor (120;200;511) includes a first operator (613) different from the second data type. Identifying a first data type of a first weight set, or identifying a data type of a second weight set corresponding to a hash value of the first weight set with the first data type, or identifying a data type of a second weight set corresponding to the hash value of the first weight set. Based on identifying that the corresponding weight set is only the first weight set, in the memory 130; 501, the first operator 613, which is one of at least one operator included in the model 503; 611, The first weight set of the included first data type may be obtained.
  • the at least one processor (120;200;511) selects the second data type supported by the accelerator. can be identified.
  • the at least one processor (120;200;511) includes a first operator (613) different from the second data type. Identifying a first data type of a first weight set and whether a weight set of the second data type obtained from the first weight set based on quantization is stored in the memory or whether weights are included in the weight set Based on this, it can be determined whether to perform quantization on the first weight set of the first data type.
  • the method performed by the electronic device 101 is performed in the memory 130; 501 by one of at least one operator included in the model 503; 611. It may include an operation of acquiring a first weight set of the first data type included in the first operator 613.
  • the method uses input data 502 used for computation of the first operator 613 from profile information generated by execution of the model 503; 611, stored in the memory 130; 501. ;601) may include an operation of acquiring a set of sub-output data corresponding to the set.
  • the method may include, based on the set of sub-output data, obtaining a second weight set of a second data type supported by at least one accelerator by performing quantization on the first weight set. .
  • the method may include storing the second set of weights in the memory (130; 501) based on obtaining the second set of weights.
  • the operation of acquiring the weight set of the second data type includes, through the quantization, the first weight set of the first data type for representing a floating point number of the first interval. It may include obtaining the second weight set of the second data type to represent the number of second sections having a length smaller than the length of the first section.
  • the accelerator may be configured to perform an operation based on the second data type, either the first data type or the second data type.
  • the method is configured to, in response to a request to execute a function associated with the model (503; 611), apply the second set of weights, either the first set of weights or the second set of weights, to the accelerator.
  • the operation of performing the operation of the first operator 613 may be additionally included.
  • the method identifies a set of first output data 615 obtained by performing an operation for the at least one operator from the profile information, based on obtaining the second set of weights.
  • the method may include obtaining a second set of output data (625) from the set of input data (502; 601) by performing an operation on the at least one operator based on the second set of weights. You can.
  • the method is based on a set of difference values between the first output data 615 and the corresponding second output data 625, and the first operator 613 included in the model 503; 611. ) may include replacing the first weight set included in the second weight set with the second weight set.
  • the method is based on identifying that at least one difference value of the set of difference values between the first output data 615 and the corresponding second output data 625 is greater than or equal to a reference value. , It may additionally include an operation of transmitting the set of sub-output data obtained from the profile information to a server through a communication circuit. The method may additionally include receiving, based on the sub-output data, a third weight set of the second data type on which quantization of the first weight set has been performed from a server through the communication circuit. The method may additionally include storing the received third weight set in the memory (130;501).
  • the operation of obtaining the second weight set of the second data type is performed by performing quantization on the first weight set based on the distribution of the set of sub-output data. It may include an operation to obtain.
  • the operation of storing the second weight set together with the hash value of the first weight set in the memory (130; 501) may be additionally included.
  • the method may additionally include performing an operation on the first operators 613 based on a second weight set corresponding to a hash value of the first weight set.
  • the set of sub-output data of the first operator 613 is the input data 502; 601 of a second operator connected to the first operator 613, which is one of the at least one operator. It may be a set of
  • obtaining the first set of weights includes identifying the second data type supported by the accelerator for computation for an operator.
  • the operation of acquiring the first weight set includes identifying a first data type of the first weight set included in the first operator 613 that is different from the second data type.
  • the operation of obtaining the first set of weights generates, in the memory 130;501, a model 503 based on identifying the first data type that is different from the second data type.
  • 611) may include an operation of acquiring the first weight set of the first data type included in the first operator 613, which is one of the at least one operator included in 611).
  • obtaining the first set of weights includes identifying the second data type supported by the accelerator for computation for an operator. may include.
  • the operation of acquiring the first weight set includes identifying a first data type of the first weight set included in the first operator 613 that is different from the second data type. , identifying the data type of the second weight set corresponding to the hash value of the first weight set as the first data type, or the weight set corresponding to the hash value of the first weight set being the first data type.
  • the first data included in the first operator 613 which is one of at least one operator included in the model 503; 611. and obtaining the first weight set of type.
  • obtaining the first set of weights may include identifying the second data type supported by the accelerator.
  • the operation of acquiring the first weight set includes identifying a first data type of the first weight set included in the first operator 613 that is different from the second data type. may include.
  • the operation of acquiring the first weight set may be performed by determining whether the weight set of the second data type obtained from the first weight set based on quantization is stored in the memory or the weight set. The method may include determining whether to perform quantization on the first weight set of the first data type based on whether a weight is included in the set.
  • the operation of acquiring the second weight set of the second data type is by performing quantization on the first weight set based on the section in which the values of the set of sub-output data are distributed. It may include an operation of obtaining the second weight set.
  • the operation of acquiring the second weight set of the second data type includes the electronic device using the size of the section in which the values of the sub-output data set are distributed to determine the second data. It may include determining a quantization level for a type and performing quantization on the first weight set according to the quantization level.
  • the range of numbers that can be expressed according to the second data type and the quantization level may include a section of the sub-output data set.
  • the one or more programs are stored in the memory (130; 501) when executed by a processor of an electronic device.
  • the one or more programs are input used for computation of the first operator 613 from profile information generated by execution of the model 503; 611, stored in the memory 130; 501. and instructions causing the electronic device to obtain a set of sub-output data corresponding to the set of data 502;601.
  • the one or more programs based on the set of sub-output data, perform quantization on the first set of weights to obtain a second set of weights of a second data type supported by at least one accelerator. It may contain instructions that cause .
  • the one or more programs may include instructions that cause the electronic device to store the second set of weights in the memory (130; 501) based on obtaining the second set of weights.
  • the one or more programs when executed by a processor of an electronic device, include a weight set of the second data type.
  • the at least one processor 120; 200; 511
  • the quantization from the first weight set of the first data type for representing the floating point number of the first interval, and instructions that cause the electronic device to obtain the second weight set of the second data type to represent the number of second intervals having a length less than the length of one interval.
  • the accelerator stores the first data.
  • type or the second data type may include instructions that cause the electronic device to perform an operation based on the second data type.
  • a computer readable storage medium storing one or more programs
  • the one or more programs when executed by a processor of an electronic device, display the model (503; 611) and In response to a request to execute a related function, perform an operation of the first operator 613 by inputting the second set of weights, out of the first set of weights or the second set of weights, to the accelerator. It may contain instructions that trigger an electronic device.
  • a computer readable storage medium storing one or more programs
  • the one or more programs when executed by a processor of an electronic device, obtain the second set of weights. Based on this, identify a set of first output data 615 obtained by performing an operation for the at least one operator from the profile information, and perform an operation for the at least one operator based on the second set of weights.
  • a computer readable storage medium storing one or more programs
  • the first output data 615 and the set of sub-output data obtained from the profile information based on identifying that at least one difference value of the set of difference values between the corresponding second output data 625 is greater than or equal to a reference value.
  • a computer readable storage medium storing one or more programs
  • the first data type of the second data type instructions that cause the electronic device to obtain the second set of weights by performing quantization on the first set of weights, based on a distribution of the set of sub-output data, to obtain a set of two weights.
  • the one or more programs when executed by a processor of an electronic device, include a hash value of the first weight set. together with instructions that cause the electronic device to store the second set of weights in the memory (130;501).
  • the one or more programs when executed by a processor of an electronic device, include a hash value of the first weight set. may include instructions that cause the electronic device to perform an operation for first operators 613 based on a second set of weights corresponding to .
  • a computer readable storage medium storing one or more programs, wherein the set of sub-output data of the first operator (613) is one of the at least one operator, It may be a set of input data (502; 601) of a second operator connected to the first operator (613).
  • the one or more programs are stored in the memory (130; 501) when executed by a processor of an electronic device. , to obtain the first set of weights, identify the second data type supported by the accelerator, and determine the first weight set included in the first operator 613 that is different from the second data type. Whether a data type has been identified, whether a weight set of the second data type obtained from the first weight set based on quantization is stored in the memory, or whether weights are included in the weight set of the second data type and instructions that cause the electronic device to determine whether to perform quantization on the first weight set of the first data type.
  • the electronic device 101 may include a memory 130; 501 that stores instructions, and at least one processor 120; 200; 511.
  • the electronic device 101 executes at least one processor included in the model 503; 611.
  • the instructions when executed by the at least one processor 120; 200; 511, cause the electronic device 101 to use a first data type to obtain a weight set of the second data type. From the first weight set of the first data type for expressing the floating point number of the interval, through the quantization, the second weight set for expressing the number of the second interval having a length smaller than the length of the first interval Obtaining the second weight set of data types.
  • the instructions when executed by the at least one processor (120; 200; 511), request the electronic device 101 to execute a function related to the model (503; 611).
  • the second weight set may be input to the accelerator, thereby causing the first operator 613 to perform an operation.
  • the electronic device 101 when the instructions are executed by the at least one processor 120; 200; 511, the electronic device 101 generates the profile information based on obtaining the second weight set. Identifying a set of first output data 615 obtained by performing an operation on the at least one operator from, and performing an operation on the at least one operator based on the second set of weights, the input data Obtain a set of second output data 625 from the set of (502; 601), and a set of difference values between the first output data 615 and the corresponding second output data 625. Based on this, the first weight set included in the first operator 613 included in the model 503 (611) may be caused to be replaced with the second weight set.
  • the electronic device 101 may include a communication circuit.
  • the instructions when executed by the at least one processor 120; 200; 511, cause the electronic device 101 to output information between the first output data 615 and the corresponding second output data 625. Based on identifying that at least one difference value among the set of difference values is greater than or equal to a reference value, transmitting the set of sub-output data obtained from the profile information to a server through the communication circuit, and based on the sub-output data Thus, a third weight set of the second data type on which quantization of the first weight set has been performed is received from the server through the communication circuit, and the received third weight set is stored in the memory 130; 501. It can cause it to be saved in .
  • the instructions when executed by the at least one processor 120; 200; 511, cause the electronic device 101 to obtain the second weight set of the second data type. , based on the distribution of the set of sub-output data, may cause the second weight set to be obtained by performing quantization on the first weight set.
  • the instructions when executed by the at least one processor (120; 200; 511), cause the electronic device 101 to store the second weight together with the hash value of the first weight set. This may cause the set to be stored in the memory (130; 501).
  • the electronic device 101 when the instructions are executed by the at least one processor 120; 200; 511, the electronic device 101 generates a second weight set corresponding to a hash value of the first weight set. It can cause the first operators 613 to perform operations based on .
  • the instructions when executed by the at least one processor 120; 200; 511, are supported by the electronic device 101 by the accelerator to obtain the first set of weights. Identifying the second data type, and identifying the first data type of the first weight set included in the first operator 613 that is different from the second data type, the first weight set based on quantization Based on whether a weight set of the second data type obtained from is stored in the memory (130; 501), or whether a weight is included in the weight set of the second data type, the first data type may result in determining whether to perform quantization on the first set of weights.
  • the instructions when executed by the at least one processor, cause the electronic device to set values of the set of sub-output data to obtain the second weight set of the second data type. Based on the distributed interval, quantization may be performed on the first weight set to obtain the second weight set.
  • the electronic device when the instructions are executed by the at least one processor, distributes values of the sub-output data set to obtain the second weight set of the second data type. Using the size of the section, a quantization level for the second data type can be determined, and quantization on the first weight set can be performed according to the quantization level.
  • the range of numbers that can be expressed according to the second data type and the quantization level may include a section of the sub-output data set.
  • a computer-readable storage medium that stores one or more programs (software modules) may be provided.
  • One or more programs stored in a computer-readable storage medium are configured for execution by one or more processors in an electronic device.
  • One or more programs include instructions that cause the electronic device to execute methods according to embodiments described in the claims or specification of the present disclosure.
  • the one or more programs may be included and provided in a computer program product.
  • Computer program products are commodities and can be traded between sellers and buyers.
  • the computer program product may be distributed in the form of a machine-readable storage medium (e.g. compact disc read only memory (CD-ROM)) or through an application store (e.g. Play StoreTM) or on two user devices (e.g. It can be distributed (e.g.
  • At least a portion of the computer program product may be at least temporarily stored or temporarily created in a machine-readable storage medium, such as the memory of a manufacturer's server, an application store's server, or a relay server.
  • These programs may include random access memory, non-volatile memory, including flash memory, read only memory (ROM), and electrically erasable programmable ROM. (electrically erasable programmable read only memory, EEPROM), magnetic disc storage device, compact disc-ROM (CD-ROM), digital versatile discs (DVDs), or other types of disk storage. It can be stored in an optical storage device or magnetic cassette. Alternatively, it may be stored in a memory consisting of a combination of some or all of these. Additionally, multiple configuration memories may be included.
  • non-volatile memory including flash memory, read only memory (ROM), and electrically erasable programmable ROM. (electrically erasable programmable read only memory, EEPROM), magnetic disc storage device, compact disc-ROM (CD-ROM), digital versatile discs (DVDs), or other types of disk storage. It can be stored in an optical storage device or magnetic cassette. Alternatively, it may be stored in a memory consisting of a combination of some or all of these. Additionally, multiple configuration memories may
  • the program may be distributed through a communication network such as the Internet, an intranet, a local area network (LAN), a wide area network (WAN), or a storage area network (SAN), or a combination thereof. It may be stored on an attachable storage device that is accessible. This storage device can be connected to a device performing an embodiment of the present disclosure through an external port. Additionally, a separate storage device on a communications network may be connected to the device performing embodiments of the present disclosure.
  • a communication network such as the Internet, an intranet, a local area network (LAN), a wide area network (WAN), or a storage area network (SAN), or a combination thereof. It may be stored on an attachable storage device that is accessible. This storage device can be connected to a device performing an embodiment of the present disclosure through an external port. Additionally, a separate storage device on a communications network may be connected to the device performing embodiments of the present disclosure.
  • one or more of the components or operations described above may be omitted, or one or more other components or operations may be added.
  • multiple components eg, modules or programs
  • the integrated component may perform one or more functions of each component of the plurality of components identically or similarly to those performed by the corresponding component of the plurality of components prior to the integration.
  • operations performed by a module, program, or other component may be executed sequentially, in parallel, iteratively, or heuristically, or one or more of the operations may be executed in a different order, omitted, or , or one or more other operations may be added.

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)
  • Image Analysis (AREA)

Abstract

According to one embodiment, an electronic device may comprise a memory and at least one processor. The at least one processor can obtain, from the memory, a first weight set of a first data type included in a first operator, which is one of at least one operator included in the model. The at least one processor can obtain a set of sub-output data corresponding to a set of input data used for computation of the first operator from profile information stored in the memory and generated by execution of the model. The at least one processor can obtain a second weight set of a second data type supported by at least one accelerator by performing quantization on the first weight set on the basis of the set of sub-output data. The at least one processor can store the second weight set in the memory on the basis of obtaining the second weight set. Various other embodiments are possible.

Description

모델의 연산과 관련된 오퍼레이터의 양자화를 위한 전자 장치 및 방법Electronic device and method for quantization of operators involved in the calculation of a model
아래의 설명들은 모델의 연산과 관련된 오퍼레이터의 양자화를 위한 전자 장치 및 방법에 관한 것이다. The descriptions below relate to electronic devices and methods for quantization of operators related to model operations.
최근 인공 지능 기술(artificial intelligence; AI)을 접목한 어플리케이션들이 개발되고 있다. 어플리케이션은 요구되는 정밀도(precision)에 따라 다양한 데이터 타입의 가중치를 이용할 수 있다. 높은 정밀도(precision)에 대응하는 데이터 타입의 가중치를 이용한 어플리케이션을 낮은 정밀도에 대응하는 데이터 타입을 지원하는 가속기에서 연산하도록 하는 방식이 연구되고 있다. Recently, applications incorporating artificial intelligence (AI) technology are being developed. Applications can use weights of various data types depending on the required precision. A method of allowing applications using the weights of data types corresponding to high precision to be calculated in an accelerator that supports data types corresponding to low precision is being studied.
상술한 정보는 본 개시에 대한 이해를 돕기 위한 목적으로 하는 배경 기술(related art)로 제공될 수 있다. 상술한 내용 중 어느 것도 본 개시와 관련된 종래 기술(prior art)로서 적용될 수 있는지에 대하여 어떠한 주장이나 결정이 제기되지 않는다.The above information may be provided as background art for the purpose of aiding understanding of the present disclosure. No claim or determination is made as to whether any of the foregoing can be applied as prior art to the present disclosure.
일 실시예에 따르면, 전자 장치(electronic device)는 메모리, 및 적어도 하나의 프로세서를 포함할 수 있다. 상기 적어도 하나의 프로세서는, 상기 메모리에서, 모델에 포함된 적어도 하나의 오퍼레이터 중 하나인 제1 오퍼레이터에 포함된 제1 데이터 타입의 제1 가중치 세트를 획득할 수 있다. 상기 적어도 하나의 프로세서는, 상기 메모리에 저장된, 상기 모델의 실행에 의해 생성된 프로파일 정보로부터, 상기 제1 오퍼레이터의 연산(computation)을 위해 이용된 입력 데이터의 세트에 대응하는 서브 출력 데이터의 세트를 획득할 수 있다. 상기 적어도 하나의 프로세서는, 상기 서브 출력 데이터의 세트에 기반하여, 상기 제1 가중치 세트에 대한 양자화를 수행함으로써 적어도 하나의 가속기에 의해 지원되는 제2 데이터 타입의 제2 가중치 세트를 획득할 수 있다. 상기 적어도 하나의 프로세서는, 상기 제2 가중치 세트를 획득하는 것에 기반하여, 상기 메모리에 상기 제2 가중치 세트를 저장할 수 있다. According to one embodiment, an electronic device may include memory and at least one processor. The at least one processor may obtain, from the memory, a first weight set of a first data type included in a first operator, which is one of at least one operator included in the model. The at least one processor generates a set of sub-output data corresponding to a set of input data used for computation of the first operator from profile information stored in the memory and generated by execution of the model. It can be obtained. The at least one processor may obtain a second weight set of a second data type supported by at least one accelerator by performing quantization on the first weight set based on the set of sub-output data. . The at least one processor may store the second weight set in the memory based on obtaining the second weight set.
일 실시예에 따르면, 전자 장치(electronic device)에 의해 수행되는 방법은 메모리에서, 모델에 포함된 적어도 하나의 오퍼레이터 중 하나인 제1 오퍼레이터에 포함된 제1 데이터 타입의 제1 가중치 세트를 획득하는 동작을 포함할 수 있다. 상기 방법은 상기 메모리에 저장된, 상기 모델의 실행에 의해 생성된 프로파일 정보로부터, 상기 제1 오퍼레이터의 연산(computation)을 위해 이용된 입력 데이터의 세트에 대응하는 서브 출력 데이터의 세트를 획득하는 동작을 포함할 수 있다. 상기 방법은 상기 서브 출력 데이터의 세트에 기반하여, 상기 제1 가중치 세트에 대한 양자화를 수행함으로써 적어도 하나의 가속기에 의해 지원되는 제2 데이터 타입의 제2 가중치 세트를 획득하는 동작을 포함할 수 있다. 상기 방법은 상기 제2 가중치 세트를 획득하는 것에 기반하여, 상기 메모리에 상기 제2 가중치 세트를 저장하는 동작을 포함할 수 있다. According to one embodiment, a method performed by an electronic device includes obtaining, in a memory, a first set of weights of a first data type included in a first operator, one of at least one operator included in the model. Can include actions. The method includes an operation of obtaining a set of sub-output data corresponding to a set of input data used for computation of the first operator from profile information stored in the memory and generated by execution of the model. It can be included. The method may include, based on the set of sub-output data, obtaining a second weight set of a second data type supported by at least one accelerator by performing quantization on the first weight set. . The method may include storing the second set of weights in the memory based on obtaining the second set of weights.
일 실시예에 따르면, 하나 이상의 프로그램들을 저장하는 컴퓨터 판독가능 저장 매체(computer readable storage medium)에 있어서, 상기 하나 이상의 프로그램들은, 전자 장치의 프로세서에 의해 실행될 시에, 메모리에서, 모델에 포함된 적어도 하나의 오퍼레이터 중 하나인 제1 오퍼레이터에 포함된 제1 데이터 타입의 제1 가중치 세트를 획득하도록 상기 전자 장치를 야기하는 인스트럭션들을 포함할 수 있다. 상기 적어도 하나 이상의 프로그램들은 상기 메모리에 저장된, 상기 모델의 실행에 의해 생성된 프로파일 정보로부터, 상기 제1 오퍼레이터의 연산(computation)을 위해 이용된 입력 데이터의 세트에 대응하는 서브 출력 데이터의 세트를 획득하도록 상기 전자 장치를 야기하는 인스트럭션들을 포함할 수 있다. 상기 적어도 하나 이상의 프로그램들은 상기 서브 출력 데이터의 세트에 기반하여, 상기 제1 가중치 세트에 대한 양자화를 수행함으로써 적어도 하나의 가속기에 의해 지원되는 제2 데이터 타입의 제2 가중치 세트를 획득하도록 상기 전자 장치를 야기하는 인스트럭션들을 포함할 수 있다. 상기 적어도 하나 이상의 프로그램들은 상기 제2 가중치 세트를 획득하는 것에 기반하여, 상기 메모리에 상기 제2 가중치 세트를 저장하도록 상기 전자 장치를 야기하는 인스트럭션들을 포함할 수 있다. According to one embodiment, in a computer readable storage medium storing one or more programs, the one or more programs, when executed by a processor of an electronic device, are stored in memory, at least one of the programs included in the model. and instructions causing the electronic device to obtain a first set of weights of a first data type included in a first operator, one of the operators. The at least one program obtains a set of sub-output data corresponding to a set of input data used for computation of the first operator from profile information stored in the memory and generated by execution of the model. It may include instructions that cause the electronic device to do so. The electronic device allows the at least one program to obtain a second weight set of a second data type supported by at least one accelerator by performing quantization on the first weight set based on the set of sub-output data. It may contain instructions that cause . The at least one or more programs may include instructions that cause the electronic device to store the second set of weights in the memory based on obtaining the second set of weights.
일 실시예에 따르면, 하나 이상의 프로그램들을 저장하는 컴퓨터 판독가능 저장 매체(computer readable storage medium)에 있어서, 상기 하나 이상의 프로그램들은, 전자 장치의 프로세서에 의해 실행될 시에, 상기 메모리에서, 모델에 포함된 적어도 하나의 오퍼레이터 중 하나인 제1 오퍼레이터에 포함된 제1 데이터 타입의 제1 가중치 세트를 획득하도록 상기 전자 장치를 야기하는 인스트럭션들을 포함할 수 있다. 상기 하나 이상의 프로그램들은, 상기 메모리에 저장된, 상기 모델의 실행에 의해 생성된 프로파일 정보로부터, 상기 제1 오퍼레이터의 연산(computation)을 위해 이용된 입력 데이터의 세트에 대응하는 서브 출력 데이터의 세트를 획득하도록 상기 전자 장치를 야기하는 인스트럭션들을 포함할 수 있다. 상기 하나 이상의 프로그램들은, 상기 서브 출력 데이터의 세트에 기반하여, 상기 제1 가중치 세트에 대한 양자화를 수행함으로써 적어도 하나의 가속기에 의해 지원되는 제2 데이터 타입의 제2 가중치 세트를 획득하도록 상기 전자 장치를 야기하는 인스트럭션들을 포함할 수 있다. 상기 하나 이상의 프로그램들은, 상기 제2 가중치 세트를 획득하는 것에 기반하여, 상기 메모리에 상기 제2 가중치 세트를 저장하도록, 상기 전자 장치를 야기하는 인스트럭션들을 포함할 수 있다. According to one embodiment, in a computer readable storage medium storing one or more programs, the one or more programs are included in the model in the memory when executed by a processor of an electronic device. and instructions that cause the electronic device to obtain a first set of weights of a first data type included in a first operator, one of at least one operator. The one or more programs obtain, from profile information generated by execution of the model and stored in the memory, a set of sub-output data corresponding to a set of input data used for computation of the first operator. It may include instructions that cause the electronic device to do so. The one or more programs, based on the set of sub-output data, perform quantization on the first set of weights to obtain a second set of weights of a second data type supported by at least one accelerator. It may contain instructions that cause . The one or more programs may include instructions that cause the electronic device to store the second set of weights in the memory based on obtaining the second set of weights.
상술한 바와 같이, 일 실시예에 따르면, 전자 장치(electronic device)는 인스트럭션들을 저장하는 메모리, 및 적어도 하나의 프로세서를 포함할 수 있다. 상기 인스트럭션들은, 상기 적어도 하나의 프로세서에 의해 실행될 때, 상기 전자 장치가, 상기 메모리에서, 모델에 포함된 적어도 하나의 오퍼레이터 중 하나인 제1 오퍼레이터에 포함된 제1 데이터 타입의 제1 가중치 세트를 획득하고, 상기 메모리에 저장된, 상기 모델의 실행에 의해 생성된 프로파일 정보로부터, 상기 제1 오퍼레이터의 연산(computation)을 위해 이용된 입력 데이터의 세트에 대응하는 서브 출력 데이터의 세트를 획득하고, 상기 서브 출력 데이터의 세트에 기반하여, 상기 제1 가중치 세트에 대한 양자화를 수행함으로써 적어도 하나의 가속기에 의해 지원되는 제2 데이터 타입의 제2 가중치 세트를 획득하고, 상기 제2 가중치 세트를 획득하는 것에 기반하여, 상기 메모리에 상기 제2 가중치 세트를 저장하도록, 야기할 수 있다.As described above, according to one embodiment, an electronic device may include a memory that stores instructions, and at least one processor. The instructions, when executed by the at least one processor, cause the electronic device to generate, in the memory, a first set of weights of a first data type included in a first operator that is one of at least one operator included in the model. Obtain, from profile information generated by execution of the model and stored in the memory, a set of sub-output data corresponding to a set of input data used for computation of the first operator, Based on the set of sub-output data, performing quantization on the first weight set to obtain a second weight set of a second data type supported by at least one accelerator, obtaining the second weight set Based on this, it may cause the second weight set to be stored in the memory.
도 1은 실시예들에 따른, 네트워크 환경 내의 전자 장치의 블록도이다.1 is a block diagram of an electronic device in a network environment, according to embodiments.
도 2는 일 실시예에 따른 전자 장치에 포함된 하나 이상의 프로세서들을 설명하기 위한 블록도이다.FIG. 2 is a block diagram illustrating one or more processors included in an electronic device according to an embodiment.
도 3은 일 실시예에 따른 전자 장치에서 실행되는 뉴럴 네트워크를 설명하기 위한 예시적인 도면이다.FIG. 3 is an exemplary diagram illustrating a neural network running on an electronic device according to an embodiment.
도 4는 일 실시예에 따른 가중치에 대한 양자화를 설명하기 위한 예시적인 도면이다. Figure 4 is an example diagram for explaining quantization of weights according to an embodiment.
도 5는 일 실시예에 따른 전자 장치에 포함된 메모리의 동작을 설명하기 위한 블록도이다.Figure 5 is a block diagram for explaining the operation of a memory included in an electronic device according to an embodiment.
도 6은 일 실시예에 따른 전자 장치에서 실행되는 모델의 신뢰도 평가를 설명하기 위한 블록도이다.FIG. 6 is a block diagram illustrating reliability evaluation of a model executed in an electronic device according to an embodiment.
도 7은 일 실시예에 따른 양자화 된 제2 가중치 세트들을 저장하기 위한 전자 장치의 동작의 흐름을 도시한다.FIG. 7 illustrates a flow of operations of an electronic device for storing quantized second weight sets according to an embodiment.
도 8은 일 실시예에 따른 서버를 이용하여 양자화를 실행하는 동작의 흐름을 도시한다. Figure 8 shows a flow of operations for executing quantization using a server according to an embodiment.
도 9는 일 실시예에 따른 양자화를 통해 제2 가중치 세트를 획득하기 위한 전자 장치의 동작의 흐름을 도시한다.FIG. 9 illustrates a flow of operations of an electronic device for acquiring a second set of weights through quantization according to an embodiment.
도 10은 일 실시예에 따른 신뢰도 평가에 기반하여 제2 가중치 세트를 저장하기 위한 전자 장치의 동작의 흐름을 도시한다.FIG. 10 illustrates a flow of operations of an electronic device for storing a second set of weights based on reliability evaluation according to an embodiment.
도 11은 일 실시예에 따른, 신뢰도에 따라 양자화 방식을 식별하기 위한 전자 장치의 동작의 흐름을 도시한다. FIG. 11 illustrates a flow of operations of an electronic device for identifying a quantization method according to reliability, according to an embodiment.
본 개시에서 사용되는 용어들은 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 다른 실시예의 범위를 한정하려는 의도가 아닐 수 있다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함할 수 있다. 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 용어들은 본 개시에 기재된 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가질 수 있다. 본 개시에 사용된 용어들 중 일반적인 사전에 정의된 용어들은, 관련 기술의 문맥상 가지는 의미와 동일 또는 유사한 의미로 해석될 수 있으며, 본 개시에서 명백하게 정의되지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다. 경우에 따라서, 본 개시에서 정의된 용어일지라도 본 개시의 실시예들을 배제하도록 해석될 수 없다.Terms used in the present disclosure are merely used to describe specific embodiments and may not be intended to limit the scope of other embodiments. Singular expressions may include plural expressions, unless the context clearly dictates otherwise. Terms used herein, including technical or scientific terms, may have the same meaning as commonly understood by a person of ordinary skill in the technical field described in this disclosure. Among the terms used in this disclosure, terms defined in general dictionaries may be interpreted to have the same or similar meaning as the meaning they have in the context of related technology, and unless clearly defined in this disclosure, have an ideal or excessively formal meaning. It is not interpreted as In some cases, even terms defined in the present disclosure cannot be interpreted to exclude embodiments of the present disclosure.
이하에서 설명되는 본 개시의 다양한 실시예들에서는 하드웨어적인 접근 방법을 예시로서 설명한다. 하지만, 본 개시의 다양한 실시예들에서는 하드웨어와 소프트웨어를 모두 사용하는 기술을 포함하고 있으므로, 본 개시의 다양한 실시예들이 소프트웨어 기반의 접근 방법을 제외하는 것은 아니다.In various embodiments of the present disclosure described below, a hardware approach method is explained as an example. However, since various embodiments of the present disclosure include technology using both hardware and software, the various embodiments of the present disclosure do not exclude software-based approaches.
이하 설명에서 사용되는 신호를 지칭하는 용어(예: 신호, 정보, 메시지, 시그널링), 연산 상태를 위한 용어(예: 단계(step), 동작(operation), 절차(procedure)), 데이터를 지칭하는 용어(예: 패킷, 사용자 스트림, 정보(information), 비트(bit), 심볼(symbol), 코드워드(codeword)), 인공 지능(artificial intelligence; AI)을 지칭하는 용어(예: 뉴럴 네트워크(neural network), 인공 신경망(artificial neural network), 뉴럴 네트워크 모델(neural network model), 모델(model)), 가중치(weight)(예: 웨이트)를 지칭하는 용어, 프로파일 정보를 지칭하는 용어, 오퍼레이터(operator)를 지칭하는 용어(예: 레이어(layer)), 네트워크 객체(network entity)들을 지칭하는 용어, 장치의 구성 요소를 지칭하는 용어 등은 설명의 편의를 위해 예시된 것이다. 따라서, 본 개시가 후술되는 용어들에 한정되는 것은 아니며, 동등한 기술적 의미를 가지는 다른 용어가 사용될 수 있다.Terms used in the following description refer to signals (e.g., signal, information, message, signaling), terms for operational states (e.g., step, operation, procedure), and terms that refer to data. Terms referring to artificial intelligence (AI) (e.g. packet, user stream, information, bit, symbol, codeword), terms referring to artificial intelligence (AI) (e.g. neural network) network, artificial neural network, neural network model, model, term referring to weight (e.g. weight), term referring to profile information, operator ) (e.g., layer), terms referring to network entities, terms referring to components of a device, etc. are exemplified for convenience of explanation. Accordingly, the present disclosure is not limited to the terms described below, and other terms having equivalent technical meaning may be used.
또한, 이하 사용되는 '...부', '...기', '...물', '...체' 등의 용어는 적어도 하나의 형상 구조를 의미하거나 또는 기능을 처리하는 단위를 의미할 수 있다.In addition, terms such as '... part', '... base', '... water', and '... body' used hereinafter mean at least one shape structure or a unit that processes a function. It can mean.
또한, 본 개시에서, 특정 조건의 만족(satisfied), 충족(fulfilled) 여부를 판단하기 위해, 초과 또는 미만의 표현이 사용될 수 있으나, 이는 일 예를 표현하기 위한 기재일 뿐 이상 또는 이하의 기재를 배제하는 것이 아니다. '이상'으로 기재된 조건은 '초과', '이하'로 기재된 조건은 '미만', '이상 및 미만'으로 기재된 조건은 '초과 및 이하'로 대체될 수 있다. 또한, 이하, 'A' 내지 'B'는 A부터(A 포함) B까지의(B 포함) 요소들 중 적어도 하나를 의미한다. 이하, 'C' 및/또는 'D'는 'C' 또는 'D' 중 적어도 하나, 예를 들어, {'C', 'D', 'C'와 'D'}를 포함하는 것을 의미한다.In addition, in the present disclosure, the expressions greater than or less than may be used to determine whether a specific condition is satisfied or fulfilled, but this is only a description for expressing an example, and the description of more or less may be used. It's not exclusion. Conditions written as ‘more than’ can be replaced with ‘more than’, conditions written as ‘less than’ can be replaced with ‘less than’, and conditions written as ‘more than and less than’ can be replaced with ‘greater than and less than’. In addition, hereinafter, 'A' to 'B' means at least one of the elements from A to (including A) and B (including B). Hereinafter, 'C' and/or 'D' means including at least one of 'C' or 'D', for example {'C', 'D', 'C' and 'D'} .
도 1은, 다양한 실시예들에 따른, 네트워크 환경(100) 내의 전자 장치(101)의 블록도이다. 1 is a block diagram of an electronic device 101 in a network environment 100, according to various embodiments.
도 1을 참조하면, 네트워크 환경(100)에서 전자 장치(101)는 제1 네트워크(198)(예: 근거리 무선 통신 네트워크)를 통하여 전자 장치(102)와 통신하거나, 또는 제2 네트워크(199)(예: 원거리 무선 통신 네트워크)를 통하여 전자 장치(104) 또는 서버(108) 중 적어도 하나 와 통신할 수 있다. 일 실시예에 따르면, 전자 장치(101)는 서버(108)를 통하여 전자 장치(104)와 통신할 수 있다. 일 실시예에 따르면, 전자 장치(101)는 프로세서(120), 메모리(130), 입력 모듈(150), 음향 출력 모듈(155), 디스플레이 모듈(160), 오디오 모듈(170), 센서 모듈(176), 인터페이스(177), 연결 단자(178), 햅틱 모듈(179), 카메라 모듈(180), 전력 관리 모듈(188), 배터리(189), 통신 모듈(190), 가입자 식별 모듈(196), 또는 안테나 모듈(197)을 포함할 수 있다. 어떤 실시예에서는, 전자 장치(101)에는, 이 구성요소들 중 적어도 하나(예: 연결 단자(178))가 생략되거나, 하나 이상의 다른 구성요소가 추가될 수 있다. 어떤 실시예에서는, 이 구성요소들 중 일부들(예: 센서 모듈(176), 카메라 모듈(180), 또는 안테나 모듈(197))은 하나의 구성요소(예: 디스플레이 모듈(160))로 통합될 수 있다.Referring to FIG. 1, in the network environment 100, the electronic device 101 communicates with the electronic device 102 through a first network 198 (e.g., a short-range wireless communication network) or a second network 199. It is possible to communicate with at least one of the electronic device 104 or the server 108 through (e.g., a long-distance wireless communication network). According to one embodiment, the electronic device 101 may communicate with the electronic device 104 through the server 108. According to one embodiment, the electronic device 101 includes a processor 120, a memory 130, an input module 150, an audio output module 155, a display module 160, an audio module 170, and a sensor module ( 176), interface 177, connection terminal 178, haptic module 179, camera module 180, power management module 188, battery 189, communication module 190, subscriber identification module 196 , or may include an antenna module 197. In some embodiments, at least one of these components (eg, the connection terminal 178) may be omitted or one or more other components may be added to the electronic device 101. In some embodiments, some of these components (e.g., sensor module 176, camera module 180, or antenna module 197) are integrated into one component (e.g., display module 160). It can be.
프로세서(120)는, 예를 들어, 소프트웨어(예: 프로그램(140))를 실행하여 프로세서(120)에 연결된 전자 장치(101)의 적어도 하나의 다른 구성요소(예: 하드웨어 또는 소프트웨어 구성요소)를 제어할 수 있고, 다양한 데이터 처리 또는 연산을 수행할 수 있다. 일 실시예에 따르면, 데이터 처리 또는 연산의 적어도 일부로서, 프로세서(120)는 다른 구성요소(예: 센서 모듈(176) 또는 통신 모듈(190))로부터 수신된 명령 또는 데이터를 휘발성 메모리(132)에 저장하고, 휘발성 메모리(132)에 저장된 명령 또는 데이터를 처리하고, 결과 데이터를 비휘발성 메모리(134)에 저장할 수 있다. 일 실시예에 따르면, 프로세서(120)는 메인 프로세서(121)(예: 중앙 처리 장치 또는 어플리케이션 프로세서) 또는 이와는 독립적으로 또는 함께 운영 가능한 보조 프로세서(123)(예: 그래픽 처리 장치, 신경망 처리 장치(NPU: neural processing unit), 이미지 시그널 프로세서, 센서 허브 프로세서, 또는 커뮤니케이션 프로세서)를 포함할 수 있다. 예를 들어, 전자 장치(101)가 메인 프로세서(121) 및 보조 프로세서(123)를 포함하는 경우, 보조 프로세서(123)는 메인 프로세서(121)보다 저전력을 사용하거나, 지정된 기능에 특화되도록 설정될 수 있다. 보조 프로세서(123)는 메인 프로세서(121)와 별개로, 또는 그 일부로서 구현될 수 있다.Processor 120 may, for example, execute software (e.g., program 140) to operate at least one other component (e.g., hardware or software component) of electronic device 101 connected to processor 120. It can be controlled and various data processing or operations can be performed. According to one embodiment, as at least part of data processing or computation, the processor 120 stores commands or data received from another component (e.g., sensor module 176 or communication module 190) in volatile memory 132. The commands or data stored in the volatile memory 132 can be processed, and the resulting data can be stored in the non-volatile memory 134. According to one embodiment, the processor 120 includes a main processor 121 (e.g., a central processing unit or an application processor) or an auxiliary processor 123 that can operate independently or together (e.g., a graphics processing unit, a neural network processing unit ( It may include a neural processing unit (NPU), an image signal processor, a sensor hub processor, or a communication processor). For example, if the electronic device 101 includes a main processor 121 and a auxiliary processor 123, the auxiliary processor 123 may be set to use lower power than the main processor 121 or be specialized for a designated function. You can. The auxiliary processor 123 may be implemented separately from the main processor 121 or as part of it.
보조 프로세서(123)는, 예를 들어, 메인 프로세서(121)가 인액티브(예: 슬립) 상태에 있는 동안 메인 프로세서(121)를 대신하여, 또는 메인 프로세서(121)가 액티브(예: 어플리케이션 실행) 상태에 있는 동안 메인 프로세서(121)와 함께, 전자 장치(101)의 구성요소들 중 적어도 하나의 구성요소(예: 디스플레이 모듈(160), 센서 모듈(176), 또는 통신 모듈(190))와 관련된 기능 또는 상태들의 적어도 일부를 제어할 수 있다. 일 실시예에 따르면, 보조 프로세서(123)(예: 이미지 시그널 프로세서 또는 커뮤니케이션 프로세서)는 기능적으로 관련 있는 다른 구성요소(예: 카메라 모듈(180) 또는 통신 모듈(190))의 일부로서 구현될 수 있다. 일 실시예에 따르면, 보조 프로세서(123)(예: 신경망 처리 장치)는 인공지능 모델의 처리에 특화된 하드웨어 구조를 포함할 수 있다. 인공지능 모델은 기계 학습을 통해 생성될 수 있다. 이러한 학습은, 예를 들어, 인공지능 모델이 수행되는 전자 장치(101) 자체에서 수행될 수 있고, 별도의 서버(예: 서버(108))를 통해 수행될 수도 있다. 학습 알고리즘은, 예를 들어, 지도형 학습(supervised learning), 비지도형 학습(unsupervised learning), 준지도형 학습(semi-supervised learning) 또는 강화 학습(reinforcement learning)을 포함할 수 있으나, 전술한 예에 한정되지 않는다. 인공지능 모델은, 복수의 인공 신경망 레이어들을 포함할 수 있다. 인공 신경망은 심층 신경망(DNN: deep neural network), CNN(convolutional neural network), RNN(recurrent neural network), RBM(restricted boltzmann machine), DBN(deep belief network), BRDNN(bidirectional recurrent deep neural network), 심층 Q-네트워크(deep Q-networks) 또는 상기 중 둘 이상의 조합 중 하나일 수 있으나, 전술한 예에 한정되지 않는다. 인공지능 모델은 하드웨어 구조 이외에, 추가적으로 또는 대체적으로, 소프트웨어 구조를 포함할 수 있다.The auxiliary processor 123 may, for example, act on behalf of the main processor 121 while the main processor 121 is in an inactive (e.g., sleep) state, or while the main processor 121 is in an active (e.g., application execution) state. ), together with the main processor 121, at least one of the components of the electronic device 101 (e.g., the display module 160, the sensor module 176, or the communication module 190) At least some of the functions or states related to can be controlled. According to one embodiment, coprocessor 123 (e.g., image signal processor or communication processor) may be implemented as part of another functionally related component (e.g., camera module 180 or communication module 190). there is. According to one embodiment, the auxiliary processor 123 (eg, neural network processing device) may include a hardware structure specialized for processing artificial intelligence models. Artificial intelligence models can be created through machine learning. For example, such learning may be performed in the electronic device 101 itself on which the artificial intelligence model is performed, or may be performed through a separate server (e.g., server 108). Learning algorithms may include, for example, supervised learning, unsupervised learning, semi-supervised learning, or reinforcement learning, but It is not limited. An artificial intelligence model may include multiple artificial neural network layers. Artificial neural networks include deep neural network (DNN), convolutional neural network (CNN), recurrent neural network (RNN), restricted boltzmann machine (RBM), belief deep network (DBN), bidirectional recurrent deep neural network (BRDNN), It may be one of deep Q-networks or a combination of two or more of the above, but is not limited to the examples described above. In addition to hardware structures, artificial intelligence models may additionally or alternatively include software structures.
메모리(130)는, 전자 장치(101)의 적어도 하나의 구성요소(예: 프로세서(120) 또는 센서 모듈(176))에 의해 사용되는 다양한 데이터를 저장할 수 있다. 데이터는, 예를 들어, 소프트웨어(예: 프로그램(140)) 및, 이와 관련된 명령에 대한 입력 데이터 또는 출력 데이터를 포함할 수 있다. 메모리(130)는, 휘발성 메모리(132) 또는 비휘발성 메모리(134)를 포함할 수 있다. The memory 130 may store various data used by at least one component (eg, the processor 120 or the sensor module 176) of the electronic device 101. Data may include, for example, input data or output data for software (e.g., program 140) and instructions related thereto. Memory 130 may include volatile memory 132 or non-volatile memory 134.
프로그램(140)은 메모리(130)에 소프트웨어로서 저장될 수 있으며, 예를 들어, 운영 체제(142), 미들 웨어(144) 또는 어플리케이션(146)을 포함할 수 있다. The program 140 may be stored as software in the memory 130 and may include, for example, an operating system 142, middleware 144, or application 146.
입력 모듈(150)은, 전자 장치(101)의 구성요소(예: 프로세서(120))에 사용될 명령 또는 데이터를 전자 장치(101)의 외부(예: 사용자)로부터 수신할 수 있다. 입력 모듈(150)은, 예를 들어, 마이크, 마우스, 키보드, 키(예: 버튼), 또는 디지털 펜(예: 스타일러스 펜)을 포함할 수 있다. The input module 150 may receive commands or data to be used in a component of the electronic device 101 (e.g., the processor 120) from outside the electronic device 101 (e.g., a user). The input module 150 may include, for example, a microphone, mouse, keyboard, keys (eg, buttons), or digital pen (eg, stylus pen).
음향 출력 모듈(155)은 음향 신호를 전자 장치(101)의 외부로 출력할 수 있다. 음향 출력 모듈(155)은, 예를 들어, 스피커 또는 리시버를 포함할 수 있다. 스피커는 멀티미디어 재생 또는 녹음 재생과 같이 일반적인 용도로 사용될 수 있다. 리시버는 착신 전화를 수신하기 위해 사용될 수 있다. 일 실시예에 따르면, 리시버는 스피커와 별개로, 또는 그 일부로서 구현될 수 있다.The sound output module 155 may output sound signals to the outside of the electronic device 101. The sound output module 155 may include, for example, a speaker or a receiver. Speakers can be used for general purposes such as multimedia playback or recording playback. The receiver can be used to receive incoming calls. According to one embodiment, the receiver may be implemented separately from the speaker or as part of it.
디스플레이 모듈(160)은 전자 장치(101)의 외부(예: 사용자)로 정보를 시각적으로 제공할 수 있다. 디스플레이 모듈(160)은, 예를 들어, 디스플레이, 홀로그램 장치, 또는 프로젝터 및 해당 장치를 제어하기 위한 제어 회로를 포함할 수 있다. 일 실시예에 따르면, 디스플레이 모듈(160)은 터치를 감지하도록 설정된 터치 센서, 또는 상기 터치에 의해 발생되는 힘의 세기를 측정하도록 설정된 압력 센서를 포함할 수 있다. The display module 160 can visually provide information to the outside of the electronic device 101 (eg, a user). The display module 160 may include, for example, a display, a hologram device, or a projector, and a control circuit for controlling the device. According to one embodiment, the display module 160 may include a touch sensor configured to detect a touch, or a pressure sensor configured to measure the intensity of force generated by the touch.
오디오 모듈(170)은 소리를 전기 신호로 변환시키거나, 반대로 전기 신호를 소리로 변환시킬 수 있다. 일 실시예에 따르면, 오디오 모듈(170)은, 입력 모듈(150)을 통해 소리를 획득하거나, 음향 출력 모듈(155), 또는 전자 장치(101)와 직접 또는 무선으로 연결된 외부 전자 장치(예: 전자 장치(102))(예: 스피커 또는 헤드폰)를 통해 소리를 출력할 수 있다.The audio module 170 can convert sound into an electrical signal or, conversely, convert an electrical signal into sound. According to one embodiment, the audio module 170 acquires sound through the input module 150, the sound output module 155, or an external electronic device (e.g., directly or wirelessly connected to the electronic device 101). Sound may be output through the electronic device 102 (e.g., speaker or headphone).
센서 모듈(176)은 전자 장치(101)의 작동 상태(예: 전력 또는 온도), 또는 외부의 환경 상태(예: 사용자 상태)를 감지하고, 감지된 상태에 대응하는 전기 신호 또는 데이터 값을 생성할 수 있다. 일 실시예에 따르면, 센서 모듈(176)은, 예를 들어, 제스처 센서, 자이로 센서, 기압 센서, 마그네틱 센서, 가속도 센서, 그립 센서, 근접 센서, 컬러 센서, IR(infrared) 센서, 생체 센서, 온도 센서, 습도 센서, 또는 조도 센서를 포함할 수 있다. The sensor module 176 detects the operating state (e.g., power or temperature) of the electronic device 101 or the external environmental state (e.g., user state) and generates an electrical signal or data value corresponding to the detected state. can do. According to one embodiment, the sensor module 176 includes, for example, a gesture sensor, a gyro sensor, an air pressure sensor, a magnetic sensor, an acceleration sensor, a grip sensor, a proximity sensor, a color sensor, an IR (infrared) sensor, a biometric sensor, It may include a temperature sensor, humidity sensor, or light sensor.
인터페이스(177)는 전자 장치(101)가 외부 전자 장치(예: 전자 장치(102))와 직접 또는 무선으로 연결되기 위해 사용될 수 있는 하나 이상의 지정된 프로토콜들을 지원할 수 있다. 일 실시예에 따르면, 인터페이스(177)는, 예를 들어, HDMI(high definition multimedia interface), USB(universal serial bus) 인터페이스, SD카드 인터페이스, 또는 오디오 인터페이스를 포함할 수 있다.The interface 177 may support one or more designated protocols that can be used to connect the electronic device 101 directly or wirelessly with an external electronic device (eg, the electronic device 102). According to one embodiment, the interface 177 may include, for example, a high definition multimedia interface (HDMI), a universal serial bus (USB) interface, an SD card interface, or an audio interface.
연결 단자(178)는, 그를 통해서 전자 장치(101)가 외부 전자 장치(예: 전자 장치(102))와 물리적으로 연결될 수 있는 커넥터를 포함할 수 있다. 일 실시예에 따르면, 연결 단자(178)는, 예를 들어, HDMI 커넥터, USB 커넥터, SD 카드 커넥터, 또는 오디오 커넥터(예: 헤드폰 커넥터)를 포함할 수 있다.The connection terminal 178 may include a connector through which the electronic device 101 can be physically connected to an external electronic device (eg, the electronic device 102). According to one embodiment, the connection terminal 178 may include, for example, an HDMI connector, a USB connector, an SD card connector, or an audio connector (eg, a headphone connector).
햅틱 모듈(179)은 전기적 신호를 사용자가 촉각 또는 운동 감각을 통해서 인지할 수 있는 기계적인 자극(예: 진동 또는 움직임) 또는 전기적인 자극으로 변환할 수 있다. 일 실시예에 따르면, 햅틱 모듈(179)은, 예를 들어, 모터, 압전 소자, 또는 전기 자극 장치를 포함할 수 있다.The haptic module 179 may convert electrical signals into mechanical stimulation (e.g., vibration or movement) or electrical stimulation that the user can perceive through tactile or kinesthetic senses. According to one embodiment, the haptic module 179 may include, for example, a motor, a piezoelectric element, or an electrical stimulation device.
카메라 모듈(180)은 정지 영상 및 동영상을 촬영할 수 있다. 일 실시예에 따르면, 카메라 모듈(180)은 하나 이상의 렌즈들, 이미지 센서들, 이미지 시그널 프로세서들, 또는 플래시들을 포함할 수 있다.The camera module 180 can capture still images and moving images. According to one embodiment, the camera module 180 may include one or more lenses, image sensors, image signal processors, or flashes.
전력 관리 모듈(188)은 전자 장치(101)에 공급되는 전력을 관리할 수 있다. 일 실시예에 따르면, 전력 관리 모듈(188)은, 예를 들어, PMIC(power management integrated circuit)의 적어도 일부로서 구현될 수 있다.The power management module 188 can manage power supplied to the electronic device 101. According to one embodiment, the power management module 188 may be implemented as at least a part of, for example, a power management integrated circuit (PMIC).
배터리(189)는 전자 장치(101)의 적어도 하나의 구성요소에 전력을 공급할 수 있다. 일 실시예에 따르면, 배터리(189)는, 예를 들어, 재충전 불가능한 1차 전지, 재충전 가능한 2차 전지 또는 연료 전지를 포함할 수 있다.The battery 189 may supply power to at least one component of the electronic device 101. According to one embodiment, the battery 189 may include, for example, a non-rechargeable primary battery, a rechargeable secondary battery, or a fuel cell.
통신 모듈(190)은 전자 장치(101)와 외부 전자 장치(예: 전자 장치(102), 전자 장치(104), 또는 서버(108)) 간의 직접(예: 유선) 통신 채널 또는 무선 통신 채널의 수립, 및 수립된 통신 채널을 통한 통신 수행을 지원할 수 있다. 통신 모듈(190)은 프로세서(120)(예: 어플리케이션 프로세서)와 독립적으로 운영되고, 직접(예: 유선) 통신 또는 무선 통신을 지원하는 하나 이상의 커뮤니케이션 프로세서를 포함할 수 있다. 일 실시예에 따르면, 통신 모듈(190)은 무선 통신 모듈(192)(예: 셀룰러 통신 모듈, 근거리 무선 통신 모듈, 또는 GNSS(global navigation satellite system) 통신 모듈) 또는 유선 통신 모듈(194)(예: LAN(local area network) 통신 모듈, 또는 전력선 통신 모듈)을 포함할 수 있다. 이들 통신 모듈 중 해당하는 통신 모듈은 제1 네트워크(198)(예: 블루투스, WiFi(wireless fidelity) direct 또는 IrDA(infrared data association)와 같은 근거리 통신 네트워크) 또는 제2 네트워크(199)(예: 레거시 셀룰러 네트워크, 5G 네트워크, 차세대 통신 네트워크, 인터넷, 또는 컴퓨터 네트워크(예: LAN 또는 WAN)와 같은 원거리 통신 네트워크)를 통하여 외부의 전자 장치(104)와 통신할 수 있다. 이런 여러 종류의 통신 모듈들은 하나의 구성요소(예: 단일 칩)로 통합되거나, 또는 서로 별도의 복수의 구성요소들(예: 복수 칩들)로 구현될 수 있다. 무선 통신 모듈(192)은 가입자 식별 모듈(196)에 저장된 가입자 정보(예: 국제 모바일 가입자 식별자(IMSI))를 이용하여 제1 네트워크(198) 또는 제2 네트워크(199)와 같은 통신 네트워크 내에서 전자 장치(101)를 확인 또는 인증할 수 있다. Communication module 190 is configured to provide a direct (e.g., wired) communication channel or wireless communication channel between electronic device 101 and an external electronic device (e.g., electronic device 102, electronic device 104, or server 108). It can support establishment and communication through established communication channels. Communication module 190 operates independently of processor 120 (e.g., an application processor) and may include one or more communication processors that support direct (e.g., wired) communication or wireless communication. According to one embodiment, the communication module 190 may be a wireless communication module 192 (e.g., a cellular communication module, a short-range wireless communication module, or a global navigation satellite system (GNSS) communication module) or a wired communication module 194 (e.g., : LAN (local area network) communication module, or power line communication module) may be included. Among these communication modules, the corresponding communication module is a first network 198 (e.g., a short-range communication network such as Bluetooth, wireless fidelity (WiFi) direct, or infrared data association (IrDA)) or a second network 199 (e.g., legacy It may communicate with an external electronic device 104 through a telecommunication network such as a cellular network, a 5G network, a next-generation communication network, the Internet, or a computer network (e.g., LAN or WAN). These various types of communication modules may be integrated into one component (e.g., a single chip) or may be implemented as a plurality of separate components (e.g., multiple chips). The wireless communication module 192 uses subscriber information (e.g., International Mobile Subscriber Identifier (IMSI)) stored in the subscriber identification module 196 to communicate within a communication network such as the first network 198 or the second network 199. The electronic device 101 can be confirmed or authenticated.
무선 통신 모듈(192)은 4G 네트워크 이후의 5G 네트워크 및 차세대 통신 기술, 예를 들어, NR 접속 기술(new radio access technology)을 지원할 수 있다. NR 접속 기술은 고용량 데이터의 고속 전송(eMBB(enhanced mobile broadband)), 단말 전력 최소화와 다수 단말의 접속(mMTC(massive machine type communications)), 또는 고신뢰도와 저지연(URLLC(ultra-reliable and low-latency communications))을 지원할 수 있다. 무선 통신 모듈(192)은, 예를 들어, 높은 데이터 전송률 달성을 위해, 고주파 대역(예: mmWave 대역)을 지원할 수 있다. 무선 통신 모듈(192)은 고주파 대역에서의 성능 확보를 위한 다양한 기술들, 예를 들어, 빔포밍(beamforming), 거대 배열 다중 입출력(massive MIMO(multiple-input and multiple-output)), 전차원 다중입출력(FD-MIMO: full dimensional MIMO), 어레이 안테나(array antenna), 아날로그 빔형성(analog beam-forming), 또는 대규모 안테나(large scale antenna)와 같은 기술들을 지원할 수 있다. 무선 통신 모듈(192)은 전자 장치(101), 외부 전자 장치(예: 전자 장치(104)) 또는 네트워크 시스템(예: 제2 네트워크(199))에 규정되는 다양한 요구사항을 지원할 수 있다. 일 실시예에 따르면, 무선 통신 모듈(192)은 eMBB 실현을 위한 Peak data rate(예: 20Gbps 이상), mMTC 실현을 위한 손실 Coverage(예: 164dB 이하), 또는 URLLC 실현을 위한 U-plane latency(예: 다운링크(DL) 및 업링크(UL) 각각 0.5ms 이하, 또는 라운드 트립 1ms 이하)를 지원할 수 있다.The wireless communication module 192 may support 5G networks after 4G networks and next-generation communication technologies, for example, NR access technology (new radio access technology). NR access technology provides high-speed transmission of high-capacity data (eMBB (enhanced mobile broadband)), minimization of terminal power and access to multiple terminals (mMTC (massive machine type communications)), or high reliability and low latency (URLLC (ultra-reliable and low latency). -latency communications)) can be supported. The wireless communication module 192 may support a high frequency band (eg, mmWave band), for example, to achieve a high data rate. The wireless communication module 192 uses various technologies to secure performance in high frequency bands, for example, beamforming, massive array multiple-input and multiple-output (MIMO), and full-dimensional multiplexing. It can support technologies such as input/output (FD-MIMO: full dimensional MIMO), array antenna, analog beam-forming, or large scale antenna. The wireless communication module 192 may support various requirements specified in the electronic device 101, an external electronic device (e.g., electronic device 104), or a network system (e.g., second network 199). According to one embodiment, the wireless communication module 192 supports peak data rate (e.g., 20 Gbps or more) for realizing eMBB, loss coverage (e.g., 164 dB or less) for realizing mmTC, or U-plane latency (e.g., 164 dB or less) for realizing URLLC. Example: Downlink (DL) and uplink (UL) each of 0.5 ms or less, or round trip 1 ms or less) can be supported.
안테나 모듈(197)은 신호 또는 전력을 외부(예: 외부의 전자 장치)로 송신하거나 외부로부터 수신할 수 있다. 일 실시예에 따르면, 안테나 모듈(197)은 서브스트레이트(예: PCB) 위에 형성된 도전체 또는 도전성 패턴으로 이루어진 방사체를 포함하는 안테나를 포함할 수 있다. 일 실시예에 따르면, 안테나 모듈(197)은 복수의 안테나들(예: 어레이 안테나)을 포함할 수 있다. 이런 경우, 제1 네트워크(198) 또는 제2 네트워크(199)와 같은 통신 네트워크에서 사용되는 통신 방식에 적합한 적어도 하나의 안테나가, 예를 들어, 통신 모듈(190)에 의하여 상기 복수의 안테나들로부터 선택될 수 있다. 신호 또는 전력은 상기 선택된 적어도 하나의 안테나를 통하여 통신 모듈(190)과 외부의 전자 장치 간에 송신되거나 수신될 수 있다. 어떤 실시예에 따르면, 방사체 이외에 다른 부품(예: RFIC(radio frequency integrated circuit))이 추가로 안테나 모듈(197)의 일부로 형성될 수 있다. The antenna module 197 may transmit or receive signals or power to or from the outside (eg, an external electronic device). According to one embodiment, the antenna module 197 may include an antenna including a radiator made of a conductor or a conductive pattern formed on a substrate (eg, PCB). According to one embodiment, the antenna module 197 may include a plurality of antennas (eg, an array antenna). In this case, at least one antenna suitable for a communication method used in a communication network such as the first network 198 or the second network 199 is, for example, connected to the plurality of antennas by the communication module 190. can be selected Signals or power may be transmitted or received between the communication module 190 and an external electronic device through the at least one selected antenna. According to some embodiments, in addition to the radiator, other components (eg, radio frequency integrated circuit (RFIC)) may be additionally formed as part of the antenna module 197.
다양한 실시예에 따르면, 안테나 모듈(197)은 mmWave 안테나 모듈을 형성할 수 있다. 일 실시예에 따르면, mmWave 안테나 모듈은 인쇄 회로 기판, 상기 인쇄 회로 기판의 제1 면(예: 아래 면)에 또는 그에 인접하여 배치되고 지정된 고주파 대역(예: mmWave 대역)을 지원할 수 있는 RFIC, 및 상기 인쇄 회로 기판의 제2 면(예: 윗 면 또는 측 면)에 또는 그에 인접하여 배치되고 상기 지정된 고주파 대역의 신호를 송신 또는 수신할 수 있는 복수의 안테나들(예: 어레이 안테나)을 포함할 수 있다.According to various embodiments, the antenna module 197 may form a mmWave antenna module. According to one embodiment, a mmWave antenna module includes a printed circuit board, an RFIC disposed on or adjacent to a first side (e.g., bottom side) of the printed circuit board and capable of supporting a designated high-frequency band (e.g., mmWave band); And a plurality of antennas (e.g., array antennas) disposed on or adjacent to the second side (e.g., top or side) of the printed circuit board and capable of transmitting or receiving signals in the designated high frequency band. can do.
상기 구성요소들 중 적어도 일부는 주변 기기들간 통신 방식(예: 버스, GPIO(general purpose input and output), SPI(serial peripheral interface), 또는 MIPI(mobile industry processor interface))을 통해 서로 연결되고 신호(예: 명령 또는 데이터)를 상호간에 교환할 수 있다.At least some of the components are connected to each other through a communication method between peripheral devices (e.g., bus, general purpose input and output (GPIO), serial peripheral interface (SPI), or mobile industry processor interface (MIPI)) and signal ( (e.g. commands or data) can be exchanged with each other.
일 실시예에 따르면, 명령 또는 데이터는 제2 네트워크(199)에 연결된 서버(108)를 통해서 전자 장치(101)와 외부의 전자 장치(104)간에 송신 또는 수신될 수 있다. 외부의 전자 장치(102, 또는 104) 각각은 전자 장치(101)와 동일한 또는 다른 종류의 장치일 수 있다. 일 실시예에 따르면, 전자 장치(101)에서 실행되는 동작들의 전부 또는 일부는 외부의 전자 장치들(102, 104, 또는 108) 중 하나 이상의 외부의 전자 장치들에서 실행될 수 있다. 예를 들어, 전자 장치(101)가 어떤 기능이나 서비스를 자동으로, 또는 사용자 또는 다른 장치로부터의 요청에 반응하여 수행해야 할 경우에, 전자 장치(101)는 기능 또는 서비스를 자체적으로 실행시키는 대신에 또는 추가적으로, 하나 이상의 외부의 전자 장치들에게 그 기능 또는 그 서비스의 적어도 일부를 수행하라고 요청할 수 있다. 상기 요청을 수신한 하나 이상의 외부의 전자 장치들은 요청된 기능 또는 서비스의 적어도 일부, 또는 상기 요청과 관련된 추가 기능 또는 서비스를 실행하고, 그 실행의 결과를 전자 장치(101)로 전달할 수 있다. 전자 장치(101)는 상기 결과를, 그대로 또는 추가적으로 처리하여, 상기 요청에 대한 응답의 적어도 일부로서 제공할 수 있다. 이를 위하여, 예를 들어, 클라우드 컴퓨팅, 분산 컴퓨팅, 모바일 에지 컴퓨팅(MEC: mobile edge computing), 또는 클라이언트-서버 컴퓨팅 기술이 이용될 수 있다. 전자 장치(101)는, 예를 들어, 분산 컴퓨팅 또는 모바일 에지 컴퓨팅을 이용하여 초저지연 서비스를 제공할 수 있다. 다른 실시예에 있어서, 외부의 전자 장치(104)는 IoT(internet of things) 기기를 포함할 수 있다. 서버(108)는 기계 학습 및/또는 신경망을 이용한 지능형 서버일 수 있다. 일 실시예에 따르면, 외부의 전자 장치(104) 또는 서버(108)는 제2 네트워크(199) 내에 포함될 수 있다. 전자 장치(101)는 5G 통신 기술 및 IoT 관련 기술을 기반으로 지능형 서비스(예: 스마트 홈, 스마트 시티, 스마트 카, 또는 헬스 케어)에 적용될 수 있다. According to one embodiment, commands or data may be transmitted or received between the electronic device 101 and the external electronic device 104 through the server 108 connected to the second network 199. Each of the external electronic devices 102 or 104 may be of the same or different type as the electronic device 101. According to one embodiment, all or part of the operations performed in the electronic device 101 may be executed in one or more of the external electronic devices 102, 104, or 108. For example, when the electronic device 101 must perform a function or service automatically or in response to a request from a user or another device, the electronic device 101 may perform the function or service instead of executing the function or service on its own. Alternatively, or additionally, one or more external electronic devices may be requested to perform at least part of the function or service. One or more external electronic devices that have received the request may execute at least part of the requested function or service, or an additional function or service related to the request, and transmit the result of the execution to the electronic device 101. The electronic device 101 may process the result as is or additionally and provide it as at least part of a response to the request. For this purpose, for example, cloud computing, distributed computing, mobile edge computing (MEC), or client-server computing technology can be used. The electronic device 101 may provide an ultra-low latency service using, for example, distributed computing or mobile edge computing. In another embodiment, the external electronic device 104 may include an Internet of Things (IoT) device. Server 108 may be an intelligent server using machine learning and/or neural networks. According to one embodiment, the external electronic device 104 or server 108 may be included in the second network 199. The electronic device 101 may be applied to intelligent services (e.g., smart home, smart city, smart car, or healthcare) based on 5G communication technology and IoT-related technology.
본 문서에 개시된 다양한 실시예들에 따른 전자 장치는 다양한 형태의 장치가 될 수 있다. 전자 장치는, 예를 들어, 휴대용 통신 장치(예: 스마트폰), 컴퓨터 장치, 휴대용 멀티미디어 장치, 휴대용 의료 기기, 카메라, 웨어러블 장치, 또는 가전 장치를 포함할 수 있다. 본 문서의 실시예에 따른 전자 장치는 전술한 기기들에 한정되지 않는다.Electronic devices according to various embodiments disclosed in this document may be of various types. Electronic devices may include, for example, portable communication devices (e.g., smartphones), computer devices, portable multimedia devices, portable medical devices, cameras, wearable devices, or home appliances. Electronic devices according to embodiments of this document are not limited to the above-described devices.
본 문서의 다양한 실시예들 및 이에 사용된 용어들은 본 문서에 기재된 기술적 특징들을 특정한 실시예들로 한정하려는 것이 아니며, 해당 실시예의 다양한 변경, 균등물, 또는 대체물을 포함하는 것으로 이해되어야 한다. 도면의 설명과 관련하여, 유사한 또는 관련된 구성요소에 대해서는 유사한 참조 부호가 사용될 수 있다. 아이템에 대응하는 명사의 단수 형은 관련된 문맥상 명백하게 다르게 지시하지 않는 한, 상기 아이템 한 개 또는 복수 개를 포함할 수 있다. 본 문서에서, "A 또는 B", "A 및 B 중 적어도 하나", "A 또는 B 중 적어도 하나", "A, B 또는 C", "A, B 및 C 중 적어도 하나", 및 "A, B, 또는 C 중 적어도 하나"와 같은 문구들 각각은 그 문구들 중 해당하는 문구에 함께 나열된 항목들 중 어느 하나, 또는 그들의 모든 가능한 조합을 포함할 수 있다. "제1", "제2", 또는 "첫째" 또는 "둘째"와 같은 용어들은 단순히 해당 구성요소를 다른 해당 구성요소와 구분하기 위해 사용될 수 있으며, 해당 구성요소들을 다른 측면(예: 중요성 또는 순서)에서 한정하지 않는다. 어떤(예: 제1) 구성요소가 다른(예: 제2) 구성요소에, "기능적으로" 또는 "통신적으로"라는 용어와 함께 또는 이런 용어 없이, "커플드" 또는 "커넥티드"라고 언급된 경우, 그것은 상기 어떤 구성요소가 상기 다른 구성요소에 직접적으로(예: 유선으로), 무선으로, 또는 제3 구성요소를 통하여 연결될 수 있다는 것을 의미한다.The various embodiments of this document and the terms used herein are not intended to limit the technical features described in this document to specific embodiments, and should be understood to include various changes, equivalents, or replacements of the embodiments. In connection with the description of the drawings, similar reference numbers may be used for similar or related components. The singular form of a noun corresponding to an item may include one or more of the items, unless the relevant context clearly indicates otherwise. As used herein, “A or B”, “at least one of A and B”, “at least one of A or B”, “A, B or C”, “at least one of A, B and C”, and “A Each of phrases such as “at least one of , B, or C” may include any one of the items listed together in the corresponding phrase, or any possible combination thereof. Terms such as "first", "second", or "first" or "second" may be used simply to distinguish one element from another, and may be used to distinguish such elements in other respects, such as importance or order) is not limited. One (e.g. first) component is said to be "coupled" or "connected" to another (e.g. second) component, with or without the terms "functionally" or "communicatively". Where mentioned, it means that any of the components can be connected to the other components directly (e.g. wired), wirelessly, or through a third component.
본 문서의 다양한 실시예들에서 사용된 용어 "모듈"은 하드웨어, 소프트웨어 또는 펌웨어로 구현된 유닛을 포함할 수 있으며, 예를 들어, 로직, 논리 블록, 부품, 또는 회로와 같은 용어와 상호 호환적으로 사용될 수 있다. 모듈은, 일체로 구성된 부품 또는 하나 또는 그 이상의 기능을 수행하는, 상기 부품의 최소 단위 또는 그 일부가 될 수 있다. 예를 들어, 일 실시예에 따르면, 모듈은 ASIC(application-specific integrated circuit)의 형태로 구현될 수 있다. The term “module” used in various embodiments of this document may include a unit implemented in hardware, software, or firmware, and is interchangeable with terms such as logic, logic block, component, or circuit, for example. It can be used as A module may be an integrated part or a minimum unit of the parts or a part thereof that performs one or more functions. For example, according to one embodiment, the module may be implemented in the form of an application-specific integrated circuit (ASIC).
본 문서의 다양한 실시예들은 기기(machine)(예: 전자 장치(101)) 의해 읽을 수 있는 저장 매체(storage medium)(예: 내장 메모리(136) 또는 외장 메모리(138))에 저장된 하나 이상의 명령어들을 포함하는 소프트웨어(예: 프로그램(140))로서 구현될 수 있다. 예를 들어, 기기(예: 전자 장치(101))의 프로세서(예: 프로세서(120))는, 저장 매체로부터 저장된 하나 이상의 명령어들 중 적어도 하나의 명령을 호출하고, 그것을 실행할 수 있다. 이것은 기기가 상기 호출된 적어도 하나의 명령어에 따라 적어도 하나의 기능을 수행하도록 운영되는 것을 가능하게 한다. 상기 하나 이상의 명령어들은 컴파일러에 의해 생성된 코드 또는 인터프리터에 의해 실행될 수 있는 코드를 포함할 수 있다. 기기로 읽을 수 있는 저장 매체는, 비일시적(non-transitory) 저장 매체의 형태로 제공될 수 있다. 여기서, '비일시적'은 저장 매체가 실재(tangible)하는 장치이고, 신호(signal)(예: 전자기파)를 포함하지 않는다는 것을 의미할 뿐이며, 이 용어는 데이터가 저장 매체에 반영구적으로 저장되는 경우와 임시적으로 저장되는 경우를 구분하지 않는다.Various embodiments of the present document are one or more instructions stored in a storage medium (e.g., built-in memory 136 or external memory 138) that can be read by a machine (e.g., electronic device 101). It may be implemented as software (e.g., program 140) including these. For example, a processor (e.g., processor 120) of a device (e.g., electronic device 101) may call at least one command among one or more commands stored from a storage medium and execute it. This allows the device to be operated to perform at least one function according to the at least one instruction called. The one or more instructions may include code generated by a compiler or code that can be executed by an interpreter. A storage medium that can be read by a device may be provided in the form of a non-transitory storage medium. Here, 'non-transitory' only means that the storage medium is a tangible device and does not contain signals (e.g. electromagnetic waves). This term refers to cases where data is stored semi-permanently in the storage medium. There is no distinction between temporary storage cases.
일 실시예에 따르면, 본 문서에 개시된 다양한 실시예들에 따른 방법은 컴퓨터 프로그램 제품(computer program product)에 포함되어 제공될 수 있다. 컴퓨터 프로그램 제품은 상품으로서 판매자 및 구매자 간에 거래될 수 있다. 컴퓨터 프로그램 제품은 기기로 읽을 수 있는 저장 매체(예: compact disc read only memory(CD-ROM))의 형태로 배포되거나, 또는 어플리케이션 스토어(예: 플레이 스토어™)를 통해 또는 두 개의 사용자 장치들(예: 스마트 폰들) 간에 직접, 온라인으로 배포(예: 다운로드 또는 업로드)될 수 있다. 온라인 배포의 경우에, 컴퓨터 프로그램 제품의 적어도 일부는 제조사의 서버, 어플리케이션 스토어의 서버, 또는 중계 서버의 메모리와 같은 기기로 읽을 수 있는 저장 매체에 적어도 일시 저장되거나, 임시적으로 생성될 수 있다.According to one embodiment, methods according to various embodiments disclosed in this document may be provided and included in a computer program product. Computer program products are commodities and can be traded between sellers and buyers. The computer program product may be distributed in the form of a machine-readable storage medium (e.g. compact disc read only memory (CD-ROM)) or through an application store (e.g. Play Store™) or on two user devices (e.g. It can be distributed (e.g. downloaded or uploaded) directly between smart phones) or online. In the case of online distribution, at least a portion of the computer program product may be at least temporarily stored or temporarily created in a machine-readable storage medium, such as the memory of a manufacturer's server, an application store's server, or a relay server.
다양한 실시예들에 따르면, 상기 기술한 구성요소들의 각각의 구성요소(예: 모듈 또는 프로그램)는 단수 또는 복수의 개체를 포함할 수 있으며, 복수의 개체 중 일부는 다른 구성요소에 분리 배치될 수도 있다. 다양한 실시예들에 따르면, 전술한 해당 구성요소들 중 하나 이상의 구성요소들 또는 동작들이 생략되거나, 또는 하나 이상의 다른 구성요소들 또는 동작들이 추가될 수 있다. 대체적으로 또는 추가적으로, 복수의 구성요소들(예: 모듈 또는 프로그램)은 하나의 구성요소로 통합될 수 있다. 이런 경우, 통합된 구성요소는 상기 복수의 구성요소들 각각의 구성요소의 하나 이상의 기능들을 상기 통합 이전에 상기 복수의 구성요소들 중 해당 구성요소에 의해 수행되는 것과 동일 또는 유사하게 수행할 수 있다. 다양한 실시예들에 따르면, 모듈, 프로그램 또는 다른 구성요소에 의해 수행되는 동작들은 순차적으로, 병렬적으로, 반복적으로, 또는 휴리스틱하게 실행되거나, 상기 동작들 중 하나 이상이 다른 순서로 실행되거나, 생략되거나, 또는 하나 이상의 다른 동작들이 추가될 수 있다.According to various embodiments, each component (e.g., module or program) of the above-described components may include a single or plural entity, and some of the plurality of entities may be separately placed in other components. there is. According to various embodiments, one or more of the components or operations described above may be omitted, or one or more other components or operations may be added. Alternatively or additionally, multiple components (eg, modules or programs) may be integrated into a single component. In this case, the integrated component may perform one or more functions of each component of the plurality of components identically or similarly to those performed by the corresponding component of the plurality of components prior to the integration. . According to various embodiments, operations performed by a module, program, or other component may be executed sequentially, in parallel, iteratively, or heuristically, or one or more of the operations may be executed in a different order, or omitted. Alternatively, one or more other operations may be added.
도 2는 일 실시예에 따른 전자 장치(101)에 포함된 하나 이상의 프로세서들을 설명하기 위한 블록도이다. 도 2의 전자 장치(101)는 도 1의 전자 장치(101)에 대응할 수 있다.FIG. 2 is a block diagram illustrating one or more processors included in the electronic device 101 according to an embodiment. The electronic device 101 of FIG. 2 may correspond to the electronic device 101 of FIG. 1 .
도 2를 참조하면, 일 실시예에 따른 전자 장치(101)는 CPU(200), NPU(210), GPU(220) 또는 메모리(130) 중 적어도 하나를 포함할 수 있다. 상기 CPU(200), 상기 NPU(210), 상기 GPU(220) 및 상기 메모리(130)는 통신 버스(a communication bus)(230)와 같은 전자 소자(electronical component)에 의해 서로 전기적으로 및/또는 작동적으로 연결될 수 있다(electronically and/or operably coupled with each other). 상기 전자 장치(101)에 포함된 하드웨어 컴포넌트의 타입 및/또는 개수는 도 2에 도시된 바에 제한되지 않으며, 예를 들어, 상기 전자 장치(101)는 도 1의 디스플레이 모듈(160), 통신 모듈(190)을 더 포함할 수 있다.Referring to FIG. 2 , the electronic device 101 according to an embodiment may include at least one of a CPU 200, an NPU 210, a GPU 220, or a memory 130. The CPU 200, the NPU 210, the GPU 220, and the memory 130 are electrically and/or connected to each other by an electronic component such as a communication bus 230. Can be operably coupled (electronically and/or operably coupled with each other). The type and/or number of hardware components included in the electronic device 101 are not limited to those shown in FIG. 2. For example, the electronic device 101 includes the display module 160 and the communication module of FIG. 1. (190) may be further included.
일 실시예에 따른 상기 전자 장치(101)의 상기 CPU(200)는 하나 이상의 인스트럭션에 기반하여 데이터를 처리하기 위한 하드웨어 컴포넌트를 포함할 수 있다. 데이터를 처리하기 위한 하드웨어 컴포넌트는, 예를 들어, ALU(Arithmetic and Logic Unit), FPU(Floating Point Unit) 및/또는 FPGA(Field Programmable Gate Array)를 포함할 수 있다. 상기 FPU는 부동 소수점 연산을 효율적으로 처리하기 위한 모듈일 수 있다. 상기 ALU는 정수 연산을 효율적으로 처리하기 위한 모듈일 수 있다. 상기 CPU(200)는 듀얼 코어(dual core), 쿼드 코어(quad core) 또는 헥사 코어(hexa core)와 같은 멀티-코어 프로세서의 구조를 가질 수 있다. 도 2의 상기 CPU(200)는 도 1의 프로세서(120) 및/또는 메인 프로세서(121)의 일 예에 대응할 수 있다.The CPU 200 of the electronic device 101 according to one embodiment may include hardware components for processing data based on one or more instructions. Hardware components for processing data may include, for example, an Arithmetic and Logic Unit (ALU), a Floating Point Unit (FPU), and/or a Field Programmable Gate Array (FPGA). The FPU may be a module for efficiently processing floating point operations. The ALU may be a module for efficiently processing integer operations. The CPU 200 may have the structure of a multi-core processor such as dual core, quad core, or hexa core. The CPU 200 of FIG. 2 may correspond to an example of the processor 120 and/or the main processor 121 of FIG. 1.
일 실시예에 따른 상기 전자 장치(101)의 상기 GPU(220)는 컴퓨터 그래픽과 관련된 인스트럭션의 실행에 필요한 복수의 동작을 수행하는 파이프라인을 하나 이상 포함할 수 있다. 예를 들어, 상기 GPU(220)의 파이프라인은, 3차원 이미지를 생성하고, 생성된 3차원 이미지로부터 2차원 래스터 이미지를 생성하기 위한 그래픽스 파이프라인(graphics pipeline) 또는 렌더링 파이프라인(rendering pipeline)을 포함할 수 있다. 그래픽스 파이프라인은, 상기 메모리(130)에 저장된 파일에 포함되고, 셰이딩 언어(shading language)로 작성된 코드에 기반하여 제어될 수 있다. 예를 들어, 셰이딩 언어로 작성된 코드가, 상기 CPU(200)에 의해 상기 GPU(220)에서 실행 가능한 인스트럭션으로 컴파일될 수 있다.The GPU 220 of the electronic device 101 according to an embodiment may include one or more pipelines that perform a plurality of operations required to execute instructions related to computer graphics. For example, the pipeline of the GPU 220 is a graphics pipeline or rendering pipeline for generating a 3D image and generating a 2D raster image from the generated 3D image. may include. The graphics pipeline is included in a file stored in the memory 130 and can be controlled based on code written in a shading language. For example, code written in a shading language may be compiled by the CPU 200 into instructions executable on the GPU 220.
일 실시예에 따른 상기 전자 장치(101)의 상기 NPU(210)는 뉴럴 네트워크에 기반하는 하나 이상의 기능들을 지원하기 위한 하드웨어 컴포넌트를 포함할 수 있다. 상기 뉴럴 네트워크는, 많은 수의 인공 뉴런(또는 노드)들을 이용하여 생물학적인 시스템의 계산 능력을 모방하는 소프트웨어나 하드웨어로 구현된 인식 모델이다. 본 개시(present disclosure)에서, 뉴럴 네트워크는 모델로 지칭될(referred) 수 있다. 예를 들어, 일 실시예에 따른 상기 전자 장치(101)는 뉴럴 네트워크에 기반하여, 인간의 인지 작용이나 학습 과정과 유사한 기능들을 실행할 수 있다. 일 실시예에서, 상기 NPU(210)에 의해 지원되는, 상기 뉴럴 네트워크에 기반하는 하나 이상의 기능들은, 뉴럴 네트워크를 트레이닝하는 기능, 트레이닝된 뉴럴 네트워크를 이용하여 영상 인식, 음성 인식 및/또는 필기 인식을 수행하는 기능, 뉴럴 네트워크에 기반하는, 상기 전자 장치(101)의 사용자에게 개인화된 기능, API(Application Programming Interface)를 이용하여 어플리케이션에 기반하는 뉴럴 네트워크를 제어하는 기능을 포함할 수 있다.The NPU 210 of the electronic device 101 according to one embodiment may include hardware components to support one or more functions based on a neural network. The neural network is a recognition model implemented in software or hardware that imitates the computational ability of a biological system using a large number of artificial neurons (or nodes). In the present disclosure, a neural network may be referred to as a model. For example, the electronic device 101 according to one embodiment may execute functions similar to human cognitive functions or learning processes based on a neural network. In one embodiment, one or more functions based on the neural network supported by the NPU 210 include the function of training a neural network, image recognition, voice recognition, and/or handwriting recognition using a trained neural network. It may include a function to perform, a function personalized to the user of the electronic device 101 based on a neural network, and a function to control a neural network based on an application using an API (Application Programming Interface).
도 2의 상기 CPU(200), 상기 NPU(210) 및 상기 GPU(220) 각각은 상기 전자 장치(101)에서 상이한 집적 회로들(Integrated Circuits)로써 포함되거나, 또는 SoC(System on Chip)에 기반하는 단일 집적 회로(single IC)에 포함될 수 있다. 예를 들어, 상기 CPU(200), 상기 NPU(210), 상기 GPU(220) 또는 이들의 조합이 상기 전자 장치(101)에 포함된 단일 집적 회로 내에 포함될 수 있다. SoC에 기반하여 포함되는 처리 유닛(processing unit)의 타입은 상기 예시에 제한되지 않으며, 예를 들어, 도 2에 도시되지 않은 다른 하드웨어 컴포넌트(예: 커뮤니케이션 프로세서)가 상기 CPU(200), 상기 NPU(210) 및 상기 GPU(220)와 함께 단일 집적 회로 내에 포함될 수 있다.The CPU 200, NPU 210, and GPU 220 of FIG. 2 are each included as different integrated circuits in the electronic device 101, or are based on a System on Chip (SoC). may be included in a single integrated circuit (single IC). For example, the CPU 200, the NPU 210, the GPU 220, or a combination thereof may be included in a single integrated circuit included in the electronic device 101. The type of processing unit included based on the SoC is not limited to the above example, and for example, other hardware components (e.g., communication processor) not shown in FIG. 2 may be included in the CPU 200 and the NPU. 210 and the GPU 220 may be included in a single integrated circuit.
일 실시예에 따른 상기 전자 장치(101)의 상기 메모리(130)는 상기 CPU(200), 상기 NPU(210) 및/또는 상기 GPU(220)에 입력 및/또는 출력되는 데이터 및/또는 인스트럭션을 저장하기 위한 하드웨어 컴포넌트를 포함할 수 있다. 상기 메모리(130)는, 예를 들어, RAM(Random-Access Memory)와 같은 휘발성 메모리(Volatile Memory)(132) 및/또는 ROM(Read-Only Memory)와 같은 비휘발성 메모리(Non-Volatile Memory)(134)를 포함할 수 있다. 상기 휘발성 메모리(132)는, 예를 들어, DRAM(Dynamic RAM), SRAM(Static RAM), Cache RAM, PSRAM (Pseudo SRAM) 중 적어도 하나를 포함할 수 있다. 상기 비휘발성 메모리(134)는, 예를 들어, PROM(Programmable ROM), EPROM (Erasable PROM), EEPROM (Electrically Erasable PROM), 플래시 메모리, 하드디스크, 컴팩트 디스크, eMMC(Embedded Multi Media Card) 중 적어도 하나를 포함할 수 있다. 도 2의 상기 메모리(130), 상기 휘발성 메모리(132) 및 상기 비휘발성 메모리(134)는, 도 1의 메모리(130), 휘발성 메모리(132) 및 비휘발성 메모리(134) 각각에 대응할 수 있다.The memory 130 of the electronic device 101 according to an embodiment stores data and/or instructions input and/or output to the CPU 200, the NPU 210, and/or the GPU 220. May include hardware components for storage. The memory 130 may include, for example, volatile memory 132 such as RAM (Random-Access Memory) and/or non-volatile memory such as ROM (Read-Only Memory). It may include (134). The volatile memory 132 may include, for example, at least one of Dynamic RAM (DRAM), Static RAM (SRAM), Cache RAM, and Pseudo SRAM (PSRAM). The non-volatile memory 134 is, for example, at least one of PROM (Programmable ROM), EPROM (Erasable PROM), EEPROM (Electrically Erasable PROM), flash memory, hard disk, compact disk, and eMMC (Embedded Multi Media Card). It can contain one. The memory 130, the volatile memory 132, and the non-volatile memory 134 of FIG. 2 may correspond to the memory 130, the volatile memory 132, and the non-volatile memory 134 of FIG. 1, respectively. .
일 실시예에 따른 상기 전자 장치(101)의 상기 메모리(130) 내에, 뉴럴 네트워크의 연산을 위한 파라미터들의 집합이 저장될 수 있다. 상기 뉴럴 네트워크를 나타내는 파라미터들은, 예를 들어, 뉴럴 네트워크에 포함된 복수의 노드들 및/또는 상기 복수의 노드들 사이의 연결에 할당되는(assigned) 가중치를 나타낼 수 있다. 일 실시예에 따른 상기 전자 장치(101)의 상기 메모리(130) 내에 저장된 파라미터들의 집합에 의해 나타나는 뉴럴 네트워크의 구조는 도 3을 참고하여 후술된다. 뉴럴 네트워크의 연산을 위한 요청에 기반하여, CPU(200), GPU(220), 또는 NPU(210) 중 적어도 하나는, 상기 파라미터들의 집합에 기반하는 연산을 수행할 수 있다. In the memory 130 of the electronic device 101 according to one embodiment, a set of parameters for calculating a neural network may be stored. Parameters representing the neural network may, for example, represent a plurality of nodes included in the neural network and/or weights assigned to connections between the plurality of nodes. The structure of a neural network represented by a set of parameters stored in the memory 130 of the electronic device 101 according to one embodiment will be described later with reference to FIG. 3. Based on a request for a neural network operation, at least one of the CPU 200, GPU 220, or NPU 210 may perform an operation based on the set of parameters.
도 2를 참조하면, 상기 NPU(210)는 뉴럴 엔진, 버퍼 및/또는 컨트롤러를 포함할 수 있다. 비록 도시되지 않았지만, 상기 뉴럴 엔진, 상기 버퍼 및 상기 컨트롤러는 통신 버스와 같은 전자 소자에 의해 서로 전기적으로 및/또는 작동적으로 연결될 수 있다. 일 실시예에 따르면, 상기 뉴럴 엔진 및/또는 컨트롤러는 소프트웨어적으로 구현될 수 있다. 일 실시예에 따르면, 상기 뉴럴 엔진 및/또는 컨트롤러는 하드웨어적으로 구현될 수 있다.Referring to FIG. 2, the NPU 210 may include a neural engine, buffer, and/or controller. Although not shown, the neural engine, the buffer, and the controller may be electrically and/or operatively connected to each other by electronic devices such as a communication bus. According to one embodiment, the neural engine and/or controller may be implemented in software. According to one embodiment, the neural engine and/or controller may be implemented in hardware.
일 실시예에 따른 상기 NPU(210)는 네트워크와 관련된 기능을 실행하기 위해 요구되는 연산을 수행할 수 있다. The NPU 210 according to one embodiment may perform operations required to execute network-related functions.
일 실시예에 따른 상기 NPU(210)는, 연산을 수행하기 위하여 연산에 이용되는 하나 이상의 수치 값들(numeric values), 또는 출력된 하나 이상의 수치 값들을 적어도 일시적으로(at least temporarily) 저장할 수 있다. The NPU 210 according to one embodiment may at least temporarily store one or more numerical values used in the calculation or one or more output numerical values in order to perform the calculation.
일 실시예에 따른 상기 NPU(210)의 상기 컨트롤러는, 상기 NPU(210)에 포함된 상기 뉴럴 엔진에 기반하는 연산을 제어할 수 있다. 일 실시예에 따르면, 상기 컨트롤러는 소프트웨어 모듈일 수 있다. 일 실시예에 따르면, 상기 컨트롤러는 하드웨어 모듈일 수 있다. The controller of the NPU 210 according to one embodiment may control operations based on the neural engine included in the NPU 210. According to one embodiment, the controller may be a software module. According to one embodiment, the controller may be a hardware module.
일 실시예에 따른 상기 전자 장치(101)는 복수의 데이터 타입들(data types)에 기반하여, 하나 이상의 비트들로부터 특정 수치 값을 식별할 수 있다. 데이터 타입은, 전자 장치(101)에 의한 하나 이상의 비트들의 해석을 위해 사전에 정의된(predetermined) 카테고리일 수 있다. 예를 들어, 전자 장치(101)는 하나 이상의 비트들의 집합을, 상기 집합에 대응하는 데이터 타입에 기반하여 해석하여, 상기 집합에 의해 나타내어지는 데이터를 식별할 수 있다. 예를 들어, 전자 장치(101)가 메모리(130) 내에 특정 수치 값을 나타내는 하나 이상의 비트들을 저장하는 경우, 상기 메모리(130) 내에서, 상기 특정 수치 값에 대응하는 비트들의 수가 데이터 타입에 따라 차별화될 수 있다(may be differentiated).The electronic device 101 according to one embodiment may identify a specific numerical value from one or more bits based on a plurality of data types. The data type may be a predetermined category for interpretation of one or more bits by the electronic device 101. For example, the electronic device 101 may interpret a set of one or more bits based on a data type corresponding to the set and identify data represented by the set. For example, when the electronic device 101 stores one or more bits representing a specific numerical value in the memory 130, the number of bits corresponding to the specific numerical value within the memory 130 varies depending on the data type. may be differentiated.
일 실시예에 따른 상기 NPU(210)는 복수의 데이터 타입들(data types) 각각에 대한 이진 산술 연산을 지원할 수 있다. 상기 NPU(210)가 복수의 데이터 타입들의 이진 산술 연산을 지원함에 따라, 상기 버퍼가 보다 효율적으로 관리될 수 있다. 이하에서, 복수의 데이터 타입들은 상이한 정밀도들(precisions)을 가질 수 있다.The NPU 210 according to one embodiment may support binary arithmetic operations for each of a plurality of data types. As the NPU 210 supports binary arithmetic operations of multiple data types, the buffer can be managed more efficiently. Hereinafter, multiple data types may have different precisions.
상술한 바와 같이, 일 실시예에 따른 상기 NPU(210)는 지정된 데이터 타입에 기반하는 산술 연산의 수행을 지원할 수 있다. 예를 들어, 상기 메모리(130)에 저장된 뉴럴 네트워크에 포함된 데이터 타입과 상기 NPU(210)에서 지원하는 데이터 타입이 다를 경우, 상기 NPU(210)는 상기 다른 데이터 타입의 연산을 지원하지 않을 수 있다. 일 실시예에 따른, 전자 장치(101)는, 상기 NPU(210), GPU(graphic processing unit), TPU(tensor processing unit), 및/또는 DSP(digital signal processor)와 같은 뉴럴 네트워크의 연산이 가능한 모듈에 의해 지원되는 정밀도(precision)(또는 데이터 타입)가 뉴럴 네트워크의 연산을 위해 제공된 파라미터들(예: 가중치 및/또는 바이어스(bias))의 정밀도(또는 데이터 타입)와 다른 경우, 양자화(quantization)와 같은 형 변환 알고리즘을 이용하여, 상기 파라미터들의 정밀도를 변경할 수 있다. 예를 들어, 상기 전자 장치(101)는, 상기 CPU(200)에 상기 파라미터들을 입력하여, 상기 뉴럴 네트워크와 관련된 연산을 수행하고, 상기 연산을 수행한 결과를 이용하여, 상기 파라미터들의 정밀도를 변경할 수 있다. 본 개시에서, 상기 정밀도는 양자화된 범위 내에서 각 표현 값들의 단위를 나타내는 측면에서, 양자화 레벨(quantization level), 해상도(resolution), 비트 심도(bit depth), 디지털 레벨(digital level), 표현 밀도(representation density), 양자 밀도, 양자 범위, 지시 능력(indication capability), 지시 밀도, 지시 레벨. 및/또는 이와 동등한 기술적 용어로 지칭될 수 있다. As described above, the NPU 210 according to one embodiment may support performance of arithmetic operations based on a designated data type. For example, if the data type included in the neural network stored in the memory 130 and the data type supported by the NPU 210 are different, the NPU 210 may not support operations of the different data type. there is. According to one embodiment, the electronic device 101 is capable of performing neural network operations such as the NPU 210, a graphic processing unit (GPU), a tensor processing unit (TPU), and/or a digital signal processor (DSP). If the precision (or data type) supported by the module is different from the precision (or data type) of the parameters (e.g. weights and/or biases) provided for the operation of the neural network, quantization ), the precision of the parameters can be changed using a type conversion algorithm such as ). For example, the electronic device 101 inputs the parameters to the CPU 200, performs an operation related to the neural network, and changes the precision of the parameters using the results of the operation. You can. In the present disclosure, the precision refers to quantization level, resolution, bit depth, digital level, and representation density in terms of representing the unit of each representation value within the quantized range. (representation density), quantum density, quantum range, indication capability, indication density, indication level. and/or may be referred to by equivalent technical terms.
양자화(quantization)란, 실수형 변수를 정수형 변수로 변환하는 동작을 의미할 수 있다. 예를 들면, 상기 CPU(200)는 16 비트들에 기반하여 부동 소수점 수를 나타내는 데이터 타입의 변수를 8 비트들에 기반하여 정수를 나타내는 데이터 타입의 변수로 변환할 수 있다. 예를 들면, 상기 CPU(200)는 8 비트들에 기반하여 부동 소수점 수를 나타내는 데이터 타입의 변수를 4 비트들에 기반하여 정수를 나타내는 데이터 타입의 변수로 변환할 수 있다. 상기 양자화를 통해 뉴럴 네트워크 모델의 연산량을 감소시키고, 상기 뉴럴 네트워크 모델의 사이즈를 줄일 수 있다. Quantization may refer to the operation of converting a real number variable into an integer variable. For example, the CPU 200 may convert a variable of a data type representing a floating point number based on 16 bits into a variable of a data type representing an integer based on 8 bits. For example, the CPU 200 may convert a variable of a data type representing a floating point number based on 8 bits to a variable of a data type representing an integer based on 4 bits. Through the quantization, the amount of computation of the neural network model can be reduced and the size of the neural network model can be reduced.
상기 양자화를 수행하는 방식은 symmetric 방식과 asymmetric 방식으로 나눠질 수 있다. 상기 symmetric 방식을 통해 양자화 될 시, 상기 모델에 포함된 가중치 및/또는 바이어스의 값은 비례적으로 변환될 수 있다. 상기 asymmetric 방식을 통해 양자화 될 시, 상기 모델에 포함된 가중치 및/또는 바이어스의 값은 비례적이지 않게 변경될 수 있다. 예를 들어, asymmetric 방식에 기반하여, 부동 소수점 수를 표현하기 위한 제1 데이터 타입의 파라미터(예, 가중치 및/또는 바이어스)를, 정수를 표현하기 위한 제2 데이터 타입으로 양자화 하는 경우, 상기 제2 데이터 타입의 제1 정수에 매칭되는 상기 제1 데이터 타입의 제1 구간의 길이 및 상기 제2 데이터 타입의 제2 정수에 매칭되는 상기 제1 데이터 타입의 제2 구간의 길이는 서로 다를 수 있다. 양자화를 수행하는 방식은 프로세서에서 지원되는 양자화 방식에 따라 정해질 수 있다. 상기 프로세서에서 asymmetric 방식으로 양자화가 가능할 시, 양자화는 asymmetric 방식으로 수행될 수 있다. 상기 프로세서는 양자화기를 통해 양자화를 수행할 수 있다. 상기 양자화기는, 모델의 연산을 위해 제공되는 어플리케이션 및/또는 API(application programming interface)(예: 런타임 라이브러리)를 포함할 수 있다. 실시예가 이에 제한되는 것은 아니며, 상기 양자화기는, 가속기 및/또는 상기 가속기를 제어하기 위한 어플리케이션(또는 명령어)의 조합을 포함할 수 있다. 일 실시예에 따르면, 상기 양자화기는, 가중치 세트 및 바이어스를 양자화 하기 위한 소프트웨어 어플리케이션을 포함할 수 있다. 상기 가속기는 모델을 실행하기 위한 오퍼레이터에 대한 연산을 지원할 수 있다. 일 실시예에 따르면, 상기 모델은 머신 러닝 모델을 포함할 수 있다. 일 실시예에 따르면, 상기 가속기는 상기 프로세서 내의 하드웨어 부품(예: 프로세서, 프로세서에 포함되는 부품, 프로세서와 별개의 부품) 및/또는 소프트웨어일 수 있다. 상기 가속기의 종류에 대하여 도 2에 대하여 기재된 내용의 하단에 기재된 내용이 참조될 수 있다. 본 발명은 뉴럴 네트워크 모델을 구성하는 개별적인 오퍼레이터 단위로 양자화를 수행할 수 있다. 개별적인 오퍼레이터에 대한 양자화 동작은 도 4에서 기술된다. 양자화 된 오퍼레이터는 양자화 전 오퍼레이터의 해시 값과 함께 저장될 수 있다. 상기 전자 장치는, 양자화 된 뉴럴 네트워크 모델에 대한 연산을 수행 시, 양자화 전 오퍼레이터에 대한 연산을 양자화 된 가중치 및 바이어스에 기반하여 수행할 수 있다. 상기 양자화 된 가중치 및 바이어스는 저장된 해시 값에 기반하여 식별될 수 있다. 상기 전자 장치는, 양자화가 완료된 후, 양자화된 뉴럴 네트워크 모델에 대해서 신뢰도 평가를 수행하고, 상기 신뢰도 평가를 통과한 뉴럴 네트워크 모델로 양자화 전 모델을 대체할 수 있다. 상기 신뢰도 평가에 대한 동작은 도 6에서 기술된다. 상기 뉴럴 네트워크 모델이 신뢰도 평가를 통과하지 못할 시, 양자화 전 뉴럴 네트워크 모델은 서버에서 다시 양자화될 수 있다. 상기 서버는 여러 전자 장치(예: 단말기)로부터 서브 출력 데이터를 송신하고, 송신된 데이터를 통해 양자화 전 뉴럴 네트워크 모델에 대한 양자화를 수행할 수 있다. 상기 서버를 통한 양자화에 대한 동작은 도 8에서 기술된다. Methods for performing the quantization can be divided into symmetric methods and asymmetric methods. When quantized through the symmetric method, the values of weights and/or biases included in the model can be proportionally converted. When quantized using the asymmetric method, the values of weights and/or biases included in the model may change non-proportionally. For example, based on an asymmetric method, when parameters (e.g., weights and/or biases) of a first data type for expressing floating point numbers are quantized into a second data type for expressing integers, the first The length of the first section of the first data type matching the first integer of the second data type and the length of the second section of the first data type matching the second integer of the second data type may be different from each other. . The method of performing quantization may be determined depending on the quantization method supported by the processor. When quantization is possible in an asymmetric manner in the processor, quantization can be performed in an asymmetric manner. The processor may perform quantization through a quantizer. The quantizer may include an application and/or an application programming interface (API) (eg, runtime library) provided for model calculation. The embodiment is not limited to this, and the quantizer may include an accelerator and/or a combination of applications (or instructions) for controlling the accelerator. According to one embodiment, the quantizer may include a software application for quantizing a set of weights and a bias. The accelerator may support operations for operators to execute models. According to one embodiment, the model may include a machine learning model. According to one embodiment, the accelerator may be a hardware component (eg, a processor, a component included in the processor, or a component separate from the processor) and/or software within the processor. Regarding the type of the accelerator, the information described below with respect to FIG. 2 may be referred to. The present invention can perform quantization in units of individual operators constituting a neural network model. Quantization operations for individual operators are described in Figure 4. The quantized operator can be stored along with the hash value of the operator before quantization. When performing an operation on a quantized neural network model, the electronic device may perform an operation on the operator before quantization based on the quantized weight and bias. The quantized weights and biases may be identified based on the stored hash values. After quantization is completed, the electronic device may perform a reliability evaluation on the quantized neural network model and replace the model before quantization with a neural network model that has passed the reliability evaluation. The operation for the reliability evaluation is described in FIG. 6. If the neural network model does not pass the reliability evaluation, the neural network model before quantization may be quantized again in the server. The server may transmit sub-output data from various electronic devices (e.g., terminals) and perform quantization on a neural network model before quantization through the transmitted data. The operation for quantization through the server is described in FIG. 8.
이하에서, 본 개시의 실시예들을 설명하기에 앞서, 실시예들에 따른 전자 장치의 동작들을 설명하기 위해 필요한 용어들이 정의된다.Below, before describing embodiments of the present disclosure, terms necessary to describe operations of an electronic device according to the embodiments are defined.
일 실시예에 따르면, 양자화기란, 제1 데이터 타입의 제1 가중치 및 바이어스를 양자화 하여 제2 데이터 타입의 제2 가중치 및 바이어스를 생성하는 소프트웨어 어플리케이션일 수 있다. 상기 프로세서(120)는 양자화기를 통해 양자화를 수행할 수 있다. 상기 양자화기는, 모델의 연산을 위해 제공되는 어플리케이션 및/또는 API(application programming interface)(예: 런타임 라이브러리)를 포함할 수 있다. 실시예가 이에 제한되는 것은 아니며, 상기 양자화기는, 가속기 및/또는 상기 가속기를 제어하기 위한 어플리케이션(또는 명령어)의 조합을 포함할 수 있다 According to one embodiment, the quantizer may be a software application that quantizes the first weight and bias of the first data type to generate the second weight and bias of the second data type. The processor 120 may perform quantization through a quantizer. The quantizer may include an application and/or an application programming interface (API) (eg, runtime library) provided for model calculation. The embodiment is not limited to this, and the quantizer may include an accelerator and/or a combination of applications (or instructions) for controlling the accelerator.
일 실시예에 따르면, 가속기란, 오퍼레이터에 대한 연산을 지원하기 위한 하드웨어 부품 또는 소프트웨어 어플리케이션일 수 있다. 상기 가속기는 모델을 실행하기 위한 오퍼레이터에 대한 연산을 지원할 수 있다. 일 실시예에 따르면, 상기 모델은 머신 러닝 모델을 포함할 수 있다. 일 실시예에 따르면, 상기 가속기는 상기 프로세서(120) 내의 하드웨어 부품을 포함할 수 있다. 예를 들면, 상기 가속기는 CPU(central processing unit)내의 CME(cortex matrix engine)를 포함할 수 있다. 예를 들면, 상기 가속기는 GPU(graphic processing unit) 내의 TPU(tensor processing unit)를 포함할 수 있다. 일 실시예에 따르면, 상기 가속기는 상기 프로세서(120)에 의해 실행되는 소프트웨어를 포함할 수 있다. 예를 들면, 상기 가속기는 상기 CPU, NPU(neural processing unit), 또는 GPU 중 적어도 하나에 의해 실행되는 소프트웨어 어플리케이션일 수 있다. 일 실시예에 따르면, 상기 가속기는 상기 모델을 실행할 수 있는 프로세서(120)일 수 있다. 예를 들면, 상기 가속기는 CPU를 포함할 수 있다. 예를 들면, 상기 가속기는 NPU를 포함할 수 있다. 예를 들면, 상기 가속기는 GPU를 포함할 수 있다. 예를 들면, 상기 가속기는 TPU를 포함할 수 있다. 이하 도 3에서, 일 실시예에 따른 뉴럴 네트워크의 일 예가 설명된다.According to one embodiment, an accelerator may be a hardware component or a software application to support operations for an operator. The accelerator may support operations for operators to execute models. According to one embodiment, the model may include a machine learning model. According to one embodiment, the accelerator may include hardware components within the processor 120. For example, the accelerator may include a cortex matrix engine (CME) within a central processing unit (CPU). For example, the accelerator may include a tensor processing unit (TPU) within a graphic processing unit (GPU). According to one embodiment, the accelerator may include software executed by the processor 120. For example, the accelerator may be a software application executed by at least one of the CPU, neural processing unit (NPU), or GPU. According to one embodiment, the accelerator may be a processor 120 capable of executing the model. For example, the accelerator may include a CPU. For example, the accelerator may include an NPU. For example, the accelerator may include a GPU. For example, the accelerator may include a TPU. Below in Figure 3, an example of a neural network according to one embodiment is described.
도 3은 일 실시예에 따른 전자 장치에서 실행되는 뉴럴 네트워크(300)를 설명하기 위한 예시적인 도면이다. 도 3의 전자 장치는 도 1 및/또는 도 2의 전자 장치(101)의 일 예에 대응할 수 있다. 도 3의 뉴럴 네트워크(300)는, 예를 들어, 일 실시예에 따른 전자 장치에 의하여 메모리(예: 도 1 및/또는 도 2의 메모리(130)) 내에 저장된 파라미터들의 집합으로부터 획득될 수 있다.FIG. 3 is an exemplary diagram illustrating a neural network 300 running on an electronic device according to an embodiment. The electronic device of FIG. 3 may correspond to an example of the electronic device 101 of FIG. 1 and/or FIG. 2 . The neural network 300 of FIG. 3 may be obtained, for example, from a set of parameters stored in a memory (e.g., memory 130 of FIGS. 1 and/or 2) by an electronic device according to one embodiment. .
도 3을 참조하면, 뉴럴 네트워크(300)는 복수의 레이어들을 포함할 수 있다. 예를 들어, 뉴럴 네트워크(300)는 입력 레이어(310), 하나 이상의 히든 레이어들(320) 및 출력 레이어(330)를 포함할 수 있다. 상기 입력 레이어(310)는 상기 뉴럴 네트워크(300)의 입력 데이터를 나타내는 벡터 및/또는 매트릭스에 대응할 수 있다. 예를 들어, 상기 입력 데이터를 나타내는 벡터는, 상기 입력 레이어(310)에 포함된 노드들의 개수에 대응하는 원소들(elements)을 가질 수 있다. 예를 들어, 상기 입력 데이터를 나타내는 매트릭스에 포함된 원소들은, 상기 입력 레이어(310)에 포함된 노드들 각각에 대응할 수 있다. 상기 입력 데이터에 의해 발생된, 상기 입력 레이어(310) 내 노드들 각각에서 발생된 신호들은, 상기 입력 레이어(310)에서 상기 히든 레이어들(320)에게 송신될 수 있다. 상기 출력 레이어(330)는, 상기 히든 레이어들(320)로부터 수신된 하나 이상의 신호들에 기반하여, 상기 뉴럴 네트워크(300)의 출력 데이터를 생성할 수 있다. 상기 출력 데이터는, 예를 들어, 상기 출력 레이어(330)에 포함된 노드들의 개수에 대응하는 원소들을 가지는 벡터 및/또는 매트릭스에 대응할 수 있다.Referring to FIG. 3, the neural network 300 may include a plurality of layers. For example, the neural network 300 may include an input layer 310, one or more hidden layers 320, and an output layer 330. The input layer 310 may correspond to a vector and/or matrix representing input data of the neural network 300. For example, a vector representing the input data may have elements corresponding to the number of nodes included in the input layer 310. For example, elements included in the matrix representing the input data may correspond to each of the nodes included in the input layer 310. Signals generated by the input data at each node in the input layer 310 may be transmitted from the input layer 310 to the hidden layers 320. The output layer 330 may generate output data of the neural network 300 based on one or more signals received from the hidden layers 320. For example, the output data may correspond to a vector and/or matrix having elements corresponding to the number of nodes included in the output layer 330.
일 실시예에서, 상기 뉴럴 네트워크(300)에 포함된 복수의 레이어들 중 특정 레이어에 포함된 제1 노드들은, 상기 복수의 레이어들의 시퀀스 내에서 상기 특정 레이어의 이전 레이어의 제2 노드들 중 적어도 하나의 가중합(weighted sum)에 대응할 수 있다. 일 실시예에 따른 상기 전자 장치(101)는 상기 메모리 내에 저장된 파라미터들의 집합으로부터, 상기 제2 노드들 중 적어도 하나에 적용될 가중치를 식별할 수 있다. 상기 뉴럴 네트워크(300)를 트레이닝 하는 것은, 상기 가중합과 관련된 하나 이상의 가중치들을 변경 및/또는 결정하는 동작을 포함할 수 있다.In one embodiment, the first nodes included in a specific layer among the plurality of layers included in the neural network 300 are at least the second nodes of the previous layer of the specific layer within the sequence of the plurality of layers. It can correspond to a single weighted sum. The electronic device 101 according to one embodiment may identify a weight to be applied to at least one of the second nodes from a set of parameters stored in the memory. Training the neural network 300 may include changing and/or determining one or more weights related to the weighted sum.
도 3을 참조하면, 하나 이상의 히든 레이어들(320)이 상기 입력 레이어(310) 및 상기 출력 레이어(330) 사이에 위치할 수 있고, 상기 입력 레이어(310)를 통해 전달된 입력 데이터를 예측하기 쉬운 값으로 변환할 수 있다. 상기 입력 레이어(310), 상기 하나 이상의 히든 레이어들(320) 및 상기 출력 레이어(330)는 복수의 노드들을 포함할 수 있다. 하나 이상의 히든 레이어들(320)은 CNN(convolutional neural network)에서의 콘볼루션 필터(convolution filter) 또는 완전 연결 레이어(fully connected layer)이거나, 특별한 기능이나 특징을 기준으로 묶인 다양한 종류의 필터 또는 레이어일 수 있다. 일 실시예에서, 상기 하나 이상의 히든 레이어들(320)은 출력 값이 현재 시간의 히든 레이어에 다시 입력되는 리커런트 뉴럴 네트워크(recurrent neural network, RNN)에 기반하는 레이어일 수 있다. 일 실시예에 따른 상기 뉴럴 네트워크(300)는 다수의(numerous) 히든 레이어들(320)을 포함하여, 딥 뉴럴 네트워크(deep neural network)를 형성할 수 있다. 딥 뉴럴 네트워크를 학습시키는 것을 딥 러닝(deep learning)이라 한다. 상기 뉴럴 네트워크(300)의 노드 중에서, 히든 레이어들(320)에 포함된 노드를 가리켜 히든 노드라 한다.Referring to FIG. 3, one or more hidden layers 320 may be located between the input layer 310 and the output layer 330, and predict input data transmitted through the input layer 310. It can be easily converted to a value. The input layer 310, the one or more hidden layers 320, and the output layer 330 may include a plurality of nodes. One or more hidden layers 320 may be a convolutional filter or a fully connected layer in a convolutional neural network (CNN), or various types of filters or layers grouped based on special functions or characteristics. You can. In one embodiment, the one or more hidden layers 320 may be a layer based on a recurrent neural network (RNN) whose output value is re-input to the hidden layer at the current time. The neural network 300 according to one embodiment may include numerous hidden layers 320 to form a deep neural network. Training a deep neural network is called deep learning. Among the nodes of the neural network 300, nodes included in the hidden layers 320 are referred to as hidden nodes.
상기 입력 레이어(310) 및 상기 하나 이상의 히든 레이어들(320)에 포함된 노드들은 연결 가중치를 가지는 연결선을 통해 서로 연결될 수 있고, 상기 히든 레이어 및 상기 출력 레이어(330)에 포함된 노드들도 연결 가중치를 가지는 연결선을 통해 서로 연결될 수 있다. 상기 뉴럴 네트워크(300)를 튜닝 및/또는 트레이닝하는 것은, 상기 뉴럴 네트워크(300)에 포함된 레이어들(예: 입력 레이어(310), 하나 이상의 히든 레이어들(320) 및 출력 레이어(330)) 각각에 포함된 노드들 사이의 연결 가중치를 변경하는 것을 의미할 수 있다. 상기 뉴럴 네트워크(300)의 튜닝은, 예를 들어, 지도 학습(supervised learning) 및/또는 비지도 학습(unsupervised learning)에 기반하여 수행될 수 있다.Nodes included in the input layer 310 and the one or more hidden layers 320 may be connected to each other through connection lines with connection weights, and nodes included in the hidden layer and the output layer 330 may also be connected. They can be connected to each other through connection lines with weights. Tuning and/or training the neural network 300 includes layers included in the neural network 300 (e.g., an input layer 310, one or more hidden layers 320, and an output layer 330). This may mean changing the connection weight between nodes included in each. Tuning of the neural network 300 may be performed based on, for example, supervised learning and/or unsupervised learning.
일 실시예에 따른 전자 장치는, 비지도 학습에서 강화 학습(reinforcement learning)에 기반하여 상기 뉴럴 네트워크(300)를 튜닝할 수 있다. 예를 들어, 전자 장치는, 상기 뉴럴 네트워크(300)가 에이전트를 제어하기 위해 이용하는 정책 정보를, 에이전트 및 환경 사이의 상호 작용(interaction)에 기반하여 변경할 수 있다. 일 실시예에 따른 전자 장치는, 상기 상호 작용에 의한 상기 에이전트의 목표 및/또는 보상을 극대화하기 위하여, 상기 뉴럴 네트워크(300)에 의한 상기 정책 정보의 변경을 야기할 수 있다.The electronic device according to one embodiment may tune the neural network 300 based on reinforcement learning in unsupervised learning. For example, the electronic device may change policy information used by the neural network 300 to control the agent based on the interaction between the agent and the environment. The electronic device according to one embodiment may cause a change in the policy information by the neural network 300 in order to maximize the agent's goal and/or reward due to the interaction.
예를 들어, 상기 뉴럴 네트워크(300)를 획득하는 상태에서, 일 실시예에 따른 전자 장치는 메모리에 저장된 상기 입력 레이어(310), 상기 하나 이상의 히든 레이어들(320) 및/또는 상기 출력 레이어(330) 사이를 연결하는 연결선에 대응하는 가중치를 식별할 수 있다. 식별된 가중치에 기반하여 상기 뉴럴 네트워크(300)로부터 출력 데이터를 획득하기 위하여, 상기 전자 장치는, 상기 뉴럴 네트워크(300)의 복수의 레이어들(예: 상기 입력 레이어(310), 상기 하나 이상의 히든 레이어들(320) 및 상기 출력 레이어(330))을 따라 순차적으로, 상기 연결선에 기반하는 가중합을 획득할 수 있다. 획득된 가중합은, 도 2의 NPU(210) 및/또는 메모리(130) 내에 저장될 수 있다. 예를 들어, 전자 장치는 복수의 레이어들을 따라 순차적으로 가중합을 획득함에 따라, 메모리 내에 저장된 가중합을 반복적으로 갱신할 수 있다.For example, in a state of acquiring the neural network 300, the electronic device according to one embodiment may include the input layer 310, the one or more hidden layers 320, and/or the output layer ( 330), the weight corresponding to the connecting line between them can be identified. In order to obtain output data from the neural network 300 based on the identified weight, the electronic device uses a plurality of layers (e.g., the input layer 310, the one or more hidden layers) of the neural network 300. A weighted sum based on the connection line may be obtained sequentially along the layers 320 and the output layer 330. The obtained weighted sum may be stored in the NPU 210 and/or memory 130 of FIG. 2. For example, the electronic device may repeatedly update the weighted sum stored in the memory by sequentially obtaining the weighted sum along the plurality of layers.
상기 뉴럴 네트워크(300)의 복수의 레이어들 각각은 독립적인 데이터 타입 및/또는 정밀도를 가질 수 있다. 예를 들어, 상기 복수의 레이어들 중 제1 레이어 및 제2 레이어 사이의 연결선들이 부동 소수점 수(floating point number)를 나타내기 위한 제1 데이터 타입에 기반하는 가중치들을 가지는 경우, 상기 전자 장치는 상기 제1 레이어의 노드들에 대응하는 수치 값들 및 상기 가중치들로부터, 상기 제1 데이터 타입에 기반하는 가중합들을 획득할 수 있다. 상기 예시에서, 복수의 레이어들 중 제2 레이어 및 제3 레이어 사이의 연결선들이 정수(integer number)를 나타내기 위한 제2 데이터 타입에 기반하는 가중치들을 가지는 경우, 전자 장치는 획득된 가중합들 및 상기 제2 데이터 타입에 기반하는 가중치들로부터, 상기 제2 데이터 타입에 기반하는 가중합들을 획득할 수 있다.Each of the plurality of layers of the neural network 300 may have an independent data type and/or precision. For example, when connection lines between a first layer and a second layer among the plurality of layers have weights based on a first data type to represent a floating point number, the electronic device may From the numerical values corresponding to the nodes of the first layer and the weights, weighted sums based on the first data type can be obtained. In the above example, when the connecting lines between the second layer and the third layer among the plurality of layers have weights based on the second data type to represent an integer number, the electronic device includes the obtained weighted sums and From weights based on the second data type, weighted sums based on the second data type can be obtained.
복수의 레이어들이 상이한 데이터 타입들을 가지는 경우, 일 실시예에 따른 상기 전자 장치는, 예를 들어, 도 2의 NPU(210)를 이용하여, 상이한 데이터 타입들에 기반하여 상기 복수의 레이어들 각각에 대응하는 가중합들을 획득할 수 있다. 상기 전자 장치가 상이한 데이터 타입들에 기반하여 획득된 가중합들에 기반하여 메모리에 액세스함에 따라, 상기 메모리의 대역폭이 보다 효율적으로 이용될 수 있다. 메모리의 대역폭이 보다 효율적으로 이용됨에 따라, 일 실시예에 따른 상기 전자 장치는 상기 복수의 레이어들에 기반하는 상기 뉴럴 네트워크(300)로부터, 출력 데이터를 보다 신속하게 획득할 수 있다.When a plurality of layers have different data types, the electronic device according to an embodiment may, for example, use the NPU 210 of FIG. 2 to provide information to each of the plurality of layers based on the different data types. Corresponding weighted sums can be obtained. As the electronic device accesses memory based on weighted sums obtained based on different data types, the bandwidth of the memory can be used more efficiently. As the bandwidth of memory is used more efficiently, the electronic device according to one embodiment can more quickly obtain output data from the neural network 300 based on the plurality of layers.
일 실시예에 따른 전자 장치는 상이한 정밀도들을 가지는 복수의 뉴럴 네트워크들 각각을 나타내는 파라미터들의 집합들을 저장할 수 있다. 예를 들어, 이미지 및/또는 비디오를 업스케일링(upscaling)하기 위한 초해상도(super resolution)와 관련된 뉴럴 네트워크는, 32 비트들에 기반하여 부동 소수점 수를 나타내기 위한 데이터 타입의 정밀도를 요구할 수 있다. 예를 들어, 이미지 및/또는 비디오를 업스케일링(upscaling)하기 위한 초해상도(super resolution)와 관련된 뉴럴 네트워크는, 16 비트들에 기반하여 부동 소수점 수를 나타내기 위한 데이터 타입(예: IEEE 754에 의하여 정의된 반-정밀도 부동 소수점 포맷(half-precision floating point format))의 정밀도를 요구할 수 있다. 예를 들어, 이미지 및/또는 비디오에 포함된 피사체를 인식하기 위한 뉴럴 네트워크는, 8 비트들 및/또는 4 비트들에 기반하여 정수를 나타내기 위한 데이터 타입의 정밀도를 요구할 수 있다. 예를 들어, 필기 인식을 수행하기 위한 뉴럴 네트워크는, 제1 비트 및/또는 제2 비트들에 기반하여 정수를 나타내기 위한 데이터 타입의 정밀도를 요구할 수 있다. 일 실시예에 따른 전자 장치는 복수의 뉴럴 네트워크들 각각에 대응하는 상이한 정밀도들에 기반하여, 가중합을 획득하기 위한 연산을 수행할 수 있다. An electronic device according to an embodiment may store sets of parameters representing each of a plurality of neural networks with different precisions. For example, a neural network involving super resolution for upscaling images and/or video may require the precision of a data type to represent a floating point number based on 32 bits. . For example, a neural network related to super resolution for upscaling images and/or video may use a data type (e.g. in IEEE 754) to represent floating point numbers based on 16 bits. The precision of the half-precision floating point format defined by For example, a neural network for recognizing a subject included in an image and/or video may require the precision of a data type to represent an integer based on 8 bits and/or 4 bits. For example, a neural network for performing handwriting recognition may require precision of a data type to represent an integer based on the first bit and/or the second bit. An electronic device according to an embodiment may perform an operation to obtain a weighted sum based on different precisions corresponding to each of a plurality of neural networks.
이하 도 4에서, 뉴럴 네트워크 내의 레이어의 가중치를 변경하는 양자화 동작이 기술된다. In Figure 4 below, a quantization operation that changes the weight of a layer in a neural network is described.
도 4는 일 실시예에 따른 가중치에 대한 양자화를 설명하기 위한 예시적인 도면이다. 이하, 뉴럴 네트워크 모델에 포함된 레이어(예: 도 3의 입력 레이어(310), 히든 레이어들(320), 및/또는 출력 레이어(330))는 적어도 하나의 오퍼레이터에 대응할 수 있다.Figure 4 is an example diagram for explaining quantization of weights according to an embodiment. Hereinafter, layers included in the neural network model (e.g., the input layer 310, hidden layers 320, and/or output layer 330 in FIG. 3) may correspond to at least one operator.
도 4를 참조하면, 모델(401)은 제1 데이터 타입의 제1 가중치 세트를 갖는 제1 오퍼레이터(405)를 포함할 수 있다. 모델(403)은 모델(401)이 양자화 됨으로써 생성될 수 있다. 예를 들어, 모델(403)의 양자화는, 모델(401)로부터 획득될 수 있다. 상기 제1' 오퍼레이터(407)는 상기 제1 오퍼레이터(405)가 양자화 됨으로써 생성될 수 있다. 상기 입력 데이터에 기반하여 모델(401, 403)에 포함된 연산에 의해 출력 데이터가 생성될 수 있다. 모델(403)은 제2 데이터 타입의 제2 가중치 세트를 갖는 제1' 오퍼레이터(407)를 포함할 수 있다. 일 실시예에서, 오퍼레이터는, 뉴럴 네트워크 및/또는 모델에 의해 수행되는 연산의 단위일 수 있다. 예를 들어, 모델은, 상이한 파라미터들(예: 가중치들 및/또는 바이어스들)에 의해 구분되는 오퍼레이터들의 순차적인 연결에 의해 형성될 수 있다.Referring to Figure 4, model 401 may include a first operator 405 with a first set of weights of a first data type. Model 403 can be created by quantizing model 401. For example, the quantization of model 403 may be obtained from model 401. The 'first' operator 407 can be created by quantizing the first operator 405. Output data may be generated by operations included in the models 401 and 403 based on the input data. Model 403 may include a first' operator 407 with a second set of weights of a second data type. In one embodiment, an operator may be a unit of computation performed by a neural network and/or model. For example, a model may be formed by sequential concatenation of operators distinguished by different parameters (eg, weights and/or biases).
일 실시예에 따르면, 상기 모델(401)은 적어도 하나의 오퍼레이터를 포함할 수 있다. 상기 제1 오퍼레이터(405)는 상기 모델(401)에 포함된 적어도 하나의 오퍼레이터 중 하나일 수 있다. 상기 제1 오퍼레이터(405)는 제1 데이터 타입의 제1 가중치 세트와 바이어스를 포함할 수 있다. 예를 들어, 상기 제1 데이터 타입은 부동 소수점 수(floating point number)를 나타낼 수 있다. 일 예로 상기 제1 데이터 타입은 32 비트들을 이용하여 부동 소수점 수를 나타낼 수 있다. 일 예로 상기 제1 데이터 타입은 16 비트들을 이용하여 부동 소수점 수를 나타낼 수 있다. 예를 들어, 상기 제2 데이터 타입은 정수를 나타낼 수 있다. 일 예로 상기 제2 데이터 타입은 8 비트들을 이용하여 정수를 나타낼 수 있다. 일 예로 상기 제2 데이터 타입은 4 비트들을 이용하여 정수를 나타낼 수 있다. 단, 본 개시의 실시예는 이에 한정되지 않는다. 전자 장치(예: 도 1의 전자 장치(101))가 상기 제1 데이터 타입 보다 상기 제2 데이터 타입의 정밀도(precision)(혹은 양자화 레벨로 지칭될 수 있음), 및/또는 범위(range)가 낮고, 상기 제1 데이터 타입 또는 상기 제2 데이터 타입 중에서, 상기 제2 데이터 타입에 기반하는 모델의 연산을 할 수 있는 경우, 후술되는 양자화 기능을 실행할 수 있다. 상기 모델(401)에서, 적어도 하나의 프로세서(예: 도 1의 프로세서(120))는, 입력 데이터로부터 제1 오퍼레이터의 연산을 통해 제1 서브 출력 데이터를 획득할 수 있다. 상기 제1 서브 출력 데이터는 상기 제1 오퍼레이터에 연결된 제2 오퍼레이터에 입력 데이터로 입력될 수 있다. 상기 적어도 하나의 프로세서(120)는 상기 제1 서브 출력 데이터로부터 제2 오퍼레이터의 연산을 통해 제2 서브 출력 데이터를 획득할 수 있다. 상기 제2 서브 출력 데이터는 상기 제2 오퍼레이터에 연결된 제3 오퍼레이터에 입력 데이터로 입력될 수 있다. 상기 적어도 하나의 프로세서는, 서브 출력 데이터에 대한 출력 오퍼레이터의 연산을 통해, 상기 모델(401)의 출력 데이터를 획득할 수 있다. 상기 출력 오퍼레이터는 상기 뉴럴 네트워크 모델의 출력 데이터를 생성할 수 있다. According to one embodiment, the model 401 may include at least one operator. The first operator 405 may be one of at least one operator included in the model 401. The first operator 405 may include a first set of weights and a bias of a first data type. For example, the first data type may represent a floating point number. As an example, the first data type may represent a floating point number using 32 bits. As an example, the first data type may represent a floating point number using 16 bits. For example, the second data type may represent an integer. For example, the second data type may represent an integer using 8 bits. For example, the second data type may represent an integer using 4 bits. However, the embodiments of the present disclosure are not limited thereto. An electronic device (e.g., the electronic device 101 of FIG. 1) has a higher precision (or may be referred to as a quantization level) and/or range of the second data type than the first data type. Low, if a model based on the second data type can be calculated among the first data type or the second data type, a quantization function described later can be executed. In the model 401, at least one processor (eg, processor 120 in FIG. 1) may obtain first sub-output data from input data through an operation of a first operator. The first sub-output data may be input as input data to a second operator connected to the first operator. The at least one processor 120 may obtain second sub-output data from the first sub-output data through an operation of a second operator. The second sub-output data may be input as input data to a third operator connected to the second operator. The at least one processor may obtain output data of the model 401 through an operation of an output operator on sub-output data. The output operator may generate output data of the neural network model.
일 실시예에 따르면, 상기 제1 오퍼레이터(405)에 포함된 제1 가중치 세트의 상기 제1 데이터 타입이 상기 가속기에 의해 지원되는 상기 제2 데이터 타입과 상이할 시, 상기 적어도 하나의 프로세서(120)는 상기 제1 데이터 타입의 제1 가중치 세트를 제2 데이터 타입의 제2 가중치 세트로 변경할 수 있다. 예를 들어, 상기 적어도 하나의 프로세서(120)는 16 비트들을 이용하여 나타낸 부동 소수점 수인 제1 가중치 세트를 8 비트들을 이용하여 나타낸 정수인 제2 가중치 세트로 변경할 수 있다. 예를 들어, 상기 적어도 하나의 프로세서(120)는 32 비트들을 이용하여 나타낸 부동 소수점 수인 제1 가중치 세트를 4 비트들을 이용하여 나타낸 정수인 제2 가중치 세트로 변경할 수 있다. 가속기란, 오퍼레이터에 대한 연산을 지원하기 위한 하드웨어 부품 또는 소프트웨어 어플리케이션일 수 있다. 상기 가속기는 모델을 실행하기 위한 오퍼레이터에 대한 연산을 지원할 수 있다. 일 실시예에 따르면, 상기 모델은 머신 러닝 모델을 포함할 수 있다. 상기 가속기의 종류에 대하여 도 2에 대하여 기재된 내용의 하단에 기재된 내용이 참조될 수 있다. 상기 가속기는, 뉴럴 네트워크와 관련된 연산을 처리할 수 있다. 예를 들어, 상기 가속기는, 특정 데이터 타입의 부동 소수점 수 및/또는 정수를 요구하는 행렬 연산을 수행할 수 있다. 상기 행렬 연산은, 상이한 행렬들의 곱셈 연산을 포함할 수 있다. 상기 행렬 연산을 수행하기 위하여, 가속기는, 특정 데이터 타입의 부동 소수점 수 및/또는 정수의 곱셈 연산을 위한 복수의 FPU들 및/또는 복수의 ALU(arithmetic logic unit)들을 포함할 수 있다. According to one embodiment, when the first data type of the first weight set included in the first operator 405 is different from the second data type supported by the accelerator, the at least one processor 120 ) may change the first weight set of the first data type to the second weight set of the second data type. For example, the at least one processor 120 may change a first weight set, which is a floating point number expressed using 16 bits, to a second weight set, which is an integer expressed using 8 bits. For example, the at least one processor 120 may change a first weight set, which is a floating point number expressed using 32 bits, to a second weight set, which is an integer expressed using 4 bits. An accelerator may be a hardware component or a software application to support operations for an operator. The accelerator may support operations for operators to execute models. According to one embodiment, the model may include a machine learning model. Regarding the type of the accelerator, the information described below with respect to FIG. 2 may be referred to. The accelerator can process calculations related to neural networks. For example, the accelerator may perform matrix operations requiring floating point numbers and/or integers of a specific data type. The matrix operations may include multiplication operations of different matrices. To perform the matrix operation, the accelerator may include a plurality of FPUs and/or a plurality of arithmetic logic units (ALUs) for multiplication operations of floating point numbers and/or integers of a specific data type.
일 실시예에 따르면, 오퍼레이터에 따라 가중치 세트의 데이터 타입이 다를 수 있다. 그러므로, 개별 오퍼레이터의 데이터 타입에 기반하여 개별 오퍼레이터의 양자화 여부가 결정될 수 있다. According to one embodiment, the data type of the weight set may vary depending on the operator. Therefore, whether to quantize an individual operator can be determined based on the data type of the individual operator.
일 실시예에 따르면, 상기 적어도 하나의 프로세서(120)는, 개별적인 오퍼레이터의 연산에 기반하여 입력 데이터의 세트로부터 서브 출력 데이터의 세트를 획득할 수 있다. 상기 적어도 하나의 프로세서(120)는, 적어도 하나의 오퍼레이터에 대한 연산을 수행함으로써 입력 데이터의 세트로부터 출력 데이터의 세트를 획득할 수 있다. 상기 적어도 하나의 프로세서(120)는, 상기 입력 데이터의 세트, 상기 서브 출력 데이터의 세트, 및 출력 데이터의 세트를 프로파일 정보로 저장할 수 있다. According to one embodiment, the at least one processor 120 may obtain a set of sub-output data from a set of input data based on an operation of an individual operator. The at least one processor 120 may obtain a set of output data from a set of input data by performing an operation on at least one operator. The at least one processor 120 may store the set of input data, the set of sub-output data, and the set of output data as profile information.
일 실시예에 따르면, 상기 제2 데이터 타입의 상기 제2 가중치 세트를 획득하기 위하여, 상기 적어도 하나의 프로세서(120)는, 상기 서브 출력 데이터의 세트의 분포에 기반하여, 상기 제1 가중치 세트에 대한 양자화를 수행함으로써 상기 제2 가중치 세트를 획득할 수 있다. According to one embodiment, in order to obtain the second set of weights of the second data type, the at least one processor 120 calculates the first set of weights based on the distribution of the set of sub-output data. The second weight set can be obtained by performing quantization.
예를 들어, 상기 적어도 하나의 프로세서(120)는, 실 사용 데이터인 입력 데이터의 세트에 대하여 상기 제1 오퍼레이터(405)에 대한 연산을 수행함으로써 서브 출력 데이터의 세트를 획득할 수 있다. 상기 제1 오퍼레이터(405)의 제1 가중치에 대한 양자화는 상기 서브 출력 데이터의 구간에 기반하여 생성될 수 있다. 일 예로, 부동 소수점 수를 표현하기 위한 제1 데이터 타입이 표현할 수 있는 숫자 구간은 제1 구간일 수 있다. 정수를 표현하기 위한 제2 데이터 타입이 표현할 수 있는 숫자 구간은 제2 구간일 수 있다. 일 예로, 상기 제1 구간은 음의 무한대에서 양의 무한대까지 일 수 있다. 일 예로, 상기 제2 구간은 8 비트들로 표현하는 데이터 타입의 경우, -128에서 127까지일 수 있다. 일 예로, 상기 제2 구간은 16 비트로 표현하는 데이터 타입의 경우, -32768에서 32767까지일 수 있다. 일 예로, 상기 서브 출력 데이터의 세트가 -120에서 110 사이의 값을 가질 경우, 상기 제1 오퍼레이터(405)의 제1 가중치 세트는 부동 소수점 수를 표현하기 위한 데이터 타입 대신 8 비트들의 정수로 표현되는 데이터 타입으로 기재되는 것이, 연산 속도 및 가속기 사용에 있어 유리할 수 있다. 그러므로, 상기 적어도 하나의 프로세서(120)는, 상기 서브 출력 데이터의 구간에 기반하여, 상기 제1 가중치 세트의 데이터 타입을 변경할 수 있다. 상기 적어도 하나의 프로세서(120)는, 양자화를 통해 상기 제1 구간의 수를 표현하기 위한 제1 데이터 타입의 상기 제1 가중치 세트로부터 상기 제1 구간의 길이보다 작은 길이를 갖는 제2 구간의 수를 표현하기 위한 제2 데이터 타입의 제2 가중치 세트를 획득할 수 있다. 상기 적어도 하나의 프로세서(120)는, 양자화된 제2 가중치 세트를 메모리에 저장할 수 있다. 상기 적어도 하나의 프로세서(120)는, 뉴럴 네트워크 모델이 실행될 시, 상기 제2 가중치 세트에 기반하여 상기 제1 오퍼레이터(405)에 대한 연산을 수행함으로써, 출력 데이터를 획득할 수 있다. For example, the at least one processor 120 may obtain a set of sub-output data by performing an operation on the first operator 405 on a set of input data that is actually used data. Quantization of the first weight of the first operator 405 may be generated based on the section of the sub-output data. As an example, the numeric interval that can be expressed by the first data type for expressing a floating point number may be the first interval. The numeric interval that can be expressed by the second data type for expressing an integer may be the second interval. As an example, the first section may range from negative infinity to positive infinity. As an example, the second interval may be from -128 to 127 in the case of a data type expressed by 8 bits. For example, in the case of a data type expressed in 16 bits, the second interval may be from -32768 to 32767. For example, when the set of sub-output data has a value between -120 and 110, the first weight set of the first operator 405 is expressed as an 8-bit integer instead of a data type for expressing a floating point number. Being described as a data type that can be used can be advantageous in terms of computational speed and use of accelerators. Therefore, the at least one processor 120 may change the data type of the first weight set based on the section of the sub-output data. The at least one processor 120 determines the number of second sections having a length smaller than the length of the first section from the first weight set of a first data type for expressing the number of the first sections through quantization. A second weight set of a second data type for expressing can be obtained. The at least one processor 120 may store the quantized second weight set in memory. When the neural network model is executed, the at least one processor 120 may obtain output data by performing an operation on the first operator 405 based on the second weight set.
일 실시예에 따르면, 상기 양자화는 오퍼레이터 별로 수행될 수 있다. 제1 오퍼레이터의 가중치 세트의 데이터 타입이 가속기가 지원하는 데이터 타입과 달라, 제1 오퍼레이터에 대해 양자화가 진행되더라도, 제2 오퍼레이터의 가중치 세트의 데이터 타입이 가속기가 지원하는 데이터 타입과 같다면 제2 오퍼레이터에 대해 양자화가 진행되지 않을 수 있다. According to one embodiment, the quantization may be performed for each operator. Even if the data type of the first operator's weight set is different from the data type supported by the accelerator and quantization is performed for the first operator, if the data type of the second operator's weight set is the same as the data type supported by the accelerator, the second operator Quantization may not proceed for the operator.
일 실시예에 따르면, 상기 적어도 하나의 프로세서(120)는, 상기 제1 가중치 세트의 해시 값과 함께, 상기 제2 가중치 세트를 상기 메모리에 저장할 수 있다. 상기 적어도 하나의 프로세서(120)는, 상기 모델(401)이 양자화 된 후, 상기 모델(401)이 실행될 시, 상기 제1 가중치 세트의 해시 값에 기반하여 제2 가중치 세트를 식별할 수 있다. 상기 적어도 하나의 프로세서(120)는, 상기 제1 가중치 세트의 해시 값에 대응하는 제2 가중치 세트에 기반하여, 상기 제1 오퍼레이터에 대한 연산을 수행할 수 있다. According to one embodiment, the at least one processor 120 may store the second weight set in the memory along with a hash value of the first weight set. The at least one processor 120 may identify a second weight set based on a hash value of the first weight set when the model 401 is executed after the model 401 is quantized. The at least one processor 120 may perform an operation for the first operator based on a second weight set corresponding to a hash value of the first weight set.
일 실시예에 따르면, 가속기란, 오퍼레이터에 대한 연산을 지원하기 위한 하드웨어 부품 또는 소프트웨어 어플리케이션일 수 있다. 상기 가속기는 모델을 실행하기 위한 오퍼레이터에 대한 연산을 지원할 수 있다. 일 실시예에 따르면, 상기 모델은 머신 러닝 모델을 포함할 수 있다. 상기 가속기의 종류에 대하여 도 2에 대하여 기재된 내용의 하단에 기재된 내용이 참조될 수 있다. According to one embodiment, an accelerator may be a hardware component or a software application to support operations for an operator. The accelerator may support operations for operators to execute models. According to one embodiment, the model may include a machine learning model. Regarding the type of the accelerator, the information described below with respect to FIG. 2 may be referred to.
상기 가속기는, 뉴럴 네트워크와 관련된 연산을 처리할 수 있다. 예를 들어, 상기 가속기는, 특정 데이터 타입의 부동 소수점 수 및/또는 정수를 요구하는 행렬 연산을 수행할 수 있다. 상기 행렬 연산은, 상이한 행렬들의 곱셈 연산을 포함할 수 있다. 상기 행렬 연산을 수행하기 위하여, 가속기는, 특정 데이터 타입의 부동 소수점 수 및/또는 정수의 곱셈 연산을 위한 복수의 FPU들 및/또는 복수의 ALU(arithmetic logic unit)들을 포함할 수 있다. 상기 FPU는 부동 소수점 연산을 효율적으로 처리하기 위한 모듈일 수 있다. 상기 ALU는 정수 연산을 효율적으로 처리하기 위한 모듈일 수 있다. 상기 가속기는 모델에 따라 높은 정밀도를 갖는 데이터의 연산은 지원하지 않을 수 있다. 예를 들어, 상기 가속기는 부동 소수점 수를 표현하기 위한 제1 데이터 타입이 아닌 정수를 표현하기 위한 제2 데이터 타입에 기반하는 연산을 수행할 수 있다. 예를 들어, 상기 가속기는 64 비트들을 통해 정수를 표현하기 위한 제1 데이터 타입이 아닌 8 비트들을 통해 정수를 표현하기 위한 제2 데이터 타입에 기반하는 연산을 수행할 수 있다. 상기 가속기는 범용성을 위해 주로 낮은 정밀도를 갖는 연산을 수행할 수 있다. 그러므로, 상기 적어도 하나의 프로세서(120)는 제1 데이터 타입의 제1 가중치 세트를 제2 데이터 타입의 제2 가중치 세트로 변경함으로써 가속기 활용도를 높일 수 있다. The accelerator can process calculations related to neural networks. For example, the accelerator may perform matrix operations requiring floating point numbers and/or integers of a specific data type. The matrix operations may include multiplication operations of different matrices. To perform the matrix operation, the accelerator may include a plurality of FPUs and/or a plurality of arithmetic logic units (ALUs) for multiplication operations of floating point numbers and/or integers of a specific data type. The FPU may be a module for efficiently processing floating point operations. The ALU may be a module for efficiently processing integer operations. The accelerator may not support operations on high-precision data depending on the model. For example, the accelerator may perform an operation based on a second data type for representing integers rather than a first data type for representing floating point numbers. For example, the accelerator may perform an operation based on a second data type for representing an integer through 8 bits rather than a first data type for representing an integer through 64 bits. The accelerator can mainly perform low-precision calculations for versatility. Therefore, the at least one processor 120 can increase accelerator utilization by changing the first weight set of the first data type to the second weight set of the second data type.
일 실시예에 따르면, 상기 모델(403)은 적어도 하나의 오퍼레이터를 포함할 수 있다. 상기 제1' 오퍼레이터(407)는 상기 모델(403)에 포함된 적어도 하나의 오퍼레이터 중 하나일 수 있다. 상기 제1' 오퍼레이터(407)는 제2 데이터 타입에 기반한 제2 가중치 세트와 바이어스를 포함할 수 있다. 예를 들어, 상기 제2 데이터 타입은 부동 소수점 수(floating point number)를 나타낼 수 있다. 일 예로 상기 제2 데이터 타입은 16 비트들을 이용하여 부동 소수점 수를 나타낼 수 있다. 예를 들어, 상기 제2 데이터 타입은 정수를 나타낼 수 있다. 일 예로 상기 제2 데이터 타입은 8 비트들을 이용하여 정수를 나타낼 수 있다. 일 예로 상기 제2 데이터 타입은 4 비트들을 이용하여 정수를 나타낼 수 있다. 일 예로 상기 제2 데이터 타입은 2 비트들을 이용하여 정수를 나타낼 수 있다.According to one embodiment, the model 403 may include at least one operator. The 'first' operator 407 may be one of at least one operator included in the model 403. The 'first' operator 407 may include a second set of weights and a bias based on a second data type. For example, the second data type may represent a floating point number. For example, the second data type may represent a floating point number using 16 bits. For example, the second data type may represent an integer. For example, the second data type may represent an integer using 8 bits. For example, the second data type may represent an integer using 4 bits. For example, the second data type may represent an integer using 2 bits.
도 5는 일 실시예에 따른 전자 장치에 포함된 메모리의 동작을 설명하기 위한 블록도이다.Figure 5 is a block diagram for explaining the operation of a memory included in an electronic device according to an embodiment.
도 5를 참조하면, 전자 장치(예: 도 1의 전자 장치(101))는 메모리(501), 제1 프로세서(511), 및 제2 프로세서(521)를 포함할 수 있다. 상기 메모리(501)는 프로파일 정보(507)를 저장할 수 있다. 상기 프로파일 정보(507)는 입력 데이터(502), 모델(503)에 대한 데이터, 및 출력 데이터(505)를 포함할 수 있다. 상기 모델(503)은 제k 오퍼레이터(504)를 포함한 적어도 하나의 오퍼레이터를 포함할 수 있다. 상기 제k 오퍼레이터(504)는 제1 가중치 세트와 바이어스를 포함할 수 있다. 상기 제k 오퍼레이터(504)는 양자화기(514)를 통해 양자화 될 수 있다. 상기 제k 오퍼레이터(504)는 양자화 과정을 거쳐 제k' 오퍼레이터(506)로 변경될 수 있다. 제1 프로세서(511)는 양자화기(514)를 포함할 수 있다. 상기 제1 프로세서(511) 및/또는 상기 제2 프로세서(521)는 FPU(floating point unit) 및/또는 가속기를 포함할 수 있다. 가속기란, 오퍼레이터에 대한 연산을 지원하기 위한 하드웨어 부품 또는 소프트웨어 어플리케이션일 수 있다. 상기 가속기는 모델을 실행하기 위한 오퍼레이터에 대한 연산을 지원할 수 있다. 일 실시예에 따르면, 상기 모델은 머신 러닝 모델을 포함할 수 있다. 상기 가속기의 종류에 대하여 도 2에 대하여 기재된 내용의 하단에 기재된 내용이 참조될 수 있다. 상기 메모리(501), 제1 프로세서(511), 및 제2 프로세서(521)는, 통신 버스(531)(a communication bus)와 같은 전자 부품(electronical component)에 의해 서로 전기적으로 및/또는 작동적으로 연결될 수 있다(electronically and/or operably coupled with each other). 이하에서, 하드웨어들이 작동적으로 결합된 것은, 하드웨어들 중 제1 하드웨어에 의해 제2 하드웨어가 제어되도록, 하드웨어들 사이의 직접적인 연결, 또는 간접적인 연결이 유선으로, 또는 무선으로 수립된 것을 의미할 수 있다. 일 실시예에 따르면, 상기 프로세서(예: 제1 프로세서(511) 및/또는 제2 프로세서(521))는 상기 FPU를 통해 상기 FPU가 지원하는 데이터 타입을 갖는 오퍼레이터들에 대한 연산을 수행할 수 있다. 단, 본 개시의 실시예는 이에 한정되지 않을 수 있다. 일 실시예에 따르면, 상기 프로세서는 상기 가속기를 통해 상기 가속기가 지원하는 데이터 타입을 갖는 오퍼레이터들에 대한 연산을 수행할 수 있다. 단, 본 개시의 실시예는 이에 한정되지 않을 수 있다. 일 실시예에 따르면, 상기 양자화기는, 가중치 세트 및 바이어스를 양자화 하기 위한 소프트웨어 어플리케이션일 수 있다. 상기 제1 프로세서(511)는 상기 양자화기(514)를 통해 제1 데이터 타입의 제1 가중치 및 바이어스를 제2 데이터 타입의 제2 가중치 및 바이어스로 양자화 할 수 있다. Referring to FIG. 5 , an electronic device (eg, the electronic device 101 of FIG. 1 ) may include a memory 501 , a first processor 511 , and a second processor 521 . The memory 501 can store profile information 507. The profile information 507 may include input data 502, data for the model 503, and output data 505. The model 503 may include at least one operator including the kth operator 504. The kth operator 504 may include a first set of weights and a bias. The kth operator 504 can be quantized through the quantizer 514. The kth operator 504 can be changed to the k'th operator 506 through a quantization process. The first processor 511 may include a quantizer 514. The first processor 511 and/or the second processor 521 may include a floating point unit (FPU) and/or an accelerator. An accelerator may be a hardware component or a software application to support operations for an operator. The accelerator may support operations for operators to execute models. According to one embodiment, the model may include a machine learning model. Regarding the type of the accelerator, the information described below with respect to FIG. 2 may be referred to. The memory 501, the first processor 511, and the second processor 521 are electrically and/or operationally connected to each other by an electronic component such as a communication bus 531. Can be connected (electronically and/or operably coupled with each other). Hereinafter, hardware being operatively combined will mean that a direct connection or an indirect connection between the hardware is established, wired or wireless, such that the second hardware is controlled by the first hardware among the hardware. You can. According to one embodiment, the processor (e.g., the first processor 511 and/or the second processor 521) may perform operations on operators having data types supported by the FPU through the FPU. there is. However, embodiments of the present disclosure may not be limited thereto. According to one embodiment, the processor may perform operations on operators having data types supported by the accelerator through the accelerator. However, embodiments of the present disclosure may not be limited thereto. According to one embodiment, the quantizer may be a software application for quantizing a weight set and bias. The first processor 511 may quantize the first weight and bias of the first data type into the second weight and bias of the second data type through the quantizer 514.
일 실시예에 따르면 상기 제1 프로세서(511)는 CPU(central processing unit)일 수 있다. 상기 제1 프로세서(511)는 상기 양자화기(514)를 통해 제k 오퍼레이터(504)의 제1 가중치 및 바이어스를 양자화 하여 제k' 오퍼레이터(506)를 생성할 수 있다. 상기 FPU는 양자화 되기 전의 높은 정밀도(high precision)를 요구하는 제1 데이터 타입의 제1 가중치에 대하여 연산을 수행할 수 있다. 상기 FPU는 부동 소수점 연산을 효율적으로 처리하기 위한 모듈일 수 있다. 상기 양자화기(514)는, 모델의 연산을 위해 제공되는 어플리케이션 및/또는 API(application programming interface)(예: 런타임 라이브러리)를 포함할 수 있다. 실시예가 이에 제한되는 것은 아니며, 상기 양자화기(514)는, 가속기 및/또는 상기 가속기를 제어하기 위한 어플리케이션의 조합을 포함할 수 있다. 일 실시예에 따르면, 상기 양자화기(514)는, 상기 가속기에 의해 연산되는 가중치 세트 및 바이어스를 양자화 하기 위한 소프트웨어 어플리케이션일 수 있다. 상기 프로세서는 상기 양자화기(514)를 통해 제1 데이터 타입의 제1 가중치 및 바이어스를 제2 데이터 타입의 제2 가중치 및 바이어스로 양자화 할 수 있다. 상기 가속기는 모델을 실행하기 위한 오퍼레이터에 대한 연산을 지원할 수 있다. According to one embodiment, the first processor 511 may be a central processing unit (CPU). The first processor 511 may generate the k'th operator 506 by quantizing the first weight and bias of the kth operator 504 through the quantizer 514. The FPU can perform an operation on the first weight of the first data type that requires high precision before quantization. The FPU may be a module for efficiently processing floating point operations. The quantizer 514 may include an application and/or an application programming interface (API) (eg, runtime library) provided for model calculation. The embodiment is not limited to this, and the quantizer 514 may include a combination of an accelerator and/or an application for controlling the accelerator. According to one embodiment, the quantizer 514 may be a software application for quantizing the weight set and bias calculated by the accelerator. The processor may quantize the first weight and bias of the first data type into the second weight and bias of the second data type through the quantizer 514. The accelerator may support operations for operators to execute models.
일 실시예에 따르면, 상기 제1 프로세서(511)는 오퍼레이터에 대한 연산(computation)을 위한 상기 가속기에 의해 지원되는 상기 제2 데이터 타입을 식별할 수 있다. 상기 제2 데이터 타입은 낮은 정밀도(low precision)에 대응할 수 있다. 예를 들어, 상기 가속기는 8 비트들의 정수로 표현되는 데이터 타입과 16 비트들의 정수로 표현되는 데이터 타입만을 지원할 수 있다. 상기 제1 프로세서(511)는 상기 제2 데이터 타입과 상이한 상기 제1 오퍼레이터에 포함된 제1 가중치 세트의 제1 데이터 타입을 식별할 수 있다. 예를 들어, 상기 제1 데이터 타입은 32 비트들의 부동 소수점 수로 표현되는 데이터 타입일 수 있다. 상기 제1 프로세서(511)는 상기 제2 데이터 타입과 상이한 상기 제1 데이터 타입을 식별함에 기반하여, 상기 모델(503)에 포함된 적어도 하나의 오퍼레이터 중 하나인 상기 제k 오퍼레이터(504)에 포함된 상기 제1 데이터 타입의 상기 제1 가중치 세트를 획득할 수 있다. 예를 들어, 상기 모델(503)의 제k 오퍼레이터(504)가 32 비트들의 부동 소수점 수로 표현되는 제1 데이터 타입의 제1 가중치를 갖고, 상기 가속기들은 8 비트들의 정수로 표현되는 제2 데이터 타입을 지원할 수 있다. 상기 제1 프로세서(511)는 상기 제1 데이터 타입과 상기 제2 데이터 타입이 상이함을 식별함에 기반하여, 상기 제k 오퍼레이터(504)의 제1 가중치 세트를 획득할 수 있다.According to one embodiment, the first processor 511 may identify the second data type supported by the accelerator for computation for an operator. The second data type may correspond to low precision. For example, the accelerator may support only data types expressed as 8-bit integers and data types expressed as 16-bit integers. The first processor 511 may identify the first data type of the first weight set included in the first operator that is different from the second data type. For example, the first data type may be a data type expressed as a 32-bit floating point number. The first processor 511 is included in the kth operator 504, which is one of at least one operator included in the model 503, based on identifying the first data type that is different from the second data type. The first weight set of the first data type may be obtained. For example, the kth operator 504 of the model 503 has a first weight of a first data type expressed as a floating point number of 32 bits, and the accelerators have a first weight of a second data type expressed as an integer of 8 bits. can support. The first processor 511 may obtain the first weight set of the kth operator 504 based on identifying that the first data type and the second data type are different.
일 실시예에 따르면, 상기 제1 프로세서(511)는 상기 획득한 제1 가중치 세트를 양자화 할 수 있다. 일 실시예에 따르면, 상기 제2 데이터 타입의 상기 제2 가중치 세트를 획득하기 위하여, 상기 제1 프로세서(511)는, 상기 서브 출력 데이터의 세트의 분포에 기반하여, 상기 제1 가중치 세트에 대한 양자화를 수행함으로써 상기 제2 가중치 세트를 획득할 수 있다. 예를 들어, 상기 서브 출력 데이터의 세트가 -120에서 110 사이의 값을 가질 경우, 상기 제k 오퍼레이터의 제1 가중치 세트는 부동 소수점 수를 표현하기 위한 데이터 타입 대신 가속기에 의해 지원되는 8 비트들의 정수로 표현되는 데이터 타입으로 기재되는 것이, 연산 속도 및 전자 장치에 포함되는 가속기 사용에 있어 유리할 수 있다. 그러므로, 상기 제1 프로세서(511)는, 상기 서브 출력 데이터의 구간에 기반하여, 상기 제1 가중치 세트의 데이터 타입을 변경할 수 있다. 상기 제1 프로세서(511)는, 양자화를 통해 상기 제1 구간의 수를 표현하기 위한 제1 데이터 타입의 상기 제1 가중치 세트로부터 상기 제1 구간의 길이보다 작은 길이를 갖는 제2 구간의 수를 표현하기 위한 제2 데이터 타입의 제2 가중치 세트를 획득할 수 있다. 상기 제1 프로세서(511)는, 양자화된 제2 가중치 세트를 메모리(501)에 저장할 수 있다. 상기 제1 프로세서(511)는, 뉴럴 네트워크 모델(503)을 수행할 시, 상기 제2 가중치 세트에 기반하여 상기 제k 오퍼레이터(504)에 대한 연산을 수행함으로써, 출력 데이터를 획득할 수 있다. According to one embodiment, the first processor 511 may quantize the obtained first weight set. According to one embodiment, in order to obtain the second weight set of the second data type, the first processor 511 calculates the first weight set based on the distribution of the set of sub-output data. The second weight set can be obtained by performing quantization. For example, if the set of sub-output data has values between -120 and 110, the first weight set of the kth operator is the 8-bit set supported by the accelerator instead of the data type for representing floating point numbers. Being written as a data type expressed as an integer may be advantageous in terms of computational speed and use of accelerators included in electronic devices. Therefore, the first processor 511 can change the data type of the first weight set based on the section of the sub-output data. The first processor 511 calculates the number of second sections having a length smaller than the length of the first section from the first weight set of the first data type for expressing the number of the first sections through quantization. A second weight set of a second data type for expression may be obtained. The first processor 511 may store the quantized second weight set in the memory 501. When performing the neural network model 503, the first processor 511 may obtain output data by performing an operation on the kth operator 504 based on the second weight set.
일 실시예에 따르면, 상기 양자화를 통해 획득된 제k' 오퍼레이터(506)의 제2 가중치 세트의 제2 데이터 타입은 상기 가속기에 의해 연산 가능할 수 있다. 상기 가속기가 상기 제2 데이터 타입을 지원하기 때문이다. 상기 제1 프로세서(511)는 상기 제2 가중치 세트에 대한 오퍼레이터의 연산을 상기 가속기들 중 적어도 하나에서 진행할 수 있다. 상기 제1 프로세서(511)는 뉴럴 네트워크 모델이 2개 이상 실행될 시에, 각 모델에 포함된 오퍼레이터들의 연산이 수행될 가속기를 지정할 수 있다. 그러므로, 양자화 되지 않은 모델의 연산 속도 및 효율에 비해 양자화 된 모델의 연산 속도 및 효율이 높을 수 있다. 사용자에 의해 모델에 입력된 입력 데이터 및 출력 데이터가 양자화 된 모델의 정확도 평가에 이용되므로, 상기 전자 장치(101)는 양자화에 기반하여 상기 사용자에게 개인화 된(personalized) 모델을 획득할 수 있다. According to one embodiment, the second data type of the second weight set of the k'th operator 506 obtained through the quantization may be operable by the accelerator. This is because the accelerator supports the second data type. The first processor 511 may perform an operator's calculation for the second weight set in at least one of the accelerators. When two or more neural network models are executed, the first processor 511 can designate an accelerator on which operations of operators included in each model will be performed. Therefore, the computation speed and efficiency of a quantized model may be higher than the computation speed and efficiency of a non-quantized model. Since the input data and output data input to the model by the user are used to evaluate the accuracy of the quantized model, the electronic device 101 can obtain a model personalized to the user based on quantization.
도 5에서 상술된 동작에 의해 양자화된 오퍼레이터를 획득한 이후, 상기 전자 장치는, 상기 양자화된 오퍼레이터를 포함하는 모델에 대한 신뢰도를 측정할 수 있다. 상기 신뢰도를 측정한 결과에 기반하여, 전자 장치는, 상기 모델에 포함된 기존 오퍼레이터를, 상기 양자화된 오퍼레이터로 대체할지 여부를 결정할 수 있다. 이하 도 6에서, 신뢰도 측정 동작이 설명된다.After obtaining the quantized operator through the operation described above in FIG. 5, the electronic device can measure the reliability of a model including the quantized operator. Based on the result of measuring the reliability, the electronic device may determine whether to replace the existing operator included in the model with the quantized operator. In Figure 6 below, the reliability measurement operation is explained.
도 6은 일 실시예에 따른 전자 장치에서 실행되는 모델의 신뢰도 평가를 설명하기 위한 블록도이다.FIG. 6 is a block diagram illustrating reliability evaluation of a model executed in an electronic device according to an embodiment.
도 6을 참조하면, 모델(611)은 뉴럴 네트워크를 포함할 수 있다. 상기 모델(611)은 제1 오퍼레이터(613)를 포함한 적어도 하나의 오퍼레이터를 포함할 수 있다. 상기 모델(621)은 모델(611)이 양자화 됨으로써 생성될 수 있다. 예를 들어, 모델(621)의 양자화는, 도 5에서 설명된 동작에 의해 모델(611)로부터 획득될 수 있다. 상기 제1' 오퍼레이터(623)는 상기 제1 오퍼레이터(613)가 양자화 됨으로써 생성될 수 있다. 상기 입력 데이터(601)에 기반하여 모델(611)에 포함된 연산에 의해 제1 출력 데이터(615)가 생성될 수 있다. 상기 입력 데이터(601)에 기반하여 상기 모델(621)에 포함된 연산에 의해 제2 출력 데이터(625)가 생성될 수 있다. Referring to FIG. 6, model 611 may include a neural network. The model 611 may include at least one operator including a first operator 613. The model 621 can be created by quantizing the model 611. For example, the quantization of model 621 may be obtained from model 611 by the operation described in FIG. 5 . The 'first' operator 623 may be created by quantizing the first operator 613. First output data 615 may be generated by an operation included in the model 611 based on the input data 601. Second output data 625 may be generated by an operation included in the model 621 based on the input data 601.
일 실시예에 따르면, 적어도 하나의 프로세서(예: 도 1의 프로세서(120))는, 상기 제1 출력 데이터(615)와 상기 제2 출력 데이터(625)의 차이에 기반하여 양자화 된 모델(621)의 신뢰도를 평가할 수 있다. 상기 모델(621)은 상기 모델(611)을 양자화 함으로써 생성된 것이므로, 상기 모델(621)로 상기 모델(611)을 대체하기 위하여, 상기 모델(621)의 신뢰도가 평가될 수 있다. 상기 적어도 하나의 프로세서(120)는, 상기 모델(611)의 제1 출력 데이터(615)와 상기 모델(621)의 제2 출력 데이터(625)를 비교하여 신뢰도를 평가할 수 있다. 동일한 입력 데이터에 대한 출력 데이터의 차이가 기준 값 미만일 시, 상기 모델(621)이 상기 모델(611)을 대체하더라도 문제가 발생할 가능성이 낮기 때문일 수 있다. 상기 적어도 하나의 프로세서(120)는, 상기 모델(611)의 실행에 의해 생성된 프로파일 정보로부터, 상기 적어도 하나의 오퍼레이터에 대한 연산을 수행함으로써 획득된 제1 출력 데이터(615)의 세트를 식별할 수 있다. 상기 모델(611)은 양자화 및/또는 신뢰도 평가에 필요한 횟수 이상으로 실행되었기 때문에, 상기 프로파일 정보에는 지정된 개수 이상의 입력 데이터, 지정된 개수 이상의 서브 출력 데이터, 지정된 개수 이상의 출력 데이터가 포함될 수 있다. 그러므로 상기 프로파일 정보에는 모델(611)에 대한 입력 데이터의 세트, 서브 출력 데이터의 세트, 및 출력 데이터의 세트가 포함될 수 있다.According to one embodiment, at least one processor (e.g., processor 120 in FIG. 1) generates a quantized model 621 based on the difference between the first output data 615 and the second output data 625. ) can be evaluated. Since the model 621 is created by quantizing the model 611, the reliability of the model 621 can be evaluated in order to replace the model 611 with the model 621. The at least one processor 120 may evaluate reliability by comparing first output data 615 of the model 611 and second output data 625 of the model 621. This may be because when the difference between output data for the same input data is less than the reference value, there is a low possibility that a problem will occur even if the model 621 replaces the model 611. The at least one processor 120 may identify, from the profile information generated by execution of the model 611, a set of first output data 615 obtained by performing an operation for the at least one operator. You can. Since the model 611 has been executed more times than necessary for quantization and/or reliability evaluation, the profile information may include more than a specified number of input data, more than a specified number of sub-output data, and more than a specified number of output data. Therefore, the profile information may include a set of input data, a set of sub-output data, and a set of output data for the model 611.
일 실시예에 따르면, 상기 적어도 하나의 프로세서(120)는, 상기 제2 가중치 세트를 획득하는 것에 기반하여, 상기 모델(621)에 대한 신뢰도 평가를 수행할 수 있다. 예를 들어, 상기 적어도 하나의 프로세서(120)는, 상기 모델(621)의 생성이 완료되는 것을 식별함에 기반하여, 상기 모델(621)에 대한 신뢰도 평가를 수행할 수 있다. 일 실시예에 따르면, 상기 적어도 하나의 프로세서(120)는, 상기 프로파일 정보로부터 상기 적어도 하나의 오퍼레이터에 대한 연산을 수행함으로써 획득된 상기 제1 출력 데이터(615)의 세트를 식별할 수 있다. 상기 적어도 하나의 프로세서(120)는, 상기 제2 가중치 세트에 기반하여 상기 적어도 하나의 오퍼레이터에 대한 연산을 수행함으로써, 상기 입력 데이터(601)의 세트로부터 제2 출력 데이터(625)의 세트를 획득할 수 있다. 예를 들어, 상기 적어도 하나의 프로세서(120)는, 상기 모델(621)에서, 상기 입력 데이터(601)에 대한 연산을 통해 제2 출력 데이터(625)의 세트를 획득할 수 있다. 상기 적어도 하나의 프로세서(120)는, 상기 제1 출력 데이터(615) 및 대응하는 상기 제2 출력 데이터(625) 사이의 차이 값(difference)의 세트에 기반하여, 상기 모델(611)의 제1 오퍼레이터(613)에 포함된 상기 제1 가중치 세트를, 상기 제2 가중치 세트로 교체할 수 있다. 상기 제1 출력 데이터(615)와 상기 제2 출력 데이터(625)의 차이 값의 세트들이 모두 기준 값 미만일 시, 상기 모델(621)이 상기 모델(611)을 대체하더라도 문제 발생 가능성이 낮기 때문이다. 예를 들어, 상기 차이 값의 세트들이 약 0.5% 약 0.7%, 약 0.5%, 약 0.2%, 약 0.9%이고, 상기 기준 값이 약 1%인 경우, 상기 모델(621)은 상기 모델(611)을 대체할 수 있다. 다만, 상기 제1 출력 데이터(615)와 상기 제2 출력 데이터(625)의 차이 값의 세트 중 적어도 하나의 차이 값이 기준 값 이상일 시, 상기 모델(621)은 상기 모델(611)을 대체할 수 없다. 예를 들어, 상기 차이 값의 세트들이 약 0.5% 약 0.7%, 약 0.5%, 약 3.5%, 약 0.9%이고, 상기 기준 값이 약 1%인 경우 상기 모델(621)은 상기 모델(611)을 대체할 수 없다. 상기 제1 출력 데이터(615)와 상기 제2 출력 데이터(625)의 차이 값의 세트 중 적어도 하나의 차이 값이 기준 값 이상일시, 상기 적어도 하나의 프로세서(120)는, 양자화를 다시 수행하거나, 서버를 통해 양자화를 수행할 수 있다. According to one embodiment, the at least one processor 120 may perform a reliability evaluation on the model 621 based on obtaining the second weight set. For example, the at least one processor 120 may perform a reliability evaluation on the model 621 based on identifying that the creation of the model 621 is complete. According to one embodiment, the at least one processor 120 may identify the set of the first output data 615 obtained by performing an operation for the at least one operator from the profile information. The at least one processor 120 obtains a second set of output data 625 from the set of input data 601 by performing an operation for the at least one operator based on the second weight set. can do. For example, the at least one processor 120 may obtain a set of second output data 625 through an operation on the input data 601 in the model 621. The at least one processor 120 generates a first output data of the model 611 based on a set of difference values between the first output data 615 and the corresponding second output data 625. The first weight set included in the operator 613 can be replaced with the second weight set. This is because when the sets of difference values between the first output data 615 and the second output data 625 are all less than the reference value, there is a low possibility of a problem occurring even if the model 621 replaces the model 611. . For example, if the sets of difference values are about 0.5%, about 0.7%, about 0.5%, about 0.2%, about 0.9%, and the reference value is about 1%, then the model 621 is ) can be replaced. However, when at least one difference value among the set of difference values between the first output data 615 and the second output data 625 is greater than or equal to the reference value, the model 621 may replace the model 611. I can't. For example, if the sets of difference values are about 0.5%, about 0.7%, about 0.5%, about 3.5%, about 0.9%, and the reference value is about 1%, then the model 621 is the model 611. cannot replace . When at least one difference value among the set of difference values between the first output data 615 and the second output data 625 is greater than or equal to a reference value, the at least one processor 120 performs quantization again, or Quantization can be performed through the server.
일 실시예에 따르면, 상기 제1 출력 데이터(615)와 상기 제2 출력 데이터(625)의 차이 값의 세트 중 적어도 하나의 차이 값이 기준 값 이상일 시, 상기 적어도 하나의 프로세서(120)는, 양자화를 다시 수행할 수 있다. 양자화에는 시간 및 자원이 소요되므로, 상기 모델(611)의 양자화가 수행되는 시간대가 조정될 수 있다. 예를 들어, 상기 적어도 하나의 프로세서(120)는, 사용량이 적은 시간대에 상기 모델(611)의 양자화를 수행할 수 있다. 일 예로, 심야 시간대에 상기 모델(611)의 양자화가 수행될 수 있다. 일 예로, 시간대에 따른 휴대폰 사용량에 기반하여, 휴대폰 사용량이 적은 시간대에 양자화가 수행될 수 있다. 학생의 경우 상기 휴대폰 사용량이 적은 시간대는 수업 시간대일 수 있다. 직장인의 경우 상기 휴대폰 사용량이 적은 시간대는 업무 시간대일 수 있다. 예를 들어, 상기 적어도 하나의 프로세서(120)는, 사용자에게 양자화가 수행될 시간대를 선택하도록 가이드하기 위한 알림을 디스플레이를 통해 표시할 수 있다. 상기 적어도 하나의 프로세서(120)는, 사용자가 지정한 시간대에 양자화를 수행할 수 있다. According to one embodiment, when at least one difference value among the set of difference values between the first output data 615 and the second output data 625 is greater than or equal to a reference value, the at least one processor 120, Quantization can be performed again. Since quantization takes time and resources, the time zone in which quantization of the model 611 is performed can be adjusted. For example, the at least one processor 120 may perform quantization of the model 611 during off-peak hours. As an example, quantization of the model 611 may be performed in the middle of the night. For example, based on the amount of mobile phone usage depending on the time of day, quantization may be performed during times when mobile phone usage is low. In the case of students, the times when mobile phone usage is low may be class times. For office workers, the times when mobile phone usage is low may be business hours. For example, the at least one processor 120 may display a notification on the display to guide the user to select a time zone at which quantization will be performed. The at least one processor 120 may perform quantization at a time designated by the user.
일 실시예에 따르면, 상기 제1 출력 데이터(615)와 상기 제2 출력 데이터(625)의 차이 값의 세트 중 적어도 하나의 차이 값이 기준 값 이상일시, 상기 적어도 하나의 프로세서(120)는, 서버를 통해 양자화를 수행할 수 있다. 상기 서버에서 수행되는 양자화는 이하 도 8에서 기재된다. According to one embodiment, when at least one difference value among the set of difference values between the first output data 615 and the second output data 625 is greater than or equal to a reference value, the at least one processor 120, Quantization can be performed through the server. Quantization performed in the server is described below in FIG. 8.
도 6에서, 상기 모델(621)을 구성하는 모든 오퍼레이터들이 양자화 된 것처럼 도시되었으나, 본 개시의 실시예는 이에 한정되지 않는다. 일 실시예에 따르면, 상기 제2 오퍼레이터는 가속기가 지원하는 제2 데이터 타입의 가중치 세트들이 포함되어 있어, 양자화가 수행되지 않을 수 있다. 양자화가 수행되지 않은 제2 오퍼레이터는 상기 모델(621)과 상기 모델(611)에서 동일한 가중치 세트 및 바이어스를 가질 수 있다. In FIG. 6, all operators constituting the model 621 are shown as if quantized, but embodiments of the present disclosure are not limited thereto. According to one embodiment, the second operator includes weight sets of the second data type supported by the accelerator, so quantization may not be performed. A second operator on which quantization is not performed may have the same weight set and bias in the model 621 and the model 611.
또한, 도 6에서, 상기 모델(621)이 메모리에 상기 모델(611)과 별개로 저장되는 것처럼 도시되었으나, 본 개시의 실시예는 이에 한정되지 않는다. 일 실시예에 따르면, 상기 적어도 하나의 프로세서(120)는, 상기 모델(621) 자체를 저장하는 것이 아니라, 양자화 된 오퍼레이터의 제2 가중치 세트 및 바이어스를 메모리에 저장할 수 있다. 상기 적어도 하나의 프로세서(120)는, 상기 양자화 된 제2 가중치 세트를 상기 제1 가중치 세트의 해시 값과 함께 상기 메모리에 저장할 수 있다. 상기 적어도 하나의 프로세서(120)는, 상기 모델(611)이 이용될 시, 상기 제1 가중치 세트의 해시 값에 기반하여 제2 가중치 세트를 식별할 수 있다. 상기 적어도 하나의 프로세서(120)는, 상기 제1 가중치 세트의 해시 값에 대응하는 제2 가중치 세트에 기반하여, 상기 제1 오퍼레이터(613)에 대한 연산을 수행할 수 있다. In addition, in FIG. 6, the model 621 is shown as being stored in memory separately from the model 611, but the embodiment of the present disclosure is not limited thereto. According to one embodiment, the at least one processor 120 may not store the model 621 itself, but may store the second weight set and bias of the quantized operator in memory. The at least one processor 120 may store the quantized second weight set in the memory together with a hash value of the first weight set. When the model 611 is used, the at least one processor 120 may identify a second weight set based on a hash value of the first weight set. The at least one processor 120 may perform an operation for the first operator 613 based on a second weight set corresponding to a hash value of the first weight set.
도 7은 일 실시예에 따른 양자화 된 제2 가중치 세트들을 저장하기 위한 전자 장치의 동작의 흐름을 도시한다.FIG. 7 illustrates a flow of operations of an electronic device for storing quantized second weight sets according to an embodiment.
도 7을 참조하면, 동작(701)에서, 일 실시예에 따르면, 적어도 하나의 프로세서(예: 도 1의 프로세서(120))는 제1 가중치 세트를 획득할 수 있다. 뉴럴 네트워크를 포함한 모델은 제1 오퍼레이터(예: 도 6의 제1 오퍼레이터(613))를 포함할 수 있다. 상기 제1 가중치 세트는 상기 제1 오퍼레이터에 포함된 가중치들일 수 있다. Referring to Figure 7, in operation 701, according to one embodiment, at least one processor (eg, processor 120 of Figure 1) may obtain a first set of weights. A model including a neural network may include a first operator (eg, the first operator 613 in FIG. 6). The first weight set may be weights included in the first operator.
동작(702)에서, 일 실시예에 따르면, 상기 적어도 하나의 프로세서(120)는 제1 오퍼레이터(613)의 제1 데이터 타입과 상이한 가속기의 제2 데이터 타입을 식별하거나, 양자화 정보의 부재, 및/또는 양자화 모델의 부재를 식별하는지 여부를 식별할 수 있다. 상기 제1 오퍼레이터(613)의 상기 제1 데이터 타입과 상이한 상기 가속기의 상기 제2 데이터 타입을 식별하는 경우, 상기 적어도 하나의 프로세서(120)는 동작(704)을 수행할 수 있다. 양자화 정보가 식별되지 않을 경우, 상기 적어도 하나의 프로세서(120)는 동작(704)을 수행할 수 있다. 양자화 모델의 부재를 식별하는 경우, 상기 적어도 하나의 프로세서(120)는 동작(704)을 수행할 수 있다. 상기 적어도 하나의 프로세서(120)가 상기 제1 오퍼레이터(613)의 상기 제1 데이터 타입과 동일한 상기 가속기의 상기 제2 데이터 타입을 식별하거나, 양자화 정보가 식별되고, 양자화 모델이 식별되는 경우 상기 적어도 하나의 프로세서(120)는 동작(703)을 수행할 수 있다. 상기 제1 오퍼레이터(613)의 상기 제1 데이터 타입과 동일한 상기 가속기의 상기 제2 데이터 타입을 식별하는 경우, 상기 적어도 하나의 프로세서(120)는 동작(703)을 수행할 수 있다. 양자화 정보가 식별되는 경우, 상기 적어도 하나의 프로세서(120)는 동작(703)을 수행할 수 있다. 양자화 모델이 식별되는 경우, 상기 적어도 하나의 프로세서(120)는 동작(703)을 수행할 수 있다. 일 실시예에 따르면, 상기 적어도 하나의 프로세서(120)는 제1 오퍼레이터(예: 도 6의 제1 오퍼레이터(613))의 제1 데이터 타입과 상이한 가속기의 제2 데이터 타입을 식별할 수 있다. 예를 들어, 상기 제1 데이터 타입은, 32 비트들의 부동 소수점 수를 표현할 수 있다. 상기 가속기는 8 비트들의 정수로 표현되는 데이터 타입과 16 비트들의 정수로 표현되는 제2 데이터 타입만을 지원할 수 있다. 예를 들어, 상기 제1 데이터 타입은 16 비트들을 이용하여 나타낸 부동 소수점 수를 표현할 수 있다. 상기 제2 데이터 타입은 8 비트들을 이용하여 나타낸 정수를 표현할 수 있다. 다만, 본 개시의 실시예들이 이에 제한되는 것은 아니다. 일 실시예에 따르면, 상기 전자 장치(101)는, 상기 제1 데이터 타입보다 제2 데이터 타입의 정밀도, 및/또는 범위가 낮고, 상기 전자 장치(101)가 상기 제2 데이터 타입에 기반하는 모델의 연산을 할 수 있는 경우, 양자화 기능을 수행할 수 있다. At operation 702, according to one embodiment, the at least one processor 120 identifies a second data type of the accelerator that is different from the first data type of the first operator 613, the absence of quantization information, and / Or it can be identified whether to identify the absence of a quantization model. When identifying the second data type of the accelerator that is different from the first data type of the first operator 613, the at least one processor 120 may perform operation 704. If quantization information is not identified, the at least one processor 120 may perform operation 704. When identifying the absence of a quantization model, the at least one processor 120 may perform operation 704. When the at least one processor 120 identifies the second data type of the accelerator that is the same as the first data type of the first operator 613, or when quantization information is identified and a quantization model is identified, the at least One processor 120 may perform operation 703. When identifying the second data type of the accelerator as the same as the first data type of the first operator 613, the at least one processor 120 may perform operation 703. When quantization information is identified, the at least one processor 120 may perform operation 703. When a quantization model is identified, the at least one processor 120 may perform operation 703. According to one embodiment, the at least one processor 120 may identify a second data type of the accelerator that is different from the first data type of the first operator (eg, the first operator 613 in FIG. 6). For example, the first data type may represent a 32-bit floating point number. The accelerator can only support a data type expressed as an 8-bit integer and a second data type expressed as a 16-bit integer. For example, the first data type may represent a floating point number expressed using 16 bits. The second data type can represent an integer using 8 bits. However, the embodiments of the present disclosure are not limited thereto. According to one embodiment, the precision and/or range of the second data type is lower than that of the first data type, and the electronic device 101 uses a model based on the second data type. If the calculation of is possible, the quantization function can be performed.
일 실시예에 따르면, 상기 적어도 하나의 프로세서(120)는 양자화 정보 및/또는 양자화 모델의 부재를 식별할 수 있다. 일 실시예에 따르면, 상기 적어도 하나의 프로세서(120)는 양자화 모델의 부재를 식별할 수 있다. 예를 들어, 상기 양자화 모델은 양자화된 모델일 수 있다. 일 예로, 상기 양자화된 모델은 상기 제1 오퍼레이터의 해시 값에 대응하는 제1' 오퍼레이터일 수 있다. 상기 제1 오퍼레이터의 상기 해시 값에 대응하는 다른 오퍼레이터가 없을 경우, 상기 적어도 하나의 프로세서(120)는 양자화된 모델의 부재를 식별할 수 있다. 일 실시예에 따르면, 상기 적어도 하나의 프로세서(120)는 양자화 정보의 부재를 식별할 수 있다. 예를 들어, 상기 양자화 정보는 상기 양자화된 모델에 포함된 값일 수 있다. 일 예로, 상기 양자화 정보는 상기 제1' 오퍼레이터 내의 제2 가중치 세트 및/또는 바이어스일 수 있다. 상기 제1' 오퍼레이터 내의 상기 제2 가중치 세트 및/또는 바이어스가 없을 경우, 상기 적어도 하나의 프로세서(120)는 양자화된 정보의 부재를 식별할 수 있다. According to one embodiment, the at least one processor 120 may identify the absence of quantization information and/or a quantization model. According to one embodiment, the at least one processor 120 may identify the absence of a quantization model. For example, the quantization model may be a quantized model. As an example, the quantized model may be a 'first' operator corresponding to the hash value of the first operator. If there is no other operator corresponding to the hash value of the first operator, the at least one processor 120 may identify the absence of a quantized model. According to one embodiment, the at least one processor 120 may identify the absence of quantization information. For example, the quantization information may be a value included in the quantized model. As an example, the quantization information may be a second weight set and/or bias within the first' operator. In the absence of the second set of weights and/or bias in the first' operator, the at least one processor 120 may identify the absence of quantized information.
동작(703)에서, 일 실시예에 따르면, 상기 적어도 하나의 프로세서(120)는, 양자화 된 제2 가중치 세트에 대하여 제1 오퍼레이터 연산을 수행할 수 있다. 상기 양자화 된 제2 가중치 세트는 상기 제1 가중치 세트의 해시 값과 함께 상기 메모리에 저장될 수 있다. 상기 적어도 하나의 프로세서(120)는, 상기 뉴럴 네트워크 모델이 이용될 시, 상기 제1 가중치 세트의 해시 값에 기반하여 제2 가중치 세트를 식별할 수 있다. 상기 적어도 하나의 프로세서(120)는, 상기 제1 가중치 세트의 해시 값에 대응하는 제2 가중치 세트에 기반하여, 상기 제1 오퍼레이터(613)에 대한 연산을 수행할 수 있다. In operation 703, according to one embodiment, the at least one processor 120 may perform a first operator operation on the second quantized weight set. The quantized second weight set may be stored in the memory along with a hash value of the first weight set. When the neural network model is used, the at least one processor 120 may identify a second weight set based on a hash value of the first weight set. The at least one processor 120 may perform an operation on the first operator 613 based on a second weight set corresponding to a hash value of the first weight set.
동작(704)에서, 일 실시예에 따르면, 상기 적어도 하나의 프로세서(120)는, 양자화기를 통해 제1 가중치 세트에 의해 제1 오퍼레이터 연산을 수행할 수 있다. 양자화를 위해 서브 출력 데이터가 필요하기 때문이다. 상기 제1 가중치 세트에 의한 제1 오퍼레이터 연산은 양자화 된 제2 가중치 세트에 의한 제1 오퍼레이터 연산에 비해 시간이 많이 걸릴 수 있다. In operation 704, according to one embodiment, the at least one processor 120 may perform a first operator operation with a first set of weights through a quantizer. This is because sub-output data is required for quantization. The first operator operation using the first weight set may take more time than the first operator operation using the quantized second weight set.
동작(705)에서 일 실시예에 따르면, 상기 적어도 하나의 프로세서(120)는, 상기 양자화기를 통해 프로파일 정보를 수집 및 저장할 수 있다. 상기 프로파일 정보는 뉴럴 네트워크 모델에 대한 입력 데이터의 세트, 서브 출력 데이터의 세트, 및 출력 데이터의 세트가 포함될 수 있다. 상기 입력 데이터의 세트는 상기 뉴럴 네트워크 모델의 실행에 의해 획득될 수 있다. According to one embodiment, in operation 705, the at least one processor 120 may collect and store profile information through the quantizer. The profile information may include a set of input data, a set of sub-output data, and a set of output data for the neural network model. The set of input data may be obtained by executing the neural network model.
동작(706)에서, 일 실시예에 따르면, 상기 적어도 하나의 프로세서(120)는, 상기 양자화기를 통해 제2 가중치 세트들을 생성 및 저장할 수 있다. 일 실시예에 따르면, 상기 적어도 하나의 프로세서(120)는, 상기 서브 출력 데이터의 세트의 분포에 기반하여, 상기 제1 가중치 세트에 대한 양자화를 수행함으로써 상기 제2 가중치 세트를 획득할 수 있다. 예를 들어, 상기 적어도 하나의 프로세서(120)는, 실 사용 데이터인 입력 데이터의 세트에 대하여 상기 제1 오퍼레이터에 대한 연산을 수행함으로써 서브 출력 데이터의 세트를 획득할 수 있다. 상기 제1 오퍼레이터의 제1 가중치에 대한 양자화는 상기 서브 출력 데이터의 구간에 기반하여 생성될 수 있다. 일 예로, 부동 소수점 수를 표현하기 위한 제1 데이터 타입이 표현할 수 있는 숫자 구간은 제1 구간일 수 있다. 정수를 표현하기 위한 제2 데이터 타입이 표현할 수 있는 숫자 구간은 제2 구간일 수 있다. 상기 제1 구간은 음의 무한대에서 양의 무한대까지 일 수 있다. 상기 제2 구간은 8 비트들로 표현하는 데이터 타입의 경우, -128에서 127까지일 수 있다. 상기 제2 구간은 16 비트로 표현하는 데이터 타입의 경우, -32768에서 32767까지일 수 있다. 상기 서브 출력 데이터의 세트가 -120에서 110 사이의 값을 가질 경우, 상기 제1 오퍼레이터의 제1 가중치 세트는 부동 소수점 수를 표현하기 위한 데이터 타입 대신 8 비트들의 정수로 표현되는 데이터 타입으로 기재되는 것이, 연산 속도 및 가속기 사용에 있어 유리할 수 있다. 그러므로, 상기 적어도 하나의 프로세서(120)는, 상기 서브 출력 데이터의 구간에 기반하여, 상기 제1 가중치 세트의 데이터 타입을 변경할 수 있다. 상기 적어도 하나의 프로세서(120)는, 양자화된 제2 가중치 세트를 메모리에 저장할 수 있다. 상기 적어도 하나의 프로세서(120)는, 뉴럴 네트워크 모델이 실행될 시, 상기 제2 가중치 세트에 기반하여 상기 제1 오퍼레이터에 대한 연산을 수행함으로써, 출력 데이터를 획득할 수 있다. In operation 706, according to one embodiment, the at least one processor 120 may generate and store second weight sets through the quantizer. According to one embodiment, the at least one processor 120 may obtain the second weight set by performing quantization on the first weight set based on the distribution of the set of sub-output data. For example, the at least one processor 120 may obtain a set of sub-output data by performing an operation for the first operator on a set of input data that is actually used data. Quantization for the first weight of the first operator may be generated based on the section of the sub-output data. As an example, the numeric interval that can be expressed by the first data type for expressing a floating point number may be the first interval. The numeric interval that can be expressed by the second data type for expressing an integer may be the second interval. The first section may range from negative infinity to positive infinity. The second interval may be from -128 to 127 in the case of a data type expressed by 8 bits. In the case of a data type expressed in 16 bits, the second interval may be from -32768 to 32767. When the set of sub-output data has a value between -120 and 110, the first weight set of the first operator is described as a data type expressed as an 8-bit integer instead of a data type for expressing a floating point number. This can be advantageous in terms of computational speed and use of accelerators. Therefore, the at least one processor 120 may change the data type of the first weight set based on the section of the sub-output data. The at least one processor 120 may store the quantized second weight set in memory. When the neural network model is executed, the at least one processor 120 may obtain output data by performing an operation for the first operator based on the second weight set.
도 8은 일 실시예에 따른 서버를 이용하여 양자화를 실행하는 동작의 흐름을 도시한다. 뉴럴 네트워크 모델이 포함된 어플리케이션의 실행에 기반하여, 전자 장치(예: 도 1의 전자 장치(101))는 이하의 동작을 수행할 수 있다. Figure 8 shows a flow of operations for executing quantization using a server according to an embodiment. Based on the execution of an application including a neural network model, an electronic device (eg, the electronic device 101 of FIG. 1) may perform the following operations.
도 8을 참조하면, 동작(801)에서, 일 실시예에 따르면, 상기 전자 장치(101)의 적어도 하나의 프로세서(예: 도 1의 프로세서(120))는 양자화기를 통해 제1 가중치 세트에 의해 제1 오퍼레이터 연산할 수 있다. 상기 동작(801)은 상기 도 7의 동작(704)과 유사하게 수행될 수 있다. 상기 적어도 하나의 프로세서(120)는 제1 오퍼레이터의 제1 데이터 타입과 상이한 가속기의 제2 데이터 타입을 식별하거나, 양자화 정보의 부재 및/또는 양자화 모델의 부재를 식별하는 경우 동작(801)을 수행할 수 있다. 상기 적어도 하나의 프로세서(120)는 제1 오퍼레이터의 제1 데이터 타입과 동일한 가속기의 제2 데이터 타입을 식별하고, 양자화 정보 및 양자화 모델을 식별하는 경우, 양자화 된 제2 가중치 세트에 대하여 상기 제1 오퍼레이터에 대한 연산을 수행할 수 있다. 양자화를 위해 서브 출력 데이터가 필요할 수 있다.Referring to FIG. 8, in operation 801, according to one embodiment, at least one processor (e.g., processor 120 of FIG. 1) of the electronic device 101 performs quantization by a first set of weights through a quantizer. The first operator can operate. The operation 801 may be performed similarly to the operation 704 of FIG. 7. The at least one processor 120 performs operation 801 when identifying a second data type of the accelerator that is different from the first data type of the first operator or identifying the absence of quantization information and/or the absence of a quantization model. can do. The at least one processor 120 identifies a second data type of the accelerator that is the same as the first data type of the first operator, and when identifying quantization information and a quantization model, the at least one processor 120 determines the first data type for the second quantized weight set. Operations can be performed on operators. Sub-output data may be required for quantization.
동작(802)에서, 상기 적어도 하나의 프로세서(120)는, 상기 양자화기를 통해 프로파일 정보를 수집 및 저장할 수 있다. 상기 프로파일 정보는 입력 데이터의 세트, 서브 출력 데이터의 세트, 및 출력 데이터의 세트를 포함할 수 있다. 일 실시예에 따르면, 상기 적어도 하나의 프로세서(120)는, 상기 서브 출력 데이터의 세트의 분포에 기반하여, 상기 제1 가중치 세트에 대한 양자화를 수행함으로써 상기 제2 가중치 세트를 획득할 수 있다. In operation 802, the at least one processor 120 may collect and store profile information through the quantizer. The profile information may include a set of input data, a set of sub-output data, and a set of output data. According to one embodiment, the at least one processor 120 may obtain the second weight set by performing quantization on the first weight set based on the distribution of the set of sub-output data.
동작(803)에서, 일 실시예에 따르면, 상기 적어도 하나의 프로세서(120)는, 기준 범위 외의 모델의 신뢰도를 식별할 수 있다. 동작(803)을 수행하기 위하여, 상기 적어도 하나의 프로세서(120)는 양자화 된 모델의 신뢰도를 평가할 수 있다. 상기 양자화된 모델의 신뢰도는 제1 출력 데이터와 제2 출력 데이터의 차이 값의 세트 중 적어도 하나의 차이 값이 기준 값 이상인지 여부에 기반하여 식별될 수 있다. 제1 출력 데이터는 제1 가중치 세트에 기반하여 적어도 하나의 오퍼레이터에 대한 연산을 수행함으로써 획득될 수 있다. 상기 제2 출력 데이터는 제2 가중치 세트에 기반하여 적어도 하나의 오퍼레이터에 대한 연산을 수행함으로써 획득될 수 있다. 일 실시예에 따르면, 상기 제1 출력 데이터와 상기 제2 출력 데이터의 차이 값의 세트 중 적어도 하나의 차이 값이 기준 값 이상일시, 상기 적어도 하나의 프로세서(120)는, 서버(예: 도 1의 서버(108))를 통해 양자화를 수행할 수 있다. At operation 803, according to one embodiment, the at least one processor 120 may identify a reliability of the model that is outside a reference range. To perform operation 803, the at least one processor 120 may evaluate the reliability of the quantized model. The reliability of the quantized model may be identified based on whether at least one difference value among a set of difference values between first output data and second output data is greater than or equal to a reference value. First output data may be obtained by performing an operation for at least one operator based on the first weight set. The second output data may be obtained by performing an operation for at least one operator based on the second weight set. According to one embodiment, when at least one difference value among the set of difference values between the first output data and the second output data is greater than or equal to a reference value, the at least one processor 120 operates on a server (e.g., FIG. 1 Quantization can be performed through the server 108).
동작(804) 및 동작(805)에서, 일 실시예에 따르면, 상기 적어도 하나의 프로세서(120)는 서브 출력 데이터 정보를 송신할 수 있다. 상기 적어도 하나의 프로세서(120)는 상기 서버(108)에게 상기 서브 출력 데이터를 송신할 수 있다. 상기 적어도 하나의 프로세서(120)는, 상기 제1 출력 데이터 및 대응하는 상기 제2 출력 데이터 사이의 상기 차이 값의 세트 중 적어도 하나의 차이 값이 기준 값 이상임을 식별함에 기반하여, 상기 프로파일 정보로부터 획득된 상기 서브 출력 데이터의 세트를 상기 통신 회로를 통해 상기 서버(108)에게 송신할 수 있다. 상기 서브 출력 데이터 정보는 상기 제1 가중치 세트가 포함된 상기 제1 오퍼레이터 연산을 통해 생성될 수 있다. In operations 804 and 805, according to one embodiment, the at least one processor 120 may transmit sub-output data information. The at least one processor 120 may transmit the sub-output data to the server 108. The at least one processor 120 selects the profile information based on identifying that at least one difference value of the set of difference values between the first output data and the corresponding second output data is greater than or equal to a reference value. The acquired set of sub-output data may be transmitted to the server 108 through the communication circuit. The sub-output data information may be generated through the first operator operation including the first weight set.
동작(806)에서, 일 실시예에 따르면, 상기 서버(108)는 서브 출력 데이터 정보를 수신할 수 있다. 상기 서브 출력 데이터 정보는 복수의 전자 장치들로부터 수신될 수 있다. 상기 적어도 하나의 프로세서(120)는, 동일한 모델인 복수의 전자 장치들로부터 송신한 서브 출력 데이터 정보를 통해 양자화를 수행할 수 있다. 실사용 데이터인 입력 데이터가 상기 서버(108)로 송신되지 않기 때문에 입력 데이터가 상기 서버(108)로 송신되는 경우에 비해, 프라이버시 보호 측면에서 유리할 수 있다. 예를 들어, 사용자에 의해 모델에 입력된 입력 데이터 및 출력 데이터가 양자화 된 모델의 정확도 평가에 이용되므로, 상기 전자 장치(101)는 양자화에 기반하여 상기 사용자에게 개인화 된(personalized) 모델을 획득할 수 있다.At operation 806, according to one embodiment, the server 108 may receive sub-output data information. The sub-output data information may be received from a plurality of electronic devices. The at least one processor 120 may perform quantization through sub-output data information transmitted from a plurality of electronic devices of the same model. Since input data, which is actual data, is not transmitted to the server 108, it may be advantageous in terms of privacy protection compared to the case where input data is transmitted to the server 108. For example, since the input data and output data input to the model by the user are used to evaluate the accuracy of the quantized model, the electronic device 101 may obtain a model personalized to the user based on quantization. You can.
동작(807)에서, 일 실시예에 따르면, 상기 서버(108)는 서브 출력 데이터 정보를 집계할 수 있다. 지정된 분량의 서브 출력 데이터 정보가 집계될 시, 상기 적어도 하나의 프로세서(120)는, 서브 출력 데이터 정보 수신을 중지할 수 있다. In operation 807, according to one embodiment, the server 108 may aggregate sub-output data information. When a designated amount of sub-output data information is aggregated, the at least one processor 120 may stop receiving sub-output data information.
동작(808)에서, 일 실시예에 따르면, 상기 서버(108)는 제3 가중치 세트들을 생성할 수 있다. 일 실시예에 따르면, 상기 서버(108)는, 상기 서브 출력 데이터의 세트의 분포에 기반하여, 상기 제1 가중치 세트에 대한 양자화를 수행함으로써 상기 제3 가중치 세트를 획득할 수 있다. 예를 들어, 상기 제1 오퍼레이터의 제1 가중치에 대한 양자화는 상기 서브 출력 데이터의 구간에 기반하여 생성될 수 있다. 상기 서버(108)는, 양자화를 통해 상기 제1 구간의 수를 표현하기 위한 제1 데이터 타입의 상기 제1 가중치 세트로부터 상기 제1 구간의 길이보다 작은 길이를 갖는 제3 구간의 수를 표현하기 위한 제2 데이터 타입의 제3 가중치 세트를 획득할 수 있다. 양자화에 대한 내용은 도 7의 동작(706)에서 기재된 내용이 참조될 수 있다. At operation 808, according to one embodiment, the server 108 may generate third weight sets. According to one embodiment, the server 108 may obtain the third weight set by performing quantization on the first weight set based on the distribution of the set of sub-output data. For example, quantization for the first weight of the first operator may be generated based on the section of the sub-output data. The server 108 expresses the number of third sections having a length smaller than the length of the first section from the first weight set of the first data type for expressing the number of the first section through quantization. A third weight set of the second data type may be obtained. For information about quantization, the information described in operation 706 of FIG. 7 may be referred to.
동작(809) 및 동작(810)에서, 일 실시예에 따르면, 상기 서버(108)는 제3 가중치 세트들을 송신할 수 있다. 상기 서버(108)는 상기 서브 출력 데이터에 기반하여, 상기 제1 가중치 세트에 대한 양자화가 수행된 상기 제2 데이터 타입의 제3 가중치 세트들을 상기 통신 회로를 통해 상기 전자 장치(101)로 송신할 수 있다. 상기 서버(108)는 어플리케이션의 실행에 따라 양자화를 요청한 복수의 전자 장치들에게 상기 제3 가중치 세트들을 송신할 수 있다.At operations 809 and 810, according to one embodiment, the server 108 may transmit third weight sets. Based on the sub-output data, the server 108 transmits third weight sets of the second data type on which quantization of the first weight set has been performed to the electronic device 101 through the communication circuit. You can. The server 108 may transmit the third weight sets to a plurality of electronic devices that have requested quantization according to execution of the application.
동작(811)에서, 일 실시예에 따르면, 상기 적어도 하나의 프로세서(120)는 수신된 제3 가중치 세트들을 저장할 수 있다. 상기 적어도 하나의 프로세서(120)는, 상기 수신된 상기 제3 가중치 세트를 상기 메모리에 저장할 수 있다. 상기 적어도 하나의 프로세서(120)는, 뉴럴 네트워크에서, 상기 제3 가중치 세트에 기반하여 상기 제1 오퍼레이터에 대한 연산을 수행함으로써, 출력 데이터를 획득할 수 있다.In operation 811, according to one embodiment, the at least one processor 120 may store the received third weight sets. The at least one processor 120 may store the received third weight set in the memory. The at least one processor 120 may obtain output data by performing an operation for the first operator based on the third weight set in a neural network.
도 9는 일 실시예에 따른 양자화를 통해 제2 가중치 세트를 획득하기 위한 전자 장치의 동작의 흐름을 도시한다.FIG. 9 illustrates a flow of operations of an electronic device for acquiring a second set of weights through quantization according to an embodiment.
도 9를 참조하면, 동작(901)에서, 일 실시예에 따르면, 상기 적어도 하나의 프로세서(120)는, 제1 가중치 세트를 획득할 수 있다. 일 실시예에 따르면, 상기 적어도 하나의 프로세서(120)는, 도 9의 동작(901)을, 제1 가중치 세트의 데이터 타입이 가속기에 의해 지원되는 데이터 타입과 상이한지 여부, 양자화 정보의 부재 여부, 및/또는 양자화 모델의 부재 여부에 기반하여, 수행할 수 있다. 일 실시예에 따르면, 상기 적어도 하나의 프로세서(120)는 상기 오퍼레이터(예: 도 4의 제1 오퍼레이터(405))의 제1 데이터 타입과 상이한 가속기의 제2 데이터 타입을 식별할 수 있다. 상기 적어도 하나의 프로세서(120)는, 양자화 정보의 부재, 및/또는 양자화 모델의 부재를 식별할 수 있다. 상기 제1 가중치 세트의 데이터 타입과 상이한 상기 가속기에 의해 지원되는 데이터 타입을 식별하거나, 상기 양자화 정보가 없거나, 및/또는 상기 양자화 모델이 없을 시, 상기 적어도 하나의 프로세서(120)는 상기 제1 가중치 세트를 양자화 하기 위해 제1 가중치 세트를 획득할 수 있다. 상기 제1 데이터 타입에서 요구되는 정밀도(precision)는 상기 제2 데이터 타입에서 요구되는 정밀도보다 높을 수 있다. 예를 들어, 상기 제1 데이터 타입은 16 비트들을 이용하여 부동 소수점 수를 나타낼 수 있다. 상기 제2 데이터 타입은 8 비트들을 이용하여 정수를 나타낼 수 있다. 일 실시예에 따르면, 개별적인 오퍼레이터에 따라 가중치 세트의 데이터 타입이 다를 수 있다. 그러므로, 개별 오퍼레이터의 데이터 타입에 기반하여 개별 오퍼레이터의 양자화 여부가 결정될 수 있다. Referring to FIG. 9, in operation 901, according to one embodiment, the at least one processor 120 may obtain a first set of weights. According to one embodiment, the at least one processor 120 performs operation 901 of FIG. 9 to determine whether the data type of the first weight set is different from the data type supported by the accelerator and whether quantization information is absent. , and/or based on the absence of a quantization model. According to one embodiment, the at least one processor 120 may identify a second data type of the accelerator that is different from the first data type of the operator (eg, the first operator 405 in FIG. 4). The at least one processor 120 may identify the absence of quantization information and/or the absence of a quantization model. When identifying a data type supported by the accelerator that is different from the data type of the first weight set, without the quantization information, and/or without the quantization model, the at least one processor 120 determines the first weight set. A first set of weights may be obtained to quantize the set of weights. The precision required for the first data type may be higher than the precision required for the second data type. For example, the first data type may represent a floating point number using 16 bits. The second data type can represent an integer using 8 bits. According to one embodiment, the data type of the weight set may be different depending on the individual operator. Therefore, whether to quantize an individual operator can be determined based on the data type of the individual operator.
동작(902)에서, 일 실시예에 따르면, 상기 적어도 하나의 프로세서(120)는, 프로파일 정보로부터 서브 출력 데이터의 세트를 획득할 수 있다. 상기 서브 출력 데이터의 세트에 기반하여 양자화가 수행되기 때문이다. 상기 프로파일 정보는 상기 입력 데이터의 세트, 상기 서브 출력 데이터의 세트, 및 출력 데이터의 세트를 포함할 수 있다. 일 실시예에 따르면, 상기 적어도 하나의 프로세서(120)는, 제1 오퍼레이터의 연산에 기반하여 입력 데이터의 세트로부터 서브 출력 데이터의 세트를 획득할 수 있다. 상기 적어도 하나의 프로세서(120)는, 적어도 하나의 오퍼레이터에 대한 연산을 수행함으로써 입력 데이터의 세트로부터 출력 데이터의 세트를 획득할 수 있다. In operation 902, according to one embodiment, the at least one processor 120 may obtain a set of sub-output data from profile information. This is because quantization is performed based on the set of sub-output data. The profile information may include the set of input data, the set of sub-output data, and the set of output data. According to one embodiment, the at least one processor 120 may obtain a set of sub-output data from a set of input data based on the operation of the first operator. The at least one processor 120 may obtain a set of output data from a set of input data by performing an operation on at least one operator.
동작(903)에서, 일 실시예에 따르면, 상기 적어도 하나의 프로세서(120)는, 서브 출력 데이터의 세트에 기반하여 제2 가중치 세트를 획득할 수 있다. 일 실시예에 따르면, 상기 제2 데이터 타입의 상기 제2 가중치 세트를 획득하기 위하여, 상기 적어도 하나의 프로세서(120)는, 상기 서브 출력 데이터의 세트의 분포에 기반하여, 상기 제1 가중치 세트에 대한 양자화를 수행함으로써 상기 제2 가중치 세트를 획득할 수 있다. 상기 제1 오퍼레이터의 제1 가중치에 대한 양자화는 상기 서브 출력 데이터의 구간에 기반하여 생성될 수 있다. 일 예로, 부동 소수점 수를 표현하기 위한 제1 데이터 타입이 표현할 수 있는 숫자 구간은 제1 구간일 수 있다. 정수를 표현하기 위한 제2 데이터 타입이 표현할 수 있는 숫자 구간은 제2 구간일 수 있다. 상기 적어도 하나의 프로세서(120)는, 양자화를 통해 상기 제1 구간의 수를 표현하기 위한 제1 데이터 타입의 상기 제1 가중치 세트로부터 상기 제1 구간의 길이보다 작은 길이를 갖는 제2 구간의 수를 표현하기 위한 제2 데이터 타입의 제2 가중치 세트를 획득할 수 있다. In operation 903, according to one embodiment, the at least one processor 120 may obtain a second set of weights based on a set of sub-output data. According to one embodiment, in order to obtain the second set of weights of the second data type, the at least one processor 120 calculates the first set of weights based on the distribution of the set of sub-output data. The second weight set can be obtained by performing quantization. Quantization for the first weight of the first operator may be generated based on the section of the sub-output data. As an example, the numeric interval that can be expressed by the first data type for expressing a floating point number may be the first interval. The numeric interval that can be expressed by the second data type for expressing an integer may be the second interval. The at least one processor 120 determines the number of second sections having a length smaller than the length of the first section from the first weight set of a first data type for expressing the number of the first sections through quantization. A second weight set of a second data type for expressing can be obtained.
동작(904)에서, 일 실시예에 따르면, 상기 적어도 하나의 프로세서(120)는, 제2 가중치 세트 획득에 기반하여 제2 가중치 세트를 저장할 수 있다. 상기 적어도 하나의 프로세서(120)는, 뉴럴 네트워크 모델 수행 시 양자화된 제2 가중치 세트에 기반하여 연산할 수 있다. 상기 적어도 하나의 프로세서(120)는, 뉴럴 네트워크 모델을 실행할 시, 상기 제2 가중치 세트에 기반하여 상기 제1 오퍼레이터에 대한 연산을 수행함으로써, 출력 데이터를 획득할 수 있다. 일 실시예에 따르면, 상기 적어도 하나의 프로세서(120)는, 상기 제2 가중치 세트를 상기 제1 가중치 세트의 해시 값과 함께, 상기 메모리에 저장할 수 있다. 상기 적어도 하나의 프로세서(120)는, 뉴럴 네트워크 모델이 이용될 시, 상기 제1 가중치 세트의 해시 값에 기반하여 제2 가중치 세트를 식별할 수 있다. 상기 적어도 하나의 프로세서(120)는, 상기 제1 가중치 세트의 해시 값에 대응하는 제2 가중치 세트에 기반하여, 상기 제1 오퍼레이터에 대한 연산을 수행할 수 있다. At operation 904, according to one embodiment, the at least one processor 120 may store a second set of weights based on obtaining the second set of weights. The at least one processor 120 may perform calculations based on the quantized second weight set when performing a neural network model. When executing a neural network model, the at least one processor 120 may obtain output data by performing an operation for the first operator based on the second weight set. According to one embodiment, the at least one processor 120 may store the second weight set in the memory along with a hash value of the first weight set. When a neural network model is used, the at least one processor 120 may identify a second weight set based on a hash value of the first weight set. The at least one processor 120 may perform an operation for the first operator based on a second weight set corresponding to a hash value of the first weight set.
도 10은 일 실시예에 따른 신뢰도 평가에 기반하여 제2 가중치 세트를 저장하기 위한 전자 장치의 동작의 흐름을 도시한다. 도 10의 동작의 흐름은 도 9의 동작(904)을 구체화할 수 있다. FIG. 10 illustrates a flow of operations of an electronic device for storing a second set of weights based on reliability evaluation according to an embodiment. The flow of operation of FIG. 10 may embody operation 904 of FIG. 9 .
도 10을 참조하면, 동작(1001)에서, 일 실시예에 따르면, 상기 적어도 하나의 프로세서(120)는, 프로파일 정보로부터 제1 출력 데이터의 세트를 획득할 수 있다. 일 실시예에 따르면, 상기 적어도 하나의 프로세서(120)는, 상기 제2 가중치 세트를 획득하는 것에 기반하여, 양자화 된 뉴럴 네트워크 모델에 대한 신뢰도 평가를 수행할 수 있다. 예를 들어, 상기 양자화 된 뉴럴 네트워크 모델의 생성이 완료되는 것을 식별함에 기반하여, 상기 양자화 된 뉴럴 네트워크 모델에 대한 신뢰도 평가를 수행할 수 있다. 일 실시예에 따르면, 상기 적어도 하나의 프로세서(120)는, 상기 프로파일 정보로부터 상기 적어도 하나의 오퍼레이터에 대한 연산을 수행함으로써 획득된 제1 출력 데이터의 세트를 식별할 수 있다.Referring to FIG. 10, in operation 1001, according to one embodiment, the at least one processor 120 may obtain a set of first output data from profile information. According to one embodiment, the at least one processor 120 may perform a reliability evaluation on a quantized neural network model based on obtaining the second weight set. For example, based on identifying that the generation of the quantized neural network model is complete, a reliability evaluation of the quantized neural network model may be performed. According to one embodiment, the at least one processor 120 may identify a set of first output data obtained by performing an operation for the at least one operator from the profile information.
동작(1002)에서, 일 실시예에 따르면, 상기 적어도 하나의 프로세서(120)는, 제2 가중치 세트에 기반하여 제2 출력 데이터 세트를 획득할 수 있다. 상기 적어도 하나의 프로세서(120)는, 상기 제2 가중치 세트에 기반하여 상기 적어도 하나의 오퍼레이터에 대한 연산을 수행함으로써, 상기 입력 데이터의 세트로부터 제2 출력 데이터의 세트를 획득할 수 있다. 예를 들어, 상기 적어도 하나의 프로세서(120)는, 상기 양자화 된 뉴럴 네트워크 모델에서, 상기 입력 데이터에 대한 연산을 통해 제2 출력 데이터의 세트를 획득할 수 있다.In operation 1002, according to one embodiment, the at least one processor 120 may obtain a second output data set based on a second set of weights. The at least one processor 120 may obtain a second set of output data from the set of input data by performing an operation for the at least one operator based on the second weight set. For example, the at least one processor 120 may obtain a set of second output data through an operation on the input data in the quantized neural network model.
동작(1003)에서, 일 실시예에 따르면, 상기 적어도 하나의 프로세서(120)는, 제1 출력 데이터와 제2 출력 데이터 사이의 차이 값들에 기반하여 제1 가중치 세트를 제2 가중치 세트로 교체할 수 있다. 상기 적어도 하나의 프로세서(120)는, 상기 제1 출력 데이터 및 대응하는 상기 제2 출력 데이터 사이의 차이 값(difference)의 세트에 기반하여, 뉴럴 네트워크 모델에 포함된 제1 오퍼레이터에 포함된 상기 제1 가중치 세트를, 상기 제2 가중치 세트로 교체할 수 있다. 상기 제1 출력 데이터와 상기 제2 출력 데이터의 차이 값의 세트들이 모두 기준 값 미만일 시, 상기 양자화 된 뉴럴 네트워크 모델이 상기 양자화 전 뉴럴 네트워크 모델을 대체하더라도 문제 발생 가능성이 낮을 수 있다. 예를 들어, 상기 차이 값의 세트들이 약 0.5% 약 0.7%, 약 0.5%, 약 0.2%, 약 0.9%이고, 상기 기준 값이 약 1%인 경우, 상기 양자화 된 뉴럴 네트워크 모델은 상기 양자화 전 뉴럴 네트워크 모델을 대체할 수 있다. 다만, 상기 제1 출력 데이터와 상기 제2 출력 데이터의 차이 값의 세트 중 적어도 하나의 차이 값이 기준 값 이상일 시, 상기 양자화 된 뉴럴 네트워크 모델은 상기 양자화 전 뉴럴 네트워크 모델을 대체할 수 없다. 예를 들어, 상기 차이 값의 세트들이 약 0.5% 약 0.7%, 약 0.5%, 약 3.5%, 약 0.9%이고, 상기 기준 값이 약 1%인 경우 상기 양자화 된 뉴럴 네트워크 모델은 상기 양자화 전 뉴럴 네트워크 모델을 대체할 수 없다. 상기 제1 출력 데이터와 상기 제2 출력 데이터의 차이 값의 세트 중 적어도 하나의 차이 값이 기준 값 이상일시, 상기 적어도 하나의 프로세서(120)는, 양자화를 다시 수행하거나, 서버를 통해 양자화를 수행할 수 있다. At operation 1003, according to one embodiment, the at least one processor 120 replaces the first set of weights with a second set of weights based on the difference values between the first output data and the second output data. You can. The at least one processor 120 is configured to operate the first operator included in the neural network model based on a set of difference values between the first output data and the corresponding second output data. The first weight set can be replaced with the second weight set. When the sets of difference values between the first output data and the second output data are all less than the reference value, the possibility of a problem occurring may be low even if the quantized neural network model replaces the neural network model before quantization. For example, if the sets of difference values are about 0.5%, about 0.7%, about 0.5%, about 0.2%, about 0.9%, and the reference value is about 1%, then the quantized neural network model is It can replace the neural network model. However, when at least one difference value among the set of difference values between the first output data and the second output data is greater than or equal to a reference value, the quantized neural network model cannot replace the neural network model before quantization. For example, if the sets of difference values are about 0.5%, about 0.7%, about 0.5%, about 3.5%, about 0.9%, and the reference value is about 1%, then the quantized neural network model is There is no replacement for the network model. When at least one difference value among the set of difference values between the first output data and the second output data is greater than or equal to a reference value, the at least one processor 120 performs quantization again or performs quantization through a server. can do.
도 11은 일 실시예에 따른, 신뢰도에 따라 양자화 방식을 식별하기 위한 전자 장치의 동작의 흐름을 도시한다. FIG. 11 illustrates a flow of operations of an electronic device for identifying a quantization method according to reliability, according to an embodiment.
도 11을 참조하면, 동작(1101)에서, 일 실시예에 따르면, 상기 적어도 하나의 프로세서(120)는, 제1 가중치 세트를 획득할 수 있다. 일 실시예에 따르면, 상기 적어도 하나의 프로세서(120)는, 도 11의 동작(1101)을, 제1 가중치 세트의 데이터 타입이 가속기에 의해 지원되는 데이터 타입과 상이한지 여부, 양자화 정보의 부재 여부, 및/또는 양자화 모델의 부재 여부에 기반하여, 수행할 수 있다. 일 실시예에 따르면, 상기 적어도 하나의 프로세서(120)는 상기 오퍼레이터의 제1 데이터 타입과 상이한 가속기의 제2 데이터 타입을 식별할 수 있다. 상기 적어도 하나의 프로세서(120)는, 양자화 정보의 부재 및/또는 양자화 모델의 부재를 식별할 수 있다. 상기 적어도 하나의 프로세서(120)가 상기 제1 가중치 세트의 데이터 타입과 상이한 상기 가속기에 의해 지원되는 데이터 타입을 식별하거나, 상기 양자화 정보가 없거나, 및/또는 상기 양자화 모델이 없을 시, 상기 적어도 하나의 프로세서(120)는 상기 제1 가중치 세트를 양자화 하기 위해 프로파일 정보로부터 제1 가중치 세트를 획득할 수 있다. Referring to FIG. 11, in operation 1101, according to one embodiment, the at least one processor 120 may obtain a first set of weights. According to one embodiment, the at least one processor 120 performs operation 1101 of FIG. 11 to determine whether the data type of the first weight set is different from the data type supported by the accelerator and whether quantization information is absent. , and/or based on the absence of a quantization model. According to one embodiment, the at least one processor 120 may identify a second data type of the accelerator that is different from the first data type of the operator. The at least one processor 120 may identify the absence of quantization information and/or the absence of a quantization model. When the at least one processor 120 identifies a data type supported by the accelerator that is different from the data type of the first weight set, the quantization information is absent, and/or the quantization model is not present, the at least one The processor 120 may obtain a first weight set from profile information in order to quantize the first weight set.
동작(1102)에서, 일 실시예에 따르면, 상기 적어도 하나의 프로세서(120)는, 프로파일 정보로부터 서브 출력 데이터의 세트를 획득할 수 있다. 상기 서브 출력 데이터의 세트에 기반하여 양자화가 수행되기 때문이다. 일 실시예에 따르면, 상기 적어도 하나의 프로세서(120)는, 제1 오퍼레이터의 연산에 기반하여 입력 데이터의 세트로부터 서브 출력 데이터의 세트를 획득할 수 있다. 동작(1102)은 도 9의 동작(902)과 유사하게 수행될 수 있다. 이하, 중복된 설명은 생략한다. In operation 1102, according to one embodiment, the at least one processor 120 may obtain a set of sub-output data from profile information. This is because quantization is performed based on the set of sub-output data. According to one embodiment, the at least one processor 120 may obtain a set of sub-output data from a set of input data based on the operation of the first operator. Operation 1102 may be performed similarly to operation 902 of FIG. 9 . Hereinafter, duplicate descriptions will be omitted.
동작(1103)에서, 일 실시예에 따르면, 상기 적어도 하나의 프로세서(120)는, 서브 출력 데이터의 세트에 기반하여 제2 가중치 세트를 획득할 수 있다. 일 실시예에 따르면, 상기 제2 데이터 타입의 상기 제2 가중치 세트를 획득하기 위하여, 상기 적어도 하나의 프로세서(120)는, 상기 서브 출력 데이터의 세트의 분포에 기반하여, 상기 제1 가중치 세트에 대한 양자화를 수행함으로써 상기 제2 가중치 세트를 획득할 수 있다. 상기 제1 오퍼레이터의 제1 가중치에 대한 양자화는 상기 서브 출력 데이터의 구간에 기반하여 수행될 수 있다. 동작(1103)은 도 9의 동작(903)과 유사하게 수행될 수 있다. 이하, 중복된 설명은 생략한다. In operation 1103, according to one embodiment, the at least one processor 120 may obtain a second set of weights based on a set of sub-output data. According to one embodiment, in order to obtain the second set of weights of the second data type, the at least one processor 120 calculates the first set of weights based on the distribution of the set of sub-output data. The second weight set can be obtained by performing quantization. Quantization of the first weight of the first operator may be performed based on the section of the sub-output data. Operation 1103 may be performed similarly to operation 903 of FIG. 9 . Hereinafter, duplicate descriptions will be omitted.
동작(1104)에서, 일 실시예에 따르면, 상기 적어도 하나의 프로세서(120)는, 신뢰도가 기준 범위 이내인지 여부를 식별할 수 있다. 상기 신뢰도가 기준 범위 이내일 시, 상기 적어도 하나의 프로세서(120)는, 동작(1105)을 수행할 수 있다. 상기 신뢰도가 기준 범위 외일 시, 상기 적어도 하나의 프로세서(120)는, 동작(1106)을 수행할 수 있다. 일 실시예에 따르면, 상기 적어도 하나의 프로세서(120)는, 양자화 전 뉴럴 네트워크 모델의 실행(또는 시뮬레이션)에 의해 생성된 프로파일 정보로부터, 상기 적어도 하나의 오퍼레이터에 대한 연산을 수행함으로써 획득된 제1 출력 데이터의 세트를 식별할 수 있다. 일 실시예에 따르면, 상기 적어도 하나의 프로세서(120)는, 상기 제2 가중치 세트를 획득하는 것에 기반하여, 상기 양자화 된 뉴럴 네트워크 모델에 대한 신뢰도 평가를 수행할 수 있다. 예를 들어, 상기 적어도 하나의 프로세서(120)는, 상기 양자화 전 뉴럴 네트워크 모델에 대한 양자화가 완료되는 것을 식별함에 기반하여, 신뢰도 평가를 수행할 수 있다. 상기 적어도 하나의 프로세서(120)는, 상기 제2 가중치 세트에 기반하여 상기 적어도 하나의 오퍼레이터에 대한 연산을 수행함으로써, 상기 입력 데이터의 세트로부터 제2 출력 데이터의 세트를 획득할 수 있다. 상기 적어도 하나의 프로세서(120)는, 상기 제1 출력 데이터 및 대응하는 상기 제2 출력 데이터 사이의 차이 값(difference)의 세트에 기반하여, 양자화 된 뉴럴 네트워크에 대한 지정 기준 이상의 신뢰도를 획득할 수 있다. 상기 제1 출력 데이터와 상기 제2 출력 데이터의 차이 값의 세트들이 모두 기준 값 미만일 시, 문제 발생 가능성이 낮기 때문이다. 상기 적어도 하나의 프로세서(120)는, 상기 제1 출력 데이터와 상기 제2 출력 데이터의 차이 값의 세트 중 적어도 하나의 차이 값이 기준 값 이상일 시, 양자화 된 뉴럴 네트워크에 대한 지정 기준 이상의 신뢰도를 획득할 수 없다. At operation 1104, according to one embodiment, the at least one processor 120 may identify whether the reliability is within a reference range. When the reliability is within the reference range, the at least one processor 120 may perform operation 1105. When the reliability is outside the reference range, the at least one processor 120 may perform operation 1106. According to one embodiment, the at least one processor 120 obtains the first information by performing an operation on the at least one operator from profile information generated by executing (or simulating) a neural network model before quantization. A set of output data can be identified. According to one embodiment, the at least one processor 120 may perform a reliability evaluation on the quantized neural network model based on obtaining the second weight set. For example, the at least one processor 120 may perform a reliability evaluation based on identifying that quantization of the neural network model before quantization is complete. The at least one processor 120 may obtain a second set of output data from the set of input data by performing an operation for the at least one operator based on the second weight set. The at least one processor 120 may obtain reliability greater than or equal to a specified criterion for a quantized neural network based on a set of difference values between the first output data and the corresponding second output data. there is. This is because when the sets of difference values between the first output data and the second output data are all less than the reference value, the possibility of a problem occurring is low. The at least one processor 120 obtains reliability greater than a specified standard for the quantized neural network when at least one difference value among the set of difference values between the first output data and the second output data is greater than or equal to a reference value. Can not.
동작(1105)에서, 일 실시예에 따르면, 상기 적어도 하나의 프로세서(120)는, 제2 가중치 세트를 저장할 수 있다. 상기 적어도 하나의 프로세서(120)는, 상기 제1 출력 데이터 및 대응하는 상기 제2 출력 데이터 사이의 차이 값(difference)의 세트들이 모두 기준 값 미만일 시, 상기 제1 가중치 세트를, 상기 제2 가중치 세트로 교체할 수 있다. 상기 제2 가중치 세트에 기반하여 오퍼레이터에 대한 연산을 수행하는 것이 시간적 자원 측면에서 유리하기 때문이다. At operation 1105, according to one embodiment, the at least one processor 120 may store a second set of weights. The at least one processor 120, when the sets of difference values between the first output data and the corresponding second output data are all less than a reference value, sets the first weight set to the second weight value. It can be replaced as a set. This is because it is advantageous in terms of time resources to perform calculations for the operator based on the second weight set.
동작(1106)에서, 일 실시예에 따르면, 상기 적어도 하나의 프로세서(120)는, 서버에게 서브 출력 데이터의 세트를 송신할 수 있다. 상기 제1 출력 데이터와 상기 제2 출력 데이터의 차이 값의 세트 중 적어도 하나의 차이 값이 기준 값 이상일 시, 상기 제1 가중치 세트는 상기 제2 가중치 세트를 대체할 수 없다. 상기 적어도 하나의 프로세서(120)는, 양자화를 다시 수행하거나, 서버를 통해 양자화를 수행할 수 있다.At operation 1106, according to one embodiment, the at least one processor 120 may transmit a set of sub-output data to a server. When at least one difference value among the set of difference values between the first output data and the second output data is greater than or equal to a reference value, the first weight set cannot replace the second weight set. The at least one processor 120 may perform quantization again or may perform quantization through a server.
동작(1107)에서, 일 실시예에 따르면, 상기 적어도 하나의 프로세서(120)는, 서버로부터 양자화 된 제3 가중치 세트를 수신할 수 있다. 상기 서버는 상기 서브 출력 데이터에 기반하여, 상기 제1 가중치 세트에 대한 양자화가 수행된 상기 제3 가중치 세트들을 상기 통신 회로를 통해 상기 전자 장치(101)로 송신할 수 있다. 상기 서버는 어플리케이션의 실행에 따라 양자화를 요청한 복수의 전자 장치들에게 상기 제3 가중치 세트들을 송신할 수 있다. 상기 적어도 하나의 프로세서(120)는, 상기 수신된 상기 제3 가중치 세트를 상기 메모리에 저장할 수 있다. 상기 적어도 하나의 프로세서(120)는, 뉴럴 네트워크 모델이 실행될 시, 상기 제3 가중치 세트에 기반하여 상기 제1 오퍼레이터에 대한 연산을 수행함으로써, 출력 데이터를 획득할 수 있다. 제2 데이터 타입의 상기 제3 가중치 세트에 기반하여, 제1 오퍼레이터에 대한 연산을 실행 시, NPU와 같은 머신 러닝에 대한 연산에 최적화된 가속기에 기반하여, 연산이 실행될 수 있기 때문에. 연산 속도가 향상되고, 소모 전류도 감소할 수 있다. In operation 1107, according to one embodiment, the at least one processor 120 may receive a third quantized weight set from a server. Based on the sub-output data, the server may transmit the third weight sets on which quantization of the first weight set was performed to the electronic device 101 through the communication circuit. The server may transmit the third weight sets to a plurality of electronic devices that have requested quantization according to execution of the application. The at least one processor 120 may store the received third weight set in the memory. When the neural network model is executed, the at least one processor 120 may obtain output data by performing an operation for the first operator based on the third weight set. When executing an operation for the first operator based on the third weight set of the second data type, the operation may be executed based on an accelerator optimized for operations on machine learning, such as an NPU. Calculation speed can be improved and current consumption can be reduced.
이하 본 개시는 서브 출력 데이터의 범위에 기반하여 오퍼레이터에 포함된 가중치 세트를 양자화 하는 전자 장치 및 방법에 대한 것이다. 상기 전자 장치는 서브 출력 데이터의 범위에 기반하여 개별 오퍼레이터 별로 양자화를 수행함으로써 연산 속도를 향상시키고 소모전류를 감소시킬 수 있다. 모델의 양자화 완료 시, 신뢰도 평가를 수행하여, 기준 값 미만의 신뢰도를 갖는 모델에 대해서 서버에서 양자화를 수행함으로써, 여러 전자 장치의 양자화 수행을 위한 자원을 줄일 수 있다. Hereinafter, the present disclosure relates to an electronic device and method for quantizing a weight set included in an operator based on the range of sub-output data. The electronic device can improve calculation speed and reduce current consumption by performing quantization for each operator based on the range of sub-output data. When quantization of a model is completed, reliability evaluation is performed and quantization is performed on the server for models with reliability less than a reference value, thereby reducing resources for performing quantization of various electronic devices.
본 개시에서 얻을 수 있는 효과는 이상에서 언급한 효과들로 제한되지 않으며, 언급하지 않은 또 다른 효과들은 아래의 기재로부터 본 개시가 속하는 기술 분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.The effects that can be obtained from the present disclosure are not limited to the effects mentioned above, and other effects not mentioned can be clearly understood by those skilled in the art from the description below. will be.
상술한 바와 같이, 전자 장치(electronic device)(101)는 메모리(130;501), 및 적어도 하나의 프로세서(120;200;511)를 포함할 수 있다. 상기 적어도 하나의 프로세서(120;200;511)는, 상기 메모리(130;501)에서, 모델(503;611)에 포함된 적어도 하나의 오퍼레이터 중 하나인 제1 오퍼레이터(613)에 포함된 제1 데이터 타입의 제1 가중치 세트를 획득할 수 있다. 상기 적어도 하나의 프로세서(120;200;511)는 상기 메모리(130;501)에 저장된, 상기 모델(503;611)의 실행에 의해 생성된 프로파일 정보로부터, 상기 제1 오퍼레이터(613)의 연산(computation)을 위해 이용된 입력 데이터(502;601)의 세트에 대응하는 서브 출력 데이터의 세트를 획득할 수 있다. 상기 적어도 하나의 프로세서(120;200;511)는 상기 서브 출력 데이터의 세트에 기반하여, 상기 제1 가중치 세트에 대한 양자화를 수행함으로써 적어도 하나의 가속기에 의해 지원되는 제2 데이터 타입의 제2 가중치 세트를 획득할 수 있다. 상기 적어도 하나의 프로세서(120;200;511)는 상기 제2 가중치 세트를 획득하는 것에 기반하여, 상기 메모리(130;501)에 상기 제2 가중치 세트를 저장할 수 있다. As described above, the electronic device 101 may include a memory 130; 501 and at least one processor 120; 200; 511. The at least one processor (120;200;511), in the memory (130;501), operates the first operator (613) included in the first operator (613), which is one of the at least one operator included in the model (503;611). A first set of weights of the data type may be obtained. The at least one processor (120; 200; 511) calculates the operation ( A set of sub-output data corresponding to the set of input data 502 and 601 used for computation can be obtained. The at least one processor (120; 200; 511) performs quantization on the first set of weights based on the set of sub-output data, thereby generating a second weight of a second data type supported by at least one accelerator. You can obtain a set. The at least one processor (120;200;511) may store the second weight set in the memory (130;501) based on obtaining the second weight set.
일 실시예에 따르면, 상기 제2 데이터 타입의 가중치 세트를 획득하기 위하여, 상기 적어도 하나의 프로세서(120;200;511)는, 제1 구간의 부동 소수점 수를 표현하기 위한 상기 제1 데이터 타입의 상기 제1 가중치 세트로부터, 상기 양자화를 통해, 상기 제1 구간의 길이 보다 작은 길이를 가지는 제2 구간의 수를 표현하기 위한 상기 제2 데이터 타입의 상기 제2 가중치 세트를 획득할 수 있다. According to one embodiment, in order to obtain a weight set of the second data type, the at least one processor (120; 200; 511) uses a weight set of the first data type for representing a floating point number of the first interval. From the first weight set, through the quantization, the second weight set of the second data type for expressing the number of second sections having a length smaller than the length of the first section can be obtained.
일 실시예에 따르면, 상기 가속기는, 상기 제1 데이터 타입 또는 상기 제2 데이터 타입 중에서, 상기 제2 데이터 타입에 기반하는 연산을 수행하기 위한 회로를 포함할 수 있다. According to one embodiment, the accelerator may include a circuit for performing an operation based on the second data type, either the first data type or the second data type.
일 실시예에 따르면, 상기 가속기는, 상기 제1 데이터 타입 또는 상기 제2 데이터 타입 중에서, 상기 제2 데이터 타입에 기반하는 연산을 수행하도록 구성될 수 있다. According to one embodiment, the accelerator may be configured to perform an operation based on the second data type, either the first data type or the second data type.
일 실시예에 따르면, 상기 적어도 하나의 프로세서(120;200;511)는 상기 모델(503;611)과 관련된 기능을 실행하기 위한 요청에 응답하여, 상기 제1 가중치 세트 또는 상기 제2 가중치 세트 중에서, 상기 제2 가중치 세트를 상기 가속기에 입력함으로써, 상기 제1 오퍼레이터(613)의 연산을 추가적으로 수행할 수 있다.According to one embodiment, the at least one processor (120; 200; 511) responds to a request to execute a function associated with the model (503; 611), either the first weight set or the second weight set. , By inputting the second weight set to the accelerator, the calculation of the first operator 613 can be additionally performed.
일 실시예에 따르면, 상기 적어도 하나의 프로세서(120;200;511)는, 상기 제2 가중치 세트를 획득하는 것에 기반하여, 상기 프로파일 정보로부터 상기 적어도 하나의 오퍼레이터에 대한 연산을 수행함으로써 획득된 제1 출력 데이터(615)의 세트를 식별할 수 있다. 상기 적어도 하나의 프로세서(120;200;511)는, 상기 제2 가중치 세트에 기반하여 상기 적어도 하나의 오퍼레이터에 대한 연산을 수행함으로써, 상기 입력 데이터(502;601)의 세트로부터 제2 출력 데이터(625)의 세트를 획득할 수 있다. 상기 적어도 하나의 프로세서(120;200;511)는, 상기 제1 출력 데이터(615) 및 대응하는 상기 제2 출력 데이터(625) 사이의 차이 값(difference)의 세트에 기반하여, 상기 모델(503;611)에 포함된 제1 오퍼레이터(613)에 포함된 상기 제1 가중치 세트를, 상기 제2 가중치 세트로 교체할 수 있다. According to one embodiment, the at least one processor (120; 200; 511), based on obtaining the second set of weights, performs an operation for the at least one operator from the profile information. 1 A set of output data 615 can be identified. The at least one processor (120; 200; 511) performs an operation for the at least one operator based on the second set of weights, thereby generating second output data from the set of input data (502; 601). 625) set can be obtained. The at least one processor (120; 200; 511) operates on the model (503) based on a set of difference values between the first output data (615) and the corresponding second output data (625). ;611), the first weight set included in the first operator 613 can be replaced with the second weight set.
일 실시예에 따르면, 상기 전자 장치는 통신 회로를 추가적으로 포함할 수 있다. 상기 적어도 하나의 프로세서(120;200;511)는, 상기 제1 출력 데이터(615) 및 대응하는 상기 제2 출력 데이터(625) 사이의 상기 차이 값의 세트 중 적어도 하나의 차이 값이 기준 값 이상임을 식별함에 기반하여, 상기 프로파일 정보로부터 획득된 상기 서브 출력 데이터의 세트를 통신 회로를 통해 서버에게 추가적으로 전송할 수 있다. 상기 적어도 하나의 프로세서(120;200;511)는, 상기 서브 출력 데이터에 기반하여, 상기 제1 가중치 세트에 대한 양자화가 수행된 상기 제2 데이터 타입의 제3 가중치 세트를 상기 통신 회로를 통해 서버로부터 추가적으로 수신할 수 있다. 상기 적어도 하나의 프로세서(120;200;511)는, 상기 수신된 상기 제3 가중치 세트를 상기 메모리(130;501)에 추가적으로 저장할 수 있다. According to one embodiment, the electronic device may additionally include a communication circuit. The at least one processor (120; 200; 511) determines that at least one difference value among the set of difference values between the first output data 615 and the corresponding second output data 625 is greater than or equal to a reference value. Based on the identification, the set of sub-output data obtained from the profile information can be additionally transmitted to the server through a communication circuit. The at least one processor (120; 200; 511), based on the sub-output data, sends a third weight set of the second data type on which quantization of the first weight set was performed to a server through the communication circuit. You can receive additional information from. The at least one processor (120;200;511) may additionally store the received third weight set in the memory (130;501).
일 실시예에 따르면, 상기 제2 데이터 타입의 상기 제2 가중치 세트를 획득하기 위하여, 상기 적어도 하나의 프로세서(120;200;511)는, 상기 서브 출력 데이터의 세트의 분포에 기반하여, 상기 제1 가중치 세트에 대한 양자화를 수행함으로써 상기 제2 가중치 세트를 획득할 수 있다. According to one embodiment, in order to obtain the second weight set of the second data type, the at least one processor (120; 200; 511), based on the distribution of the set of sub-output data, 1 The second weight set can be obtained by performing quantization on the weight set.
일 실시예에 따르면, 상기 적어도 하나의 프로세서(120;200;511)는, 상기 제1 가중치 세트의 해시 값과 함께, 상기 제2 가중치 세트를 상기 메모리(130;501)에 추가적으로 저장할 수 있다. According to one embodiment, the at least one processor (120;200;511) may additionally store the second weight set in the memory (130;501) along with the hash value of the first weight set.
일 실시예에 따르면, 상기 적어도 하나의 프로세서(120;200;511)는, 상기 제1 가중치 세트의 해시 값에 대응하는 제2 가중치 세트에 기반하여 제1 오퍼레이터(613)들에 대한 연산을 추가적으로 수행할 수 있다. According to one embodiment, the at least one processor (120; 200; 511) additionally performs an operation on the first operators 613 based on a second weight set corresponding to a hash value of the first weight set. It can be done.
일 실시예에 따르면, 상기 제1 오퍼레이터(613)의 상기 서브 출력 데이터의 세트는 상기 적어도 하나의 오퍼레이터 중 하나인, 상기 제1 오퍼레이터(613)에 연결된 제2 오퍼레이터의 입력 데이터(502;601)의 세트일 수 있다. According to one embodiment, the set of sub-output data of the first operator 613 is the input data 502; 601 of a second operator connected to the first operator 613, which is one of the at least one operator. It may be a set of
일 실시예에 따르면, 상기 메모리(130;501)에서, 상기 제1 가중치 세트를 획득하기 위하여, 상기 적어도 하나의 프로세서(120;200;511)는 오퍼레이터에 대한 연산(computation)을 위한 상기 가속기에 의해 지원되는 상기 제2 데이터 타입을 식별할 수 있다. 상기 메모리(130;501)에서, 상기 제1 가중치 세트를 획득하기 위하여, 상기 적어도 하나의 프로세서(120;200;511)는, 상기 제2 데이터 타입과 상이한 상기 제1 오퍼레이터(613)에 포함된 제1 가중치 세트의 제1 데이터 타입을 식별할 수 있다. 상기 메모리(130;501)에서, 상기 제1 가중치 세트를 획득하기 위하여, 상기 적어도 하나의 프로세서(120;200;511)는, 상기 제2 데이터 타입과 상이한 상기 제1 데이터 타입을 식별함에 기반하여, 상기 메모리(130;501)에서, 모델(503;611)에 포함된 적어도 하나의 오퍼레이터 중 하나인 상기 제1 오퍼레이터(613)에 포함된 상기 제1 데이터 타입의 상기 제1 가중치 세트를 획득할 수 있다. According to one embodiment, in the memory (130; 501), to obtain the first set of weights, the at least one processor (120; 200; 511) is connected to the accelerator for computation for an operator. The second data type supported by can be identified. In the memory (130;501), to obtain the first set of weights, the at least one processor (120;200;511) includes a first operator (613) different from the second data type. A first data type of the first weight set may be identified. In the memory (130;501), to obtain the first set of weights, the at least one processor (120;200;511), based on identifying the first data type that is different from the second data type, , in the memory 130; 501, to obtain the first weight set of the first data type included in the first operator 613, which is one of at least one operator included in the model 503; 611. You can.
일 실시예에 따르면, 상기 메모리(130;501)에서, 상기 제1 가중치 세트를 획득하기 위하여, 상기 적어도 하나의 프로세서(120;200;511)는 오퍼레이터에 대한 연산(computation)을 위한 상기 가속기에 의해 지원되는 상기 제2 데이터 타입을 식별할 수 있다. 상기 메모리(130;501)에서, 상기 제1 가중치 세트를 획득하기 위하여, 상기 적어도 하나의 프로세서(120;200;511)는, 상기 제2 데이터 타입과 상이한 상기 제1 오퍼레이터(613)에 포함된 제1 가중치 세트의 제1 데이터 타입을 식별하거나, 상기 제1 가중치 세트의 해시 값에 대응하는 제2 가중치 세트의 데이터 타입을 상기 제1 데이터 타입으로 식별하거나 상기 제1 가중치 세트의 상기 해시 값에 대응하는 가중치 세트가 상기 제1 가중치 세트뿐임을 식별함에 기반하여, 상기 메모리(130;501)에서, 모델(503;611)에 포함된 적어도 하나의 오퍼레이터 중 하나인 상기 제1 오퍼레이터(613)에 포함된 상기 제1 데이터 타입의 상기 제1 가중치 세트를 획득할 수 있다. According to one embodiment, in the memory (130; 501), to obtain the first set of weights, the at least one processor (120; 200; 511) is connected to the accelerator for computation for an operator. The second data type supported by can be identified. In the memory (130;501), to obtain the first set of weights, the at least one processor (120;200;511) includes a first operator (613) different from the second data type. Identifying a first data type of a first weight set, or identifying a data type of a second weight set corresponding to a hash value of the first weight set with the first data type, or identifying a data type of a second weight set corresponding to the hash value of the first weight set. Based on identifying that the corresponding weight set is only the first weight set, in the memory 130; 501, the first operator 613, which is one of at least one operator included in the model 503; 611, The first weight set of the included first data type may be obtained.
일 실시예에 따르면, 상기 메모리(130;501)에서, 상기 제1 가중치 세트를 획득하기 위하여, 상기 적어도 하나의 프로세서(120;200;511)는, 상기 가속기에 의해 지원되는 상기 제2 데이터 타입을 식별할 수 있다. 상기 메모리(130;501)에서, 상기 제1 가중치 세트를 획득하기 위하여, 상기 적어도 하나의 프로세서(120;200;511)는, 상기 제2 데이터 타입과 상이한 상기 제1 오퍼레이터(613)에 포함된 제1 가중치 세트의 제1 데이터 타입을 식별하고 양자화에 기반하여 상기 제1 가중치 세트로부터 획득된 상기 제2 데이터 타입의 가중치 세트가 상기 메모리에 저장되었는지 여부 또는 상기 가중치 세트 내에 가중치가 포함되어 있는지 여부에 기반하여, 상기 제1 데이터 타입의 상기 제1 가중치 세트에 대한 양자화를 수행할지 여부를 결정할 수 있다. According to one embodiment, in the memory (130;501), to obtain the first set of weights, the at least one processor (120;200;511) selects the second data type supported by the accelerator. can be identified. In the memory (130;501), to obtain the first set of weights, the at least one processor (120;200;511) includes a first operator (613) different from the second data type. Identifying a first data type of a first weight set and whether a weight set of the second data type obtained from the first weight set based on quantization is stored in the memory or whether weights are included in the weight set Based on this, it can be determined whether to perform quantization on the first weight set of the first data type.
상술한 바와 같이, 일 실시예에 따르면, 전자 장치(electronic device)(101)에 의해 수행되는 방법은 메모리(130;501)에서, 모델(503;611)에 포함된 적어도 하나의 오퍼레이터 중 하나인 제1 오퍼레이터(613)에 포함된 제1 데이터 타입의 제1 가중치 세트를 획득하는 동작을 포함할 수 있다. 상기 방법은 상기 메모리(130;501)에 저장된, 상기 모델(503;611)의 실행에 의해 생성된 프로파일 정보로부터, 상기 제1 오퍼레이터(613)의 연산(computation)을 위해 이용된 입력 데이터(502;601)의 세트에 대응하는 서브 출력 데이터의 세트를 획득하는 동작을 포함할 수 있다. 상기 방법은 상기 서브 출력 데이터의 세트에 기반하여, 상기 제1 가중치 세트에 대한 양자화를 수행함으로써 적어도 하나의 가속기에 의해 지원되는 제2 데이터 타입의 제2 가중치 세트를 획득하는 동작을 포함할 수 있다. 상기 방법은 상기 제2 가중치 세트를 획득하는 것에 기반하여, 상기 메모리(130;501)에 상기 제2 가중치 세트를 저장하는 동작을 포함할 수 있다. As described above, according to one embodiment, the method performed by the electronic device 101 is performed in the memory 130; 501 by one of at least one operator included in the model 503; 611. It may include an operation of acquiring a first weight set of the first data type included in the first operator 613. The method uses input data 502 used for computation of the first operator 613 from profile information generated by execution of the model 503; 611, stored in the memory 130; 501. ;601) may include an operation of acquiring a set of sub-output data corresponding to the set. The method may include, based on the set of sub-output data, obtaining a second weight set of a second data type supported by at least one accelerator by performing quantization on the first weight set. . The method may include storing the second set of weights in the memory (130; 501) based on obtaining the second set of weights.
일 실시예에 따르면, 상기 제2 데이터 타입의 가중치 세트를 획득하는 동작은, 제1 구간의 부동 소수점 수를 표현하기 위한 상기 제1 데이터 타입의 상기 제1 가중치 세트로부터, 상기 양자화를 통해, 상기 제1 구간의 길이 보다 작은 길이를 가지는 제2 구간의 수를 표현하기 위한 상기 제2 데이터 타입의 상기 제2 가중치 세트를 획득하는 동작을 포함할 수 있다. According to one embodiment, the operation of acquiring the weight set of the second data type includes, through the quantization, the first weight set of the first data type for representing a floating point number of the first interval. It may include obtaining the second weight set of the second data type to represent the number of second sections having a length smaller than the length of the first section.
일 실시예에 따르면, 상기 가속기는, 상기 제1 데이터 타입 또는 상기 제2 데이터 타입 중에서, 상기 제2 데이터 타입에 기반하는 연산을 수행하도록 구성될 수 있다. According to one embodiment, the accelerator may be configured to perform an operation based on the second data type, either the first data type or the second data type.
일 실시예에 따르면, 상기 방법은 상기 모델(503;611)과 관련된 기능을 실행하기 위한 요청에 응답하여, 상기 제1 가중치 세트 또는 상기 제2 가중치 세트 중에서, 상기 제2 가중치 세트를 상기 가속기에 입력함으로써, 상기 제1 오퍼레이터(613)의 연산을 수행하는 동작을 추가적으로 포함할 수 있다. According to one embodiment, the method is configured to, in response to a request to execute a function associated with the model (503; 611), apply the second set of weights, either the first set of weights or the second set of weights, to the accelerator. By inputting, the operation of performing the operation of the first operator 613 may be additionally included.
일 실시예에 따르면, 상기 방법은 상기 제2 가중치 세트를 획득하는 것에 기반하여, 상기 프로파일 정보로부터 상기 적어도 하나의 오퍼레이터에 대한 연산을 수행함으로써 획득된 제1 출력 데이터(615)의 세트를 식별하는 동작을 포함할 수 있다. 상기 방법은 상기 제2 가중치 세트에 기반하여 상기 적어도 하나의 오퍼레이터에 대한 연산을 수행함으로써, 상기 입력 데이터(502;601)의 세트로부터 제2 출력 데이터(625)의 세트를 획득하는 동작을 포함할 수 있다. 상기 방법은 상기 제1 출력 데이터(615) 및 대응하는 상기 제2 출력 데이터(625) 사이의 차이 값(difference)의 세트에 기반하여, 상기 모델(503;611)에 포함된 제1 오퍼레이터(613)에 포함된 상기 제1 가중치 세트를, 상기 제2 가중치 세트로 교체하는 동작을 포함할 수 있다. According to one embodiment, the method identifies a set of first output data 615 obtained by performing an operation for the at least one operator from the profile information, based on obtaining the second set of weights. Can include actions. The method may include obtaining a second set of output data (625) from the set of input data (502; 601) by performing an operation on the at least one operator based on the second set of weights. You can. The method is based on a set of difference values between the first output data 615 and the corresponding second output data 625, and the first operator 613 included in the model 503; 611. ) may include replacing the first weight set included in the second weight set with the second weight set.
일 실시예에 따르면, 상기 방법은 상기 제1 출력 데이터(615) 및 대응하는 상기 제2 출력 데이터(625) 사이의 상기 차이 값의 세트 중 적어도 하나의 차이 값이 기준 값 이상임을 식별함에 기반하여, 상기 프로파일 정보로부터 획득된 상기 서브 출력 데이터의 세트를 통신 회로를 통해 서버에게 전송하는 동작을 추가적으로 포함할 수 있다. 상기 방법은 상기 서브 출력 데이터에 기반하여, 상기 제1 가중치 세트에 대한 양자화가 수행된 상기 제2 데이터 타입의 제3 가중치 세트를 상기 통신 회로를 통해 서버로부터 수신하는 동작을 추가적으로 포함할 수 있다. 상기 방법은 상기 수신된 상기 제3 가중치 세트를 상기 메모리(130;501)에 저장하는 동작을 추가적으로 포함할 수 있다. According to one embodiment, the method is based on identifying that at least one difference value of the set of difference values between the first output data 615 and the corresponding second output data 625 is greater than or equal to a reference value. , It may additionally include an operation of transmitting the set of sub-output data obtained from the profile information to a server through a communication circuit. The method may additionally include receiving, based on the sub-output data, a third weight set of the second data type on which quantization of the first weight set has been performed from a server through the communication circuit. The method may additionally include storing the received third weight set in the memory (130;501).
일 실시예에 따르면, 상기 제2 데이터 타입의 상기 제2 가중치 세트를 획득하는 동작은 상기 서브 출력 데이터의 세트의 분포에 기반하여, 상기 제1 가중치 세트에 대한 양자화를 수행함으로써 상기 제2 가중치 세트를 획득하는 동작을 포함할 수 있다. According to one embodiment, the operation of obtaining the second weight set of the second data type is performed by performing quantization on the first weight set based on the distribution of the set of sub-output data. It may include an operation to obtain.
일 실시예에 따르면, 상기 제1 가중치 세트의 해시 값과 함께, 상기 제2 가중치 세트를 상기 메모리(130;501)에 저장하는 동작을 추가적으로 포함할 수 있다. According to one embodiment, the operation of storing the second weight set together with the hash value of the first weight set in the memory (130; 501) may be additionally included.
일 실시예에 따르면, 상기 방법은 상기 제1 가중치 세트의 해시 값에 대응하는 제2 가중치 세트에 기반하여 제1 오퍼레이터(613)들에 대한 연산을 수행하는 동작을 추가적으로 포함할 수 있다. According to one embodiment, the method may additionally include performing an operation on the first operators 613 based on a second weight set corresponding to a hash value of the first weight set.
일 실시예에 따르면, 상기 제1 오퍼레이터(613)의 상기 서브 출력 데이터의 세트는 상기 적어도 하나의 오퍼레이터 중 하나인, 상기 제1 오퍼레이터(613)에 연결된 제2 오퍼레이터의 입력 데이터(502;601)의 세트일 수 있다. According to one embodiment, the set of sub-output data of the first operator 613 is the input data 502; 601 of a second operator connected to the first operator 613, which is one of the at least one operator. It may be a set of
일 실시예에 따르면, 상기 메모리(130;501)에서, 상기 제1 가중치 세트를 획득하는 동작은, 오퍼레이터에 대한 연산(computation)을 위한 상기 가속기에 의해 지원되는 상기 제2 데이터 타입을 식별하는 동작을 포함할 수 있다. 상기 메모리(130;501)에서, 상기 제1 가중치 세트를 획득하는 동작은, 상기 제2 데이터 타입과 상이한 상기 제1 오퍼레이터(613)에 포함된 제1 가중치 세트의 제1 데이터 타입을 식별하는 동작을 포함할 수 있다. 상기 메모리(130;501)에서, 상기 제1 가중치 세트를 획득하는 동작은, 상기 제2 데이터 타입과 상이한 상기 제1 데이터 타입을 식별함에 기반하여, 상기 메모리(130;501)에서, 모델(503;611)에 포함된 적어도 하나의 오퍼레이터 중 하나인 상기 제1 오퍼레이터(613)에 포함된 상기 제1 데이터 타입의 상기 제1 가중치 세트를 획득하는 동작을 포함할 수 있다. According to one embodiment, in the memory 130 (501), obtaining the first set of weights includes identifying the second data type supported by the accelerator for computation for an operator. may include. In the memory 130; 501, the operation of acquiring the first weight set includes identifying a first data type of the first weight set included in the first operator 613 that is different from the second data type. may include. In the memory 130;501, the operation of obtaining the first set of weights generates, in the memory 130;501, a model 503 based on identifying the first data type that is different from the second data type. ; 611) may include an operation of acquiring the first weight set of the first data type included in the first operator 613, which is one of the at least one operator included in 611).
일 실시예에 따르면, 상기 메모리(130;501)에서, 상기 제1 가중치 세트를 획득하는 동작은, 오퍼레이터에 대한 연산(computation)을 위한 상기 가속기에 의해 지원되는 상기 제2 데이터 타입을 식별하는 동작을 포함할 수 있다. 상기 메모리(130;501)에서, 상기 제1 가중치 세트를 획득하는 동작은, 상기 제2 데이터 타입과 상이한 상기 제1 오퍼레이터(613)에 포함된 제1 가중치 세트의 제1 데이터 타입을 식별하는 동작, 상기 제1 가중치 세트의 해시 값에 대응하는 상기 제2 가중치 세트의 데이터 타입을 상기 제1 데이터 타입으로 식별하는 동작, 또는 상기 제1 가중치 세트의 상기 해시 값에 대응하는 가중치 세트가 상기 제1 가중치 세트뿐임을 식별하는 동작에 기반하여, 상기 메모리(130;501)에서, 모델(503;611)에 포함된 적어도 하나의 오퍼레이터 중 하나인 상기 제1 오퍼레이터(613)에 포함된 상기 제1 데이터 타입의 상기 제1 가중치 세트를 획득하는 동작을 포함할 수 있다. According to one embodiment, in the memory 130 (501), obtaining the first set of weights includes identifying the second data type supported by the accelerator for computation for an operator. may include. In the memory 130; 501, the operation of acquiring the first weight set includes identifying a first data type of the first weight set included in the first operator 613 that is different from the second data type. , identifying the data type of the second weight set corresponding to the hash value of the first weight set as the first data type, or the weight set corresponding to the hash value of the first weight set being the first data type. Based on the operation of identifying that there is only a set of weights, in the memory 130; 501, the first data included in the first operator 613, which is one of at least one operator included in the model 503; 611. and obtaining the first weight set of type.
일 실시예에 따르면, 상기 메모리(130;501)에서, 상기 제1 가중치 세트를 획득하는 동작은, 상기 가속기에 의해 지원되는 상기 제2 데이터 타입을 식별하는 동작을 포함할 수 있다. 상기 메모리(130;501)에서, 상기 제1 가중치 세트를 획득하는 동작은, 상기 제2 데이터 타입과 상이한 상기 제1 오퍼레이터(613)에 포함된 제1 가중치 세트의 제1 데이터 타입을 식별하는 동작을 포함할 수 있다. 상기 메모리(130;501)에서, 상기 제1 가중치 세트를 획득하는 동작은, 양자화에 기반하여 상기 제1 가중치 세트로부터 획득된 상기 제2 데이터 타입의 가중치 세트가 상기 메모리에 저장되었는지 여부 또는 상기 가중치 세트 내에 가중치가 포함되어 있는지 여부에 기반하여, 상기 제1 데이터 타입의 상기 제1 가중치 세트에 대한 양자화를 수행할지 여부를 결정하는 동작을 포함할 수 있다. According to one embodiment, in the memory 130 (501), obtaining the first set of weights may include identifying the second data type supported by the accelerator. In the memory 130; 501, the operation of acquiring the first weight set includes identifying a first data type of the first weight set included in the first operator 613 that is different from the second data type. may include. In the memory 130; 501, the operation of acquiring the first weight set may be performed by determining whether the weight set of the second data type obtained from the first weight set based on quantization is stored in the memory or the weight set. The method may include determining whether to perform quantization on the first weight set of the first data type based on whether a weight is included in the set.
일 실시예에 따르면, 상기 제2 데이터 타입의 상기 제2 가중치 세트를 획득하는 동작은, 상기 서브 출력 데이터의 세트의 값들이 분포되는 구간에 기반하여, 상기 제1 가중치 세트에 대한 양자화를 수행함으로써 상기 제2 가중치 세트를 획득하는 동작을 포함할 수 있다. According to one embodiment, the operation of acquiring the second weight set of the second data type is by performing quantization on the first weight set based on the section in which the values of the set of sub-output data are distributed. It may include an operation of obtaining the second weight set.
일 실시예에 따르면, 상기 제2 데이터 타입의 상기 제2 가중치 세트를 획득하는 동작은, 상기 전자 장치가, 상기 서브 출력 데이터 세트의 값들이 분포되는 상기 구간의 크기를 이용하여, 상기 제2 데이터 타입을 위한 양자화 레벨을 결정하는 동작과, 상기 양자화 레벨에 따라, 상기 제1 가중치 세트에 대한 양자화를 수행하는 동작을 포함할 수 있다.According to one embodiment, the operation of acquiring the second weight set of the second data type includes the electronic device using the size of the section in which the values of the sub-output data set are distributed to determine the second data. It may include determining a quantization level for a type and performing quantization on the first weight set according to the quantization level.
일 실시예에 따르면, 상기 제2 데이터 타입 및 상기 양자화 레벨에 따라 표현 가능한 수의 범위는, 상기 서브 출력 데이터 세트의 구간을 포함할 수 있다.According to one embodiment, the range of numbers that can be expressed according to the second data type and the quantization level may include a section of the sub-output data set.
상술한 바와 같이. 일 실시예에 따르면, 하나 이상의 프로그램들을 저장하는 컴퓨터 판독가능 저장 매체(computer readable storage medium)에 있어서, 상기 하나 이상의 프로그램들은, 전자 장치의 프로세서에 의해 실행될 시에, 상기 메모리(130;501)에서, 모델(503;611)에 포함된 적어도 하나의 오퍼레이터 중 하나인 제1 오퍼레이터(613)에 포함된 제1 데이터 타입의 제1 가중치 세트를 획득하도록 상기 전자 장치를 야기하는 인스트럭션들을 포함할 수 있다. 상기 하나 이상의 프로그램들은, 상기 메모리(130;501)에 저장된, 상기 모델(503;611)의 실행에 의해 생성된 프로파일 정보로부터, 상기 제1 오퍼레이터(613)의 연산(computation)을 위해 이용된 입력 데이터(502;601)의 세트에 대응하는 서브 출력 데이터의 세트를 획득하도록 상기 전자 장치를 야기하는 인스트럭션들을 포함할 수 있다. 상기 하나 이상의 프로그램들은, 상기 서브 출력 데이터의 세트에 기반하여, 상기 제1 가중치 세트에 대한 양자화를 수행함으로써 적어도 하나의 가속기에 의해 지원되는 제2 데이터 타입의 제2 가중치 세트를 획득하도록 상기 전자 장치를 야기하는 인스트럭션들을 포함할 수 있다. 상기 하나 이상의 프로그램들은, 상기 제2 가중치 세트를 획득하는 것에 기반하여, 상기 메모리(130;501)에 상기 제2 가중치 세트를 저장하도록, 상기 전자 장치를 야기하는 인스트럭션들을 포함할 수 있다. As described above. According to one embodiment, in a computer readable storage medium storing one or more programs, the one or more programs are stored in the memory (130; 501) when executed by a processor of an electronic device. , may include instructions that cause the electronic device to obtain a first weight set of a first data type included in a first operator 613, which is one of at least one operator included in the model 503; 611. . The one or more programs are input used for computation of the first operator 613 from profile information generated by execution of the model 503; 611, stored in the memory 130; 501. and instructions causing the electronic device to obtain a set of sub-output data corresponding to the set of data 502;601. The one or more programs, based on the set of sub-output data, perform quantization on the first set of weights to obtain a second set of weights of a second data type supported by at least one accelerator. It may contain instructions that cause . The one or more programs may include instructions that cause the electronic device to store the second set of weights in the memory (130; 501) based on obtaining the second set of weights.
일 실시예에 따르면, 하나 이상의 프로그램들을 저장하는 컴퓨터 판독가능 저장 매체(computer readable storage medium)에 있어서, 상기 하나 이상의 프로그램들은, 전자 장치의 프로세서에 의해 실행될 시에, 상기 제2 데이터 타입의 가중치 세트를 획득하기 위하여, 상기 적어도 하나의 프로세서(120;200;511)는, 제1 구간의 부동 소수점 수를 표현하기 위한 상기 제1 데이터 타입의 상기 제1 가중치 세트로부터, 상기 양자화를 통해, 상기 제1 구간의 길이 보다 작은 길이를 가지는 제2 구간의 수를 표현하기 위한 상기 제2 데이터 타입의 상기 제2 가중치 세트를 획득하도록 상기 전자 장치를 야기하는 인스트럭션들을 포함할 수 있다.According to one embodiment, in a computer readable storage medium storing one or more programs, the one or more programs, when executed by a processor of an electronic device, include a weight set of the second data type. In order to obtain, the at least one processor (120; 200; 511), through the quantization, from the first weight set of the first data type for representing the floating point number of the first interval, and instructions that cause the electronic device to obtain the second weight set of the second data type to represent the number of second intervals having a length less than the length of one interval.
일 실시예에 따르면, 하나 이상의 프로그램들을 저장하는 컴퓨터 판독가능 저장 매체(computer readable storage medium)에 있어서, 상기 하나 이상의 프로그램들은, 전자 장치의 프로세서에 의해 실행될 시에, 상기 가속기는, 상기 제1 데이터 타입 또는 상기 제2 데이터 타입 중에서, 상기 제2 데이터 타입에 기반하는 연산을 수행하도록, 상기 전자 장치를 야기하는 인스트럭션들을 포함할 수 있다. According to one embodiment, in a computer readable storage medium storing one or more programs, when the one or more programs are executed by a processor of an electronic device, the accelerator stores the first data. type or the second data type, may include instructions that cause the electronic device to perform an operation based on the second data type.
일 실시예에 따르면, 하나 이상의 프로그램들을 저장하는 컴퓨터 판독가능 저장 매체(computer readable storage medium)에 있어서, 상기 하나 이상의 프로그램들은, 전자 장치의 프로세서에 의해 실행될 시에, 상기 모델(503;611)과 관련된 기능을 실행하기 위한 요청에 응답하여, 상기 제1 가중치 세트 또는 상기 제2 가중치 세트 중에서, 상기 제2 가중치 세트를 상기 가속기에 입력함으로써, 상기 제1 오퍼레이터(613)의 연산을 수행하도록, 상기 전자 장치를 야기하는 인스트럭션들을 포함할 수 있다.According to one embodiment, in a computer readable storage medium storing one or more programs, the one or more programs, when executed by a processor of an electronic device, display the model (503; 611) and In response to a request to execute a related function, perform an operation of the first operator 613 by inputting the second set of weights, out of the first set of weights or the second set of weights, to the accelerator. It may contain instructions that trigger an electronic device.
일 실시예에 따르면, 하나 이상의 프로그램들을 저장하는 컴퓨터 판독가능 저장 매체(computer readable storage medium)에 있어서, 상기 하나 이상의 프로그램들은, 전자 장치의 프로세서에 의해 실행될 시에, 상기 제2 가중치 세트를 획득하는 것에 기반하여, 상기 프로파일 정보로부터 상기 적어도 하나의 오퍼레이터에 대한 연산을 수행함으로써 획득된 제1 출력 데이터(615)의 세트를 식별하고, 상기 제2 가중치 세트에 기반하여 상기 적어도 하나의 오퍼레이터에 대한 연산을 수행함으로써, 상기 입력 데이터(502;601)의 세트로부터 제2 출력 데이터(625)의 세트를 획득하고, 상기 제1 출력 데이터(615) 및 대응하는 상기 제2 출력 데이터(625) 사이의 차이 값(difference)의 세트에 기반하여, 상기 모델(503;611)에 포함된 제1 오퍼레이터(613)에 포함된 상기 제1 가중치 세트를, 상기 제2 가중치 세트로 교체하도록, 상기 전자 장치를 야기하는 인스트럭션들을 포함할 수 있다.According to one embodiment, in a computer readable storage medium storing one or more programs, the one or more programs, when executed by a processor of an electronic device, obtain the second set of weights. Based on this, identify a set of first output data 615 obtained by performing an operation for the at least one operator from the profile information, and perform an operation for the at least one operator based on the second set of weights. Obtaining a set of second output data (625) from the set of input data (502; 601), and determining the difference between the first output data (615) and the corresponding second output data (625) Based on a set of values (differences), cause the electronic device to replace the first set of weights included in the first operator 613 included in the model 503; 611 with the second set of weights. It can include instructions that do.
일 실시예에 따르면, 하나 이상의 프로그램들을 저장하는 컴퓨터 판독가능 저장 매체(computer readable storage medium)에 있어서, 상기 하나 이상의 프로그램들은, 전자 장치의 프로세서에 의해 실행될 시에, 상기 제1 출력 데이터(615) 및 대응하는 상기 제2 출력 데이터(625) 사이의 상기 차이 값의 세트 중 적어도 하나의 차이 값이 기준 값 이상임을 식별함에 기반하여, 상기 프로파일 정보로부터 획득된 상기 서브 출력 데이터의 세트를 상기 통신 회로를 통해 서버에게 전송하고, 상기 서브 출력 데이터에 기반하여, 상기 제1 가중치 세트에 대한 양자화가 수행된 상기 제2 데이터 타입의 제3 가중치 세트를 상기 통신 회로를 통해 서버로부터 수신하고, 상기 수신된 상기 제3 가중치 세트를 상기 메모리(130;501)에 저장하도록, 상기 전자 장치를 야기하는 인스트럭션들을 포함할 수 있다.According to one embodiment, in a computer readable storage medium storing one or more programs, when the one or more programs are executed by a processor of an electronic device, the first output data 615 and the set of sub-output data obtained from the profile information based on identifying that at least one difference value of the set of difference values between the corresponding second output data 625 is greater than or equal to a reference value. Transmits to a server through and, based on the sub-output data, receives a third weight set of the second data type on which quantization of the first weight set has been performed from the server through the communication circuit, and receives the received and instructions that cause the electronic device to store the third set of weights in the memory (130;501).
일 실시예에 따르면, 하나 이상의 프로그램들을 저장하는 컴퓨터 판독가능 저장 매체(computer readable storage medium)에 있어서, 상기 하나 이상의 프로그램들은, 전자 장치의 프로세서에 의해 실행될 시에, 상기 제2 데이터 타입의 상기 제2 가중치 세트를 획득하기 위하여, 상기 서브 출력 데이터의 세트의 분포에 기반하여, 상기 제1 가중치 세트에 대한 양자화를 수행함으로써 상기 제2 가중치 세트를 획득하도록, 상기 전자 장치를 야기하는 인스트럭션들을 포함할 수 있다.According to one embodiment, in a computer readable storage medium storing one or more programs, when the one or more programs are executed by a processor of an electronic device, the first data type of the second data type instructions that cause the electronic device to obtain the second set of weights by performing quantization on the first set of weights, based on a distribution of the set of sub-output data, to obtain a set of two weights. You can.
일 실시예에 따르면, 하나 이상의 프로그램들을 저장하는 컴퓨터 판독가능 저장 매체(computer readable storage medium)에 있어서, 상기 하나 이상의 프로그램들은, 전자 장치의 프로세서에 의해 실행될 시에, 상기 제1 가중치 세트의 해시 값과 함께, 상기 제2 가중치 세트를 상기 메모리(130;501)에 저장하도록, 상기 전자 장치를 야기하는 인스트럭션들을 포함할 수 있다.According to one embodiment, in a computer readable storage medium storing one or more programs, the one or more programs, when executed by a processor of an electronic device, include a hash value of the first weight set. together with instructions that cause the electronic device to store the second set of weights in the memory (130;501).
일 실시예에 따르면, 하나 이상의 프로그램들을 저장하는 컴퓨터 판독가능 저장 매체(computer readable storage medium)에 있어서, 상기 하나 이상의 프로그램들은, 전자 장치의 프로세서에 의해 실행될 시에, 상기 제1 가중치 세트의 해시 값에 대응하는 제2 가중치 세트에 기반하여 제1 오퍼레이터(613)들에 대한 연산을 수행하도록 상기 전자 장치를 야기하는 인스트럭션들을 포함할 수 있다.According to one embodiment, in a computer readable storage medium storing one or more programs, the one or more programs, when executed by a processor of an electronic device, include a hash value of the first weight set. may include instructions that cause the electronic device to perform an operation for first operators 613 based on a second set of weights corresponding to .
일 실시예에 따르면, 하나 이상의 프로그램들을 저장하는 컴퓨터 판독가능 저장 매체(computer readable storage medium)에 있어서, 상기 제1 오퍼레이터(613)의 상기 서브 출력 데이터의 세트는 상기 적어도 하나의 오퍼레이터 중 하나인, 상기 제1 오퍼레이터(613)에 연결된 제2 오퍼레이터의 입력 데이터(502;601)의 세트일 수 있다. According to one embodiment, a computer readable storage medium storing one or more programs, wherein the set of sub-output data of the first operator (613) is one of the at least one operator, It may be a set of input data (502; 601) of a second operator connected to the first operator (613).
일 실시예에 따르면, 하나 이상의 프로그램들을 저장하는 컴퓨터 판독가능 저장 매체(computer readable storage medium)에 있어서, 상기 하나 이상의 프로그램들은, 전자 장치의 프로세서에 의해 실행될 시에, 상기 메모리(130;501)에서, 상기 제1 가중치 세트를 획득하기 위하여, 상기 가속기에 의해 지원되는 상기 제2 데이터 타입을 식별하고, 상기 제2 데이터 타입과 상이한 상기 제1 오퍼레이터(613)에 포함된 제1 가중치 세트의 제1 데이터 타입을 식별했는지 여부, 양자화에 기반하여 상기 제1 가중치 세트로부터 획득된 상기 제2 데이터 타입의 가중치 세트가 상기 메모리에 저장되었는지 여부, 또는 상기 제2 데이터 타입의 상기 가중치 세트 내에 가중치가 포함되어 있는지 여부에 기반하여, 상기 제1 데이터 타입의 상기 제1 가중치 세트에 대한 양자화를 수행할지 여부를 결정 하도록 상기 전자 장치를 야기하는 인스트럭션들을 포함할 수 있다.According to one embodiment, in a computer readable storage medium storing one or more programs, the one or more programs are stored in the memory (130; 501) when executed by a processor of an electronic device. , to obtain the first set of weights, identify the second data type supported by the accelerator, and determine the first weight set included in the first operator 613 that is different from the second data type. Whether a data type has been identified, whether a weight set of the second data type obtained from the first weight set based on quantization is stored in the memory, or whether weights are included in the weight set of the second data type and instructions that cause the electronic device to determine whether to perform quantization on the first weight set of the first data type.
상술한 바와 같이, 일 실시예에 따르면, 전자 장치(electronic device)(101)는 인스트럭션들을 저장하는 메모리(130; 501), 및 적어도 하나의 프로세서(120; 200; 511)를 포함할 수 있다. 상기 인스트럭션들은, 상기 적어도 하나의 프로세서(120; 200; 511)에 의해 실행될 때, 상기 전자 장치(101)가, 상기 메모리(130; 501)에서, 모델(503; 611)에 포함된 적어도 하나의 오퍼레이터 중 하나인 제1 오퍼레이터(613)에 포함된 제1 데이터 타입의 제1 가중치 세트를 획득하고, 상기 메모리(130; 501)에 저장된, 상기 모델(503; 611)의 실행에 의해 생성된 프로파일 정보로부터, 상기 제1 오퍼레이터(613)의 연산(computation)을 위해 이용된 입력 데이터(502; 601)의 세트에 대응하는 서브 출력 데이터의 세트를 획득하고, 상기 서브 출력 데이터의 세트에 기반하여, 상기 제1 가중치 세트에 대한 양자화를 수행함으로써 적어도 하나의 가속기에 의해 지원되는 제2 데이터 타입의 제2 가중치 세트를 획득하고, 상기 제2 가중치 세트를 획득하는 것에 기반하여, 상기 메모리(130; 501)에 상기 제2 가중치 세트를 저장하도록, 야기할 수 있다.As described above, according to one embodiment, the electronic device 101 may include a memory 130; 501 that stores instructions, and at least one processor 120; 200; 511. When the instructions are executed by the at least one processor 120; 200; 511, the electronic device 101, in the memory 130; 501, executes at least one processor included in the model 503; 611. A profile generated by execution of the model (503; 611), which obtains a first weight set of a first data type included in a first operator (613), one of the operators, and stored in the memory (130; 501). From the information, obtain a set of sub-output data corresponding to the set of input data (502; 601) used for computation of the first operator (613), and based on the set of sub-output data, Obtain a second weight set of a second data type supported by at least one accelerator by performing quantization on the first weight set, and based on obtaining the second weight set, the memory 130; 501 ) to store the second set of weights.
일 실시예에 따르면, 상기 인스트럭션들은, 상기 적어도 하나의 프로세서(120; 200; 511)에 의해 실행될 때, 상기 제2 데이터 타입의 가중치 세트를 획득하기 위하여, 상기 전자 장치(101)가, 제1 구간의 부동 소수점 수를 표현하기 위한 상기 제1 데이터 타입의 상기 제1 가중치 세트로부터, 상기 양자화를 통해, 상기 제1 구간의 길이 보다 작은 길이를 가지는 제2 구간의 수를 표현하기 위한 상기 제2 데이터 타입의 상기 제2 가중치 세트를 획득하도록, 야기할 수 있다. According to one embodiment, the instructions, when executed by the at least one processor 120; 200; 511, cause the electronic device 101 to use a first data type to obtain a weight set of the second data type. From the first weight set of the first data type for expressing the floating point number of the interval, through the quantization, the second weight set for expressing the number of the second interval having a length smaller than the length of the first interval Obtaining the second weight set of data types.
일 실시예에 따르면, 상기 인스트럭션들은, 상기 적어도 하나의 프로세서(120; 200; 511)에 의해 실행될 때, 상기 전자 장치(101)가, 상기 모델(503; 611)과 관련된 기능을 실행하기 위한 요청에 응답하여, 상기 제1 가중치 세트 또는 상기 제2 가중치 세트 중에서, 상기 제2 가중치 세트를 상기 가속기에 입력함으로써, 상기 제1 오퍼레이터(613)의 연산을 수행하도록 야기할 수 있다.According to one embodiment, the instructions, when executed by the at least one processor (120; 200; 511), request the electronic device 101 to execute a function related to the model (503; 611). In response, among the first weight set or the second weight set, the second weight set may be input to the accelerator, thereby causing the first operator 613 to perform an operation.
일 실시예에 따르면, 상기 인스트럭션들은, 상기 적어도 하나의 프로세서(120; 200; 511)에 의해 실행될 때, 상기 전자 장치(101)가, 상기 제2 가중치 세트를 획득하는 것에 기반하여, 상기 프로파일 정보로부터 상기 적어도 하나의 오퍼레이터에 대한 연산을 수행함으로써 획득된 제1 출력 데이터(615)의 세트를 식별하고, 상기 제2 가중치 세트에 기반하여 상기 적어도 하나의 오퍼레이터에 대한 연산을 수행함으로써, 상기 입력 데이터(502; 601)의 세트로부터 제2 출력 데이터(625)의 세트를 획득하고, 상기 제1 출력 데이터(615) 및 대응하는 상기 제2 출력 데이터(625) 사이의 차이 값(difference)의 세트에 기반하여, 상기 모델(503; 611)에 포함된 제1 오퍼레이터(613)에 포함된 상기 제1 가중치 세트를, 상기 제2 가중치 세트로 교체하도록 야기할 수 있다. According to one embodiment, when the instructions are executed by the at least one processor 120; 200; 511, the electronic device 101 generates the profile information based on obtaining the second weight set. Identifying a set of first output data 615 obtained by performing an operation on the at least one operator from, and performing an operation on the at least one operator based on the second set of weights, the input data Obtain a set of second output data 625 from the set of (502; 601), and a set of difference values between the first output data 615 and the corresponding second output data 625. Based on this, the first weight set included in the first operator 613 included in the model 503 (611) may be caused to be replaced with the second weight set.
일 실시예에 따르면, 상기 전자 장치(101)는 통신 회로를 포함할 수 있다. 상기 인스트럭션들은, 상기 적어도 하나의 프로세서(120; 200; 511)에 의해 실행될 때, 상기 전자 장치(101)가, 상기 제1 출력 데이터(615) 및 대응하는 상기 제2 출력 데이터(625) 사이의 상기 차이 값의 세트 중 적어도 하나의 차이 값이 기준 값 이상임을 식별함에 기반하여, 상기 프로파일 정보로부터 획득된 상기 서브 출력 데이터의 세트를 상기 통신 회로를 통해 서버에게 전송하고, 상기 서브 출력 데이터에 기반하여, 상기 제1 가중치 세트에 대한 양자화가 수행된 상기 제2 데이터 타입의 제3 가중치 세트를 상기 통신 회로를 통해 서버로부터 수신하고, 상기 수신된 상기 제3 가중치 세트를 상기 메모리(130; 501)에 저장하도록 야기할 수 있다.According to one embodiment, the electronic device 101 may include a communication circuit. The instructions, when executed by the at least one processor 120; 200; 511, cause the electronic device 101 to output information between the first output data 615 and the corresponding second output data 625. Based on identifying that at least one difference value among the set of difference values is greater than or equal to a reference value, transmitting the set of sub-output data obtained from the profile information to a server through the communication circuit, and based on the sub-output data Thus, a third weight set of the second data type on which quantization of the first weight set has been performed is received from the server through the communication circuit, and the received third weight set is stored in the memory 130; 501. It can cause it to be saved in .
일 실시예에 따르면, 상기 인스트럭션들은, 상기 적어도 하나의 프로세서(120; 200; 511)에 의해 실행될 때, 상기 제2 데이터 타입의 상기 제2 가중치 세트를 획득하기 위하여, 상기 전자 장치(101)가, 상기 서브 출력 데이터의 세트의 분포에 기반하여, 상기 제1 가중치 세트에 대한 양자화를 수행함으로써 상기 제2 가중치 세트를 획득하도록 야기할 수 있다. According to one embodiment, the instructions, when executed by the at least one processor 120; 200; 511, cause the electronic device 101 to obtain the second weight set of the second data type. , based on the distribution of the set of sub-output data, may cause the second weight set to be obtained by performing quantization on the first weight set.
일 실시예에 따르면, 상기 인스트럭션들은, 상기 적어도 하나의 프로세서(120; 200; 511)에 의해 실행될 때, 상기 전자 장치(101)가, 상기 제1 가중치 세트의 해시 값과 함께, 상기 제2 가중치 세트를 상기 메모리(130; 501)에 저장하도록 야기할 수 있다.According to one embodiment, the instructions, when executed by the at least one processor (120; 200; 511), cause the electronic device 101 to store the second weight together with the hash value of the first weight set. This may cause the set to be stored in the memory (130; 501).
일 실시예에 따르면, 상기 인스트럭션들은, 상기 적어도 하나의 프로세서(120; 200; 511)에 의해 실행될 때, 상기 전자 장치(101)가, 상기 제1 가중치 세트의 해시 값에 대응하는 제2 가중치 세트에 기반하여 제1 오퍼레이터(613)들에 대한 연산을 수행하도록 야기할 수 있다. According to one embodiment, when the instructions are executed by the at least one processor 120; 200; 511, the electronic device 101 generates a second weight set corresponding to a hash value of the first weight set. It can cause the first operators 613 to perform operations based on .
일 실시예에 따르면, 상기 인스트럭션들은, 상기 적어도 하나의 프로세서(120; 200; 511)에 의해 실행될 때, 상기 제1 가중치 세트를 획득하기 위하여, 상기 전자 장치(101)가, 상기 가속기에 의해 지원되는 상기 제2 데이터 타입을 식별하고, 상기 제2 데이터 타입과 상이한 상기 제1 오퍼레이터(613)에 포함된 제1 가중치 세트의 제1 데이터 타입을 식별했는지 여부, 양자화에 기반하여 상기 제1 가중치 세트로부터 획득된 상기 제2 데이터 타입의 가중치 세트가 상기 메모리(130; 501)에 저장되었는지 여부, 또는 상기 제2 데이터 타입의 상기 가중치 세트 내에 가중치가 포함되어 있는지 여부에 기반하여, 상기 제1 데이터 타입의 상기 제1 가중치 세트에 대한 양자화를 수행할지 여부를 결정하도록 야기할 수 있다.According to one embodiment, the instructions, when executed by the at least one processor 120; 200; 511, are supported by the electronic device 101 by the accelerator to obtain the first set of weights. Identifying the second data type, and identifying the first data type of the first weight set included in the first operator 613 that is different from the second data type, the first weight set based on quantization Based on whether a weight set of the second data type obtained from is stored in the memory (130; 501), or whether a weight is included in the weight set of the second data type, the first data type may result in determining whether to perform quantization on the first set of weights.
일 실시예에 따르면, 상기 인스트럭션들은, 상기 적어도 하나의 프로세서에 의해 실행될 때, 상기 제2 데이터 타입의 상기 제2 가중치 세트를 획득하기 위하여, 상기 전자 장치가, 상기 서브 출력 데이터의 세트의 값들이 분포되는 구간에 기반하여, 상기 제1 가중치 세트에 대한 양자화를 수행함으로써 상기 제2 가중치 세트를 획득하도록 야기할 수 있다. According to one embodiment, the instructions, when executed by the at least one processor, cause the electronic device to set values of the set of sub-output data to obtain the second weight set of the second data type. Based on the distributed interval, quantization may be performed on the first weight set to obtain the second weight set.
일 실시예에 따르면, 상기 인스트럭션들은, 상기 적어도 하나의 프로세서에 의해 실행될 때, 상기 제2 데이터 타입의 상기 제2 가중치 세트를 획득하기 위하여, 상기 전자 장치가, 상기 서브 출력 데이터 세트의 값들이 분포되는 상기 구간의 크기를 이용하여, 상기 제2 데이터 타입을 위한 양자화 레벨을 결정하고, 상기 양자화 레벨에 따라, 상기 제1 가중치 세트에 대한 양자화를 수행하도록 야기할 수 있다.According to one embodiment, when the instructions are executed by the at least one processor, the electronic device distributes values of the sub-output data set to obtain the second weight set of the second data type. Using the size of the section, a quantization level for the second data type can be determined, and quantization on the first weight set can be performed according to the quantization level.
일 실시예에 따르면, 상기 제2 데이터 타입 및 상기 양자화 레벨에 따라 표현 가능한 수의 범위는, 상기 서브 출력 데이터 세트의 구간을 포함할 수 있다.According to one embodiment, the range of numbers that can be expressed according to the second data type and the quantization level may include a section of the sub-output data set.
본 개시의 청구항 또는 명세서에 기재된 실시예들에 따른 방법들은 하드웨어, 소프트웨어, 또는 하드웨어와 소프트웨어의 조합의 형태로 구현될(implemented) 수 있다. Methods according to embodiments described in the claims or specification of the present disclosure may be implemented in the form of hardware, software, or a combination of hardware and software.
소프트웨어로 구현하는 경우, 하나 이상의 프로그램(소프트웨어 모듈)을 저장하는 컴퓨터 판독 가능 저장 매체가 제공될 수 있다. 컴퓨터 판독 가능 저장 매체에 저장되는 하나 이상의 프로그램들은, 전자 장치(device) 내의 하나 이상의 프로세서에 의해 실행 가능하도록 구성된다(configured for execution). 하나 이상의 프로그램은, 전자 장치로 하여금 본 개시의 청구항 또는 명세서에 기재된 실시예들에 따른 방법들을 실행하게 하는 명령어(instructions)를 포함한다. 상기 하나 이상의 프로그램들은 컴퓨터 프로그램 제품(computer program product)에 포함되어 제공될 수 있다. 컴퓨터 프로그램 제품은 상품으로서 판매자 및 구매자 간에 거래될 수 있다. 컴퓨터 프로그램 제품은 기기로 읽을 수 있는 저장 매체(예: compact disc read only memory(CD-ROM))의 형태로 배포되거나, 또는 어플리케이션 스토어(예: 플레이 스토어™)를 통해 또는 두 개의 사용자 장치들(예: 스마트 폰들) 간에 직접, 온라인으로 배포(예: 다운로드 또는 업로드)될 수 있다. 온라인 배포의 경우에, 컴퓨터 프로그램 제품의 적어도 일부는 제조사의 서버, 어플리케이션 스토어의 서버, 또는 중계 서버의 메모리와 같은 기기로 읽을 수 있는 저장 매체에 적어도 일시 저장되거나, 임시적으로 생성될 수 있다.When implemented as software, a computer-readable storage medium that stores one or more programs (software modules) may be provided. One or more programs stored in a computer-readable storage medium are configured for execution by one or more processors in an electronic device. One or more programs include instructions that cause the electronic device to execute methods according to embodiments described in the claims or specification of the present disclosure. The one or more programs may be included and provided in a computer program product. Computer program products are commodities and can be traded between sellers and buyers. The computer program product may be distributed in the form of a machine-readable storage medium (e.g. compact disc read only memory (CD-ROM)) or through an application store (e.g. Play Store™) or on two user devices (e.g. It can be distributed (e.g. downloaded or uploaded) directly between smart phones) or online. In the case of online distribution, at least a portion of the computer program product may be at least temporarily stored or temporarily created in a machine-readable storage medium, such as the memory of a manufacturer's server, an application store's server, or a relay server.
이러한 프로그램(소프트웨어 모듈, 소프트웨어)은 랜덤 액세스 메모리 (random access memory), 플래시(flash) 메모리를 포함하는 불휘발성(non-volatile) 메모리, 롬(read only memory, ROM), 전기적 삭제가능 프로그램가능 롬(electrically erasable programmable read only memory, EEPROM), 자기 디스크 저장 장치(magnetic disc storage device), 컴팩트 디스크 롬(compact disc-ROM, CD-ROM), 디지털 다목적 디스크(digital versatile discs, DVDs) 또는 다른 형태의 광학 저장 장치, 마그네틱 카세트(magnetic cassette)에 저장될 수 있다. 또는, 이들의 일부 또는 전부의 조합으로 구성된 메모리에 저장될 수 있다. 또한, 각각의 구성 메모리는 다수 개 포함될 수도 있다. These programs (software modules, software) may include random access memory, non-volatile memory, including flash memory, read only memory (ROM), and electrically erasable programmable ROM. (electrically erasable programmable read only memory, EEPROM), magnetic disc storage device, compact disc-ROM (CD-ROM), digital versatile discs (DVDs), or other types of disk storage. It can be stored in an optical storage device or magnetic cassette. Alternatively, it may be stored in a memory consisting of a combination of some or all of these. Additionally, multiple configuration memories may be included.
또한, 프로그램은 인터넷(Internet), 인트라넷(Intranet), LAN(local area network), WAN(wide area network), 또는 SAN(storage area network)과 같은 통신 네트워크, 또는 이들의 조합으로 구성된 통신 네트워크를 통하여 접근(access)할 수 있는 부착 가능한(attachable) 저장 장치(storage device)에 저장될 수 있다. 이러한 저장 장치는 외부 포트를 통하여 본 개시의 실시예를 수행하는 장치에 접속할 수 있다. 또한, 통신 네트워크상의 별도의 저장장치가 본 개시의 실시예를 수행하는 장치에 접속할 수도 있다.In addition, the program may be distributed through a communication network such as the Internet, an intranet, a local area network (LAN), a wide area network (WAN), or a storage area network (SAN), or a combination thereof. It may be stored on an attachable storage device that is accessible. This storage device can be connected to a device performing an embodiment of the present disclosure through an external port. Additionally, a separate storage device on a communications network may be connected to the device performing embodiments of the present disclosure.
상술한 본 개시의 구체적인 실시예들에서, 개시에 포함되는 구성 요소는 제시된 구체적인 실시예에 따라 단수 또는 복수로 표현되었다. 그러나, 단수 또는 복수의 표현은 설명의 편의를 위해 제시한 상황에 적합하게 선택된 것으로서, 본 개시가 단수 또는 복수의 구성 요소에 제한되는 것은 아니며, 복수로 표현된 구성 요소라 하더라도 단수로 구성되거나, 단수로 표현된 구성 요소라 하더라도 복수로 구성될 수 있다.In the specific embodiments of the present disclosure described above, elements included in the disclosure are expressed in singular or plural numbers depending on the specific embodiment presented. However, singular or plural expressions are selected to suit the presented situation for convenience of explanation, and the present disclosure is not limited to singular or plural components, and even components expressed in plural may be composed of singular or singular. Even expressed components may be composed of plural elements.
실시예들에 따르면, 전술한 해당 구성요소들 중 하나 이상의 구성요소들 또는 동작들이 생략되거나, 또는 하나 이상의 다른 구성요소들 또는 동작들이 추가될 수 있다. 대체적으로 또는 추가적으로, 복수의 구성요소들(예: 모듈 또는 프로그램)은 하나의 구성요소로 통합될 수 있다. 이런 경우, 통합된 구성요소는 상기 복수의 구성요소들 각각의 구성요소의 하나 이상의 기능들을 상기 통합 이전에 상기 복수의 구성요소들 중 해당 구성요소에 의해 수행되는 것과 동일 또는 유사하게 수행할 수 있다. 실시예들에 따르면, 모듈, 프로그램 또는 다른 구성요소에 의해 수행되는 동작들은 순차적으로, 병렬적으로, 반복적으로, 또는 휴리스틱하게 실행되거나, 상기 동작들 중 하나 이상이 다른 순서로 실행되거나, 생략되거나, 또는 하나 이상의 다른 동작들이 추가될 수 있다.According to embodiments, one or more of the components or operations described above may be omitted, or one or more other components or operations may be added. Alternatively or additionally, multiple components (eg, modules or programs) may be integrated into a single component. In this case, the integrated component may perform one or more functions of each component of the plurality of components identically or similarly to those performed by the corresponding component of the plurality of components prior to the integration. . According to embodiments, operations performed by a module, program, or other component may be executed sequentially, in parallel, iteratively, or heuristically, or one or more of the operations may be executed in a different order, omitted, or , or one or more other operations may be added.
한편 본 개시의 상세한 설명에서는 구체적인 실시예에 관해 설명하였으나, 본 개시의 범위에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능할 수 있다. Meanwhile, in the detailed description of the present disclosure, specific embodiments have been described, but various modifications may be made without departing from the scope of the present disclosure.

Claims (15)

  1. 전자 장치(electronic device)에 있어서,In an electronic device,
    인스트럭션들을 저장하는 메모리; 및memory to store instructions; and
    적어도 하나의 프로세서를 포함하고, Contains at least one processor,
    상기 인스트럭션들은, 상기 적어도 하나의 프로세서에 의해 실행될 때, 상기 전자 장치가:The instructions, when executed by the at least one processor, cause the electronic device to:
    상기 메모리에서, 모델에 포함된 적어도 하나의 오퍼레이터 중 하나인 제1 오퍼레이터에 포함된 제1 데이터 타입의 제1 가중치 세트를 획득하고;Obtain, from the memory, a first set of weights of a first data type included in a first operator, one of at least one operator included in the model;
    상기 메모리에 저장된, 상기 모델의 실행에 의해 생성된 프로파일 정보로부터, 상기 제1 오퍼레이터의 연산(computation)을 위해 이용된 입력 데이터의 세트에 대응하는 서브 출력 데이터의 세트를 획득하고;Obtain, from profile information stored in the memory and generated by execution of the model, a set of sub-output data corresponding to a set of input data used for computation of the first operator;
    상기 서브 출력 데이터의 세트에 기반하여, 상기 제1 가중치 세트에 대한 양자화를 수행함으로써 적어도 하나의 가속기에 의해 지원되는 제2 데이터 타입의 제2 가중치 세트를 획득하고;Based on the set of sub-output data, obtain a second weight set of a second data type supported by at least one accelerator by performing quantization on the first weight set;
    상기 제2 가중치 세트를 획득하는 것에 기반하여, 상기 메모리에 상기 제2 가중치 세트를 저장하도록, 야기하는,based on obtaining the second set of weights, causing to store the second set of weights in the memory.
    전자 장치.Electronic devices.
  2. 청구항 1에서,In claim 1,
    상기 인스트럭션들은, 상기 적어도 하나의 프로세서에 의해 실행될 때, 상기 제2 데이터 타입의 가중치 세트를 획득하기 위하여, 상기 전자 장치가:The instructions, when executed by the at least one processor, to obtain a set of weights of the second data type, cause the electronic device to:
    제1 구간의 부동 소수점 수를 표현하기 위한 상기 제1 데이터 타입의 상기 제1 가중치 세트로부터, 상기 양자화를 통해, 상기 제1 구간의 길이 보다 작은 길이를 가지는 제2 구간의 수를 표현하기 위한 상기 제2 데이터 타입의 상기 제2 가중치 세트를 획득하도록, 야기하는,From the first weight set of the first data type for expressing the floating point number of the first interval, through the quantization, the number of the second interval having a length smaller than the length of the first interval. causing to obtain the second set of weights of a second data type,
    전자 장치.Electronic devices.
  3. 청구항 1 내지 2에서,In claims 1 to 2,
    상기 가속기는,The accelerator is,
    상기 제1 데이터 타입 또는 상기 제2 데이터 타입 중에서, 상기 제2 데이터 타입에 기반하는 연산을 수행하도록 구성되는,Among the first data type or the second data type, configured to perform an operation based on the second data type,
    전자 장치.Electronic devices.
  4. 청구항 1 내지 3에서,In claims 1 to 3,
    상기 인스트럭션들은, 상기 적어도 하나의 프로세서에 의해 실행될 때, 상기 전자 장치가:The instructions, when executed by the at least one processor, cause the electronic device to:
    상기 모델과 관련된 기능을 실행하기 위한 요청에 응답하여, 상기 제1 가중치 세트 또는 상기 제2 가중치 세트 중에서, 상기 제2 가중치 세트를 상기 가속기에 입력함으로써, 상기 제1 오퍼레이터의 연산을 수행하도록 야기하는,In response to a request to execute a function associated with the model, inputting the second set of weights, either the first set of weights or the second set of weights, to the accelerator, thereby causing the operation of the first operator to be performed. ,
    전자 장치.Electronic devices.
  5. 청구항 1 내지 4에서,In claims 1 to 4,
    상기 인스트럭션들은, 상기 적어도 하나의 프로세서에 의해 실행될 때, 상기 전자 장치가:The instructions, when executed by the at least one processor, cause the electronic device to:
    상기 제2 가중치 세트를 획득하는 것에 기반하여, Based on obtaining the second set of weights,
    상기 프로파일 정보로부터 상기 적어도 하나의 오퍼레이터에 대한 연산을 수행함으로써 획득된 제1 출력 데이터의 세트를 식별하고;identify a first set of output data obtained by performing an operation for the at least one operator from the profile information;
    상기 제2 가중치 세트에 기반하여 상기 적어도 하나의 오퍼레이터에 대한 연산을 수행함으로써, 상기 입력 데이터의 세트로부터 제2 출력 데이터의 세트를 획득하고;obtain a second set of output data from the set of input data by performing an operation for the at least one operator based on the second set of weights;
    상기 제1 출력 데이터 및 대응하는 상기 제2 출력 데이터 사이의 차이 값(difference)의 세트에 기반하여, 상기 모델에 포함된 제1 오퍼레이터에 포함된 상기 제1 가중치 세트를, 상기 제2 가중치 세트로 교체하도록 야기하는,Based on a set of difference values between the first output data and the corresponding second output data, the first weight set included in the first operator included in the model is converted to the second weight set. causing replacement,
    전자 장치. Electronic devices.
  6. 청구항 1 내지 5에서,In claims 1 to 5,
    통신 회로를 추가적으로 포함하고,Additionally comprising a communication circuit,
    상기 인스트럭션들은, 상기 적어도 하나의 프로세서에 의해 실행될 때, 상기 전자 장치가:The instructions, when executed by the at least one processor, cause the electronic device to:
    상기 제1 출력 데이터 및 대응하는 상기 제2 출력 데이터 사이의 상기 차이 값의 세트 중 적어도 하나의 차이 값이 기준 값 이상임을 식별함에 기반하여, Based on identifying that at least one difference value of the set of difference values between the first output data and the corresponding second output data is greater than or equal to a reference value,
    상기 프로파일 정보로부터 획득된 상기 서브 출력 데이터의 세트를 상기 통신 회로를 통해 서버에게 전송하고,Transmitting the set of sub-output data obtained from the profile information to a server through the communication circuit,
    상기 서브 출력 데이터에 기반하여, 상기 제1 가중치 세트에 대한 양자화가 수행된 상기 제2 데이터 타입의 제3 가중치 세트를 상기 통신 회로를 통해 서버로부터 수신하고,Based on the sub-output data, receive a third weight set of the second data type on which quantization of the first weight set has been performed from a server through the communication circuit,
    상기 수신된 상기 제3 가중치 세트를 상기 메모리에 저장하도록 야기하는,causing to store the received third set of weights in the memory,
    전자 장치.Electronic devices.
  7. 청구항 1 내지 6에서,In claims 1 to 6,
    상기 인스트럭션들은, 상기 적어도 하나의 프로세서에 의해 실행될 때, 상기 제2 데이터 타입의 상기 제2 가중치 세트를 획득하기 위하여, 상기 전자 장치가:The instructions, when executed by the at least one processor, to obtain the second set of weights of the second data type, cause the electronic device to:
    상기 서브 출력 데이터의 세트의 값들이 분포되는 구간에 기반하여, 상기 제1 가중치 세트에 대한 양자화를 수행함으로써 상기 제2 가중치 세트를 획득하도록 야기하는,causing the second weight set to be obtained by performing quantization on the first weight set based on an interval in which the values of the set of sub-output data are distributed,
    전자 장치. Electronic devices.
  8. 청구항 7에 있어서,In claim 7,
    상기 인스트럭션들은, 상기 적어도 하나의 프로세서에 의해 실행될 때, 상기 제2 데이터 타입의 상기 제2 가중치 세트를 획득하기 위하여, 상기 전자 장치가:The instructions, when executed by the at least one processor, to obtain the second set of weights of the second data type, cause the electronic device to:
    상기 서브 출력 데이터 세트의 값들이 분포되는 상기 구간의 크기를 이용하여, 상기 제2 데이터 타입을 위한 양자화 레벨을 결정하고,Using the size of the section in which the values of the sub-output data set are distributed, determine a quantization level for the second data type,
    상기 양자화 레벨에 따라, 상기 제1 가중치 세트에 대한 양자화를 수행하도록 야기하고,According to the quantization level, cause to perform quantization on the first weight set,
    전자 장치.Electronic devices.
  9. 청구항 8에 있어서,In claim 8,
    상기 제2 데이터 타입 및 상기 양자화 레벨에 따라 표현 가능한 수의 범위는, 상기 서브 출력 데이터 세트의 구간을 포함하는,The range of numbers that can be expressed according to the second data type and the quantization level includes a section of the sub-output data set,
    전자 장치.Electronic devices.
  10. 청구항 1 내지 9에서,In claims 1 to 9,
    상기 인스트럭션들은, 상기 적어도 하나의 프로세서에 의해 실행될 때, 상기 전자 장치가:The instructions, when executed by the at least one processor, cause the electronic device to:
    상기 제1 가중치 세트의 해시 값과 함께, 상기 제2 가중치 세트를 상기 메모리에 저장하도록 야기하는,causing the second set of weights to be stored in the memory, along with the hash value of the first set of weights,
    전자 장치. Electronic devices.
  11. 청구항 1 내지 10에서,In claims 1 to 10,
    상기 인스트럭션들은, 상기 적어도 하나의 프로세서에 의해 실행될 때, 상기 전자 장치가:The instructions, when executed by the at least one processor, cause the electronic device to:
    상기 제1 가중치 세트의 해시 값에 대응하는 제2 가중치 세트에 기반하여 제1 오퍼레이터들에 대한 연산을 수행하도록 야기하는,causing to perform an operation on first operators based on a second set of weights corresponding to a hash value of the first set of weights,
    전자 장치. Electronic devices.
  12. 청구항 1 내지 11에서,In claims 1 to 11,
    상기 제1 오퍼레이터의 상기 서브 출력 데이터의 세트는 상기 적어도 하나의 오퍼레이터 중 하나인, 상기 제1 오퍼레이터에 연결된 제2 오퍼레이터의 입력 데이터의 세트인,The set of sub-output data of the first operator is a set of input data of a second operator connected to the first operator, one of the at least one operator,
    전자 장치.Electronic devices.
  13. 청구항 1 내지 12에서, In claims 1 to 12,
    상기 인스트럭션들은, 상기 적어도 하나의 프로세서에 의해 실행될 때, 상기 제1 가중치 세트를 획득하기 위하여, 상기 전자 장치가:The instructions, when executed by the at least one processor, to obtain the first set of weights, cause the electronic device to:
    상기 가속기에 의해 지원되는 상기 제2 데이터 타입을 식별하고;identify the second data type supported by the accelerator;
    상기 제2 데이터 타입과 상이한 상기 제1 오퍼레이터에 포함된 제1 가중치 세트의 제1 데이터 타입을 식별했는지 여부, 양자화에 기반하여 상기 제1 가중치 세트로부터 획득된 상기 제2 데이터 타입의 가중치 세트가 상기 메모리에 저장되었는지 여부, 또는 상기 제2 데이터 타입의 상기 가중치 세트 내에 가중치가 포함되어 있는지 여부에 기반하여, 상기 제1 데이터 타입의 상기 제1 가중치 세트에 대한 양자화를 수행할지 여부를 결정하도록 야기하는, Whether the first data type of the first weight set included in the first operator that is different from the second data type has been identified, and the weight set of the second data type obtained from the first weight set based on quantization is causing to determine whether to perform quantization on the first weight set of the first data type based on whether it is stored in memory, or whether a weight is included in the weight set of the second data type. ,
    전자 장치. Electronic devices.
  14. 전자 장치(electronic device)(101)에 의해 수행되는 방법에 있어서,In a method performed by an electronic device (101),
    메모리에서, 모델에 포함된 적어도 하나의 오퍼레이터 중 하나인 제1 오퍼레이터에 포함된 제1 데이터 타입의 제1 가중치 세트를 획득하는 동작과;Obtaining, in a memory, a first set of weights of a first data type included in a first operator, one of at least one operator included in the model;
    상기 메모리에 저장된, 상기 모델의 실행에 의해 생성된 프로파일 정보로부터, 상기 제1 오퍼레이터의 연산(computation)을 위해 이용된 입력 데이터의 세트에 대응하는 서브 출력 데이터의 세트를 획득하는 동작과;Obtaining a set of sub-output data corresponding to a set of input data used for computation of the first operator from profile information stored in the memory and generated by execution of the model;
    상기 서브 출력 데이터의 세트에 기반하여, 상기 제1 가중치 세트에 대한 양자화를 수행함으로써 적어도 하나의 가속기에 의해 지원되는 제2 데이터 타입의 제2 가중치 세트를 획득하는 동작과;based on the set of sub-output data, performing quantization on the first set of weights to obtain a second set of weights of a second data type supported by at least one accelerator;
    상기 제2 가중치 세트를 획득하는 것에 기반하여, 상기 메모리에 상기 제2 가중치 세트를 저장하는 동작을 포함하는, Based on obtaining the second set of weights, storing the second set of weights in the memory,
    방법.method.
  15. 하나 이상의 프로그램들을 저장하는 컴퓨터 판독가능 저장 매체(computer readable storage medium)에 있어서,In a computer readable storage medium storing one or more programs,
    상기 하나 이상의 프로그램들은, 전자 장치의 프로세서에 의해 실행될 시에, When the one or more programs are executed by the processor of the electronic device,
    메모리에서, 모델에 포함된 적어도 하나의 오퍼레이터 중 하나인 제1 오퍼레이터에 포함된 제1 데이터 타입의 제1 가중치 세트를 획득하고;Obtain, from the memory, a first set of weights of a first data type included in a first operator, one of at least one operator included in the model;
    상기 메모리에 저장된, 상기 모델의 실행에 의해 생성된 프로파일 정보로부터, 상기 제1 오퍼레이터의 연산(computation)을 위해 이용된 입력 데이터의 세트에 대응하는 서브 출력 데이터의 세트를 획득하고;Obtain, from profile information stored in the memory and generated by execution of the model, a set of sub-output data corresponding to a set of input data used for computation of the first operator;
    상기 서브 출력 데이터의 세트에 기반하여, 상기 제1 가중치 세트에 대한 양자화를 수행함으로써 적어도 하나의 가속기에 의해 지원되는 제2 데이터 타입의 제2 가중치 세트를 획득하고;Based on the set of sub-output data, obtain a second weight set of a second data type supported by at least one accelerator by performing quantization on the first weight set;
    상기 제2 가중치 세트를 획득하는 것에 기반하여, 상기 메모리에 상기 제2 가중치 세트를 저장하도록, 상기 전자 장치를 야기하는 인스트럭션들을 포함하는,instructions causing the electronic device to store the second set of weights in the memory, based on obtaining the second set of weights.
    컴퓨터 판독 가능 저장 매체.A computer-readable storage medium.
PCT/KR2024/000928 2023-01-25 2024-01-19 Electronic device and method for quantization of operator related to computation of model WO2024158174A1 (en)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
KR20230009760 2023-01-25
KR10-2023-0009760 2023-01-25
KR10-2023-0030093 2023-03-07
KR1020230030093A KR20240117447A (en) 2023-01-25 2023-03-07 Electronic device and method for quantizing operator associated with computation of model

Publications (1)

Publication Number Publication Date
WO2024158174A1 true WO2024158174A1 (en) 2024-08-02

Family

ID=91970843

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/KR2024/000928 WO2024158174A1 (en) 2023-01-25 2024-01-19 Electronic device and method for quantization of operator related to computation of model

Country Status (1)

Country Link
WO (1) WO2024158174A1 (en)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110969251A (en) * 2019-11-28 2020-04-07 中国科学院自动化研究所 Neural network model quantification method and device based on label-free data
KR20210018352A (en) * 2019-06-12 2021-02-17 상하이 캠브리콘 인포메이션 테크놀로지 컴퍼니 리미티드 Method for determining quantization parameters of neural networks and related products
KR20210156538A (en) * 2020-06-18 2021-12-27 삼성전자주식회사 Method and appratus for processing data using neural network
KR20220055256A (en) * 2020-10-26 2022-05-03 에스케이텔레콤 주식회사 Method of quantizing weight parameter of neural network and object recognition device performing method
US20220237455A1 (en) * 2021-01-26 2022-07-28 Denso Corporation Neural-network quantization method and apparatus

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210018352A (en) * 2019-06-12 2021-02-17 상하이 캠브리콘 인포메이션 테크놀로지 컴퍼니 리미티드 Method for determining quantization parameters of neural networks and related products
CN110969251A (en) * 2019-11-28 2020-04-07 中国科学院自动化研究所 Neural network model quantification method and device based on label-free data
KR20210156538A (en) * 2020-06-18 2021-12-27 삼성전자주식회사 Method and appratus for processing data using neural network
KR20220055256A (en) * 2020-10-26 2022-05-03 에스케이텔레콤 주식회사 Method of quantizing weight parameter of neural network and object recognition device performing method
US20220237455A1 (en) * 2021-01-26 2022-07-28 Denso Corporation Neural-network quantization method and apparatus

Similar Documents

Publication Publication Date Title
WO2022019538A1 (en) Language model and electronic device comprising same
WO2022010157A1 (en) Method for providing screen in artificial intelligence virtual secretary service, and user terminal device and server for supporting same
WO2022080634A1 (en) Method for training artificial neural network, and electronic device for supporting same
WO2022177343A1 (en) Electronic device for configuring geofence and operation method thereof
WO2022154379A1 (en) Electronic device and brightness adjustment method
WO2024158174A1 (en) Electronic device and method for quantization of operator related to computation of model
WO2023048379A1 (en) Server and electronic device for processing user utterance, and operation method thereof
WO2022177162A1 (en) Processor for initializing model file of application, and electronic device comprising same
WO2022211590A1 (en) Electronic device for processing user utterance and controlling method thereof
WO2022055319A1 (en) Electronic device for outputting sound and method for operating the same
WO2024053886A1 (en) Electronic device and method for transmitting signal for feedback
WO2024085551A1 (en) Electronic device and method for packet loss concealment
WO2023068489A1 (en) Electronic device comprising npu supporting different data types, and control method thereof
WO2024112157A1 (en) Electronic device and method for processing collaborative editing instructions
WO2024043696A1 (en) Electronic device for performing operation using artificial intelligence model and method for operating electronic device
WO2023243810A1 (en) Electronic device for adjusting parameter for driving grip sensor and method therefor
WO2024215112A1 (en) Computer-readable storage medium, method, and electronic device for inferring software application to be executed using neural network
WO2023106591A1 (en) Electronic device and method for providing content on basis of user's emotion
WO2021085996A1 (en) Electronic device for arranging kernels of neural network, and operation method therefor
WO2024177484A1 (en) Electronic device for selecting core that executes function of neural network, and method therefor
WO2022098015A1 (en) Electronic device for generating transaction including internal data, and operating method thereof
WO2024085461A1 (en) Electronic device and method for providing translation service
WO2024039105A1 (en) Electronic device and method for driving models on basis of information commonly used by models
WO2023146104A1 (en) Wireless charging guide providing method and electronic device performing same
WO2024039054A1 (en) Network management device comprising plurality of external electronic devices, and method therefor

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

Country of ref document: EP

Kind code of ref document: A1