WO2019085655A1 - 信息处理方法及终端设备 - Google Patents
信息处理方法及终端设备 Download PDFInfo
- Publication number
- WO2019085655A1 WO2019085655A1 PCT/CN2018/105463 CN2018105463W WO2019085655A1 WO 2019085655 A1 WO2019085655 A1 WO 2019085655A1 CN 2018105463 W CN2018105463 W CN 2018105463W WO 2019085655 A1 WO2019085655 A1 WO 2019085655A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- data
- instruction
- information
- unit
- neural network
- Prior art date
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 45
- 230000010365 information processing Effects 0.000 title claims abstract description 32
- 238000000034 method Methods 0.000 claims abstract description 432
- 230000008569 process Effects 0.000 claims abstract description 201
- 239000013598 vector Substances 0.000 claims description 687
- 239000011159 matrix material Substances 0.000 claims description 636
- 238000003860 storage Methods 0.000 claims description 567
- 238000012545 processing Methods 0.000 claims description 554
- 230000015654 memory Effects 0.000 claims description 407
- 238000004422 calculation algorithm Methods 0.000 claims description 139
- 238000006243 chemical reaction Methods 0.000 claims description 102
- 238000010606 normalization Methods 0.000 claims description 63
- 238000007781 pre-processing Methods 0.000 claims description 55
- 238000013519 translation Methods 0.000 claims description 22
- 238000001514 detection method Methods 0.000 claims description 18
- 238000004590 computer program Methods 0.000 claims description 12
- 238000004364 calculation method Methods 0.000 abstract description 227
- 238000013528 artificial neural network Methods 0.000 description 986
- 239000010410 layer Substances 0.000 description 666
- 210000002364 input neuron Anatomy 0.000 description 424
- 230000000875 corresponding effect Effects 0.000 description 311
- 210000002569 neuron Anatomy 0.000 description 289
- 210000004205 output neuron Anatomy 0.000 description 270
- 230000006870 function Effects 0.000 description 266
- 238000010586 diagram Methods 0.000 description 256
- 239000000872 buffer Substances 0.000 description 233
- 238000011176 pooling Methods 0.000 description 187
- 238000007792 addition Methods 0.000 description 148
- 230000004913 activation Effects 0.000 description 119
- 238000012549 training Methods 0.000 description 79
- 238000012546 transfer Methods 0.000 description 63
- 238000013138 pruning Methods 0.000 description 56
- 238000013527 convolutional neural network Methods 0.000 description 51
- 230000005540 biological transmission Effects 0.000 description 47
- 239000000284 extract Substances 0.000 description 47
- 230000002441 reversible effect Effects 0.000 description 45
- 238000013507 mapping Methods 0.000 description 43
- 238000010801 machine learning Methods 0.000 description 39
- 241001442055 Vipera berus Species 0.000 description 37
- 230000003139 buffering effect Effects 0.000 description 37
- 238000004891 communication Methods 0.000 description 37
- 238000012216 screening Methods 0.000 description 35
- 238000009826 distribution Methods 0.000 description 27
- 238000007667 floating Methods 0.000 description 26
- 230000001133 acceleration Effects 0.000 description 24
- 238000000638 solvent extraction Methods 0.000 description 24
- 230000008093 supporting effect Effects 0.000 description 24
- 238000013500 data storage Methods 0.000 description 22
- 238000001914 filtration Methods 0.000 description 22
- 230000001276 controlling effect Effects 0.000 description 20
- 238000000605 extraction Methods 0.000 description 19
- 239000002356 single layer Substances 0.000 description 19
- 230000011218 segmentation Effects 0.000 description 18
- 238000003062 neural network model Methods 0.000 description 17
- 238000009825 accumulation Methods 0.000 description 14
- 238000013461 design Methods 0.000 description 14
- 210000005036 nerve Anatomy 0.000 description 14
- 230000006399 behavior Effects 0.000 description 10
- 239000000523 sample Substances 0.000 description 9
- 125000004122 cyclic group Chemical group 0.000 description 8
- 230000004927 fusion Effects 0.000 description 8
- 230000001976 improved effect Effects 0.000 description 8
- 230000007787 long-term memory Effects 0.000 description 8
- 230000002829 reductive effect Effects 0.000 description 8
- 230000006403 short-term memory Effects 0.000 description 8
- 238000013144 data compression Methods 0.000 description 7
- 230000000694 effects Effects 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 7
- 230000007613 environmental effect Effects 0.000 description 7
- 238000012886 linear function Methods 0.000 description 7
- 230000036961 partial effect Effects 0.000 description 7
- 101100400452 Caenorhabditis elegans map-2 gene Proteins 0.000 description 6
- 101150064138 MAP1 gene Proteins 0.000 description 6
- 230000003993 interaction Effects 0.000 description 6
- 239000011229 interlayer Substances 0.000 description 6
- 238000011068 loading method Methods 0.000 description 6
- 230000008520 organization Effects 0.000 description 6
- 230000004044 response Effects 0.000 description 6
- 238000011144 upstream manufacturing Methods 0.000 description 6
- 241000209094 Oryza Species 0.000 description 5
- 235000007164 Oryza sativa Nutrition 0.000 description 5
- 230000003213 activating effect Effects 0.000 description 5
- 210000004027 cell Anatomy 0.000 description 5
- 235000009566 rice Nutrition 0.000 description 5
- 238000010187 selection method Methods 0.000 description 5
- 238000005406 washing Methods 0.000 description 5
- 238000005481 NMR spectroscopy Methods 0.000 description 4
- 238000012937 correction Methods 0.000 description 4
- 230000001186 cumulative effect Effects 0.000 description 4
- 238000013139 quantization Methods 0.000 description 4
- 238000002604 ultrasonography Methods 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000007906 compression Methods 0.000 description 3
- 230000006835 compression Effects 0.000 description 3
- 238000011156 evaluation Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 239000008267 milk Substances 0.000 description 3
- 210000004080 milk Anatomy 0.000 description 3
- 235000013336 milk Nutrition 0.000 description 3
- 238000005457 optimization Methods 0.000 description 3
- 230000000644 propagated effect Effects 0.000 description 3
- 230000000717 retained effect Effects 0.000 description 3
- 238000005070 sampling Methods 0.000 description 3
- 238000007619 statistical method Methods 0.000 description 3
- 230000009466 transformation Effects 0.000 description 3
- 230000017105 transposition Effects 0.000 description 3
- 101100498818 Arabidopsis thaliana DDR4 gene Proteins 0.000 description 2
- 206010033864 Paranoia Diseases 0.000 description 2
- 208000027099 Paranoid disease Diseases 0.000 description 2
- 101100283966 Pectobacterium carotovorum subsp. carotovorum outN gene Proteins 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000005520 cutting process Methods 0.000 description 2
- 238000013135 deep learning Methods 0.000 description 2
- 238000006073 displacement reaction Methods 0.000 description 2
- 238000005265 energy consumption Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 239000002245 particle Substances 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 229910052698 phosphorus Inorganic materials 0.000 description 2
- 238000002360 preparation method Methods 0.000 description 2
- 230000000306 recurrent effect Effects 0.000 description 2
- 238000010845 search algorithm Methods 0.000 description 2
- 238000004904 shortening Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000002123 temporal effect Effects 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 2
- 208000002874 Acne Vulgaris Diseases 0.000 description 1
- 241000837181 Andina Species 0.000 description 1
- 238000012935 Averaging Methods 0.000 description 1
- 101100079986 Caenorhabditis elegans nrfl-1 gene Proteins 0.000 description 1
- 101150090596 DMA2 gene Proteins 0.000 description 1
- 244000179886 Moringa oleifera Species 0.000 description 1
- 241000699666 Mus <mouse, genus> Species 0.000 description 1
- 241000699670 Mus sp. Species 0.000 description 1
- 206010000496 acne Diseases 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 239000000654 additive Substances 0.000 description 1
- 230000000996 additive effect Effects 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 238000012806 monitoring device Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000008450 motivation Effects 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 229910052757 nitrogen Inorganic materials 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 235000019353 potassium silicate Nutrition 0.000 description 1
- 238000000513 principal component analysis Methods 0.000 description 1
- 238000011002 quantification Methods 0.000 description 1
- 230000000630 rising effect Effects 0.000 description 1
- 210000003900 secondary neuron Anatomy 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- NTHWMYGWWRZVTN-UHFFFAOYSA-N sodium silicate Chemical compound [Na+].[Na+].[O-][Si]([O-])=O NTHWMYGWWRZVTN-UHFFFAOYSA-N 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012706 support-vector machine Methods 0.000 description 1
- 230000001629 suppression Effects 0.000 description 1
- 230000009747 swallowing Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
- 230000002087 whitening effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
- G06F7/5443—Sum of products
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/263—Language identification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/40—Processing or translation of natural language
- G06F40/58—Use of machine translation, e.g. for multi-lingual retrieval, for server-side translation for client devices or for real-time translation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3818—Decoding for concurrent execution
- G06F9/382—Pipelined decoding, e.g. using predecoding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/3826—Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/044—Recurrent networks, e.g. Hopfield networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q30/00—Commerce
- G06Q30/02—Marketing; Price estimation or determination; Fundraising
- G06Q30/0241—Advertisements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q30/00—Commerce
- G06Q30/02—Marketing; Price estimation or determination; Fundraising
- G06Q30/0282—Rating or review of business operators or products
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T3/00—Geometric image transformations in the plane of the image
- G06T3/40—Scaling of whole images or parts thereof, e.g. expanding or contracting
- G06T3/4046—Scaling of whole images or parts thereof, e.g. expanding or contracting using neural networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T3/00—Geometric image transformations in the plane of the image
- G06T3/40—Scaling of whole images or parts thereof, e.g. expanding or contracting
- G06T3/4053—Scaling of whole images or parts thereof, e.g. expanding or contracting based on super-resolution, i.e. the output image resolution being higher than the sensor resolution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T5/00—Image enhancement or restoration
- G06T5/20—Image enhancement or restoration using local operators
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T5/00—Image enhancement or restoration
- G06T5/50—Image enhancement or restoration using two or more images, e.g. averaging or subtraction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/20—Analysis of motion
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/70—Arrangements for image or video recognition or understanding using pattern recognition or machine learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/70—Arrangements for image or video recognition or understanding using pattern recognition or machine learning
- G06V10/82—Arrangements for image or video recognition or understanding using pattern recognition or machine learning using neural networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/94—Hardware or software architectures specially adapted for image or video understanding
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10L—SPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
- G10L15/00—Speech recognition
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10L—SPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
- G10L15/00—Speech recognition
- G10L15/26—Speech to text systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
- G06F2207/48—Indexing scheme relating to groups G06F7/48 - G06F7/575
- G06F2207/4802—Special implementations
- G06F2207/4818—Threshold devices
- G06F2207/4824—Neural networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/40—Processing or translation of natural language
- G06F40/42—Data-driven translation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/082—Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/28—Indexing scheme for image data processing or generation, in general involving image processing hardware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/10—Image acquisition modality
- G06T2207/10016—Video; Image sequence
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/20—Special algorithmic details
- G06T2207/20084—Artificial neural networks [ANN]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V2201/00—Indexing scheme relating to image or video recognition or understanding
- G06V2201/07—Target detection
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Definitions
- the present disclosure relates to the field of information processing technologies, and in particular, to an information processing method and a terminal device.
- the acquisition of information by the terminal device is obtained based on a general-purpose processor, for example, running a setting application on a general-purpose processor to know the current location of the object, or running a setting application on the general-purpose processor to know the current scene of the user (such as indoor or outdoor) and so on.
- a general-purpose processor for example, running a setting application on a general-purpose processor to know the current location of the object, or running a setting application on the general-purpose processor to know the current scene of the user ( Such as indoor or outdoor) and so on.
- the way in which the general-purpose processor runs the software program to obtain information is limited by the operating speed of the general-purpose processor, especially when the general-purpose processor is heavily loaded, the information acquisition efficiency is low, and the delay is long. .
- the embodiments of the present disclosure provide an information processing method and a terminal device, which can intelligently process the first information by using a computing device in the terminal device to output target information desired by the user, thereby improving information processing efficiency.
- the present disclosure provides a computing device for performing machine learning model machine learning calculations, the computing device comprising: an arithmetic unit and a controller unit; the arithmetic unit comprising: a main processing circuit and a plurality of slave processes Circuit
- the controller unit is configured to acquire input data and calculate an instruction
- the controller unit is further configured to parse the calculation instruction to obtain a plurality of operation instructions, and send the plurality of operation instructions and the input data to the main processing circuit;
- the main processing circuit is configured to perform pre-processing on the input data and transmit data and an operation instruction between the plurality of slave processing circuits;
- the plurality of slave processing circuits are configured to perform a plurality of intermediate results in parallel according to the data transmitted from the main processing circuit and the operation instructions, and transmit the plurality of intermediate results to the main processing circuit;
- the main processing circuit is configured to perform subsequent processing on the plurality of intermediate results to obtain a calculation result of the calculation instruction.
- the embodiment of the present application provides a machine learning computing device, which includes one or more computing devices according to the first aspect.
- the machine learning operation device is configured to acquire data to be calculated and control information from other processing devices, and execute a specified machine learning operation, and transmit the execution result to other processing devices through an I/O interface;
- the machine learning computing device includes a plurality of the computing devices
- the plurality of the computing devices may link and transmit data through a specific structure
- a plurality of said computing devices interconnect and transmit data over a PCIE bus to support larger scale machine learning operations; a plurality of said computing devices share the same control system or have respective control systems; The devices share memory or have their own memory; the interconnection of multiple of the computing devices is any interconnected topology.
- Embodiments of the present application provide a combined processing apparatus including a machine learning processing apparatus, a universal interconnection interface, and other processing apparatus.
- the machine learning computing device interacts with the other processing devices described above to perform user-specified operations.
- the combined processing device may further include a storage device coupled to the machine learning computing device and the other processing device for storing data of the machine learning computing device and the other processing device.
- the embodiment of the present application provides a neural network chip, which includes the computing device according to the above aspect, the machine learning computing device of the second aspect, or the combined processing device.
- the embodiment of the present application provides a neural network chip package structure, where the neural network chip package structure includes the above neural network chip;
- the embodiment of the present application provides a board, which includes the above neural network chip package structure.
- the embodiment of the present application provides an electronic device including the neural network chip described in the sixth aspect or the above-mentioned card.
- the embodiment of the present application further provides a calculation method for executing a machine learning model, the calculation method is applied to a computing device, and the computing device is configured to perform machine learning calculation;
- the computing device includes: an operation unit and a controller unit;
- the unit includes: a main processing circuit and a plurality of slave processing circuits; the method includes:
- the controller unit acquires data, a machine learning model, and a calculation instruction; the controller unit parses the calculation instruction to obtain a plurality of operation instructions, and sends the plurality of operation instructions and the data to the main processing circuit;
- the main processing circuit performs pre-processing on the data and data and operation instructions between the plurality of slave processing circuits; the plurality of slave processing circuits are executed in parallel according to data and operation instructions transmitted from the main processing circuit
- the intermediate operation obtains a plurality of intermediate results and transmits a plurality of intermediate results to the main processing circuit; the main processing circuit performs subsequent processing on the plurality of intermediate results to obtain a calculation result of the calculation instructions.
- the electronic device includes a data processing device, a robot, a computer, a printer, a scanner, a tablet, a smart terminal, a mobile phone, a driving recorder, a navigator, a sensor, a camera, a server, a cloud server, a camera, Cameras, projectors, watches, headsets, mobile storage, wearables, vehicles, household appliances, and/or medical equipment.
- the vehicle includes an airplane, a ship, and/or a vehicle
- the household appliance includes a television, an air conditioner, a microwave oven, a refrigerator, a rice cooker, a humidifier, a washing machine, an electric lamp, a gas stove, a range hood
- Equipment includes nuclear magnetic resonance, B-ultrasonic and/or electrocardiographs.
- the embodiment of the present disclosure provides an information processing method, which is applied to a terminal device provided with a computing device, where the computing device stores an instruction set including at least one operation instruction, and the method includes:
- the first information is information to be processed by the terminal device
- the second information is output.
- the acquiring the first information includes: pre-processing the obtained original information, thereby obtaining the first information, where the first information is information having a preset format, and the pre-processing At least one of the following includes data deduplication processing, data encoding processing, data conversion processing, and normalization processing.
- the operation instruction includes at least one of the following: a matrix multiplication vector instruction, a vector multiplication matrix instruction, a matrix multiplication amount instruction, a tensor operation instruction, a matrix addition instruction, a matrix subtraction instruction, a matrix retrieval Instructions, matrix load instructions, matrix store instructions, and matrix move instructions.
- calling the operation instruction in the computing device to process the first information, so that obtaining the second information includes:
- the second information is text information
- the speech recognition algorithm includes at least one operation instruction for speech recognition.
- calling the operation instruction in the computing device to process the first information, so that obtaining the second information includes:
- the second information is different from the style of the first information, and the image style conversion algorithm includes at least one operation instruction for image style or style conversion.
- the first information is image information
- the image information includes at least one object to be identified
- an operation instruction is invoked in the computing device to process the first information, thereby Obtaining the second information includes:
- an object detection algorithm in the computing device, performing object detection on the image information to obtain second information; wherein the second information includes at least an object position, and the object detection algorithm includes at least one operation for object detection instruction.
- the operation instruction is invoked in the computing device to process the first information, so that obtaining the second information includes:
- the language translation algorithm includes at least one operation instruction for language translation.
- the computing device when the first information is a sentence of conversation content, the computing device is invoked in the computing device to process the first information, and obtaining the second information includes:
- the response request is logically associated with the content of the first message, and the two messages can form a logically fluent conversation.
- the combination of the plurality of first information and the second information in time series is a meaningful chat conversation, that is, a chat robot.
- the first information is a history of a certain user, including a product browsing record, personal basic information (age, gender, etc.)
- an operation instruction is invoked in the computing device to the first
- the information is processed to obtain the second information including information of the goods/services recommended to the user, such as clothes, movies, services, and the like.
- the present disclosure provides a data processing apparatus for an interconnect circuit for interconnecting nodes in the interconnect circuit for connecting one or more transaction data sources to one or more transaction data destinations, the data processing apparatus comprising : at least one input and at least one output, each of the inputs comprising a plurality of input ports, an output port, at least two multiplexers, and at least one buffer memory; a buffer memory allocation coupled to the multiplexer a circuit for controlling the multiplexer to input a temporary storage location according to a current state of the buffer memory; and a routing circuit connected to the buffer memory for selecting an output for the transaction data of the buffer queue
- the arbitration circuit is configured to determine the buffer queue having the priority transmission right, and obtain the output channel occupation rights according to the preset arbitration strategy for the plurality of transaction data transmissions competing for the same output; the multiplexer circuit and the connection station An output port and the output for translating data transmissions in the interconnect circuit.
- a data processing device for an interconnect circuit of the present disclosure wherein
- the buffer memory includes a plurality of storage locations, each storage location being associated with each of the input ports, such that transaction data is temporarily stored in a corresponding storage location before reaching the input port and forwarding to a corresponding output port .
- a data processing device for an interconnect circuit of the present disclosure wherein
- the routing circuit determines an output associated with the destination source according to the address information of the transaction data to be transmitted in the storage location.
- a data processing device for an interconnect circuit of the present disclosure wherein
- the storage location includes at least one storage portion, the storage location of transaction data being allocated by the buffer storage allocation circuit.
- a data processing device for an interconnect circuit of the present disclosure wherein
- the multiplexer circuit connects the storage portion to the output end to establish a transmission path for obtaining transaction data of the output path occupation right.
- a data processing device for an interconnect circuit of the present disclosure wherein
- the arbitration circuit further includes a priority register, the priority register storing a buffer queue number for obtaining the priority transmission right;
- the arbitration circuit checks the priority register and determines whether the buffer queue obtains the output channel occupation right.
- a data processing device for an interconnect circuit of the present disclosure wherein
- the arbitration circuit allows the transaction data to obtain the output channel occupation right, query whether the output terminal is occupied, and let the transaction data obtaining the path occupation right complete transmission when the output terminal is idle.
- the present disclosure also provides a data processing method for an interconnect circuit that performs data processing using the data processing apparatus of the above-described interconnect circuit, the data processing method including the following steps:
- Step 1 the multiplexer circuit receives the transaction data
- Step 2 The buffer storage allocation circuit allocates a temporary storage location for the transaction data
- Step 3 The routing circuit selects an output end for the transaction data
- Step 4 The arbitration circuit decides the buffer queue with the priority transmission right according to the transmission request of the transaction data, and sequentially obtains the output channel occupation rights according to the preset arbitration strategy for the plurality of transaction data transmissions competing for the same output port;
- Step 5 The multiplexer circuit allocates a transmission path for the transaction data that obtains the occupation right of the data path, and transmits the transaction data to the downstream node of the interconnection circuit.
- step 4 further includes the following steps,
- Step 41 The arbitration circuit obtains the priority transmission right by different buffer queues in each cycle according to the polling manner, or allows another buffer queue to obtain the priority transmission right after all the buffer queues are completely transmitted.
- step 4 further includes:
- Step 42 The arbitration circuit determines whether the output end requested by the transaction data of the priority transmission right is occupied, and if so, waits for arbitration processing of the next period, and if not, the arbitration circuit according to the transmission request of the transaction data, Checking whether there are multiple transaction data requests contending for the same output. If so, the arbitration circuit sequentially obtains the outbound access rights for the plurality of transaction data competing for the same transmission path. If not, the step 5 is performed.
- each buffer is provided at each input end, and the storage locations can be flexibly allocated according to different input data, and each buffer can be flexibly configured to be associated with different output ports, and controlled by the storage allocation circuit;
- the buffer storage is dynamically allocated, saving storage and power consumption overhead
- the present disclosure is capable of selecting a corresponding transmission path according to a destination thereof for a plurality of transaction data arriving at a convergence node in the interconnection circuit, and arbitrating a data transmission request competing for the same transmission path at the same time, thereby improving the interconnection circuit.
- the processing speed of transaction data, the realization of good data flow control, and the data processing device for improving the data throughput rate in the interconnect circuit are capable of selecting a corresponding transmission path according to a destination thereof for a plurality of transaction data arriving at a convergence node in the interconnection circuit, and arbitrating a data transmission request competing for the same transmission path at the same time, thereby improving the interconnection circuit.
- an embodiment of the present disclosure provides a terminal device, where the terminal device includes a functional unit for performing the method of the above first aspect.
- an embodiment of the present disclosure provides another terminal device, including: a memory, a processor, and a computer program stored in the memory and executable on the processor, where the processor executes The computer program implements the method of any of the preceding aspects.
- the present disclosure provides a computer readable storage medium storing program code executed by a computing device.
- the program code includes instructions for performing the method of any of the first aspects above.
- the present disclosure provides a computer program product comprising instructions which, when run on a computer, cause the computer to perform the method of any of the above first aspects.
- a matrix operation device for performing a matrix operation according to a matrix operation instruction comprising:
- a storage unit for storing a matrix
- a register unit configured to store a matrix address, wherein the matrix address is an address of a matrix stored in the storage unit
- a matrix operation unit configured to acquire a matrix operation instruction, obtain a matrix address in the register unit according to the matrix operation instruction, and then acquire a corresponding matrix in the storage unit according to the matrix address, and then perform a matrix operation according to the acquired matrix, Get the result of the matrix operation.
- it also includes:
- An instruction cache unit for storing a matrix operation instruction to be executed.
- it also includes:
- the instruction processing unit is configured to acquire a matrix operation instruction from the instruction cache unit, and process the matrix operation instruction, and then provide the matrix operation unit to the matrix operation unit.
- the instruction processing unit includes:
- An instruction fetch module configured to obtain a matrix operation instruction from the instruction cache unit
- a decoding module configured to decode the obtained matrix operation instruction
- the instruction queue is used to sequentially store the decoded matrix operation instructions.
- it also includes:
- the dependency processing unit is configured to determine, before the matrix operation unit acquires the matrix operation instruction, whether the matrix operation instruction and the previous matrix operation instruction access the same matrix, and if yes, wait for the execution of the previous matrix operation instruction, The matrix operation instruction is supplied to the matrix operation unit; otherwise, the matrix operation instruction is directly supplied to the matrix operation unit.
- the dependency processing unit stores the matrix operation instruction in a storage queue, and after the execution of the previous matrix operation instruction, The matrix operation instruction in the storage queue is supplied to the matrix operation unit.
- the storage unit is further configured to store the result of the matrix operation.
- it also includes:
- an input and output unit configured to store the matrix in the storage unit, or obtain a matrix operation result from the storage unit.
- the storage unit is a scratch pad memory.
- the matrix operation instruction includes an operation code and at least one operation domain, wherein the operation code is used to indicate a function of the matrix operation instruction, and the operation field is used to indicate data information of the matrix operation instruction.
- the matrix operation unit includes a matrix addition component, a matrix multiplication component, a matrix scalar multiplication component, and a nonlinear operation component.
- the matrix operation unit is a multi-stream water level structure, wherein the matrix multiplication component and the matrix scalar multiplication component are at a first flow level, the matrix addition component is at a second flow level, and the nonlinear operation component is in a third flow state. level.
- An apparatus for performing a forward operation of a convolutional neural network includes an instruction storage unit, a controller unit, a data access unit, an interconnection module, a main operation module, and a plurality of slave operation modules, wherein:
- the instruction storage unit reads the instruction through the data access unit and stores the read instruction
- the controller unit reads an instruction from the instruction storage unit, and translates the instruction into a control signal for controlling behavior of other modules, the other module including a data access unit, a main operation module, and the plurality of slave operation modules;
- the data access unit performs data or instruction read and write operations between the external address space and the device;
- the slave computing module is used to implement a convolution operation of the input data and the convolution kernel in the convolutional neural network algorithm
- An interconnection module is used for data transmission between the main operation module and the slave operation module.
- the main operation module delivers input data to each slave operation through the interconnection module.
- the interconnect module sings the output scalar of each slave arithmetic module into an intermediate vector step by step, and sends it back to the main operation module;
- the main operation module concatenates the intermediate vectors of all the input data into intermediate results and performs subsequent operations on the intermediate results.
- the main operation module adds the intermediate result to the offset data and then performs an activation operation.
- the plurality of slave computing modules calculate the respective output scalars in parallel using the same input data and respective convolution kernels.
- the activation function active used by the main operation module is any one of the nonlinear functions sigmoid, tanh, relu, softmax or a linear function.
- the interconnection module constitutes a data path of the continuous operation or the discrete data between the plurality of slave operation modules, and the interconnection module is any one of the following structures: a tree structure, a ring structure, and a network. Grid structure, hierarchical interconnection, bus structure.
- the main operation module includes a first storage unit, a first operation unit, a first data dependency determination unit, and a first storage unit, where:
- the first storage unit is configured to cache input data and output data used by the main operation module in the calculation process
- the first arithmetic unit completes various computing functions of the main arithmetic module
- the data dependency determining unit is a port in which the first operating unit reads and writes the first storage unit, ensures that there is no consistency conflict between the data reading and writing of the first storage unit, and is responsible for reading the input neuron vector from the first storage unit. And sent to the slave computing module through the interconnect module;
- An intermediate result vector from the interconnect module is sent to the first arithmetic unit.
- each slave computing module includes a second computing unit, a second data dependency determining unit, a second storage unit, and a third storage unit, where:
- the second operation unit receives the control signal sent by the controller unit and performs an arithmetic logic operation
- the second data dependency determining unit is responsible for reading and writing operations on the second storage unit and the third storage unit in the calculation process, and ensuring that there is no consistency conflict between the reading and writing of the second storage unit and the third storage unit;
- the second storage unit buffers the input data and the output scalar calculated by the slave computing module
- the third storage unit buffers the convolution kernel required by the slave arithmetic module in the calculation process.
- the first and second data dependency determining units ensure that there is no consistency conflict between the read and write by determining whether there is a dependency between the control signal that has not been executed and the data of the control signal being executed, if If it does not exist, the control signal is allowed to be transmitted immediately. Otherwise, the control signal is allowed to be transmitted after all the control signals on which the control signal depends.
- the data access unit reads at least one of the following from the external address space: input data, offset data, or a convolution kernel.
- a method for performing a forward operation of a single layer convolutional neural network comprising:
- step S1 an IO instruction is pre-stored at the first address of the instruction storage unit
- step S2 the operation starts, the controller unit reads the IO instruction from the first address of the instruction storage unit, and according to the translated control signal, the data access unit reads all corresponding convolutional neural network operation instructions from the external address space. And cache it in the instruction storage unit;
- step S3 the controller unit then reads the next IO instruction from the instruction storage unit, and according to the decoded control signal, the data access unit reads all the data required by the main operation module from the external address space to the first storage of the main operation module. unit;
- step S4 the controller unit then reads the next IO instruction from the instruction storage unit, and according to the decoded control signal, the data access unit reads the convolution kernel data required by the operation module from the external address space;
- step S5 the controller unit then reads the next CONFIG command from the instruction storage unit, and according to the decoded control signal, the device configures various constants required for the calculation of the layer neural network;
- step S6 the controller unit then reads the next COMPUTE instruction from the instruction storage unit.
- the main operation module first sends the input data in the convolution window to each slave operation module through the interconnection module, and saves Up to the second storage unit of the arithmetic module, after which the convolution window is moved according to the instruction;
- step S7 according to the control signal decoded by the COMPUTE instruction, the convolution kernel is read from the third storage unit from the arithmetic unit of the arithmetic module, the input data is read from the second storage unit, and the convolution of the input data and the convolution kernel is completed. Operation, the resulting output scalar is returned through the interconnect module;
- step S8 in the interconnect module, the output scalars returned by each slave arithmetic module are successively formed into a complete intermediate vector
- step S9 the main operation module obtains the intermediate vector returned by the interconnection module, and the convolution window traverses all the input data, and the main operation module concatenates all the return vectors into an intermediate result, and the control signal decoded according to the COMPUTE instruction is from the first storage unit. Reading the offset data, adding the offset result to the intermediate result by the vector addition unit, then the activation unit activates the offset result, and writes the final output data back to the first storage unit;
- step S10 the controller unit then reads the next IO instruction from the instruction storage unit. According to the translated control signal, the data access unit stores the output data in the first storage unit to the external address space designation address, and the operation ends.
- a method for performing a forward operation of a multi-layer convolutional neural network comprising:
- the operation instruction of the layer performs the output data address of the upper layer stored in the main operation unit as the input of the layer.
- the data address, and the convolution kernel and offset data address in the instruction are changed to the address corresponding to this layer.
- An apparatus for performing an artificial neural network full connection layer forward operation comprising an instruction storage unit, a controller unit, a data access unit, an interconnection module, a main operation module, and a plurality of slave operation modules, wherein:
- the instruction storage unit reads the instruction through the data access unit and stores the read instruction
- the controller unit reads an instruction from the instruction storage unit, and translates the instruction into a control signal for controlling behavior of other modules, the other module including a data access unit, a main operation module, and the plurality of slave operation modules;
- the data access unit performs data or instruction read and write operations between the external address space and the device;
- the interconnect module is used to connect the main operation module and the slave operation module
- the main operation module is used to implement a function activation operation in the artificial neural network full connection layer algorithm
- the slave computing module is used to implement multiplication and addition of input neurons and weight parameters in the artificial neural network connection layer algorithm
- An interconnection module is used for data transmission between the main operation module and the slave operation module.
- the main operation module transmits the input neuron vector to each through the interconnection module.
- the interconnect module progressively combines the output neuron values of the respective slave modules into intermediate result vectors, and sends them back to the main operation module for subsequent calculation.
- the plurality of slave computing modules use the same input neuron vector and the respective weight vector to calculate respective output neuron values in parallel, and the weight vector of each slave arithmetic module is in the weight matrix and the The row vector corresponding to the arithmetic module.
- the activation function active used by the main operation module is any one of the nonlinear functions sigmoid, tanh, relu, softmax or a linear function.
- the main operation module biases the intermediate result vector and then performs an activation operation.
- the interconnection module constitutes a data path of the continuous operation or the discrete data between the plurality of slave operation modules, and the interconnection module is any one of the following structures: a tree structure, a ring structure, and a network. Grid structure, hierarchical interconnection, bus structure.
- the main operation module includes a first storage unit, a first operation unit, a first data dependency determination unit, and a first storage unit, where:
- the neuron cache unit is configured to buffer input data and output data used by the main operation module in the calculation process
- the first arithmetic unit completes various computing functions of the main arithmetic module
- the data dependency determining unit is a port in which the first operating unit reads and writes the first storage unit, ensures that there is no consistency conflict between the data reading and writing of the first storage unit, and is responsible for reading the input neuron vector from the first storage unit. And sent to the slave computing module through the interconnect module;
- An intermediate result vector from the interconnect module is sent to the first arithmetic unit.
- each slave computing module includes a second computing unit, a second data dependency determining unit, a second storage unit, and a third storage unit, where:
- the second operation unit receives the control signal sent by the controller unit and performs an arithmetic logic operation
- the second data dependency determining unit is responsible for reading and writing operations on the second storage unit and the third storage unit in the calculation process, and ensuring that there is no consistency conflict between the reading and writing of the second storage unit and the third storage unit;
- the second storage unit buffers data of the input neuron vector and the output neuron value calculated by the slave computing module
- the third storage unit buffers the weight vector required by the slave computing module in the calculation process.
- the first and second data dependency determining units ensure that there is no consistency conflict between the read and write by determining whether there is a dependency between the control signal that has not been executed and the data of the control signal being executed, if If it does not exist, the control signal is allowed to be transmitted immediately. Otherwise, the control signal is allowed to be transmitted after all the control signals on which the control signal depends.
- a method for performing a single layer artificial neural network full connection layer forward operation using a device that performs an artificial neural network full connection layer forward operation comprising:
- Step S1.1 storing the initial instruction into the instruction storage unit
- Step S1.2 reading an instruction from the instruction storage unit
- Step S1.3 decoding the read instruction
- Step S1.4 performing corresponding operations according to the decoded control signal
- step S1.5 the operation result is written back to the corresponding storage unit.
- a method for performing a full-layer layer forward operation of a single-layer artificial neural network by performing an artificial neural network full connection layer forward operation method comprising:
- step S2.1 an IO instruction is pre-stored at the instruction storage unit
- step S2.2 the operation starts, the controller unit reads the IO instruction from the instruction storage unit, and according to the decoded control signal, the data access unit reads all the corresponding artificial neural network full connection layer operation instructions from the external address space. And storing it in the instruction storage unit;
- step S2.3 the controller unit then reads the next IO instruction from the instruction storage unit, and according to the decoded control signal, the data access unit reads all the data required by the main operation module from the external address space to the main operation module.
- step S2.4 the controller unit then reads in the next IO instruction from the instruction storage unit, and according to the decoded control signal, the data access unit reads the weight matrix data required by the operation module from the external address space;
- step S2.6 the controller unit then reads the next COMPUTE instruction from the instruction storage unit.
- the main operation module first sends the input neuron vector to each slave operation module through the interconnection module, and saves to a second storage unit of the slave computing module;
- step S2.7 according to the control signal decoded by the COMPUTE instruction, the weight vector is read from the third storage unit from the second operation unit of the operation module, and the input neuron vector is read from the second storage unit to complete the weight vector. a dot product operation with the input neuron vector to return the intermediate result through the interconnect module;
- step S2.8 in the interconnect module, the intermediate results returned by each slave arithmetic module are successively formed into a complete intermediate result vector;
- step S2.9 the main operation module obtains the return value of the interconnection module, reads the offset vector from the first storage unit according to the control signal decoded by the COMPUTE instruction, and adds the vector returned by the interconnection module through the vector addition unit. And then the activation unit activates the addition result and writes the last output neuron vector back to the first storage unit;
- step S2.10 the controller unit then reads the next IO instruction from the instruction storage unit, and according to the decoded control signal, the data access unit stores the output neuron vector in the storage unit to the specified address in the external address space, and the operation ends. .
- step S2.5 the controller unit then reads the next CONFIG command from the instruction storage unit, and configures various constants required for the calculation of the layer neural network according to the decoded control signal.
- a method for performing a full-layer layer forward operation of a multi-layer artificial neural network comprising:
- the method of claim 10 is performed, wherein when the upper layer of the artificial neural network connection layer is executed, the operation instruction of the next layer is stored in the main operation module.
- the output neuron address of the upper layer is used as the input neuron address of the layer, and the weight address and/or the offset address in the instruction are changed to the address corresponding to the layer.
- An apparatus for performing a pooling operation comprising an instruction storage unit, a controller unit, a data access unit, and an operation module, wherein
- the instruction storage unit reads the instruction through the data access unit and caches the read instruction
- the controller unit reads an instruction from the instruction storage unit, decodes the instruction into a control signal that controls the behavior of the operation module, and then distributes the control signal to the operation module;
- the data access unit is used to access an external address space to complete loading and storing of data
- the operation module is used to complete the maximization operation of the maxpooling operation, or to perform the accumulation and multiplication operations of the avgpooling operation.
- the operation module includes an operation unit, a data dependency determination unit, and a neuron storage unit.
- the neuron storage unit is configured to cache input data and output data used by the computing module in the calculation process
- the operation unit is configured to complete various operation functions of the operation module
- the data dependency determining unit is a port for the operating unit to read and write the neuron storage unit, and is used to ensure that there is no consistency conflict between reading and writing data in the neuron storage unit.
- the arithmetic module sequentially completes the operation of comparing the size of each input vector and taking the maximum value to obtain an output vector.
- the operation module cyclically reads the input vector of the pooling core kernel, performs the above-mentioned comparison operation, obtains the output vector of the new kernel, and saves the index vector corresponding to each output vector until the layer.
- the pooling operation ends.
- the operation module outputs the input gradient vector correspondingly to the corresponding storage location according to the index vector saved in the forward operation, and obtains the output gradient vector.
- the operation module 4 For avgpooling, in the forward operation, the operation module 4 successively accumulates each input vector; then, in the operation module 4, multiply by 1/kernel_size operation to obtain an output vector, kernel_size represents the size of the pooling core kernel; The input vector of the kernel is subjected to the above-mentioned accumulation and multiplication operations to obtain a new kernel output vector until the pooling operation of the layer ends.
- the arithmetic module multiplies the input gradient vector by 1/kernel_size, and outputs the input gradient vector correspondingly to the corresponding storage location through the data access unit to obtain an output gradient vector.
- the data dependency determining unit is configured to determine whether there is a dependency between the control signal that has not been executed and the data of the control signal that is being executed, and if not, allow the group of control signals to be immediately transmitted. Otherwise, the group of control signals is allowed to be transmitted after all the control signals on which the control signal depends are completed.
- a method for performing a single-layer artificial neural network pooling operation includes the following steps:
- the arithmetic module performs the maximization operation of the maxpooling operation or the accumulation and multiplication of the avgpooling operation.
- the arithmetic module sequentially completes the operation of comparing the size of each input vector and taking the maximum value to obtain an output vector.
- the operation module cyclically reads the input vector of the pooling core kernel, performs the above-mentioned comparison operation, obtains the output vector of the new kernel, and saves the index vector corresponding to each output vector until the layer.
- the pooling operation ends.
- the operation module outputs the input gradient vector correspondingly to the corresponding storage location according to the index vector saved in the forward operation, and obtains the output gradient vector.
- the arithmetic module sequentially accumulates each input vector; then, in the arithmetic module, multiply the 1/kernel_size operation to obtain the output vector, kernel_size represents the size of the pooling core kernel;
- the input vector of the kernel performs the above-mentioned accumulation and multiplication operations to obtain the output vector of the new kernel until the end of the pooling operation of the layer.
- the arithmetic module multiplies the input gradient vector by 1/kernel_size, and outputs the input gradient vector correspondingly to the corresponding storage location through the data access unit to obtain an output gradient vector.
- a method for performing a multi-layer artificial neural network pooling operation characterized in that
- the operation instruction of the next layer uses the output neuron vector or the output gradient vector calculated in the operation module as the input neuron vector or input of the next layer of training.
- the gradient vector is performed by the method according to any one of claims 9 to 14.
- An apparatus for performing a batch normalization operation comprising an instruction storage unit, a controller unit, a data access unit, and an operation module, wherein
- the instruction storage unit reads the instruction through the data access unit and caches the read instruction
- the controller unit reads instructions from the instruction storage unit, decodes the instructions into micro-instructions that control the behavior of other units or modules, and then distributes the respective micro-instructions to the respective units or modules;
- the data access unit is configured to access an external address space to complete loading and storing of data
- the arithmetic module is used for a forward process or a reverse process of a batch normalization operation.
- the operation module includes an operation unit, a data dependency determination unit, a neuron cache unit, and an intermediate value buffer unit, where
- the operation unit is configured to receive a micro instruction issued by a controller unit and perform an arithmetic logic operation
- the data dependency determining unit is configured to perform read and write operations on the neuron cache unit to ensure that there is no read/write consistency conflict between the data used in the instructions;
- the neuron buffer unit is configured to buffer input neuron data and output neuron data
- the intermediate value buffer unit is configured to buffer intermediate value data required in the calculation process of the operation module.
- the arithmetic unit performs the following calculation process in the forward process of the batch normailizaiton operation:
- the obtained mean value, var[x] represents the variance of the corresponding input neuron data x obtained by taking the batch size as a total amount.
- the arithmetic unit performs the following calculation process in the reverse process of the batch normailizaiton operation:
- the gradient introduced by one pixel is dl/dY
- the gradient of the backward transmission is dl/dx
- the output of the forward process is Y
- the other parameters indicate the same meaning as the forward process, and then propagated backward by batch normalization.
- Gradient dl/dx (alpha/sqrt(var(x)+eps))*(dl/dY-mean(dl/dY)-mean(dl/dY*Y)*Y), where mean is the mean operation,
- a method for performing a batch normalization operation comprising the following steps:
- the forward process or the reverse process of the batch normalization operation is performed by using the operation module.
- the operation module buffers the input neuron data and the output neuron data by using a neuron buffer unit, and buffers the intermediate value data required in the calculation process by using an intermediate value buffer unit.
- the arithmetic unit performs the following calculation process in the forward process of the batch normailizaiton operation:
- the arithmetic unit performs the following calculation process in the forward process of the batch normailizaiton operation:
- the obtained mean value, var[x] represents the variance of the corresponding input neuron data x obtained by taking the batch size as a total amount.
- the gradient introduced by one pixel is dl/dY
- the gradient of the backward transmission is dl/dx
- the output of the forward process is Y
- the other parameters indicate the same meaning as the forward process, and then propagated backward by batch normalization.
- Gradient dl/dx (alpha/sqrt(var(x)+eps))*(dl/dY-mean(dl/dY)-mean(dl/dY*Y)*Y), where mean is the mean operation,
- An apparatus for performing neural network operations and matrix/vector operations comprising a storage unit, a register unit, a control unit, an arithmetic unit, and a scratchpad memory, wherein:
- a storage unit for storing neurons/matrices/vectors
- a register unit for storing a neuron address/matrix address/vector address, wherein the neuron address is an address stored by the neuron in the storage unit, and the matrix address is an address of a matrix stored in the storage unit
- the vector address is an address of a vector stored in the storage unit
- control unit configured to perform a decoding operation, and control each unit module according to the read instruction
- An operation unit configured to acquire a neuron address/matrix address/vector address from the register unit according to the instruction, and acquire a corresponding neuron/matrix in the storage unit according to the neuron address/matrix address/vector address/ Vectors, and operations based on the data carried in the neurons/matrices/vectors and/or instructions thus obtained, to obtain an operation result;
- the feature is that the neuron/matrix/vector data participating in the calculation by the computing unit is temporarily stored in the scratchpad memory, and the arithmetic unit reads from the scratchpad memory when needed.
- the scratchpad memory is capable of supporting different sizes of neuron/matrix/vector data.
- the register unit is a scalar register that provides the scalar registers required during the operation.
- the arithmetic unit includes a vector multiplication component, an accumulation component, and a scalar multiplication component;
- the arithmetic unit is responsible for the neural network/matrix/vector operation of the device, including convolutional neural network forward operation operation, convolutional neural network training operation, neural network Pooling operation operation, full connection neural network forward operation operation, full connection nerve Network training operation, batch normalization operation, RBM neural network operation, matrix-vector multiplication operation, matrix-matrix addition/subtraction operation, vector outer product operation, vector inner product operation, vector four operation, vector logic
- the apparatus also includes an instruction cache unit for storing an operation instruction to be executed; the instruction cache unit is preferably a reorder buffer;
- the apparatus also includes an instruction queue for sequentially buffering the decoded instructions for transmission to the dependency processing unit.
- the device further includes a dependency processing unit and a storage queue, the dependency processing unit is configured to determine, before the operation unit acquires the instruction, whether the operation instruction and the previous operation instruction access the same neuron/matrix/vector storage address If yes, storing the operation instruction in the storage queue; otherwise, directly providing the operation instruction to the operation unit, and after the execution of the previous operation instruction is completed, providing the operation instruction in the storage queue to
- the operation unit is configured to store an instruction that has a dependency on the data with the previous instruction, and submit the instruction after the dependency is eliminated.
- the instruction set of the device adopts a Load/Store structure, and the operation unit does not operate on data in the memory;
- the instruction set of the apparatus preferably employs a very long instruction word architecture, and preferably uses fixed length instructions.
- the operation instruction executed by the operation unit includes at least one operation code and at least three operands; wherein the operation code is used to indicate a function of the operation instruction, and the operation unit performs different operations by identifying one or more operation codes;
- the operand is used to indicate data information of the operation instruction, wherein the data information is an immediate number or a register number.
- the operation instruction when the operation instruction is a neural network operation instruction, the neural network operation instruction includes at least one operation code and 16 operands;
- the operation instruction is a matrix-matrix operation instruction
- the matrix-matrix operation instruction includes at least one operation code and at least 4 operands
- the operation instruction when the operation instruction is a vector operation instruction, the vector operation instruction includes at least one operation code and at least three operands;
- said operational instruction is a matrix-vector operation instruction
- said matrix-vector operation instruction comprises at least one opcode and at least six operands.
- An apparatus for performing neural network operations and matrix/vector operations comprising:
- the fetch module is configured to fetch an instruction to be executed from the instruction sequence and transmit the instruction to the decoding module;
- a decoding module configured to decode the instruction, and transmit the decoded instruction to the instruction queue
- An instruction queue configured to sequentially cache the decoded instruction of the decoding module, and send the instruction to the dependency processing unit;
- a scalar register that provides a scalar register for use in operations
- a dependency processing unit configured to determine whether the current instruction has a data dependency relationship with the previous instruction, and if present, store the current instruction in a storage queue
- a storage queue configured to cache a current instruction having a data dependency relationship with the previous instruction, and transmitting the current instruction after the current instruction has a dependency relationship with the previous instruction;
- Reordering the cache for caching the instruction when it is executed, and determining whether the instruction is the earliest instruction in the uncommitted instruction in the reordering cache after execution, and if so, submitting the instruction;
- a cache memory for temporarily storing the neuron/matrix/vector data participating in the calculation of the arithmetic unit, the arithmetic unit reading from the scratchpad memory when needed;
- the cache memory preferably Support different sizes of data;
- An IO memory access module is configured to directly access the scratch pad memory and is responsible for reading or writing data from the scratch pad memory.
- a method of performing neural network operations and matrix/vector instructions includes the following steps:
- Step S1 the fetch module takes out a neural network operation and a matrix/vector instruction, and sends the instruction to the decoding module;
- Step S2 the decoding module decodes the instruction, and sends the instruction to the instruction queue
- Step S3 in the decoding module, the instruction is sent to the instruction accepting module;
- Step S4 the instruction accepting module sends the instruction to the micro-instruction decoding module to perform micro-instruction decoding
- Step S5 the micro-instruction decoding module acquires the neural network operation operation code of the instruction and the neural network operation operand from the scalar register, and decodes the instruction into a micro-instruction for controlling each functional component, and sends the micro-instruction to the micro-instruction. queue;
- Step S6 after obtaining the required data, the instruction is sent to the dependency processing unit; the dependency processing unit analyzes whether the instruction has a dependency on the data with the previously unexecuted instruction, and if so, the The instruction needs to wait in the storage queue until it no longer has a dependency on the data with the previously unexecuted instruction;
- Step S7 sending the micro-instruction corresponding to the instruction to the arithmetic unit
- step S8 the arithmetic unit extracts the required data from the scratchpad memory according to the address and size of the required data, and then completes the neural network operation and/or the matrix/vector operation corresponding to the instruction in the operation unit.
- a data distribution device based on a fractal tree network structure comprising:
- central node which is a communication data center of the on-chip network, configured to broadcast or multicast communication data to a plurality of leaf nodes;
- leaf nodes which are communication data nodes of the on-chip network, for transmitting communication data to the central leaf node;
- a repeater module configured to connect the central node and the plurality of leaf nodes, and the communication data is forwarded by the forwarding module;
- the plurality of leaf nodes are divided into N groups, and the number of leaf nodes in each group is the same, and the central node communicates with each group of leaf nodes separately through the repeater module, and each group of leaf nodes constitutes communication
- the structure has self-similarity, and the plurality of leaf nodes and the central node are communicably connected in a completely multi-tree manner by the plurality of the repeater modules.
- Including each node includes a local cache structure for storing a subset of the central node publishing data
- Each leaf node has an id identifier, and the id identifier sequentially increases the sequence number from the top side of the complete multi-tree tree;
- the data distribution device shares a clock signal.
- the repeater module includes a local cache structure for storing data.
- a data distribution method using the data distribution apparatus the communication data is distributed to the plurality of leaf nodes by the central node, wherein after the data sender is ready to send data, the data valid signal is sent, and the data is sent After being placed on the bus; after the data receiver is ready to receive the data, the data is ready to receive the signal; when both the data valid signal and the data ready to receive signal are detected, the data sender considers that the data has been sent and is received by the data receiver. receive.
- first data is entered from the central node into a local cache of the repeater module directly connected to the central node by a handshake protocol.
- Temporary storage after each handshake protocol is successful, it is temporarily stored in the local buffer of the next intermediate forwarding module, and finally the transponder module directly connected to the leaf node is input, and is respectively issued by the transponder module to a group connected thereto.
- Leaf node When broadcasting communication data from the central node to the plurality of leaf nodes, first data is entered from the central node into a local cache of the repeater module directly connected to the central node by a handshake protocol. Temporary storage, after each handshake protocol is successful, it is temporarily stored in the local buffer of the next intermediate forwarding module, and finally the transponder module directly connected to the leaf node is input, and is respectively issued by the transponder module to a group connected thereto.
- Leaf node When broadcasting communication data from the central node to the plurality of leaf nodes, first data is entered from the central node into
- next clock tick data sender and the data receiver handshake protocol are successful, the data is stored in the local buffer of the data receiver in a pipeline manner; if the handshake protocol is unsuccessful, the data is saved in the local cache of the current layer, and The current layer acts as the data receiver of the upper layer and stops sending data ready to receive signals, so that the data in the local cache of the current layer stops updating, and the data is always saved in the current layer until the handshake protocol is successful.
- the central node When the central node multicasts communication data to the plurality of leaf nodes, firstly, data is transferred from the central node to a local cache of the repeater module directly connected to the central node by using a handshake protocol. Temporary storage, after each handshake protocol is successful, enters the local buffer of the next intermediate repeater module for temporary storage, and finally inputs a repeater module directly connected to the leaf node, and is respectively issued by the repeater module to the connected one. Group leaf nodes.
- the leaf node When receiving the data, the leaf node selects data of a preset bandwidth according to the id identifier corresponding thereto.
- An artificial neural network computing device for sparse connection comprising:
- mapping unit configured to convert the input data into a storage manner in which the input neurons and the weights are in one-to-one correspondence, and stored in the storage device and/or the cache;
- a storage device for storing data and instructions
- An operation unit configured to perform a corresponding operation on the data according to an instruction stored in the storage device; the operation unit mainly performs a three-step operation, and the first step is to multiply the input neuron and the weight data;
- the second step performs an addition tree operation for adding the weighted output neurons processed in the first step by the addition tree step by step, or adding the output neurons through the offsets to obtain the biased output neurons; Steps perform an activation function operation to get the final output neuron.
- mapping unit The one-to-one correspondence in the mapping unit is expressed as follows:
- the first case is a first case:
- the second case is a first case
- the artificial neural network computing device also includes a DMA for reading or writing data or instructions in the storage device and the cache.
- the artificial neural network computing device further includes:
- Instruction cache for storing dedicated instructions
- control unit configured to read the dedicated instruction from the instruction cache and decode the instruction into each operation unit instruction.
- the artificial neural network computing device further includes:
- Input a neuron cache for buffering input neuron data input to the arithmetic unit
- Weight buffer for caching weight data
- the artificial neural network computing device further includes:
- Output a neuron cache for buffering output neurons output by the arithmetic unit.
- the mapping unit is configured to convert the input data into a storage manner in which the input neurons and the weights are in one-to-one correspondence, and output to the operation unit instead of being stored in the storage device.
- the artificial neural network computing device further includes an input neuron cache and/or a weight buffer for buffering input neuron data input to the operation unit, the weight buffer being used for caching rights Value data, the mapping unit is configured to convert the input data into a storage manner in which the input neurons and the weights are in a one-to-one correspondence, and output to the input neuron cache and/or the weight buffer.
- the activation function performed by the arithmetic unit in the third step is a sigmoid function, a tanh function, or a ReLU function.
- a method for calculating an artificial neural network for sparse connection includes the following steps:
- Step 1 Convert the input data into a storage mode in which the input neurons and the weights are in one-to-one correspondence; wherein the correspondence relationship is expressed as:
- the first case is a first case:
- the second case is a first case
- Step 2 multiplying the input neuron and the weight data
- Step 3 performing an addition tree operation, adding the weighted output neurons processed in the first step to the stages by the addition tree, or adding the output neurons through the offsets to obtain the biased output neurons;
- Step 4 Perform an activation function operation to obtain a final output neuron; wherein the activation function is a sigmoid function, a tanh function, or a ReLU function.
- a neural network processing system comprising:
- At least one piece of upper storage medium for storing data transmitted from outside the neural network processing system or for storing data generated during the processing
- At least one inner address indexing module for mapping to the correct storage address according to the input index when performing the operation
- a multi-core processing module consisting of a plurality of core processing modules for performing vector multiply-accumulate operations in neural network operations
- At least one ALU module configured to acquire input data from the multi-core processing module or the on-chip storage medium to perform a nonlinear operation that cannot be completed by the multi-core processing module
- the plurality of core processing modules share the on-chip storage medium and the ALU module, or the plurality of core processing modules have independent on-chip storage media and an ALU module.
- the data generated during the processing includes processing results or intermediate settlement results.
- the same input neuron is separately sent to the plurality of core processing modules, and different input weights are allocated to different core processing modules, and the multiple core processing modules respectively
- the input neuron and the input weight perform a vector inner product operation to obtain different output neurons.
- the processing system of the neural network sends an input feature map to the plurality of core processing modules respectively when performing two-dimensional or multi-dimensional operations, and the plurality of core processing modules respectively process one layer of output feature maps.
- the processing system of the neural network sends the input feature map to the plurality of core processing modules respectively when performing two-dimensional or multi-dimensional operations, and the plurality of core processing modules respectively process different regions of the same output feature map.
- the multi-core processing module After the plurality of core processing modules respectively complete the processing of the current output feature map, the multi-core processing module performs a new output feature map process.
- the processing system of the neural network sends the same input to the plurality of core processing modules respectively when performing the one-dimensional operation, the plurality of core processing modules respectively processing different output neurons, the plurality of core processing modules After the processing of the current output neuron is completed separately, the multi-core processing module performs a new input processing.
- the multiple core processing modules of the multi-core processing module have a homogeneous design or a heterogeneous design.
- a method of processing a neural network comprising:
- the on-chip address indexing module maps to the correct storage address according to the input index
- the multi-core processing module performs a vector multiply-add operation in a neural network operation, and the ALU module executes the multi-core processing module according to a processing result of the multi-core processing module or input data acquired from the on-chip storage medium Non-linear operations that cannot be completed;
- the data generated during the process is cached to the on-chip storage medium.
- the method further includes:
- An apparatus for performing artificial neural network forward operation supporting discrete data representation comprising an instruction cache unit, a controller unit, a data access unit, an interconnection module, a main operation module, and a plurality of slave operation modules, wherein:
- the instruction cache unit is configured to read in an instruction through the data access unit and cache the read instruction
- the controller unit is configured to read an instruction from the instruction cache unit and decode the instruction into a micro-instruction that controls the interconnect module, the main operation module, and the slave operation module;
- the data access unit is configured to write discrete data or continuous data from the external address space to the main data processing unit and the corresponding data buffer unit of each of the slave operation modules or read the discrete data or the continuous data from the data buffer unit to the external address space;
- Each layer of neural network begins the phase of forward calculation.
- the main operation module transmits the discrete or continuous input neuron vector of the layer to all the slave modules through the interconnect module. After the calculation process of the slave module is completed, the interconnect module is stepped.
- the discrete or continuous output neuron values of each slave arithmetic module are combined into an intermediate result vector, wherein when the input data is mixed data of discrete data and continuous data, the corresponding calculation is preset from the computing module for different discrete data. the way;
- the main operation module is used to complete the subsequent calculation by using the intermediate result vector.
- the main operation module adopts a corresponding calculation manner preset for different discrete data.
- Discrete data representation refers to the representation of replacing real continuous data with a particular discrete number.
- the plurality of slave arithmetic modules compute the respective discrete or continuous output neuron values in parallel using the same discrete or continuous input neuron vector and respective different discrete or continuous weight vectors.
- the main arithmetic module performs any of the following operations on the intermediate result vector:
- the intermediate result vector is activated, and the activation function active is any one of the nonlinear functions sigmoid, tanh, relu, softmax or a linear function;
- the sampling operation compares the intermediate result vector with the random number, and outputs 1 if it is larger than the random number, and outputs 0 if it is less than the random number; or
- Pooling operations including maximum pooling or average pooling.
- the slave arithmetic module includes an input neuron cache unit for buffering discrete or continuous input neuron vectors.
- the interconnect module constitutes a data path of the continuous or discretized data between the main operation module and the plurality of slave operation modules, and
- the main operation module includes an operation unit, a data dependency determination unit, and a neuron cache unit, wherein:
- the neuron cache unit is configured to buffer the input data and the output data of the discrete or continuous representation used by the main operation module in the calculation process;
- the operation unit completes various calculation functions of the main operation module.
- the input data is mixed data of discrete data and continuous data, a corresponding calculation manner preset for different discrete data is adopted;
- the data dependency judgment unit is a port for the operation unit to read and write the neuron cache unit, and ensures that there is no consistency conflict between the continuous data or the discrete data read and write in the neuron cache unit, and is responsible for reading the input discrete or continuous from the neuron cache unit.
- the intermediate result vector from the interconnect module is sent to the arithmetic unit.
- Each slave arithmetic module includes an arithmetic unit, a data dependency determination unit, a neuron cache unit, and a weight buffer unit, wherein:
- the arithmetic unit receives the micro-instruction issued by the controller unit and performs arithmetic logic operation.
- the input data is mixed data of discrete data and continuous data, a corresponding calculation manner preset for different discrete data is adopted;
- the data dependency judgment unit is responsible for reading and writing operations to the neuron cache unit supporting the discrete data representation and the weight buffer unit supporting the discrete data representation in the calculation process, ensuring the support of the discrete data representation of the neuron cache unit and supporting the discrete data representation. There is no consistency conflict between the reading and writing of the weight buffer unit;
- the neuron cache unit buffers data of the input neuron vector and the output neuron value calculated by the slave computing module
- the weight buffer unit buffers the weight vector of the discrete or continuous representation that the slave module requires during the calculation process.
- the data dependency judgment unit ensures that there is no consistency conflict between the read and write by judging whether there is a dependency between the microinstruction that has not been executed and the data of the microinstruction in the process of execution, and if it does not exist, the microinstruction is allowed to be immediately Transmit, otherwise the microinstruction is allowed to be transmitted after all the microinstructions on which the microinstruction depends are executed.
- the operation unit in the main operation module or the slave operation module includes an operation decision unit and a mixed data operation unit.
- the operation decision unit determines, according to the discrete data therein, what operation should be performed on the mixed data, and then mixes The data operation unit performs a corresponding operation based on the determination result of the operation decision unit.
- the operation unit in the main operation module or the slave operation module further includes at least one of a discrete data operation unit and a continuous data operation unit, and a data type determination unit.
- the discrete data operation unit is The input discrete data performs corresponding operations by looking up the table.
- the continuous data operation unit performs the corresponding operation.
- the distance calculation module calculates a distance between the preprocessed data y and each of the above values
- the judging module calculates and outputs the discrete data based on the distance.
- the predetermined interval [-zone,zone] is [-1,1] or [-2,2];
- the absolute value of the M values is the reciprocal of the power of 2;
- the judgment module executes:
- a method for performing a forward operation of a single-layer artificial neural network using a device for forward operation comprising:
- the data access unit reads all artificial neural network operation instructions related to the forward operation of the layer artificial neural network from the external address space, and caches them in the instruction cache unit;
- the continuous discrete conversion module reads the layered neural network from the external address space and converts the continuous data to be converted into discrete data and stores it back to the external address space;
- the data access unit reads all discrete or continuous data related to the forward operation of the layer artificial neural network required by the main operation module from the external address space to the neuron buffer unit of the main operation module;
- the data access unit reads the discrete representation or the continuous representation of the weight matrix data required by the arithmetic module from the external address space;
- the main operation module first sends the input neuron vector to each slave operation module through the interconnection module, and saves to the neuron cache unit that supports the discrete data representation from the operation module;
- the dot product operation, for discrete data representation in the vector is determined by the discrete data operation module, and the corresponding bit operation is replaced by the dot product operation according to the value of the discrete data, and the obtained neuron value is returned through the interconnection module;
- the neuron values returned by each slave arithmetic module are progressively combined into a complete intermediate result vector
- the main operation module reads the offset vector of the discrete representation or the continuous representation from the neuron buffer unit of the main operation module, adds the intermediate result vector returned by the interconnection module, and then activates the addition result to obtain the output neuron vector write. Returning to the neuron cache unit of the main arithmetic module;
- the data access unit stores the output neuron vector in the neuron cache unit of the main operation module to an external address space designation address.
- a method of performing a batch normalization operation using a device that performs a forward operation :
- the data access unit reads all artificial neural network operation instructions related to the batch normalized forward operation from the external address space, and caches them in the instruction cache unit;
- the continuous discrete conversion module reads the layered neural network from the external address space and converts the continuous data to be converted into discrete data and stores it back to the external address space.
- the data access unit reads all discrete or continuous data related to the layer normalized forward operation required by the main operation module from the external address space to the neuron cache unit of the main operation module;
- the main operation module first sends the input neuron vector to each slave operation module through the interconnection module, and saves to the neuron cache unit that supports the discrete data representation from the operation module;
- the neuron values returned by each slave arithmetic module are progressively combined into a complete intermediate result vector
- the main operation module reads the discrete representation from the neuron buffer unit of the main operation module or continuously represents the input neuron vector, subtracts the mean result vector returned by the interconnection module, and then divides the subtraction result and the standard deviation result to obtain an output nerve.
- the meta vector is written back to the neuron cache unit of the main operation module;
- the data access unit stores the output neuron vector in the neuron cache unit of the main operation module to an external address space designation address.
- a method of performing a forward operation of a multi-layer artificial neural network comprising:
- a method of performing a forward operation according to a single-layer artificial neural network or a method of batch normalization is performed, wherein:
- the output neuron address of the upper layer stored in the main operation module is used as the input neuron address of the layer, and the single layer artificial neural network is performed again for the layer.
- the method of operation or the method of batch normalization is used as the input neuron address of the layer.
- a neural network computing device comprising:
- the power conversion module is coupled to the operation module for converting input neuron data and/or output neuron data of the neural network operation into power neuron data.
- the power conversion module includes:
- a first power conversion unit configured to convert the neuron data output by the operation module into power neuron data
- a second power conversion unit configured to convert the neuron data input to the operation module into power neuron data.
- the operation module further includes: a third power conversion unit configured to convert the power neuron data into non-power neuron data.
- the neural network computing device further includes:
- a storage module for storing data and operation instructions
- control module configured to control interaction between the data and the operation instruction, receive the data and the operation instruction sent by the storage module, and decode the operation instruction into the operation micro instruction;
- the operation module includes an operation unit, configured to receive data and operation micro-instructions sent by the control module, and perform neural network operations on the weight data and the neuron data received according to the operation micro-instruction.
- control module includes: an operation instruction buffer unit, a decoding unit, an input neuron buffer unit, a weight buffer unit, and a data control unit;
- An operation instruction buffer unit connected to the data control unit, for receiving an operation instruction sent by the data control unit;
- a decoding unit coupled to the operation instruction buffer unit, for reading an operation instruction from the operation instruction buffer unit, and decoding the operation instruction into an operation micro instruction
- a neuron buffer unit coupled to the data control unit, for acquiring corresponding power neuron data from the data control unit
- a weight buffer unit connected to the data control unit, for acquiring corresponding weight data from the data control unit;
- a data control unit coupled to the storage module, configured to implement interaction between the storage module and the data and operation instructions between the operation instruction cache unit, the weight buffer unit, and the input neuron cache unit; among them,
- the operation unit is respectively connected to the decoding unit, the input neuron buffer unit and the weight buffer unit, and receives the operation micro instruction, the power neuron data and the weight data, and receives the operation unit according to the operation micro instruction.
- the power neuron data and the weight data perform corresponding neural network operations.
- the neural network computing device further includes: an output module, comprising: an output neuron buffer unit, configured to receive neuron data output by the operation module;
- the power conversion module includes:
- a first power conversion unit coupled to the output neuron buffer unit, configured to convert the neuron data output by the output neuron buffer unit into power neuron data
- a second power conversion unit connected to the storage module, configured to convert the neuron data input to the storage module into power neuron data
- the operation module further includes: a third power conversion unit connected to the operation unit for converting the power neuron data into non-power neuron data.
- the first power conversion unit is further connected to the data control unit, and the neuron data output by the operation module is converted into power neuron data and sent to the data control unit. Take the input data as the next layer of neural network operation.
- the power neuron data includes a sign bit and a power bit, the sign bit being used to represent a symbol of the power neuron data, the power bit being used to represent the power Power bit data of neuron data; the sign bit includes one or more bit data, the power bit includes m bit data, and m is a positive integer greater than one.
- the neural network computing device further includes a storage module prestored with a coding table including power sub-bit data and an exponent value, the coding table being used for powering neuron data Each power bit data acquires an exponent value corresponding to the power bit data.
- the coding table further includes one or more zero-powered bit data, and the power neuron data corresponding to the zero-powered bit data is zero.
- the largest power bit data corresponds to a power neuron data of 0 or a minimum power bit data corresponding to a power neuron data of zero.
- the correspondence relationship of the coding table is that the highest bit of the power bit data represents a zero bit, and the other m-1 bits of the power bit data correspond to an index value.
- the correspondence relationship of the coding table is a positive correlation relationship
- the storage module prestores an integer value x and a positive integer value y
- the smallest power bit data corresponds to an exponent value of x; wherein x represents an offset
- the value, y represents the step size.
- the smallest power bit data corresponds to an exponent value of x
- the largest power bit data corresponds to a power sub-neuron data of 0, and other power-bit data other than the minimum and maximum power sub-bit data.
- the corresponding index value is (power sub-data + x) * y.
- y 1
- the value of x -2m-1.
- the correspondence relationship of the coding table is a negative correlation
- the storage module prestores an integer value x and a positive integer value y
- the maximum power bit data corresponds to an exponent value of x; wherein x represents an offset
- the value, y represents the step size.
- the largest power bit data corresponds to an exponent value of x
- the smallest power bit data corresponds to a power sub-neuron data of 0, and other power-bit data other than the minimum and maximum power bit data.
- the corresponding index value is (power sub-data -x) * y.
- y 1
- the value of x is equal to 2m-1.
- converting the neuron data to power neuron data includes:
- d in is the input data of the power conversion unit
- d out is the output data of the power conversion unit
- s in is the sign of the input data
- s out is the sign of the output data
- d in+ is the positive part of the input data.
- d in+ d in ⁇ s in
- d out+ d out ⁇ s out , Indicates that the data x is taken out; or,
- d in is the input data of the power conversion unit
- d out is the output data of the power conversion unit
- s in is the sign of the input data
- s out is the sign of the output data
- d in+ is the positive part of the input data.
- d in+ d in ⁇ s in
- d out+ d out ⁇ s out ,
- d in is the input data of the power conversion unit
- d out is the output data of the power conversion unit
- s in is the sign of the input data
- s out is the sign of the output data
- d in+ is the positive part of the input data
- d in+ d in ⁇ s in
- d out+ is the positive part of the output data
- d out+ d out ⁇ s out ;
- Indicates that the data x is rounded off.
- a neural network operation method including:
- the step of converting the input neuron data of the neural network operation into power neuron data prior to performing the neural network operation comprises:
- the operation instruction, the power neuron data, and the weight data are received and stored.
- the method further includes:
- the operation instruction is read and decoded into each operation micro instruction.
- a neural network operation is performed on the weight data and the power neuron data according to the operation microinstruction.
- the step of converting the output neuron data of the neural network operation to the power neuron data after performing the neural network operation comprises:
- the non-power neuron data in the neuron data obtained after the neural network operation is converted into power neuron data.
- the non-power neuron data in the neuron data obtained after the neural network operation is converted into power neuron data and sent to the data control unit as an input to the next layer of the neural network operation.
- the power neurons, the repeated neural network operation steps and the non-powered neuron data are converted into power neuron data steps until the last layer of the neural network ends.
- an integer value x and a positive integer value y are prestored in the storage module; wherein x represents an offset value and y represents a step size; by changing an integer value x and a positive integer value y prestored by the storage module, Adjust the range of power neuron data that can be represented by the neural network computing device.
- a method of using the neural network computing device wherein an integer value x and a positive integer value y prestored by a storage module are changed to adjust a power that can be represented by a neural network computing device Secondary neuron data range.
- a neural network computing device including:
- a power conversion module is coupled to the computing module for converting input data and/or output data of the neural network operation into power data.
- the input data includes input neuron data, input weight data
- the output data includes output neuron data, output weight data
- the power data includes power neuron data, power Weight data.
- the power conversion module includes:
- a first power conversion unit for converting output data of the operation module into power data
- a second power conversion unit configured to convert input data of the operation module into power data.
- the operation module further includes: a third power conversion unit configured to convert the power data into non-power data.
- the neural network computing device further includes:
- a storage module for storing data and operation instructions
- control module configured to control interaction between the data and the operation instruction, receive the data and the operation instruction sent by the storage module, and decode the operation instruction into the operation micro instruction;
- the operation module includes an operation unit, configured to receive data and operation micro-instructions sent by the control module, and perform neural network operations on the weight data and the neuron data received according to the operation micro-instruction.
- control module includes: an operation instruction buffer unit, a decoding unit, an input neuron buffer unit, a weight buffer unit, and a data control unit;
- An operation instruction buffer unit connected to the data control unit, for receiving an operation instruction sent by the data control unit;
- a decoding unit coupled to the operation instruction buffer unit, for reading an operation instruction from the operation instruction buffer unit, and decoding the operation instruction into an operation micro instruction
- a neuron buffer unit coupled to the data control unit, for acquiring corresponding power neuron data from the data control unit
- a weight buffer unit connected to the data control unit, for acquiring corresponding power weight data from the data control unit;
- a data control unit coupled to the storage module, configured to implement interaction between the storage module and the data and operation instructions between the operation instruction cache unit, the weight buffer unit, and the input neuron cache unit; among them,
- the operation unit is respectively connected to the decoding unit, the input neuron buffer unit and the weight buffer unit, and receives the operation microinstruction, the power sub-neuron data, the power sub-weight data, and the operation unit according to the operation micro-instruction
- the received power neuron data and the power weight data perform corresponding neural network operations.
- the neural network computing device further includes: an output module, comprising: an output neuron buffer unit, configured to receive neuron data output by the operation module;
- the power conversion module includes:
- a first power conversion unit coupled to the output neuron buffer unit and the operation unit, configured to convert the neuron data output by the output neuron buffer unit into power neuron data and output the operation unit
- the weight data is converted into power weight data
- a second power conversion unit is connected to the storage module, and configured to convert the neuron data and the weight data input to the storage module into power neuron data and power weight data respectively;
- the operation module further includes: a third power conversion unit connected to the operation unit, configured to convert the power neuron data and the power weight data into non-power neuron data and non-power weights respectively. data.
- the first power conversion unit is further connected to the data control unit, and the neuron data and the weight data output by the operation module are respectively converted into power neuron data and power sub-weights.
- the value data is sent to the data control unit as input data for the next layer of neural network operations.
- the power neuron data includes a sign bit and a power bit, the sign bit being used to represent a symbol of the power neuron data, the power bit being used to represent the power Power bit data of neuron data;
- the sign bit includes one or more bit data, the power bit bit includes m bit bit data, and m is a positive integer greater than one;
- the power weight data indicates that the value of the weight data is represented by its power exponent value, wherein the power weight data includes a sign bit and a power bit, and the sign bit uses one or more bit representations.
- the sign of the value data, the power bit uses the m-bit bit to represent the power bit data of the weight data, and m is a positive integer greater than one.
- the neural network computing device further includes a storage module prestored with a coding table including power sub-bit data and an exponent value, the coding table being used to pass power sub-neuron data, Each power bit data of the power weight data obtains an exponent value corresponding to the power bit data.
- the coding table further includes one or more zero-powered bit data, and the power-level neuron data and the power-weighted weight data corresponding to the zero-powered bit data are zero.
- the largest power bit data corresponds to power neuron data
- the power weight data is 0, or the least power bit data corresponds to power neuron data, and the power weight data is 0.
- the correspondence relationship of the coding table is that the highest bit of the power bit data represents a zero bit, and the other m-1 bits of the power bit data correspond to an index value.
- the correspondence relationship of the coding table is a positive correlation relationship
- the storage module prestores an integer value x and a positive integer value y
- the smallest power bit data corresponds to an exponent value of x; wherein x represents an offset
- the value, y represents the step size.
- the smallest power bit data corresponds to an exponent value of x
- the largest power bit data corresponds to power sub-neuron data
- power sub-weight data is 0, and minimum and maximum power sub-bit data are The other power-bit data corresponding to the exponent value is (power sub-data + x) * y.
- the correspondence relationship of the coding table is a negative correlation
- the storage module prestores an integer value x and a positive integer value y
- the maximum power bit data corresponds to an exponent value of x; wherein x represents an offset
- the value, y represents the step size.
- the largest power bit data corresponds to an exponent value of x
- the smallest power bit data corresponds to power sub-neuron data
- the power weight data is 0, and the minimum and maximum power bit data are
- the other power-bit data corresponds to an exponent value of (power-bit data -x)*y.
- y 1, the value of x is equal to 2 m-1 .
- converting the neuron data and the weight data into power neuron data and power weight data respectively includes:
- d in is the input data of the power conversion unit
- d out is the output data of the power conversion unit
- s in is the sign of the input data
- s out is the sign of the output data
- d in+ is the positive part of the input data.
- d in+ d in ⁇ s in
- d out+ d out ⁇ s out , Indicates that the data x is taken out; or,
- d in is the input data of the power conversion unit
- d out is the output data of the power conversion unit
- s in is the sign of the input data
- s out is the sign of the output data
- d in+ is the positive part of the input data.
- d in+ d in ⁇ s in
- d out+ d out ⁇ s out , Indicates that the data x is taken as a whole operation; or,
- d in is the input data of the power conversion unit
- d out is the output data of the power conversion unit
- s in is the sign of the input data
- s out is the sign of the output data
- d in+ is the positive part of the input data
- d in+ d in ⁇ s in
- d out+ is the positive part of the output data
- d out+ d out ⁇ s out ;
- Indicates that the data x is rounded off.
- a neural network operation method including:
- the input data of the neural network operation is converted into power data before the neural network operation is performed; and/or the output data of the neural network operation is converted into power data after performing the neural network operation.
- the input data includes input neuron data, input weight data
- the output data includes output neuron data, output weight data
- the power data includes power neuron data, power Weight data.
- the step of converting the input data of the neural network operation to power data prior to performing the neural network operation comprises:
- the operation instruction and the power data are received and stored.
- the method further includes:
- the operation instruction is read and decoded into each operation micro instruction.
- a neural network operation is performed on the power weight data and the power neuron data according to the operation microinstruction.
- the step of converting the output data of the neural network operation to power data after performing the neural network operation comprises:
- the non-power data in the data obtained by the neural network operation is converted into power data.
- the non-power data in the data obtained after the neural network operation is converted into power data and sent to the data control unit to perform the neural network operation as the input data of the next layer of the neural network operation.
- the steps and non-power data are converted to power data steps until the last layer of the neural network ends.
- an integer value x and a positive integer value y are prestored in the storage module; wherein x represents an offset value and y represents a step size; by changing an integer value x and a positive integer value y prestored by the storage module, Adjust the power data range that the neural network computing device can represent.
- a method of using the neural network computing device wherein an integer value x and a positive integer value y prestored by a storage module are changed to adjust a power that can be represented by a neural network computing device Secondary data range.
- an arithmetic device comprising:
- An operation control module configured to determine the block information
- the operation module is configured to perform block, transpose, and merge operations on the operation matrix according to the block information to obtain a transposed matrix of the operation matrix.
- the computing device further includes:
- An address storage module configured to store address information of the operation matrix
- a data storage module configured to store the operation matrix, and store the transposed matrix after the operation
- the operation control module is configured to extract address information of the operation matrix from the address storage module, and obtain block information according to address information of the operation matrix; and the operation module is configured to perform the operation from the operation
- the control module obtains the address information and the block information of the operation matrix, extracts an operation matrix from the data storage module according to the address information of the operation matrix, and blocks, transposes, and transposes the operation matrix according to the block information. Combining operations to obtain a transposed matrix of the operational matrix, and feeding back the transposed matrix of the operational matrix to the data storage module.
- the operation module includes a matrix block unit, a matrix operation unit, and a matrix merge unit, wherein:
- a matrix block unit configured to acquire address information and block information of the operation matrix from the operation control module, and extract an operation matrix from the data storage module according to the address information of the operation matrix, according to the block information
- the operation matrix is divided into blocks to obtain n block matrices
- a matrix operation unit configured to acquire the n block matrices, and perform transposition operations on the n block matrices to obtain a transposed matrix of the n block matrices
- a matrix merging unit configured to acquire and merge a transposed matrix of the n block matrices, obtain a transposed matrix of the operation matrix, and feed back a transposed matrix of the operation matrix to the data storage module, where , n is a natural number.
- the operation module further includes a buffer unit for buffering the n block matrices for acquisition by the matrix operation unit.
- the arithmetic control module includes an instruction processing unit, an instruction cache unit, and a matrix determination unit, wherein:
- An instruction cache unit configured to store a matrix operation instruction to be executed
- An instruction processing unit configured to obtain a matrix operation instruction from the instruction cache unit, decode the matrix operation instruction, and obtain address information of the operation matrix from the address storage module according to the decoded matrix operation instruction ;
- the matrix determining unit is configured to analyze address information of the operation matrix to obtain the block information.
- the operation control module further includes a dependency processing unit, configured to determine whether the address information of the decoded matrix operation instruction and the operation matrix conflicts with the previous operation, and if there is a conflict, temporarily And storing the decoded matrix operation instruction and the address information of the operation matrix; if there is no conflict, transmitting the decoded matrix operation instruction and the address information of the operation matrix to the matrix determination unit.
- a dependency processing unit configured to determine whether the address information of the decoded matrix operation instruction and the operation matrix conflicts with the previous operation, and if there is a conflict, temporarily And storing the decoded matrix operation instruction and the address information of the operation matrix; if there is no conflict, transmitting the decoded matrix operation instruction and the address information of the operation matrix to the matrix determination unit.
- the operation control module further includes an instruction queue memory for buffering the address information of the conflicting decoded matrix operation instruction and the operation matrix, and when the conflict is eliminated, the cached location is The decoded matrix operation instruction and the address information of the operation matrix are transmitted to the matrix determination unit.
- the instruction processing unit includes an instruction fetch unit and a coding unit, wherein:
- An instruction fetching unit configured to acquire a matrix operation instruction from the instruction cache unit, and transmit the matrix operation instruction to the decoding unit;
- a decoding unit configured to decode the matrix operation instruction, extract address information of the operation matrix from the address storage module according to the decoded matrix operation instruction, and decode the decoded matrix operation instruction
- the address information of the extracted operation matrix is transmitted to the dependency processing unit.
- the apparatus further includes an input and output module, configured to input the operation matrix data to the data storage module, and further configured to acquire an operation transposed matrix from the data storage module, and output the The transposed matrix after the operation.
- the address storage module includes a scalar register file or a general-purpose memory unit; the data storage module includes a scratchpad memory or a general-purpose memory unit; address information of the operation matrix is a starting address information of a matrix and Matrix size information.
- an arithmetic method comprising the steps of:
- the operation control module determines the block information
- the operation module performs block, transpose, and merge operations on the operation matrix according to the block information to obtain a transposed matrix of the operation matrix.
- the step of the operation control module determining the block information includes:
- the operation control module extracts address information of the operation matrix from the address storage module
- the operation control module obtains the block information according to the address information of the operation matrix.
- the step of extracting the address information of the operation matrix from the address storage module by the operation control module includes:
- the fetching unit extracts the operation instruction and sends the operation instruction to the decoding unit;
- the decoding unit decodes the operation instruction, acquires the address information of the operation matrix from the address storage module according to the decoded operation instruction, and sends the decoded operation instruction and the address information of the operation matrix to the dependency processing unit;
- the dependency processing unit analyzes whether the decoded operation instruction and the previous instruction that has not been executed have a dependency on the data; if there is a dependency relationship, the decoded operation instruction and the address information of the corresponding operation matrix are required. Waiting in the instruction queue memory until it no longer has a dependency on the data with the previous unexecuted instruction
- the step of the operation module performing block, transpose, and merge operations on the operation matrix according to the block information to obtain the transposed matrix of the operation matrix includes:
- the operation module extracts an operation matrix from the data storage module according to the address information of the operation matrix; and divides the operation matrix into n block matrices according to the block information;
- the operation module performs a transposition operation on the n block matrices to obtain a transposed matrix of the n block matrices;
- the operation module merges the transposed matrix of the n block matrices, obtains a transposed matrix of the operation matrix, and feeds back to the data storage module;
- n is a natural number.
- the computing module combines the transposed matrices of the n block matrices to obtain a transposed matrix of the operational matrix, and the step of feeding back the transposed matrix to the data storage module includes:
- the matrix merging unit receives the transposed matrix of each block matrix. After the number of transposed matrices of the received block matrix reaches the total number of blocks, matrix merging operations are performed on all the blocks to obtain transposition of the operation matrix. a matrix; and feeding back the transposed matrix to a specified address of the data storage module;
- the input/output module directly accesses the data storage module, and reads the transposed matrix of the operation matrix obtained from the operation from the data storage module.
- a data screening apparatus comprising:
- a storage unit for storing data
- a register unit for storing a data address in the storage unit
- the data screening module acquires a data address in the register unit, acquires corresponding data in the storage unit according to the data address, and performs a filtering operation on the obtained data to obtain a data screening result.
- the data screening module includes a data screening unit that performs a screening operation on the acquired data.
- the data screening module further includes: an I/O unit, an input data buffer unit, and an output data buffer unit;
- the I/O unit carries the data stored by the storage unit to the input data buffer unit;
- the input data buffer unit stores data carried by the I/O unit
- the data screening unit takes the data transmitted from the input data buffer unit as input data, performs a filtering operation on the input data, and transmits the output data to the output data buffer unit;
- the output data buffer unit stores output data.
- the input data includes data to be screened and location information data, the output data comprising filtered data, or filtered data and related information.
- the data to be filtered is a vector or an array
- the location information data is a binary code, a vector or an array
- the related information includes a vector length, an array size, and a occupied space.
- the data screening unit scans each component of the location information data. If the component is 0, the data component to be filtered corresponding to the component is deleted. If the component is 1, the data to be filtered corresponding to the component is retained. If the component is 1, the data component to be filtered corresponding to the component is deleted. If the component is 0, the data component to be filtered corresponding to the component is retained, and the filtered data is obtained and output after the scanning.
- the data screening module further includes a structural deformation unit that modifies the storage structure of the input data and/or the output data.
- a data screening method is provided, and data filtering is performed by using the data screening device, including:
- Step A The data screening module acquires a data address in the register unit
- Step B obtaining corresponding data in the storage unit according to the data address
- Step C Perform a screening operation on the obtained data to obtain a data screening result.
- the step A includes: the data screening unit acquires an address of the data to be filtered and an address of the location information data from the register unit;
- the step B includes:
- Sub-step B1 the I/O unit transfers the data to be filtered and the location information data in the storage unit to the input data buffer unit;
- Sub-step B2 the input data buffer unit transfers the data to be filtered and the location information data to the data filtering unit;
- the step C includes: the data screening unit performs a filtering operation on the to-be-filtered data according to the location information data, and delivers the output data to the output data buffer unit.
- the sub-step B1 and the sub-step B2 further include:
- Sub-step B3 The input data buffer unit transmits the data to be filtered to the structural deformation unit, and the structural deformation unit performs deformation of the storage structure, and returns the deformed data to be filtered back to the input data buffer unit, and then performs sub-step B2.
- a neural network processor includes: a memory, a scratch pad memory, and a heterogeneous kernel
- the memory is configured to store data and instructions of a neural network operation
- the scratch pad memory is connected to the memory through a memory bus
- the heterogeneous core is connected to the high-speed temporary storage memory through a high-speed temporary storage memory bus, reads data and instructions of the neural network operation through the high-speed temporary storage memory, completes the neural network operation, and returns the operation result to the high-speed temporary
- the memory is stored, and the scratch pad memory is controlled to write the operation result back to the memory.
- the heterogeneous kernel comprises:
- a plurality of computing cores having at least two different types of computing cores for performing neural network operations or neural network layer operations;
- One or more logic control cores for determining, based on data of the neural network operation, performing neural network operations or neural network layer operations by the dedicated core and/or the generic kernel.
- the plurality of operational cores includes x general purpose cores and y dedicated cores; wherein the dedicated cores are dedicated to performing specified neural network/neural network layer operations for performing arbitrary nerves Network/neural network layer operations.
- the generic core is a cpu and the dedicated core is npu.
- the scratch pad memory comprises a shared scratch pad memory and/or a non-shared scratch pad memory; wherein the shared scratch pad memory is connected to the heterogeneous core through a scratch pad memory bus At least two cores are correspondingly connected; the non-shared scratch pad memory is correspondingly connected to a core of the heterogeneous kernel through a cache memory bus.
- the logic control core is connected to the scratchpad memory through a scratchpad memory bus, reads data of a neural network operation through a scratchpad memory, and uses a neural network in data calculated by the neural network.
- the type and parameters of the model determine that the dedicated kernel and/or the generic kernel act as the target kernel to perform neural network operations and/or neural network layer operations.
- the logic control core sends a signal directly to the target core via the control bus or to the target core via the scratchpad memory to control the target core to perform neural network operations and / or neural network layer operations.
- a neural network operation method wherein performing neural network operations using the neural network processor includes:
- a logic control core in a heterogeneous kernel reads data and instructions of a neural network operation from memory through a scratch pad memory;
- the logic control kernel in the heterogeneous kernel determines whether the neural network operation or the neural network layer operation is performed by the dedicated kernel and/or the general kernel according to the type and parameters of the neural network model in the data of the neural network operation.
- the logic control kernel in the heterogeneous kernel determines that the neural network layer operations performed by the dedicated kernel and/or the generic kernel are based on the type and parameters of the neural network model in the data of the neural network operation, including:
- the logic control kernel in the heterogeneous kernel determines whether there is a qualified dedicated kernel according to the type and parameters of the neural network model in the data of the neural network operation;
- the dedicated kernel m meets the condition, the dedicated kernel m is used as the target kernel, and the logic control kernel in the heterogeneous kernel sends a signal to the target kernel, and sends the data corresponding to the neural network operation and the address corresponding to the instruction to the target kernel;
- the target kernel acquires data and instructions of the neural network operation from the memory through the shared or non-shared scratch pad memory according to the address, performs a neural network operation, and outputs the operation result to the memory through the shared or non-shared scratch pad memory, and the operation is completed;
- the logical control kernel in the heterogeneous kernel sends a signal to the general core, and sends the data corresponding to the neural network operation and the address corresponding to the instruction to the general-purpose kernel;
- the general-purpose kernel acquires data and instructions of the neural network operation from the memory through the shared or non-shared scratch pad memory according to the address, performs neural network operations, and outputs the operation result to the memory through the shared or non-shared scratch pad memory, and the operation is completed.
- the qualifying dedicated kernel refers to a dedicated kernel that supports specified neural network operations and that can perform the specified neural network operations.
- the logic control kernel in the heterogeneous kernel determines that the neural network operations performed by the dedicated kernel and/or the generic kernel are based on the type and parameters of the neural network model in the data of the neural network operation, including:
- the logic control kernel in the heterogeneous kernel parses the types and parameters of the neural network model in the data, determines whether there is a qualified dedicated kernel for each neural network layer, and assigns a corresponding general kernel to each neural network layer. Or a dedicated kernel to obtain a kernel sequence corresponding to the neural network layer;
- the logic control kernel in the heterogeneous kernel sends the data corresponding to the neural network layer operation and the address corresponding to the instruction to the dedicated kernel or the general kernel corresponding to the neural network layer, and sends the kernel sequence to the dedicated kernel or the general core corresponding to the neural network layer.
- the dedicated kernel and the general kernel corresponding to the neural network layer read the data and instructions of the neural network layer operation from the address, perform the neural network layer operation, and transfer the operation result to the designated address of the shared and/or non-shared scratch pad memory;
- the logic control core controls the shared and/or non-shared scratch pad memory to write back the operation results of the neural network layer back to the memory, and the operation is completed.
- the qualifying dedicated kernel refers to a dedicated kernel that supports a specified neural network layer operation and that can complete the scale of the specified neural network layer operation.
- the neural network operation comprises a pulse neural network operation;
- the neural network layer operation comprises a convolution operation of a neural network layer, a fully connected layer, a splicing operation, a bit addition/multiplication operation, a Relu operation, a pool Operations and/or Batch Norm operations.
- a processing device comprising:
- a coarse-grained branch unit for coarse-graining pruning of weights of a neural network to obtain weights after pruning
- An operation unit configured to train the neural network according to the weight after pruning
- the coarse-grained pruning unit is specifically used for:
- M weights from the weights of the neural network through a sliding window, the M being an integer greater than 1; when the M weights satisfy a preset condition, all or part of the M weights are set Zero.
- the preset condition is: the information amount of the M weights is smaller than the first preset threshold.
- the information quantity of the M weights is an arithmetic mean value of the absolute values of the M weights, a geometric mean value of the absolute values of the M weights, or a maximum value of the M weights.
- the first preset threshold is a first threshold, a second threshold, or a third threshold, and the information amount of the M weights is less than the first preset threshold, including:
- the arithmetic mean value of the absolute values of the M weights is smaller than the first threshold, or the geometric mean value of the absolute values of the M weights is smaller than the second threshold, or the maximum value of the M weights is smaller than The third threshold.
- the coarse-grained pruning unit is configured to: repeatedly perform coarse-grained pruning on the weight of the neural network, and train the neural network according to the weight of the pruning, until the accuracy is not lost. There is no weight below to satisfy the preset condition.
- the setting precision is x%, where x is between 0 and 5.
- the neural network includes a fully connected layer, a convolution layer and/or a long-term and short-term memory LSTM layer, wherein the weight of the fully connected layer is a two-dimensional matrix (Nin, Nout), wherein Nin is an input nerve The number of elements, Nout is the number of output neurons, the fully connected layer has Nin*Nout weights; the weight of the convolution layer is a four-dimensional matrix (Nfin, Nfout, Kx, Ky), wherein Nfin is the number of input feature images, Nfout is the number of output feature images, (Kx, Ky) is the size of the convolution kernel, and the convolution layer has Nfin*Nfout*Kx*Ky weights; the LSTM The weight of the layer is composed of weights of m fully connected layers, the m is an integer greater than 0, and the i-th fully connected layer weight is (Nin_i, Nout_i), where i is greater than 0 and less than or equal to m Integer, Nin_
- the size of the sliding window is a sliding window of Bin*Bout, wherein the Bin is greater than 0 and less than or equal to the Nin integer, and the Bout is An integer greater than 0 and less than or equal to Nout;
- the sliding window is a four-dimensional sliding window of size Bfin*Bfout*Bx*By, where Bfin is an integer greater than 0 and less than or equal to Nfin.
- Bfout is an integer greater than 0 and less than or equal to Nfout
- Bx is an integer greater than 0 and less than or equal to Kx
- By is an integer greater than 0 and less than or equal to Ky;
- step size Sfin is an integer greater than 0 and less than or equal to Bfin
- Sfout is an integer greater than 0 and less than or equal to Bfout
- Sx is an integer greater than 0 and less than or equal to Bx
- Sy is greater than 0 and less than or An integer equal to By
- the size of the sliding window is Bin_i*Bout_i, where Bin_i is an integer greater than 0 and less than or equal to Nin_i, and Bout_i is greater than 0 and less than or equal to Nout_i Integer
- Sin_i is a positive integer greater than 0 and less than or equal to Bin_i
- Sout_i is greater than 0 and less than Or a positive integer equal to Bout_i
- the operation unit is specifically configured to perform retraining according to the weighted value after the pruning and by using a back propagation algorithm.
- processing group device further includes:
- Quantizing unit for quantifying weights of the neural network and/or for the neural network after coarse-grained pruning of weights of the neural network and re-training the neural network according to weights after pruning
- the weight of the network performs a first operation to reduce the number of weight bits of the neural network.
- An acceleration device comprising:
- the storage unit is configured to store the input neurons of the neural network, the output neurons, the neural network weights after the pruning, and the instructions; wherein the neural network is a trained neural network model for training the weights after pruning;
- a coarse-grained pruning unit configured to perform coarse-grained pruning on the weight of the neural network to obtain a pruned weight, and store the pruned weight in the storage unit;
- a coarse-grained selection unit configured to receive input neuron and target weight position information, select a neuron corresponding to the target weight, and the target weight is a weight whose absolute value is greater than a second preset threshold;
- the operation unit is configured to receive the input target weight and its corresponding neuron, and perform operations according to the target weight and its corresponding neuron, and retransmit the output neuron to the storage unit.
- the storage unit is further configured to store an intermediate result generated by the operation unit during the operation.
- the acceleration device further includes:
- An instruction control unit is configured to receive the instruction and decode the instruction to obtain control information to control the operation unit.
- the storage unit is configured to store the location weight and the location information of the target weight.
- the acceleration device further includes:
- a pre-processing unit configured to pre-process the original data, and input the pre-processed data into the storage part, where the raw data includes an input neuron, an output neuron, and a weight.
- the preprocessing includes segmentation of data, Gaussian filtering, binarization, regularization, and/or normalization.
- the acceleration device further includes:
- the instruction cache unit for buffering the instructions.
- the instruction cache unit is an on-chip cache.
- the acceleration device further includes:
- the target weight buffer unit is an on-chip cache.
- the acceleration device further includes:
- the target weight location buffer unit is configured to cache location information of the target weight.
- the target weight location cache unit is an on-chip cache.
- the acceleration device further includes:
- An input neuron cache unit is configured to cache input neurons, and the input neuron cache unit is an on-chip cache.
- the acceleration device further includes:
- An output neuron cache unit is configured to cache output neurons, and the output neuron cache unit is an on-chip cache.
- the target weight location buffer unit is configured to cache location information of the target weight; the target weight location buffer unit respectively maps each connection weight in the input data to the corresponding input neuron.
- the acceleration device further includes:
- a direct access unit DMA for the storage unit, the instruction cache unit, the coarse-grained pruning unit, the target weight buffer unit, the target weight location buffer unit, the input neuron cache unit, or the output neuron cache Data or instruction reading and writing.
- the operation unit includes at least one of: a multiplier for multiplying the first input data and the second input data to obtain multiplied data; and an addition tree for using the third input data Adding the data stepwise by the addition tree, or adding the third input data to the fourth input data to obtain the added data; activating the function operation unit, and obtaining the output data by the activation function operation on the fifth data,
- the activation function operates as a sigmoid, tanh, relu, or softmax function.
- the computing unit further includes a pooling unit, configured to obtain output data after the pooling operation by using the pooling operation on the input sixth data, where the pooling operation comprises: average pooling, maximum pooling Or median pooling.
- An acceleration device comprising:
- a storage unit configured to store an input neuron of the neural network, an output neuron, a pruned neural network weight, and an instruction; wherein the neural network is a trained neural network model for training the weight after pruning;
- a coarse-grained pruning unit configured to pruning a weight of a neural network to obtain a weight after pruning, and storing the weighted value after the pruning into the storage unit;
- An operation unit configured to train the neural network according to the weight after pruning to obtain the trained neural network
- a coarse-grained selection unit configured to receive input neuron and target weight position information, and select an input neuron corresponding to the target weight, and the target weight is a weight whose absolute value is greater than a second preset threshold; wherein, the target weight The value is the weight after the training.
- the operation unit is configured to receive the input target weight and its corresponding input neuron, and perform operations according to the target weight and its corresponding input neuron, and retransmit the output neuron to the storage unit.
- the storage unit may be further configured to store an intermediate result generated by the operation unit during the operation.
- the acceleration device further includes:
- an instruction control unit configured to receive the instruction, and decode the instruction to obtain control information for controlling the operation unit.
- the storage unit is configured to store the location weight and the location information of the target weight.
- the acceleration device further includes:
- the preprocessing unit is configured to preprocess the original data, and input the preprocessed data into the storage part, where the raw data includes input neurons, output neurons, and weights of the trained neural network.
- the preprocessing includes segmentation of data, Gaussian filtering, binarization, regularization, and/or normalization.
- the acceleration device further includes:
- the instruction cache unit for buffering the instructions.
- the instruction cache unit is an on-chip cache.
- the acceleration device further includes:
- the target weight buffer unit is an on-chip cache.
- the acceleration device further includes:
- the target weight location buffer unit is configured to cache location information of the target weight.
- the target weight location cache unit is an on-chip cache.
- the acceleration device further includes:
- An input neuron cache unit is configured to cache input neurons, and the input neuron cache unit is an on-chip cache.
- the acceleration device further includes:
- An output neuron cache unit is configured to cache output neurons, and the output neuron cache unit is an on-chip cache.
- the target weight location buffer unit is configured to cache location information of the target weight, and the target weight location buffer unit respectively maps each connection weight in the input data to the corresponding input neuron.
- the acceleration device further includes:
- a direct access unit DMA for the storage unit, the instruction cache unit, the coarse-grained pruning unit, the target weight buffer unit, the target weight location buffer unit, the input neuron cache unit, or the output neuron cache Data or instruction reading and writing.
- the operation unit includes at least one of: a multiplier for multiplying the first input data and the second input data to obtain multiplied data; and an addition tree for using the third input data Adding the data stepwise by the addition tree, or adding the third input data to the fourth input data to obtain the added data; activating the function operation unit, and obtaining the output data by the activation function operation on the fifth data,
- the activation function operates as a sigmoid, tanh, relu, or softmax function.
- the computing unit further includes a pooling unit, configured to obtain output data after the pooling operation by using the pooling operation on the input sixth data, where the pooling operation comprises: average pooling, maximum pooling Or median pooling.
- a processing method comprising:
- the coarse-grained pruning of the neural network to obtain the weight after pruning includes:
- the preset condition is:
- the information amount of the M weights is smaller than the first preset threshold.
- the information quantity of the M weights is an arithmetic mean value of the absolute values of the M weights, a geometric mean value of the absolute values of the M weights, or a maximum value of the M weights.
- the first preset threshold is a first threshold, a second threshold, or a third threshold, and the information amount of the M weights is less than the first preset threshold, including:
- the arithmetic mean value of the absolute values of the M weights is smaller than the first threshold, or the geometric mean value of the absolute values of the M weights is smaller than the second threshold, or the maximum value of the M weights is smaller than The third threshold.
- the method further includes:
- the weights of the neural network are repeatedly coarse-grained and pruned and trained according to the weights after pruning until it is ensured that the weights satisfy the preset condition without impairing the accuracy of the setting.
- the setting precision is x%, where x is between 0 and 5.
- the neural network includes a fully connected layer, a convolution layer and/or a long-term and short-term memory LSTM layer, wherein the weight of the fully connected layer is a two-dimensional matrix (Nin, Nout), wherein Nin is an input nerve The number of elements, Nout is the number of output neurons, the fully connected layer has Nin*Nout weights; the weight of the convolution layer is a four-dimensional matrix (Nfin, Nfout, Kx, Ky), wherein Nfin is the number of input feature images, Nfout is the number of output feature images, (Kx, Ky) is the size of the convolution kernel, and the convolution layer has Nfin*Nfout*Kx*Ky weights; the LSTM The weight of the layer is composed of weights of m fully connected layers, the m is an integer greater than 0, and the i-th fully connected layer weight is (Nin_i, Nout_i), where i is greater than 0 and less than or equal to m Integer, Nin_
- the size of the sliding window is a sliding window of Bin*Bout, wherein the Bin is greater than 0 and less than or equal to the Nin integer, Bout is an integer greater than 0 and less than or equal to Nout;
- the sliding window can be slid in the direction of Bin according to the step size Sin, or in the direction of Bout according to the step Sout, wherein Sin is a positive integer greater than 0 and less than or equal to Bin, and Sout is greater than 0 and a positive integer less than or equal to Bout;
- the sliding window is a four-dimensional sliding window of size Bfin*Bfout*Bx*By, where Bfin is greater than 0 and less than or equal to Nfin An integer, Bfout is an integer greater than 0 and less than or equal to Nfout, Bx is an integer greater than 0 and less than or equal to Kx, and By is an integer greater than 0 and less than or equal to Ky;
- step size Sfin is an integer greater than 0 and less than or equal to Bfin
- Sfout is an integer greater than 0 and less than or equal to Bfout
- Sx is an integer greater than 0 and less than or equal to Bx
- Sy is greater than 0 and less than or An integer equal to By
- the size of the sliding window is Bin_i*Bout_i, where Bin_i is an integer greater than 0 and less than or equal to Nin_i, and Bout_i is greater than 0 and less than or An integer equal to Nout_i; the coarse-grained pruning of the weight of the LSTM layer of the neural network specifically includes:
- Sin_i is a positive integer greater than 0 and less than or equal to Bin_i
- Sout_i is greater than 0 and less than Or a positive integer equal to Bout_i
- training the neural network according to the weight after the pruning is specifically:
- the neural network is retrained according to the weighted after the pruning and by a back propagation algorithm.
- the method further includes:
- a neural network computing device comprising one or more acceleration devices as described above for acquiring data and control information to be processed from other processing devices, and performing a specified neural network operation to pass the execution result
- the I/O interface is passed to other processing devices;
- the neural network computing device includes a plurality of the computing devices
- the plurality of the computing devices may be connected and transmitted through a specific structure
- a plurality of said computing devices are interconnected and transmitted by a fast external device interconnect bus PCIE bus to support operations of a larger scale neural network; a plurality of said computing devices share the same control system or have respective control systems The plurality of computing devices share memory or have respective memory; the interconnection manner of the plurality of computing devices is an arbitrary interconnection topology.
- a neural network chip comprising the above-described processing device, acceleration device and/or neural network computing device.
- a chip package structure comprising the neural network chip of the sixth aspect.
- a board comprising the neural network chip of the sixth aspect or the chip package structure of the seventh aspect.
- An electronic device comprising the board of the first aspect.
- the electronic device includes a data processing device, a robot, a computer, a printer, a scanner, a tablet, a smart terminal, a mobile phone, a driving recorder, a navigator, a sensor, a camera, a cloud server, a camera, a camera, a projector, Watches, earphones, mobile storage, wearable device vehicles, household appliances, and/or medical equipment.
- a data processing device a robot, a computer, a printer, a scanner, a tablet, a smart terminal, a mobile phone, a driving recorder, a navigator, a sensor, a camera, a cloud server, a camera, a camera, a projector, Watches, earphones, mobile storage, wearable device vehicles, household appliances, and/or medical equipment.
- the vehicle includes an airplane, a ship, and/or a vehicle
- the household appliance includes a television, an air conditioner, a microwave oven, a refrigerator, a rice cooker, a humidifier, a washing machine, an electric lamp, a gas stove, a range hood
- the medical device includes a nuclear magnetic machine Resonance, B-ultrasound and / or electrocardiograph.
- a processing device includes a storage unit, a coarse-grained selection unit, and an operation unit,
- a storage unit for storing input neurons, output neurons, weights, and instructions of the neural network
- a coarse-grained pruning unit configured to perform coarse-grained pruning on weights of the neural network to obtain weights after pruning, and store the pruned weights and target weight position information to the storage
- the target weight is a weight whose absolute value is greater than a second preset threshold, where the coarse-grained pruning unit is specifically used to:
- An operation unit configured to perform training according to the weighted value after the pruning; the weight that has been set to zero during the training process is maintained at zero;
- a coarse-grained selection unit configured to receive input neuron and target weight location information, and select an input neuron corresponding to the target weight according to the target weight location information
- the operation unit is further configured to perform the neural network operation to obtain the output neuron according to the input target weight and the input neuron corresponding to the target weight, and transmit the output neuron as the input neurons of the next layer to the storage unit.
- the preset conditions include:
- the information amount of the M weights is smaller than the first preset threshold.
- the information quantity of the M weights is an arithmetic mean value of the absolute values of the M weights, a geometric mean value of the absolute values of the M weights, or a maximum value of the M weights.
- the first preset threshold is a first threshold, a second threshold, or a third threshold, and the information amount of the M weights is less than the first preset threshold, including:
- the arithmetic mean value of the absolute values of the M weights is smaller than the first threshold, or the geometric mean value of the absolute values of the M weights is smaller than the second threshold, or the maximum value of the M weights is smaller than The third threshold.
- coarse-grained pruning unit and the operation unit are used to:
- the weights of the neural network are repeatedly coarse-grained and pruned and trained according to the weights after pruning until it is ensured that the weights satisfy the preset condition without impairing the accuracy of the setting.
- the neural network includes a fully connected layer, a convolution layer and/or a long-term and short-term memory LSTM layer, wherein the weight of the fully connected layer is a two-dimensional matrix (Nin, Nout), wherein Nin is an input nerve The number of elements, Nout is the number of output neurons, the fully connected layer has Nin*Nout weights; the weight of the convolution layer is a four-dimensional matrix (Nfin, Nfout, Kx, Ky), wherein Nfin is the number of input feature images, Nfout is the number of output feature images, (Kx, Ky) is the size of the convolution kernel, and the convolution layer has Nfin*Nfout*Kx*Ky weights; the LSTM The weight of the layer is composed of weights of m fully connected layers, the m is an integer greater than 0, and the i-th fully connected layer weight is (Nin_i, Nout_i), where i is greater than 0 and less than or equal to m Integer, Nin_
- the size of the sliding window is a sliding window of Bin*Bout, wherein the Bin is greater than 0 and less than or equal to the Nin integer, and the Bout is An integer greater than 0 and less than or equal to Nout;
- the sliding window is a four-dimensional sliding window of size Bfin*Bfout*Bx*By, where Bfin is an integer greater than 0 and less than or equal to Nfin.
- Bfout is an integer greater than 0 and less than or equal to Nfout
- Bx is an integer greater than 0 and less than or equal to Kx
- By is an integer greater than 0 and less than or equal to Ky;
- step size Sfin is an integer greater than 0 and less than or equal to Bfin
- Sfout is an integer greater than 0 and less than or equal to Bfout
- Sx is an integer greater than 0 and less than or equal to Bx
- Sy is greater than 0 and less than or An integer equal to By
- the size of the sliding window is Bin_i*Bout_i, where Bin_i is an integer greater than 0 and less than or equal to Nin_i, and Bout_i is greater than 0 and less than or equal to Nout_i Integer
- Sin_i is a positive integer greater than 0 and less than or equal to Bin_i
- Sout_i is greater than 0 and less than Or a positive integer equal to Bout_i
- processing device further includes: an instruction control unit, configured to receive the instruction, and generate a control instruction to control the operation unit after being decoded.
- the weight used by the storage unit for storing is a target weight and the target weight location data.
- the processing device further includes a pre-processing unit for pre-processing the input neurons and the weights, and inputting the pre-processed data to the storage unit.
- the preprocessing includes segmentation of data, Gaussian filtering, binarization, regularization, and/or normalization.
- processing device further includes an instruction cache unit for buffering the instruction.
- the processing device further includes a target weight buffer unit for buffering the target weight data.
- the processing device further includes a target weight location buffer unit for buffering the target weight location data.
- processing device further includes an input neuron buffer unit for buffering the input neurons.
- processing device further includes an output neuron buffer unit for buffering the output neurons.
- instruction cache unit, the target weight buffer unit, the target weight location buffer unit, the input neuron cache unit or the output neuron cache unit is an on-chip cache.
- the target weight location buffer unit is configured to cache the target weight location data; the target weight location cache maps each connection weight in the input data to the corresponding input neuron one by one.
- the processing device further includes a direct memory access DMA unit for the storage unit, the instruction cache unit, the target weight buffer unit, the target weight location buffer unit, the input neuron cache unit, or Data or instruction reading and writing is performed in the output neuron cache unit.
- a direct memory access DMA unit for the storage unit, the instruction cache unit, the target weight buffer unit, the target weight location buffer unit, the input neuron cache unit, or Data or instruction reading and writing is performed in the output neuron cache unit.
- the operation unit includes at least one of the following:
- a multiplier for multiplying the first input data and the second input data to obtain data after multiplication
- One or more adders for adding the third input data are One or more adders for adding the third input data
- An activation function operation unit is configured to obtain output data by an activation function operation on the fifth data, the activation function including a sigmoid, tanh, relu or softmax function.
- the operation unit includes a plurality of adders, and the plurality of adders form an addition tree for adding the third input data step by step through the addition tree.
- the computing unit further includes a pooling unit, configured to obtain output data after the pooling operation by using a pooling operation on the input data, where the pooling operation comprises: an average pooling, a maximum pooling or medium Value pooling.
- operation unit is further configured to repeatedly train the pruned neural network until no weight can be set to zero without losing the setting precision.
- a method of quantifying data including:
- Clustering algorithm is used to cluster each group of weights, and a set of weights is divided into m classes. Each class calculates a center weight, and the ownership value in each class is replaced by the center weight. , m is a positive integer;
- the center weight is encoded to obtain a codebook and a weight dictionary.
- the method further includes:
- the neural network is retrained. When retraining, only the codebook is trained, and the content of the weight dictionary remains unchanged.
- the retraining uses a back propagation algorithm.
- the packet includes a group, a layer type packet, an inter-layer packet, and/or an intra-layer packet.
- the clustering algorithm includes K-means, K-medoids, Clara, and/or Clarans.
- grouping is divided into groups, including:
- the neural network includes i convolution layers, j fully connected layers, m long and short-term memory LSTM layers, and a total of t different types of layers, wherein i, j, m are greater than or equal to 0.
- An integer, and satisfying i+j+m ⁇ 1, where t is an integer greater than or equal to 1 and satisfies t i+j+m
- the grouping is a layer type grouping, including:
- the weights of the neural network will be divided into groups of t.
- grouping is an inter-layer grouping, including:
- the weights of one or more convolutional layers in the neural network, the weights of one or more fully connected layers, and the weights of one or more LSTM layers are each grouped into a group.
- grouping is an intra-layer grouping, including:
- the convolutional layer of the neural network is taken as a four-dimensional matrix (Nfin, Nfout, Kx, Ky), where Nfin, Nfout, Kx, Ky are positive integers, Nfin represents the number of input feature images, and Nfout represents the number of output feature images, (Kx, Ky) indicates the size of the convolution kernel.
- the weight of the convolutional layer is divided into Nfin*Nfout*Kx*Ky/(Bfin*Bfout*Bx*By) according to the group size of (Bfin, Bfout, Bx, By).
- Bfin is a positive integer less than or equal to Nfin
- Bfout is a positive integer less than or equal to Nfout
- Bx is a positive integer less than or equal to Kx
- By is a positive integer less than or equal to Ky, or;
- the fully connected layer of the neural network is taken as a two-dimensional matrix (Nin, Nout), where Nin, Nout is a positive integer, Nin represents the number of input neurons, Nout represents the number of output neurons, and has a total of Nin*Nout weights.
- the full connection layer weight is divided into (Nin*Nout)/(Bin*Bout) different groups according to the group size of (Bin, Bout), where Bin is a positive integer less than or equal to Nin, and Bout is less than or equal to Nout Positive integer, or;
- the LSTM layer weight of the neural network is used as a combination of weights of multiple fully connected layers, and the weight of the LSTM layer is composed of n fully connected layer weights, where n is a positive integer, then each fully connected layer can The grouping operation is performed in a grouping manner of the full connection layer.
- the grouping is divided into a group, an intra-layer group, and an inter-layer group, including:
- the convolutional layer is grouped, the fully connected layers are intra-layered, and the LSTM layer is layered.
- the central weight selection method of the class is: making the cost function J(w, w 0 ) minimum.
- w is the weight in a class
- w0 is the center weight of the class
- n is the number of weights in the class
- n is a positive integer
- wi is the i-th weight in the class
- i is a positive integer
- an embodiment of the present invention provides a data quanting apparatus, including:
- a memory for storing operational instructions
- a processor for executing an operation instruction in the memory, and operating the operation instruction according to the all or part of the quantization method according to the eleventh aspect.
- the operation instruction is a binary number, including an operation code and an address code
- the operation code indicates an operation to be performed by the processor
- the address code instructs the processor to read data participating in the operation into an address in the memory.
- an embodiment of the present invention provides a processing apparatus, including:
- control unit configured to receive an instruction and perform decoding, and generate search control information and operation control information
- a lookup table unit configured to receive the lookup control information, a weight dictionary, and a codebook, and perform a table lookup operation on the weight dictionary and the password book according to the search control information to obtain a quantized weight
- the operation unit is configured to receive the operation control information and the input neuron, and perform an operation operation on the quantization weight and the input neuron according to the operation control information to obtain an output neuron and output the same.
- processing device further includes:
- a pre-processing unit configured to pre-process external input input information, to obtain the input neuron, a weight dictionary, a code book, and an instruction;
- a storage unit for storing an input neuron, a weight dictionary, a codebook and an instruction, and receiving an output neuron
- a cache unit configured to cache the instruction, the input neuron, the output neuron, the weight dictionary, and the password book;
- a direct memory access unit for reading or writing data or instructions between the storage unit and the cache unit.
- the pre-processing of the externally input input information includes: segmentation, Gaussian filtering, binarization, regularization, and/or normalization.
- the cache unit includes:
- An instruction cache unit configured to cache the instruction
- An output neuron cache unit is configured to buffer the output neurons.
- the cache unit further includes:
- a weight dictionary buffer unit configured to cache the weight dictionary
- a password book cache unit for buffering the code book.
- the instruction is a neural network dedicated instruction.
- neural network specific instructions include:
- a data transfer instruction for performing data transfer between different storage media the data format including a matrix, a vector, and a scalar
- the operation instruction is used to complete the arithmetic operation of the neural network, including the matrix operation instruction, the vector operation instruction, the scalar operation instruction, the convolutional neural network operation instruction, the fully connected neural network operation instruction, the pooled neural network operation instruction, the RBM neural network operation Command, LRN neural network operation instruction, LCN neural network operation instruction, LSTM neural network operation instruction, RNN neural network operation instruction, RELU neural network operation instruction, PRELU neural network operation instruction, SIGMOID neural network operation instruction, TANH neural network operation instruction, MAXOUT neural network operation instruction;
- Logic instructions for performing logical operations on neural networks including vector logic operations instructions and scalar logic operation instructions.
- the neural network dedicated instruction includes at least one Cambricon instruction including an operation code and an operand
- the Cambricon instruction includes:
- Cambricon control instruction for controlling an execution process
- the Cambricon control instruction includes a jump instruction and a conditional branch instruction
- a Cambricon data transfer instruction for performing data transfer between different storage media, including a load instruction, a store instruction, a move instruction; wherein the load instruction is used to load data from the main memory to the cache; the store instruction is used to load the data From cache storage to main memory; transport instructions are used to transfer data between cache and cache or cache and registers or registers and registers;
- Cambricon operation instructions for performing neural network arithmetic operations including Cambricon matrix operation instructions, Cambricon vector operation instructions, and Cambricon scalar operation instructions;
- the Cambricon matrix operation instruction is used to complete a matrix operation in a neural network, including a matrix multiplication vector, a vector multiplication matrix, a matrix multiplier, an outer product, a matrix addition matrix, and a matrix subtraction matrix;
- the Cambricon vector operation instruction is used for Complete vector operations in neural networks, including vector basic operations, vector transcendental function operations, inner product, vector random generation, and maximum/minimum values in vectors;
- Cambricon scalar operations are used to perform scalar operations in neural networks, including scalar basic operations And scalar transcendental function operations;
- Cambricon logic instructions for logical operations of neural networks Cambricon logic instructions including Cambricon vector logic operation instructions and Cambricon scalar logic operation instructions;
- the Cambricon vector logic operation instruction is used to complete vector comparison, vector logic operation, and vector greater than merging; the vector logic operation includes AND, OR, and; the Cambricon scalar logic operation instruction is used to perform scalar comparison and scalar logic operations.
- Cambricon data transmission instruction supports one or more of the following data organization modes: matrix, vector, and scalar;
- the vector basic operation includes vector addition, subtraction, multiplication, and division;
- Vector transcendental function refers to a function of a polynomial equation that does not satisfy a polynomial as a coefficient, including an exponential function, a logarithmic function, a trigonometric function, and an inverse trigonometric function;
- the scalar basic operation includes scalar addition, subtraction, multiplication, and division;
- the scalar transcendental function refers to a function that does not satisfy a polynomial equation with a polynomial as a coefficient, including an exponential function, a logarithmic function, a trigonometric function, and an inverse trigonometric function;
- the vector comparison includes, but is not limited to, greater than, less than, equal to, greater than or equal to ( ⁇ ), less than or equal to ( ⁇ ), and not equal to;
- the vector logic operations include AND, OR, and NOT;
- the scalar comparison includes but is not limited to greater than, less than, equal to, greater than or equal to ( ⁇ ), less than or equal to ( ⁇ ), and not equal to;
- the scalar logic operations include AND, OR, and NOT.
- the storage unit is further configured to store an unquantized weight, and the unquantized weight is directly output to the operation unit.
- the operation unit includes:
- a second computing portion comprising one or more adders for adding the weights and input neurons by one or more adders, and/or;
- a third operation portion performing a nonlinear function operation on the weight and the input neuron, the nonlinear function including an activation function including sigmoid, tanh, relu, and/or softmax, and/or;
- a fourth operation part configured to perform a pooling operation on the weight and the input neuron, where the pooling operation includes an average pooling, a maximum pooling, and/or a median pooling; wherein the weighting Includes unquantized weights and/or quantized weights.
- the second operation portion includes a plurality of adders, and the plurality of adders constitute an addition tree, and implements stepwise addition of weights and input neurons.
- a processing method comprising the steps of:
- the method further includes the steps of:
- the method further includes the steps of:
- the method further includes the steps of: caching the weight dictionary and the codebook.
- the pre-processing includes segmentation, Gaussian filtering, binarization, regularization, and normalization.
- the instruction is a neural network dedicated instruction.
- neural network specific instructions include:
- a data transfer instruction for performing data transfer between different storage media the data format including a matrix, a vector, and a scalar
- the operation instruction is used to complete the arithmetic operation of the neural network, and the operation instruction includes a matrix operation instruction, a vector operation instruction, a scalar operation instruction, a convolutional neural network operation instruction, a fully connected neural network operation instruction, a pooled neural network operation instruction, and an RBM.
- a logic instruction for performing a logical operation of a neural network including a vector logic operation instruction and a scalar logic operation instruction.
- the neural network dedicated instruction includes at least one Cambricon instruction including an operation code and an operand
- the Cambricon instruction includes:
- Cambricon control instruction for controlling an execution process
- the Cambricon control instruction includes a jump instruction and a conditional branch instruction
- Cambricon data transfer instruction for performing data transfer between different storage media
- the Cambricon data transfer instruction including a load instruction, a storage instruction, and a transfer instruction
- the load instruction is used to load data from the main memory to the cache;
- the store instruction is used to store data from the cache to the main memory;
- the transfer instruction is used to transfer data between the cache and the cache or the cache and the register or the register and the register ;
- Cambricon operation instruction for performing a neural network arithmetic operation, the Cambricon operation instruction including a Cambricon matrix operation instruction, a Cambricon vector operation instruction, and a Cambricon scalar operation instruction;
- the Cambricon matrix operation instruction is used to complete a matrix operation in a neural network, including a matrix multiplication vector, a vector multiplication matrix, a matrix multiplier, an outer product, a matrix addition matrix, and a matrix subtraction matrix;
- the Cambricon vector operation instruction is used for Complete vector operations in neural networks, including vector basic operations, vector transcendental function operations, inner product, vector random generation, and maximum/minimum values in vectors;
- Cambricon scalar operations are used to perform scalar operations in neural networks, including scalar basic operations And scalar transcendental function operations;
- Cambricon logic instructions are used for logical operations of a neural network, the Cambricon logic instructions including Cambricon vector logic operation instructions and Cambricon scalar logic operation instructions; wherein the Cambricon vector logic operation instructions are used to perform vector comparison, vector logic operations, and vectors greater than merge
- the vector logic operation includes AND, OR, and NOT; the Cambricon scalar logic operation instruction is used to perform scalar comparison and scalar logic operations.
- the Cambricon data transmission instruction supports one or more of the following data organization modes: a matrix, a vector, and a scalar;
- the vector basic operation includes vector addition, subtraction, multiplication, and division;
- the vector transcendental function refers to a polynomial The function of the polynomial equation of the coefficient, including the exponential function, the logarithmic function, the trigonometric function, the inverse trigonometric function;
- the scalar basic operation includes scalar addition, subtraction, multiplication, and division;
- the scalar transcendental function refers to a polynomial equation that does not satisfy the polynomial as a coefficient a function comprising an exponential function, a logarithmic function, a trigonometric function, an inverse trigonometric function;
- the vector comparison includes but is not limited to greater than, less than, equal to, greater than or equal to ( ⁇ ), less than or equal to ( ⁇ ), and not equal to;
- the vector logic operation includes AND,
- the method further includes the steps of: receiving the unquantized weight, calculating the unquantized weight and the input neuron according to the operation control information, and obtaining the output neuron and outputting.
- the computing operation includes:
- the nonlinear function including an activation function including sigmoid, tanh, relu, and/or softmax, and/or;
- the pooling operations including average pooling, maximum pooling, and/or median pooling,
- the weights include quantized weights and/or non-quantized weights.
- weights and input neurons is implemented by one or more adders.
- the plurality of adders constitute an addition tree, and the stepwise addition of the weight and the input neurons is implemented.
- a processing device comprising:
- control unit configured to receive an instruction and perform decoding, and generate search control information and operation control information
- a lookup table unit configured to receive the lookup control information, a weight dictionary, and a codebook, and perform a table lookup operation on the weight dictionary and the password book according to the lookup control information to obtain a quantized weight
- An operation unit configured to receive the operation control information, the input neuron, and the quantized weight, and perform an operation operation on the quantized weight and the input neuron according to the operation control information to obtain and output the output neuron .
- processing device further includes:
- a pre-processing unit configured to pre-process external input information to obtain the input neuron, weight dictionary, codebook, and instruction;
- a storage unit configured to store the input neuron, a weight dictionary, a codebook, and an instruction, and receive the output neuron;
- a cache unit for buffering the instructions, input neurons, output neurons, weight dictionary, and codebook
- a direct memory access unit for reading or writing data or instructions between the storage unit and the cache unit.
- the preprocessing unit performs preprocessing on the externally input input information, including: segmentation, Gaussian filtering, binarization, regularization, and/or normalization.
- the cache unit includes:
- An instruction cache unit configured to cache the instruction
- Input a neuron cache unit for caching the input neurons
- An output neuron cache unit is configured to buffer the output neurons.
- the cache unit further includes:
- a weight dictionary buffer unit for caching the weight dictionary
- a password book cache unit for buffering the code book.
- the instruction is a neural network dedicated instruction.
- neural network specific instructions include:
- a data transfer instruction for performing data transfer between different storage media the data format including a matrix, a vector, and a scalar
- Arithmetic instruction for performing arithmetic operations of neural networks including matrix operation instructions, vector operation instructions, scalar operation instructions, convolutional neural network operation instructions, fully connected neural network operation instructions, pooled neural network operation instructions, restricted Bohr ZM machine RBM neural network operation instruction, nearest neighbor normalized LRN neural network operation instruction, local contrast normalized LCN neural network operation instruction, long and short term memory LSTM neural network operation instruction, cyclic neural network RNN operation instruction, linear correction unit RELU Neural network operation instruction, linear correction unit with parameters PRELU neural network operation instruction, S-type growth curve SIGMOID neural network operation instruction, hyperbolic tangent function TANH neural network operation instruction, maximum output MAXOUT neural network operation instruction;
- Logic instructions for performing logical operations on neural networks including vector logic operations instructions and scalar logic operation instructions.
- the neural network dedicated instruction includes at least one Cambricon instruction including an operation code and an operand
- the Cambricon instruction includes:
- Cambricon control instruction for controlling an execution process
- the Cambricon control instruction includes a jump instruction and a conditional branch instruction
- a Cambricon data transfer instruction for performing data transfer between different storage media, including a load instruction, a store instruction, a move instruction; wherein the load instruction is used to load data from the main memory to the cache; the store instruction is used to load the data From cache storage to main memory; the move instruction is used to transfer data between the cache and the cache, or between the cache and the register, or between the register and the register;
- the Cambricon operation instruction is used to complete a neural network arithmetic operation, including a Cambricon matrix operation instruction, a Cambricon vector operation instruction, and a Cambricon scalar operation instruction; wherein the Cambricon matrix operation instruction is used to complete a matrix operation in a neural network, including a matrix multiplication vector, Vector multiplication matrix, matrix multiplication scalar, outer product, matrix addition matrix and matrix subtraction matrix; the Cambricon vector operation instruction is used to complete vector operations in neural networks, including vector basic operations, vector transcendental function operations, inner products, vector randomization Generates the maximum/minimum value in the sum vector; the Cambricon scalar operation instruction is used to perform scalar operations in the neural network, including scalar basic operations and scalar transcendental function operations;
- the Cambricon logic instruction is used for logic operations of a neural network, and the logic operation includes a Cambricon vector logic operation instruction and a Cambricon scalar logic operation instruction; wherein the Cambricon vector logic operation instruction includes vector comparison, vector logic operation, and vector greater than merging; vector logic operation Including AND, OR, and NOT; the Cambricon scalar logic operations include scalar comparison and scalar logic operations.
- the Cambricon data transmission instruction supports one or more of the following data organization modes: a matrix, a vector, and a scalar;
- the vector basic operation includes vector addition, subtraction, multiplication, and division;
- the vector transcendental function refers to a polynomial The function of the polynomial equation of the coefficient, including the exponential function, the logarithmic function, the trigonometric function, the inverse trigonometric function;
- the scalar basic operation includes scalar addition, subtraction, multiplication, and division;
- the scalar transcendental function refers to a polynomial equation that does not satisfy the polynomial as a coefficient a function, including an exponential function, a logarithmic function, a trigonometric function, an inverse trigonometric function;
- the vector comparison includes greater than, less than, equal to, greater than or equal to, less than or equal to, and not equal to;
- the vector logical operation includes AND, OR, and The scalar
- the storage unit is further configured to store an unquantized weight, and the unquantized weight is directly output to the operation unit.
- the operation unit includes:
- a second computing portion comprising one or more adders for adding the weights and input neurons by one or more adders;
- a third operation portion performing a nonlinear function operation on the weight and the input neuron, the nonlinear function including an activation function including sigmoid, tanh, relu, and/or softmax; and/or,
- a fourth operation part configured to perform a pooling operation on the weight and the input neuron, where the pooling operation includes an average pooling, a maximum pooling, and/or a median pooling;
- the weights include unquantized weights and/or quantized weights.
- the second operation portion includes a plurality of adders, and the plurality of adders constitute an addition tree, and implements stepwise addition of weights and input neurons.
- a processing method comprising the steps of:
- the method further includes the steps of:
- the method further includes the steps of:
- the method further includes the steps of:
- the pre-processing includes segmentation, Gaussian filtering, binarization, regularization, and normalization.
- the instruction is a neural network dedicated instruction.
- neural network specific instructions include:
- a data transfer instruction for performing data transfer between different storage media the data format including a matrix, a vector, and a scalar
- Arithmetic instruction for performing arithmetic operations of neural networks including matrix operation instructions, vector operation instructions, scalar operation instructions, convolutional neural network operation instructions, fully connected neural network operation instructions, pooled neural network operation instructions, restricted Bohr ZM machine RBM neural network operation instruction, nearest neighbor normalized LRN neural network operation instruction, LCN local contrast normalized neural network operation instruction, long and short term memory LSTM neural network operation instruction, cyclic neural network RNN operation instruction, linear correction unit RELU Neural network operation instruction, linear correction unit with parameters PRELU neural network operation instruction, S-type growth curve SIGMOID neural network operation instruction, hyperbolic tangent function TANH neural network operation instruction, maximum output MAXOUT neural network operation instruction;
- Logic instructions for performing logical operations on neural networks including vector logic operations instructions and scalar logic operation instructions.
- the neural network dedicated instruction includes at least one Cambricon instruction including an operation code and an operand
- the Cambricon instruction includes:
- the Cambricon control instruction is used to control an execution process, and the Cambricon control instruction includes a jump instruction and a conditional branch instruction;
- the Cambricon data transfer instruction is used to complete data transfer between different storage media, including load instructions, store instructions, and move instructions; wherein the load instructions are used to load data from the main memory to the cache; the store instructions are used to load data from The cache is stored to the main memory; the move instruction is used to transfer data between the cache and the cache or the cache and the register or the register and the register;
- the Cambricon operation instruction is used to complete a neural network arithmetic operation, including a Cambricon matrix operation instruction, a Cambricon vector operation instruction, and a Cambricon scalar operation instruction; wherein the Cambricon matrix operation instruction is used to complete a matrix operation in a neural network, including a matrix multiplication vector, Vector multiplication matrix, matrix multiplication scalar, outer product, matrix addition matrix and matrix subtraction matrix; the Cambricon vector operation instruction is used to complete vector operations in neural networks, including vector basic operations, vector transcendental function operations, inner products, vector randomization Generates the maximum/minimum value in the sum vector; the Cambricon scalar operation instruction is used to perform scalar operations in the neural network, including scalar basic operations and scalar transcendental function operations;
- the Cambricon logic instruction is used for logic operations of a neural network, and the logic operation includes a Cambricon vector logic operation instruction and a Cambricon scalar logic operation instruction; wherein the Cambricon vector logic operation instruction includes vector comparison, vector logic operation, and vector greater than merging; vector logic operation Including AND, OR, and NOT; the Cambricon scalar logic operations include scalar comparison and scalar logic operations.
- the Cambricon data transmission instruction supports one or more of the following data organization modes: a matrix, a vector, and a scalar;
- the vector basic operation includes vector addition, subtraction, multiplication, and division;
- the vector transcendental function refers to a polynomial The function of the polynomial equation of the coefficient, including the exponential function, the logarithmic function, the trigonometric function, the inverse trigonometric function;
- the scalar basic operation includes scalar addition, subtraction, multiplication, and division;
- the scalar transcendental function refers to a polynomial equation that does not satisfy the polynomial as a coefficient a function, including an exponential function, a logarithmic function, a trigonometric function, an inverse trigonometric function;
- the vector comparison includes greater than, less than, equal to, greater than or equal to, less than or equal to, and not equal to;
- the vector logical operation includes AND, OR, and The scalar
- the method further includes the steps of:
- the unquantized weight is received, and the unquantized weight and the input neuron are operated according to the operation control information to obtain and output the output neuron.
- the computing operation includes:
- the nonlinear function including an activation function including sigmoid, tanh, relu, and/or softmax;
- the pooling operations including average pooling, maximum pooling, and/or median pooling,
- the weights include quantized weights and/or non-quantized weights.
- weights and input neurons is implemented by one or more adders.
- the plurality of adders constitute an addition tree, and the stepwise addition of the weight and the input neurons is implemented.
- a method of quantifying data including steps:
- Clustering algorithm is used to cluster each group of weights, and a set of weights is divided into m classes to calculate the center weight of each class.
- the ownership value in each class uses the corresponding center weight of the class. Value substitution, where m is a positive integer;
- the center weight is encoded to obtain a codebook and a weight dictionary.
- the method further includes the steps of:
- the neural network is retrained. When retraining, only the codebook is trained, and the content of the weight dictionary remains unchanged.
- the retraining uses a back propagation algorithm.
- the packet includes a group, a layer type packet, an inter-layer packet, and/or an intra-layer packet.
- the clustering algorithm includes K-means, K-medoids, Clara, and/or Clarans.
- grouping is divided into a group, and specifically includes:
- the weights of the neural network will be divided into groups of t.
- grouping is an inter-layer grouping, including:
- the weights of one or more convolutional layers in the neural network, the weights of one or more fully connected layers, and the weights of one or more LSTM layers are each grouped into a group.
- grouping is an intra-layer grouping, including:
- the convolutional layer of the neural network is taken as a four-dimensional matrix (Nfin, Nfout, Kx, Ky), where Nfin, Nfout, Kx, Ky are positive integers, Nfin represents the number of input feature images, and Nfout represents the number of output feature images, (Kx, Ky) indicates the size of the convolution kernel.
- the weight of the convolutional layer is divided into Nfin*Nfout*Kx*Ky/(Bfin*Bfout*Bx*By) according to the group size of (Bfin, Bfout, Bx, By).
- Bfin is a positive integer less than or equal to Nfin
- Bfout is a positive integer less than or equal to Nfout
- Bx is a positive integer less than or equal to Kx
- By is a positive integer less than or equal to Ky, or;
- the fully connected layer of the neural network is taken as a two-dimensional matrix (Nin, Nout), where Nin, Nout is a positive integer, Nin represents the number of input neurons, Nout represents the number of output neurons, and has a total of Nin*Nout weights.
- the full connection layer weight is divided into (Nin*Nout)/(Bin*Bout) different groups according to the group size of (Bin, Bout), where Bin is a positive integer less than or equal to Nin, and Bout is less than or equal to Nout Positive integer, or;
- the LSTM layer weight of the neural network is used as a combination of weights of multiple fully connected layers, and the weight of the LSTM layer is composed of n fully connected layer weights, where n is a positive integer, then each fully connected layer can The grouping operation is performed in a grouping manner of the full connection layer.
- the grouping is divided into a group, an intra-layer group, and an inter-layer group, including:
- the convolutional layer is grouped, the fully connected layers are intra-layered, and the LSTM layer is layered.
- the central weight selection method of the class is: making the cost function J(w, w 0 ) minimum.
- w is the weight in a class
- w0 is the center weight of the class
- n is the number of weights in the class
- n is a positive integer
- wi is the i-th weight in the class
- i is a positive integer
- a data quantification device comprising:
- a memory for storing an operation instruction
- a processor configured to execute an operation instruction in the memory, and perform the operation according to the foregoing quantization method when the operation instruction is executed.
- the operation instruction is a binary number, including an operation code and an address code
- the operation code indicates an operation to be performed by the processor
- the address code instructs the processor to read data participating in the operation into an address in the memory.
- a processing device comprising:
- control unit configured to receive an instruction and decode the instruction to obtain search control information and operation control information
- a lookup table unit configured to receive the lookup control information, a weight dictionary, and a codebook, and perform a table lookup operation on the weight dictionary and the password book according to the lookup control information to obtain a quantized weight
- An operation unit configured to receive the operation control information, the quantized weight and the input neuron, and perform an operation operation on the quantized weight and the input neuron according to the operation control information to obtain and output the neural Meta output.
- processing device further includes:
- a pre-processing unit configured to pre-process external input input information, to obtain the input neuron, a weight dictionary, a code book, and an instruction;
- a storage unit configured to store the input neuron, a weight dictionary, a codebook, and an instruction, and receive an output neuron;
- a cache unit for buffering the instructions, input neurons, output neurons, weight dictionary, and codebook
- a direct memory access unit for reading or writing data or instructions between the storage unit and the cache unit.
- pre-processing operations performed by the pre-processing unit on the externally input input information include: segmentation, Gaussian filtering, binarization, regularization, and/or normalization.
- the cache unit includes:
- An instruction cache unit configured to cache the instruction
- Input a neuron cache unit for caching the input neuron
- An output neuron cache unit is configured to buffer the output neurons.
- the cache unit further includes: a weight dictionary cache for buffering the weight dictionary; and a password book cache for buffering the code book.
- the instruction is a neural network dedicated instruction.
- neural network specific instructions include:
- a data transfer instruction for performing data transfer between different storage media the data format including a matrix, a vector, and a scalar
- the operation instruction is used to complete the arithmetic operation of the neural network, including the matrix operation instruction, the vector operation instruction, the scalar operation instruction, the convolutional neural network operation instruction, the fully connected neural network operation instruction, the pooled neural network operation instruction, the RBM neural network operation Command, LRN neural network operation instruction, LCN neural network operation instruction, LSTM neural network operation instruction, RNN neural network operation instruction, RELU neural network operation instruction, PRELU neural network operation instruction, SIGMOID neural network operation instruction, TANH neural network operation instruction, MAXOUT neural network operation instruction;
- logic instructions for performing logical operations of the neural network including vector logic operation instructions and scalar logic operation instructions.
- the neural network dedicated instruction includes at least one Cambricon instruction including an operation code and an operand
- the Cambricon instruction includes: a Cambricon control instruction for controlling an execution process, and the Cambricon control instruction includes a jump instruction And a conditional branch instruction
- the Cambricon data transfer instruction is used to complete data transfer between different storage media, including a load instruction, a store instruction, a move instruction
- the load instruction is used to load data from the main memory to the cache; Used to store data from the cache to main memory;
- the move instruction is used to transfer data between the cache and the cache or the cache and the register or register and register
- the Cambricon operation instruction is used to complete the neural network arithmetic operation, including the Cambricon matrix operation instruction, Cambricon a vector operation instruction and a Cambricon scalar operation instruction
- the Cambricon matrix operation instruction is used to complete a matrix operation in a neural network, including a matrix multiplication vector, a vector multiplication matrix, a matrix multiplier, an outer product, a matrix
- Cambri The con vector operation instruction is used to complete vector operations in neural networks, including vector basic operations, vector transcendental function operations, inner products, vector random generation, and maximum/minimum values in vectors.
- Cambricon scalar operations are used to complete scalars in neural networks. Operations, including scalar basic operations and scalar transcendental functions;
- Cambricon logic instructions for logical operations of neural networks including: Cambricon vector logic operations instructions and Cambricon scalar logic operation instructions; wherein the Cambricon vector logic operation instructions are used Completion vector comparison, vector logic operation, and vector greater than merging; vector logic operations include AND, OR, and NOT; the Cambricon scalar logic operation instructions are used to perform scalar comparison and scalar logic operations.
- the Cambricon data transmission instruction supports one or more of the following data organization modes: a matrix, a vector, and a scalar;
- the vector basic operation includes vector addition, subtraction, multiplication, and division;
- the vector transcendental function refers to a polynomial The function of the polynomial equation of the coefficient, including the exponential function, the logarithmic function, the trigonometric function, the inverse trigonometric function;
- the scalar basic operation includes scalar addition, subtraction, multiplication, and division;
- the scalar transcendental function refers to a polynomial equation that does not satisfy the polynomial as a coefficient a function comprising an exponential function, a logarithmic function, a trigonometric function, an inverse trigonometric function;
- the vector comparison comprises greater than, less than, equal to, greater than or equal to ( ⁇ ), less than or equal to ( ⁇ ), and not equal to;
- the vector logic operation Including and, or, the
- the storage unit is further configured to store an unquantized weight, and the unquantized weight is directly output to the operation unit.
- the operation unit includes: a first operation portion for multiplying the weight and the input neuron; and/or a second operation portion including one or more adders for the right The value and the input neuron are added by one or more adders; and/or the third operational portion performs a non-linear function operation on the weight and the input neuron, the non-linear function including an activation function, the activation The function includes sigmoid, tanh, relu, and/or softmax; and/or a fourth operation portion for performing a pooling operation on the weight and the input neuron, the pooling operation including an average pool, a maximum pool And/or median pooling; wherein the weights are unquantized weights and/or quantized weights.
- the second operation portion includes a plurality of adders, and the plurality of adders constitute an addition tree, and implements stepwise addition of weights and input neurons.
- a processing method comprising the steps of:
- the method further includes the steps of:
- the method further includes the steps of:
- the method further includes the steps of: caching the weight dictionary and the codebook.
- the pre-processing includes segmentation, Gaussian filtering, binarization, regularization, and normalization.
- the instruction is a neural network dedicated instruction.
- the neural network dedicated instruction includes: a control instruction for controlling a neural network execution process; and a data transmission instruction for performing data transmission between different storage media, the data format includes a matrix, a vector, and a scalar; the operation instruction, Used to complete neural network arithmetic operations, including matrix operation instructions, vector operation instructions, scalar operation instructions, convolutional neural network operation instructions, fully connected neural network operation instructions, pooled neural network operation instructions, RBM neural network operation instructions, LRN Neural network operation instruction, LCN neural network operation instruction, LSTM neural network operation instruction, RNN neural network operation instruction, RELU neural network operation instruction, PRELU neural network operation instruction, SIGMOID neural network operation instruction, TANH neural network operation instruction, MAXOUT neural network An arithmetic instruction; and a logic instruction for performing a logical operation of the neural network, including a vector logical operation instruction and a scalar logic operation instruction.
- the operation instruction Used to complete neural network arithmetic operations, including matrix operation instructions, vector operation instructions,
- the neural network dedicated instruction includes at least one Cambricon instruction including an operation code and an operand
- the Cambricon instruction includes: a Cambricon control instruction for controlling an execution process, and the Cambricon control instruction includes a jump instruction And a conditional branch instruction
- the Cambricon data transfer instruction is used to complete data transfer between different storage media, including a load instruction, a store instruction, a move instruction
- the load instruction is used to load data from the main memory to the cache; Used to store data from the cache to main memory;
- the move instruction is used to transfer data between the cache and the cache or the cache and the register or register and register
- the Cambricon operation instruction is used to complete the neural network arithmetic operation, including the Cambricon matrix operation instruction, Cambricon a vector operation instruction and a Cambricon scalar operation instruction
- the Cambricon matrix operation instruction is used to complete a matrix operation in a neural network, including a matrix multiplication vector, a vector multiplication matrix, a matrix multiplier, an outer product, a matrix
- the Cambric The on vector operation instruction is used to complete the vector operation in the neural network, including vector basic operation, vector transcendental function operation, inner product, vector random generation and maximum/minimum value in vector;
- Cambricon scalar operation instruction is used to complete scalar in neural network Operations, including scalar basic operations and scalar transcendental functions;
- Cambricon logic instructions for logical operations of neural networks the logical operations instructions including Cambricon vector logic operations instructions and Cambricon scalar logic operation instructions; wherein the Cambricon vector logic operation instructions are The vector comparison, the vector logic operation, and the vector are greater than the merge; the vector logic operation includes AND, OR, and NOT; the Cambricon scalar logic operation instruction is used to perform scalar comparison and scalar logic operations.
- the Cambricon data transmission instruction supports one or more of the following data organization modes: a matrix, a vector, and a scalar;
- the vector basic operation includes vector addition, subtraction, multiplication, and division;
- the vector transcendental function refers to a polynomial The function of the polynomial equation of the coefficient, including the exponential function, the logarithmic function, the trigonometric function, the inverse trigonometric function;
- the scalar basic operation includes scalar addition, subtraction, multiplication, and division;
- the scalar transcendental function refers to a polynomial equation that does not satisfy the polynomial as a coefficient a function comprising an exponential function, a logarithmic function, a trigonometric function, an inverse trigonometric function;
- the vector comparison comprises greater than, less than, equal to, greater than or equal to ( ⁇ ), less than or equal to ( ⁇ ), and not equal to;
- the vector logic operation Including and, or, the
- the method further includes the steps of:
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- General Engineering & Computer Science (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biophysics (AREA)
- Data Mining & Analysis (AREA)
- Molecular Biology (AREA)
- Mathematical Physics (AREA)
- Multimedia (AREA)
- Business, Economics & Management (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Databases & Information Systems (AREA)
- Medical Informatics (AREA)
- Finance (AREA)
- Development Economics (AREA)
- Strategic Management (AREA)
- Accounting & Taxation (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Computational Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Human Computer Interaction (AREA)
- Acoustics & Sound (AREA)
- General Business, Economics & Management (AREA)
- Neurology (AREA)
- Economics (AREA)
- Marketing (AREA)
- Entrepreneurship & Innovation (AREA)
- Game Theory and Decision Science (AREA)
Abstract
本披露实施例披露了一种信息处理方法及终端设备,其中方法包括:获取第一信息,所述第一信息为终端设备待处理的信息;在计算装置中调用运算指令对所述第一信息进行计算,得到第二信息;输出所述第二信息。采用本披露实施例,能够利用终端设备的计算装置调用运算指令对第一信息进行处理,以输出用户想要的目标的第二信息,提高信息处理效率。
Description
本披露涉及信息处理技术领域,尤其涉及信息处理方法及终端设备。
随着信息技术的不断发展和人们日益增长的需求,人们对信息的及时性要求也越来越高了。目前,终端设备对信息的获取均是基于通用处理器获得的,例如在通用处理器运行设定应用程序以获知物体当前的位置,或者在通用处理器上运行设定应用程序获知用户当前场景(如室内或室外)等等。但是,这种基于通用处理器运行软件程序来获知信息的方式,受限于通用处理器的运行速率,特别是在通用处理器负荷较大的情况下,信息获取效率较低、时延较长。
发明内容
本披露实施例提供信息处理方法及终端设备,可利用终端设备中的计算装置智能地对第一信息进行处理,以输出用户想要的目标信息,从而提升了信息处理效率。
本披露提供一种计算装置,所述计算装置用于执行机器学习模型机器学习计算,所述计算装置包括:运算单元以及控制器单元;所述运算单元包括:一个主处理电路和多个从处理电路;
所述控制器单元,用于获取输入数据、以及计算指令;
所述控制器单元,还用于解析该计算指令得到多个运算指令,将该多个运算指令以及所述输入数据发送给所述主处理电路;
所述主处理电路,用于对所述输入数据执行前序处理以及与所述多个从处理电路之间传输数据以及运算指令;
所述多个从处理电路,用于依据从所述主处理电路传输的数据以及运算指令并行执行中间运算得到多个中间结果,并将多个中间结果传输给所述主处理电路;
所述主处理电路,用于对所述多个中间结果执行后续处理得到所述计算指令的计算结果。
本申请实施例提供了一种机器学习运算装置,该机器学习运算装置包括一个或者多个第一方面所述的计算装置。该机器学习运算装置用于从其他处理装置中获取待运算数据和控制信息,并执行指定的机器学习运算,将执行结果通过I/O接口传递给其他处理装置;
当所述机器学习运算装置包含多个所述计算装置时,所述多个所述计算装置间可以通过特定的结构进行链接并传输数据;
其中,多个所述计算装置通过PCIE总线进行互联并传输数据,以支持更大规模的机器学习的运算;多个所述计算装置共享同一控制系统或拥有各自的控制系统;多个所述计算装置共享内存或者拥有各自的内存;多个所述计算装置的互联方式是任意互联拓扑。
本申请实施例提供了一种组合处理装置,该组合处理装置包括机器学习处理装置、通用互联接口,和其他处理装置。该机器学习运算装置与上述其他处理装置进行交互,共同完成用户指定的操作。该组合处理装置还可以包括存储装置,该存储装置分别与所述机器学习运算装置和所述其他处理装置连接,用于保存所述机器学习运算装置和所述其他处理装置的数据。
本申请实施例提供了一种神经网络芯片,该神经网络芯片包括上述第一方面所述的计算装置、上述第二方面所述的机器学习运算装置或者上述组合处理装置。
本申请实施例提供了一种神经网络芯片封装结构,该神经网络芯片封装结构包括上述神经网络芯 片;
本申请实施例提供了一种板卡,该板卡包括上述神经网络芯片封装结构。
本申请实施例提供了一种电子装置,该电子装置包括上述第六方面所述的神经网络芯片或者上述板卡。
本申请实施例还提供一种执行机器学习模型的计算方法,所述计算方法应用于计算装置,计算装置用于执行机器学习计算;所述计算装置包括:运算单元以及控制器单元;所述运算单元包括:一个主处理电路和多个从处理电路;所述方法包括:
所述控制器单元获取数据、机器学习模型以及计算指令;所述控制器单元解析该计算指令得到多个运算指令,将该多个运算指令以及所述数据发送给所述主处理电路;所述主处理电路对所述数据执行前序处理以及与所述多个从处理电路之间传输数据以及运算指令;所述多个从处理电路依据从所述主处理电路传输的数据以及运算指令并行执行中间运算得到多个中间结果,并将多个中间结果传输给所述主处理电路;所述主处理电路对所述多个中间结果执行后续处理得到所述计算指令的计算结果。
在一些实施例中,所述电子设备包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
在一些实施例中,所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
本披露实施例提供了一种信息处理方法,应用于设置有计算装置的终端设备中,所述计算装置中存储有包括至少一项运算指令在内的指令集,所述方法包括:
获取第一信息,所述第一信息为终端设备待处理的信息;
在所述计算装置中调用运算指令对所述第一信息进行处理,从而获得第二信息;
输出所述第二信息。
在一些可能的实施例中,所述获取第一信息包括:对获取的原始信息进行预处理,从而获得所述第一信息,所述第一信息为具备预设格式的信息,所述预处理包括以下中的至少一项:数据去重处理、数据编码处理、数据转换处理、归一化处理。
在一些可能的实施例中,所述运算指令包括以下中的至少一项:矩阵乘向量指令、向量乘矩阵指令、矩阵乘标量指令、张量运算指令、矩阵加法指令、矩阵减法指令、矩阵检索指令、矩阵加载指令、矩阵存储指令及矩阵搬运指令。
在一些可能的实施例中,当所述第一信息为语音信息时,在所述计算装置中调用运算指令对所述第一信息进行处理,从而获得第二信息包括:
在计算装置中调用语音识别算法,对所述语音信息进行语音识别,从而获得第二信息;
其中,所述第二信息为文本信息,所述语音识别算法包括用于语音识别的至少一个运算指令。
在一些可能的实施例中,当所述第一信息为影像信息时,在所述计算装置中调用运算指令对所述第一信息进行处理,从而获得第二信息包括:
在计算装置中调用影像风格转换算法,对所述影像信息的风格进行转换处理,从而获得第二信息;
其中,所述第二信息与所述第一信息的风格不同,所述影像风格转换算法包括用于影像画风或风格转换的至少一个运算指令。
在一些可能的实施例中,当所述第一信息为影像信息,所述影像信息包括至少一个待识别的物体时,在所述计算装置中调用运算指令对所述第一信息进行处理,从而获得第二信息包括:
在计算装置中调用物体检测算法,对所述影像信息进行物体检测,从而获得第二信息;其中,所述第二信息至少包括物体位置,所述物体检测算法包括用于物体检测的至少一个运算指令。
在一些可能的实施例中,当所述第一信息为待翻译的语言信息时,在所述计算装置中调用运算指令对所述第一信息进行处理,从而获得第二信息包括:
在计算装置中调用语言翻译算法,对所述语言信息进行翻译处理,从而获得第二信息;
其中,所述第一信息和第二信息不同,所述语言翻译算法包括用于语言翻译的至少一个运算指令。
在一些可能的实施例中,当所述第一信息为一句对话内容时,在所述计算装置中调用运算指令对所述第一信息进行处理,获得第二信息包括:对该句对话内容的回应,该回应要求与第一信息的内容逻辑上相关联,两条信息可以组成逻辑通顺的对话。该实施例中,多条第一信息与第二信息的时间序列上的组合为一段有意义的聊天对话,即聊天机器人。
在一些可能的实施例中,当所述第一信息为某一用户的历史记录,包括商品浏览记录,个人基本信息(年龄、性别等),在所述计算装置中调用运算指令对所述第一信息进行处理,获得第二信息包括:推荐给该用户的商品/服务的信息,例如衣服、电影、服务等。
本披露提供一种互连电路的数据处理装置,为所述互联电路中用于将一个或多个事务数据源连接到一个或多个事务数据目的地的互连节点,所述数据处理装置包括:至少一个输入端和至少一个输出端,每个所述输入端包含多个输入端口、输出端口、至少两个复用器、和至少一个缓冲存储器;连接于所述复用器的缓冲存储分配电路,用于控制所述复用器为输入的事务数据根据所述缓冲存储器的当前状态分配临时存储位置;连接于所述缓冲存储器的路由选择电路,用于为缓冲队列的事务数据选择输出端;仲裁电路,用于裁决出具有优先传输权的所述缓冲队列,并使竞争同一输出端的多个事务数据传输按照预设的仲裁策略依次获得输出通路占用权;多路选择器电路,连接所述输出端口和所述输出端,用于中转所述互连电路中的数据传输。
本披露的互连电路的数据处理装置,其中,
所述缓冲存储器,包括多个存储位置,每个存储位置与每个所述输入端口相关联,使事务数据在到达所述输入端口且转发到相应的输出端口前,临时存放在相应的存储位置。
本披露的互连电路的数据处理装置,其中,
所述路由选择电路,根据所述存储位置中待发送事务数据的地址信息,判断与目的源相关联的输出端。
本披露的互连电路的数据处理装置,其中,
所述存储位置包含至少一个存储部分,由所述缓冲存储分配电路分配事务数据的所述存储位置。
本披露的互连电路的数据处理装置,其中,
所述多路选择器电路,将所述存储部分与输出端相连,为获得输出通路占用权的事务数据建立传输通路。
本披露的互连电路的数据处理装置,其中,
所述仲裁电路还包括优先权寄存器,所述优先权寄存器存储有获得所述优先传输权的缓冲队列标号;
所述仲裁电路检查所述优先权寄存器,判决所述缓冲队列是否获得所述输出通路占用权。
本披露的互连电路的数据处理装置,其中,
所述仲裁电路允许所述事务数据获得所述输出通路占用权后,查询所述输出端是否正在被占用,并在所述输出端空闲时让获得所述通路占用权的事务数据完成传输。
另外,本披露还提供一种互连电路的数据处理方法,使用上述的互连电路的数据处理装置进行数据处理,所述数据处理方法包括如下步骤:
步骤1,多路选择器电路接收事务数据;
步骤2,缓冲存储分配电路为所述事务数据分配临时存储位置;
步骤3,路由选择电路为所述事务数据选择输出端;
步骤4,仲裁电路根据所述事务数据的传送请求裁决出具有优先传输权的缓冲队列,并使竞争同一输出端口的多个事务数据传输按照预设的仲裁策略依次获得输出通路占用权;
步骤5,多路选择器电路为获得数据通路的占用权的事务数据分配传输通路,并将事务数据传入所述互联电路的下游节点。
本披露的互连电路的数据处理方法,其中,所述步骤4进一步包括如下步骤,
步骤41,仲裁电路按照轮询的方式在各周期分别使不同的缓冲队列获得所述优先传输权,或者,在一缓冲队列全部传输完成后再让另一缓冲队列获得所述优先传输权。
本披露的互连电路的数据处理方法,其中,所述步骤4还包括:
步骤42,仲裁电路判断获得所述优先传输权的事务数据所请求的输出端是否被占用,若是,则等待下一个周期的仲裁处理,若否,则仲裁电路根据所述事务数据的传输请求,检查是否存在多个事务数据请求争用同一输出端,若是,则仲裁电路使竞争同一传输通路的多个事务数据依次获得所述出通路占用权,若否,则执行所述步骤5。
本披露的效果如下:
(1)在每个输入端设置多个缓冲区,可根据不同的输入数据灵活地分配存储位置,每个缓冲区可灵活地配置为与不同输出端口相关联,由存储分配电路控制;
(2)不用为预测数据预留空间,而是动态分配缓冲存储,节省了存储和功耗开销;
(3)在用于连接数量众多的事务数据源、目的地的情况下,在输入端缓冲区的设置上不用为每个输出端口单独设置一个缓冲区,只需少量的缓冲区甚至两个即可,这样,尤其在少量数据通信的互连电路中,既能满足数据传输需求又节省了存储和功耗开销;
(3)对每个输入端的待发事务数据有统一的仲裁,通过仲裁电路来综合考虑各个输入端的数据传输请求,提高数据通路的利用率。
因此,本披露能够对到达互连电路中会聚节点中的多个事务数据根据其目的地选择相应的传输通路,同时对同一时刻竞争同一传输通路的数据传输请求进行仲裁,从而,提升互联电路的事务数据的处理速度,实现良好的数据流量控制,提升互连电路内数据吞吐率的数据处理装置。
第二方面,本披露实施例提供了一种终端设备,该终端设备包括用于执行上述第一方面的方法的功能单元。
第三方面,本披露实施例提供了另一种终端设备,该终端设备包括:存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上第一方面任一项的方法。
第四方面,本披露提供了一种计算机可读存储介质,所述计算机可读存储介质存储了计算设备所执行的程序代码。所述程序代码包括用于执行如上第一方面中任一项的方法的指令。
第五方面,本披露提供了一种包括指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面中任一项的方法。
一种矩阵运算装置,用于根据矩阵运算指令执行矩阵运算,包括:
存储单元,用于存储矩阵;
寄存器单元,用于存储矩阵地址,其中,所述矩阵地址为矩阵在所述存储单元中存储的地址;
矩阵运算单元,用于获取矩阵运算指令,根据矩阵运算指令在所述寄存器单元中获取矩阵地址,然后,根据该矩阵地址在存储单元中获取相应的矩阵,接着,根据获取的矩阵进行矩阵运算,得到矩阵运算结果。
可选的,还包括:
指令缓存单元,用于存储待执行的矩阵运算指令。
可选的,还包括:
指令处理单元,用于从所述指令缓存单元获取矩阵运算指令,并对该矩阵运算指令进行处理后,提供给所述矩阵运算单元。
可选的,所述指令处理单元包括:
取指模块,用于从所述指令缓存单元中获取矩阵运算指令;
译码模块,用于对获取的矩阵运算指令进行译码;
指令队列,用于对译码后的矩阵运算指令进行顺序存储。
可选的,还包括:
依赖关系处理单元,用于在所述矩阵运算单元获取矩阵运算指令前,判断该矩阵运算指令与前一矩阵运算指令是否访问相同的矩阵,若是,则等待前一矩阵运算指令执行完毕后,将该矩阵运算指令提供给所述矩阵运算单元;否则,直接将该矩阵运算指令提供给所述矩阵运算单元。
可选的,当该矩阵运算指令与前一矩阵运算指令访问相同的矩阵时,所述依赖关系处理单元将该矩阵运算指令存储在一存储队列中,待前一矩阵运算指令执行完毕后,将存储队列中的该矩阵运算指令提供给所述矩阵运算单元。
可选的,所述存储单元还用于存储所述矩阵运算结果。
可选的,还包括:
输入输出单元,用于将矩阵存储于所述存储单元,或者,从所述存储单元中获取矩阵运算结果。
可选的,所述存储单元为高速暂存存储器。
可选的,所述矩阵运算指令包括一操作码和至少一操作域,其中,所述操作码用于指示该矩阵运算指令的功能,操作域用于指示该矩阵运算指令的数据信息。
可选的,所述矩阵运算单元包含包括矩阵加法部件、矩阵乘法部件、矩阵标量乘法部件和非线性运算部件。
可选的,所述矩阵运算单元为多流水级结构,其中,所述矩阵乘法部件和矩阵标量乘法部件处于第一流水级,矩阵加法部件处于第二流水级,非线性运算部件处于第三流水级。
一种用于执行卷积神经网络正向运算的装置,包括指令存储单元、控制器单元、数据访问单元、互连模块、主运算模块、以及多个从运算模块,其中:
指令存储单元通过数据访问单元读入指令并存储读入的指令;
控制器单元从指令存储单元中读取指令,将指令译成控制其他模块行为的控制信号,所述其他模块包括数据访问单元、主运算模块和所述多个从运算模块;
数据访问单元执行外部地址空间与所述装置之间的数据或指令读写操作;
从运算模块用于实现卷积神经网络算法中的输入数据和卷积核的卷积运算;
互连模块用于所述主运算模块和所述从运算模块之间的数据传输,在神经网络全连接层正向运算开始之前,主运算模块通过互连模块将输入数据输送到每一个从运算模块,在从运算模块的计算过程结束后,互连模块逐级将各从运算模块的输出标量拼成中间向量,输送回主运算模块;
主运算模块将所有输入数据的中间向量拼接成中间结果,并对所述中间结果执行后续运算。
可选的,其中主运算模块将中间结果与偏置数据相加,然后执行激活操作。
可选的,多个从运算模块利用相同的输入数据和各自的卷积核,并行地计算出各自的输出标量。
可选的,主运算模块使用的激活函数active是非线性函数sigmoid,tanh,relu,softmax中的任一个或线性函数。
可选的,互连模块构成主运算模块和所述多个从运算模块之间的连续或离散化数据的数据通路,互连模块为以下任一种结构:树状结构、环状结构、网格状结构、分级互连、总线结构。
可选的,主运算模块包括第一存储单元、第一运算单元、第一数据依赖关系判定单元和第一存储单元,其中:
第一存储单元用于缓存主运算模块在计算过程中用到的输入数据和输出数据;
第一运算单元完成主运算模块的各种运算功能;
数据依赖关系判定单元是第一运算单元读写第一存储单元的端口,保证对第一存储单元的数据读写不存在一致性冲突,并且负责从第一存储单元读取输入的神经元向量,并通过互连模块发送给从运算模块;以及
来自互连模块的中间结果向量被发送到第一运算单元。
可选的,每个从运算模块包括第二运算单元、第二数据依赖关系判定单元、第二存储单元和第三存储单元,其中:
第二运算单元接收控制器单元发出的控制信号并进行算数逻辑运算;
第二数据依赖关系判定单元负责计算过程中对第二存储单元和第三存储单元的读写操作,保证对第二存储单元和第三存储单元的读写不存在一致性冲突;
第二存储单元缓存输入数据以及该从运算模块计算得到的输出标量;以及
第三存储单元缓存该从运算模块在计算过程中需要的卷积核。
可选的,第一和第二数据依赖关系判定单元通过以下方式保证读写不存在一致性冲突:判断尚未执行的控制信号与正在执行过程中的控制信号的数据之间是否存在依赖关系,如果不存在,允许该条控制信号立即发射,否则需要等到该条控制信号所依赖的所有控制信号全部执行完成后该条控制信号才允许被发射。
可选的,数据访问单元从外部地址空间读入以下中的至少一个:输入数据、偏置数据、或卷积核。
一种用于执行单层卷积神经网络正向运算的方法,包括:
在步骤S1,在指令存储单元的首地址处预先存入一条IO指令;
在步骤S2,运算开始,控制器单元从指令存储单元的首地址读取该条IO指令,根据译出的控制信号,数据访问单元从外部地址空间读取相应的所有卷积神经网络运算指令,并将其缓存在指令存储单元中;
在步骤S3,控制器单元接着从指令存储单元读入下一条IO指令,根据译出的控制信号,数据访问单元从外部地址空间读取主运算模块需要的所有数据至主运算模块的第一存储单元;
在步骤S4,控制器单元接着从指令存储单元读入下一条IO指令,根据译出的控制信号,数据访问单元从外部地址空间读取从运算模块需要的卷积核数据;
在步骤S5,控制器单元接着从指令存储单元读入下一条CONFIG指令,根据译出的控制信号,装置配置该层神经网络计算需要的各种常数;
在步骤S6,控制器单元接着从指令存储单元读入下一条COMPUTE指令,根据译出的控制信号,主运算模块首先通过互连模块将卷积窗口内的输入数据发给各从运算模块,保存至从运算模块的第二存储单元,之后,在依据指令移动卷积窗口;
在步骤S7,根据COMPUTE指令译出的控制信号,从运算模块的运算单元从第三存储单元读取卷积核,从第二存储单元读取输入数据,完成输入数据和卷积核的卷积运算,将得到的输出标量通过互连模块返回;
在步骤S8,在互连模块中,各从运算模块返回的输出标量被逐级拼成完整的中间向量;
在步骤S9,主运算模块得到互连模块返回的中间向量,卷积窗口遍历所有输入数据,主运算模块将所有返回向量拼接成中间结果,根据COMPUTE指令译出的控制信号,从第一存储单元读取偏置数据,与中间结果通过向量加单元相加得到偏置结果,然后激活单元对偏置结果做激活,并将最后的输出数据写回至第一存储单元中;
在步骤S10,控制器单元接着从指令存储单元读入下一条IO指令,根据译出的控制信号,数据访问单元将第一存储单元中的输出数据存至外部地址空间指定地址,运算结束。
一种用于执行多层卷积神经网络正向运算的方法,包括:
对每一层执行根据权利要求10所述的方法,当上一层卷积神经网络执行完毕后,本层的运算指令将主运算单元中存储的上一层的输出数据地址作为本层的输入数据地址,并且指令中的卷积核和偏置数据地址变更至本层对应的地址。
一种用于执行人工神经网络全连接层正向运算的装置,包括指令存储单元、控制器单元、数据访问单元、互连模块、主运算模块、以及多个从运算模块,其中:
指令存储单元通过数据访问单元读入指令并存储读入的指令;
控制器单元从指令存储单元中读取指令,将指令译成控制其他模块行为的控制信号,所述其他模块包括数据访问单元、主运算模块和所述多个从运算模块;
数据访问单元执行外部地址空间与所述装置之间的数据或指令读写操作;
互连模块用于连接主运算模块和从运算模块;
主运算模块用于实现人工神经网络全连接层算法中的函数激活运算;
从运算模块用于实现人工神经网络全连接层算法中的输入神经元和权值参数的乘法和加法运算;
互连模块用于所述主运算模块和所述从运算模块之间的数据传输,在神经网络全连接层正向运算开始之前,主运算模块通过互连模块将输入神经元向量输送到每一个从运算模块,在从运算模块的计算过程结束后,互连模块逐级将各从运算模块的输出神经元值拼成中间结果向量,输送回主运算模块,用于后续计算。
可选的,多个从运算模块利用相同的输入神经元向量和各自的权值向量,并行地计算出各自的输出神经元值,每个从运算模块的权值向量是权值矩阵中与该从运算模块相对应的行向量。
可选的,主运算模块使用的激活函数active是非线性函数sigmoid,tanh,relu,softmax中的任一个或线性函数。
可选的,主运算模块对中间结果向量加偏置,然后执行激活操作。
可选的,互连模块构成主运算模块和所述多个从运算模块之间的连续或离散化数据的数据通路,互连模块为以下任一种结构:树状结构、环状结构、网格状结构、分级互连、总线结构。
可选的,主运算模块包括第一存储单元、第一运算单元、第一数据依赖关系判定单元和第一存储单元,其中:
神经元缓存单元用于缓存主运算模块在计算过程中用到的输入数据和输出数据;
第一运算单元完成主运算模块的各种运算功能;
数据依赖关系判定单元是第一运算单元读写第一存储单元的端口,保证对第一存储单元的数据读写不存在一致性冲突,并且负责从第一存储单元读取输入的神经元向量,并通过互连模块发送给从运算模块;以及
来自互连模块的中间结果向量被发送到第一运算单元。
可选的,每个从运算模块包括第二运算单元、第二数据依赖关系判定单元、第二存储单元和第三存储单元,其中:
第二运算单元接收控制器单元发出的控制信号并进行算数逻辑运算;
第二数据依赖关系判定单元负责计算过程中对第二存储单元和第三存储单元的读写操作,保证对第二存储单元和第三存储单元的读写不存在一致性冲突;
第二存储单元缓存输入神经元向量的数据以及该从运算模块计算得到的输出神经元值;以及
第三存储单元缓存该从运算模块在计算过程中需要的权值向量。
可选的,第一和第二数据依赖关系判定单元通过以下方式保证读写不存在一致性冲突:判断尚未执行的控制信号与正在执行过程中的控制信号的数据之间是否存在依赖关系,如果不存在,允许该条控制信号立即发射,否则需要等到该条控制信号所依赖的所有控制信号全部执行完成后该条控制信号才允许 被发射。
一种使用执行人工神经网络全连接层正向运算的装置执行单层人工神经网络全连接层正向运算的方法,包括:
步骤S1.1,将初始指令存放到指令存储单元;
步骤S1.2,从指令存储单元中读取一条指令;
步骤S1.3,对读取的指令进行译码;
步骤S1.4,根据译码得到的控制信号,进行相应操作;
步骤S1.5,将操作结果写回到相应存储单元中。
一种执行人工神经网络全连接层正向运算的装置执行单层人工神经网络全连接层正向运算的方法,包括:
在步骤S2.1,在指令存储单元处预先存入一条IO指令;
在步骤S2.2,运算开始,控制器单元从指令存储单元读取该条IO指令,根据译出的控制信号,数据访问单元从外部地址空间读取相应的所有人工神经网络全连接层运算指令,并将其存储在指令存储单元中;
在步骤S2.3,控制器单元接着从指令存储单元读入下一条IO指令,根据译出的控制信号,数据访问单元从外部地址空间读取主运算模块需要的所有数据至主运算模块的第一存储单元;
在步骤S2.4,控制器单元接着从指令存储单元读入下一条IO指令,根据译出的控制信号,数据访问单元从外部地址空间读取从运算模块需要的权值矩阵数据;
在步骤S2.6,控制器单元接着从指令存储单元读入下一条COMPUTE指令,根据译出的控制信号,主运算模块首先通过互连模块将输入神经元向量发给各从运算模块,保存至从运算模块的第二存储单元;
在步骤S2.7,根据COMPUTE指令译出的控制信号,从运算模块的第二运算单元从第三存储单元读取权值向量,从第二存储单元读取输入神经元向量,完成权值向量和输入神经元向量的点积运算,将中间结果通过互连模块返回;
在步骤S2.8,在互连模块中,各从运算模块返回的中间结果被逐级拼成完整的中间结果向量;
在步骤S2.9,主运算模块得到互连模块的返回值,根据COMPUTE指令译出的控制信号,从第一存储单元读取偏置向量,与互连模块返回的向量通过向量加单元相加,然后激活单元对相加结果做激活,并将最后的输出神经元向量写回至第一存储单元中;
在步骤S2.10,控制器单元接着从指令存储单元读入下一条IO指令,根据译出的控制信号,数据访问单元将存储单元中的输出神经元向量存至外部地址空间指定地址,运算结束。
在步骤S2.4和步骤S2.6之间执行:
步骤S2.5,控制器单元接着从指令存储单元读入下一条CONFIG指令,根据译出的控制信号,配置该层神经网络计算需要的各种常数。
一种执行多层人工神经网络全连接层正向运算的方法,包括:
对于每一层人工神经网络全连接层,执行如权利要求10所述的方法,其中,当上一层人工神经网络全连接层执行完毕后,下一层的运算指令将主运算模块中存储的上一层的输出神经元地址作为本层的输入神经元地址,并将指令中的权值地址和/或偏置地址变更至本层对应的地址。
一种执行pooling运算的装置,该装置包括指令存储单元、控制器单元、数据访问单元和运算模块,其中,
所述指令存储单元通过数据访问单元读入指令并缓存读入的指令;
所述控制器单元从指令存储单元中读取指令,将指令译码成控制运算模块行为的控制信号,然后将控制信号分发至运算模块;
数据访问单元用于访问外部地址空间,完成数据的加载和存储;
所述运算模块用于完成maxpooling运算的求最大值运算,或用于完成avgpooling运算的累加和乘法运算。
所述运算模块包括运算单元、数据依赖关系判断单元和神经元存储单元,
所述神经元存储单元用于缓存运算模块在计算过程中用到的输入数据和输出数据;
所述运算单元用于完成运算模块的各种运算功能;
所述数据依赖关系判断单元是运算单元读写神经元存储单元的端口,同时用于保证对神经元存储单元中数据的读写不存在一致性冲突。
对于maxpooling,在正向运算时,运算模块依次完成比较每一个输入向量大小,取最大值的操作,得到输出向量。
对于maxpooling,在正向运算时,运算模块循环读取pooling核kernel的输入向量,做上述比较大小的运算操作,得到新的kernel的输出向量同时保存每一个输出向量对应的索引向量,直至本层pooling运算结束。
对于maxpooling,在反向训练时,运算模块根据正向运算时保存的索引向量,通过数据访问单元将输入梯度向量对应输出至相应的存储位置,得到输出梯度向量。
对于avgpooling,在正向运算时,运算模块4依次完成累加每一个输入向量;然后在运算模块4中完成乘以1/kernel_size运算,得到输出向量,kernel_size表示pooling核kernel的大小;循环读取新的kernel的输入向量,做上述累加、乘法运算操作,得到新的kernel的输出向量,直至本层pooling运算结束。
对于avgpooling,在反向训练时,运算模块将输入梯度向量乘以1/kernel_size,通过数据访问单元将输入梯度向量对应输出至相应的存储位置,得到输出梯度向量。
执行pooling运算的装置,所述数据依赖关系判断单元用于判断尚未执行的控制信号与正在执行过程中的控制信号的数据之间是否存在依赖关系,如果不存在,允许该组控制信号立即发射,否则需要等到该条控制信号所依赖的所有控制信号全部执行完成后该组控制信号才允许被发射。
一种执行单层人工神经网络pooling运算的方法,包括如下步骤:
读入指令并缓存读入的指令;
将指令译码成控制信号,然后将控制信号分发至执行pooling运算的运算模块;
运算模块进行maxpooling运算的求最大值运算,或者进行avgpooling运算的累加和乘法运算。
对于maxpooling,在正向运算时,运算模块依次完成比较每一个输入向量大小,取最大值的操作,得到输出向量。
对于maxpooling,在正向运算时,运算模块循环读取pooling核kernel的输入向量,做上述比较大小的运算操作,得到新的kernel的输出向量同时保存每一个输出向量对应的索引向量,直至本层pooling运算结束。
对于maxpooling,在反向训练时,运算模块根据正向运算时保存的索引向量,通过数据访问单元将输入梯度向量对应输出至相应的存储位置,得到输出梯度向量。
对于avgpooling,在正向运算时,使运算模块依次完成累加每一个输入向量;然后在运算模块中完成乘以1/kernel_size运算,得到输出向量,kernel_size表示pooling核kernel的大小;循环读取新的kernel的输入向量,做上述累加、乘法运算操作,得到新的kernel的输出向量,直至本层pooling运算结束。
对于avgpooling,在反向训练时,使运算模块将输入梯度向量乘以1/kernel_size,通过数据访问单元将输入梯度向量对应输出至相应的存储位置,得到输出梯度向量。
一种执行多层人工神经网络pooling运算的方法,其特征在于,
当所述多层人工神经网络中的上一层执行完毕后,下一层的运算指令将运算模块中计算出的输出神 经元向量或输出梯度向量作为下一层训练的输入神经元向量或输入梯度向量进行如权利要求9至14中任一项所述的方法进行计算。
一种用于执行batch normalization运算的装置,包括指令存储单元、控制器单元、数据访问单元和运算模块,其中,
所述指令存储单元通过数据访问单元读入指令并缓存读入的指令;
所述控制器单元从指令存储单元中读取指令,将指令译码成控制其他单元或模块行为的微指令,然后将各自的微指令分发至各个单元或模块;
所述数据访问单元用于访问外部地址空间,完成数据的加载和存储;
所述运算模块用于batch normalization运算的正向过程或反向过程。
所述运算模块包括运算单元、数据依赖关系判定单元、神经元缓存单元和中间值缓存单元,其中,
所述运算单元用于接收控制器单元发出的微指令并进行算数逻辑运算;
所述数据依赖关系判断单元用于对神经元缓存单元进行读写操作,保证指令之间所用的数据不存在读写一致性冲突;
所述神经元缓存单元用于缓存输入神经元数据和输出神经元数据;
所述中间值缓存单元用于缓存所述运算模块计算过程中需要的中间值数据。
所述运算单元在batch normailizaiton运算的正向过程进行以下计算过程:
y=f(x)=alpha*(x-E[x])/sqrt(var(x)+eps)+beta,其中,x为输入神经元数据,y为输出神经元数据,alpha、beta为学习参数,其在反向训练过程中不断更新,用于之后计算输出神经元数据y的公式中;极小常数eps,均值E[x]代表输入数据的神经元数据x以batch大小为一个总量所求出的均值,var[x]表示相应的输入神经元数据x以batch大小为一个总量所求出的方差。
所述运算单元在batch normailizaiton运算的反向过程进行以下计算过程:
假设一个像素点传入的梯度为dl/dY,反向传出的梯度是dl/dx,正向过程输出为Y,其余参数表示含义与正向过程相同,则经过batch normalization反向传播出的梯度dl/dx=(alpha/sqrt(var(x)+eps))*(dl/dY-mean(dl/dY)-mean(dl/dY*Y)*Y),其中mean是取均值操作,学习参数alpha的梯度为:dl/dalpha=(Σdl/dY)*Y,学习参数beta的梯度为:dl/dbeta=Σdl/dY,通过这两个梯度更新学习参数的数值。
一种用于执行batch normalization运算的方法,包括如下步骤:
采用一指令存储单元读入指令并缓存读入的指令;
将所述指令译码成控制一运算模块的微指令;
利用所述运算模块进行batch normalization运算的正向过程或反向过程。
所述运算模块利用一神经元缓存单元缓存输入神经元数据和输出神经元数据,且利用一中间值缓存单元缓存计算过程中需要的中间值数据。
所述运算单元在batch normailizaiton运算的正向过程进行以下计算过程:
所述运算单元在batch normailizaiton运算的正向过程进行以下计算过程:
y=f(x)=alpha*(x-E[x])/sqrt(var(x)+eps)+beta,其中,x为输入神经元数据,y为输出神经元数据,alpha、beta为学习参数,其在反向训练过程中不断更新,用于之后计算输出神经元数据y的公式中;极小常数eps,均值E[x]代表输入数据的神经元数据x以batch大小为一个总量所求出的均值,var[x]表示相应的输入神经元数据x以batch大小为一个总量所求出的方差。
假设一个像素点传入的梯度为dl/dY,反向传出的梯度是dl/dx,正向过程输出为Y,其余参数表示含义与正向过程相同,则经过batch normalization反向传播出的梯度dl/dx=(alpha/sqrt(var(x)+eps))*(dl/dY-mean(dl/dY)-mean(dl/dY*Y)*Y),其中mean是取均值操作,学习参数alpha的梯度为:dl/dalpha=(Σdl/dY)*Y,学习参数beta的梯度为:dl/dbeta=Σdl/dY,通 过这两个梯度更新学习参数的数值。
一种用于执行神经网络运算以及矩阵/向量运算的装置,包括存储单元、寄存器单元、控制单元、运算单元和高速暂存存储器,其中:
存储单元,用于存储神经元/矩阵/向量;
寄存器单元,用于存储神经元地址/矩阵地址/向量地址,其中所述神经元地址为神经元在所述存储单元中存储的地址,所述矩阵地址为矩阵在所述存储单元中存储的地址,所述向量地址为向量在所述存储单元中存储的地址;
控制单元,用于执行译码操作,根据读取指令控制各个单元模块;
运算单元,用于根据指令从所述寄存器单元中获取神经元地址/矩阵地址/向量地址,根据所述神经元地址/矩阵地址/向量地址在所述存储单元中获取相应的神经元/矩阵/向量,以及根据由此获取的神经元/矩阵/向量和/或指令中携带的数据进行运算,得到运算结果;
其特征在于,将参与所述运算单元计算的神经元/矩阵/向量数据暂存在高速暂存存储器上,当需要时所述运算单元从所述高速暂存存储器上读取。
所述高速暂存存储器能够支持不同大小的神经元/矩阵/向量数据。
所述寄存器单元为标量寄存器,提供运算过程中所需的标量寄存器。
所述运算单元包括向量乘法部件、累加部件和标量乘法部件;以及
所述运算单元负责装置的神经网络/矩阵/向量运算,包括卷积神经网络正向运算操作、卷积神经网络训练操作、神经网络Pooling运算操作、full connection神经网络正向运算操作、full connection神经网络训练操作、batch normalization运算操作、RBM神经网络运算操作、矩阵-向量乘运算操作、矩阵-矩阵加/减运算操作、向量外积运算操作、向量内积运算操作、向量四则运算操作、向量逻辑运算操作、向量超越函数运算操作、向量比较运算操作、求向量最大/最小值运算操作、向量循环移位运算操作、生成服从一定分布的随机向量运算操作。
所述装置还包括指令缓存单元,用于存储待执行的运算指令;所述指令缓存单元优选为重排序缓存;以及
所述装置还包括指令队列,用于顺序缓存译码后的指令,送往依赖关系处理单元。
所述装置还包括依赖关系处理单元和存储队列,所述依赖关系处理单元用于在运算单元获取指令前,判断所述运算指令与前一运算指令是否访问相同的神经元/矩阵/向量存储地址,若是,将所述运算指令存储在所述存储队列中;否则,直接将该运算指令提供给所述运算单元,待前一运算指令执行完毕后,将存储队列中的所述运算指令提供给所述运算单元;所述存储队列用于存储与之前指令在数据上有依赖关系的指令,并在依赖关系消除之后,提交所述指令。
所述装置的指令集采用Load/Store结构,所述运算单元不对内存中的数据进行操作;以及
所述装置的指令集优选采用超长指令字架构,同时优选采用定长指令。
所述运算单元执行的运算指令包括至少一操作码和至少3个操作数;其中,所述操作码用于指示该运算指令的功能,运算单元通过识别一个或多个操作码进行不同的运算;所述操作数用于指示所述运算指令的数据信息,其中,所述数据信息为立即数或寄存器号。
作为优选,当所述运算指令为神经网络运算指令时,所述神经网络运算指令包括至少一操作码和16个操作数;
作为优选,当所述运算指令为矩阵-矩阵运算指令时,所述矩阵-矩阵运算指令包括至少一操作码和至少4个操作数;
作为优选,当所述运算指令为向量运算指令时,所述向量运算指令包括至少一操作码和至少3个操作数;
作为优选,当所述运算指令为矩阵-向量运算指令时,所述矩阵-向量运算指令包括至少一操作码和 至少6个操作数。
一种用于执行神经网络运算以及矩阵/向量运算的装置,包括:
取指模块,用于从指令序列中取出下一条将要执行的指令,并将该指令传给译码模块;
译码模块,用于对所述指令进行译码,并将译码后的指令传给指令队列;
指令队列,用于顺序缓存所述译码模块译码后的指令,并送往依赖关系处理单元;
标量寄存器,用于提供标量寄存器供运算使用;
依赖关系处理单元,用于判断当前指令与前一条指令是否存在数据依赖关系,如果存在则将所述当前指令存储于存储队列;
存储队列,用于缓存与前一条指令存在数据依赖关系的当前指令,当所述当前指令与前一条指令存在的依赖关系消除之后发射所述当前指令;
重排序缓存,用于在指令执行时将其缓存,并在执行完之后判断所述指令是否是所述重排序缓存中未被提交指令中最早的一条指令,如果是则将所述指令提交;
运算单元,用于执行所有神经网络运算和矩阵/向量运算操作;
高速暂存存储器,用于暂存参与所述运算单元计算的神经元/矩阵/向量数据,当需要时所述运算单元从所述高速暂存存储器上读取;所述高速暂存存储器优选能够支持不同大小的数据;
IO内存存取模块,用于直接访问所述高速暂存存储器,负责从所述高速暂存存储器中读取或写入数据。
一种执行神经网络运算以及矩阵/向量指令的方法,包括以下步骤:
步骤S1,取指模块取出一条神经网络运算以及矩阵/向量指令,并将所述指令送往译码模块;
步骤S2,译码模块对所述指令译码,并将所述指令送往指令队列;
步骤S3,在译码模块中,所述指令被送往指令接受模块;
步骤S4,指令接受模块将所述指令发送到微指令译码模块,进行微指令译码;
步骤S5,微指令译码模块从标量寄存器里获取所述指令的神经网络运算操作码和神经网络运算操作数,同时将所述指令译码成控制各个功能部件的微指令,送往微指令发射队列;
步骤S6,在取得需要的数据后,所述指令被送往依赖关系处理单元;依赖关系处理单元分析所述指令与之前尚未执行完的指令在数据上是否存在依赖关系,如果存在,则所述指令需要在存储队列中等待至其与之前未执行完的指令在数据上不再存在依赖关系为止;
步骤S7,将所述指令对应的微指令送往运算单元;
步骤S8,运算单元根据所需数据的地址和大小从高速暂存存储器中取出需要的数据,然后在运算单元中完成所述指令对应的神经网络运算和/或矩阵/向量运算。
一种基于分形树网络结构的数据发布装置,包括:
一中心节点,其为所述片上网络的通信数据中心,用于向多个叶子节点进行通信数据的广播或多播;
多个叶子节点,其为所述片上网络的通信数据节点,用于向所述中心叶子节点进行通信数据的传递;
转发器模块,用于连接所述中心节点与所述多个叶子节点,通信数据通过所述转发模块进行转发;
将所述多个叶子节点分为N组,每组中叶子节点的个数相同,所述中心节点通过所述转发器模块单独与每一组叶子节点进行通信连接,每组叶子节点构成的通信结构具有自相似性,所述多个叶子节点与所述中心节点通过多层所述转发器模块以完全多叉树方式进行通信连接。
包括每个节点包括本地高速缓存结构,用于存储所述中心节点发布数据的子集;
每个叶子节点均有id标识,且所述id标识从完全多叉树的拓扑一侧按序依次增加序号;
所述数据发布装置共享一个时钟信号。
所述转发器模块包括本地高速缓存结构,用于存储数据。
一种利用所述数据发布装置的数据发布方法,通过所述中心节点将通信数据向所述多个叶子节点进 行发布,其中,数据发送方准备好发送数据后,发送数据有效信号,并将数据置于总线;数据接收方准备好接收数据后,发送数据准备接收信号;当所述数据有效信号与所述数据准备接收信号双方检测到后,数据发送方认为数据已经发出,且被数据接收方接收。
当从所述中心节点将通信数据向所述多个叶子节点之间进行广播时,首先数据通过握手协议从所述中心节点进入与所述中心节点直接相连的所述转发器模块的局部缓存中暂时存储,每次握手协议成功后,进入下一层中间转发模块局部缓存中暂时存储,最后输入与所述叶子节点直接相连的转发器模块,并由转发器模块分别发布给与其相连的一组叶子节点。
如果下一时钟节拍数据发送方与数据接收方握手协议成功,则数据以流水方式进入数据接收方的局部缓存中存储;如果握手协议不成功,则数据在当前层的局部缓存中保存,且使得当前层作为上一层的数据接收方,并停止发送数据准备接收信号,使得当前层的局部缓存中的数据停止更新,数据一直保存在当前层,直到握手协议成功。
当所述中心节点将通信数据向所述多个叶子节点之间进行多播时,首先数据通过握手协议从所述中心节点进入与所述中心节点直接相连的所述转发器模块的局部缓存中暂时存储,每次握手协议成功后,进入下一层中间转发器模块局部缓存中暂时存储,最后输入与所述叶子节点直接相连的转发器模块,并由转发器模块分别发布给与其相连的一组叶子节点。
在接收的数据时,所述叶子节点根据与其相对应的id标识选取预设带宽的数据。
一种用于稀疏连接的人工神经网络计算装置,包括:
映射单元,用于将输入数据转换成输入神经元和权值一一对应的存储方式,并存储在存储装置和/或缓存中;
存储装置,用于存储数据和指令;
运算单元,用于根据所述存储装置中存储的指令对所述数据执行相应的运算;所述运算单元主要执行三步运算,第一步是将所述输入神经元和权值数据相乘;第二步执行加法树运算,用于将第一步处理后的加权输出神经元通过加法树逐级相加,或者将输出神经元通过和偏置相加得到加偏置输出神经元;第三步执行激活函数运算,得到最终输出神经元。
所述映射单元中的一一对应关系如下表示:
第一种情形:
采用1表示有连接,0表示无连接,每个输出与所有输入的连接状态组成一个0和1的字符串来表示该输出的连接关系;或者
采用1表示有连接,0表示无连接,每个输入与所有输出的连接状态组成一个0和1的字符串来表示该输入的连接关系;
第二种情形:
将一输出第一个连接所在的位置距离第一个输入神经元的距离、所述输出第二个输入神经元距离上一个输入神经元的距离,所述输出第三个输入神经元距离上一个输入神经元的距离,……,依次类推,直到穷举所述输出的所有输入,来表示所述输出的连接关系。
所述人工神经网络计算装置还包括DMA,用于在所述存储装置和缓存中进行数据或者指令读写。
所述人工神经网络计算装置还包括:
指令缓存,用于存储专用指令;以及
控制单元,用于从所述指令缓存中读取专用指令,并将其译码成各运算单元指令。
所述人工神经网络计算装置还包括:
输入神经元缓存,用于缓存输入到所述运算单元的输入神经元数据;以及
权值缓存,用于缓存权值数据。
所述人工神经网络计算装置还包括:
输出神经元缓存,用于缓存所述运算单元输出的输出神经元。
所述映射单元用于将输入数据转换成输入神经元和权值一一对应的存储方式,并输出到所述运算单元,而不是存储在存储装置中。
所述人工神经网络计算装置还包括输入神经元缓存和/或权值缓存,所述输入神经元缓存用于缓存输入到所述运算单元的输入神经元数据,所述权值缓存用于缓存权值数据,所述映射单元用于将输入数据转换成输入神经元和权值一一对应的存储方式,并输出到所述输入神经元缓存和/或权值缓存。
所述运算单元在第三步执行的激活函数为sigmoid函数、tanh函数或ReLU函数。
一种用于稀疏连接的人工神经网络的计算方法,包括以下步骤:
步骤1,将输入数据转换成输入神经元和权值一一对应的存储方式;其中,所述对应关系表示为:
第一种情形:
采用1表示有连接,0表示无连接,每个输出与所有输入的连接状态组成一个0和1的字符串来表示该输出的连接关系;或者
采用1表示有连接,0表示无连接,每个输入与所有输出的连接状态组成一个0和1的字符串来表示该输入的连接关系;
第二种情形:
将一输出第一个连接所在的位置距离第一个输入神经元的距离、所述输出第二个输入神经元距离上一个输入神经元的距离,所述输出第三个输入神经元距离上一个输入神经元的距离,……,依次类推,直到穷举所述输出的所有输入,来表示所述输出的连接关系
步骤2,将输入的神经元和权值数据相乘;
步骤3,执行加法树运算,将第一步处理后的加权输出神经元通过加法树逐级相加,或者将输出神经元通过和偏置相加得到加偏置输出神经元;
步骤4,执行激活函数运算,得到最终输出神经元;其中,所述激活函数为sigmoid函数、tanh函数或ReLU函数。
一种神经网络的处理系统,包括:
至少一片上存储介质、用于存储由神经网络处理系统外部传来的数据或用于存储处理过程中产生的数据;
至少一片内地址索引模块、用于执行运算时根据输入的索引映射至正确的存储地址;
由多个核心处理模块组成的多核心处理模块,用于执行神经网络运算中的向量乘加操作;
至少一ALU模块,用于从所述多核心处理模块或所述片上存储介质获取输入数据执行所述多核心处理模块无法完成的非线性运算,
其中,所述多个核心处理模块共享所述片上存储介质以及ALU模块,或者所述多个核心处理模块具有独立的所述片上存储介质以及ALU模块。
所述处理过程中产生的数据包括处理结果或中间结算结果。
所述神经网络的处理系统进行处理时,将同一输入神经元分别发送至所述多个核心处理模块,将不同的输入权值分配至不同的核心处理模块,所述多个核心处理模块分别将所述输入神经元和输入权值进行向量内积操作后得到不同的输出神经元。
所述神经网络的处理系统在执行二维或者多维运算时,将输入特征图分别发送至所述多个核心处理模块,所述多个核心处理模块分别处理一层输出特征图。
所述神经网络的处理系统在执行二维或者多维运算时,将输入特征图分别发送至所述多个核心处理模块,所述多个核心处理模块分别处理同一输出特征图的不同区域。
所述多个核心处理模块均分别完成当前输出特征图的处理后,所述多核心处理模块再执行新的输出特征图处理。
所述神经网络的处理系统在执行一维运算时,将同一输入分别发送至所述多个核心处理模块,所述多个核心处理模块分别处理不同的输出神经元,所述多个核心处理模块均分别完成当前输出神经元的处理后,所述多核心处理模块再执行新的输入的处理。
所述多核心处理模块的多个核心处理模块之间为同构设计或异构设计。
一种神经网络的处理方法,所述方法包括:
片内地址索引模块根据输入的索引映射至正确的存储地址;
根据所述存储地址从片上存储介质中获取输入数据;
将所述输入数据发送至多核心处理模块或所述ALU模块;
所述多核心处理模块执行神经网络运算中的向量乘加操作,所述ALU模块根据所述多核心处理模块的处理结果或者从所述片上存储介质中获取的输入数据执行所述多核心处理模块无法完成的非线性运算;
将处理过程中产生的数据缓存至所述片上存储介质。
所述方法还包括:
将同一输入神经元分别发送至所述多个核心处理模块,将不同的输入权值分配至不同的核心处理模块,所述多个核心处理模块分别将所述输入神经元和输入权值进行向量内积操作后得到不同的输出神经元。
一种支持离散数据表示的用于执行人工神经网络正向运算的装置,包括指令缓存单元、控制器单元、数据访问单元、互联模块、主运算模块、多个从运算模块,其中:
指令缓存单元用于通过数据访问单元读入指令并缓存读入的指令;
控制器单元用于从指令缓存单元读取指令,并将该指令译码成控制互联模块、主运算模块、以及从运算模块行为的微指令;
数据访问单元用于从外部地址空间向主运算模块和各从运算模块的相应数据缓存单元中写入离散数据或连续数据或从所述数据缓存单元向外部地址空间读离散数据或连续数据;
每层神经网络开始正向计算的阶段,主运算模块通过互联模块向所有的从运算模块传输本层的离散或连续的输入神经元向量,在从运算模块的计算过程完成后,互联模块逐级将各从运算模块的离散或连续化的输出神经元值拼成中间结果向量,其中,当输入数据是离散数据与连续数据的混合数据时,从运算模块针对不同离散数据采取预先设置的相应计算方式;
主运算模块用于利用中间结果向量完成后续计算,当输入数据是离散数据与连续数据的混合数据时,主运算模块针对不同离散数据采取预先设置的相应计算方式。
离散数据表示指用特定的离散数字代替真实的连续数据的表示方式。
多个从运算模块利用相同的离散或连续的输入神经元向量和各自不同的离散或连续的权值向量,并行地计算出各自的离散或连续输出神经元值。
主运算模块对中间结果向量执行以下任一项操作:
加偏置操作,在中间结果向量上加上偏置;
对中间结果向量进行激活,激活函数active是非线性函数sigmoid,tanh,relu,softmax中的任一个或线性函数;
采样操作,将中间结果向量与随机数比较,大于随机数则输出1,小于随机数则输出0;或者
池化操作,包括最大值池化或平均值池化。
从运算模块包括输入神经元缓存单元,用于缓存离散或者连续的输入神经元向量。
互联模块构成主运算模块和所述多个从运算模块之间的连续或离散化数据的数据通路,互
主运算模块包括运算单元、数据依赖关系判断单元和神经元缓存单元,其中:
神经元缓存单元用于缓存主运算模块在计算过程中用到的离散或连续表示的输入数据和输出数据;
运算单元完成主运算模块的各种运算功能,当输入数据是离散数据与连续数据的混合数据时,针对不同离散数据采取预先设置的相应计算方式;
数据依赖关系判断单元是运算单元读写神经元缓存单元的端口,保证对神经元缓存单元中连续数据或离散数据读写不存在一致性冲突,并且负责从神经元缓存单元读取输入离散或连续的神经元向量,并通过互联模块发送给从运算模块;以及
来自互联模块的中间结果向量被发送到运算单元。
每个从运算模块包括运算单元、数据依赖关系判定单元、神经元缓存单元和权值缓存单元,其中:
运算单元接收控制器单元发出的微指令并进行算数逻辑运算,当输入数据是离散数据与连续数据的混合数据时,针对不同离散数据采取预先设置的相应计算方式;
数据依赖关系判断单元负责计算过程中对支持离散数据表示的神经元缓存单元和支持离散数据表示的权值缓存单元的读写操作,保证对支持离散数据表示的神经元缓存单元和支持离散数据表示的权值缓存单元的读写不存在一致性冲突;
神经元缓存单元缓存输入神经元向量的数据以及该从运算模块计算得到的输出神经元值;以及
权值缓存单元缓存该从运算模块在计算过程中需要的离散或连续表示的权值向量。
数据依赖关系判断单元通过以下方式保证读写不存在一致性冲突:判断尚未执行的微指令与正在执行过程中的微指令的数据之间是否存在依赖关系,如果不存在,允许该条微指令立即发射,否则需要等到该条微指令所依赖的所有微指令全部执行完成后该条微指令才允许被发射。
主运算模块或从运算模块中的运算单元包括运算决定单元和混合数据运算单元,当输入数据是混合数据时,运算决定单元根据其中的离散数据决定应对该混合数据执行何种操作,然后,混合数据运算单元根据运算决定单元的决定结果,执行相应操作。
主运算模块或从运算模块中的所述运算单元还包括离散数据运算单元和连续数据运算单元中的至少一个,以及数据类型判断单元,当输入数据全是离散数据时,由离散数据运算单元根据输入的离散数据通过查表执行相应操作,当输入数据全是连续数据时,由连续数据运算单元执行相应操作。
还包括连续离散转换单元,连续离散转换单元包括预处理模块、距离计算模块、和判断模块,假设使用M个离散数据,M=2m,m≥1,令这些离散数据分别对应于预定区间[-zone,zone]内的M个数值,其中:
预处理模块对于输入的连续数据x使用clip(-zone,zone)运算进行预处理,得到区间[-zone,zone]内的预处理数据y,其中,如果x≤-zone则y=-zone,如果x≥zone则y=zone,如果-zone<x<zone,则预处理数据y=x;
距离计算模块计算预处理数据y与上述各数值之间的距离;以及
判断模块基于该距离计算并输出离散数据。
还包括以下任意一项或多项:
预定区间[-zone,zone]是[-1,1]或[-2,2];
M个数值的绝对值是2的幂的倒数;或者
判断模块执行:
输出与该预处理数据y距离最近的数值所对应的离散数据,如果有两个数值与该预处理数据距离相等,则输出二者中任一个所对应的离散数据;或者
计算预处理数据y分别到距离最近的两个数值中任一个的归一化概率,将这两个数值中任一个所对应的归一化概率与随机数生成模块生成的(0,1)之间的随机数z比较,如果该z小于该概率则输出该离散数据,否则输出另一离散数据。
一种使用正向运算的装置执行单层人工神经网络正向运算的方法,包括:
数据访问单元从外部地址空间读取与该层人工神经网络正向运算有关的所有人工神经网络运算指 令,并将其缓存在指令缓存单元中;
连续离散转换模块从外部地址空间读取该层神经网络需要转换的连续数据转换为离散数据后存储回外部地址空间;
数据访问单元从外部地址空间读取主运算模块需要的与该层人工神经网络正向运算有关的所有离散或连续数据至主运算模块的神经元缓存单元;
数据访问单元从外部地址空间读取从运算模块需要的离散表示或连续表示的权值矩阵数据;
配置该层神经网络正向运算需要的各种离散或连续表示的常数;
主运算模块首先通过互联模块将输入神经元向量发给各从运算模块,保存至从运算模块的支持离散数据表示的神经元缓存单元;
从运算模块的运算单元从权值缓存单元读取权值向量,从从运算模块的神经元缓存单元读取输入神经元向量,对于向量中没有离散数据表示的完成权值向量和输入神经元向量的点积运算,对于向量中有离散数据表示的,通过离散数据运算模块,根据离散数据的值判断相应的位操作代替点积运算,将得到的神经元值通过互联模块返回;
在互联模块中,各从运算模块返回的神经元值被逐级拼成完整的中间结果向量;
主运算模块从主运算模块的神经元缓存单元读取离散表示或连续表示的偏置向量,与互联模块返回的中间结果向量相加,然后再对相加结果做激活,得到输出神经元向量写回至主运算模块的神经元缓存单元;以及
数据访问单元将主运算模块的神经元缓存单元中的输出神经元向量存至外部地址空间指定地址。
一种使用正向运算的装置执行批归一化运算的方法:
数据访问单元从外部地址空间读取与该批归一化正向运算有关的所有人工神经网络运算指令,并将其缓存在指令缓存单元中;
连续离散转换模块从外部地址空间读取该层神经网络需要转换的连续数据转换为离散数据后存储回外部地址空间。
数据访问单元从外部地址空间读取主运算模块需要的与该层批归一化正向运算有关的所有离散或连续数据至主运算模块的神经元缓存单元;
配置该层批归一化正向运算需要的各种离散或连续表示的常数;
主运算模块首先通过互联模块将输入神经元向量发给各从运算模块,保存至从运算模块的支持离散数据表示的神经元缓存单元;
从运算模块的运算单元从权值缓存单元读取权值向量,从从运算模块的神经元缓存单元读取输入神经元向量,对于输入向量计算在每一个批的尺度下的均值和标准差,将得到的神经元值通过互联模块返回;
在互联模块中,各从运算模块返回的神经元值被逐级拼成完整的中间结果向量;
主运算模块从主运算模块的神经元缓存单元读取离散表示或连续表示输入神经元向量,与互联模块返回的均值结果向量相减,然后再对减结果和标准差结果相除,得到输出神经元向量写回至主运算模块的神经元缓存单元;
数据访问单元将主运算模块的神经元缓存单元中的输出神经元向量存至外部地址空间指定地址。
一种执行多层人工神经网络正向运算的方法,包括:
针对每一层,执行根据单层人工神经网络正向运算的方法或批归一化运算的方法,其中:
当针对上一层人工神经网络执行完毕后,将主运算模块中存储的上一层的输出神经元地址作为本层的输入神经元地址,针对所述本层再次执行单层人工神经网络正向运算的方法或批归一化运算的方法。
提供了一种神经网络运算装置,包括:
运算模块,用于执行神经网络运算;以及
幂次转换模块,与所述运算模块连接,用于将神经网络运算的输入神经元数据和/或输出神经元数据转换为幂次神经元数据。
在一些实施例中,所述幂次转换模块包括:
第一幂次转换单元,用于将所述运算模块输出的神经元数据转换为幂次神经元数据;以及
第二幂次转换单元,用于将输入所述运算模块的神经元数据转换为幂次神经元数据。
在一些实施例中,所述运算模块还包括:第三幂次转换单元,用于将幂次神经元数据转换为非幂次神经元数据。
在一些实施例中,所述的神经网络运算装置,还包括:
存储模块,用于存储数据和运算指令;
控制模块,用于控制数据和运算指令的交互,其接收该存储模块发送的数据和运算指令,并将运算指令译码成运算微指令;其中,
所述运算模块包括运算单元,用于接收所述控制模块发送的数据和运算微指令,并根据运算微指令对其接收的权值数据和神经元数据执行神经网络运算。
在一些实施例中,所述控制模块包括:运算指令缓存单元、译码单元、输入神经元缓存单元、权值缓存单元以及数据控制单元;其中
运算指令缓存单元,与所述数据控制单元连接,用于接收该数据控制单元发送的运算指令;
译码单元,与所述运算指令缓存单元连接,用于从运算指令缓存单元中读取运算指令,并将其译码成运算微指令;
输入神经元缓存单元,与所述数据控制单元连接,用于从该数据控制单元获取相应的幂次神经元数据;
权值缓存单元,与所述数据控制单元连接,用于从数据控制单元获取相应的权值数据;
数据控制单元,与所述存储模块连接,用于实现所述存储模块分别与所述运算指令缓存单元、所述权值缓存单元以及所述输入神经元缓存单元之间的数据和运算指令交互;其中,
所述运算单元分别与所述译码单元、输入神经元缓存单元及权值缓存单元连接,接收运算微指令、幂次神经元数据及权值数据,根据所述运算微指令对运算单元接收的幂次神经元数据和权值数据执行相应的神经网络运算。
在一些实施例中,所述的神经网络运算装置,还包括:输出模块,其包括输出神经元缓存单元,用于接收所述运算模块输出的神经元数据;
其中,所述幂次转换模块包括:
第一幂次转换单元,与所述输出神经元缓存单元连接,用于将所述输出神经元缓存单元输出的神经元数据转换为幂次神经元数据;
第二幂次转换单元,与所述存储模块连接,用于将输入所述存储模块的神经元数据转换为幂次神经元数据;
所述运算模块还包括:第三幂次转换单元,与所述运算单元连接,用于将幂次神经元数据转换为非幂次神经元数据。
在一些实施例中,所述第一幂次转换单元还与所述数据控制单元连接,用于所述运算模块输出的神经元数据转换为幂次神经元数据并发送至所述数据控制单元,以作为下一层神经网络运算的输入数据。
在一些实施例中,所述幂次神经元数据包括符号位和幂次位,所述符号位用于表示所述幂次神经元数据的符号,所述幂次位用于表示所述幂次神经元数据的幂次位数据;所述符号位包括一位或多位比特位数据,所述幂次位包括m位比特位数据,m为大于1的正整数。
在一些实施例中,所述神经网络运算装置还包括存储模块,该存储模块预存有编码表,该编码表包括幂次位数据以及指数数值,所述编码表用于通过幂次神经元数据的每个幂次位数据获取与幂次位数据 对应的指数数值。
在一些实施例中,所述编码表还包括一个或多个置零幂次位数据,所述置零幂次位数据对应的幂次神经元数据为0。
在一些实施例中,最大的幂次位数据对应幂次神经元数据为0或最小的幂次位数据对应幂次神经元数据为0。
在一些实施例中,所述编码表的对应关系为幂次位数据最高位代表置零位,幂次位数据的其他m-1位对应指数数值。
在一些实施例中,所述编码表的对应关系为正相关关系,存储模块预存一个整数值x和一个正整数值y,最小的幂次位数据对应指数数值为x;其中,x表示偏置值,y表示步长。
在一些实施例中,最小的幂次位数据对应指数数值为x,最大的幂次位数据对应幂次神经元数据为0,最小和最大的幂次位数据之外的其他的幂次位数据对应指数数值为(幂次位数据+x)*y。
在一些实施例中,y=1,x的数值=-2m-1。
在一些实施例中,所述编码表的对应关系为负相关关系,存储模块预存一个整数值x和一个正整数值y,最大的幂次位数据对应指数数值为x;其中,x表示偏置值,y表示步长。
在一些实施例中,最大的幂次位数据对应指数数值为x,最小的幂次位数据对应幂次神经元数据为0,最小和最大的幂次位数据之外的其他的幂次位数据对应指数数值为(幂次位数据-x)*y。
在一些实施例中,y=1,x的数值等于2m-1。
在一些实施例中,神经元数据转换成幂次神经元数据包括:
s
out=s
in
其中,d
in为幂次转换单元的输入数据,d
out为幂次转换单元的输出数据,s
in为输入数据的符号,s
out为输出数据的符号,d
in+为输入数据的正数部分,d
in+=d
in×s
in,d
out+为输出数据的正数部分,d
out+=d
out×s
out,
表示对数据x做取下整操作;或,
s
out=s
in
其中,d
in为幂次转换单元的输入数据,d
out为幂次转换单元的输出数据,s
in为输入数据的符号,s
out为输出数据的符号,d
in+为输入数据的正数部分,d
in+=d
in×s
in,d
out+为输出数据的正数部分,d
out+=d
out×s
out,|x|表示对数据x做取上整操作;或,
s
out=s
in
d
out+=[log
2(d
in+)]
其中,d
in为幂次转换单元的输入数据,d
out为幂次转换单元的输出数据;s
in为输入数据的符号,s
out为输出数据的符号;d
in+为输入数据的正数部分,d
in+=d
in×s
in,d
out+为输出数据的正数部分,d
out+=d
out×s
out;
表示对数据x做四舍五入操作。
根据本公开的另一个方面,提供了一种神经网络运算方法,包括:
执行神经网络运算;以及
在执行神经网络运算之前,将神经网络运算的输入神经元数据转换为幂次神经元数据;和/或在执行神经网络运算之后,将神经网络运算的输出神经元数据转换为幂次神经元数据。
在一些实施例中,在执行神经网络运算之前,将神经网络运算的输入神经元数据转换为幂次神经元数据的步骤包括:
将输入数据中的非幂次神经元数据转换为幂次神经元数据;以及
接收并存储运算指令、所述幂次神经元数据及权值数据。
在一些实施例中,在接收并存储运算指令、所述幂次神经元数据及权值数据的步骤和执行神经网络运算的步骤之间,还包括:
读取运算指令,并将其译码成各运算微指令。
在一些实施例中,在执行神经网络运算的步骤中,根据运算微指令对权值数据和幂次神经元数据进行神经网络运算。
在一些实施例中,在执行神经网络运算之后,将神经网络运算的输出神经元数据转换为幂次神经元数据的步骤包括:
输出神经网络运算后得到的神经元数据;以及
将神经网络运算后得到的神经元数据中的非幂次神经元数据转换为幂次神经元数据。
在一些实施例中,将神经网络运算后得到的神经元数据中的非幂次神经元数据转换为幂次神经元数据并发送至所述数据控制单元,以作为神经网络运算下一层的输入幂次神经元,重复神经网络运算步骤和非幂次神经元数据转换成幂次神经元数据步骤,直到神经网络最后一层运算结束。
在一些实施例中,在存储模块中预存一个整数值x和一个正整数值y;其中,x表示偏置值,y表示步长;通过改变存储模块预存的整数值x和正整数值y,以调整神经网络运算装置所能表示的幂次神经元数据范围。
根据本公开的又一个方面,提供了一种使用所述的神经网络运算装置的方法,其中,通过改变存储模块预存的整数值x和正整数值y,以调整神经网络运算装置所能表示的幂次神经元数据范围。
根据本公开的一个方面,提供了一种神经网络运算装置,包括:
运算模块,用于执行神经网络运算;以及
幂次转换模块,与所述运算模块连接,用于将神经网络运算的输入数据和/或输出数据转换为幂次数据。
在一些实施例中,所述输入数据包括输入神经元数据、输入权值数据,所述输出数据包括输出神经元数据、输出权值数据,所述幂次数据包括幂次神经元数据、幂次权值数据。
在一些实施例中,所述幂次转换模块包括:
第一幂次转换单元,用于将所述运算模块的输出数据转换为幂次数据;以及
第二幂次转换单元,用于将所述运算模块的输入数据转换为幂次数据。
在一些实施例中,所述运算模块还包括:第三幂次转换单元,用于将幂次数据转换为非幂次数据。
在一些实施例中,所述的神经网络运算装置,还包括:
存储模块,用于存储数据和运算指令;
控制模块,用于控制数据和运算指令的交互,其接收该存储模块发送的数据和运算指令,并将运算指令译码成运算微指令;其中,
所述运算模块包括运算单元,用于接收所述控制模块发送的数据和运算微指令,并根据运算微指令对其接收的权值数据和神经元数据执行神经网络运算。
在一些实施例中,所述控制模块包括:运算指令缓存单元、译码单元、输入神经元缓存单元、权值缓存单元以及数据控制单元;其中
运算指令缓存单元,与所述数据控制单元连接,用于接收该数据控制单元发送的运算指令;
译码单元,与所述运算指令缓存单元连接,用于从运算指令缓存单元中读取运算指令,并将其译码成运算微指令;
输入神经元缓存单元,与所述数据控制单元连接,用于从该数据控制单元获取相应的幂次神经元数据;
权值缓存单元,与所述数据控制单元连接,用于从数据控制单元获取相应的幂次权值数据;
数据控制单元,与所述存储模块连接,用于实现所述存储模块分别与所述运算指令缓存单元、所述权值缓存单元以及所述输入神经元缓存单元之间的数据和运算指令交互;其中,
所述运算单元分别与所述译码单元、输入神经元缓存单元及权值缓存单元连接,接收运算微指令、幂次神经元数据、幂次权值数据,根据所述运算微指令对运算单元接收的幂次神经元数据、幂次权值数据执行相应的神经网络运算。
在一些实施例中,所述的神经网络运算装置,还包括:输出模块,其包括输出神经元缓存单元,用于接收所述运算模块输出的神经元数据;
其中,所述幂次转换模块包括:
第一幂次转换单元,与所述输出神经元缓存单元及所述运算单元连接,用于将所述输出神经元缓存单元输出的神经元数据转换为幂次神经元数据以及将运算单元输出的权值数据转换为幂次权值数据;
第二幂次转换单元,与所述存储模块连接,用于将输入所述存储模块的神经元数据、权值数据分别转换为幂次神经元数据、幂次权值数据;
所述运算模块还包括:第三幂次转换单元,与所述运算单元连接,用于将幂次神经元数据、幂次权值数据分别转换为非幂次神经元数据、非幂次权值数据。
在一些实施例中,所述第一幂次转换单元还与所述数据控制单元连接,用于所述运算模块输出的神经元数据、权值数据分别转换为幂次神经元数据、幂次权值数据并发送至所述数据控制单元,以作为下一层神经网络运算的输入数据。
在一些实施例中,所述幂次神经元数据包括符号位和幂次位,所述符号位用于表示所述幂次神经元数据的符号,所述幂次位用于表示所述幂次神经元数据的幂次位数据;所述符号位包括一位或多位比特位数据,所述幂次位包括m位比特位数据,m为大于1的正整数;
所述幂次权值数据表示权值数据的数值采用其幂指数值形式表示,其中,所述幂次权值数据包括符号位和幂次位,符号位采用一位或多位比特位表示权值数据的符号,幂次位采用m位比特位表示权值数据的幂次位数据,m为大于1的正整数。
在一些实施例中,所述神经网络运算装置还包括存储模块,该存储模块预存有编码表,该编码表包括幂次位数据以及指数数值,所述编码表用于通过幂次神经元数据、幂次权值数据的每个幂次位数据获取与幂次位数据对应的指数数值。
在一些实施例中,所述编码表还包括一个或多个置零幂次位数据,所述置零幂次位数据对应的幂次神经元数据、幂次权值数据为0。
在一些实施例中,最大的幂次位数据对应幂次神经元数据、幂次权值数据为0,或最小的幂次位数据对应幂次神经元数据、幂次权值数据为0。
在一些实施例中,所述编码表的对应关系为幂次位数据最高位代表置零位,幂次位数据的其他m-1位对应指数数值。
在一些实施例中,所述编码表的对应关系为正相关关系,存储模块预存一个整数值x和一个正整数值y,最小的幂次位数据对应指数数值为x;其中,x表示偏置值,y表示步长。
在一些实施例中,最小的幂次位数据对应指数数值为x,最大的幂次位数据对应幂次神经元数据、幂次权值数据为0,最小和最大的幂次位数据之外的其他的幂次位数据对应指数数值为(幂次位数据+x)*y。
在一些实施例中,y=1,x的数值=-2
m-1。
在一些实施例中,所述编码表的对应关系为负相关关系,存储模块预存一个整数值x和一个正整数值y,最大的幂次位数据对应指数数值为x;其中,x表示偏置值,y表示步长。
在一些实施例中,最大的幂次位数据对应指数数值为x,最小的幂次位数据对应幂次神经元数据、 幂次权值数据为0,最小和最大的幂次位数据之外的其他的幂次位数据对应指数数值为(幂次位数据-x)*y。
在一些实施例中,y=1,x的数值等于2
m-1。
在一些实施例中,将神经元数据、权值数据分别转换成幂次神经元数据、幂次权值数据包括:
s
out=s
in
其中,d
in为幂次转换单元的输入数据,d
out为幂次转换单元的输出数据,s
in为输入数据的符号,s
out为输出数据的符号,d
in+为输入数据的正数部分,d
in+=d
in×s
in,d
out+为输出数据的正数部分,d
out+=d
out×s
out,
表示对数据x做取下整操作;或,
s
out=s
in
其中,d
in为幂次转换单元的输入数据,d
out为幂次转换单元的输出数据,s
in为输入数据的符号,s
out为输出数据的符号,d
in+为输入数据的正数部分,d
in+=d
in×s
in,d
out+为输出数据的正数部分,d
out+=d
out×s
out,
表示对数据x做取上整操作;或,
s
out=s
in
d
out+=[log
2(d
in+)]
其中,d
in为幂次转换单元的输入数据,d
out为幂次转换单元的输出数据;s
in为输入数据的符号,s
out为输出数据的符号;d
in+为输入数据的正数部分,d
in+=d
in×s
in,d
out+为输出数据的正数部分,d
out+=d
out×s
out;
表示对数据x做四舍五入操作。
根据本公开的另一个方面,提供了一种神经网络运算方法,包括:
执行神经网络运算;以及
在执行神经网络运算之前,将神经网络运算的输入数据转换为幂次数据;和/或在执行神经网络运算之后,将神经网络运算的输出数据转换为幂次数据。
在一些实施例中,所述输入数据包括输入神经元数据、输入权值数据,所述输出数据包括输出神经元数据、输出权值数据,所述幂次数据包括幂次神经元数据、幂次权值数据。
在一些实施例中,在执行神经网络运算之前,将神经网络运算的输入数据转换为幂次数据的步骤包括:
将输入数据中的非幂次数据转换为幂次数据;以及
接收并存储运算指令、所述幂次数据。
在一些实施例中,在接收并存储运算指令、所述幂次数据的步骤和执行神经网络运算的步骤之间,还包括:
读取运算指令,并将其译码成各运算微指令。
在一些实施例中,在执行神经网络运算的步骤中,根据运算微指令对幂次权值数据和幂次神经元数据进行神经网络运算。
在一些实施例中,在执行神经网络运算之后,将神经网络运算的输出数据转换为幂次数据的步骤包括:
输出神经网络运算后得到的数据;以及
将神经网络运算后得到的数据中的非幂次数据转换为幂次数据。
在一些实施例中,将神经网络运算后得到的数据中的非幂次数据转换为幂次数据并发送至所述数据 控制单元,以作为神经网络运算下一层的输入数据,重复神经网络运算步骤和非幂次数据转换成幂次数据步骤,直到神经网络最后一层运算结束。
在一些实施例中,在存储模块中预存一个整数值x和一个正整数值y;其中,x表示偏置值,y表示步长;通过改变存储模块预存的整数值x和正整数值y,以调整神经网络运算装置所能表示的幂次数据范围。
根据本公开的又一个方面,提供了一种使用所述的神经网络运算装置的方法,其中,通过改变存储模块预存的整数值x和正整数值y,以调整神经网络运算装置所能表示的幂次数据范围。
根据本公开的一个方面,提供了一种运算装置,包括:
运算控制模块,用于确定分块信息;
运算模块,用于根据所述分块信息对运算矩阵进行分块、转置及合并运算,以得到所述运算矩阵的转置矩阵。
在一些实施例中,所述的运算装置,还包括:
地址存储模块,用于存储所述运算矩阵的地址信息;以及
数据存储模块,用于存储所述运算矩阵,并存储运算后的转置矩阵;
其中,所述运算控制模块用于从所述地址存储模块提取所述运算矩阵的地址信息,并根据所述运算矩阵的地址信息分析得到分块信息;所述运算模块,用于从所述运算控制模块获取运算矩阵的地址信息及分块信息,根据所述运算矩阵的地址信息从所述数据存储模块提取运算矩阵,并根据所述分块信息对所述运算矩阵进行分块、转置及合并运算,得到所述运算矩阵的转置矩阵,并将所述运算矩阵的转置矩阵反馈至所述数据存储模块。
在一些实施例中,所述运算模块包括矩阵分块单元、矩阵运算单元和矩阵合并单元,其中:
矩阵分块单元:用于从所述运算控制模块获取运算矩阵的地址信息及分块信息,并根据所述运算矩阵的地址信息从所述数据存储模块提取运算矩阵,根据所述分块信息对所述运算矩阵进行分块,得到n个分块矩阵;
矩阵运算单元,用于获取所述n个分块矩阵,并对所述n个分块矩阵进行转置运算,得到所述n个分块矩阵的转置矩阵;
矩阵合并单元,用于获取并合并所述n个分块矩阵的转置矩阵,得到所述运算矩阵的转置矩阵,并将所述运算矩阵的转置矩阵反馈至所述数据存储模块,其中,n为自然数。
在一些实施例中,所述运算模块还包括缓存单元,用于缓存所述n个分块矩阵,以供所述矩阵运算单元获取。
在一些实施例中,所述运算控制模块包括指令处理单元、指令缓存单元和矩阵判断单元,其中:
指令缓存单元,用于存储待执行的矩阵运算指令;
指令处理单元,用于从指令缓存单元中获取矩阵运算指令,对所述矩阵运算指令进行译码,并根据所述译码后的矩阵运算指令从所述地址存储模块中获取运算矩阵的地址信息;
矩阵判断单元,用于对所述运算矩阵的地址信息进行分析,得到所述分块信息。
在一些实施例中,所述运算控制模块还包括依赖关系处理单元,用于判断所述译码后的矩阵运算指令和运算矩阵的地址信息是否与上一运算存在冲突,若存在冲突,则暂存所述译码后的矩阵运算指令和运算矩阵的地址信息;若不存在冲突,则发射所述译码后的矩阵运算指令和运算矩阵的地址信息至所述矩阵判断单元。
在一些实施例中,所述运算控制模块还包括指令队列存储器,用于缓存所述存在冲突的译码后的矩阵运算指令和运算矩阵的地址信息,当所述冲突消除后,将缓存的所述译码后的矩阵运算指令和运算矩阵的地址信息发射至所述矩阵判断单元。
在一些实施例中,所述指令处理单元包括取指单元和译码单元,其中:
取指单元,用于从所述指令缓存单元中获取矩阵运算指令,并将此矩阵运算指令传输至所述译码单元;
译码单元,用于对所述矩阵运算指令进行译码,根据该译码后的矩阵运算指令从所述地址存储模块中提取运算矩阵的地址信息,并将所述译码后的矩阵运算指令和提取的运算矩阵的地址信息传输至所述依赖关系处理单元。
在一些实施例中,所述装置还包括输入输出模块,用于向所述数据存储模块输入所述运算矩阵数据,还用于从所述数据存储模块获取运算后的转置矩阵,并输出所述运算后的转置矩阵。
在一些实施例中,所述地址存储模块包括标量寄存器堆或通用内存单元;所述数据存储模块包括高速暂存存储器或通用内存单元;所述运算矩阵的地址信息为矩阵的起始地址信息和矩阵大小信息。
根据本公开的另一个方面,提供了一种运算方法,包括以下步骤:
运算控制模块确定分块信息;
运算模块根据所述分块信息对运算矩阵进行分块、转置及合并运算,以得到所述运算矩阵的转置矩阵。
在一些实施例中,所述运算控制模块确定分块信息的步骤包括:
运算控制模块从地址存储模块提取运算矩阵的地址信息;以及
运算控制模块根据所述运算矩阵的地址信息得到分块信息。
在一些实施例中,所述运算控制模块从地址存储模块提取运算矩阵的地址信息的步骤包括:
取指单元提取运算指令,并将运算指令送至译码单元;
译码单元对运算指令进行译码,根据译码后的运算指令从地址存储模块获取运算矩阵的地址信息,并将译码后的运算指令和运算矩阵的地址信息送往依赖关系处理单元;
依赖关系处理单元分析该译码后的运算指令与前面的尚未执行结束的指令在数据上是否存在依赖关系;若存在依赖关系,该条译码后的运算指令与相应的运算矩阵的地址信息需要在指令队列存储器中等待至其与前面的未执行结束的指令在数据上不再存在依赖关系为止
在一些实施例中,所述运算模块根据所述分块信息对运算矩阵进行分块、转置及合并运算,以得到所述运算矩阵的转置矩阵的步骤包括:
运算模块根据所述运算矩阵的地址信息从数据存储模块提取运算矩阵;并根据所述分块信息将所述运算矩阵分成n个分块矩阵;
运算模块对所述n个分块矩阵分别进行转置运算,得到所述n个分块矩阵的转置矩阵;以及
运算模块合并所述n个分块矩阵的转置矩阵,得到所述运算矩阵的转置矩阵并反馈至所述数据存储模块;
其中,n为自然数。
在一些实施例中,所述运算模块合并n个分块矩阵的转置矩阵,得到运算矩阵的转置矩阵,并将该转置矩阵反馈给数据存储模块的步骤包括:
矩阵合并单元接收每个分块矩阵的转置矩阵,当接收到的分块矩阵的转置矩阵数量达到总的分块数后,对所有的分块进行矩阵合并操作,得到运算矩阵的转置矩阵;并将该转置矩阵反馈至数据存储模块的指定地址;
输入输出模块直接访问数据存储模块,从数据存储模块中读取运算得到的运算矩阵的转置矩阵。
根据本公开的一个方面,提供了一种数据筛选装置,包括:
存储单元,用于存储数据;
寄存器单元,用于存放存储单元中的数据地址;
数据筛选模块,在寄存器单元中获取数据地址,根据数据地址在存储单元中获取相应的数据,并对获取的数据进行筛选操作,得到数据筛选结果。
在一些实施例中,所述数据筛选模块包括数据筛选单元,对获取的数据进行筛选操作。
在一些实施例中,所述数据筛选模块还包括:I/O单元、输入数据缓存单元和输出数据缓存单元;
所述I/O单元,将存储单元存储的数据搬运到输入数据缓存单元;
所述输入数据缓存单元,存储I/O单元搬运的数据;
所述数据筛选单元将输入数据缓存单元传来的数据作为输入数据,并对输入数据进行筛选操作,将输出数据传给输出数据缓存单元;
所述输出数据缓存单元存储输出数据。
在一些实施例中,所述输入数据包括待筛选数据和位置信息数据,所述输出数据包含筛选后数据,或者筛选后数据及其相关信息。
在一些实施例中,所述待筛选数据为向量或数组,所述位置信息数据为二进制码、向量或数组;所述相关信息包括向量长度、数组大小、所占空间。
在一些实施例中,所述数据筛选单元扫描位置信息数据的每个分量,若分量为0,则删除该分量对应的待筛选数据分量,若分量为1,则保留该分量对应的待筛选数据分量;或者,若分量为1,则删除该分量对应的待筛选数据分量,若分量为0,则保留该分量对应的待筛选数据分量,扫描完毕后得到筛选后数据并输出。
在一些实施例中,所述数据筛选模块还包括结构变形单元,对输入数据和/或输出数据的存储结构进行变形。
根据本公开的另一个方面,提供了一种数据筛选方法,利用所述的数据筛选装置进行数据筛选,包括:
步骤A:数据筛选模块在寄存器单元中获取数据地址;
步骤B:根据数据地址在存储单元中获取相应的数据;以及
步骤C:对获取的数据进行筛选操作,得到数据筛选结果。
在一些实施例中,所述步骤A包括:数据筛选单元从寄存器单元中获取待筛选数据的地址和位置信息数据的地址;
所述步骤B包括:
子步骤B1:I/O单元将存储单元中的待筛选数据和位置信息数据传递给输入数据缓存单元;
子步骤B2:输入数据缓存单元将待筛选数据和位置信息数据传递给数据筛选单元;
所述步骤C包括:数据筛选单元根据位置信息数据,对待筛选数据进行筛选操作,将输出数据传递给输出数据缓存单元。
在一些实施例中,所述子步骤B1和子步骤B2之间还包括:
判断是否进行存储结构变形,如果是,则执行步骤子步骤B3,如果否,则直接执行子步骤B2;
子步骤B3:输入数据缓存单元将待筛选数据传给结构变形单元,结构变形单元进行存储结构变形,将变形后的待筛选数据传回输入数据缓存单元,然后执行子步骤B2。
根据本公开的一个方面,提供了一种神经网络处理器,包括:存储器、高速暂存存储器和异构内核;其中,
所述存储器,用于存储神经网络运算的数据和指令;
所述高速暂存存储器,通过存储器总线与所述存储器连接;
所述异构内核,通过高速暂存存储器总线与所述高速暂存存储器连接,通过高速暂存存储器读取神经网络运算的数据和指令,完成神经网络运算,并将运算结果送回到高速暂存存储器,控制高速暂存存储器将运算结果写回到存储器。
在一些实施例中,所述异构内核包括:
多个运算内核,其具有至少两种不同类型的运算内核,用于执行神经网络运算或神经网络层运算; 以及
一个或多个逻辑控制内核,用于根据神经网络运算的数据,决定由所述专用内核和/或所述通用内核执行神经网络运算或神经网络层运算。
在一些实施例中,所述多个运算内核包括x个通用内核和y个专用内核;其中,所述专用内核专用于执行指定神经网络/神经网络层运算,所述通用内核用于执行任意神经网络/神经网络层运算。
在一些实施例中,所述通用内核为cpu,所述专用内核为npu。
在一些实施例中,所述高速暂存存储器包括共享高速暂存存储器和/或非共享高速暂存存储器;其中,所述一共享高速暂存存储器通过高速暂存存储器总线与所述异构内核中的至少两个内核对应连接;所述一非共享高速暂存存储器通过高速暂存存储器总线与所述异构内核中的一内核对应连接。
在一些实施例中,所述逻辑控制内核通过高速暂存存储器总线与所述高速暂存存储器连接,通过高速暂存存储器读取神经网络运算的数据,并根据神经网络运算的数据中的神经网络模型的类型和参数,决定由专用内核和/或通用内核作为目标内核来执行神经网络运算和/或神经网络层运算。
在一些实施例中,所述逻辑控制内核通过控制总线直接向所述向目标内核发送信号或者经所述高速暂存存储器存储器向所述向目标内核发送信号,从而控制目标内核执行神经网络运算和/或神经网络层运算。
根据本公开的另一个方面,提供了一种神经网络运算方法,其中,利用所述的神经网络处理器进行神经网络运算,包括:
异构内核中的逻辑控制内核通过高速暂存存储器从存储器读取神经网络运算的数据和指令;以及
异构内核中的逻辑控制内核根据神经网络运算的数据中的神经网络模型的类型和参数,决定由专用内核和/或通用内核执行神经网络运算或神经网络层运算。
在一些实施例中,异构内核中的逻辑控制内核根据神经网络运算的数据中的神经网络模型的类型和参数,决定由专用内核和/或通用内核执行神经网络层运算包括:
异构内核中的逻辑控制内核根据神经网络运算的数据中的神经网络模型的类型和参数,判断是否存在符合条件的专用内核;
如果专用内核m符合条件,则专用内核m作为目标内核,异构内核中的逻辑控制内核向目标内核发送信号,将神经网络运算的数据和指令对应的地址发送到目标内核;
目标内核根据地址通过共享或非共享高速暂存存储器从存储器获取神经网络运算的数据和指令,进行神经网络运算,将运算结果通过所述共享或非共享高速暂存存储器输出到存储器,运算完成;
如果不存在符合条件的专用内核,则异构内核中的逻辑控制内核向通用内核发送信号,将神经网络运算的数据和指令对应的地址发送到通用内核;
通用内核根据地址通过共享或非共享高速暂存存储器从存储器获取神经网络运算的数据和指令,进行神经网络运算,将运算结果通过共享或非共享高速暂存存储器输出到存储器,运算完成。
在一些实施例中,所述符合条件的专用内核是指支持指定神经网络运算且能完成指定神经网络运算规模的专用内核。
在一些实施例中,异构内核中的逻辑控制内核根据神经网络运算的数据中的神经网络模型的类型和参数,决定由专用内核和/或通用内核执行神经网络运算包括:
异构内核中的逻辑控制内核对数据中的神经网络模型的类型和参数进行解析,对每一神经网络层分别判断是否存在符合条件的专用内核,并为每一神经网络层分配对应的通用内核或专用内核,得到与神经网络层对应的内核序列;
异构内核中的逻辑控制内核将神经网络层运算的数据和指令对应的地址发送到神经网络层对应的专用内核或通用内核,并向神经网络层对应的专用内核或通用内核发送内核序列中下一个专用内核或通用内核的编号;
神经网络层对应的专用内核和通用内核从地址读取神经网络层运算的数据和指令,进行神经网络层运算,将运算结果传送到共享和/或非共享高速暂存存储器的指定地址;
逻辑控制内核控制共享和/或非共享高速暂存存储器将神经网络层的运算结果写回到存储器中,运算完成。
在一些实施例中,所述符合条件的专用内核是指支持指定神经网络层运算且能完成该指定神经网络层运算规模的专用内核。
在一些实施例中,所述神经网络运算包括脉冲神经网络运算;所述神经网络层运算包括神经网络层的卷积运算、全连接层、拼接运算、对位加/乘运算、Relu运算、池化运算和/或Batch Norm运算。
一种处理装置,包括:
粗粒度枝单元,用于对神经网络的权值进行粗粒度剪枝,以得到剪枝后的权值;
运算单元,用于根据剪枝后的权值对所述神经网络进行训练;
其中,所述粗粒度剪枝单元具体用于:
通过滑动窗口从神经网络的权值中选取出M个权值,所述M为大于1的整数;当所述M个权值满足预设条件时,将所述M个权值全部或者部分置为零。
进一步的,所述预设条件为:所述M个权值的信息量小于第一预设阈值。
进一步的,所述M个权值的信息量为所述M个权值绝对值的算术平均值、所述M个权值绝对值的几何平均值或者所述M个权值的最大值,所述第一预设阈值为第一阈值、第二阈值或者第三阈值,所述M个权值的信息量小于第一预设阈值包括:
所述M个权值绝对值的算术平均值小于所述第一阈值,或者所述M个权值绝对值的几何平均值小于所述第二阈值,或者所述M个权值的最大值小于所述第三阈值。
进一步的,所述粗粒度剪枝单元用于:重复对神经网络的权值进行粗粒度剪枝以及根据剪枝后的权值对神经网络进行训练,直至保证在精度不损失设定精度的前提下没有权值满足所述预设条件。
进一步的,所述设定精度为x%,其中x介于0至5之间。
进一步的,所述神经网络包括全连接层、卷积层和/或长短期记忆LSTM层,其中,所述全连接层的权值是一个二维矩阵(Nin,Nout),其中Nin是输入神经元的个数,Nout是输出神经元的个数,所述全连接层有Nin*Nout个权值;所述卷积层的权值是一个四维矩阵(Nfin,Nfout,Kx,Ky),其中Nfin是输入特征图像的个数,Nfout是输出特征图像的个数,(Kx,Ky)是卷积核的大小,所述卷积层有Nfin*Nfout*Kx*Ky个权值;所述LSTM层的权值有m个全连接层的权值组成,所述m为大于0的整数,第i个全连接层权值为(Nin_i,Nout_i),其中i是大于0且小于或等于m的整数,Nin_i表示第i个全连接层权值输入神经元个数,Nout_i表示第i个全连接层权值输出神经元个数;所述粗粒度剪枝单元具体用于:
当对所述全连接层的权值进行粗粒度剪枝操作时,所述滑动窗口的大小为Bin*Bout的滑动窗口,其中所述Bin为大于0且小于或等于Nin整数,所述Bout为大于0且小于或等于Nout的整数;
使所述滑动窗口能够沿着Bin的方向按照步长Sin进行滑动,或者沿
着Bout的方向按照步长Sout进行滑动,其中Sin为大于0且小于或等于Bin的正整数,Sout为大于0且小于或等于Bout的正整数;
通过所述滑动窗口从所述Nin*Nout个权值中选取M个取值,当所述M个权值满足所述预设条件时,将所述M个权值全部或者部分置为零,其中,所述M=Bin*Bout;
当对所述卷积层的权值进行粗粒度剪枝操作时,所述滑动窗口为大小为Bfin*Bfout*Bx*By的四维滑动窗口,其中Bfin为大于0且小于或等于Nfin的整数,Bfout为大于0且小于或等于Nfout的整数,Bx为大于0且小于或等于Kx的整数,By为大于0且小于或等于Ky的整数;
使所述滑动窗口沿着Bfin的方向按照步长Sfin进行滑动,或者沿着Bfout的方向按照步长Sfout 进行滑动,或者沿着Bx的方向按照步长S进行滑动,或沿着By的方向按照步长Sy进行滑动,其中Sfin为大于0且小于或等于Bfin的整数,Sfout为大于0且小于或等于Bfout的整数,Sx为大于0且小于或等于Bx的整数,Sy为大于0且小于或等于By的整数;
通过所述滑动窗口从所述Nfin*Nfout*Kx*Ky个权值中选取M个权值,当所述M个权值满足所述预设条件时,将所述M个权值全部或者部分置为零,其中,所述M=Bfin*Bfout*Bx*By;
当对所述LSTM层的权值进行粗粒度剪枝操作时,所述滑动窗口的大小为Bin_i*Bout_i,其中Bin_i为大于0且小于或等于Nin_i的整数,Bout_i为大于0且小于或等于Nout_i的整数;
使所述滑动窗口沿着Bin_i的方向按照步长Sin_i进行滑动,或沿着Bout_i的方向按照步长Sout_i进行滑动,其中Sin_i为大于0且小于或等于Bin_i的正整数,Sout_i为大于0且小于或等于Bout_i的正整数;
通过所述滑动窗口从所述Bin_i*Bout_i个权值中选取M个权值,当所述M个权值满足所述预设条件时,将所述M个权值全部或者部分置为零,其中,所述M=Bin_i*Bout_i。
进一步的,所述运算单元具体用于:根据所述剪枝后的权值和通过使用反向传播算法进行重新训练。
进一步的,所述处理组装置还包括:
量化单元,用于在对神经网络的权值进行粗粒度剪枝之后和在根据剪枝后的权值对神经网络进行重训练之前,量化所述神经网络的权值和/或对所述神经网络的权值进行第一操作,以降低所述神经网络的权值比特数。
一种加速装置,该加速装置包括:
存储单元,用于存储神经网络的输入神经元、输出神经元、剪枝后的神经网络权值以及指令;其中神经网络为对剪枝后的权值训练得到训练好的神经网络模型;
粗粒度剪枝单元,用于对所述神经网络的权值进行粗粒度剪枝,以得到剪枝后的权值,并将该剪枝后的权值存储到所述存储单元中;
粗粒度选数单元,用于接收输入神经元和目标权值位置信息,选出目标权值对应的神经元,目标权值为绝对值大于第二预设阈值的权值;
运算单元,用于接收输入的目标权值及其对应的神经元,并根据目标权值及其对应的神经元进行运算,并将输出神经元重新传输给存储单元。
其中,所述存储单元还用于存储运算单元进行运算过程中产生的中间结果。
进一步的,所述加速装置还包括:
指令控制单元,用于接收所述指令,并对该指令进行译码,以得到控制信息以控制所述运算单元。
进一步的,所述存储单元用于存储目标权值以及目标权值的位置信息。
进一步的,所述加速装置还包括:
预处理单元,用于对原始数据进行预处理,将预处理后的数据输入所述存储部分,上述原始数据包括输入神经元、输出神经元和权值。
进一步的,所述预处理包括数据的切分、高斯滤波、二值化、正则化和/或归一化处理。
进一步的,所述加速装置还包括:
指令缓存单元,用于缓存所述指令。所述指令缓存单元为片上缓存。
进一步的,所述加速装置还包括:
目标权值缓存单元,用于缓存目标权值。所述目标权值缓存单元为片上缓存。
进一步的,所述加速装置还包括:
目标权值位置缓存单元,用于缓存目标权值的位置信息。所述目标权值位置缓存单元为片上缓存。
进一步的,所述加速装置还包括:
输入神经元缓存单元,用于缓存输入神经元,所述输入神经元缓存单元为片上缓存。
进一步的,所述加速装置还包括:
输出神经元缓存单元,用于缓存输出神经元,所述输出神经元缓存单元为片上缓存。
进一步的,所述目标权值位置缓存单元,用于缓存目标权值的位置信息;目标权值位置缓存单元将输入数据中每个连接权值一一对应到相应的输入神经元。
进一步的,加速装置还包括:
直接存取单元DMA,用于在所述存储单元,与所述指令缓存单元、粗粒度剪枝单元、目标权值缓存单元、目标权值位置缓存单元、输入神经元缓存单元或输出神经元缓存中进行数据或者指令读写。
进一步的,所述运算单元包括以下至少一种:乘法器,用于将所述第一输入数据和第二输入数据相乘,得到相乘之后的数据;加法树,用于将第三输入数据通过加法树逐级相加,或者将所述第三输入数据通过和第四输入数据相加得到相加之后的数据;激活函数运算单元,对第五数据通过激活函数运算得到输出数据,所述激活函数为sigmoid、tanh、relu或softmax函数操作。
进一步的,所述运算单元还包池化单元,用于对输入的第六数据通过池化运算得到池化操作之后的输出数据,所述池化操作包括:平均值池化,最大值池化或者中值池化。
一种加速装置,该加速装置包括:
存储单元,用于存储神经网络的输入神经元、输出神经元、剪枝后的神经网络权值以及指令;其中所述神经网络为对剪枝后的权值训练得到训练好的神经网络模型;
粗粒度剪枝单元,用于对神经网络的权值进行剪枝,以得到剪枝后的权值,并将剪枝后的权值存储到上述存储单元中;
运算单元,用于根据剪枝后的权值对神经网络进行训练,以得到训练后的神经网络;
粗粒度选数单元,用于接收输入神经元和目标权值位置信息,选出目标权值对应的输入神经元,目标权值为绝对值大于第二预设阈值的权值;其中,目标权值为所述训练后的权值。
运算单元,用于接收输入的目标权值及其对应的输入神经元,并根据目标权值及其对应的输入神经元进行运算,并将输出神经元重新传输给存储单元。
其中,上述存储单元还可用于存储运算单元进行运算过程中产生的中间结果。
进一步的,加速装置还包括:
指令控制单元,用于接收所述指令,对所述指令进行译码,以得到控制信息,用于控制所述运算单元。
进一步的,所述存储单元用于存储目标权值以及目标权值的位置信息。
进一步的,所述加速装置还包括:
预处理单元,用于对原始数据进行预处理,将预处理后的数据输入所述存储部分,上述原始数据包括训练后的神经网络的输入神经元、输出神经元和权值。
进一步的,所述预处理包括数据的切分、高斯滤波、二值化、正则化和/或归一化处理。
进一步的,加速装置还包括:
指令缓存单元,用于缓存所述指令。所述指令缓存单元为片上缓存。
进一步的,加速装置还包括:
目标权值缓存单元,用于缓存目标权值。所述目标权值缓存单元为片上缓存。
进一步的,加速装置还包括:
目标权值位置缓存单元,用于缓存目标权值的位置信息。所述目标权值位置缓存单元为片上缓存。
进一步的,加速装置还包括:
输入神经元缓存单元,用于缓存输入神经元,所述输入神经元缓存单元为片上缓存。
进一步的,加速装置还包括:
输出神经元缓存单元,用于缓存输出神经元,所述输出神经元缓存单元为片上缓存。
进一步的,所述目标权值位置缓存单元,用于缓存目标权值的位置信息,目标权值位置缓存单元将输入数据中每个连接权值一一对应到相应的输入神经元。
进一步的,加速装置还包括:
直接存取单元DMA,用于在所述存储单元,与所述指令缓存单元、粗粒度剪枝单元、目标权值缓存单元、目标权值位置缓存单元、输入神经元缓存单元或输出神经元缓存中进行数据或者指令读写。
进一步的,所述运算单元包括以下至少一种:乘法器,用于将所述第一输入数据和第二输入数据相乘,得到相乘之后的数据;加法树,用于将第三输入数据通过加法树逐级相加,或者将所述第三输入数据通过和第四输入数据相加得到相加之后的数据;激活函数运算单元,对第五数据通过激活函数运算得到输出数据,所述激活函数为sigmoid、tanh、relu或softmax函数操作。
进一步的,所述运算单元还包池化单元,用于对输入的第六数据通过池化运算得到池化操作之后的输出数据,所述池化操作包括:平均值池化,最大值池化或者中值池化。
一种处理方法,包括:
对神经网络的权值进行粗粒度剪枝,以得到剪枝后的权值;
根据所述剪枝后的权值对神经网络进行训练;
其中,所述对神经网络进行粗粒度剪枝,以得到剪枝后的权值,包括:
通过滑动窗口从神经网络的权值中选取出M个权值,所述M为大于1的整数;
当所述M个权值满足预设条件时,将所述M个权值全部或者部分置为零,以得到剪枝后的权值。
进一步的,所述预设条件为:
所述M个权值的信息量小于第一预设阈值。
进一步的,所述M个权值的信息量为所述M个权值绝对值的算术平均值、所述M个权值绝对值的几何平均值或者所述M个权值的最大值,所述第一预设阈值为第一阈值、第二阈值或者第三阈值,所述M个权值的信息量小于第一预设阈值包括:
所述M个权值绝对值的算术平均值小于所述第一阈值,或者所述M个权值绝对值的几何平均值小于所述第二阈值,或者所述M个权值的最大值小于所述第三阈值。
进一步的,所述方法还包括:
重复对所述神经网络的权值进行粗粒度剪枝以及根据剪枝后的权值进行训练,直至保证在精度不损失设定精度的前提下没有权值满足所述预设条件。
进一步的,所述设定精度为x%,其中x介于0至5之间。
进一步的,所述神经网络包括全连接层、卷积层和/或长短期记忆LSTM层,其中,所述全连接层的权值是一个二维矩阵(Nin,Nout),其中Nin是输入神经元的个数,Nout是输出神经元的个数,所述全连接层有Nin*Nout个权值;所述卷积层的权值是一个四维矩阵(Nfin,Nfout,Kx,Ky),其中Nfin是输入特征图像的个数,Nfout是输出特征图像的个数,(Kx,Ky)是卷积核的大小,所述卷积层有Nfin*Nfout*Kx*Ky个权值;所述LSTM层的权值有m个全连接层的权值组成,所述m为大于0的整数,第i个全连接层权值为(Nin_i,Nout_i),其中i是大于0且小于或等于m的整数,Nin_i表示第i个全连接层权值输入神经元个数,Nout_i表示第i个全连接层权值输出神经元个数;所述对神经网络进行粗粒度剪枝包括:
当对所述神经网络的全连接层的权值进行粗粒度剪枝时,所述滑动窗口的大小为Bin*Bout的滑动窗口,其中所述Bin为大于0且小于或等于Nin整数,所述Bout为大于0且小于或等于Nout的整数;
使所述滑动窗口能够沿着Bin的方向按照步长Sin进行滑动,或者沿着Bout的方向按照步长Sout进行滑动,其中Sin为大于0且小于或等于Bin的正整数,Sout为大于0且小于或等于Bout的正整数;
通过所述滑动窗口从所述Nin*Nout个权值中选取M个取值,当所述M个权值满足所述预设条件时, 将所述M个权值全部或者部分置为零,其中,所述M=Bin*Bout。
当对所述神经网络的卷积层的权值进行粗粒度剪枝时,所述滑动窗口为大小为Bfin*Bfout*Bx*By的四维滑动窗口,其中Bfin为大于0且小于或等于Nfin的整数,Bfout为大于0且小于或等于Nfout的整数,Bx为大于0且小于或等于Kx的整数,By为大于0且小于或等于Ky的整数;
使所述滑动窗口沿着Bfin的方向按照步长Sfin进行滑动,或者沿着Bfout的方向按照步长Sfout进行滑动,或者沿着Bx的方向按照步长S进行滑动,或沿着By的方向按照步长Sy进行滑动,其中Sfin为大于0且小于或等于Bfin的整数,Sfout为大于0且小于或等于Bfout的整数,Sx为大于0且小于或等于Bx的整数,Sy为大于0且小于或等于By的整数;
通过所述滑动窗口从所述Nfin*Nfout*Kx*Ky个权值中选取M个权值,当所述M个权值满足所述预设条件时,将所述M个权值全部或者部分置为零,其中,所述M=Bfin*Bfout*Bx*By。
当对所述神经网络的LSTM层的权值进行粗粒度剪枝时,所述滑动窗口的大小为Bin_i*Bout_i,其中Bin_i为大于0且小于或等于Nin_i的整数,Bout_i为大于0且小于或等于Nout_i的整数;所述对神经网络的LSTM层的权值进行粗粒度剪枝具体包括:
使所述滑动窗口沿着Bin_i的方向按照步长Sin_i进行滑动,或沿着Bout_i的方向按照步长Sout_i进行滑动,其中Sin_i为大于0且小于或等于Bin_i的正整数,Sout_i为大于0且小于或等于Bout_i的正整数;
通过所述滑动窗口从所述Bin_i*Bout_i个权值中选取M个权值,当
所述M个权值满足所述预设条件时,将所述M个权值全部或者部分置为零,其中,所述M=Bin_i*Bout_i。
进一步的,所述根据所述剪枝后的权值对神经网络进行训练具体为:
根据所述剪枝后的权值和通过反向传播算法对所述神经网络进行重新训练。
进一步的,在对所述神经网络进行粗粒度剪枝和重训练之间还包括:
量化所述神经网络的权值和/或对所述神经网络权值进行第一操作,以降低权值比特数。
一种神经网络运算装置,所述神经网络运算装置包括一个或多个如上述加速装置,用于从其他处理装置中获取待运算数据和控制信息,并执行指定的神经网络运算,将执行结果通过I/O接口传递给其他处理装置;
当所述神经网络运算装置包含多个所述计算装置时,所述多个所述计算装置间可以通过特定的结构进行连接并传输数据;
其中,多个所述计算装置通过快速外部设备互连总线PCIE总线进行互联并传输数据,以支持更大规模的神经网络的运算;多个所述计算装置共享同一控制系统或拥有各自的控制系统;多个所述计算装置共享内存或者拥有各自的内存;多个所述计算装置的互联方式是任意互联拓扑。
一种神经网络芯片,所述神经网络芯片包括上述处理装置、加速装置和/或神经网络运算装置。
一种芯片封装结构,包括第六方面所述的神经网络芯片。
一种板卡,包括第六方面所述的神经网络芯片或第七方面所述的芯片封装结构。
一种电子装置,包括第吧方面所述的板卡。
进一步的,所述电子装置包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备交通工具、家用电器、和/或医疗设备。
进一步的,所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
一种处理装置,包括存储单元、粗粒度选数单元和运算单元,
存储单元,用于存储神经网络的输入神经元、输出神经元、权值以及指令;
粗粒度剪枝单元,用于对所述神经网络的权值进行粗粒度剪枝,以得到剪枝后的权值,并将剪枝后的权值和目标权值位置信息存储到所述存储单元中;所述目标权值为绝对值大于第二预设阈值的权值,其中,所述粗粒度剪枝单元具体用于:
通过滑动窗口从神经网络的权值中选取出M个权值,所述M为大于1的整数;
当所述M个权值满足预设条件时,将所述M个权值的全部或者部分置为零;
运算单元,用于根据所述剪枝后的权值进行训练;训练过程中已经被置为零的权值保持为零;
粗粒度选数单元,用于接收输入神经元和目标权值位置信息,根据所述目标权值位置信息选出与目标权值对应的输入神经元;
运算单元,还用于根据输入的目标权值和目标权值对应的输入神经元,完成神经网络运算得到输出神经元,并将所述输出神经元作为下一层的输入神经元传输给存储单元。
进一步的,所述预设条件包括:
所述M个权值的信息量小于第一预设阈值。
进一步的,所述M个权值的信息量为所述M个权值绝对值的算术平均值、所述M个权值绝对值的几何平均值或者所述M个权值的最大值,所述第一预设阈值为第一阈值、第二阈值或者第三阈值,所述M个权值的信息量小于第一预设阈值包括:
所述M个权值绝对值的算术平均值小于所述第一阈值,或者所述M个权值绝对值的几何平均值小于所述第二阈值,或者所述M个权值的最大值小于所述第三阈值。
进一步的,所述粗粒度剪枝单元和运算单元用于:
重复对所述神经网络的权值进行粗粒度剪枝以及根据剪枝后的权值进行训练,直至保证在精度不损失设定精度的前提下没有权值满足所述预设条件。
进一步的,所述神经网络包括全连接层、卷积层和/或长短期记忆LSTM层,其中,所述全连接层的权值是一个二维矩阵(Nin,Nout),其中Nin是输入神经元的个数,Nout是输出神经元的个数,所述全连接层有Nin*Nout个权值;所述卷积层的权值是一个四维矩阵(Nfin,Nfout,Kx,Ky),其中Nfin是输入特征图像的个数,Nfout是输出特征图像的个数,(Kx,Ky)是卷积核的大小,所述卷积层有Nfin*Nfout*Kx*Ky个权值;所述LSTM层的权值有m个全连接层的权值组成,所述m为大于0的整数,第i个全连接层权值为(Nin_i,Nout_i),其中i是大于0且小于或等于m的整数,Nin_i表示第i个全连接层权值输入神经元个数,Nout_i表示第i个全连接层权值输出神经元个数;所述粗粒度剪枝单元具体用于:
当对所述全连接层的权值进行粗粒度剪枝操作时,所述滑动窗口的大小为Bin*Bout的滑动窗口,其中所述Bin为大于0且小于或等于Nin整数,所述Bout为大于0且小于或等于Nout的整数;
使所述滑动窗口能够沿着Bin的方向按照步长Sin进行滑动,或者沿
着Bout的方向按照步长Sout进行滑动,其中Sin为大于0且小于或等于Bin的正整数,Sout为大于0且小于或等于Bout的正整数;
通过所述滑动窗口从所述Nin*Nout个权值中选取M个取值,当所述M个权值满足所述预设条件时,将所述M个权值全部或者部分置为零,其中,所述M=Bin*Bout;
当对所述卷积层的权值进行粗粒度剪枝操作时,所述滑动窗口为大小为Bfin*Bfout*Bx*By的四维滑动窗口,其中Bfin为大于0且小于或等于Nfin的整数,Bfout为大于0且小于或等于Nfout的整数,Bx为大于0且小于或等于Kx的整数,By为大于0且小于或等于Ky的整数;
使所述滑动窗口沿着Bfin的方向按照步长Sfin进行滑动,或者沿着Bfout的方向按照步长Sfout进行滑动,或者沿着Bx的方向按照步长S进行滑动,或沿着By的方向按照步长Sy进行滑动,其中Sfin 为大于0且小于或等于Bfin的整数,Sfout为大于0且小于或等于Bfout的整数,Sx为大于0且小于或等于Bx的整数,Sy为大于0且小于或等于By的整数;
通过所述滑动窗口从所述Nfin*Nfout*Kx*Ky个权值中选取M个权值,当所述M个权值满足所述预设条件时,将所述M个权值全部或者部分置为零,其中,所述M=Bfin*Bfout*Bx*By;
当对所述LSTM层的权值进行粗粒度剪枝操作时,所述滑动窗口的大小为Bin_i*Bout_i,其中Bin_i为大于0且小于或等于Nin_i的整数,Bout_i为大于0且小于或等于Nout_i的整数;
使所述滑动窗口沿着Bin_i的方向按照步长Sin_i进行滑动,或沿着Bout_i的方向按照步长Sout_i进行滑动,其中Sin_i为大于0且小于或等于Bin_i的正整数,Sout_i为大于0且小于或等于Bout_i的正整数;
通过所述滑动窗口从所述Bin_i*Bout_i个权值中选取M个权值,当所述M个权值满足所述预设条件时,将所述M个权值全部或者部分置为零,其中,所述M=Bin_i*Bout_i。
进一步的,所述处理装置还包括:指令控制单元,用于接收所述指令,经过译码后生成控制指令控制运算单元。
进一步的,所述存储单元用于存放的权值为目标权值以及所述目标权值位置数据。
进一步的,所述处理装置还包括预处理单元:用于对输入神经元和权值进行预处理,将预处理后的数据输入至所述存储单元。
进一步的,所述预处理包括数据的切分、高斯滤波、二值化、正则化和/或归一化处理。
进一步的,所述处理装置还包括指令缓存单元,用于缓存所述指令。
进一步的,所述处理装置还包括目标权值缓存单元,用于缓存目标权值数据。
进一步的,所述处理装置还包括目标权值位置缓存单元,用于缓存目标权值位置数据。
进一步的,所述处理装置还包括输入神经元缓存单元,用于缓存输入神经元。
进一步的,所述处理装置还包括输出神经元缓存单元,用于缓存输出神经元。
进一步的,所述指令缓存单元、目标权值缓存单元、目标权值位置缓存单元、输入神经元缓存单元或输出神经元缓存单元为片上缓存。
进一步的,目标权值位置缓存单元,用于缓存目标权值位置数据;目标权值位置缓存将输入数据中每个连接权值一一对应到相应的输入神经元。
进一步的,所述处理装置还包括直接内存存取DMA单元,用于在所述存储单元,与所述指令缓存单元、目标权值缓存单元、目标权值位置缓存单元、输入神经元缓存单元或输出神经元缓存单元中进行数据或者指令读写。
进一步的,所述运算单元包括以下至少一种:
乘法器,用于将所述第一输入数据和第二输入数据相乘,得到相乘之后的数据;
一个或多个加法器,用于将第三输入数据相加;
激活函数运算单元,用于对第五数据通过激活函数运算得到输出数据,所述激活函数包括sigmoid、tanh、relu或softmax函数。
进一步的,所述运算单元包括多个加法器,所述多个加法器组成加法树,用于将第三输入数据通过加法树逐级相加。
进一步的,所述运算单元还包池化单元,用于对输入的数据通过池化运算得到池化操作之后的输出数据,所述池化操作包括:平均值池化,最大值池化或者中值池化。
进一步的,所述运算单元还用于重复将剪枝后的神经网络进行训练,直至不损失设定精度的前提下没有权值能被置为零。
一种数据的量化方法,包括:
对神经网络的权值进行分组;
对每一组权值用聚类算法进行聚类操作,将一组权值分成m个类,每个类计算出一个中心权值,每个类中的所有权值都用中心权值替换,其中,m为正整数;以及
对中心权值进行编码操作,以得到密码本和权值字典。
进一步的,所述方法还包括:
对神经网络进行重训练,重训练时只训练密码本,权值字典内容保持不变。
进一步的,所述重训练采用反向传播算法。
进一步的,所述分组包括分为一组、层类型分组、层间分组和/或层内分组。
进一步的,所述聚类算法包括K-means、K-medoids、Clara和/或Clarans。
进一步的,所述分组为分为一组,包括:
将神经网络的所有权值归为一组。
进一步的,所述神经网络包括i个卷积层,j个全连接层,m个长短期记忆LSTM层,共t种不同类型的层,其中,i,j,m均为大于或等于0的整数,且满足i+j+m≥1,t为大于或等于1的整数且满足t=i+j+m,所述分组为层类型分组,包括:
将所述神经网络的权值将被分为t组。
进一步的,所述分组为层间分组,包括:
将神经网络中一个或者多个卷积层的权值、一个或者多个全连接层的权值和一个或者多个LSTM层的权值各划分成一组。
进一步的,所述分组为层内分组,包括:
将神经网络的卷积层作为一个四维矩阵(Nfin,Nfout,Kx,Ky),其中,Nfin,Nfout,Kx,Ky是正整数,Nfin表示输入特征图像数量,Nfout表示输出特征图像数量,(Kx,Ky)表示卷积核的大小,卷积层的权值按(Bfin,Bfout,Bx,By)的组大小被分成Nfin*Nfout*Kx*Ky/(Bfin*Bfout*Bx*By)个不同的组,其中Bfin为小于或等于Nfin的正整数,Bfout为小于或等于Nfout的正整数,Bx为小于或等于Kx的正整数,By为小于或等于Ky的正整数,或者;
将神经网络的全连接层作为一个二维矩阵(Nin,Nout),其中Nin,Nout是正整数,Nin表示输入神经元的个数,Nout表示输出神经元的个数,共有Nin*Nout个权值;全连接层权值按照(Bin,Bout)的组大小被分成(Nin*Nout)/(Bin*Bout)个不同的组,其中Bin是小于或等于Nin的正整数,Bout是小于或等于Nout的正整数,或者;
将神经网络的LSTM层权值作为多个全连接层的权值的组合,且LSTM层的权值由n个全连接层权值组成,其中n为正整数,则每一个全连接层都可以按照全连接层的分组方式进行分组操作。
进一步的,所述分组为分为一组、层内分组和层间分组,包括:
将卷积层作为一组,将全连接层进行层内分组,将LSTM层进行层间分组。
进一步的,所述一个类的中心权值选择方法为:使得代价函数J(w,w
0)最小。
进一步的,所述代价函数为:
其中,w是一个类中的权值,w0是该类的中心权值,n是该类中权值的数量,n为正整数,wi是该类中第i个权值,i为正整数,且1≤i≤n。
第十二方面,本发明实施例提供一种数据的量化装置,包括:
存储器,用于存储操作指令;以及
处理器,用于执行存储器中的操作指令,在执行该操作指令时依照第十一方面所述的全部或者部分量化方法进行操作。
进一步的,所述操作指令为二进制数,包括操作码和地址码,操作码指示处理器即将进行的操作, 地址码指示处理器到存储器中的地址中读取参与操作的数据。
第十三方面,本发明实施例提供了一种处理装置,包括:
控制单元,用于接收指令并进行译码,生成查找控制信息和运算控制信息;
查找表单元,用于接收所述查找控制信息、权值字典和密码本,并根据查找控制信息,对权值字典和密码本进行查表操作,得到量化权值;以及
运算单元,用于接收所述运算控制信息和输入神经元,并根据运算控制信息,对量化权值和输入神经元进行运算操作,得到输出神经元并输出。
进一步的,所述处理装置还包括:
预处理单元,用于对外部输入的输入信息进行预处理,得到所述输入神经元、权值字典、密码本和指令;
存储单元,用于存储输入神经元、权值字典、密码本和指令,以及接收输出神经元;
缓存单元,用于缓存所述指令、输入神经元、输出神经元、权值字典和密码本;
直接内存存取单元,用于在所述存储单元和缓存单元之间进行数据或者指令读写。
进一步的,所述预处理单元中,对外部输入的输入信息进行的预处理包括:切分、高斯滤波、二值化、正则化和/或归一化。
进一步的,所述缓存单元包括:
指令缓存单元,用于缓存所述指令;
输入神经元缓存单元,用于缓存所述输入神经元;
输出神经元缓存单元,用于缓存所述输出神经元。
进一步的,所述缓存单元还包括:
权值字典缓存单元,用于缓存所述权值字典;
密码本缓存单元,用于缓存所述密码本。
进一步的,所述指令为神经网络专用指令。
进一步的,所述神经网络专用指令包括:
控制指令,用于控制神经网络执行过程;
数据传输指令,用于完成不同存储介质之间的数据传输,数据格式包括矩阵、向量和标量;
运算指令,用于完成神经网络的算术运算,包括矩阵运算指令、向量运算指令、标量运算指令、卷积神经网络运算指令、全连接神经网络运算指令、池化神经网络运算指令、RBM神经网络运算指令、LRN神经网络运算指令、LCN神经网络运算指令、LSTM神经网络运算指令、RNN神经网络运算指令、RELU神经网络运算指令、PRELU神经网络运算指令、SIGMOID神经网络运算指令、TANH神经网络运算指令、MAXOUT神经网络运算指令;
逻辑指令,用于完成神经网络的逻辑运算,包括向量逻辑运算指令和标量逻辑运算指令。
进一步的,所述神经网络专用指令包括至少一种Cambricon指令,该Cambricon指令包括操作码和操作数,所述Cambricon指令包括:
Cambricon控制指令,用于控制执行过程,且该Cambricon控制指令包括跳转指令和条件分支指令;
Cambricon数据传输指令,用于完成不同存储介质之间的数据传输,包括加载指令、存储指令、搬运指令;其中,所述加载指令用于将数据从主存加载到缓存;存储指令用于将数据从缓存存储到主存;搬运指令用于在缓存与缓存或者缓存与寄存器或者寄存器与寄存器之间搬运数据;
Cambricon运算指令,用于完成神经网络算术运算,包括Cambricon矩阵运算指令、Cambricon向量运算指令和Cambricon标量运算指令;
其中,所述Cambricon矩阵运算指令用于完成神经网络中的矩阵运算,包括矩阵乘向量、向量乘矩阵、矩阵乘标量、外积、矩阵加矩阵和矩阵减矩阵;所述Cambricon向量运算指令用于完成神经网络中 的向量运算,包括向量基本运算、向量超越函数运算、内积、向量随机生成和向量中最大/最小值;Cambricon标量运算指令用于完成神经网络中的标量运算,包括标量基本运算和标量超越函数运算;
Cambricon逻辑指令,用于神经网络的逻辑运算,Cambricon逻辑指令包括Cambricon向量逻辑运算指令和Cambricon标量逻辑运算指令;
其中,所述Cambricon向量逻辑运算指令用于完成向量比较、向量逻辑运算和向量大于合并;向量逻辑运算包括与、或、非;所述Cambricon标量逻辑运算指令用于完成标量比较和标量逻辑运算。
进一步的,所述Cambricon数据传输指令支持以下的一种或者多种数据组织方式:矩阵、向量和标量;
所述向量基本运算包括向量加、减、乘、除;
向量超越函数指不满足以多项式作系数的多项式方程的函数,包括指数函数、对数函数、三角函数、反三角函数;
所述标量基本运算包括标量加、减、乘、除;标量超越函数指不满足以多项式作系数的多项式方程的函数,包括指数函数、对数函数、三角函数、反三角函数;
所述向量比较包括但不限于大于、小于、等于、大于或等于(≥)、小于或等于(≤)和不等于;
所述向量逻辑运算包括与、或、非;
所述标量比较包括但不限于大于、小于、等于、大于或等于(≥)、小于或等于(≤)和不等于;
所述标量逻辑运算包括与、或、非。
进一步的,所述存储单元还用于存储未量化权值,且该未量化权值直接输出至运算单元。
进一步的,所述运算单元包括:
第一运算部分,用于将所述权值和输入神经元相乘,和/或;
第二运算部分,包括一个或者多个加法器,用于对所述权值和输入神经元通过一个或多个加法器相加,和/或;
第三运算部分,对所述权值和输入神经元进行非线性函数运算,所述非线性函数包括激活函数,所述激活函数包括sigmoid、tanh、relu和/或softmax,和/或;
第四运算部分,用于对所述权值和输入神经元进行池化操作,所述池化操作包括平均值池化、最大值池化和/或中值池化;其中,所述权值包括未量化权值和/或量化权值。
进一步的,所述第二运算部分包括多个加法器,所述多个加法器组成加法树,实现权值和输入神经元的逐级相加。
一种处理方法,包括步骤:
接收输入神经元、权值字典、密码本和指令;
对所述指令进行译码,以得到查找控制信息和运算控制信息;
根据所述查找控制信息,查找权值字典和密码本得到量化权值,以及根据所述运算控制信息,对该量化权值以及输入神经元进行运算操作,得到输出神经元并输出。
进一步的,在所述接收输入神经元、权值字典、密码本和指令之前,所述方法还包括步骤:
对外部输入的输入信息进行预处理,得到所述输入神经元、权值字典、密码本和指令,以及;
在所述接收输入神经元、权值字典、密码本和指令之后,所述方法还包括步骤:
存储输入神经元、权值字典、密码本和指令,以及存储输出神经元;以及缓存所述指令、输入神经元、输出神经元。
进一步的,在所述接收输入神经元、权值字典、密码本和指令之后,所述方法还包括步骤:缓存权值字典和密码本。
进一步的,所述预处理包括切分、高斯滤波、二值化、正则化和、或归一化。
进一步的,所述指令为神经网络专用指令。
进一步的,所述神经网络专用指令包括:
控制指令,用于控制神经网络执行过程;
数据传输指令,用于完成不同存储介质之间的数据传输,数据格式包括矩阵、向量和标量;
运算指令,用于完成神经网络的算术运算,该运算指令包括矩阵运算指令、向量运算指令、标量运算指令、卷积神经网络运算指令、全连接神经网络运算指令、池化神经网络运算指令、RBM神经网络运算指令、LRN神经网络运算指令、LCN神经网络运算指令、LSTM神经网络运算指令、RNN神经网络运算指令、RELU神经网络运算指令、PRELU神经网络运算指令、SIGMOID神经网络运算指令、TANH神经网络运算指令、MAXOUT神经网络运算指令;
逻辑指令,用于完成神经网络的逻辑运算,该逻辑指令包括向量逻辑运算指令和标量逻辑运算指令。
进一步的,所述神经网络专用指令包括至少一种Cambricon指令,该Cambricon指令包括操作码和操作数,所述Cambricon指令包括:
Cambricon控制指令,用于控制执行过程,且该Cambricon控制指令包括跳转指令和条件分支指令;
Cambricon数据传输指令,用于完成不同存储介质之间的数据传输,该Cambricon数据传输指令包括加载指令、存储指令、搬运指令;
其中,所述加载指令用于将数据从主存加载到缓存;存储指令用于将数据从缓存存储到主存;搬运指令用于在缓存与缓存或者缓存与寄存器或者寄存器与寄存器之间搬运数据;
Cambricon运算指令,用于完成神经网络算术运算,该Cambricon运算指令包括Cambricon矩阵运算指令、Cambricon向量运算指令和Cambricon标量运算指令;
其中,所述Cambricon矩阵运算指令用于完成神经网络中的矩阵运算,包括矩阵乘向量、向量乘矩阵、矩阵乘标量、外积、矩阵加矩阵和矩阵减矩阵;所述Cambricon向量运算指令用于完成神经网络中的向量运算,包括向量基本运算、向量超越函数运算、内积、向量随机生成和向量中最大/最小值;Cambricon标量运算指令用于完成神经网络中的标量运算,包括标量基本运算和标量超越函数运算;
Cambricon逻辑指令用于神经网络的逻辑运算,该Cambricon逻辑指令包括Cambricon向量逻辑运算指令和Cambricon标量逻辑运算指令;其中,所述Cambricon向量逻辑运算指令用于完成向量比较、向量逻辑运算和向量大于合并;向量逻辑运算包括与、或、非;所述Cambricon标量逻辑运算指令用于完成标量比较和标量逻辑运算。
进一步的,所述Cambricon数据传输指令支持以下的一种或者多种数据组织方式:矩阵、向量和标量;所述向量基本运算包括向量加、减、乘、除;向量超越函数指不满足以多项式作系数的多项式方程的函数,包括指数函数、对数函数、三角函数、反三角函数;所述标量基本运算包括标量加、减、乘、除;标量超越函数指不满足以多项式作系数的多项式方程的函数,包括指数函数、对数函数、三角函数、反三角函数;所述向量比较包括但不限于大于、小于、等于、大于或等于(≥)、小于或等于(≤)和不等于;所述向量逻辑运算包括与、或、非;所述标量比较包括但不限于大于、小于、等于、大于或等于(≥)、小于或等于(≤)和不等于;所述标量逻辑运算包括与、或、非。
进一步的,还包括步骤:接收未量化权值,根据运算控制信息,对该未量化权值和输入神经元进行运算,得到输出神经元并输出。
进一步的,所述运算操作包括:
将权值和输入神经元相加,和/或;
将权值和输入神经元相乘,和/或;
对所述权值和输入神经元进行非线性函数运算,所述非线性函数包括激活函数,所述激活函数包括sigmoid、tanh、relu和/或softmax,和/或;
对所述权值和输入神经元进行池化操作,所述池化操作包括平均值池化、最大值池化和/或中值池 化,
其中,所述权值包括量化权值和/或非量化权值。
进一步的,权值和输入神经元的相加由一个或多个加法器实现。
进一步的,所述多个加法器构成加法树,实现权值和输入神经元的逐级相加。
一种处理装置,包括:
控制单元,用于接收指令并进行译码,生成查找控制信息和运算控制信息;
查找表单元,用于接收所述查找控制信息、权值字典和密码本,并根据查找控制信息,对权值字典和密码本进行查表操作,以得到量化权值;以及
运算单元,用于接收所述运算控制信息、输入神经元和所述量化权值,并根据运算控制信息,对所述量化权值和输入神经元进行运算操作,以得到并将输出神经元输出。
进一步的,所述处理装置还包括:
预处理单元,用于对外部输入的输入信息进行预处理,以得到所述输入神经元、权值字典、密码本和指令;
存储单元,用于存储所述输入神经元、权值字典、密码本和指令,以及接收所述输出神经元;
缓存单元,用于缓存所述指令、输入神经元、输出神经元、权值字典和密码本;以及
直接内存存取单元,用于在所述存储单元和缓存单元之间进行数据或者指令读写。
进一步的,所述预处理单元对外部输入的输入信息进行的预处理包括:切分、高斯滤波、二值化、正则化和/或归一化。
进一步的,所述缓存单元包括:
指令缓存单元,用于缓存所述指令;
输入神经元缓存单元,用于缓存所述输入神经元;以及
输出神经元缓存单元,用于缓存所述输出神经元。
进一步的,所述缓存单元还包括:
权值字典缓存单元,用于缓存所述权值字典;以及
密码本缓存单元,用于缓存所述密码本。
进一步的,所述指令为神经网络专用指令。
进一步的,所述神经网络专用指令包括:
控制指令,用于控制神经网络执行过程;
数据传输指令,用于完成不同存储介质之间的数据传输,数据格式包括矩阵、向量和标量;
运算指令,用于完成神经网络的算术运算,包括矩阵运算指令、向量运算指令、标量运算指令、卷积神经网络运算指令、全连接神经网络运算指令、池化神经网络运算指令、受限玻尔兹曼机RBM神经网络运算指令、近邻归一化LRN神经网络运算指令、局部对比度归一化LCN神经网络运算指令、长短期记忆LSTM神经网络运算指令、循环神经网络RNN运算指令、线性修正单元RELU神经网络运算指令、带参数的线性修正单元PRELU神经网络运算指令、S型生长曲线SIGMOID神经网络运算指令、双曲正切函数TANH神经网络运算指令、最大输出MAXOUT神经网络运算指令;以及
逻辑指令,用于完成神经网络的逻辑运算,包括向量逻辑运算指令和标量逻辑运算指令。
进一步的,所述神经网络专用指令包括至少一种Cambricon指令,该Cambricon指令包括操作码和操作数,所述Cambricon指令包括:
Cambricon控制指令,用于控制执行过程,且该Cambricon控制指令包括跳转指令和条件分支指令;
Cambricon数据传输指令,用于完成不同存储介质之间的数据传输,包括加载指令、存储指令、搬运指令;其中,所述加载指令用于将数据从主存加载到缓存;存储指令用于将数据从缓存存储到主存; 搬运指令用于在缓存与缓存之间,或者缓存与寄存器之间,或者寄存器与寄存器之间搬运数据;
Cambricon运算指令用于完成神经网络算术运算,包括Cambricon矩阵运算指令、Cambricon向量运算指令和Cambricon标量运算指令;其中,所述Cambricon矩阵运算指令用于完成神经网络中的矩阵运算,包括矩阵乘向量、向量乘矩阵、矩阵乘标量、外积、矩阵加矩阵和矩阵减矩阵;所述Cambricon向量运算指令用于完成神经网络中的向量运算,包括向量基本运算、向量超越函数运算、内积、向量随机生成和向量中最大/最小值;Cambricon标量运算指令用于完成神经网络中的标量运算,包括标量基本运算和标量超越函数运算;以及
Cambricon逻辑指令用于神经网络的逻辑运算,逻辑运算包括Cambricon向量逻辑运算指令和Cambricon标量逻辑运算指令;其中,所述Cambricon向量逻辑运算指令包括向量比较、向量逻辑运算和向量大于合并;向量逻辑运算包括与、或、非;所述Cambricon标量逻辑运算包括标量比较和标量逻辑运算。
进一步的,所述Cambricon数据传输指令支持以下的一种或者多种数据组织方式:矩阵、向量和标量;所述向量基本运算包括向量加、减、乘、除;向量超越函数指不满足以多项式作系数的多项式方程的函数,包括指数函数、对数函数、三角函数、反三角函数;所述标量基本运算包括标量加、减、乘、除;标量超越函数指不满足以多项式作系数的多项式方程的函数,包括指数函数、对数函数、三角函数、反三角函数;所述向量比较包括大于、小于、等于、大于或等于、小于或等于和不等于;所述向量逻辑运算包括与、或、非;所述标量比较包括大于、小于、等于、大于或等于、小于或等于和不等于;所述标量逻辑运算包括与、或、非。
进一步的,所述存储单元还用于存储未量化权值,且该未量化权值直接输出至运算单元。
进一步的,所述运算单元包括:
第一运算部分,用于将所述权值和输入神经元相乘;和/或,
第二运算部分,包括一个或者多个加法器,用于对所述权值和输入神经元通过一个或多个加法器相加;和/或,
第三运算部分,对所述权值和输入神经元进行非线性函数运算,所述非线性函数包括激活函数,所述激活函数包括sigmoid、tanh、relu和/或softmax;和/或,
第四运算部分,用于对所述权值和输入神经元进行池化操作,所述池化操作包括平均值池化、最大值池化和/或中值池化;
其中,所述权值包括未量化权值和/或量化权值。
进一步的,所述第二运算部分包括多个加法器,所述多个加法器组成加法树,实现权值和输入神经元的逐级相加。
一种处理方法,包括步骤:
接收输入神经元、权值字典、密码本和指令;
对所述指令进行译码,以得到查找控制信息和运算控制信息;以及
根据所述查找控制信息,查找权值字典和密码本以得到量化权值,并根据所述运算控制信息,对该量化权值以及输入神经元进行运算操作,以得到并将输出神经元输出。
进一步的,所述接收输入神经元、权值字典、密码本和指令之前,所述方法还包括步骤:
对外部输入的输入信息进行预处理,得到所述输入神经元、权值字典、密码本和指令;以及
所述接收输入神经元、权值字典、密码本和指令之后,所述还包括步骤:
存储所述输入神经元、权值字典、密码本和指令,以及存储输出神经元;以及缓存所述指令、输入神经元、输出神经元。
进一步的,在所述接收输入神经元、权值字典、密码本和指令之后,所述方法还包括步骤:
缓存权值字典和密码本。
进一步的,所述预处理包括切分、高斯滤波、二值化、正则化和、或归一化。
进一步的,所述指令为神经网络专用指令。
进一步的,所述神经网络专用指令包括:
控制指令,用于控制神经网络执行过程;
数据传输指令,用于完成不同存储介质之间的数据传输,数据格式包括矩阵、向量和标量;
运算指令,用于完成神经网络的算术运算,包括矩阵运算指令、向量运算指令、标量运算指令、卷积神经网络运算指令、全连接神经网络运算指令、池化神经网络运算指令、受限玻尔兹曼机RBM神经网络运算指令、近邻归一化LRN神经网络运算指令、LCN局部对比度归一化神经网络运算指令、长短期记忆LSTM神经网络运算指令、循环神经网络RNN运算指令、线性修正单元RELU神经网络运算指令、带参数的线性修正单元PRELU神经网络运算指令、S型生长曲线SIGMOID神经网络运算指令、双曲正切函数TANH神经网络运算指令、最大输出MAXOUT神经网络运算指令;以及
逻辑指令,用于完成神经网络的逻辑运算,包括向量逻辑运算指令和标量逻辑运算指令。
进一步的,所述神经网络专用指令包括至少一种Cambricon指令,该Cambricon指令包括操作码和操作数,所述Cambricon指令包括:
Cambricon控制指令用于控制执行过程,且该Cambricon控制指令包括跳转指令和条件分支指令;
Cambricon数据传输指令用于完成不同存储介质之间的数据传输,包括加载指令、存储指令、搬运指令;其中,所述加载指令用于将数据从主存加载到缓存;存储指令用于将数据从缓存存储到主存;搬运指令用于在缓存与缓存或者缓存与寄存器或者寄存器与寄存器之间搬运数据;
Cambricon运算指令用于完成神经网络算术运算,包括Cambricon矩阵运算指令、Cambricon向量运算指令和Cambricon标量运算指令;其中,所述Cambricon矩阵运算指令用于完成神经网络中的矩阵运算,包括矩阵乘向量、向量乘矩阵、矩阵乘标量、外积、矩阵加矩阵和矩阵减矩阵;所述Cambricon向量运算指令用于完成神经网络中的向量运算,包括向量基本运算、向量超越函数运算、内积、向量随机生成和向量中最大/最小值;Cambricon标量运算指令用于完成神经网络中的标量运算,包括标量基本运算和标量超越函数运算;以及
Cambricon逻辑指令用于神经网络的逻辑运算,逻辑运算包括Cambricon向量逻辑运算指令和Cambricon标量逻辑运算指令;其中,所述Cambricon向量逻辑运算指令包括向量比较、向量逻辑运算和向量大于合并;向量逻辑运算包括与、或、非;所述Cambricon标量逻辑运算包括标量比较和标量逻辑运算。
进一步的,所述Cambricon数据传输指令支持以下的一种或者多种数据组织方式:矩阵、向量和标量;所述向量基本运算包括向量加、减、乘、除;向量超越函数指不满足以多项式作系数的多项式方程的函数,包括指数函数、对数函数、三角函数、反三角函数;所述标量基本运算包括标量加、减、乘、除;标量超越函数指不满足以多项式作系数的多项式方程的函数,包括指数函数、对数函数、三角函数、反三角函数;所述向量比较包括大于、小于、等于、大于或等于、小于或等于和不等于;所述向量逻辑运算包括与、或、非;所述标量比较包括大于、小于、等于、大于或等于、小于或等于和不等于;所述标量逻辑运算包括与、或、非。
进一步的,所述还包括步骤:
接收未量化权值,根据运算控制信息,对该未量化权值和输入神经元进行运算,以得到并将输出神经元输出。
进一步的,所述运算操作包括:
将权值和输入神经元相加;和/或
将权值和输入神经元相乘;和/或
对所述权值和输入神经元进行非线性函数运算,所述非线性函数包括激活函数,所述激活函数包括sigmoid、tanh、relu和/或softmax;和/或
对所述权值和输入神经元进行池化操作,所述池化操作包括平均值池化、最大值池化和/或中值池化,
其中,所述权值包括量化权值和/或非量化权值。
进一步的,权值和输入神经元的相加由一个或多个加法器实现。
进一步的,所述多个加法器构成加法树,实现权值和输入神经元的逐级相加。
一种数据的量化方法,包括步骤:
对神经网络的权值进行分组;
对每一组权值用聚类算法进行聚类操作,将一组权值分成m个类,计算出每个类的中心权值,每个类中的所有权值都用该类对应的中心权值替换,其中,m为正整数;以及
对中心权值进行编码操作,以得到密码本和权值字典。
进一步的,所述方法还包括步骤:
对神经网络进行重训练,重训练时只训练密码本,权值字典内容保持不变。
进一步的,所述重训练采用反向传播算法。
进一步的,所述分组包括分为一组、层类型分组、层间分组和/或层内分组。
进一步的,所述聚类算法包括K-means、K-medoids、Clara和/或Clarans。
进一步的,所述分组为分为一组,具体包括:
将神经网络的所有权值归为一组。
进一步的,所述神经网络包括i个卷积层,j个全连接层,m个长短期记忆LSTM层一个卷积层、j个全连接层,共t种不同类型的层,其中,i,j,m均为大于0的整数,且满足i+j+m≥1,t为大于等于1的正整数且满足t=i+j+m,所述分组为层类型分组,包括:
将所述神经网络的权值将被分为t组。
进一步的,所述分组为层间分组,包括:
将神经网络中一个或者多个卷积层的权值、一个或者多个全连接层的权值和一个或者多个LSTM层的权值各划分成一组。
进一步的,所述分组为层内分组,包括:
将神经网络的卷积层作为一个四维矩阵(Nfin,Nfout,Kx,Ky),其中,Nfin,Nfout,Kx,Ky是正整数,Nfin表示输入特征图像数量,Nfout表示输出特征图像数量,(Kx,Ky)表示卷积核的大小,卷积层的权值按(Bfin,Bfout,Bx,By)的组大小被分成Nfin*Nfout*Kx*Ky/(Bfin*Bfout*Bx*By)个不同的组,其中Bfin为小于或等于Nfin的正整数,Bfout为小于或等于Nfout的正整数,Bx为小于或等于Kx的正整数,By为小于或等于Ky的正整数,或者;
将神经网络的全连接层作为一个二维矩阵(Nin,Nout),其中Nin,Nout是正整数,Nin表示输入神经元的个数,Nout表示输出神经元的个数,共有Nin*Nout个权值;全连接层权值按照(Bin,Bout)的组大小被分成(Nin*Nout)/(Bin*Bout)个不同的组,其中Bin是小于或等于Nin的正整数,Bout是小于或等于Nout的正整数,或者;
将神经网络的LSTM层权值作为多个全连接层的权值的组合,且LSTM层的权值由n个全连接层权值组成,其中n为正整数,则每一个全连接层都可以按照全连接层的分组方式进行分组操作。
进一步的,所述分组为分为一组、层内分组和层间分组,包括:
将卷积层作为一组,将全连接层进行层内分组,将LSTM层进行层间分组。
进一步的,所述一个类的中心权值选择方法为:使得代价函数J(w,w
0)最小。
进一步的,所述代价函数为:
其中,w是一个类中的权值,w0是该类的中心权值,n是该类中权值的数量,n为正整数,wi是该类中第i个权值,i为正整数,且1≤i≤n。
一种数据的量化装置,包括:
存储器,用于存储操作指令;
处理器,用于执行存储器中的操作指令,在执行该操作指令时依照前述的量化方法进行操作。
进一步的,所述操作指令为二进制数,包括操作码和地址码,操作码指示处理器即将进行的操作,地址码指示处理器到存储器中的地址中读取参与操作的数据。
一种处理装置,包括:
控制单元,用于接收指令并对该指令进行译码,以得到查找控制信息和运算控制信息;
查找表单元,用于接收所述查找控制信息、权值字典和密码本,并根据查找控制信息,对所述权值字典和密码本进行查表操作,以得到量化权值;以及
运算单元,用于接收所述运算控制信息、所述量化权值和输入神经元,并根据所述运算控制信息,对所述量化权值和输入神经元进行运算操作,以得到并将输出神经元输出。
进一步的,所述处理装置还包括:
预处理单元,用于对外部输入的输入信息进行预处理,得到所述输入神经元、权值字典、密码本和指令;
存储单元,用于存储所述输入神经元、权值字典、密码本和指令,以及接收输出神经元;
缓存单元,用于缓存所述指令、输入神经元、输出神经元、权值字典和密码本;以及,
直接内存存取单元,用于在所述存储单元和缓存单元之间进行数据或者指令读写。
进一步的,所述预处理单元对外部输入的输入信息进行的预处理操作包括:切分、高斯滤波、二值化、正则化和/或归一化。
进一步的,所述缓存单元包括:
指令缓存单元,用于缓存所述指令;
输入神经元缓存单元,用于缓存所述输入神经元;以及,
输出神经元缓存单元,用于缓存所述输出神经元。
进一步的,所述缓存单元还包括:权值字典缓存,用于缓存所述权值字典;以及密码本缓存,用于缓存所述密码本。
进一步的,所述指令为神经网络专用指令。
进一步的,所述神经网络专用指令包括:
控制指令,用于控制神经网络执行过程;
数据传输指令,用于完成不同存储介质之间的数据传输,数据格式包括矩阵、向量和标量;
运算指令,用于完成神经网络的算术运算,包括矩阵运算指令、向量运算指令、标量运算指令、卷积神经网络运算指令、全连接神经网络运算指令、池化神经网络运算指令、RBM神经网络运算指令、LRN神经网络运算指令、LCN神经网络运算指令、LSTM神经网络运算指令、RNN神经网络运算指令、RELU神经网络运算指令、PRELU神经网络运算指令、SIGMOID神经网络运算指令、TANH神经网络运算指令、MAXOUT神经网络运算指令;
以及逻辑指令,用于完成神经网络的逻辑运算,包括向量逻辑运算指令和标量逻辑运算指令。
进一步的,所述神经网络专用指令包括至少一种Cambricon指令,该Cambricon指令包括操作码和操作数,所述Cambricon指令包括:Cambricon控制指令用于控制执行过程,且该Cambricon控制指令包括跳转指令和条件分支指令;Cambricon数据传输指令用于完成不同存储介质之间的数据传输,包括 加载指令、存储指令、搬运指令;其中,所述加载指令用于将数据从主存加载到缓存;存储指令用于将数据从缓存存储到主存;搬运指令用于在缓存与缓存或者缓存与寄存器或者寄存器与寄存器之间搬运数据;Cambricon运算指令用于完成神经网络算术运算,包括Cambricon矩阵运算指令、Cambricon向量运算指令和Cambricon标量运算指令;其中,所述Cambricon矩阵运算指令用于完成神经网络中的矩阵运算,包括矩阵乘向量、向量乘矩阵、矩阵乘标量、外积、矩阵加矩阵和矩阵减矩阵;所述Cambricon向量运算指令用于完成神经网络中的向量运算,包括向量基本运算、向量超越函数运算、内积、向量随机生成和向量中最大/最小值;Cambricon标量运算指令用于完成神经网络中的标量运算,包括标量基本运算和标量超越函数运算;Cambricon逻辑指令用于神经网络的逻辑运算,逻辑运算指令包括Cambricon向量逻辑运算指令和Cambricon标量逻辑运算指令;其中,所述Cambricon向量逻辑运算指令用于完成向量比较、向量逻辑运算和向量大于合并;向量逻辑运算包括与、或、非;所述Cambricon标量逻辑运算指令用于完成标量比较和标量逻辑运算。
进一步的,所述Cambricon数据传输指令支持以下的一种或者多种数据组织方式:矩阵、向量和标量;所述向量基本运算包括向量加、减、乘、除;向量超越函数指不满足以多项式作系数的多项式方程的函数,包括指数函数、对数函数、三角函数、反三角函数;所述标量基本运算包括标量加、减、乘、除;标量超越函数指不满足以多项式作系数的多项式方程的函数,包括指数函数、对数函数、三角函数、反三角函数;所述向量比较包括大于、小于、等于、大于或等于(≥)、小于或等于(≤)和不等于;所述向量逻辑运算包括与、或、非;所述标量比较包括大于、小于、等于、大于或等于(≥)、小于或等于(≤)和不等于;所述标量逻辑运算包括与、或、非。
进一步的,所述存储单元还用于存储未量化权值,且该未量化权值直接输出至运算单元。
进一步的,所述运算单元包括:第一运算部分,用于将所述权值和输入神经元相乘;和/或第二运算部分,包括一个或者多个加法器,用于对所述权值和输入神经元通过一个或多个加法器相加;和/或第三运算部分,对所述权值和输入神经元进行非线性函数运算,所述非线性函数包括激活函数,所述激活函数包括sigmoid、tanh、relu和/或softmax;和/或第四运算部分,用于对所述权值和输入神经元进行池化操作,所述池化操作包括平均值池化、最大值池化和/或中值池化;其中,所述权值为未量化权值和/或量化权值。
进一步的,所述第二运算部分包括多个加法器,所述多个加法器组成加法树,实现权值和输入神经元的逐级相加。
一种处理方法,包括步骤:
接收输入神经元、权值字典、密码本和指令;
对所述指令进行译码,以得到查找控制信息和运算控制信息;以及
根据所述查找控制信息,查找权值字典和密码本以得到量化权值,根据所述运算控制信息,对该量化权值以及输入神经元进行运算操作,以得到并将输出神经元输出。
进一步的,在所述接收输入神经元、权值字典、密码本和指令之前,所述方法还包括步骤:
对外部输入的输入信息进行预处理,以得到所述输入神经元、权值字典、密码本和指令;
以及在所述接收输入神经元、权值字典、密码本和指令之后,所述方法还包括步骤:
存储所述输入神经元、权值字典、密码本和指令,以及存储输出神经元;以及缓存所述指令、输入神经元、输出神经元。
进一步的,在接收输入神经元、权值字典、密码本和指令之后,所述方法还包括步骤:缓存权值字典和密码本。
进一步的,所述预处理包括切分、高斯滤波、二值化、正则化和、或归一化。
进一步的,所述指令为神经网络专用指令。
进一步的,所述神经网络专用指令包括:控制指令,用于控制神经网络执行过程;数据传输指令, 用于完成不同存储介质之间的数据传输,数据格式包括矩阵、向量和标量;运算指令,用于完成神经网络的算术运算,包括矩阵运算指令、向量运算指令、标量运算指令、卷积神经网络运算指令、全连接神经网络运算指令、池化神经网络运算指令、RBM神经网络运算指令、LRN神经网络运算指令、LCN神经网络运算指令、LSTM神经网络运算指令、RNN神经网络运算指令、RELU神经网络运算指令、PRELU神经网络运算指令、SIGMOID神经网络运算指令、TANH神经网络运算指令、MAXOUT神经网络运算指令;以及逻辑指令,用于完成神经网络的逻辑运算,包括向量逻辑运算指令和标量逻辑运算指令。
进一步的,所述神经网络专用指令包括至少一种Cambricon指令,该Cambricon指令包括操作码和操作数,所述Cambricon指令包括:Cambricon控制指令用于控制执行过程,且该Cambricon控制指令包括跳转指令和条件分支指令;Cambricon数据传输指令用于完成不同存储介质之间的数据传输,包括加载指令、存储指令、搬运指令;其中,所述加载指令用于将数据从主存加载到缓存;存储指令用于将数据从缓存存储到主存;搬运指令用于在缓存与缓存或者缓存与寄存器或者寄存器与寄存器之间搬运数据;Cambricon运算指令用于完成神经网络算术运算,包括Cambricon矩阵运算指令、Cambricon向量运算指令和Cambricon标量运算指令;其中,所述Cambricon矩阵运算指令用于完成神经网络中的矩阵运算,包括矩阵乘向量、向量乘矩阵、矩阵乘标量、外积、矩阵加矩阵和矩阵减矩阵;所述Cambricon向量运算指令用于完成神经网络中的向量运算,包括向量基本运算、向量超越函数运算、内积、向量随机生成和向量中最大/最小值;Cambricon标量运算指令用于完成神经网络中的标量运算,包括标量基本运算和标量超越函数运算;以及Cambricon逻辑指令用于神经网络的逻辑运算,逻辑运算指令包括Cambricon向量逻辑运算指令和Cambricon标量逻辑运算指令;其中,所述Cambricon向量逻辑运算指令用于完成向量比较、向量逻辑运算和向量大于合并;向量逻辑运算包括与、或、非;所述Cambricon标量逻辑运算指令用于完成标量比较和标量逻辑运算。
进一步的,所述Cambricon数据传输指令支持以下的一种或者多种数据组织方式:矩阵、向量和标量;所述向量基本运算包括向量加、减、乘、除;向量超越函数指不满足以多项式作系数的多项式方程的函数,包括指数函数、对数函数、三角函数、反三角函数;所述标量基本运算包括标量加、减、乘、除;标量超越函数指不满足以多项式作系数的多项式方程的函数,包括指数函数、对数函数、三角函数、反三角函数;所述向量比较包括大于、小于、等于、大于或等于(≥)、小于或等于(≤)和不等于;所述向量逻辑运算包括与、或、非;所述标量比较包括大于、小于、等于、大于或等于(≥)、小于或等于(≤)和不等于;所述标量逻辑运算包括与、或、非。
进一步的,所述方法还包括步骤:
接收未量化权值,根据运算控制信息,对该未量化权值和输入神经元进行运算,得到并将输出神经元输出。
进一步的,所述运算操作包括:将权值和输入神经元相加;和/或将权值和输入神经元相乘;和/或对所述权值和输入神经元进行非线性函数运算,所述非线性函数包括激活函数,所述激活函数包括sigmoid、tanh、relu和/或softmax;和/或对所述权值和输入神经元进行池化操作,所述池化操作包括平均值池化、最大值池化和/或中值池化,其中,所述权值包括量化权值和/或非量化权值。
进一步的,权值和输入神经元的相加由一个或多个加法器实现。
进一步的,所述多个加法器构成加法树,实现权值和输入神经元的逐级相加。
一种数据压缩方法,包括:
对神经网络的权值进行粗粒度剪枝,包括:根据滑动窗口从神经网络选取出M个权值,当所述M个权值满足预设条件时,将所述M个权值全部或者部分置为零,所述M为大于0的整数;对神经网络进行第一重训练,训练过程中已经被置为零的权值保持为零;
对所述神经网络的权值进行量化,包括:对神经网络的权值进行分组,根据聚类算法对每组权值进 行聚类操作,计算出每个类的中心权值,并将每个类中的所有权值都用中心权值替换。
进一步的,所述对所述对神经网络的权值进行量化之后,所述方法还包括:
对所述中心权值进行编码操作,得到密码本和权值字典。
进一步的,所述对所述中心权值进行编码操作之后,所述方法还包括:
对所述神经网络进行第二重训练。
进一步的,对所述神经网络进行第二重训练时只训练密码本,权值字典内容保持不变。
进一步的,所述预设条件为:
所述M个权值的信息量小于第一预设阈值。
进一步的,所述M个权值的信息量为所述M个权值绝对值的算术平均值、所述M个权值绝对值的几何平均值或者所述M个权值的最大值,所述第一预设阈值为第一阈值、第二阈值或者第三阈值,所述M个权值的信息量小于第一预设阈值包括:
所述M个权值绝对值的算术平均值小于所述第一阈值,或者所述M个权值绝对值的几何平均值小于所述第二阈值,或者所述M个权值的最大值小于所述第三阈值。
进一步的,所述方法还包括:
重复使用滑动窗口从神经网络选取M个权值,当所述M个权值满足预设条件时,将所述M个权值全部或者部分置为零;以及对所述神经网络进行第一重训练,直至保证不损失设定精度的前提下没有权值能被置为零。
进一步的,所述设定精度为x%,其中x介于0至5之间。
进一步的,所述神经网络包括全连接层、卷积层和/或长短期记忆LSTM层,其中,所述全连接层的权值是一个二维矩阵(Nin,Nout),其中Nin是输入神经元的个数,Nout是输出神经元的个数,所述全连接层有Nin*Nout个权值;所述卷积层的权值是一个四维矩阵(Nfin,Nfout,Kx,Ky),其中Nfin是输入特征图像的个数,Nfout是输出特征图像的个数,(Kx,Ky)是卷积核的大小,所述卷积层有Nfin*Nfout*Kx*Ky个权值;所述LSTM层的权值有m个全连接层的权值组成,所述m为大于0的整数,第i个全连接层权值为(Nin_i,Nout_i),其中i是大于0且小于或等于m的整数,Nin_i表示第i个全连接层权值输入神经元个数,Nout_i表示第i个全连接层权值输出神经元个数;所述粗粒度剪枝单元具体用于:
当对所述全连接层的权值进行粗粒度剪枝操作时,所述滑动窗口的大小为Bin*Bout的滑动窗口,其中所述Bin为大于0且小于或等于Nin整数,所述Bout为大于0且小于或等于Nout的整数;
使所述滑动窗口能够沿着Bin的方向按照步长Sin进行滑动,或者沿
着Bout的方向按照步长Sout进行滑动,其中Sin为大于0且小于或等于Bin的正整数,Sout为大于0且小于或等于Bout的正整数;
通过所述滑动窗口从所述Nin*Nout个权值中选取M个取值,当所述M个权值满足所述预设条件时,将所述M个权值全部或者部分置为零,其中,所述M=Bin*Bout;
当对所述卷积层的权值进行粗粒度剪枝操作时,所述滑动窗口为大小为Bfin*Bfout*Bx*By的四维滑动窗口,其中Bfin为大于0且小于或等于Nfin的整数,Bfout为大于0且小于或等于Nfout的整数,Bx为大于0且小于或等于Kx的整数,By为大于0且小于或等于Ky的整数;
使所述滑动窗口沿着Bfin的方向按照步长Sfin进行滑动,或者沿着Bfout的方向按照步长Sfout进行滑动,或者沿着Bx的方向按照步长S进行滑动,或沿着By的方向按照步长Sy进行滑动,其中Sfin为大于0且小于或等于Bfin的整数,Sfout为大于0且小于或等于Bfout的整数,Sx为大于0且小于或等于Bx的整数,Sy为大于0且小于或等于By的整数;
通过所述滑动窗口从所述Nfin*Nfout*Kx*Ky个权值中选取M个权值,当所述M个权值满足所述预设条件时,将所述M个权值全部或者部分置为零,其中,所述M=Bfin*Bfout*Bx*By;
当对所述LSTM层的权值进行粗粒度剪枝操作时,所述滑动窗口的大小为Bin_i*Bout_i,其中Bin_i为大于0且小于或等于Nin_i的整数,Bout_i为大于0且小于或等于Nout_i的整数;
使所述滑动窗口沿着Bin_i的方向按照步长Sin_i进行滑动,或沿着Bout_i的方向按照步长Sout_i进行滑动,其中Sin_i为大于0且小于或等于Bin_i的正整数,Sout_i为大于0且小于或等于Bout_i的正整数;
通过所述滑动窗口从所述Bin_i*Bout_i个权值中选取M个权值,当所述M个权值满足所述预设条件时,将所述M个权值全部或者部分置为零,其中,所述M=Bin_i*Bout_i。
进一步的,所述第一重训练采用反向传播算法,且训练过程中已经被置为零的权值保持为零。
进一步的,对神经网络的权值进行分组方式包括:
将所述神经网络的权值分为一组,和/或;
按照层类型对所述神经网络的权值进行分组,和/或;
按照层间和/或层内对神经网络的权值进行分组。
进一步的,所述按照层类型对所述神经网络的权值进行分组,包括:
将神经网络中所有卷积层的权值、所有全连接层的权值和所有LSTM层的权值各划分成一组。
进一步的,所述按照层间对神经网络的权值进行分组,包括:
将神经网络中一个或者多个卷积层的权值、一个或者多个全连接层的权值和一个或者多个长短时记忆网络层的权值各划分成一组。
进一步的,所述按照层内对所述神经网络的权值进行分组,包括:
将神经网络的一层内的权值进行切分,切分后的每一个部分划分为一组。
进一步的,所述聚类算法包括K-means、K-medoids、Clara和/或Clarans。
进一步的,所述中心权值选择方法为使得代价函数J(w,w
0)最小。
进一步的,所述代价函数满足下述条件:
其中w是类中所有权值,w0是中心权值,n是类中权值数量,wi是类中第i个权值,i是大于0且小于或等于n的整数。
进一步的,对聚类和编码后的神经网络进行第二重训练包括:
对聚类和编码后的神经网络使用反向传播算法进行重新训练,训练过程中已经被置为0的权值将一直保持0,并且只训练权值密码本,不训练权值字典。
一种数据的压缩装置,包括:
存储器,用于存储操作指令;
处理器,用于执行存储器中的操作指令,在执行该操作指令时依照第二十二方面所述的全部或者部分数据压缩方法进行操作。
一种数据压缩方法,其中包括:
对神经网络的权值进行粗粒度剪枝,包括:根据滑动窗口从神经网络选取出M个权值,当所述M个权值满足预设条件时,将所述M个权值全部或者部分置为零,所述M为大于0的整数;对神经网络进行第一重训练,训练过程中已经被置为零的权值保持为零;
对所述神经网络的权值进行量化,包括:对神经网络的权值进行分组,根据聚类算法对每组权值进行聚类操作,计算出每个类的中心权值,并将每个类中的所有权值都用该类对应的中心权值替换。
进一步的,所述对所述神经网络的权值进行量化之后,所述方法还包括:
对所述中心权值进行编码操作,得到密码本和权值字典。
进一步的,所述对所述中心权值进行编码操作之后,所述方法还包括:
对神经网络进行第二重训练。
进一步的,对所述神经网络进行第二重训练时只训练密码本,权值字典内容保持不变。
进一步的,所述预设条件为:
所述M个权值的信息量小于第一预设阈值。
进一步的,所述M个权值的信息量为所述M个权值绝对值的算术平均值、所述M个权值绝对值的几何平均值或者所述M个权值的最大值,所述第一预设阈值为第一阈值、第二阈值或者第三阈值,所述M个权值的信息量小于第一预设阈值包括:
所述M个权值绝对值的算术平均值小于所述第一阈值,或者所述M个权值绝对值的几何平均值小于所述第二阈值,或者所述M个权值的最大值小于所述第三阈值。
进一步的,所述方法还包括:重复使用滑动窗口从神经网络选取M个权值,当所述M个权值满足预设条件时,将所述M个权值全部或者部分置为零;以及对所述神经网络进行第一重训练,直至保证不损失设定精度的前提下没有权值能被置为零。
进一步的,所述设定精度为x%其中x介于0至5之间。
进一步的,所述对所述神经网络的权值进行粗粒度剪枝,包括:
对所述神经网络的全连接层的权值进行剪枝,或者对神经网络的卷积层的权值进行剪枝,或者对神经网络的长短期记忆LSTM层的权值进行剪枝。
进一步的,所述神经网络的全连接层的权值为一个二维矩阵(Nin,Nout),其中所述Nin是输入神经元的个数,所述Nout是输出神经元的个数,所述全连接层有Nin*Nout个权值,所述滑动窗口的大小为Bin*Bout,其中Bin为大于0且小于或等于Nin整数,Bout为大于0且小于或等于Nout的整数;所述对神经网络的全连接层的权值进行剪枝,包括:
使所述滑动窗口能够沿着Bin的方向按照步长Sin进行滑动,也可以沿着Bout的方向按照步长Sout进行滑动,其中所述Sin为大于0且小于或等于Bin的整数,所述Sout为大于0且小于或等于Bout的整数;
通过所述滑动窗口从所述Nin*Nout个权值中选取M个权值;当所述M个权值满足所述预设条件时,将所述M个权值全部或者部分置为零,其中,所述M=Bin*Bout。
进一步的,所述神经网络的卷积层的权值为一个四维矩阵(Nfin,Nfout,Kx,Ky),其中所述Nfin是输入特征图像的个数,所述Nfout是输出特征图像的个数,(Kx,Ky)是卷积核的大小,所述卷积层有Nfin*Nfout*Kx*Ky个权值,所述滑动窗口为大小为Bfin*Bfout*Bx*By的四维滑动窗口,其中Bfin为大于0且小于或等于Nfin的整数,Bfout为大于0且1小于或等于Nfout的整数,Bx为大于0且小于或等于Kx的整数,By为大于0且小于或等于Ky的整数;所述对神经网络的卷积层的权值进行剪枝包括:
使所述滑动窗口沿着Bfin的方向按照步长Sfin进行滑动,或者沿着Bfout的方向按照步长Sfout进行滑动,或者沿着Bx的方向按照步长Sx进行滑动,或沿着By的方向按照步长Sy进行滑动,其中Sfin为大于0且小于或等于Bfin的整数,Sfout为大于0且小于或等于Bfout的整数,Sx为大于0且小于或等于Bx的整数,Sy为大于0且小于或等于By的整数;
通过所述滑动窗口从所述Nfin*Nfout*Kx*Ky个权值中选取M个权值;当所述M个权值满足所述预设条件时,将所述M个权值全部或者部分置为零,其中,所述M=Bfin*Bfout*Bx*By。
进一步的,所述神经网络的LSTM层的权值由m个全连接层权值组成,其中m为大于0的正整数,第i个全连接层权值为二维矩阵(Nin_i,Nout_i),其中i是大于0且小于或等于m的整数,Nin_i表示第i个全连接层权值输入神经元个数,Nout_i表示第i个全连接层权值输出神经元个数;所述滑动窗口的大小为Bin_i*Bout_i,其中Bin_i为大于0且小于或等于Nin_i的整数,Bout_i为大于0且小于或 等于Nout_i的整数;对神经网络的LSTM层进行剪枝包括:
使所述滑动窗口沿着Bin_i的方向按照步长Sin_i进行滑动,或沿着Bout_i的方向按照步长Sout_i进行滑动,其中Sin_i为大于0且小于或等于Bin_i的整数,Sout_i为大于0且小于或等于Bout_i的整数;
通过所述滑动窗口从所述Nin_i*Nout_i个权值中选取M个权值;当所述M个权值满足所述预设条件时,将所述M个权值全部或者部分置为零,其中,所述M=Bin_i*Bout_i。
进一步的,所述第一重训练采用反向传播算法,且训练过程中已经被置为零的权值保持为零。
进一步的,对神经网络的权值进行分组方式包括:
将所述神经网络的权值分为一组,和/或;
按照层类型对所述神经网络的权值进行分组,和/或;
按照层间和/或层内对神经网络的权值进行分组。
进一步的,所述按照层类型对所述神经网络的权值进行分组,包括:
将神经网络中所有卷积层的权值、所有全连接层的权值和所有LSTM层的权值各划分成一组。
进一步的,所述按照层间对神经网络的权值进行分组,包括:
将神经网络中一个或者多个卷积层的权值、一个或者多个全连接层的权值和一个或者多个长短时记忆网络层的权值各划分成一组。
进一步的,所述按照层内对所述神经网络的权值进行分组,包括:
将神经网络的一层内的权值进行切分,切分后的每一个部分划分为一组。
进一步的,所述聚类算法包括K-means、K-medoids、Clara和/或Clarans。
进一步的,所述中心权值选择方法为使得代价函数J(w,w
0)最小。
进一步的,代价函数满足:
其中w是类中所有权值,w0是中心权值,n是类中权值数量,wi是类中第i个权值,i是大于0且小于或等于n的整数。
对聚类和编码后的神经网络进行第二重训练包括:对聚类和编码后的神经网络使用反向传播算法进行重新训练,训练过程中已经被置为0的权值将一直保持0,并且只训练权值密码本,不训练权值字典。
一种神经网络数据的压缩装置,包括:
存储器,用于存储操作指令;
处理器,用于执行存储器中的操作指令,在执行该操作指令时依照权以上任一所述的数据压缩方法进行操作。
一种处理装置,其中包括:
粗粒度选数单元,用于输入神经元和目标权值位置信息,选出需要进行计算的神经元,其中,所述目标权值为绝对值大于第二预设阈值的权值;
查找表单元,用于接收量化的目标权值字典和目标权值密码本,进行查表操作,以得到并输出神经网络的目标权值;
运算单元,用于接收被选中的神经元和目标权值,对神经网络进行运算得到并输出神经元。
进一步的,所述查找表单元还用于对未量化的目标权值直接通过旁路传输给所述运算单元。
进一步的,还包括指令控制单元,用于接收指令,并对所述指令进行译码,以得到控制信息以控制 所述运算单元。
进一步的,还包括存储单元,用于存储神经网络的神经元、权值以及指令。
进一步的,所述存储单元还用于存储存放目标权值以及目标权值的位置信息;还用于存储量化的目标权值密码本和目标权值字典。
进一步的,所述运算单元包括以下至少一种:
乘法器,用于将第一输入数据和第二输入数据相乘,得到相乘之后的数据;
加法树,用于将第三输入数据通过加法树逐级相加,或者将所述第三输入数据通过和第四输入数据相加得到相加之后的数据;
激活函数运算单元,对第五数据通过激活函数运算得到输出数据,所述激活函数为sigmoid、tanh、relu或softmax函数操作。
进一步的,所述运算单元还包括池化单元,用于对输入的第六数据通过池化运算得到池化操作之后的输出数据,所述池化操作包括:平均值池化,最大值池化或者中值池化。
进一步的,所述处理装置还包括:
指令控制单元,用来接收存储单元中的指令,经过译码后生成控制信息控制粗粒度选数单元进行选数操作,查找表单元进行查表操作和运算单元进行计算操作。
进一步的,所述指令为神经网络专用指令,包括控制指令,数据传输指令,运算指令和逻辑指令。
进一步的,所述神经网络专用指令为Cambricon指令集,所述Cambircon指令集中每一条指令长度为64bit,指令由操作码和操作数组成。
进一步的,所述控制指令用于控制神经网络执行过程,包括跳转指令和条件分支指令。
进一步的,数据传输指令用于完成不同存储介质之间的数据传输,包括加载指令、存储指令和搬运指令。
进一步的,所述运算指令用于完成神经网络的算术运算,所述运算指令包括矩阵运算指令,向量运算指令、标量运算指令、卷积神经网络运算指令、全连接神经网络运算指令、池化神经网络运算指令、RBM神经网络运算指令、LRN神经网络运算指令、LCN神经网络运算指令、LSTM神经网络运算指令、RNN神经网络运算指令、RELU神经网络运算指令、PRELU神经网络运算指令、SIGMOID神经网络运算指令、TANH神经网络运算指令和MAXOUT神经网络运算指令。
进一步的,所述逻辑指令用于完成神经网络的逻辑运算,所述逻辑指令包括向量逻辑运算指令和标量逻辑运算指令。
进一步的,所述向量逻辑运算指令包括向量比较、向量逻辑运算和向量大于合并指令;优选的,向量比较包括但不限于大于,小于,等于,大于或等于(≥),小于或等于(≤)和不等于;优选的,向量逻辑运算包括与,或,非。
进一步的,所述标量逻辑运算包括标量比较,标量逻辑运算;优选的,所述标量比较包括但不限于大于,小于,等于,大于或等于(≥),小于或等于(≤)和不等于;优选的,所述标量逻辑运算包括逻辑与,逻辑或,以及逻辑非。
进一步的,所述处理装置还包括指令缓存单元,用于缓存指令,所述指令缓存单元为片上缓存。
进一步的,所述处理装置还包括目标权值密码本缓存单元,用于缓存目标权值密码本,所述目标权值密码本缓存单元为片上缓存。
进一步的,所述处理装置还包括目标权值字典缓存单元,用于缓存目标权值字典,所述目标权值字典缓存单元为片上缓存。
进一步的,所述处理装置还包括目标权值位置缓存单元,用于缓存目标权值位置,还用于将输入数据中每个连接权值一一对应到相应的输入神经元,所述目标权值位置缓存单元为片上缓存。
进一步的,所述目标权值位置缓存单元,用于将输入数据中每个连接权值一一对应到相应的输入神 经元中的一一对应包括:为采用1表示权值与输入神经元有连接,0表示无连接,每组输出与所有输入的连接状态组成一个0和1的字符串来表示该输出的连接关系。
进一步的,所述目标权值位置缓存单元,用于将输入数据中每个连接权值一一对应到相应的输入神经元中的一一对应包括:将一组输出第一个连接所在的输入神经元位置距离第一个输入神经元的距离、所述输出第二组输入神经元距离上一个输入神经元的距离,所述输出第三组输入神经元距离上一个输入神经元的距离,……,依次类推,直到穷举所述输出的所有输入,来表示所述输出的连接关系。
进一步的,所述处理装置还包括输入神经元缓存单元,用于缓存输入到粗粒度选数单元的输入神经元,所述输入神经元缓存单元为片上缓存。
进一步的,所述处理装置还包括输出神经元缓存单元,用于缓存输出神经元,所述输出神经元缓存单元为片上缓存。
进一步的,所述处理装置还包括直接数据存取单元DMA单元,用于在所述存储单元、指令缓存单元、目标权值密码本缓存单元、目标权值字典缓存单元、目标权值位置缓存单元,输入神经元缓存单元和输出神经元缓存单元中进行数据或者指令读写。
进一步的,所述处理装置还包括预处理单元:用于对原始数据进行预处理,将预处理后的数据输入所述存储单元。
一种处理方法,包括:
输入神经元和目标权值位置信息,选出需要进行计算的神经元;
接收量化的目标权值字典和目标权值密码本,进行查表操作并输出神经网络的目标权值;
接收被选中的神经元和目标权值,对神经网络进行运算并输出神经元。
进一步的,所述处理方法还包括:接收未量化的目标权值以进行神经网络运算。
进一步的,还包括:接收指令,并经过译码后生成控制信息控制神经网络的所述运算。
进一步的,所述运算包括以下至少一种:乘法运算,将所述第一输入数据和第二输入数据相乘,得到相乘之后的数据;加法运算,将第三输入数据通过加法树逐级相加,或者将所述第三输入数据通过和第四输入数据相加得到相加之后的数据;激活函数运算,对第五数据通过激活函数运算得到输出数据,所述激活函数为sigmoid、tanh、relu或softmax函数操作。
进一步的,所述运算还包括池化操作,用于对输入的第六数据通过池化运算得到池化操作之后的输出数据,所述池化操作包括:平均值池化,最大值池化或者中值池化。
进一步的,所述指令为神经网络专用指令,包括控制指令,数据传输指令,运算指令和逻辑指令。
进一步的,所述控制指令用于控制神经网络执行过程,包括跳转指令和条件分支指令。
进一步的,数据传输指令用于完成不同存储介质之间的数据传输,包括加载指令、存储指令和搬运指令。
进一步的,所述运算指令用于完成神经网络的算术运算,包括矩阵运算指令,向量运算指令、标量运算指令、卷积神经网络运算指令、全连接神经网络运算指令、池化神经网络运算指令、RBM神经网络运算指令、LRN神经网络运算指令、LCN神经网络运算指令、LSTM神经网络运算指令、RNN神经网络运算指令、RELU神经网络运算指令、PRELU神经网络运算指令、SIGMOID神经网络运算指令、TANH神经网络运算指令和MAXOUT神经网络运算指令。
进一步的,所述神经网络专用指令为Cambricon指令集,所述Cambircon指令集中指令由操作码和操作数组成。
Cambircon指令集中每一条指令长度为定长。例如,指令集中每一条指令长度可以为64bit。
进一步的,所述逻辑指令用于完成神经网络的逻辑运算,包括向量逻辑运算指令和标量逻辑运算指令。
进一步的,所述向量逻辑运算指令包括向量比较、向量逻辑运算和向量大于合并指令;优选的,向量比较包括但不限于大于,小于,等于,大于或等于(≥),小于等于(≤)和不等于;优选的,向量逻辑运算包括逻辑与,逻辑或,或者逻辑非。
进一步的,所述标量逻辑运算包括标量比较,标量逻辑运算;优选的,所述标量比较包括但不限于大于,小于,等于,大于或等于(≥),小于或等于(≤)和不等于;优选的,所述标量逻辑运算包括逻辑与,逻辑或,以及逻辑非。
进一步的,还包括步骤:对输入神经元和目标权值位置信息进行预处理,所述预处理包括切分、高斯滤波、二值化、正则化和、或归一化。
进一步的,接收被选中的神经元和目标权值之后,所述处理方法还包括步骤:存储输入神经元、权值字典、密码本和指令,以及存储输出神经元;以及缓存所述指令、输入神经元、输出神经元。
一种电子装置,包括权利要求以上任意所述的处理装置,所述电子装置包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备交通工具、家用电器、和/或医疗设备;
其中,所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶和/或油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
一种处理装置,包括:
粗粒度选数单元,用于输入神经元和目标权值位置信息,选出需要进行计算的神经元;其中,所述目标权值为绝对值大于预设阈值的权值;
查找表单元,用于接收量化的目标权值字典和目标权值密码本,进行查表操作,以得到并输出神经网络的目标权值;
运算单元,用于接收被选中的神经元和目标权值,对神经网络进行运算得到并输出神经元。
进一步的,所述查找表单元还用于对未量化的目标权值直接通过旁路传输给所述运算单元。
进一步的,所述处理装置还包括:
指令控制单元,用于接收指令,并对所述指令进行译码,以得到控制信息以控制所述运算单元。
进一步的,所述处理装置还包括:
存储单元,用于存储神经网络的神经元、权值以及指令。
进一步的,所述存储单元还用于存储存放目标权值以及目标权值的位置信息;和存储量化的目标权值密码本和目标权值字典。
进一步的,所述运算单元包括以下至少一种:
乘法器,用于将所述第一输入数据和第二输入数据相乘,得到相乘之后的数据;
加法树,用于将第三输入数据通过加法树逐级相加,或者将所述第三输入数据通过和第四输入数据相加得到相加之后的数据;
激活函数运算单元,对第五数据通过激活函数运算得到输出数据,所述激活函数为sigmoid、tanh、relu或softmax函数操作。
进一步的,所述运算单元还包括池化单元,用于对输入的第六数据通过池化运算得到池化操作之后的输出数据,所述池化操作包括:平均值池化,最大值池化或者中值池化。
进一步的,所述处理装置还包括:
指令控制单元,用来接收存储单元中的指令,对该指令进行译码生成控制信息,以控制粗粒度选数单元进行选数操作、查找表单元进行查表操作和运算单元进行计算操作。
进一步的,所述指令为神经网络专用指令,包括控制指令,数据传输指令,运算指令和逻辑指令。
进一步的,所述神经网络专用指令为Cambricon指令集。
进一步的,所述处理装置还包括:
指令缓存单元,用于缓存指令,所述指令缓存单元为片上缓存。
进一步的,所述处理装置还包括:
目标权值密码本缓存单元,用于缓存目标权值密码本,所述目标权值密码本缓存单元为片上缓存。
进一步的,所述处理装置还包括:
目标权值字典缓存单元,用于缓存目标权值字典,所述目标权值字典缓存单元为片上缓存。
进一步的,所述处理装置还包括:
目标权值位置缓存单元,用于缓存目标权值位置,还用于将输入数据中每个连接权值一一对应到相应的输入神经元,所述目标权值位置缓存单元为片上缓存。
进一步的,所述目标权值位置缓存单元,用于将输入数据中每个连接权值一一对应到相应的输入神经元中的一一对应包括:
为采用1表示权值与输入神经元有连接,0表示无连接,每组输出与所有输入的连接状态组成一个0和1的字符串来表示该输出的连接关系。
进一步的,所述目标权值位置缓存单元,用于将输入数据中每个连接权值一一对应到相应的输入神经元中的一一对应包括:
将一组输出第一个连接所在的输入神经元位置距离第一个输入神经元的距离、所述输出第二组输入神经元距离上一个输入神经元的距离,所述输出第三组输入神经元距离上一个输入神经元的距离,……,依次类推,直到穷举所述输出的所有输入,来表示所述输出的连接关系。
进一步的,所述处理装置还包括:
输入神经元缓存单元,用于缓存输入到粗粒度选数单元的输入神经元,所述输入神经元缓存单元为片上缓存。
进一步的,所述处理装置还包括:
输出神经元缓存单元,用于缓存输出神经元,所述输出神经元缓存单元为片上缓存。
进一步的,所述处理装置还包括:
直接数据存取DMA单元,用于在所述存储单元、指令缓存单元、目标权值密码本缓存单元、目标权值字典缓存单元、目标权值位置缓存单元,输入神经元缓存单元和输出神经元缓存单元中进行数据或者指令读写。
进一步的,所述处理装置还包括:
预处理单元:用于对原始数据进行预处理,并将预处理后的数据输入所述存储单元。
一种处理方法,包括:
输入神经元和目标权值位置信息,选出需要进行计算的神经元,所述目标权值为绝对值大于预设阈值的权值;
接收量化的目标权值字典和目标权值密码本,进行查表操作,以得到并输出神经网络目标权值;
接收被选中的神经元和目标权值,对神经网络进行运算得到并输出神经元。
进一步的,所述处理方法还包括:
接收未量化的目标权值以进行神经网络运算。
进一步的,所述方法还包括:
接收指令,并对所述指令进行译码,以得到控制信息,用于控制神经网络的运算。
进一步的,所述运算包括以下至少一种:
乘法运算,将所述第一输入数据和第二输入数据相乘,得到相乘之后的数据;
加法运算,将第三输入数据通过加法树逐级相加,或者将所述第三输入数据通过和第四输入数据相加得到相加之后的数据;
激活函数运算,对第五数据通过激活函数运算得到输出数据,所述激活函数为sigmoid、tanh、relu或softmax函数操作。
进一步的,所述运算还包括:
池化操作,用于对输入的第六数据通过池化运算得到池化操作之后的输出数据,其中,所述池化操作包括:平均值池化,最大值池化或者中值池化。
进一步的,所述指令为神经网络专用指令,包括控制指令,数据传输指令,运算指令和逻辑指令。
进一步的,所述神经网络专用指令为Cambricon指令集,所述Cambircon指令集中每一条指令长度为64bit,指令由操作码和操作数组成。
进一步的,所述方法还包括步骤:
对输入神经元和目标权值位置信息进行预处理,所述预处理包括切分、高斯滤波、二值化、正则化和、或归一化。
进一步的,所述接收被选中的神经元和目标权值之后,所述方法还包括步骤:
存储所述输入神经元、权值字典、密码本和指令,以及存储输出神经元;以及缓存所述指令、输入神经元、输出神经元。
一种数据压缩方法,包括:
对神经网络的权值进行粗粒度剪枝,包括:根据滑动窗口从神经网络选取出M个权值,当所述M个权值满足预设条件时,将所述M个权值全部或者部分置为零;对神经网络进行第一重训练,训练过程中已经被置为零的权值保持为零;
对神经网络的权值进行量化,包括:对神经网络的权值进行分组,根据聚类算法对每组权值进行聚类操作,计算出每个类的中心权值,并将每个类中的所有权值都用该类对应的中心权值替换;对中心权值进行编码操作,得到密码本和权值字典,对神经网络进行第二重训练,重训练时只训练密码本,权值字典内容保持不变。
进一步的,所述预设条件为:
所述M个权值的信息量小于第一预设阈值。
进一步的,所述M个权值的信息量为所述M个权值绝对值的算术平均值、所述M个权值绝对值的几何平均值或者所述M个权值的最大值,所述第一预设阈值为第一阈值、第二阈值或者第三阈值,所述M个权值的信息量小于第一预设阈值包括:
所述M个权值绝对值的算术平均值小于所述第一阈值,或者所述M个权值绝对值的几何平均值小于所述第二阈值,或者所述M个权值的最大值小于所述第三阈值。
进一步的,所述处理方法还包括:重复使用滑动窗口从神经网络选取M个权值,当所述M个权值满足预设条件时,将所述M个权值全部或者部分置为零;以及对所述神经网络进行第一重训练,直至保证不损失设定精度的前提下没有权值能被置为零。其中,所述设定精度为x%,其中x介于0至5之间。
进一步的,神经网络包括全连接层、卷积层和LSTM层;根据滑动窗口从神经网络选取出M个权值,包括:
所述全连接层的权值是一个二维矩阵(Nin,Nout),其中Nin是输入神经元的个数,Nout是输出神经元的个数,所述全连接层有Nin*Nout个权值,所述滑动窗口的大小为Bin*Bout的滑动窗口,其中所述Bin为大于0且小于或等于Nin整数,所述Bout为大于0且小于或等于Nout的整数;所述处理装置对神经网络的全连接层的权值进行粗粒度剪枝,包括:
使所述滑动窗口能够沿着Bin的方向按照步长Sin进行滑动,或者沿着Bout的方向按照步长Sout进行滑动,其中Sin为大于0且小于或等于Bin的正整数,Sout为大于0且小于或等于Bout的正整数;
通过所述滑动窗口从所述Nin*Nout个权值中选取M个取值,该M=Bin*Bout;
上述处理装置从上述神经网络的卷积层中选取M个权值,包括:
所述卷积层的权值是一个四维矩阵(Nfin,Nfout,Kx,Ky),其中Nfin是输入特征图像的个数,Nfout是输出特征图像的个数,(Kx,Ky)是卷积核的大小,所述卷积层有Nfin*Nfout*Kx*Ky个权值;所述滑动窗口为大小为Bfin*Bfout*Bx*By的四维滑动窗口,其中Bfin为大于0且小于或等于Nfin的整数,Bfout为大于0且小于或等于Nfout的整数,Bx为大于0且小于或等于Kx的整数,By为大于0且小于或等于Ky的整数;
使所述滑动窗口沿着Bfin的方向按照步长Sfin进行滑动,或者沿着Bfout的方向按照步长Sfout进行滑动,或者沿着Bx的方向按照步长S进行滑动,或沿着By的方向按照步长Sy进行滑动,其中Sfin为大于0且小于或等于Bfin的整数,Sfout为大于0且小于或等于Bfout的整数,Sx为大于0且小于或等于Bx的整数,Sy为大于0且小于或等于By的整数;
通过所述滑动窗口从所述Nfin*Nfout*Kx*Ky个权值中选取M个权值,其中,所述M=Bfin*Bfout*Bx*By。
上述处理装置从上述神经网络的LSTM层中选取M个权值,包括:
所述LSTM层的权值有m个全连接层的权值组成,所述m为大于0的整数,第i个全连接层权值为(Nin_i,Nout_i),其中i是大于0且小于或等于m的整数,Nin_i表示第i个全连接层权值输入神经元个数,Nout_i表示第i个全连接层权值输出神经元个数;所述滑动窗口的大小为Bin_i*Bout_i,其中Bin_i为大于0且小于或等于Nin_i的整数,Bout_i为大于0且小于或等于Nout_i的整数;
使所述滑动窗口沿着Bin_i的方向按照步长Sin_i进行滑动,或沿着Bout_i的方向按照步长Sout_i进行滑动,其中Sin_i为大于0且小于或等于Bin_i的正整数,Sout_i为大于0且小于或等于Bout_i的正整数;
通过所述滑动窗口从所述Bin_i*Bout_i个权值中选取M个权值,其中,所述M=Bin_i*Bout_i。
进一步的,所述第一重训练采用反向传播算法,且训练过程中已经被置为零的权值保持为零。
进一步的,对神经网络的权值进行分组方式包括:
将所述神经网络的权值分为一组,和/或;
按照层类型对所述神经网络的权值进行分组,和/或;
按照层间和/或层内对神经网络的权值进行分组。
进一步的,所述按照层类型对所述神经网络的权值进行分组,包括:
将神经网络中所有卷积层的权值、所有全连接层的权值和所有LSTM层的权值各划分成一组。
进一步的,所述按照层间对神经网络的权值进行分组,包括:
将神经网络中一个或者多个卷积层的权值、一个或者多个全连接层的权值和一个或者多个长短时记忆网络层的权值各划分成一组。
进一步的,所述按照层内对所述神经网络的权值进行分组,包括:
将神经网络的一层内的权值进行切分,切分后的每一个部分划分为一组。
进一步的,所述聚类算法包括K-means、K-medoids、Clara和/或Clarans。
进一步的,所述中心权值选择方法为使得代价函数J(w,w
0)最小,
其中w是类中所有权值,w0是中心权值,n是类中权值数量,wi是类中第i个权值,i是大于0且小于或等于n的整数。
对聚类和编码后的神经网络进行第二重训练包括:对聚类和编码后的神经网络使用反向传播算法进行重新训练,训练过程中已经被置为0的权值将一直保持0,并且只训练权值密码本,不训练权值字典。
一种神经网络数据的压缩装置,包括:
存储器,用于存储操作指令;
处理器,用于执行存储器中的操作指令,在执行该操作指令时依照权以上任一所述的压缩方法进行操作。
一种处理装置,包括:
粗粒度选数单元,用于输入神经元和目标权值位置信息,选出需要进行计算的神经元,其中,所述目标权值为绝对值大于第二预设阈值的权值;
查找表单元,用于接收量化的目标权值字典和目标权值密码本,进行查表操作,以得到并输出神经网络的目标权值;
运算单元,用于接收被选中的神经元和目标权值,对神经网络进行运算得到并输出神经元。
进一步的,所述查找表单元还用于对未量化的目标权值直接通过旁路传输给所述运算单元。
进一步的,所述处理装置还包括指令控制单元,用于接收指令,并对所述指令进行译码,以得到控制信息以控制所述运算单元。
进一步的,所述处理装置还包括存储单元,用于存储神经网络的神经元、权值以及指令。
进一步的,所述存储单元还用于存储存放目标权值以及目标权值的位置信息;还用于存储量化的目标权值密码本和目标权值字典。
进一步的,所述运算单元包括以下至少一种:
乘法器,用于将所述第一输入数据和第二输入数据相乘,得到相乘之后的数据;
加法树,用于将第三输入数据通过加法树逐级相加,或者将所述第三输入数据通过和第四输入数据相加得到相加之后的数据;
激活函数运算单元,对第五数据通过激活函数运算得到输出数据,所述激活函数为sigmoid、tanh、relu或softmax函数操作。
进一步的,所述运算单元还包括池化单元,用于对输入的第六数据通过池化运算得到池化操作之后的输出数据,所述池化操作包括:平均值池化,最大值池化或者中值池化。
进一步的,所述处理装置还包括指令控制单元,用来接收存储装置中的指令,对该指令进行译码生成控制信息,以控制粗粒度选数单元进行选数操作,查找表单元进行查表操作和运算单元进行计算操作。
进一步的,所述指令为神经网络专用指令,包括控制指令,数据传输指令,运算指令和逻辑指令。
进一步的,所述神经网络专用指令为Cambricon指令集,所述Cambircon指令集中每一条指令长度为64bit,指令由操作码和操作数组成。
进一步的,所述控制指令用于控制神经网络执行过程,包括跳转指令和条件分支指令。
进一步的,数据传输指令用于完成不同存储介质之间的数据传输,包括加载指令、存储指令和搬运指令。
进一步的,所述运算指令用于完成神经网络的算术运算,包括矩阵运算指令,向量运算指令、标量运算指令、卷积神经网络运算指令、全连接神经网络运算指令、池化神经网络运算指令、RBM神经网络运算指令、LRN神经网络运算指令、LCN神经网络运算指令、LSTM神经网络运算指令、RNN神经网络运算指令、RELU神经网络运算指令、PRELU神经网络运算指令、SIGMOID神经网络运算指令、TANH神经网络运算指令和MAXOUT神经网络运算指令。
进一步的,所述逻辑指令用于完成神经网络的逻辑运算,包括向量逻辑运算指令和标量逻辑运算指 令。
进一步的,所述向量逻辑运算指令包括向量比较、向量逻辑运算和向量大于合并指令;优选的,向量比较包括但不限于大于,小于,等于,大于或等于(≥),小于或等于(≤)和不等于;优选的,向量逻辑运算包括与,或,非。
进一步的,所述标量逻辑运算包括标量比较,标量逻辑运算;优选的,所述标量比较包括但不限于大于,小于,等于,大于或等于(≥),小于或等于(≤)和不等于;优选的,所述标量逻辑运算包括逻辑与,逻辑或,以及逻辑非。
进一步的,所述处理装置还包括指令缓存单元,用于缓存指令,所述指令缓存单元为片上缓存。
进一步的,所述处理装置还包括目标权值密码本缓存单元,用于缓存目标权值密码本,所述目标权值密码本缓存单元为片上缓存。
进一步的,所述处理装置还包括目标权值字典缓存单元,用于缓存目标权值字典,所述目标权值字典缓存单元为片上缓存。
进一步的,所述处理装置还包括目标权值位置缓存单元,用于缓存目标权值位置,还用于将输入数据中每个连接权值一一对应到相应的输入神经元,所述目标权值位置缓存单元为片上缓存。
进一步的,所述目标权值位置缓存单元,用于将输入数据中每个连接权值一一对应到相应的输入神经元中的一一对应包括:为采用1表示权值与输入神经元有连接,0表示无连接,每组输出与所有输入的连接状态组成一个0和1的字符串来表示该输出的连接关系。
进一步的,所述目标权值位置缓存单元,用于将输入数据中每个连接权值一一对应到相应的输入神经元中的一一对应包括:将一组输出第一个连接所在的输入神经元位置距离第一个输入神经元的距离、所述输出第二组输入神经元距离上一个输入神经元的距离,所述输出第三组输入神经元距离上一个输入神经元的距离,……,依次类推,直到穷举所述输出的所有输入,来表示所述输出的连接关系。
进一步的,所述处理装置还包括输入神经元缓存单元,用于缓存输入到粗粒度选数单元的输入神经元,所述输入神经元缓存单元为片上缓存。
进一步的,所述处理装置还包括输出神经元缓存单元,用于缓存输出神经元,所述输出神经元缓存单元为片上缓存。
进一步的,所述处理装置还包括直接数据存取DMA单元,用于在所述存储单元、指令缓存单元、目标权值密码本缓存单元、目标权值字典缓存单元、目标权值位置缓存单元,输入神经元缓存单元和输出神经元缓存单元中进行数据或者指令读写。
进一步的,所述处理装置还包括预处理单元:用于对原始数据进行预处理,将预处理后的数据输入所述存储单元。
一种处理方法,包括:
输入神经元和目标权值位置信息,选出需要进行计算的神经元,所述目标权值为绝对值大于预设阈值的权值;
接收量化的目标权值字典和目标权值密码本,进行查表操作,以得到并输出神经网络目标权值;
接收被选中的神经元和目标权值,对神经网络进行运算得到并输出神经元。
进一步的,所述处理方法还包括:接收未量化的目标权值以进行神经网络运算。
进一步的,还包括:接收指令,并对所述指令进行译码,以得到控制信息,用于控制神经网络的运算。
进一步的,所述运算包括以下至少一种:乘法运算,将所述第一输入数据和第二输入数据相乘,得到相乘之后的数据;加法运算,将第三输入数据通过加法树逐级相加,或者将所述第三输入数据通过和第四输入数据相加得到相加之后的数据;激活函数运算,对第五数据通过激活函数运算得到输出数据, 所述激活函数为sigmoid、tanh、relu或softmax函数操作。
进一步的,所述运算还包括池化操作,用于对输入的第六数据通过池化运算得到池化操作之后的输出数据,所述池化操作包括:平均值池化,最大值池化或者中值池化。
进一步的,所述指令为神经网络专用指令,包括控制指令,数据传输指令,运算指令和逻辑指令。
进一步的,所述控制指令用于控制神经网络执行过程,包括跳转指令和条件分支指令。
进一步的,数据传输指令用于完成不同存储介质之间的数据传输,包括加载指令,存储指令,搬运指令。
进一步的,所述运算指令用于完成神经网络的算术运算,包括矩阵运算指令,向量运算指令、标量运算指令、卷积神经网络运算指令、全连接神经网络运算指令、池化神经网络运算指令、RBM神经网络运算指令、LRN神经网络运算指令、LCN神经网络运算指令、LSTM神经网络运算指令、RNN神经网络运算指令、RELU神经网络运算指令、PRELU神经网络运算指令、SIGMOID神经网络运算指令、TANH神经网络运算指令和MAXOUT神经网络运算指令。
进一步的,所述神经网络专用指令为Cambricon指令集,所述Cambircon指令集中每一条指令长度为64bit,指令由操作码和操作数组成。
进一步的,所述逻辑指令用于完成神经网络的逻辑运算,包括向量逻辑运算指令和标量逻辑运算指令。
进一步的,所述向量逻辑运算指令包括向量比较、向量逻辑运算和向量大于合并指令;优选的,向量比较包括但不限于大于,小于,等于,大于或等于(≥),小于或等于(≤)和不等于;优选的,向量逻辑运算包括逻辑与,逻辑或,或者逻辑非。
进一步的,所述标量逻辑运算包括标量比较,标量逻辑运算;优选的,所述标量比较包括但不限于大于,小于,等于,大于或等于(≥),小于或等于(≤)和不等于;优选的,所述标量逻辑运算包括逻辑与,逻辑或,以及逻辑非。
进一步的,还包括步骤:对输入神经元和目标权值位置信息进行预处理,所述预处理包括切分、高斯滤波、二值化、正则化和、或归一化。
进一步的,接收被选中的神经元和目标权值之后,还包括步骤:存储输入神经元、权值字典、密码本和指令,以及存储输出神经元;以及缓存所述指令、输入神经元、输出神经元。
第三十四方面,本发明实施例提供一种电子装置,包括权利要求以上任意所述的处理装置,所述电子装置包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备交通工具、家用电器、和/或医疗设备;
所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶和/或油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
一种运算装置,包括:
筛选单元(400),用于根据输出神经元与输入神经元组成的特征图的连接状态数组筛选出特征图及其对应的权值,并将所述特征值及对应的权值输出至所述运算单元(600),和/或;
用于根据输出神经元与输入神经元组成的特征图中每行的连接状态数组,筛选出特征图行及其对应的权值行,并将所述特征图行及其对应的权值行输出至所述运算单元(600),和/或;
用于根据输出神经元与输入神经元组成的特征图中每列的连接状态数组,筛选出特征图列及其对应的权值列,并将所述特征图列及其对应的权值列输出至所述运算单元(600);以及
所述运算单元(600),根据指令对筛选单元(400)输出的数据执行相应的支持结构裁剪的人工神经网络运算,得到输出神经元。
进一步的,所述筛选单元(400)的筛选过程包括:
若权值未经离线筛选,根据输出神经元与输入神经元组成的特征图的连接状态数组筛选出特征图及其对应的权值,然后将筛选得到的特征图及其对应的权值输出至所述运算单元,和/或;根据输出神经元与输入神经元组成的特征图中行/列的连接状态数组筛选出特征图行/列及其对应的权值行/列,并将筛选得到的特征图行/列及其对应的权值行/列输出至所述运算单元;
若权值已经过离线筛选,根据输出神经元与输入神经元组成的特征图的连接状态数组筛选出特征图,然后将筛选后的特征图输出至所述运算单元,同时将筛选后的权值不经过筛选单元直接输送给所述运算单元;和/或根据输出神经元与输入神经元组成的特征图中行/列的连接状态数组筛选出特征图行/列及其对应的权值行/列,并将筛选得到的特征图行/列及其对应的权值行/列输出至所述运算单元。
进一步的,所述连接状态数组用以表示输出神经元与输入神经元之间的连接状态,表达方式包括:
第一种表达方式:采用数字“0”和“1”表示连接状态,其中“1”表示有连接,“0”表示无连接;或者“0”表示有连接,“1”表示无连接;对于输出神经元与输入神经元组成的特征图的连接状态数组来说,是每个输出神经元与所有输入神经元组成的特征图的连接状态组成一个包括“0”和“1”的数组;对于输出神经元与输入神经元组成的特征图中行/列的连接状态数组来说,是每个输出神经元与所有输入神经元组成的特征图中行/列的连接状态组成一个包括“0”和“1”的数组;
第二种表达方式:采用距离表示连接状态,对于输出神经元与输入神经元组成的特征图的连接状态数组来说,将每个输出神经元的第一个连接所在的输入神经元位置到第一个输入神经元的距离、第二个连接所在的输入神经元位置到上一个连接所在的输入神经元的距离,第三个连接所在的输入神经元位置到上一个连接所在的输入神经元的距离,……,依次类推,直到穷举与该输出神经元相连的所有输入神经元,组合成一个数组来表示该输出神经元对应的连接状态数组。
进一步的,所述第二种表达方式的数组中的元素为非负整数。
进一步的,采用所述输出神经元与输入神经元组成的特征图的连接状态数组或者输出神经元与输入神经元组成的特征图中行/列的连接状态数组筛选出的用于计算的特征图及与之对应的权值,或者特征图行/列及与之对应的权值行/列,满足条件包括:
第一种表达方式:筛选出来用于计算输出神经元的特征图和与之对应的权值,其对应的连接状态数组,其中的元素值都为:表示有连接的数字;和/或筛选出来用于计算输出神经元的特征图行/列和与之对应的权值行/列,其对应的连接状态数组,其中的元素值都为:表示有连接的数字;
第二种表达方式:对每个输出神经元O
j对应的连接状态数组Index A,每一位的值为非负整数,记全部的输入神经元为I
1,I
2,...,I
N,设与该输出神经元相连的输入神经元为
n≤N,k
1,k
2,...,k
n∈{1,2,...,N},它们的值未知,则Index A有n位,第1位的值A
1,表示第一个连接所在的输入神经元位置距离I
1的距离;第p位的值A
P,p=2,3,...,n,表示当前连接所在的输入神经元位置距离上一个连接所在的输入神经元位置的距离;那么筛选出来用于计算出该输出神经元O
j的输入神经元为:
与之相对应的权值为
满足:k
1=A
1+1,k
p=A
p+k
p-1。
进一步的,所述运算装置还包括:存储单元(100),其存储数据和指令;
其中,所述存储单元(100)中存储的数据包括:
输入神经元组成的特征图、权值、输出神经元与输入神经元组成的特征图的连接状态数组、输出神经元与输入神经元组成的特征图中每行的连接状态数组、输出神经元与输入神经元组成的特征图中每列的连接状态数组、输出神经元组成的特征图以及其他人工神经网络运算所需数据和参数。
进一步的,所述运算单元(600)包括:
第一部分乘法器,将第一输入数据和第二输入数据进行相乘运算得到输出数据;
第二部分一个或多个加法器,将相乘的结果通过加法树逐级相加,得到加权和,根据需要对加权和采取偏置处理或者不做处理;
第三部分激活函数单元,对所述得到的加权和结果执行激活函数运算,得到输出神经元。
进一步的,所述一个或多个加法器组成加法树。
进一步的,所述运算单元(600)还包括:池化单元,对输入数据执行池化操作。
进一步的,所述运算装置还包括:缓存单元(300),其缓存数据和指令。
一种用于执行人工神经网络正向运算的装置,包括浮点数据统计模块、浮点数据转换单元和浮点数据运算模块,
所述浮点数据统计模块用于对所述人工神经网络正向运算所需的各个类型的数据进行统计分析,得到指数位偏移量offset及指数位的长度EL;
所述浮点数据转换单元用于根据所述浮点数据统计模块得到的所述指数位偏移量offset及指数位的长度EL来实现长位数浮点数据类型向短位数浮点数据类型的转换;
所述浮点数据运算模块用于在所述浮点数据转换单元将所有所述人工神经网络正向运算中所需的输入、权值和/或偏置数据均采用短位数浮点数据类型表示之后,对所述短位数浮点数据进行人工神经网络正向运算。
所述浮点数据统计模块包括数据提取单元、统计单元和分析单元,其中,所述数据提取单元用于提取基于长位数浮点数据的正向运算中各不同类型的数据;所述统计单元用于统计同一类型数据的数据范围及各数据段的数据分布情况;所述分析单元根据统计单元统计的结果,得出用短位数浮点表示各个类型数据应当设定的指数位长度EL及指数位偏移offset。
所述用于执行人工神经网络正向运算的装置还包括舍入单元,所述舍入单元用于在运算结束后,对超出短位数浮点精度范围的数据进行舍入操作。
所述舍入单元选自随机舍入单元、四舍五入单元、向上舍入单元、向下舍入单元、截断舍入单元中的任一种;
其中,所述随机舍入单元执行如下操作:
其中,y表示随机舍入后的短位浮点数据,x表示随机舍入前的长位浮点数据,ε为当前短位数浮点数据表示格式所能表示的最小正整数,即2
offset-(X-1-EL),
表示对原数据x直接截得短位数浮点数据所得的数,w.p.表示概率,即随机舍入获得的数据y为
的概率为
的概率为
所述四舍五入单元执行如下操作:
其中,y表示四舍五入后的短位浮点数据,x表示四舍五入前的长位浮点数据,ε为当前短位数浮点数据表示格式所能表示的最小正整数,即2
offset-(X-1-EL),
为ε的整数倍,其值为小于或等于x的最大数;
所述向上舍入单元执行如下操作:
y=|x|;
其中,y表示向上舍入后的短位浮点数据,x表示向上舍入前的长位浮点数据,|x|为ε的整数倍, 其值为大于或等于x的最小数,ε为当前短位数浮点数据表示格式所能表示的最小正整数,即2
offset-(X-1-EL);
所述向下舍入单元执行如下操作:
其中,y表示向上舍入后的短位浮点数据,x表示向上舍入前的长位浮点数据,
为ε的整数倍,其值为小于或等于x的最大数,ε为当前短位数浮点数据表示格式所能表示的最小正整数,即2
offset-(X-1-EL);
所述截断舍入单元执行如下操作:
其中,y表示截断舍入后的短位浮点数据,x表示截断舍入前的长位浮点数据,[x]表示对原数据x直接截得短位数浮点数据所得的数。
所述浮点数据转换单元先通过所述舍入单元对待处理的数据进行舍入操作,再根据浮点数据统计模块得到的指数位偏移量offset及指数位的长度EL来实现长位数浮点数据类型向短位数浮点数据类型的转换。
所述用于执行人工神经网络正向运算的装置还包括运算缓存单元,所述运算缓存单元采用长位数浮点数据类型存储正向运算中加法和乘法的中间运算结果。
一种执行人工神经网络正向运算的方法,包括以下步骤:
获取所述人工神经网络各个层的长位数浮点数据,包括每一层的权值、偏置和/或输入输出值;
对获得的所述长位数浮点数据进行分析,获得存储所述长位数浮点数据所需的指数位偏移量offset及指数位的长度EL;
根据所述指数位偏移量offset及指数位的长度EL,将所有所述长位数浮点数据采用短位数浮点数据类型表示;
对所述短位数浮点数据执行人工神经网络正向运算。
所述对获得的长位数浮点数据进行分析的步骤中,对所述人工神经网络不同层、不同类型的数据分别进行分析,获得相对于所述人工神经网络不同类型的数据的指数位偏移量offset及指数位的长度EL。
所述对短位数浮点数据执行人工神经网络正向运算的步骤中,对于正向运算中的加法运算和乘法运算,将其中间计算结果采用长位数浮点数据形式存储。
在执行完所述人工神经网络正向运算之后,将参与反向运算的权值和偏置数据采用在正向运算时保留的长位数浮点数据表示的副本、其余数据采用由短位数浮点数据转换成的长位数浮点数据后再进行反向运算。
一种用于执行人工神经网络正向运算的装置,包括浮点数据统计模块、数据转换单元和定点数据运算模块,
所述浮点数据统计模块用于对所述人工神经网络正向运算所需的各个类型的数据进行统计分析,得到小数点位置Point location;
所述数据转换单元用于根据所述浮点数据统计模块得到的所述小数点位置Point location来实现长位数浮点数据类型向短位数定点数据类型的转换;
所述定点数据运算模块用于在所述数据转换单元将所有所述人工神经网络正向运算中所需的输入、权值和/或偏置数据均采用短位数定点数据类型表示之后,对所述短位数定点数据进行人工神经网络正向运算。
所述浮点数据统计模块包括数据提取单元、统计单元和分析单元,其中,所述数据提取单元用于提取基于长位数浮点数据的正向运算中各种不同类型的数据;所述统计单元用于统计同一类型数据的数据范围及各数据段的数据分布情况;所述分析单元根据统计单元统计的结果,得出用短位数定点表示各个类型数据应当设定的小数点位置Point location。
所述用于执行人工神经网络正向运算的装置还包括舍入单元,所述舍入单元用于在运算结束后,对超出短位数定点精度范围的数据进行舍入操作。
所述舍入单元选自随机舍入单元、四舍五入单元、向上舍入单元、向下舍入单元、截断舍入单元中的任一种;
其中,所述随机舍入单元执行如下操作:
其中,y表示随机舍入后的短位定点数据,x表示随机舍入前的长位浮点数据,ε为当前短位数定点数据表示格式所能表示的最小正整数,即2
-Point_location,
表示对原数据x直接截得短位数定点数据所得的数,w.p.表示概率,即随机舍入获得的数据y为
的概率
为,
的概率为
所述四舍五入单元执行如下操作:
其中,y表示四舍五入后的短位定点数据,x表示四舍五入前的长位浮点数据,ε为当前短位数定点数据表示格式所能表示的最小正整数,即2
-Point_location,
为ε的整数倍,其值为小于或等于x的最大数;
所述向上舍入单元执行如下操作:
其中,y表示向上舍入后的短位定点数据,x表示向上舍入前的长位浮点数据,|x|为ε的整数倍,其值为大于或等于x的最小数,ε为当前短位数定点数据表示格式所能表示的最小正整数,即2
-Point_location;
所述向下舍入单元执行如下操作:
其中,y表示向上舍入后的短位定点数据,x表示向上舍入前的长位浮点数据,
为ε的整数倍,其值为小于或等于x的最大数,ε为当前短位数定点数据表示格式所能表示的最小正整数,即2
-Point_location;
所述截断舍入单元执行如下操作:
所述数据转换单元先通过所述舍入单元对待处理的数据进行舍入操作,再根据浮点数据统计模块得到的小数点位置Point location来实现长位数浮点数据类型向短位数定点数据类型的转换。
所述用于执行人工神经网络正向运算的装置还包括运算缓存单元,所述运算缓存单元采用长位数浮点数据类型存储正向运算中加法和乘法的中间运算结果。
一种执行人工神经网络正向运算的方法,包括以下步骤:
步骤1,获取所述人工神经网络各个层的长位数浮点数据,包括每一层的权值、偏置和/或输入输出值;
步骤2,对获取的所述长位数浮点数据,统计落在一列逐渐缩小的区间:
i=0,1,...,N中的比例,其中X是短位数定点数据类型的总位数;得到的相应的比例记为:p
0,p
1,...,p
N,其中N是预先设定的一个正整数;
步骤3,对于所述长位数浮点数据,预先设定一个溢出率EPL,取小数点位置Point location为:max{i|p
i≥1-EPL,i∈{0,1,...,N}};即在0,1,...,N中取最大的i,使得p
i≥1-EPL;
步骤4,根据所述小数点位置Point location,将所有所述长位数浮点数据采用短位数定点数据类型表示;
步骤5,对所述短位数定点数据执行人工神经网络正向运算。
在所述执行人工神经网络正向运算的方法中,对所述人工神经网络不同层、不同类型的数据分别进行统计分析,获得相对于所述人工神经网络不同类型的数据的小数点位置Point location,并分别进行计算。
所述对短位数定点数据执行人工神经网络正向运算的步骤中,对于正向运算中的加法运算和乘法运算,将其中间计算结果采用长位数浮点数据形式存储。
一种片上数据划分读写方法,包括:
数据划分步骤,根据数据划分策略将片上数据存储在不同区域,分别存储在片内存储介质和片外存储介质;
预先操作步骤,在进行数据拼接时预先对片内存储数据的片内地址索引进行操作处理;
数据拼接步骤,根据数据拼接策略将所述片内存储数据和片外输入数据拼接得到原始数据表示。
还包括:
数据存储步骤,存储搬运所述片内存储介质的所述片内存储数据和来自所述片外存储介质的所述片外输入数据;
所述存储步骤中读写端口分离,数据的读出和写入相互独立;
所述预先操作步骤还包括:
运算处理所述片内存储数据;
运算处理外部输入数据处理;
所述外部输入数据包括所述片外输入数据、所述读写端口直接读入的数据。
所述数据存储步骤还包括:
根据片内地址索引来索引所述片内存储数据;
已索引到的数据的输出出口;
将要存储的数据根据写入地址写入相应存储位置。
所述数据划分步骤还包括:
地址空间划分成为片外数据空间和片内数据空间;
根据数据替换策略在所述片内存储介质和片外存储介质之间进行数据替换;所述数据替换策略包括顺序替换、逆序替换以及随机替换;
所述数据划分策略包括定点数划分、浮点数划分;
所述数据拼接步骤还包括:
片内片外数据传输的形式从所述原始数据表示转为全部或者部分的数据索引,拼接全部或者部分的片上的所述数据索引的结果获得所述原始数据表示;
所述数据拼接步骤通过片内片外数据通路或片内数据通路进行,所述片内片外数据通路包括PCI、 PCIE、HT互联技术,所述片内数据通路包括FAT-TREE、H-TREE互联技术,片内片外数据连接方式包括多芯片互联结构;
所述片内存储介质或所述片外存储介质中的数据可以被一次或者多次读写,所述数据可以被读至一个或者多个片上运算单元;所述片内存储介质或所述片外存储介质可以被一次或者多从外部进行读写,介质可以被一次或者多次从内部读写。
一种片上数据划分读写系统,包括:
数据划分模块,用于根据数据划分策略将片内存储数据划分在不同区域,分别存储在片内存储介质和片外存储介质;
预先操作模块,用于在进行数据拼接时预先对片内存储数据的片内地址索引进行操作处理;
数据拼接模块,用于根据数据拼接策略将片内存储数据和片外输入数据拼接得到所述原始数据表示。
还包括:
存储模块,用于存储搬运所述片内存储介质的所述片内存储数据和来自所述片外存储介质的所述片外输入数据;
所述存储模块采用读写端口分离,数据的读出和写入相互独立;
所述预先处理模块还包括:
片上处理子模块,用于运算处理所述片内存储数据;
片外处理子模块,用于运算处理外部输入数据处理;
所述外部输入数据包括所述片外输入数据、所述读写端口直接读入的数据。
所述存储模块还包括:
地址索引接口,用于根据片内地址索引来索引所述片内存储数据;
数据读出接口,用于已索引到的所述片内存储数据的输出出口;
数据写入接口,用于将要存储的数据根据写入地址写入相应存储位置。
所述数据划分模块还包括:
地址划分子模块,用于地址空间划分成为片外数据空间和片内数据空间;
数据替换子模块,用于根据数据替换策略在所述片内存储介质和片外存储介质之间进行数据替换;所述数据替换策略包括顺序替换、逆序替换以及随机替换;
所述数据划分策略包括定点数划分、浮点数划分;所述数据划分模块基于芯片中的一个或多个片上计算单元实现,所述片上计算单元发起读写请求并处理拼接得到的原始数据;
所述数据拼接模块还包括:
索引拼接子模块,用于片内片外数据传输的形式从原始数据表示转为全部或者部分的数据索引,拼接全部或者部分的片上的所述数据索引的结果获得所述原始数据表示;
所述数据拼接模块读写通过片内片外数据通路或片内数据通路进行,所述片内片外数据通路包括PCI、PCIE、HT互联技术,所述片内数据通路包括FAT-TREE、H-TREE互联技术,片内片外数据连接方式包括多芯片互联结构;
所述片内存储介质或所述片外存储介质中的数据被一次或者多次读写,所述数据被读至一个或者多个片上运算单元;所述片内存储介质或所述片外存储介质被一次或者多从外部进行读写,所述片内存储介质被一次或者多次从内部读写。
一种片上读写装置,包括根据所述片上数据划分读写系统。
所述片上读写装置包括静态随机存储器、动态随机存储器、增强动态随机存取存储器、寄存器以及非易失存储器或者3D存储器件。
一种用于执行人工神经网络正向运算的装置,包括指令缓存单元、控制器单元、直接内存访问单元、 H树模块、主运算模块、以及多个从运算模块,指令缓存单元用于通过直接内存访问单元读入指令并缓存读入的指令;
控制器单元用于从指令缓存单元读取指令,并将该指令译码成控制H树模块、主运算模块、以及从运算模块行为的微指令;
直接内存访问单元用于从外部地址空间向主运算模块和各从运算模块的相应数据缓存单元中写数据或从所述数据缓存单元向外部地址空间读数据;
H树模块用于,在每层神经网络反向训练开始计算的阶段,主运算模块通过H树模块向所有的从运算模块传输本层的输入神经元向量,在从计算模块的计算过程完成后,H树模块逐级将各从计算模块的输出神经元值拼成中间结果向量;
主运算模块用于利用中间结果向量完成后续计算。
多个从运算模块利用相同的输入神经元向量和各自不同的权值向量,并行地计算出各自的输出神经元值。
主运算模块对中间结果向量执行以下任一项操作:
对加偏置操作,在中间结果向量上加上偏置;
对中间结果向量进行激活,激活函数active是sigmoid,tanh,relu,softmax中的任一个;
采样操作,将中间结果向量与随机数比较,大于随机数则输出1,小于随机数则输出0;或者
池化操作,包括最大值池化或平均值池化(AVGPOOLING)。
从运算模块包括输入神经元缓存单元,用于缓存输入神经元数据。
H树模块构成主运算模块和所述多个从运算模块之间的数据通路,并具有H树型的结构,H树是由多个节点构成的二叉树通路,每个节点将上游的数据同样地发给下游的两个节点,将下游的两个节点返回的数据合并,并返回给上游的节点。
主运算模块包括运算单元、数据依赖关系判断单元和神经元缓存单元,其中:
神经元缓存单元用于缓存主运算模块在计算过程中用到的输入数据和输出数据;
运算单元完成主运算模块的各种运算功能;
数据依赖关系判断单元是运算单元读写神经元缓存单元的端口,保证对神经元缓存单元中数据读写不存在一致性冲突,并且负责从神经元缓存单元读取输入神经元向量通过H树模块发送给从运算模块;以及
来自H树模块的中间结果向量被发送到运算单元。
每个从运算模块包括运算单元、数据依赖关系判定单元、神经元缓存单元和权值缓存单元,其中:
运算单元接收控制器单元发出的微指令并进行算数逻辑运算;
数据依赖关系判断单元负责计算过程中对神经元缓存单元和权值缓存单元的读写操作,保证对神经元缓存单元和权值缓存单元的读写不存在一致性冲突;
神经元缓存单元缓存输入神经元向量数据以及该从运算模块计算得到的输出神经元值;以及
权值缓存单元缓存该从运算模块在计算过程中需要的权值向量。
通过以下方式保证读写不存在一致性冲突:判断尚未执行的微指令与正在执行过程中的微指令的数据之间是否存在依赖关系,如果不存在,允许该条微指令立即发射,否则需要等到该条微指令所依赖的所有微指令全部执行完成后该条微指令才允许被发射。
一种使用用于执行人工神经网络正向运算的装置执行单层人工神经网络正向运算的方法,包括:
直接内存访问单元从外部地址空间读取与该层人工神经网络正向运算有关的所有人工神经网络运算指令,并将其缓存在指令缓存单元中;
直接内存访问单元从外部地址空间读取主运算模块需要的与该层人工神经网络正向运算有关的所有数据至主运算模块的神经元缓存单元;
直接内存访问单元从外部地址空间读取从运算模块需要的权值矩阵数据;
配置该层神经网络正向运算需要的各种常数;
主运算模块首先通过H树模块将输入神经元向量发给各从运算模块,保存至从运算模块的神经元缓存单元;
从运算模块的运算单元从权值缓存单元读取权值向量,从神经元缓存单元读取输入神经元向量,完成权值向量和输入神经元向量的点积运算,将得到的神经元值通过H树模块返回;
在H树模块中,各从运算模块返回的神经元值被逐级拼成完整的中间结果向量;
主运算模块从神经元缓存单元读取偏置向量,与H树模块返回的中间结果向量相加,然后再对相加结果做激活,得到输出神经元向量写回至神经元缓存单元;以及
直接内存访问单元将神经元缓存单元中的输出神经元向量存至外部地址空间指定地址。
一种执行多层人工神经网络正向运算的方法,包括:
针对每一层,执行根据使用用于执行人工神经网络正向运算的装置执行单层人工神经网络正向运算的方法,其中:
当针对上一层人工神经网络执行完毕后,将主运算模块中存储的上一层的输出神经元地址作为本层的输入神经元地址,针对所述本层再次执行使用用于执行人工神经网络正向运算的装置执行单层人工神经网络正向运算的方法。
一种非线性函数的运算装置,包括:
定义域转换部,用于将输入的自变量转换成查表范围内的对应值;
查表部,用于根据输入的自变量或由所述定义域转换部处理后的自变量,查找对应的分段线性拟合的斜率和截距;
所述的非线性函数的运算装置,其中,所述查表部包括:
斜率数组存储单元,用于存储所述查表部中的斜率数据;
截距数组存储单元,用于存储所处查表部中的截距数据;
索引生成单元,用于根据输入自变量的值计算出对应的斜率和截距的索引;
索引单元,用于根据索引生成单元生成的索引在斜率和截距数组存储单元中读取出对应的值,并输出。
以及线性拟合部,用于根据所述查表部查表得到的斜率和截距通过线性拟合的方法得到最后结果。
所述的非线性函数的运算装置,其中,所述定义域转换部包括:
第一乘法器,用于对输入的自变量进行缩放;
第一加法器,用于对缩放后的自变量进行偏移。
所述的非线性函数的运算装置,其中,所述查表部包括:
斜率数组存储单元,用于存储所述查表部中的斜率数据;
截距数组存储单元,用于存储所处查表部中的截距数据;
索引生成单元,用于根据输入自变量的值计算出对应的斜率和截距的索引;
索引单元,用于根据索引生成单元生成的索引在斜率和截距数组存储单元中读取出对应的值,并输出。
所述的非线性函数的运算装置,其中,所述线性拟合部包括:
第二乘法器,用于根据斜率与输入的自变量或由所述定义域转换部处理后的自变量进行乘法运算,得到运算结果;
第二加法器,用于根据所述运算结果以及截距进行加法运算,得到所述最后结果。
所述的非线性函数的运算装置,其中,进一步包括:
第一自变量选择器,用于选择所述查表部进行处理时所使用的自变量。
所述的非线性函数的运算装置,其中,进一步包括:
第二自变量选择器,用于选择所述第二乘法器进行乘法运算时所使用的自变量。
为了实现上述目的,本披露还提供了一种非线性函数的运算方法,包括:
步骤一,将输入的自变量转换成查表范围内的对应值;
步骤二,根据所述自变量或由所述定义域转换部处理后的自变量,查找对应的分段线性拟合的斜率和截距;以及
步骤三,根据所述查表部查表得到的斜率和截距通过线性拟合的方法得到最后结果。
所述的非线性函数的运算方法,其中,所述步骤一中,包括:
对输入的自变量进行缩放;
对缩放后的自变量进行偏移。
所述的非线性函数的运算方法,其中,所述步骤二中,包括:
通过设置第一自变量选择器选择所述查表部进行处理时所使用的自变量。
所述的非线性函数的运算方法,其中,所述步骤三中,包括:
根据斜率与输入的自变量或由所述定义域转换部处理后的自变量进行乘法运算,得到运算结果;
根据所述运算结果以及截距进行加法运算,得到所述最后结果。
所述的非线性函数的运算方法,其中,所述步骤三中,包括:
通过设置第二自变量选择器选择进行乘法运算时所使用的自变量。
本披露实施例中终端设备可获取第一信息,所述第一信息为终端设备待处理的信息,所述终端设备设置有计算装置;在所述计算装置中调用运算指令对所述第一信息进行计算,得到第二信息;输出所述第二信息;这样提升了信息处理效率。
为了更清楚地说明本披露实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本披露的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本披露实施例提供的计算装置的结构示意图。
图1A是本披露实施例提供的矩阵计算单元的结构示意图。
图1B是本披露实施例提供的流水级的结构示意图。
图1C是本披露实施例披露的一种矩阵计算方法的流程示意图。
图1D是本披露实施例提供的正向和反向运算示意图。
图1E是本披露实施例提供的指令集的格式示意图。
图1F是本披露实施例提供的另一种计算装置的结构示意图。
图1G是本披露实施例提供的计算装置执行矩阵乘向量指令的流程图。
图2A是本披露实施例提供的一种计算装置的示意性框图。
图2B是本披露实施例提供的互联模块的示意框图。
图2C是本披露实施例提供的用于执行卷积神经网络正向运算的装置中主运算模块的示意框图。
图2D是本披露实施例提供的用于执行卷积神经网络正向运算的装置中从运算模块的示意框图。
图2E是本披露实施例提供的一种流执行方法的示意流程图。
图2F是本披露实施例提供的的一种终端设备的示意性框图。
图2G是本披露实施例提供的提供的另一种终端设备的示意性框图。
图2H是本披露实施例提供的一种信息处理方法的示意流程图。
图3是本披露实施例提供的一种基于所述计算装置的信息处理方法的流程示意图。
图3A是本披露实施例提供的又一种基于所述计算装置的信息处理方法的流程示意图。
图3B是本披露实施例提供的又一种基于所述计算装置的信息处理方法的流程示意图。
图3C是本披露实施例提供基于所述计算装置的信息处理方法的流程图。
图3D是本披露实施例提供的基于所述计算装置的信息处理方法的流程图。
图3E提供了一种基于所述计算装置的信息处理方法流程示意图。
图3F提供了一种基于所述计算装置的信息处理方法的流程示意图。
图4是本披露实施例运算指令调取示意图。
图4A是本申请实施例提供的一种计算装置的结构示意图。
图4B是本申请一个实施例提供的计算装置的结构图。
图4C是本申请另一个实施例提供的计算装置的结构图。
图4D是本申请实施例提供的主处理电路的结构图。
图4E是本申请实施例提供的另一种计算装置的结构图。
图4F是本申请实施例提供的树型模块的结构示意图。
图4G是本申请实施例提供的又一种计算装置的结构图。
图4H是本申请实施例提供的还一种计算装置的结构图。
图4I是本申请实施例提供的一种组合处理装置的结构图。
图4J是本申请实施例提供的一种计算装置的结构示意图。
图4K是本申请实施例提供的另一种组合处理装置的结构图。
图4L是本申请实施例提供的一种板卡的结构示意图。
图5是本披露实施例另一运算指令调取示意图。
图5A示出稀疏用户数据的示意图。
图5B所示的神经网络进行特征提取示意图。
图6A本披露实施例提供的一种终端设备的示意性框图。
图6B是本披露实施例提供的卷积计算指令的流程示意图。
图6C是本披露实施例提供的全连接层正向运算指令的流程示意图。
图6D是本披露实施例提供的池化运算正向运算流程图。
图6E是本披露实施例提供的池化运算反向运算流程图。
图6F是本披露实施例提供的批归一化正向运算流程图。
图7A是本披露的指令集的格式示意图;
图7B是本披露的神经网络运算指令的格式示意图;
图7C是本披露的矩阵运算指令的格式示意图;
图7D是本披露的向量运算指令的格式示意图;
图7E是本披露的矩阵-向量运算指令的格式示意图;
图7F为本披露的hub_one_to_two结构示意图;
图8为本披露的hub_one_to_two与数据接收方握手的行为示意图;
图9为本披露的一个实施例中使用h-tree连接的16+1个核的片上多核结构示意图;
图10为本披露的另一个实施例中数据在hub中传输的行为示意图;
图11为本披露的h-tree结构的展开成完全二叉树拓扑的结构示意图;
图12为本披露的另一个实施例中在h-tree上,全带宽的数据与对应每个leaf tile的数据段的示意图。
图13为本披露的一个实施例中使用x-tree连接的64+1个核的片上多核结构示意图;
图14为本披露的另一个实施例中数据在hub中传输的行为示意图;
图15为本披露的x-tree结构的完全四叉树拓扑的结构示意图;
图16为本披露的另一个实施例中,在x-tree上,全带宽的数据与对应每个leaf tile的数据段的示意图;
图17是作为本披露一实施例的总体结构的示意性框图;
图18是作为本披露一实施例的一稀疏连接的神经网络的节点结构示意图;
图19是图4的神经网络的连接关系示意图;
图20是作为本披露又一实施例的一稀疏连接的神经网络的连接关系示意图;
图21是作为本披露一实施例的一卷积操作的示意图;
图22是卷积神经网络变得稀疏时输入、输出和权值的变化图;
图23是作为本披露一实施例的稀疏连接的人工神经网络运算装置的结构示意图;
图24是作为本披露一实施例的映射单元的结构示意图;
图25是作为本披露一实施例的稀疏连接的人工神经网络运算过程的流程图;
图26是作为本披露另一实施例的稀疏连接的人工神经网络运算装置的结构示意图;
图27是作为本披露另一实施例的映射单元的结构示意图;
图28是作为本披露再一实施例的稀疏连接的人工神经网络运算装置的结构示意图;
图29是作为本披露再一实施例的映射单元的结构示意图;
图30是作为本披露还一实施例的稀疏连接的人工神经网络运算装置的结构示意图;
图31是作为本披露还一实施例的映射单元的结构示意图;
图32是本披露神经网络的处理系统的一种实施例的结构框图;
图33是本披露神经网络的处理系统的另一实施例的结构框图;
图34是本披露一种实施例中神经网络划分的示意图;
图35是本披露另一实施例中神经网络划分的示意图;
图36是本披露又一实施例中神经网络划分的示意图;
图37是本披露神经网络的处理方法的流程图;
图38示出了根据本披露实施例的用于执行支持离散数据表示的人工神经网络正向运算的装置的整体结构的示例框图。
图39示意性示出了根据本披露实施例的用于执行支持离散数据表示的人工神经网络正向运算的装置中H树模块(互联模块的一种实施方式)的结构。
图40示出了根据本披露实施例的用于执行支持离散数据表示的人工神经网络正向运算的装置中主运算模块结构的示例框图。
图41示出了根据本披露实施例的用于执行支持离散数据表示的人工神经网络正向运算的装置中从运算模块结构的示例框图。
图42示出了根据本披露实施例的神经网络正向运算过程的示例框图。
图43示出了根据本披露实施例的支持离散数据表示的神经网络反向训练过程的示例框图。
图44示出了根据本披露实施例的单层人工神经网络运算的流程图。
图45示出了根据本披露实施例的运算单元示例结构。
图46示出了根据本披露实施例的连续数据和离散数据转化的连续离散转化模块的示例结构;
图47A为依据本公开一实施例的神经网络运算装置的结构示意图。
图47B为依据本公开另一实施例的神经网络运算装置的结构示意图。
图47C为本公开实施例的运算单元功能示意图。
图47D为本公开实施例的运算单元另一功能示意图。
图47E为本公开实施例的主处理电路的功能示意图。
图47F为依据本公开实施例的神经网络运算装置的另一结构示意图。
图47G为依据本公开实施例的神经网络运算装置的又一结构示意图。
图47H为依据本公开实施例的神经网络运算方法流程图。
图47I为依据本公开实施例的编码表的示意图。
图47J为依据本公开实施例的编码表的另一示意图。
图47K为依据本公开实施例的编码表的另一示意图。
图47L为依据本公开实施例的编码表的另一示意图。
图47M为依据本公开实施例的幂次数据的表示方法示意图。
图47N为依据本公开实施例的权值与幂次神经元的乘法操作示意图。
图47O为依据本公开实施例的权值与幂次神经元的乘法操作示意图。
图48A为依据本公开实施例的神经网络运算装置的结构示意图。
图48B为依据本公开实施例的神经网络运算方法流程图。
图48C为依据本公开实施例的幂次数据的表示方法示意图。
图48D为依据本公开实施例的神经元与幂次权值的乘法操作示意图。
图48E为依据本公开实施例的神经元与幂次权值的乘法操作示意图。
图48F为依据本公开实施例的神经网络运算方法流程图。
图48G为依据本公开实施例的幂次数据的表示方法示意图。
图48H为依据本公开实施例的幂次神经元与幂次权值的乘法操作示意图。
图49A是本公开提出的运算装置的结构示意图。
图49B是本公开提出的运算装置的信息流示意图。
图49C是本公开提出的运算装置中运算模块的结构示意图。
图49D是本公开提出的运算模块进行矩阵运算示意图。
图49E是本公开提出的运算装置中运算控制模块的结构示意图。
图49F是本公开一实施例提出的运算装置的详细结构示意图。
图49G是本公开另一实施例提出的运算方法的流程图。
图50A为本公开实施例的数据筛选装置的整体结构示意图。
图50B为本公开实施例的数据筛选单元功能示意图。
图50C是本公开实施例的数据筛选装置的具体结构示意图。
图50D是本公开实施例的数据筛选装置的另一具体结构示意图。
图50E是本公开实施例的数据筛选方法的流程图。
图50F示意性示出了本公开一实施例的异构多核神经网络处理器。
图50G示意性示出了本公开另一实施例的异构多核神经网络处理器。
图50H为本公开另一实施例的神经网络运算方法流程图。
图50I为本公开另一实施例的神经网络运算方法流程图。
图50J示意性示出了本公开另一实施例的异构多核神经网络处理器。
图50K示意性示出了本公开另一实施例的异构多核神经网络处理器。
图51是本公开实施例提供的一种对神经网络进行粗粒度剪枝稀疏化的处理装置的结构示意图;
图51A是本公开实施例提供的对神经网络的全连接层进行粗粒度剪枝示意图;
图51B是本公开实施例提供的对神经网络的卷积层进行粗粒度剪枝示意图;
图51C是本公开实施例提供的一种加速装置的结构示意图;
图51D是本公开实施例提供的另一种加速装置的结构示意图;
图51E是粗粒度选数单元工作过程示意图;
图51F是本公开实施例提供的一种处理单元的结构示意图;
图52A是本公开实施例提供的一种粗粒度选数示意图;
图52B是本公开实施例提供的一种粗粒度选数示意图;
图52C是本公开实施例提供的另一种加速装置的结构示意图;
图52D是本公开实施例提供的另一种加速装置的结构示意图;
图52E是本公开实施例提供的一种处理方法的一具体实施例示意图;
图53A是本公开实施例提供的一种组合处理装置的结构示意图;
图53B是本公开实施例提供的另一种组合处理装置的结构示意图;
图53C是本公开实施例提供的一种神经网络处理器板卡的结构示意图;
图53D是本公开实施例提供的一种芯片封装结构示意图;
图53E是本公开实施例提供的另一种芯片封装结构示意图;
图53F是本公开实施例提供的另一种芯片封装结构示意图;
图54是本公开实施例提供的一种处理方法的流程图;
图54A是本公开实施例提供的一种数据的量化方法的步骤示意图;
图54B是本公开实施例提供的数据的量化的过程示意图;
图54C是本公开实施例提供的数据的量化装置的结构示意图。
图54D是本公开实施例提供的处理装置的结构示意图;
图54E是本公开实施例提供的查表的过程示意图;
图54F是本公开实施例提供的的一具体实施例的处理装置的结构示意图;
图54G是本公开实施例提供的处理方法的步骤示意图;
图54H是本公开实施例提供的一具体实施例的处理方法的步骤示意图;
图54I是本公开实施例提供的数据压缩方法流程图;
图55A是本公开实施例提供的另一种处理装置的结构示意图;
图55B是本公开实施例提供的神经网络处理器的结构示意图;
图56是本公开实施例提供的一种神经网络数据的处理方法;
图56A是本公开实施例提供的一实施例所示运算装置的筛选单元功能示意图;
图56B是本公开实施例提供的另一实施例所示运算装置的筛选单元功能示意图;
图56C是本公开实施例提供的另一实施例所示运算装置的筛选单元功能示意图;
图56D是本公开实施例提供的另一实施例所示运算装置的筛选单元功能示意图;
图56E是本公开实施例提供的人工神经网络中卷积层在进行结构剪裁前的运算对比示意图;
图56F是本公开实施例提供的人工神经网络中卷积层在进行结构剪裁后的运算对比示意图;
图57是本公开实施例提供的运算装置的结构示意图;
图57A是本公开实施例提供的人工神经网络中卷积层的结构示意图;
图57B是本公开实施例提供的采用筛选单元对人工神经网络实现结构裁剪的结构示意图;
图57C是本公开实施例提供的采用连接状态数组的一种表示实现图57B所示结构裁剪的示意图;
图57D是本公开实施例提供的采用连接状态数组的另一种表示实现图57B所示结构裁剪的示意图;
图57E是本公开实施例提供的运算装置进行运算的方法流程图;
图57F是本公开实施例提供的如图57E所示步骤S808对应的实施子步骤流程图;
图58A是本公开实施例提供的另一运算装置的结构示意图;
图58B是本公开实施例提供的另一运算装置的结构示意图。
图59为根据本披露一实施例的用于存储数据的短位数浮点数据结构的具体表示方法;
图60为根据本披露一实施例的用于执行人工神经网络正向运算的装置中浮点数据统计模块的示例框图;
图60A为本申请执行人工神经网络正向运算的装置的示例框图;
图61为根据本披露一实施例的用于执行人工神经网络正向运算的装置中正向运算模块的短位数浮点计算部分的示例框图;
图62为根据本披露一实施例的神经网络正向运算过程的示例框图;
图63示意性示出了根据本披露一实施例的用于执行人工神经网络正向运算装置的运算流程示例框图;
图64为根据本披露一实施例的用于存储数据的定点数据结构的具体表示方法;
图65为根据本披露一实施例的用于执行人工神经网络正向运算的装置中浮点数据统计模块的示例框图;
图65A为本申请执行人工神经网络正向运算的装置的示例框图;
图66为根据本披露一实施例的用于执行人工神经网络正向运算的装置中正向运算模块的短位数定点计算部分示例框图;
图67为根据本披露一实施例的神经网络正向运算过程的示例框图;
图68示意性示出了根据本披露一实施例的用于执行人工神经网路正向运算装置的运算流程示例框图;
图69为根据本披露一实施例的算法实施总体流程图;
图70是本披露片上重复寻址的装置的优选实施例的总体结构的示例的框图;
图71是本披露片上重复寻址的方法的优选实施例的数据地址划分图;
图72是本披露片上重复寻址的方法的优选实施例的数据划分示意图之一;
图73是本披露片上重复寻址的方法的优选实施例的数据划分示意图之二;
图74是本披露片上重复寻址的方法的优选实施例的替换策略示意图;
图75是本披露片上重复寻址的方法的一种具体实施例的流程图;
图76是本披露片上重复寻址的方法的片上重复索引优选实施例示意图;
图77是本披露所述片上数据划分读写系统的结构示意图;
图78是本披露优选实施例的所述片上数据划分读写系统的结构示意图;
图79A是本披露所述片上数据划分策略的实现示意图之一;
图79B是本披露所述片上数据划分策略的实现示意图之二;
图80是本披露根据本披露所述片上数据划分读写系统的片上数据索引实施例示意图;
图81是本披露根据本披露所述片上数据划分读写方法的物理框架示意图;
图82是本披露根据本披露所述片上数据划分读写方法一个实施例数据拼接操作的物理设计框架图;
图83是本披露中所述片上数据划分读写方法流程示意图;
图84是本披露中所述片上数据划分读写方法一个具体实施例流程示意图;
图85示出了根据本披露实施例的神经网络计算系统的结构示意图。
图86A示意性示出了根据本披露实施例的多处理器的一种实施例示意图。
图86B示意性示出了根据本披露实施例的多处理器的另一种实施例示意图。
图87示出了根据本披露实施例的用于训练和推理的神经网络计算系统结构示意图。
图88示出了根据本披露实施例的计算处理器共享存储单元的计算系统结构示意图。
图89示出了根据本披露实施例的计算处理器,控制处理器共享存储单元的神经网络计算系统的结构示意图。
图90示出了根据本披露实施例的用于复杂神经网络任务的系统的示例框图。
图91示意示出了包括数据处理装置的互连电路。
图92是根据本披露的一个实施例的数据处理装置的框图,更详细示出图10的数据处理装置。
图93是本披露的互连电路的数据处理的流程图。
图94是根据本披露的一个实施例示出的事务数据从到达数据处理装置到获得传输通道占用权并输出至下游节点的流程图。
图95是本披露的激活函数的运算装置结构图。
图96是本披露的定义域转换部件的内部结构图。
图97是本披露的查表部件的内部结构图。
图98是本披露的线性拟合部件的内部结构图。
图99是本披露的激活函数的运算的第一实施例。
图100是本披露的激活函数的运算的第二实施例。
图101是本披露的激活函数的运算的第三实施例。
图102是本披露的激活函数的运算的第四实施例。
图103是本披露的激活函数的运算的第五实施例。
图103A为根据本发明一实施例的用于分段插值的装置的整体结构示例框图;
图103B为根据本发明一实施例的分段插值的方法流程图;
图103C为根据本发明一实施例的用于分段插值的硬件基本电路及数据传输示意图;
图103D为根据本发明一实施例的对指数函数exp(x)在固定区间上进行线性分段插值的插值效果示意图;
图104A是本发明实施例提供的非线性函数运算装置的结构图;
图104B是本发明实施例提供的非线性函数运算装置的内部结构图;
图104C是本发明实施例中线性拟合部的内部结构图;
图104D是本发明实施例的非线性函数运算的原理图;
图104E示出了本披露的概要构成图;
图105示出了本披露的编码器模块的概要构成图;
图105A示出了本披露编码过程的流程图;
图106示出了本披露的解码器模块的概要构成图;
图107示出了本披露解码过程的流程图;
图108是本披露提供的运算装置的结构示意图;
图109是本披露中指令模块的结构示意图;
图110是本披露中数据模块的结构示意图;
图111是本披露中运算模块的结构示意图;
图112是本披露中支持不同长度运算数据的指令的方法流程图;
图113是本披露实施例提供的不同长度运算向量进行运算时,循环读取较短向量进行运算的运算关系示意图;
图113A是现有技术中串行进位加法树的结构示意图;
图114是现有技术中华莱士树的结构示意图;
图115是本披露提供的执行多个浮点数相加的装置的示意图;
图116是本披露中指数位两两比较的示意图;
图117是本披露中选择最大指数位的示意图;
图118是本披露中计算移位模块的示意图;
图119是本披露提供的用于执行神经网络运算的装置的结构示意图;
图120是本披露中神经网络处理模块的结构示意图;
图121是本披露中外部存储模块的结构示意图;
图122是本披露中神经网络处理单元的结构示意图;
图123是本披露中片上互联单元的结构示意图;
图124是本披露执行一层全连接层运算实施例的流程图;
图125是本披露提供的运算装置的结构示意图;
图126是本披露提供的运算单元的结构示意图;
图127为本披露采用一条指令的方式执行运算的指令格式示意图;
图128是本披露的神经网络运算指令的格式示意图;
图129是本披露的矩阵-矩阵运算指令的格式示意图;
图130是本披露的向量-向量运算指令的格式示意图;
图131是本披露的矩阵-向量运算指令的格式示意图;
图132是本披露实施例的运算装置的结构示意图;
图133是本披露实施例中译码模块的结构示意图;
图134是本披露实施例的运算装置采用一条指令的方式执行运算的流程图;
图135是本披露采用两条指令的方式执行运算中位宽配置指令的格式示意图;
图136是本披露采用两条指令的方式执行运算中运算指令的格式示意图;
图137是本披露的神经网络位宽配置指令的格式示意图;
图138是本披露的神经网络运算指令的格式示意图;
图139是本披露的矩阵-矩阵位宽配置指令的格式示意图;
图140是本披露的矩阵-矩阵运算指令的格式示意图;
图141是本披露的向量-向量位宽配置指令的格式示意图;
图142是本披露的向量-向量运算指令的格式示意图;
图143是本披露的矩阵-向量位宽配置指令的格式示意图;
图144是本披露的矩阵-向量运算指令的格式示意图;
图145是本披露实施例的运算装置采用两条指令的方式执行运算的流程图;
图146是本披露实施例提供的一种计算装置示意图;
图147是本披露实施例提供的运算单元的结构示意图;
图148是本披露实施例提供的一种扩展计算指令的实现方法;
图149示意性示出了本披露实施例的装置结构示意图;
图150示意性示出了本披露一优选实施例的具体结构示意图;
图151为本披露实施例的步骤流程图;
图152示意性示出了本披露实施例的指令集的格式示意图;
图153示意性示出了本披露实施例的DMA控制模块执行2D DMA命令的流水线时空图。
图154示意性示出了本披露实施例的一种板卡的结构图。
图10-图13附图标记说明
11、12、13 输入端
1050、1100、1150 输出端
51、52、53 输入端的输入端口
54、55、56 输入端的输出端口
23、25、27 缓冲存储分配电路
41、42、43 路由选择电路
22、24、26、28、30、32 缓冲存储器
30、35、40、45、50、60 复用器
36 冲裁电路
38 多路选择电路
下面将结合本披露实施例中的附图,对本披露实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本披露一部分实施例,而不是全部的实施例。基于本披露中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本披露保护的范围。
应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本披露说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本披露。如在本披露说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
还应当进一步理解,在本披露说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
本披露中,所述终端设备设置有计算装置,所述计算装置可提供用于执行各种计算方法(简称算法)的运算指令,所述计算方法包括但不限于神经网络算法、语音识别算法、场景识别算法等等,具体在下文中详述。下面对本披露中计算装置所涉及的一些实施例进行阐述。
本披露具体实施方式提供一种矩阵计算方法,该矩阵计算方法在如图1所示的计算装置内完成,如图1所示,该计算装置包括:
存储器201、用于存储矩阵。优选的该存储器可以是高速暂存存储器,能够支持不同长度的矩阵数据;本披露将必要的计算数据暂存在高速暂存存储器上(Scratchpad Memory),使本计算装置在进行矩阵运算过程中可以更加灵活有效地支持不同长度的数据。上述存储器还可以为片外数据库、数据库或其他的能够存储的介质等等。
寄存器单元202,用于存储标量数据,其中,该标量数据包括但不限于:矩阵数据在存储介质201的地址以及矩阵与标量运算时的标量。在一种实施方式中,寄存器单元可以是标量寄存器,提供运算过程中所需的标量寄存器,标量寄存器不只存放矩阵地址,还存放有标量数据。当涉及到矩阵与标量的运算时,运算单元不仅要从寄存器单元中获取矩阵地址,还要从寄存器单元中获取相应的标量。
运算单元203,用于获取并执行第一运算指令。如图1A所示,该运算单元包括多个运算器,该运算器包括但不限于:矩阵加法运算器231、矩阵乘法运算器232、大小比较运算器233、非线性运算器234和矩阵标量乘法运算器235。
该矩阵计算方法如图1C所示,包括如下步骤:
步骤S301、运算单元203获取第一运算指令,所述第一运算指令包括:执行该指令所需的矩阵读取指示。
在步骤S301中,上述执行该指令所需的矩阵读取指示具体可以为多种,例如,在本披露一个可选的技术方案中,上述执行该指令所需的矩阵读取指示可以为所需矩阵的存储地址。又如,在本披露另一个可选的技术方案中,上述执行该指令所需的矩阵读取指示可以为所需矩阵的标识,该标识的表现形式 可以为多种,例如,矩阵的名称,又如,矩阵的识别号,再如该矩阵在寄存器单元的寄存器号或地址。
下面通过一个实际的例子来说明上述第一运算指令包含的执行该指令所需的矩阵读取指示,这里假设该矩阵运算公式为f(x)=A+B,其中,A、B均为矩阵。那么在第一运算指令中除了携带该矩阵运算公式外,还可以携带该矩阵运算公式所需矩阵的存储地址,具体的,例如A的存储地址为0000-0FFF,B的存储地址为1000-1FFF。又如,可以携带A以及B的标识,例如A的标识为0101,B的标识为1010。
步骤S302、运算单元203依据该矩阵读取指示向所述存储器201发送读取命令。
上述步骤S302的实现方法具体可以为:
如该矩阵读取指示可以为所需矩阵的存储地址,运算单元203向该存储器201发送该读取该存储地址的读取命令并采用批量读取方式获取对应的矩阵。
又如该矩阵读取指示可以为所需矩阵的标识时,运算单元203依据该标识从寄存器单元处采用单位读取方式读取该标识对应的存储地址,然后运算单元203向该存储器201发送该读取该存储地址的读取命令并采用批量读取方式获取对应的矩阵。
上述单个读取方式具体可以为,每次读取均为单位的数据,即1bit数据。此时设置单位读取方式即1位读取方式的原因为,对于标量数据来说,其占用的容量非常小,如果采用批量数据读取方式,那么读取的数据量容易大于所需的数据的容量,这样会导致带宽的浪费,所以对于标量的数据这里采用单位读取方式来读取以减少带宽的浪费。
步骤S303、运算单元203采用批量读取方式读取该指示对应的矩阵,对该矩阵执行所述第一运算指令。
上述步骤S303中批量读取方式具体可以为,每次读取均为多位的数据,例如每次读取的数据位数为16bit、32bit或64bit,即无论其所需的数据量是多少,其每次读取的均为固定多位数的数据,此批量读取的数据方式非常适合大数据的读取,对于矩阵来说,由于其所占用的容量大,如果采用单个读取方式,其读取的速度会非常慢,所以这里采用批量读取方式来获取多位的数据从而快速读取矩阵数据,避免因为读取矩阵数据过慢影响矩阵计算速度的问题。
本披露提供的技术方案的计算装置设置有寄存器单元了存储器,其分别存储标量数据以及矩阵数据,并且本披露为两种存储器分配了单位读取方式以及批量读取方式,通过对矩阵数据的特点分配匹配其特征的数据读取方式,能够很好的利用带宽,避免因为带宽的瓶颈对矩阵计算速度的影响,另外,对于标量数据存储单元来说,由于其存储的为标量数据,设置了标量数据的读取方式,提高了带宽的利用率,所以本披露提供的技术方案能够很好的利用带宽,避免带宽对计算速度的影响,所以其具有计算速度快,效率高的优点。
可选的,上述对该矩阵执行所述第一运算指令具体可以为:
对该矩阵执行n级流水级计算,具体的,对该矩阵执行第一流水级的计算得到第一结果,将第一结果输入到第二流水级执行第二流水级的计算得到第二结果,将第二结果输入到第三流水级执行第三流水级计算得到第三结果,一级一级向下执行后,将所述第n-1结果输入到第n流水级执行第n流水级的计算得到第n结果,将所述第n结果输入到所述存储器。n可以为大于等于2的整数。如n=3为例,上述流水级的操作流程图如图1B所示。
上述第一流水级包括但不限于:矩阵乘法计算器等等。
上述第二流水级包括但不限于:矩阵加法计算器、大小比较计算器等等。
上述第三流水级包括但不限于:非线性运算器、矩阵标量乘法器等等。
上述三种流水级根据不同的运算指令可以进行调整,例如,在仅仅执行向量运算或矩阵运算时,由于没有比较运算以及非线性运算,所以只需要执行第一流水级即可,当然在实际应用中,也可以仅仅保留第一流水级以及第二流水级,本披露的三个流水级并不表示所有的运算指令均需要,厂家或用户可以根据实际的运算自行调整。将矩阵分三个流水级运算主要是为了提高运算的速度,对于矩阵的计算来说, 例如采用现有的通用处理器在计算时,其运算的步骤具体可以为,处理器对矩阵进行计算得到第一结果,然后将第一结果存储在内存中,处理器从内存读取第一结果执行第二次计算得到第二结果,然后将第二结果存储在内存中,处理器从内从读取第二结果执行第三次计算得到第三结果,然后将第三结果存储在内存中。从上述计算的步骤可以看出,在通用处理器进行矩阵计算时,其并没有分流水级进行计算,那么每次计算完毕后均需要将计算完的数据进行保存,下次计算时需要再次读取,所以此方案需要重复存储读取多次数据,对于本披露的技术方案来说,第一流水级计算的第一结果直接进入第二流水级进行计算,第二流水级计算的第二结果直接进入到第三流水级进行计算,第一流水级与第二流水级计算的第一结果和第二结果无需存储,首先其减少了内存的占用空间,其次,其避免了结果的多次存储以及读取,提高了带宽的利用率,进一步提高了计算效率。
在本披露另一实施例中,可以自由组合各流水部件或者采取一级流水级。例如将第二个流水级和第三个流水级合并,或者将第一和第二以及第三个流水线都合并或者各个流水级负责不同的运算可以排列组合。例如,第一级流水负责比较运算,部分乘法运算,第二级流水负责非线性运算和矩阵标量乘法等组合。
可选的,上述计算装置还可以包括:缓存单元204,用于缓存第一运算指令。指令在执行过程中,同时也被缓存在缓存单元中,当一条指令执行完之后,如果该指令同时也是指令缓存单元中未被提交指令中最早的一条指令,该指令将被提交,一旦提交,该条指令进行的操作对装置状态的改变将无法撤销。在一种实施方式中,指令缓存单元可以是重排序缓存。
可选的,上述方法在步骤S301之前还可以包括:
确定该第一运算指令与第一运算指令之前的第二运算指令是否存在关联关系,如第一运算指令与第一运算指令之前的第二运算指令存在关联关系,则在第二运算指令执行完毕以后,从缓存单元中提取出该第一运算指令传递至运算单元203。如第一运算指令与该第一运算指令之前的指令无关联关系,则直接将第一运算指令传递至运算单元。
上述确定该第一运算指令与第一运算指令之前的第二运算指令是否存在关联关系的具体实现方法可以为:
依据该第一运算指令提取该第一运算指令中所需矩阵的第一存储地址区间,依据该第二运算指令提取该第二运算指令中所需矩阵的第二存储地址区间,如第一存储地址区间与第二存储地址区间具有重叠的区域,则确定第一运算指令与第二运算指令具有关联关系。如第一存储地址区间与第二存储地址区间无重叠的区域,则确定第一运算指令与第二运算指令不具有关联关系。
此存储地区区间中有重叠区域出现说明第一运算指令与第二运算指令访问了相同的矩阵,对于矩阵来说,由于其存储的空间比较大,比如采用相同的存储区域作为判断是否为关联关系的条件,可能出现的情况是,第二运算指令访问的存储区域包含了第一运算指令访问的存储区域,例如,第二运算指令访问A矩阵存储区域、B矩阵存储区域和C矩阵存储区域,如果A、B存储区域相邻或A、C存储区域相邻,则第二运算指令访问的存储区域为,A、B存储区域以及C存储区域,或A、C存储区域以及B存储区域。这种情况下,如果第一运算指令访问的为A矩阵与D矩阵的存储区域,那么第一运算指令访问的矩阵的存储区域无法与第二运算指令范文的矩阵的存储区域相同,如果采用相同的判断条件,则确定第一运算指令与第二运算指令不关联,但是实践证明,此时第一运算指令与第二运算指令属于关联关系,所以本披露通过是否有重叠区域来判断是否为关联关系的条件,能够避免上述情况的误判。
下面以一个实际的例子来说明何种情况属于关联关系,何种情况属于非关联关系。这里假设第一运算指令所需的矩阵为A矩阵和D矩阵,其中A矩阵的存储区域为【0001,0FFF】,D矩阵的存储区域为【A000,AFFF】,对于第二运算指令所需的矩阵为A矩阵、B矩阵和C矩阵,其分别对应的存储区域为【0001,0FFF】、【1000,1FFF】、【B000,BFFF】,对于第一运算指令来说,其对应的存储区域为:【0001,0FFF】、【A000,AFFF】,对于第二运算指令来说,其对应的存储区域为:【0001,1FFF】、【B000,BFFF】,所以第二运算 指令的存储区域与第一运算指令的存储区域具有重叠区域【0001,0FFF】,所以第一运算指令与第二运算指令具有关联关系。
这里假设第一运算指令所需的矩阵为E矩阵和D矩阵,其中A矩阵的存储区域为【C000,CFFF】,D矩阵的存储区域为【A000,AFFF】,对于第二运算指令所需的矩阵为A矩阵、B矩阵和C矩阵,其分别对应的存储区域为【0001,0FFF】、【1000,1FFF】、【B000,BFFF】,对于第一运算指令来说,其对应的存储区域为:【C000,CFFF】、【A000,AFFF】,对于第二运算指令来说,其对应的存储区域为:【0001,1FFF】、【B000,BFFF】,所以第二运算指令的存储区域与第一运算指令的存储区域不具有重叠区域,所以第一运算指令与第二运算指令无关联关系。
使用人工神经网络运算装置(即如图1所示计算装置、如图1F所示的计算装置,如图2A所示的计算装置中的任意一种)实现神经网络训练的方法;具体来说,包括以下主要内容:
神经网络训练的步骤:是对一个(多层)神经网络中的各层依次执行正向运算,然后按照相反的层的顺序依次执行反向运算,最后用计算得到的权值的梯度去更新权值;这就是神经网络的训练的依次迭代,整个训练过程需要重复执行这个过程多次;
层的反向运算:每一层的反向运算需要执行两部分运算:一部分是使用输出神经元梯度和输入神经元计算出权值的梯度(用于在“权值更新”步骤更新本层的权值),另一部分是使用输出神经元梯度和权值,计算出输入神经元梯度(用于作为反向运算中下一层的输出神经元梯度以供其进行反向运算);
权值更新:在执行完神经网络的反向运算之后,就计算出了各层的权值的梯度,在这个步骤中,所述装置的第一输入缓存和第二输入缓存分别用于存储本层的权值和权值的梯度,然后在运算单元中使用权值梯度对权值进行更新;
人工神经网络运算装置具体为稀疏神经网络运算装置的时候,即装置中多一个映射单元,处理的神经网络为稀疏神经网络:
使用稀疏神经网络运算装置实现神经网络训练的方法;具体来说,包括以下三个主要内容:
神经网络训练的步骤是对一个(多层)神经网络中的各层依次执行正向运算,然后按照相反的层的顺序依次执行反向运算,最后用计算得到的权值的梯度去更新权值;这就是神经网络的训练的依次迭代,整个训练过程需要重复执行这个过程多次;
层的反向运算每一层的反向运算需要执行两部分运算:一部分是使用可能是稀疏表示的输出神经元梯度和可能是稀疏表示的输入神经元计算出权值的梯度(用于在“权值更新”步骤更新本层的权值),另一部分是使用可能是稀疏表示的输出神经元梯度和可能是稀疏表示的权值,计算出输入神经元梯度(用于作为反向运算中下一层的输出神经元梯度以供其进行反向运算);
权值更新在执行完神经网络的反向运算之后,就计算出了各层的权值的梯度,在这个步骤中,所述装置的第一输入缓存和第二输入缓存分别用于存储本层的权值和权值的梯度,然后在运算单元中使用权值梯度对权值进行更新。本披露中提到的输入神经元和输出神经元并非是指整个神经网络的输入层中神经元和输出层中神经元,而是对于网络中任意相邻的两层,处于网络前馈运算下层中的神经元即为输入神经元,处于网络前馈运算上层中的神经元即为输出神经元。以卷积神经网络为例,设一个卷积神经网络有L层,K=1,2,...,L-1,对于第K层和第K+1层来说,我们将第K层称为输入层,其中的神经元为所述输入神经元,第K+1层称为输出层,其中的神经元为所述输出神经元。即除最顶层外,每一层都可以作为输入层,其下一层为对应的输出层。
上文中提到的运算都是神经网络中的一层的运算,对于多层神经网络,其实现过程是,在正向运算中,当上一层人工神经网络执行完成之后,下一层的运算指令会将运算单元中计算出的输出神经元作为下一层的输入神经元进行运算(或者是对该输出神经元进行某些操作再作为下一层的输入神经元),同时,将权值也替换为下一层的权值;在反向运算中,当上一层人工神经网络的反向运算执行完成后,下一层运算指令会将运算单元中计算出的输入神经元梯度作为下一层的输出神经元梯度进行运算(或者是 对该输入神经元梯度进行某些操作再作为下一层的输出神经元梯度),同时将权值替换为下一层的权值。具体如图1D所示,图1D中虚线的箭头表示反向运算,实现的箭头表示正向运算。
本披露中,如图1E是本披露提供的矩阵操作指令的指令集的格式示意图,如图1E所示,运算指令包括一操作码和至少一操作域,其中,操作码用于指示该运算指令的功能,运算单元通过识别该操作码可进行不同的矩阵运算,操作域用于指示该运算指令的数据信息,其中,数据信息可以是立即数或寄存器号,例如,要获取一个矩阵时,根据寄存器号可以在相应的寄存器中获取矩阵起始地址和矩阵长度,再根据矩阵起始地址和矩阵长度在存储介质中获取相应地址存放的矩阵。
指令集包含有不同功能的运算指令:
矩阵乘向量指令(MMV),根据该指令,装置从存储器(优选的高速暂存存储器或者标量寄存器)的指定地址取出设定长度的矩阵数据和向量数据,在运算单元中进行矩阵乘向量的乘法运算,并将结果写回。优选的,并将计算结果写回至存储器(优选的高速暂存存储器或者标量寄存器)的指定地址;值得说明的是,向量可以作为特殊形式的矩阵(只有一行元素的矩阵)存储于存储器(优选的高速暂存存储器或者标量寄存器)中。
向量乘矩阵指令(VMM),根据该指令,装置从存储器(优选的高速暂存存储器或者标量寄存器)的指定地址取出设定长度的向量数据和矩阵数据,在运算单元中进行向量乘矩阵的乘法运算,并将结果写回。优选的,并将计算结果写回至存储器(优选的高速暂存存储器或者标量寄存器)的指定地址;值得说明的是,向量可以作为特殊形式的矩阵(只有一行元素的矩阵)存储于存储器(优选的高速暂存存储器或者标量寄存器)中。
矩阵乘标量指令(VMS),根据该指令,装置存储器(优选的高速暂存存储器或者标量寄存器)的指定地址取出设定长度的矩阵数据,从标量寄存器的指定地址中取出指定大小的矩阵数据,在运算单元中进行标量乘矩阵的乘法运算,并将计算结果写回。优选的,并将计算结果写回至存储器(优选的高速暂存存储器或者标量寄存器)的指定地址,需要说明的是,标量寄存器不仅存储有矩阵的地址,还存储有标量数据。
张量运算指令(TENS),根据该指令,装置从存储器(优选的高速暂存存储器或者标量寄存器)的两个指定地址取出分别取出设定长度的两块矩阵数据,在运算单元中对两矩阵数据进行张量运算,并将计算结果写回。优选的,并将计算结果写回至存储器(优选的高速暂存存储器或者标量寄存器)的指定地址。
矩阵加法指令(MA),根据该指令,装置从存储器(优选的高速暂存存储器或者标量寄存器)的两个指定地址取出分别取出设定长度的两块矩阵数据,在运算单元中对两矩阵进行加法运算,并将计算结果写回。优选的,并将计算结果写回至存储器(优选的高速暂存存储器或者标量寄存器)的指定地址。
矩阵减法指令(MS),根据该指令,装置从存储器(优选的高速暂存存储器或者标量寄存器)的两个指定地址取出分别取出设定长度的两块矩阵数据,在运算单元中对两矩阵进行减法运算,并将计算结果写回。优选的,并将计算结果写回至存储器(优选的高速暂存存储器或者标量寄存器)的指定地址。
矩阵检索指令(MR),根据该指令,装置从存储器(优选的高速暂存存储器或者标量寄存器)的指定地址取出设定长度的向量数据,从存储器(优选的高速暂存存储器或者标量寄存器)的指定地址取出指定大小的矩阵数据,在运算单元中,该向量是索引向量,输出的向量中的第i个元素是以索引向量的第i个元素作为索引,在矩阵的第i列中找到的数,该输出向量写回至存储器(优选的高速暂存存储器或者标量寄存器)的指定地址。
矩阵加载指令(ML),根据该指令,装置从指定外部源地址载入设定长度的数据至存储器(优选的高速暂存存储器或者标量寄存器)的指定地址。
矩阵存储指令(MS),根据该指令,装置将存储器(优选的高速暂存存储器或者标量寄存器)的指定地址的设定长度的矩阵数据存至外部目的地址处。
矩阵搬运指令(MMOVE),根据该指令,装置将存储器(优选的高速暂存存储器或者标量寄存器)的指定地址的设定长度的矩阵数据存至存储器(优选的高速暂存存储器或者标量寄存器)的另一指定地址处。
上述指令中的设定长度可以由用户自行设定,在一个可选的实施方案中,用户可以将该设置长度设置为一个值,当然在实际应用中,用户也可以将该设置长度设置为多个值。本披露具体实施方式并不限定该设定长度的具体值以及个数。为使本披露的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本披露进一步详细说明。
参阅图1F,图1F为本披露具体实施方式提供的另一种计算装置50。图1F所示,计算装置50包括:存储器501、标量数据存储单元502(优选的为标量寄存器单元)、矩阵计算单元503和控制单元504;
存储器501,用于存储矩阵;
标量数据存储单元502,用于存储标量数据,所述标量数据至少包括:所述矩阵在所述存储器内的存储地址;
控制单元504,用于控制所述矩阵计算单元获取第一运算指令,所述第一运算指令包括执行所述指令所需的矩阵读取指示;
运算单元503,用于依据所述矩阵读取指示向所述存储器发送读取命令;依据采用批量读取方式读取所述矩阵读取指示对应的矩阵,对该矩阵执行所述第一运算指令。
可选的,上述矩阵读取指示包括:所述指令所需的矩阵的存储地址或所述指令所需矩阵的标识。
可选的如所述矩阵读取指示为所述指令所需矩阵的标识时,
控制单元504,用于控制所述运算单元依据所述标识从所述寄存器单元出采用单位读取方式读取所述标识对应的存储地址,控制所述运算单元向所述存储器发送读取所述存储地址的读取命令并采用批量读取方式获取所述矩阵。
可选的,运算单元503,具体用于对该矩阵执行第一流水级的计算得到第一结果,将第一结果输入到第二流水级执行第二流水级得到第二结果,将所述第二结果输入到第三流水级执行第三流水级得到第三结果,一级一级向下执行后,将所述第n-1结果输入到第n流水级执行第n流水级的计算得到第n结果,将所述第n结果输入到所述存储器。n可以为大于等于2的整数。
可选的,所述计算装置还包括:
缓存单元505,用于缓存待执行的运算指令;
所述控制单元504,用于将待执行的运算指令缓存于所述缓存单元504内。
可选的,控制单元504,用于确定所述第一运算指令与所述第一运算指令之前的第二运算指令是否存在关联关系,如所述第一运算指令与所述第二运算指令存在关联关系,则将所述第一运算指令缓存与所述缓存单元内,在所述第二运算指令执行完毕后,从所述缓存单元提取所述第一运算指令传输至所述运算单元;
所述确定该第一运算指令与第一运算指令之前的第二运算指令是否存在关联关系包括:
依据所述第一运算指令提取所述第一运算指令中所需矩阵的第一存储地址区间,依据所述第二运算指令提取所述第二运算指令中所需矩阵的第二存储地址区间,如所述第一存储地址区间与所述第二存储地址区间具有重叠的区域,则确定所述第一运算指令与所述第二运算指令具有关联关系,如所述第一存储地址区间与所述第二存储地址区间不具有重叠的区域,则确定所述第一运算指令与所述第二运算指令不具有关联关系。
可选的,上述控制单元503,可以用于从指令缓存单元获取运算指令,并对该运算指令进行处理后,提供给所述运算单元。其中,控制单元503可以划分为三个模块,分别为:取指模块5031、译码模块5032和指令队列模块5033,
取指模5031,用于从指令缓存单元中获取运算指令;
译码模块5032,用于对获取的运算指令进行译码;
指令队列5033,用于对译码后的运算指令进行顺序存储,考虑到不同指令在包含的寄存器上有可能存在依赖关系,用于缓存译码后的指令,当依赖关系被满足之后发射指令。
参阅图1D,图1D是本披露实施例提供的计算装置执行矩阵乘向量指令的流程图,如图1D所示,该计算装置的硬件结构参阅图1C所示的结构,如图1C所示的存储器以高速暂存存储器为例,执行矩阵乘向量指令的过程包括:
步骤S601,计算装置控制取指模块取出矩阵乘向量指令,并将该矩阵乘向量指令送往译码模块。
步骤S602,译码模块对该矩阵乘向量指令译码,并将该矩阵乘向量指令送往指令队列。
步骤S603,在指令队列中,该矩阵乘向量指令需要从标量寄存器中获取指令中五个操作域所对应的标量寄存器里的数据,该数据包括输入向量地址、输入向量长度、输入矩阵地址、输出向量地址和输出向量长度。
步骤S604,控制单元确定所述矩阵乘向量指令与矩阵乘向量指令之前的运算指令是否存在关联关系,如存在关联关系,将矩阵乘向量指令存入到缓存单元,如不存在关联管理,将该矩阵乘向量指令传输至运算单元。
步骤S605,运算单元根据五个操作域所对应的标量寄存器里的数据从高速暂存器中取出需要的矩阵和向量数据,然后在运算单元中完成乘法运算。
步骤S606,运算单元运算完成后,将结果写入存储器(优选的高速暂存存储器或者标量寄存器)的指定地址,重排序缓存中的该矩阵乘向量指令被提交。
上述图1C中的矩阵计算指令以矩阵乘向量指令为例,在实际应用中,如图1C所示实施例中的矩阵乘向量指令可以用向量乘矩阵指令、矩阵乘标量指令、张量运算指令、矩阵加法指令、矩阵减法指令、矩阵检索指令、矩阵加载指令、矩阵存储指令或矩阵搬运指令替换,这里不一一赘述。
参阅图2A,图2A提供了又一种计算装置,该计算装置包括:存储器111(可选的)、寄存器单元112、互联模块113、运算单元114、控制器单元115和数据访问单元116;
其中,运算单元114可以包括:加法计算器、乘法计算器、比较器、激活运算器中至少二种。
互联模块113,用于控制运算单元114中计算器的连接关系使得该至少二种计算器组成不同的计算拓扑结构。
寄存器单元112,用于存储运算指令、数据块的在存储介质的地址、运算指令对应的计算拓扑结构。
该运算指令可以包括:操作域以及操作码,以卷积运算指令为例,如表1所示,其中,寄存器0、寄存器1、寄存器2、寄存器3、寄存器4可以为操作域。
存储器111可以为片外存储器,当然在实际应用中,当为片内存储器时,该片内存储器可以为缓存,具体的,可以为高速暂存缓存,用于存储数据块,该数据块具体可以为n维数据,n为大于等于1的整数,例如,n=1时,为1维数据,即向量,如n=2时,为2维数据,即矩阵,如n=3或3以上时,为多维数据。
控制器单元115,用于从寄存器单元112内提取运算指令、该运算指令对应的操作域以及该运算指令对应的第一计算拓扑结构,将该运算指令译码成执行指令,该执行指令用于控制运算单元执行运算操作,将该操作域传输至数据访问单元116。
数据访问单元116,用于从存储器111中提取该操作域对应的数据块,并将该数据块传输至运算单元114。
互联模块113、用于接收数据块,将该数据块发送至运算单元114。
运算单元114,用于该执行指令调用运算单元614的计算器对该数据块执行运算操作得到运算结果,将该运算结果传输至数据访问单元存储在存储器内。一个实施例里,运算单元114,用于按第一计算拓扑结构以及该执行指令调用计算器对数据块执行运算操作得到运算结果,将该运算结果传输至数据访问单元存储在存储器内。
在一种可选的实施例中,上述第一计算拓扑结构可以为:乘法运算器-加法运算器-加法运算器-激活运算器。
运算指令可以存储在存储介质内,上述执行运算指令可以由运算单元来执行。
下面通过不同的运算指令来说明如图2A所示的计算装置的具体计算方法,
这里的运算指令以卷积运算指令为例,该卷积运算指令可以应用在神经网络中,所以该卷积运算指令也可以称为卷积神经网络。对于卷积运算指令来说,
其实际需要执行的公式可以为:,s=s(∑wx
i+b)其中,即将卷积核w(可包括多个数据)乘以输入数据Xi,进行求和,然后可选地可加上偏置b,然后可选地还可做激活运算s(h),以得到最终的输出结果S。依据该公式即可以得到该计算拓扑结构为,乘法运算器-加法运算器-激活运算器。
上述卷积运算指令可以包括指令集,该指令集包括:卷积神经网络指令,有不同功能的卷积神经网络conv COMPUTE指令以及CONFIG指令、IO指令、NOP指令、JUMP指令和MOVE指令。在一种实施例中,conv COMPUTE指令包括:
卷积神经网络指令,根据该指令,装置分别从存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址取出指定大小的输入数据和卷积核,在卷积运算部件中做卷积运算直接得到输出结果。即该指令不执行后续的操作,直接做卷积运算得到输出结果。
卷积神经网络conv sigmoid指令,根据该指令,装置分别从高速暂存存储器(优选的)的指定地址取出设定大小的输入数据和卷积核,在卷积运算部件中做卷积操作,然后将输出结果做sigmoid激活;上述设定大小可以由厂家或用户自行定义。
卷积神经网络conv TanH指令,根据该指令,装置分别从高速暂存存储器的指定地址取出设定大小的输入数据和卷积核,在卷积运算部件中做卷积操作,然后将输出结果做TanH激活;
卷积神经网络conv ReLU指令,根据该指令,装置分别从高速暂存存储器的指定地址取出设定大小的输入数据和卷积核,在卷积运算部件中做卷积操作,然后将输出结果做ReLU激活;
卷积神经网络conv group指令,根据该指令,装置分别从高速暂存存储器的指定地址取出设定大小的输入数据和卷积核,划分group之后,在卷积运算部件中做卷积操作,然后将输出结果做激活。
卷积运算指令,可根据该指令,装置分别从存储器(优选的,为高速暂存存储器)的指定地址取出设定大小的输入数据和卷积核,在卷积运算部件中做卷积操作。上述设定大小即用户或厂家可以自行设定的大小,例如,在第一厂家的计算装置中,可以将设定大小设定为Abit数据,在第二厂家的计算装置中,可以将设定大小设定为B bit数据,上述A bite数据与B bit数据大小不同。
COMPUTE指令也可以包括其他的运算指令,进行非线性激活和线性激活操作。在一种实施例中,卷积激活CONV_ACTIVATE指令包括:
卷积激活指令,根据该指令,装置分别从高速暂存存储器(优选的)的指定地址取出设定大小的输 入数据和卷积核,在卷积运算部件中做卷积操作,然后将输出结果做激活函数运算;上述设定大小可以由厂家或用户自行定义。激活函数active是非线性函数sigmoid,tanh,relu,softmax中的任一个或线性函数。
图2B示意性示出了互连模块113的一种实施方式:树型模块。树型模块4构成主运算模块5和多个从运算模块6之间的数据通路,并具有树型的结构。可选的,该树型模块可以为n叉树结构,例如如图39所示的的二叉树通路,每个节点将上游的数据同样地发给下游的两个节点,将下游的两个节点返回的数据进行合并,并返回给上游的节点。例如,在每层人工神经网络开始计算阶段,主运算模块5内的神经元数据该数据可以是离散表示或非离散表示的通过树型模块4发送给各个从运算模块6;当从运算模块6的计算过程完成后,每个从运算模块输出的神经元的值会在树型中逐级拼成一个完整的由神经元组成的向量,作为中间结果向量。针对于离散数据表示的运算,我们特别提到了在主从运算模块内部的专用于离散数据运算的运算模块见图44。以神经网络全连接层进行说明,假设装置中共有N个从运算模块,则中间结果向量按N分段,每段有N个元素,第i个从运算模块计算每段中的第i个元素。N个元素经过树型模块拼成长度为N的向量并返回给主运算模块。所以如果网络只有N个输出神经元,则每个从运算单元只需输出单个神经元的值,若网络有m*N个输出神经元,则每个从运算单元需输出m个神经元值。树型模块在存储和传输数据的过程中均支持离散数据表示。
图2D示出了根据本披露实施例的用于执行卷积神经网络正向运算的装置中主运算模块5的结构的示例框图。如图2D所示,主运算模块5包括第一运算单元51、第一数据依赖关系判定单元52和第一存储单元53。
其中,第一运算单元51包括向量加法单元511以及激活单元512。第一运算单元51接收来自控制器单元的控制信号,完成主运算模块5的各种运算功能,向量加法单元511用于实现卷积神经网络正向计算中的加偏置操作,该部件将偏置数据与所述中间结果对位相加得到偏置结果,激活运算单元512对偏置结果执行激活函数操作。所述偏置数据可以是从外部地址空间读入的,也可以是存储在本地的。
第一数据依赖关系判定单元52是第一运算单元51读写第一存储单元53的端口,保证第一存储单元53中数据的读写一致性。同时,第一数据依赖关系判定单元52也负责将从第一存储单元53读取的数据通过互连模块4发送给从运算模块,而从运算模块6的输出数据通过互连模块4直接发送给第一运算单元51。控制器单元2输出的指令发送给计算单元51和第一数据依赖关系判定单元52,来控制其行为。
存储单元53用于缓存主运算模块5在计算过程中用到的输入数据和输出数据。
图2D示出了根据本披露实施例的用于执行卷积神经网络正向运算的装置中从运算模块6的结构的示例框图。如图2B所示,每个从运算模块6包括第二运算单元61、数据依赖关系判定单元62、第二存储单元63和第三存储单元64。
第二运算单元61接收控制器单元2发出的控制信号并进行卷积运算。第二运算单元包括向量乘单元611和累加单元612,分别负责卷积运算中的向量乘运算和累加运算。
第二数据依赖关系判定单元62负责计算过程中对第二存储单元63的读写操作。第二数据依赖关系判定单元62执行读写操作之前会首先保证指令之间所用的数据不存在读写一致性冲突。例如,所有发往数据依赖关系单元62的控制信号都会被存入数据依赖关系单元62内部的指令队列里,在该队列中,读指令的读取数据的范围如果与队列位置靠前的写指令写数据的范围发生冲突,则该指令必须等到所依赖的写指令被执行后才能够执行。
第二存储单元63缓存该从运算模块6的输入数据和输出标量数据。
第三存储单元64缓存该从运算模块6在计算过程中需要的卷积核数据。
本披露实施例提供了一种流执行方法,可应用于语音识别、图像处理、数据分析、广告推荐系统、汽车自动驾驶等神经网络所涉及的方面中,对神经网络运算中执行运算的指令描述符流进行简化,可减 少多余的运算操作,从而提高了神经网络处理器的运算速度。
本披露实施例提供的流执行方法可以由如图2A所示的计算装置来执行,如图2A所示的计算装置可以执行卷积运算指令的流执行方法。当然上述流执行方法还可以通过如图1F所示的计算装置来执行,如图1F所示的计算可以执行数据块与标量的流执行方法,当然实际应用中,上述流执行方法还可以通过如图1所示的计算装置来执行,如图1所示的计算装置可以执行矩阵操作指令或向量运算的流执行方法。本披露实施例提供流执行的方法在需要根据神经网络结构生成多条指令的运算装置中,需要针对某种特定的神经网络结构生成完整的指令流,以调用神经网络处理器进行运算。根据特定的神经网络结构生成指令流的过程,可使用流执行的方法进行优化,以获得更为适合网络结构,运算更快的指令流。上述流执行的方法可以在能够处理多条指令的计算装置或执行多条运算指令的方法,该多条运算指令包括但不限于:神经网络运算指令、矩阵运算指令,向量运算指令等等。上述多条指令的计算装置包括但不限于:正向运算装置、反向运算装置、包含多流水级的运算单元的装置等等。当然上述流执行的方法也可以在多核处理设备或多个处理器协同的技术方案实现,例如,包括一个或多个中心节点以及一个或多个叶子节点的数据发布装置。当然上述说明仅仅是为了举例说明,本披露实施例中的流执行的方法并不局限上述的装置、结构、方法的结合。
参阅图4A,图4A提供计算装置,该计算装置用于执行机器学习计算,该计算装置包括:控制器单元11和运算单元12,其中,控制器单元11与运算单元12连接,该运算单元12包括:一个主处理电路和多个从处理电路;
控制器单元11,用于获取输入数据以及计算指令;在一种可选方案中,具体的,获取输入数据以及计算指令方式可以通过数据输入输出单元得到,该数据输入输出单元具体可以为一个或多个数据I/O接口或I/O引脚。
上述计算指令包括但不限于:正向运算指令或反向训练指令,或其他神经网络运算指令等等,例如卷积运算指令,本申请具体实施方式并不限制上述计算指令的具体表现形式。
控制器单元11,还用于解析该计算指令得到多个运算指令,将该多个运算指令以及所述输入数据发送给所述主处理电路;
主处理电路101,用于对所述输入数据执行前序处理以及与所述多个从处理电路之间传输数据以及运算指令;
多个从处理电路102,用于依据从所述主处理电路传输的数据以及运算指令并行执行中间运算得到多个中间结果,并将多个中间结果传输给所述主处理电路;
主处理电路101,用于对所述多个中间结果执行后续处理得到所述计算指令的计算结果。
本申请提供的技术方案将运算单元设置成一主多从结构,对于正向运算的计算指令,其可以将依据正向运算的计算指令将数据进行拆分,这样通过多个从处理电路即能够对计算量较大的部分进行并行运算,从而提高运算速度,节省运算时间,进而降低功耗。
可选的,上述机器学习计算具体可以包括:人工神经网络运算,上述输入数据具体可以包括:输入神经元数据和权值数据。上述计算结果具体可以为:人工神经网络运算的结果即输出神经元数据。
对于神经网络中的运算可以为神经网络中的一层的运算,对于多层神经网络,其实现过程是,在正向运算中,当上一层人工神经网络执行完成之后,下一层的运算指令会将运算单元中计算出的输出神经元作为下一层的输入神经元进行运算(或者是对该输出神经元进行某些操作再作为下一层的输入神经元),同时,将权值也替换为下一层的权值;在反向运算中,当上一层人工神经网络的反向运算执行完成后,下一层运算指令会将运算单元中计算出的输入神经元梯度作为下一层的输出神经元梯度进行运算(或者是对该输入神经元梯度进行某些操作再作为下一层的输出神经元梯度),同时将权值替换为下一层的权值。
上述机器学习计算还可以包括支持向量机运算,k-近邻(k-nn)运算,k-均值(k-means)运算, 主成分分析运算等等。为了描述的方便,下面以人工神经网络运算为例来说明机器学习计算的具体方案。
对于人工神经网络运算,如果该人工神经网络运算具有多层运算,多层运算的输入神经元和输出神经元并非是指整个神经网络的输入层中神经元和输出层中神经元,而是对于网络中任意相邻的两层,处于网络正向运算下层中的神经元即为输入神经元,处于网络正向运算上层中的神经元即为输出神经元。以卷积神经网络为例,设一个卷积神经网络有L层,K=1,2,...,L-1,对于第K层和第K+1层来说,我们将第K层称为输入层,其中的神经元为所述输入神经元,第K+1层称为输出层,其中的神经元为所述输出神经元。即除最顶层外,每一层都可以作为输入层,其下一层为对应的输出层。
可选的,上述计算装置还可以包括:该存储单元10和直接内存访问单元50,存储单元10可以包括:寄存器、缓存中的一个或任意组合,具体的,所述缓存,用于存储所述计算指令;所述寄存器,用于存储所述输入数据和标量;所述缓存为高速暂存缓存。直接内存访问单元50用于从存储单元10读取或存储数据。
可选的,该控制器单元包括:指令存储单元110、指令处理单元111和存储队列单元113;
指令存储单元110,用于存储所述人工神经网络运算关联的计算指令;
所述指令处理单元111,用于对所述计算指令解析得到多个运算指令;
存储队列单元113,用于存储指令队列,该指令队列包括:按该队列的前后顺序待执行的多个运算指令或计算指令。
举例说明,在一个可选的技术方案中,主运算处理电路也可以包括一个控制器单元,该控制器单元可以包括主指令处理单元,具体用于将指令译码成微指令。当然在另一种可选方案中,从运算处理电路也可以包括另一个控制器单元,该另一个控制器单元包括从指令处理单元,具体用于接收并处理微指令。上述微指令可以为指令的下一级指令,该微指令可以通过对指令的拆分或解码后获得,能被进一步解码为各部件、各单元或各处理电路的控制信号。
在一种可选方案中,该计算指令的结构可以如下表所示。
操作码 | 寄存器或立即数 | 寄存器/立即数 | ... |
上表中的省略号表示可以包括多个寄存器或立即数。
在另一种可选方案中,该计算指令可以包括:一个或多个操作域以及一个操作码。该计算指令可以包括神经网络运算指令。以神经网络运算指令为例,如表1所示,其中,寄存器号0、寄存器号1、寄存器号2、寄存器号3、寄存器号4可以为操作域。其中,每个寄存器号0、寄存器号1、寄存器号2、寄存器号3、寄存器号4可以是一个或者多个寄存器的号码。
上述寄存器可以为片外存储器,当然在实际应用中,也可以为片内存储器,用于存储数据,该数据具体可以为n维数据,n为大于等于1的整数,例如,n=1时,为1维数据,即向量,如n=2时,为2 维数据,即矩阵,如n=3或3以上时,为多维张量。
可选的,该控制器单元还可以包括:
所述依赖关系处理单元108,用于在具有多个运算指令时,确定第一运算指令与所述第一运算指令之前的第零运算指令是否存在关联关系,如所述第一运算指令与所述第零运算指令存在关联关系,则将所述第一运算指令缓存在所述指令存储单元内,在所述第零运算指令执行完毕后,从所述指令存储单元提取所述第一运算指令传输至所述运算单元;
所述确定该第一运算指令与第一运算指令之前的第零运算指令是否存在关联关系包括:
依据所述第一运算指令提取所述第一运算指令中所需数据(例如矩阵)的第一存储地址区间,依据所述第零运算指令提取所述第零运算指令中所需矩阵的第零存储地址区间,如所述第一存储地址区间与所述第零存储地址区间具有重叠的区域,则确定所述第一运算指令与所述第零运算指令具有关联关系,如所述第一存储地址区间与所述第零存储地址区间不具有重叠的区域,则确定所述第一运算指令与所述第零运算指令不具有关联关系。
在另一种可选实施例中,运算单元12如图4C所示,可以包括一个主处理电路101和多个从处理电路102。在一个实施例里,如图4C所示,多个从处理电路呈阵列分布;每个从处理电路与相邻的其他从处理电路连接,主处理电路连接所述多个从处理电路中的k个从处理电路,所述k个从处理电路为:第1行的n个从处理电路、第m行的n个从处理电路以及第1列的m个从处理电路,需要说明的是,如图4C所示的K个从处理电路仅包括第1行的n个从处理电路、第m行的n个从处理电路以及第1列的m个从处理电路,即该k个从处理电路为多个从处理电路中直接与主处理电路连接的从处理电路。
K个从处理电路,用于在所述主处理电路以及多个从处理电路之间的数据以及指令的转发。
可选的,如图4D所示,该主处理电路还可以包括:转换处理电路110、激活处理电路111、加法处理电路112中的一种或任意组合;
转换处理电路110,用于将主处理电路接收的数据块或中间结果执行第一数据结构与第二数据结构之间的互换(例如连续数据与离散数据的转换);或将主处理电路接收的数据块或中间结果执行第一数据类型与第二数据类型之间的互换(例如定点类型与浮点类型的转换);
激活处理电路111,用于执行主处理电路内数据的激活运算;
加法处理电路112,用于执行加法运算或累加运算。
所述主处理电路,用于将确定所述输入神经元为广播数据,权值为分发数据,将分发数据分配成多个数据块,将所述多个数据块中的至少一个数据块以及多个运算指令中的至少一个运算指令发送给所述从处理电路;
所述多个从处理电路,用于依据该运算指令对接收到的数据块执行运算得到中间结果,并将运算结果传输给所述主处理电路;
所述主处理电路,用于将多个从处理电路发送的中间结果进行处理得到该计算指令的结果,将该计算指令的结果发送给所述控制器单元。
所述从处理电路包括:乘法处理电路;
所述乘法处理电路,用于对接收到的数据块执行乘积运算得到乘积结果;
转发处理电路(可选的),用于将接收到的数据块或乘积结果转发。
累加处理电路,所述累加处理电路,用于对该乘积结果执行累加运算得到该中间结果。
另一个实施例里,该运算指令为矩阵乘以矩阵的指令、累加指令、激活指令等等计算指令。
下面通过神经网络运算指令来说明如图4A所示的计算装置的具体计算方法。对于神经网络运算指令来说,其实际需要执行的公式可以为:s=s(∑wx
i+b),其中,即将权值w乘以输入数据x
i,进行求和,然后加上偏置b后做激活运算s(h),得到最终的输出结果s。
在一种可选的实施方案中,如图4E所示,所述运算单元包括:树型模块40,所述树型模块包括: 一个根端口401和多个支端口404,所述树型模块的根端口连接所述主处理电路,所述树型模块的多个支端口分别连接多个从处理电路中的一个从处理电路;
上述树型模块具有收发功能,例如如图4E所示,该树型模块即为发送功能,如图4I所示,该树型模块即为接收功能。
所述树型模块,用于转发所述主处理电路与所述多个从处理电路之间的数据块、权值以及运算指令。
可选的,该树型模块为计算装置的可选择结果,其可以包括至少1层节点,该节点为具有转发功能的线结构,该节点本身可以不具有计算功能。如树型模块具有零层节点,即无需该树型模块。
可选的,该树型模块可以为n叉树结构,例如,如图4F所示的二叉树结构,当然也可以为三叉树结构,该n可以为大于等于2的整数。本申请具体实施方式并不限制上述n的具体取值,上述层数也可以为2,从处理电路可以连接除倒数第二层节点以外的其他层的节点,例如可以连接如图4F所示的倒数第一层的节点。
可选的,上述运算单元可以携带单独的缓存,如图4G所示,可以包括:神经元缓存单元,该神经元缓存单元63缓存该从处理电路的输入神经元向量数据和输出神经元值数据。
如图4H所示,该运算单元还可以包括:权值缓存单元64,用于缓存该从处理电路在计算过程中需要的权值数据。
在一种可选实施例中,运算单元12如图4B所示,可以包括分支处理电路103;其具体的连接结构如图4B所示,其中,
主处理电路101与分支处理电路103(一个或多个)连接,分支处理电路103与一个或多个从处理电路102连接;
分支处理电路103,用于执行转发主处理电路101与从处理电路102之间的数据或指令。
在一种可选实施例中,以神经网络运算中的全连接运算为例,过程可以为:y=f(wx+b),其中,x为输入神经元矩阵,w为权值矩阵,b为偏置标量,f为激活函数,具体可以为:sigmoid函数,tanh、relu、softmax函数中的任意一个。这里假设为二叉树结构,具有8个从处理电路,其实现的方法可以为:
控制器单元从存储单元内获取输入神经元矩阵x,权值矩阵w以及全连接运算指令,将输入神经元矩阵x,权值矩阵w以及全连接运算指令传输给主处理电路;
主处理电路确定该输入神经元矩阵x为广播数据,确定权值矩阵w为分发数据,将权值矩阵w拆分成8个子矩阵,然后将8个子矩阵通过树型模块分发给8个从处理电路,将输入神经元矩阵x广播给8个从处理电路,
从处理电路并行执行8个子矩阵与输入神经元矩阵x的乘法运算和累加运算得到8个中间结果,将8个中间结果发送给主处理电路;
主处理电路,用于将8个中间结果排序得到wx的运算结果,将该运算结果执行偏置b的运算后执行激活操作得到最终结果y,将最终结果y发送至控制器单元,控制器单元将该最终结果y输出或存储至存储单元内。
如图4A所示的计算装置执行神经网络正向运算指令的方法具体可以为:
控制器单元从指令存储单元内提取神经网络正向运算指令、神经网络运算指令对应的操作域以及至少一个操作码,控制器单元将该操作域传输至数据访问单元,将该至少一个操作码发送至运算单元。
控制器单元从存储单元内提取该操作域对应的权值w和偏置b(当b为0时,不需要提取偏置b),将权值w和偏置b传输至运算单元的主处理电路,控制器单元从存储单元内提取输入数据Xi,将该输入数据Xi发送至主处理电路。
主处理电路依据该至少一个操作码确定为乘法运算,确定输入数据Xi为广播数据,确定权值数据为分发数据,将权值w拆分成n个数据块;
控制器单元的指令处理单元依据该至少一个操作码确定乘法指令、偏置指令和累加指令,将乘法指令、偏置指令和累加指令发送至主处理电路,主处理电路将该乘法指令、输入数据Xi以广播的方式发送给多个从处理电路,将该n个数据块分发给该多个从处理电路(例如具有n个从处理电路,那么每个从处理电路发送一个数据块);多个从处理电路,用于依据该乘法指令将该输入数据Xi与接收到的数据块执行乘法运算得到中间结果,将该中间结果发送至主处理电路,该主处理电路依据该累加指令将多个从处理电路发送的中间结果执行累加运算得到累加结果,依据该偏执指令将该累加结果执行加偏执b得到最终结果,将该最终结果发送至该控制器单元。
另外,加法运算和乘法运算的顺序可以调换。
本申请提供的技术方案通过一个指令即神经网络运算指令即实现了神经网络的乘法运算以及偏置运算,在神经网络计算的中间结果均无需存储或提取,减少了中间数据的存储以及提取操作,所以其具有减少对应的操作步骤,提高神经网络的计算效果的优点。
本申请还揭露了一个机器学习运算装置,其包括一个或多个在本申请中提到的计算装置,用于从其他处理装置中获取待运算数据和控制信息,执行指定的机器学习运算,执行结果通过I/O接口传递给外围设备。外围设备譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口,服务器。当包含一个以上计算装置时,计算装置间可以通过特定的结构进行链接并传输数据,譬如,通过PCIE总线进行互联并传输数据,以支持更大规模的机器学习的运算。此时,可以共享同一控制系统,也可以有各自独立的控制系统;可以共享内存,也可以每个加速器有各自的内存。此外,其互联方式可以是任意互联拓扑。
该机器学习运算装置具有较高的兼容性,可通过PCIE接口与各种类型的服务器相连接。
本申请还揭露了一个组合处理装置,其包括上述的机器学习运算装置,通用互联接口,和其他处理装置。机器学习运算装置与其他处理装置进行交互,共同完成用户指定的操作。图4J为组合处理装置的示意图。
其他处理装置,包括中央处理器CPU、图形处理器GPU、神经网络处理器等通用/专用处理器中的一种或以上的处理器类型。其他处理装置所包括的处理器数量不做限制。其他处理装置作为机器学习运算装置与外部数据和控制的接口,包括数据搬运,完成对本机器学习运算装置的开启、停止等基本控制;其他处理装置也可以和机器学习运算装置协作共同完成运算任务。
通用互联接口,用于在所述机器学习运算装置与其他处理装置间传输数据和控制指令。该机器学习运算装置从其他处理装置中获取所需的输入数据,写入机器学习运算装置片上的存储装置;可以从其他处理装置中获取控制指令,写入机器学习运算装置片上的控制缓存;也可以读取机器学习运算装置的存储模块中的数据并传输给其他处理装置。
可选的,该结构如图4K所示,还可以包括存储装置,存储装置分别与所述机器学习运算装置和所述其他处理装置连接。存储装置用于保存在所述机器学习运算装置和所述其他处理装置的数据,尤其适用于所需要运算的数据在本机器学习运算装置或其他处理装置的内部存储中无法全部保存的数据。
该组合处理装置可以作为手机、机器人、无人机、视频监控设备等设备的SOC片上系统,有效降低控制部分的核心面积,提高处理速度,降低整体功耗。此情况时,该组合处理装置的通用互联接口与设备的某些部件相连接。某些部件譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口。
在一些实施例里,还申请了一种芯片,其包括了上述机器学习运算装置或组合处理装置。
在一些实施例里,申请了一种芯片封装结构,其包括了上述芯片。
在一些实施例里,申请了一种板卡,其包括了上述芯片封装结构。参阅图4L,图4L提供了一种板卡,上述板卡除了包括上述芯片389以外,还可以包括其他的配套部件,该配套部件包括但不限于:存储器件390、接口装置391和控制器件392;
所述存储器件390与所述芯片封装结构内的芯片通过总线连接,用于存储数据。所述存储器件可以 包括多组存储单元393。每一组所述存储单元与所述芯片通过总线连接。可以理解,每一组所述存储单元可以是DDR SDRAM(英文:Double Data Rate SDRAM,双倍速率同步动态随机存储器)。
DDR不需要提高时钟频率就能加倍提高SDRAM的速度。DDR允许在时钟脉冲的上升沿和下降沿读出数据。DDR的速度是标准SDRAM的两倍。在一个实施例中,所述存储装置可以包括4组所述存储单元。每一组所述存储单元可以包括多个DDR4颗粒(芯片)。在一个实施例中,所述芯片内部可以包括4个72位DDR4控制器,上述72位DDR4控制器中64bit用于传输数据,8bit用于ECC校验。可以理解,当每一组所述存储单元中采用DDR4-3200颗粒时,数据传输的理论带宽可达到25600MB/s。
在一个实施例中,每一组所述存储单元包括多个并联设置的双倍速率同步动态随机存储器。DDR在一个时钟周期内可以传输两次数据。在所述芯片中设置控制DDR的控制器,用于对每个所述存储单元的数据传输与数据存储的控制。
所述接口装置与所述芯片封装结构内的芯片电连接。所述接口装置用于实现所述芯片与外部设备(例如服务器或计算机)之间的数据传输。例如在一个实施例中,所述接口装置可以为标准PCIE接口。比如,待处理的数据由服务器通过标准PCIE接口传递至所述芯片,实现数据转移。优选的,当采用PCIE3.0X16接口传输时,理论带宽可达到16000MB/s。在另一个实施例中,所述接口装置还可以是其他的接口,本申请并不限制上述其他的接口的具体表现形式,所述接口单元能够实现转接功能即可。另外,所述芯片的计算结果仍由所述接口装置传送回外部设备(例如服务器)。
所述控制器件与所述芯片电连接。所述控制器件用于对所述芯片的状态进行监控。具体的,所述芯片与所述控制器件可以通过SPI接口电连接。所述控制器件可以包括单片机(Micro Controller Unit,MCU)。如所述芯片可以包括多个处理芯片、多个处理核或多个处理电路,可以带动多个负载。因此,所述芯片可以处于多负载和轻负载等不同的工作状态。通过所述控制装置可以实现对所述芯片中多个处理芯片、多个处理和或多个处理电路的工作状态的调控。
在一些实施例里,申请了一种电子设备,其包括了上述板卡。
电子设备包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
请参照图2E,图2E为本披露实施例提供的一种流执行方法的示意图。如图2E所示,本实施例中的流执行方法包括以下步骤:
S21:根据目标神经网络结构对应的基本操作序列获取第一指令描述符流。
在本申请中,目标神经网络结构可根据终端设备待处理的第一信息进行确定。
其中,第一信息为待处理的信息。终端设备可在不同应用场景下可处理不同类型的信息,所述信息(具体为所述第一信息)包括但不限于文本信息、语音信息、影像信息(即图片或视频信息)、图片信息、视频信息、悬浮窗口等。例如,在语音识别场景中,所述第一信息即为语音信息;在车牌识别场景中,所述第一信息即为车牌信息。
所述第一信息为具备预设格式的信息,本申请实施例对于预设格式不做限定。在所述第一信息为具备预设格式的信息时,可根据原始信息的信息类型确定所述目标神经网络结构。其中,原始信息为终端设备所接收的待处理信息,即通过原始信息具体的信息类型确定对应的目标神经网络结构,从而提高确定目标神经网络结构的准确性。
由于每一神经网络结构对应一个基本操作序列,即通过解析神经网络结构获取描述神经网络结构运算的数据结构。例如,神经网络结构A的基本输入大小为260*260,则该神经网络结构A原始输入的图 像尺寸为260*260;当神经网络结构A和神经网络结构B的基本输入大小相同,但是层次数量或者某一层的类型有所不同,对应的基本操作序列也不同。因此,在确定目标神经网络结构之后,可确定其对应的基本操作序列。
其中,第一指令描述符流即用于生成指令的指令描述符序列,包括至少一个指令描述符。对于第一指令描述符流的获取方法不做限定,可获取所述目标神经网络结构的基本操作序列;根据所述基本操作序列获取所述第一指令描述符流。
其中,神经网络结构的基本操作序列存储于外部存储空间,并以网络结构协议形式进行表示,终端设备可从外部存储空间中获取目标神经网络结构的基本操作序列,再根据基本操作序列获取第一指令描述符流,并将第一指令描述符流存储于内部存储空间。
本申请对于基本操作序列和指令描述符之间的解析规则不作限定。根据基本操作序列和指令描述符之间的解析规则获取神经网络结构对应的第一指令描述符流。
本申请对于第一指令描述符流中每一指令描述符流的预设格式不作限定,根据预设格式的网络结构可生成第一指令描述符流对应的指令。
在本申请实施例中所涉及的指令包括以下中的至少一项:矩阵乘向量指令、向量乘矩阵指令、矩阵乘标量指令、张量运算指令、矩阵加法指令、矩阵减法指令、矩阵检索指令、矩阵加载指令、矩阵存储指令及矩阵搬运指令,也可以包括cambricon指令集中的所有指令中的至少一项,例如矩阵运算指令、卷积运算指令、全连接层正向运算指令、池化运算指令、归一化指令、向量运算指令以及标量运算指令。
S22:对所述第一指令描述符流进行简化得到第二指令描述符流。
本申请实施例对于简化第一指令描述符流的具体方法不作限定,可以去除冗余操作对应的指令描述符和/或合并指令描述符对应的层,从而缩短了指令描述符流对应的目标运算指令流的长度,便于提高运算效率。
可选的,所述对所述第一指令描述符流进行简化得到第二指令描述符流,包括:遍历所述第一指令描述符流中的指令描述符得到多个指令描述符;查找所述多个指令描述符中的冗余操作;删除所述冗余操作对应的指令描述符,得到所述第二指令描述符流。
对于单个指令描述符来说,每个操作都是必要的,然而将指令描述符集成为指令描述符流时,可能出现冗余操作,即上一个指令描述符对应的操作为下一个或下N个指令描述符对应的操作为相反的操作。当去除其中的冗余操作时,减少了指令描述符的数量,则减少了指令的数量,从而提高了计算单元的运算速度。
举例来说,假设存在卷积层C和卷积层D,其中,卷积层C包含的指令描述符为:第一读取指令描述符、第一拆分指令描述符、第一卷积指令描述符和第一合并指令描述符,卷积层D包含的指令描述符为:第二读取指令描述符、第二拆分指令描述符、第二卷积指令描述符和第二合并指令描述符,并且卷积层C和卷积层D中的拆分指令描述符对应的分组参数group为2。当卷积层C的输出为卷积层D的输入时,判断卷积层C中的第一合并指令描述符和卷积层D中的第二拆分指令描述符为冗余操作,即卷积层C和卷积层D简化之后的指令描述符为第一读取指令描述符、第一拆分指令描述符、第一卷积指令描述符、第二读取指令描述符、第二卷积指令描述符和第二合并指令描述符,从而简化了第一指令描述符流,缩短了第二指令描述符流对应的指令流的长度,便于提高运算效率。
可选的,所述遍历所述第一指令描述符流中的指令描述符得到多个指令描述符,包括:根据预设优化规则对所述第一指令描述符流中的指令描述符流进行重排序得到所述多个指令描述符。
其中,预设优化规则用于对第一指令描述符流中的指令描述符进行重排序。也就是说,可通过重新排序的方式对指令描述符的解析进行并行处理,从而减少生成的指令的时间,提高运算效率。
可选的,所述对所述第一指令描述符流进行简化得到第二指令描述符流,包括:遍历所述第一指令描述符流中的指令描述符得到多个指令描述符对应的多个层;查找所述多个层中的融合层;将根据所述 融合层对应的指令描述符进行融合得到所述第二指令描述符流。
对于单个层来说,每个层至少包括一个指令描述符,每个指令描述符都是必要的,而指令描述符流对应神经网络结构中的不同的层,即连续运算的层可能出现融合层,即上一个层中的指令描述符对应的操作为下一个层或下N个层中的指令描述符对应的操作为相同或近似的操作。当融合层中的指令描述符进行融合时,减少了指令描述符的数量,则减少了指令的数量,增大了数据吞服量,从而提高了计算单元的运算速度。
举例来说,假设存在卷积层,归一化层,激活层。当卷积层的输出为归一化层的输入,归一化层的输出为激活层的输入时,判断到这三层可以进行融合,则对指令描述符序列进行处理,融合相关的指令描述符,即用一条指令描述符表示这样的三层网络结构,从而提高了计算单元的运算速度。
S23:根据所述第二指令描述符流获取目标运算指令流。
在本申请实施例中,目标运算指令流即用于响应第一信息的运算指令序列,目标运算指令流包括以下中的至少一项:矩阵乘向量指令、向量乘矩阵指令、矩阵乘标量指令、张量运算指令、矩阵加法指令、矩阵减法指令、矩阵检索指令、矩阵加载指令、矩阵存储指令及矩阵搬运指令;也可以包括cambricon指令集中的所有指令中的至少一项,例如矩阵运算指令、卷积运算指令、全连接层正向运算指令、池化运算指令、归一化指令、向量运算指令以及标量运算指令。
本申请对于第二指令描述符流中每一指令描述符流的预设格式也不作限定,根据预设格式的网络结构可生成第二指令描述符流对应的指令。
可以理解,终端设备根据目标神经网络结构对应的基本操作序列获取第一指令描述符流,通过对第一指令描述符流的简化操作,克服了用卷积、池化、激活等细粒度的原子操作组成的完整神经网络进行运算时产生的冗余的输入、输出或其他操作,消除了第一指令描述符流中多余的指令描述符,从而缩短了指令描述符流对应的目标运算指令流的长度,便于提升信息处理效率。
与图2E所示的实施例一致,本披露的另一实施例提供了一种终端设备,如图2F所示,该终端设备200包括:
获取单元201用于根据目标神经网络结构对应的基本操作序列获取第一指令描述符流;
简化单元202用于对所述第一指令描述符流进行简化得到第二指令描述符流;
所述获取单元201还用于根据所述第二指令描述符流获取目标运算指令流。
可以理解,获取单元201根据所述目标神经网络结构对应的基本操作序列获取第一指令描述符流,简化模块202对所述第一指令描述符流进行简化得到第二指令描述符流,所述获取单元201根据所述第二指令描述符流获取目标运算指令流。通过对第一指令描述符流的简化操作,克服了用卷积、池化、激活等细粒度的原子操作组成的完整神经网络进行运算时产生的冗余的输入、输出或其他操作,消除了第一指令描述符流中多余的指令描述符,从而缩短了指令描述符流对应的目标运算指令流的长度,便于提升信息处理效率。
可选的,在所述对所述第一指令描述符流进行简化得到第二指令描述符流方面,所述简化单元202具体用于遍历所述第一指令描述符流中的指令描述符得到多个指令描述符;查找所述多个指令描述符中的冗余操作;删除所述冗余操作对应的指令描述符得到所述第二指令描述符流。
可选的,在所述遍历所述第一指令描述符流中的指令描述符得到多个指令描述符方面,所述简化单元202具体用于根据预设优化规则对所述第一指令描述符流中的指令描述符流进行重排序得到所述多个指令描述符。
可选的,在所述对所述第一指令描述符流进行简化得到第二指令描述符流方面,所述简化单元202具体用于遍历所述第一指令描述符流中的指令描述符得到多个指令描述符对应的多个层;查找所述多个层中的融合层;将根据所述融合层对应的指令描述符进行融合,得到所述第二指令描述符流。
可选的,在所述对所述第一指令描述符流进行简化得到第二指令描述符流方面,所述简化单元202 具体用于遍历所述第一指令描述符流中的指令描述符得到多个指令描述符对应的多个层;查找所述多个层中的融合层;将根据所述融合层对应的指令描述符进行融合得到所述第二指令描述符流。
可选的,在所述根据目标神经网络结构对应的基本操作序列获取第一指令描述符流方面,所述获取单元201具体用于获取所述目标神经网络结构的基本操作序列,所述基本操作序列以网络结构协议形式表示;根据所述基本操作序列获取所述第一指令描述符流。
可选的,所述目标运算指令流包括以下中的至少一项:矩阵乘向量指令、向量乘矩阵指令、矩阵乘标量指令、张量运算指令、矩阵加法指令、矩阵减法指令、矩阵检索指令、矩阵加载指令、矩阵存储指令、矩阵搬运指令及cambricon指令集中的所有指令中的至少一项。
与图2E实施例一致的,请参照图2G,图2G为本申请实施例所提供的一种终端设备的结构示意图,如图2G所示,本实施例中的终端设备200可以包括:处理器210、通信接口230和存储器220。上述处理器210、通信接口230和存储器220通过总线240连接。其中,上述一个或多个程序221被存储在上述存储器220中,并且被配置由上述处理器210执行,上述程序221包括用于执行以下步骤的指令:
根据目标神经网络结构对应的基本操作序列获取第一指令描述符流;
对所述第一指令描述符流进行简化,得到第二指令描述符流;
根据所述第二指令描述符流获取目标运算指令流。
具体实现中,本披露实施例中所描述的处理器210、通信接口230和存储器220可执行本披露实施例提供的流执行方法中所描述的实现方式,也可执行本披露实施例所描述的流执行装置的实现方式,在此不再赘述。
具体实现中,本披露实施例中所描述的处理器301、输入设备302、输出设备303可执行本披露实施例提供的流执行方法的第一实施例中所描述的实现方式,也可执行本披露实施例所描述的流执行装置的实现方式,在此不再赘述。
如图2A所示的计算装置执行卷积运算指令的方法具体可以为:
控制器单元115从寄存处单元112内提取卷积运算指令、卷积运算指令对应的操作域,控制器单元将该操作域传输至数据访问单元。
数据访问单元从存储器内提取该操作域对应的卷积核w和偏执b,将卷积核w和偏执b传输至运算单元。
互联模块将乘法运算器与加法运算器连接,将加法运算器与激活运算器连接。
计算单元的乘法运算器将卷积核w与输入数据Xi执行乘法运算以后得到第一结果(可包括多个乘法运算的结果),将第一结果输入到加法运算器执行加法运算得到第二结果,将第二结果和偏执b执行加法运算得到第三结果,将第三结果输入到激活运算器执行激活运算得到输出结果S,将输出结果S传输至数据访问单元,数据访问单元将该输出结果S存储至存储器内。
本披露提供的技术方案通过一个指令即卷积运算指令即实现了卷积的计算,在卷积计算的中间数据(例如第一结果、第二结果、第三结果)均无需存储或提取,减少了中间数据的存储以及提取操作,所以其具有减少对应的操作步骤,提高卷积的计算效果的优点。
在可选实施例中,所述计算装置包括但不限于处理器、控制器及物理芯片等器件,例如神经网络芯片等。
基于前述终端设备的结构,参见图2G,是本披露实施例提供一种信息处理方法的示意流程图,如图2G所示的方法可包括如下实施步骤:
步骤S102、终端设备获取第一信息,所述第一消息为所述终端设备待处理的信息。
终端设备可在不同应用场景下可处理不同类型的信息,所述信息(具体为所述第一信息)包括但不限于文本信息、语音信息、影像信息(即图片或视频信息)、图片信息、视频信息、悬浮窗口等。例如,在语音识别场景中,所述第一信息即为语音信息。
步骤S104、所述终端设备在所述计算装置中调用运算指令对所述第一信息进行处理,从而获得第二信息。
步骤S106、所述终端设备输出所述第二信息。
所述终端设备可利用计算装置来处理,具体的在所述计算装置中可调用相关的运算指令(上述运算指令可以包含本披露中的任意一个指令或任意多个指令的组合)来对所述第一信息进行处理,从而获得并输出所述第二信息,关于所述第一信息的处理将在下文中进行详述。所述第二信息与所述第一信息的类型可以相同,也可不同,例如所述第一信息和所述第二信息均可为图片信息,或者所述第一信息可为语音信息,所述第二信息可为文本信息等,本披露不做限定。
下面介绍本披露实施例步骤S102和S104对应涉及的一些具体实施例。
第一种实施方式中:
步骤S102中,终端设备可获取第一信息。所述第一信息的具体获取方式,本披露不做限定,例如所述第一信息可为其他终端设备或服务器侧发送过来的。相应地,本披露对所述第一信息的格式并不做限定,即所述第一信息的格式可以是任意的。
相应地,在步骤S104中,终端设备获取第一信息后,可调用计算装置对所述第一信息进行处理。具体的,所述计算装置首先可对所述第一信息进行预处理,将所述第一信息转换为具备预设格式的第一信息。然后所述计算装置调用运算指令对所述具备预设格式的第一信息进行计算,从而获得第二信息。不同应用场景中,所述计算装置可调用不同的运算指令对该第一信息进行不同的运算处理,具体在下文中阐述。
第二种实施方式中:
在步骤S102中,终端设备获取原始信息,关于所述原始信息的具体获取方式本披露不做限定。接着,所述终端设备可对所述原始信息进行预处理,从而获得所述第一信息。这里的所述第一信息为具备预设格式的信息,所述预处理包括但不限于以下中的任一项或多项:数据格式转换处理(如归一化处理、整型数据转换等)、数据去重处理、数据异常处理、数据缺失填补处理等等。
相应地,在步骤S104中,所述终端设备获取所述第一信息后,可启用所述计算装置,通过所述计算装置调用相关的运算指令来对所述第一信进行处理,以获得并输出所述第二信息。关于所述第一信息的具体处理,不同应用场景下,所述计算装置调用的运算指令可不同,且具体处理方式可不同,具体在下文中详细阐述。
所述预处理包括但不限于数据格式转换,如本披露所描述的连续数据与离散数据的互换、幂次转换,具体将神经网络输入数据中非幂次权值数据转换为幂次权值数据、浮点数据统计,具体为统计获得人工神经网络正向运算中存储各个类型数据所需的指数位偏移及指数位所需的比特位数、浮点数据转换,具体为短位数浮点数据类型与长位数浮点数据类型等等,本披露不做限定。
在可选实施例中,所述预设格式包括但不限于浮点数、幂次数、离散数、整数型、十进制格式、十六进制格式、二级制格式等等,本披露不做限定。
在可选实施例中,所述运算指令包括但不限于以下中的任一项或多项:矩阵乘向量指令、向量乘矩阵指令、矩阵乘标量指令、张量运算指令、矩阵加法指令、矩阵减法指令、矩阵检索指令、矩阵加载指令、矩阵存储指令及矩阵搬运指令。
即在本披露的实施例中,如图2A所示的计算装置可以执行上述运算指令。具体的,如图2A所示的计算装置的运算单元可以执行矩阵乘向量指令、向量乘矩阵指令、矩阵乘标量指令、张量运算指令、矩阵加法指令、矩阵减法指令、矩阵检索指令、矩阵加载指令、矩阵存储指令及矩阵搬运指令中一个或任意组合的运算。
下面基于不同应用场景分别对本披露进行详细阐述。
第一,以场景识别为例。终端设备可获取环境图像信息(即第一信息),所述环境照片信息可为用 户当前所处环境的照片信息、或为其他待处理/识别的照片信息。可选地,所述终端设备可在所述计算装置内或所述计算装置外对所述环境图像信息进行格式转换,将其转换为具备设定格式的环境影像信息。环境影像信息可用RGB、CMYK、HSB等颜色模式表示,以工业界的一种颜色标准RGB为例,所述备设定格式的环境影像信息可表示为RGB三维矩阵。其中,RGB三维矩阵仅为示例并不构成限定,所述环境影像信息可转换为不同格式的矩阵,且所述矩阵具体可以为m*n矩阵、1*n矩阵或m*1矩阵,其中m、n为大于等于2的整数。当矩阵为1*n矩阵或m*1矩阵时,也可以称为向量,下述矩阵均可以为上述三种类型矩阵中的任意一种,下面不在赘述。
相应地,所述终端设备利用计算装置(如神经网络芯片或如图2A所示的计算装置)调用场景识别算法对所述环境影像信息(具体为m*n的矩阵,m,n不能同时为1)进行识别,计算出对应的第二信息,所述第二信息可为所述环境影像信息对应所归属的目标场景分类,或者为所述环境影像信息对应在预设场景分类中的量化数值,所述量化数值用于表征所述环境影像信息与所述预设场景分类的相似度。所述第二信息用于指示所述环境影像信息对应归属的目标场景分类,所述目标场景分类属于所述预设场景分类。所述预设场景分类可为用户侧或终端设备侧自主设置的,所述预设场景分类包括但不限于室内环境、室外环境、沙滩、海洋等等。
所述场景识别算法是由至少一个运算指令构成的,所述场景识别算法用于对所述环境影像信息进行特征提取,识别所述环境影像信息对应场景类型。所述运算指令包括但不限于:归一化指令、非线性激活指令、池化指令、全连接层指令等,所述运算指令的具体实现方式将在下文中进行详细阐述。
具体的,如图2A所示的计算装置的控制器单元可以从寄存器单元内调用归一化指令、非线性激活指令、池化指令、全连接层指令的一个或任意组合发送至运算单元实现场景识别算法得到第二信息。需要说明的是,如果上述场景识别算法需要执行多个运算指令时,其对应的计算拓扑结构也可以由控制器单元从寄存器单元来调取给互联模块,互联模块控制运算单元内的计算器来实现上述计算拓扑结构。
第二,以物体识别为例。与前述第一实施例类似,终端设备获取图像信息(即第一信息),这里的图像信息可为具备预设格式的图像信息。所述图像信息包括有一个或多个物体,例如包括有一盒牛奶和一个水杯的图像信息。同样地,终端设备可以多维矩阵的形式来表示该图像信息。所述终端设备可利用计算装置内控制单元调用及存储器单元的物体识别算法(具体为一些运算指令)发送至运算单元对所述图像信息进行计算,得到第二信息,所述第二信息用于表征所述图像信息所包括的物体的信息,所述信息可为位置信息、类别信息(如物体名称、物体类型)等。所述第二信息可为多维矩阵,其可具体表示图像信息中各物体的坐标位置、各物体的类型或名称等信息。
第三,以语音识别为例。终端设备获取用户输入的语音信息(即第一信息)。所述语音信息可为在所述计算装置内或计算装置外被处理成具备预设格式的语音信息。同样地,所述语音信息可被终端设备处理表示为多维矩阵。所述终端设备可利用计算装置来对所述语音信息进行语音识别处理。具体的,所述计算装置的控制器单元可调用寄存器单元内存储的语音识别算法(具体为一些运算指令)发送给运算单元对所述语音信息进行语音识别处理,得到第二信息。这里的第二信息可为文字/文本信息。所述语音识别算法是由一个或多个运算指令组成的,所述运算指令包括但不限于标量运算指令、矩阵向量运算指令、排序指令、卷积层指令、全连接层指令、池化层指令以及批处理规范指令的一个或任意组合。
第四,以影像画风转换为例。终端设备获取待转风格的影像信息(可为图片信息或视频信息,即第一信息)。进一步地,终端设备利用计算装置对影像信息进行风格转换。同样地,在具体处理过程中,终端设备可将影像信息表示为多维矩阵,利用计算装置的控制器单元调用寄存器单元的影像风格转换算法发送至运算单元,运算单元将所述影像信息的风格转换为目标风格,并输出具备目标风格的影像信息(即第二信息)。所述影像风格转换算法可由一个或多个运算指令构成,所述运算指令可以为本披露中任意一个运算指令或任意组合,这里不再赘述。
第五,以轮廓检测为例。终端设备获取图像信息(即第一信息)。所述图像信息可为在所述计算装 置内或计算装置外被处理成具备预设格式的图像信息。同样地,所述图像信息可被终端设备处理表示为多维矩阵。所述终端设备可利用计算装置来对所述图像信息进行轮廓检测处理。具体的,所述计算装置的控制器单元可调用寄存器单元的轮廓检测算法(具体为一些运算指令)至运算单元对所述图像信息进行轮廓检测和识别处理,得到第二信息。所述第二信息用于表征所述图像信息中各物体所对应的像素点,即这里的轮廓检测是指对图像信息中各物体的轮廓(像素点)进行区分,所述第二信息即为轮廓区分结果信息,各物体各自所包括的轮廓(即多个像素点)。所述轮廓检测算法可由一个或多个运算指令构成,所述运算指令可以为本披露中任意一个运算指令或任意组合,这里不再赘述。
需要说明的是,上述场景识别算法、物体识别算法、语音识别算法、影像画风转换算法及轮廓检测算法为用于执行不同功能操作的算法。其组成各算法的运算指令可以相同,也可不同,本披露不做限定。
上述仅以五种应用场景对本披露实施例进行阐述,但本披露包括但不限于基于计算装置对上述五种应用场景的处理,例如还可包括超分辨率影像重建(由低分辨率影像转换为高分辨率影像)、影像美化(改变影像风格、色彩等)、语言翻译(语音之间的相互转换,如中文翻译为英文)、商品/广告推荐(如网站商品信息的推荐)、物体检测(检测物体的位置)、聊天机器人(对话沟通)等应用场景的处理等,本披露实施例不做限定。
需要说明的,基于图2A示出的计算装置中,组成各种算法的运算指令可不同,也可相同。当组成算法的运算指令有多个时,可通过计算装置的互联模块来识别并获知构成该算法所需调用运算单元中的哪些计算器、以及计算器调用个数、调用顺序等,也即是所述计算装置的互联模块将根据每个算法各自对应的计算拓扑结构,来调用所述运算单元完成该算法对应的计算功能,本披露不做限定。
在可选实施例中,所述终端设备可以包括用户设备(User Equipment,UE)、服务器、智能手机(如Android手机、IOS手机等)、个人电脑、掌上电脑、移动互联网设备(MID,Mobile Internet Devices)或穿戴式智能设备等互联网设备,本披露实施例不作限定。
通过实施本披露实施例,能够利用计算装置进行各种信息的处理,提升信息处理效率。
基于前述实施,下面具体介绍不同应用场景下基于所述计算装置的信息处理方法的一些具体实施例。
以物体检测的应用场景为例,请参见图3,是本披露实施例提供的一种基于所述计算装置的信息处理方法。如图3所示的方法包括如下实施步骤:
步骤S302、获取物体影像,所述物体影像包括待识别的至少一个物体。
本披露中,所述物体影像包括但不限于一个或多个关键特征的图片或视频,所述关键特征为待识别物体的特征,例如物体名称、物体形状等等。
在实际应用中,所述物体影像可支持或具备不同的数据格式,例如十进制、或八机制等等,也可表示为是由组成所述物体影像中的像素点所转换而得的多维矩阵,本披露不做限定。
可选实施例中,所述物体影像可以为预处理后的影像数据,也可以是未处理输入的原始数据。当所述物体影像为原始数据时,终端设备还可进一步对所述物体影像进行预处理,如归一化处理、数据格式转换处理等等,具体可利用前述图2A所示的计算装置对其进行预处理,以得到相应输入格式的物体影像,例如可处理为多维矩阵,以便步骤S304对该处理后的物体影像进行特征提取。
可选实施例中,所述物体影像的预处理可以在所述终端设备的计算装置内部或者外部处理的,本披露不做限定。
步骤S304、利用计算装置中的运算指令对所述物体影像进行特征提取,得到中间数据。
步骤S306、利用所述计算装置对所述中间数据进行计算,从而获得所述物体影像中待识别的物体的位置。可选地,还可获得所述待识别的物体的分类。
步骤S308、输出所述待识别的物体的位置。
下面介绍步骤S304至步骤S308涉及的一些具体实施例。
具体的,在步骤S304中,计算装置在接收到所述物体影像(具体可为多维矩阵数据)后,可调用相应地第一运算指令,即与物体检测算法对应网络计算拓扑结构相关的运算指令,来对所述物体影像进行特征提取,以得到中间数据。相应地,所述中间数据也可为多维的矩阵数据。
关于步骤S304的具体实施方式有多种,下面简单介绍其中涉及的三种。
第一种实施方式中,所述终端设备可调用该实施例中的相关运算指令对所述物体影像特征进行特征提取,以获得中间数据。所述运算指令包括但不限于神经网络运算指令、矩阵/向量运算指令等等,上述运算指令可以为本披露中任意一种运算指令或运算指令的任意组合。
第二种实施方式中,计算装置可调用一个或多个运算指令对所述物体影像进行特征提取,以获得中间数据。所述多个运算指令包括但不限于卷积指令、归一化指令,非线性激活指令,池化指令等,且各运算指令的具体调用顺序、实施步骤是可以任意的,不做限定。下面示例性地给出一种运算指令的调用方式,以提取物体影像的特征,具体如图4所示。
如图4可知,计算装置可顺序调用卷积运算指令、归一化指令、非线性激活指令以及池化指令来依次对获取的物体影像进行处理,从而实现所述物体影像的特征提取,获得中间数据。
具体的,控制器单元可以从寄存器单元中提取卷积运算指令发送至运算单元对获取的物体影响进行处理,然后,控制器单元可以从寄存器单元中提取归一化指令发送至运算单元对获取的物体影响进行处理,然后,控制器单元可以从寄存器单元中提取非线性激活指令发送至运算单元对获取的物体影响进行处理,然后,控制器单元可以从寄存器单元中提取池化指令发送至运算单元对获取的物体影像进行处理。
第三种实施方式中,如上图4可知第二种实施方式中各运算指令的执行顺序是顺序的,一条线程(流水线)操作的,但本披露不做限定。本披露中关于特征提取的实现操作可以是分线程(即分流)和合并的。所述分线程的实现方式包括但不限于数据的拷贝、数据的分组等方式,所述分线程合并的实现方式包括但不限于数据的相加减、数据的相乘、数据的组合摆放等方式。同样地,其中涉及的操作步骤及顺序也是可以有任意多种组合的。引用图4的例子,参见图5示出一种运算指令调用的示意图。
如图5可知,计算装置可同时进行两个线程的数据操作,且每个线程中所需使用的运算指令可以相同,也可不同,且各运算指令的调用顺序及调用数量也不做限定。如图5,其中一个线程同时会执行两次图4的运算指令;另一线程会执行一次图4的运算指令。
需要说明的是,本披露涉及多线程的数据操作时,其特征提取后的中间数据可由各线程处理后的结果数据汇聚而成。即所述中间数据可包括但不限于多个相同维度的矩阵数据,或者多个不同维度的矩阵数据,本披露不做限定。
可选地,上述仅示出步骤S304的三个实施方式,还可有其他具体实施方式例如采用HOG(方向梯度直方图)、SIFT特征提取算法等算法实现图像特征提取等等,这里不做详述。
相应地步骤S306中,计算装置可对所述中间数据进行分析,获知到所述物体影像中各个待识别的物体的位置以及分类等等。
具体的,计算装置可调用第二运算指令对所述中间数据进行处理,类似于步骤S304的处理过程,最终获得所述物体影像中各个待识别的物体的位置信息、类别(分类)信息、以及该物体影像中各位置处可能存在有物体的评估分值等等信息,本披露不做限定。
所述位置或位置信息可利用最小包围矩阵的位置来表示,例如,以最小包围矩阵的左上角像素坐标和宽度高度表示,以最小包围矩阵的中心坐标和宽度高度表示,以最小包围矩阵的左上角和右下角像素坐标表示等等。举例来说,如果物体影像中包含有一盒牛奶的图像,则所述最小包围矩阵即为包括牛奶影像在内的最小框形成的矩阵,该矩阵可被描述为以牛奶影像的中心坐标、高度和宽度表示。
在可选实施例中,计算装置对所述中间数据处理后可得到结果数据,所述结果数据包括有上述各物体的位置信息、类别(分类)信息、以及该物体影像中各位置处可能存在有物体的评估分值等等信息。 参见前述实施例中的相关描述可知,所述结果数据可包括但不限于一个或多个多维的矩阵数据,该多维的矩阵数据可以相同,也可不同,不做限定。
当计算得到多个多维的矩阵数据时,计算装置还可调用相关运算指令(如全连接层运算指令)对其进行计算,从而得到一个多维的矩阵数据,此时得到的矩阵数据还是包括上述各物体的位置信息、类别(分类)信息、以及该物体影像中各位置处可能存在有物体的评估分值等等信息。
在可选实施例中,计算装置还可调用图4实施例中指令集中的相关指令(如向量运算指令)实现非极大值抑制NMS,以对预测的最小包围矩阵进行筛选,从而筛选出可能存在有物体的最小包围矩阵,本披露不做限定。
所述第一运算指令和所述第二运算指令可为相同的或者不同的运算指令,所述运算指令包括但不限于标量运算指令、矩阵向量运算指令、排序指令、卷积层指令、全连接层指令、池化层指令以及批处理规范指令等,上述第一运算指令以及第二运算指令也可以为本披露其他的任意运算指令或任意运算指令的组合。
通过实施本披露实施例,能够准确、快速、全面地对物体影像中待识别的物体进行检测,相比于现有技术利用通用处理器检测,功耗更低,速度更快。
以超分辨率为例,请参见图3A是本披露实施例提供的一种基于所述计算装置的信息处理方法。如图3A所示的方法包括如下实施步骤:
步骤S3A2、获取待处理的第一影像,所述第一影像具备第一等级的分辨率。
步骤S3A4、利用计算装置中的运算指令对所述第一影像进行分辨率转换处理,以得到第二影像,其中,所述第二影像具备第二等级的分辨率,所述第一等级低于所述第二等级。
步骤S3A6、输出所述第二影像。
下面介绍本披露中涉及的一些具体实施例和可选实施例。
步骤S3A2中,所述第一影像可以是图像,也可是视频,且所述第一影像的数量并不做限定。即输入的第一影像可以是一个或多个图片,一段或者多段视频,本披露不限定。
实际应用中,所述第一影像可以支持/具备不同的数据格式,例如十进制、或八机制等等,也可表示为是由组成所述第一影像中的像素点所转换而得的多维矩阵,本披露不做限定。
可选实施例中,所述第一影像可以为预处理后的影像数据,也可以是未处理输入的原始数据。当所述物体影像为原始数据时,终端设备还可进一步对所述物体影像进行预处理,如归一化处理、数据格式转换处理等等,具体可利用前述图2A所示的计算装置对其进行预处理,以得到相应输入格式的物体影像,例如可处理为多维矩阵,以便步骤S3A4对该处理后的物体影像进行分辨率转换处理。
可选实施例中,所述第一影像的预处理可以在所述终端设备的计算装置内部或者外部处理的,本披露不做限定。
步骤S3A4中,计算装置接收到所述第一影像(具体可为多维矩阵数据)后,可调用与该超分辨率算法对应的网络计算拓扑结构相关的运输指令,对所述第一影像进行分辨率转换处理,从而获得具备第二优先级的第二影像。其具体实现方式可参见前述图3所述实施例中的相关描述,这里不再赘述。
在可选实施例中,所述分辨率转换处理可由多个处理模块分别执行的,每个处理模块的处理结果(即输出的多维矩阵)可以合并,也可不做合并;且所述多个处理结果的形式并不做限定,例如可以是多个不同维度的多维矩阵,或者也可为多个相同维度不同尺寸大小的多维矩阵等,本披露不限定。
步骤S3A6中,终端设备可将所述分辨率处理后的处理结果直接输出;或者,还可对所述分辨率处理后的处理结果进行诸如平移,伸缩变化,以及非线性运算等变换处理,使得将计算装置(人工神经网络芯片)处理后的处理结果对应映射为影像中的像素点,从而得到所述第二影像。
通过实施本披露实施例,能够提升/改善影像的分辨率,相比于现有技术利用通用处理器加软件实 现的方式,功耗更低,速度更快。
以图像美化为例,请参见图3B是本披露实施例提供的一种基于所述计算装置的信息处理方法。如图3B所示的方法包括如下实施步骤:
步骤S3B2、获取待处理的第一影像。关于所述第一影像的相关阐述可参见前述图3A所述实施例中的相关阐述,这里不再赘述。
步骤S3B4、利用计算装置中的运算指令对所述第一影像进行美化处理,以得到第二影像。
步骤S3B6、输出所述第二影像。
下面介绍本披露中涉及的一些具体实施例和可选实施例。
步骤S3B2中,所述第一影像还可携带有美化选项。该美化选项可以是用户侧或设备侧输入的,例如通过应用程序输入的等,所述美化选项包括但不限于:美白、祛痘、瘦脸、瘦身、亮度、对比度等用于图像处理或效果提升的功能选项。
关于步骤S3B2-步骤S3B6的具体实施方式可参见前述图3和图3A所述实施例中的相关阐述,这里不再赘述。
在可选实施例中,利用计算装置(具体为人工神经网络)对第一影像进行美化处理时,可使用一套或多套网络模型;当使用一套网络模型时,该网络模型的输入数据(即第一影像)需包含用于标识美化选项或美化选项类型的参数;当使用多套网络模型时,可为不同美化影像的美化效果提出对应的网络模型,利用该网络模型来实现影像的美化处理。
通过实施本披露实施例,能够实现影像的美化,相比于现有技术利用通用处理器加软件实现的方式,功耗更低,速度更快。
以语言翻译为例,请参见图3C,是本披露实施例提供的一种基于所述计算装置的信息处理方法。如图3C所示的方法包括如下实施步骤:
步骤S402、获取待翻译的语言信息。
本披露中,所述待翻译的语言信息可为待翻译的自然语言,本披露并不限定所述自然语言的形式,例如所述自然语言可以短信、语音、字幕、图片等形式体现等等。
步骤S404、利用计算装置中的运算指令对所述语言信息进行翻译处理,得到目标语言。
步骤S406、输出所述目标语言。
下面介绍步骤S404涉及的一些具体实施例。应理解的,步骤S404属于终端设备对待翻译的语言信息进行的中间处理过程。
具体的,计算装置可利用编码器对S402语言信息进行编码,得到固定长度的向量。然后,将编码后的固定长度的向量输入至解码器,解码产生出目标翻译语言词库中,每个单词的概率。最后,将解码后的信息输入至语言模型进行分析,从而得到并输出翻译后的目标语言,该目标语言也可用文字形式表示。下面分别进行详细阐述。
首先,计算装置可将待翻译的语言信息首先通过编码器转换为固定长度的向量。该编码器可以是由卷积层、全连接层、池化层、批处理规范层(batch norm层)等组成的神经网络模型。所述神经网络模型包括但不限于以下中的任一项或多项的组合:深度神经网络DNN、卷积神经网络CNN、循环神经网络RNN、时间递归神经网络LSTM等等。具体实现中,所述终端设备可使用如图2A所示计算装置,如人工神经网络芯片中的计算单元执行相应的卷积层指令、全连接层指令、池化层指令、batch norm层指令完成相应的神经网络算法。
其次,将编码器产生的固定长度的向量进入解码器解码产生目的翻译语言词库中,每个单词的概率。该编码器可以是由卷积层、全连接层、池化层、batch norm层等组成的神经网络模型。关于所述神经网络模型这里不再赘述。
可选实施例中,在神经网络模型中加入attention机制(或attention模型)能对生僻字进行单独编码,以提升语言翻译的精准性。下面进行详细阐述。Attention模型能够支持实现某些生僻字的翻译对应关系。具体的,该实现可以通过全连接层神经网络、回归softmax层神经网络、矩阵乘法、矩阵加法完成。
在一具体实施例中,将上述编码器编码之后得到的固定长度的向量与预先获得的位置信息矩阵进行第一指定运算,例如做矩阵乘法等等。然后再通过训练好的全连接层神经网络以及softmax层神经网络后与之前的神经网络进行第二指定运算,例如进行矩阵加法,从而获得结果矩阵(即翻译后的由多个单词的概率组成的概率矩阵)。
在又一具体实施例中,将上述具体实施例中的一系列运算操作,定义为attention模型;相应地,可以多个attention按照以下排列组合方式中的任一种或多种的组合形成新的attention模型:相互串连、并联、跳跃式串连等排列组合方式。
在又一具体实施例中,在上述第一种具体实施例的基础上,通过改变每个运算操作的先后顺序,从而能够组合成新的attention模型。更具体的,可使用人工神经网络芯片(计算装置)中的计算单元执行相应的卷积层指令、池化层指令、全连接层指令、batch norm指令、矩阵乘法指令、矩阵加法指令等实现attentio模型。
最后,将解码器解码后得到的各单词的概率输入至语言模型,进行数据处理(如迭代处理)等等,生成结果翻译后的目标语言。其中,语言模型可预先存储有,例如A*算法等排序算法,以结合一起用于生成翻译结果(即目标语言)。具体的,通过语言模型可迭代产生出所有待选文字的分数,在每一次迭代中产生所有待选文字新的分数,由此迭代完成后会生成一个时间序列上的所有文字的搜索空间,在该空间中应用解码器算法的到最终唯一的语言识别输出结果。其中,该解码器算法可以是由卷积层、全连接层、池化层、批处理规范层(batch norm层)等组成的神经网络模型。所述神经网络模型包括但不限于以下中的任一项或多项的组合:深度神经网络DNN、卷积神经网络CNN、循环神经网络RNN、时间递归神经网络LSTM等等。具体实现中,所述终端设备可使用计算装置,如人工神经网络芯片中的计算单元执行相应的卷积层指令、全连接层指令、池化层指令、batch norm层指令完成相应的神经网络算法,解码器的作用为讲固定长度的向量与各个单词的概率数字相关连。
在实际应用中,所述语言模型包括但不限于WFST或者n-gram等算法模型,用于对各个单词的概率进行统计,以输出相应地翻译结果。具体实现中,本披露中可使用计算装置,如人工神经网络芯片中的计算单元执行相应的向量乘法指令、向量加法指令、标量数字逻辑指令等功能指令中的任一项或多项的组合,以配合完成WFST、N-gram、束搜索等算法的功能实现。
在可选实施例中,步骤S402获取的待翻译的语言信息可被存储在存储介质中。计算装置在实现上述步骤S404过程中,会利用调用存储介质中的相关运算指令对所述语言信息执行相应地的运算。
下面介绍本披露中语言翻译涉及的一些具体实施方式。
步骤1,输入数据经预处理模块或者直接传入存储单元;
步骤2,DMA将其分批传入相应的片上缓存(即指令缓存,输入神经元缓存,权值缓存)中;
步骤3,控制单元从指令缓存中读取指令,将其译码后传入运算单元;
步骤4,根据指令,运算单元执行相应的运算:在神经网络的各个层中,运算主要分为两步:步骤4.1,使用人工神经网络芯片中的矩阵乘法模块或者向量乘法模块人工神经网络芯片指令完成卷积层卷积层(a3)和全连接层全连接层(a4)的运算;步骤4.2,对步骤4.1得到的结果执行激活函数运算,得到输出神经元,并将其传入输出神经元缓存中。在非神经网络方法中,运算主要分为一步:步骤4.3,使用人工神经网络芯片中的标量运算指令、矩阵向量运算指令、排序指令等完成束搜索等非神经网络算法。
步骤5,重复步骤2到步骤4,直到所有数据运算完毕,即得到功能需求的最终结果。其中所述最终结果由神经网络最后一层的输出神经元得到,从运算单元输出到输出神经元缓存中,然后经DMA返回 存储单元。
在实际应用中,机器人聊天与语言翻译类似,均属于深度学习在自然语言处理中的应用,其算法过程、执行过程均较为相似。下面示例性给出机器人聊天的具体实施方式。
以聊天机器人为例,输入:输入数据为待回复的自然语言,该自然语言可以是文字形式或语音形式等。
优选地,还包括中间处理过程,具体如下。
中间处理:中间处理过程优选的包括编码器或解码器或语言模型或attention模型,优选的,这些模型可以由DNN或CNN或LSTM或RNN等神经网络方法实现或者WFST、N-gram等非传统方法实现。
优选的,输入的待回复的语言文字首先通过编码器转换为固定长度的向量。优选的,该编码器可以是由卷积层、全连接层、池化层、batch norm层等组成的DNN或者CNN或者LSTM或者RNN,更具体的,本装置使用所述人工神经网络芯片中的计算单元执行相应的卷积层指令、全连接层指令、池化层指令、batch norm层指令完成相应的神经网络算法。
优选的,编码器产生的固定长度的向量进入解码器解码产生目的回复语言词库中,每个单词的概率。优选的,该编码器可以是由卷积层、全连接层、池化层、batch norm层等组成的DNN或者CNN或者LSTM或者RNN,更具体的,本装置使用所述人工神经网络芯片中的计算单元执行相应的卷积层指令、全连接层指令、池化层指令、batch norm层指令完成相应的神经网络算法。
优选的,attention模型对于较少出现的聊天语句进行单独编码。attention模型实现具体某些的较少出现聊天语句的对应关系,具体的,该实现可以通过全连接层神经网络、softmax层神经网络、矩阵乘法、矩阵加法完成。实施例之一,编码器编码之后的固定长度向量与预先获得的位置信息矩阵做矩阵乘法,之后通过训练好的全连接层神经网络,在经过softmax层神经网络后与之前的神经网络计算结果矩阵加法。实施例之二,将上述系列操作定义为attention,可以多个attention相互串连、并联、跳跃式串连等排列组合方式为新的attention。实施例之三,在实施例一的基础上改变每个操作的先后顺序组成新的attention模型。更具体的,本装置使用人工神经网络芯片中的计算单元执行相应的卷积层指令、池化层指令、全连接层指令、batch norm指令、矩阵乘法指令、矩阵加法指令、向量四则运算指令等实现attentio模型。
优选的,语言模型存储先验知识与束搜索、A*算法等排序算法结合生成目标回复结果。通过语言模型迭代的产生所有待选文字的分数,在每一次迭代中产生所有待选文字新的分数,由此迭代完成后会生成一个时间序列上的所有文字的搜索空间,在该空间中应用解码器算法的到最终唯一的语音识别输出结果。具体的,可以由WFST或者n-gram算法实现语言模型,本装置使用人工神经网络芯片中的计算单元执行相应的向量乘法指令、向量加法指令、标量数字逻辑指令完成WFST、N-gram、束搜索的算法。
输出:回复的自然语言,用文字等方式输出出来。
通过实施本披露实施例,能够准确、快速、全面地对待翻译的语言信息进行翻译,相比于现有技术利用通用处理器检测,功耗更低,速度更快。
以广告推荐为例,请参见图3D,是本披露实施例提供的一种基于所述计算装置的信息处理方法。该计算装置的结构如图2A所示,如图3D所示的运算指令可以由控制器单元从寄存器单元中提取发送至运算单元,由运算单元执行该运算指令的运算,如上述运算需要执行多层运算,则由控制器单元从寄存器单元中提取运算对应的计算拓扑结构,将该计算拓扑结构发送至互联模块,由互联模块控制运算单元内的计算器的连接关系以实现上述计算拓扑结构的运算。如图5B所示的方法包括如下实施步骤:
步骤S502、获取用户数据,所述用户数据用于表征用户对商品感兴趣的程度。
本披露中,所述用户数据包括但不限于用户的历史数据,例如包括购买商品记录以及浏览商品记录 等;可选地,还可包括用户的个人信息数据,例如包括用户的年龄、地域、受教育情况等信息;可选地,还可包括用户所在的群体数据,例如包括群体中的地域、浏览记录等数据,优选的还可包括时间信息等,本披露不做限定。
步骤S504、利用计算装置中的运算指令对所述用户数据进行深度学习处理,得到推荐商品信息。
步骤S506、输出所述推荐商品信息。
其中,步骤S504为终端设备利用计算装置对所述用户数据进行特征提取以获知用户感兴趣的推荐商品信息的中间处理过程,下面进行具体阐述。
具体的,计算装置可利用深度神经网络的特征提取功能,将用户数据中的特征提取出来,并在此基础上对每样商品进行打分。所述神经网络层可包括但不限于卷积层,全连接层,池化层,非线性激活层,规则化层等。
下面以全连接层为例,介绍在该层中数据处理的实施例。具体地,全连接层可接收N个长度为L的向量作为输入数据,其中N为批处理的样本数量,使用输出数据outnum个长度为L的向量作为权值进行计算。对于N个批处理样本中的每一个样本,计算过程是使用每个权值向量与在输入数据向量进行内积计算。在N>1的情况下,对每个样本进行同样的计算处理。更具体的,本披露使用人工神经网络芯片(计算装置)中的计算装置执行相应的全连接层指令完成相应的神经网络算法。
可选实施例中,用户数据与商品数据嵌入连接,这一过程可使用全连接层(MLP)、卷积神经网络(CONV)、受限玻尔兹曼机(RBM)等神经网络层。嵌入连接之后的数据经过全连接层以及激活层,然后再与未嵌入连接之前的数据做矩阵乘法操作(Cross Product)。更具体的,本披露使用计算装置(如人工神经网络芯片)中的计算单元执行相应的全连接层指令、卷积指令、矩阵乘法指令完成相应算法。
可选实施例中,对于稀疏用户数据,例如某些用户信息收集不全的情况,并且由于用户信息包含地域等等各种信息,用户信息维度较高,需要将高维数据映射到低维数据。同样可采用神经网络方法完成对稀疏用户数据的特征提取到低维数据的过程。如图5A示出稀疏用户数据的示意图。
由图5A可知,存在不同等级用户,如图示给出A、B、C等用户所在群体对不同的电影进行打分的数据,但数据存在较多缺失信息(用0表示),针对如图5A的稀疏用户信息,本披露使用如图5B所示的神经网络进行特征提取。如图5B,该神经网络包括全连接层、激活层(CTR)。更具体的,本披露使用所述人工神经网络芯片中的计算单元执行相应的全连接层指令、激活指令完成相应的神经网络算法。
具体的,在推荐系统的最上层,经过激活层、softmax操作生成商品目录中每一件商品的分数,对该分数排序,将分数最高的n件商品输出给用户,即得到的所述推荐商品信息为这n件商品。更具体的,本披露使用计算装置(人工神经网络芯片)中的运算单元执行相应的激活指令、排序指令、标量比较指令完成这些操作。
通过实施本披露实施例,能够准确、快速、全面地对用户数据进行特征提取以推荐用户相关的商品信息,相比于现有技术利用通用处理器分析推荐,功耗更低,速度更快。
以影像画风(即影像风格)转换为例,请参见图3E,是本披露实施例提供的一种基于所述计算装置的信息处理方法。如图3E所示的方法包括如下实施步骤:
步骤S802、获取第一影像和第二影像,其中所述第一影像为待转画风的影像,所述第二影像为待转画风的目标风格的参考影像。
本披露中,所述第一影像可为待转画风的影像,或者为待转风格的影像。所述第二影像为需将所述第一影像转换至某个目标风格的参考影像。所述第二影像可为用户侧或终端设备侧自定义指定/配置的,例如指定山水风格、田园风格的参考影像为第二影像等等。关于所述第一影像和所述第二影像的格式,本披露并不做限定。例如,所述第一影像或第二影像可包括但不限于一段视频或一组图片。其具体输入至所述终端设备中的格式,本披露也不做限定,如支持十进制、十六进制等等格式。
在可选实施例中,所述终端设备支持输入的所述第一影像或第二影像的格式为矩阵格式。即对于输入的一张待转风格的图片而言,可将其转换为一个矩阵,其尺寸/维度为C*H*W。其中,C表示图片的颜色通道数,例如对于灰度图片而言,C=1;对于彩色图片而言,C=3等。H为图片的高度,W为图片的宽度,它们各自的单位都可为像素点。
应理解的,当所述待转画风的影像(即第一影像)为一段视频时,则可以帧的方式对该视频进行抽取,从而得到每一帧的图像。然后,再将一帧图像作为一张图片进行后续的画风转换处理。假设待转换风格的图片或者视频中的一帧图像为X,目标风格的参考图像为Y。所述目标风格的参考图像Y可为用户侧或所述终端设备侧自主设置的,本披露不做限定。
步骤S804、利用计算装置中的第一运算指令对所述第二影像进行特征提取,得到特征数据。
步骤S806、利用计算装置中的第二运算指令对所述特征数据和所述第一影像进行风格转换处理,从而获得画风转换后的目标影像。
步骤S808、输出所述目标影像。
步骤S804和S806为计算装置对待转画风的影像信息进行目标风格的转换处理中间处理过程,引用S802的例子,下面进行详细阐述。
计算装置可使用多个神经网络层对参考图像Y(具体可为一个C*H*W的矩阵)进行计算,从而获得参考图像Y的特征。然后,利用该特征和待渲染图像X(步骤S802输入的所述第一影像或所述第一影像中的一帧图像)进行相应的矩阵运算,从而得到渲染后的图像。最后,对于视频流数据而言,可将渲染后的图像使用图像处理技术(例如motivation estimation技术)来预测新的图像,并进行插帧处理后,可最终获得/生成所述目标影像。
具体实现中,计算装置可利用神经网络模型对参考图像Y进行特征提取,所述神经网络模型包括但不限于Alexnet、VGG、ResNet等神经网络模型,这些神经网络层可以包括卷积层,全连接层,池化层,非线性激活层,规则化层等。
下面以卷积层和全连接层为例,对帧图像数据的处理进行具体阐述。
第一,卷积层可接收一个维度为N*C*H*W的四维数据块,即四维的矩阵数据作为输入数据。其中,N为批处理的样本数量,使用outnum个维度为C*Kh*Kw的三维卷积核作为权值进行计算。对于N个批处理样本中的每一个样本,计算过程是使用每个卷积核在输入数据的H和W维度进行滑动,并且在滑动到的每一处位置使用每个卷积核与其对应的位置的输入数据进行内积计算。将输入数据按照卷积核滑动的每一个位置对应的C*Kh*Kw个数据抽取出来重新排列,假设共有Kernum个卷积核滑动位置,则卷积层对一个批处理样本的计算。在N>1的情况下,对每个样本进行同样的计算处理。更具体地,本披露使用计算装置,如人工神经网络芯片中的计算单元执行相应的卷积层指令完成相应的神经网络算法。
第二,全连接层可接收N个长度为L的向量作为输入数据,其中N为批处理的样本数量,使用outnum个长度为L的向量作为权值进行计算。对于N个批处理样本中的每一个样本,计算过程是使用每个权值向量与在输入数据向量进行内积计算。在N>1的情况下,对每个样本进行同样的计算处理。本披露使用计算装置(人工神经网络芯片)中的运算单元执行相应的全连接层指令完成相应的神经网络算法。
在本披露的一个具体实施例中,使用上述神经网络层(具体包括卷积层和全连接层)可组成VGG神经网络,假设生成具备目标风格的目标图像Z、待转换图像X、目标风格图像Y,可得到如下公式:
其中,该公式反应了具备目标风格的目标图像Z与原来待转图像X的差异。F、P分别为需要转化的图像X和Z经过VGG时的中间层,其定义的Gram矩阵如下:
其中,i和j为某一层不同的特征映射(feature map)。利用上述公式和Gram矩阵,可得到如下的纹理定义公式:
其中,该公式反映了目标图像Z与风格图像Y的差异,G和A分别为图像Y和目标图像Z的Gram矩阵。其中,目标函数为使得损失函数L=aLcontent+bLtexture最小。具体实现,可通过对目标图像Z求导数,并更新Z的值,即为输出结果信息(目标风格的目标影像)。更具体地,本披露使用计算装置(人工神经网络芯片)中的计算单元执行相应的矩阵乘法指令、矩阵加法指令、标量逻辑算数运算指令完成上述公式的运算。
优选的,本披露使用图像处理技术可加速视频流转画风算法的实现。对于视频流在上述过程产生转画风图像帧之后,运用运动估计算法进行运动补偿产生新的目标图像Z的初始状态而不是一般的目标图像Z时使用的随机图像,能提高视频准确度。具体的,将活动图像分成若干块或宏块,并设法搜索出每个块或宏块在邻近帧图像中的位置,并得出两者之间的空间位置的相对偏移量,得到的相对偏移量就是通常所指的运动矢量,按照运动矢量指明的位置,从邻近参考帧图像中找到相应的块或宏块,和预测误差相加后就得到了块或宏块在当前帧中的位置。利用运动补偿后的帧作为上文中的初始目标图像Z放于上文中的算法中,以最终计算出转画风之后的目标影像Z。更具体的,本披露使用计算装置(人工神经网络芯片)中的计算单元执行相应的矩阵乘法指令、矩阵加法指令、标量逻辑算数运算指令完成该过程。
通过实施本披露实施例,能够准确、快速、全面地对待转风格的影像信息进行目标风格的转换以得到具备目标风格的目标影像,相比于现有技术利用通用处理器的处理,功耗更低,速度更快。
以语音识别为例,请参见图3F,是本披露实施例提供的一种基于所述计算装置的信息处理方法。该计算装置的结构如图2A所示,如图3F所示的运算指令可以由控制器单元从寄存器单元中提取发送至运算单元,由运算单元执行该运算指令的运算,如上述运算需要执行多层运算,则由控制器单元从寄存器单元中提取运算对应的计算拓扑结构,将该计算拓扑结构发送至互联模块,由互联模块控制运算单元内的计算器的连接关系以实现上述计算拓扑结构的运算。如图3F所示的方法包括如下实施步骤:
步骤S902、获取待识别的语音信息。
本披露中,所述语音信息可为一段待识别的语音数据文件,本披露并不限定所述语音信息的格式,例如所述语音信息的格式包括但不限于mp3、wav、ogg、wma、cd等音频数据格式。
步骤S904、利用计算装置中的运算指令对所述语音信息进行语音识别处理,得到语音识别后的目标信息,所述目标信息可为文字信息。
步骤S906、输出所述目标信息。
步骤S904为计算装置对语音信息进行语音识别的中间处理过程,下面进行详细阐述。
所述中间处理过程包括但不限于预处理,优选的还可包括以下中的任一项或多项处理:语音模型处理、语言模型处理、解码器解码处理。下面进行分别阐述。
第一,系统中的预处理过程。通常预处理过程可能会涉及的算法包括以下中的任一项或多项:FFT(快速傅里叶变换)、矩形窗、汉明窗、神经网络算法等。更具体地,本披露将使用计算装置(人工神经网络芯片)中的计算单元执行矩阵乘法指令、矩阵加法指令、标量乘法指令、标量加法指令等功能完成所述FFT、矩形窗、汉明窗等算法。本披露使用计算装置,如人工神经网络芯片中的计算单元执行神经网络卷积层指令、全连接层指令、pooling(池化)层指令等功能指令完成神经网络方法。
对于各个应用场景的算法中涉及到池化(pooling)正向计算以及pooling反向训练的部分,通过采用用于执行pooling运算的装置和指令集,解决了CPU和GPU运算性能不足,前端译码开销大的问题。通过采用针对pooling运算的专用片上缓存,充分挖掘了输入神经元和权值数据的重用性,避免了反复向内存读取这些数据,降低了内存访问带宽,避免了内存带宽成为pooling运算正向运算及反向训练性能瓶颈的问题。
各个应用场景中,只要运行的算法包含pooling层的运算,都可以使用,达到上述的有益效果。
第二,系统中的语言模型和语音模型的处理。语音模型也可称为声学模型,其包括但不限于马尔科夫模型或者神经网络模型、或者n-gram等,隐马尔可夫以及n-gram的包括公式为:P(w)=P(w1)P(w2|w1)P(w3|w1,w2)P(w4|w2,w3)…P(wn|wn-1,wn-2),对于其中的每一项条件概率都可以用贝叶斯公式求出。更具体地,本披露中使用计算装置,如人工神经网络芯片中的计算单元执行矩阵乘法指令、矩阵加法指令、标量乘法指令、标量加法指令等功能指令完成所述n-gram、隐马尔科夫链等算法。本披露使用计算装置中的计算单元执行神经网络卷积层指令、全连接层指令、pooling(池化)层指令完成神经网络方法。
第三,系统中的解码器的处理。针对系统中的解码器算法,通常可包括但不限于维特比算法、束搜索算法(beam search)、A*算法、WFST等算法。其核心是对排序算法的支持,更具体地,本披露使用计算装置,如人工神经网络芯片中的计算单元执行向量排序指令、标量加法指令、标量减法指令等功能指令以完成维特比算法、束搜索算法、A*算法、WFST。
具体的,计算装置可利用上述预处理、可选地还包括其他算法模型对输入的语音信息进行语音识别,以输出识别结果后的目标信息。关于所述目标信息的输出形式本披露并不做限定,例如以文字等形式输出。
在可选实施例中,计算装置(如人工神经网络芯片)获得识别结果(即所述目标信息)的具体实施方式可以为:通过迭代算法,迭代产生所有待选文字的分数,在每一次迭代中产生所有待选文字新的分数,由此迭代完成后会生成一个时间序列上的所有文字的搜索空间,在该空间中应用解码器算法得到最终唯一的语音识别输出结果,即目标信息。关于迭代算法及目标信息本披露不做详述。
通过实施本披露实施例,能够准确、快速、全面地识别出待识别的语音信息,相比于现有技术利用通用处理器的处理,功耗更低,速度更快。
需要说明的是,上述示出的基于计算装置分别在5个应用场景下的信息处理具体实施方式,仅为示例并不构成限定。按照上述实施原理,同理还可适用于基于计算装置在其他不同场景下的信息处理的具体实施,例如物体识别、图像美化、图像分辨率重建等等应用场景下,本披露不做限定。
需要说明的是,图3A-图3F分别所示应用场景中,均可将获取待处理的信息(如待识别的影像信息、语音信息等)存放在图2A所示计算装置的存储介质中,以便计算装置在控制器单元的控制下从中获取相关运算指令对待处理的信息进行相关处理,从而得到并输出相关的结果信息,这里不在赘述。
基于上述同一披露构思,请参见图6A,是本披露实施例提供的一种终端设备的结构示意图。如图6A所示的本实施例中的终端设备可以包括:存储介质311(可选的)、寄存器单元312、互联模块313、运算单元314、控制器单元315、数据访问单元316和通信单元317;其中,所述通信单元317用于支持所述终端设备与其他终端设备或服务器进行通信,例如所述通信单元317用于与其他终端设备进行通信,接收其他设备发送的第一信息(即步骤S102)。
所述控制器单元315,用于所述终端设备的动作进行控制管理,例如所述控制器单元315执行前述所述实施例中的相关技术描述。其中,本披露中所述控制器单元315可用于:
获取第一信息,所述第一信息为终端设备待处理的信息,所述终端设备设置有计算装置;
在所述计算装置中调用运算指令对所述第一信息进行计算,得到第二信息;
输出所述第二信息。
在一些可能的实施例中,所述获取第一信息包括:
对获取的原始信息进行预处理,得到所述第一信息,所述第一信息为具备预设格式的信息,所述预处理包括以下中的至少一项:数据去重处理、数据编码处理、数据转换处理、归一化处理。
在一些可能的实施例中,所述运算指令包括以下中的至少一项:矩阵乘向量指令、向量乘矩阵指令、矩阵乘标量指令、张量运算指令、矩阵加法指令、矩阵减法指令、矩阵检索指令、矩阵加载指令、矩阵存储指令及矩阵搬运指令。
在一些可能的实施例中,当所述第一信息为语音信息时,在所述计算装置中调用运算指令对所述第一信息进行计算,得到第二信息包括:
在计算装置中调用语音识别算法,对所述语音信息进行语音识别,得到第二信息,所述第二信息为文本信息,所述语音识别算法是由语音识别指令构成的,所述语音识别指令包括运算指令。
在一些可能的实施例中,当所述第一信息为影像信息时,在所述计算装置中调用运算指令对所述第一信息进行计算,得到第二信息包括:
在计算装置中调用影像风格转换算法,对所述影像信息的风格进行转换,得到第二信息,所述第二信息与所述第一信息的风格不同,所述影像风格转换算法是由影像风格转换指令构成的,所述影像风格转换指令包括运算指令。
本披露实施例中未示出的内容,请参见前述相关实施例中的描述,这里不再赘述。
其中,控制器单元315可以是处理器或控制器,例如可以是中央处理器(英文:Central Processing Unit,CPU),通用处理器,数字信号处理器(英文:Digital Signal Processor,DSP),专用集成电路(英文:Application-Specific Integrated Circuit,ASIC),现场可编程门阵列(英文:Field Programmable Gate Array,FPGA)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本披露内容所描述的各种示例性的逻辑方框,模块和电路。所述处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等等。通信单元314以是通信接口、收发器、收发电路等,其中,通信接口是统称,可以包括一个或多个接口,例如发件客户端和发件服务器之间的接口。存储介质311可以是存储单元或存储器。
具体实现中,本披露实施例中所描述的相关功能单元可执行本披露实施例提供的所述方法实施例中所描述的实现方式,也可执行本披露实施例所描述的终端设备的实现方式,在此不再赘述。
下面介绍本披露提供的所述方法实施例所适用的一些运算指令以及执行这些运算指令对应的装置,即使用哪些装置来调用执行这些运算指令,以完成本披露所提供的方法。
具体的,以所述运算指令为卷积计算指令为例,具体如图6B示出卷积计算指令的具体处理流程。又如图6C至图6F分别示出全连接层正向运算指令、池化运算正向运算指令、池化运算反向运算指令以及批归一化正向运算指令各自在相应装置中的相关具体处理流程,本披露不做限定。
图6B是本披露实施例提供的卷积神经网络运算装置执行卷积神经网络的流程图,如图6B所示,执行卷积神经网络指令的过程包括:
在步骤S6B1,在指令存储单元的首地址处预先存入一条IO指令。
在步骤S6B2,控制器单元从指令存储单元的首地址读取该条IO指令,根据译出的控制信号,数据访问单元从存储介质读取相应的所有卷积神经网络运算指令,并将其缓存在指令存储单元中。
在步骤S6B3,控制器单元接着从指令存储单元读入下一条IO指令,根据译出的控制信号,数据访问单元从存储介质读取运算单元需要的所有数据块(例如,包括输入数据、用于作快速的激活函数运算的插值表、用于配置运算器件参数的常数表、偏置数据等)。
在步骤S6B4,控制器单元接着从指令存储单元读入下一条CONFIG指令,根据译出的控制信号,装 置配置该层神经网络计算需要的各种常数。例如,运算单元根据控制信号里的参数配置单元内部寄存器的值,所述参数包括例如激活函数需要的数据。
在步骤S6B5,控制器单元接着从指令存储单元读入下一条COMPUTE指令,根据译出的控制信号,互连模块将卷积窗口内的输入数据发给计算单元内的各计算器。
在步骤S6B6,根据COMPUTE指令译出的控制信号,互联模块将乘法计算器、加法计算器和激活计算器连接形成第一计算拓扑结构。
在步骤S6B7,乘法运算器将卷积核w与输入数据Xi执行乘法运算以后得到第一结果,将第一结果输入到加法运算器执行加法运算得到第二结果,将第二结果和偏置b执行加法运算得到第三结果,将第三结果输入到激活运算器执行激活运算得到输出结果s,将输出结果s传输至数据访问单元存储至存储介质内。其中,将第二结果和偏置b执行加法运算得到第三结果这一步骤可选,即当b为0时,不需要这个步骤。
下面通过不同的运算指令来说明如图2A所示的计算装置的具体计算方法,这里的运算指令以全连接层正向运算指令为例,该全连接层正向运算指令可以应用在神经网络中。对于全连接层正向运算指令来说,其实际需要运算的公式可以为:out=f(w1*in+b),其中,out输出神经元向量、in是输入神经元向量、b是偏置向量,w1是权值,f是激活函数。依据该实际运算即可以得到该计算拓扑结构为,乘法运算器-加法运算器-激活运算器。在实际应用中,上述偏置b也可以为0,其偏置b的具体值可以由全连接层正向运算指令来确定。
人工神经网络全连接层正向运算的指令集。指令集中包括CONFIG指令、COMPUTE指令、IO指令、NOP指令、JUMP指令和MOVE指令等,其中这些指令将在下文中进行详细阐述。
如图2A所示的计算装置执行全连接层正向运算指令的方法具体可以为:
控制单元615从寄存处单元612内提取全连接层正向运算指令、全连接层正向运算指令对应的操作域以及全连接层正向运算指令对应的第二计算拓扑结构(乘法运算器-加法运算器-(可选的)激活运算器),控制单元将该操作域传输至数据访问单元,将该第二计算拓扑结构传输至互联模块。
数据访问单元存储介质内提取该操作域对应的权值W1和偏置b,将权值W1和偏置b传输至计算单元。
计算单元的乘法运算器将权值W1与输入数据in执行乘法运算以后得到第一结果,将第一结果和偏置输入到加法运算器执行加法运算得到第二结果,将第二结果输入到激活运算器执行激活运算得到输出结果,将输出结果传输至数据访问单元存储至存储介质内。其中,每个步骤后都可以直接输出结果传输到数据访问存储至存储介质内,无需下面的步骤。另外,如果偏置b为0时候,就不需要将第一结果和偏置输入到加法运算器执行加法运算得到第二结果这一步骤。
另外,加法运算和乘法运算的顺序可以调换。
图6C示出单层人工神经网络全连接层正向运算的另一种更详细的实施方法。
在步骤S2.1,在指令存储单元处预先存入一条IO指令。
在步骤S2.2,控制器单元从指令存储单元读取该条IO指令,根据译出的控制信号,数据访问单元从存储介质读取相应的所有人工神经网络全连接层运算指令,并将其存储在指令存储单元中。
在步骤S2.3,控制器单元接着从指令存储单元读入下一条IO指令,根据译出的控制信号,数据访问单元从存储介质读取主运算单元(即激活运算器)需要的所有数据(例如,包括输入神经元向量、插值表、常数表和偏置等)至主运算单元的第一存储单元。
在步骤S2.4,控制器单元接着从指令存储单元读入下一条IO指令,根据译出的控制信号,数据访问单元从存储介质读取从运算单元(加法计算器或乘法计算器)需要的权值矩阵数据。
在步骤S2.5(可选的),控制器单元接着从指令存储单元读入下一条CONFIG指令,根据译出的控制信号,配置该层神经网络计算需要的各种常数。
在步骤S2.6,控制器单元接着从指令存储单元读入下一条全连接层正向运算指令,根据译出的控制信号,主运算单元首先通过互连模块将输入神经元向量发给各从运算单元,保存至从运算单元的第二存储单元。
在步骤S2.7,根据COMPUTE指令译出的控制信号,从运算单元的第二运算单元从第三存储单元读取权值,从第二存储单元读取输入神经元向量,完成权值和输入神经元向量的点积运算,将中间结果通过互连模块返回。
在步骤S2.8,在互连模块中,各从运算单元返回的中间结果被逐级拼成完整的中间结果向量。
在步骤S2.9,主运算单元得到互连模块的返回值,根据COMPUTE指令译出的控制信号,从第一存储单元读取偏置向量,与互连模块返回的向量通过向量加单元相加,然后激活单元对相加结果做激活,并将最后的输出神经元向量写回至第一存储单中。
在步骤S2.10,控制器单元接着从指令存储单元读入下一条IO指令,根据译出的控制信号,数据访问单元将输出神经元向量存至存储介质指定地址,运算结束。
下面通过不同的运算指令来说明如图2A所示的计算装置的具体计算方法,这里的运算指令以池化(pooling)运算指令为例,该pooling运算指令可以应用在神经网络中。pooling运算是指在神经网络的特征层中,进行局部特征的降采样运算,减少特征层的维度。pooling运算包括但不仅限于三种:maxpooling是指在kernel内,取最大值作为结果;avgpooling是指在kernel内,取平均值作为结果。minpooling是在kernel内,取最小值作为结果。指此处的kernel即pooling核,大小是参数指定的,并根据步长stride在特征层上进行滑动,进行pooling运算,得到结果。”对于pooling运算指令来说,其实际需要运算的公式可以为:out=avg(in)=Σin*1/kernel_area,其中,out输出神经元向量、in是每个kernel里的所有输入神经元向量、kernel_area为pooling核kernel的面积(kernel里的数的总数),上述pooling根据实际的算法的需求可以为average pooling,当然在实际应用中,还可以为max pooling,min pooling,或其他形式的pooling。依据该实际运算即可以得到该计算拓扑结构为,(可选的)乘法运算器-加法运算器/比较运算器-(可选的),激活运算器。
pooling指令集中包括CONFIG指令、COMPUTE指令、IO指令、NOP指令、JUMP指令和MOVE指令,其中:
CONFIG指令在每层人工神经网络计算开始前配置当前层计算需要的各种常数;例如1/kernel_area可以使用config指令配置得到。
COMPUTE指令包括pooling运算指令,其包括:
Maxpooling正向运算指令,根据该指令,装置分别从存储器(优选的高速暂存存储器或者标量寄存器)的指定地址取出指定大小的输入数据,在pooling运算部件中做Maxpooling正向运算操作,然后将输出结果写回到存储器(优选的高速暂存存储器或者标量寄存器)的指定存储地址。
Maxpooling反向训练指令,根据该指令,装置分别从存储器(优选的高速暂存存储器或者标量寄存器)的指定地址取出指定大小的输入数据,在pooling运算部件中做maxpooling反向训练操作,然后将输出结果写回到存储器(优选的高速暂存存储器或者标量寄存器)的指定存储地址。
Avgpooling正向运算指令,根据该指令,装置分别从存储器(优选的高速暂存存储器或者标量寄存器)的指定地址取出指定大小的输入数据,在pooling运算部件中做Avgpooling正向运算操作,然后将输出结果写回到存储器(优选的高速暂存存储器或者标量寄存器)的指定存储地址。
Avgpooling反向训练指令,根据该指令,装置分别从存储器(优选的高速暂存存储器或者标量寄存器)的指定地址取出指定大小的输入数据,在pooling运算部件中做Avgpooling反向训练操作,然后将输出结果写回到存储器(优选的高速暂存存储器或者标量寄存器)的指定存储地址。
Minpooling正向运算指令,根据该指令,装置分别从存储器(优选的高速暂存存储器或者标量寄存器)的指定地址取出指定大小的输入数据,在pooling运算部件中做Minpooling正向运算操作,然后 将输出结果写回到存储器(优选的高速暂存存储器或者标量寄存器)的指定存储地址。
Minpooling反向训练指令,根据该指令,装置分别从存储器(优选的高速暂存存储器或者标量寄存器)的指定地址取出指定大小的输入数据,在pooling运算部件中做Minpooling反向训练操作,然后将输出结果写回到存储器(优选的高速暂存存储器或者标量寄存器)的指定存储地址。
IO指令实现从存储介质读入计算需要的输入数据以及在计算完成后将数据存回至外部空间;
NOP指令负责清空当前装至内部所有微指令缓存队列中的微指令,保证NOP指令之前的所有指令全部指令完毕。NOP指令本身不包含任何计算操作;
JUMP指令负责控制器将要从指令存储单元读取的下一条指令地址的跳转,用来实现控制流的跳转;
MOVE指令负责将装置内部地址空间某一地址的数据搬运至装置内部地址空间的另一地址,该过程独立于运算单元,在执行过程中不占用运算单元的资源。
本披露中的寄存器可以优先选择寄存器堆。
本披露的执行pooling运算的方法包括如下几个阶段,
对于maxpooling(或者minpooling)正向运算指令,在运算单元进行正向运算之前,数据访问单元可以依据指令存储单元内存储的kernel_area的值从存储器内提取出in(kernel里的所有数),,然后将1/kernel_area和ina传输至运算单元进行正向运算,由运算单元依次完成比较每一个输入向量大小,取最大值(或者最小值)的操作,得到输出向量。对于maxpooling(或者minpooling)反向训练指令,则同时保存对应的索引向量;循环读取新的pooling核kernel的输入向量,做上述比较大小的运算操作,得到新的kernel的输出向量,直至本层pooling运算结束。反向训练时,运算单元根据正向运算时保存的索引向量,通过数据访问单元将输入梯度向量对应输出至相应的存储位置,得到输出梯度向量。或者对于avgpooling正向运算指令,数据访问单元可以依据指令存储单元内存储的kernel_area从存储器内提取出in(kernel里的所有数),,然后将该1/kernel_area和in传输至运算单元进行正向运算,由运算模块4依次完成累加每一个输入向量;然后在运算模块4中完成乘以1/kernel_area运算,得到输出向量;循环读取新的kernel的输入向量,做上述累加、乘法运算操作,得到新的kernel的输出向量,直至本层pooling运算结束;或者对于avgpooling反向训练指令,运算模块4将输入梯度向量乘以1/kernel_area,通过数据访问单元3将输入梯度向量对应输出至相应的存储位置,得到输出梯度向量。
控制单元615从寄存处单元612内提取pooling运算指令、pooling运算指令对应的操作域,,控制单元将该操作域传输至数据访问单元。
数据访问单元存储器内提取该操作域对应的in和1/kernel_area,将in和1/kernel_area传输至计算单元。
计算单元接收数据,执行pooling指令。
举例说明对于avgpooling正向运算指令,计算单元的乘法运算器将输入数据in与1/kernel_area进行乘法运算后得到第一结果,将第一结果输入到加法器执行加法运算得到第二结果,(优选的),再将第二结果输入到激活运算器里进行激活运算。其他的指令不再赘述。
kernel_area图6D示出根据一个实施例的pooling运算正向运算流程图。该流程图描述利用本披露的装置和指令集实现的一种pooling运算正向运算的过程。
在步骤S1,在指令存储单元的首地址处预先存入第一IO指令。
在步骤S2,运算开始,控制单元从指令存储单元的首地址读取该条IO指令,根据译出的微指令,数据访问单元从存储器读取相应的所有pooling运算指令,并将其缓存在存储器中。
在步骤S3,控制单元接着从指令存储单元读入第二IO指令,根据第二IO指令译出的微指令,数据访问单元从存储器读取运算单元需要的所有数据(例如,包括输入神经元向量、插值表、常数表等)至运算单元的存储器。
在步骤S4,控制器单元接着从指令存储单元读入CONFIG指令,根据CONFIG指令译出的微指令,装置配置该层pooling运算需要的各种常数。例如,运算单元根据微指令里的参数配置单元内部寄存器的值,所述参数例如包括本层计算的精度设置、激活函数的数据(例如本层计算的精度位,avgpooling时pooling核大小的倒数1/kernel_area等)
在步骤S5,根据COMPUTE指令译出的微指令,运算单元的加法运算器从神经元存储单元读取输入神经元向量和中间结果向量,完成对输入神经元向量的运算(avgpooling中是累加输入神经元向量,然后与1/kernel_area相乘,maxpooling是比较大小,求得最大值),并将最后的输出神经元向量写回至神经元存储单元。
在步骤S6,控制单元接着从指令存储单元读入第三IO指令,根据第三IO指令译出的微指令,数据访问单元将神经元存储单元中的输出神经元向量存至存储介质指定地址,运算结束。
图6E是示出根据一个实施例的pooling运算反向训练流程图。该流程图描述利用本披露的装置和指令集实现一种pooling运算反向训练的过程。
在步骤T1,在指令存储单元的首地址处预先存入第一IO指令。
在步骤T2,运算开始,控制器单元从指令存储单元的首地址读取该条IO指令,根据译出的微指令,数据访问单元从存储介质读取与该pooling运算反向训练有关的所有指令,并将其缓存在指令存储单元中。
在步骤T3,控制器单元接着从指令存储单元读入第二IO指令,根据第二IO指令译出的微指令,数据访问单元从存储介质读取运算单元需要的所有数据至运算单元的神经元存储单元,所述数据包括输入梯度向量和maxpooling时需要的索引向量index。
在步骤T4,控制器单元接着从指令存储单元读入CONFIG指令,运算单元根据CONFIG指令译出的微指令里的参数配置运算单元内部寄存器的值,包括该层pooling运算需要的各种常数,avgpooling时pooling核大小的倒数1/kernel_area、本层计算的精度设置、更新权值时的学习率等。
在步骤T5,根据COMPUTE指令译出的微指令,运算单元的加法计算器从神经元存储单元读取输入梯度向量和maxpooling时需要的索引向量index,完成乘法运算(avgpooling中是与1/kernel_area相乘,maxpooling是与索引向量index相乘),传递输出梯度向量,得到下一层反向训练的输入梯度向量,将其写回至神经元存储单元。
在步骤T6,控制器单元接着从指令存储单元读入第三IO指令,根据第三IO指令译出的微指令,数据访问单元将神经元存储单元中的输出梯度向量存至存储介质指定地址,运算结束。
对于多层人工神经网络的pooling运算,其实现过程与单层神经网络的pooling运算类似,当上一层人工神经网络执行完毕后,下一层的运算指令会将运算单元中计算出的输出神经元向量或输出梯度向量作为下一层训练的输入神经元向量或输入梯度向量进行如上的计算过程,指令中的权值地址和权值梯度地址也会变更至本层对应的地址。
通过采用用于执行pooling运算的装置和指令集,解决了CPU和GPU运算性能不足,前端译码开销大的问题。有效提高了对多层人工神经网络pooling运算的支持。
对于各个应用场景的算法中涉及到池化(pooling)正向计算以及pooling反向训练的部分,通过采用用于执行pooling运算的装置和指令集,解决了CPU和GPU运算性能不足,前端译码开销大的问题。通过采用针对pooling运算的专用片上缓存,充分挖掘了输入神经元和权值数据的重用性,避免了反复向内存读取这些数据,降低了内存访问带宽,避免了内存带宽成为pooling运算正向运算及反向训练性能瓶颈的问题。
各个应用场景中,只要运行的算法包含pooling层的运算,都可以使用,达到上述的有益效果。
通过采用针对pooling运算的专用片上缓存,充分挖掘了输入神经元和权值数据的重用性,避免了反复向内存读取这些数据,降低了内存访问带宽,避免了内存带宽成为pooling运算正向运算及反向训 练性能瓶颈的问题。
下面通过不同的运算指令来说明如图2A所示的计算装置的具体计算方法,这里的运算指令以批归一化(batch normalization)运算指令为例,该batch normalization运算指令可以应用在神经网络中。对于batch normalization运算指令来说,其实际需要运算的公式可以为:out=(in-middle1)/middle2,其中,out输出神经元向量、in是输入神经元向量、middle1,middle2是运算过程中的中间值,middle1,middle2的值可以相同也可以不同。依据该实际运算即可以得到该计算拓扑结构为,加法运算器-乘法运算器。或者实际需要运算的公式可以为:out=(in/middle2-middle1/middle2,这种情况下,可以得到该计算拓扑结构为乘法运算器-加法运算器
batch normalization指令集中包括CONFIG指令、batch normalization指令、IO指令、NOP指令、JUMP指令和MOVE指令,其中:
CONFIG指令在batch normalization计算开始前配置当前层计算需要的各种常数;
batch normalization指令完成batch normalization的计算;
关于其它指令可参见前述实施例中的相关阐述,这里不再赘述。
如图2A所示的计算装置执行batch normalization的具体方法可以包括:
控制单元615从寄存器单元612内提取batch normalization运算指令、batch normalization运算指令对应的操作域,控制单元将该操作域传输至数据访问单元。
数据访问单元存储介质内提取该操作域对应的-middle1和1/middle2,将middle传输至计算单元。
运算单元执行batch normalization运算指令得到输出结果,将输出结果传输至数据访问单元存储至存储介质内。
具体的,运算单元执行batch normalization运算指令得到输出结果的方法可以包括:运算单元的加法运算器将输入数据in与-middle1执行加法运算以后得到第一结果,将第一结果和1/middle2输入到乘法运算器执行乘法运算得到输出结果。
图6F示出根据一个实施例的训练过程中的batch normalization正向运算流程图。该流程图描述利用如图2A的装置和指令集实现batch normalization运算的正向运算的过程。
在步骤F1,在指令存储单元的首地址处预先存入一条IO指令。
在步骤F2,运算开始,控制器单元从指令存储器的首地址读取该条IO指令,根据译出的微指令,数据访问单元从外部地址空间读取相应的所有batch normalization正向运算指令,并将其缓存在指令存储单元中。
在步骤F3,控制器单元接着从指令存储单元读入下一条IO指令,根据译出的微指令,数据访问单元从外部地址空间读取运算单元需要的所有数据(例如,包括输入神经元向量、batch大小、学习参数alpha、beta、极小值eps、均值、方差等)至运算单元的神经元缓存单元。
在步骤F4,控制器单元接着从指令存储单元读入下一条CONFIG指令,根据译出的微指令,装置配置batch normalization运算。例如,本次正向运算过程是使用计算好的均值方差,还是根据输入计算均值方差。
在步骤F5,控制器单元接着从指令存储单元读入下一条COMPUTE指令,根据译出的微指令,运算单元从神经元缓存单元读取输入神经元向量,计算输入神经元的均值和方差存入中间值缓存单元中。
在步骤F6,运算单元根据COMPUTE指令译出的微指令将输入神经元缓存单元和中间值缓存单元中的数据完成减去均值后除以方差与极小量eps和的平方根操作,将结果存回中间值缓存单元。
在步骤F7,运算单元根据COMPUTE指令译出的微指令,从神经元缓存单元读取学习参数alpha,与中间值相乘后加上学习参数beta返回至神经元缓存。
在步骤F8,控制器单元接着从指令存储单元读入下一条IO指令,根据译出的微指令,数据访问单元将神经元缓存单元中的输出神经元向量存至外部地址空间指定地址,运算结束。
对于使用过程中的batch normalizaiton运算的正向过程与训练过程中的batch normalization运算的正向过程区别在于步骤F4中配置使用常数均值和方差,不需要每次动态计算,也就是去掉了步骤F5。其他与图2F相同。
对于batch normalization运算的反向过程与上述的正向过程类似。区别在于操作的数据不同。假设一个像素点传入的梯度为dl/dY,反向传出的梯度是dl/dx,正向过程输出为Y,其余参数表示含义与正向过程相同,则经过batch normalization反向传播出的梯度dl/dx=(alpha/sqrt(var(x)+eps))*(dl/dY-mean(dl/dY)-mean(dl/dY*Y)*Y),其中mean是取均值操作。学习参数的alpha的梯度:dl/dalpha=(Σdl/dY)*Y,学习参数beta的梯度:dl/dbeta=Σdl/dY,通过这两个梯度更新学习参数的数值。batch normalization的反向过程通过运算单元归一化运算梯度数据例如取均值、方差等。之后运算单元并行的完成公式中其余操作。
通过采用用于执行batch normalization运算的装置和指令集,解决了CPU和GPU运算性能不足,前端译码开销大的问题。有效提高了对batch normalization正反向运算的支持。
通过采用针对batch normalization运算的专用片上缓存,充分挖掘了输入神经元和中间数据的重用性,避免了反复向内存读取这些数据,降低了内存访问带宽,避免了内存带宽成为多层人工神经网络正向运算性能瓶颈的问题。
通过采用针对batch normalization运算的专用运算单元较好的平衡了并行和串行之间的关系。避免了CPU架构只是串行运算,数据规模较大时速度较慢,GPU架构只是并行运算,处理不好归一化运算的弱点。本披露中数据存储单元和运算单元相配合可以较好的平衡归一化串行运算和并行运算。
本披露执行的batch normalization操作能够应用在神经网络算法中,也可以使用在神经网络领域的计算装置内,例如如图1、图1A、图4A、图6A所示的计算装置,人工神经网络正向运算的装置或用于稀疏连接的人工神经网络计算装置以及其他的神经网络领域的计算装置、芯片或处理器内。当然在实际应用中,还可以应用在中都被使用,本披露执行的batch normalization操作可以提高算法或计算装置识别精度与算法鲁棒性。
需要说明的是,上述计算装置的计算指令可以为一个或多个,即该计算装置可以执行一个或多个上述的计算指令,该计算指令包括但不限于上述的卷积指令、全连接指令、batch normalization指令或pooling指令,上述指令的具体结构以及如何应用可以参见如图2A、图6B、图6C、图6D、图6E和图6F实施例描述,可选的,除了上述指令,该计算装置能够执行的计算指令具体可以包括:
向量内积指令(VP)。根据该指令,装置分别从存储器(优选的高速暂存存储器或者标量寄存器)的指定地址取出指定大小的向量数据,在向量计算单元中将两向量进行内积(张量)运算,并将结果写回。优选的,结果写会至存储器(优选的高速暂存存储器或者标量寄存器)得指定地址。
向量外积指令(TENS)。根据该指令,装置分别从存储器(优选的高速暂存存储器或者标量寄存器)的指定地址取出指定大小的向量数据,在向量计算单元中将两向量进行外积运算,并将结果写回。优选的,并将结果写回至存储器(优选的高速暂存存储器或者标量寄存器)的指定地址;
向量四则运算,包括:向量加标量指令(VAS),根据该指令,装置从存储器(优选的高速暂存存储器或者标量寄存器)的指定地址取出指定大小的向量数据,从存储器标量寄存器的指定地址取出标量数据,在标量运算单元中将向量的每一个元素加上该标量值,并将结果写回并将结果写回。优选的,并将结果写回至存储器(优选的高速暂存存储器或者标量寄存器)的指定地址;
标量减向量指令(SSV)。根据该指令,装置从存储器(优选的高速暂存存储器或者标量寄存器)标量寄存器的指定地址取出标量数据,从存储器(优选的高速暂存存储器或者标量寄存器)的指定地址取出向量数据,在向量计算单元中用该标量减去向量中的相应元素,并将结果写回并将结果写回。优选的,并将结果写回存储器(优选的高速暂存存储器或者标量寄存器)的指定地址;
向量除法指令(VD)。根据该指令,装置从存储器(优选的高速暂存存储器或者标量寄存器)的指 定地址取出分别取出指定大小的向量数据,在向量运算单元中将两向量对位相除,并将结果写回并将结果写回。优选的,并将结果写回至存储器(优选的高速暂存存储器或者标量寄存器)的指定地址;
标量除向量指令(SDV)。根据该指令,装置从存储器(优选的高速暂存存储器或者标量寄存器)标量寄存器的指定位置取出标量数据,从存储器(优选的高速暂存存储器)的指定位置取出指定大小的向量数据,在向量计算单元中用标量分别除以向量中的相应元素,并将结果写回并将结果写回。优选的,并将结果写回至存储器(优选的高速暂存存储器或者标量寄存器)的指定位置;
向量逻辑指令,包括:
向量间与指令(VAV)。根据该指令,装置从存储器(优选的高速暂存存储器或者标量寄存器)的指定地址取出分别取出指定大小的向量数据,在向量运算单元中将两向量对位相与,并将结果写回并将结果写回。优选的,并将结果写回至存储器(优选的高速暂存存储器或者标量寄存器)的指定地址;
向量内与指令(VAND)。根据该指令,装置从存储器(优选的高速暂存存储器或者标量寄存器)的指定地址取出指定大小的向量数据,在向量运算单元中向量中每一位相与,并将结果写回并将结果写回。优选的,并将结果写回至存储器(优选的高速暂存存储器或者标量寄存器)标量寄存器的指定地址;
向量间或指令(VOV)。根据该指令,装置从存储器(优选的,高速暂存存储器)的指定地址取出分别取出指定大小的向量数据,在向量运算单元中将两向量对位相或,并将结果写回并将结果写回。优选的,并将结果写回至存储器(优选的,高速暂存存储器或者标量寄存器)的指定地址;
向量内或指令(VOR)。根据该指令,装置从存储器(优选的,高速暂存存储器或者标量寄存器)的指定地址取出指定大小的向量数据,在向量运算单元中向量中每一位相或,并将结果写回并将结果写回。优选的,并将结果写回至存储器(优选的,高速暂存存储器或者标量寄存器)标量寄存器的指定地址;
超越函数指令,根据该指令,装置从存储器(优选的,高速暂存存储器或者标量寄存器)的指定地址取出指定大小的向量数据,在运算单元中对向量数据做超越函数运算,并将结果写回并将结果写回。优选的,并将结果写回至存储器(优选的高速暂存存储器或者标量寄存器)存储单元的指定地址。优选的,将结果写回至存储器(优选的,高速暂存存储器或者标量寄存器)的指定地址。
向量比较运算指令,包括
大于等于运算指令(GE),根据该指令,装置可以直接从指令中或者通过访问指令提供的寄存器存储器(优选的,高速暂存存储器或者标量寄存器)的编号号来获得指令的参数,包括向量的长度、两向量的起始地址以及输出向量的存储地址,然后读取两向量数据,在向量比较运算单元中对向量中所有位置上的元素进行比较,若某位置行前一向量的值大于等于后一向量的值,则将比较结果向量在该位置上的值置为1,否则置为0。最后将比较结果写回至存储器(优选的,高速暂存存储器或者标量寄存器)的指定存储地址。
小于等于运算指令(LE),根据该指令,装置可以直接从指令中或者通过访问指令提供的存储器(优选的,高速暂存存储器或者标量寄存器)的编号寄存器号来获得指令的参数,包括向量的长度、两向量的起始地址以及输出向量的存储地址,然后读取两向量数据,在向量比较运算单元中对向量中所有位置上的元素进行比较,若某位置行前一向量的值小于等于后一向量的值,则将比较结果向量在该位置上的值置为1,否则置为0。最后将比较结果写回到存储器(优选的,高速暂存存储器或者标量寄存器)值的指定存储地址。
大于运算指令(GT),根据该指令,装置可以直接从指令中或者通过访问指令提供的存储器(优选的,高速暂存存储器或者标量寄存器)的编号寄存器号来获得指令的参数,包括向量的长度、两向量的起始地址以及输出向量的存储地址,然后读取两向量数据,在向量比较运算单元中对向量中所有位置上的元素进行比较,若某位置行前一向量的值大于后一向量的值,则将比较结果向量在该位置上的值置为1,否则置为0。最后将比较结果写回值到存储器(优选的高速暂存存储器或者标量寄存器)的指定存储地址。
小于运算指令(LT),根据该指令,装置可以直接从指令中或者通过访问指令提供的存储器(优选的,高速暂存存储器或者标量寄存器)的编号寄存器号来获得指令的参数,包括向量的长度、两向量的起始地址以及输出向量的存储地址,然后读取两向量数据,在向量比较运算单元中对向量中所有位置上的元素进行比较,若某位置行前一向量的值小于后一向量的值,则将比较结果向量在该位置上的值置为1,否则置为0。最后将比较结果写回到存储器(优选的,高速暂存存储器或者标量寄存器)值的指定存储地址。
等于运算指令(EQ),根据该指令,装置可以直接从指令中或者通过访问指令提供的存储器(优选的高速暂存存储器或者标量寄存器)的编号寄存器号来获得指令的参数,包括向量的长度、两向量的起始地址以及输出向量的存储地址,然后读取两向量数据,在向量比较运算单元中对向量中所有位置上的元素进行比较,若某位置行前一向量的值等于后一向量的值,则将比较结果向量在该位置上的值置为1,否则置为0。最后将比较结果写回值到存储器(优选的,高速暂存存储器或者标量寄存器)的编号的指定存储地址。
不等于运算指令(UEQ),根据该指令,装置可以直接从指令中或者通过访问指令提供的存储器(优选的,高速暂存存储器或者标量寄存器)的编号寄存器号来获得指令的参数,包括向量的长度、两向量的起始地址以及输出向量的存储地址,然后读取两向量数据,在向量比较运算单元中对向量中所有位置上的元素进行比较,若某位置行前一向量的值不等于后一向量的值,则将比较结果向量在该位置上的值置为1,否则置为0。最后将比较结果写回值到存储器(优选的,高速暂存存储器或者标量寄存器)的指定存储地址。
向量最大值指令(VMAX)。根据该指令,装置从存储器(优选的,高速暂存存储器或者标量寄存器)高速暂存存储器的指定地址取出指定大小的向量数据,从中选出最大的元素作为结果,并将结果写回并将结果写回。优选的,并将结果写回至存储器(优选的,高速暂存存储器或者标量寄存器)标量寄存器的指定地址;
向量最小值指令(VMIN)。根据该指令,装置从存储器(优选的,高速暂存存储器或者标量寄存器)高速暂存存储器的指定地址取出指定大小的向量数据,从中选出最小的元素作为结果,并将结果写回并将结果写回。优选的,并将结果写回至存储器(优选的,高速暂存存储器或者标量寄存器)标量寄存器的指定地址;
循环移位运算指令:根据该指令,装置可以直接从指令中或者通过访问指令提供的存储器(优选的,高速暂存存储器或者标量寄存器)的编寄存器号来获得指令的参数,然后在向量移位单元(可以是独立的向量移位单元也可以是使用计算单元)中进行循环移位移位,并将移位后的结果写回至存储器(优选的,高速暂存存储器或者标量寄存器)高速暂存存储器的指定存储地址。循环移位运算指令格式如图3所示,包含四个操作域,向量的起始地址和长度,移位步长,以及输出向量的存储地址,
随机向量生成指令,根据该指令,装置从指令或从存储器(优选的,高速暂存存储器或者标量寄存器)寄存器中读取一个或多个随机分布参数,以及要生成的随机向量的大小和存储地址,然后在随机向量生成单元中生成服从随机分布的随机向量,并将生成的随机向量结果写回至指定的存储器(优选的,高速暂存存储器或者标量寄存器)的存储地址。
随机向量生成指令具体可以为:
均匀分布指令(UNIF),根据该指令,装置从指令或从存储器(优选的,高速暂存存储器或者标量寄存器)寄存器中读取均匀分布的上界参数和下界参数,以及要生成的随机向量的大小和存储地址,然后在随机向量生成单元中生成服从该均匀分布的随机向量,并将生成的随机向量结果写回至指定的存储器(优选的,高速暂存存储器或者标量寄存器)的存储地址。
高斯分布指令(GAUS),根据该指令,装置从指令或从寄存器存储器(优选的,高速暂存存储器或者标量寄存器)堆中读取高斯分布的均值参数和方差参数,以及要生成的随机向量的大小和存储地址, 然后在随机向量生成单元中生成服从该高斯分布的随机向量,并将生成的随机向量结果写回至指定的存储器(优选的,高速暂存存储器或者标量寄存器)的存储地址。
上述指令的格式示意图如图7A所示,神经网络运算指令的格式示意图如7B所示,矩阵运算指令的格式示意图如图7C所示;向量运算指令的格式示意图如图7D所示;矩阵-向量运算指令的格式示意图如图7E所示。需要说明的是,上述指令的格式示意图仅仅只是一种可能存在的实施例,本披露对上述指令的格式并不限定在上述图示中的表现形式。
本披露实施例还提供一种计算机存储介质,其中,该计算机存储介质存储用于电子数据交换的计算机程序,该计算机程序使得计算机执行如上述方法实施例中记载的任何一种矩阵计算方法的部分或全部步骤。
本披露实施例还提供一种计算机程序产品,所述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,所述计算机程序可操作来使计算机执行如上述方法实施例中记载的任何一种矩阵计算方法的部分或全部步骤。
其中,上述实施例中人工神经网络运算装置可以通用的集成有DMA、控制单元的计算器件。人工神经网络运算装置还可以包括通用计算器件,例如通用的处理器,上述存储介质的具体实现形式可以是存储装置、片上存储介质、内存或存储单元等;指令存储单元的具体实现形式可以是DMA等;运算单元的具体实现形式可以是主运算模块、从运算模块、离散数据运算单元或连续数据运算单元等;缓存单元的具体实现形式可以是指令缓存、输入神经元缓存、权值缓存、输出神经元缓存、指令缓存单元、支持离散数据表示的神经元缓存单元或支持离散数据表示的权值缓存单元等;本披露实施例不作限制。
本披露提出一种数据发布装置,包括:
一个或多个中心节点,其为所述片上网络的通信数据中心,用于向所述多个叶子节点进行通信数据的广播或多播;
多个叶子节点,其为所述片上网络的通信数据节点,用于向所述中心叶子节点进行通信数据的传递;
转发器模块,用于连接所述中心节点与所述多个叶子节点,通信数据通过所述转发器模块进行转发;
将所述多个叶子节点分为N组,所述中心节点通过所述转发器模块单独与每一组叶子节点进行通信连接。
可选的,每组中叶子节点的个数相同。一般技术人员也可以理解每组中叶子节点的个数也可以不同。
可选的,每组叶子节点构成的通信结构具有自相似性。这种情况下,数据发布装置具有分形树网络结构。一般技术人员也可以理解,每组叶子节点构成的通信结构有其他的结构,即不局限在自相似性的结构
可选的,所述多个叶子节点与所述中心节点通过多层所述转发器模块以完全多叉树方式进行通信连接。
在本披露的一个实施例方式中是,上述中心节点或叶子节点具体可以包括如图2A中的计算装置、如图1所示的计算装置或如图6A所示的计算装置,当然在实际应用中,上述中心节点或叶子节点还可以包含神经网络领域的其他类型的计算设备或芯片,例如不同位宽的处理器或包含传输装置的计算芯片、稀疏连接的人工神经网络计算装置或计算装置等等。当然在其他技术场景中,上述中心节点或叶子节点也可以称为计算单元。上述中心节点与叶子节点可以通过互联电路的数据处理装置连接。
每个节点包括本地高速缓存结构,用于存储所述中心节点发布数据的子集;
每个叶子节点均有id标识,且所述id标识从完全多叉树的拓扑一侧按序依次增加序号。
所述数据发布装置共享一个时钟信号。
所述转发器模块包括本地高速缓存结构,用于存储数据。
本披露还提出一种利用所述数据发布装置的数据发布方法,通过所述中心节点将通信数据向所述多个叶子节点进行发布,其中,数据发送方准备好发送数据后,发送数据有效信号,并将数据置于总线; 数据接收方准备好接收数据后,发送数据准备接收信号;当所述数据有效信号与所述数据准备接收信号双方检测到后,数据发送方认为数据已经发出,且被数据接收方接收。
当从所述中心节点将通信数据向所述多个叶子节点之间进行广播时,首先数据通过握手协议从所述中心节点进入与所述中心节点直接相连的所述转发器模块的局部缓存中暂时存储,每次握手协议成功后,进入下一层中间转发器模块局部缓存中暂时存储,最后输入与所述叶子节点直接相连的转发器模块,并由转发器模块分别发布给与其相连的一组叶子节点。
如果下一时钟节拍数据发送方与数据接收方握手协议成功,则数据以流水方式进入数据接收方的局部缓存中存储;如果握手协议不成功,则数据在当前层的局部缓存中保存,且使得当前层作为上一层的数据接收方,并停止发送数据准备接收信号,使得当前层的局部缓存中的数据停止更新,数据一直保存在当前层,直到握手协议成功。
当所述中心节点将通信数据向所述多个叶子节点之间进行多播时,首先数据通过握手协议从所述中心节点进入与所述中心节点直接相连的所述转发器模块的局部缓存中暂时存储,每次握手协议成功后,进入下一层中间转发器模块局部缓存中暂时存储,最后输入与所述叶子节点直接相连的转发器模块,并由转发器模块分别发布给与其相连的一组叶子节点。
在接收的数据时,所述叶子节点根据与其相对应的id标识选取预设带宽的数据。
本披露还提出一种包含所述数据发布装置的控制装置。
本披露还提出一种包含所述控制装置的智能芯片。
下面结合附图对本披露做进一步的详细说明,以令本领域技术人员参照说明书文字能够据以实施。
附图7F为本披露的一个实施例中使用h-tree连接的16+1个核的片上多核结构示意图,其中16和1只是作为举例,没有进行特别限定。一般人也可以理解是2n+m个核,或者yn+m个核。h树的根节点为central tile,其为数据发布的起点;h树的叶子节点为leaf tile,其为数据发布的终点;其余的中间节点为hub,用于传输并分发数据;
将图中16个leaf tiles分为8组,每组中leaf tile的个数均为2,所述hub通过所述转发器模块单独与每一组leaf tile进行通信连接,每组leaf tile构成的通信结构具有自相似性,所述多个leaf tile与所述central tile通过多层所述转发器模块以完全二叉树方式进行连接;此设备实现了从一个数据中心以广播或者多播的方式向处理单元发布数据的情况。
附图8表示了hub结构示意图,hub由hub_one_to_two模块构成,hub_one_to_two将一组全带宽的输入数据20分成两组全带宽的数据21和22输出,用于从central tile到leaf tile的传输。
如图9所示,当标记为310的hub_one_to_two模块已经将数据与数据有效信号发至总线上,且标记为320的数据接收方0与标记为330的数据接收方1已经将数据准备接收信号发至总线时,此时握手协议才算成功:此拍310认为数据接收方,即320和330,已经接收数据,而下一拍320和330将此拍总线上的数据存入自己的缓冲区。
如图7F所示,标记410的central tile广播数据来初始化全部的leaf tile,此时所有hub和leaf tile的局部缓存均为空,其数据准备接收信号均为高,此时与410直接相连的标记为420的hub0_0其数据准备接收信号同样为高。在第一拍时,410准备好数据,将其和数据有效信号置高,由于标记420的hub0_0此时的数据准备接收信号为高,410与420握手成功,在第二拍时,420将数据从总线存入其局部缓存中暂时存储,由于第二拍时,420的局部缓存中已经存有数据,它将数据及其有效信号发送至向下一级430与431方向的总线上,而此时标记为430的hub1_0与标记为431的hub1_1的数据准备接收信号也为高,当拍420与下一层的430和431握手成功,在第三拍时,430与431将数据从总线存入其局部缓存中暂时存储,依次执行,数据每一拍都从上一层向下一层行进一步。在此实例中,以430的hub1_0至标记为460的leaf tile0分支为例,在第四拍时,数据流入标记为440的hub2_0的局部缓存中暂时存储;在第五拍时,数据流入标记为450的hub3_0的局部缓存中暂时存储;在第六拍是,450 通过两个输入端口在握手协议成功后分别将全带宽的数据存储到与其相连的一组leaf tile的局部缓存中,此时数据到达标记为460的leaf tile0。由此,在数据通路顺畅的情况下,数据的按层级流水传输得以保证。
如图10所示,此一实例以hub1_0作例,当如下情况发生时,数据将滞留在hub中,在第一拍时,标记为520的hub1_0收到来自标记为510的hub0_0的数据,此时,520将数据与其数据有效信号置于向下一层530与531方向的总线上。现设置情景如下,此时标记为530的hub2_0与标记为531的hub2_1此时并未发出数据准备信号,并在之后时间内一直保持这样的状况,此时由于520与下一层的530和531握手不成功,520的数据无法传输给下一级530与531,并滞留于520的局部缓存中,此时520无法发送数据准备接收信号,在之后的时间内,由于510的局部缓存为空,其又可以接收新的数据,但由于520并未发送数据准备接收信号,导致520与510握手不成功,即510的数据无法发送至520,保证了520的局部缓存中的数据的安全性,从而,使得数据传输的可靠性得以实现。
如图10所示,此一实例以hub1_0作例,当如下情况发生时,hub将可以流水传输数据,在第一拍时,标记为520的hub1_0收到来自标记为510的hub0_0的数据,此时,520将数据与其数据有效信号置于向下一层530与531方向的总线上。现设置情景如下,此时标记为530的hub2_0与标记为531的hub2_1此时发出数据准备信号,并在之后时间内一直保持这样的状况,此时由于520与下一层的530和531握手成功,520的数据传输给下一级530与531,此时520已经可以发送数据准备接收信号,若此时510的局部缓存已经准备好新的数据,并将数据与与其数据有效信号置于向520方向的总线上,在当拍,由于520发送数据准备接收信号,520与510握手成功,在第二拍,520将510传输过来的数据存于局部缓存中,并将数据及其有效信号置于向下一层530与531方向的总线上,由此,可见,hub在数据通路舒畅即数据源充足的情况下,可以进行流水传输数据。
如图11所示,假设有16个leaf tile,将h树以完全二叉树的拓扑展开,hub为非叶节点,而leaf tile为叶节点,将在树中高度相同的节点都从左到右依次增序,hub以其层数与序号相结合命名,如标记610为hub0_0,即第一层的0号节点,标记620为hub1_0,即第二层的0号节点,标记621为hub1_1,即第二层的1号节点。
如图11所示,在一实施例中,标记60的central tile多播数据来初始化全部的leaf tile,此时所有hub和leaf tile的局部缓存均为空,其数据准备接收信号均为高,即数据通路顺畅,按数据流水传输,在第一拍时,60与610握手成功,在第二拍时,610将数据从总线存入其局部缓存中暂时存储,当拍610与下一层的620和621握手成功,在第三拍时,620与621将数据从总线存入其局部缓存中暂时存储,当拍620与下一层的630和631握手成功,621与下一层的632和633握手成功,在第四拍时,630,631,632,633将数据从总线存入其局部缓存中暂时存储,630与下一层的640和641握手成功,631与下一层的642和643握手成功,632与下一层的644和645握手成功,633与下一层的646和647握手成功,在第五拍时,640,641,642,643,644,645,646,647将数据从总线存入其局部缓存中暂时存储,640与下一层的650和651握手成功,641与下一层的652和653握手成功,642与下一层的654和655握手成功,643与下一层的656和657握手成功,644与下一层的658和659握手成功,645与下一层的65a和65b握手成功,646与下一层的65c和65d握手成功,647与下一层的65e和65f握手成功,在第六拍时,数据同时存储至所有leaf tile,650,651,652,653,654,655,656,657,658,659,65a,65b,65c,65e,65f的局部缓存中,由此可见,数据从中心向叶子节点广播的数据在数据通路顺畅的情况下可以同时到达,数据的同步性得以实现。
在上一实例中,数据到达每个leaf tile时都是全带宽的,假设如图12所示,每个leaf tile的预设带宽均为16位数据,则其可以按照其id序号从全带宽的数据中取得对自己多播的数据,数据在全带宽中的位置为[id*16:id*16+15]。如id序号为15的数据D0,位于data[255:240],而id序号为0的数据D0,位于data[15:0]。
图13为本披露的一个实施例中使用x-tree连接的64+1个核的片上多核结构示意图,x树的根节点为central tile,其为数据发布的起点;x树的叶子节点为leaf tile,其为数据发布的终点;其余的中间节点为hub,用于传输并分发数据;将图中64个leaf tiles分为16组,每组中leaf tile的个数均为4,所述hub通过所述转发器模块单独与每一组leaf tile进行通信连接,每组leaf tile构成的通信结构具有自相似性,所述多个leaf tile与所述central tile通过多层所述转发器模块以完全四叉树方式进行连接;此设备实现了从一个数据中心以广播或者多播的方式向处理单元发布数据的情况。
图14表示了hub结构示意图,hub由hub_one_to_four模块构成,hub_one_to_four将一组全带宽的输入数据800分成四组全带宽的数据801、802、803和804输出,用于从central tile到leaf tile的传输。
如图15所示,标记A10的central tile广播数据来初始化全部的leaf tile,此时所有hub和leaf tile的局部缓存均为空,其数据准备接收信号均为高,此时与A10直接相连的标记为A20的hub0_0其数据准备接收信号同样为高。在第一拍时,A10准备好数据,将其和数据有效信号置高,由于标记A20的hub0_0此时的数据准备接收信号为高,A10与A20握手成功,在第二拍时,A20将数据从总线存入其局部缓存中暂时存储,由于第二拍时,A20的局部缓存中已经存有数据,它将数据及其有效信号发送至向下一级A30、A31、A32、A33方向的总线上,而此时标记为A30的hub1_0、标记为A31的hub1_1、标记为A32的hub1_2、标记为A33的hub1_3的数据准备接收信号也为高,当拍A20与下一层的A30、A31、A32、A33握手成功,在第三拍时,A30、A31、A32、A33将数据从总线存入其局部缓存中暂时存储,依次执行,数据每一拍都从上一层向下一层行进一步。在此实例中,以A33的hub1_3至标记为A50的leaf tile48分支为例:在第四拍时,数据流入标记为A40的hub2_12的局部缓存中暂时存储;在第五拍时,A40通过四个输入端口在握手协议成功后分别将全带宽的数据存储到与其相连的一组,即4个leaf tile的局部缓存中,包括A50、A51、A52、A53;此时数据到达标记为A50的leaf tile48。由此,在数据通路顺畅的情况下,数据的按层级流水传输得以保证。
如图13所示,假设有64个leaf tile与一个central tile,通过x树以完全四叉树为拓扑连接,hub为非叶节点,而leaf tile为叶节点,将在树中高度相同的节点都逆时针依次增序,hub以其层数与序号相结合命名,如标记910为hub0_0,即第一层的0号节点,标记920为hub1_0,即第二层的0号节点,标记921为hub1_1,即第二层的1号节点。
如图13所示,在一实施例中,标记90的central tile多播数据来初始化全部的leaf tile,此时所有hub和leaf tile的局部缓存均为空,其数据准备接收信号均为高,即数据通路顺畅,按数据流水传输,在第一拍时,90与910握手成功;在第二拍时,910将数据从总线存入其局部缓存中暂时存储,当拍910与下一层的920、921、922和923握手成功;在第三拍时,920、921、922和923将数据从总线存入其局部缓存中暂时存储,当拍920与下一层的930、931、932和933握手成功,921与下一层的934、935、936和937握手成功,922与下一层的938、939、93a和93b握手成功,923与下一层的93c、93d、93e和93f握手成功;在第四拍时,930,931,932,933,934、935、936、937、938、939、93a、93b、93c、93d、93e和93f将数据从总线存入其局部缓存中暂时存储,930与下一层的940、941、942和943握手成功,931与下一层的944、945、946和947握手成功,932与下一层的948、949、950和951握手成功,933与下一层的952、953、954和955握手成功,934与下一层的956、957、958和959握手成功,935与下一层的960、961、962和963握手成功,936与下一层的964、965、966和967握手成功,937与下一层的968、969、970和971握手成功,938与下一层的972、973、974和975握手成功,939与下一层的976、977、978和979握手成功,93a与下一层的980、981、982和983握手成功,93b与下一层的984、985、986和988握手成功,93c与下一层的988、989、990和991握手成功,93d与下一层的992、993、994和995握手成功,93e与下一层的996、997、998和999握手成功,93f与下一层的9a0、9a1、9a2和9a3握手成功;在第五拍时,数据同时存储至所有leaf tile,940-9a3 的局部缓存中,由此可见,数据从中心向叶子节点广播的数据在数据通路顺畅的情况下可以同时到达,数据的同步性得以实现。
在上一实例中,数据到达每个leaf tile时都是全带宽的,假设如图16所示,每个leaf tile的预设带宽均为16位数据,则其可以按照其id序号从全带宽的数据中取得对自己多播的数据,数据在全带宽中的位置为[id*16:id*16+15]。如id序号为63的数据D0,位于data[1023:1008],而id序号为0的数据D0,位于data[15:0]。
需要说明的是,本披露提出基于分形树结构的数据发布相关实施例,能够应用到上述提供的方法实施例中,以便实现片上或片间数据的获取、分发以及处理等操作。
本披露提出基于分形树结构的数据发布能够高效地将单核智能芯片扩展至多核,以满足更大运算量和更大规模神经网络的处理能力需求。相比于现有技术,本披露能够以同步的、流水的、可靠的方式在片上网络上实现广播和多播等操作,提高广播通讯和多播通讯的效率,使得通信的吞吐率大大提高,并在通信协议的保证下,使得数据传输得以安全地传输给各分支节点,做到数据的一致性和无差错,从而获得比现有技术更好的通讯效果。
本披露还披露了一种用于稀疏连接的机器学习计算装置,具体的,该机器学习可以包括人工神经网络,上述稀疏连接的人工神经网络计算装置为多个时,可以通过互联电路的数据处理装置连接,包括:
映射单元,用于将输入数据转换成输入神经元、权值和连接数据,依据连接数据对该输入神经元的筛选得到计算神经元,将该计算神经元并存储在存储器或者缓存中;
存储器,用于存储计算神经元、权值和计算指令;
运算单元,用于根据所述存储装置中存储的计算指令对所述计算神经元以及权值执行相应的运算;所述运算单元主要执行三步运算,第一步是将计算神经元和权值数据相乘得到第一结果;第二步执行加法树运算得到第二结果,具体的,用于将第一步处理后的第一结果通过加法树逐级相加得到第二结果,或者将第一结果通过和偏置相加得到第二结果;第三步对第二结果执行激活函数运算,得到最终输出神经元。
上述运算单元具体可以包括:加法计算器、乘法计算器和激活计算器,其连接的关系如图2B所示,每个计算器对应一个流水级,此计算方式能够节省运算时间,加快运算。在另一种可选的实施例可以自由组合各流水部件或者采取一级流水级。例如将第二个流水级和第三个流水级合并,或者将第一和第二以及第三个流水线都合并或者各个流水级负责不同的运算可以排列组合。例如,第一级流水负责比较运算,部分乘法运算,第二级流水负责非线性运算和矩阵标量乘法等组合。
上述计算器的流水级对不同的计算指令可能有所不同,例如仅仅执行向量或矩阵运算时,即无需第二流水级以及第三流水级,当然在实际应用中,也可以根据实际的计算指令对流水级进行调整。
其中,所述连接数据表示如下:第一种情形:
采用1表示有连接,0表示无连接,每个输出神经元与所有输入神经元的连接状态组成一个0和1的字符串来表示该输出神经元的连接关系;或者
采用1表示有连接,0表示无连接,每个输入神经元与所有输出神经元的连接状态组成一个0和1的字符串来表示该输入神经元的连接关系;
第二种情形:
将一输出神经元第一个连接所在的位置距离第一个输入神经元的距离、所述输出神经元第二个输入神经元距离上一个输入神经元的距离,所述输出神经元第三个输入神经元距离上一个输入神经元的距离,依次类推,直到穷举所述输出神经元的所有输入神经元,来表示所述输出神经元的连接关系。
作为优选,所述人工神经网络计算装置还包括DMA(可以被传输装置替代,例如图149的传输装置),用于在所述存储装置和缓存中进行数据或者指令读写。
作为优选,所述人工神经网络计算装置还包括:
指令缓存,用于存储专用指令;以及
控制单元,用于从所述指令缓存中读取专用指令,并将其译码成各运算单元指令。
作为优选,所述人工神经网络计算装置还包括:
输入神经元缓存,用于缓存输入神经元到所述运算单元的输入神经元数据;以及
权值缓存,用于缓存权值数据。
作为优选,所述人工神经网络计算装置还包括:
输出神经元缓存,用于缓存所述运算单元输出的输出神经元。
作为优选,所述映射单元用于将输入数据转换成输入神经元和权值一一对应的存储方式,并输出神经元到所述运算单元,而不是存储在存储装置中。
作为优选,所述人工神经网络计算装置还包括输入神经元缓存和/或权值缓存,所述输入神经元缓存用于缓存输入神经元到所述运算单元的输入神经元数据,所述权值缓存用于缓存权值数据,所述映射单元用于将输入数据转换成输入神经元和权值一一对应的存储方式,并输出神经元到所述输入神经元缓存和/或权值缓存。
作为优选,所述运算单元在第三步执行的激活函数为sigmoid函数、tanh函数或ReLU函数。
本披露还披露了一种用于稀疏连接的人工神经网络的计算方法,该计算方法在如图26,图28或图30所示的装置中实现,包括以下步骤:
步骤1,将输入数据转换成输入神经元、权值和连接数据;其中,所述连接数据表示为:
第一种情形:
采用1表示有连接,0表示无连接,每个输出神经元与所有输入神经元的连接状态组成一个0和1的字符串来表示该输出神经元的连接关系;或者
采用1表示有连接,0表示无连接,每个输入神经元与所有输出神经元的连接状态组成一个0和1的字符串来表示该输入神经元的连接关系;
第二种情形:
将一输出神经元第一个连接所在的位置距离第一个输入神经元的距离、所述输出神经元第二个输入神经元距离上一个输入神经元的距离,所述输出神经元第三个输入神经元距离上一个输入神经元的距离,依次类推,直到穷举所述输出神经元的所有输入,来表示所述输出神经元的连接关系。
步骤2,依据连接数据将输入神经元进行筛选得到计算神经元,将计算神经元和权值数据相乘得到第一结果;
上述输入数据包括:输入神经元、权值和连接数据,直接包含在输入数据内,直接从输入数据内提取该输入神经元、权值以及连接数据即可。上述计算神经元可以依据连接数据将输入神经元进行筛选得到计算神经元。
上述筛选的实现方案具体可以为,例如假设输入神经元为4个,连接数据为1时表示连接,如果连接数据为如图18所示的1011,该输入神经元为i1、i2、i3和i4,则将无连接关系的第二神经元i2删除得到计算神经元数据为:i1、i3和i4。当然上述连接数据中的1也可以表示不连接,如果1表示不连接,那么无连接关系的i1、i3和i4删除得到计算神经元数据为:i2。
步骤3,将第一结果执行加法树运算得到第二结果。
具体的实现方法由多种,例如,将第一结果执行加法树逐级相加得到第二结果。又如将第二结果加偏置得到第二结果;
步骤4,对第二结果执行激活函数运算,得到最终输出神经元;其中,所述激活函数为sigmoid函数、tanh函数或ReLU函数。
下面结合附图和具体实施例对本披露的技术方案进行进一步的阐释说明。
图17是根据本披露一个实施例的总体结构的示意性框图。
I/O接口1,用于I/O数据需要经过中央处理器CPU 3发给稀疏的多层人工神经网络运算装置,然后由稀疏的多层人工神经网络运算装置4写入存储器2,稀疏的多层人工神经网络运算装置4需要的专用程序也是由CPU 3传输到稀疏的多层人工神经网络运算装置4。
存储器2,用于暂存稀疏的多层人工神经网络模型和神经元数据,特别是当全部模型无法在稀疏的多层人工神经网络运算装置4上的缓存中存储时。
CPU 3,用于进行数据搬运以及稀疏的多层人工神经网络运算装置4启动停止等基本控制,作为稀疏的多层人工神经网络运算装置4与外部控制的接口。
稀疏的人工神经网络运算装置4,用于执行稀疏的多层人工神经网络运算单元,接受来自CPU3的数据和程序,执行上述稀疏的多层人工神经网络运算算法,稀疏的人工神经网络运算装置4的执行结果将传输回CPU 3。
通用系统结构:将稀疏的人工神经网络运算装置4作为CPU 3或者GPU的协处理器来执行稀疏的多层人工神经网络运算算法。
多个稀疏的人工神经网络运算装置互联的系统结构:多个稀疏的人工神经网络运算装置4可以通过PCIE总线互联,以支持更大规模的稀疏的多层人工神经网络运算,可以共用同一个宿主CPU或者分别有自己的宿主CPU,可以共享内存也可以每个处理器有各自的内存。此外其互联方式可以是任意互联拓扑。
对于一个稀疏连接的神经网络如图18所示,有4个输入神经元:i1,i2,i3,i4,有2个输出神经元:o1,o2。其中,o1和i1,i3,i4有连接,把连接的权值分别表示为w11,w31,w41;o2和i2,i3有连接,把连接的权值分别表示为w22,w32。
有两种方法可以表示上面稀疏神经网络的连接关系,一种是每个输入神经元与输出神经元之间都用一位表示是否有连接,另一种是用连接之间的距离来表示每个连接的位置。
第一种连接表示:
对于图18中的神经网络,如图19所示,输出神经元o1的连接关系为:1011,每一位表示是否与输入神经元有连接,1表示有连接,0表示无连接,输出神经元o2的连接关系为0110。在运算时,连接关系为0所对应的输入神经元会筛选删除,即不会进行运算,具体的对于输出神经元o1,其i2会被筛选删除,对于o2,其i1、i4会被筛选删除,这样在计算时无需对筛选的输入神经元进行计算。
在存储连接关系时,可以按照优先输入神经元或者输出神经元的顺序对连接关系进行存储。具体存储格式有以下几种:
格式一:将每个输出神经元的所有输入神经元依次摆放完,上面的例子摆放的顺序为10110110。
格式二:将每个输入神经元的所有的输出神经元依次摆放完,上面的例子摆放的顺序为10011110。
第二种连接表示:
比如对于图20中的神经网络,输出神经元o1与输入神经元i1,i3,i4相连接,那么连接关系为0,2,1。0表示第一个连接所在的位置距离第一个输入神经元的距离为0,即第一个输入神经元,2表示第二个输入神经元距离上一个输入神经元的距离为2,即表示第三个输入神经元,1表示第三个输入神经元距离上一个输入神经元的距离为1,即表示第四个输入神经元。同理,o2的连接关系为1,1。
本披露的映射单元包括但不限于以上的连接关系。
卷积神经网络是人工神经网络的一种,卷积层包含多个滤波器,也就是卷积核,这些卷积核重复的作用于所有输入图像上,提取局部特征。不同的卷积核能够提取出不同种类的局部特征,一副输入图像在经过卷积层之后就变成一些能够被更好理解的抽象特征。
自然图像有其固有特性,也就是说,图像的一部分的统计特性与其他部分是一样的。这也意味着在这一部分学习的特征也能用在另一部分上,所以对于这个图像上的所有位置,都能使用同样的学习特征。当从一个大尺寸图像中随机选取一小块,比如说8*8作为样本,并且从这个小块样本中学习到了一些特征,这时可以把从这个8*8样本中学习到的特征作为探测器,应用到这个图像的任意地方中去。特别是, 可以用从8*8样本中学习到的特征跟原本的大尺寸图像做卷积,从而对这个大尺寸图像上的任意位置获得一个不同特征的激活值。这个8*8的样本特征被称作卷积核。上述卷积的计算可以参见如图6B实施例中的描述,这里不在赘述。
如图21是一个卷积操作的例子。卷积核是一个2*2的矩阵,卷积核在输入图像上滑动。
假设每次滑动一个像素点,则总共会有四次卷积操作。对于每次卷积操作,卷积核矩阵与对应的输入图像数据做乘加操作。
假设卷积核的权值变得稀疏,由之前的2*2,变成只有两个参数,如图22所示。则对于输出神经元o0来说,需要的输入神经元为i0,i1,i3,i4,输入权值为:w0,w3,连接关系为1001或者0,2;
对于输出神经元o3来说,需要的输入神经元为i3,i5,i7,i8,输入权值为:w0,w3,连接关系为1001或者0,2。
由此可见,对于同个输出神经元特征图上的不同的输出神经元,所需要的输入神经元不同,权值和连接关系是相同的。
可执行稀疏连接的人工神经网络运算装置可以处理各种稀疏连接表示的稀疏连接的人工神经网络,可执行稀疏连接的人工神经网络运算装置中有一个专门用于处理稀疏连接的单元,在这里称为映射单元,对于不同的稀疏连接关系和处理方法,稀疏连接的人工神经网络运算装置结构会略有不同,下面将分别描述不同的结构和方法。
结构和方法一:
如图23所示,映射单元1,用来将输入数据转换成输入神经元、权值和连接数据。
存储器2,用来存储数据和指令,尤其是神经网络规模很大的时候,指令缓存4、输入神经元缓存6、输出神经元缓存9、权值缓存8放不下这么多数据,只能将数据临时存放在存储器2。
DMA3,用来将存储装置中的数据或者指令搬到各个缓存中。
指令缓存4,用来存储专用指令。
控制单元5,从指令缓存4中读取专用指令,并将其译码成各运算单元指令。
输入神经元缓存6,用来存储运算的输入神经元数据。
运算单元7,用于执行具体的运算。运算单元主要被分为三个阶段,第一阶段执行乘法运算,用于将输入的神经元和权值数据相乘。第二阶段执行加法树运算,第一、二两阶段合起来完成了向量内积运算。第三阶段执行激活函数运算,激活函数可以是sigmoid函数、tanh函数等。第三阶段得到输出神经元,写回到输出神经元缓存。
权值缓存8,用来存储权值数据。
输出神经元缓存9,用来存储运算的输出神经元。
映射单元的结构如图24所示。
以上面稀疏连接的神经网络为例,连接关系可以是上述的两种稀疏表示之一,映射单元会根据连接关系,将输入神经元和输入权值按照连接关系输出映射后的神经元和权值,映射后的神经元和权值可以在运算时被直接使用而不需要考虑连接关系,对于输出神经元o1映射的具体过程如下:
输入神经元为:i1,i2,i3,i4,输入权值为:w11,w31,w41,连接关系可以为:1011,或0,2,1。映射单元根据连接关系,将输入神经元和权值变成相对应的关系,输出有两种情况:一种是去除掉没有连接的输入神经元,则映射后的神经元为i1,i3,i4,映射后的权值为w11,w31,w41;另一种是权值在没有连接的地方补成0,则映射后的神经元为i1,i2,i3,i4,映射后的权值为w11,0,w31,w41。
运算单元可以包括三个部分,第一部分乘法器,第二部分加法树,第三部分为激活函数单元。第一部分将输入神经元(in)通过和权值(w)相乘得到加权输出神经元(out),过程为:out=w*in;第二部分将加权输出神经元通过加法树逐级相加,另外还可以将输出神经元(in)通过和偏置(b)相加得 到加偏置输出神经元(out),过程为:out=in+b;第三部分将输出神经元(in)通过激活函数(active)运算得到激活输出神经元(out),过程为:out=active(in),激活函数active可以是sigmoid、tanh、relu、softmax等,除了做激活操作,第三部分可以实现其他的非线性函数,可将将输入神经元(in)通过运算(f)得到输出神经元(out),过程为:out=f(in)。
运算过程如图25所示。
结构和方法二:
如图26所示,存储装置1,用来存储数据和指令,尤其是神经网络规模很大的时候,指令缓存3、输入神经元缓存6、输出神经元缓存9、权值缓存8放不下这么多数据,只能将数据临时存放在存储装置1。
DMA2,用来将存储装置中的数据或者指令搬到各个缓存中。
指令缓存3,用来存储专用指令。
控制单元4,从指令缓存3中读取专用指令,并将其译码成各运算单元指令。
映射单元5,用来将输入数据转换成输入神经元和权值一一对应的存储方式。
输入神经元缓存6,用来存储运算的输入神经元数据。
运算单元7,用于执行具体的运算。运算单元主要被分为三个阶段,第一阶段执行乘法运算,用于将输入的神经元和权值数据相乘。第二阶段执行加法树运算,第一、二两阶段合起来完成了向量内积运算。第三阶段执行激活函数运算,激活函数可以是sigmoid函数、tanh函数等。第三阶段得到输出神经元,写回到输出神经元缓存。
权值缓存8,用来存储权值数据。
输出神经元缓存9,用来存储运算的输出神经元。
映射单元的结构如图27所示。
以上述稀疏连接的神经网络为例,连接关系可以是上述的两种稀疏表示之一,映射单元会根据连接关系,将输入神经元和输入权值按照连接关系输出映射后的神经元和权值,映射后的神经元和权值可以在运算时被直接使用而不需要考虑连接关系,对于输出神经元o1映射的具体过程如下:
输入神经元为:i1,i2,i3,i4,输入权值为:w11,w31,w41,连接关系可以为:1011,或0,2,1。映射单元根据连接关系,将输入神经元和权值变成相对应的关系,输出有两种情况:一种是去除掉没有连接的输入神经元,则映射后的神经元为i1,i3,i4,映射后的权值为w11,w31,w41;另一种是权值在没有连接的地方补成0,则映射后的神经元为i1,i2,i3,i4,映射后的权值为w11,0,w31,w41。
结构和方法一和结构方法二中的映射单元的主要区别是结构和方法一中的映射单元是在计算之前事先把输入神经元和权值映射好后存储在存储装置中,结构和方法二是在计算中进行映射,将映射好的数据直接给运算单元进行运算。
结构和方法三:
基于结构和方法二稍作修改可以改成如图28所示的结构,映射单元只对输入神经元进行映射。
此时,映射单元的结构图如图29所示。
对于输出神经元o1映射的具体过程如下:
输入神经元为:i1,i2,i3,i4,连接关系可以为:1011,或者:0,2,1。映射单元根据连接关系,将输入神经元和权值变成相对应的关系,去除掉没有连接的输入神经元,则映射后的神经元为i1,i3,i4。
结构和方法四:
基于结构和方法二稍作修改可以改成如图30所示的结构,映射单元只对输入权值进行映射。
此时,映射单元的结构图如图31所示。
对于输出神经元o1映射的具体过程如下:
输入权值为:w11,w31,w41,连接关系可以为:1011,或者:0,2,1。映射单元根据连接关系,将输入神经元和权值变成相对应的关系,映射后的权值为w11,0,w31,w41。
需要说明的是,本披露提出基于稀疏的人工神经网络运算实施例可被应用到上述提供的方法实施例中,具体的在运算单元中调用相关计算器(如加法计算器、乘法计算器和激活计算器)来实现指令的运行,每个计算器对应一个流水级,在指令执行时可调用多个流水级组合的方式来实现,以节省运算时间,加快运算速率。
本披露通过采用针对稀疏人工神经网络运算的专用SIMD指令和定制的运算单元,解决了CPU和GPU运算性能不足,前端译码开销大的问题,有效提高了对人工神经网络运算算法的支持;通过采用针对人工神经网络运算算法的专用片上缓存,充分挖掘了输入神经元和权值数据的重用性,避免了反复向内存读取这些数据,降低了内存访问带宽,避免了内存带宽成为人工神经网络运算及其训练算法性能瓶颈的问题。
通过采用针对稀疏人工神经网络运算的专用SIMD指令和定制的运算单元,解决了CPU和GPU运算性能不足,前端译码开销大的问题,有效提高了对人工神经网络运算算法的支持;通过采用针对人工神经网络运算算法的专用片上缓存,充分挖掘了输入神经元和权值数据的重用性,避免了反复向内存读取这些数据,降低了内存访问带宽,避免了内存带宽成为人工神经网络运算及其训练算法性能瓶颈的问题。
如图32所示,本披露还提供了一种神经网络的处理系统100,在一种可选的实施方案中,该神经网络的处理系统100具体可以为如图2A所示的计算装置或者该计算装置的集合,当然也可以为如图1或如图6A所示的计算装置或者集合,当然还可以为用于稀疏连接的人工神经网络计算装置或正向运算的装置的集合,当然在实际应用中,还可以是多种神经网络领域的计算装置的集合,本神经网络的处理系统100并不限制包含的计算装置、计算芯片、处理设备、处理器的种类或表现形式,相对于如图2A所示的计算装置,增加了一个或者多个算数逻辑单元,该多个算数逻辑单元,用于执行非线性运算,在一种可选实施例中,如图2A所示的计算装置还可以扩展如图32所示的神经网络的处理系统中的单元或模块。在另一种实施例中,该系统包括至少一片上存储介质10、至少一片内地址索引模块20、多核心处理模块30以及一个或者多个算数逻辑单元(Arithmetic Logic Unit,ALU)模块40。多核心处理模块30包括多个核心处理子模块31。其中片内地址索引模块20与片上存储介质10连接,片内地址索引模块20、多核心处理模块30以及ALU模块40分别相互连接。多核心处理模块30用于执行神经网络运算中的向量乘加操作,多个ALU模块40用于从多核心处理模块30或片上存储介质10获取输入数据执行多核心处理模块30无法完成的非线性运算,在本实施例中,多个核心处理子模块31共享片上存储介质10以及ALU模块40。
片上存储介质10,用于存储神经网络处理系统外部传来的数据或用于存储处理过程中产生的数据。该处理过程中产生的数据包括处理过程中产生的处理结果或中间结果。这些结果可能来自处理器的片内核心运算模块,也可能来自其他运算部件,如本披露中ALU模块40。该片上存储介质10可以是静态随机存储器(Static Random Access Memory,SRAM),动态随机存储器(Dynamic Random Access Memory,DRAM),增强动态随机存取存储器(Enhanced Dynamic Random Access Memory,e-DRAM),寄存器(Register file,RF)等常见存储介质,也可以是新型的存储器件,如非易失存储器(Non-Volatile Memory,NVM)或者3D存储器件等等。
片内地址索引模块20,用于在执行运算时候根据输入的索引映射至正确的存储地址以将正确的数据送至多核心处理模块30进行处理。从而使得数据和片上存储介质可以正确的交互。这里的地址映射过程包括直接映射,算术变换等。该索引模块可以通过硬件电路(包括但不限于FPGA、CGRA、专用集成电路ASIC、模拟电路和忆阻器等)实现。
多核心处理模块30包括多个核心处理子模块31,用于执行神经网络运算中的向量乘加操作。具体的,多核心处理模块30完成神经网络算法中的大部分运算,均为线性运算,即乘加操作。每个核心处理模块31的结构可以多种,例如一维处理单元(processing element,PE)实现方式,二维PE或者多维实现方式。单个核心处理模块31本身不局限于特定实施原则,包括不同的实现方法,如systolic方案,矩阵向量乘加操作符。且多核心处理模块30的多个核心处理子模块31之间可以为同构设计或异构设计。该处理模块可以通过硬件电路(包括但不限于FPGA、CGRA、专用集成电路ASIC、模拟电路和忆阻器等)实现。
ALU模块40,用于从多核心处理模块30或片上存储介质获取输入数据执行核心处理模块无法完成的非线性运算。该模块可以通过硬件电路(包括但不限于FPGA、CGRA、专用集成电路ASIC、模拟电路和忆阻器等)实现。在本披露中,多核心处理模块30、ALU模块40与片上存储介质10的数据通路包括但不局限于H-TREE,或者FAT-TREE等互联技术。
在本披露中,多个核心处理子模块31共同复用部分输入以减少带宽需求,所述神经网络的处理系统100进行处理时,将同一输入神经元分别发送至多核心处理模块30的多个核心处理子模块31,而将不同的输入权值分配至不同的核心处理模块31,多个核心处理子模块31分别将输入神经元和输入权值进行向量内积(乘加和)操作后得到不同的输出神经元。不同的输出神经元对应不同的权值,也即对于处理不同的输出神经元,输入神经元是相同的,权值则不同。在本披露中,权值大部分情况下不可被多个核心复用,然而在某些情况下,如多个核心共同处理同一个特征图时,权值也可以被复用。
本披露针对神经网络处理系统的核心处理部分通过提升片上核心处理模块的数目从而提升神经网络算法中的核心运算部分处理速度,使得处理器获得更高的性能。核心处理指的是神经网络算法中占据大部分处理时间的向量乘加操作。从而本披露能够提升神经网络处理系统的运算速度,使得神经网络处理系统性能更高,更加高效。
图33是本披露一种神经网络的处理系统的另一实施例的结构框图,其与图1中神经网络的处理系统的区别是,图32中神经网络的处理系统是采用松耦合设计,而图33中神经网络的处理系统采用紧耦合设计。在图33中,神经网络的处理系统200包括多个片上存储介质201,多个片内地址索引模块202,多个核心处理模块203以及多个ALU模块204,其中每个核心处理模块203具有单独的输入接口和输入结构,其中ALU模块204也被划分可以存在于每个核心中。
在图32中,多个核心处理子模块31只完成特定的核心操作,本身不具有更多的功能,多核处理核心共享片上存储介质10和ALU模块40。与之相比,在图32的紧耦合设计中,每个核心处理模块203具有自己独立的片上存储介质201和ALU模块204。在图32所示的松耦合设计中多个核心可以协同处理,更易实现更高的性能需求,然而每个核缺少灵活性;在如图33所示的紧耦合设计中每个核心具有一定的灵活性,然而由于每个核的独立性也使得多核协同的复杂度更高,使得控制的复杂度增加。松耦合多适用多核同构的设计,紧耦合则多使用于多核异构的设计。
在本披露中,神经网络可以根据多核处理模式设计进行神经网络的划分,其中包括从输入神经元进行划分,输出神经元划分和权值连接进行划分。神经网络的划分是对于神经网络处理模式的分解,并不是将神经网络划分成为独立的子网,也即划分是算法层面的划分,是软件或者编译器完成的操作,其目的是将处理划分成为可以在多个核心处理的多个部分。
图34是本披露一种实施例中神经网络划分的示意图;图35是本披露另一实施例中神经网络划分的示意图;图36是本披露又一实施例中神经网络划分的示意图。
在神经网络的处理中,卷积层是按照特征图进行组织,也即输入是多个图,输出是多个图。在图34中,对于二维或者多维运算,从输出角度可按照每个核处理一层输出特征图进行神经网络划分。图34中包括输入特征图1、输入特征图2、核心处理模块1、核心处理模块2、输出特征图1、输入特征图2, 每个特征图为二维矩阵。在进行处理时,将输入特征图1、2分别发送至核心处理模块1、2,核心处理模块1处理输出特征图1,核心处理模块处理输出特征图2,核心处理模块1和核心处理模块2分别处理一层输出特征图。也即,在进行二维或多维处理时,将输入特征图分别发送至多个核心处理模块,多个核心处理模块分别处理一层输出特征图。多个核心处理模块均分别完成当前输出特征图的处理后,多核心处理模块再执行新的输出特征图处理,也即只有当所有的核完成当前的输出特征图处理后才会进行新的特征图处理。
在实际应用中,输入特征图、核心处理模块、输出处理模块均可以有多个。下面以2个核(核#1、核#2)、4个输出特征图(输出特征图#1、#2、#3、#4)、4个输入特征图(输入特征图#1、#2、#3、#4)为例说明多核心处理模块的处理方式:处理开始后,核#1负责处理输出特征图#1,核#2负责处理输出特征图#2,输入特征图#1被送入核#1和核#2(也即共享输入特征图#1),同时相应的权值也被送入核#1和核#2进行处理;当输入特征图#1处理完成后,输入特征图#2被从片上存储读取,送入核#1和核#2进行处理(同样读取权值);当核#1和核#2完成输出特征图#1和#2的处理后,核#1和核#2则开始处理输出特征图#3和#4,也即重复以上的操作过程。
如图35所示,对于二维或者多维运算,从输出角度也可按照每个核处理一层输出特征图进行神经网络划分。不同的核负责处理同一特征图的不同区域,而输入相应的则被送至每一个核中,权值则根据相应的连接进行读取,这里权值有可能存在复用,如卷积神经网中的卷积层。只有当所有的核完成当前的输出特征图处理后才会进行新的特征图处理。在图35中,输入特征图1、和输入特征图2均送入核心处理模块1和核心处理模块2,核心处理模块1负责处理输出特征图1的区域1和输出特征图2的区域1,核心处理模块2负责处理输出特征图1的区域2和输出特征图2的区域2。从而,在执行二维或者多维运算时,将输入特征图分别发送至多个核心处理模块,多个核心处理模块分别处理同一输出特征图的不同区域,多个核心处理模块均分别完成当前输出特征图的处理后,多核心处理模块再执行新的输出特征图处理。
如图36所示,对于一维运算,从输出角度按照每个核心处理模块处理输出的一部分进行神经网络划分。每个核负责处理不同的神经元,这里的划分方式则可以多种多样,并不局限于图36所示的划分方法。输入被送至每一个核心处理模块中,权值则根据相应的连接进行读取,只有当所有的核心处理模块完成当前的输出特征图处理后才会进行新的特征图处理。也即神经网络处理系统在执行一维运算时,将同一输入分别发送至多个核心处理模块,多个核心处理模块分别处理不同的输出神经元,多个核心处理模块均分别完成当前输出神经元的处理后,再执行新的输入的处理。
神经网络划分包括从输入神经元进行划分,输出神经元划分和权值连接进行划分。本披露按照输出神经元进行划分,输出神经元需要多个甚至全部输入神经元参与处理,而输出神经元的处理多数情况下彼此独立。按照输出神经元划分可以复用输入神经元,降低带宽需求,从而使得处理器更加高效。
图37是本披露一种神经网络的处理方法的流程图,该方法在如图4A、图5或图2A所示的计算装置中实现,此时该计算装置中包括多个ALU,包括:
步骤S601,片内地址索引模块根据输入的索引映射至正确的存储地址;
步骤S602,根据存储地址从片上存储介质中获取输入数据;
步骤S603,将输入数据发送至多核心处理模块或所述ALU模块;
步骤S604,多核心处理模块执行神经网络运算中的向量乘加操作,ALU模块根据多核心处理模块的处理结果或者从片上存储介质中获取的输入数据执行多核心处理模块无法完成的非线性运算;
步骤S605,将处理过程中产生的数据缓存至片上存储介质。
优选的是,所述方法还包括:将同一输入神经元分别发送至多个核心处理模块,将不同的输入权值分配至不同的核心处理模块,多个核心处理模块分别将输入神经元和输入权值进行向量内积操作后得到不同的输出神经元。
综上所述,本披露针对神经网络处理系统的核心处理部分通过提升片上核心处理模块的数目从而提升神经网络算法中的核心运算部分处理速度,使得处理器获得更高的性能。核心处理指的是神经网络算法中占据大部分处理时间的向量乘加操作。从而本披露能够提升神经网络处理系统的运算速度,使得神经网络处理系统性能更高,更加高效。
需要说明的是,本披露提供的算术逻辑单元可用于对数据进行非线性运算,并应用到上述提供的方法实施例中,以提高数据运算速度。
通过实施本披露实施例,能够提升片上核心处理模块(计算装置)的数目,从而提升神经网络算法中的核心运算部分处理速度,使得在各个应用场景下,加速器更快的接收数据、完成相应的运算处理并提供反馈信息,满足该应用场景的计算需求。此外还提供了多种神经网络划分方式,根据不同应用场景的数据选择不同的划分方式,如果有多种方式可以满足,那么本披露还能支持多种格式的数据运算,具有一定的灵活性。
根据本披露实施例的支持离散数据表示的多层人工神经网络的正向运算,包括两层或者两层以上的多个神经元。对于每一层来说,输入神经元向量首先和权值向量进行点积运算,结果经过激活函数得到输出神经元。其中激活函数可以是sigmoid函数,tanh、relu、softmax函数等,支持将激活后的输出神经元离散化表示或连续化表示。
对于离散数据表示的输入神经元向量或离散数据表示的权值向量的点积运算,本装置支持将点积运算转换为数据的移位、取非、异或等位运算。对于数据的表示方式,本装置支持数据离散表示或非离散表示,用户可以自定义哪一个层的哪些数据采用离散表示形式或非离散表示,并且可以根据具体需要自定义离散数据的位数,从而代替表示的真实数据的个数,例如设定为1比特、2比特、3比特等位数的离散数据,分别可以表示2个、4个、8个真实数据。
图38示出了根据本披露实施例的用于执行支持离散数据表示的人工神经网络正向运算的装置的整体结构的示例框图。人工神经网络正向运算的装置可以设置在神经网络的处理系统内。如图38所示,该装置在一种可选实施例中,可以为如图2A所示的计算装置,如图1所示的计算装置、如图6A所示的计算装置,可选的,在如图2A所示的计算装置(也可以添加在如图1或如图6A所示的计算装置内或用于稀疏连接的人工神经网络计算装置)内还可以添加连续离散转换模块,用于将连续数据与离散数据的互换,其与数据访问单元连接实现数据互通,在一种可选实施例中,如图2A所示的计算装置还可以扩展或增加如图38所示的装置的模块或单元。在另一种可选实施例中,该装置包括指令缓存单元1、控制器单元2、数据访问单元3、互联模块4、主运算模块5和多个从运算模块6,可选地还包括连续离散转换模块7。指令缓存单元1、控制器单元2、数据访问单元3、互联模块4、主运算模块5和从运算模块6、连续离散转换模块7均可以通过硬件电路(例如包括但不限于FPGA、CGRA、专用集成电路ASIC、模拟电路和忆阻器等)实现。特别的,本装置可以对离散数据提供存储和运算支持。
指令缓存单元1通过数据访问单元3读入指令并缓存读入的指令。
控制器单元2从指令缓存单元1中读取指令,将指令译成控制其他模块行为的微指令,所述其他模块例如数据访问单元3、主运算模块5和从运算模块6等。
数据访问单元3能够访存外部地址空间,直接向装置内部的各个缓存单元读写数据,完成数据的加载和存储。该数据是离散表示的或非离散表示的。该单元用来设计可以读取离散表示的数据。
互联模块4用于连接主运算模块和从运算模块,可以实现成不同的互连拓扑(如树状结构、环状结构、网格状结构、分级互连、总线结构等)
图39示意性示出了互联模块4的一种实施方式:树型模块。树型模块4构成主运算模块5和多个从运算模块6之间的数据通路,并具有树型的结构。可选的,该树型模块可以为n叉树结构,例如如图39所示的的二叉树通路,每个节点将上游的数据同样地发给下游的两个节点,将下游的两个节点返回的 数据进行合并,并返回给上游的节点。例如,在每层人工神经网络开始计算阶段,主运算模块5内的神经元数据该数据可以是离散表示或非离散表示的通过树型模块4发送给各个从运算模块6;当从运算模块6的计算过程完成后,每个从运算模块输出的神经元的值会在树型中逐级拼成一个完整的由神经元组成的向量,作为中间结果向量。针对于离散数据表示的运算,我们特别提到了在主从运算模块内部的专用于离散数据运算的运算模块见图44。以神经网络全连接层进行说明,假设装置中共有N个从运算模块,则中间结果向量按N分段,每段有N个元素,第i个从运算模块计算每段中的第i个元素。N个元素经过树型模块拼成长度为N的向量并返回给主运算模块。所以如果网络只有N个输出神经元,则每个从运算单元只需输出单个神经元的值,若网络有m*N个输出神经元,则每个从运算单元需输出m个神经元值。树型模块在存储和传输数据的过程中均支持离散数据表示。
图40示出了根据本披露实施例的用于执行人工神经网络正向运算的装置中主运算模块5的结构的示例框图。如图40所示,主运算模块5包括运算单元51、数据依赖关系判断单元52和支持离散数据表示的神经元缓存单元53。
支持离散数据表示的神经元缓存单元53用于缓存主运算模块5在计算过程中用到的输入数据和输出数据。
运算单元51完成主运算模块5的各种运算功能。对于运算因子全是离散数据的情况,可以通过查表实现离散数据与离散数据的加减乘除运算。例如2位的离散数据,可以表示4个连续数据值。对于4个连续数据共有4*4=16种组合。对于每种加减乘除运算的操作,可以制作并维护该4*4的索引表,通过索引表找到对应的计算值。4种运算共需要4张4*4的索引表。
对于运算因子包含离散数据和连续数据的情况,可以针对不同离散数据,为加、减、乘、除运算预先设定相应的位操作。例如,可以采取按位异或后乘2的相应位次幂之后累加求和的方式代替离散数据与连续数据的点积运算。例如,对于乘法操作,乘法因子数据如果存在离散表示的,可以通过离散数据索引相应的操作(例如,对相应数据的按位异或、取非、移位等操作)代替和该离散数据表示的连续数据的乘法操作,从而减少了乘法器部件数量。例如对于连续数据与离散数据的乘法操作,-1/2乘以16。传统的乘法器部件会将-1/2与16直接做乘法。在运算单元51中,由于离散数据的可能性较少,可以通过查找索引这样一种开关判断的方法代替了运算单元的功能。例如,可以规定-1/2的离散数据表示方法为01。如果一个运算因子是-1/2,则运算单元51接收到的离散数据为01。运算单元51便采用离散数据01对应的操作。通过对于16的8位定点数表示00010000符号位取反,向右移1位得到10001000,十进制表示为-8。对于除法操作,16除以-2。其中16是连续数据,-2是离散数据。如果规定离散数据-2二进制表示为10。运算单元便采用离散数据10对应的除法操作。通过对16的8位定点数表示0001000右移1位之后符号位取反得到10001000,十进制表示为-8得到结果。加法和减法操作与上述过程类似。根据离散数据的二进制作为一个索引,索引到按位左移、右移、异或等操作。经过该操作后实现了与离散数据表示的真实数据的相加或者相减操作。
依赖关系判断单元52是运算单元51读写神经元缓存单元53的端口,同时能够保证神经元缓存单元中数据的读写一致性。同时,数据依赖关系判断单元52也负责将读取数据通过互联模块4发送给从运算模块,而从运算模块6的输出数据通过互联模块4直接发送给运算单元51。控制器单元2输出的指令发送给计算单元51和数据依赖关系判断单元52,来控制其行为。
图41示出了根据本披露实施例的用于执行支持离散数据表示的人工神经网络正向运算的装置中从运算模块6的结构的示例框图。如图41所示,每个从运算模块6包括运算单元61、数据依赖关系判定单元62、支持离散数据表示的神经元缓存单元63和支持离散数据表示的权值缓存单元64。
运算单元61接收控制器单元2发出的微指令并进行算数逻辑运算。对于运算因子全是离散数据的情况,可以通过查表实现离散数据与离散数据的加减乘除运算。例如2位的离散数据,可以表示4个连续数据值。对于4个连续数据共有4*4=16种组合。对于每种加减乘除运算的操作,可以制作并维护该 4*4的索引表,通过索引表找到对应的计算值。4种运算共需要4张4*4的索引表。
对于运算因子包含离散数据和连续数据的情况,可以针对不同离散数据,为加、减、乘、除运算预先设定相应的位操作。例如,可以采取按位异或后乘2的相应位次幂之后累加求和的方式代替离散数据与连续数据的点积运算。例如,对于乘法操作,乘法因子数据如果存在离散表示的,可以通过离散数据索引相应的操作(例如,对相应数据的按位异或、取非、移位等操作)代替和该离散数据表示的连续数据的乘法操作,从而减少了乘法器部件数量。例如对于连续数据与离散数据的乘法操作,-1/2乘以16。传统的乘法器部件会将-1/2与16直接做乘法。在运算单元51中,由于离散数据的可能性较少,可以通过查找索引这样一种开关判断的方法代替了运算单元的功能。例如,可以规定-1/2的离散数据表示方法为01。如果一个运算因子是-1/2,则运算单元51接收到的离散数据为01。运算单元51便采用离散数据01对应的操作。通过对于16的8位定点数表示00010000符号位取反,向右移1位得到10001000,十进制表示为-8。对于除法操作,16除以-2。其中16是连续数据,-2是离散数据。如果规定离散数据-2二进制表示为10。运算单元便采用离散数据10对应的除法操作。通过对16的8位定点数表示0001000右移1位之后符号位取反得到10001000,十进制表示为-8得到结果。加法和减法操作与上述过程类似。根据离散数据的二进制作为一个索引,索引到按位左移、右移、异或等操作。经过该操作后实现了与离散数据表示的真实数据的相加或者相减操作。
数据依赖关系判断单元62负责计算过程中对神经元缓存单元的读写操作。数据依赖关系判断单元62执行读写操作之前会首先保证指令之间所用的数据不存在读写一致性冲突。例如,所有发往数据依赖关系单元62的微指令都会被存入数据依赖关系单元62内部的指令队列里,在该队列中,读指令的读取数据的范围如果与队列位置靠前的写指令写数据的范围发生冲突,则该指令必须等到所依赖的写指令被执行后才能够执行。
支持离散数据表示的神经元缓存单元63缓存该从运算模块6的输入神经元向量数据和输出神经元值数据。该数据可以以离散数据的形式存储和传输。
支持离散数据表示的权值缓存单元64缓存该从运算模块6在计算过程中需要的权值数据。该数据根据用户定义可以是离散表示的或不是。对于每一个从运算模块6,都只会存储全部输入神经元与部分输出神经元之间的权值。以全连接层为例,输出神经元按照从运算单元的个数N进行分段,每段的第n个输出神经元对应的权值存放在第n个从运算单元中。
从运算模块6实现每层人工神经网络正向运算过程中可以并行的前半部分。该模块中的数据存储以及运算都支持离散数据表示。以人工神经网络全连接层(MLP)为例,过程为y=f(wx+b),其中权值矩阵w和输入神经元向量x的乘法可以划分为不相关的并行计算子任务,out与in是列向量,每个从运算模块6只计算in中相应的部分标量元素与权值矩阵w对应的列的乘积,得到的每个输出向量都是最终结果的一个待累加的部分和,这些部分和在互联模块4中逐级两两相加得到最后的结果。这个结果可以是离散数据表示的。所以计算过程变成了并行的计算部分和的过程和后面的累加的过程。每个从运算模块6计算出输出神经元值,所有的输出神经元值在互联模块4中拼成得到中间结果向量。每个从运算模块6只需要计算出中间结果向量y中与本模块对应的输出神经元值即可。互联模块4对所有从运算模块6输出的神经元值求和,得到最终的中间结果向量y。主运算模块5基于中间结果向量y进行后续计算,比如加偏置、池化(例如最大值池化(MAXPOOLING)或平均值池化(AVGPOOLING)等)、做激活和做采样等。
图45示出了运算单元的结构框图,其可用于主运算模块中的运算单元51或从运算模块中的运算单元61。运算过程中输入数据可以是离散数据或连续数据。数据类型判断单元71判断输入数据全是连续数据、全是离散数据或是既包含连续数据又包含离散数据的混合数据。当输入数据全是连续数据时,连续数据运算单元72执行相应运算。
当输入数据全是离散数据时,离散数据运算单元73执行相应运算。对于运算因子全是离散数据的 情况,可以通过查表实现离散数据与离散数据的加减乘除运算。例如2位的离散数据,可以表示4个连续数据值。对于4个连续数据共有4*4=16种组合。对于每种加减乘除运算的操作,我们制作并维护该4*4的索引表,通过索引表找到对应的计算值。4种运算共需要4张4*4的索引表。
当输入数据是混合数据时,运算决定单元74根据其中的离散数据决定应对其执行何种操作。可以针对不同的离散数据分别预先设置相应操作。然后,混合数据运算单元75根据运算决定单元74的决定结果,执行相应操作。对于运算因子包含离散数据和连续数据的情况,可以针对不同离散数据,为加、减、乘、除运算预先设定相应的位操作。例如,可以采取按位异或后乘2的相应位次幂之后累加求和的方式代替离散数据与连续数据的点积运算。例如,对于乘法操作,乘法因子数据如果存在离散表示的,可以通过离散数据索引相应的操作(例如,对相应数据的按位异或、取非、移位等操作)代替和该离散数据表示的连续数据的乘法操作,从而减少了乘法器部件数量。例如对于连续数据与离散数据的乘法操作,-1/2乘以16。传统的乘法器部件会将-1/2与16直接做乘法。在运算单元51中,由于离散数据的可能性较少,可以通过查找索引这样一种开关判断的方法代替了运算单元的功能。例如,可以规定-1/2的离散数据表示方法为01。如果一个运算因子是-1/2,则运算单元51接收到的离散数据为01。运算单元51便采用离散数据01对应的操作。通过对于16的8位定点数表示00010000符号位取反,向右移1位得到10001000,十进制表示为-8。对于除法操作,16除以-2。其中16是连续数据,-2是离散数据。如果规定离散数据-2二进制表示为10。运算单元便采用离散数据10对应的除法操作。通过对16的8位定点数表示0001000右移1位之后符号位取反得到10001000,十进制表示为-8得到结果。加法和减法操作与上述过程类似。根据离散数据的二进制作为一个索引,索引到按位左移、右移、异或等操作。经过该操作后实现了与离散数据表示的真实数据的相加或者相减操作。
图46示出了连续离散转换单元。用户可以定义采用该模块将连续数据转换为离散数据或不采用。输入连续数据,输出离散数据。该单元包括随机数产生模块、判断模块、运算模块。对于输入的连续数据通过运算模块得到运算后的结果,经由判断模块用随机数与运算后的结果比较,判断随机数落在哪一个区间,从而决定出输出的离散数据的具体值。例如用户定义产生二元离散数据。对于输入的任意连续数据x。经由运算模块计算出结果y=abs(clip(-1,1))。之后通过判断模块,如果随机数大于y,则输出的离散数据是1,反之输出的离散数据是0。离散数据1和0分别代表了连续数据的-1和+1。将得到的离散数据存储回内存中。等待主从运算模块中的运算单元使用,产生相应的操作。
正向过程中的权值数据、输出输入数据可以采用离散数据表示或不采用。对于连续数据的乘法操作,可以通过基于离散数据的异或、取非、位移等方式代替连续数据的乘法操作。例如权值用1比特离散数据表示,0代表+1,1代表-1,通过对与权值相乘数据的符号位异或,实现了对权值的乘法运算。
根据本披露实施例,还提供了在前述装置上执行人工神经网络正向运算的指令集。指令集中包括CONFIG指令、COMPUTE指令、IO指令、NOP指令、JUMP指令和MOVE指令等,其中,这些指令的具体阐述可参见前述实施例中的相关介绍,这里不再赘述。
图42示出了根据本披露实施例的神经网络正向运算过程的示例框图。在不同从运算模块6中,输入神经元向量分别与该从运算模块6的权值向量进行点积运算,得到对应的输出神经元值,所有这些输出神经元值组成中间结果向量,该中间结果向量经过加偏置向量以及激活运算得到该层神经网络的最终输出神经元向量,公式描述为out=f(w*in+b),其中out输出神经元向量、in是输入神经元向量、b是偏置向量,w是权值矩阵,f是激活函数。每个从运算模块6的权值向量是权值矩阵中与该从运算模块6相对应的列向量。互联模块将输入神经元向量[in0,…,inN]发送给所有的从运算单元,暂存在神经元缓存单元中。对于第i个从运算单元,计算其相应的权值向量[w_i0,…,w_iN]与输入神经元向量的点积。从运算单元输出的结果经过互联模块拼成完整的输出向量并返回给主运算单元,在主运算单元中进行激活运算,得到最后的输出神经元向量[out0,out1,out2,…,outN]。
图43是示出根据一个实施例的单层支持离散数据表示的人工神经网络正向计算的一种实施方法。 该流程图描述利用本披露的装置和指令集实现图5所示的一种单层离散数据表示的人工神经网络正向运算过程。该计算方法在如图4A、图5或图2A所示的计算装置中实现。
步骤S1.1,将初始指令存放到指令存储单元1中;
步骤S1.2,从指令存储单元1中读取一条指令;
步骤S1.3,对上述指令进行译码;
步骤S1.4,根据译码得到的控制信号,进行相应操作;
步骤S1.5,将操作结果写回到相应存储中。
在步骤S1.1中,可以存入初始化IO指令,用于搬运后续指令。
在步骤S1.2中,可读取的指令包括但不限于CONFIG指令、COMPUTE指令、IO指令、NOP指令、JUMP指令和MOVE指令等。
在步骤S1.3中,根据指令的操作类型(CONFIG,COMPUTE,IO,NOP,JUMP,MOVE等)译码得到相应模块的控制信号。对于CONFIG指令,译码得到配置其余模块的配置信息。对于COMPUTE指令,译码得到主从运算模块的控制信号,控制不同离散数据采取的对应操作。对于IO指令,译码得到数据访问模块的控制信号。对于NOP指令,不产生实际控制信号,只用于清空当前装置内部所有控制信号缓存队列中的控制信号,保证NOP指令之前的所有指令全部执行完毕。对于JUMP指令,得到跳转指令流的控制信号。对于MOVE指令,得到在装置内部搬运数据的控制信号。
在步骤S1.4中,上述模块2-6根据控制信号执行相应操作。以执行支持离散数据表示的神经网络正向的COMPUTE指令为例,互连模块将输入神经元向量[in0,…,inN]发送给所有的从运算模块,暂存在神经元缓存单元中。对于第i个从运算模块,计算其相应的权值向量[w_i0,…,w_iN]与输入神经元向量的点积。从运算模块输出的结果经过互连模块拼成完整的输出向量并返回给主运算模块,在主运算模块中进行激活运算,得到最后的输出神经元向量[out0,out1,out2,…,outN]。
在步骤S1.5中,各个模块将操作结果写回到相应缓存中。以执行离散数据表示的神经网络正向的运算为例,主运算模块得到的输出神经元向量被写回到存储单元。
图44是示出根据一个实施例的单层人工神经网络正向运算的另一种更详细的实施方法。该流程图描述利用本披露的装置和指令集实现图4所示的一种单层神经网络正向运算的过程。
在步骤S1,在指令缓存单元1的首地址处预先存入一条IO指令。
在步骤S2,运算开始,控制器单元2从指令缓存单元1的首地址读取该条IO指令,根据译出的微指令,数据访问单元3从外部地址空间读取相应的所有人工神经网络运算指令,并将其缓存在指令缓存单元1中。
在步骤S3,控制器单元2接着从指令缓存单元读入下一条IO指令,根据译出的微指令,数据访问单元3从外部地址空间读取主运算模块5需要的所有数据(例如,包括输入神经元向量、插值表、常数表和偏置等)至主运算模块5的神经元缓存单元53,该数据支持离散表示,可以是全部离散或部分离散。
在步骤S4,控制器单元2接着从指令缓存单元读入下一条IO指令,根据译出的微指令,数据访问单元3从外部地址空间读取从运算模块6需要的权值矩阵数据,该数据支持离散表示,可以是全部离散或部分离散。
在步骤S5,控制器单元2接着从指令缓存单元读入下一条CONFIG指令,根据译出的微指令,装置配置该层神经网络计算需要的各种常数。例如,运算单元51、61根据微指令里的参数配置单元内部寄存器的值,所述参数例如包括本层计算的精度设置、激活函数的数据(例如本层计算的精度位,Lrn层算法的rang参数,AveragePooling层算法窗口大小的倒数等)。
在步骤S6,控制器单元2接着从指令缓存单元读入下一条COMPUTE指令,根据译出的微指令,主运算模块5首先通过互联模块4将输入神经元向量发给各从运算模块6,保存至从运算模块6的神经元缓存单元63。
在步骤S7,根据COMPUTE指令译出的微指令,从运算模块6的运算单元61从权值缓存单元64读取权值向量(权值矩阵中对应于该从运算模块6的列向量),从神经元缓存单元读取输入神经元向量,完成权值向量和输入神经元向量的点积运算,将中间结果通过互联返回,对于离散数据,自定义采用异或等位运算代替点积运算或不采用。例如对于1比特的离散数据表示,0代表+1,1代表-1,通过对与权值相乘数据的符号位异或,实现了对权值的乘法运算。。
在步骤S8,在互联模块4中,各从运算模块6返回的中间结果被逐级拼成完整的中间结果向量。
在步骤S9,主运算模块5得到互联模块4的返回值,根据COMPUTE指令译出的微指令,从神经元缓存单元53读取偏置向量,与互联模块4返回的向量相加,然后再对相加结果做激活,该装置支持用户自定义是否将激活后的结果离散化表示。并将最后的输出神经元向量写回至神经元缓存单元53。
在步骤S10,控制器单元接着从指令缓存单元读入下一条IO指令,根据译出的微指令,数据访问单元3将神经元缓存单元53中的输出神经元向量存至外部地址空间指定地址,运算结束。
对于人工神经网络批归一化运算(Batch Normalization)运算步骤与上述过程相仿。通过提供的指令集,控制器完成以下过程。控制器控制数据访问单元读入输入的数据,之后控制主从运算模块根据batch大小求出各自位置的均值以及方差或使用设定好的均值方差。之后控制器控制对应位置的输入数据减去均值除以方差。最后控制器控制用处理后的数据与学习参数相乘后加上另一个学习参数。
对于多层人工神经网络,其实现过程与单层神经网络类似,当上一层人工神经网络执行完毕后,下一层的运算指令会将主运算单元中存储的上一层的输出神经元地址作为本层的输入神经元地址。同样地,指令中的权值地址和偏置地址也会变更至本层对应的地址。
通过采用用于执行人工神经网络正向运算的装置和指令集,解决了CPU和GPU运算性能不足,前端译码开销大的问题。有效提高了对多层人工神经网络正向运算的支持。
通过采用针对多层人工神经网络正向运算的专用片上缓存,充分挖掘了输入神经元和权值数据的重用性,避免了反复向内存读取这些数据,降低了内存访问带宽,避免了内存带宽成为多层人工神经网络正向运算性能瓶颈的问题。
通过采用离散数据表示的方法,相较于浮点数、定点数等表示方法,大大较少了装置的存储能耗等开销。可以再有限的面积上优化结构布局,提高运算速度或性能能耗比等指标。
需要说明的是,本披露提出的连续离散转换模块可实现连续数据与离散数据之间的相互转换,且应用到上述提供的方法实施例中。这样在识别精度不损失的条件下极大减少了深度神经网络的计算量,从而提高运算速度,降低功耗。
本公开的一实施例中,如图47A所示,运算装置,包括:运算模块1-1,用于执行神经网络运算;以及幂次转换模块1-2,与所述运算模块连接,用于将神经网络运算的输入神经元数据和/或输出神经元数据转换为幂次神经元数据。
在另一实施例中,如图47B所示,运算装置,包括:
存储模块1-4,用于存储数据和运算指令;
控制模块1-3,与所述存储模块连接,用于控制数据和运算指令的交互,其接收该存储模块发送的数据和运算指令,并将运算指令译码成运算微指令;
运算模块1-1,与所述控制模块连接,接收该控制模块发送的数据和运算微指令,并根据运算微指令对其接收的权值数据和神经元数据执行神经网络运算;以及
幂次转换模块1-2,与所述运算模块连接,用于将神经网络运算的输入神经元数据和/或输出神经元数据转换为幂次神经元数据。
本领域人员可以理解,存储模块可以集成在运算装置内部,也可以作为片外存储器,设置在运算装置外部。
具体而言,请继续参照图47B所示,所述存储模块包括:存储单元1-41,用于存储数据和运算指令。
所述控制模块包括:
运算指令缓存单元1-32,与所述数据控制单元连接,用于接收数据控制单元发送的运算指令;
译码单元1-33,与所述运算指令缓存单元连接,用于从运算指令缓存单元中读取运算指令,并将其译码成各运算微指令;
输入神经元缓存单元1-34,与所述数据控制单元连接,用于接收数据控制单元发送的神经元数据;
权值缓存单元1-35,与所述数据控制单元连接,用于接收从数据控制单元发送的权值数据;
数据控制单元1-31,与存储模块连接,用于实现存储模块分别与运算指令缓存单元、权值缓存单元以及输入神经元缓存单元之间的数据和运算指令交互。
所述运算模块包括:运算单元1-11,分别与所述译码单元、输入神经元缓存单元及权值缓存单元连接,接收各运算微指令、神经元数据及权值数据,用于根据各运算微指令对其接收的神经元数据和权值数据执行相应的运算。
在一可选的实施例中,运算单元包括但不仅限于:第一部分的第一个或多个乘法器;第二部分的一个或者多个加法器(更具体的,第二个部分的加法器也可以组成加法树);第三部分的激活函数单元;和/或第四部分的向量处理单元。更具体的,向量处理单元可以处理向量运算和/或池化运算。第一部分将输入数据1(in1)和输入数据2(in2)相乘得到相乘之后的输出(out),过程为:out=in1*in2;第二部分将输入数据in1通过加法器相加得到输出数据(out)。更具体的,第二部分为加法树时,将输入数据in1通过加法树逐级相加得到输出数据(out),其中in1是一个长度为N的向量,N大于1,过程为:out=in1[1]+in1[2]+...+in1[N],和/或将输入数据(in1)通过加法数累加之后和输入数据(in2)相加得到输出数据(out),过程为:out=in1[1]+in1[2]+...+in1[N]+in2,或者将输入数据(in1)和输入数据(in2)相加得到输出数据(out),过程为:out=in1+in2;第三部分将输入数据(in)通过激活函数(active)运算得到激活输出数据(out),过程为:out=active(in),激活函数active可以是sigmoid、tanh、relu、softmax等,除了做激活操作,第三部分可以实现其他的非线性函数,可将将输入数据(in)通过运算(f)得到输出数据(out),过程为:out=f(in)。向量处理单元将输入数据(in)通过池化运算得到池化操作之后的输出数据(out),过程为out=pool(in),其中pool为池化操作,池化操作包括但不限于:平均值池化,最大值池化,中值池化,输入数据in是和输出out相关的一个池化核中的数据。
所述运算单元执行运算包括第一部分是将所述输入数据1和输入数据2相乘,得到相乘之后的数据;和/或第二部分执行加法运算(更具体的,为加法树运算,用于将输入数据1通过加法树逐级相加),或者将所述输入数据1通过和输入数据2相加得到输出数据;和/或第三部分执行激活函数运算,对输入数据通过激活函数(active)运算得到输出数据;和/或第四部分执行池化运算,out=pool(in),其中pool为池化操作,池化操作包括但不限于:平均值池化,最大值池化,中值池化,输入数据in是和输出out相关的一个池化核中的数据。以上几个部分的运算可以自由选择一个多个部分进行不同顺序的组合,从而实现各种不同功能的运算。计算单元相应的即组成了二级,三级,或者四级流水级架构。
在另一可选的实施例中,所述运算单元可以包括一个主处理电路以及多个从处理电路。
所述主处理电路,用于将将一个输入数据分配成多个数据块,将所述多个数据块中的至少一个数据块以及多个运算指令中的至少一个运算指令发送给所述从处理电路;
所述多个从处理电路,用于依据该运算指令对接收到的数据块执行运算得到中间结果,并将运算结果传输给所述主处理电路;
所述主处理电路,用于将多个从处理电路发送的中间结果进行处理得到该运算指令的结果,将该运算指令的结果发送给所述数据控制单元。
在一种可选实施例中,运算单元如图47C所示,可以包括分支处理电路;其中,
主处理电路与分支处理电路连接,分支处理电路与多个从处理电路连接;
分支处理电路,用于执行转发主处理电路与从处理电路之间的数据或指令。
在又一可选的实施例中,运算单元如图47D所示,可以包括一个主处理电路和多个从处理电路。可选的,多个从处理电路呈阵列分布;每个从处理电路与相邻的其他从处理电路连接,主处理电路连接所述多个从处理电路中的k个从处理电路,所述k个基础电路为:第1行的n个从处理电路、第m行的n个从处理电路以及第1列的m个从处理电路。
K个从处理电路,用于在所述主处理电路以及多个从处理电路之间的数据以及指令的转发。
可选的,如图47E所示,该主处理电路还可以包括:转换处理电路、激活处理电路、加法处理电路中的一种或任意组合;
转换处理电路,用于将主处理电路接收的数据块或中间结果执行第一数据结构与第二数据结构之间的互换(例如连续数据与离散数据的转换);或将主处理电路接收的数据块或中间结果执行第一数据类型与第二数据类型之间的互换(例如定点类型与浮点类型的转换);
激活处理电路,用于执行主处理电路内数据的激活运算;
加法处理电路,用于执行加法运算或累加运算。
所述从处理电路包括:
乘法处理电路,用于对接收到的数据块执行乘积运算得到乘积结果;
转发处理电路(可选的),用于将接收到的数据块或乘积结果转发。
累加处理电路,所述累加处理电路,用于对该乘积结果执行累加运算得到该中间结果。
在再一可选的实施例中,该运算指令可以为矩阵乘以矩阵的指令、累加指令、激活指令等等运算指令。
所述输出模块1-5包括:输出神经元缓存单元1-51,与所述运算单元连接,用于接收运算单元输出的神经元数据;
所述幂次转换模块包括:
第一幂次转换单元1-21,与所述输出神经元缓存单元连接,用于将所述输出神经元缓存单元输出的神经元数据转换为幂次神经元数据;以及
第二幂次转换单元1-22,与所述存储模块连接,用于将输入所述存储模块的神经元数据转换为幂次神经元数据。而对于神经网络输入数据中的幂次神经元数据,则直接存入存储模块。
若所述神经网络运算装置利用I/O模块实现数据输入/输出,所述第一和第二幂次转换单元也可设置在I/O模块与运算模块之间,以将神经网络运算的输入神经元数据和/或输出神经元数据转换为幂次神经元数据。
可选的,所述运算装置可包括:第三幂次转换单元1-23,用于将幂次神经元数据转换为非幂次神经元数据。非幂次神经元数据经第二幂次转换单元转换为幂次神经元数据后输入至运算单元中执行运算,运算过程中,为提高精度,可选择性的设置第三幂次转换单元,用于将幂次神经元数据转换为非幂次神经元数据,第三幂次转换单元可以设在所述运算模块外部(如图47F所示)也可以设在所述运算模块内部(如图47G所示),运算之后输出的非幂次神经元数据可利用第一幂次转换单元转换成幂次神经元数据,再反馈至数据控制单元,参与后续运算,以加快运算速度,由此可形成闭合循环。
当然,运算模块输出的数据也可以直接发送至输出神经元缓存单元,由输出神经元缓存单元发送至数据控制单元而不经由幂次转换单元。
其中,存储模块可以从外部地址空间接收数据和运算指令,该数据包括神经网络权值数据、神经网络输入数据等。
另外,幂次转换操作有多种可选方式。下面列举本实施例所采用的三种幂次转换操作:
第一种幂次转换方法:
s
out=s
in
其中,d
in为幂次转换单元的输入数据,d
out为幂次转换单元的输出数据,s
in为输入数据的符号,s
out为输出数据的符号,d
in+为输入数据的正数部分,d
in+=d
in×s
in,d
out+为输出数据的正数部分,d
out+=d
out×s
out,
表示对数据x做取下整操作。
第二种幂次转换方法:
s
out=s
in
其中,d
in为幂次转换单元的输入数据,d
out为幂次转换单元的输出数据,s
in为输入数据的符号,s
out为输出数据的符号,d
in+为输入数据的正数部分,d
in+=d
in×s
in,d
out+为输出数据的正数部分,d
out+=d
out×s
out,|x|表示对数据x做取上整操作。
第三种幂次转换方法:
s
out=s
in
d
out+=[log
2(d
in+)]
其中,d
in为幂次转换单元的输入数据,d
out为幂次转换单元的输出数据;s
in为输入数据的符号,s
out为输出数据的符号;d
in+为输入数据的正数部分,d
in+=d
in×s
in,d
out+为输出数据的正数部分,d
out+=d
out×s
out;
表示对数据x做四舍五入操作。
需要说明的是,本公开幂次转换方式除了四舍五入取整、向上取整、向下取整之外,还可以是向奇数取整、向偶数取整、向零取整和随机取整。其中,优选的为四舍五入取整、向零取整和随机取整以减小精度损失。
另外,本公开实施例还提供了一种神经网络运算方法,所述神经网络运算方法,包括:执行神经网络运算;以及在执行神经网络运算之前,将神经网络运算的输入神经元数据转换为幂次神经元数据;和/或在执行神经网络运算之后,将神经网络运算的输出神经元数据转换为幂次神经元数据。
可选的,在执行神经网络运算之前,将神经网络运算的输入神经元数据转换为幂次神经元数据的步骤包括:将输入数据中的非幂次神经元数据转换为幂次神经元数据;以及接收并存储运算指令、所述幂次神经元数据及权值数据。
可选的,在接收并存储运算指令、所述幂次神经元数据及权值数据的步骤和执行神经网络运算的步骤之间,还包括:读取运算指令,并将其译码成各运算微指令。
可选的,在执行神经网络运算的步骤中,根据运算微指令对权值数据和幂次神经元数据进行神经网络运算。
可选的,在执行神经网络运算之后,将神经网络运算的输出神经元数据转换为幂次神经元数据的步骤包括:输出神经网络运算后得到的神经元数据;以及将神经网络运算后得到的神经元数据中的非幂次神经元数据转换为幂次神经元数据。
可选的,将神经网络运算后得到的神经元数据中的非幂次神经元数据转换为幂次神经元数据并发送至所述数据控制单元,以作为神经网络运算下一层的输入幂次神经元,重复神经网络运算步骤和非幂次神经元数据转换成幂次神经元数据步骤,直到神经网络最后一层运算结束。
具体而言,本公开实施例的神经网络为多层神经网络,在一些实施例中,对于每层神经网络可按图47H所示的运算方法进行运算,其中,神经网络第一层输入幂次神经元数据可通过存储模块从外部地址读入,若外部地址读入的数据已经为幂次数据则直接传入存储模块,否则先通过幂次转换单元转换为幂次数据,此后各层神经网络的输入幂次神经元数据可由在该层之前的一层或多层神经网络的输出幂次神经元数据提供。请参照图47H,本实施例单层神经网络运算方法,包括:
步骤S1-1,获取运算指令、权值数据及神经元数据。
其中,所述步骤S1-1包括以下子步骤:
S1-11,将运算指令、神经元数据及权值数据输入存储模块;其中,对幂次神经元数据直接输入存储模块,对非幂次神经元数据经过所述第二幂次转换单元转换后输入存储模块;
S1-12,数据控制单元接收该存储模块发送的运算指令、幂次神经元数据及权值数据;
S1-13,运算指令缓存单元、输入神经元缓存单元及权值缓存单元分别接收所述数据控制单元发送的运算指令、幂次神经元数据及权值数据并分发给译码单元或运算单元。
所述幂次神经元数据表示神经元数据的数值采用其幂指数值形式表示,具体为,幂次神经元数据包括符号位和幂次位,符号位用一位或多位比特位表示幂次神经元数据的符号,幂次位用m位比特位表示幂次神经元数据的幂次位数据,m为大于1的正整数。存储模块的存储单元预存有编码表,提供幂次神经元数据的每个幂次位数据对应的指数数值。编码表设置一个或者多个幂次位数据(即置零幂次位数据)为指定对应的幂次神经元数据为0。也就是说,当幂次神经元数据的幂次位数据是编码表里的置零幂次位数据时候,表示该幂次神经元数据为0。其中,所述编码表可以有灵活的存储方式,既可以是表格形式进行存储,还可以是通过函数关系进行的映射。
编码表的对应关系可以是任意的。
例如,编码表的对应关系可以是乱序的。如图47I所示一种m为5的编码表的部分内容,幂次位数据为00000的时候对应指数数值为0。幂次位数据为00001的时候对应指数数值为3。幂次位数据为00010的时候对应指数数值为4。幂次位数据为00011的时候对应指数数值为1。幂次位数据为00100的时候对应幂次神经元数据为0。
编码表的对应关系也可以是正相关的,存储模块预存一个整数值x和一个正整数值y,最小的幂次位数据对应指数数值为x,其他任意一个或多个幂次位数据对应幂次神经元数据为0。x表示偏置值,y表示步长。在一种实施例情况下,最小的幂次位数据对应指数数值为x,最大的幂次位数据对应幂次神经元数据为0,最小和最大的幂次位数据之外的其他的幂次位数据对应指数数值为(幂次位数据+x)*y。通过预设定不同的x和y以及通过改变x和y的数值,幂次的表示范围变得可配,可以适用于需要不同数值范围的不同的应用场景。因此,本神经网络运算装置的应用范围更加广泛,使用更加灵活可变,可根据用户需求来做调整。
在一种实施例里,y为1,x的数值等于-2
m-1。由此幂次神经元数据所表示的数值的指数范围为-2
m-1~2
m-1-1。
在一种实施例里,如图47J所示一种m为5,x为0,y为1的编码表的部分内容,幂次位数据为00000的时候对应指数数值为0。幂次位数据为00001的时候对应指数数值为1。幂次位数据为00010的时候对应指数数值为2。幂次位数据为00011的时候对应指数数值为3。幂次位数据为11111的时候对应幂次神经元数据为0。如图47K所示另一种m为5,x为0,y为2的编码表的部分内容,幂次位数据为00000的时候对应指数数值为0。幂次位数据为00001的时候对应指数数值为2。幂次位数据为00010的时候对应指数数值为4。幂次位数据为00011的时候对应指数数值为6。幂次位数据为11111的时候对应幂次神经元数据为0。
编码表的对应关系可以是负相关的,存储模块预存一个整数值x和一个正整数值y,最大的幂次位数据对应指数数值为x,其他任意一个或多个幂次位数据对应幂次神经元数据为0。x表示偏置值,y表示步长。在一种实施例情况下,最大的幂次位数据对应指数数值为x,最小的幂次位数据对应幂次神经元数据为0,最小和最大的幂次位数据之外的其他的幂次位数据对应指数数值为(幂次位数据-x)*y。通过预设定不同的x和y以及通过改变x和y的数值,幂次的表示范围变得可配,可以适用于需要不同数值范围的不同的应用场景。因此,本神经网络运算装置的应用范围更加广泛,使用更加灵活可变,可根据用户需求来做调整。
在一种实施例里,y为1,x的数值等于2m-1。由此幂次神经元数据所表示的数值的指数范围为-2
m-1-1~2
m-1。
如图47L所示一种m为5的编码表的部分内容,幂次位数据为11111的时候对应数数值为0。幂次位数据为11110的时候对应指数数值为1。幂次位数据为11101的时候对应指数数值为2。幂次位数据为11100的时候对应指数数值为3。幂次位数据为00000的时候对应幂次神经元数据为0。
编码表的对应关系可以是幂次位数据最高位代表置零位,幂次位数据其他m-1位对应指数数值。当幂次位数据最高位为0时,对应幂次神经元数据为0;当幂次位数据最高位为1时,对应幂次神经元数据不为0。反之亦可,即当幂次位数据最高位为1时,对应幂次神经元数据为0;当幂次位数据最高位为0时,对应幂次神经元数据不为0。用另一种语言来描述,即幂次神经元数据的幂次位被分出一个比特来指示幂次神经元数据是否为0。
在一个具体实例图47M所示,符号位为1位,幂次位数据位为7位,即m为7。编码表为幂次位数据为11111111的时候对应幂次神经元数据为0,幂次位数据为其他数值的时候幂次神经元数据对应相应的二进制补码。当幂次神经元数据符号位为0,幂次位为0001001,则其表示具体数值为2
9,即512;幂次神经元数据符号位为1,幂次位为1111101,则其表示具体数值为-2
-3,即-0.125。相对于浮点数据,幂次数据只保留数据的幂次位,极大减小了存储数据所需的存储空间。
通过幂次数据表示方法,可以减小存储神经元数据所需的存储空间。在本实施例所提供示例中,幂次数据为8位数据,应当认识到,该数据长度不是固定不变的,在不同场合下,根据数据神经元的数据范围采用不同的数据长度。
步骤S1-2,根据运算微指令对权值数据和神经元数据进行神经网络运算。其中,所述步骤S2包括以下子步骤:
S1-21,译码单元从运算指令缓存单元中读取运算指令,并将其译码成各运算微指令;
S1-22,运算单元分别接收所述译码单元、输入神经元缓存单元及权值缓存单元发送的运算微指令、幂次神经元数据以及权值数据,并根据运算微指令对权值数据和幂次神经元数据进行神经网络运算。
所述幂次神经元与权值乘法操作具体为,幂次神经元数据符号位与权值数据符号位做异或操作;编码表的对应关系为乱序的情况下查找编码表找出幂次神经元数据幂次位对应的指数数值,编码表的对应关系为正相关的情况下记录编码表的指数数值最小值并做加法找出幂次神经元数据幂次位对应的指数数值,编码表的对应关系为负相关的情况下记录编码表的最大值并做减法找出幂次神经元数据幂次位对应的指数数值;将指数数值与权值数据幂次位做加法操作,权值数据有效位保持不变。
具体实例一如图47N所示,权值数据为16位浮点数据,符号位为0,幂次位为10101,有效位为0110100000,则其表示的实际数值为1.40625*2
6。幂次神经元数据符号位为1位,幂次位数据位为5位,即m为5。编码表为幂次位数据为11111的时候对应幂次神经元数据为0,幂次位数据为其他数值的时候幂次位数据对应相应的二进制补码。幂次神经元为000110,则其表示的实际数值为64,即2
6。权值的幂次位加上幂次神经元的幂次位结果为11011,则结果的实际数值为1.40625*2
12,即为神经元与权值的乘积结果。通过该运算操作,使得乘法操作变为加法操作,减小计算所需的运算量。
具体实例二如图47O所示,权值数据为32位浮点数据,符号位为1,幂次位为10000011,有效位为10010010000000000000000,则其表示的实际数值为-1.5703125*2
4。幂次神经元数据符号位为1位,幂次位数据位为5位,即m为5。编码表为幂次位数据为11111的时候对应幂次神经元数据为0,幂次位数据为其他数值的时候幂次位数据对应相应的二进制补码。幂次神经元为111100,则其表示的实际数值为-2
-4。(权值的幂次位加上幂次神经元的幂次位结果为01111111,则结果的实际数值为1.5703125*2
0,即为神经元与权值的乘积结果。
步骤S1-3,第一幂次转换单元将神经网络运算后的神经元数据转换成幂次神经元数据。
其中,所述步骤S1-3包括以下子步骤:
S1-31,输出神经元缓存单元接收所述计算单元发送的神经网络运算后得到的神经元数据;
S1-32,第一幂次转换单元接收所述输出神经元缓存单元发送的神经元数据,并将其中的非幂次神经元数据转换为幂次神经元数据。
其中,可选的幂次转换操作有多种,根据实际的应用需求选择。本实施例中列举了三种幂次转换操作:
第一种幂次转换方法:
s
out=s
in
其中,d
in为幂次转换单元的输入数据,d
out为幂次转换单元的输出数据,s
in为输入数据的符号,s
out为输出数据的符号,d
in+为输入数据的正数部分,d
in+=d
in×s
in,d
out+为输出数据的正数部分,d
out+=d
out×s
out,
表示对数据x做取下整操作。
第二种幂次转换方法:
s
out=s
in
其中,d
in为幂次转换单元的输入数据,d
out为幂次转换单元的输出数据,s
in为输入数据的符号,s
out为输出数据的符号,d
in+为输入数据的正数部分,d
in+=d
in×s
in,d
out+为输出数据的正数部分,d
out+=d
out×s
out,|x|表示对数据x做取上整操作。
第三种幂次转换方法:
s
out=s
in
d
out+=[log
2(d
in+)]
其中,d
in为幂次转换单元的输入数据,d
out为幂次转换单元的输出数据;s
in为输入数据的符号,s
out为输出数据的符号;d
in+为输入数据的正数部分,d
in+=d
in×s
in,d
out+为输出数据的正数部分,d
out+=d
out×s
out;
表示对数据x做四舍五入操作。
另外,通过幂次转换单元获得的幂次神经元数据可作为神经网络运算下一层的输入幂次神经元,再重复步骤1至步骤3直到神经网络最后一层运算结束。通过改变存储模块预存的整数值x和正整数值y,可以调整神经网络运算装置所能表示的幂次神经元数据范围。
在另一个实施例里,本公开还提供了一种使用所述神经网络运算装置的方法,通过改变存储模块预存的整数值x和正整数值y,以调整神经网络运算装置所能表示的幂次神经元数据范围。
在本公开的另一些实施例中,与前述实施例不同的是,所述运算装置的幂次转换模块,与所述运算模块连接,用于将神经网络运算的输入数据和/或输出数据转换为幂次数据。
具体的,所述输入数据包括输入神经元数据、输入权值数据,所述输出数据包括输出神经元数据、输出权值数据,所述幂次数据包括幂次神经元数据、幂次权值数据。
也就是说,在前述实施例的基础上,此处的幂次转换模块除了可以对神经元数据进行幂次转换之外,还可以对权值数据进行幂次转换,另外,运算结果中的权值数据转换为幂次权值数据之后,可直接发送至数据控制单元,参与后续运算。运算装置的其余模块、单元组成、功能用途及连接关系与前述实施例类似。
如图48A所示,本实施例神经网络运算装置中,包括存储模块2-4、控制模块2-3、运算模块2-1、输出模块2-5及幂次转换模块2-2。
所述存储模块包括:存储单元2-41,用于存储数据和指令;
所述控制模块包括:
数据控制单元2-31,与所述存储单元连接,用于存储单元和各缓存单元之间的数据和指令交互;
运算指令缓存单元2-32,与所述数据控制单元连接,用于接收数据控制单元发送的指令;
译码单元2-33,与所述指令缓存单元连接,用于从指令缓存单元中读取指令,并将其译码成各运算指令;
输入神经元缓存单元2-34,与所述数据控制单元连接,用于接收数据控制单元发送的神经元数据;
权值缓存单元2-35,与所述数据控制单元连接,用于接收从数据控制单元发送的权值数据。
所述运算模块包括:运算单元2-11,与所述控制模块连接,接收该控制模块发送的数据和运算指令,并根据运算指令对其接收的神经元数据及权值数据执行神经网络运算;
所述输出模块包括:输出神经元缓存单元2-51,与所述运算单元连接,用于接收运算单元输出的神经元数据;并将其发送至所述数据控制单元。由此可作为下一层神经网络运算的输入数据;
所述幂次转换模块可包括:
第一幂次转换单元2-21,与所述输出神经元缓存单元及所述运算单元连接,用于将所述输出神经元缓存单元输出的神经元数据转换为幂次神经元数据以及将运算单元输出的权值数据转换为幂次权值数据;和/或
第二幂次转换单元2-22,与所述存储模块连接,用于将输入所述存储模块的神经元数据、权值数据分别转换为幂次神经元数据、幂次权值数据;
可选的,所述运算装置还包括:第三幂次转换单元2-23,与所述运算单元连接,用于将幂次神经元数据、幂次权值数据分别转换为非幂次神经元数据、非幂次权值数据。
需要说明的是,此处仅以幂次转换模块同时包括第一幂次转换单元、第二幂次转换单元和第三幂次转换单元为例进行说明,但实际上,所述幂次转换模块可以包括第一幂次转换单元、第二幂次转换单元和第三幂次转换单元的其中任一,同前述图47B、47F、47G所示的实施例。
非幂次神经元数据、权值数据经第二幂次转换单元转换为幂次神经元数据、幂次权值数据后输入至运算单元中执行运算,运算过程中,为提高精度,可通过设置第三幂次转换单元,将幂次神经元数据、幂次权值数据转换为非幂次神经元数据、非幂次权值数据,第三幂次转换单元可以设在所述运算模块外部也可以设在所述运算模块内部,运算之后输出的非幂次神经元数据可利用第一幂次转换单元转换成幂次神经元数据,再反馈至数据控制单元,参与后续运算,以加快运算速度,由此可形成闭合循环。
另外,所述权值数据幂次转换的具体操作方法与前述实施例相同,此处不再赘述。
在一些实施例中,所述神经网络为多层神经网络,对于每层神经网络可按图48B所示的运算方法进行运算,其中,神经网络第一层输入幂次权值数据可通过存储单元从外部地址读入,若外部地址读入的权值数据已经为幂次权值数据则直接传入存储单元,否则先通过幂次转换单元转换为幂次权值数据。请参照图48B,本实施例单层神经网络运算方法,包括:
步骤S2-1,获取指令、神经元数据及幂次权值数据。
其中,所述步骤S2-1包括以下子步骤:
S2-11,将指令、神经元数据及权值数据输入存储单元;其中,对幂次权值数据直接输入存储单元,对非幂次权值数据经过幂次转换单元转换后输入存储单元;
S2-12,数据控制单元接收该存储单元发送的指令、神经元数据及幂次权值数据;
S2-13,指令缓存单元、输入神经元缓存单元及权值缓存单元分别接收所述数据控制单元发送的指令、神经元数据及幂次权值数据并分发给译码单元或运算单元。
所述幂次权值数据表示权值数据的数值采用其幂指数值形式表示,具体为,幂次权值数据包括符号位和幂次位,符号位用一位或多位比特位表示权值数据的符号,幂次位用m位比特位表示权值数据的幂次位数据,m为大于1的正整数。存储单元预存有编码表,提供幂次权值数据的每个幂次位数据对应的 指数数值。编码表设置一个或者多个幂次位数据(即置零幂次位数据)为指定对应的幂次权值数据为0。也就是说,当幂次权值数据的幂次位数据是编码表里的置零幂次位数据时候,表示该幂次权值数据为0。编码表的对应关系与前述实施例中类似,此处不再赘述。
在一个具体实例图48C所示,符号位为1位,幂次位数据位为7位,即m为7。编码表为幂次位数据为11111111的时候对应幂次权值数据为0,幂次位数据为其他数值的时候幂次权值数据对应相应的二进制补码。当幂次权值数据符号位为0,幂次位为0001001,则其表示具体数值为2
9,即512;幂次权值数据符号位为1,幂次位为1111101,则其表示具体数值为-2
-3,即-0.125。相对于浮点数据,幂次数据只保留数据的幂次位,极大减小了存储数据所需的存储空间。
通过幂次数据表示方法,可以减小存储权值数据所需的存储空间。在本实施例所提供示例中,幂次数据为8位数据,应当认识到,该数据长度不是固定不变的,在不同场合下,根据数据权值的数据范围采用不同的数据长度。
步骤S2-2,根据运算指令对神经元数据及幂次权值数据进行神经网络运算。其中,所述步骤S2包括以下子步骤:
S2-21,译码单元从指令缓存单元中读取指令,并将其译码成各运算指令;
S2-22,运算单元分别接收所述译码单元、输入神经元缓存单元及权值缓存单元发送的运算指令、幂次权值数据以及神经元数据,并根据运算指令对神经元数据及幂次表示的权值数据进行神经网络运算。
所述神经元与幂次权值乘法操作具体为,神经元数据符号位与幂次权值数据符号位做异或操作;编码表的对应关系为乱序的情况下查找编码表找出幂次权值数据幂次位对应的指数数值,编码表的对应关系为正相关的情况下记录编码表的指数数值最小值并做加法找出幂次权值数据幂次位对应的指数数值,编码表的对应关系为负相关的情况下记录编码表的最大值并做减法找出幂次权值数据幂次位对应的指数数值;将指数数值与神经元数据幂次位做加法操作,神经元数据有效位保持不变。
具体实例一如图48D所示,神经元数据为16位浮点数据,符号位为0,幂次位为10101,有效位为0110100000,则其表示的实际数值为1.40625*26。幂次权值数据符号位为1位,幂次位数据位为5位,即m为5。编码表为幂次位数据为11111的时候对应幂次权值数据为0,幂次位数据为其他数值的时候幂次位数据对应相应的二进制补码。幂次权值为000110,则其表示的实际数值为64,即2
6。幂次权值的幂次位加上神经元的幂次位结果为11011,则结果的实际数值为1.40625*2
12,即为神经元与幂次权值的乘积结果。通过该运算操作,使得乘法操作变为加法操作,减小计算所需的运算量。
具体实例二如图48E所示,神经元数据为32位浮点数据,符号位为1,幂次位为10000011,有效位为10010010000000000000000,则其表示的实际数值为-1.5703125*2
4。幂次权值数据符号位为1位,幂次位数据位为5位,即m为5。编码表为幂次位数据为11111的时候对应幂次权值数据为0,幂次位数据为其他数值的时候幂次位数据对应相应的二进制补码。幂次神经元为111100,则其表示的实际数值为-2
-4。(神经元的幂次位加上幂次权值的幂次位结果为01111111,则结果的实际数值为1.5703125*2
0,即为神经元与幂次权值的乘积结果。
可选的,还包括步骤S2-3,将神经网络运算后的神经元数据输出并作为下一层神经网络运算的输入数据。
其中,所述步骤S2-3可包括以下子步骤:
S2-31,输出神经元缓存单元接收所述计算单元发送的神经网络运算后得到的神经元数据。
S2-32,将输出神经元缓存单元接收的神经元数据传输给数据控制单元,通过输出神经元缓存单元获得的神经元数据可作为神经网络运算下一层的输入神经元,再重复步骤S2-1至步骤S2-3直到神经网络最后一层运算结束。
另外,通过幂次转换单元获得的幂次神经元数据可作为神经网络运算下一层的输入幂次神经元,再 重复步骤S2-1至步骤S2-3直到神经网络最后一层运算结束。通过改变存储单元预存的整数值x和正整数值y,可以调整神经网络运算装置所能表示的幂次神经元数据范围。
在一些实施例中,所述神经网络为多层神经网络,对于每层神经网络可按图48F所示的运算方法进行运算,其中,神经网络第一层输入幂次权值数据可通过存储单元从外部地址读入,若外部地址读入的数据已经为幂次权值数据则直接传入存储单元,否则先通过幂次转换单元转换为幂次权值数据;而神经网络第一层输入幂次神经元数据可通过存储单元从外部地址读入,若外部地址读入的数据已经为幂次数据则直接传入存储单元,否则先通过幂次转换单元转换为幂次神经元数据,此后各层神经网络的输入神经元数据可由在该层之前的一层或多层神经网络的输出幂次神经元数据提供。请参照图48F,本实施例单层神经网络运算方法,包括:
步骤S2-4,获取指令、幂次神经元数据及幂次权值数据。
其中,所述步骤S2-4包括以下子步骤:
S2-41,将指令、神经元数据及权值数据输入存储单元;其中,对幂次神经元数据及幂次权值数据直接输入存储单元,对非幂次神经元数据及非幂次权值数据则经过所述第一幂次转换单元转换为幂次神经元数据及幂次权值数据后输入存储单元;
S2-42,数据控制单元接收该存储单元发送的指令、幂次神经元数据及幂次权值数据;
S2-43,指令缓存单元、输入神经元缓存单元及权值缓存单元分别接收所述数据控制单元发送的指令、幂次神经元数据及幂次权值数据并分发给译码单元或运算单元。
所述幂次神经元数据及幂次权值数据表示神经元数据及权值数据的数值采用其幂指数值形式表示,具体为,幂次神经元数据及幂次权值数据均包括符号位和幂次位,符号位用一位或多位比特位表示神经元数据及权值数据的符号,幂次位用m位比特位表示神经元数据及权值数据的幂次位数据,m为大于1的正整数。存储单元的存储单元预存有编码表,提供幂次神经元数据及幂次权值数据的每个幂次位数据对应的指数数值。编码表设置一个或者多个幂次位数据(即置零幂次位数据)为指定对应的幂次神经元数据及幂次权值数据为0。也就是说,当幂次神经元数据及幂次权值数据的幂次位数据是编码表里的置零幂次位数据时候,表示该幂次神经元数据及幂次权值数据为0。
在一个具体实例方式中,如图48G所示,符号位为1位,幂次位数据位为7位,即m为7。编码表为幂次位数据为11111111的时候对应幂次神经元数据及幂次权值数据为0,幂次位数据为其他数值的时候幂次神经元数据及幂次权值数据对应相应的二进制补码。当幂次神经元数据及幂次权值数据符号位为0,幂次位为0001001,则其表示具体数值为2
9,即512;幂次神经元数据及幂次权值数据符号位为1,幂次位为1111101,则其表示具体数值为-2
-3,即-0.125。相对于浮点数据,幂次数据只保留数据的幂次位,极大减小了存储数据所需的存储空间。
通过幂次数据表示方法,可以减小存储神经元数据及权值数据所需的存储空间。在本实施例所提供示例中,幂次数据为8位数据,应当认识到,该数据长度不是固定不变的,在不同场合下,根据神经元数据及权值数据的数据范围采用不同的数据长度。
步骤S2-5,根据运算指令对幂次神经元数据及幂次权值数据进行神经网络运算。其中,所述步骤S5包括以下子步骤:
S2-51,译码单元从指令缓存单元中读取指令,并将其译码成各运算指令;
S2-52,运算单元分别接收所述译码单元、输入神经元缓存单元及权值缓存单元发送的运算指令、幂次神经元数据及幂次权值数据,并根据运算指令对幂次神经元数据及幂次权值数据进行神经网络运算。
所述幂次神经元与幂次权值乘法操作具体为,幂次神经元数据符号位与幂次权值数据符号位做异或操作;编码表的对应关系为乱序的情况下查找编码表找出幂次神经元数据及幂次权值数据幂次位对应的指数数值,编码表的对应关系为正相关的情况下记录编码表的指数数值最小值并做加法找出幂次神经元 数据及幂次权值数据幂次位对应的指数数值,编码表的对应关系为负相关的情况下记录编码表的最大值并做减法找出幂次神经元书记及幂次权值数据幂次位对应的指数数值;将幂次神经元数据对应的指数数值与幂次权值数据对应的指数数值做加法操作。
具体实例一如图48H所示,幂次神经元数据和幂次权值数据符号位为1位,幂次位数据位为4位,即m为4。编码表为幂次位数据为1111的时候对应幂次权值数据为0,幂次位数据为其他数值的时候幂次位数据对应相应的二进制补码。幂次神经元数据为00010,则其表示的实际数值为2
2。幂次权值为00110,则其表示的实际数值为64,即2
6。幂次神经元数据和幂次权值数据的乘积为01000,其表示的实际数值为2
8。
可以看到,幂次神经元数据和幂次权值的乘法运算相比于浮点数据的乘法以及浮点数据和幂次数据的乘法都更加的简单方便。
本实施例方法还可进一步包括,步骤S2-6,将神经网络运算后的神经元数据输出并作为下一层神经网络运算的输入数据。
其中,所述步骤S2-6包括以下子步骤:
S2-61,输出神经元缓存单元接收所述计算单元发送的神经网络运算后得到的神经元数据。
S2-62,将输出神经元缓存单元接收的神经元数据传输给数据控制单元,通过输出神经元缓存单元获得的神经元数据可作为神经网络运算下一层的输入神经元,再重复步骤S4至步骤S6直到神经网络最后一层运算结束。
由于神经网络运算后得到的神经元数据也为幂次数据,将其传输给数据控制单元所需带宽相比于浮点数据所需带宽大大减少,因此进一步减小了神经网络存储资源和计算资源的开销,提高了神经网络的运算速度。
另外,所述幂次转换的具体操作方法与前述实施例相同,此处不再赘述。
所公开的实施例的所有的单元都可以是硬件结构,硬件结构的物理实现包括但不局限于物理器件,物理器件包括但不局限于晶体管,忆阻器,DNA计算机。
本公开的一个实施例提供了一种运算装置,包括:
运算控制模块3-2,用于确定分块信息;以及
运算模块3-3,用于根据所述分块信息对运算矩阵进行分块、转置及合并运算,以得到所述运算矩阵的转置矩阵。
具体的,所述分块信息可以包括分块大小信息,分块方式信息,分块合并信息的至少一种。其中,分块大小信息表示将所述运算矩阵进行分块后,所获得的各个分块矩阵的大小信息。分开方式信息表示对所述运算矩阵进行分块的方式。分开合并信息表示将各个分块矩阵进行转置运算后,重新合并获得运算矩阵的转置矩阵的方式。
由于本公开运算装置可以对运算矩阵进行分块,通过对多个分块矩阵分别进行转置运算得到多个分块矩阵的转置矩阵,最终对多个分块矩阵的转置矩阵进行合并,得到运算矩阵的转置矩阵,因此可以实现使用一条单独指令在常数时间复杂度内完成任意大小矩阵的转置操作。相比较传统的矩阵转置操作实现方法,本公开在降低操作时间复杂度的同时也使矩阵转置操作的使用更为简单高效。
如图49A-49B所示,在本公开的一些实施例中,所述运算装置,还包括:
地址存储模块3-1,用于存储运算矩阵的地址信息;以及
数据存储模块3-4,用于存储原始矩阵数据,该原始矩阵数据包括所述运算矩阵,并存储运算后的转置矩阵;
其中,所述运算控制模块用于从地址存储模块提取运算矩阵的地址信息,并根据运算矩阵的地址信息分析得到分块信息;所述运算模块用于从运算控制模块获取运算矩阵的地址信息及分块信息,根据运算矩阵的地址信息从数据存储模块提取运算矩阵,并根据分块信息对运算矩阵进行分块、转置及合并运 算,得到运算矩阵的转置矩阵,并将运算矩阵的转置矩阵反馈至数据存储模块。
如图49C所示,在本公开的一些实施例中,上述运算模块包括矩阵分块单元、矩阵运算单元和矩阵合并单元,其中:
矩阵分块单元3-31:用于从运算控制模块获取运算矩阵的地址信息及分块信息,并根据运算矩阵的地址信息从数据存储模块提取运算矩阵,根据分块信息对运算矩阵进行分块运算得到n个分块矩阵;
矩阵运算单元3-32,用于获取n个分块矩阵,并对n个分块矩阵分别进行转置运算,得到n个分块矩阵的转置矩阵;
矩阵合并单元3-33,用于获取并合并n个分块矩阵的转置矩阵,得到所述运算矩阵的转置矩阵,其中,n为自然数。
举例而言,如图49D所示,对于存储于数据存储模块中的一运算矩阵X,运算模块的矩阵分块单元从数据存储模块中提取所述运算矩阵X,根据分块信息对运算矩阵X进行分块运算操作,得到4个分块矩阵X1、X2、X3、X4,并输出至矩阵运算单元;矩阵运算单元从矩阵分块单元中获取这4个分块矩阵,并对这4个分块矩阵分别进行转置运算操作,得到4个分块矩阵的转置矩阵X1T、X2T、X3T、X4T,并输出至矩阵合并单元;矩阵合并单元从矩阵运算单元中获取这4个分块矩阵的转置矩阵并进行合并,得到运算矩阵的转置矩阵X T,还可进一步将转置矩阵X T输出至数据存储模块。
在本公开的一些实施例中,上述运算模块还包括缓存单元3-34,用于缓存n个分块矩阵,以供矩阵运算单元获取。
在本公开的一些实施例中,上述矩阵合并单元还可以包括存储器,用于暂时存储获取的分块矩阵的转置矩阵,当矩阵运算单元完成所有分块矩阵的运算后,矩阵合并单元即可获取到所有分块矩阵的转置矩阵,再对n个分块矩阵的转置矩阵进行合并操作,得到转置后的矩阵,并将输出结果写回到数据存储模块中。
本领域技术人员应当可以理解的是,上述矩阵分块单元、矩阵运算单元及矩阵合并单元既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。所述矩阵分块单元及矩阵合并单元可包括一个或多个控制元件、所述矩阵运算单元可包括一个或多个控制元件、计算元件。
如图49E所示,在本公开的一些实施例中,上述运算控制模块包括指令处理单元3-22、指令缓存单元3-21和矩阵判断单元3-23,其中:
指令缓存单元,用于存储待执行的矩阵运算指令;
指令处理单元,用于从指令缓存单元中获取矩阵运算指令,对矩阵运算指令进行译码,并根据译码后的矩阵运算指令从地址存储模块中提取运算矩阵的地址信息;
矩阵判断单元,用于根据运算矩阵的地址信息判断是否需要进行分块,并根据判断结果得到分块信息。
在本公开的一些实施例中,上述运算控制模块还包括依赖关系处理单元3-24,用于判断译码后的矩阵运算指令和运算矩阵的地址信息是否与上一运算存在冲突,若存在冲突,则暂存译码后的矩阵运算指令和运算矩阵的地址信息;若不存在冲突,则发射译码后的矩阵运算指令和运算矩阵的地址信息至矩阵判断单元。
在本公开的一些实施例中,上述运算控制模块还包括指令队列存储器3-25,用于缓存存在冲突的译码后的矩阵运算指令和运算矩阵的地址信息,当所述冲突消除后,将所缓存的译码后的矩阵运算指令和运算矩阵的地址信息发射至矩阵判断单元。
具体地,矩阵运算指令访问数据存储模块时,前后指令可能会访问同一块存储空间,为了保证指令执行结果的正确性,当前指令如果被检测到与之前的指令的数据存在依赖关系,该指令必须在指令队列存储器内等待至依赖关系被消除。
在本公开的一些实施例中,上述指令处理单元包括取指单元3-221和译码单元3-222,其中:
取指单元,用于从指令缓存单元中获取矩阵运算指令,并将此矩阵运算指令传输至译码单元;
译码单元,用于对矩阵运算指令进行译码,根据该译码后的矩阵运算指令从地址存储模块中提取运算矩阵的地址信息,并将译码后的矩阵运算指令和提取的运算矩阵的地址信息传输至所述依赖关系处理单元。
在本公开的一些实施例中,上述运算装置还包括输入输出模块,用于向数据存储模块输入所述运算矩阵,还用于从数据存储模块获取运算后的转置矩阵,并输出运算后的转置矩阵。
在本公开的一些实施例中,上述运算矩阵的地址信息为矩阵的起始地址信息和矩阵大小信息。
在本公开的一些实施例中,运算矩阵的地址信息是矩阵在数据存储模块中的存储地址。
在本公开的一些实施例中,地址存储模块为标量寄存器堆或通用内存单元;数据存储模块为高速暂存存储器或通用内存单元。
在本公开的一些实施例中,地址存储模块可以是标量寄存器堆,提供运算过程中所需的标量寄存器,标量寄存器不只存放矩阵地址,还可存放有标量数据。当对大规模矩阵进行转置时进行了分块操作后,标量寄存器中的标量数据可以用于记录矩阵块的数量。
在本公开的一些实施例中,数据存储模块可以是高速暂存存储器,能够支持不同大小的矩阵数据。
在本公开的一些实施例中,矩阵判断单元用于判断矩阵大小,如果超过规定的最大规模M,则需要对矩阵进行分块操作,矩阵判断单元根据此判断结果分析得到分块信息。
在本公开的一些实施例中,指令缓存单元,用于存储待执行的矩阵运算指令。指令在执行过程中,同时也被缓存在指令缓存单元中,当一条指令执行完之后,如果该指令同时也是指令缓存单元中未被提交指令中最早的一条指令,该指令将被提交,一旦提交,该条指令进行的操作对装置状态的改变将无法撤销。该指令缓存单元可以是重排序缓存。
在本公开的一些实施例中,矩阵运算指令为矩阵转置运算指令,包括操作码和操作域,其中,操作码用于指示该矩阵转置运算指令的功能,矩阵运算控制模块通过识别该操作码确认进行矩阵转置操作,操作域用于指示该矩阵转置运算指令的数据信息,其中,数据信息可以是立即数或寄存器号,例如,要获取一个矩阵时,根据寄存器号可以在相应的寄存器中获取矩阵起始地址和矩阵规模,再根据矩阵起始地址和矩阵规模在数据存储模块中获取相应地址存放的矩阵。
本公开使用一种新的运算结构简单高效的实现对矩阵的转置运算,降低了这一运算的时间复杂度。
本公开还公开了一种运算方法,包括以下步骤:
步骤1、运算控制模块从地址存储模块提取运算矩阵的地址信息;
步骤2、运算控制模块根据运算矩阵的地址信息得到分块信息,并将运算矩阵的地址信息和分块信息传输至运算模块;
步骤3、运算模块根据运算矩阵的地址信息从数据存储模块提取运算矩阵;并根据分块信息将运算矩阵分成n个分块矩阵;
步骤4、运算模块对n个分块矩阵分别进行转置运算,得到n个分块矩阵的转置矩阵;
步骤5、运算模块合并n个分块矩阵的转置矩阵,得到运算矩阵的转置矩阵并反馈至数据存储模块;
其中,n为自然数。
以下通过具体实施例对本公开提出的运算装置及方法进行详细描述。
在一些实施例中,如图49F所示,本实施例提出一种运算装置,包括地址存储模块、运算控制模块、运算模块、数据存储模块和输入输出模块3-5,其中
可选的,所述运算控制模块包括指令缓存单元、指令处理单元、依赖关系处理单元、指令队列存储器和矩阵判断单元,其中指令处理单元又包括取指单元和译码单元;
可选的,所述运算模块包括矩阵分块单元、矩阵缓存单元、矩阵运算单元和矩阵合并单元;
可选的,所述地址存储模块为一标量寄存器堆;
可选的,所述数据存储模块为一高速暂存存储器;输入输出模块为一IO直接内存存取模块。
以下对运算装置的各组成部分进行详细说明:
取指单元,该单元负责从指令缓存单元中取出下一条将要执行的运算指令,并将该运算指令传给译码单元;
译码单元,该单元负责对运算指令进行译码,并将译码后的运算指令发送至标量寄存器堆,得到标量寄存器堆反馈的运算矩阵的地址信息,将译码后的运算指令和得到的运算矩阵的地址信息传输给依赖关系处理单元;
依赖关系处理单元,该单元处理运算指令与前一条指令可能存在的存储依赖关系。矩阵运算指令会访问高速暂存存储器,前后指令可能会访问同一块存储空间。为了保证指令执行结果的正确性,当前运算指令如果被检测到与之前的运算指令的数据存在依赖关系,该运算指令必须缓存至指令队列存储器内等待至依赖关系被消除;如当前运算指令与之前的运算指令不存在依赖关系,则依赖关系处理单元直接将运算矩阵的地址信息和译码后的运算指令传输至矩阵判断单元。
指令队列存储器,考虑到不同运算指令所对应的/指定的标量寄存器上有可能存在依赖关系,用于缓存存在冲突的译码后的运算指令和相应的运算矩阵的地址信息,当依赖关系被满足之后发射译码后的运算指令和相应的运算矩阵的地址信息至矩阵判断单元;
矩阵判断单元,用于根据运算矩阵的地址信息判断矩阵大小,如果超过规定的最大规模M,则需要对矩阵进行分块操作,矩阵判断单元根据此判断结果分析得到分块信息,并将运算矩阵的地址信息和得到的分块信息传输至矩阵分块单元。
矩阵分块单元,该单元负责根据运算矩阵的地址信息,从高速暂存器中提取需进行转置运算的运算矩阵,并根据分块信息对该运算矩阵进行分块,得到n个分块矩阵。矩阵缓存单元,该单元用于缓存经过分块后的n个分块矩阵,依次传输至矩阵运算单元进行转置运算;
矩阵运算单元,负责依次从矩阵缓存单元中提取分块矩阵进行转置运算,并将转置后的分块矩阵传输至矩阵合并单元;
矩阵合并单元,负责接收并暂时缓存转置后的分块矩阵,待所有分块矩阵都进行完转置运算后,对n个分块矩阵的转置矩阵进行合并运算,得到运算矩阵的转置矩阵。
标量寄存器堆,提供装置在运算过程中所需的标量寄存器,为运算提供运算矩阵的地址信息;
高速暂存器,该模块是矩阵数据专用的暂存存储装置,能够支持不同大小的矩阵数据。
IO内存存取模块,该模块用于直接访问高速暂存存储器,负责从高速暂存存储器中读取数据或写入数据。
在一些实施例中,如图49G所示,本实施例提出一种运算方法,用于执行大规模矩阵的转置运算,具体包括以下步骤:
步骤1、运算控制模块从地址存储模块提取运算矩阵的地址信息,具体包括以下步骤:
步骤1-1、取指单元提取运算指令,并将运算指令送至译码单元;
步骤1-2、译码单元对运算指令进行译码,根据译码后的运算指令从地址存储模块获取运算矩阵的地址信息,并将译码后的运算指令和运算矩阵的地址信息送往依赖关系处理单元;
步骤1-3、依赖关系处理单元分析该译码后的运算指令与前面的尚未执行结束的指令在数据上是否存在依赖关系;具体而言,所述依赖关系处理单元可根据运算指令所需读取的寄存器的地址,判断该寄存器是否存在待写入的情况,如有,则存在依赖关系,待数据写回后,才可执行该运算指令。
若存在依赖关系,该条译码后的运算指令与相应的运算矩阵的地址信息需要在指令队列存储器中等待至其与前面的未执行结束的指令在数据上不再存在依赖关系为止;
步骤2、运算控制模块根据运算矩阵的地址信息得到分块信息;
具体的,依赖关系不存在后,指令队列存储器发射该条译码后的运算指令与相应的运算矩阵的地址 信息至矩阵判断单元,判断矩阵是否需要进行分块,矩阵判断单元根据判断结果得到分块信息,并将分块信息和运算矩阵的地址信息传输至矩阵分块单元;
步骤3、运算模块根据运算矩阵的地址信息从数据存储模块提取运算矩阵;并根据分块信息将运算矩阵分成n个分块矩阵;
具体的,矩阵分块单元根据传入的运算矩阵的地址信息从数据存储模块中取出需要的运算矩阵,再根据传入的分块信息,将运算矩阵分成n个分块矩阵,完成分块后依次将每个分块矩阵传入到矩阵缓存单元;
步骤4、运算模块分别对n个分块矩阵进行转置运算,得到n个分块矩阵的转置矩阵;
具体的,矩阵运算单元依次从矩阵缓存单元提取分块矩阵,并对每个提取的分块矩阵进行转置操作,再将得到的每个分块矩阵的转置矩阵传入到矩阵合并单元。
步骤5、运算模块合并n个分块矩阵的转置矩阵,得到运算矩阵的转置矩阵,并将该转置矩阵反馈给数据存储模块,具体包括以下步骤:
步骤5-1、矩阵合并单元接收每个分块矩阵的转置矩阵,当接收到的分块矩阵的转置矩阵数量达到总的分块数后,对所有的分块进行矩阵合并操作,得到运算矩阵的转置矩阵;并将该转置矩阵反馈至数据存储模块的指定地址;
步骤5-2、输入输出模块直接访问数据存储模块,从数据存储模块中读取运算得到的运算矩阵的转置矩阵。
本公开提到的向量可以是0维向量,1维向量,2维向量或者多维向量。其中,0维向量也可以被称为标量,2维也可以被称为矩阵。
本公开的一个实施例提出了一种数据筛选装置,参见图50A,包括:存储单元4-3,用于存储数据和指令,其中数据包括待筛选数据和位置信息数据。
寄存器单元4-2,用于存放存储单元中的数据地址。
数据筛选模块4-1,包括数据筛选单元4-11,数据筛选模块根据指令在寄存器单元中获取数据地址,根据该数据地址在存储单元中获取相应的数据,并根据获取的数据进行筛选操作,得到数据筛选结果。
数据筛选单元功能示意图如图50B所示,其输入数据为待筛选数据和位置信息数据,输出数据可以只包含筛选后数据,也可以同时包含筛选后数据的相关信息,相关信息例如是向量长度、数组大小、所占空间等。
进一步地,参见图50C,本实施例的数据筛选装置具体包括:
存储单元4-3,用于存储待筛选数据、位置信息数据和指令。
寄存器单元4-2,用于存放存储单元中的数据地址。
数据筛选模块4-1包括:
指令缓存单元4-12,用于存储指令。
控制单元4-13,从指令缓存单元中读取指令,并将其译码成具体操作微指令。
I/O单元4-16,将存储单元中的指令搬运到指令缓存单元中,将存储单元中的数据搬运到输入数据缓存单元和输出缓存单元中,也可以将输出缓存单元中的输出数据搬运到存储单元中。
输入数据缓存单元4-14,存储I/O单元搬运的数据,包括待筛选数据和位置信息数据。
数据筛选单元4-11,用于接收控制单元传来的微指令,并从寄存器单元获取数据地址,将输入数据缓存单元传来的待筛选数据和位置信息数据作为输入数据,对输入数据进行筛选操作,完成后将筛选后数据传给输出数据缓存单元。
输出数据缓存单元4-15,存储输出数据,输出数据可以只包含筛选后数据,也可以同时包含筛选后数据的相关信息,如向量长度、数组大小、所占空间等等。
本实施例的数据筛选装置适用于多种筛选对象,待筛选数据可以是向量或高维数组等,位置信息数 据既可以是二进制码,也可以是向量或高维数组等,其每个分量为0或1。其中,待筛选数据的分量和位置信息数据的分量可以是一一对应的。本领域技术人员应当可以理解的是,位置信息数据的每个分量为1或0只是位置信息的一种示例性的表示方式,位置信息的表示方式并不局限在这一种表示方式。
可选的,对于位置信息数据中每个分量使用0或1表示时,数据筛选单元对输入数据进行筛选操作具体包括,数据筛选单元扫描位置信息数据的每个分量,若分量为0,则删除该分量对应的待筛选数据分量,若分量为1,则保留该分量对应的待筛选数据分量;或者,若位置信息数据的分量为1,则删除该分量对应的待筛选数据分量,若分量为0,则保留该分量对应的待筛选数据分量。当扫描完毕,则筛选完成,得到筛选后数据并输出。此外,在进行筛选操作的同时,还可以对筛选后数据的相关信息进行记录,如向量长度、数组大小、所占空间等等,根据具体情况决定是否同步进行相关信息的记录和输出。需要说明的是,位置信息数据的每个分量采用其他表示方式进行表示时,数据筛选单元还可以配置与表示方式相应的筛选操作。
以下通过实例说明数据筛选的过程。
例一:
设待筛选数据为向量(1 0 101 34 243),需要筛选的是小于100的分量,那么输入的位置信息数据也是向量,即向量(1 1 0 1 0)。经过筛选后的数据可以仍保持向量结构,并且可以同时输出筛选后数据的向量长度。
其中,位置信息向量可以是外部输入的,也可以是内部生成的。可选的,在本公开装置还可以包括位置信息生成模块,位置信息生成模块可以用于生成位置信息向量,该位置信息生成模块与数据筛选单元连接。具体而言,位置信息生成模块可以通过向量运算生成位置信息向量,向量运算可以是向量比较运算,即通过对待筛选向量的分量逐一与预设数值比较大小得到。需要说明的是,位置信息生成模块还可以根据预设条件选择其他向量运算生成位置信息向量。。本例中规定位置信息数据的分量为1则保留对应的待筛选数据分量,分量为0则删除对应的待筛选数据分量。
数据筛选单元初始化一个变量length=0,用以记录筛选后数据的向量长度;
数据筛选单元读取输入数据缓存单元的数据,扫描位置信息向量的第1个分量,发现其值为1,则保留待筛选向量的第1个分量的值1,length=length+1;
扫描位置信息向量的第2个分量,发现其值为1,则保留待筛选向量的第2个分量的值0,length=length+1;
扫描位置信息向量的第3个分量,发现其值为0,则删去待筛选向量的第3个分量的值101,length不变;
扫描位置信息向量的第4个分量,发现其值为1,则保留待筛选向量的第4个分量的值34,length=length+1;
扫描位置信息向量的第5个分量,发现其值为0,则保留待筛选向量的第5个分量的值243,length不变;
保留下来的值组成筛选后向量(1 0 34)及其向量长度为length=3,并由输出数据缓存单元存储。
在本实施例的数据筛选装置中,数据筛选模块还可以包括一结构变形单元4-17,可以对输入数据缓存单元的输入数据、以及输出数据缓存单元的输出数据的存储结构进行变形,如将高维数组展开为向量,将向量变为高维数组等等。可选的,将高维数据展开的方式可以是行优先,也可以是列优先,还可以根据具体情况选择其他的展开方式。
例二:
设待筛选数据为四维数组
需要筛选的是偶数值,那么输入的位置信息数组
是,筛选后数据为向量结构,不输出相关信息。本例中规定位置信息数据的分量为1,则保留对应的待筛选数据分量,分量为0则删除对应待筛选数据分量。
数据筛选单元读取输入数据缓存单元的数据,扫描位置信息数组的第(1,1)个分量,发现其值为0,则删去待筛选数组的第(1,1)个分量的值1;
扫描位置信息数组的第(1,2)个分量,发现其值为1,则保留待筛选数组的第(1,2)个分量的值4;
扫描位置信息数组的第(2,1)个分量,发现其值为0,则删去待筛选数组的第(2,1)个分量的值61;
扫描位置信息数组的第(2,2)个分量,发现其值为1,则保留待筛选数组的第(2,2)个分量的值22;
结构变形单元将保留下来的值变为向量,即筛选后数据为向量(4 22),并由输出数据缓存单元存储。
在一些实施例中,如图50D所示,所述数据数据筛选模块还可进一步包括:计算单元4-18。由此,本公开装置可同时实现数据筛选及处理,即可得到一种数据筛选及处理装置。所述计算单元的具体结构同前述实施例,此处不再赘述。
本公开提供了一种利用所述的数据筛选装置进行数据筛选的方法,包括:
数据筛选模块在寄存器单元中获取数据地址;
根据数据地址在存储单元中获取相应的数据;以及
对获取的数据进行筛选操作,得到数据筛选结果。
在一些实施例中,所述数据筛选模块在寄存器单元中获取数据地址的步骤包括:数据筛选单元从寄存器单元中获取待筛选数据的地址和位置信息数据的地址。
在一些实施例中,所述根据数据地址在存储单元中获取相应的数据的步骤包括以下子步骤:
I/O单元将存储单元中的待筛选数据和位置信息数据传递给输入数据缓存单元;以及
输入数据缓存单元将待筛选数据和位置信息数据传递给数据筛选单元。
可选的,所述I/O单元将存储单元中的待筛选数据和位置信息数据传递给输入数据缓存单元的子步骤和所述输入数据缓存单元将待筛选数据和位置信息数据传递给数据筛选单元的子步骤之间还包括:判断是否进行存储结构变形。
如果进行存储结构变形,则输入数据缓存单元将待筛选数据传给结构变形单元,结构变形单元进行存储结构变形,将变形后的待筛选数据传回输入数据缓存单元,之后执行所述输入数据缓存单元将待筛选数据和位置信息数据传递给数据筛选单元的子步骤;如果否,则直接执行所述输入数据缓存单元将待筛选数据和位置信息数据传递给数据筛选单元的子步骤。
在一些实施例中,所述对获取的数据进行筛选操作,得到数据筛选结果的步骤包括:数据筛选单元根据位置信息数据,对待筛选数据进行筛选操作,将输出数据传递给输出数据缓存单元。
如图50E所示,在本公开的一具体实施例中,所述数据筛选方法的步骤具体如下:
步骤S4-1,控制单元从指令缓存单元中读入一条数据筛选指令,并将其译码为具体操作微指令,传递给数据筛选单元;
步骤S4-2,数据筛选单元从寄存器单元中获取待筛选数据和位置信息数据的地址;
步骤S4-3,控制单元从指令缓存单元中读入一条I/O指令,将其译码为具体操作微指令,传递给I/O单元;
步骤S4-4,I/O单元将存储单元中的待筛选数据和位置信息数据传递给输入数据缓存单元;
判断是否进行存储结构变形,如果是,则执行步骤S4-5,如果否,则直接执行步骤S4-6。
步骤S4-5,输入数据缓存单元将数据传给结构变形单元,并进行相应存储结构变形,然后将变形后的数据传回输入数据缓存单元,然后转步骤S4-6;
步骤S4-6,输入数据缓存单元将数据传递给数据筛选单元,数据筛选单元根据位置信息数据,对待筛选数据进行筛选操作;
步骤S4-7,将输出数据传递给输出数据缓存单元,其中输出数据可以只包含筛选后数据,也可以同时包含筛选后数据的相关信息,如向量长度,数组大小、所占空间等等。
至此,已经结合附图对本公开实施例进行了详细描述。依据以上描述,本领域技术人员应当对本公 开的一种数据筛选装置和方法有了清楚的认识。
本公开的一个实施例提供了一种神经网络处理器,包括:存储器、高速暂存存储器和异构内核;其中,所述存储器,用于存储神经网络运算的数据和指令;所述高速暂存存储器,通过存储器总线与所述存储器连接;所述异构内核,通过高速暂存存储器总线与所述高速暂存存储器连接,通过高速暂存存储器读取神经网络运算的数据和指令,完成神经网络运算,并将运算结果送回到高速暂存存储器,控制高速暂存存储器将运算结果写回到存储器。
其中,所述异构内核指包括至少两种不同类型的内核,也即两种不同结构的内核。
在一些实施例中,所述异构内核包括:多个运算内核,其具有至少两种不同类型的运算内核,用于执行神经网络运算或神经网络层运算;以及一个或多个逻辑控制内核,用于根据神经网络运算的数据,决定由所述专用内核和/或所述通用内核执行神经网络运算或神经网络层运算。
进一步的,所述多个运算内核包括m个通用内核和n个专用内核;其中,所述专用内核专用于执行指定神经网络/神经网络层运算,所述通用内核用于执行任意神经网络/神经网络层运算。可选的,所述通用内核可以为cpu,所述专用内核可以为npu。
在一些实施例中,所述高速暂存存储器包括共享高速暂存存储器和/或非共享高速暂存存储器;其中,所述一共享高速暂存存储器通过高速暂存存储器总线与所述异构内核中的至少两个内核对应连接;所述一非共享高速暂存存储器通过高速暂存存储器总线与所述异构内核中的一内核对应连接。
具体而言,所述高速暂存存储器可以仅包括一个或多个共享高速暂存存储器,每一个共享高速暂存存储器与异构内核中的多个内核(逻辑控制内核、专用内核或通用内核)连接。所述高速暂存存储器也可以仅包括一个或多个非共享高速暂存存储器,每一个非共享高速暂存存储器与异构内核中的一个内核(逻辑控制内核、专用内核或通用内核)连接。所述高速暂存存储器也可以同时包括一个或多个共享高速暂存存储器、以及一个或多个非共享高速暂存存储器,其中,每一个共享高速暂存存储器与异构内核中的多个内核(逻辑控制内核、专用内核或通用内核)连接,每一个非共享高速暂存存储器与异构内核中的一个内核(逻辑控制内核、专用内核或通用内核)连接。
在一些实施例中,所述逻辑控制内核通过高速暂存存储器总线与所述高速暂存存储器连接,通过高速暂存存储器读取神经网络运算的数据,并根据神经网络运算的数据中的神经网络模型的类型和参数,决定由专用内核和/或通用内核作为目标内核来执行神经网络运算和/或神经网络层运算。其中,可以在内核之间加入通路,所述逻辑控制内核可通过控制总线直接向所述向目标内核发送信号,也可经所述高速暂存存储器存储器向所述向目标内核发送信号,从而控制目标内核执行神经网络运算和/或神经网络层运算。
本公开的一个实施例提出了一种异构多核神经网络处理器,参见图50F,包括:存储器11、非共享高速暂存存储器12和异构内核13。
存储器11,用于存储神经网络运算的数据和指令,数据包括偏置、权值、输入数据、输出数据、以及神经网络模型的类型和参数等当然,所述输出数据也可以不存储在存储器;指令包括神经网络运算对应的各种指令,例如CONFIG指令、COMPUTE指令、IO指令、NOP指令、JUMP指令、MOVE指令等。存储器11中存储的数据和指令可以通过非共享高速暂存存储器12传送到异构内核13中。
非共享高速暂存存储器12,包括多个高速暂存存储器121,每一高速暂存存储器121均通过存储器总线与存储器11连接,通过高速暂存存储器总线与异构内核13连接,实现异构内核13与非共享高速暂存存储器12之间、非共享高速暂存存储器12与存储器11之间的数据交换。当异构内核13所需的神经网络运算数据或指令未存储在非共享高速暂存存储器12中时,非共享高速暂存存储器12先通过存储器总线从存储器11中读取所需的数据或指令,然后将其通过高速暂存存储器总线送入到异构内核13中。
异构内核13,包括一逻辑控制内核131、一通用内核132以及多个专用内核133,逻辑控制内核131、通用内核132以及每一专用内核133均通过高速暂存存储器总线与一高速暂存存储器121对应连接。
异构内核13用以从非共享高速暂存存储器12中读取神经网络运算的指令和数据,完成神经网络运算,并将运算结果送回到非高速共享缓存12,控制非共享高速暂存存储器12将运算结果写回到存储器11。
逻辑控制内核131从非共享高速暂存存储器12中读入神经网络运算数据和指令,根据数据中的神经网络模型的类型和参数,判断是否存在支持该神经网络运算且能完成该神经网络运算规模的专用内核133,如果存在,则交由对应的专用内核133完成该神经网络运算,如果不存在,则交由通用内核132完成该神经网络运算。为了确定专用内核的位置及其是否空闲,可以使用为每类内核(支持同一层的专用内核属于一类,通用内核属于一类)设置一张表(称为专用/通用内核信息表),表中记录同类内核的编号(或地址)以及其当前是否空闲,初始均为空闲,之后空闲状态的更改有逻辑控制内核与内核间的直接或间接通信来维护,表中的内核编号可以在此网络处理器初始化时进行一遍扫描得到,这样即可支持动态可配置的异构内核(即可以随时更改异构内核中的专用处理器类型及数目,更改之后就会扫描更新内核信息表);可选的,也可以不支持异构内核的动态配置,这时就只需要把表中的内核编号固定即可,不需要多次扫描更新;可选的,如果每类专用内核的编号总是连续的,可以记录一个基址,然后用连续的若干比特位即可表示这些专用内核,用比特0或1即可表示其是否处于空闲状态。为了判断出网络模型的类型和参数,可以在逻辑控制内核中设置一个译码器,根据指令判断出网络层的类型,并可以判断出是通用内核的指令还是专用内核的指令,参数、数据地址等也可以从指令中解析出来;可选的,还可以规定数据包含一个数据头,其中包含各网络层的编号及其规模,以及对应计算数据及指令的地址等,并设一个专门的解析器(软件或硬件均可)来解析这些信息;可选的,将解析出的信息存储到指定区域。为了根据解析出来的网络层编号及规模决定使用哪个内核,可以在逻辑控制内核中设置一个内容寻址存储器CAM(content addressable memory),其中的内容可以实现为可配置的,这就需要逻辑控制内核提供一些指令来配置/写这个CAM,CAM中的内容有网络层编号,各个维度所能支持的最大规模,以及支持该层的专用内核信息表的地址和通用内核信息表地址,此方案下,用解析出来的层编号来找到对应表项,并比较规模限制;若满足则取专用内核信息表的地址,去其中寻找一个空闲的专用内核,根据其编号发送控制信号,为其分配计算任务;如果在CAM中没有找到对应层,或超出了规模限制,或专用内核信息表中无空闲内核,则取通用内核信息表中寻找一个空闲的通用内核,根据其编号发送控制信号,为其分配计算任务;如果在两张表中均为找到空闲的内核,则将此任务添加到一个等待队列中,并添加一些必要的信息,一旦有一个可计算此任务的空闲内核,则将其分配给它进行计算。
当然,确定专用内核的位置及其是否空闲可以有多种方式,上述确定专用内核的位置及其是否空闲的方式仅是作为示例说明。每一专用内核133可以独立完成一种神经网络运算,例如脉冲神经网络(SNN)运算等指定的神经网络运算,并将运算结果写回到其对应连接的高速暂存存储器121中,控制该高速暂存存储器121将运算结果写回到存储器11。
通用内核132可以独立完成超过专用内核所能支持的运算规模的或者所有专用内核133都不支持的神经网络运算,并将运算结果写回到其对应连接的高速暂存存储器121中,控制该高速暂存存储器121将运算结果写回到存储器11。
本公开的一个实施例提出了一种异构多核神经网络处理器,参见图50H,包括:存储器21、共享高速暂存存储器22和异构内核23。
存储器21,用于存储神经网络运算的数据和指令,数据包括偏置、权值、输入数据、输出数据、和神经网络模型的类型和参数,指令包括神经网络运算对应的各种指令。存储器中存储的数据和指令通过共享高速暂存存储器22传送到异构内核23中。
共享高速暂存存储器22,通过存储器总线与存储器21相连,通过共享高速暂存存储器总线与异构内核23进行连接,实现异构内核23与共享高速暂存存储器22之间、共享高速暂存存储器22与存储器21之间的数据交换。
当异构内核23所需的神经网络运算数据或指令未存储在共享高速暂存存储器22中时,共享高速暂存存储器22先通过存储器总线从存储器21中读取所需的数据或指令,然后将其通过高速暂存存储器总线送入到异构内核23中。
异构内核23,包括一逻辑控制内核231、多个通用内核232以及多个专用内核233,逻辑控制内核231、通用内核232以及专用内核233均通过高速暂存存储器总线与共享高速暂存存储器22连接。
异构内核23用以从共享高速暂存存储器22中读取神经网络运算数据和指令,完成神经网络运算,并将运算结果送回到高速共享缓存22,控制共享高速暂存存储器22将运算结果写回到存储器21。
另外当逻辑控制内核231与通用内核232之间、逻辑控制内核231与专用内核233之间、通用内核232之间以及专用内核233之间需要进行数据传输时,发送数据的内核可以将数据通过共享高速暂存存储器总线先传输到共享高速暂存存储器22,然后再将数据传输到接收数据的内核,而不需要经过存储器21。
对于神经网络运算来说,其神经网络模型一般包括多个神经网络层,每个神经网络层利用上一神经网络层的运算结果进行相应的运算,其运算结果输出给下一神经网络层,最后一个神经网络层的运算结果作为整个神经网络运算的结果。在本实施例异构多核神经网络处理器中,通用内核232和专用内核233均可以执行一个神经网络层的运算,利用逻辑控制内核231、通用内核232以及专用内核233共同完成神经网络运算,以下为了描述方便,将神经网络层简称为层。
其中,每一专用内核233可以独立执行一层运算,例如神经网络层的卷积运算、全连接层、拼接运算、对位加/乘运算、Relu运算、池化运算、Batch Norm运算等,且神经网络运算层的规模不能过大,即不能超出对应的专用内核的所能支持的神经网络运算层的规模,也就是说专用内核运算对层的神经元和突触的数量有限制,在层运算结束后,将运算结果写回到共享高速暂存存储器22中。
通用内核232用于执行超过专用内核233所能支持的运算规模的或者所有专用内核都不支持的层运算,并将运算结果写回到共享高速暂存存储器22中,控制共享高速暂存存储器22将运算结果写回到存储器21。
进一步地,专用内核233和通用内核232将运算结果写回到存储器21后,逻辑控制内核231会向执行下一层运算的专用内核或通用内核发送开始运算信号,通知执行下一层运算的专用内核或通用内核开始运算。
更进一步的,专用内核233和通用内核232在接收到执行上一层运算的专用内核或通用内核发送的开始运算信号,且当前无正在进行的层运算时开始运算,若当前正在进行层运算,则将当前层运算完成,并将运算结果写回到共享高速暂存存储器22中后开始运算。
逻辑控制内核231从共享高速暂存存储器22中读入神经网络运算数据,针对其中的神经网络模型的类型和参数,对神经网络模型的每个层进行解析,对于每一层,判断是否存在支持该层运算且能完成该层运算规模的专用内核233,如果存在,则将该层的运算交由对应的专用内核233运算,如果不存在,则将该层的运算交由通用内核232进行运算。逻辑控制内核231还设置通用内核232和专用内核233进行层运算所需的数据和指令的对应地址,通用内核232和专用内核233读取对应地址的数据和指令,执行层运算。
对于执行第一层运算的专用内核233和通用内核232,逻辑控制内核231会在运算开始时对该专用内核233或通用内核232发送开始运算信号,而在神经网络运算结束后,执行最后一层运算的专用内核233或通用内核232会对逻辑控制内核231发送开始运算信号,逻辑控制内核231在接收到开始运算信号后,控制共享高速暂存存储器22将运算结果写回到存储器21中。
本公开的一个实施例提供了一种利用第一实施例所述的异构多核神经网络处理器进行神经网络运算的方法,参见图50H,步骤如下:
步骤S5-11:异构内核13中的逻辑控制内核131通过非共享高速暂存存储器12从存储器11中读取 神经网络运算的数据和指令;
步骤S5-12:异构内核13中的逻辑控制内核131根据数据中的神经网络模型的类型和参数,判断是否存在符合条件的专用内核,符合条件是指该专用内核支持该神经网络运算且能完成该神经网络运算规模(规模限制可以是专用内核固有的,此时可以询问内核设计厂家;也可以是人为规定的(比如通过实验发现,超过一定规模,通用内核更有效),在配置CAM时可以设定规模限制)。如果专用内核m符合条件,则专用内核m作为目标内核,并执行步骤S5-13,否则执行步骤S5-15,其中,m为专用内核编号,1≦m≦M,M为专用内核数量。
步骤S5-13:异构内核13中的逻辑控制内核131向目标内核发送信号,激活该目标内核,同时将所要进行的神经网络运算的数据和指令对应的地址发送到该目标内核。
步骤S5-14:目标内核根据获取的地址通过非共享高速暂存存储器12从存储器11中获取神经网络运算的数据和指令,进行神经网络运算,然后将运算结果通过非共享高速暂存存储器12输出到存储器11中,运算完成。
进一步的,接上述步骤S5-12,如果不存在符合条件的专用内核,则接下来执行步骤S5-15至S5-16。
步骤S5-15:异构内核13中的逻辑控制内核131向通用内核132发送信号,激活通用内核132,同时将所要进行的神经网络运算的数据和指令对应的地址发送到通用内核132。
步骤S5-16:通用内核132根据获取的地址通过非共享高速暂存存储器12从存储器11中获取神经网络运算的数据和指令,进行神经网络运算,然后将运算结果通过非共享高速暂存存储器12输出到存储器中11,运算完成。
本公开的一个实施例提供了一种利用第二实施例所述的异构多核神经网络处理器进行神经网络运算的方法,参见图50I,步骤如下:
步骤S5-21:异构内核23中的逻辑控制内核231通过共享高速暂存存储器22从存储器21中读取神经网络运算的数据和指令。
步骤S5-22:异构内核23中的逻辑控制内核231对数据中的神经网络模型的类型和参数进行解析,对于神经网络模型中第1到I层,分别判断是否存在符合条件的专用内核,I为神经网络模型的层数,符合条件是指该专用内核支持该层运算且能完成该层运算规模,并为每一层运算分配对应的通用内核或专用内核。
对于神经网络模型第i层运算,1≦i≦I,若专用内核m符合条件,则选择专用内核m执行神经网络模型第i层运算,m为专用内核编号,1≦m≦M,M为专用内核数量。如果没有专用内核符合条件,则选择通用内核M+n执行神经网络模型第i层运算,M+n为通用内核的编号,1≦n≦N,N为通用内核数量,其中将专用内核233和通用内核232统一编号(即专用内核和通用内核一起进行编号,例如x个专用内核,y个通用内核,则可以从1开始编号,编至x+y,每个专用内核、通用内核对应1至x+y中的一个编号;当然也可以专用内核和通用内核单独分别编号,例如x个专用内核,y个通用内核,则专用内核可以从1开始编号,编至x,通用内核可以从1开始编号,编至y,每个专用内核、通用内核对应一个编号),此时专用内核可能与通用内核编号相同,但只是逻辑编号相同,可以根据其物理地址来寻址,最后得到与神经网络模型第1到I层运算对应的内核序列。即该内核序列共有I个元素,每一元素为一专用内核或通用内核,依序对应神经网络模型第1到I层运算。例如内核序列1a,2b,…,il,其中1、2、i表示神经网络层的编号,a、b、1表示专用内核或通用内核的编号。
步骤S5-23:异构内核23中的逻辑控制内核231将所要进行的层运算的数据和指令对应的地址发送到执行该层运算的专用内核或通用内核,并向执行该层运算的专用内核或通用内核发送内核序列中下一个专用内核或通用内核的编号,其中向执行最后一层运算的专用内核或通用内核发送的是逻辑控制内核的编号。
步骤S5-24:异构内核23中的逻辑控制内核231向内核序列中第一个内核发送开始运算信号。第一 专用内核233或通用内核232在接收到开始运算信号之后,若当前存在未完成的运算,则继续完成运算,然后,继续从数据和指令对应的地址读取数据和指令,进行当前层运算。
步骤S5-25:第一专用内核233或通用内核232在完成当前层运算之后,将运算结果传送到共享高速暂存存储器22的指定地址,同时,向内核序列中第二个内核发送开始运算信号。
步骤S5-26:以此类推,内核序列中每一内核接收到开始运算信号之后,若当前存在未完成的运算,则继续完成运算,然后,继续从数据和指令对应的地址读取数据和指令,进行其对应的层运算,将运算结果传送到共享高速暂存存储器22的指定地址,同时,向内核序列中下一个内核发送开始运算信号。其中,内核序列最后一个内核是向逻辑控制内核231发送开始运算信号。
步骤S5-27:逻辑控制内核231接收到开始运算信号后,控制共享高速暂存存储器22将各个神经网络层的运算结果写回到存储器21中,运算完成。
如图50J所示,本实施例是对上述第一实施例的进一步扩展。实施例一高速暂存存储器121是每个核专用的,专用内核1只能访问高速暂存存储器3,而不能访问其它高速暂存存储器,其它内核也是一样,因此121构成的整体12就具有非共享的性质。但是,如果内核j要使用内核i(i≠j)的计算结果(此结果最初存放在内核i对应的高速暂存存储器中),内核i就必须先把此结果从高速暂存存储器写入存储器11,然后内核j还要从存储器11读入其可以访问的高速暂存存储器,这个过程后,内核j才能使用这一结果。为使这一过程更加便捷,在此基础上增加一个N×N的数据交换网络34,比如可以用crossbar实现,这样每一个内核(331或332或333)均可以访问所有高速暂存存储器(321)。此时32就具有了共享性质。
采用本实施例(对应图50J)的装置进行神经网络运算的方法的如下:
步骤S5-31:异构内核33中的逻辑控制内核331通过高速暂存存储器32从存储器31中读取神经网络运算的数据和指令;
步骤S5-32:异构内核33中的逻辑控制内核331根据数据中的神经网络模型的类型和参数,判断是否存在符合条件的专用内核,符合条件是指该专用内核支持该神经网络运算且能完成该神经网络运算规模。如果专用内核m符合条件,则专用内核m作为目标内核,并执行步骤S5-33,否则执行步骤S5-35,其中,m为专用内核编号。
步骤S5-33:异构内核33中的逻辑控制内核331向目标内核发送信号,激活该目标内核,同时将所要进行的神经网络运算的数据和指令对应的地址发送到该目标内核。
步骤S5-34:目标内核根据获取的地址(从高速暂存存储器32中)获取神经网络运算的数据和指令,进行神经网络运算,然后将运算结果存入高速暂存存储器32中,运算完成。
步骤S5-35:异构内核33中的逻辑控制内核331向通用内核332发送信号,激活通用内核332,同时将所要进行的神经网络运算的数据和指令对应的地址发送到通用内核332。
步骤S5-36:通用内核332根据获取的地址(从高速暂存存储器32中)获取神经网络运算的数据和指令,进行神经网络运算,然后将运算结果存入高速暂存存储器32中,运算完成。
进一步,可以对存储器与高速暂存存储器之间的连接方式进行更改。由此产生新的实施例,如图50K所示。其相对于图50J所述实施例的差别在于存储器41与高速暂存存储器42间的连接方式。原先采用总线连接,在多个高速暂存存储器321写存储器31时,要排队,效率不高(参见图50J)。现在将这里的结构抽象为一个1输入N输出的数据交换网络,可以使用多种多样的拓扑结构来实现这个功能,比如星型结构(存储器41与N个高速暂存存储器421均有专门的通路连接)、树状结构(存储器41在树根位置,高速暂存存储器421在树叶位置)等。
需要说明的是,本公开中对逻辑控制内核的数量、专用内核的数量、通用内核的数量、共享或非共享高速暂存存储器的数量、存储器的数量均不作限制,可根据神经网络运算的具体要求适当调整。
至此,已经结合附图对本公开实施例进行了详细描述。依据以上描述,本领域技术人员应当对本公 开的一种异构多核神经网络处理器和神经网络运算方法有了清楚的认识。
在一些实施例里,本公开还提供了一种芯片,其包括了上述运算装置。
在一些实施例里,本公开还提供了一种芯片封装结构,其包括了上述芯片。
在一些实施例里,本公开还提供了一种板卡,其包括了上述芯片封装结构。
在一些实施例里,本公开还提供了一种电子设备,其包括了上述板卡。
在此需要说明的是,粗粒度剪枝(或者粗粒度稀疏)是指获取至少两个数据(权值或者神经元),当该至少两个数据满足预设条件时,将该至少两个数据中的部分或者全部置零。
根据本公开的基本构思,提供一种对神经网络进行粗粒度剪枝稀疏化的处理方法,处理装置和加速装置,以减少权值存储以及计算量。
参见图51,图51为本发明实施例提供的一种对神经网络进行粗粒度剪枝稀疏化的处理装置的结构示意图,如图51所示,该处理装置包括:
粗粒度剪枝单元,用于对神经网络的权值进行粗粒度剪枝,以得到剪枝后的权值。
具体地,所述粗粒度剪枝单元具体用于:
通过滑动窗口从神经网络的权值中选取出M个权值,所述M为大于1的整数;当所述M个权值满足预设条件时,将所述M个权值的全部或者部分置为零。
其中,所述预设条件为:上述M个权值的信息量满足预设判断条件。
作为一种可选的实施方式,上述预设判断条件包括阈值判断条件。其中,阈值判断条件,可以包括:小于一给定阈值,小于等于一给定阈值,大于一给定阈值,大于等于一给定阈值,在一给定取值范围内或在一给定取值范围外中的一种或几种。
具体地,上述M个权值的信息量小于一给定阈值,其中,上述M个权值的信息量包括但不限于该M个权值绝对值的算术平均值、该M个权值绝对值的几何平均值和该M个权值绝对值的最大值。上述M个权值绝对值的算术平均值小于第一阈值;或者上述M个权值绝对值的几何平均值小于第二阈值;或者上述M个权值绝对值的最大值小于第三阈值。对于上述第一阈值、第二阈值和第三阈值中各自的选择,本领域技术人员可以根据情况进行预先设定,也可以通过改变预设公式中的输入参数的方式计算获得,还可以通过机器学习的方式获得。对于第一阈值、第二阈值以及第三阈值的获取方式,本公开并不做具体限定。
作为一种可选的实施方式,上述预设判断条件包括函数映射判断条件,该函数映射判断条件为判断上述M个权值经函数变换后是否满足给定条件。
进一步的,上述神经网络包括全连接层、卷积层和长短期记忆(long short term memory,LSTM)层,其中,所述全连接层的权值是一个二维矩阵(Nin,Nout),其中Nin是输入神经元的个数,Nout是输出神经元的个数,所述全连接层有Nin*Nout个权值;所述卷积层的权值是一个四维矩阵(Nfin,Nfout,Kx,Ky),其中Nfin是输入特征图像的个数,Nfout是输出特征图像的个数,(Kx,Ky)是卷积核的大小,所述卷积层有Nfin*Nfout*Kx*Ky个权值;所述LSTM层的权值有m个全连接层的权值组成,所述m为大于0的整数,第i个全连接层权值为(Nin_i,Nout_i),其中i是大于0且小于或等于m的整数,Nin_i表示第i个全连接层权值输入神经元个数,Nout_i表示第i个全连接层权值输出神经元个数;所述粗粒度剪枝单元具体用于:
当对所述全连接层的权值进行粗粒度剪枝操作时,所述滑动窗口的大小为Bin*Bout的滑动窗口,其中所述Bin为大于0且小于或等于Nin整数,所述Bout为大于0且小于或等于Nout的整数;
使所述滑动窗口能够沿着Bin的方向按照步长Sin进行滑动,或者沿
着Bout的方向按照步长Sout进行滑动,其中Sin为大于0且小于或等于Bin的正整数,Sout为大于0且小于或等于Bout的正整数;
通过所述滑动窗口从所述Nin*Nout个权值中选取M个取值,当所述M个权值满足所述预设条件时,将所述M个权值全部或者部分置为零,其中,所述M=Bin*Bout;具体过程参见图51A。
当对所述卷积层的权值进行粗粒度剪枝操作时,所述滑动窗口为大小为Bfin*Bfout*Bx*By的四维滑动窗口,其中Bfin为大于0且小于或等于Nfin的整数,Bfout为大于0且小于或等于Nfout的整数,Bx为大于0且小于或等于Kx的整数,By为大于0且小于或等于Ky的整数;
使所述滑动窗口沿着Bfin的方向按照步长Sfin进行滑动,或者沿着Bfout的方向按照步长Sfout进行滑动,或者沿着Bx的方向按照步长S进行滑动,或沿着By的方向按照步长Sy进行滑动,其中Sfin为大于0且小于或等于Bfin的整数,Sfout为大于0且小于或等于Bfout的整数,Sx为大于0且小于或等于Bx的整数,Sy为大于0且小于或等于By的整数;
通过所述滑动窗口从所述Nfin*Nfout*Kx*Ky个权值中选取M个权值,当所述M个权值满足所述预设条件时,将所述M个权值全部或者部分置为零,其中,所述M=Bfin*Bfout*Bx*By;具体过程参见图52B。
当对所述LSTM层的权值进行粗粒度剪枝操作时,所述滑动窗口的大小为Bin_i*Bout_i,其中Bin_i为大于0且小于或等于Nin_i的整数,Bout_i为大于0且小于或等于Nout_i的整数;
使所述滑动窗口沿着Bin_i的方向按照步长Sin_i进行滑动,或沿着Bout_i的方向按照步长Sout_i进行滑动,其中Sin_i为大于0且小于或等于Bin_i的正整数,Sout_i为大于0且小于或等于Bout_i的正整数;
通过所述滑动窗口从所述Bin_i*Bout_i个权值中选取M个权值,当所述M个权值满足所述预设条件时,将所述M个权值全部或者部分置为零,其中,所述M=Bin_i*Bout_i。
进一步的,上述M个权值为上述滑动窗口在移动过程中包含的权值。上述粗粒度剪枝单元将上述M个权值全部或部分置为零包括:
上述粗粒度剪枝单元将上述滑动窗口中所有的权值(即M个权值)都置为零;或者将上述滑动窗口的斜对角线上的权值置为零;或者滑动窗口的中间的一部分权值置为零,比如上述滑动窗口的大小为5*5,上述粗粒度剪枝单元将上述5*5的滑动窗口中间的3*3的权值置为零;或者从上述滑动窗口中随机选取至少一个权值置为零。这样操作有利于提供后续训练运算的精度。
进一步的,上述粗粒度剪枝单元和运算单元用于重复对上述神经网络进行粗粒度剪枝以及根据剪枝后的权值进行训练,直至保证在精度不损失预定精度的前提下没有权值满足上述预设条件。
其中,上述设定精度为x%,x为大于0且小于100的数,x根据不同的神经网络以及不同的应用可以有不同的选择。
在一个优选的实施例中,x的取值范围为0-5。
进一步的,上述处理装置还包括:
量化单元,用于在粗粒度剪枝单元对神经网络的权值进行粗粒度剪枝之后,且在上述运算单元根据剪枝后的权值对上述神经网络进行训练之前,量化神经网络的权值和/或对该神经网络的权值进行第一操作,以降低权值的比特数。
上述第一操作可为减少权值对应的数据格式的取值范围或者减少权值对应的数据格式的精度范围。
进一步的,上述运算单元具体用于:
根据剪枝后的权值和通过反向传播算法对上述神经网络进行重新训练。
具体地,运算单元可以用于执行神经网络反向训练算法,接收剪枝后的神经网络,采用反向传播算法对该神经网络进行训练,在训练过程中被剪枝的权值始终保持为0。运算单元将训练后的神经网络传 输给粗粒度剪枝单元进行进一步剪枝操作,或者直接输出。
具体地,上述运算单元对上述神经网络的各层按照与正向运算相反的顺序依次进行反向计算,最后用计算得到的权值的梯度去更新权值;这就是神经网络的训练的依次迭代,整个训练过程需要重复执行这个过程多次;每一层的反向运算需要执行两部分运算:一部分是使用输出神经元梯度和输入神经元计算得到权值梯度,另一部分是使用输出神经元梯度和权值,计算得到输入神经元梯度(用于作为反向运算中下一层的输出神经元梯度以供其进行反向运算);在执行完神经网络的反向运算之后,就计算出了各层的权值梯度,运算单元根据权值梯度对权值进行更新。
需要指出的是,在上述运算单元对神经网络进行训练过程中,被置为0的权值一直保持为0。
在本发明实施例的方案中,上述处理装置的粗粒度剪枝单元对神经网络的权值进行粗粒度剪枝操作,以得到剪枝后的权值,运算单元根据剪枝后的权值对神经网络重新进行训练。通过对神经网络的权值进行粗粒度剪枝处理,减小后续对取值的存储和访问,同时也减小了后续的运算量,提高了运算效率和降低了功耗。
参见图51C,图51C为本发明实施例提供的一种加速装置的结构示意图。如图51C所示,该加速装置包括:
存储单元,用于存储神经网络的输入神经元、输出神经元、权值和指令。
粗粒度剪枝单元,用于对上述神经网络的权值进行粗粒度剪枝,以得到剪枝后的权值,并将剪枝后的权值及目标权值位置信息存储到上述存储单元中。
需要说明的是,上述粗粒度剪枝单元对神经网络的权值进行粗粒度剪枝操作的具体过程可参见图51所示实施例的相关描述,在此不再叙述。
运算单元,用于根据上述剪枝后的权值对上述神经网络进行训练。
粗粒度选数单元,用于接收输入神经元和目标权值位置信息,选出目
标权值及其对应的输入神经元。
其中,上述目标权值为绝对值大于第二预设阈值的权值。
进一步的,上述粗粒度选数单元只选取目标权值及其对应的神经元传输至运算单元。
上述运算单元,还用于接收输入的目标权值及其对应的神经元,并根据目标权值及其对应的神经元通过乘加运算单元完成神经网络运算,得到输出神经元,并将输出神经元重新传输至上述存储单元。
其中,上述存储单元还用于存储上述运算单元进行神经网络运算过程中产生的中间结果。
进一步的,上述加速装置还包括:
指令控制单元,用于接收上述指令,并将该指令译码后生成控制信息,以控制上述粗粒度选数单元进行选数操作和上述运算单元进行计算操作。
进一步的,上述存储单元存储权值时只存储目标权值以及目标权值的位置信息。
需要指出的是,上述存储单元、粗粒度剪枝单元、指令控制单元、粗粒度选数单元和运算单元均为实体硬件器件,不是功能性软件单元。
参见图51D,图51D为本发明实施例提供的另一种加速装置的结构示意图。如图51D所示,上述加速装置还包括:预处理单元、存储单元、直接存取访问(direct memory access,DMA)单元、指令缓存单元、指令控制单元、粗粒度剪枝单元、第一缓存单元、第二缓存单元、第三缓存单元、粗粒度选数单元、运算单元和第四缓存单元。
其中,上述预处理单元,用于对原始数据进行预处理,将预处理后的数据输入上述存储单元,上述原始数据包括输入神经元、输出神经元和权值。上述预处理包括对数据的切分、高斯滤波、二值化、正则化和/或归一化。
上述存储单元,用于神经网络的神经元、权值以及指令。其中,当存储权值时只存储目标权值以及 目标权值的位置信息。
上述DMA单元,用于在上述存储单元与上述指令缓存单元、粗粒度剪枝单元、第一缓存单元、第二缓存单元、第三缓存单元或第四缓存单元之间中进行数据或者指令读写。
上述粗粒度剪枝单元,用于通过DMA单元从上述存储单元中获取上述神经网络的权值,然后读对该神经网络的权值进行粗粒度剪枝,以得到剪枝后的权值。上述粗粒度剪枝单元将剪枝后的权值存储到上述第一缓存单元中。
需要说明的是,上述粗粒度剪枝单元对神经网络的权值进行粗粒度剪枝操作的具体过程可参见图51所示实施例的相关描述,在此不再叙述。
上述指令缓存单元,用于缓存上述指令;
上述第一缓存单元,用于缓存目标权值,该目标权值为绝对值大于第二预设阈值的权值;
上述第二缓存单元用于缓存目标权值位置数据;该目标权值位置缓存单元将输入数据中每个连接权值一一对应到相应的输入神经元。
可选地,目标权值位置缓存单元缓存一一对应的方法为采用1表示输出神经元与输入神经元之间有权值连接,0表示输出神经元与输入神经元之间无权值连接,每组输出神经元与所有输入神经元的连接状态组成一个0和1的字符串来表示该输出神经元的连接关系。
可选地,目标权值位置缓存单元缓存一一对应的方法为采用1表示输入神经元与输出神经元之间有权值连接,0表示输入神经元与输出神经元之间无权值连接,每组输入与所有输出的连接状态组成一个0和1的字符串来表示该输入神经元的连接关系。
可选地,目标权值位置缓存单元缓存一一对应的方法为将一组输出第一个连接所在的输入神经元位置距离第一个输入神经元的距离、所述输出第二组输入神经元距离上一个输入神经元的距离,所述输出第三组输入神经元距离上一个输入神经元的距离,……,依次类推,直到穷举所述输出的所有输入,来表示所述输出的连接关系。
上述三缓存单元,用于缓存输入到上述粗粒度选数单元的输入神经元。
上述第四缓存单元,用于缓存运算单元输出的输出神经元和根据输出神经元得到的输出神经元梯度。
上述指令控制单元,用于接收指令换成单元中的指令,将该指令译码生成控制信息已控制上述运算单元进行计算操作。
上述粗粒度选数单元,用于接收输入神经元和目标权值位置信息,并根据目标权值位置信息选出需要进行运算的输入神经元。该粗粒度选数单
元只会选择出目标权值对应的神经元并传输至运算单元。
上述运算单元,用于根据指令控制单元传输的控制信息对输入神经元和目标权值进行运算,以得到输出神经元,将该输出神经元存储第四缓存单元中;并根据该输出神经元得到输出神经元梯度,并将该输出神经元梯度存储到上述第四缓存单元中。
具体地,上述粗粒度选数单元,用于根据目标权值的位置信息从上述输入神经元缓冲单元输入的输入神经元中选取出于目标权值对应的输入神经元,然后将目标权值及其对应的输入神经元传输至运算单元。
在一个实施例里,上述运算单元可以包括多个处理单元,以实现并行计算得到不同的输出神经元,并将得到的输出神经元存储输出神经元缓存单元。其中,上述多个处理单元中的每个处理单元包含一个本地权值选择器模块,用于进一步处理动态粗粒度稀疏数据。上述粗粒度选数单元用于通过选择所需的输入神经元来处理静态稀疏度,上述粗粒度选数单元具体工作过程参见图51E的相关描述。
参见图51E,首先,上述粗粒度选数单元根据输入神经元值生成神经元索引,其中每个索引都会指示相应的神经元是否有用(“0”)。其次,上述粗粒度选数单元将生成的神经元索引和权值位置信息(即 权值索引)进行“与”操作(即AND操作)相结合以获得神经元标志,并且该神经元标志的每一位指示是否选择相应的神经元。第三,上述粗粒度选数单元添加神经元标志的每一位以获得累加的字符串,然后在累加的字符串和神经元标志之间执行“与”操作(即AND操作)以产生用于选择输入神经元的目标字符串;最后,上述粗粒度选数单元使用目标字符串来选择实际输入神经元,以便在上述运算单元中进行后续计算。同时,上述粗粒度选数单元根据目标字符串和累积的权值索引字符串(即权值位置信息)产生索引字符串并传递给上述运算单元。
上述运算单元主要用于处理动态稀疏性并有效执行神经网络的所有操作。该神经元功能单元包括多个处理单元。如图51F所示,每个处理单元包括权值缓冲区、权值解码器模块、权值选择器模块和处理单元的神经元功能单元。每个处理单元加载来自其本地权值缓冲区的权值,因为权值在不同的输出神经元之间是独立的,因此不同的处理之间也是独立的。具有查找表的权值解码器模块放置在权值缓冲区的旁边,以根据本地量化中使用的码本和字典中的压缩值提取实际权值。
如图52A所示,权值选择器模块接收来自权值解码器模块的索引字
符串和权值,以选择对处理单元的神经元功能单元进行计算的有用权值。每个处理单元的神经元功能单元由Tm乘法器,一个加法器树和一个非线性函数模块组成,如图52B所示。上述神经元功能单元使用分时方法将神经网络映射到处理单元上,即每个处理单元都在并行处理输出神经元,并且需要M/Tm个周期来计算需要M次乘法的输出神经元,因为它可以在一个周期内实现Tm乘法。然后,神经元功能单元收集并汇编所有处理单元的输出,以便以后计算或存储到输出神经元缓存单元。
权值选择器模块只在考虑动态稀疏时选择需要的权值,因为上述权值缓冲区紧凑地存储权值以实现静态稀疏性。基于包含权值位置信息的神经元选择器模块的索引字符串,进一步过滤权值并选择计算所需的权值,参见图52A。每个处理单元将在不同的输出神经元上工作,从而产生不同的权值。因此,处理单元内部实施权值选择器模块和权值缓冲区以避免高带宽和延迟。
需要指出的是,动态稀疏动态稀疏一般指输入神经元稀疏,因为输入神经元的值随着输入变化而变化。动态稀疏的主要来源于relu这个激励函数,因为该函数运算会将绝对值小于阈值的输入神经元置为0。静态稀疏一般指权值稀疏,因为权值被剪去后拓扑结构不再改变。
其中,上述指令缓存单元、输入神经元缓存单元、目标权值缓存单元、目标权值位置缓存单元和输出神经元缓存单元均为片上缓存。
具体地,运算单元包括但不仅限于三个部分,第一部分乘法器,第二部分加法树,第三部分为激活函数单元。第一部分将第一输入数据(in1)和第二输入数据(in2)相乘得到相乘之后的输出(out1),过程为:out=in1*in2;第二部分将第三输入数据in3通过加法树逐级相加得到第二输出数据(out2),其中in3是一个长度为N的向量,N大于1,过称为:out2=in3[1]+in3[2]+...+in3[N],和/或将第三输入数据(in3)通过加法数累加之后和第四输入数据(in4)相加得到第二输出数据(out2),过程为:out=in3[1]+in3[2]+...+in3[N]+in4,或者将第三输入数据(in3)和第四输入数据(in4)相加得到第二输出数据(out2),过程为:out2=in3+in4;第三部分将第五输入数据(in5)通过激活函数(active)运算得到激活输出数据(out),过程为:out3=active(in5),激活函数active可以是sigmoid、tanh、relu、softmax等,除了做激活操作,第三部分可以实现其他的非线性函数,可将输入数据(in)通过运算(f)得到输出数据(out),过程为:out=f(in)。
进一步地,运算单元还可以包含池化单元,池化单元将输入数据(in)通过池化运算得到池化操作之后的输出数据(out),过程为out=pool(in),其中pool为池化操作,池化操作包括但不限于:平均值池化,最大值池化,中值池化,输入数据in是和输出out相关的一个池化核中的数据。
所述运算单元执行运算包括几个部分,第一部分是将所述第一输入数据和第二输入数据相乘,得到相乘之后的数据;第二部分执行加法树运算,用于将第三输入数据通过加法树逐级相加,或者将所述第 三输入数据通过和第四输入数据相加得到输出数据;第三部分执行激活函数运算,对第五输入数据通过激活函数(active)运算得到输出数据。以上几个部分的运算可以自由组合,从而实现各种不同功能的运算。
需要指出的是,上述预处理单元、存储单元、DMA单元、粗粒度剪枝单元、指令缓存单元、指令控制单元、第一缓存单元、第二缓存单元、第三缓存单元、第四缓存单元、粗粒度选数单元和运算单元均为实体硬件器件,不是功能性软件单元。
参见图52C,图52C为本发明实施例提供的另一种加速装置的结构示意图。如图52C所示,上述加速装置还包括:预处理单元、存储单元、DMA单元、指令缓存单元、指令控制单元、粗粒度剪枝单元、目标权值缓存单元、目标权值位置缓存单元、输入神经元缓存单元、粗粒度选数单元、运算单元、输出神经元缓存单元和输出神经元梯度缓存单元。
其中,上述预处理单元,用于对原始数据进行预处理,将预处理后的数据输入上述存储单元,上述原始数据包括输入神经元、输出神经元和权值。上述预处理包括对数据的切分、高斯滤波、二值化、正则化和/或归一化。
上述存储单元,用于神经网络的神经元、权值以及指令。其中,当存储权值时只存储目标权值以及目标权值的位置信息。
上述DMA单元,用于在上述存储单元与上述指令缓存单元、粗粒度剪枝单元、目标权值位置缓存单元、输入神经元缓存单元或输出神经元缓存单元之间中进行数据或者指令读写。
上述粗粒度剪枝单元,用于通过DMA单元从上述存储单元中获取上述神经
网络的权值,然后对该神经网络的权值进行粗粒度剪枝,以得到剪枝后的权值。上述粗粒度剪枝单元将剪枝后的权值储到上述目标权值缓存单元中。
需要说明的是,上述粗粒度剪枝单元对神经网络的权值进行粗粒度剪枝操作的具体过程可参见图51所示实施例的相关描述,在此不再叙述。
上述指令缓存单元,用于缓存上述指令;
上述目标权值缓存单元,用于缓存目标权值;
上述目标权值位置缓存单元用于缓存目标权值位置数据;该目标权值位置缓存单元将输入数据中每个连接权值一一对应到相应的输入神经元。
可选地,目标权值位置缓存单元缓存一一对应的方法为采用1表示输出神经元与输入神经元之间有权值连接,0表示输出神经元与输入神经元之间无权值连接,每组输出神经元与所有输入神经元的连接状态组成一个0和1的字符串来表示该输出神经元的连接关系。
可选地,目标权值位置缓存单元缓存一一对应的方法为采用1表示输入神经元与输出神经元之间有权值连接,0表示输入神经元与输出神经元之间无权值连接,每组输入与所有输出的连接状态组成一个0和1的字符串来表示该输入神经元的连接关系。
可选地,目标权值位置缓存单元缓存一一对应的方法为将一组输出第一个连接所在的输入神经元位置距离第一个输入神经元的距离、所述输出第二组输入神经元距离上一个输入神经元的距离,所述输出第三组输入神经元距离上一个输入神经元的距离,……,依次类推,直到穷举所述输出的所有输入,来表示所述输出的连接关系。
上述输入神经元缓存单元,用于缓存输入到上述粗粒度选数单元的输入神经元。
上述输出神经元缓存单元,用于缓存运算单元输出的输出神经元。
上述输出神经元梯度缓存单元,用于缓存上述输出神经元的梯度。
上述指令控制单元,用于接收指令换成单元中的指令,将该指令译码生成控制信息已控制上述运算单元进行计算操作。
上述粗粒度选数单元,用于接收输入神经元和目标权值位置信息,并根据目标权值位置信息选出需要进行运算的输入神经元。该粗粒度选数单元只会选择出目标权值对应的神经元并传输至运算单元。
上述运算单元,用于根据从上述目标权值缓存单元中获取的目标权值及其对应的输入神经元进行运算,以得到输出神经元;将该输出神经元缓存到上述输出神经元缓存单元中。
上述运算单元,还用于根据输出神经元梯度和剪枝后的权值进行训练。
需要说明的是,上述加速装置各单元功能可参见上述图51D所示实施例的相关描述,在此不再叙述。
需要指出的是,上述预处理单元、存储单元、DMA单元、粗粒度剪枝单元、指令缓存单元、指令控制单元、目标权值缓存单元、目标权值位置缓存单元、输入神经元缓存单元、输出神经元梯度缓存单元、输出神经元缓存单元、粗粒度选数单元和运算单元均为实体硬件器件,不是功能性软件单元。
参见图52D,图52D为本发明实施例提供的另一种加速装置的结构示意图。如图52D所示,上述加速装置还包括:
预处理单元、存储单元、DMA单元、指令缓存单元、指令控制单元、粗粒度剪枝单元、目标权值缓存单元、目标权值位置缓存单元、输入神经元缓存单元、粗粒度选数单元、运算单元和输出神经元缓存单元。
其中,上述预处理单元,用于对原始数据进行预处理,将预处理后的数据输入上述存储单元,上述原始数据包括输入神经元、输出神经元和权值。上述预处理包括对数据的切分、高斯滤波、二值化、正则化和/或归一化。
上述存储单元,用于神经网络的神经元、权值以及指令。其中,当存储权值时只存储目标权值以及目标权值的位置信息。
上述DMA单元,用于在上述存储单元与上述指令缓存单元、粗粒度剪枝单元、目标权值位置缓存单元、输入神经元缓存单元或输出神经元缓存单元之间中进行数据或者指令读写。
上述粗粒度剪枝单元,用于通过DMA单元从上述存储单元中获取上述神经网络的权值,然后对该神经网络的权值进行粗粒度剪枝,以得到剪枝后的权值。上述粗粒度剪枝单元将剪枝后的权值储到上述目标权值缓存单元中。
需要说明的是,上述粗粒度剪枝单元对神经网络的权值进行粗粒度剪枝操作的具体过程可参见图1所示实施例的相关描述,在此不再叙述。
上述指令缓存单元,用于缓存上述指令;
上述目标权值缓存单元,用于缓存目标权值;
上述目标权值位置缓存单元用于缓存目标权值位置数据;该目标权值位置缓存单元将输入数据中每个连接权值一一对应到相应的输入神经元。
可选地,目标权值位置缓存单元缓存一一对应的方法为采用1表示输出神经元与输入神经元之间有权值连接,0表示输出神经元与输入神经元之间无权值连接,每组输出神经元与所有输入神经元的连接状态组成一个0和1的字符串来表示该输出神经元的连接关系。
可选地,目标权值位置缓存单元缓存一一对应的方法为采用1表示输入神经元与输出神经元之间有权值连接,0表示输入神经元与输出神经元之间无权值连接,每组输入与所有输出的连接状态组成一个0和1的字符串来表示该输入神经元的连接关系。
可选地,目标权值位置缓存单元缓存一一对应的方法为将一组输出第一个连接所在的输入神经元位置距离第一个输入神经元的距离、所述输出第二组输入神经元距离上一个输入神经元的距离,所述输出第三组输入神经元距离上一个输入神经元的距离,……,依次类推,直到穷举所述输出的所有输入,来表示所述输出的连接关系。
上述输入神经元缓存单元,用于缓存输入到上述粗粒度选数单元的输入神经元。
上述输出神经元缓存单元,用于缓存运算单元输出的输出神经元。
上述输出神经元梯度缓存单元,用于缓存上述输出神经元的梯度。
上述指令控制单元,用于接收指令换成单元中的指令,将该指令译码生成控制信息已控制上述运算单元进行计算操作。
上述粗粒度选数单元,用于接收输入神经元和目标权值位置信息,并根据目标权值位置信息选出需要进行运算的输入神经元。该粗粒度选数单元只会选择出目标权值对应的输入神经元并传输至运算单元。
上述运算单元,用于根据从上述目标权值缓存单元中获取的目标权值及其对应的输入神经元进行运算,以得到输出神经元;将该输出神经元缓存到上述输出神经元缓存单元中。
需要说明的是,上述加速装置各单元功能可参见上述图51D所示实施例的相关描述,在此不再叙述。
需要指出的是,上述预处理单元、存储单元、DMA单元、粗粒度剪枝单元、指令缓存单元、指令控制单元、目标权值缓存单元、目标权值位置缓存单元、输入神经元缓存单元、输出神经元缓存单元、输出神经元梯度缓存单元、粗粒度选数单元和运算单元均为实体硬件器件,不是功能性软件单元。
以下,列举神经网络处理器实施例,对本公开的处理方法进行具体说明,但应理解的是其并非因此限制本公开,凡是利用本具体实施例所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本公开的保护范围内。
参见图52E,图52E是本发明实施例提供的一种处理方法的一具体实施例示意图。如图52E所示为神经网络的一个全连接层经过粗粒度剪枝后的结果,全连接层共有8个输入神经元为n1-n8和3个输出神经元为o1-o3。其中n3,n4,n7,n8四个输入神经元与o1,o2,o3三个输出神经元之间的权值通过粗粒度稀疏被置为零;n1与o1,o2,o3之间通过s11,s12,s13三个权值连接,n2与o1,o2,o3之间通过s21,s22,s23三个权值连接,n5与o1,o2,o3之间通过s31,s32,s33三个权值连接,n6与o1,o2,o3之间通过s41,s42,s43三个权值连接;我们用11001100这个比特串表示输入神经元与输出神经元之间的连接情况,即第一种表示目标权值位置信息的情况,1表示输入神经元与三个输出神经元都连接,0表示输入神经元与三个输出神经元都不连接。表1描述了实施例中神经元与权值的信息,公式1描述了o1,o2,o3三个输出神经元的运算公式。从公式1中可以看出o1,o2,o3将接收到相同的神经元进行运算。
细粒度剪枝指的是把每个权值看成独立个体,剪枝时候如果某个权值符合条件就被剪去;粗粒度剪枝就是把权值按照一定的方式分组,每组包括多个权值,如果一组权值符合条件,该组权值就会被全部剪除。
表1
公式1--输出神经元运算公式:
o1=n1*s11+n2*s12+n5*s13+n6*s14
o2=n1*s21+n2*s22+n5*s23+n6*s24
o3=n1*s31+n2*s32+n5*s33+n6*s34
在处理装置进行运算时,8个输入神经元,12个权值和8比特的位置信息以及相应的指令被传输到存储单元。粗粒度选数单元接收8个输入神经元和目标权值位置,选出n1,n2,n5,n6四个需要参与运算的神经元。运算单元接收四个被选择的神经元与权值,通过公式1完成输出神经元的运算,然后将输出神经元传输回存储部分。
本公开一些实施例中,公开了一种加速装置,包括:存储器:存储有可执行指令;处理器:用于执行存储单元中的可执行指令,在执行指令时依照上述处理方法进行操作。
其中,处理器可以是单个处理单元,但也可以包括两个或更多个处理单元。另外,处理器还可以包括通用处理器(CPU)或者图形处理器(GPU);还可以包括在现场可编程逻辑门阵列(FPGA)或者专用集成电路(ASIC),以对神经网络进行设置和运算。处理器还可以包括用于缓存用途的片上存储器(即包括处理装置中的存储器)。
本申请还揭露了一个神经网络运算装置,其包括一个或多个在本申请中提到的加速装置或处理装置,用于从其他处理装置中获取待运算数据和控制信息,执行指定的神经网络运算和/或训练,执行结果通过I/O接口传递给外围设备。外围设备譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口,服务器。当包含一个以上计算装置时,计算装置间可以通过特定的结构进行链接并传输数据,譬如,通过PCIE总线进行互联并传输数据,以支持更大规模的神经网络的运算和/或训练。此时,可以共享同一控制系统,也可以有各自独立的控制系统;可以共享内存,也可以每个加速器有各自的内存。此外,其互联方式可以是任意互联拓扑。
该神经网络运算装置具有较高的兼容性,可通过PCIE接口与各种类型的服务器相连接。
本申请还揭露了一个组合处理装置,其包括上述的神经网络运算装置,通用互联接口,和其他处理装置。神经网络运算装置与其他处理装置进行交互,共同完成用户指定的操作。图53A为组合处理装置的示意图。
其他处理装置,包括中央处理器CPU、图形处理器GPU、神经网络处理器等通用/专用处理器中的一种或以上的处理器类型。其他处理装置所包括的处理器数量不做限制。其他处理装置作为神经网络运算装置与外部数据和控制的接口,包括数据搬运,完成对本神经网络运算装置的开启、停止等基本控制;其他处理装置也可以和神经网络运算装置协作共同完成运算任务。
通用互联接口,用于在所述神经网络运算装置与其他处理装置间传输数据和控制指令。该神经网络运算装置从其他处理装置中获取所需的输入数据,写入神经网络运算装置片上的存储装置;可以从其他处理装置中获取控制指令,写入神经网络运算装置片上的控制缓存;也可以读取神经网络运算装置的存储模块中的数据并传输给其他处理装置。
可选的,该结构如图53B所示,还可以包括存储装置,存储装置分别与所述神经网络运算装置和所述其他处理装置连接。存储装置用于保存在所述神经网络运算装置和所述其他处理装置的数据,尤其适用于所需要运算的数据在本神经网络运算装置或其他处理装置的内部存储中无法全部保存的数据。
该组合处理装置可以作为手机、机器人、无人机、视频监控设备等设备的SOC片上系统,有效降低控制部分的核心面积,提高处理速度,降低整体功耗。此情况时,该组合处理装置的通用互联接口与设备的某些部件相连接。某些部件譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口。
在一些实施例中,公开了一种神经网络处理器,该神经网络处理器包括上述神经网络运算装置或组合处理装置。
在一些实施例里,公开了一种芯片,其包括了上述神经网络处理器。
在一些实施例里,公开了一种芯片封装结构,其包括了上述芯片。
在一些实施例里,公开了一种板卡,其包括了上述芯片封装结构。
在一些实施例里,公开了一种电子装置,其包括了上述板卡。
请参照图53C,图53C为本申请实施例提供的一种神经网络处理器板卡的结构示意图。如图53C所示,上述神经网络处理器板卡包括上述芯片封装结构、第一电气及非电气连接装置和第一基板(substrate)。
本申请对于芯片封装结构的具体结构不作限定,可选的,如图53D所示,上述芯片封装结构包括:芯片、第二电气及非电气连接装置、第二基板。
本申请所涉及的芯片的具体形式不作限定,上述芯片包含但不限于将神经网络处理器集成的神经网络晶片,上述晶片可以由硅材料、锗材料、量子材料或分子材料等制成。根据实际情况(例如:较严苛的环境)和不同的应用需求可将上述神经网络晶片进行封装,以使神经网络晶片的大部分被包裹住,而将神经网络晶片上的引脚通过金线等导体连到封装结构的外边,用于和更外层进行电路连接。
本申请对于第一基板和第二基板的类型不做限定,可以是印制电路板(printed circuit board,PCB)或(printed wiring board,PWB),还可能为其它电路板。对PCB的制作材料也不做限定。
本申请所涉及的第二基板用于承载上述芯片,通过第二电气及非电气连接装置将上述芯片和第二基板进行连接得到的芯片封装结构,用于保护芯片,便于将芯片封装结构与第一基板进行进一步封装。
对于上述具体的第二电气及非电气连接装置的封装方式和封装方式对应的结构不作限定,可根据实际情况和不同的应用需求选择合适的封装方式并进行简单地改进,例如:倒装芯片球栅阵列封装(Flip Chip Ball Grid Array Package,FCBGAP),薄型四方扁平式封装(Low-profile Quad Flat Package,LQFP)、带散热器的四方扁平封装(Quad Flat Package with Heat sink,HQFP)、无引脚四方扁平封装(Quad Flat Non-lead Package,QFN)或小间距四方扁平式封装(Fine-pitch Ball Grid Package,FBGA)等封装方式。
倒装芯片(Flip Chip),适用于对封装后的面积要求高或对导线的电感、信号的传输时间敏感的情况下。除此之外可以用引线键合(Wire Bonding)的封装方式,减少成本,提高封装结构的灵活性。
球栅阵列(Ball Grid Array),能够提供更多引脚,且引脚的平均导线长度短,具备高速传递信号的作用,其中,封装可以用引脚网格阵列封装(Pin Grid Array,PGA)、零插拔力(Zero Insertion Force,ZIF)、单边接触连接(Single Edge Contact Connection,SECC)、触点阵列(Land Grid Array,LGA)等来代替。
可选的,采用倒装芯片球栅阵列(Flip Chip Ball Grid Array)的封装方式对神经网络芯片和第二基板进行封装,具体的神经网络芯片封装结构的示意图可参照图53E。如图53E所示,上述芯片封装结构包括:芯片21、焊盘22、焊球23、第二基板24、第二基板24上的连接点25、引脚26。
其中,焊盘22与芯片21相连,通过在焊盘22和第二基板24上的连接点25之间焊接形成焊球23,将神经网络芯片21和第二基板24连接,即实现了芯片21的封装。
引脚26用于与封装结构的外部电路(例如,板卡上的第一基板)相连,可实现外部数据和内部数据的传输,便于芯片21或芯片21对应的神经网络处理器对数据进行处理。对于引脚的类型和数量本申请也不作限定,根据不同的封装技术可选用不同的引脚形式,并遵从一定规则进行排列。
可选的,上述神经网络芯片封装结构还包括绝缘填充物,置于焊盘22、焊球23和连接点25之间的空隙中,用于防止焊球与焊球之间产生干扰。
其中,绝缘填充物的材料可以是氮化硅、氧化硅或氧氮化硅;干扰包含电磁干扰、电感干扰等。
可选的,上述神经网络芯片封装结构还包括散热装置,用于散发神经网络芯片21运行时的热量。其中,散热装置可以是一块导热性良好的金属片、散热片或散热器,例如,风扇。
举例来说,如图53F所示,芯片封装结构包括:芯片21、焊盘22、焊球23、第二基板24、第二基板24上的连接点25、引脚26、绝缘填充物27、散热膏28和金属外壳散热片29。其中,散热膏28和 金属外壳散热片29用于散发芯片21运行时的热量。
可选的,上述芯片封装结构还包括补强结构,与焊盘22连接,且内埋于焊球23中,以增强焊球23与焊盘22之间的连接强度。
其中,补强结构可以是金属线结构或柱状结构,在此不做限定。
本申请对于第一电气及非电气装置的具体形式也不作限定,可参照第二电气及非电气装置的描述,即通过焊接的方式将芯片封装结构进行封装,也可以采用连接线连接或插拔方式连接第二基板和第一基板的方式,便于后续更换第一基板或芯片封装结构。
可选的,第一基板包括用于扩展存储容量的内存单元接口等,例如:同步动态随机存储器(Synchronous Dynamic Random Access Memory,SDRAM)、双倍速率同步动态随机存储器(Double Date Rate SDRAM,DDR)等,通过扩展内存提高了神经网络处理器的处理能力。
第一基板13上还可包括快速外部设备互连总线(Peripheral Component Interconnect-Express,PCI-E或PCIe)接口、小封装可热插拔(Small Form-factor Pluggable,SFP)接口、以太网接口、控制器局域网总线(Controller Area Network,CAN)接口等等,用于封装结构和外部电路之间的数据传输,可提高运算速度和操作的便利性。
将神经网络处理器封装为芯片,将芯片封装为芯片封装结构,将芯片封装结构封装为板卡,通过板卡上的接口(插槽或插芯)与外部电路(例如:计算机主板)进行数据交互,即直接通过使用神经网络处理器板卡实现神经网络处理器的功能,并保护芯片。且神经网络处理器板卡上还可添加其他模块,提高了神经网络处理器的应用范围和运算效率。
电子装置包括数据处理装置、机器人、电脑、打印机、扫描仪、平板
电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、云端服
务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备交通工具、家用电器、和/或医疗设备。
所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
参见图54,图54为发明实施例提供的一种处理方法的流程图。该处理方法用于神经网络的稀疏化,如图54所示,该处理方法包括:
S1801、处理装置根据滑动窗口从神经网络中选取M个权值,M为大于1的整数。
上述神经网络包括全连接层、卷积层和LSTM层。
上述处理装置从上述神经网络的全连接层中选取M个权值,包括:
如图51A所示,所述全连接层的权值是一个二维矩阵(Nin,Nout),其中Nin是输入神经元的个数,Nout是输出神经元的个数,所述全连接层有Nin*Nout个权值,所述滑动窗口的大小为Bin*Bout的滑动窗口,其中所述Bin为大于0且小于或等于Nin整数,所述Bout为大于0且小于或等于Nout的整数;
使所述滑动窗口能够沿着Bin的方向按照步长Sin进行滑动,或者沿着Bout的方向按照步长Sout进行滑动,其中Sin为大于0且小于或等于Bin的正整数,Sout为大于0且小于或等于Bout的正整数;
通过所述滑动窗口从所述Nin*Nout个权值中选取M个取值,该M=Bin*Bout。
上述处理装置从上述神经网络的卷积层中选取M个权值,包括:
如图51B所示,所述卷积层的权值是一个四维矩阵(Nfin,Nfout,Kx,Ky),
其中Nfin是输入特征图像的个数,Nfout是输出特征图像的个数,(Kx,Ky)是卷积核的大小,所述卷积层有Nfin*Nfout*Kx*Ky个权值;所述滑动窗口为大小为Bfin*Bfout*Bx*By的四维滑动窗口,其中Bfin为大于0且小于或等于Nfin的整数,Bfout为大于0且小于或等于Nfout的整数,Bx为大于0且小于或等于Kx的整数,By为大于0且小于或等于Ky的整数;
使所述滑动窗口沿着Bfin的方向按照步长Sfin进行滑动,或者沿着Bfout的方向按照步长Sfout进行滑动,或者沿着Bx的方向按照步长S进行滑动,或沿着By的方向按照步长Sy进行滑动,其中Sfin为大于0且小于或等于Bfin的整数,Sfout为大于0且小于或等于Bfout的整数,Sx为大于0且小于或等于Bx的整数,Sy为大于0且小于或等于By的整数;
通过所述滑动窗口从所述Nfin*Nfout*Kx*Ky个权值中选取M个权值,其中,所述M=Bfin*Bfout*Bx*By。
上述处理装置从上述神经网络的LSTM层中选取M个权值,包括:
所述LSTM层的权值有m个全连接层的权值组成,所述m为大于0的整数,第i个全连接层权值为(Nin_i,Nout_i),其中i是大于0且小于或等于m的整数,Nin_i表示第i个全连接层权值输入神经元个数,Nout_i表示第i个全连接层权值输出神经元个数;所述滑动窗口的大小为Bin_i*Bout_i,其中Bin_i为大于0且小于或等于Nin_i的整数,Bout_i为大于0且小于或等于Nout_i的整数;
使所述滑动窗口沿着Bin_i的方向按照步长Sin_i进行滑动,或沿着Bout_i的方向按照步长Sout_i进行滑动,其中Sin_i为大于0且小于或等于Bin_i的正整数,Sout_i为大于0且小于或等于Bout_i的正整数;
通过所述滑动窗口从所述Bin_i*Bout_i个权值中选取M个权值,其中,所述M=Bin_i*Bout_i。
S1802、当所述M个权值满足预设条件时,处理装置将M个权值全部或者部分置为零,以得到剪枝后的权值。
其中,上述预设条件为:上述M个权值的信息量满足预设判断条件。
作为一种可选的实施方式,上述预设判断条件包括阈值判断条件。其中,阈值判断条件,可以包括:小于一给定阈值,小于等于一给定阈值,大于一给定阈值,大于等于一给定阈值,在一给定取值范围内或在一给定取值范围外中的一种或几种。
具体地,上述M个权值的信息量小于一给定阈值,其中,上述M个权值的信息量包括但不限于该M个权值绝对值的算术平均值、该M个权值绝对值的几何平均值和该M个权值绝对值的最大值。上述M个权值绝对值的算术平均值小于第一阈值;或者上述M个权值绝对值的几何平均值小于第二阈值;或者上述M个权值绝对值的最大值小于第三阈值。对于上述第一阈值、第二阈值和第三阈值中各自的选择,本领域技术人员可以根据情况进行预先设定,也可以通过改变预设公式中的输入参数的方式计算获得,还可以通过机器学习的方式获得。对于第一阈值、第二阈值以及第三阈值的获取方式,本公开并不做具体限定。
作为一种可选的实施方式,上述预设判断条件包括函数映射判断条件,该函数映射判断条件为判断上述M个权值经函数变换后是否满足给定条件。
需要指出的是,上述步骤S1801和S1802可以看成上述处理装置对上述神经网络进行粗粒度剪枝,直至保证在精度不损失设定精度的前提下没有权值满足所述预设条件。
进一步地,上述处理装置重复对上述神经网络的权值进行粗粒度剪枝以及根据剪枝后的权值进行训练。其中,上述设定精度为x%,x介于0到5之间。
S1803、处理装置根据剪枝后的权值,对神经网络进行训练。
具体地,上述处理装置根据所述剪枝后的权值对神经网络进行训练具体为:
上述处理装置根据上述剪枝后的权值和通过反向传播算法对所述神经网络进行重新训练。
可选地,在对上述神经网络进行粗粒度剪枝和重训练之间还包括:
上述处理装置量化和/或降低权值比特数操作。
需要指出的是,上述处理装置对神经网络进行训练过程中,被置为0的权值一致保持为0。
应该理解到,所揭露的相关装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元均为被设置来实现某些特定功能的硬件,功能的划分仅仅为 一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。
通过本公开的实施例,提供了神经网络的粗粒度稀疏化的处理方法和对应的处理装置,以及芯片、芯片封装结构、板卡和电子装置。其中,粗粒度稀疏化处理方法能够使稀疏神经网络更加规则化,利于用硬件进行加速,同时减少目标权值位置的存储空间。神经网络处理器能够充分挖掘粗粒度稀疏的特性,减少访存同时减少运算量,从而获得加速比并降低能耗。
在本发明的实施例中,上述目标权值为绝对值大于第二预设阈值的权值。
图54是本公开实施例的处理方法的流程图。在本公开一些实施例中,提供了一种处理方法,用于神经网络的稀疏化,如图54所示,处理方法包括:
S1801、处理装置根据滑动窗口从神经网络中选取M个权值,M为大于1的整数。
上述神经网络包括全连接层、卷积层和LSTM层。
上述处理装置从上述神经网络的全连接层中选取M个权值,包括:
如图51A所示,所述全连接层的权值是一个二维矩阵(Nin,Nout),其中Nin是输入神经元的个数,Nout是输出神经元的个数,所述全连接层有Nin*Nout个权值,所述滑动窗口的大小为Bin*Bout的滑动窗口,其中所述Bin为大于0且小于或等于Nin整数,所述Bout为大于0且小于或等于Nout的整数;所述处理装置对神经网络的全连接层的权值进行粗粒度剪枝,包括:
使所述滑动窗口能够沿着Bin的方向按照步长Sin进行滑动,或者沿着Bout的方向按照步长Sout进行滑动,其中Sin为大于0且小于或等于Bin的正整数,Sout为大于0且小于或等于Bout的正整数;
通过所述滑动窗口从所述Nin*Nout个权值中选取M个取值,该M=Bin*Bout。
上述处理装置从上述神经网络的卷积层中选取M个权值,包括:
如图51B所示,所述卷积层的权值是一个四维矩阵(Nfin,Nfout,Kx,Ky),
其中Nfin是输入特征图像的个数,Nfout是输出特征图像的个数,(Kx,Ky)是卷积核的大小,所述卷积层有Nfin*Nfout*Kx*Ky个权值;所述滑动窗口为大小为Bfin*Bfout*Bx*By的四维滑动窗口,其中Bfin为大于0且小于或等于Nfin的整数,Bfout为大于0且小于或等于Nfout的整数,Bx为大于0且小于或等于Kx的整数,By为大于0且小于或等于Ky的整数;
使所述滑动窗口沿着Bfin的方向按照步长Sfin进行滑动,或者沿着Bfout的方向按照步长Sfout进行滑动,或者沿着Bx的方向按照步长S进行滑动,或沿着By的方向按照步长Sy进行滑动,其中Sfin为大于0且小于或等于Bfin的整数,Sfout为大于0且小于或等于Bfout的整数,Sx为大于0且小于或等于Bx的整数,Sy为大于0且小于或等于By的整数;
通过所述滑动窗口从所述Nfin*Nfout*Kx*Ky个权值中选取M个权值,其中,所述M=Bfin*Bfout*Bx*By。
上述处理装置从上述神经网络的LSTM层中选取M个权值,包括:
所述LSTM层的权值有m个全连接层的权值组成,所述m为大于0的整数,第i个全连接层权值为(Nin_i,Nout_i),其中i是大于0且小于或等于m的整数,Nin_i表示第i个全连接层权值输入神经元个数,Nout_i表示第i个全连接层权值输出神经元个数;所述滑动窗口的大小为Bin_i*Bout_i,其中Bin_i为大于0且小于或等于Nin_i的整数,Bout_i为大于0且小于或等于Nout_i的整数;
使所述滑动窗口沿着Bin_i的方向按照步长Sin_i进行滑动,或沿着Bout_i的方向按照步长Sout_i进行滑动,其中Sin_i为大于0且小于或等于Bin_i的正整数,Sout_i为大于0且小于或等于Bout_i的正整数;
通过所述滑动窗口从所述Bin_i*Bout_i个权值中选取M个权值,其中,所述M=Bin_i*Bout_i。
S1802、当所述M个权值满足预设条件时,处理装置将M个权值全部或者部分置为零,以得到剪枝 后的权值。
其中,上述预设条件为:
上述M个权值的信息量满足预设判断条件。
作为一种可选的实施方式,上述预设判断条件包括阈值判断条件。其中,阈值判断条件,可以包括:小于一给定阈值,小于等于一给定阈值,大于一给定阈值,大于等于一给定阈值,在一给定取值范围内或在一给定取值范围外中的一种或几种。
具体地,上述M个权值的信息量小于一给定阈值,其中,上述M个权值的信息量包括但不限于该M个权值绝对值的算术平均值、该M个权值绝对值的几何平均值和该M个权值绝对值的最大值。上述M个权值绝对值的算术平均值小于第一阈值;或者上述M个权值绝对值的几何平均值小于第二阈值;或者上述M个权值绝对值的最大值小于第三阈值。对于上述第一阈值、第二阈值和第三阈值中各自的选择,本领域技术人员可以根据情况进行预先设定,也可以通过改变预设公式中的输入参数的方式计算获得,还可以通过机器学习的方式获得。对于第一阈值、第二阈值以及第三阈值的获取方式,本公开并不做具体限定。
作为一种可选的实施方式,上述预设判断条件包括函数映射判断条件,该函数映射判断条件为判断经函数变换后是否满足给定条件。
进一步地,上述处理装置重复对上述神经网络的权值进行粗粒度剪枝以及根据剪枝后的权值进行训练,。其中,上述设定精度为x%,x介于0到5之间。
S1803、处理装置根据剪枝后的权值,对神经网络进行训练。
具体地,上述处理装置根据所述剪枝后的权值对神经网络进行训练具体为:
上述处理装置根据上述剪枝后的权值和通过反向传播算法对所述神经网络进行重新训练。
进一步地,上述处理装置根据训练后的神经网络进行运算,并将通过运算得到输出神经元存储到上述处理装置中。
图1是本公开实施例的包括粗粒度剪枝单元和运算单元的处理装置的结构示意图,用于对神经网络进行剪枝。该处理装置包括:
粗粒度剪枝单元:用于对所述神经网络的权值进行粗粒度剪枝,以得到剪枝后的权值;所述目标权值为绝对值大于第二预设阈值的权值;
其中,所述粗粒度剪枝单元具体用于:
通过滑动窗口从神经网络的权值中选取出M个权值,所述M为大于1的整数;
当所述M个权值满足预设条件时,将所述M个权值的全部或者部分置为零。
其中,上述预设条件为:
上述M个权值的信息量满足预设判断条件。
作为一种可选的实施方式,上述预设判断条件包括阈值判断条件。其中,阈值判断条件,可以包括:小于一给定阈值,小于等于一给定阈值,大于一给定阈值,大于等于一给定阈值,在一给定取值范围内或在一给定取值范围外中的一种或几种。
具体地,上述M个权值的信息量小于一给定阈值,其中,上述M个权值的信息量包括但不限于该M个权值绝对值的算术平均值、该M个权值绝对值的几何平均值和该M个权值绝对值的最大值。上述M个权值绝对值的算术平均值小于第一阈值;或者上述M个权值绝对值的几何平均值小于第二阈值;或者上述M个权值绝对值的最大值小于第三阈值。对于上述第一阈值、第二阈值和第三阈值中各自的选择,本领域技术人员可以根据情况进行预先设定,也可以通过改变预设公式中的输入参数的方式计算获得,还可以通过机器学习的方式获得。对于第一阈值、第二阈值以及第三阈值的获取方式,本公开并不做具体限定。
作为一种可选的实施方式,上述预设判断条件包括函数映射判断条件,该函数映射判断条件为判断 上述M个权值经函数变换后是否满足给定条件。
所述神经网络包括全连接层、卷积层和/或长短期记忆LSTM层,其中,所述全连接层的权值是一个二维矩阵(Nin,Nout),其中Nin是输入神经元的个数,Nout是输出神经元的个数,所述全连接层有Nin*Nout个权值;所述卷积层的权值是一个四维矩阵(Nfin,Nfout,Kx,Ky),其中Nfin是输入特征图像的个数,Nfout是输出特征图像的个数,(Kx,Ky)是卷积核的大小,所述卷积层有Nfin*Nfout*Kx*Ky个权值;所述LSTM层的权值有m个全连接层的权值组成,所述m为大于0的整数,第i个全连接层权值为(Nin_i,Nout_i),其中i是大于0且小于或等于m的整数,Nin_i表示第i个全连接层权值输入神经元个数,Nout_i表示第i个全连接层权值输出神经元个数;所述粗粒度剪枝单元具体用于:
当对所述全连接层的权值进行粗粒度剪枝操作时,所述滑动窗口的大小为Bin*Bout的滑动窗口,其中所述Bin为大于0且小于或等于Nin整数,所述Bout为大于0且小于或等于Nout的整数;
使所述滑动窗口能够沿着Bin的方向按照步长Sin进行滑动,或者沿
着Bout的方向按照步长Sout进行滑动,其中Sin为大于0且小于或等于Bin的正整数,Sout为大于0且小于或等于Bout的正整数;
通过所述滑动窗口从所述Nin*Nout个权值中选取M个取值,当所述M个权值满足所述预设条件时,将所述M个权值全部或者部分置为零,其中,所述M=Bin*Bout;
当对所述卷积层的权值进行粗粒度剪枝操作时,所述滑动窗口为大小为Bfin*Bfout*Bx*By的四维滑动窗口,其中Bfin为大于0且小于或等于Nfin的整数,Bfout为大于0且小于或等于Nfout的整数,Bx为大于0且小于或等于Kx的整数,By为大于0且小于或等于Ky的整数;
使所述滑动窗口沿着Bfin的方向按照步长Sfin进行滑动,或者沿着Bfout的方向按照步长Sfout进行滑动,或者沿着Bx的方向按照步长S进行滑动,或沿着By的方向按照步长Sy进行滑动,其中Sfin为大于0且小于或等于Bfin的整数,Sfout为大于0且小于或等于Bfout的整数,Sx为大于0且小于或等于Bx的整数,Sy为大于0且小于或等于By的整数;
通过所述滑动窗口从所述Nfin*Nfout*Kx*Ky个权值中选取M个权值,当所述M个权值满足所述预设条件时,将所述M个权值全部或者部分置为零,其中,所述M=Bfin*Bfout*Bx*By;
当对所述LSTM层的权值进行粗粒度剪枝操作时,所述滑动窗口的大小为Bin_i*Bout_i,其中Bin_i为大于0且小于或等于Nin_i的整数,Bout_i为大于0且小于或等于Nout_i的整数;
使所述滑动窗口沿着Bin_i的方向按照步长Sin_i进行滑动,或沿着Bout_i的方向按照步长Sout_i进行滑动,其中Sin_i为大于0且小于或等于Bin_i的正整数,Sout_i为大于0且小于或等于Bout_i的正整数;
通过所述滑动窗口从所述Bin_i*Bout_i个权值中选取M个权值,当所述M个权值满足所述预设条件时,将所述M个权值全部或者部分置为零,其中,所述M=Bin_i*Bout_i。
运算单元,用于根据所述剪枝后的权值进行训练;训练过程中已经被置为零的权值保持为零。
运算单元集成了神经网络反向传播训练算法,接收粗粒度剪枝后的神经网络,采用反向传播训练算法进行训练,在训练过程中被剪枝的权值始终保持为0。运算单元将训练后的神经网络或者传输给粗粒度剪枝单元进行进一步剪枝操作,或者直接输出。
本公开提供了一种处理装置(例如人工神经网络芯片),图51C是本公开实施例的处理装置的结构示意图。如图51C所示的处理装置,能够加速处理粗粒度稀疏后的神经网络,充分挖掘粗粒度稀疏的特性,减少访存同时减少运算量,从而获得加速比并降低能耗。
处理装置包括存储单元,指令控制单元,粗粒度剪枝单元、粗粒度选数单元和运算单元。处理装置可以是用于神经网络处理。
存储单元可用来存储神经网络的神经元,权值以及指令。
粗粒度剪枝单元,用于对所述神经网络的权值进行粗粒度剪枝,以得到剪枝后的权值,并将剪枝后 的权值和目标权值位置信息存储到所述存储单元中;所述目标权值为绝对值大于第二预设阈值的权值,其中,所述粗粒度剪枝单元具体用于:
通过滑动窗口从神经网络的权值中选取出M个权值,所述M为大于1的整数;
当所述M个权值满足预设条件时,将所述M个权值的全部或者部分置为零。
进一步的,所述M个权值的信息量小于第一预设阈值。
进一步的,所述M个权值的信息量为所述M个权值绝对值的算术平均值、所述M个权值绝对值的几何平均值或者所述M个权值的最大值,所述第一预设阈值为第一阈值、第二阈值或者第三阈值,所述M个权值的信息量小于第一预设阈值包括:
所述M个权值绝对值的算术平均值小于所述第一阈值,或者所述M个权值绝对值的几何平均值小于所述第二阈值,或者所述M个权值的最大值小于所述第三阈值。
进一步的,所述粗粒度剪枝单元和运算单元用于:
重复对所述神经网络的权值进行粗粒度剪枝以及根据剪枝后的权值进行训练,直至保证在精度不损失设定精度的前提下没有权值满足所述预设条件。
进一步的,所述神经网络包括全连接层、卷积层和/或长短期记忆LSTM层,其中,所述全连接层的权值是一个二维矩阵(Nin,Nout),其中Nin是输入神经元的个数,Nout是输出神经元的个数,所述全连接层有Nin*Nout个权值;所述卷积层的权值是一个四维矩阵(Nfin,Nfout,Kx,Ky),其中Nfin是输入特征图像的个数,Nfout是输出特征图像的个数,(Kx,Ky)是卷积核的大小,所述卷积层有Nfin*Nfout*Kx*Ky个权值;所述LSTM层的权值有m个全连接层的权值组成,所述m为大于0的整数,第i个全连接层权值为(Nin_i,Nout_i),其中i是大于0且小于或等于m的整数,Nin_i表示第i个全连接层权值输入神经元个数,Nout_i表示第i个全连接层权值输出神经元个数;所述粗粒度剪枝单元具体用于:
当对所述全连接层的权值进行粗粒度剪枝操作时,所述滑动窗口的大小为Bin*Bout的滑动窗口,其中所述Bin为大于0且小于或等于Nin整数,所述Bout为大于0且小于或等于Nout的整数;
使所述滑动窗口能够沿着Bin的方向按照步长Sin进行滑动,或者沿
着Bout的方向按照步长Sout进行滑动,其中Sin为大于0且小于或等于Bin的正整数,Sout为大于0且小于或等于Bout的正整数;
通过所述滑动窗口从所述Nin*Nout个权值中选取M个取值,当所述M个权值满足所述预设条件时,将所述M个权值全部或者部分置为零,其中,所述M=Bin*Bout;
当对所述卷积层的权值进行粗粒度剪枝操作时,所述滑动窗口为大小为Bfin*Bfout*Bx*By的四维滑动窗口,其中Bfin为大于0且小于或等于Nfin的整数,Bfout为大于0且小于或等于Nfout的整数,Bx为大于0且小于或等于Kx的整数,By为大于0且小于或等于Ky的整数;
使所述滑动窗口沿着Bfin的方向按照步长Sfin进行滑动,或者沿着Bfout的方向按照步长Sfout进行滑动,或者沿着Bx的方向按照步长S进行滑动,或沿着By的方向按照步长Sy进行滑动,其中Sfin为大于0且小于或等于Bfin的整数,Sfout为大于0且小于或等于Bfout的整数,Sx为大于0且小于或等于Bx的整数,Sy为大于0且小于或等于By的整数;
通过所述滑动窗口从所述Nfin*Nfout*Kx*Ky个权值中选取M个权值,当所述M个权值满足所述预设条件时,将所述M个权值全部或者部分置为零,其中,所述M=Bfin*Bfout*Bx*By;
当对所述LSTM层的权值进行粗粒度剪枝操作时,所述滑动窗口的大小为Bin_i*Bout_i,其中Bin_i为大于0且小于或等于Nin_i的整数,Bout_i为大于0且小于或等于Nout_i的整数;
使所述滑动窗口沿着Bin_i的方向按照步长Sin_i进行滑动,或沿着Bout_i的方向按照步长Sout_i进行滑动,其中Sin_i为大于0且小于或等于Bin_i的正整数,Sout_i为大于0且小于或等于Bout_i的正整数;
通过所述滑动窗口从所述Bin_i*Bout_i个权值中选取M个权值,当所述M个权值满足所述预设条件时,将所述M个权值全部或者部分置为零,其中,所述M=Bin_i*Bout_i。
运算单元,用于根据所述剪枝后的权值进行训练;训练过程中已经被置为零的权值保持为零。
指令控制单元用于接收存储部分中的指令,经过译码后生成控制指令控制粗粒度选数单元进行选数操作和运算单元进行计算操作。
粗粒度选数单元用于接收输入神经元和目标权值位置数据,使用滑动窗口选取神经网络的一组权值,将选取的权值都置为零,并选取出目标权值对应的神经元。
上述运算单元用于接收输入被选择的神经元和目标权值,通过乘加运算单元完成神经网络运算,得到输出神经元并将所述输出神经元重新传输给存储单元。
更进一步的,存储单元存放权值时只存放目标权值以及目标权值位置数据。
更进一步的,粗粒度选数单元只会选择出目标权值对应的神经元并传输给运算单元。
更进一步的,如图52D所示,处理装置还可包括预处理单元。该单元对原始数据进行预处理,包括切分、高斯滤波、二值化、正则化、归一化等等。
更进一步的,处理装置还可包括直接内存存取(direct memory access,DMA)单元。
更进一步的,处理装置还可包括指令缓存单元,输入神经元缓存单元,目标权值缓存单元,目标权值位置缓存单元,输出神经元缓存单元。
特别的,存储单元主要用来存储神经网络的神经元,权值以及指令。其中存放权值时只存放目标权值以及目标权值位置数据。
特别的,DMA单元用于在所述存储单元、指令缓存单元、目标权值缓存单元、目标权值位置缓存单元,输入神经元缓存单元和输出神经元缓存单元中进行数据或者指令读写。
指令缓存单元,用于存储专用指令;
目标权值缓存单元,用于缓存目标权值;
目标权值位置缓存单元,用于缓存目标权值位置信息;
目标权值位置缓存单元将输入数据中每个连接权值一一对应到相应的输入神经元。
一种情形下目标权值位置缓存单元缓存一一对应的方法为采用1表示有连接,0表示无连接,每组输出与所有输入的连接状态组成一个0和1的字符串来表示该输出的连接关系。另一种情形下目标权值位置缓存单元缓存一一对应的方法为采用1表示有连接,0表示无连接,每组输入与所有输出的连接状态组成一个0和1的字符串来表示该输入的连接关系。另一种情形下目标权值位置缓存单元缓存一一对应的方法为将一组输出第一个连接所在的输入神经元位置距离第一个输入神经元的距离、所述输出第二组输入神经元距离上一个输入神经元的距离,所述输出第三组输入神经元距离上一个输入神经元的距离,……,依次类推,直到穷举所述输出的所有输入,来表示所述输出的连接关系。
输入神经元缓存单元,用于缓存输入到粗粒度选数单元的输入神经元;
输出神经元缓存单元,用于缓存运算单元输出的输出神经元。
运算单元,用于根据存储单元中存储的指令对所述数据执行相应运算。
运算单元包括但不仅限于三个部分,第一部分乘法器,第二部分加法树,第三部分为激活函数单元。第一部分将第一输入数据(in1)和第二输入数据(in2)相乘得到相乘之后的输出(out1),过程为:out=in1*in2;第二部分将第三输入数据in3通过加法树逐级相加得到第二输出数据(out2),其中in3是一个长度为N的向量,N大于1,过称为:out2=in3[1]+in3[2]+...+in3[N],和/或将第三输入数据(in3)通过加法数累加之后和第四输入数据(in4)相加得到第二输出数据(out2),过程为:out=in3[1]+in3[2]+...+in3[N]+in4,或者将第三输入数据(in3)和第四输入数据(in4)相加得到第二输出数据(out2),过称为:out2=in3+in4;第三部分将第五输入数据(in5)通过激活函数(active)运算得到激活输出数据(out),过程为:out3=active(in5),激活函数active可以是sigmoid、tanh、 relu、softmax等,除了做激活操作,第三部分可以实现其他的非线性函数,可将将输入数据(in)通过运算(f)得到输出数据(out),过程为:out=f(in)。
运算单元还可以包池化单元,池化单元将输入数据(in)通过池化运算得到池化操作之后的输出数据(out),过程为out=pool(in),其中pool为池化操作,池化操作包括但不限于:平均值池化,最大值池化,中值池化,输入数据in是和输出out相关的一个池化核中的数据。
所述运算单元执行运算包括几个部分,第一部分是将所述第一输入数据和第二输入数据相乘,得到相乘之后的数据;第二部分执行加法树运算,用于将第三输入数据通过加法树逐级相加,或者将所述第三输入数据通过和第四输入数据相加得到输出数据;第三部分执行激活函数运算,对第五输入数据通过激活函数(active)运算得到输出数据。以上几个部分的运算可以自由组合,从而实现各种不同功能的运算。
需要指出的是,上述预处理单元、存储单元、DMA单元、粗粒度剪枝单元、指令缓存单元、指令控制单元、目标权值缓存单元、目标权值位置缓存单元、输入神经元缓存单元、输出神经元缓存单元、粗粒度选数单元和运算单元均为实体硬件器件,不是功能性软件单元。
以下,列举神经网络处理器实施例,对本公开的处理方法进行具体说明,但应理解的是其并非因此限制本公开,凡是利用本具体实施例所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本公开的保护范围内。
图52E是本公开以处理方法的一具体实施例。如图52E所示,其是神经网络的一个全连接层经过粗粒度剪枝后的结果,全连接层共有8个输入神经元为n1-n8和3个输出神经元为o1-o3。其中n3,n4,n7,n8四个输入神经元与o1,o2,o3三个输出神经元之间的权值通过粗粒度稀疏被置为零;n1与o1,o2,o3之间通过s11,s12,s13三个权值连接,n2与o1,o2,o3之间通过s21,s22,s23三个权值连接,n5与o1,o2,o3之间通过s31,s32,s33三个权值连接,n6与o1,o2,o3之间通过s41,s42,s43三个权值连接;我们用11001100这个比特串表示输入神经元与输出神经元之间的连接情况,即第一种表示目标权值位置数据的情况,1表示输入神经元与三个输出神经元都连接,0表示输入神经元与三个输出神经元都不连接。表1描述了实施例中神经元与权值的数据,公式1描述了o1,o2,o3三个输出神经元的运算公式。从公式1中可以看出o1,o2,o3将接收到相同的神经元进行运算。
需要说明的是,细粒度剪枝指的是把每个权值看成独立个体,剪枝时候如果某个权值符合条件就被剪去;粗粒度剪枝就是把权值按照一定的方式分组,每组包括多个权值,如果一组权值符合条件,该组权值就会被全部剪除。
表2
公式1--输出神经元运算公式:
o1=n1*s11+n2*s12+n5*s13+n6*s14
o2=n1*s21+n2*s22+n5*s23+n6*s24
o3=n1*s31+n7*s32+n5*s33+n6*s34
在处理装置进行运算时,8个输入神经元,12个权值和8比特的位置数据以及相应的指令被传输到存储单元。粗粒度选数单元接收8个输入神经元和目标权值位置,选出n1,n2,n5,n6四个需要参与运算的神经元。运算单元接收四个被选择的神经元与权值,通过公式1完成输出神经元的运算,然后将输出神经元传输回存储部分。
本公开一些实施例中,公开了一种处理装置,包括:存储器:存储有可执行指令;处理器:用于执行存储单元中的可执行指令,在执行指令时依照上述处理方法进行操作。
其中,处理器可以是单个处理单元,但也可以包括两个或更多个处理单元。另外,处理器还可以包括通用处理器(CPU)或者图形处理器(GPU);还可以包括在现场可编程逻辑门阵列(FPGA)或者专用集成电路(ASIC),以对神经网络进行设置和运算。处理器还可以包括用于缓存用途的片上存储器(即包括处理装置中的存储器)。
在一些实施例里,公开了一种芯片,其包括了上述处理装置。
在一些实施例里,公开了一种芯片封装结构,其包括了上述芯片。
在一些实施例里,公开了一种板卡,其包括了上述芯片封装结构。
在一些实施例里,公开了一种电子装置,其包括了上述板卡。
电子装置包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备交通工具、家用电器、和/或医疗设备。
所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
基于现有技术仅按神经网络的层为单位进行量化的技术问题,本公开提供了一种数据的量化方法,通过分组和聚类操作,对神经网络的权值进行分组,并将每一组权值分成m个类,计算出每个类的中心权值,每个类中的所有权值都用该类对应的中心权值替换;以及对中心权值进行编码操作,以得到密码本和权值字典,形成了一套完整的量化方法。
此外,本公开还可以对神经网络进行重训练,且重训练只需训练密码本,权值字典内容保持不变,减小了工作量。还可以将该量化方法得到的量化权值应用在本公开提供的处理装置中,增加了查找表单元,每次进行处理时不需输入权值,只需根据查找控制指令查找权值字典和密码本即可获得量化权值,实现了系统化的操作,且通过充分挖掘神经网络的权值分布特性,得到低比特量化的权值,大大提高了处理速度,降低了权值存储开销和访存开销。
本公开某些实施例于后方将参照所附附图做更全面性地描述,其中一些但并非全部的实施例将被示出。实际上,本公开的各种实施例可以许多不同形式实现,而不应被解释为限于此数所阐述的实施例;相对地,提供这些实施例使得本公开满足适用的法律要求。
在本说明书中,下述用于描述本公开原理的各种实施例只是说明,不应该以任何方式解释为限制公开的范围。参照附图的下述描述用于帮助全面理解由权利要求及其等同物限定的本公开的示例性实施例。下述描述包括多种具体细节来帮助理解,但这些细节应认为仅仅是示例性的。因此,本领域普通技术人员应认识到,在不悖离本公开的范围和精神的情况下,可以对本文中描述的实施例进行多种改变和修改。此外,为了清楚和简洁起见,省略了公知功能和结构的描述。此外,贯穿附图,相同附图标记用于相似功能和操作。在本公开中,术语“包括”和“含有”及其派生词意为包括而非限制。
为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开进一步详细说明。
本公开实施例的一方面,提供了一种数据的量化方法,图54A为本公开实施例的数据的量化方法的 步骤示意图,如图54A所示,包括步骤:
S1901、对神经网络的权值进行分组。
进一步地,对神经网络的权值进行的分组可以按照分为一组、层类型分组、层间分组、层内分组、混合分组等方式进行;
S1902、根据聚类算法对每组权值进行聚类操作,并以中心权值表示每个类别的权值。
具体地,将每组权值分成m个类,计算出每个类的中心权值,将每个类中的所有权值都用该类对应的中心权值替换。
其中,所述聚类算法包括但不限于K-measn、K-medoids、Clara和Clarans。
进一步地,所述一个类的中心权值选择方法为,使得代价函数J(w,w
0)最小。
其中,w是一个类中的所有权值,w0是该类的中心权值,n是该类中权值的数量,wi是该类中第i个权值,i是大于或等于1且小于或等于n的整数。
S1903、对中心权值进行编码操作,得到密码本和权值字典。
该权值量化方法还可以对神经网络进行重训练,在重训练过程中,只训练密码本,权值字典内容保持不变。具体的,重训练可以采用反向传播算法。
图54B为本公开实施例的数据的量化的过程示意图,如图54B所示,按照分组的策略对神经网络的权值进行分组,得到有序排列的权值矩阵。再对分组后的权值矩阵进行组内采样以及聚类操作,从而将值相近的权值划为同一类别,得到1.50、-0.13、-1.3和0.23这4个中心权值,并分别对应四个类别的权值。然后,对中心权值进行编码操作,将中心权值为-1.3的类别编码为00,将中心权值为-0.13的类别编码为01,将中心权值为0.23的类别编码为10,将中心权值为1.50的类别编码为11,此为密码本内容。另外,还分别用4个中心权值对应的编码内容(00、01、10和11)分别表示对应类别中的权值,从而得到权值字典。
该量化过程充分挖掘了神经网络层间权值的相似性以及层内权值局部相似性,得到神经网络的权值分布特性从而进行低比特量化,减小了表示每一个权值的比特数,从而降低了权值存储开销和访存开销。
接下来,对神经网络的数据的量化方法进行举例说明:
实施例1:将神经网络的所有权值归为一组,对每一组权值采用K-means聚类算法进行聚类,每个类计算出一个中心权值,每一个类中所有权值用中心权值进行替换。然后根据量化后的权值生成权值字典和密码本,对神经网络进行重训练,在重训练过程中仅仅训练密码本而不训练权值字典。具体的,重训练采用反向传播算法进行重新训练。
实施例2:将神经网络的权值按照层类型进行分组。比如该神经网络包括全连接层、卷积层和长短期记忆(long short term memory,LSTM)层。所有卷积层的权值为一组,所有全连接层的权值为一组,所有LSTM层的权值为一组。
若一个神经网络有i个卷积层,j个全连接层,m个LSTM层,共t种不同类型的层,其中i,j,m均为大于或等于0的整数且满足i+j+m>=1,t为大于或等于1的整数且满足t=i+j+m,神经网络的权值将被分为t组。对t组权值中的每组权值采用K-medoids聚类算法进行聚类,计算出每个类的中心权值,将每一个类中所有权值用该类对应的中心权值进行替换。然后根据每一组内量化后的权值生成权值字典和密码本,最后对神经网络进行重训练,在重训练过程中仅仅训练密码本而不训练权值字典。具体的,重训练采用反向传播算法进行重新训练。
实施例3:将神经网络的权值按照层间结构进行分组。
具体地,将一个或者连续多个卷积层分为一组,一个或者连续多个全连接层分为一组,一个或者连续多个LSTM层分为一组。对每一组内权值采用Clara聚类算法进行聚类,值相近的权值将被划分到同 一个类,计算出每个类的中心权值,每个类中的所有权值都用该类对应的中心权值替换。然后根据每一组内量化后的权值生成权值字典和密码本,最后对神经网络进行重训练,在重训练过程中仅仅训练密码本而不训练权值字典。具体的,重训练采用反向传播算法进行重新训练。
实施例4:将神经网络的权值按照层内结构进行分组。
具体地,神经网络的卷积层可以看成是一个四维矩阵(Nfin,Nfout,Kx,Ky),其中Nfin,Nfout,Kx,Ky是正整数,Nfin表示输入特征图像(feature map)数量,Nfout表示输出特征图像数量,(Kx,Ky)表示卷积核(kernel)的大小。卷积层的权值按(Bfin,Bfout,Bx,By)的组大小被分成Nfin*Nfout*Kx*Ky/(Bfin*Bfout*Bx*By)个不同的组,其中Bfin为小于或等于Nfin的正整数,Bfout为小于或等于Nfout的正整数,Bx为小于或等于Kx的正整数,By为小于或等于Ky的正整数。
神经网络的全连接层可以看成是一个二维矩阵(Nin,Nout),其中Nin,Nout是正整数,Nin表示输入神经元的个数,Nout表示输出神经元的个数,共有Nin*Nout个权值。全连接层权值按照(Bin,Bout)的组大小被分成(Nin*Nout)/(Bin*Bout)个不同的组,其中Bin是小于或等于Nin的正整数,Bout是小于或等于Nout的正整数。
神经网络的LSTM层权值可以看出多个全连接层的权值的组合,假设LSTM层的权值由n个全连接层权值组成,其中n为正整数,则每一个全连接层都可以按照全连接层的分组方式进行分组操作。
对每一组内权值采用Clarans聚类算法进行聚类,计算出每个类的中心权值,将每一个类中所有权值用该类对应的中心权值进行替换。然后根据每一组内量化后的权值生成权值字典和密码本,最后对神经网络进行重训练,在重训练过程中仅仅训练密码本而不训练权值字典。具体的,重训练采用反向传播算法进行重新训练。
实施例5:将神经网络的权值按照混合的方式进行分组,比如所有卷积层为一组,所有全连接层按照层内结构进行分组,所有LSTM层按照层间结构进行分组。对每一组内权值采用Clarans聚类算法进行聚类,计算出每个类的中心权值,将每个类中的所有权值都用该类对应的中心权值替换。然后根据每一组内量化后的权值生成权值字典和密码本,最后对神经网络进行重训练,在重训练过程中仅仅训练密码本而不训练权值字典。具体的,重训练采用反向传播算法进行重新训练。
本公开实施例的另一方面,还提供了一种数据的量化装置,图54C为本公开实施例的数据的量化装置的结构示意图,如图54C所示,其包括:
存储器1,用于存储操作指令;所述操作指令一般为二进制数形式,由操作码和地址码构成,操作码指示处理器2即将进行的操作,地址码指示处理器2到存储器1中的地址中读取参与操作的数据。
处理器2,用于执行存储器1中的操作指令,在执行指令时依照上述的数据的量化方法进行操作。
本公开的数据的量化装置,处理器2通过执行存储器1中的操作指令,依照前述数据的量化方法进行操作,能够对杂乱无章的权值进行量化,得到低比特化且规范化的量化权值,充分挖掘了神经网络层间权值的相似性以及层内权值局部相似性,得到神经网络的权值分布特性从而进行低比特量化,减小了表示每一个权值的比特数,从而降低了权值存储开销和访存开销。
本公开实施例的又一方面,提供了一种处理装置,图54D为本公开实施例的处理装置的结构示意图,如图54D所示,该处理装置包括:控制单元1、查找表单元2和运算单元3。
控制单元1接收指令,并对其进行译码,生成查找控制信息和运算控制信息。
其中,该指令为神经网络专用指令,包括所有专用于完成人工神经网络运算的指令。神经网络专用指令包括但不仅限于控制指令,数据传输指令,运算指令和逻辑指令。其中控制指令控制神经网络执行过程。
数据传输指令完成不同存储介质之间的数据传输,数据格式包括但不仅限于矩阵,向量和标量。
运算指令完成神经网络的算术运算,包括但不仅限于矩阵运算指令、向量运算指令、标量运算指令、卷积神经网络运算指令、全连接神经网络运算指令、池化神经网络运算指令、受限玻尔兹曼机(Restricted Boltzmann Machine,RBM)神经网络运算指令、近邻归一化(Local Response Normalization,LRN)神经网络运算指令、局部对比度归一化(Local Contrast Normalization,LCN)神经网络运算指令、LSTM神经网络运算指令、递归神经网络(Recurrent Neural Networks,RNN)运算指令、线性修正单元(Rectified linear unit,RELU)神经网络运算指令、带参数的线性修正单元(Parametric Rectified Linear Unit,PRELU)神经网络运算指令、S型生长曲线(SIGMOID)神经网络运算指令、双曲正切函数(TANH)神经网络运算指令和最大输出值(MAXOUT)神经网络运算指令。
逻辑指令完成神经网络的逻辑运算,包括但不仅限于向量逻辑运算指令和标量逻辑运算指令。
其中,RBM神经网络运算指令用于实现RBM神经网络运算。
LRN神经网络运算指令用于实现LRN神经网络运算。
LCN神经网络运算指令用于实现LCN神经网络运算。
LSTM神经网络运算指令用于实现LSTM神经网络运算。
RNN神经网络运算指令用于实现RNN运算。
RELU神经网络运算指令用于实现RELU神经网络运算。
PRELU神经网络运算指令用于实现PRELU神经网络运算。
SIGMOID神经网络运算指令用于实现SIGMOID神经网络运算
TANH神经网络运算指令用于实现TANH神经网络运算。
MAXOUT神经网络运算指令用于实现MAXOUT神经网络运算。
更进一步地,该神经网络专用指令包括Cambricon(寒武纪)指令集。
所述Cambricon指令集包括至少一种Cambricon指令,该Cambricon指令的长度可以为64bit,也可以根据实际需求,改变其长度。该Cambricon指令包括操作码和操作数。Cambricon指令包含四种类型的指令,分别是Cambricon控制指令(control instructions)、Cambricon数据传输指令(data transfer instructions)、Cambricon运算指令(computational instructions)和Cambricon逻辑指令(logical instructions)。
其中,Cambricon控制指令用于控制执行过程。Cambricon控制指令包括跳转(jump)指令和条件分支(conditional branch)指令。
Cambricon数据传输指令用于完成不同存储介质之间的数据传输。Cambricon数据传输指令包括加载(load)指令、存储(store)指令和搬运(move)指令。
load指令用于将数据从主存加载到缓存,store指令用于将数据从缓存存储到主存,move指令用于在缓存与缓存或者缓存与寄存器或者寄存器与寄存器之间搬运数据。数据传输指令支持三种不同的数据组织方式,包括矩阵,向量和标量。
Cambricon运算指令用于完成神经网络算术运算。Cambricon运算指令包括Cambricon矩阵运算指令、Cambricon向量运算指令和Cambricon标量运算指令。
Cambricon矩阵运算指令完成神经网络中的矩阵运算,包括矩阵乘向量(matrix multiply vector)、向量乘矩阵(vector multiply matrix)、矩阵乘标量(matrix multiply scalar)、外积(outer product)、矩阵加矩阵(matrix add matrix)和矩阵减矩阵(matrix subtract matrix)。
Cambricon向量运算指令完成神经网络中的向量运算,包括向量基本运算(vector elementary arithmetics)、向量超越函数运算(vector transcendental functions)、内积(dot product)、向量随机生成(random vector generator)和向量中最大/最小值(maximum/minimum of a vector)。其中向量基本运算包括向量加、减、乘、除(add、subtract、multiply、divide),向量超越函数是指不满足任何以多项式作系数的多项式方程的函数,包括但不仅限于指数函数、对数函数、三角函数和反三角函数。
Cambricon标量运算指令完成神经网络中的标量运算,包括标量基本运算(scalar elementary arithmetics)和标量超越函数运算(scalar transcendental functions)。其中标量基本运算包括标量、减、乘、除(add、subtract、multiply、divide),标量超越函数是指那些不满足任何以多项式作系数的多项式方程的函数,包括但不仅限于指数函数,对数函数,三角函数,反三角函数。
Cambricon逻辑指令用于神经网络的逻辑运算。Cambricon逻辑运算包括Cambricon向量逻辑运算指令和Cambricon标量逻辑运算指令。
Cambricon向量逻辑运算指令包括向量比较(vector compare)、向量逻辑运算(vector logical operations)和向量大于合并(vector greater than merge)。其中向量比较包括但不限于大于、小于,等于、大于或等于(≥)、小于或等于(≤)、不等于。向量逻辑运算包括与、或、非。
Cambricon标量逻辑运算包括标量比较(scalar compare),标量逻辑运算(scalar logical operations)。其中标量比较包括但不限于大于、小于、等于、大于或等于(≥),小于或等于(≤)和不等于。标量逻辑运算包括与、或、非。
查找表单元2接收所述查找控制信息、权值字典和密码本,并根据查找控制信息,对权值字典和密码本进行查表操作,以得到量化权值;
运算单元3接收所述运算控制信息和输入神经元,并根据运算控制信息,对所述量化权值和输入神经元进行运算操作,以得到输出神经元并输出。
其中,运算单元3可以包括四个运算部分:第一运算部分,用于将所述量化权值和输入神经元相乘;
第二运算部分,用于对所述量化权值和输入神经元通过一个或多个加法器实现相加操作(更进一步地,加法器也可以组成加法树,从而实现不同级加法树的运算功能);
第三运算部分,用于对所述量化权值和输入神经元进行非线性函数运算;
第四运算部分,用于对所述量化权值和输入神经元进行池化操作。
本公开通过采用针对局部量化的多层人工神经网络运算的专用SIMD指令和定制的运算单元3,解决了CPU和GPU运算性能不足,前端译码开销大的问题,有效提高了对多层人工神经网络运算算法的支持。
图54E为本公开实施例的查表的过程示意图,如图54E所示,根据密码本可知该量化权值被分为四个类别,编码为00的类别,其中心权值为-1.30;编码为01的类别,其中心权值为-0.13;编码为10的类别,其中心权值为0.23;以及编码为11的类别,其中心权值为1.50。同时,再参照权值字典可知,同一个类别的权值的分布情况,并用各类别的中心权值代替权值字典中的对应编码,即可得到量化权值。
该操作充分挖掘了神经网络层间权值的相似性以及层内权值局部相似性,能够通过量化步骤中得到的权值字典和密码本进行查表,从而还原量化权值,具有良好的可操作性以及规范性。
为了优化本公开的处理装置,加入了存储单元4、预处理单元5和缓存单元7,以使得处理数据更有序,方便处理装置的处理操作。
参见图54F,图54F为本公开实施例的一具体实施例的处理装置的结构示意图,如图54F所示,在如图54D所示的原有结构上,该具体实施例提供的处理装置还包括:存储单元4、预处理单元5、直接内存存取(direct memory access,DMA)单元6和缓存单元7。
其中,存储单元4用于存储外部输入的输入神经元、权值字典、密码本和指令,以及接收运算单元3输出的输出神经元;
此外,存储单元4还可以存储未量化权值,且该未量化权值通过旁路直接输出至运算单元3,可见本公开的处理装置不仅可以处理量化权值,也可以处理未量化权值,可以根据不同的实际需求进行选择。
预处理单元5用于对外部输入的输入信息进行预处理,得到所述输入神经元、权值字典、密码本和指令,前述预处理包括切分、高斯滤波、二值化、正则化和归一化等。
缓存单元7包括:
指令缓存单元71,用于缓存所述指令;
权值字典缓存单元72,用于缓存所述权值字典;
密码本缓存单元73,用于缓存所述密码本;
输入神经元缓存单元74,用于缓存所述输入神经元;
以及输出神经元缓存单元75,用于缓存输出神经元。
外部输入的输入数据经过预处理单元5预处理后,得到输入神经元、权值字典、密码本和指令并输出至存储单元4存储。DMA单元6从存储单元4中直接读取输入神经元、权值字典、密码本和指令,并将指令输出至指令缓存单元71中缓存,将权值字典输出至权值字典缓存单元72中缓存,将密码本输出至密码本缓存单元73中缓存,将输入神经元输出至输入神经元缓存单元74中缓存。
控制单元1对其接收的指令译码,得到并输出查表控制信息和运算控制信息。查找表单元2根据接收的查表控制信息,对权值字典和密码本进行查表操作,得到量化权值,并输出至运算单元3。运算单元3根据其接收到的运算控制信息,选择运算部分及各运算部分的运算顺序,对量化权值和输入神经元进行运算处理,得到输出神经元并将其输出至输出神经元缓存单元75,最终再由该输出神经元缓存单元75输将输出神经元输出至存储单元4进行存储。
其中,第一运算部分的运算操作具体为:将输入数据1(in1)和输入数据2(in2)相乘,得到相乘之后的输出(out),表示为:out=in1*in2
第二运算部分可以由一个或多个加法器组成,以实现相加运算。此外,多个加法器也可以组成加法树,以实现不同级加法树的运算功能。其运算的操作具体为:将输入数据1(in1)通过加法树逐级相加得到输出数据(out1),其中输入数据1可以是一个长度为N的向量,N大于1,过程为:out1=in1[1]+in1[2]+...+in1[N];或者将输入数据1(in1)通过加法树累加之后,in1为一个长度为N的向量,N大于1,和输入数据2(in2)相加得到输出数据(out2),过程为:out2=in1[1]+in1[2]+...+in1[N]+in2;再或者将输入数据1(in1),和输入数据2(in2)相加得到输出数据(out3),其中该in1和in2均为一个数值,过程为:out3=in1+in2。
第三运算部分将输入数据(in)可以通过非线性函数(f)实现不同函数运算,从而得到输出数据(out),过程为:out=f(in),其中,非线性函数包括激活函数,其过程为:out=active(in),激活函数active包括但不限于sigmoid、tanh、relu和/或softmax。
第四运算部分将输入数据(in)进行池化操作,得到输出数据(out),过程为out=pool(in),其中pool为池化操作,池化操作包括但不限于:平均值池化,最大值池化,中值池化,输入数据in是和输出out相关的一个池化核中的数据。
以上几个部分的运算可以自由选择一个或者多个部分进行不同顺序的组合,从而实现各种不同功能的运算。本公开的运算单元3包括但不限于上述四个运算部分,还可以包含异或、同或以及或等逻辑运算,且运算控制信息可以控制各运算部分中的一个或者多个运算部分进行不同顺序的组合,从而实现各种不同功能的运算。
本公开实施例的再一方面,还提供了一种处理方法,图54G为本公开实施例的处理方法的步骤示意图,如图54G所示,包括步骤:
S701、接收输入神经元、权值字典、密码本和指令;
其中,输入神经元、权值字典、密码本和指令,可以为对外部输入的输入信息经过预处理操作后得到的信息,预处理包括但不限于切分、高斯滤波、二值化、正则化、归一化等方式;
S702、对所述指令进行译码,以得到查找控制信息和运算控制信息;
其中,该指令为神经网络专用指令,包括所有专用于完成人工神经网络运算的指令。
神经网络专用指令包括但不仅限于控制指令,数据传输指令,运算指令和逻辑指令。其中,控制指 令控制神经网络执行过程。
数据传输指令完成不同存储介质之间的数据传输,数据格式包括但不仅限于矩阵,向量和标量。
运算指令完成神经网络的算术运算,包括但不仅限于矩阵运算指令、向量运算指令、标量运算指令、卷积神经网络运算指令、全连接神经网络运算指令、池化神经网络运算指令、RBM神经网络运算指令、LRN神经网络运算指令、LCN神经网络运算指令、LSTM神经网络运算指令、RNN运算指令、RELU神经网络运算指令、PRELU神经网络运算指令、SIGMOID神经网络运算指令、TANH神经网络运算指令和MAXOUT神经网络运算指令。
逻辑指令完成神经网络的逻辑运算,包括但不仅限于向量逻辑运算指令和标量逻辑运算指令。
其中,RBM神经网络运算指令用于实现RBM神经网络运算。
LRN神经网络运算指令用于实现LRN神经网络运算。
LCN神经网络运算指令用于实现LCN神经网络运算。
LSTM神经网络运算指令用于实现LSTM神经网络运算。
RNN运算指令用于实现RNN运算。
RELU神经网络运算指令用于实现RELU神经网络运算。
PRELU神经网络运算指令用于实现PRELU神经网络运算。
SIGMOID神经网络运算指令用于实现SIGMOID神经网络运算
TANH神经网络运算指令用于实现TANH神经网络运算。
MAXOUT神经网络运算指令用于实现MAXOUT神经网络运算。
更进一步地,该神经网络专用指令包括Cambricon指令集。
所述Cambricon指令集包括至少一种Cambricon指令,且Cambricon指令的长度为64bit,该Cambricon指令包括操作码和操作数。Cambricon指令包含四种类型的指令,分别是Cambricon控制指令(control instructions)、Cambricon数据传输指令(data transfer instructions)、Cambricon运算指令(computational instructions)和Cambricon逻辑指令(logical instructions)。
其中,Cambricon控制指令用于控制执行过程。Cambricon控制指令包括跳转(jump)指令和条件分支(conditional branch)指令。
Cambricon数据传输指令用于完成不同存储介质之间的数据传输。Cambricon数据传输指令包括加载(load)指令、存储(store)指令和搬运(move)指令。load指令用于将数据从主存加载到缓存,store指令用于将数据从缓存存储到主存,move指令用于在缓存与缓存或者缓存与寄存器或者寄存器与寄存器之间搬运数据。数据传输指令支持三种不同的数据组织方式,包括矩阵,向量和标量。
Cambricon运算指令用于完成神经网络算术运算。Cambricon运算指令包括Cambricon矩阵运算指令、Cambricon向量运算指令和Cambricon标量运算指令。
Cambricon矩阵运算指令完成神经网络中的矩阵运算,包括矩阵乘向量(matrix multiply vector)、向量乘矩阵(vector multiply matrix)、矩阵乘标量(matrix multiply scalar)、外积(outer product)、矩阵加矩阵(matrix add matrix)和矩阵减矩阵(matrix subtract matrix)。
Cambricon向量运算指令完成神经网络中的向量运算,包括向量基本运算(vector elementary arithmetics)、向量超越函数运算(vector transcendental functions)、内积(dot product)、向量随机生成(random vector generator)和向量中最大/最小值(maximum/minimum of a vector)。其中向量基本运算包括向量加、减、乘、除(add、subtract、multiply、divide),向量超越函数是指不满足任何以多项式作系数的多项式方程的函数,包括但不仅限于指数函数、对数函数、三角函数和反三角函数。
Cambricon标量运算指令完成神经网络中的标量运算,包括标量基本运算(scalar elementary arithmetics)和标量超越函数运算(scalar transcendental functions)。其中标量基本运算包括标量、减、乘、除(add、subtract、multiply、divide),标量超越函数是指那些不满足任何以多项式作系数 的多项式方程的函数,包括但不仅限于指数函数,对数函数,三角函数,反三角函数。
Cambricon逻辑指令用于神经网络的逻辑运算。Cambricon逻辑运算包括Cambricon向量逻辑运算指令和Cambricon标量逻辑运算指令。
Cambricon向量逻辑运算指令包括向量比较(vector compare)、向量逻辑运算(vector logical operations)和向量大于合并(vector greater than merge)。其中向量比较包括但不限于大于、小于,等于、大于或等于(≥)、小于或等于(≤)、不等于。向量逻辑运算包括与、或、非。
Cambricon标量逻辑运算包括标量比较(scalar compare),标量逻辑运算(scalar logical operations)。其中标量比较包括但不限于大于、小于、等于、大于或等于(≥),小于或等于(≤)和不等于。标量逻辑运算包括与、或、非。
S703、根据所述查找控制信息,查找权值字典和密码本得到量化权值,并根据所述运算控制信息,对该量化权值以及输入神经元进行运算操作,以得到输出神经元并输出。
此外,为了优化本公开的处理方法,使得处理更方便、有序,在本公开的一些实施例中还增加了步骤,图54H为本公开实施例的一具体实施例的处理方法的步骤示意图,如图54H所示,该具体实施例的处理方法中:
在步骤S701之前,还包括步骤S700:对外部输入的输入信息进行预处理,得到所述输入神经元、权值字典、密码本和指令。
其中,预处理包括切分、高斯滤波、二值化、正则化和归一化等;
在步骤S702之后还包括:
步骤S7021:存储输入神经元、权值字典、密码本和指令,以及存储输出神经元;以及
步骤S7022:缓存所述指令、输入神经元、输出神经元、权值字典和密码本。之后的步骤同图54H所示的处理方法,此处不再赘述。
其中,所述运算操作包括:将权值和输入神经元相加,该相加功能由一个或多个加法器实现,此外,所述多个加法器还可以构成加法树,实现权值和输入神经元的逐级相加,和/或;
将权值和输入神经元相乘,和/或;
对所述权值和输入神经元进行非线性函数运算,其中,非线性函数包括激活函数,所述激活函数包括sigmoid、tanh、relu和/或softmax,和/或;
对所述权值和输入神经元进行池化操作,所述权值包括量化权值和/或非量化权值,其中,池化操作包括但不限于:平均值池化,最大值池化,中值池化,输入数据in是和输出out相关的一个池化核中的数据。
前述几种运算可以自由选择一种或者多种进行不同顺序的组合,从而实现各种不同功能的运算。且本公开的运算步骤包括但不限于上述四种运算,还可以包含或、异或以及同或等逻辑运算。
此外,该处理方法也能用于处理未量化权值,可以根据运算控制信息,对该未量化权值和输入神经元进行运算,得到并将输出神经元输出。
在一个实施例里,本公开还提供了一种芯片,其包括了前述处理装置,该芯片能够同时对量化权值以及未量化权值进行多种运算,实现了运算的多元化。另外,通过采用针对多层人工神经网络运算算法的专用片上缓存,充分挖掘了输入神经元和权值数据的重用性,避免了反复向内存读取这些数据,降低了内存访问带宽,避免了内存带宽成为多层人工神经网络运算及其训练算法性能瓶颈的问题。
在一个实施例里,本公开提供了一个芯片封装结构,其包括了上述芯片。
在一个实施例里,本公开提供了一个板卡,其包括了上述芯片封装结构。
在一个实施例里,本公开提供了一个电子装置,其包括了上述板卡。
上述电子装置包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、 可穿戴设备交通工具、家用电器、和/或医疗设备。
所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
本公开实施例所有的模块都可以是硬件结构,硬件结构的物理实现包括但不局限于物理器件,物理器件包括但不局限于晶体管、忆阻器、DNA计算机。
基于现有技术仅按神经网络的层为单位进行量化的技术问题,本公开提供了一种数据的量化方法,通过分组和聚类操作,对神经网络的权值进行分组,并将每组权值分成m个类,计算出每个类的中心权值,每个类中的所有权值都用该类对应的中心权值替换;以及对中心权值进行编码操作,以得到密码本和权值字典,形成了一套完整的量化方法。
此外,本公开还可以对神经网络进行重训练,且重训练只需训练密码本,权值字典内容保持不变,减小了工作量。还可以将该量化方法得到的量化权值应用在本公开提供的处理装置中,增加了查找表单元,每次进行处理时不需输入权值,只需根据查找控制指令查找权值字典和密码本即可获得量化权值,实现了系统化的操作,且通过充分挖掘神经网络的权值分布特性,得到低比特量化的权值,大大提高了处理速度,降低了权值存储开销和访存开销。
本公开某些实施例于后方将参照所附附图做更全面性地描述,其中一些但并非全部的实施例将被示出。实际上,本公开的各种实施例可以许多不同形式实现,而不应被解释为限于此数所阐述的实施例;相对地,提供这些实施例使得本公开满足适用的法律要求。
在本说明书中,下述用于描述本公开原理的各种实施例只是说明,不应该以任何方式解释为限制公开的范围。参照附图的下述描述用于帮助全面理解由权利要求及其等同物限定的本公开的示例性实施例。下述描述包括多种具体细节来帮助理解,但这些细节应认为仅仅是示例性的。因此,本领域普通技术人员应认识到,在不悖离本公开的范围和精神的情况下,可以对本文中描述的实施例进行多种改变和修改。此外,为了清楚和简洁起见,省略了公知功能和结构的描述。此外,贯穿附图,相同附图标记用于相似功能和操作。在本公开中,术语“包括”和“含有”及其派生词意为包括而非限制。
为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开进一步详细说明。
本公开实施例的一方面,提供了一种数据的量化方法,图54A为本公开实施例的数据的量化方法的步骤示意图,如图54A所示,所述方法包括步骤:
S1901、对神经网络的权值进行分组。
进一步地,对神经网络的权值进行分组的策略可以按照分为一组、层类型分组、层间分组、层内分组、混合分组等方式进行;
S1902、根据聚类算法对每组的权值进行聚类操作,并以得到中心权值表示每个类别的权值。
具体的,将每组权值分成m个类,计算出每个类的中心权值,将每个类中的所有权值都用该类对应的中心权值替换。
其中,所述聚类算法包括但不限于K-measn、K-medoids、Clara和Clarans。
进一步地,所述一个类的中心权值选择方法为,使得代价函数J(w,w
0)最小。
其中,w是一个类中的所有权值,w0是该类的中心权值,n是该类中权值的数量,wi是该类中第i个权值,i是大于或等于1且小于或等于n的整数。
S1903、对中心权值进行编码操作,得到密码本和权值字典。
该权值量化方法还可以对神经网络进行重训练,在重训练过程中,只训练密码本,权值字典内容保 持不变。
具体的,重训练可以采用反向传播算法。
图54B为本公开实施例的数据的量化的过程示意图,如图54B所示,按照分组的策略对神经网络的权值进行分组,得到有序排列的权值矩阵。再对分组后的权值矩阵进行组内采样以及聚类操作,从而将值相近的权值划为同一类别,得到1.50、-0.13、-1.3和0.23这4个中心权值,并分别对应四个类别的权值。然后,对中心权值进行编码操作,将中心权值为-1.3的类别编码为00,将中心权值为-0.13的类别编码为01,将中心权值为0.23的类别编码为10,将中心权值为1.50的类别编码为11,此为密码本内容。另外,还分别用4个中心权值对应的编码内容(00、01、10和11)分别表示对应类别中的权值,从而得到权值字典。该量化过程充分挖掘了神经网络层间权值的相似性以及层内权值局部相似性,得到神经网络的权值分布特性从而进行低比特量化,减小了表示每一个权值的比特数,从而降低了权值存储开销和访存开销。
接下来,对神经网络的数据的量化方法进行举例说明:
实施例1:将神经网络的所有权值归为一组,对每一组权值采用K-means聚类算法进行聚类,每个类计算出一个中心权值,每一个类中所有权值用中心权值进行替换。然后根据量化后的权值生成权值字典和密码本,对神经网络进行重训练,在重训练过程中仅仅训练密码本而不训练权值字典。具体的,重训练采用反向传播算法进行重新训练。
实施例2:将神经网络的权值按照层类型进行分组。比如该神经网络包括全连接层、卷积层和长短期记忆(long short term memory,LSTM)层。所有卷积层的权值为一组,所有全连接层的权值为一组,所有LSTM层的权值为一组。
若一个神经网络有i个卷积层,j个全连接层,m个LSTM层,共t种不同类型的层,其中i,j,m均为大于0的整数且满足i+j+m>=1,t为大于或等于1的整数且满足t=i+j+m,神经网络的权值将被分为t组。对t组权值中的每组权值采用K-medoids聚类算法进行聚类,计算出每个类的中心权值,将每一个类中所有权值用该类对应的中心权值进行替换。然后根据每一组内量化后的权值生成权值字典和密码本,最后对神经网络进行重训练,在重训练过程中仅仅训练密码本而不训练权值字典。具体的,重训练采用反向传播算法进行重新训练。
实施例3:将神经网络的权值按照层间结构进行分组。
具体地,将一个或者连续多个卷积层分为一组,一个或者连续多个全连接层分为一组,一个或者连续多个LSTM层分为一组。对每一组内权值采用Clara聚类算法进行聚类,值相近的权值将被划分到同一个类,计算出每个类的中心权值,将每个类中的所有权值都用该类对应的中心权值替换。然后根据每一组内量化后的权值生成权值字典和密码本,最后对神经网络进行重训练,在重训练过程中仅仅训练密码本而不训练权值字典。具体的,重训练采用反向传播算法进行重新训练。
实施例4:将神经网络的权值按照层内结构进行分组。
具体地,神经网络的卷积层可以看成是一个四维矩阵(Nfin,Nfout,Kx,Ky),其中Nfin,Nfout,Kx,Ky是正整数,Nfin表示输入特征图像(feature map)数量,Nfout表示输出特征图像数量,(Kx,Ky)表示卷积核(kernel)的大小。卷积层的权值按(Bfin,Bfout,Bx,By)的组大小被分成Nfin*Nfout*Kx*Ky/(Bfin*Bfout*Bx*By)个不同的组,其中Bfin为小于或等于Nfin的整数,Bfout为小于或等于Nfout的整数,Bx为小于或等于Kx的整数,By为小于或等于Ky的整数。
神经网络的全连接层可以看成是一个二维矩阵(Nin,Nout),其中Nin,Nout是正整数,Nin表示输入神经元的个数,Nout表示输出神经元的个数,共有Nin*Nout个权值。全连接层权值按照(Bin,Bout)的组大小被分成(Nin*Nout)/(Bin*Bout)个不同的组,其中Bin是小于或等于Nin的整数,Bout是小于或等于Nout的整数。
神经网络的LSTM层权值可以看出多个全连接层的权值的组合,假设LSTM层的权值由n个全连接层 权值组成,其中n为正整数,则每一个全连接层都可以按照全连接层的分组方式进行分组操作。
对每一组内权值采用Clarans聚类算法进行聚类,计算出每个类的中心权值,将每一个类中所有权值用该类对应的中心权值进行替换。然后根据每一组内量化后的权值生成权值字典和密码本,最后对神经网络进行重训练,在重训练过程中仅仅训练密码本而不训练权值字典。具体的,重训练采用反向传播算法进行重新训练。
实施例5:将神经网络的权值按照混合的方式进行分组,如所有卷积层为一组,所有全连接层按照层内结构进行分组,所有LSTM层按照层间结构进行分组。对每一组内权值采用Clarans聚类算法进行聚类,计算出每个类的中心权值,将每个类中的所有权值都用该类对应的中心权值替换。然后根据每一组内量化后的权值生成权值字典和密码本,最后对神经网络进行重训练,在重训练过程中仅仅训练密码本而不训练权值字典。具体的,重训练采用反向传播算法进行重新训练。
本公开实施例的另一方面,还提供了一种数据的量化装置,图54C为本公开实施例的数据的量化装置的结构示意图,如图54C所示,其包括:
存储器1,用于存储操作指令;所述操作指令一般为二进制数形式,由操作码和地址码构成,操作码指示处理器2即将进行的操作,地址码指示处理器2到存储器1中的地址中读取参与操作的数据。
处理器2,用于执行存储器1中的操作指令,在执行指令时依照上述的数据的量化方法进行操作。
本公开的数据的量化装置,处理器2通过执行存储器1中的操作指令,依照前述数据的量化方法进行操作,能够对杂乱无章的权值进行量化,得到低比特化且规范化的量化权值,充分挖掘了神经网络层间权值的相似性以及层内权值局部相似性,得到神经网络的权值分布特性从而进行低比特量化,减小了表示每一个权值的比特数,从而降低了权值存储开销和访存开销。
本公开实施例的另一方面,提供了一种处理装置,图54D为本公开实施例的处理装置的结构示意图,如图54D所示,该处理装置包括:控制单元1、查找表单元2和运算单元3。
控制单元1接收指令,并对其进行译码,生成查找控制信息和运算控制信息。
其中,该指令为神经网络专用指令,包括所有专用于完成人工神经网络运算的指令。神经网络专用指令包括但不仅限于控制指令,数据传输指令,运算指令和逻辑指令。其中控制指令控制神经网络执行过程。数据传输指令完成不同存储介质之间的数据传输,数据格式包括但不仅限于矩阵,向量和标量。运算指令完成神经网络的算术运算,包括但不仅限于矩阵运算指令、向量运算指令、标量运算指令、卷积神经网络运算指令、全连接神经网络运算指令、池化神经网络运算指令、受限玻尔兹曼机(Restricted Boltzmann Machine,RBM)神经网络运算指令、近邻归一化(Local Response Normalization,LRN)神经网络运算指令、局部对比度归一化(Local Contrast Normalization,LCN)神经网络运算指令、LSTM神经网络运算指令、递归神经网络(Recurrent Neural Networks,RNN)运算指令、线性修正单元(Rectified linear unit,RELU)神经网络运算指令、带参数的线性修正单元(Parametric Rectified Linear Unit,PRELU)神经网络运算指令、S型生长曲线(SIGMOID)神经网络运算指令、双曲正切函数(TANH)神经网络运算指令和最大输出值(MAXOUT)神经网络运算指令。逻辑指令完成神经网络的逻辑运算,包括但不仅限于向量逻辑运算指令和标量逻辑运算指令。
其中,RBM神经网络运算指令用于实现RBM神经网络运算。
LRN神经网络运算指令用于实现LRN神经网络运算。
LCN神经网络运算指令用于实现LCN神经网络运算。
LSTM神经网络运算指令用于实现LSTM神经网络运算。
RNN运算指令用于实现RNN运算。
RELU神经网络运算指令用于实现RELU神经网络运算。
PRELU神经网络运算指令用于实现PRELU神经网络运算。
SIGMOID神经网络运算指令用于实现SIGMOID神经网络运算
TANH神经网络运算指令用于实现TANH神经网络运算。
MAXOUT神经网络运算指令用于实现MAXOUT神经网络运算。
更进一步地,该神经网络专用指令包括Cambricon(寒武纪)指令集。
所述Cambricon指令集包括至少一种Cambricon指令,该Cambricon指令的长度可以为64bit,也可以根据实际需求,改变其长度。该Cambricon指令包括操作码和操作数。Cambricon指令包含四种类型的指令,分别是Cambricon控制指令(control instructions)、Cambricon数据传输指令(data transfer instructions)、Cambricon运算指令(computational instructions)和Cambricon逻辑指令(logical instructions)。
其中,Cambricon控制指令用于控制执行过程。Cambricon控制指令包括跳转(jump)指令和条件分支(conditional branch)指令。
Cambricon数据传输指令用于完成不同存储介质之间的数据传输。Cambricon数据传输指令包括加载(load)指令、存储(store)指令和搬运(move)指令。load指令用于将数据从主存加载到缓存,store指令用于将数据从缓存存储到主存,move指令用于在缓存与缓存或者缓存与寄存器或者寄存器与寄存器之间搬运数据。数据传输指令支持三种不同的数据组织方式,包括矩阵,向量和标量。
Cambricon运算指令用于完成神经网络算术运算。Cambricon运算指令包括Cambricon矩阵运算指令、Cambricon向量运算指令和Cambricon标量运算指令。
Cambricon矩阵运算指令完成神经网络中的矩阵运算,包括矩阵乘向量(matrix multiply vector)、向量乘矩阵(vector multiply matrix)、矩阵乘标量(matrix multiply scalar)、外积(outer product)、矩阵加矩阵(matrix add matrix)和矩阵减矩阵(matrix subtract matrix)。
Cambricon向量运算指令完成神经网络中的向量运算,包括向量基本运算(vector elementary arithmetics)、向量超越函数运算(vector transcendental functions)、内积(dot product)、向量随机生成(random vector generator)和向量中最大/最小值(maximum/minimum of a vector)。其中向量基本运算包括向量加、减、乘、除(add、subtract、multiply、divide),向量超越函数是指不满足任何以多项式作系数的多项式方程的函数,包括但不仅限于指数函数、对数函数、三角函数和反三角函数。
Cambricon标量运算指令完成神经网络中的标量运算,包括标量基本运算(scalar elementary arithmetics)和标量超越函数运算(scalar transcendental functions)。其中标量基本运算包括标量、减、乘、除(add、subtract、multiply、divide),标量超越函数是指不满足任何以多项式作系数的多项式方程的函数,包括但不仅限于指数函数,对数函数,三角函数,反三角函数。
Cambricon逻辑指令用于神经网络的逻辑运算。Cambricon逻辑运算包括Cambricon向量逻辑运算指令和Cambricon标量逻辑运算指令。
Cambricon向量逻辑运算指令包括向量比较(vector compare)、向量逻辑运算(vector logical operations)和向量大于合并(vector greater than merge)。其中向量比较包括但不限于大于、小于,等于、大于或等于(≥)、小于或等于(≤)、不等于。向量逻辑运算包括与、或、非。
Cambricon标量逻辑运算包括标量比较(scalar compare),标量逻辑运算(scalar logical operations)。其中标量比较包括但不限于大于、小于、等于、大于或等于(≥),小于或等于(≤)和不等于。标量逻辑运算包括与、或、非。
查找表单元2接收所述查找控制信息、权值字典和密码本,并根据查找控制信息,对权值字典和密码本进行查表操作,以得到量化权值;
运算单元3接收所述运算控制信息和输入神经元,并根据运算控制信息,对所述量化权值和输入神经元进行运算操作,以得到输出神经元并输出。
其中,运算单元3可以包括四个运算部分:第一运算部分,用于将所述量化权值和输入神经元相乘;第二运算部分,用于对所述量化权值和输入神经元通过一个或多个加法器实现相加操作(更进一步地, 加法器也可以组成加法树,从而实现不同级加法树的运算功能);第三运算部分,用于对所述量化权值和输入神经元进行非线性函数运算;第四运算部分,用于对所述量化权值和输入神经元进行池化操作。本公开通过采用针对局部量化的多层人工神经网络运算的专用SIMD指令和定制的运算单元3,解决了CPU和GPU运算性能不足,前端译码开销大的问题,有效提高了对多层人工神经网络运算算法的支持。
图54E为本公开实施例的查表的过程示意图,如图54E所示,根据密码本可知该量化权值被分为四个类别,编码为00的类别,其中心权值为-1.30;编码为01的类别,其中心权值为-0.13;编码为10的类别,其中心权值为0.23;以及编码为11的类别,其中心权值为1.50。同时,再参照权值字典可知,同一个类别的权值的分布情况,并用各类别的中心权值代替权值字典中的对应编码,即可得到量化权值。该操作充分挖掘了神经网络层间权值的相似性以及层内权值局部相似性,能够通过量化步骤中得到的权值字典和密码本进行查表,从而还原量化权值,具有良好的可操作性以及规范性。
为了优化本公开的处理装置,加入了存储单元4、预处理单元5和缓存单元7,以使得处理数据更有序,方便处理装置的处理操作,图54F为本公开实施例的一具体实施例的处理装置的结构示意图,如图54F所示,在如图54F所示的原有结构上,该具体实施例提供的处理装置还包括:存储单元4、预处理单元5、直接内存存取(direct memory access,DMA)单元6和缓存单元7。
其中,存储单元4用于存储外部输入的输入神经元、权值字典、密码本和指令,以及接收运算单元3输出的输出神经元;此外,存储单元4还可以存储未量化权值,且该未量化权值通过旁路直接输出至运算单元3,可见本公开的处理装置不仅可以处理量化权值,也可以处理未量化权值,可以根据不同的实际需求进行选择。
预处理单元5用于对外部输入的输入信息进行预处理,得到所述输入神经元、权值字典、密码本和指令,前述预处理包括切分、高斯滤波、二值化、正则化和归一化等。
缓存单元7包括
指令缓存单元71,用于缓存所述指令;
权值字典缓存单元72,用于缓存所述权值字典;
密码本缓存单元73,用于缓存所述密码本;
输入神经元缓存单元74,用于缓存所述输入神经元;
以及输出神经元缓存单元75,用于缓存输出神经元。
外部输入的输入数据经过预处理单元5预处理后,得到输入神经元、权值字典、密码本和指令并输出至存储单元4存储。DMA单元6从存储单元4中直接读取输入神经元、权值字典、密码本和指令,并将指令输出至指令缓存单元71中缓存,将权值字典输出至权值字典缓存单元72中缓存,将密码本输出至密码本缓存单元73中缓存,将输入神经元输出至输入神经元缓存单元74中缓存。控制单元1对其接收的指令译码,得到并输出查表控制信息和运算控制信息。查找表单元2根据接收的查表控制信息,对权值字典和密码本进行查表操作,得到量化权值,并输出至运算单元3。运算单元3根据其接收到的运算控制信息,选择运算部分及各运算部分的运算顺序,对量化权值和输入神经元进行运算处理,得到输出神经元并将其输出至输出神经元缓存单元75,最终再由该输出神经元缓存单元75输将输出神经元输出至存储单元4进行存储。
其中,第一运算部分的运算操作具体为:将输入数据1(in1)和输入数据2(in2)相乘,得到相乘之后的输出(out),表示为:out=in1*in2
第二运算部分可以由一个或多个加法器组成,以实现相加运算。此外,多个加法器也可以组成加法树,以实现不同级加法树的运算功能。其运算的操作具体为:将输入数据1(in1)通过加法树逐级相加得到输出数据(out1),其中输入数据1可以是一个长度为N的向量,N大于1,过程为:out1=in1[1]+in1[2]+...+in1[N];或者将输入数据1(in1)通过加法树累加之后,in1为一个长度为N的向量,N大于1,和输入数据2(in2)相加得到输出数据(out2),过程为: out2=in1[1]+in1[2]+...+in1[N]+in2;再或者将输入数据1(in1),和输入数据2(in2)相加得到输出数据(out3),其中该in1和in2均为一个数值,过程为:out3=in1+in2。
第三运算部分将输入数据(in)可以通过非线性函数(f)实现不同函数运算,从而得到输出数据(out),过程为:out=f(in),其中,非线性函数包括激活函数,其过程为:out=active(in),激活函数active包括但不限于sigmoid、tanh、relu和/或softmax。
第四运算部分将输入数据(in)进行池化操作,得到输出数据(out),过程为out=pool(in),其中pool为池化操作,池化操作包括但不限于:平均值池化,最大值池化,中值池化,输入数据in是和输出out相关的一个池化核中的数据。
以上几个部分的运算可以自由选择一个或者多个部分进行不同顺序的组合,从而实现各种不同功能的运算。本公开的运算单元3包括但不限于上述四个运算部分,还可以包含异或、同或以及或等逻辑运算,且运算控制信息可以控制各运算部分中的一个或者多个运算部分进行不同顺序的组合,从而实现各种不同功能的运算。
本公开实施例的另一方面,还提供了一种处理方法,图54G为本公开实施例的处理方法的步骤示意图,如图54G所示,包括步骤:
S701、接收输入神经元、权值字典、密码本和指令;
其中,输入神经元、权值字典、密码本和指令,可以为对外部输入的输入信息经过预处理操作后得到的信息,预处理包括但不限于切分、高斯滤波、二值化、正则化、归一化等方式;
S702、对所述指令译码,以得到查找控制信息和运算控制信息;
其中,该指令为神经网络专用指令,包括所有专用于完成人工神经网络运算的指令。神经网络专用指令包括但不仅限于控制指令,数据传输指令,运算指令和逻辑指令。其中控制指令控制神经网络执行过程。数据传输指令完成不同存储介质之间的数据传输,数据格式包括但不仅限于矩阵,向量和标量。运算指令完成神经网络的算术运算,包括但不仅限于矩阵运算指令、向量运算指令、标量运算指令、卷积神经网络运算指令、全连接神经网络运算指令、池化神经网络运算指令、RBM神经网络运算指令、LRN神经网络运算指令、LCN神经网络运算指令、LSTM神经网络运算指令、RNN运算指令、RELU神经网络运算指令、PRELU神经网络运算指令、SIGMOID神经网络运算指令、TANH神经网络运算指令和MAXOUT神经网络运算指令。逻辑指令完成神经网络的逻辑运算,包括但不仅限于向量逻辑运算指令和标量逻辑运算指令。
其中,RBM神经网络运算指令用于实现RBM神经网络运算。
LRN神经网络运算指令用于实现LRN神经网络运算。
LSTM神经网络运算指令用于实现LSTM神经网络运算。
RNN运算指令用于实现RNN运算。
RELU神经网络运算指令用于实现RELU神经网络运算。
PRELU神经网络运算指令用于实现PRELU神经网络运算。
SIGMOID神经网络运算指令用于实现SIGMOID神经网络运算
TANH神经网络运算指令用于实现TANH神经网络运算。
MAXOUT神经网络运算指令用于实现MAXOUT)神经网络运算。
更进一步地,该神经网络专用指令包括Cambricon指令集。
所述Cambricon指令集包括至少一种Cambricon指令,且Cambricon指令的长度为64bit,该Cambricon指令包括操作码和操作数。Cambricon指令包含四种类型的指令,分别是Cambricon控制指令(control instructions)、Cambricon数据传输指令(data transfer instructions)、Cambricon运算指令(computational instructions)和Cambricon逻辑指令(logical instructions)。
其中,Cambricon控制指令用于控制执行过程。Cambricon控制指令包括跳转(jump)指令和条件分 支(conditional branch)指令。
Cambricon数据传输指令用于完成不同存储介质之间的数据传输。Cambricon数据传输指令包括加载(load)指令、存储(store)指令和搬运(move)指令。load指令用于将数据从主存加载到缓存,store指令用于将数据从缓存存储到主存,move指令用于在缓存与缓存或者缓存与寄存器或者寄存器与寄存器之间搬运数据。数据传输指令支持三种不同的数据组织方式,包括矩阵,向量和标量。
Cambricon运算指令用于完成神经网络算术运算。Cambricon运算指令包括Cambricon矩阵运算指令、Cambricon向量运算指令和Cambricon标量运算指令。
Cambricon矩阵运算指令完成神经网络中的矩阵运算,包括矩阵乘向量(matrix multiply vector)、向量乘矩阵(vector multiply matrix)、矩阵乘标量(matrix multiply scalar)、外积(outer product)、矩阵加矩阵(matrix add matrix)和矩阵减矩阵(matrix subtract matrix)。
Cambricon向量运算指令完成神经网络中的向量运算,包括向量基本运算(vector elementary arithmetics)、向量超越函数运算(vector transcendental functions)、内积(dot product)、向量随机生成(random vector generator)和向量中最大/最小值(maximum/minimum of a vector)。其中向量基本运算包括向量加、减、乘、除(add、subtract、multiply、divide),向量超越函数是指不满足任何以多项式作系数的多项式方程的函数,包括但不仅限于指数函数、对数函数、三角函数和反三角函数。
Cambricon标量运算指令完成神经网络中的标量运算,包括标量基本运算(scalar elementary arithmetics)和标量超越函数运算(scalar transcendental functions)。其中标量基本运算包括标量、减、乘、除(add、subtract、multiply、divide),标量超越函数是指不满足任何以多项式作系数的多项式方程的函数,包括但不仅限于指数函数,对数函数,三角函数,反三角函数。
Cambricon逻辑指令用于神经网络的逻辑运算。Cambricon逻辑运算包括Cambricon向量逻辑运算指令和Cambricon标量逻辑运算指令。
Cambricon向量逻辑运算指令包括向量比较(vector compare)、向量逻辑运算(vector logical operations)和向量大于合并(vector greater than merge)。其中向量比较包括但不限于大于、小于,等于、大于或等于(≥)、小于或等于(≤)、不等于。向量逻辑运算包括与、或、非。
Cambricon标量逻辑运算包括标量比较(scalar compare),标量逻辑运算(scalar logical operations)。其中标量比较包括但不限于大于、小于、等于、大于或等于(≥),小于或等于(≤)和不等于。标量逻辑运算包括与、或、非。
S703、根据所述查找控制信息,查找权值字典和密码本得到量化权值,并根据所述运算控制信息,对该量化权值以及输入神经元进行运算操作,以得到输出神经元并输出。
此外,为了优化本公开的处理方法,使得处理更方便、有序,在本公开的一些实施例中还增加了步骤,图54H为本公开实施例的一具体实施例的处理方法的步骤示意图,如图54H所示,该具体实施例的处理方法中:
在步骤S701之前,还包括步骤S700:对外部输入的输入信息进行预处理,得到所述输入神经元、权值字典、密码本和指令,预处理包括切分、高斯滤波、二值化、正则化和归一化等;
在步骤S702之后还包括:
步骤S7021:存储输入神经元、权值字典、密码本和指令,以及存储输出神经元;以及
步骤S7022:缓存所述指令、输入神经元、输出神经元、权值字典和密码本。之后的步骤同图51F所示的处理方法,此处不再赘述。
其中,所述运算操作包括:将权值和输入神经元相加,该相加功能由一个或多个加法器实现,此外,所述多个加法器还可以构成加法树,实现权值和输入神经元的逐级相加;和/或将权值和输入神经元相乘;和/或对所述权值和输入神经元进行非线性函数运算,其中,非线性函数包括激活函数,所述激活函数包括sigmoid、tanh、relu和/或softmax;和/或对所述权值和输入神经元进行池化操作,所述权 值包括量化权值和/或非量化权值,其中,池化操作包括但不限于:平均值池化,最大值池化,中值池化,输入数据in是和输出out相关的一个池化核中的数据。前述几种运算可以自由选择一种或者多种进行不同顺序的组合,从而实现各种不同功能的运算。且本公开的运算步骤包括但不限于上述四种运算,还可以包含或、异或以及同或等逻辑运算。
此外,该处理方法也能用于处理未量化权值,可以根据运算控制信息,对该未量化权值和输入神经元进行运算,得到并将输出神经元输出。
在一个实施例里,本公开还提供了一种芯片,其包括了前述处理装置,该芯片能够同时对量化权值以及未量化权值进行多种运算,实现了运算的多元化。另外,通过采用针对多层人工神经网络运算算法的专用片上缓存,充分挖掘了输入神经元和权值数据的重用性,避免了反复向内存读取这些数据,降低了内存访问带宽,避免了内存带宽成为多层人工神经网络运算及其训练算法性能瓶颈的问题。
在一个实施例里,本公开提供了一个芯片封装结构,其包括了上述芯片。
在一个实施例里,本公开提供了一个板卡,其包括了上述芯片封装结构。
在一个实施例里,本公开提供了一个电子装置,其包括了上述板卡。
上述电子装置包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备交通工具、家用电器、和/或医疗设备。
所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
本公开实施例所有的模块都可以是硬件结构,硬件结构的物理实现包括但不局限于物理器件,物理器件包括但不局限于晶体管、忆阻器、DNA计算机。
为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开作进一步的详细说明。
本公开实施例的所有模块都可以是硬件结构,硬件结构的物理实现包括但不局限于物理器件,物理器件包括但不局限于晶体管,忆阻器,DNA计算机。
根据本公开的基本构思,提供一种压缩神经网络的方法,步骤包括:粗粒度剪枝和第一重训练,以及局部量化和第二重训练两个步骤。相比于传统的方法,能够使稀疏神经网络更加规则化,利于用硬件进行加速,同时减少目标权值位置的存储空间;局部量化能够充分挖掘神经网络的权值分布特性,减少表示每一个权值的比特数,从而进一步减少存储开销和访存开销。
图54I是本公开实施例数据压缩方法流程图。该数据压缩方法包括:
S2701:根据滑动窗口从神经网络选取M个权值,当所述M个权值满足预设条件时,将所述M个权值全部或者部分置为零;对神经网络进行第一重训练,训练过程中已经被置为零的权值保持为零;
S2702:对神经网络的权值进行分组,然后对组内权值进行聚类和编码,对聚类和编码后的神经网络进行第二重训练。
其中步骤S2701可概括为粗粒度剪枝和第一重训练,具体可包括步骤
S27011:根据滑动窗口(sliding window)从训练完成的神经网络的选取M个权值。
S27012:当所述M个权值满足预设条件时,将所述M个权值全部或者部分置为零。
其中,上述预设条件为:
上述M个权值的信息量满足预设判断条件。
作为一种可选的实施方式,上述预设判断条件包括阈值判断条件。其中,阈值判断条件,可以包括:小于一给定阈值,小于等于一给定阈值,大于一给定阈值,大于等于一给定阈值,在一给定取值范围内或在一给定取值范围外中的一种或几种。
具体地,上述M个权值的信息量小于一给定阈值,其中,上述M个权值的信息量包括但不限于该M个权值绝对值的算术平均值、该M个权值绝对值的几何平均值和该M个权值绝对值的最大值。上述M个权值绝对值的算术平均值小于第一阈值;或者上述M个权值绝对值的几何平均值小于第二阈值;或者上述M个权值绝对值的最大值小于第三阈值。对于上述第一阈值、第二阈值和第三阈值中各自的选择,本领域技术人员可以根据情况进行预先设定,也可以通过改变预设公式中的输入参数的方式计算获得,还可以通过机器学习的方式获得。对于第一阈值、第二阈值以及第三阈值的获取方式,本公开并不做具体限定。
作为一种可选的实施方式,上述预设判断条件包括函数映射判断条件,该函数映射判断条件为判断上述M个权值经函数变换后是否满足给定条件。
上述神经网络的权值包括全连接层(fully-connected layer)的权值,卷积层(convolutional layer)的权值和长短期记忆(long short-term memory,LSTM)层的权值。
参见图51A所示,神经网络的全连接层的权值可以看成是一个二维矩阵(Nin,Nout),其中Nin表示输入神经元的个数,Nout表示输出神经元的个数,上述全连接层共有Nin*Nout个权值。上述滑动窗口的大小为Bin*Bout,其中Bin为大于0且小于或等于Nin整数,Bout为大于0且小于或等于Nout的整数;所述对神经网络的全连接层的权值进行剪枝,包括:
使所述滑动窗口能够沿着Bin的方向按照步长Sin进行滑动,也可以沿着Bout的方向按照步长Sout进行滑动,其中所述Sin为大于0且小于或等于Bin的整数,所述Sout为大于0且小于或等于Bout的整数;
通过所述滑动窗口从所述Nin*Nout个权值中选取M个权值;当所述M个权值满足所述预设条件时,将所述M个权值全部或者部分置为零,其中,所述M=Bin*Bout。
参见图51B所示,神经网络的卷积层的权值可以看成是一个四维矩阵(Nfin,Nfout,Kx,Ky),其中Nfin表示输入特征图像(feature map)数量,Nout表示输出特征图像数量,(Kx,Ky)表示卷积核(kernel)的大小。在粗粒度剪枝时,我们先设定上述滑动窗口的为大小为Bfin*Bfout*Bx*By的四维滑动窗口,其中Bfin为大于0且小于或等于Nfin的整数,Bfout为大于0且1小于或等于Nfout的整数,Bx为大于0且小于或等于Kx的整数,By为大于0且小于或等于Ky的整数;所述对神经网络的卷积层的权值进行剪枝包括:
使所述滑动窗口沿着Bfin的方向按照步长Sfin进行滑动,或者沿着Bfout的方向按照步长Sfout进行滑动,或者沿着Bx的方向按照步长Sx进行滑动,或沿着By的方向按照步长Sy进行滑动,其中Sfin为大于0且小于或等于Bfin的整数,Sfout为大于0且小于或等于Bfout的整数,Sx为大于0且小于或等于Bx的整数,Sy为大于0且小于或等于By的整数;
通过所述滑动窗口从所述Nfin*Nfout*Kx*Ky个权值中选取M个权值;当所述M个权值满足所述预设条件时,将所述M个权值全部或者部分置为零,其中,所述M=Bfin*Bfout*Bx*By。
上述神经网络的LSTM层的权值由多个全连接层权值组成,假设LSTM层的权值由i个全连接层权值组成,其中i为大于0的整数。每个全连接层权值分别为二维矩阵(Nin_i,Nout_i),其中Nin_i表示第i个全连接层权值输入神经元个数,Nout_i表示第i个全连阶层权值输出神经对于第i个全连阶层,所述滑动窗口的大小为Bin_i*Bout_i,其中Bin_i为大于0且小于或等于Nin_i的整数,Bout_i为大于0且小于或等于Nout_i的整数;对神经网络的LSTM层进行剪枝包括:
使所述滑动窗口沿着Bin_i的方向按照步长Sin_i进行滑动,或沿着Bout_i的方向按照步长Sout_i进行滑动,其中Sin_i为大于0且小于或等于Bin_i的整数,Sout_i为大于0且小于或等于Bout_i的整数;
通过所述滑动窗口从所述Nin_i*Nout_i个权值中选取M个权值;当所述M个权值满足所述预设条件时,将所述M个权值全部或者部分置为零,其中,所述M=Bin_i*Bout_i。
S27013:根据反向传播(back propagation)算法对剪枝后的神经网络进行重新训练,训练过程中已经被置为0的权值将一直保持0。
第一重训练:将剪枝后的神经网络使用反向传播算法(back propagation)进行重新训练,训练过程中已经被置为0的权值将一直保持0。不断重复粗粒度剪枝和重训练直至在保证精度不损失x%的前提下没有权值能被置为0,x为大于0小于100的数,x根据不同的神经网络以及不同的应用可以有不同的选择。在一个实施例里,x的值可以为0-5。
对于步骤S2702,可概括为量化和重训练,可以包括步骤:
S27021:对神经网络权值进行分组;
S27022:对每一组权值用聚类算法进行聚类操作,将一组权值分成m个类,计算出每个类的中心权值,将每个类中的所有权值都用该类对应的中心权值替换;其中m是大于0的整数。
S27023:对中心权值进行编码操作,得到密码本和权值字典
S27024:根据反向传播算法对神经网络使用进行重新训练,训练过程中已经被置为0的权值将一直保持0,且只训练密码本,不训练权值字典。
对于步骤S27021中的分组:对神经网络的权值进行分组操作,包括:
将所述神经网络的权值分为一组,和/或;
按照层类型对所述神经网络的权值进行分组,和/或;
按照层间和/或层内对神经网络的权值进行分组。
图54E为本公开实施例的权值量化的过程示意图,如图54E所示,按照分组的策略对权值进行分组,得到有序排列的权值矩阵。再对分组后的权值矩阵进行组内采样以及聚类操作,从而将值相近的权值划为同一类别,得到1.50、-0.13、-1.3和0.23这4个中心权值,并分别对应四个类别的权值。然后,对中心权值进行编码操作,将中心权值为-1.3的类别编码为00,将中心权值为-0.13的类别编码为01,将中心权值为0.23的类别编码为10,将中心权值为1.50的类别编码为11,此为密码本内容。另外,还分别用4个中心权值对应的编码内容(00、01、10和11)分别表示对应类别中的权值,从而得到权值字典。该量化过程充分挖掘了神经网络层间权值的相似性以及层内权值局部相似性,得到神经网络的权值分布特性从而进行低比特量化,减小了表示每一个权值的比特数,从而降低了权值存储开销和访存开销。
其中中心权值选择方法可以为使得代价函数J(w,w
0)最小,
其中w是类中所有权值,w0是中心权值,n是类中权值数量,wi是类中第i个权值,i是大于0且小于或等于n的整数。
进一步的,局部量化中按照层类型对神经网络的权值进行分组。比如将所有卷积层的权值分为一组,将所有全连接层的权值分为一组,将所有LSTM层的权值分为为一组。
若一个神经网络有i个卷积层,j个全连阶层,m个LSTM层,共t种不同类型的层,其中i,j,m均为大于0的整数且满足i+j+m>=1,t为大于0的整数且满足t=i+j+m,神经网络的权值将被分为t组。
进一步的,局部量化中按照层间将神经网络的权值进行分组。比如将一个或者连续多个卷积层分为一组,将一个或者连续多个全连阶层分为一组,将一个或者连续多个LSTM层分为一组。
进一步的,局部量化中按照层内分组对神经网络的权值进行分组,将神经网络的卷积层,全连接层和LSTM内部进行分组量化。
更进一步的,神经网络的卷积层可以看成是一个四维矩阵(Nfin,Nfout,Kx,Ky),其中Nfin,Nfout,Kx,Ky均为大于0的正整数,Nfin表示输入特征图像(feature map)数量,Nout表示输出特征图像数量, (Kx,Ky)表示卷积核(kernel)的大小。卷积层的权值按照(Mfin,Mfout,Mx,My)的组大小被分成Nfin*Nfout*Kx*Ky/(Mfin*Mfout*Mx*My)个不同的组,其中Mfin为大于0且小于或等于Nfin的正=整数,Mfout为大于0且小于或等于Nfout的整数,Mx为大于0且小于或等于Kx的整数,My为大于0且小于或等于Ky的整数。
更进一步的,神经网络的全连接层的权值可以看成是一个二维矩阵(Nin,Nout),其中Nin,Nout是大于0的整数,Nin表示输入神经元的个数,Nout表示输出神经元的个数,共有Nin*Nout个权值。全连接层权值按照(Min,Mout)的组大小被分成(Nin*Nout)/(Min*Mout)个不同的组,其中Min是大于0且小于或等于Nin的整数,Mout是大于0且小于或等于Nout的整数。
更进一步的,神经网络的LSTM层权值可以看出多个全连接层的权值的组合,假设LSTM层的权值由n个全连接层权值组成,其中n为大于0的整数,则每一个全连接层都可以按照全连接层的分组方式进行分组操作。
本公开实施例的另一方面,还提供了一种神经网络数据压缩装置,图54C为本公开实施例压缩装置的结构示意图,如图54C所示,其包括:
存储器1,用于存储操作指令;所述操作指令一般为二进制数形式,由操作码和地址码构成,操作码指示处理器2即将进行的操作,地址码指示处理器2到存储器1中的地址中读取参与操作的数据。
处理器2,用于执行存储器1中的操作指令,在执行指令时依照上述的权值的方法进行操作。
本公开的压缩装置,处理器2通过执行存储器1中的操作指令,依照前述粗粒度剪枝和量化方法进行操作,能够规则化地对神经网络进行稀疏,减少神经网络参数,同时对杂乱无章的权值进行量化,得到低比特化且规范化的量化权值,充分挖掘了神经网络层间权值的相似性以及层内权值局部相似性,得到神经网络的权值分布特性从而进行低比特量化,减小了表示每一个权值的比特数,从而降低了权值存储开销和访存开销。
图55A是本公开实施例的一种处理装置的结构示意图。本公开提供了一种处理装置应用于神经网络处理器,使得神经网络处理器能够充分挖掘粗粒度细数和局部量化的特性,减少访存和计算量,从而获得加速比并降低能耗。
本公开实施例的处理装置包括粗粒度选数单元,查找表单元和运算单元。
粗粒度选数单元,用于接收输入神经元和目标权值位置信息,选择出需要进行计算的神经元。
查找表单元,用于接收目标权值字典和目标权值密码本,进行查表操作得到神经网络的目标权值。
运算单元接收被选中的神经元和目标权值,完成神经网络运算并将输出神经元重新传输给存储单元。
更进一步的,粗粒度选数单元具体用于接收输入神经元和目标权值位置信息,并根据目标权值的位置信息选择出目标权值对应的神经元(即被选择的神经元)并传输给运算单元。
更进一步的,查找表单元对于量化的目标权值,根据密码本和字典查找出目标权值并传输给运算单元,对于没量化的目标权值直接通过旁路传输给运算单元。
更进一步的,运算单元执行运算包括第一部分是将所述输入数据1和输入数据2相乘,得到相乘之后的数据;和/或第二部分执行加法树运算,用于将输入数据1通过加法树逐级相加,或者将所述输入数据1通过和输入数据2相加得到输出数据;和/或第三部分执行激活函数运算,对输入数据通过激活函数(active)运算得到输出数据;和/或第四部分执行池化运算,out=(in),其中pool为池化操作,池化操作包括但不限于:平均值池化,最大值池化,中值池化,输入数据in是和输出out相关的一个池化核中的数据。以上几个部分的运算可以自由选择一个多个部分进行不同顺序的组合,从而实现各种不同功能的运算。
具体的,运算单元包括但不仅限于:第一部分乘法器,第二部分加法树,第三部分为激活函数单元。第一部分将输入数据1(in1)和输入数据2(in2)相乘得到相乘之后的输出(out),过程为:out=in1*in2; 第二部分将输入数据in1通过加法树逐级相加得到输出数据(out),其中in1是一个长度为N的向量,N大于1,过程为:out=in1[1]+in1[2]+...+in1[N],和/或将输入数据(in1)通过加法树累加之后和输入数据(in2)相加得到输出数据(out),过程为:out=in1[1]+in1[2]+...+in1[N]+in2,或者将输入数据(in1)和输入数据(in2)相加得到输出数据(out),过程为:out=in1+in2;第三部分将输入数据(in)通过激活函数(active)运算得到激活输出数据(out),过程为:out=active(in),激活函数active可以是sigmoid、tanh、relu、softmax等,除了做激活操作,第三部分可以实现其他的非线性函数,可将输入数据(in)通过运算(f)得到输出数据(out),过程为:out=f(in);和/或池化单元,池化单元将输入数据(in)通过池化运算得到池化操作之后的输出数据(out),过程为out=pool(in),其中pool为池化操作,池化操作包括但不限于:平均值池化,最大值池化,中值池化,输入数据in是和输出out相关的一个池化核中的数据。
更进一步的,参见图55B所示,神经网络处理器还包括预处理单元。该预处理单元对原始数据进行预处理,包括切分、高斯滤波、二值化、正则化、归一化等等。
进一步的,处理器还包括存储单元,用来存储神经网络的神经元,权值以及指令。
更进一步的,存储单元存放权值时只存放目标权值以及目标权值的位置信息。存储单元存放量化的目标权值时只存放目标权值密码本和目标权值字典。
进一步的,处理器还包括指令控制单元,用来接收存储单元中的指令,经过译码后生成控制信息控制粗粒度选数单元进行选数操作,查找表进行查表操作和运算单元进行计算操作。
可选地,所述指令可以为神经网络专用指令。
所述神经网络专用指令,包括所有专用于完成人工神经网络运算的指令。神经网络专用指令包括但不仅限于控制指令,数据传输指令,运算指令和逻辑指令。其中控制指令控制神经网络执行过程。数据传输指令完成不同存储介质之间的数据传输,数据格式包括但不仅限于矩阵,向量和标量。运算指令完成神经网络的算术运算,包括但不仅限于矩阵运算指令,向量运算指令,标量运算指令,卷积神经网络运算指令,全连接神经网络运算指令,池化神经网络运算指令,RBM神经网络运算指令,LRN神经网络运算指令,LCN神经网络运算指令,LSTM神经网络运算指令,RNN运算指令,RELU神经网络运算指令,PRELU神经网络运算指令,SIGMOID神经网络运算指令,TANH神经网络运算指令,MAXOUT神经网络运算指令。逻辑指令完成神经网络的逻辑运算,包括但不仅限于向量逻辑运算指令和标量逻辑运算指令。
更具体的,所述神经网络专用指令包括Cambricon指令集。
所述Cambricon指令集的特征在于,指令集中每一条指令长度为定长,例如指令长度为64bit,指令由操作码和操作数组成。指令集包含四种类型的指令,分别是控制指令(control instructions),数据传输指令(data transfer instructions),运算指令(computational instructions),逻辑指令(logical instructions)。
进一步的,控制指令用于控制执行过程。控制指令包括跳转(jump)指令和条件分支(conditional branch)指令。
进一步的,数据传输指令用于完成不同存储介质之间的数据传输。数据传输指令包括加载(load)指令,存储(store)指令,搬运(move)指令。load指令用于将数据从主存加载到缓存,store指令用于将数据从缓存存储到主存,move指令用于在缓存与缓存或者缓存与寄存器或者寄存器与寄存器之间搬运数据。数据传输指令支持三种不同的数据组织方式,包括矩阵,向量和标量。
进一步的,运算指令用于完成神经网络算术运算。运算指令包括矩阵运算指令,向量运算指令和标量运算指令。
更进一步的,矩阵运算指令完成神经网络中的矩阵运算,包括矩阵乘向量(matrix multiply vector),向量乘矩阵(vector multiply matrix),矩阵乘标量(matrix multiply scalar),外积(outer product),矩阵加矩阵(matrix add matrix),矩阵减矩阵(matrix subtract matrix)。
更进一步的,向量运算指令完成神经网络中的向量运算,包括向量基本运算(vector elementary arithmetics),向量超越函数运算(vector transcendental functions),内积(dot product),向量随机生成(random vector generator),向量中最大/最小值(maximum/minimum of a vector)。其中向量基本运算包括向量加,减,乘,除(add,subtract,multiply,divide),向量超越函数是指那些不满足任何以多项式作系数的多项式方程的函数,包括但不仅限于指数函数,对数函数,三角函数,反三角函数。
更进一步的,标量运算指令完成神经网络中的标量运算,包括标量基本运算(scalar elementary arithmetics)和标量超越函数运算(scalar transcendental functions)。其中标量基本运算包括标量加,减,乘,除(add,subtract,multiply,divide),标量超越函数是指那些不满足任何以多项式作系数的多项式方程的函数,包括但不仅限于指数函数,对数函数,三角函数,反三角函数。
进一步的,逻辑指令用于神经网络的逻辑运算。逻辑运算包括向量逻辑运算指令和标量逻辑运算指令。
更进一步的,向量逻辑运算指令包括向量比较(vector compare),向量逻辑运算(vector logical operations)和向量大于合并(vector greater than merge)。其中向量比较包括但不限于大于,小于,等于,大于或等于(≥),小于或等于(≤)和不等于。向量逻辑运算包括与,或,非。
更进一步的,标量逻辑运算包括标量比较(scalar compare),标量逻辑运算(scalar logical operations)。其中标量比较包括但不限于大于,小于,等于,大于或等于(≥),小于或等于(≤)和不等于。标量逻辑运算包括与,或,非。
更进一步的,参见图55B所示,神经网络处理器还包括直接数据存取(direct memory access,DMA)单元。
更进一步的,参见图55B所示,神经网络处理器还包括指令缓存单元,输入神经元缓存单元,目标权值密码本缓存单元,目标权值字典缓存单元,目标权值位置缓存单元,输出神经元缓存单元。
特别的,存储单元主要用来存储神经网络的神经元,权值以及指令。其中存放权值时只存放目标权值以及目标权值的位置信息。存储单元存放量化的目标权值时只存放目标权值密码本和目标权值字典。
特别的,DMA单元用于在所述存储单元、指令缓存单元、目标权值密码本缓存单元、目标权值字典缓存单元、目标权值位置缓存单元,输入神经元缓存单元和输出神经元缓存单元中进行数据或者指令读写。
指令缓存单元,用于存储专用指令;
目标权值密码本缓存单元,用于缓存目标权值密码本;
目标权值字典缓存单元,用于缓存目标权值权值字典;
目标权值位置缓存单元,用于缓存目标权值位置数据;目标权值位置缓存单元将输入数据中每个连接权值一一对应到相应的输入神经元。
一种情形下目标权值位置缓存单元缓存一一对应的方法为采用1表示有连接,0表示无连接,每组输出与所有输入的连接状态组成一个0和1的字符串来表示该输出的连接关系。另一种情形下目标权值位置缓存单元缓存一一对应的方法为采用1表示有连接,0表示无连接,每组输入与所有输出的连接状态组成一个0和1的字符串来表示该输入的连接关系。另一种情形下目标权值位置缓存单元缓存一一对应的方法为将一组输出第一个连接所在的输入神经元位置距离第一个输入神经元的距离、所述输出第二组输入神经元距离上一个输入神经元的距离,所述输出第三组输入神经元距离上一个输入神经元的距离,……,依次类推,直到穷举所述输出的所有输入,来表示所述输出的连接关系。
输入神经元缓存单元,用于缓存输入到粗粒度选数单元的输入神经元;
输出神经元缓存单元,用于缓存运算单元输出的输出神经元。
查找表单元,用于接收目标权值字典和目标权值密码本,经过查找操作获得目标权值。对于没量化 的目标权值直接通过旁路传输给运算单元。
需要指出的是,上述预处理单元、存储单元、DMA单元、粗粒度剪枝单元、指令缓存单元、指令控制单元、目标权值缓存单元、目标权值位置缓存单元、输入神经元缓存单元、输出神经元缓存单元、粗粒度选数单元和运算单元均为实体硬件器件,不是功能性软件单元。
本公开还提供了一种神经网络数据压缩装置,包括存储装置,指令译码装置和计算装置组成。存储装置中存储了压缩神经网络的指令序列,指令序列包含控制指令,数据传输指令,计算指令等,能够控制计算装置完成神经网络格式转化,对应格式压缩的任务;指令译码装置接收存储装置中的指令经过译码后生成控制信号控制计算装置;计算装置接收控制信号对神经网络完成上述粗粒度剪枝和量化操作。计算装置用于执行存储装置中的可执行指令,在执行指令时依照以上所述的数据压缩方法进行操作。
本公开还提供了一种神经网络数据的处理方法,如图56所示,该处理方法包括步骤:
S3001:接收输入神经元、目标权值字典、目标权值密码本和指令,所述目标权值为绝对值大于预设阈值的权值;
S3002:对指令进行译码,以得到选数控制信息、查找控制信息和运算控制信息;
S3003:根据选数控制信息、查找控制信息和运算控制信息进行选取输入神经元、目标权值并进行运算,得到输出神经元。
在一些实施例中,所述处理方法还包括:接收未量化的目标权值以进行神经网络运算。
在一些实施例中,处理方法还包括:接收指令,并经过译码后生成控制信息控制神经网络的运算。
在一些实施例中,运算包括以下至少一种:乘法运算,将所述第一输入数据和第二输入数据相乘,得到相乘之后的数据;加法运算,将第三输入数据通过加法树逐级相加,或者将所述第三输入数据通过和第四输入数据相加得到相加之后的数据;激活函数运算,对第五数据通过激活函数运算得到输出数据,所述激活函数为sigmoid、tanh、relu或softmax函数操作。
在一些实施例中,所述运算还包括池化操作,用于对输入的第六数据通过池化运算得到池化操作之后的输出数据,所述池化操作包括:平均值池化,最大值池化或者中值池化。
在一些实施例中,所述指令为神经网络专用指令,包括控制指令,数据传输指令,运算指令和逻辑指令。
在一些实施例中,所述控制指令用于控制神经网络执行过程,包括跳转指令和条件分支指令。
在一些实施例中,数据传输指令用于完成不同存储介质之间的数据传输,包括加载指令,存储指令,搬运指令。
在一些实施例中,所述运算指令用于完成神经网络的算术运算,包括矩阵运算指令,向量运算指令、标量运算指令、卷积神经网络运算指令、全连接神经网络运算指令、池化神经网络运算指令、受限玻尔兹曼机(Restricted Boltzmann Machine,RBM)神经网络运算指令、近邻归一化(Local Response Normalization,LRN)神经网络运算指令、局部对比度归一化(Local Contrast Normalization,LCN)神经网络运算指令、LSTM神经网络运算指令、递归神经网络(Recurrent Neural Networks,RNN)运算指令、线性修正单元(Rectified linear unit,RELU)神经网络运算指令、带参数的线性修正单元(Parametric Rectified Linear Unit,PRELU)神经网络运算指令、S型生长曲线(SIGMOID)神经网络运算指令、双曲正切函数(TANH)神经网络运算指令和最大输出值(MAXOUT)神经网络运算指令。
其中,RBM神经网络运算指令用于实现RBM神经网络运算。
其中,LRN神经网络运算指令用于实现LRN神经网络运算。
其中,LCN神经网络运算指令用于实现LCN神经网络运算。
其中,LSTM神经网络运算指令用于实现LSTM神经网络运算。
其中,RNN神经网络运算指令用于实现RNN运算。
其中,RELU神经网络运算指令用于实现RELU神经网络运算。
其中,PRELU神经网络运算指令用于实现PRELU神经网络运算。
其中,SIGMOID神经网络运算指令用于实现SIGMOID神经网络运算
其中,TANH神经网络运算指令用于实现TANH神经网络运算。
其中,MAXOUT神经网络运算指令用于实现MAXOUT神经网络运算。
在一些实施例中,神经网络专用指令为Cambricon指令集,所述Cambircon指令集中每一条指令长度为定长,例如指令长度为64bit,指令由操作码和操作数组成。
在一些实施例中,逻辑指令用于完成神经网络的逻辑运算,包括向量逻辑运算指令和标量逻辑运算指令。
在一些实施例中,向量逻辑运算指令包括向量比较、向量逻辑运算和向量大于合并指令;优选的,向量比较包括但不限于大于,小于,等于,大于或等于(≥),小于或等于(≤)和不等于;优选的,向量逻辑运算包括逻辑与,逻辑或,或者逻辑非。
在一些实施例中,标量逻辑运算包括标量比较,标量逻辑运算;优选的,所述标量比较包括但不限于大于,小于,等于,大于或等于(≥),小于或等于(≤)和不等于;优选的,所述标量逻辑运算包括逻辑与,逻辑或,以及逻辑非。
在一些实施例中,处理方法还包括步骤:对输入神经元和目标权值位置信息进行预处理,所述预处理包括切分、高斯滤波、二值化、正则化和、或归一化。
在一些实施例中,处理方法中,接收被选中的神经元和目标权值之后,还包括步骤:存储输入神经元、权值字典、密码本和指令,以及存储输出神经元;以及缓存所述指令、输入神经元、输出神经元。
在一个实施例里,本公开公开了一个芯片,其包括了上述神经网络处理器。
在一个实施例里,本公开公开了一个芯片封装结构,其包括了上述芯片。
在一个实施例里,本公开公开了一个板卡,其包括了上述芯片封装结构。
在一个实施例里,本公开公开了一个电子装置,其包括了上述板卡。
电子装置包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶和/或油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
所有的模块都可以是硬件结构,硬件结构的物理实现包括但不局限于物理器件,物理器件包括但不局限于晶体管,忆阻器,DNA计算机。
通过本公开实施例的数据压缩方法和处理方法,能够规则、高压缩比地压缩神经网络。加速装置内部集成了压缩方法,实现对神经网络的压缩功能。加速器能够充分挖掘压缩后的神经网络的特性,减少访存同时减少计算量,从而获得加速比并降低能耗。
为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开作进一步的详细说明。
本公开实施例的所有模块都可以是硬件结构,硬件结构的物理实现包括但不局限于物理器件,物理器件包括但不局限于晶体管,忆阻器,DNA计算机。
根据本公开的基本构思,提供一种压缩神经网络的方法,步骤包括:粗粒度剪枝和第一重训练,以及局部量化和第二重训练两个步骤。相比于传统的方法,能够使稀疏神经网络更加规则化,利于用硬件进行加速,同时减少目标权值位置的存储空间;局部量化能够充分挖掘神经网络的权值分布特性,减少表示每一个权值的比特数,从而进一步减少存储开销和访存开销。
图54I是本公开实施例数据压缩方法流程图。该数据压缩方法包括:
S2701:根据滑动窗口从神经网络选取M个权值,当所述M个权值满足预设条件时,将所述M个权值全部或者部分置为零;对神经网络进行第一重训练,训练过程中已经被置为零的权值保持为零;
S2702:对神经网络的权值进行分组,然后对组内权值进行聚类和编码,对聚类和编码后的神经网络进行第二重训练。
其中步骤S2701可概括为粗粒度剪枝和第一重训练,具体可包括步骤
S27011:根据滑动窗口(sliding window)从训练完成的神经网络的选取M个权值。
S27012:当所述M个权值满足预设条件时,将所述M个权值全部或者部分置为零。
其中,上述预设条件为:
上述M个权值的信息量满足预设判断条件。
作为一种可选的实施方式,上述预设判断条件包括阈值判断条件。其中,阈值判断条件,可以包括:小于一给定阈值,小于等于一给定阈值,大于一给定阈值,大于等于一给定阈值,在一给定取值范围内或在一给定取值范围外中的一种或几种。
具体地,上述M个权值的信息量小于一给定阈值,其中,上述M个权值的信息量包括但不限于该M个权值绝对值的算术平均值、该M个权值绝对值的几何平均值和该M个权值绝对值的最大值。上述M个权值绝对值的算术平均值小于第一阈值;或者上述M个权值绝对值的几何平均值小于第二阈值;或者上述M个权值绝对值的最大值小于第三阈值。对于上述第一阈值、第二阈值和第三阈值中各自的选择,本领域技术人员可以根据情况进行预先设定,也可以通过改变预设公式中的输入参数的方式计算获得,还可以通过机器学习的方式获得。对于第一阈值、第二阈值以及第三阈值的获取方式,本公开并不做具体限定。
作为一种可选的实施方式,上述预设判断条件包括函数映射判断条件,该函数映射判断条件为判断上述M个权值经函数变换后是否满足给定条件。
上述神经网络的权值包括全连接层(fully-connected layer)的权值,卷积层(convolutional layer)的权值和长短期记忆(long short-term memory,LSTM)层的权值。
参见图51A所示,神经网络的全连接层的权值可以看成是一个二维矩阵(Nin,Nout),其中Nin表示输入神经元的个数,Nout表示输出神经元的个数,上述全连接层共有Nin*Nout个权值。上述滑动窗口的大小为Bin*Bout,其中Bin为大于0且小于或等于Nin整数,Bout为大于0且小于或等于Nout的整数;所述对神经网络的全连接层的权值进行剪枝,包括:
使所述滑动窗口能够沿着Bin的方向按照步长Sin进行滑动,也可以沿着Bout的方向按照步长Sout进行滑动,其中所述Sin为大于0且小于或等于Bin的整数,所述Sout为大于0且小于或等于Bout的整数;
通过所述滑动窗口从所述Nin*Nout个权值中选取M个权值;当所述M个权值满足所述预设条件时,将所述M个权值全部或者部分置为零,其中,所述M=Bin*Bout。
参见图51B所示,神经网络的卷积层的权值可以看成是一个四维矩阵(Nfin,Nfout,Kx,Ky),其中Nfin表示输入特征图像(feature map)数量,Nout表示输出特征图像数量,(Kx,Ky)表示卷积核(kernel)的大小。在粗粒度剪枝时,我们先设定上述滑动窗口的为大小为Bfin*Bfout*Bx*By的四维滑动窗口,其中Bfin为大于0且小于或等于Nfin的整数,Bfout为大于0且1小于或等于Nfout的整数,Bx为大于0且小于或等于Kx的整数,By为大于0且小于或等于Ky的整数;所述对神经网络的卷积层的权值进行剪枝包括:
使所述滑动窗口沿着Bfin的方向按照步长Sfin进行滑动,或者沿着Bfout的方向按照步长Sfout进行滑动,或者沿着Bx的方向按照步长Sx进行滑动,或沿着By的方向按照步长Sy进行滑动,其中Sfin为大于0且小于或等于Bfin的整数,Sfout为大于0且小于或等于Bfout的整数,Sx为大于0且小于或等于Bx的整数,Sy为大于0且小于或等于By的整数;
通过所述滑动窗口从所述Nfin*Nfout*Kx*Ky个权值中选取M个权值;当所述M个权值满足所述预设条件时,将所述M个权值全部或者部分置为零,其中,所述M=Bfin*Bfout*Bx*By。
上述神经网络的LSTM层的权值由多个全连接层权值组成,假设LSTM层的权值由i个全连接层权值组成,其中i为大于0的整数。每个全连接层权值分别为二维矩阵(Nin_i,Nout_i),其中Nin_i表示第i个全连接层权值输入神经元个数,Nout_i表示第i个全连阶层权值输出神经对于第i个全连阶层,所述滑动窗口的大小为Bin_i*Bout_i,其中Bin_i为大于0且小于或等于Nin_i的整数,Bout_i为大于0且小于或等于Nout_i的整数;对神经网络的LSTM层进行剪枝包括:
使所述滑动窗口沿着Bin_i的方向按照步长Sin_i进行滑动,或沿着Bout_i的方向按照步长Sout_i进行滑动,其中Sin_i为大于0且小于或等于Bin_i的整数,Sout_i为大于0且小于或等于Bout_i的整数;
通过所述滑动窗口从所述Nin_i*Nout_i个权值中选取M个权值;当所述M个权值满足所述预设条件时,将所述M个权值全部或者部分置为零,其中,所述M=Bin_i*Bout_i。
S27013:根据反向传播(back propagation)算法对剪枝后的神经网络进行重新训练,训练过程中已经被置为0的权值将一直保持0。
第一重训练:将剪枝后的神经网络使用反向传播算法(back propagation)进行重新训练,训练过程中已经被置为0的权值将一直保持0。不断重复粗粒度剪枝和重训练直至在保证精度不损失x%的前提下没有权值能被置为0,x为大于0小于100的数,x根据不同的神经网络以及不同的应用可以有不同的选择。在一个实施例里,x的值可以为0-5。
对于步骤S2702,可概括为量化和重训练,可以包括步骤:
S27021:对神经网络权值进行分组;
S27022:对每一组权值用聚类算法进行聚类操作,将一组权值分成m个类,计算出每个类的中心权值,将每个类中的所有权值都用该类对应的中心权值替换;其中m是大于0的正整数。
S27023:对中心权值进行编码操作,得到密码本和权值字典
S27024:将神经网络使用反向传播算法(back propagation)进行重新训练,训练过程中已经被置为0的权值将一直保持0,且只训练密码本,不训练权值字典。
对于步骤S27021中的分组:对神经网络的权值进行分组操作,包括:
将所述神经网络的权值分为一组,和/或;
按照层类型对所述神经网络的权值进行分组,和/或;
按照层间和/或层内对神经网络的权值进行分组。
图54E为本公开实施例的权值量化的过程示意图,如图54E所示,按照分组的策略对权值进行分组,得到有序排列的权值矩阵。再对分组后的权值矩阵进行组内采样以及聚类操作,从而将值相近的权值划为同一类别,得到1.50、-0.13、-1.3和0.23这4个中心权值,并分别对应四个类别的权值。然后,对中心权值进行编码操作,将中心权值为-1.3的类别编码为00,将中心权值为-0.13的类别编码为01,将中心权值为0.23的类别编码为10,将中心权值为1.50的类别编码为11,此为密码本内容。另外,还分别用4个中心权值对应的编码内容(00、01、10和11)分别表示对应类别中的权值,从而得到权值字典。该量化过程充分挖掘了神经网络层间权值的相似性以及层内权值局部相似性,得到神经网络的权值分布特性从而进行低比特量化,减小了表示每一个权值的比特数,从而降低了权值存储开销和访存开销。
其中,中心权值选择方法可以为使得代价函数J(w,w
0)最小,代价函数为:
其中w是类中所有权值,w0是中心权值,n是类中权值数量,wi是类中第i个权值,i是大于0且小于或等于n的整数。
进一步的,局部量化中按照层类型对神经网络的权值按照层类型进行分组。比如将所有卷积层的权值分为一组,将所有全连接层的权值分为一组,将所有LSTM层的权值分为一组。
若一个神经网络有i个卷积层,j个全连阶层,m个LSTM层,共t种不同类型的层,其中i,j,m均为大于0的整数且满足i+j+m>=1,t为大于0的整数且满足t=i+j+m,神经网络的权值将被分为t组。
进一步的,局部量化中按照层间将神经网络的权值进行分组。比如将一个或者连续多个卷积层分为一组,将一个或者连续多个全连阶层分为一组,将一个或者连续多个LSTM层分为一组。
进一步的,局部量化中按照层内分组对神经网络的权值进行分组,将神经网络的卷积层,全连接层和LSTM内部进行分组量化。
更进一步的,神经网络的卷积层可以看成是一个四维矩阵(Nfin,Nfout,Kx,Ky),其中Nfin,Nfout,Kx,Ky均为大于0的正整数,Nfin表示输入特征图像(feature map)数量,Nout表示输出特征图像数量,(Kx,Ky)表示卷积核(kernel)的大小。卷积层的权值按照(Mfin,Mfout,Mx,My)的组大小被分成Nfin*Nfout*Kx*Ky/(Mfin*Mfout*Mx*My)个不同的组,其中Mfin为大于0且小于或等于Nfin的正=整数,Mfout为大于0且小于或等于Nfout的整数,Mx为大于0且小于或等于Kx的整数,My为大于0且小于或等于Ky的整数。
更进一步的,神经网络的全连接层的权值可以看成是一个二维矩阵(Nin,Nout),其中Nin,Nout是大于0的整数,Nin表示输入神经元的个数,Nout表示输出神经元的个数,共有Nin*Nout个权值。全连接层权值按照(Min,Mout)的组大小被分成(Nin*Nout)/(Min*Mout)个不同的组,其中Min是大于0且小于或等于Nin的整数,Mout是大于0且小于或等于Nout的整数。
更进一步的,神经网络的LSTM层权值可以看出多个全连接层的权值的组合,假设LSTM层的权值由n个全连接层权值组成,其中n为大于0的整数,则每一个全连接层都可以按照全连接层的分组方式进行分组操作。
本公开实施例的另一方面,还提供了一种神经网络数据压缩装置,图54C为本公开实施例压缩装置的结构示意图,如图54C所示,其包括:
存储器1,用于存储操作指令;所述操作指令一般为二进制数形式,由操作码和地址码构成,操作码指示处理器2即将进行的操作,地址码指示处理器2到存储器1中的地址中读取参与操作的数据。
处理器2,用于执行存储器1中的操作指令,在执行指令时依照上述的权值的方法进行操作。
本公开的压缩装置,处理器2通过执行存储器1中的操作指令,依照前述粗粒度剪枝和量化方法进行操作,能够规则化地对神经网络进行稀疏,减少神经网络参数,同时对杂乱无章的权值进行量化,得到低比特化且规范化的量化权值,充分挖掘了神经网络层间权值的相似性以及层内权值局部相似性,得到神经网络的权值分布特性从而进行低比特量化,减小了表示每一个权值的比特数,从而降低了权值存储开销和访存开销。
图55A是本公开实施例的一种处理装置的结构示意图。本公开提供了一种处理装置应用于神经网络处理器,使得神经网络处理器能够充分挖掘粗粒度细数和局部量化的特性,减少访存和计算量,从而获得加速比并降低能耗。
本公开实施例的处理装置包括粗粒度选数单元,查找表单元和运算单元。
粗粒度选数单元,用于接收输入神经元和目标权值位置信息,选择出需要进行计算的神经元。
查找表单元,用于接收目标权值字典和目标权值密码本,进行查表操作得到神经网络的目标权值。
运算单元接收被选中的神经元和目标权值,完成神经网络运算并将输出神经元重新传输给存储单元。
更进一步的,粗粒度选数单元具体用于接收输入神经元和目标权值位置信息,并根据目标权值的位 置信息选择出目标权值对应的神经元(即被选择的神经元)并传输给运算单元。
更进一步的,查找表单元对于量化的目标权值,根据密码本和字典查找出目标权值并传输给运算单元,对于没量化的目标权值直接通过旁路传输给运算单元。
更进一步的,运算单元执行运算包括第一部分是将所述输入数据1和输入数据2相乘,得到相乘之后的数据;和/或第二部分执行加法树运算,用于将输入数据1通过加法树逐级相加,或者将所述输入数据1通过和输入数据2相加得到输出数据;和/或第三部分执行激活函数运算,对输入数据通过激活函数(active)运算得到输出数据;和/或第四部分执行池化运算,out=(in),其中pool为池化操作,池化操作包括但不限于:平均值池化,最大值池化,中值池化,输入数据in是和输出out相关的一个池化核中的数据。以上几个部分的运算可以自由选择一个多个部分进行不同顺序的组合,从而实现各种不同功能的运算。
具体的,运算单元包括但不仅限于:第一部分乘法器,第二部分加法树,第三部分为激活函数单元。第一部分将输入数据1(in1)和输入数据2(in2)相乘得到相乘之后的输出(out),过程为:out=in1*in2;第二部分将输入数据in1通过加法树逐级相加得到输出数据(out),其中in1是一个长度为N的向量,N大于1,过程为:out=in1[1]+in1[2]+...+in1[N],和/或将输入数据(in1)通过加法树累加之后和输入数据(in2)相加得到输出数据(out),过程为:out=in1[1]+in1[2]+...+in1[N]+in2,或者将输入数据(in1)和输入数据(in2)相加得到输出数据(out),过程为:out=in1+in2;第三部分将输入数据(in)通过激活函数(active)运算得到激活输出数据(out),过程为:out=active(in),激活函数active可以是sigmoid、tanh、relu、softmax等,除了做激活操作,第三部分可以实现其他的非线性函数,可将输入数据(in)通过运算(f)得到输出数据(out),过程为:out=f(in);和/或池化单元,池化单元将输入数据(in)通过池化运算得到池化操作之后的输出数据(out),过程为out=pool(in),其中pool为池化操作,池化操作包括但不限于:平均值池化,最大值池化,中值池化,输入数据in是和输出out相关的一个池化核中的数据。
更进一步的,参见图55B所示,神经网络处理器还包括预处理模块。该模块对原始数据进行预处理,包括切分、高斯滤波、二值化、正则化、归一化等等。
进一步的,处理器还包括存储单元,用来存储神经网络的神经元,权值以及指令。
更进一步的,存储单元存放权值时只存放目标权值以及目标权值的位置信息。存储单元存放量化的目标权值时只存放目标权值密码本和目标权值字典。
进一步的,处理器还包括指令控制单元,用来接收存储单元中的指令,经过译码后生成控制信息控制粗粒度选数单元进行选数操作,查找表进行查表操作和运算单元进行计算操作。
可选地,所述指令可以为神经网络专用指令。
所述神经网络专用指令,包括所有专用于完成人工神经网络运算的指令。神经网络专用指令包括但不仅限于控制指令,数据传输指令,运算指令和逻辑指令。其中控制指令控制神经网络执行过程。数据传输指令完成不同存储介质之间的数据传输,数据格式包括但不仅限于矩阵,向量和标量。运算指令完成神经网络的算术运算,包括但不仅限于矩阵运算指令,向量运算指令,标量运算指令,卷积神经网络运算指令,全连接神经网络运算指令,池化神经网络运算指令,受限玻尔兹曼机(Restricted Boltzmann Machine,RBM)神经网络运算指令、近邻归一化(Local Response Normalization,LRN)神经网络运算指令、局部对比度归一化(Local Contrast Normalization,LCN)神经网络运算指令、LSTM神经网络运算指令、递归神经网络(Recurrent Neural Networks,RNN)运算指令、线性修正单元(Rectified linear unit,RELU)神经网络运算指令、带参数的线性修正单元(Parametric Rectified Linear Unit,PRELU)神经网络运算指令、S型生长曲线(SIGMOID)神经网络运算指令、双曲正切函数(TANH)神经网络运算指令和最大输出值(MAXOUT)神经网络运算指令。逻辑指令完成神经网络的逻辑运算,包括但不仅限于向量逻辑运算指令和标量逻辑运算指令。
其中,RBM神经网络运算指令用于实现RBM神经网络运算。
其中,LRN神经网络运算指令用于实现LRN神经网络运算。
LCN神经网络运算指令用于实现LCN神经网络运算。
LSTM神经网络运算指令用于实现LSTM神经网络运算。
RNN运算指令用于实现RNN运算。
RELU神经网络运算指令用于实现RELU神经网络运算。
PRELU神经网络运算指令用于实现PRELU神经网络运算。
SIGMOID神经网络运算指令用于实现SIGMOID神经网络运算
TANH神经网络运算指令用于实现TANH神经网络运算。
更具体的,所述神经网络专用指令包括Cambricon指令集。
所述Cambricon指令集的特征在于,指令由操作码和操作数组成。指令集包含四种类型的指令,分别是控制指令(control instructions),数据传输指令(data transfer instructions),运算指令(computational instructions),逻辑指令(logical instructions)。
优选的,指令集中每一条指令长度为定长。例如,指令集中每一条指令长度可以为64bit。
进一步的,控制指令用于控制执行过程。控制指令包括跳转(jump)指令和条件分支(conditional branch)指令。
进一步的,数据传输指令用于完成不同存储介质之间的数据传输。数据传输指令包括加载(load)指令,存储(store)指令,搬运(move)指令。load指令用于将数据从主存加载到缓存,store指令用于将数据从缓存存储到主存,move指令用于在缓存与缓存或者缓存与寄存器或者寄存器与寄存器之间搬运数据。数据传输指令支持三种不同的数据组织方式,包括矩阵,向量和标量。
进一步的,运算指令用于完成神经网络算术运算。运算指令包括矩阵运算指令,向量运算指令和标量运算指令。
更进一步的,矩阵运算指令完成神经网络中的矩阵运算,包括矩阵乘向量(matrix multiply vector),向量乘矩阵(vector multiply matrix),矩阵乘标量(matrix multiply scalar),外积(outer product),矩阵加矩阵(matrix add matrix),矩阵减矩阵(matrix subtract matrix)。
更进一步的,向量运算指令完成神经网络中的向量运算,包括向量基本运算(vector elementary arithmetics),向量超越函数运算(vector transcendental functions),内积(dot product),向量随机生成(random vector generator),向量中最大/最小值(maximum/minimum of a vector)。其中向量基本运算包括向量加,减,乘,除(add,subtract,multiply,divide),向量超越函数是指那些不满足任何以多项式作系数的多项式方程的函数,包括但不仅限于指数函数,对数函数,三角函数,反三角函数。
更进一步的,标量运算指令完成神经网络中的标量运算,包括标量基本运算(scalar elementary arithmetics)和标量超越函数运算(scalar transcendental functions)。其中标量基本运算包括标量加,减,乘,除(add,subtract,multiply,divide),标量超越函数是指那些不满足任何以多项式作系数的多项式方程的函数,包括但不仅限于指数函数,对数函数,三角函数,反三角函数。
进一步的,逻辑指令用于神经网络的逻辑运算。逻辑运算包括向量逻辑运算指令和标量逻辑运算指令。
更进一步的,向量逻辑运算指令包括向量比较(vector compare),向量逻辑运算(vector logical operations)和向量大于合并(vector greater than merge)。其中向量比较包括但不限于大于,小于,等于,大于或等于(≥),小于或等于(≤)和不等于。向量逻辑运算包括与,或,非。
更进一步的,标量逻辑运算包括标量比较(scalar compare),标量逻辑运算(scalar logical operations)。其中标量比较包括但不限于大于,小于,等于,大于或等于(≥),小于或等于(≤)和 不等于。标量逻辑运算包括与,或,非。
更进一步的,参见图55B所示,神经网络处理器还包括直接内存存取(direct memory access,DMA)单元。
更进一步的,参见图55B所示,神经网络处理器还包括指令缓存单元,输入神经元缓存单元,目标权值密码本缓存单元,目标权值字典缓存单元,目标权值位置缓存单元,输出神经元缓存单元。
特别的,存储单元主要用来存储神经网络的神经元,权值以及指令。其中存放权值时只存放目标权值以及目标权值的位置信息。存储单元存放量化的目标权值时只存放目标权值密码本和目标权值字典。
特别的,DMA单元用于在所述存储单元、指令缓存单元、目标权值密码本缓存单元、目标权值字典缓存单元、目标权值位置缓存单元,输入神经元缓存单元和输出神经元缓存单元中进行数据或者指令读写。
指令缓存单元,用于存储专用指令;
目标权值密码本缓存单元,用于缓存目标权值密码本;
目标权值字典缓存单元,用于缓存目标权值权值字典;
目标权值位置缓存单元,用于缓存目标权值位置数据;目标权值位置缓存将输入数据中每个连接权值一一对应到相应的输入神经元。
一种情形下目标权值位置缓存单元缓存一一对应的方法为采用1表示有连接,0表示无连接,每组输出与所有输入的连接状态组成一个0和1的字符串来表示该输出的连接关系。另一种情形下目标权值位置缓存单元缓存一一对应的方法为采用1表示有连接,0表示无连接,每组输入与所有输出的连接状态组成一个0和1的字符串来表示该输入的连接关系。另一种情形下目标权值位置缓存一一对应的方法为将一组输出第一个连接所在的输入神经元位置距离第一个输入神经元的距离、所述输出第二组输入神经元距离上一个输入神经元的距离,所述输出第三组输入神经元距离上一个输入神经元的距离,……,依次类推,直到穷举所述输出的所有输入,来表示所述输出的连接关系。
输入神经元缓存单元,用于缓存输入到粗粒度选数单元的输入神经元;
输出神经元缓存单元,用于缓存运算单元输出的输出神经元。
查找表单元接收权值字典和权值密码本,经过查找操作获得权值。对于没量化的权值直接通过旁路传输给运算单元。
上述预处理单元、存储单元、DMA单元、指令缓存单元、指令控制单元、目标权值密码本缓存单元、目标权值字典缓存单元、目标权值位置缓存单元、输入神经元缓存单元、输出神经元缓存单元、查找表单元、粗粒度选数单元和运算单元均为实体硬件器件,不是功能性软件单元。
本公开还提供了一种神经网络压缩装置,包括存储装置,指令译码装置和计算装置组成。存储装置中存储了压缩神经网络的指令序列,指令序列包含控制指令,数据传输指令,计算指令等,能够控制计算装置完成神经网络格式转化,对应格式压缩的任务;指令译码装置接收存储单元中的指令经过译码后生成控制信号控制计算装置;计算装置接收控制信号对神经网络完成上述粗粒度剪枝和量化操作。计算装置用于执行存储装置中的可执行指令,在执行指令时依照以上所述的数据压缩方法进行操作。
本公开还提供了一种神经网络数据的处理方法,如图56所示,该处理方法包括步骤:
S3001:接收输入神经元、目标权值字典、目标权值密码本和指令,述目标权值为绝对值大于预设阈值的权值;
S3002:对指令进行译码,以得到选数控制信息、查找控制信息和运算控制信息;
S3003:根据选数控制信息、查找控制信息和运算控制信息进行选取输入神经元、目标权值并进行运算,得到输出神经元。
在一些实施例中,所述处理方法还包括:接收未量化的目标权值以进行神经网络运算。
在一些实施例中,处理方法还包括:接收指令,并经过译码后生成控制信息控制神经网络的所述运 算。
在一些实施例中,运算包括以下至少一种:乘法运算,将所述第一输入数据和第二输入数据相乘,得到相乘之后的数据;加法运算,将第三输入数据通过加法树逐级相加,或者将所述第三输入数据通过和第四输入数据相加得到相加之后的数据;激活函数运算,对第五数据通过激活函数运算得到输出数据,所述激活函数为sigmoid、tanh、relu或softmax函数操作。
在一些实施例中,所述运算还包括池化操作,用于对输入的第六数据通过池化运算得到池化操作之后的输出数据,所述池化操作包括:平均值池化,最大值池化或者中值池化。
在一些实施例中,所述指令为神经网络专用指令,包括控制指令,数据传输指令,运算指令和逻辑指令。
在一些实施例中,所述控制指令用于控制神经网络执行过程,包括跳转指令和条件分支指令。
在一些实施例中,数据传输指令用于完成不同存储介质之间的数据传输,包括加载指令,存储指令,搬运指令。
在一些实施例中,所述运算指令用于完成神经网络的算术运算,包括矩阵运算指令,向量运算指令、标量运算指令、卷积神经网络运算指令、全连接神经网络运算指令、池化神经网络运算指令、RBM神经网络运算指令、LRN神经网络运算指令、LCN神经网络运算指令、LSTM神经网络运算指令、RNN神经网络运算指令、RELU神经网络运算指令、PRELU神经网络运算指令、SIGMOID神经网络运算指令、TANH神经网络运算指令和MAXOUT神经网络运算指令。
在一些实施例中,神经网络专用指令为Cambricon指令集,所述Cambircon指令集中每一条指令长度为64bit,指令由操作码和操作数组成。
在一些实施例中,逻辑指令用于完成神经网络的逻辑运算,包括向量逻辑运算指令和标量逻辑运算指令。
在一些实施例中,向量逻辑运算指令包括向量比较、向量逻辑运算和向量大于合并指令;优选的,向量比较包括但不限于大于,小于,等于,大于或等于(≥),小于或等于(≤)和不等于;优选的,向量逻辑运算包括逻辑与,逻辑或,或者逻辑非。
在一些实施例中,标量逻辑运算包括标量比较,标量逻辑运算;优选的,所述标量比较包括但大于,小于,等于,大于或等于(≥),小于或等于(≤)和不等于;优选的,所述标量逻辑运算包括逻辑与,逻辑或,以及逻辑非。
在一些实施例中,处理方法还包括步骤:对输入神经元和目标权值位置信息进行预处理,所述预处理包括切分、高斯滤波、二值化、正则化和、或归一化。
在一些实施例中,处理方法中,接收被选中的神经元和目标权值之后,还包括步骤:存储输入神经元、权值字典、密码本和指令,以及存储输出神经元;以及缓存所述指令、输入神经元、输出神经元。
在一个实施例里,本公开公开了一个芯片,其包括了上述神经网络处理器。
在一个实施例里,本公开公开了一个芯片封装结构,其包括了上述芯片。
在一个实施例里,本公开公开了一个板卡,其包括了上述芯片封装结构。
在一个实施例里,本公开公开了一个电子装置,其包括了上述板卡。
电子装置包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶和/或油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
所有的模块都可以是硬件结构,硬件结构的物理实现包括但不局限于物理器件,物理器件包括但不局限于晶体管,忆阻器,DNA计算机。
通过本公开实施例的数据压缩方法和处理方法,能够规则、高压缩比地压缩神经网络。加速装置内部集成了压缩方法,实现对神经网络的压缩功能。加速器能够充分挖掘压缩后的神经网络的特性,减少访存同时减少计算量,从而获得加速比并降低能耗。
在本说明书中,下述用于描述本公开原理的各种实施例只是说明,不应该以任何方式解释为限制发明的范围。参照附图的下述描述用于帮助全面理解由权利要求及其等同物限定的本公开的示例性实施例。下述描述包括多种具体细节来帮助理解,但这些细节应认为仅仅是示例性的。因此,本领域普通技术人员应认识到,在不背离本公开的范围和精神的情况下,可以对本文中描述的实施例进行多种改变和修改。此外,为了清楚和简洁起见,省略了公知功能和结构的描述。此外,贯穿附图,相同参考数字用于相似功能和操作。在本公开中,术语“包括”和“含有”及其派生词意为包括而非限制。
本说明书中“行/列”的含义表示行或者列,并且带有“行/列”的名词,行与行对应,列与列对应,比如:输出神经元与输入神经元组成的特征图行/列的连接状态数组筛选出用于计算的特征图行/列和与之对应的权值行/列代表如下含义:输出神经元与输入神经元组成的特征图行的连接状态数组筛选出用于计算的特征图行和与之对应的权值行或者输出神经元与输入神经元组成的特征图列的连接状态数组筛选出用于计算的特征图列和与之对应的权值列。
本发明提供了一种运算装置、运算方法和芯片,通过在输入神经元与输出神经元之间设置筛选单元,利用输出神经元与输入神经元组成的特征图的连接状态数组实现了结构剪裁,筛选出结构剪裁后人工神经网络中参与后续运算的特征图和与其对应的权值,避免了将所有输入神经元和权值都参与网络运算造成的运算量冗余和访存冗余,解决了CPU和GPU运算性能不足,前端译码开销大的问题,且充分挖掘了输入神经元和权值数据的重用性,降低了内存访问带宽,减小了运算量与访存量,实现高效率输出。
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明作进一步详细说明。
在本发明的第一个示例性实施例中,提供了一种运算装置。图56A为根据本发明一实施例所示运算装置的筛选单元功能示意图;图56B为根据本发明另一实施例所示运算装置的筛选单元功能示意图;图56C为根据本发明又一实施例所示运算装置的筛选单元功能示意图;图56D为根据本发明再一实施例所示运算装置的筛选单元功能示意图。图56E为根据本发明实施例所示人工神经网络中卷积层在进行结构剪裁前的运算对比示意图;图56F为根据本发明实施例所示人工神经网络中卷积层在进行结构剪裁后的运算对比示意图。图57为根据本发明第一实施例所示运算装置的结构示意图。
结合图56A至图56D、图56E和图56F以及图57所示,一种运算装置,包括:
存储单元100,其存储数据和指令;
缓存单元300,包括:输入缓存单元310,以及输出神经元缓存单元320,其中输入缓存单元310包括:指令缓存单元311,权值缓存单元312以及输入神经元缓存单元313;
筛选单元400,根据输出神经元与输入神经元组成的特征图(Input map)的连接状态数组(Index)筛选出上述特征图(Input map)及其对应的权值(Kernel),并将该特征图及其对应的权值输出至运算单元;
控制单元500,其从指令缓存单元311中读取专用指令,并将其译码成运算单元指令并输入至运算单元;
运算单元600,其根据存储单元100中存储的指令对输入的数据执行相应的运算;
直接内存存取(direct memory access,DMA)单元200,其在存储单元100与指令缓存单元311、权值缓存单元312、输入神经元缓存单元313和输出神经元缓存单元320中进行数据或者指令读写;并将连接状态数组输送到筛选单元400;
其中,输出神经元与输入神经元组成的特征图的连接状态数组由DMA单元200从存储单元100输送 到筛选单元400;输入神经元从存储单元100中依次经由DMA单元200、输入神经元缓存单元313输送到筛选单元400;权值从存储单元100中依次经由DMA单元200、权值缓存单元312输送到筛选单元400;
下面对运算装置的各个部分进行详细介绍。
存储单元100存储的数据包括:输入神经元组成的特征图,权值,连接状态数组以及输出神经元等;
指令缓存单元311,用于存储专用指令;
权值缓存单元312,用于缓存权值;
输入神经元缓存单元313,用于缓存输入神经元;
输出神经元缓存单元320,用于缓存输出神经元;
如图56A至56D所示,筛选单元400和运算单元600的功能如下:
对于权值未经过离线筛选的情况,筛选单元400根据输出神经元与输入神经元组成的特征图(Input map)的连接状态数组(Index)筛选出参与后续运算的特征图及其对应的权值(Kernel),并根据规模将筛选出来的特征图中的输入神经元和对应的权值一次性或分批传给运算单元600,对应图56A所示情况;或者
对于权值未经过离线筛选的情况,筛选单元400根据输出神经元与输入神经元组成的特征图中行/列的连接状态数组筛选出参与后续运算的特征图行/列和与其对应的权值行/列,并根据规模将筛选出来的特征图中的输入神经元和对应的权值一次性或分批传给运算单元600,对应图1C所示情况;
对于权值已经离线筛选完成的情况,筛选单元400根据输出神经元与输入神经元组成的特征图的连接状态数组筛选出参与后续运算的特征图,并根据规模将筛选出来的特征图中的输入神经元一次性或分批传给运算单元600,同时将经过离线筛选后的权值直接传给运算单元,对应图56B中所示情况;或者
对于权值已经离线筛选完成的情况,筛选单元400根据输出神经元与输入神经元组成的特征图中行/列的连接状态数组筛选出参与后续运算的特征图行/列,并根据规模将筛选出来的特征图中的输入神经元一次性或分批传给运算单元,同时将经过离线筛选后的权值行/列直接传给运算单元600,对应图56D所示情况;
以卷积层为例,经过筛选单元实现结构剪裁后的卷积层前后运算对比示意图如图56E和56F所示,结构剪裁之前,所有的特征图(Input map)和权值(Kernel)都参与了运算,而经过筛选单元的筛选过程,只有与输出神经元存在连接关系的输入神经元才作为有效的特征图被筛选出来参与后续运算,减小了计算量和访存量,实现了结构裁剪,提高了运算效率,降低了内存访问带宽;
下面对人工神经网络的结构如何实现裁剪和连接状态数组的表示形式做详细介绍。图57A为根据本发明实施例所示人工神经网络中卷积层的结构示意图;图57B为根据本发明实施例所示采用筛选单元对人工神经网络实现结构裁剪的结构示意图;图57C为根据本发明实施例所示采用连接状态数组的一种表示实现图57B所示结构裁剪的示意图;图57D为根据本发明实施例所示采用连接状态数组的另一种表示实现图57B所示结构裁剪的示意图。
参照图57A所示,人工神经网络主要基于卷积运算,以一个卷积层为例,设输入层由N个输入神经元I
1,I
2,...,I
N组成,输出层由M个输出神经元O
1,O
2,...,O
M组成,则有NM个权值W
ij,i=1,2,...,N,j=1,2,...,M。筛选前,某个输出神经元O
j由所有的N个输入神经元组成的特征图和权值W
1j,W
2j,...,W
Nj生成,生成过程为W
ij分别在I
i上滑动做内积得到N个中间结果特征图,i=1,2,...,N,每个中间结果特征图的大小和O
j相同,之后这N个中间结果特征图对位相加,累加成一个输出神经元组成的特征图,即O
j;O
j中的输出神经元可以共用一个连接状态数组,也可以每个输出神经元对应一个连接状态数组;这里全部的NM个W
ij为筛选前的权值;
其中,权值可以经过筛选单元筛选,也可以事先离线筛选完成。
输出神经元与输入神经元组成的特征图的连接状态数组,即Index,连接状态数组可以有多种表示方式,可选的,其中第一种表示如下:对每个输出神经元对应的Index A,由于输入层有N个节点, 所以A有N位,每一位的值为1或0,第i位的值A
i为1表示I
i与该输出神经元之间有连接,0表示I
i与该输出神经元之间无连接;在筛选单元中,Index是已知的,筛选后得到的用于计算出该输出神经元的每个I
k和W
kj满足:A
k=1,k∈{1,2,...,N},该输出神经元在O
j内;另外,也可以采用0表示有连接,1表示无连接,分析同上;
连接状态数组的第二种表示如下:对每个输出神经元对应的Index A,每一位的值为非负整数,设与该输出神经元相连的输入神经元组成的特征图为
n≤N,k
1,k
2,...,k
n∈{1,2,...,N},它们的值未知。则Index A有n位,第1位的值A
1,表示第一个连接所在的输入神经元位置距离I
1的距离;第p位的值A
P,p=2,3,...,n,表示当前连接所在的输入神经元位置距离上一个连接所在的输入神经元的距离。筛选单元中,连接状态数组是已知的,筛选后得到的用于计算出该输出神经元的输入神经元组成的特征图为
与之相对应的权值为
满足:k
1=A
1+1,k
p=A
p+k
p-1,该输出神经元在O
j内;
可以理解,除了上述第一种以及第二种表示方式外,本领域人员还可以根据需求选择其他的表示方式来表示连接状态数组。
为了更方便理解本披露提供的筛选单元的功能,下面以具体的人工神经网络为例,参照图57B来看,以N=4,M=2为例,即输入层由4个输入神经元:I
1,I
2,I
3,I
4组成,输出层由2个输出神经元O
1,O
2组成,介绍筛选单元中的数据操作过程。
该卷积层有4个输入神经元:I
1,I
2,I
3,I
4;有2个输出神经元:O
1,O
2;用于生成O
1,O
2的筛选前的权值分别为:W
11,W
21,W
31,W
41和W
12,W
22,W
32,W
42;假设每个输出神经元组成的特征图中的输出神经元共用一个连接状态数组,O
1,O
2对应的连接状态数组为A
(1),A
(2),图57B中的虚线四边形表示进行结构剪裁后被去除的权值,即筛选后的权值分别为:W
11,W
31,W
41和W
22,W
32,结果如图57B所示;
若连接状态数组采用第一种表示,这里用1表示有连接,0表示无连接:
如图57C所示,O
1中的输出神经元对应的Index A
(1)为1011,由于
所以筛选后得到的用于计算出O
1的输入神经元组成的特征图为I
1,I
3,I
4,与之相对应的权值为W
11,W
31,W
41。
若连接状态数组采用第二种表示:
如图57D所示,O
1中的输出神经元对应的Index A
(1)为021。由此得到,对于O
1,k
1=0+1=1,k
2=2+1=3,k
3=1+3=4;对于O
2,k
1=1+1=2,k
2=1+2=3。所以筛选后得到的用于计算出O
1的输入神经元组成的特征图为I
1,I
3,I
4,与之相对应的权值为W
11,W
31,W
41。
以上两种Index的表示方式都可以实现对输入神经元组成的特征图和权值的筛选;
运算单元600包括但不仅限于:第一部分乘法器,第二部分加法树,第三部分激活函数单元;
第一部分乘法器实现如下功能:将输入数据1,和输入数据2相乘,得到相乘之后的输出结果,过程为:out=in1*in2,其中,将输入数据1记作in1,输入数据2记作in2,将相乘后的输出结果记作out;
第二部分加法树实现如下功能:将输入数据in1通过加法树逐级相加,得到逐级相加的输出数据,其中in1是一个长度为N的向量,N大于1,累加的过程为:out’=in1[1]+in1[2]+...+in1[N],将输入数据1通过加法数逐级相加之后得到的输出数据和输入数据2相加,其过程表达为:out”=in1[1]+in1[2]+...+in1[N]+in2;或者将输入数据1和输入数据2相加得到输出数据,过程为:out”’=in1+in2,其中out’,out”,out”表示三种输出结果;
第三部分激活函数单元将输入数据(in)通过激活函数(active)运算得到激活输出数据(out),过程为:out=active(in),激活函数active可以是sigmoid、tanh、relu、softmax等,除了做激活操作,第三部分可以实现其他的非线性函数的运算,将输入数据(in)通过运算(f)得到输出数据(out)的函数过程为:out=f(in);其中一种为池化运算,即将输入数据(in)经过池化运算得到池化操作之后的输出数据(out),过程为out=pool(in),其中pool为池化操作,该池化操作是由池化单元实现的,是在第三部分与激活函数单元并列存在的单元,池化操作包括但不限于:平均值池化,最大值池化,中 值池化;输入数据是和输出数据相关的一个池化核中的数据;
运算单元执行的运算包括神经网络计算;该网络计算包括:第一部分是将所述输入数据1和输入数据2相乘,得到相乘之后的数据;第二部分执行加法树运算,用于将输入数据1通过加法树逐级相加,或者将输入数据1通过和输入数据2相加得到输出数据;第三部分执行激活函数运算,对输入数据通过激活函数运算得到输出数据;第四部分执行池化运算,out=pool(in),其中pool为池化操作,池化操作包括但不限于:平均值池化,最大值池化,中值池化,输入数据in是和输出out相关的一个池化核中的数据;以上几个部分的运算可以自由选择一个多个部分进行不同顺序的组合,从而实现各种不同功能的运算。
图57E为根据图57所示运算装置进行运算的方法流程图;图57F为如图57E所示步骤S808对应的实施子步骤流程图;参照图57、图57E和图57F所示,一种运算装置的运算方法,包括:
步骤S802:DMA单元200将存储单元100中的输入神经元和权值分别传给输入神经元缓存单元313和权值缓存单元312,并同时将相应指令传入指令缓存单元311中;
步骤S804:DMA单元200将存储单元100中的连接状态数组传给筛选单元400,筛选单元400从输入神经元缓存单元313和权值缓存单元312中分别获取输入神经元组成的特征图和权值,并根据连接状态数组筛选出参与后续运算的特征图和与之分别相对应的权值,并将其传给运算单元600;
步骤S806:控制单元500从指令缓存单元311中读取专用指令,并将其译码成运算单元指令并输入至运算单元600;
步骤S808:运算单元600调取筛选后的特征图和权值并进行运算获得输出神经元;
基于上述,运算单元600进行运算的过程分为如下子步骤:
子步骤S808a:将筛选后的输入神经元组成的特征图中的输入神经元和相对应的权值数据相乘,得到各个数据乘以权重的结果;
子步骤S808b:对各个数据乘以权重的结果执行加法树运算,得到加权和,根据需要对加权和加偏置或不做处理;
子步骤S808c:对上一步得到的加权和执行激活函数运算,得到输出神经元;
步骤S810:运算单元600将得到的输出神经元放入输出神经元缓存单元320;
步骤S812:DMA单元200将输出神经元缓存单元320中的数据转入存储单元100。
重复进行上述步骤直至得到网络最终层的输出。
值得强调的是,本发明中提到的输入神经元和输出神经元并非是指整个神经网络的输入层中神经元和输出层中神经元,而是对于网络中任意相邻的两层,处于网络前馈运算前端的下层中的神经元即为输入神经元,处于网络前馈运算后端的上层中的神经元即为输出神经元;具体来说,设一个卷积神经网络有L层,K=1,2,...,L-1,对于第K层和第K+1层来说,我们将第K层称为输入层,其中的神经元为所述输入神经元,第K+1层称为输出层,其中的神经元为所述输出神经元。即除最后一层外,每一层都可以作为输入层,其下一层为对应的输出层,每层神经元的个数是预知的。
上述提到,权值可以经过筛选单元筛选,也可以事先离线筛选完成,在第一个实施例中,权值是经过筛选单元筛选实现的,在本发明的第二个示例性实施例中,提供了另外一种运算装置,适用于离线筛选权值而不经过筛选单元筛选权值的情况。图58A为根据本发明第二实施例所示运算装置的结构示意图,如图58A所示,本实施例中提供的运算装置包含的各个模块单元均相同,与第一个实施例的区别在于:筛选单元的功能400有所不同,在本实施例中,权值不经过筛选单元400进行筛选,而是直接从权值缓存单元312输送至运算单元600;
对应本实施例所示运算装置的运算方法,同样参照图57E与图57F,与第一个实施例中所述运算装置的运算方法大致相同,只在步骤S804中替换成如下步骤:
S804’:DMA单元200将存储单元100中的连接状态数组传给筛选单元400,筛选单元400从输入神 经元缓存单元313中获取输入神经元组成的特征图,并根据连接状态数组筛选出参与后续运算的特征图,并将其传给运算单元600;与此同时,离线筛选后的权值从权值缓存单元312传入运算单元600;
以上两个实施例所示的运算装置均是从权值缓存单元312和输入神经元缓存单元313分别读取权值和输入神经元组成的特征图输送到筛选单元400中,而在实际操作中也可以直接从DMA单元200将权值和输入神经元组成的特征图直接读入到筛选单元400中,据此,本发明的第三个示例性实施例中还提出了一种运算装置。
图58B为根据本发明第三实施例所示运算装置的结构示意图,如图58B所示,本实施例中提供的运算装置与第一实施例的模块单元相同,与第一实施例的区别在于以下几点:
1、与第一个实施例相比,位置设置的区别在于:筛选单元400设置成与DMA单元200直接相连,并且直接从DMA单元200向筛选单元400传输权值和输入神经元组成的特征图,然后经过筛选单元400筛选后的权值和输入神经元组成的特征图分别传入权值缓存单元312和输入神经元缓存单元313,最后传给运算单元600;
2、与第一个实施例相比,功能的设置区别在于:还多设置了一种离线筛选权值的数据处理路径,具体表现为:权值除了可以通过筛选单元400进行筛选然后传输至权值缓存单元312,最终传给运算单元600之外,还可以通过权值缓存单元312直接传给运算单元600,而这种情形适用于已经离线筛选好权值的情形。
基于以上设置,第三个实施例提供的运算装置可以同时实现权值经过离线筛选和不经过离线筛选两种情形的数据处理,参照图57E和图57F以及以上第一个实施例中提供的运算装置的运算方法,本实施例的运算装置的运算方法,只需将第一个实施例中描述的运算装置的运算方法中步骤S802和步骤S804换成如下步骤即可:
步骤S802”:DMA单元200将存储单元100中的指令传入指令缓存单元311中;
步骤S804”a:DMA单元200将存储单元100中的连接状态数组、输入神经元组成的特征图和权值传给筛选单元400,筛选单元400根据连接状态数组筛选出参与后续运算的特征图和与之分别相对应的权值,并分别将筛选后的输入神经元组成的特征图中的输入神经元和对应的权值传入至输入神经元缓存单元313和权值缓存单元312;
步骤S804”b:DMA单元200将存储单元100中的连接状态数组和输入神经元组成的特征图传给筛选单元400,筛选单元400根据连接状态数组,筛选出用于计算得到输出神经元的特征图,并将其中的输入神经元传入至输入神经元缓存单元313,于此同时,DMA单元200将存储单元100中已经筛选完毕的权值传入权值缓存单元312;
上述步骤的执行过程如下:若权值不经过离线筛选,执行完步骤S802”之后继续执行步骤步骤S804”a;若权值完成了离线筛选,执行完步骤S802”之后继续执行步骤步骤S804”b。
一个实施例中,上述运算装置还包括连接关系生成单元,用于根据输入神经元、权值和输出神经元生成连接关系。
一个实施例中,上述连接关系生成单元独立于上述运算装置之外,可以是连接关系生成单元包含于主处理器中,运算装置包含于协处理器中;或者连接关系生成单元包含于从处理器中,运算装置包含主协处理器中。
在本发明的第四个示例性实施例中,还提供了一种电子装置,包括板卡,该板卡包括芯片封装结构,该芯片封装结构包括芯片,该芯片包括本发明实施例中提供的运算装置;
以上提到的电子装置在实际应用中包括:数据数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器以及医疗设备等;
以上交通工具包括飞机、轮船以及车辆等;以上家用电器包括电视、空调、微波炉、冰箱、电饭煲、 加湿器、洗衣机、电灯、燃气灶和油烟机等;以上医疗设备包括核磁共振仪、B超仪和心电图仪等。
综上所述,本发明实施例提供了一种运算装置及运算方法,通过在输入神经元与输出神经元之间设置筛选单元,利用输出神经元和输入神经元组成的特征图的连接状态数组实现了结构剪裁,筛选出结构剪裁后人工神经网络中参与后续运算的特征图和相对应的权值,避免了将所有输入神经元和权值都参与网络运算造成的运算量冗余和访存冗余,并且还适用于权值经过离线筛选和不经过离线筛选两种情形,解决了CPU和GPU运算性能不足,前端译码开销大的问题,且充分挖掘了输入神经元和权值数据的重用性,降低了内存访问带宽,减小了运算量与访存量,实现了高效率输出。
本披露还披露了一种用于执行人工神经网络正向运算的装置,在一种可选的实施方案中,该用于执行人工神经网络正向运算的装置可以设置如图2A所示的计算装置、如图1或如图6A所示的计算装置内,当然在实际应用中,上述执行人工神经网络正向运算的装置还可以设置在用于稀疏连接的人工神经网络计算装置,上述设置有用于执行人工神经网络正向运算的装置的计算装置或计算芯片还可以组成神经网络的处理系统,当然在实际应用中,上述用于执行人工神经网络正向运算的装置还可以设置在神经网络领域的其他芯片、计算装置或处理器内,该计算装置还可以包括定点数据转换模块及相应的定点数据运算模块,所述定点数据转换模块包括浮点数据统计模块和数据转换单元;上述如图2A所示的计算装置还可以添加如图59或图60所示的单元或模块。其中,浮点数据统计模块用于统计及计算获得人工神经网络正向运算中存储各个类型数据所需的指数位偏移及指数位所需的比特位数;浮点数据转换单元用于实现短位数浮点数据类型与长位数浮点数据类型的转换,例如32位浮点数据类型的转换;浮点数据运算模块用于完成针对于短位数浮点数据所需的各类运算。
其中,“长位数浮点数据”表示原来的浮点数据,例如32位浮点数据,也可以是针对标准的64位或者16位浮点数等,这里只是以32位为具体实施例进行说明;“较少位数浮点数据”,又名“短位数浮点数据”,表示相对于原来的浮点数据来说,采用更少的位数来表示的浮点数据。
根据本披露实施例的多层人工神经网络的正向运算,包括两层或者两层以上的多个神经元。对于正向运算中所需的输入神经元、权值、偏置等数据,均采用短位数浮点数据类型表示,并参与各个层之间的运算。
图59示出了根据本披露一实施例的用于存储数据的短位数浮点数据结构的具体表示方法。其中,1位bit位用于表示符号,M位用于表示指数部分,N位用于表示有效位部分,由于浮点表示法要求第一位有效数字不能为0,对于二进制来说,只能为1,因此有效位的最高位1可以作为隐藏位,不写入内存,所以实际表示的浮点数有效位数为(N+1)位;相比于32位浮点数据表示形式,本披露采用的短位浮点数据表示形式除了占用比特位数更少外,对于神经网络中同一层、同一类型的数据,如第一个卷积层的所有权值数据,还另外设置了两个标志位,标志位offset和标志位EL,其中标志位offset用于记录指数位的初始偏移,实际指数位表示=指数位表示数据+偏移量(offset),标志位EL用于记录指数位所占用的比特数M,则有效位所占bit数N=X-1-M。
图60A示出了用于执行人工神经网络正向运算的装置的示例框图。如图60A所示,该装置包括:
浮点数据统计模块11,用于对所述神经网络正向运算中的输入神经元、权值和/或偏置数据进行数据分析,以得到浮点数据的指数位偏移量及指数位的长度EL;
浮点数据转换模块12,用于根据所述浮点数据的指数位偏移量和指数位的长度EL,将所述输入神经元、权值和/或偏置数据从长位数浮点数据类型转换为短位数浮点数据类型;
浮点数据运算模块13,用于根据转换为短位数浮点数据类型的输入神经元、权值和/或偏置数据进行人工神经网络正向运算。
图60示出了浮点数据统计模块的示例框图。该浮点数据统计模块包括数据提取单元21、统计单元22和分析单元23。该模块的目的是,通过提取采用长位数浮点数据类型表示的神经网络中的所有长位 数浮点数据,比如包括输入神经元、权值和/或偏置数据,并通过分析这些长位数浮点数据得到神经网络中用短位数浮点数据类型表示的各个不同类型数据(比如输入神经元、权值和偏移数据)所需的指数位偏移(offset)及指数位长度EL,以便在之后的短位数浮点正向运算中有更好的效果。
其中,数据提取单元21用于提取长位数浮点正向运算过程中各个不同类型的数据;统计单元22用于统计同一类型数据的数据范围及各个数据段的数据分布情况;分析单元23根据统计单元22统计的结果,以得到采用短位数浮点表示各个类型数据时应当设定的指数位长度EL及指数位偏移(offset),指数位长度EL的设定使得可表示的数据范围尽可能包含该类型的所有数据。
在一种可行的实施例中,上述用于执行人工神经网络正向运算的装置从其他单元或者装置中,比如CPU中,获取上述正向运算过程中采用长位数浮点数据类型表示的各个不同类型的数据,包括输入神经元、权值和偏置数据,然后统计同一类型的数据的数据范围和各个数据段的分布情况,根据该统计结果得到采用短位数浮点数据表示各个类型数据或者每一层各个类型数据时应当设定的指数位长度EL及指数位偏移,或者;
上述用于执行人工神经网络正向运算的装置从其他单元或者装置中,比如CPU中,获取采用短位数浮点数据表示上述人工神经网络中各个类型数据或者每一层各个数据类型时应当设定的指数位长度EL和指数位偏置。
图61示出了正向运算模块的短位数浮点计算部分的示例框图。包括运算缓存单元31、数据转换单元32、舍入单元33。其中:运算缓存单元31用于存储采用精度较高的数据类型表示的正向运算的中间结果,这是由于在正向运算时,加法或者乘法运算可能会导致数据范围扩大;运算结束后,对超出短位数浮点数据类型所表示的精度范围的数据,进行舍入操作,接着通过数据转换单元32将运算缓存单元中存储的数据从长位数浮点数据类型转换为短位数浮点数据类型。
舍入单元33用于对超出短位浮点数据类型表示精度范围的数据进行舍入操作,该舍入单元可以为随机舍入单元、四舍五入单元、向上舍入单元、向下舍入单元、截断舍入单元等,通过不同的舍入单元可以实现对超出短位数浮点数据类型表示精度范围的数据进行不同的舍入操作。
随机舍入单元执行如下操作:
其中,y表示随机舍入后的短位数浮点数据,x表示随机舍入前的长位数浮点数据,ε为当前短位数浮点数据类型所能表示的最小正整数,即2
offset-(X-1-EL),
表示对原数据x直接截得短位数浮点数据所得的数(类似于对小数做向下取整操作),w.p.表示概率,即随机舍入获得的数据y为
的概率为
为的
概率为
四舍五入单元执行如下操作:
其中,y表示四舍五入后的短位数浮点数据,x表示四舍五入前的长位数浮点数据,ε为当前短位数浮点数据类型所能表示的最小正整数,即2
offset-(X-1-EL),
为ε的整数倍,其值为小于或等于x的最大数。
向上舍入单元执行如下操作:
其中,y表示向上舍入后的短位数浮点数据,x表示向上舍入前的长位数浮点数据,|x|为ε的整数倍,其值为大于或等于x的最小数,ε为当前短位数浮点数据类型表示所能表示的最小正整数,即2
offset-(X-1-EL)。
向下舍入单元执行如下操作:
其中,y表示向上舍入后的短位数浮点数据,x表示向上舍入前的长位数浮点数据,
为ε的整数倍,其值为小于或等于x的最大数,ε为当前短位数浮点数据类型所能表示的最小正整数,即2
offset-(X-1-EL)。
截断舍入单元执行如下操作:
y=[x];
本申请还公开了一种执行人工神经网络正向运算的方法,具体实施步骤为:
通过已训练好的神经网络长位数浮点模型获取神经网络各个层的以长位数浮点数据类型表示的数据,包括每一层的权值、偏置、输入神经元、输出神经元及其它数据参数。
对不同层,不同类型数据单独进行统计分析,获得不同层各类型数据采用短位数浮点数据类型表示时所需要的各个参数,包括指数位的位宽、有效位的位宽,以及指数位所需表示的范围等。
对统计分析得到的短位数浮点数据类型用于神经网络正向运算,即神经网络正向运算中所有数据用短位数浮点数据类型表示,同时,对神经网络的权值和偏置数据保留一份以长位数浮点数据类型表示的副本,然后进行正向运算。对于正向运算中,某些运算会导致数据范围扩大,如加法、乘法等,需要用缓存空间存储中间计算结果,中间结果用长位数浮点数据类型存储,计算完后再转回相应的短位数浮点数据类型。从长位数浮点数据类型转换为短位数浮点数据类型过程中需要采用舍入的方式,其中包括随机舍入、四舍五入舍入、向上舍入、向下舍入和截断舍入等,分别表示如下:
随机舍入的具体操作如下式所示:
其中,y表示随机舍入后的短位数浮点数据,x表示随机舍入前长位数浮点数据,ε为当前短位数浮点数据类型所能表示的最小正整数,即2
offset-(X-1-EL),
表示对原数据x直接截得短位数浮点数据所得 的数(类似于对小数做向下取整操作),w.p.表示概率,即随机舍入获得的数据y为
的概率为
为
的概率为
四舍五入的具体操作如下式所示:
其中,y表示四舍五入后的短位数浮点数据,x表示四舍五入前的长位数浮点数据,ε为当前短位数浮点数据类型所能表示的最小正整数,即2
offset-(X-1-EL),
为ε的整数倍,其值为小于或等于x的最大数。
向上舍入的具体操作如下式所示:
其中,y表示向上舍入后的短位数浮点数据,x表示向上舍入前的长位数浮点数据,|x|为ε的整数倍,其值为大于或等于x的最小数,ε为当前短位数浮点数据类型所能表示的最小正整数,即2
offset-(X-1-EL)。
向下舍入的具体操作如下式所示:
其中,y表示向上舍入后的短位数浮点数据,x表示向上舍入前的长位数浮点数据,
为ε的整数倍,其值为小于或等于x的最大数,ε为当前短位数浮点数据类型所能表示的最小正整数,即2
offset-(X-1-EL)。
截断舍入的具体操作如下式所示:
y=[x];
正向运算结束后,做反向运算时,需要将正向运算中的以短位数浮点数据类型表示的数据转换为以长位数浮点数据类型表示的数据,然后使用以长位数浮点数据类型表示的数据参与反向运算,其中,参与反向运算的权值和偏置数据采用正向运算时保留的以长位数浮点数据类型表示的副本,反向运算结束后,将以长位数浮点数据类型表示的数据转换为以短位数浮点数据类型表示的数据,然后使用与短位数浮点数据类型表示的数据参与之后的正向运算,同时,在正向运算过程中仍对神经网络的权值和偏置数据保留以长位数浮点数据类型表示的副本,转换过程中需要做舍入操作,操作同上述正向运算中的舍入操作。
重复进行如上所述的正向及反向运算直到神经网络训练完成。
图62为根据本申请一实施例的单层人工神经网络正向运算流程图。该流程图描述利用本申请的装置和指令集实现的一种单层神经网络正向运算的过程。该运算过程在如图4A、图5或图6A所示的计算装置中实现。对于每一层来说,首先对输入神经元向量进行加权求和计算出本层的中间结果向量。该中间结果向量加偏置并激活得到输出神经元向量。将输出神经元向量作为下一层的输入神经元向量。
图63示意性示出了根据本申请一实施例的运算流程示例框图。其中,正向运算模块51进行正向运算得到的除权值、偏置数据之外的以短位数浮点数据类型表示的数据在进行反向训练时要先通过短位数 -长位数浮点数据类型转换单元53转换成以长位数浮点数据类型的数据,然后进行反向运算,反向运算模块53进行的反向运算结束后,需要通过长位数-短位数浮点数据类型转换单元54将以长位数浮点数据类型表示的数据转换成以短位数浮点数据类型表示的数据,在转换过程中,需对超出短位数浮点数据类型所能表示的精度范围的数据进行舍入操作,此处舍入操作由舍入单元55完成,过程同图62中的舍入单元进行的舍入操作。
需要说明的是,上述正向运算也可以采用以长位数浮点数据类型表示的输入神经元、权值和/或偏置数据,上述反向训练也可以采用以短位数浮点数据类型表示的输入神经元、权值和/或偏置数据。
需要说明的是,上述短位数浮点数据类型是相对于上述长位数浮点数据类型的,当短位数浮点数据类型为16位浮点数据类型时,上述长位数浮点数据类型可为32位浮点数据类型或64位浮点数据类型;当上述短位数浮点数据类型为32位浮点数据类型时,上述长位数浮点数据类型为64位浮点数据类型。
通过将正向运算的数据用短位数浮点数据类型表示,充分利用了短位数浮点数据类型表示的数据范围空间,相对于以长位浮点数据类型表示的数据,极大地减少了存储网络参数所需的空间,优化了硬件的面积功耗比。
本披露了一种用于执行神经网络正向运算的装置,该用于执行神经网络正向运算的装置在一种可选的技术方案中,可以设置在如图2A所示的计算装置、如图1或如图6A所示的计算装置内,当然在实际应用中,上述执行人工神经网络正向运算的装置还可以设置在用于稀疏连接的人工神经网络计算装置,上述设置有用于执行人工神经网络正向运算的装置的计算装置或计算芯片还可以组成神经网络的处理系统,当然在实际应用中,上述用于执行人工神经网络正向运算的装置还可以设置在神经网络领域的其他芯片、计算装置或处理器内该计算装置可以包括定点数据转换模块及相应的定点数据运算模块,所述定点数据转换模块包括浮点数据统计模块和数据转换单元;如图2A所示的计算装置还可以包括如图64、65、66所示装置的模块或单元。其中,浮点数据统计模块用于统计及计算获得正向运算中人工神经网络各个类型数据的合适的小数点位置(poin location);数据转换单元用于实现短位数定点数据类型与长位数浮点数据类型的转换;定点运算模块用于完成针对于短位数定点数据所需的各类正向运算。
其中,“长位数浮点数据”表示原来的浮点数据,例如32位浮点数据,也可以是针对标准的64位或者16位浮点数等,这里只是以32位为具体实施例进行说明;“较少位数定点数据”,又名“短位数定点数据”,表示相对于原来的浮点数据来说,采用更少的位数来表示的定点数据。
根据本披露实施例的多层人工神经网络的正向运算,包括两层或者两层以上的多个神经元。对于正向运算中所需的输入神经元、权值、偏置等数据,均采用短位数定点数据类型表示,并参与各个层之间的运算。
图64示出了根据本申请实施例的用于存储数据的短位数定点数据结构的具体表示方法。其中,1比特位用于表示符号,M位用于表示整数部分,N位用于表示小数部分;相比于32位浮点数据表示形式,本申请采用的短位数定点数据表示形式除了占用比特位数更少外,对于神经网络中同一层、同一类型的数据,如第一个卷积层的所有权值数据,还另外设置了一个标志位Point location记录小数点的位置,这样可以根据实际数据的分布调整定数数据类型所能表示的精度与可表示数据范围。
图65A示出了用于执行人工神经网络正向运算的装置的示例框图。如图60A所示,该装置包括:
浮点数据统计模块11,用于对所述人工神经网络正向运算中的输入神经元、权值和/或偏置数据进行数据分析,以得到定点数据类型的小数点位置;
数据转换模块12,用于根据所述定点数据的小数点位置,将所述输入神经元、权值和/或偏置数据从长位数浮点数据类型转换为短位数定点数据类型;
定点数据运算模块13,用于根据转换为短位数定点数据类型的输入神经元、权值和/或偏置数据进行人工神经网络正向运算。
图65示出了浮点数据统计模块的示例框图。该浮点数据统计模块11包括数据提取单元21、统计单元22和分析单元23。该模块的目的是,通过提取采用长位数浮点数据类型表示的神经网络中的所有长位数浮点数据,比如包括输入神经元、权值和/或偏置数据,并通过分析这些长位数浮点数据得到神经网络中用短位数定点数据类型表示的各个不同类型数据(比如输入神经元、权值和偏移数据)所需的小数点位置Point location,以便在之后的短位数定点正向运算中有更好的效果。
其中,数据提取单元21用于提取长位数浮点正向运算过程中各个不同类型的数据;统计单元22用于统计同一类型数据的数据范围及各个数据段的数据分布情况;分析单元23根据统计单元22统计的结果,以得到用短位数定点数据类型表示各个类型数据应当设定的小数点位置Point location。
在一种可行的实施例中,上述用于执行人工神经网络正向运算的装置从其他单元或者装置中,比如CPU中,获取上述正向运算过程中采用长位数浮点数据类型表示的各个不同类型的数据,包括输入神经元、权值和偏置数据,然后统计同一类型的数据的数据范围和各个数据段的分布情况,根据该统计结果得到采用短位数定点数据表示各个类型数据或者每一层各个类型数据时应当设定的小数点位置,或者;
上述用于执行人工神经网络正向运算的装置从其他单元或者装置中,比如CPU中,获取采用短位数浮点数据表示上述人工神经网络中各个类型数据或者每一层各个数据类型时应当设定的指数位长度EL和指数位偏置。
图66示出了正向运算模块的短位数定点计算部分的示例框图。包括运算缓存单元31、数据转换单元32、舍入单元33。其中:运算缓存单元31用于存储采用精度较高的数据类型表示的正向运算的中间结果,这是由于在正向运算时,加法或者乘法运算可能会导致数据范围扩大;运算结束后,对超出短位数定点数据类型所表示的精度范围的数据,进行舍入操作,接着通过数据转换单元32将运算缓存单元中存储的数据从长位数浮点数据类型转换为短位数定点数据类型。
舍入单元33用于对超出短位定点数据类型表示精度范围的数据进行舍入操作,该单元可以为随机舍入单元、四舍五入单元、向上舍入单元、向下舍入单元、截断舍入单元等,通过不同的舍入单元可以实现对超出短位数定点数据类型表示精度范围的数据进行不同的舍入操作。
随机舍入单元执行如下操作:
其中,,y表示随机舍入后的短位数定点数据,x表示随机舍入前的长位数浮点数据,ε为当前短位数定点数据类型所能表示的最小正数,即2
-Point_location,
表示对原数据x直接截得短位数定点数据所得的数(类似于对小数做向下取整操作),w.p.表示概率,即随机舍入获得的数据y为
的概率为
为
的概率为
四舍五入单元执行如下操作:
其中,y表示四舍五入后的短位数定点数据,x表示四舍五入前的长位浮点数据,ε为当前短位数定点数据类型所能表示的最小正整数,即2
-Point_location,
为ε的整数倍,其值为小于或等于x的最大数。
向上舍入单元执行如下操作:
y=|x|;
其中,y表示向上舍入后的短位数定点数据,x表示向上舍入前的长位数浮点数据,|x|为ε的整数倍,其值为大于或等于x的最小数,ε为当前短位数定点数据类型所能表示的最小正整数,即2
-Point_location。
向下舍入单元执行如下操作:
其中,y表示向上舍入后的短位数定点数据,x表示向上舍入前的长位数浮点数据,
为ε的整数倍,其值为小于或等于x的最大数,ε为当前短位数定点数据类型所能表示的最小正整数,即2
-Point_location。
截断舍入单元执行如下操作:
本申请还公开了一种执行人工神经网络正向运算的方法,具体实施步骤为:
通过已训练好的神经网络32位浮点模型获取神经网络各个层的32位浮点模型数据,包括每一层的权值、偏置、输入输出值及其它数据参数。
提取所述多层网络模型的每一层中同一类型的输入数据;统计并获取所述多层网络模型的每一层中同一类型的输入数据在预设区间上的分布比例;根据所述分布比例获取所述多层网络模型的每一层中同一类型的输入数据的小数点位置。
其中,上述预设区间可为
i=0,1,2,...,n,n为预设设定的一正整数,X为定点数据所占的比特位数。上述预设区间
包括n+1个子区间。统计上述多层网络模型的每一层中同一类型的输入数据在上述n+1个子区间上分布信息,并根据该分布信息获取上述第一分布比例。该第一分布比例为p
0,p
1,p
2,...,p
n,该n+1个数值为上述多层网络模型的每一层中同一类型的输入数据在上述n+1个子区间上的分布比例。预先设定一个溢出率EPL,从0,1,2,...,n中获取去最大的i,使得p
i≥1-EPL,该最大的i为上述多层网络模型的每一层中同一类型的输入数据的小数点位置。换句话说,取上述多层网络模型的每一层中同一类型的输入数据的小数点位置为:max{i/p
i≥1-EPL,i∈{0,1,2,...,n}},即在满足大于或者等于1-EPL的p
i中,选取最大的下标值i为上述多层网络模型的每一层中同一类型的输入数据的小数点位置。
需要说明的是,上述p
i为上述多层网络模型的每一层中同一类型的输入数据中取值在区间
中的输入数据的个数与上述多层网络模型的每一层中同一类型的输入数据总个数的比值。比如m1个多层网络模型的每一层中同一类型的输入数据中有m2个输入数据取值在区间
中,则上述
根据所述小数点位置Point location,将所有以长位数浮点数据类型表示的数据均采用短位数定点数据类型表示。
对统计分析得到的短位数定点数据类型用于神经网络正向运算,即神经网络正向运算中所有数据采用短位数定点数据类型表示,同时,对神经网络的权值和偏置数据保留一份以长位数浮点数据类型表示的副本,然后进行正向运算。对于正向运算中,某些运算会导致数据范围扩大,如加法、乘法等,需要用缓存空间存储中间计算结果,中间结果用长位数浮点数据类型存储,计算完后再转换为相应的短位数定点数据类型。从长位数浮点数据类型转换为短位数定点数据类型过程中需要采用用舍入的方式,其中包括随机舍入、四舍五入舍入、向上舍入、向下舍入和截断舍入等,分别表示如下:
随机舍入单元执行如下操作:
其中,y表示随机舍入后的短位数浮点数据,x表示随机舍入前长位数浮点数据,ε为当前短位数定点数据表示格式所能表示的最小正数,即2
-Point_location,
表示对原数据x直接截得短位数定点数据所得的数(类似于对小数做向下取整操作),w.p.表示概率,即随机舍入获得的数据y为
的概率为
为
的概率为
四舍五入单元执行如下操作:
其中,y表示四舍五入后的短位数定点数据,x表示四舍五入前的长位数浮点数据,ε为当前短位数定点数据类型所能表示的最小正整数,即2
-Point_location,
为ε的整数倍,其值为小于或等于x的最大数。
向上舍入单元执行如下操作:
其中,y表示向上舍入后的短位数定点数据,x表示向上舍入前的长位数浮点数据,|x|为ε的整数倍,其值为大于或等于x的最小数,ε为当前短位数定点数据类型所能表示的最小正整数,即2
-Point_location。
向下舍入单元执行如下操作:
其中,y表示向上舍入后的短位数定点数据,x表示向上舍入前的长位数浮点数据,
为ε的整数倍,其值为小于或等于x的最大数,ε为当前短位数定点数据类型所能表示的最小正整数,即2
-Point_location。
截断舍入单元执行如下操作:
y=[x];
正向运算结束后,做反向运算时,需要将正向运算中的以短位数定点数据类型表示的数据转换为以长位数浮点数据类型表示的数据,然后使用以长位数浮点数据类型表示的数据参与反向运算,其中,参与反向运算的权值和偏置数据用正向运算时保留的以长位数浮点数据类型表示的副本,反向运算结束后,将以长位数浮点数据类型表示的数据转换为以短位数定点数据类型表示的数据,然后使用与短位数定点数据类型表示的数据参与之后的正向运算,同时,在正向运算过程中仍对神经网络的权值和偏置数据保留以长位数浮点数据类型表示的副本,转换过程中需要做舍入操作,操作同上述正向运算中的舍入操作。
重复进行如上所述的正向及反向运算直到神经网络训练完成。
图67是示出根据一个实施例的单层人工神经网络正向运算流程图。该运算过程在如图4A、图5或图6A所示的计算装置中实现。该流程图描述利用本申请的装置和指令集实现的一种单层神经网络正向运算的过程。对于每一层来说,首先对输入神经元向量进行加权求和计算出本层的中间结果向量。该中间结果向量加偏置并激活得到输出神经元向量。将输出神经元向量作为下一层的输入神经元向量。
图68示意性示出了根据本申请一实施例的运算流程示例框图。该运算过程在如图4A、图5或图6A所示的计算装置中实现。其中,正向运算模块51进行正向运算得到的除权值、偏置数据之外的以短位数定点数据类型表示的数据在进行反向训练时要先通过短位数定点数据-长位数浮点数据转换单元53转换成长位数浮点数据类型表示的数据,然后进行反向传播运算,反向运算模块53进行的反向传播运算结束后,需要通过长位数浮点数据-短位数定点数据转换单元54将长位数浮点类型表示的数据转换成以短位数定点数据类型表示的数据,在转换过程中,需对超出短位数定点数据类型所能表示的精度范围的数据进行同图68中的舍入操作,此处舍入操作由随机舍入单元55完成。
图69示出了根据本申请实施例的算法实施总体流程图。该运算过程在如图4A、图5或图6A所示的计算装置中实现。细节操作在对图64到图68的说明中已经给出,详细步骤和申请内容中的具体实施步骤完全相同,这里不作赘述。
需要说明的是,上述正向运算也可以采用以长位数浮点数据类型表示的输入神经元、权值和/或偏置数据,上述反向训练也可以采用以短位数定点数据类型表示的输入神经元、权值和/或偏置数据。
需要说明的是,上述短位数浮点数据类型是相对于上述长位数浮点数据类型的,当短位数浮点数据类型为16位浮点数据类型时,上述长位数浮点数据类型可为32位浮点数据类型或64位浮点数据类型;当上述短位数浮点数据类型为32位浮点数据类型时,上述长位数浮点数据类型为64位浮点数据类型。
通过将正向运算的数据用短位数定点表示,充分利用了短位数定点数据类型所能表示的数据范围空间,相对于长位数浮点数据类型表示,极大地减少了存储网络参数所需的空间,优化了硬件的面积功耗比。
本披露包括用于片上重复数据寻址的装置及该装置的调度使用方法,在如图2A所示的计算装置内,如该存储介质为存储器时,数据访问单元与存储器之间的数据调用方法可以采用片上重复数据寻址的装置及该装置的调度使用方法,上述方法还可以应用在如图1或如图6A所示的计算装置内,其可以应用在计算装置内部的数据访问单元与存储器之间的数据调度,当然其还可以应用在神经网络的处理系统中的多个计算装置之间的数据的调度,当然还可以应用在该方法还可以应用在如图26,图28,图30所示的用于稀疏连接的人工神经网络计算装置或人工神经网络正向运算的装置执行数据调度内。所示的装置内该方法针对重复数据高效地进行读写,可以有效的实现片上重复寻址,同时支持片上片外数据交换,通过数据和地址划分,片上数据重复寻址空间可以被扩展到片外地址空间。本披露能够降低访存带宽需求,同时提供良好的灵活性,从而降低片上存储开销,而且能够适用于不同场景,并不仅仅局限于机器学习类处理器。
本披露同时可通过合理调度数据,缩减片上缓存开销,从而可提供更加高效的处理器设计支持。合理调度数据不仅仅指数据替换策略,也包括对于计算的划分,重新安排计算顺序,使得集中访问的数据可被安排在相同的数据块中。本披露为异构环境下利用片上重复寻址用于降低访存带宽,涉及存储单元、寻址单元的实施和调度。
图70是优选实施例的总体结构的示例框图。如图70所示的实施例,在实际应用中,还可以包括如图2A所示的互联模块以及运算单元,该运算单元包括多个计算器。对于如图70所示的总体结构,举例说明,对于异构平台来说,处理器的片上存储器20能够存储的数据十分有限,通常来讲片上有限的资源限制了将所有数据放置在片上的可能性,所以将大存储器(廉价,速度稍慢)放在片外,小存储介质(昂贵,速度快)集成在片上,需要将所有的数据划分成为大小可以存储在片上存储器20的数据块,通过存储容量大的片外存储器10和存储容量小的片上存储器20上的数据交互将所需数据块读入或者写出。其间,片内地址索引单元40将片内数据地址按需提供给片上处理单元30。本披露的存储器并不限定,可以是静态随机存储器(Static Random Access Memory,SRAM),动态随机存储器(Dynamic Random Access Memory,DRAM),增强动态随机存取存储器(Enhanced Dynamic Random Access Memory,eDRAM),寄存器(Register file,RF)等常见存储介质,也可是新型的存储器件,如非易失存储器(Non-Volatile Memory,NVM)或3D存储器件等。
本披露提供一种片上重复寻址的方法,是一种当总数据过大,大于片上存储介质20的存储容量时所使用的数据管理策略,从而可以把片外的数据读取至片内进行快速重复寻址,当然,也可以实现片外重复寻址,然而高效的做法是将集中访问的数据放在一起,一次搬至片内,然后直接在片内快速寻址。该方法包括:
数据划分步骤,根据预定的数据划分原则将片上存储介质和/或片外存储介质的数据划分为不同的数据块,所述数据划分原则包括将重用距离低于预定距离阈值的数据划分在同一个数据块。重用距离指的是一个数据两次使用的距离,距离是指访存次数,重用距离近的数据在运行短期内就会被访问,也即就有很强的时间上的相关性。这些数据划分在同一数据块上可以一次载入片内存储然后使用尽可能多的次数,从而访存更加高效。在每个数据块中,数据则按照预定的规则存储介质内,例如,顺序存储。
数据索引步骤,根据预定的替换策略的顺序关系,依次载入不同的所述数据块到至少一个片上处理单元,被载入的所述数据块中的重复数据在片内重复寻址。该数据块里的数据可在片内直接重复寻址,避免从片外存储或IO多次读写(速度慢,功耗高)。采用有效的数据划分原则,从而使得上述替换发生次数尽可能的少(有效的数据划分原则可减少替换次数,有效的数据替换策略在此基础上可进一步减少替换次数)。优选的是,图71所示即为数据地址划分图,所述数据的索引地址50包括数据块地址51与 块内地址52;即每个数据的地址为当前数据块地址51与块内地址52拼接而成。将数据划分成为合理的数据块后,通过将地址划分成为片内和片外使得片内重复寻址更加高效。地址索引所采用的技术并不局限于简单的数据索引,也包括codebook(码本)等划分实施方案。
所述数据索引步骤包括:根据所述替换策略的顺序关系和数据块地址51,依次载入不同的所述数据块到至少一个片上处理单元30,被载入的所述数据块中的重复数据在片内重复寻址,当所述数据块的块内地址52全部索引完成后才替换新的数据块,直至没有数据块被需要载入为止。在数据块内进行索引时,只有数据的块内地址52有用,则索引的硬件单元不需要使用数据块地址51,然而数据块地址51仍然需要记录从而可以被后续使用。
优选的是,片上存储介质20与片上处理单元30通过片内数据通路进行数据交换;片上存储介质20与片外存储介质10通过片内外数据通路进行数据交换,片上存储介质20或片外存储介质10至少一次从内部或外部进行读写;所述数据以数据块为单位在片上存储介质20、片外存储介质10和/或片上处理单元30两两之间搬运。
优选的是,所述数据块的数据量小于片上存储介质20的容量,优选能够被其整除。
优选的是,片上存储介质20采用读写端口分离设计,从而使得数据的读出和写入相互独立,可以同时进行。
优选的是,所述方法应用于学习类处理器。
优选的是,所述方法应用于异构环境。
优选的是,片上处理单元30为片上运算模块,所述根据预定条件选取数据,满足所述预定条件的所述数据被划分在相同的所述数据块中。具体的是,所述预定条件包括简单划分条件、平均为预定数目的数据块条件、与不同输出神经元相关条件或者满足预定数学关系条件。这些是针对不同情况下具体的数据划分准则,仍在数据划分原则限定的范围内。
如图72所示为一个优选实施例的数据划分示意图。以常见的神经网络为例(向量运算),不同输出神经元所需的权值数据存储在不同的数据块,运算时,需要在不同的时刻载入不同的数据块进行索引。输入神经元的值是被复用,计算两个输出神经元用的是同样的输入。在计算输出神经元的时候需要载入相关的权值,计算完成后则这部分权值完全不需要了;计算输出神经元时,需要载入相关的权值。其中相同输入神经元的值只存了一份,也即计算时需要重复寻址。相同的权值也只存了一份,也需要重复寻址获得。
如图73所示为一个优选实施例的数据划分示意图。同样以常见的神经网络为例(向量运算),满足指定条件的权值连接被划分存储在同样的数据块中,如实线权值连接和虚线权值连接。在不同的时刻,不同数据块被载入,运算单元根据指定条件选取数据,如所有的输出神经元先计算与实线权值连接的相关计算,在数据块替换后再计算与虚线权值连接的相关计算。
优选的是,所述替换策略包括顺序替换、逆序替换或者乱序替换;图74所示即为一个优选实施例的替换策略示意图,数据被划分成为不同的数据块,在不同时刻,根据不同的替换策略载入不同的数据块。如顺序替换,数据块按照#1、#2、#3以此类推的顺序载入;逆序替换,数据块按照#N、#(N-1)、#(N-2)的顺序载入;乱序替换,则根据指定的顺序读入数据块。或者,所述替换策略包括数据写回,在数据处理完成后将最终结果或中间结果写回所述片上存储介质、所述片外存储介质和/或所述片上处理单元。不同的替换策略应当考虑到数据的一致性。
本披露相应提供一种实现片上重复寻址的方法的装置,该装置包括:
数据划分模块,用于根据预定的数据划分原则将片上存储介质和/或片外存储介质的数据划分为不同的数据块,所述数据划分原则包括将重用距离低于预定距离阈值的数据划分在同一个数据块;
数据索引模块,用于根据预定的替换策略的顺序关系,依次载入不同的所述数据块到至少一个片上处理单元,被载入的所述数据块中的重复数据在片内重复寻址。
优选的是,所述数据的索引地址包括数据块地址与块内地址;
所述数据索引模块用于根据所述替换策略的顺序关系和所述数据块地址,依次载入不同的所述数据块到至少一个所述片上处理单元,被载入的所述数据块中的重复数据在片内重复寻址,当所述数据块的所述块内地址全部索引完成后才替换新的数据块,直至没有数据块被需要载入为止。
优选的是,所述片上存储介质与所述片上处理单元通过片内数据通路进行数据交换;
所述片上存储介质与所述片外存储介质通过片内外数据通路进行数据交换,所述片上存储介质或所述片外存储介质至少一次从内部或外部进行读写;所述数据以数据块为单位在所述片上存储介质、所述片外存储介质和/或所述片上处理单元两两之间搬运。
优选的是,所述数据块的数据量小于所述片上存储介质的容量。
优选的是,所述片上存储介质采用读写端口分离设计。
优选的是,所述装置应用于学习类处理器。
优选的是,所述装置应用于异构环境。
优选的是,所述片上处理单元为片上运算模块,所述根据预定条件选取数据,满足所述预定条件的所述数据被划分在相同的所述数据块中。
优选的是,所述预定条件包括简单划分条件、平均为预定数目的数据块条件、与不同输出神经元相关条件或者满足预定数学关系条件。
优选的是,所述替换策略包括顺序替换、逆序替换或者乱序替换;或者
所述替换策略包括数据写回,在数据处理完成后将最终结果或中间结果写回所述片上存储介质、所述片外存储介质和/或所述片上处理单元。
图75所示即为一个优选实施例的利用片上数据重复寻址降低访存带宽需求装置使用的流程图。开始计算后,
步骤S101,数据按照数据划分原则划分成为不同的数据块。
步骤S102,将数据块载入片上存储介质20。在某一时刻,只有一块数据块被载入片上存储介质20用于片上计算,根据不同的替换策略,不同的数据块按不同的顺序被载入用于运算。
步骤S103,对获取的数据进行片上计算。
步骤S104,判断是否所有的计算完毕没有数据块需要再次载入,如果是则全部计算结束,否则,回到步骤S102。
图76所示即为一个优选实施例的计算单元根据地址进行重复寻址的框图。根据地址索引,存储于地址DA的数据被计算单元#0、#2、#4所需要,则实施例索引至地址DA,并将DA中的数据传播给所需的计算单元,即#0、#2和#4。这个例子中,三个计算单元所需要的数据因为是一样的,所以在片上只存储了一份,也即同一个数据要被重复寻址三次。图76中数据传递给片上计算单元的方式并不局限于BUS总线的连接方式,也包括Crossbar结构、FAT-TREE、H-TREE等其他连接方式。
综上所述,本披露将重用距离小于预定的距离阈值的数据划分在同一个数据块,重用距离指的是一个数据两次使用的距离,距离是指访存次数,重用距离近的数据在运行短期内就会被访问,也即就有很强的时间上的相关性。这些数据划分在同一数据块上可以一次载入片内存储然后使用尽可能多的次数,从而访存更加高效。本披露旨在利用片上的重复寻址用于降低访存带宽。本披露的装置及其相关使用方法可以有效的提供数据的复用性和其灵活寻址的需求,能够适用于不同场景,并不仅仅局限于机器学习类处理器。
需要说明的是,本披露提出的片上重复数据寻址的实施例,可应用到上述提供的方法实施例中(即各个应用场景下的方法实施例),能够降低访存带宽需求,同时提供良好的灵活性,从而降低片上存储开销。
通过实施本披露实施例,可获得如下有益效果:终端设备获取的相关数据、运算的结果,均可以根 据其重用距离对数据进行划分,然后以划分后的数据块为一个整体进行相应的处理和保存。这样可以一次载入片内存储然后使用尽可能多的次数。对于应用到各个应用场景中,能够简化指令的操作,从而访存更加高效。
现有异构平台,处理器的片上能够存储的数据十分有限,需要将所有的数据划分成为大小可以存储在片上的数据块,通过片外大存储介质和片内小存储介质上的数据交互将所需数据块读入或者写出。
为了实现上述目的,图77示出了本披露提供一种片上数据划分读写系统100,如图77所示的片上数据划分读写系统可以应用到如图2A、图1、如图4A、图6A、图26,图28,图30所示的装置内,当然其还可以应用到人工神经网络正向运算的装置或用于稀疏连接的人工神经网络计算装置等等神经网络领域的其他计算装置内,如图2A所示的计算装置的存储器如为片外存储系统,则如图2A所示的计算中可以包括如图77所示的片上数据划分读写系统。该系统包括:
数据划分模块10,用于根据数据划分策略将片内存储数据划分在不同区域,分别存储在片内存储介质和片外存储介质;
预先操作模块20,用于在进行数据拼接时预先对片内存储数据的片内地址索引进行操作处理;
数据拼接模块30,用于根据数据拼接策略将片内存储数据和片外输入数据拼接得到所述原始数据表示。
对于异构平台来说,处理器的片上能够存储的数据十分有限,需要将所有的数据划分成为大小可以存储在片上的数据块,通过片外大存储器和片内小存储器上的数据交互将所需数据块读入或者写出。其间,片内数据地址通过片内地址索引按需提供给片上计算单元(如图2A所示的运算单元),物理框架如图81所示;图78和图79A、图79B所示的实施例划分只为本披露所涉及的典型情况,本披露并不局限于特定的数据划分,极端情况如数据全部被在片上,或者数据全部被划分在片外,也在本披露的实现范围之内。
进一步地,本披露所述片上数据划分读写系统100,还包括:
存储模块40,用于存储搬运所述片内存储介质的所述片内存储数据和来自所述片外存储介质的所述片外输入数据;
所述存储模块40采用读写端口分离,数据的读出和写入相互独立;
所述预先处理模块20还包括:
片上处理子模块21,用于运算处理所述片内存储数据;
片外处理子模块22,用于运算处理外部输入数据处理,所述外部输入数据包括所述片外输入数据、所述读写端口直接读入的数据。
进一步地,存储模块40还包括:
地址索引接口41,用于根据片内地址索引来索引所述片内存储数据;
数据读出接口42,用于已索引到所述片内存储数据的输出出口;
数据写入接口43,用于将要存储的数据根据写入地址写入相应存储位置。
所述片上数据划分读写系统100,优选的是数据划分模块10还包括:
地址划分子模块11,用于地址空间划分成为片外数据空间和片内数据空间;
数据替换子模块12,用于根据数据替换策略在所述片内存储介质和片外存储介质之间进行数据替换;所述数据替换策略包括顺序替换、逆序替换以及随机替换;
所述数据划分策略包括定点数划分、浮点数划分;作为典型,如图79A所示即为一个定点数实施例的数据划分,这种划分将定点数据换分成为整数部分和小数部分,图79B所示一个浮点数实施例的数据划分。这种划分将浮点数划分成为指数部分和小数部分。图79A和图79B所示的实施例划分只为本披露所涉及的典型情况,本披露并不局限于特定的数据划分,极端情况,如数据全部被在片上,或者数据全 部被划分在片外,片上的缓存结构包括对输入数据的缓存,也在本披露的设计范围之内,地址划分子模块11将索引的地址空间划分对应到片外数据空间和片内数据空间,有需要的时候通过数据替换子模块12进行交换,将需要加速数据处理的转移到片内。数据划分模块10基于芯片中的一个或多个片上计算单元实现,所述片上计算单元发起读写请求并处理拼接得到的原始数据。
所述数据拼接模块30还包括:
索引拼接子模块31,用于片内片外数据传输的形式从原始数据表示转为全部或者部分的数据索引,拼接全部或者部分的片上的所述数据索引的结果获得所述原始数据表示;
所述数据拼接模块30读写通过片内片外数据通路或片内数据通路进行,所述片内片外数据通路包括PCI(Peripheral Component Interconnect,外部控制器接口)、PCIE(总线和接口标准,Peripheral Component Interface Express)、HT互联技术(Hyper Transport,超传输,是一种全新的具有可升级性的新型、高速、高性能的端到端集成电路互联总线技术),所述片内数据通路包括FAT-TREE、H-TREE互联技术(hierarchy tree,层次树),片内片外数据连接方式包括多芯片互联结构;图77所示的片内片外数据连接并不局限于PCIE总线连接,也包涵多芯片互联结构如片上网络。图77所示的片上计算单元与片内存储介质的数据通路不局限于H-TREE,或者FAT-TREE等互联技术,通过片内片外数据通路可以在片外寻址,从而所述片上数据划分读写系统100可以对准确无误地将各种需要拼接的数据还原成原始数据,可以有效的支持不同的数据划分策略,从而减少片内片外数据交换。
所述片内存储器或所述片外存储器中的所述数据被一次或者多次读写,所述数据被读至一个或者多个片上运算单元;所述片内存储器或所述片外存储器被一次或者多从外部进行读写,所述片内存储器被一次或者多次从内部读写。
图80是本披露所述片上数据划分读写方法的一个具体实施例的流程图,其可通过本披露所述片上数据划分读写系统100实现,如图83,所述片上数据划分读写方法包括:
步骤S701,数据划分步骤,根据数据划分策略将片上数据存储在不同区域,分别存储在片内存储介质和片外存储介质;
步骤S702,预先操作步骤,在进行数据拼接时预先对片内存储数据的片内地址索引进行操作处理;
步骤S703,数据拼接步骤,根据数据拼接策略将所述片内存储数据和片外输入数据拼接得到原始数据表示。
分别通过数据划分模块10、预先操作模块20和数据拼接模块30实现,将原始数据在片内进行无损恢复。
其中优选的,本披露所述片上数据划分读写方法需要实现对于存储的管理,实现拼接过程需要存储模块40的支持,所述数据划分读写方法还包括:
数据存储步骤,存储搬运所述片内存储介质的所述片内存储数据和来自所述片外存储介质的所述片外输入数据;所述存储步骤中读写端口分离,数据的读出和写入相互独立;具体地,所述数据存储步骤还包括:
第一、根据片内地址索引来索引所述片内存储数据;
第二、将已索引到数据的输出出口;
第三、将要存储的数据根据写入地址写入相应存储位置;
读写时分别由地址索引接口41、数据读出接口42、数据写入接口43提供支持,与片内片外数据通路和片内数据通路配合实现模块内外的数据通信,独立的读写接口可以实现同时读写。片上数据根据片内地址索引,该片内地址索引有可能经过预先操作模块30一定的操作(如地址偏移计算),检索片内存储得到片内存储数据,结合外部输入至片内的数据,经过拼接操作,得到最后的完整数据。
在一个具体实施例中,优选的本披露所述片上数据划分读写方法的一个优选实施例的流程图,如图84所示,所述片上数据划分读写方法步骤包括:
步骤S801,地址空间划分成为片外数据空间和片内数据空间;
步骤S802,根据数据替换策略在所述片内存储器和片外存储器之间进行数据替换;所述数据替换策略包括顺序替换、逆序替换以及随机替换;所述数据划分策略包括定点数划分、浮点数划分;
步骤S803,运算处理所述片内存储数据;
步骤S804,运算处理外部输入数据处理,所述外部输入数据包括所述片外输入数据、所述读写端口直接读入的数据。
步骤S805,片内片外数据传输的形式从所述原始数据表示转为全部或者部分的数据索引,拼接全部或者部分的片上的所述数据索引的结果获得所述原始数据表示。
经过处理过后的片内存储数据和片外输入数据拼接在一起,然后才能交由后续的模块进行原始数据的处理,实现处理器的功能。
进一步地,为便于理解,下面以图80-图82所示的一个具体实施例的物理设计框架图进行说明。
对于异构平台来说,处理器的片上能够存储的数据十分有限,需要将所有的数据划分成为大小可以存储在片上的数据块,通过片外大存储器(即片外存储器)和片内小存储器(即片内存储器)上的数据交互将所需数据块读入或者写出,在数据块大小上有区分,因而划分并存储在不同区域,根据容量需求不同增设所述片外存储介质。其间,片内数据地址通过片内地址索引按需提供给片上计算单元,如图82通过片内地址索引接口41获取索引以及得到索引对应的数据,图80所示即为一个实施例的片上数据索引过程,装置根据8-bit地址索引256个存储位置,得到32-bit的数据,并不局限于图示的地址索引位宽和片上数据存储位宽。流程的实现在硬件上还依赖于片内存储器、片外存储器、片内片外数据通路以及片内数据通路之间的相互通信。
如图82所示即为一个实施例的数据拼接操作过程,片内存储数据,图示为32bit位宽,经过片上数据处理子模块31处理,图示为32bit位宽。片上数据处理子模块31并不局限于寻址操作,也包括其他运算,如算术计算。片外输入数据,图示为32bit位宽,经过片外数据处理子模块32处理,图示为32bit位宽。处理过后的片内存储数据和片外输入数据拼接在一起,图示为64bit位宽,输送给后续模块处理,如片上计算单元,经过处理的片内存储数据和片外输入数据并不局限于图示的位宽,数据块并不局限于特定的数据位宽,数据处理并不局限于特定的操作,而可能包涵复杂的操作,不仅是简单的拼接,而包涵其他操作处理。
具体地,所述数据拼接步骤通过片内片外数据通路或片内数据通路进行,尤其所述片内片外数据通路包括PCI、PCIE、HT互联技术,实现内部与片外之间的数据流,所述片内数据通路包括FAT-TREE、H-TREE互联技术,片内片外数据连接方式包括多芯片互联结构,如片上网络。
所述片内存储器或所述片外存储器中的所述数据可以被一次或者多次读写,所述数据可以被读至一个或者多个片上运算单元;所述片内存储介质或所述片外存储介质可以被一次或者多从外部进行读写,介质可以被一次或者多次从内部读写。
本披露提供一种片上读写装置,包括所述片上数据划分读写系统100,所述片上读写装置包括片内存储介质、片外存储介质、片内片外数据通路和片内数据通路,所述片上读写装置优选的是,还包括了静态随机存储器(Static Random Access Memory,SRAM),动态随机存储器(Dynamic Random Access Memory,DRAM),增强动态随机存取存储器(Enhanced Dynamic Random Access Memory,eDRAM),寄存器(Registerfile,RF)等常见存储介质,也可以是新型的存储器件,如非易失存储器(Non-Volatile Memory,NVM)或者3D存储器件等等。
本披露将数据表示转换到索引,可以高效的进行片上地址空间内的重复寻址,也可以进行片外地址寻址;异构环境下片上重复寻址的装置及其使用策略,不同于直接对数据本身缓存进行加速,硬件支持需要包含片内存储介质,片外存储介质,地址索引器件,片内片外数据通路,片内数据通路。
最后,本披露旨在用于不同的数据划分的策略、装置和方法,根据不同的划分策略,数据被划分成 为不同的部分,本披露中的装置支持不同划分策略的装置。
综上所述,本披露的装置及其相关使用方法可以有效的提供数据的复用性和其灵活寻址的需求,有效的降低访存带宽需求,能够适用于不同场景,并不仅仅局限于机器学习类处理器。本披露同时可以通过合理调度数据,缩减片上缓存开销,从而可以提供更加高效的处理器设计支持。
需要说明的是,本披露提供的片上数据划分读写的相关实施例,可应用到上述提供的方法实施例中(即各个应用场景所对应的方法实施例)。在本披露中,终端设备获取数据后,可根据数据划分策略将数据进行划分,并相应的保存在片内、片外存储介质。然后在每次写入数据,都完成相应的数据划分操作;在读取数据时,通过预先操作步骤和数据拼接步骤得到原始数据表示,从而重复数据高效地进行读写,降低了访存带宽需求,同时提供良好的灵活性,从而降低片上存储开销。
参阅图85,图85提供了一种基于多处理器协同的用于神经网络算法的推理和训练的运算系统,该系统可以包括n个处理器(n大于等于2的整数),互联装置,以及存储模块。其中,n个处理器分别可以是神经网络处理器、GPU、CPU、FPGA、DSP等任意具备计算部分神经网络算法的设备,当然在实际应用中,上述神经网络处理器还可以为本披露中的专用处理器(如图人工神经网络正向运算的装置或用于稀疏连接的人工神经网络计算装置等等)、计算装置(如图1、2A或6A所示的计算装置)等等,互联装置或互联电路的数据处理装置用于连接各处理器,负责各个处理器之间的通信以及数据传输,其连接方式可以是通过各种片上互连技术(如总线,光互连等),也可以是通过SoC集成的方式连接等;存储模块是用于储存神经网络的输入,输出数据,以及训练的模型参数,以及运算过程中产生的各种中间数据,以及各处理器所需的计算指令。
互联模块可以使用但不限于环状,树状,交叉开关(crossbar),mesh,或者torus等拓扑结构。
不同处理器之间的连接方式,以及存储方式不局限于一种,即系统中可能存在大于一种的互连装置或存储装置。
参阅图85,图85中的处理器可以为一种用于执行人工神经网络正向运算的装置,该执行人工神经网络正向运算的装置的具体结构可以为如图2A所示的计算装置的结构,当然在实际应用中,该装置还可以包括指令缓存单元、控制器单元、直接内存访问单元、树型模块、主运算模块、以及多个从运算模块,其中:指令缓存单元用于通过直接内存访问单元读入指令并缓存读入的指训练令;控制器单元用于从指令缓存单元读取指令,并将该指令译码成控制树型模块、主运算模块、以及从运算模块行为的微指令;直接内存访问单元用于从外部地址空间向主运算模块和各从运算模块的相应数据缓存单元中写数据或从所述数据缓存单元向外部地址空间读数据;树型模块用于,在每层神经网络反向开始计算的阶段,主运算模块通过H树模块向所有的从运算模块传输本层的输入神经元向量,在从计算模块的计算过程完成后,树型模块逐级将各从计算模块的输出神经元值拼成中间结果向量;主运算模块用于利用中间结果向量完成后续计算。
该人工神经网络正向运算装置作为一种计算型处理器,可以和其他类型的处理器(如GPU,CPU)结合在一起组成一种新的神经网络任务处理系统。
图86A、86B显示了一种可能的实施方案。图86A中,包含三个模块:控制模块,包含了如CPU的控制处理器,用于进行逻辑控制,生成指令,以及调用其他的处理器;其次,正向处理模块,包含n个(n大于等于1)正向计算模块(人工神经网络专用正向计算装置),用于神经网络正向的计算;以及,m个(n大于等于1)个反向计算模块(使用通用处理器,比如GPU/DSP/FPGA等)用于进行神经网络的反向计算。控制模块和计算模块之间通过互联装置1进行连接和通信,正向处理模块和反向处理模块之间通过互联装置2进行连接和通信。
或者正向计算模块和反向计算模块使用人工神经网络专业处理器,权值更新使用通用处理器,比如GPU、DSP或FPGA。
图86B中展示了一种当n=1,m=1时的多处理器协同装置,其中包括了CPU,神经网络处理器,以及GPU三个处理器。该装置可以用于进行神经网络的推理和训练。
图87为一种更具体的,用于神经网络的训练和推理的多处理器协同装置。其中,1为控制模块,即用于控制整个执行过程的控制,包含控制处理器,常见情况下是CPU;3为正向处理模块,其中包含了n个用于进行正向计算的正向处理模块,用于进行训练和推理过程中的正向神经元的计算,常见情况下为人工神经网络正向运算装置;2为反向处理模块,包含m个反向计算模块,包括了反向处理器,常见情况下为GPU/FPGA/DSP,用于进行训练过程中的反向梯度传递,和权值更新的操作;5为存储单元,正向处理模块从存储单元1中获取数据,包括神经元,权值等,控制处理器从存储单元3中获得数据,包括指令,网路模型等,反向处理器从存储单元2中获得数据,包括目标标签,权值,梯度等。
正向计算模块之间通过互联模块1进行连接,反向计算模块之间通过互连模块2进行连接。控制模块则通过互联模块3连接正向处理模块和反向处理模块进行通信。
图88是图87装置的变换。由于神经网络算法中,反向计算中需要用到的神经元,突触,偏置数据是正向过程计算出来的,如果将正向数据和反向数据分开存储会导致额外的数据传输开销,即反向计算开始之前,数据要从正向处理模块传输到反向处理模块可以访问的存储单元中,导致整体处理速度下降,功率增加。因此,我们设计一种正向处理模块和反向处理模块共享同一存储单元的装置。其中,正向处理模块和反向处理模块在运算过程中所需要的数据(包括输入原始数据,神经元,突触,梯度,标签等)都存放在存储单元1中。存储单元1的介质可以是之前所述的类型。
图89是另一种存储单元组织结构。其中,控制模块,正向处理模块和反向处理模块共享同一个存储单元1。这样的好处是,省去了从控制处理器(CPU)存储器移动数据到其他处理器存储器的过程。
图89示出本披露中提出的人工神经网络正向处理模块的整体结构的示例框图。如图89所示,该装置包括指令缓存单元1、控制器单元2、直接内存访问单元3、树型模块4、主运算模块5和多个从运算模块6。指令缓存单元1、控制器单元2、直接内存访问单元3、树型模块4、主运算模块5和从运算模块6均可以通过硬件电路(例如专用集成电路ASIC)实现。
指令缓存单元1通过直接内存访问单元3读入指令并缓存读入的指令。
控制器单元2从指令缓存单元1中读取指令,将指令译成控制其他模块行为的微指令,所述其他模块例如直接内存访问单元3、主运算模块5和从运算模块6等。
直接内存访问单元3能够访存外部地址空间,直接向装置内部的各个缓存单元读写数据,完成数据的加载和存储。
如图90所示的系统可以包括:控制模块1,存储单元模块2,互联模块3,神经网络计算模块4。控制模块一般为CPU,存储单元1是其内存;神经网络计算模块为若干神经网络处理器组成的计算模块,用于处理任务中的神经网络算法的计算,如卷积,pooling或上述神经网络专用指令中的一种或多种等。控制处理器和神经网络计算模块的连接和通信通过互连模块2实现;神经网路计算模块中各处理器之间通过互连模块1进行连接和通信;神经网络计算模块从存储单元2中读取计算所需要的数据(权值,输入数据等)
本披露通过将设置多种类,多个处理器,保证神经网络处理装置的灵活性,高效性,以及可扩展性。即可以高效完成朴素的神经网络算法,通过多处理器的写作,也可以完成复杂的如目标识别这类任务。通过将不同特点的计算任务划分给不同的处理器,可以在让神经网络处理器发挥出其最大效率的同时,保证装置的可扩展性,兼容性,以及保证计算精度,和计算效率。上述如图85、图86A、图86B、图87、图88、图89、图90的结构可以应用到任何的神经网络计算指令的计算中或神经网络应用中。本披露并不限制该图85、图86、图87、图88、图89结构的应用场景,另外,对于不同的神经网络计算指令的执行可能需要添加或扩展其他的功能模块,本披露也不限于添加或扩展的其他的功能模块的具体形式,例如,扩展的功能模块可以为如图2A中的模块或单元。
需要说明的是,本披露提出的多处理器协同处理架构,可以进行各类神经网络算法的计算,如训练和预测的卷积,池化等算法,同时可能包括的GPU和CPU可保证支持各种类的深度学习算法,其当然可应用到上述提供的方法实施例中(即各个应用场景下所对应的方法实施例)。
通过实施本披露实施例,可获得以下有益效果:
(1)、本披露中设置多种类、多个处理器,保证神经网络处理装置的灵活性、高效性以及可扩展性。即可以高效完成朴素的神经网络算法,通过多处理器的协作,也可以完成复杂任务如目标识别(此处的任务可以替换成任意场景)。
(2)、通过将不同特点的计算任务划分给不同的处理器,可以在让神经网络处理器发挥出其最大效率的同时,保证装置的可扩展性、兼容性以及保证计算精度,和计算效率。
(3)、针对目标任务的训练过程,可以在正向采用神经网络加速器,反向计算采用GPU,这样既保证了本系统的灵活性和完备性(系统中的CPU和GPU可以进行任意种类的计算),也保证了运算速度(使用神经网络加速器作为正向加速器)。
本披露提供的互连电路的数据处理装置,上述互联电路的数据处理装置可以连接多个如图2A所示的计算装置,当然在实际应用中,其也可以连接如图1所示、如图1A所示以及如图6A所示的装置,在实际应用中,如果神经网络领域的处理器或计算装置具有多个时,也可以通过上述互连电路的数据处理装置,例如应用到连接基于多处理器协同的用于神经网络算法的推理和训练的运算系统的多个处理器之间的连接,又如应用到如图32所示的神经网络的处理系统的多个计算装置的连接,用于具有一个或多个事务数据源、以及一个或多个事务数据目的地的互连电路中,并作为所述互连电路的汇聚节点,图91示意性地表示出了包括事务数据源和事务数据目的地以及数据处理装置10、11的集成电路2。应该理解,本披露的实施例可用于多事务数据源和目的的多路互连中的任何位置,并且互连拓扑结构将比图91中示出的复杂得多。其中,如图91中事务数据源或事务数据目的地4、5、6、7可以是神经网络芯片(此时所述装置可为片间数据路由装置)、如本披露所述的各种计算装置(如图1、图2A或如图6A所示的计算装置)或是运算单元(此时所述装置为片上数据路由装置)。图91示例的互连电路包括两个数据处理装置10、11,这两个数据处理装置直接相连,可相互发送事务数据,互为对方的上、下游节点,其中数据处理装置10与既是事务数据源也是事务数据目的地的4、6相连,而数据处理装置11与既是事务数据源也是事务数据目的地的5、7相连。
需要说明的是,一个数据处理装置的上、下游可以是数据源或目的地,也可以是另一个数据处理装置,图91仅显示了两个数据处理装置和4个数据源/目的,在实际应用中可被扩展至n个数据处理装置和m个数据源/目的,并且还可扩展至任意的n对n拓扑,本披露不做限定。
又如图91所示,事务数据节点4、6相互通信时,均只需经过作为会聚节点的数据处理装置10,由其转发数据,5、7之间的相互传输数据也需要由数据处理装置11转发,而事务数据节点4、6中任意一个节点向5、7节点中任意一个节点发送数据时,均需首先发给数据处理装置10,在数据处理装置10内部建立传输通路,由其转发给数据处理装置11,然后再转发给目的节点5或7。
本披露提供的互连电路的数据处理装置,具备:缓冲存储器,用于临时存储经由所述装置的事务数据,优选包括多个静态RAM存储电路,每个静态RAM存储电路包括多个存储体;缓冲存储分配器电路,用于为进入所述装置的事务数据分配临时存储的具体位置,以达到流量控制的目的;路由选择电路,用于执行在进入所述装置的事务数据根据其目的地选择输出的数据通路;仲裁电路,用于执行在通过所述装置的多个数据传送请求之间的仲裁操作,使多个竞争同一传输通路的多个数据传输按照预设的仲裁方法依次获得通路的占用权;多路选择器电路,连接多个事务数据源和事务数据目的地,用于中转互连电路中的数据传输。其中,图92即为所述装置的微体系结构,其中,该装置包括以下三个部件:缓冲存储、多路选择电路和仲裁电路。可选地,还可包括其他部分,例如路由选择电路、缓冲存储分配器电路、 多个静态RAM存储电路等。图92仅为本披露的一种具体实现方式,而实际不应局限于此,比如缓冲存储不一定存在于每个输入处理模块,可以是多个输入处理模块共享一个缓冲存储,也可以是每个输入处理模块中有n个缓冲存储。因此该微体系结构可被扩展成任意个缓冲存储。而仲裁电路和多路选择电路可各有一个即可。
本披露的数据处理装置有多个输入输出端,其中每个输入端对应一个事务数据源,也可以是事务数据在互连电路中由源到目的传输过程中途径该数据处理装置的上游节点,且每个输入端包含多个输入端口、输出端口、至少两个复用器、和至少两个缓冲存储器。而每个输出端对应一个事务数据目的地,也可以事务数据传输的下游节点。上游节点在一个实施例中可同时作为事务数据的下游节点,即与所述数据处理装置连接的所有节点均可与该装置采用全双工数据传输。其中,可选地所述输入端可设计为输入处理模块。
到达数据处理装置的任意一个事务数据仅与一个数据输入端相关联,当事务数据到达时,将被缓冲存储分配器电路根据该输入端的数据缓冲存储装置的状态,为该事务数据分配一个存储位置,临时存放数据,同时也将所有到达该输入端的数据按照先后顺序形成一个或多个等待队列,等待分配相应的数据通路。
每个输入端相关联的存储部分中,所有事务数据根据到达的先后顺序形成一个队列,所述路由选择电路会在每个时钟周期对每个队首的事务数据进行路由选择,确定一个输出端,该输出端的标号将临时存储在所对应存储队列的相关端口标识寄存器中,标识该存储队列的数据均从该端输出。当存储队列中原有的事务数据全部发送完成后,端口标识寄存器即被清空,直到新的事务数据到达后被更新。
所述仲裁电路在每个周期检查所有通道的传输情况和处理各个存储位置的数据传输请求,以根据预设的顺序控制各输入端处事务数据的传输。所述仲裁电路决定所述装置中n个缓冲存储中的待发数据的输出先后顺序,即在某个时刻,缓冲存储中哪些数据允许被发送至输出端。
所述多路选择器电路,将所有的输入端的存储部分与所有的输出端相连,当其中的一个或多个存储部分即缓冲存储队列中的事务数据获得通道占用权时,多路选择器电路将在这些存储队列与其所请求的输出端间建立传输通道,使事务数据得以从所处数据处理装置传输至互连电路的下游节点中。
作为本披露的互连电路的数据处理装置的一个实施例,图92更详细且示意性地示出了数据处理装置10。该数据处理装置包含三个输入端11、12、13和三个输出端1050、1100、1150,三个输入端各包含输入端口51、52、53、输出端口54、55、56、两个复用器30、35、40、45、50、60和两个缓冲存储22、24、26、28、30、32。其中,复用器30、40、50分别将由各自输入端口到达数据处理装置的事务数据根据缓冲存储的当前状态存储到分配的存储部分中,其分配过程由与复用器相关联的缓冲存储分配器电路23、25、27分别对复用器进行控制。如缓冲存储分配器电路23根据缓冲存储22、24的存储状态为当前到达数据处理装置的事务数据分配存储位置,若缓冲存储22为空则将到达数据存至其中,并将标识该存储器中数据目的地的寄存器置为该事务数据的目的地;若缓冲存储22不为空则查询其数据目的地寄存器,若与到达数据的相同则将该数据存至此,若不同则用同样的方式对缓冲存储24进行操作。
又如图92所所示,路由选择电路41、42、43分别与复用器35、45、60以及多个缓冲存储器22、24、26、28、30、32相关联,为每个缓冲存储的队首数据分配一个输出端(若缓冲队列中没有数据则不分配),并将各个缓冲队列中事务数据请求传输的输出端标识写入到相应输出端标识寄存器中。仲裁电路36与三个输入端以及路由选择电路相关联,在每个周期会对三个输入端处的缓冲存储进行仲裁,决定哪个缓冲存储队列具有优先传输权,如缓冲存储22、24中均为非空,则仲裁电路36按照预设的规则决定其中一个缓冲存储可以优先传输,并将该缓冲存储标号写入优先传输标识寄存器内,若只有一个缓冲存储中有数据则其为优先传输。类似的,缓冲存储26、28和缓冲存储30、32也采用同样的方式仲裁出优先传输的缓冲存储部分。然后,仲裁电路检查各个优先传输的缓冲存储相关联的输出端标识寄存器, 并同时检查输出端105、110、115的状态,若缓冲存储中待传输的事务数据请求的各输出端标号不冲突,且所有被请求的端均空闲,则仲裁电路允许所有的事务数据传输;若部分输出端被其他缓冲存储的事务数据所占用,则仲裁电路将请求该端的事务数据延后发送;若多个事务数据请求同一个输出端,则仲裁电路采用预设的仲裁方式使这些事务数据分不同的时钟周期先后发送。
又如图92所示,多路选择器电路38与复用器35、45、55以及输出端105、110、115相连。当仲裁电路36为部分缓冲存储队列分配输出端占用权后,各存储队列中的事务数据由复用器途径多路选择器电路38传输至相应的输出端上,进而传输到互联电路的下游节点中。
此外,本披露还提供一种互连电路的数据处理方法,如图93所示,使用上述的互连电路的数据处理装置进行数据处理,包括如下步骤:
S1,多路选择器模块接收新的事务数据;
S2,缓冲存储分配器模块为事务数据分配临时存储位置;
S3,路由选择模块为事务数据选择输出的数据通路;
S4,仲裁模块根据事务数据的多个数据传送请求执行仲裁操作,使竞争同一传输通路的多个事务数据的传输按照预设的仲裁方法依次获得数据通路的占用权;
S5,多路选择器模块为获得数据通路的占用权的事务数据分配传输通路,并将事务数据传如互联电路的下游节点。
其中,所述步骤S4进一步包括:
步骤41,仲裁电路按照轮询的方式在各周期分别使不同的缓冲队列获得所述优先传输权,或者,在一缓冲队列全部传输完成后再让另一缓冲队列获得所述优先传输权。
所述步骤4还包括:
步骤42,仲裁电路判断获得所述优先传输权的事务数据所请求的输出端是否被占用,若是,则等待下一个周期的仲裁处理,若否,则仲裁电路根据所述事务数据的传输请求,检查是否存在多个事务数据请求争用同一输出端,若是,则仲裁电路使竞争同一传输通路的多个事务数据依次获得所述出通路占用权,若否,则执行上述步骤5。
图94是作为本披露的一个实施例,示意性地示出事务数据从到达数据处理装置到获得传输通道占用权并输出至下游节点的流程图。如图94,其中,本披露中步骤64、66、68、78以及80是必须的,其他剩余步骤应为本披露中的可选步骤。具体的,在步骤62处,输入端接收新的事务数据。在步骤64处,缓冲存储分配器电路基于新到达的事务数据的目的地为其分配缓冲存储。在步骤66处,路由选择电路为步骤64存储进缓冲队列的队首数据选择输出端并保存在相应寄存器中。在步骤68处,仲裁电路分别对每个输入端对应的缓冲存储仲裁出获得优先传输权的缓冲队列。在步骤70处,仲裁电路判断获得优先传输前的事务数据所请求的输出端是否被其他存储部分的数据传输所占用,若是则进入步骤72,等待下一个周期的仲裁处理,若没被占用则进入步骤74。在步骤74处,仲裁电路根据所有的事务数据传输请求,检查是否存在多个数据传输请求争用同一输出端的情况,若存在则进入步骤76,通过仲裁电路决定哪一个传输请求获得通道占用权,并在步骤78为获得通道占用权的数据分配传输通路,而未获得占用权的则返回步骤74。对于不存在输出端争用的数据则直接进入步骤78。在步骤78处,多路选择器电路为获得输出通路占用权的事务数据建立由缓冲存储到输出端的数据通路,并在步骤80处将事务数据传入互连电路的下游节点。
采用本披露实施例,能够将该装置作为一个数据的会聚节点,支持一个或多个事务数据源和一个或多个事务数据目的地之间的数据传输。其主要功能在于该装置(会聚节点)所连接的多个节点同时发出密集的数据传输请求时,采用合理的仲裁逻辑分配总线的占用权。
本披露可用于众多通用或专用的计算系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶合、可编程的消费电子设 备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
需要说明的是,本披露提供的数据处理相关实施例,可应用到上述提供的方法实施例中,用以实现源节点和目的节点之间的数据传输。
通过实施本披露实施例,可获得以下有益效果:本披露提出的数据处理装置可作为一个数据的会聚节点,支持一个或多个事务数据源和一个或多个事务数据目的地之间的数据传输。其主要功能在于该装置(会聚节点)所连接的多个节点同时发出密集的数据传输请求时,采用合理的仲裁逻辑分配总线的占用权。
如图95所示,是本披露非线性函数的运算装置结构图。本装置主要针对定点数据进行处理,本装置主要包括三个部分:第一部分、第二部分、第三部分。上述非线性函数运算装置可以添加在如图1、图1A以及图6A所示的运算单元内,当然在实际应用中,也可以添加到神经网络处理芯片的运算单元内,对于运算单元包含非线性函数运算时,均可以将该非线性函数运算装置加载在芯片或处理器内运算单元内,该非线性函数运算装置主要针对定点数据的处理。
其中,第一部分用于定义域变换,由定义域转换部10来实现,定义域转换部10包括乘法器1和加法器2,用于将输入的自变量转换成查表范围内的对应值;第二部分是查表,由查表部20来实现,查表部20包括斜率数组存储单元3,截距数组存储单元4,索引生成单元5,索引单元6,查表部20用于根据由第一部分输入的自变量的值,查找到对应的分段线性拟合的斜率和截距;第三部分是线性拟合,由线性拟合部30来实现,线性拟合部30包括乘法器7和加法器8,用于根据第二部分查表得到的斜率和截距通过线性拟合的方法得到最后结果。
乘法器1,用于输入定义域的伸缩。
加法器2,用于输入定义域的偏移。
斜率数组存储单元3,用于存储分段线性拟合的斜率数据。
截距数组存储单元4,用于存储分段线性拟合的截距数据。
索引生成单元5,用于根据输入值计算出查表的索引值。
索引单元6,用于根据索引值输出对应的斜率和截距。
乘法器7,用于计算k*x。
加法器8,用于计算k*x+b。
非线性函数的运算,可分如下情况进行:
(1)定义域需要转换,并且分段线性拟合的输入定义域是第一部分的输入数据。
(2)定义域需要转换,并且分段线性拟合的输入定义域是第一部分的输出数据。
(3)不需要对定义域做变换。
(4)定义域需要转变,线性拟合可以选择定义域转换之前或者之后的定义域的值。
(5)可以选择是否进行定义域转换,线性拟合可以选择定义域转换之前或者之后的定义域的值。
如图96所示,是本披露的定义域转换部件的内部结构。定义域转换部件的结构如下:
如图所示,定义域转换部10是定义域转换的部件,有三个输入x,i,j,x是非线性函数的自变量,i和j是和非线性函数的定义域范围相关的两个常数,new_x是变换定义域后的输出结果。上述部件实现的运算是:new_x=x*i+j,做定义域变换的目的是为了便于接下来的查表操作。
对于不需要定义域做变换的请情况,即new_x=x*i+j中的i=1,j=0,此种方式无需对输入变量进行变换,直接作为乘法器7的kx的输入变量即可。
如图97所示,是本披露的查表部件的内部结构图。查表部件结构如下:
如图所示,查表部20的输入是非线性函数的自变量,或者将非线性函数的第一自变量经过定义域转变后的第二自变量。
斜率数组存储单元和截距数组存储单元,里面分别存储了非线性函数分段线性拟合的直线斜率(即K)和截距(即b),在开始计算之前,斜率数组存储单元和截距数组存储单元都应该已经存储了斜率和截距的有效数据。
上述斜率和截距的有效数据可以通过对非线性函数的最小二乘法进行线性拟合的方式来实现。当然在本披露具体实施方式中还可以采用其他的方式来获取上述斜率和截距的有效数据。
索引生成单元根据输入x的值,计算出索引值。索引单元根据索引值从斜率数组存储单元和截距数组存储单元查询出该索引值对应的斜率和截距,输出对应的斜率和截距。
如图98所示,是本披露的线性拟合部件的内部结构图。线性拟合部件结构如下:
如图所示,线性拟合部30这个模块有三个输入,x表示自变量,可能是转换后的也可能是没转换的(即该X可以为非线性函数的第一自变量或将第一自变量通过该定义域转换以后的第二自变量),k和b分别是查表得到的截距和斜率,输出是最终的结果f(x),线性拟合部30实现的运算是:f(x)=k*x+b。
如图99所示,是本披露的非线性函数的运算的第一实施例。
在本实施例中,查表部20的输入是自变量x,查找部件20根据x的值找到对应的斜率k和截距b,并将k和b输出,在乘法器7中计算k*x,并将结果和b输出,在加法器8中计算k*x+b,计算得到最终的结果。
如图100所示,是本披露的非线性函数的运算的第二实施例。
在本实施例中,乘法器1对输入自变量x进行缩放,加法器2对x进行偏移,查表部20的输入是加法器2的输出,查找部件20根据加法器2的输出值找到对应的斜率k和截距b,并将k和b输出,在乘法器7中计算k*new_x,并将结果和b输出,在加法器8中计算k*new_x+b,计算得到最终的结果。
如图101所示,是本披露的非线性函数的运算的第三实施例。
在本实施例中,乘法器1对输入自变量x进行缩放,加法器2对x的进行偏移,查表部20的输入是加法器2的输出,查找部件20根据加法器2的输出值找到对应的斜率k和截距b,并将k和b输出,在乘法器7中计算k*x,并将结果和b输出,在加法器8中计算k*x+b,计算得到最终的结果。
如图102所示,是本披露的非线性函数的运算的第四实施例。
在本实施例中,乘法器1对输入自变量x进行缩放,加法器2对自变量x进行偏移,查表部20的输入是加法器2的输出,查找部件20根据加法器2的输出值找到对应的斜率k和截距b,并将k和b输出,在乘法器7中计算k*x或者k*new_x,并将结果和b输出,在加法器8中计算k*x+b或者k*new_x+b,计算得到最终的结果。
在本实施例中,设置自变量选择器(MUX)来选择乘法器7进行运算所需的自变量为输入的自变量x或是经过加法器2处理后输出的自变量new_x。具体的,如果自变量选择器闭合,即乘法器7中的x的取值可以为将非线性函数的第一自变量经过定义域转换后的第二自变量;如自变量选择器断开,即乘法器7中的x的取值可以为非线性函数的第一自变量。
如图103所示,是本披露的非线性函数的运算的第五实施例。
在本实施例中,乘法器1对输入自变量x进行缩放,加法器2对x进行偏移,查表部20的输入可以选择原始输入x或者经过定义域转换的new_x,查找部20根据输入输出值找到对应的斜率k和截距b,并将k和b输出,在乘法器7中计算k*x或者k*new_x,并将结果和b输出,在加法器8中计算k*x+b或者k*new_x+b,计算得到最终的结果。
在本实施例中,设置自变量选择器(MUX)来选择查表部20的输入是输入的自变量x或是经过加法器2处理后输出的自变量new_x,并设置自变量选择器(MUX)来选择乘法器7进行运算所需的自变量为输入的自变量x或是经过加法器2处理后输出的自变量new_x。
下面通过一具体的例子来进一步说明本案的功效。
其定义域为:(-∞,+∞),值域为:(-1,1)。这个函数也被称为Sigmoid函数。
由如上所述,可知本披露在计算上面非线性函数,所需要的计算步骤包括查表、乘法、加法。
在FPU中需要的运算步骤是:
1、取反:x=-x。
2、计算log
2x
3、计算log
2e
4、除法运算:第2步的结果除以第3步的结果。
5、1加上第4步的结果。
6、1除以第5步的结果。
参见Sigmoid函数的曲线,对于f(-7.75)=0.00043,f(7.75)=0.99957。
则插值范围可以设定为[-7.75,7.75],因为f(x)在这个区间外的值基本接近0和1,设这个区间为[-a,a],即a=7.75。
假设非线性函数装置总共可以存储64组k和b,这个变量被定义为N。在实际应用中,为了计算的准确性,也可以存储128组K和b,对于函数计算来说,K和b的取值越多,其计算的准确率越高。
根据a和N可以得到插值区间的划分:
线段1:(-∞,7)
线段2-线段63:将(-7.75,7.75等比例划分为62个区间,也就是x每隔0.25划分为一段(7.75*2/62=0.25)。
线段64:(7.75,+∞)。
得到64组线段斜率和截距的方法。
根据x分好的64段区间,分别采用最小二乘法进行线性拟合得到64组K和b。
具体的,对于第0条线:k:3.56478084049e-05,b:0.000464867209246;对于第63条线:k:0.000380432718501 b:0.996623118445。由于K和b对应的值较多,这里以第0条线以及第63条线为例。
也就是我们采用64条直线分段去拟合f(x)。
f(x)采用64条直线表示之后可以认为是一个分段函数。
得到64组k和b之后,在使用运算装置之前,需要将k和b的值存储到运算装置的寄存器中,即将64个k值以及对应的索引值的映射关系存在斜率数组存储单元内,将64个b值以及对应的索引值的映射关系存在截距数组存储单元内。
上面的工作做完之后,运算装置就可以进行f(x)的近似计算,对此此计算,无需进行定义域的转换,即x=new x。
运算装置接收一个输入x,假设x是一个32位定点数,32位定点的格式为:
1符号位 | 2-16整数位 | 17-32小数位 |
因为查表部件查找的范围是[-7.75,7.75],对应x的位数是符号位1和14-18位,查表部件根据这几位的值确定index。
符号位1 | 14-18位 | Index |
1 | 00000 | 0 |
1 | 00001 | 1 |
… | … | … |
1 | 11111 | 31 |
0 | 00000 | 32 |
0 | 00001 | 33 |
0 | 00010 | 34 |
… | … | … |
0 | 11111 | 63 |
具体地,假设输入的x是-8,则x的定点二进制表示为:1111 1111 1111 1000 0000 0000 0000 0000。符号位是1,14-18位为00000,通过查表可得x为-8时的index为0。因此可以得到k为3.56478084049e-05,b为0.00046。最后装置的乘法器和加法器进行k*x+b的运算得到f(x)的值为:3.56478084049e-05*8+0.00046=0.0001748。
由以上的运算可以看出本披露的优势:
(1)加快了计算过程,对于本披露的计算方法来说,其需要经过索引值确定、查表获取k、b,执行乘法运算以及加法运算,其计算过程比现有的计算过程简单,并且计算量也会小很多。
(2)避免了复杂的硬件设计,例如log
2x的运算部件,降低了芯片面积和功耗。
本披露提供一种非线性函数运算装置及方法,该装置包括控制器,查表部和线性拟合部;上述非线性函数运算装置可以添加在如图1、图1A以及图6A所示的运算单元内,当然在实际应用中,也可以添加到神经网络处理芯片的运算单元内,对于运算单元包含非线性函数运算时,均可以将该非线性函数运算装置加载在芯片或处理器内运算单元内,该非线性函数运算装置主要针对浮点数据的处理。
控制器用于控制查表部和线性拟合部的操作,数据传输等行为。查表部为存储器,用于存储多个线性函数的斜率值和截距值,并根据浮点数获取相应的斜率值k和截距值b;线性拟合部根据查表得到的斜率值k和截距值b,得到相应的线性函数y=k×x+b,并将浮点数代入线性函数,得到线性函数的函数值,以作为浮点数在非线性函数中的函数值。本披露将非线性函数拟合为多个线性函数,只需针对不同的自变量选择相应的线性函数,故在运算时只需要进行简单的加法和乘法运算,因此简化硬件设计,并提高运算速度,同时降低芯片功耗和面积。
本披露提供一种非线性函数运算装置,用于根据一输入的浮点数计算非线性函数的函数值,装置包括:
控制器,用于对查表部,线性拟合部进行控制。控制器可以是本装置专有的模块;当本装置作为其他装置的一部分(即作为子模块)的时候,控制器也可以是其他装置的控制器的一部分,即通过父模块的控制器对查表部,线性拟合部进行控制。
查表部,其中包含斜率截距存储部,以及选择部。斜率截距存储部中,存储有多个线性函数的斜率值和截距值,其中,多个线性函数由非线性函数分段线性拟合而得到。选择部根据浮点数获取相应的斜 率值k和截距值b的存储位置,以此获得相应的斜率和截距;由于通过一组斜率值和截距值可以确定一个线性函数,因此,斜率值和截距值在存储时要有对应关系;
线性拟合部,用于根据从查表部输出的斜率,截距位置,从斜率截距存储部中取得的斜率值k和截距值b,用于计算线性函数y=k×x+b,其中x为装置的输入浮点数,即自变量,y为装置的输出。线性拟合部中包含乘法器和加法器,用于计算上述线性函数。本披露的原理是,将复杂的非线性函数拟合为多段线性函数,应该可知,分段的区间越小,线性函数与非线性函数的函数值越接近,亦即精度越高。确定输入的浮点数落入分段中的哪一段,由此确定出此段对应的线性函数,并将浮点数代入线性函数中,得到相应的函数值。
根据本披露的一种实施方式,查表部包括斜率截距存储部和选择部,其中,斜率截距存储部用于存储多个线性函数所对应的斜率值和截距值,选择部用于根据浮点数,计算出应该选择的斜率k和截距b在斜率截距存储部中所在的位置。选择部中包含配置部,用于配置选择过程中所需要的参数,包括斜率,截距,以及其他参数。配置部中还包括一个参数存储部,用于存放除斜率,截距之外的其他参数。
配置部所配置的其他参数包括:
N:区间数,用于将非线性函数的自变量分段为N个区间,在每个区间内,将非线性函数拟合为一个线性函数,分别得到N个线性函数,并获取N个线性函数的斜率值和截距值,其中,将N个线性函数的斜率值和截距值存储于斜率截距存储部,每组斜率值和截距值一一对应于N个区间中一个区间的序号index,并将序号index存储于选择部,其中,序号index的取值范围为[0,N-1]。因此,选择部根据浮点数落入哪个区间,获取相应的区间的序号index,并根据序号index在斜率截距存储部得到相应的斜率值k和截距值b。
r:自变量的取值范围。,当参数配置为r时,非线性函数自变量取值范围为(-r,r),并将边界值r的指数部分作为一偏移值bias输入至选择部,所述选择部根据浮点数及偏移值bias,确定序号index,并根据所述序号index得到对应的斜率值和截距值。需要说明的是,线性函数不可能覆盖所有非线性函数的取值,故可设定非线性函数自变量取值范围为(-r,r),以是的在(-r,r)中进行线性拟合。在设定好后,输入的浮点数落入(-r,r)中,这样只需根据浮点数所在区间就可得到相应的序号index,
bias:偏移值。用于处理当输入不落入自变量取值范围的情况。,具体包括:
在选择部进行选择之前,配置部将从外部传入数据存储到配置部中的参数存储部,以及斜率截距存储部。此数据的来源可以是寄存器,片上存储器,片外存储器等,此数据传输由控制器进行控制。
选择部的具体执行过程如下,其中,所有数据,如bias,exp存放选择部内部的存储单元中(如:寄存器),计算操作通过选择部中的运算单元进行。
当bias-exp<0时,在所述浮点数为正数情况下,index取N-1,在所述浮点数为负数情况下序号index取0,其中,exp为所述浮点数的指数部分;
当0≤bias-exp<W-1时,
index=2
W-1+2
W-1-m-1+frac[F-1:F-(W-1-m-1)+1]
其中,frac为浮点数的尾数部分,W为序号index的位宽,并且,W=log
2N,m=bias–exp,F为所述浮点数的尾数的位宽,然后将index的每一位和所述浮点数的符号位进行异或运算;
当bias-exp≥W-1,index最高位为浮点数的符号位取反,低W-1位均为浮点数的符号位。
根据本披露的一种实施方式,线性拟合部包括乘法器和加法器,其中,乘法器用于将查表部输出的 斜率值k与浮点数相乘,得到相乘结果,加法器用于将乘法器得到相乘结果与查表部输出的截距值b相加,得到最后的函数值y。
本披露提供还一种非线性函数运算方法,用于根据一输入的浮点数计算非线性函数的函数值,方法包括:
S0,控制器控制配置部对装置进行配置,包括前述的各种参数,不同线性函数的斜率和截距。
S1,控制器控制选择部根据输入的浮点数,计算出对应的序号index,用于选择出相应的斜率值k和截距值b,其中,这些斜率和截距为预先准备好的,根据需要拟合的非线性函数进行分段插值计算出来的,并预先存储在与本装置相连接的外部存储器上;
S2,根据S1得到的斜率值k和截距值b,控制器控制线性拟合部,进行线性函数y=k×x+b的计算。
上述步骤具体而言:
S0中配置部的配置方法,具体还包括:
配置部通过配置参数N,将所述非线性函数的自变量分段为N个区间,在每个区间内,选择部根据所述配置的参数bias,N,计算出输入浮点数对应的区间序号,根据此序号,找到斜率截距存储部中相应的斜率和截距,线性拟合部将斜率和输入浮点数相乘,其结果和截距相加,即得到最后的输出结果(非线性函数的拟合结果)。本装置将非线性函数拟合为一个线性函数,分别得到N个线性函数,并获取所述N个线性函数的斜率值和截距值,其中,每组斜率值和截距值一一对应于N个区间中一个区间的序号index,序号index的取值范围为[0,N-1]。
步骤S0还包括,配置部配置参数r,设定非线性函数自变量取值范围为(-r,r),并将边界值r的指数部分作为一偏移值bias;此步骤还包括,根据浮点数及所述偏移值bias,确定序号index,并根据序号index得到对应的斜率值和截距值。
上述步骤S1中,选择部根据浮点数及所述配置部中的参数偏移值bias,确定序号index,包括:
当bias-exp<0时,在输入浮点数为正数情况下,index取N-1,在所述浮点数为负数情况下序号index取0,其中,exp为所述浮点数的指数部分;
当0≤bias-exp<W-1时,
index=2
W-1+2
W-1-m-1+frac[F-1:F-(W-1-m-1)+1]
其中,frac为所述浮点数的尾数部分,W为序号index的位宽,并且,W=log
2N,m=bias–exp,F为浮点数的尾数的位宽,然后将index的每一位和所述浮点数的符号位进行异或运算;
当bias-exp≥W-1,index最高位为浮点数的符号位取反,低W-1位均为浮点数的符号位。
为使本披露的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本披露进一步详细说明。
图103A是本披露实施例提供的非线性函数运算装置的结构图,如图103A所示,装置包括查表部5和线性拟合部6,其中,查表部5用于根据由输入的自变量的值x,以及外部配置进来的偏移量bias,查找到对应的分段线性拟合的斜率和截距。
查表部5包括序号选择部1和斜率截距存储部2,序号选择部1用于根据输入的自变量值x和配置的偏移量bias计算出index,斜率截距存储部2用于根据序号选择部1计算出的index,选出斜率及截距。
线性拟合部6用于根据查表部5得到的斜率和截距通过线性拟合的方法得到最后结果。线性拟合部6包括乘法器3和加法器4,其中,乘法器3用于计算k*x,加法器4用于计算k*x+b。
图103B是本披露实施例提供的非线性函数运算装置的内部结构图,如图103B所示,查表部5的输入值是非线性函数的自变量,以及偏移值。序号选择部1根据所述自变量x和偏移量计算出index。
斜率截距存储部2中,Table_k和Table_b里存储了非线性函数分段线性拟合的直线斜率和截距,Table_k和Table_b里的值是可以配置的,在开始计算之前,它们的值应该已完成配置。根据以上所述算出的index,可以选出要使用的斜率Table_k[index],和截距Table_b[index]。
图103C是本披露实施例中线性拟合部的内部结构图,如图103C所示,线性拟合部6有三个输入,x表示自变量,即外部输入需要进行非线性变换的值,k和b是查表得到的截距和斜率,输出是最终的结果f(x),线性拟合部6实现的运算是:f(x)=k*x+b。
图103D是本披露实施例的非线性函数运算的原理图,如图103D所示,查表部3的输入是自变量x,查找部件3根据x的值找到对应的斜率k和截距b,并将k和b输出,在乘法器4中计算k*x,并将结果和b输出,在加法器5中计算k1*x+b,计算得到最终的结果。
以下通过计算非线性函数1+e
-x,以进一步解释本披露,将非线性函数的自变量分段为N=64个区间,取值范围r设为7.75,即取值区间为(-7.75,7.75),通过线性拟合以上函数所得到的插值表为:
table_k=[0,0.00048656316525353121,0.00061973162484223741,0.00078928936655365655,0.0010051440297105911,0.0012798783909594086,0.0016294587358847128,0.0020741221116775564,0.0026394821537513336,0.0033578984220486922,0.0042701575375603202,0.0054275134806431417,0.0068941251757849761,0.0087499054356052815,0.011093746329263701,0.014046996903534316,0.017756918346970331,0.022399600632704755,0.028181459980468879,0.035337917880121604,0.044127182785956003,0.054816271160400852,0.067655703617413618,0.082839110694275894,0.10044501610076587,0.12036137423557895,0.14220006304664759,0.16521866898611015,0.18827848066541336,0.20987496057486665,0.22827132183028082,0.24173985504038351,0.24887167444405783,0.24887167444405978,0.24173985504038323,0.22827132183028037,0.20987496057486754,0.18827848066541422,0.16521866898610904,0.14220006304664773,0.1203613742355779,0.10044501610076662,0.082839110694276047,0.067655703617414242,0.054816271160399312,0.044127182785955642,0.035337917880122131,0.028181459980469011,0.022399600632704762,0.017756918346970005,0.014046996903534123,0.011093746329263798,0.0087499054356035919,0.0068941251757841807,0.0054275134806434523,0.0042701575375596592,0.0033578984220488948,0.0026394821537508726,0.002074122111678265,0.0016294587358859139,0.0012798783909593549,0.001005144029710878,0.00078928936655333173,0.00061973162484123137,0.00048656316525207165,0]
table_b=[0,0.0041993251816466815,0.0051986385576176901,0.0064299574345850303,0.0079452052890187242,0.009807238238936004,0.012091883136726765,0.01489024369806616,0.018311254971669941,0.022484429652995856,0.027562682295467392,0.033725030746198308,0.041178847029904868,0.050161149061534412,0.060938175678893231,0.073802158887859029,0.089063797665378613,0.10703847125951904,0.12802378192384653,0.15226575415464311,0.17991125218316206,0.21094542275377304,0.24511595347355658,0.28185147996324666,0.32019008490568668,0.35874483153772002,0.39574347031640295,0.42918193126900617,0.45711585573612518,0.47807264767380625,0.4915012059787659,0.49811232472098371,0.49994440545964863,0.50005559454035076,0.50188767527901634,0.50849879402123443,0.52192735232619281,0.54288414426387344,0.57081806873099528,0.60425652968359678,0.6412551684622817,0.67980991509431143,0.71814852003675334,0.75488404652644192,0.78905457724623107,0.82008874781683905,0.84773424584535517,0.87197621807615311,0.8929615287404804,0.9109362023346228,0.92619784111214154,0.93906182432110619,0.94983885093847398,0.95882115297009929,0.96627496925379974,0.97243731770453612, 0.97751557034700309,0.98168874502833281,0.98510975630192921,0.98790811686326541,0.99019276176106386,0.9920547947109799,0.99357004256541748,0.99480136144239018,0.99580067481836443,1]
令输入自变量x为16位浮点小数0.25,其指数exp为13,尾数frac为b’0000000000,bias为17,m为bias–exp=4,落入0≤bias-exp<w-1区间,可得index为
2
6-1+2
6-1-4-1+frac[16-1:16-(6-1-4-1)+1],即
2
5+2
0+0=33。
根据index从上述插值表中选出斜率k为k[33]=0.248871674444,截距b为b[33]=0.50005559454,k×x+b的值为0.562273513151,而根据函数采用线性拟合方式算出的结果为0.562176500886,误差为-9.7012265e-05。
综上所述,本披露通过采用线性拟合方式,避免了复杂运算,如对数计算,通过采用乘法,加法这类速度更快的运算操作,提高计算速度,同时,避免了复杂的硬件设计,例如log
2x的运算部件,降低了芯片面积和功耗。
根据本发明实施例的一方面,提供一种获取函数值的装置,可以将复杂的函数按照数据范围,分段拟合为简单的线性函数。求函数值时,查找模块加载存储模块中的插值表,根据自变量值的范围,查找出相应的斜率和截距,并做基础运算(也即加法和乘法运算)。根据自变量落在第几个大区间内,循环进行上述过程,最终得到插值结果,即近似得到函数值。因此该披露简化了硬件设计,提高了运算速度,并且降低了芯片的面积功耗比。
上述获取函数值的装置可以添加在如图1、图1A以及图6A所示的运算单元内,当然在实际应用中,也可以添加到神经网络处理芯片的运算单元内,对于运算单元包含非线性函数运算时,均可以将获取函数值的装置加载在芯片或处理器内运算单元内,该获取函数值的装置主要针对浮点数据以及定点数据的处理。
图104A为根据本披露一实施例的用于线性分段插值的装置的整体结构示例框图。如图104A所示,该装置包括I/O模块A、查找模块C、存储模块B和计算模块D。所有模块均可通过硬件电路实现,如图36所示。
I/O模块A,即输入输出模块,该模块用于输入数据(自变量)x
1并将其传递给查找模块C,以及用于从计算模块D中接收最终计算结果y并将其输出。这里提一下,x
1可以直接是原始数据,也可以是原始数据x
0经过预处理后的数据,为了叙述简明,不提及预处理过程。
存储模块B中,存放计算过程需要的插值函数f
1,f
2,...,f
N,f
p对应第p段插值函数。数据范围预先被分为N个大区间A
1,A
2,...,A
N,大区间A
p的左、右端点分别用inf A
p、sup A
p表示。每个大区间A
p又分为M个小区间
f
p的定义如下:
查找模块C中,数据范围预先被分为N个大区间A
1,A
2,...,A
N,首先得到i,使得自变量x
1落在A
i中。之后,依次加载(load)存储模块中的第p段插值表,1≤p≤i-1,对用于第p次查找的自变量x
p,查找相应的斜率
和截距
并与自变量x
p一起传入计算模块D中。而后该模块接收从计算模块D得到的计算结果x
p+1当作自变量,做第p+1次的查找。最后,load存储模块中的第i段插值表,做最后一次查找。
计算模块D中,接收从查找模块中得到的自变量x
p、斜率
和截距
若1≤p≤i-1,将计算结果x
p+1传递给查找模块C做下一次的查找;若p=i,将计算结果x
i+1传递给I/O模块当作最终输出结果y,即y=x
i+1。
根据本披露实施例的又一方面,提供一种进行函数值获取的方法流程图。图104B为根据本披露一实施例的进行分段插值流程图。该方法可应用于以上所述的装置。其中,具体数据传输流程如图104C所示。
S1,I/O模块A将数据x
1(自变量)输入,并将其传递给查找模块C,转步骤S2;
S2,查找模块C中,首先得到i,使得自变量x
1落在大区间A
i中。初始化一个循环标志变量p,p=0。转步骤S3;
S4,计算模块D算出相应的插值函数值:
循环标志变量p=p+1,判断p的值——如果p<i,转步骤S5;否则,转步骤S6;
S5,将计算结果x
p+1传递给查找模块C(此时该结果作为自变量参与之后的查找和计算),转步骤S3;
S6,将计算结果x
i+1传递给I/O模块A,转步骤S7;
S7,I/O模块A输出结果y=x
i+1。
当然,上述方法中插值函数不仅限于线性函数,还可以是多项式进行插值,只要是将复杂的函数通过插值方式转化为简单运算的函数,包括但不限于线性函数和多项式函数。
以下列举具体的实施例进行说明:
实施例1
对函数F(x)=exp(x)在[0,18]上面进行线性分段插值:
首先,数据范围分为3个大区间(即N=3),A1=[0,10),A2=[10,15),A3=[15,18)。需要指出的是,这里并没有均匀地去分3个大区间。因为自变量值越大曲线的导函数也越大,或者说曲线越陡,为了保证近似的精细,在曲线陡峭的地方区间分小一点,而曲线平缓的地方区间没必要那么小。每个大区间再均匀地分为10个小区间:
例如
然后,给出插值函数f
1(x),f
2(x),f
3(x)的定义:
最后,对于给定的自变量x
1,按照图104B所示及上述的方法步骤依次进行。
实施例2
对应用于图像分类的神经网络,对激活函数F(x)=sigmoid(x)在[0,255](图像灰度范围)上面进行线性分段插值:
首先,数据范围分为8个大区间(即N=8),A1=[0,31),A2=[32,63),A3=[64,95),…,A8=[224,255]。需要指出的是,这里并没有均匀地去分8个大区间。因为自变量值越大曲线的导函数也越大,或者说曲线越陡,为了保证近似的精细,在曲线陡峭的地方区间分小一点,而曲线平缓的地方区间没必要那么小。每个大区间可以再均匀地分为32个或64个小区间(根据所需的精度来确定,还可以是其它数量的小区间)插值函数与实施例1类似,其中,斜率
和截距
的取值规则为:在区间
的左右端点上,f
p(x)的值与F(x)=sigmoid(x)的值相等。
最后,对于给定的自变量x
1,按照上述的方法步骤依次进行。
基于同一披露构思,本披露还提供一种专用的神经网络装置,利用分段插值在人工神经网络的前馈运算中,计算以神经元输入值和权重值的内积作为自变量的激活函数。
图104E为根据本披露一实施例的神经网络装置结构框图。所述神经网络装置100,利用分段插值计算以神经元输入值和权重值的内积作为自变量的激活函数值,包括:
存储器101,用于存储可执行指令;
处理器102,用于执行存储器中存储的可执行指令,以执行如下操作步骤:
一,输入数据作为自变量,转步骤二;
二,自变量的取值范围预先被分为N个大区间:A
1,A
2,...,A
N,每个大区间又均分为M个小区间,N和M为自然数,自变量落在大区间A
i中,得到i,初始化一个循环标志变量p,p=0,转步骤三;
三,根据存放在存储器的N段插值表,加载第p段插值表进行查找,根据自变量查找出函数插值表中对应的参数值,转步骤四;
四,根据参数值和自变量计算出相应的插值函数值,循环标志变量p=p+1,判断p的值——如果p<i,转步骤三;否则,转步骤五;
五,输出插值函数值。
所述处理器可以包括通用微处理器、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(ASIC))。处理器还可以包括用于缓存用途的板载存储器。优选的,采用专用的神经网络处理器。
处理器用于执行本实施例描述的流程的不同动作的单一处理单元(例如CPU或者GPU)或者多个处理单元。
对于执行的操作步骤来说,可参照图35所述的分段插值的方法流程图进行。其中,所述激活函数为双曲正切函数或者Sigmoid函数。
本实施例的装置也可以包括输入输出单元103,用以输入原始或者经预处理后的数据,并输出经插值运算后的函数值。
本披露提出一种用于自动校正访问存储装置数据的装置,上述存储装置具体可以为如图1或如图6A所示的算装置的存储介质,当然在实际应用中还可以为如图1F所示的计算装置的存储介质,当然存储装置还可以为如图2A所示的存储介质,该用于自动校正访问存储装置数据的装置还可以应用在神经网络领域的其他计算装置内,例如人工神经网络正向运算的装置或用于稀疏连接的人工神经网络计算装置内等等,该用于自动校正访问存储装置数据的装置包括:
存储装置模块,用于存储数据,其中所述存储装置模块包括用于存储数据的区域与用于存储监督位的区域;
编码器模块,用于获取数据,并根据所述数据生成对应的监督位;
解码器模块,用于当所述存储装置模块读取所述数据时,所述解码器模块根据所述监督位检验所述数据的正确性,当发现所述数据中存在错误数据时,发送错误信号,同时将所述错误数据进行校正,并将校正后的数据发送给读写单元,读写单元将校正后数据重新写回存储装置,以避免数据错误增加。
还包括读写单元模块,用于读写数据及读写与所述数据相对应的监督位。
所述编码器模块包括监督位生成模块与合并模块;其中所述监督位生成模块用于根据所述数据生成监督位;所述合并模块用于将所述数据与所述监督位按特定顺序合并到一起,并将合并的数据输出。
所述解码器模块包括校验子生成模块、数据解析模块、纠错码生成模块、数据纠错模块;其中所述校验子生成模块用于根据所述数据与所述监督位生成校验子,校验子用于生成纠错码;所述数据解析模块用于将所述数据与所述监督位分离,输出待校验数据;所述纠错码生成模块用于根据所述校验子生成纠错码与错误信息;所述数据纠错模块用于根据所述纠错码对所述待校验数据进行纠错。
本披露还提出一种用于自动校正访问存储装置数据的方法,包括:
步骤1,获取数据,并根据所述数据生成对应的监督位;
步骤2,当所述存储装置读取所述数据时,所述解码器根据所述监督位检验所述数据的正确性,当发现所述数据中存在错误数据时,发送错误信号,同时将所述错误数据进行校正,并将校正后的数据发送给读写单元,读写单元将校正后数据重新写回存储装置,以避免数据错误增加。
还包括读写数据及读写与所述数据相对应的监督位。
所述步骤1包括根据所述数据生成监督位;将所述数据与所述监督位按特定顺序合并到一起,并将合并的数据输出。
所述步骤2包括根据所述数据与所述监督位生成校验子,校验子用于生成纠错码;将所述数据与所述监督位分离,输出待校验数据;根据所述校验子生成纠错码与错误信息;根据所述纠错码对所述待校验数据进行纠错。
以下为本披露实施例,如下所示:
本披露提供一种访问数据中监督位生成的方法并且在出现无法纠正的错误时返回错误信号并进行校正后重新写回存储装置,当出现可校正的错误时,将校正后的数据重新写回存储装置,达到自动校正的目的。
本披露的具体技术如下:
在使用ECC算法解码的过程中,同时生成错误信号,标志着数据中错误的个数和错误是否可修复信号,当出现可校正的错误时,则将校正后的数据重新写回存储装置。
本披露的原理是:在ECC解码的过程中,利用纠错码去检查是否出现了不可校正的错误。如果出现了不可校正的错误,ECC解码模块则输出一个错误信号,当出现可校正的错误时,则将校正后的数据重新写回存储装置。
通过本披露提供的监督位生成方法,使得在解码的过程中的发生的不可校正的数据错误可以及时的表现出来,并且当出现可校正的错误时,将校正后的数据重新写回存储装置,实现自动校正数据,避免了数据错误的增加最后导致校正失败的情况。
如图104E为本披露的结构图,在写数据时,ECC编码器根据写数据生成监督位,并将数据和监督位一同发送给读写单元;读写单元将数据和监督位一起写入到存储装置。在读数据时,读写单元将数据和监督位一起从存储装置读出并且发送给ECC解码器,ECC解码器根据数据监督位判断有没有出现错误,如果错误可校正,将校正后的数据和错误信号输出,如果错误不可校正,输出一个不可校正的错误信号,当出现可校正的错误时,则将校正后的数据发送给ECC编码器,ECC编码器将校正后的数据重新编码后,由读写单元重新写回到存储装置。
如图105本披露中ECC编码器结构图和功能:
ECC编码器根据输入数据生成带监督位的输出数据,监督位生成模块根据输入数据生成监督位,合并模块将输入数据和监督按照特定顺序合并到一起,并将合并的数据输出。
ECC编码器子模块的功能:
1.监督位生成模块:根据输入数据生成监督位;
2.合并模块:合并模块将输入数据和监督位按特定顺序组合到一起。
如图105A本披露ECC编码流程图,步骤101,ECC编码器获得输入数据;步骤102,ECC编码器根据输入数据计算得到监督位;步骤103,ECC编码器将监督位和数据按照特定顺序组合;104,ECC编码器将组合后的数据和监督位输出到读写模块。
如图106,ECC解码器结构图和各个模块的功能:
ECC解码器根据输入的数据和监督位,对数据进行校正,各个模块的功能:
1.校验子生成模块:根据输入数据和监督位生成校验子,校验子用来生成纠错码。
2.数据解析模块:将输入的数据和监督位分离,输出待校验数据。
3.纠错码生成模块:根据校验子生成纠错码和错误信息。
4.数据纠错模块:根据纠错码对待校验数据进行纠正。
如图107,ECC解码流程,具体流程为:ECC解码器获得输入数据和监督位,ECC解码器根据数据和监督位生成校验子,同时ECC解码器根据数据和监督位生成待校验数据;ECC解码器根据校验子生成纠错码;ECC解码器根据纠错码校正待校验数据;ECC解码器输出错误信息和校正后的数据。
以8比特数据,检测2处随机错误,并校正一处错误为例,则由上面描述可知,随机错误p=2,校正错误数量q=1,ECC监督位m=2*p+q=5。
下面操作的符号说明:
^:异或操作
!:取反操作
|:或操作
&:与操作
<<:左移操作
编码:
在ECC编码器中,监督位生成模块根据输入数据d[8]生成5位的监督码c[5],生成规则如下:
c[0]=d[0]^d[1]^d[3]^d[4]^d[6];
c[1]=d[0]^d[2]^d[3]^d[5]^d[6];
c[2]=d[1]^d[2]^d[3]^d[7];
c[3]=d[4]^d[5]^d[6]^d[7];
c[4]=d[0]^d[1]^d[2]^d[4]^d[5]^d[7];
在ECC的合并模块中,合并模块将数据和监督位按照特定顺序组合到一起,按照上面的例子,组合之后的结果为:
c[0],c[1],d[0],[c2],d[1],d[2],d[3],c[7],d[4],d[5],d[6],d[7],[c4]
组合之后的结果会被存入到存储装置中,组合后的数据用e[13]表示。
解码:
校验子生成模块:校验子生成模块会根据13位带监督位的数据e[13]生成5位校验子s[5],规则如下:
s[0]=e[0]^e[2]^e[4]^e[6]^e[8]^e[10];
s[1]=e[1]^e[2]^e[5]^e[6]^e[9]^e[10];
s[2]=e[3]^e[4]^e[5]^e[6]^e[11]^0;
s[3]=e[7]^e[8]^e[9]^e[10]^e[11]^0;
s[4]=e[0]^e[1]^e[2]^e[3]^e[4]^e[5]^e[6]^e[7]^e[8]^e[9]^e[10]^e[11]^e[12];
数据解析模块按照ECC编码器合并模块的规则,将对应的待校正数据解析出来。
纠错码生成模块根据校验子生成错误信息和出错数据的位置。
出错位置为location=(!s[4])<<4+s[3:0];
不可校正的错误标志fatal=(|s[3:0])&!s[4];
对于数据出错标志error,如果错误位置是在待校验数据的位置则返回1,否则0;
数据纠错模块根据纠错码生成的出错位置对数据进行校正,即根据出错位置对相应的数据取反:
d[location]=!d[location];
到此解码结束,如果数据出错标志为1,则出现了可以校正的错误,ECC解码器将校正后的数据发送给ECC编码器,然后重新编码后写回到存储装置。
图108是本披露提供的运算装置的结构示意图,上述运算装置内的指令可以是本披露提供的任何指令或任何指令的任意组合,包括但不限于:向量指令、矩阵指令、非线性运算指令等等。如图108所示,装置包括指令模块10、数据模块20和运算模块30。指令模块10用于缓存指令,并向数据模块20及运算模块30提供指令。指令模块10中的指令控制数据模块20的数据流的方向,数据模块20的数据会影响指令模块10中对依赖关系的处理,同时,指令模块10中的指令控制运算模块30的具体运算,运算模块30的运算是否完成会控制指令模块10是否读取新的指令;数据模块20为运算模块30提供具体的运算数据,运算模块30会将运算结果送回数据模块20进行保存。
图109是本披露提供的装置的指令模块的示意图。如图109所示,指令模块10包括指令缓存单元11、指令处理单元12、依赖关系处理单元13和存储队列单元14。其中,指令处理单元12又分为三个部分:取指部分121、译码部分122和指令队列部分123。指令缓存单元11用于在指令执行过程中缓存该指令,当一条指令执行完之后,如果该指令同时也是指令缓存单元11中未被提交指令中最早的一条指令,该指令将被提交,一旦提交,该条指令进行的操作对装置状态的改变将无法撤销。取指部分121用于从指令缓存单元11中取出下一条将要执行的指令,并将该指令传给译码部分122;译码部分122用于对指令进行译码,并将译码后指令传给指令队列123;考虑到不同指令在包含的标量寄存器124上有可能存在依赖关系,设置指令队列123用于缓存译码后的指令,当依赖关系被满足之后发射指令。标量寄存器124,提供装置在运算过程中所需的标量寄存器。
依赖关系处理单元13用于处理当前指令与前一条指令可能存在的数据依赖关系,例如,在从数据模块20中访问数据时,前后指令可能会访问同一块存储空间中的数据,如果前一条指令未执行完毕, 就对该数据进行操作的话,会影响该数据的一致性,从而导致运算结果的正确性。因此,当前指令如果被依赖关系处理单元13检测到与之前的指令的数据存在依赖关系,该指令必须在存储队列单元14内等待至依赖关系被消除,其中,存储队列单元14是一个有序队列,与之前指令在数据上有依赖关系的指令被存储在该队列内直至依赖关系被消除。
图110是本披露中数据模块的结构示意图。如图3所示,数据模块20包括,数据I/O单元21、数据暂存单元22。优选的,还包括数据处理单元23。数据I/O单元21用于与内存进行交互,即能够直接从内存中读取数据或直接将数据写入内存中。数据暂存单元22可以通过各种不同存储器件(SRAM、eDRAM、DRAM、忆阻器、3D-DRAM或非易失存储等)实现。数据暂存单元22能够存储任意规模的运算数据,如不同长度的向量数据。数据I/O单元21根据指令将必要的运算数据读取出来,并暂存在数据暂存单元22上,由于采用高速暂存存储器,从而使得可以存储不同/相同长度的运算数据,同时,在运算过程中,数据暂存单元22将数据送入数据处理单元23,数据处理单元根据指令处理待运算数据,包括切分处理、循环处理等,而后提供至运算模块30。
具体地,当参与运算的两个运算数据长度均小于等于运算模块的运算规模时,数据暂存单元22将待运算数据输入至数据处理单元23,数据处理单元23根据指令得到待运算数据的规模不大于运算模块一次性可处理的数据规模,于是直接将该运算数据提供至运算模块30。举例来说,运算单元30是的运算规模是一次性处理两组向量的运算,每组向量包括4个元素,如(A1,A2,A3,A4)和(B1,B2,B3,B4)之间的运算是该运算单元30的运算规模;两个运算数据均是小于4个元素的向量,如(A1,A2,A3)和(B1,B2),此时,可直接将(A1,A2,A3)和(B1,B2)提供至运算模块30进行运算。
当参与运算的两个运算数据长度均大于运算模块的运算规模时,数据暂存单元22将待运算数据输入至数据处理单元23,数据处理单元23根据指令得到待运算数据的规模大于运算模块一次性可处理的数据规模,于是将每个运算数据进行拆分处理,拆分为多个长度均小于等于运算规模的子运算数据,并控制该子运算数据依次输送至运算模块进行运算。举例来说,运算单元30的运算规模是一次性可处理两组向量运算的运算规模,其中每组向量包括4个元素,如(A1,A2,A3,A4)和(B1,B2,B3,B4)之间的运算是该运算单元30的运算规模;两个运算数据均大于运算规模,如(A1,A2,A3,A4,A5)和(B1,B2,B3,B4,B5),此时,可将(A1,A2,A3,A4,A5)拆分为D1(A1,A2,A3,A4)和D2(A5),将(B1,B2,B3,B4,B5)拆分为d1(B1,B2,B3,B4)和d2(B5),然后分两次提供至运算单元30中,其中,第一次提供D1(A1,A2,A3,A4)和d1(B1,B2,B3,B4)进行运算,第二次提供D2(A5)和d2(B5)。上述例子是将大于运算规模的运算数据均拆分为2段,每次提供相应段的子运算数据。在两个运算数据的拆分的段数不一致时,例如,第一个运算数据拆分为3段,表示为D1、D2、D3,第二个运算数据拆分为2段,表示为d1和d2,则分3次向运算单元提供第一个运算数据D1、D2、D3,并且这3次需要循环提供第二个运算数据d1和d2,即第一次提供D1和d1,第二次提供D2和d2,第三次提供D3和d1,又比如,第一个运算数据拆分为5段,表示为D1、D2、D3、D4、D5,第二个运算数据拆分为3段,表示为d1、d2和d3,则分5次向运算单元提供运算数据,即第一次提供D1和d1,第二次提供D2和d2,第三次提供D3和d3,第四次提供D4和d1,第五次提供D5和d2。
当参与运算的两个运算数据中,一个运算数据长度大于运算模块的运算规模,另一个运算数据长度小于等于运算模块的运算规模时,将长度大于运算规模的运算数据进行拆分处理,拆分为多个长度均小于等于运算规模的子运算数据,并将该多个子运算数据和长度小于等于运算规模的运算数据进行循环处理,即循环将数据提供至所述运算模块。简要举例来说,第一个运算数据长度大于运算规模,拆分为3段D1、D2和D3,第二个运算数据小于等于运算规模,无需拆分,表示为d,则循环读取,分3次向运算单元提供第一、第二运算数据,即第一次提供D1和d,第二次提供D2和d,第三次提供D3和d。
总的来说,数据处理单元23对运算数据的调整是指,当运算数据长度不大于运算单元的运算规模 时,可以通过该存储器直接将待运算的数据送入运算单元30中;否则,每一次运算,将符合运算单元30运算规模的数据送入运算单元30中,运算完毕或者该批数据进入下一级流水线之后,该存储器向运算单元30中送入新一批符合运算单元30运算规模的数据进行运算。另外,当两个待运算的数据长度相同时,则直接或拆分后送入运算单元30中进行运算;否则,长度较大的数据分段后按顺序读取,长度较小的数据分段后循环读取,直至运算结束。
图111是本披露提供的装置的运算模块的结构示意图。如图4所示,运算模块由若干种不同的运算部件组成,如向量加法部件、向量减法部件、向量逻辑与部件、向量点积部件等等。每种部件有若干个。利用这些运算部件,运算模块能够支持多种向量运算。
图112是本披露中支持不同长度运算数据的指令的方法流程图。执行该指令的过程包括:
S1,指令处理单元12中的取指部分121从指令缓存单元11中取出一条向量运算指令,并将该指令送往指令处理单元中的译码部分122。
S2,译码部分122对指令进行译码,将指令根据自定义的指令规则拆分为操作码和各个不同的操作域。这里采用的自定义的指令规则是指令包含操作码和至少一个操作域,操作码定义向量运算的类型,操作域中保存待运算的数据值、数据存储的地址、数据的长度或是运算结果保存地址等,具体操作域的含义根据操作码的不同而不同。而后,将该运算指令送往指令队列部分123。
S3,在指令队列部分123中,根据该指令的操作码和操作域获取待运算的数据,送往依赖关系处理单元13对数据依赖关系进行分析和判断。
S4,在依赖关系处理单元14中,分析该指令与前面的尚未执行结束的指令在数据上是否存在依赖关系。若无依赖关系,则无需等待,否则将该条指令存储在存储队列单元中,等待至其与前面的未执行结束的指令在数据上不再存在依赖关系为止。将指令送往运算单元30。
S5,当指令送往运算单元30准备运算时,数据模块20中的数据暂存单元22根据数据的长度和运算单元30的规模对数据进行调整,即当向量长度不大于运算单元30的运算规模时,可以直接将待运算的向量送入运算单元30中;否则,每一次运算,将符合运算单元30运算规模的数据送入运算单元30中,运算完毕后,向运算单元30中送入新一批符合运算规模的数据进行运算,直至运算结束。当两个待运算的向量长度相同时,则直接送入运算单元中进行运算;否则,长度较大的向量按顺序读取,长度较小的向量循环读取,直至运算结束。若待运算的向量同时需要根据运算单元规模进行调整,又需要对长度进行调整,则保证长度较大的向量按顺序读取,长度较小的向量循环读取的顺序,依次读取符合运算规模的数据即可。
S6,运算完成后,将结果写回至数据暂存单元22中的指定地址,同时提交指令缓存单元11中的该指令。
为使该过程更加清楚明白,以下提供一具体实施例,并参照附图113,对本流程进一步详细说明。
实施例一
本实施例描述了采用运算装置进行向量间与运算的具体过程,首先,本实施例中向量间与运算指令格式为:
假定寄存器每个地址能够存储16位数据,运算单元内包含4个间与运算器,每个运算器可以同时执行16位数据的间与运算。以运算指令VAV 00001 01000 01001 01000 10001为例,该指令表示向量0和向量1执行VAV运算,即向量间与运算。具体的,向量间与运算的过程包括:
S1,指令处理单元11中的取指部分121从指令缓存单元11中取出一条向量运算指令,即VAV 00001 01000 01001 01000 10001,并将该指令送往指令处理单元12中的译码部分122。
S2,译码部分122对指令进行译码,得到该指令操作码VAV,表示执行向量间与运算,有五个操作域,分别表示待运算向量vin0的起始地址和长度,向量vin1的起始地址和长度、运算结果的存储地址,将该运算指令送往指令队列部分123。
S3,在指令队列部分123中,根据该指令的操作码和操作域获取待运算的数据。该指令操作码为VAV,即执行向量间与逻辑运算,由操作域1、2、3、4处获得待运算的数据地址和数据长度,即向量vin0的起始地址00001、向量vin0的长度01000、向量vin1的起始地址01001、向量vin1的长度01000。即向量vin0从地址为00001处开始,读取长度为8个地址长度的数据,即地址为00001-01000的数据;向量vin1从地址为01001处开始,同样,也读取长度为8个地址长度的数据。而后,送往依赖关系处理单元13对数据依赖关系进行分析和判断。
S4,在依赖关系处理单元123中,分析该指令与前面的尚未执行结束的指令在数据上是否存在依赖关系。若无依赖关系,则无需等待,否则将该条指令存储在存储队列单元14中,等待至其与前面的未执行结束的指令在数据上不再存在依赖关系为止。将指令送往运算单元30。
S5,数据模块20中数据I/O单元21事先从外部的内存中获取数据,并将获取的数据存储于数据暂存单元22。当指令送往运算单元30准备运算时,数据暂存单元22根据指令所指示的数据地址,找到相应的数据并提供至运算单元30,在提供前,数据暂存单元22可将数据送入数据处理单元23,数据处理单元23可根据数据的长度和运算单元30的运算规模对数据进行调整,而后提供至运算模块30。这里,运算单元30一次只能够处理4组16位向量的间与运算,所以,第一次送入运算单元30的数据为vin0所指的前4个地址长度的数据和vin1所指的前4个地址长度的数据,即地址为00001-00100和01001-01100的数据进行运算。待运算完毕,载入vin0和vin1各自的后4个地址长度的数据进行运算,即地址为00101-01000和01101-10000的数据进行间与运算。
S6,运算完成后,将结果写回至数据暂存单元22中的指定地址10001处,同时提交指令缓存单元中的该向量间与逻辑指令。
这个例子里的间与指令可以替换成神经网络专用指令的任意具有两个或以上相同长度或不同长度的运算数的逻辑指令
实施例二
本实施例描述了采用运算装置进行向量加法运算的具体过程,首先,本实施例,定义向量加法运算指令格式为:
假定寄存器每个地址能够存储16位数据,运算单元内包含4个加法运算器,每个运算器可以同时执行16位数据的加法运算。VA 00001 01000 01001 00010 10001为例,该指令表示向量0和向量1执行VA运算,即向量加法运算。运算装置执行该向量加法指令的过程包括:
S1,指令处理单元12中的取指部分121从指令缓存单元11中取出一条向量运算指令,即VA 00001 01000 01001 00010 10001,并将该指令送往指令处理单元中的译码部分12。
S2,译码部分12对指令进行译码,得到该指令操作码VA,表示执行向量加法运算,有五个操作域,分别表示待运算向量vin0的起始地址和长度,向量vin1的起始地址和长度、运算结果的存储地址,将该运算指令送往指令队列部分123。
S3,在指令队列部分123中,根据该指令的操作码和操作域获取待运算的数据。该指令操作码为VA,即执行向量加法运算,由操作域1、2、3、4处获得待运算的数据地址和数据长度,即向量vin0的起始地址00001、向量vin0的长度01000、向量vin1的起始地址01001、向量vin1的长度00010。即向量vin0从地址为00001处开始,读取长度为8个地址长度的数据,即地址为00001-01000的数据;向量 vin1从地址为01001处开始,读取长度为2个地址长度的数据。而后,送往依赖关系处理单元13对数据依赖关系进行分析和判断。
S4,在依赖关系处理单元13中,分析该指令与前面的尚未执行结束的指令在数据上是否存在依赖关系。若无依赖关系,则无需等待,否则将该条指令存储在存储队列单元中,等待至其与前面的未执行结束的指令在数据上不再存在依赖关系为止。将指令送往运算单元。
S5,依赖关系不存在后,该条向量加法指令被送往运算单元30。运算单元30根据所需数据的地址和长度从数据暂存单元22中取出需要的向量,然后在运算单元中完成加法运算。这里,因为运算单元30一次只能够处理4组16位向量的加法运算,所以不能一次将所有数据全部发送至运算单元进行运算,而是需要分多次进行。又因为vin0和vin1长度不同,vin1长度较短,故运算时,需要循环读取vin1的数据。如图112所示,第一次送入运算单元30的数据为vin0所指的前4个地址长度的数据和vin1所指的2个地址长度的数据,即发送的数据为地址为00001-00100和01001-01010的数据,其中进行运算的数据的对应关系为:地址为00001处的数据与地址为01001处的数据进行加法运算、地址为00010处的数据与地址为01010处的数据进行加法运算、地址为00011处的数据与地址为01001处的数据进行加法运算、地址为00100处的数据与地址为01010处的数据进行加法运算。待运算完毕,第二次送入运算单元30的数据为vin0所指的后4个地址长度的数据和vin1所指的2个地址长度的数据,即地址为00101-01000和01001-01010的数据进行加法运算,运算时的对应关系为地址为00101处的数据与地址为01001处数据进行加法运算、地址为00110处的数据与地址为01010处的数据进行加法运算、地址为00111处内的数据与地址为01001处的数据进行加法运算、地址为01000处的数据与地址为01010处的数据进行加法运算。
S6,运算完成后,将结果写回至数据暂存单元22中的指定地址10001处,同时提交指令缓存单元11中的该向量加法指令。
这个例子里的加法指令可以替换成神经网络专用指令的任意具有两个或以上相同长度或不同长度运算数的运算指令”
上述运算装置处理的一条指令可以处理长度相同或不同的数据,从而有效提高了指令的灵活性,减少运行时的指令条数(一个操作由一条指令完成即可),挖掘指令执行时的数据的相关性,从而优化数据的调用方式(如无需反复读取、调用较短长度的数据),提高了数据的使用效率等。
图113A示出了串行进位加法树的结构,即采用二叉树的结构,对待运算的操作数两两相加,而后向上传递,直至得到最终结果。显然,该结构支持多浮点数并行相加,加速了加法运算,但是在进位传播时,需要消耗大量的时钟延迟,而且,运算结果和操作数的顺序也有一定的关系,运算结果的精度损失较大。
图114示出了进位保存加法树的结构,即利用华莱士树的结构,将由每一级全加器的进位生成的部分连接到下一级的高位,通过连线实现进位传递,避免复杂的进位传递逻辑,降低了进位传递的延迟。然而,这种方法并不能直接用于浮点数的加法,并且,操作数的顺序不同,也可能带来计算误差。
如图115是本披露提供的执行多个浮点数相加的装置的示意图,如图115所示,装置包括预处理模块、加法运算模块和规格化处理模块,预处理模块包括比较选择模块和计算移位模块,加法运算模块包括华莱士树模块、最终结果累加模块和前导零预测模块。多个浮点数相加的装置可以设置在如图1、图4A、图2A或图6A所示的计算装置内,当然在实际应用中,也可以设置在人工神经网络正向运算的装置、用于稀疏连接的人工神经网络计算装置或其他的神经网络领域的计算装置、芯片或处理装置内。
现有x个相同标准的y位浮点数进行相加,第i个浮点数用fi表示,其中,x、y和i均为正整数,且1≤i≤x。
在预处理模块中,将每个浮点数fi,拆分为符号位部分si,指数位部分ei和尾数位部分mi,即 fi=(si,ei,mi)。通过比较选择模块进行两两选择比较操作,如图116所示,即若ea>eb,则选择a,否则选择b。而后,如图117所示,利用二叉树结构,依次选择出具有最大指数位的浮点数fmax,其符号位、指数位、尾数位分别为smax,emax,mmax。
图118是本披露中计算移位模块的示意图,即分别求得每个浮点数fi与最大指数位的浮点数fmax的指数的差值Δe。若fmax为规格化浮点数,fi为非规格化浮点数,那么对fi的尾数部分进行逻辑移位的位数n=Δe-1;否则,n=Δe。而后相应地对每个浮点数fi的尾数部分mi进行逻辑移位。移位操作结束后,相当于该x个浮点数的指数位相同,尾数位可以直接进行运算。具体操作是,首先将尾数位mi的最高位前补上1个隐藏位,当该浮点数fi为规格化浮点数时,隐藏位的值为1;当该浮点数fi为非规格化浮点数时,隐藏位为0。尾数位最低位后增添k个“0”作为有效位。此时,尾数位总位数等于移位后总位数,即原尾数位数+隐藏位位数+新增有效数字位数。而后,根据之前求得的待逻辑移位的位数n对每个浮点数fi进行移位,这里先右移n位,以舍弃尾数位最低的n位;再将移位后的尾数位的最低位作为粘滞位,与舍弃的n位作“或”运算,运算结果更新为粘滞位的值即得到所需的移位后尾数位的最终结果。最后,判断每个浮点数fi的符号位部分si与最大指数位的浮点数fmax的符号位部分smax是否相同,相同则无需任何操作,不同则将尾数部分取其补码,便于后面运用加法器直接进行运算。
在加法运算模块中,利用如图114所示的华莱士树结构,对移位后的各个浮点数的尾数相加,直到归约为两个数,记为sum1和carry1,输出至最终结果累加模块和前导零预测模块。华莱士树结构用简单的硬件快速将处理后的多个浮点数相加归约成两个数相加,即每次利用i个全加器,把j个i位的数相加转换成2*j/3个i+1位的数相加,再用一层全加器转换成4*j/9个数相加,直到转换成2个数。
最终结果累加模块利用双通路计算出运算结果,该结构如图119所示。一条通路对sum1和carry1直接进行相加,另一条通路对二者的反码进行相加,最后根据第一条通路的所得结果的最高位,若最高位的值为0,则选择第一条通路的结果作为累加部分的最终结果tmp_sum并输出,否则,选择第二条通路的结果作为累加部分的最终结果tmp_sum并输出。前导零预测模块,利用前导零预测(leading zero anticipator,LZA)方法,首先对输入的sum1和carry1按位求得其传播函数
生成函数G=sum1·carry1,杀死函数Z=(sum1·carry1)’的值;而后,求得每一位的指示符的值,第i位用fi表示,由下列公式得到
f
i=T
i-1(G
iZ
i+1∨Z
iG
i+1)∨T
i-1(Z
iZ
i+1∨G
iG
i+1),i>0;最后,设定参数
在规格化处理模块中,根据前导零预测模块分的第一个有效数字位的位置num_shift对最终结果tmp_sum进行逻辑移位,移动位数为num_shift,而后进行规格化,分别得到最终结果的符号位sresult、指数位eresult和尾数位mresult,,组合得到最终结果sumresult={sresult,eresult,mresult}。
本披露提供一实施例,是4个16位浮点数相加,即x=4,y=16。其中,浮点数标准采用IEEE754的half类型浮点数标准,即每个浮点数由1位符号位,5位指数位和10位尾数位组成。
在如图115所示的装置中,输入4个浮点数并用二进制表示为f1=0001001010000001,f2=0001110011110000,f3=00011001011111111,f4=0010010011011001,拆分为符号位、指数位、尾数位的格式,即{s,e,m},用二进制表示得到f1={0,00100,1010000001},f2={0,00111,0011110000},f3={0,00110,01011111111},f4={0,01001,0011011001}。利用如图116所示装置,分别比较f1、f2的指数位e1=00100、e2=00111,选出较大的指数值emax(e1,e2)=00111,和比较f3、f4的指数位e3=00110、e4=01001,选出较大的指数值emax(e3,e4)=01001,而后利用如图43所示的树状结构,比较emax(e1,e2)=00111和emax(e3,e4)=01001,选择出较大的指数位emax=01001,该浮点数用 fmax=f4=0010010011011001表示,符号位和尾数位分别为smax=0和mmax=0011011001。
而后,分别求得f1、f2、f3、f4的指数位e1、e2、e3、e4与emax的差值,Δe1=5、Δe2=2、Δe3=3、Δe4=0。由于f1、f2、f3、f4均为规格化浮点数,故待移位的位数n=Δe,即n1=Δe1=5、n2=Δe2=2、n3=Δe3=3、n4=Δe4=0。这里为了降低运算过程中的精度损失,增加三位有效数字位,即k=3,并令最低位为粘滞位。移位时,由于该实施例采用IEEE754标准,故首先fmax、f1、f2、f3、f4的尾数位部分的最高位前补上1位隐藏位,并判断它们是否为规格化浮点数。由于f1、f2、f3、f4均为规格化浮点数,也就是令fmax、f1、f2、f3、f4的隐藏位的值为1。而后,将尾数位的最低位后面补上3个“0”,即达到了预设的总位数:原尾数位数+隐藏位位数+新增有效数字位数=10+1+3=14位,接着,根据指数差n进行右移,舍弃最低的n位;将舍弃的n位的数值与最后一位粘滞位进行“或”运算,用运算结果更新粘滞位的值,得到所需的移位后尾数位的最终结果。以f1为例,由上面可得其尾数部分为1010000001,最高位增加一位隐藏位,由于f1为规格化浮点数,故该隐藏位的值为1,得到11010000001;在最低位后面补3个0,并定义最低位为粘滞位,得到11010000001000。由于n1=5,所以我们需要移动5位,故最右面的5位01000均需要舍弃,得到00000110100000;将该被舍弃的5位数字01000与粘滞位0进行“或”运算,得到1,用该结果更新粘滞位,即粘滞位的值为1得到移位后的结果为00000110100001。又以f2为例,由上面可得其尾数部分为0011110000,最高位增加一位隐藏位,由于f2为规格化浮点数,故该隐藏位的值为1,在最低位后面补3个0,并定义最低位为粘滞位,得到10011110000000。由于n2=2,所以我们需要移动2位,故最右面的2位00均需要舍弃,得到00100111100000;将该被舍弃的2位数字00与粘滞位0进行“或”运算,得到0,用该结果更新粘滞位,即粘滞位的值为0,得到移位后的结果为00100111100000。最后,对浮点数f1、f2、f3、f4的符号位s1、s2、s3、s4与smax进行比较,结果均为0,即均为正数,故无需对其尾数部分再进行取补的操作。
如图115所示,将预处理的结果输入到加法运算模块。利用图114示出的华莱士树结构,对四个14位预处理后的尾数进行处理。这里,本披露考虑使用两级华莱士树结构,首先通过一级4-2华莱士树结构部分,进行相加,而后将结果分别输入到第二级3-2华莱士树结构部分和前导零预测部分进行运算。3-2华莱士树将运算结果最终归约为两个数,即sum1=11011000000100和carry1=110100010,输出至最终结果累加部分。在该部分中,利用双通路计算出运算结果,一条通路对sum1和carry1直接进行相加,另一条通路对二者先取反码,而后进行相加。由于第一条通路所得结果的最高位为0,故选择得到第一条通路的结果作为累加部分的最终结果,即tmp_sum=0011100101001000,输出至第三模块。前导零预测部分是将第一级4-2华莱士树的输出结果利用前导零预测算法(LZA算法)计算得到累加部分的最终结果规格化待移动的位数用二进制表示为num_shift=10,输出至第三模块。其中,前导零预测部分和第二级华莱士树部分是并行执行的。
如图115所示,规格化处理模块利用LZA算法,根据tmp_sum和第一模块得到的fmax进行逻辑操作,得到最终结果的符号位sresult=0;根据第一模块得到的fmax、第二模块累加部分得到的tmp_sum和前导零预测部分的输出结果num_shift进行逻辑操作,得到最终结果的指数位eresult=01001;根据前导零预测部分的输出结果num_shift、第一模块得到的fmax对第二模块得到的tmp_sum进行移位并规格化得到最终结果的尾数位mresult=11001100101001。最后,将三者组合得到最终结果sumresult={sresult,eresult,mresult}={0,01001,11001100101001}=00100111001100101001。
综上所述,能够快速高效的完成多个相同标准的浮点数的加法操作,增加了一次运算支持的操作数数量,降低了运算延迟,加速了运算过程,降低了运算结果的精度损失。
图119是本披露提供的用于执行神经网络运算的装置的结构示意图,如图119所示,装置包括多个神经网络处理模块10及一个片上互联模块20,多个神经网络处理模块10与该片上互联单元20通信连接,上述神经网络处理单元具体可以为如图2A所示的运算单元,当然在实际应用中,也可以为如图1A 所示的运算单元或如图1B或如图6A所示的运算单元或能支持不同位宽运算数据的运算单元,当然在实际应用中,用于执行神经网络运算的装置还可以设置在人工神经网络正向运算的装置或用于稀疏连接的人工神经网络计算装置或其他的神经网络领域的计算装置、芯片或处理器内,其中:
神经网络处理模块10能够通过片上互联模块30从其它神经网络处理模块10中读写数据,还可从本地读写数据。当要执行神经网络运算时,每个神经网络处理模块10作为一个核执行相应的运算,其运算所需的数据可直接从本地直接获取,也可通过片上互联模块20与其他神经网络处理模块10通信,以从其他神经网络处理模块10处读取运算所需的数据。各个神经网络处理模块10读取运算所需的数据后,执行相应的运算,得到各自的运算结果数据,在单层神经网络运算中,各个神经网络处理模块10可将各自的运算结果数据汇总至一个神经网络处理模块10中进行累加,以得到最终结果数据。在多层神经网络运算中,当层各个神经网络处理模块10计算得到运算结果数据,可能在下一层作为运算所需的数据被其他神经网络处理模块10使用,这样在当层神经网络运算完毕后,各个神经网络处理模块10会进行数据交互,以准备进行下一层神经网络运算。
图120是本披露中神经网络处理模块的结构示意图,如图60所示,神经网络处理模块10包括神经网络处理单元11和存储单元12(具体的可以为高速存储单元,例如高速暂存存储器);神经网络处理模块10在进行神经网络运算时,神经网络处理单元11直接从与其对应的高速储存单元12中读取数据,和/或通过片上互联单元20从其它神经网络处理模块10中的神经网络处理单元11中读取数据,和/或通过片上互联单元20从其它神经网络处理模块10中的高速存储单元12中读取数据;每个神经网络处理模块10中的神经网络处理单元11根据读取的数据进行神经网络运算,得到各自的运算结果数据;在完成运算后,神经网络处理单元11将运算结果数据直接写入至与其对应的高速储存单元12中,和/或通过片上互联单元20将运算结果数据写入至其它神经网络处理模块10中的神经网络处理单元11中,和/或通过片上互联单元20将运算结果数据写入至其它神经网络处理模块10中的高速存储单元12中。总之,神经网络处理单元11可直接从其对应的高速储存单元获取数据,也可以通过片上互联模块20获取其它位置的数据,这样避免了反复向内存读取数据,降低了内存访问带宽。
如图121所示,本披露提供的用于执行神经网络运算的装置还包括外部存储模块30,其与片上互联单元20通信连接,神经网络处理模块10还能够通过片上互联单元从外部存储模块中读写数据,利用外部存储模块30,可以从外界向装置中导入新的数据,装置执行的最终执行结果数据也可以写入至外部存储模块30,以供外部导出。其中,外部存储模块30可以通过硬件来实现(包括但不限于FPGA、CGRA、专用集成电路ASIC、模拟电路或忆阻器等)。
图122是本披露中神经网络处理单元11的结构示意图,如图122所示,神经网络处理单元11包括指令队列111、神经网络运算单元112、IO读取单元113、高速缓存单元114和同步关系单元115。指令队列111存储有多种类型的指令,神经网络处理单元11根据不同的指令执行不同的操作。下表为各类指令的描述:
指令名称 | 操作码1 | 操作码2 | 操作码3 | 操作码4 | 操作码5 | …… |
ACK | 0/1 | 0/1 | 0/1 | 0/1 | 0/1 | …… |
FENCE | 0/1 | 0/1 | 0/1 | 0/1 | 0/1 | …… |
SYNC | 0/1 | 0/1 | 0/1 | 0/1 | 0/1 | …… |
COMPUTE | MLP | addr1 | size1 | addr2 | size2 | …… |
IO | src | dest | size |
指令包括指令名称以及多个操作码:
数据送达指令,指令名称为ACK,其中各个操作码分别表示是否向该神经网络处理单元11发送数据送达信号(ACK信号),神经网络处理单元11向其他神经网络处理单元11写入数据后,执行数据送达指令以发送数据送达信号给对应的神经网络处理单元11,以表明数据已经传输到位;
数据依赖指令,指令名称为FENCE,其中各个操作码表示是否检查来自该神经网络处理单元11的ACK信号;神经网络处理单元11执行数据依赖指令以检测其所有依赖的数据是否已经到达本神经网络处理单元。
数据同步指令,指令名称为SYNC,其中各个操作码表示该神经网络处理单元是否参与同步操作,神经网络处理单元11执行数据同步指令用以强制多个神经网络处理单元11做同步操作,即当多个神经网络都执行到当前指令后,这些神经网络处理单元才可以执行之后的指令;
COMPUTE(运算指令),其中第一个操作码表示具体的计算任务,如MLP,CONV,POOL等,其余操作码用来表示输入输出数据的地址和大小,以及神经网络计算指令的配置信息。该COMPUTE指令也可以包括其他的运算指令,进行非线性激活和线性激活操作。当然在实际应用中,也可以是其他的神经网络的指令,例如,向量指令或矩阵指令,本发明并不限制上述COMPUTE指令具体包含的指令的具体表现形式。
输入输出指令,指令名称为IO,其中的操作码分别表示搬运数据的起始地址,结束地址以及数据大小的信息,神经网络处理单元11执行输入输出指令以与其余模块之间进行通信数据。
IO读取单元根据113根据指令队列111中的运算指令从该神经网络处理单元11的外部(如高速存储单元12、其他神经网络处理单元11等)读取数据,并将读取的数据缓存至高速缓存单元114中,神经网络运算单元112根据该运算指令从高速缓存单元114中读取所缓存的数据,并执行神经网络运算,得到相应的运算结果数据;
神经网络运算单元112将运算结果数据写入至高速缓存单元114中,当需要将运算结果数据发送中外部(其他神经网络处理单元11等)时,IO读取单元113从高速缓存单元114中读取运算结果数据,并将运算结果数据写入到该神经网络处理单元11的外部。
图123是本披露中片上互联单元的结构示意图。其中,所述片上互联单元包括相互级联的N级互联模块组成,且每一级互联模块的个数并不做限定。具体的,如图123仅示出由一个一级互联模块和多个二级互联模块互联的片上互联模块。如图123所示,片上互联模块20包括一级互联模块21和与该一级互联模块通信连接的多个二级互联模块22,一级互联模块21还与外部存储模块30通信连接,多个二级互联模块22与多个神经网络处理模块10一一对应,其中,每个二级互联模块22分别与相应神经网络处理模块中的神经网络处理单元11和高速存储单元12通信连接。具体的,二级的互联模块22一个端口连接神经网络处理单元11,一个端口连接该神经网络处理单元对应的高速存储单元12,另一个端口连接一级互联模块21,一级互联模块21将多个二级互联模块22和外部存储模块30连接,用以保证这些模块之间的数据通路。这样,可以在保证各个神经网络处理单元11以及高速存储单元12和外部存储模块30之间相互通信,并且占用较小的面积开销。
采用本披露以上所描述的装置,可执行单层神经网络运算,包括:
S1,每个神经网络处理模块10根据其自身指令队列11中存储的计算指令,根据指令中操作码所指示的地址,直接从本地读取数据,和/或通过片上互联模块20从其它神经网络处理模块10中读取数据;
S2,每个神经网络处理模块10根据读取的数据进行单层神经网络的部分运算,得到各自的运算结果数据;
S3,每个神经网络处理模块10将各自的运算结果数据进行本地存储和/或通过片上互联模块20将各自的运算结果数据写入至其他神经网络处理模块10中。
对于多层神经网络运算,其实现过程与单层神经网络类似,当上一层人工神经网络执行完毕后,在下一层运算时,每个神经网络处理模块10根据新的运算指令从新的地址读取新的数据进行计算,并且依据新的指令在多核(即多个神经网络处理模块10)之间分配计算任务。对于每一层神经网络运算,执 行上述步骤S1-S3,并将该层各神经网络处理模块10得到的运算结果数据用于下一层神经网络运算。
为使本披露的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本披露进一步详细说明。
图124是本披露执行一层全连接层运算实施例的流程图,其执行过程如图64所示:
步骤1:依据全连接运算指令,每个神经网络处理单元11从对应的高速存储单元12中读取数据,分别计算得到全连接层的部分运算结果数据。
在每个神经网络处理单元11中,指令队列111将运算指令COMPUTE发送至神经网络运算单元112和IO读取单元113,神经网络运算单元112根据全连接运算指令的第一操作码确定全连接运算操作,确定将要执行一层全连接层运算,具体的,IO读取单元113根据运算指令COMPUTE中的地址从其对应的高速存储单元12中读取运算所需数据,并将读取的数据存储于高速缓存单元114中,神经网络运算单元112从高速缓存单元114中读取相应的数据,然后根据读取的数据全连接运算操作,以进行全连接层的部分运算,得到全连接层的部分运算结果数据作为输出数据。
步骤2:依据输入输出指令IO,每个神经网络处理单元11将自己计算的到的部分运算结果数据通过片上互联模块20发送给相应的神经网络处理单元11。由于每个神经网络处理单元11只计算出部分运算结果数据,因此其需要将该部分输出数据发送给相应的神经网络处理单元11进行加和运算。
具体的,步骤1中神经网络运算单元112将计算得到的部分运算结果数据存储于高速缓存单元114中,指令队列111将输入输出指令IO发送给IO读取单元113后,IO读取单元113执行输出指令IO,以将存储于高速缓存单元114中的部分运算结果数据读取,并发送至外部的相应的神经网络处理单元11。这里需要说明的是,每个神经网络处理单元11可能会将部分运算结果数据发送至一个对应的神经网络处理单元11中,也可能发送至多个对应的神经网络处理单元11中,也就是说,每个神经网络处理单元11也可能收到一个神经网络处理单元11发送的部分运算结果数据,也可能收到多个神经网络处理单元11发送的部分运算结果数据。
步骤3:每个神经网络处理单元11将自己计算的到的部分运算结果数据发送给相应的神经网络处理单元11后,需要执行数据送达指令ACK,以向对应的神经网络处理单元11发送数据送达信号。每个神经网络处理单元11需要向接受其发送数据的神经网络处理单元11发送数据送达信号,用以表明其数据依赖关系。
步骤4:依据数据依赖指令FENCE,每个神经网络处理单元11检测其发送数据送达信号是否到达相应的神经网络处理单元11,如果没有到达,则等待对应的数据送达信号到达相应的神经网络处理单元11。对于每个将要进行加和运算神经网络处理单元11,只有其收到所有其他神经网络处理单元11所发送的数据送达信号时,才表明其所需要的输入数据全部到达,从而执行加和运算。
步骤5:依据运算指令COMPUTE,每个的神经网络处理单元11汇集其他神经网络处理单元11的部分运算结果数据后,联合上自身运算所得的部分运算结果数据进行加和运算,得到最终的运算结果数据。
步骤6:依据输入输出指令IO,每个神经网络处理单元11将计算得到的最终的运算结果数据作为输出数据写入外部存储模块30中。在每个神经网络处理单元11中,将最终的运算结果数据写入外部存储模块30中的执行过程与步骤2类似,在此就不再赘述。
综上所述,本披露提供的装置和指令集,解决了CPU和GPU运算性能不足、前端译码开销大的问题,能有效支持多层人工神经网络运算,同时,针对多核多层人工神经网络运算采用专用片上存储,充分挖掘了神经元和权值数据的重用性,避免了反复向内存读取这些数据,降低了内存访问带宽,避免了内存带宽成为多层人工神经网络全连接层正向运算性能瓶颈的问题。
由于采用多核神经网络处理模块,允许单层的神经网络将任务划分,在多个神经网络处理模块上执行,并且采用了专用指令,允许在执行多层神经网络的时候,可以在多个神经网络处理器之间相互传输计算得到的数据,故能实现多层多核的神经网络运算。
由于采用多核神经网络处理模块,解决了在执行多核多层神经网络处理运算的时候,单个处理器处理性能不足的问题,具有显著加速多核多层神经网络运算的效果。
由于采用了专用的数据指令,有效的解决了在执行多核多层神经网络时,其多个处理器之间需要交互大量数据的问题,具有显著加速多核多层神经网络运算的效果。
在不同的技术场景中,其可以达到不同的技术效果,具体包括:
场景识别
在场景识别中,由于需要对场景中的信息,诸如图像等进行纹理、轮廓、色调等一些特征信息进行识别,然后以这些特征为依据,得到场景的信息。因此,可以通过对比图像进行切割,放到不同的处理单元中进行处理,从而可以加速提取特征,甚至于做到实时提取特征。
超分辨率
在超分辨率中,由于需要对图像进行纹理、轮廓、色调等一些特征信息进行识别,同时,以这些提取到的特征,在之后的网络中,对这些特征进行填补操作,从而得到超分辨率图像。因此,可以通过对比图像进行切割,放到不同的处理单元中进行处理,从而可以加速提取特征。,甚至于做到实时提取特征,在之后的网络中,进行下一步的图像超分辨率操作。
图像美化
在图像美化中,由于需要对图像进行纹理、轮廓、色调等一些特征信息进行识别,同时,对这些特征进行一定程度的修改,因此,可以通过对比图像进行切割,放到不同的处理单元中进行处理,从而可以加速提取特征。,甚至于做到实时提取特征,然后利用得到的特征,在之后的网络中,进行下一步的图像修饰操作。
转画风
在转画风中,由于需要对图像进行纹理、轮廓、色调等一些特征信息进行识别,同时,对这些特征进行一定程度的修改,因此,可以通过对比图像进行切割,放到不同的处理单元中进行处理,从而可以加速提取特征。,甚至于做到实时提取特征,然后利用得到的特征,在之后的网络中,进行下一步的转画风操作。
语音识别
在语音识别中,可以将音频切分成多个段,放到不同的处理单元进行处理,加速特征提取,甚至于做到实时提取特征,进行特征提取,从而得到横跨时间尺度和频谱尺度的综合特征,利用这些特征,可以有效的提高神经网络的语音识别准确读。
翻译
在翻译中,可以将文本切分成多个段,放到不同的处理单元进行处理,加速特征提取,甚至于做到实时提取特征,进行特征提取,从而得到横跨上下文尺度的综合特征,利用这些特征,可以有效的提高神经网络的翻译准确读。
物体识别
在物体识别中,由于需要对物体中的信息,诸如图像等进行纹理、轮廓、色调等一些特征信息进行识别,然后以这些特征为依据,得到物体的信息。因此,可以通过对比图像进行切割,放到不同的处理单元中进行处理,从而可以加速提取特征。,甚至于做到实时提取特征,然后利用得到的特征,在之后的网络中,进行下一步的物体识别操作。
物体检测
在物体检测中,由于需要对场景中的信息,诸如图像等进行纹理、轮廓、色调等一些特征信息进行识别,然后以这些特征为依据,得到场景中存在的物体的信息。并且,在检测到存在的物体后,需要对物体做精细识别。因此,可以通过对比图像进行切割,放到不同的处理单元中进行处理,从而可以加速提取特征。,甚至于做到实时提取特征,然后利用得到的特征,在之后的网络中,进行物体检测,并且 再次利用神经网络进行精细识别。
轮廓检测
在轮廓检测中,由于需要对场景中的信息,诸如图像等进行纹理、轮廓、色调等一些特征信息进行识别,然后以这些特征为依据,得到场景中存在的物体的信息。并且,在检测到存在的物体后,需要对物体做精细识别,得到物体的轮廓。因此,可以通过对比图像进行切割,放到不同的处理单元中进行处理,从而可以加速提取特征,甚至于做到实时提取特征,然后利用得到的特征,在之后的网络中,进行物体检测,并且再次利用神经网络进行精细识别。
广告推荐
由于广告推荐算法中,会综合用到物体识别和场景识别以及文本识别,因此需要神经网络做支持。尤其是文本识别,需要神经网络对编码后的一段文本进行特征提取,可以将文本切分成多个段,放到不同的处理单元进行处理,加速特征提取,甚至于做到实时提取特征,得到跨越上下文的文本信息。
聊天机器人
聊天机器人需要综合使用物体检测,物体识别,场景识别,语音识别,翻译,轮廓识别,文本识别等技术,因此特别需要这种多个处理单元的神经网络处理模块。
本披露了一种能支持不同位宽运算数据的运算单元、运算方法及运算装置,通过配置指令中的位宽域来配置参与运算的运算数据位宽,在根据指令执行运算时,首先判断是否存在与运算数据位宽相同的运算器,如果是,将该运算数据直接传给相应的运算器,否则,生成运算器合并策略,并根据运算器合并策略将多个运算器合并成一个新的运算器,以使该新的运算器的位宽符合该运算数据的位宽,并将该运算数据传给该新的运算器;再令获得该运算数据的运算器执行神经网络运算/矩阵运算/向量运算。本披露能够支持不同位宽运算数据的运算,以实现高效的神经网络运算、矩阵运算及向量运算,同时,节省运算器的数量,减少硬件面积。能支持不同位宽运算数据的运算单元可以设置在如图1、图2A或如图6A所示的计算装置内,当然在实际应用中,上述能支持不同位宽运算数据的运算单元也可以设置在如图38所示的人工神经网络正向运算的装置或用于稀疏连接的人工神经网络计算装置以及其他的神经网络领域的计算装置、芯片或处理器内。
为使本披露的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本披露进一步详细说明。
图125是本披露提供的运算装置的结构示意图,如图125所示,该运算装置包括:
存储单元,用于存储神经元/矩阵/向量,在一实施方式中,该存储单元可以是高速暂存存储器(Scratchpad Memory),能够支持不同长度和不同位宽的神经元/矩阵/向量数据,将必要的运算数据暂存在高速暂存存储器上,使本运算装置在进行神经网络运算以及矩阵/向量运算过程中可以更加灵活有效地支持不同长度和不同位宽的数据。高速暂存存储器可以通过各种不同存储器件(SRAM、eDRAM、DRAM、忆阻器、3D-DRAM或非易失存储等)实现。
寄存器单元,用于存储神经元/矩阵/向量地址,其中:神经元地址为神经元在存储单元中存储的地址、矩阵地址为矩阵在存储单元中存储的地址、向量地址为向量在存储单元中存储的地址;在一种实施方式中,寄存器单元可以是标量寄存器,提供运算过程中所需的标量寄存器,标量寄存器不只存放神经元/矩阵/向量地址,还存放有标量数据。当涉及到矩阵/向量与标量的运算时,运算单元不仅要从寄存器单元中获取矩阵/向量地址,还要从寄存器单元中获取相应的标量。
控制单元,用于控制装置中各个模块的行为。在一实施方式中,控制单元读取准备好的指令,进行译码生成多条微指令,发送给装置中的其他模块,其他模块根据得到的微指令执行相应的操作。
运算单元,用于获取指令,根据指令在寄存器单元中获取神经元/矩阵/向量地址,然后,根据该神经元/矩阵/向量地址在存储单元中获取相应的神经元/矩阵/向量,从而对该运算数据(神经元/矩阵/向 量)执行运算。运算单元执行的运算包括但不限于:上述的神经网络专用指令的本披露的运算指令里所讨论的运算操作。
运算单元在执行运算的过程中,根据指令中操作数所指示的运算数据的位宽,选择相应的一个或多个运算器以执行运算,其中,一个或多个运算器具有不同的位宽,例如,有的运算器支持16位的数据运算,有的运算器支持32位的数据运算,运算器实质上可以是向量乘法部件、累加部件和标量乘法部件等。如图126所示,运算单元包括判断子模块、运算器合并子模块和运算子模块;
判断子模块用于判断是否存在与该操作数所指示的运算数据位宽相同的运算器,如果是,将该操作数传给相应的运算器,否则,将运算器合并策略及该操作数传递给运算器合并子模块;
运算器合并子模块用于根据运算器合并策略将多个运算器合并成一个新的运算器,以使该新的运算器的位宽符合该操作数的位宽,并将该操作数传给该新的运算器。具体的,运算器合并策略是指优先选用较大位宽的运算器进行组合。当存在与所需位宽相同的运算器时,直接使用对应的运算器;若不存在,则选用比所需运算器位宽小且最为接近的可用的运算器进行组合。例如,可用的用于组合的运算器位宽分别为8位、16位、32位时,当所需的运算器的位宽为32位时,直接使用32位运算器;当所需的运算器的位宽为64位时,使用两个32位运算器进行合并;当所需的运算器的位宽为48位时,使用一个32位运算器和一个16位运算器进行合并;当所需的运算器的位宽为40位时,则选用一个32位运算器和一个8位运算器进行合并。
运算子模块用于令获得该操作数的运算器执行运算。
本披露的指令采用了两种方式进行实现:一种为直接采用一条指令的方式,该指令中同时包括操作数和位宽域,运算单元能够直接根据该指令获取操作数和相应位宽的运算器,以执行相应的运算;另一种为采用两条指令的方式,运算单元先根据位宽配置指令获取或构造相应位宽的运算器,再根据运算指令获取操作数以执行相应的运算。
需要说明的是,本披露指令集采用Load/Store结构,运算单元不会对内存中的数据进行操作。本指令集采用超长指令字架构,通过对指令进行不同的配置可以完成复杂的神经网络运算,也可以完成简单的矩阵/向量运算。另外,本指令集同时采用定长指令。
图127示出了本披露采用一条指令的方式执行运算的指令格式示意图,如图127所示,指令包括至少一操作码和至少3个操作数和至少2个位宽域,其中,位宽域与在运算器中运算时操作数的种类数量相同;其中,操作码用于指示该运算指令的功能,运算单元通过识别一个或多个操作码可进行不同的运算,操作数用于指示该运算指令的数据信息,位宽域用于指明对应操作数的位宽;其中,数据信息可以是立即数或寄存器号,例如,要获取一个矩阵时,根据寄存器号可以在相应的寄存器中获取矩阵起始地址和矩阵长度,再根据矩阵起始地址和矩阵长度在存储单元中获取相应地址存放的矩阵。
图128是本披露的神经网络运算指令的格式示意图,其为图127指令的实例化指令,如图128所示,神经网络运算指令包括至少一操作码和16个操作数和4个位宽域,其中,操作码用于指示该神经网络运算指令的功能,运算单元通过识别一个或多个操作码可进行不同的神经网络运算,操作数用于指示该神经网络运算指令的数据信息,其中,数据信息可以是立即数或寄存器号,位宽域用于指明操作数在运算中所对应的位宽,同时,位宽域用于指明运算过程中所对应的运算器的位宽以及是否需要将低位宽运算器合并为高位宽运算器。
图129是本披露的矩阵-矩阵运算指令的格式示意图,其为图127指令的实例化指令,如图129所示,矩阵-矩阵运算指令包括至少一操作码和至少4个操作数和2个位宽域,其中,操作码用于指示该矩阵-矩阵运算指令的功能,运算单元通过识别一个或多个操作码可进行不同的矩阵运算,操作数用于指示该矩阵-矩阵运算指令的数据信息,其中,数据信息可以是立即数或寄存器号,位宽域用于指明操作数在运算中所对应的位宽,同时,位宽域用于指明运算过程中所对应的运算器的位宽以及是否需要将低位宽运算器合并为高位宽运算器。
图130是本披露的向量-向量运算指令的格式示意图,其为图127指令的实例化指令,如图130所示,向量-向量运算指令包括至少一操作码和至少3个操作数和至少2个位宽域,其中,操作码用于指示该向量-向量运算指令的功能,运算单元通过识别一个或多个操作码可进行不同的向量运算,操作数用于指示该向量-向量运算指令的数据信息,其中,数据信息可以是立即数或寄存器号,位宽域用于指明操作数在运算中所对应的位宽,同时,位宽域用于指明运算过程中所对应的运算器的位宽以及是否需要将低位宽运算器合并为高位宽运算器。
图131是本披露的矩阵-向量运算指令的格式示意图,其为图127指令的实例化指令,如图131所示,矩阵-向量运算指令包括至少一操作码和至少6个操作数和至少3个位宽域,其中,操作码用于指示该矩阵-向量运算指令的功能,运算单元通过识别一个或多个操作码可进行不同的矩阵和向量运算,操作数用于指示该矩阵-向量运算指令的数据信息,其中,数据信息可以是立即数或寄存器号,位宽域用于指明操作数在运算中所对应的位宽,同时,位宽域用于指明运算过程中所对应的运算器的位宽以及是否需要将低位宽运算器合并为高位宽运算器。
图132是本披露一优选实施例的运算装置的结构示意图,如图132所示,该装置包括取指模块、译码模块、指令队列、标量寄存器、依赖关系处理单元、存储队列、重排序缓存、运算单元、高速暂存器、IO内存存取模块;
取指模块,该模块负责从指令序列中取出下一条将要执行的指令,并将该指令传给译码模块;
译码模块,该模块负责对指令进行译码,并将译码后指令传给指令队列;如图73所示,该译码模块包括:指令接受模块、微指令生成模块、微指令队列、微指令发射模块;其中,指令接受模块负责接受从取指模块取得的指令;微指令译码模块将指令接受模块获得的指令译码成控制各个功能部件的微指令;微指令队列用于存放从微指令译码模块发送的微指令;微指令发射模块负责将微指令发射到各个功能部件;
指令队列,用于顺序缓存译码后的指令,送往依赖关系处理单元;
标量寄存器,提供装置在运算过程中所需的标量寄存器;
依赖关系处理单元,该模块处理指令与前一条指令可能存在的存储依赖关系。矩阵运算指令会访问高速暂存存储器,前后指令可能会访问同一块存储空间。为了保证指令执行结果的正确性,当前指令如果被检测到与之前的指令的数据存在依赖关系,该指令必须在存储队列内等待至依赖关系被消除。
存储队列,该模块是一个有序队列,与之前指令在数据上有依赖关系的指令被存储在该队列内,直至依赖关系消除之后,提交指令。
重排序缓存,指令在执行过程中,同时也被缓存在该模块中,当一条指令执行完之后,如果该指令同时也是重排序缓存中未被提交指令中最早的一条指令,该指令将被提交。一旦提交,该条指令进行的操作对装置状态的改变将无法撤销;该重排序缓存里的指令起到占位的作用,当它包含的第一条指令存在数据依赖时,那么该指令就不会提交(释放);尽管后面会有很多指令不断进入,但是只能接受部分指令(受重排序缓存大小控制),直到第一条指令被提交,整个运算过程才会顺利进行。
运算单元,该模块负责装置的所有的神经网络运算和矩阵/向量运算操作,包括但不限于:卷积神经网络正向运算操作、卷积神经网络训练操作、神经网络Pooling运算操作、full connection神经网络正向运算操作、full connection神经网络训练操作、batch normalization运算操作、RBM神经网络运算操作、矩阵-向量乘运算操作、矩阵-矩阵加/减运算操作、向量外积(张量)运算操作、向量内积运算操作、向量四则运算操作、向量逻辑运算操作、向量超越函数运算操作、向量比较运算操作、求向量最大/最小值运算操作、向量循环移位运算操作、生成服从一定分布的随机向量运算操作。运算指令被送往该运算单元执行,首先,运算单元判断是否有与指令中操作数对应的位宽域长度相同的运算器,如果有,选用对应的运算器,如果没有,通过多个低位宽的运算器合并的方式构成所需位宽的运算器,然后,根据指令中操作码对运算数用选择的运算器进行对应的运算,得出相应的结果;
高速暂存存储器,该模块是数据专用的暂存存储装置,能够支持不同长度和不同位宽的数据;
IO内存存取模块,该模块用于直接访问高速暂存存储器,负责从高速暂存存储器中读取数据或写入数据。
图134是本披露实施例的运算装置采用一条指令的方式执行运算的流程图。如图134所示,过程包括:
S1,取指模块取出指令,并将该指令送往译码模块。
S2,译码模块对指令译码,并将指令送往指令队列。
其中,S2可以包括:S2.1,在译码模块中,指令被送往指令接受模块。
S2.2,指令接受模块将指令发送到微指令生成模块,进行微指令生成。
S2.3,微指令生成模块从标量寄存器里获取指令的神经网络运算操作码和神经网络运算操作数,同时将指令译码成控制各个功能部件的微指令,送往微指令发射队列;微指令又可称为含参机器码,指硬件能识别的一系列01编码,包括指令被译码后的结果。
S3,在取得需要的数据后,该指令被送往依赖关系处理单元。依赖关系处理单元分析该指令与前面的尚未执行结束的指令在数据上是否存在依赖关系。该条指令需要在存储队列中等待至其与前面的未执行结束的指令在数据上不再存在依赖关系为止。
S4,依赖关系不存在后,该条神经网络运算以及矩阵/向量指令对应的微指令被送往运算单元等功能部件。
S5,运算单元根据所需数据的地址和大小从高速暂存存储器中取出需要的数据,然后判断是否有与指令中位宽域相同的运算器,如果有,则选用匹配的运算器完成指令对应的运算,如果没有,则通过将低位宽的运算器合并的方式组成一个所需位宽的运算器来完成指令对应的运算。
S6,运算完成后,将输出数据写回至高速暂存存储器的指定地址,同时重排序缓存中的该指令被提交。
图135和图136示出了本披露采用两条指令的方式执行运算的指令格式示意图,其中,图135是位宽配置指令的格式示意图,位宽配置指令包括至少一操作码至少2个位宽域,用于指明下条运算指令所使用的运算器的位宽。图136是运算指令的格式示意图,运算指令包括至少一操作码至少3个操作数,其中,操作码用于指示该运算指令的功能,运算单元通过识别一个或多个操作码可进行不同的运算,操作数用于指示该运算指令的数据信息,其中,数据信息可以是立即数或寄存器号,例如,要获取一个矩阵时,根据寄存器号可以在相应的寄存器中获取矩阵起始地址和矩阵长度,再根据矩阵起始地址和矩阵长度在存储单元中获取相应地址存放的矩阵。
图137—138是图135—136的实例化,其分别为神经网络位宽配置指令和神经网络运算指令的格式示意图,如图137-138所示,位宽配置指令包括至少一操作码至少4个位宽域,用于指明下条神经网络运算指令所使用的运算器的位宽。配置指令包括至少一操作码和16个操作数,其中,操作码用于指示该神经网络运算指令的功能,运算单元通过识别一个或多个操作码可进行不同的神经网络运算,操作数用于指示该神经网络运算指令的数据信息,其中,数据信息可以是立即数或寄存器号。
图139-140是图135-136的实例化,其分别为矩阵-矩阵位宽配置指令和矩阵-矩阵运算指令的格式示意图,如图139-140所示,位宽配置指令包括至少一操作码至少2个位宽域,用于指明下条矩阵-矩阵运算指令所使用的运算器的位宽。矩阵-矩阵运算指令包括至少一操作码和至少4个操作数。其中,操作码用于指示该矩阵-矩阵运算指令的功能,运算单元通过识别一个或多个操作码可进行不同的矩阵运算,操作数用于指示该矩阵-矩阵运算指令的数据信息,其中,数据信息可以是立即数或寄存器号。
图141-142是图135-136的实例化,其分别为向量-向量位宽配置指令和向量-向量运算指令的格式示意图,如图141-142所示,位宽配置指令包括至少一操作码至少2个位宽域,用于指明下条向量-向量运算指令所使用的运算器的位宽。向量-向量运算指令包括至少一操作码和至少3个操作数,其中, 操作码用于指示该向量-向量运算指令的功能,运算单元通过识别一个或多个操作码可进行不同的向量运算,操作数用于指示该向量-向量运算指令的数据信息,其中,数据信息可以是立即数或寄存器号。
图143-144是图135-136的实例化,其分别为矩阵-向量位宽配置指令和矩阵-向量运算指令的格式示意图,如图143-144所示,位宽配置指令包括至少一操作码至少3个位宽域,用于指明下条向量-向量运算指令所使用的运算器的位宽。矩阵-向量运算指令包括至少一操作码和至少6个操作数,其中,操作码用于指示该矩阵-向量运算指令的功能,运算单元通过识别一个或多个操作码可进行不同的矩阵和向量运算,操作数用于指示该矩阵-向量运算指令的数据信息,其中,数据信息可以是立即数或寄存器号。
图145是本披露实施例的运算装置采用两条指令的方式执行运算的流程图。如图145所示,过程包括:
步骤S1,取指模块取出一条位宽配置指令,并将指令送往译码模块;
步骤S2,译码模块对所述指令译码,并将所述指令送往指令队列;
其中,S2可以包括步骤S2.1,在译码模块,所述指令被送往指令接受模块;
步骤S2.2,指令接收模块将所述指令发送到微指令译码模块,进行微指令译码;
步骤S2.3,微指令译码模块将指令译码成控制运算单元选定指定位宽的运算器的微指令,发送到微指令发射队列;
步骤S3,取指模块取出一条神经网络运算以及矩阵/向量指令,并将所述指令送往译码模块;
步骤S4,译码模块对所述指令译码,并将所述指令送往指令队列;
其中S4可以包括:步骤S4.1,在译码模块中,所述指令被送往指令接受模块;
步骤S4.2,指令接受模块将所述指令发送到微指令译码模块,进行微指令译码;
步骤S4.3,微指令译码模块从标量寄存器里获取所述指令的神经网络运算操作码和神经网络运算操作数,同时将所述指令译码成控制各个功能部件的微指令,送往微指令发射队列;
步骤S5,在取得需要的数据后,所述指令被送往依赖关系处理单元;依赖关系处理单元分析所述指令与之前尚未执行完的指令在数据上是否存在依赖关系,如果存在,则所述指令需要在存储队列中等待至其与之前未执行完的指令在数据上不再存在依赖关系为止;
步骤S6,将所述指令对应的微指令以及之前的指定运算器位宽的微指令送往运算单元;
步骤S7,运算单元根据所需数据的地址和大小从高速暂存存储器中取出需要的数据;然后判断是否有与位宽指定指令中位宽域相同的运算器,如果有,则选用匹配的运算器完成所述指令对应的神经网络运算和/或矩阵/向量运算,如果没有,则通过将低位宽的运算器合并的方式组成一个所需位宽的运算器来完成所述指令对应的神经网络运算和/或矩阵/向量运算;
S8,运算完成后,将输出数据写回至高速暂存存储器的指定地址,同时重排序缓存中的该指令被提交。
本披露一种运算器位宽可配置的用于执行神经网络运算以及矩阵/向量运算的装置和方法能够应用在神经网络的其他运算方法或计算装置内,本披露并不限制上述方法或装置的应用场景。
综上所述,本披露了一种运算器位宽可配置的用于执行神经网络运算以及矩阵/向量运算的装置和方法,配合相应的指令,能够很好地解决当前计算机领域神经网络算法和大量矩阵/向量运算的问题,相比于已有的传统解决方案,本披露可以具有指令可配置、使用方便、运算器的位宽可以选择,多个运算器可以合并,并通过专用位宽配置指令和在运算指令上指定位宽域两种方式来实现运算器位宽的配置,支持的神经网络规模和矩阵/向量位宽和规模灵活、片上缓存充足,运算器可合并等优点。通过指令中的位宽域来指定运算数据的位宽,使得运算数据的位宽能够根据需要任意配置,针对某一位宽的运算数据,如果存在与该位宽符合的运算器,可直接调用该运算器执行运算,如果该运算数据的位宽过大,没有符合该位宽的运算器,可对多个较低位宽的运算器进行合并,以构造新的运算器,并利用新的运算 器执行运算,能够支持不同位宽运算数据的运算,以实现高效的神经网络运算、矩阵运算及向量运算,同时,节省运算器的数量,减少硬件面积。采用高速暂存存储器,其能够实现对不同长度和不同位宽的运算数据(如:神经元、向量、矩阵)的存储。
如图146所示,该计算装置包括:存储介质611(可选的)、寄存器单元612、互联模块613、运算单元614、控制器单元615和数据访问单元616;
其中,运算单元614如图147所示:包括:加法计算器、乘法计算器、复数加法运算器(可选的)、复数乘法运算器(可选的),对于运算单元,其包括:加法计算器和乘法计算器,复数乘法运算器、复数加法运算器或非线性运算器等等可以依据具体的非线性运算公式来确定是否设置到运算单元内。
具体的如图147所示,第一流水级包括但不限于:矩阵乘法计算器等等。
第二流水级包括但不限于:矩阵加法计算器、大小比较计算器(例如比较器)等等。
第三流水级包括但不限于:非线性运算器(例如激活运算器)等等。
互联模块613,用于控制运算单元614中计算器的连接关系使得至少二种计算器组成不同的计算拓扑结构。
指令存储单元(可以是寄存器单元,指令缓存,高速暂存存储器)612,用于存储该运算指令、数据块的在存储介质的地址、运算指令对应的计算拓扑结构。
存储介质611可以为片外存储器,当然在实际应用中,也可以为片内存储器,用于存储数据块,该数据块可以为不连续的数据块。
控制器单元615,用于从寄存器单元612内提取运算指令、该运算指令对应的操作域以及该运算指令对应的第一计算拓扑结构,将该运算指令译码成执行指令,该执行指令用于控制运算单元执行运算操作,将该操作域传输至数据访问单元616,将该计算拓扑结构传输至互联模块613。
数据访问单元616,用于随机访问存储介质611,从存储介质611中提取该操作域对应的多个数据,并将该多个数据组合成数据块传输至互联模块613。
互联模块613、用于接收第一计算拓扑结构和数据块。一个实施例里,互联模块613还根据第一计算拓扑结构对数据块重新摆放。
运算单元614,用于该执行指令调用运算单元614的计算器对该数据块执行运算操作得到运算结果,将该运算结果传输至数据访问单元存储在存储介质内。一个实施例里,运算单元614,用于按第一计算拓扑结构以及该执行指令调用计算器对重新摆放的数据块执行运算操作得到运算结果,将该运算结果传输至数据访问单元存储在存储介质内。
另一个实施例里,互联模块613、用于依据控制运算单元614中计算器的连接关系形成第一计算拓扑结构。
本披露提供的计算装置设置了互联模块,此互联模块能够根据运算指令的需要将运算单元内的计算器组合连接得到与该运算指令对应的计算拓扑结构,进而在后续的运算单元运算时无需对计算的中间数据执行存储或提取操作,此结构实现单一指令即能实现一次输入即能够进行多次计算器的运算得到计算结果的优点,提高了计算效率。
本披露还提供一种扩展计算指令,该操作码和操作域,所述操作码包括:识别第一运算指令的标识(例如ROT);所述操作域包括:第一计算指令的输入数据地址、第一计算指令的输出数据地址、第二计算指令的标识、第二计算指令的输入数据、数据类型以及数据长度N。
可选的,上述扩展指令具体还可以包括:第三计算指令以及第三计算指令的输入数据。
需要说明的是,上述计算指令可以为向量指令或矩阵指令,本披露具体实施方式并不限制上述计算指令的具体表现形式。
参阅图148,图148提供了一种扩展计算指令的实现方法,该方法中的扩展计算指令可以包括:操作码和操作域,所述操作码包括:识别第一运算指令的标识(例如ROT);所述操作域包括:第一计算指 令的输入数据地址、第一计算指令的输出数据地址、第二计算指令的标识、第二计算指令的输入数据、数据类型以及数据长度N(其为用户自行设定值,本披露并不限制N的具体形式);该方法由计算装置或计算芯片执行,该计算装置如图1A所示。该方法如图1所示,包括如下步骤:
步骤S101、计算装置获取扩展计算指令,解析该扩展计算指令得到第一计算指令以及第二计算指令;
步骤S102、计算装置依据第一计算指令以及第二计算指令确定计算顺序,按所述计算顺序执行第一计算指令以及第二计算指令得到该扩展计算指令的结果。
本披露提供的技术方案提供了扩展计算指令的实现方法,使得计算装置能够对该扩展计算指令执行两个计算指令的计算,使得单个扩展计算指令能够实现两种类型的计算,减少了计算的开销,降低了功耗。
可选的,上述计算顺序具体可以包括:无序计算、正序计算或倒序计算中的任意一种,无序计算时,即第一计算指令与第二计算指令没有相应的顺序的要求,正序计算时即先执行第一计算指令,后执行第二计算指令,倒序计算时即先执行第二计算指令,后执行第一计算指令。
上述计算装置依据第一计算指令以及第二计算指令确定计算顺序的具体实现方式可以为,计算装置识别第一计算指令的输出数据与第二计算指令的输入数据是否相同,如相同,确定计算顺序为正序计算,反之计算装置识别第一计算指令的输入数据与第二计算指令的输出数据是否相同,如相同,确定计算顺序为倒序计算,计算装置识别第一计算指令的输入数据与第二计算指令的输出数据是否关联,如不关联,确定计算顺序为无序计算。
具体的以一个实际的例子来说明,如F=A*B+C,第一计算指令为矩阵乘法指令,第二计算指令为矩阵加法指令,由于第二计算指令的矩阵加法指令需要应用到第一计算指令的结果即输出数据,所以确定该计算顺序为正序计算。又如,F=OP(A)*OP(B),其中,第一运算指令为矩阵乘法指令,第二运算指令为变换,例如转置或共轭,则由于第一运算指令使用了第二运算指令的输出,所以其运算顺序为倒序计算。如没有相应关联,即第一计算指令的输出数据与第二计算指令的输入数据不相同且第一计算指令的输入数据与第二计算指令的输入数据也不相同,确定不关联。
本披露提供的向量指令的扩展,强化了指令的功能,用一条指令代替了原来的多条指令。这样减少了复杂向量、矩阵操作所需的指令数量,简化了向量指令的使用;与多条指令相比,不需要存储中间结果,既节约了存储空间,又避免了额外的读写开销。
如第一计算指令为向量指令,对于向量指令中的输入向量或矩阵,指令增加对其进行缩放的功能即在操作域增加表示缩放系数的操作数,在读入该向量时首先按照缩放系数对其进行缩放(即第二计算指令为缩放指令)。如果向量指令中有多个输入向量或矩阵相乘的操作,则这些输入向量或矩阵对应的缩放系数可以合并成一个。
如第一计算指令为向量指令,对于向量指令中的输入矩阵,指令增加对其进行转置的功能(即第二计算指令为转置指令)。在指令中增加表示是否对其进行转置的操作数,代表在运算前是否对该矩阵进行转置。
如第一计算指令为向量指令,对于向量指令中的输出向量或矩阵,指令增加与原始的输出向量或矩阵相加的功能(即第二计算指令为加法指令)。在指令中增加表示对原始的输出向量或矩阵进行缩放的系数(即添加第三计算指令,第三计算指令可以为缩放指令),指令表示在进行完向量或矩阵操作后,把结果与缩放后的原始输出相加,作为新的输出。
如第一计算指令为向量指令,对于向量指令中的输入向量,指令增加按照固定步长读取的功能。在指令中增加表示输入向量读取步长的操作数(即第二计算指令为按固定步长读取向量),表示向量中相邻两个元素的地址之差。
如第一计算指令为向量指令,对于向量指令中的结果向量,指令增加按照固定步长写入结果的功能(即第二计算指令按固定步长写入向量)。在指令中增加表示结果向量读取步长的操作数,表示向量中 相邻两个元素的地址之差。如果一个向量既是输入又作为结果,则该向量作为输入和作为结果时使用同一个步长。
如第一计算指令为向量指令,对于向量指令中的输入矩阵,指令增加按照固定步长读取行或列向量的功能(即第二计算指令为按固定步长读取多个向量)。在指令中增加表示矩阵读取步长的操作数,表示矩阵行或列向量之间的首地址之差。
如第一计算指令为向量指令,对于向量指令中的结果矩阵,指令增加按照固定步长读取行或列向量的功能(即第二计算指令为按固定步长写入多个向量)。在指令中增加表示矩阵读取步长的操作数,表示矩阵行或列向量之间的首地址之差。如果一个矩阵既是输入又是结果矩阵,则作为输入和作为结果使用同一个步长。
下面以一些实际的计算指令来说明上述扩展计算指令的实际结构。
上述扩展指令包括平面旋转指令,该平面旋转指令用于进行多个点在平面内的旋转坐标变换。
其中,上述平面旋转指令可表示为:ROT(TYPE1,N1,X1,INCX1,Y1,INCY1,C1,S)。该平面旋转指令的操作码为ROT,用于指示进行平面旋转运算,上述平面旋转指令的操作域包括:TYPE1,N1,X1,INCX1,Y1,INCY1,C1和S。
表1-1
操作域 | 功能描述 |
TYPE1 | 进行操作的数据类型,支持实数和复数 |
N1 | 向量的长度 |
X1 | 向量x1的首地址 |
INCX1 | 向量x1的元素之间的地址间隔 |
Y1 | 向量y1的首地址 |
INCY1 | 向量y1的元素之间的地址间隔 |
C1 | 标量c1的首地址 |
S | 标量s的首地址 |
其中,上述操作域TYPE1用于指示参与进行平面旋转运算的数据类型。
其中,上述控制器单元615获取上述平面旋转指令后,对该平面旋转指令进行解析,以得到操作码和操作域。上述控制器单元615根据上述向量的长度、向量x1的首地址和向量x1的元素之间的地址间隔从上述存储介质611中获取向量x1,上述控制器单元615根据上述向量的长度、向量y1的首地址和向量y1的元素之间的地址间隔从上述存储介质611中获取向量y1,上述控制器单元615根据上述标量c1的首地址和标量s的首地址从上述存储介质611中获取上述标量c1和标量s,并将上述向量x1、向量y1、标量c1和标量s传输至上述运算单元614。
上述运算单元614根据公式(1)进行运算。公式(1)如下:
上述运算单元614将根据c1*x
i+s*y
i得到的计算结果存储到向量x1的第i个元素的存储地址对应的存储空间中,将根据c1*y
i-s*x
i得到的计算结果存储到向量y1的第i个元素的存储地址对应的存储空间中。其中,x
i为上述向量x1中的第i个元素,y
i为上述向量y1中的第i个元素。
如表1-1所示的平面旋转指令格式中的向量的长度可变,可以减少指令数量,简化指令的使用。支持按一定间隔存储的向量格式,避免了对向量格式进行变换的执行开销和存储中间结果的空间占用。支持复数的运算,扩充了指令功能。
在一个实施例中,上述扩展指令还包括吉文斯(Givens)旋转指令,该吉文斯旋转指令用于进行多个点在平面内的吉文斯旋转操作。
其中,上述吉文斯旋转指令可表示为:ROTM(TYPE2,N2,X2,INCX2,Y2,INCY2,FLAG,PARAM)。该吉文斯旋转指令的操作码为ROTM,用于指示进行吉文斯旋转运算,上述吉文斯旋转指令的操作域包括:TYPE2,N2,X2,INCX2,Y2,INCY2,FLAG和PARAM。
表1-2
其中,上述操作域TYPE2用于指示参与进行吉文斯旋转运算的数据类型。吉文斯矩阵H中的元素由参数标志位FLAG和PARAM确定。
其中,上述控制器单元615获取上述吉文斯旋转指令后,对该吉文斯旋转指令进行解析,以得到操作码和操作域。上述控制器单元615根据上述向量的长度、向量x2的首地址和向量x2的元素之间的地址间隔从上述存储介质611中获取向量x2,上述控制器单元615根据上述向量的长度、向量y2的首地址和向量y2的元素之间的地址间隔从上述存储介质611中获取向量y2,上述控制器单元615根据参数标志位FLAG和操作域PARAM确定吉文斯矩阵H,并将上述向量x、向量y和吉文斯矩阵H传输至上述运算单元614。
上述运算单元614根据公式(2)进行运算,以得到运算结果。
其中,x
i为上述向量x2中的第i个元素,y
i为上述向量y2中的第i个元素。上述运算单元614将运算结果存储到向量x2中的第i个元素的存储地址对应的存储空间和向量x2中的第i个元素的存储地址对应的存储空间。
如表1-2所示的吉文斯选址指令格式中的向量的长度可变,可以减少指令数量,简化指令的使用。 支持按一定间隔存储的向量格式,避免了对向量格式进行变换的执行开销和存储中间结果的空间占用。区分了吉文斯旋转的普遍形式和各类特殊形式,既保证了通用性,又方便对特殊情况进行优化。
在一个实施例中,上述扩展指令包括向量交换指令,该向量交换指令用于进行交换两个向量中的元素。
其中,上述向量交换指令可表示为:SWAP(TYPE3,N3,X3,INCX3,Y3,INCY3)。该向量交换指令的操作码为SWAP,用于指示进行向量交换运算,上述向量交换指令的操作域包括:TYPE3,N3,X3,INCX3,Y3和INCY3。
表1-3
操作域 | 功能描述 |
TYPE3 | 进行操作的数据类型,支持实数和复数 |
N3 | 向量的长度 |
X3 | 向量x3的首地址 |
INCX3 | 向量x3的元素之间的地址间隔 |
Y3 | 向量y3的首地址 |
INCY3 | 向量y3的元素之间的地址间隔 |
其中,上述操作域TYPE3用于指示参与进行向量交换运算的数据类型。
其中,上述控制器单元615获取上述向量交换指令后,对该向量交换指令进行解析,以得到操作码和操作域。上述控制器单元615根据上述向量的长度、向量x3的首地址和向量x3的元素之间的地址间隔从上述存储介质611中获取向量x3,上述控制器单元615根据上述向量的长度、向量y3的首地址和向量y3的元素之间的地址间隔从上述存储介质611中获取向量y3,并将上述向量x1和向量y1传输至上述运算单元614。
运算单元614将上述向量x3中的第i个元素存储到上述向量y3中的第i个元素的存储地址对应的存储空间中,将上述向量y3中的第i个元素存储到上述向量x3中的第i个元素的存储地址对应的存储空间中。
如表1-3所示的向量交换指令格式中的向量的长度可变,可以减少指令数量,简化指令的使用。支持按一定间隔存储的向量格式,避免了对向量格式进行变换的执行开销和存储中间结果的空间占用。
在一个实施例中,上述扩展指令包括向量缩放指令,该向量缩放指令用于计算得到向量乘以一个标量的结果。
其中,上述向量缩放指令可表示为:SCAL(TYPE4,N4,X4INCX4,C2)。该向量缩放指令的操作码为SCAL,用于指示进行向量缩放运算,上述向量缩放指令的操作域包括:TYPE4,N4,X4,INCX4,和C2。计算结果=a*x
表1-4
操作域 | 功能描述 |
TYPE4 | 进行操作的数据类型,支持实数 |
N4 | 向量的长度 |
X4 | 向量x4的首地址 |
INCX4 | 向量x4的元素之间的地址间隔 |
C2 | 标量c2的首地址 |
其中,上述操作域TYPE4用于指示参与进行向量缩放运算的数据类型。
其中,上述控制器单元615获取上述向量缩放指令后,对该向量缩放指令进行解析,以得到操作码和操作域。上述控制器单元615根据上述向量的长度、向量x4的首地址和向量x4的元素之间的地址间 隔从上述存储介质611中获取向量x4,上述控制器单元615根据上述标量c2的首地址从上述存储介质611中获取上述标量c2,并将上述向量x4和标量c2传输至上述运算单元614。
上述运算单元614根据公式x
i=x
i*c2对上述向量x4中的每个元素x
i进行缩放运算,并将得到的结果存储至元素x
i的存储地址对应的存储空间中。
如表1-4所示的向量缩放指令格式中向量的长度可变,可以减少指令数量,简化指令的使用。支持按一定间隔存储的向量格式,避免了对向量格式进行变换的执行开销和存储中间结果的空间占用。
在一个实施例中,上述扩展指令包括向量复制指令,该向量复制指令用于将一个向量复制到另外一个向量中。
其中,上述向量复制指令可表示为:COPY(TYPE5,N5,X5,INCX5,Y5,INCY5)。该向量复制指令的操作码为COPY,用于指示进行向量复制运算,上述向量复制指令的操作域包括:TYPE5,N5,X5,INCX5,Y5,和INCY5。
表1-5
操作域 | 功能描述 |
TYPE5 | 进行操作的数据类型,支持实数和复数 |
N5 | 向量的长度 |
X5 | 向量x5的首地址 |
INCX5 | 向量x5的元素之间的地址间隔 |
Y5 | 向量y5的首地址 |
INCY5 | 向量y5的元素之间的地址间隔 |
其中,上述操作域TYPE5用于指示参与进行向量复制运算的数据类型。
其中,上述控制器单元615获取上述向量复制指令后,对该向量复制指令进行解析,以得到操作码和操作域。上述控制器单元615根据上述向量的长度、向量x5的首地址和向量x5的元素之间的地址间隔从上述存储介质611中获取向量x5,并将上述向量x5传输至上述运算单元614。
上述运算单元614将上述向量x5中第i个元素存储至上述向量y5中第i个元素的存储地址对应的存储空间中。
如表1-5所示的向量复制指令格式中向量的长度可变,可以减少指令数量,简化指令的使用。支持按一定间隔存储的向量格式,避免了对向量格式进行变换的执行开销和存储中间结果的空间占用。
在一个实施例中,上述扩展指令包括向量乘加指令,该向量乘加指令用于计算向量与标量的积并把计算结果与另外一个向量相加。
其中,上述向量乘加指令可表示为:AXPY(TYPE6,N6,X6,INCX6,Y6,INCY6,C3)。该向量乘加指令的操作码为AXPY,用于指示进行向量乘加运算,上述向量乘加指令的操作域包括:TYPE6,N6,X6,INCX6,Y6,INCY6和C3。
表1-6
操作域 | 功能描述 |
TYPE6 | 进行操作的数据类型,支持实数和复数 |
N6 | 向量的长度 |
X6 | 向量x6的首地址 |
INCX6 | 向量x6的元素之间的地址间隔 |
Y6 | 向量y6的首地址 |
INCY6 | 向量y6的元素之间的地址间隔 |
C3 | 标量c3的首地址 |
其中,上述操作域TYPE6用于指示参与进行向量乘加运算的数据类型。
其中,上述控制器单元615获取上述向量乘加指令后,对该向量乘加指令进行解析,以得到操作码和操作域。上述控制器单元615根据上述向量的长度、向量x6的首地址和向量x6的元素之间的地址间隔从上述存储介质611中获取向量x6,上述控制器单元615根据上述向量的长度、向量y6的首地址和向量y6的元素之间的地址间隔从上述存储介质611中获取向量y6,上述控制器单元615根据上述标量c3的首地址从上述存储介质611中获取上述标量c3,并将上述向量x6、向量y6和标量c3传输至上述运算单元614。
上述运算单元614按照公式y
i=x
i*c3+y
i进行计算。该运算单元614将向量x6中的第i个元素与标量c3相乘的结果与上述向量y6中的第i个元素进行相加,将相加得到的结果存储至上述向量y6中的第i个元素的存储地址对应的存储空间中。
如表1-6所示的向量乘加指令格式中向量的长度可变,可以减少指令数量,简化指令的使用。支持按一定间隔存储的向量格式,避免了对向量格式进行变换的执行开销和存储中间结果的空间占用。
在一个实施例中,上述扩展指令包括向量点积指令,该指令用于计算向量与向量的点积。
其中,上述向量点积指令可表示为:DOT(TYPE7,N7,X7,INCX7,Y7,INCY7,C4)。该量点积指令的操作码为DOT,用于指示进行量点积运算,上述量点积指令的操作域包括:TYPE7,N7,X7,INCX7,Y7,INCY7和C4。
表1-7:
操作域 | 功能描述 |
TYPE7 | 进行操作的数据类型,支持实数和复数 |
N7 | 向量的长度 |
X7 | 向量x7的首地址 |
INCX7 | 向量x7的元素之间的地址间隔 |
Y7 | 向量y7的首地址 |
INCY7 | 向量y7的元素之间的地址间隔 |
C4 | 标量c4的首地址 |
其中,上述操作域TYPE7用于指示参与进行向量点积运算的数据类型。
其中,上述控制器单元615获取上述向量点积指令后,对该向量点积指令进行解析,以得到操作码和操作域。上述控制器单元615根据上述向量的长度、向量x7的首地址和向量x7的元素之间的地址间隔从上述存储介质611中获取向量x7,上述控制器单元615根据上述向量的长度、向量y7的首地址和向量y7的元素之间的地址间隔从上述存储介质611中获取向量y7,并将上述向量x7和向量y7传输至上述运算单元614。
其中,上述x
i和y
i为别为上述向量x7和y7中的第i个元素。
如表1-7所示的向量点积指令格式中向量的长度可变,可以减少指令数量,简化指令的使用。支持按一定间隔存储的向量格式,避免了对向量格式进行变换的执行开销和存储中间结果的空间占用。
在一个实施例中,上述扩展指令包括向量范数指令,该指令用于计算向量的欧几里得范数。
其中,上述向量范数指令可表示为:NORM2(TYPE8,N8,X8,INCX8,C5)。该向量范数指令的操作码为NORM2,用于指示进行向量范数运算,上述向量范数指令的操作域包括:TYPE8,N8,X8,INCX8 和C5。
表1-8
操作域 | 功能描述 |
TYPE8 | 进行操作的数据类型,支持实数和复数 |
N8 | 向量的长度 |
X8 | 向量x8的首地址 |
INCX8 | 向量x8的元素之间的地址间隔 |
C5 | 标量c5的首地址 |
其中,上述操作域TYPE8用于指示参与进行向量范数运算的数据类型。
其中,上述控制器单元615获取上述向量范数指令后,对该向量范数指令进行解析,以得到操作码和操作域。上述控制器单元615根据上述向量的长度、向量x8的首地址和向量x8的元素之间的地址间隔从上述存储介质611中获取向量x8,将该向量x8传输至上述运算单元614。
如表1-8所示的向量范数指令格式中向量的长度可变,可以减少指令数量,简化指令的使用。支持按一定间隔存储的向量格式,避免了对向量格式进行变换的执行开销和存储中间结果的空间占用。
在一个实施例中,上述扩展指令包括向量加和指令,该指令用于计算向量的所有元素的相加的和。
其中,上述向量加和指令可表示为:ASUM(TYPE9 N9 X9,INCX9,C6)。该向量加和指令的操作码为ASUM,用于指示进行向量加和运算,上述向量加和指令的操作域包括:TYPE9,N9,X9,INCX9和C6。
表1-9
操作域 | 功能描述 |
TYPE9 | 进行操作的数据类型,支持实数 |
N9 | 向量的长度 |
X9 | 向量x9的首地址 |
INCX9 | 向量x9的元素之间的地址间隔 |
C6 | 标量c6的首地址 |
其中,上述操作域TYPE9用于指示参与进行向量加和运算的数据类型。
其中,上述控制器单元615获取上述向量加和指令后,对该向量加和指令进行解析,以得到操作码和操作域。上述控制器单元615根据上述向量的长度、向量x9的首地址和向量x9的元素之间的地址间隔从上述存储介质611中获取向量x9,并将该向量x9传输至上述运算单元614。
如表1-9所示的向量加和指令格式中向量的长度可变,可以减少指令数量,简化指令的使用。支持按一定间隔存储的向量格式,避免了对向量格式进行变换的执行开销和存储中间结果的空间占用。
在一个实施例中,上述扩展指令包括向量最小值指令,该指令用于计算向量的所有元素中最大元素的位置。
其中,上述向量最小值指令可表示为:AMIN(TYPE10 N10 X10,INCX10,C7)。该向量最小值指令的操作码为AMIN,用于指示进行向量最小值运算,上述向量最小值指令的操作域包括:TYPE10 N10 X10, INCX10和C7。
表1-10
操作域 | 功能描述 |
TYPE10 | 进行操作的数据类型,支持实数 |
N10 | 向量的长度 |
X10 | 向量x10的首地址 |
INCX10 | 向量x10的元素之间的地址间隔 |
C7 | 标量c7的首地址 |
其中,上述操作域TYPE10用于指示参与进行向量最小值运算的数据类型。
其中,上述控制器单元615获取上述向量最小值指令后,对该向量最小值指令进行解析,以得到操作码和操作域。上述控制器单元615根据上述向量的长度、向量x10的首地址和向量x10的元素之间的地址间隔从上述存储介质611中获取向量x10,并将该向量x10传输至上述运算单元614。
上述运算单元614采用两两比较法或者其他方法从上述向量x10中获取最小元素的位置,并将该位置存储至上述标量c7的首地址对应的存储空间中。
如表1-10所示的向量最小值指令格式中向量的长度可变,可以减少指令数量,简化指令的使用。支持按一定间隔存储的向量格式,避免了对向量格式进行变换的执行开销和存储中间结果的空间占用。
在一个实施例中,上述扩展指令包括向量最大值指令,该指令用于计算向量的所有元素中最大元素的位置。
其中,上述向量最大值指令可表示为:AMAX(TYPE11 N11 X11,INCX11,C8)。该向量最大值指令的操作码为AMAX,用于指示进行向量最大值运算,上述向量最大值指令的操作域包括:TYPE11,N11,X11,INCX11和C8。
表1-11
操作域 | 功能描述 |
TYPE11 | 进行操作的数据类型,支持实数 |
N11 | 向量的长度 |
X11 | 向量x11的首地址 |
INCX11 | 向量x11的元素之间的地址间隔 |
C8 | 标量c8的首地址 |
其中,上述操作域TYPE10用于指示参与进行向量最大值运算的数据类型。
其中,上述控制器单元615获取上述向量最大值指令后,对该向量最大值指令进行解析,以得到操作码和操作域。上述控制器单元615根据上述向量的长度、向量x11的首地址和向量x11的元素之间的地址间隔从上述存储介质611中获取向量x11,并将该向量x11传输至上述运算单元614。
上述运算单元614采用两两比较法或者其他方法从上述向量x11中获取最大元素的位置,并将该位置存储至上述标量c8的首地址对应的存储空间中。如表1-11所示的向量最大值指令格式中向量的长度可变,可以减少指令数量,简化指令的使用。支持按一定间隔存储的向量格式,避免了对向量格式进行变换的执行开销和存储中间结果的空间占用。
在一个实施例中,上述扩展指令包括矩阵向量乘指令,该指令用于指示计算矩阵与向量的乘积。
其中,上述矩阵向量乘指令可以表示为:GEMV(TYPE12,LAYOUT1,M1,N12,C9,A1,LDA1,X12,INCX12,C10,Y12,INCY12)。该矩阵向量乘指令的操作码为GEMV,用于指示进行矩阵向量乘运算,上述矩阵向量乘指令的操作域包括:TYPE12,LAYOUT1,M1,N12,C9,A1,LDA1,X12,INCX12,C10,Y12和INCY12。
计算结果=α*A*x+β*y表1-12
其中,上述操作域TYPE12用于指示参与进行矩阵向量乘运算的数据类型。
其中,上述控制器单元615获取上述矩阵向量乘指令后,对该矩阵向量乘指令进行解析,以得到操作码和操作域。上述控制器单元615根据所述矩阵A1的首地址、所述矩阵的存储格式和所述矩阵A1的低维长度从所述存储介质611中获取所述矩阵A1,所述矩阵A1中元素的个数为所述矩阵A1的行数与所述矩阵A1的列数之积;根据上述矩阵变换信息TRANS1对所述矩阵A1进行转换,以得到转换后的矩阵A1;根据上述向量x12中元素的首地址和向量x12的元素之间的地址间隔从所述存储介质611中获取向量x12,根据所述向量y12中元素的首地址和向量y12的元素之间的地址间隔从所述存储介质中获取向量y12;根据标量c9的首地址和标量c10的首地址从所述存储介质611中分别获取所述标量c9和标量c10;将所述转换后的矩阵A1或矩阵A1、向量x12、向量y12、标量c9和标量c10传输至上述运算单元614。
该运算单元104按照以下公式(3)对上述矩阵A1、向量x12、向量y12、标量c9和标量c10进行向量点积运算。
y12:=c9*A1*x12+c10*y12 (3)
上述运算单元104根据公式c9*A1*x12得到向量B1,根据公式c10*y12得到的向量B2,向量B1与向量B2之和为向量B3;向量B3中元素的个数与上述向量y12中元素的个数一致,上述运算单元104将该向量B3中的第i个元素存储到上述向量y12中的第i个元素的首地址对应的存储空间中。
如表1-12所示的矩阵向量乘指令格式中标量c9和c10可对矩阵和向量进行缩放,增加了指令的灵活性,避免了利用缩放指令进行缩放的额外开销。向量和矩阵的规模可变,可以减少指令数量,简化指令的使用。可以处理不同存储格式(行主序和列主序)的矩阵,避免了对矩阵进行变换的开销。可以实现对矩阵的转置和求共轭等变换,避免了单独进行矩阵变换所带来的额外的开销。支持按一定间隔存储的向量格式,避免了对向量格式进行变换的执行开销和存储中间结果的空间占用。支持按照一定间隔存储的矩阵格式,避免了对矩阵存储格式进行变换的执行开销和存储中间结果的空间占用。
在一个实施例中,上述扩展指令包括向量外积指令,该向量外积指令用于计算两个向量的张量积(外 积)。
其中,上述向量外积指令可表示为:GER(TYPE13,LAYOUT2,M2,N13,C11,X13,INCX13,Y13,INCY13,A2,LDA2)。该向量外积指令的操作码为GER,用于指示进行向量外积运算,上述向量外积指令的操作域包括:TYPE13,LAYOUT2,M2,N13,C11,X13,INCX13,Y13,INCY13,A2和LDA2。
表1-13
其中,上述操作域TYPE13用于指示参与进行向量外积运算的数据类型。
其中,上述控制器单元615获取上述向量外积指令后,对该向量外积指令进行解析,以得到操作码和操作域。根据矩阵A2的首地址、矩阵的存储格式和所述矩阵A2的低维长度从所述存储器中获取所述矩阵A2,所述矩阵A2中元素的个数为所述矩阵A2的行数与所述矩阵A2的列数之积;根据向量x13中元素的首地址和向量x13的元素之间的地址间隔从存储介质611中获取向量x13,根据向量x13中元素的首地址和从存储介质611中获取向量y13;根据标量c11的首地址从所述存储介质中获取标量c11;将所述矩阵A2、向量x13、向量y13和标量c11传输至所述运算单元614。
该运算单元104按照以下公式(4)对上述筛选后的稀疏向量x13和筛选后的稀疏向量y13、第十标量c10和矩阵A1进行向量点积运算。
A2:=c11*x13*y13
T+A2 (4)
需要指出的是,上述运算单元104根据公式c11*x13*y13
T计算得到的结果为矩阵A’,且该矩阵A’的形式与上述矩阵A2的形式一致,矩阵A’中的第i个元素与上述矩阵A2中的第i个元素相加得到的结果存储到该矩阵A2的第i个元素的首地址对应的存储空间中。
如表1-13所示的向量外积指令格式中标量c11对结果矩阵进行缩放,增加了指令的灵活性,避免了利用缩放指令进行缩放的额外开销。向量和矩阵的规模可变,可以减少指令数量,简化指令的使用。可以处理不同存储格式(行主序和列主序)的矩阵,避免了对矩阵进行变换的开销。支持按一定间隔存储的向量格式,避免了对向量格式进行变换的执行开销和存储中间结果的空间占用。
在一个实施例中,上述扩展指令包括矩阵相乘指令,该矩阵相乘指令用于计算矩阵相乘。
其中,上述矩阵相乘指令可表示为:GEMM(TYPE14,LAYOUT3,TRANSA,TRANSB,M3,N14,K,C12,A3,LDA3,B,LDB,C13,C,LDC)。该矩阵相乘指令的操作码为GEMM,用于指示进行矩阵相乘运算,上述矩阵相乘指令的操作域包括:TYPE14,LAYOUT3,TRANSA,TRANSB,M3,N14,K,C12,A3,LDA3,B,LDB,C13,C和LDC。
表1-14
其中,上述操作域TYPE14用于指示参与进行矩阵相乘运算的数据类型。
其中,上述控制器单元615获取上述矩阵相乘指令后,对该矩阵相乘指令进行解析,以得到操作码和操作域。上述控制器单元615根据矩阵A3的各行元素的首地址、常数M3、矩阵存储格式LAYOUT3和矩阵A3的低维长度从存储介质611中获取矩阵A3;根据矩阵A3的变换信息对矩阵A3进行变换,以得到op(A3);根据矩阵B的的首地址、矩阵的存储格式LAYOUT3和矩阵B的低维长度从存储介质611中获取矩阵B;矩阵B中元素的个数为常数N14和常数K之积;根据所述矩阵C的首地址、矩阵存储格式LAYOUT3和矩阵C的低维长度从存储介质611中获取矩阵C;矩阵C中元素的个数为常数M3和常数N14之积;根据矩阵A3的变换信息对该矩阵A3进行变换,以得到所述op(A3);根据矩阵B的变换信息对该矩阵B进行变换,以得到所述op(B);根据标量c12的首地址和标量c13的首地址从存储介质611中分别获取标量c12和标量c13;将op(A3)、op(B)、矩阵C、标量c12和标量c13传输至所述运算单元614。
上述运算单元104根据以下公式(5)对上述op(A3)、op(B)、矩阵C、标量c12和标量c13进行运算。
A5:=c13*op(sA3)*op(sA4)+c14*A5 (5)
上述运算单元104根据公式c12*op(A3)*op(B)对上述标量c12,op(A3)和op(B)进行运算,以得到矩阵Mx。上述运算单元614根据公式c13*C对上述矩阵C和标量c13进行运算,得到矩阵MA5,矩阵Mx与矩阵MA5直接进行相加运算,以得到矩阵MA5’,并将该矩阵MA5’中的第i个元素存储至上述矩阵C的第i个元素的首地址对应的存储空间中。
其中op(A3)和op(B)分别表示对A3和B进行转置、求共轭等操作之后的结果。
如表1-13所示的矩阵相乘指令格式中标量alpha和beta对矩阵进行缩放,增加了指令的灵活性,避免了利用缩放指令进行缩放的额外开销。矩阵的规模可变,可以减少指令数量,简化指令的使用。可以实现对矩阵的转置和求共轭等变换,避免了单独进行矩阵变换所带来的额外的开销。可以处理不同存储格式(行主序和列主序)的矩阵,避免了对矩阵进行变换的开销。支持按照一定间隔存储的矩阵格式, 避免了对矩阵存储格式进行变换的执行开销和存储中间结果的空间占用。
需要说明的是,上述任意一个表中的同一条指令中的向量或矩阵可以是不同的数据类型,包括浮点定点,位宽,复数等。指令中的变换除了转置和复数求共轭外,还可以包含其它的操作如求逆矩阵等,而且这些变换可以相互组合。对于向量操作可把运算符换成其它的操作类型,例如向量加换成乘、除等,求MAX换成求中间值等等。
对于如图1所示的计算装置,其实现扩展计算指令运算时计算出该扩展指令的具体结构,即通过一个扩展计算指令执行实现多条计算指令执行的组合,需要说明的是,对于计算装置执行该扩展指令时并未将该扩展指令拆分成多条计算指令。
本披露提供了一种数据传输装置,解决现有技术中存在的二维数据传送效率低下、多组数据交替传送时缺失过多的问题,从而使得2D DMA更广泛、高效地应用在图像、视频等应用中。上述数据传输装置可以更换运算装置或处理装置内的DMA模块以达到传输二维数据的有益效果,当然在实际应用中,也可以通过数据传输装置传输普通的数据。即该数据传输装置可以是包含DMA模块的所有功能的装置。需要说明的是,在神经网络领域的芯片、运算装置、处理器或计算器中,只要其包含了DMA,即都能够使用数据传输装置来替换该DMA,例如,可以添加在如图1、图4A、图2A或如图6A所示的计算装置内,当然还可以添加人工神经网络正向运算的装置或用于稀疏连接的人工神经网络计算装置内。在本披露并不限制上述DMA加载在何种硬件内以及加载的形式。当然在实际应用中,上述数据传输装置也可以称为DMA,当其称为DMA时,其具体的结构可以如图149所示。
为使本披露的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本披露作进一步的详细说明。
参见图149,图149为本披露实施例提供的一种数据传输装置的结构示意图。如图149所示,该数据传输装置包括寄存器模块和DMA控制模块,
其中,上述寄存器模块,用于存储二维数据的源地址、二维数据的目的地址和每次传输二维数据的数据量等参数。
其中,上述二维数据可为图像数据或者视频数据。
具体地,上述二维数据的源地址为该二维数据在源存储器的中的存储地址,上述二维数据的目的地址为指示该二维数据被传输至的存储空间对应的地址。上述二维数据的传输量为上述数据传输装置传输上述二维数据时每次传输的数据量。
需要说明的是,上述源存储器为上述二维数据的存储空间,上述目的存储器用于存储传输后的二维数据。上述源存储器可为内寄存器或者外部寄存器,上述目的存储器可为内寄存器或者外部寄存器,且该源存储器和目的存储器可为同一存储空间,也可为不同的存储空间。
上述寄存器模块包括:
标量寄存器包括提供二维数据传输过程中所需的地址寄存器、存储二维数据规模的寄存器和存储数据量等参数的寄存器。标量寄存器可以用于存储二维数据地址、二维数据规模等信息。
其中,二维数据地址为数据在内存或外存储器中存储的地址,即上述二维数据的源地址和目的地址;二维数据规模为二维数据在内存或外存储器中存储的行、列大小;还可为上述二维数据在计算机中存储的字节数、比特数等。
需要说明的是,上述二维数据为图像数据或者视频数据,但是最终以图像数据的形式存储于源存储器中。图像数据存储于源存储器中的最小单位为图像数据的一个像素点,以RGB的形式。对于图像数据,可以看成M行N列的像素点。
上述DMA控制模块,用于接收DMA指令,并根据DMA指令,从上述寄存器模块中获取二维数据的源地址,目的地址和每次传输二维数据的数据量;或者从上述DMA指令中获取上述二维数据的源地址,目的地址和每次传输二维数据的数据量;
根据上述二维数据的源地址,从上述源存储器中获取上述二维数据;
根据上述每次传输二维数据的数据量将上述二维数据传输至目的存储器中上述目的地址对应存储空间。
如图150所示,上述DMA控制模块包括:
指令单元,用于处理原始DMA指令,得到处理后的DMA指令;
加法单元,用于根据上述处理后的DMA指令,计算得到二维数据的源地址和二维数据的目的地址;
读写单元,用于根据所述源地址从上述源存储器中读取上述二维数据,并根据上述二维数据的目的地址将上述二维数据写入上述目的存储器中。
进一步地,上述读取单元根据处理后的DMA指令从上述寄存器模块中获取每次传输二维数据的数据量,并根据该每次传输二维数据的数据量分多次将上述二维数据传输至上述目的存储器中。
其中,上述加法单元和上述读写单元为多流水级结构,且上述加法单元处于第一流水级,上述读写单元在第二流水级。当连续串行的多条DMA指令到达时,可以更加高效地实现这一连串DMA指令所要求的操作。DMA控制模块负责上述数据传输装置的所有DMA操作,包括但不限于一维读取操作、一维写入操作、二维读取操作和二维写入操作。
进一步地,指令单元包括:
指令展开单元,用于将原始DMA指令展开为系统DMA指令,该系统DMA指令是DMA控制模块的控制指令。
当需要DMA传送二维数据时,则上述DMA控制模块收到DMA指令命令,该DMA指令表明所需二维数据的源地址、二维数据的目的地址和大小。其中,该源地址和目的地址还需要标记所属的存储空间,是内存还是外存储器,如果是外存储器,还需要标记所属的流。这里的“流”即前述多组数据交替传送时的分组,处理器对全部数据的需求可能是不连续的,但对某个特定的流来说,很可能是连续的。
指令缓存单元,用于存储系统DMA指令,即在执行DMA指令过程中,同时也被缓存在指令缓存单元中。当一条指令执行完之后,如果该指令同时也是指令缓存单元中未被提交指令中最早的一条指令,该指令将被提交,一旦提交,该条指令进行的操作对装置状态的改变将无法撤销。
在一种实施方式中,上述指令缓存单元可以是重排序缓存,也可以是其他缓存单元。
指令处理单元,用于处理指令缓存单元中的系统DMA指令。
其中,指令处理单元可以包括:
取指单元,用于从指令缓存单元中获取系统DMA指令;
译码单元,用于对系统DMA指令进行译码;
指令队列,用于对译码后的系统直接内存访问指令进行顺序存储。
此外,DMA控制模块还可以用于根据DMA指令,从处理器模块中的原始数据中获取二维数据传送至存储器模块中未存储该二维数据的位置,或者从处理器模块中的处理数据中获取二维数据并传输至存储器模块。
需要说明的是,上述处理器模块可为源存储器,上述存储器模块中未存储该二维数据的位置为目的存储器或者上述存储器模块为目的存储器。
上述数据传输装置还可以包括数据缓存单元,用于与源地址存储空间的内存及DMA控制模块进行数据传输,数据缓存单元可以为高速暂存存储器,可支持不同大小数据的传输,将待写入的数据暂存在高速暂存存储器中,稍后用于真正地写入存储器模块中。
上述数据传输装置还可以包括数据转换单元,用于对从源存储器中取出的数据作数据转换,其中数据转换包括但不限于数据精度转化、定浮点相互转换、数据排列方式转换、数据量大小转换。
在一种可行的实施例中,上述读写单元获取上述二维数据和该二维数据的目的地址后,直接根据二维数据的目的地址将二维数据写入目的存储器中。
在一种可行的实施例中,上述读写单元获取上述二维数据和该二维数据的目的地址后,将该二维数据及其目的地址传输至上述数据转换单元,该数据转换单元将该二维数据进行处理后,直接根据二维数据的目的地址将二维数据写入目的存储器中。
在一种可行的实施例中,上述读写单元获取上述二维数据和该二维数据的目的地址后,将该二维数据及其目的地址传输至上述数据转换单元,该数据转换单元将该二维数据进行处理后,将转换后的二维数据及其目的地址存储在上述数据缓存单元中。该数据缓存单元根据二维数据的目的地址将二维数据写入目的存储器中。
上述数据传输装置还可以包括地址映射单元,用于当源地址为虚拟地址时,对源地址作地址映射,将源地址转换为源地址对应的物理地址;当目的地址为虚拟地址时,对目的地址作地址映射,将目的地址转换为目的地址对应的物理地址。
本披露实施例提供的装置的DMA指令集采用载入/存储(Load/Store)结构,读写单元不会对内存中的数据进行操作。优选的,DMA指令集采用定长指令。
本披露实施例的另一方面,还提供了一种数据传输方法,用于DMA控制模块获取并存储二维数据,图151为本披露实施例的步骤流程图,如图151所示,包括步骤:
S301、数据传输装置根据接收到的DMA指令获取二维数据的源地址和目的地址。
具体地,上述数据传输装置接收DMA指令,根据该DMA指令从寄存器模块获取上述的二维数据的源地址和目的地址,或者从DMA指令中获取该二维数据的源地址和目的地址。
需要说明的是,上述数据传输方法可以应用到神经网络的其他计算方法或计算装置内,本披露并不限制上述方法的具体表现形式。上述寄存器模块存储有上述二维数据存储的源地址、目的地址及每次传输二维数据的数据量。
可选地,上述数据传输装置根据上述DMA指令从上述寄存器模块中获取每次传输二维数据的数据量。
S302、数据传输装置根据所述二维数据的源地址获取所述二维数据。
具体地,所有的数据预先存储在特定的源存储器中,该源存储器可以包括芯片内部的各个存储模块和外部的存储模块。上述数据传输装置根据获取到的二维数据的源地址,从上述源存储器中获取所述二维数据。
在一种可行的实施例中,在根据所述二维数据的源地址获取所述二维数据之前,当确定上述二维数据的源地址为虚拟地址时,上述数据传输装置对该二维数据的源地址进行地址映射,得到上述源地址的物理地址。上述数据传输装置根据上述源地址的物理地址从上述源存储器中获取上述二维数据。
S303、数据传输装置根据二维数据的目的地址将所述二维数据传输至目的存储器。
具体地,上述数据传输装置从寄存器模块或从DMA指令的字段中获取二维数据的目的地址后,根据二维数据的目的地址将上述二维数据传输至目的存储器。其中,该目的存储器可以包括芯片内部的各个存储模块和外部的存储模块。
其中,上述源存储器和上述目的存储器不为同一寄存器。
在一种可行的实施例中,上述数据传输装置根据上述每次传输二维数据的数据量分多次将上述二维数据传输至上述目的存储器中上述目的地址对应的存储空间中。
在一种可行的实施例中,在根据二维数据的目的地址将所述二维数据传输至目的存储器之前,确定上述二维数据的目的地址为虚拟地址时,上述数据传输装置对上述目的地址进行地址映射,将该目的地址转换成该目的地址对应的物理地址。上述数据传输装置根据上述目的地址对应的物理地址将上述二维数据传输至上述目的存储器中。
在一种可行的实施中,上述数据传输装置根据上述每次传输二维数据的数据量分多次将上述二维数据传输至上述目的存储器中上述目的地址对应的物理地址对应的存储空间中。
图152示意性示出了本披露实施例的指令集的格式示意图,如图152所示,每条指令包括一个操作 码和五个操作域,其中,操作码用于指示该指令的功能,DMA控制模块通过识别该操作码可进行相应的操作,操作域用于指示该指令的数据地址信息。指令集包含有不同功能的DMA指令:
DTT指令:根据该指令,读写单元从源地址读出一个字,写入目的地址,同时也写入数据缓存单元。数据传送指令包括五个操作域,分别为第一操作域、第二操作域、第三操作域、第四操作域和第五操作域。其中,上述第一操作域用于指示二维数据的源地址所属的存储空间,上述第二操作域用于指示二维数据的源地址,上述第三操作域用于指示二维数据的目的地址所属的存储空间,上述第四操作域用于指示二维数据的目的地址,上述第五操作域用于指示二维数据的每次传输二维数据的数据量。每条指令完成一个字大小的数据的传送。
ADJ指令:根据该指令,上述加法单元将上述寄存器模块中的任两个寄存器(包括一个地址寄存器和一个跳转值寄存器)中的值相加,然后写回到其中一个上述地址寄存器中,从而完成2D DMA任务中的换行操作。
上述地址寄存器用于存储所述源地址,上述跳转值寄存器用于存储源地址的跳转值。
上述ADJ指令包括两个操作域,,分别为第六操作域和第七操作域。其中,第六操作域用于指示地址寄存器的编号,第七操作域用于指示第跳转值寄存器的编号。上述ADJ指令将地址寄存器中的值加上跳转值寄存器中的值后,并将结果写回上述地址寄存器中。
图153示意性示出了本披露实施例的DMA控制模块执行2D DMA命令的流水线时空图,如图151所示,假设该2D DMA命令需要传送一块大小为3×3的数据,则整个过程一共需要9拍。也就是说,若该2D DMA命令传送的数据块大小为m×n,其中,m,n均为正整数,此时,本披露实施例的数据传输过程一共需要m×n拍。
需要说明的是,上述一拍为上述数据传输装置的一个时钟周期。
在一些实施例里,申请了一种板卡,其包括了上述芯片封装结构。参阅图154,图154提供了一种板卡,上述板卡除了包括上述芯片389以外,还可以包括其他的配套部件,该配套部件包括但不限于:存储器件390、接口装置391和控制器件392;
所述存储器件390与所述芯片封装结构内的芯片通过总线连接,用于存储数据。所述存储器件可以包括多组存储单元393。每一组所述存储单元与所述芯片通过总线连接。可以理解,每一组所述存储单元可以是DDR SDRAM(英文:Double Data Rate SDRAM,双倍速率同步动态随机存储器)。
DDR不需要提高时钟频率就能加倍提高SDRAM的速度。DDR允许在时钟脉冲的上升沿和下降沿读出数据。DDR的速度是标准SDRAM的两倍。在一个实施例中,所述存储装置可以包括4组所述存储单元。每一组所述存储单元可以包括多个DDR4颗粒(芯片)。在一个实施例中,所述芯片内部可以包括4个72位DDR4控制器,上述72位DDR4控制器中64bit用于传输数据,8bit用于ECC校验。可以理解,当每一组所述存储单元中采用DDR4-3200颗粒时,数据传输的理论带宽可达到25600MB/s。
在一个实施例中,每一组所述存储单元包括多个并联设置的双倍速率同步动态随机存储器。DDR在一个时钟周期内可以传输两次数据。在所述芯片中设置控制DDR的控制器,用于对每个所述存储单元的数据传输与数据存储的控制。
所述接口装置与所述芯片封装结构内的芯片电连接。所述接口装置用于实现所述芯片与外部设备(例如服务器或计算机)之间的数据传输。例如在一个实施例中,所述接口装置可以为标准PCIE接口。比如,待处理的数据由服务器通过标准PCIE接口传递至所述芯片,实现数据转移。优选的,当采用PCIE3.0X16接口传输时,理论带宽可达到16000MB/s。在另一个实施例中,所述接口装置还可以是其他的接口,本申请并不限制上述其他的接口的具体表现形式,所述接口单元能够实现转接功能即可。另外,所述芯片的计算结果仍由所述接口装置传送回外部设备(例如服务器)。
所述控制器件与所述芯片电连接。所述控制器件用于对所述芯片的状态进行监控。具体的,所述芯片与所述控制器件可以通过SPI接口电连接。所述控制器件可以包括单片机(Micro Controller Unit, MCU)。如所述芯片可以包括多个处理芯片、多个处理核或多个处理电路,可以带动多个负载。因此,所述芯片可以处于多负载和轻负载等不同的工作状态。通过所述控制装置可以实现对所述芯片中多个处理芯片、多个处理和或多个处理电路的工作状态的调控。
在一些实施例里,申请了一种电子设备,其包括了上述板卡。
电子设备包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
需要说明的是,本披露公开的任意一种方法均可以应用在本披露公开的另外一种方法内,本披露公开的任意一种装置、设备、单元、模块也可以设置在本披露公开的另一种装置、设备、单元或模块内。本披露公开的任意一种方法也可以通过本披露的任意一种装置、设备、单元、模块实现。
在本披露的另一实施例中提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如上所述方法实施例所描述的方法步骤。
所述计算机可读存储介质可以是前述任一实施例所述的终端设备的内部存储单元,例如终端设备的硬盘或内存。所述计算机可读存储介质也可以是所述终端设备的外部存储设备,例如所述终端设备上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,所述计算机可读存储介质还可以既包括所述终端设备的内部存储单元也包括外部存储设备。所述计算机可读存储介质用于存储所述计算机程序以及所述终端设备所需的其他程序和数据。所述计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。
本领域普通技术人员可以意识到,结合本文中所披露的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本披露的范围。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的终端设备和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本披露所提供的几个实施例中,应该理解到,所揭露的终端设备和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本披露实施例方案的目的。
另外,在本披露各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本披露的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执 行本披露各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:只读存储器(Read-Only Memory,ROM)、随机存储器(Random Access Memory,RAM)、可编程只读存储器(Programmable Read-only Memory,PROM)、可擦除可编程只读存储器(Erasable Programmable Read Only Memory,EPROM)、一次可编程只读存储器(One-time Programmable Read-Only Memory,OTPROM)、电子抹除式可复写只读存储器(Electrically-Erasable Programmable Read-Only Memory,EEPROM)、只读光盘(Compact Disc Read-Only Memory,CD-ROM)、U盘、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。应理解的,将软件产品存储在只读存储器ROM中可以降低装置的功耗,加快处理速度;而且无需使用者编程,降低使用者的门槛,适合于普通用户(普通消费者,即2C)。
以上所述,仅为本披露的具体实施方式,但本披露的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本披露揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本披露的保护范围之内。因此,本披露的保护范围应以权利要求的保护范围为准。
Claims (10)
- 一种信息处理方法,其特征在于,应用于设置有计算装置的终端设备中,所述计算装置中存储有包括至少一项运算指令在内的指令集,所述方法包括:获取第一信息,所述第一信息为终端设备待处理的信息;在所述计算装置中调用运算指令对所述第一信息进行处理,从而获得第二信息;输出所述第二信息。
- 根据权利要求1所述的方法,其特征在于,所述获取第一信息包括:对获取的原始信息进行预处理,从而获得所述第一信息,所述第一信息为具备预设格式的信息,所述预处理包括以下中的至少一项:数据去重处理、数据编码处理、数据转换处理、归一化处理。
- 根据权利要求1或2所述的方法,其特征在于,所述运算指令包括以下中的至少一项:矩阵乘向量指令、向量乘矩阵指令、矩阵乘标量指令、张量运算指令、矩阵加法指令、矩阵减法指令、矩阵检索指令、矩阵加载指令、矩阵存储指令及矩阵搬运指令。
- 根据权利要求1所述的方法,其特征在于,当所述第一信息为语音信息时,在所述计算装置中调用运算指令对所述第一信息进行处理,从而获得第二信息包括:在计算装置中调用语音识别算法,对所述语音信息进行语音识别,从而获得第二信息;其中,所述第二信息为文本信息,所述语音识别算法包括用于语音识别的至少一个运算指令。
- 根据权利要求1所述的方法,其特征在于,当所述第一信息为影像信息时,在所述计算装置中调用运算指令对所述第一信息进行处理,从而获得第二信息包括:在计算装置中调用影像风格转换算法,对所述影像信息的风格进行转换处理,从而获得第二信息;其中,所述第二信息与所述第一信息的风格不同,所述影像风格转换算法包括用于影像画风或风格转换的至少一个运算指令。
- 根据权利要求1所述的方法,其特征在于,当所述第一信息为影像信息,所述影像信息包括至少一个待识别的物体时,在所述计算装置中调用运算指令对所述第一信息进行处理,从而获得第二信息包括:在计算装置中调用物体检测算法,对所述影像信息进行物体检测,从而获得第二信息;其中,所述第二信息至少包括物体位置,所述物体检测算法包括用于物体检测的至少一个运算指令。
- 根据权利要求1所述的方法,其特征在于,当所述第一信息为待翻译的语言信息时,在所述计算装置中调用运算指令对所述第一信息进行处理,从而获得第二信息包括:在计算装置中调用语言翻译算法,对所述语言信息进行翻译处理,从而获得第二信息;其中,所述第一信息和第二信息不同,所述语言翻译算法包括用于语言翻译的至少一个运算指令。
- 一种终端设备,其特征在于,包括用于执行如上权利要求1至7任一项所述方法的功能单元。
- 一种终端设备,其特征在于,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如权利要求1至7任一项所述方法。
- 一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述方法。
Priority Applications (17)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/760,235 US20210182077A1 (en) | 2017-10-30 | 2018-09-13 | Information processing method and terminal device |
CN202010336354.9A CN111310910B (zh) | 2017-10-30 | 2018-09-13 | 一种计算装置及方法 |
CN201911058910.4A CN110689126B (zh) | 2017-10-30 | 2018-09-13 | 一种用于执行神经网络运算的装置 |
CN202010190142.4A CN111160548B (zh) | 2017-10-30 | 2018-09-13 | 计算装置以及计算方法 |
EP18873474.3A EP3709224A4 (en) | 2017-10-30 | 2018-09-13 | INFORMATION PROCESSING METHODS AND TERMINAL DEVICE |
CN202010309559.8A CN111291880B (zh) | 2017-10-30 | 2018-09-13 | 计算装置以及计算方法 |
CN201880002336.8A CN109997154A (zh) | 2017-10-30 | 2018-09-13 | 信息处理方法及终端设备 |
CN201911062123.7A CN110610236B (zh) | 2017-10-30 | 2018-09-13 | 一种用于执行神经网络运算的装置及方法 |
US17/119,093 US12094456B2 (en) | 2018-09-13 | 2020-12-11 | Information processing method and system |
US17/119,269 US11990137B2 (en) | 2018-09-13 | 2020-12-11 | Image retouching method and terminal device |
US17/119,234 US20210158484A1 (en) | 2017-10-30 | 2020-12-11 | Information processing method and terminal device |
US17/119,309 US11762631B2 (en) | 2017-10-30 | 2020-12-11 | Information processing method and terminal device |
US17/119,029 US12050887B2 (en) | 2017-10-30 | 2020-12-11 | Information processing method and terminal device |
US17/119,347 US11996105B2 (en) | 2018-09-13 | 2020-12-11 | Information processing method and terminal device |
US17/119,213 US12057110B2 (en) | 2018-09-13 | 2020-12-11 | Voice recognition based on neural networks |
US17/119,193 US12057109B2 (en) | 2018-09-13 | 2020-12-11 | Information processing method and terminal device |
US17/119,148 US11922132B2 (en) | 2017-10-30 | 2020-12-11 | Information processing method and terminal device |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711036374.9A CN109726806A (zh) | 2017-10-30 | 2017-10-30 | 信息处理方法及终端设备 |
CN201711036374.9 | 2017-10-30 |
Related Child Applications (10)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US16/760,235 A-371-Of-International US20210182077A1 (en) | 2017-10-30 | 2018-09-13 | Information processing method and terminal device |
US17/119,234 Continuation US20210158484A1 (en) | 2017-10-30 | 2020-12-11 | Information processing method and terminal device |
US17/119,148 Continuation US11922132B2 (en) | 2017-10-30 | 2020-12-11 | Information processing method and terminal device |
US17/119,213 Continuation US12057110B2 (en) | 2018-09-13 | 2020-12-11 | Voice recognition based on neural networks |
US17/119,347 Continuation US11996105B2 (en) | 2018-09-13 | 2020-12-11 | Information processing method and terminal device |
US17/119,269 Continuation US11990137B2 (en) | 2018-09-13 | 2020-12-11 | Image retouching method and terminal device |
US17/119,309 Continuation US11762631B2 (en) | 2017-10-30 | 2020-12-11 | Information processing method and terminal device |
US17/119,193 Continuation US12057109B2 (en) | 2018-09-13 | 2020-12-11 | Information processing method and terminal device |
US17/119,029 Continuation US12050887B2 (en) | 2017-10-30 | 2020-12-11 | Information processing method and terminal device |
US17/119,093 Continuation US12094456B2 (en) | 2018-09-13 | 2020-12-11 | Information processing method and system |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2019085655A1 true WO2019085655A1 (zh) | 2019-05-09 |
Family
ID=61645528
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/CN2018/105463 WO2019085655A1 (zh) | 2017-10-30 | 2018-09-13 | 信息处理方法及终端设备 |
Country Status (4)
Country | Link |
---|---|
US (5) | US20210182077A1 (zh) |
EP (1) | EP3709224A4 (zh) |
CN (48) | CN108874445A (zh) |
WO (1) | WO2019085655A1 (zh) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110390626A (zh) * | 2019-07-02 | 2019-10-29 | 深兰科技(上海)有限公司 | 一种卷积神经网络的图像处理方法及装置 |
CN111311707A (zh) * | 2020-03-05 | 2020-06-19 | 云知声智能科技股份有限公司 | 一种作画方法及装置 |
CN111598227A (zh) * | 2020-05-20 | 2020-08-28 | 字节跳动有限公司 | 数据处理方法、装置、电子设备及计算机可读存储介质 |
EP3767477A1 (en) * | 2019-07-05 | 2021-01-20 | Samsung Electronics Co., Ltd. | Artificial intelligence processor and method of performing neural network operation thereof |
EP3770824A1 (en) * | 2019-07-26 | 2021-01-27 | Cambricon Technologies Corporation Limited | Computation method and related products of recurrent neural network |
CN112631955A (zh) * | 2020-12-18 | 2021-04-09 | 北京地平线机器人技术研发有限公司 | 数据处理方法、装置、电子设备以及介质 |
WO2021086486A1 (en) * | 2019-10-30 | 2021-05-06 | Raytheon Company | Neural network instruction streaming |
US20210406342A1 (en) * | 2020-02-19 | 2021-12-30 | Nvidia Corporation | Application programming interface to accelerate matrix operations |
EP3940600A1 (en) * | 2020-07-15 | 2022-01-19 | Samsung Electronics Co., Ltd. | Method and apparatus with neural network operation processing background |
EP3958190A1 (en) * | 2020-08-19 | 2022-02-23 | Fujitsu Limited | Information processing device, machine learning method, and machine learning program |
US20220147680A1 (en) * | 2020-11-12 | 2022-05-12 | Samsung Electronics Co., Ltd. | Method for co-design of hardware and neural network architectures using coarse-to-fine search, two-phased block distillation and neural hardware predictor |
TWI803854B (zh) * | 2020-05-15 | 2023-06-01 | 大陸商矽力杰半導體技術(杭州)有限公司 | 用於神經網路中信號轉換的系統和方法 |
EP4172753A4 (en) * | 2020-06-26 | 2024-07-24 | Advanced Micro Devices Inc | PROCESSING UNIT WITH SMALL SPACE ARITHMETIC LOGIC UNIT |
Families Citing this family (282)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US12124850B2 (en) * | 2014-11-28 | 2024-10-22 | Fiske Software Llc | Hiding stable machine instructions in noise |
EP3998539A1 (en) * | 2016-12-30 | 2022-05-18 | INTEL Corporation | Deep learning hardware |
US11037330B2 (en) | 2017-04-08 | 2021-06-15 | Intel Corporation | Low rank matrix compression |
EP3786786B1 (en) * | 2017-04-19 | 2023-06-07 | Shanghai Cambricon Information Technology Co., Ltd | Processing device, processing method, chip, and electronic apparatus |
EP3657340B1 (en) * | 2017-05-23 | 2024-08-14 | Shanghai Cambricon Information Technology Co., Ltd | Processing method and accelerating device |
CN108874445A (zh) | 2017-10-30 | 2018-11-23 | 上海寒武纪信息科技有限公司 | 神经网络处理器及使用处理器执行向量点积指令的方法 |
WO2019114842A1 (zh) * | 2017-12-14 | 2019-06-20 | 北京中科寒武纪科技有限公司 | 一种集成电路芯片装置 |
JP6454397B1 (ja) * | 2017-12-20 | 2019-01-16 | Nttエレクトロニクス株式会社 | 誤り訂正装置、誤り訂正方法及び光通信システム |
US11636327B2 (en) * | 2017-12-29 | 2023-04-25 | Intel Corporation | Machine learning sparse computation mechanism for arbitrary neural networks, arithmetic compute microarchitecture, and sparsity for training mechanism |
US20190244080A1 (en) * | 2018-02-02 | 2019-08-08 | Wisconsin Alumni Research Foundation | Neural Network Processor with On-Chip Convolution Kernel Storage |
CN108388446A (zh) * | 2018-02-05 | 2018-08-10 | 上海寒武纪信息科技有限公司 | 运算模块以及方法 |
CN110222833B (zh) * | 2018-03-01 | 2023-12-19 | 华为技术有限公司 | 一种用于神经网络的数据处理电路 |
CN108470211B (zh) * | 2018-04-09 | 2022-07-12 | 郑州云海信息技术有限公司 | 一种卷积计算的实现方法、设备和计算机存储介质 |
CN110399976B (zh) * | 2018-04-25 | 2022-04-05 | 华为技术有限公司 | 计算装置和计算方法 |
CN108629409B (zh) * | 2018-04-28 | 2020-04-10 | 中国科学院计算技术研究所 | 一种基于主成分分析减少io开销的神经网络处理系统 |
CN110472734B (zh) * | 2018-05-11 | 2024-03-29 | 上海寒武纪信息科技有限公司 | 一种计算装置及相关产品 |
CN108804223A (zh) * | 2018-05-16 | 2018-11-13 | 努比亚技术有限公司 | 内存优化方法、移动终端及计算机可读存储介质 |
CN108831475B (zh) * | 2018-05-24 | 2020-09-29 | 广州市千钧网络科技有限公司 | 一种文本消息提取方法及系统 |
WO2019227322A1 (zh) * | 2018-05-30 | 2019-12-05 | 深圳市大疆创新科技有限公司 | 池化装置和池化方法 |
US11880762B2 (en) * | 2018-06-26 | 2024-01-23 | International Business Machines Corporation | Choosing execution mode of a neural network based on total memory usage |
CN110647973A (zh) * | 2018-06-27 | 2020-01-03 | 北京中科寒武纪科技有限公司 | 运算方法及相关方法和产品 |
CN110647356A (zh) * | 2018-06-27 | 2020-01-03 | 北京中科寒武纪科技有限公司 | 运算装置及相关产品 |
CN110728364A (zh) * | 2018-07-17 | 2020-01-24 | 上海寒武纪信息科技有限公司 | 一种运算装置和运算方法 |
EP3735658A1 (en) * | 2018-07-12 | 2020-11-11 | Huawei Technologies Co. Ltd. | Generating a compressed representation of a neural network with proficient inference speed and power consumption |
CN109165728B (zh) * | 2018-08-06 | 2020-12-18 | 浪潮集团有限公司 | 一种卷积神经网络的基本计算单元及计算方法 |
CN110874343B (zh) * | 2018-08-10 | 2023-04-21 | 北京百度网讯科技有限公司 | 基于深度学习芯片进行语音处理的方法和深度学习芯片 |
KR20200023238A (ko) * | 2018-08-23 | 2020-03-04 | 삼성전자주식회사 | 딥러닝 모델을 생성하는 방법 및 시스템 |
CN110865792B (zh) * | 2018-08-28 | 2021-03-19 | 中科寒武纪科技股份有限公司 | 数据预处理方法、装置、计算机设备和存储介质 |
CN110874605B (zh) * | 2018-08-31 | 2024-05-03 | 嘉楠明芯(北京)科技有限公司 | 图像识别处理方法和装置 |
CN110874632B (zh) * | 2018-08-31 | 2024-05-03 | 嘉楠明芯(北京)科技有限公司 | 图像识别处理方法和装置 |
CN109242091B (zh) * | 2018-09-03 | 2022-03-22 | 郑州云海信息技术有限公司 | 图像识别方法、装置、设备及可读存储介质 |
CN109065076B (zh) * | 2018-09-05 | 2020-11-27 | 深圳追一科技有限公司 | 音频标签的设置方法、装置、设备和存储介质 |
US12094456B2 (en) | 2018-09-13 | 2024-09-17 | Shanghai Cambricon Information Technology Co., Ltd. | Information processing method and system |
CN110897626A (zh) * | 2018-09-14 | 2020-03-24 | 杭州脉流科技有限公司 | 基于深度神经网络的心电图分析方法、装置、计算机设备和系统 |
WO2020062392A1 (zh) | 2018-09-28 | 2020-04-02 | 上海寒武纪信息科技有限公司 | 信号处理装置、信号处理方法及相关产品 |
CN110968285A (zh) * | 2018-09-28 | 2020-04-07 | 上海寒武纪信息科技有限公司 | 信号处理装置及相关产品 |
CN110969246A (zh) * | 2018-09-28 | 2020-04-07 | 上海寒武纪信息科技有限公司 | 信号处理装置及相关产品 |
CN110969222A (zh) * | 2018-09-29 | 2020-04-07 | 西门子股份公司 | 信息提供方法和系统 |
US11928208B2 (en) * | 2018-10-02 | 2024-03-12 | Nippon Telegraph And Telephone Corporation | Calculation device, calculation method, and calculation program |
CN111339060B (zh) * | 2018-12-19 | 2024-03-12 | 上海寒武纪信息科技有限公司 | 运算方法、装置、计算机设备和存储介质 |
CN111353124A (zh) * | 2018-12-20 | 2020-06-30 | 上海寒武纪信息科技有限公司 | 运算方法、装置、计算机设备和存储介质 |
CN111353125B (zh) * | 2018-12-20 | 2022-04-22 | 上海寒武纪信息科技有限公司 | 运算方法、装置、计算机设备和存储介质 |
CN111275197B (zh) * | 2018-12-05 | 2023-11-10 | 上海寒武纪信息科技有限公司 | 运算方法、装置、计算机设备和存储介质 |
CN110096309B (zh) * | 2018-11-14 | 2020-04-14 | 上海寒武纪信息科技有限公司 | 运算方法、装置、计算机设备和存储介质 |
CN111222633A (zh) * | 2018-11-23 | 2020-06-02 | 上海寒武纪信息科技有限公司 | 运算方法、装置及相关产品 |
CN111290788B (zh) * | 2018-12-07 | 2022-05-31 | 上海寒武纪信息科技有限公司 | 运算方法、装置、计算机设备和存储介质 |
CN111338694B (zh) * | 2018-12-19 | 2022-05-31 | 上海寒武纪信息科技有限公司 | 运算方法、装置、计算机设备和存储介质 |
CN111353595A (zh) * | 2018-12-20 | 2020-06-30 | 上海寒武纪信息科技有限公司 | 运算方法、装置及相关产品 |
CN111047005A (zh) * | 2018-10-11 | 2020-04-21 | 上海寒武纪信息科技有限公司 | 运算方法、装置、计算机设备和存储介质 |
CN111047027A (zh) * | 2018-10-12 | 2020-04-21 | 上海寒武纪信息科技有限公司 | 运算方法、装置及相关产品 |
CN111047022B (zh) * | 2018-10-12 | 2023-11-24 | 中科寒武纪科技股份有限公司 | 一种计算装置及相关产品 |
CN111045728B (zh) * | 2018-10-12 | 2022-04-12 | 上海寒武纪信息科技有限公司 | 一种计算装置及相关产品 |
CN111047024B (zh) * | 2018-10-12 | 2023-05-23 | 上海寒武纪信息科技有限公司 | 一种计算装置及相关产品 |
CN111047021B (zh) * | 2018-10-12 | 2023-11-24 | 中科寒武纪科技股份有限公司 | 一种计算装置及相关产品 |
CN111079907B (zh) * | 2018-10-19 | 2021-01-26 | 安徽寒武纪信息科技有限公司 | 运算方法、装置及相关产品 |
CN111079911B (zh) * | 2018-10-19 | 2021-02-09 | 中科寒武纪科技股份有限公司 | 运算方法、系统及相关产品 |
US11294985B2 (en) * | 2018-10-30 | 2022-04-05 | Intel Corporation | Efficient analog in-memory matrix multiplication processor |
US11526759B2 (en) * | 2018-11-05 | 2022-12-13 | International Business Machines Corporation | Large model support in deep learning |
KR102462910B1 (ko) * | 2018-11-12 | 2022-11-04 | 한국전자통신연구원 | 배치 정규화 레이어의 웨이트들에 대한 양자화 방법 및 그 장치 |
CN109491938A (zh) * | 2018-11-27 | 2019-03-19 | 济南浪潮高新科技投资发展有限公司 | 一种面向卷积神经网络加速的多通道dma控制器和卷积神经网络加速方法 |
US11056098B1 (en) * | 2018-11-28 | 2021-07-06 | Amazon Technologies, Inc. | Silent phonemes for tracking end of speech |
CN109543833B (zh) * | 2018-11-30 | 2021-08-03 | 上海寒武纪信息科技有限公司 | 运算方法、装置及相关产品 |
CN111399905B (zh) * | 2019-01-02 | 2022-08-16 | 上海寒武纪信息科技有限公司 | 运算方法、装置及相关产品 |
CN111382390B (zh) * | 2018-12-28 | 2022-08-12 | 上海寒武纪信息科技有限公司 | 运算方法、装置及相关产品 |
CN111258641B (zh) * | 2018-11-30 | 2022-12-09 | 上海寒武纪信息科技有限公司 | 运算方法、装置及相关产品 |
CN111381871B (zh) * | 2018-12-28 | 2022-12-09 | 上海寒武纪信息科技有限公司 | 运算方法、装置及相关产品 |
CN109543825B (zh) * | 2018-11-30 | 2020-12-01 | 安徽寒武纪信息科技有限公司 | 神经网络模型算法编译方法、装置及相关产品 |
CN109583579B (zh) * | 2018-11-30 | 2021-04-09 | 上海寒武纪信息科技有限公司 | 计算装置及相关产品 |
CN109685201B (zh) * | 2018-12-14 | 2020-10-30 | 安徽寒武纪信息科技有限公司 | 运算方法、装置及相关产品 |
CN111383637A (zh) * | 2018-12-28 | 2020-07-07 | 上海寒武纪信息科技有限公司 | 信号处理装置、信号处理方法及相关产品 |
CN111222635A (zh) * | 2018-12-29 | 2020-06-02 | 中科寒武纪科技股份有限公司 | 运算方法、装置及相关产品 |
CN109635937B (zh) * | 2018-12-30 | 2023-07-11 | 南京大学 | 一种面向低位宽卷积神经网络的低功耗系统 |
WO2020142973A1 (en) * | 2019-01-10 | 2020-07-16 | Alibaba Group Holding Limited | Matrix-based instruction set architecture for neural network |
CN111488759A (zh) * | 2019-01-25 | 2020-08-04 | 北京字节跳动网络技术有限公司 | 动物脸部的图像处理方法和装置 |
US11475285B2 (en) * | 2019-01-28 | 2022-10-18 | Samsung Electronics Co., Ltd. | Neural network accelerator and operating method thereof |
JP7353772B2 (ja) * | 2019-03-07 | 2023-10-02 | キヤノン株式会社 | データ処理装置及びその方法、プログラム |
CN110049200A (zh) * | 2019-03-07 | 2019-07-23 | 永德利硅橡胶科技(深圳)有限公司 | 基于会议的语言翻译方法及相关产品 |
CN109902201A (zh) * | 2019-03-08 | 2019-06-18 | 天津理工大学 | 一种基于cnn和bp神经网络的推荐方法 |
CN111723921B (zh) * | 2019-03-22 | 2024-05-14 | 中科寒武纪科技股份有限公司 | 人工智能计算装置及相关产品 |
CN111723920B (zh) * | 2019-03-22 | 2024-05-17 | 中科寒武纪科技股份有限公司 | 人工智能计算装置及相关产品 |
FR3094516A1 (fr) * | 2019-03-25 | 2020-10-02 | Proton World International N.V. | Système électronique |
US11704573B2 (en) * | 2019-03-25 | 2023-07-18 | Here Global B.V. | Method, apparatus, and computer program product for identifying and compensating content contributors |
CN111738021B (zh) * | 2019-03-25 | 2023-10-31 | 株式会社理光 | 神经机器翻译模型的词向量处理方法、装置及存储介质 |
CN110009021B (zh) * | 2019-03-26 | 2021-06-15 | 深兰科技(上海)有限公司 | 一种目标识别方法及设备 |
CN109919312B (zh) * | 2019-03-29 | 2021-04-23 | 北京智芯微电子科技有限公司 | 卷积神经网络的运算方法、装置及dpu |
CN111831337B (zh) * | 2019-04-19 | 2022-11-29 | 安徽寒武纪信息科技有限公司 | 数据同步方法及装置以及相关产品 |
CN111782577B (zh) | 2019-04-04 | 2023-03-24 | 安徽寒武纪信息科技有限公司 | 数据处理装置及方法以及相关产品 |
CN110135462B (zh) * | 2019-04-18 | 2022-12-20 | 南开大学 | 一种基于上下文信息的艺术画风格分类方法 |
WO2020220369A1 (en) * | 2019-05-01 | 2020-11-05 | Microsoft Technology Licensing, Llc | Method and system of utilizing unsupervised learning to improve text to content suggestions |
WO2020220370A1 (en) * | 2019-05-01 | 2020-11-05 | Microsoft Technology Licensing, Llc | Method and system of utilizing unsupervised learning to improve text to content suggestions |
CN111930681B (zh) * | 2019-05-13 | 2023-10-10 | 中科寒武纪科技股份有限公司 | 一种计算装置及相关产品 |
CN110210612B (zh) * | 2019-05-14 | 2021-04-16 | 北京中科汇成科技有限公司 | 基于自适应分段线性逼近曲线的集成电路加速方法及系统 |
US11610390B2 (en) * | 2019-05-15 | 2023-03-21 | Getac Technology Corporation | System for detecting surface type of object and artificial neural network-based method for detecting surface type of object |
CN112394903A (zh) * | 2019-08-13 | 2021-02-23 | 上海寒武纪信息科技有限公司 | 短整形转半精度浮点指令处理装置、方法及相关产品 |
CN111966325A (zh) * | 2019-05-20 | 2020-11-20 | 上海寒武纪信息科技有限公司 | 指令处理方法、装置及相关产品 |
CN110198164B (zh) * | 2019-05-17 | 2023-04-04 | 山东科技大学 | 一种绝对值流控忆阻器模拟电路 |
CN112346781A (zh) * | 2019-08-07 | 2021-02-09 | 上海寒武纪信息科技有限公司 | 指令处理方法、装置及相关产品 |
CN111966403A (zh) * | 2019-05-20 | 2020-11-20 | 上海寒武纪信息科技有限公司 | 指令处理方法、装置及相关产品 |
CN111966398B (zh) * | 2019-05-20 | 2024-06-07 | 上海寒武纪信息科技有限公司 | 指令处理方法、装置及相关产品 |
CN111966400B (zh) * | 2019-05-20 | 2024-07-19 | 上海寒武纪信息科技有限公司 | 指令处理方法、装置及相关产品 |
CN110298441B (zh) * | 2019-05-24 | 2022-01-11 | 深圳云天励飞技术有限公司 | 一种数据处理方法、电子装置及计算机可读存储介质 |
CN110277100A (zh) * | 2019-06-19 | 2019-09-24 | 南京邮电大学 | 基于Alexnet改进的声纹识别方法、存储介质和终端 |
KR20210001324A (ko) * | 2019-06-27 | 2021-01-06 | 삼성전자주식회사 | 인공 신경망 모델 및 이를 포함하는 전자 장치 |
CN110427578B (zh) * | 2019-07-16 | 2020-06-02 | 盐城师范学院 | 一种基于深度机器学习的数字内容投放方法 |
CN110532205B (zh) * | 2019-07-17 | 2021-04-06 | 浙江大华技术股份有限公司 | 数据传输方法、装置、计算机设备和计算机可读存储介质 |
US11870804B2 (en) * | 2019-08-01 | 2024-01-09 | Akamai Technologies, Inc. | Automated learning and detection of web bot transactions using deep learning |
CN110598858A (zh) * | 2019-08-02 | 2019-12-20 | 北京航空航天大学 | 基于非易失性存内计算实现二值神经网络的芯片和方法 |
CN112333222A (zh) * | 2019-08-05 | 2021-02-05 | 中润普达(深圳)大数据技术有限公司 | 一种基于大数据的云计算服务系统 |
CN110489356B (zh) * | 2019-08-06 | 2022-02-22 | 上海商汤智能科技有限公司 | 信息处理方法、装置、电子设备及存储介质 |
US12061971B2 (en) | 2019-08-12 | 2024-08-13 | Micron Technology, Inc. | Predictive maintenance of automotive engines |
CN112394991A (zh) * | 2019-08-13 | 2021-02-23 | 上海寒武纪信息科技有限公司 | 浮点转半精度浮点指令处理装置、方法及相关产品 |
CN110569275A (zh) * | 2019-08-14 | 2019-12-13 | 清华大学山西清洁能源研究院 | 支持相似性检索的高纬缺失时间序列的压缩方法及装置 |
CN112394887A (zh) * | 2019-08-17 | 2021-02-23 | 森大(深圳)技术有限公司 | Onepass打印数据高效率处理方法、装置、设备及存储介质 |
CN112434781B (zh) * | 2019-08-26 | 2024-09-10 | 上海寒武纪信息科技有限公司 | 用于处理数据的方法、装置以及相关产品 |
CN110780921B (zh) * | 2019-08-30 | 2023-09-26 | 腾讯科技(深圳)有限公司 | 数据处理方法和装置、存储介质及电子装置 |
CN112445523B (zh) * | 2019-09-02 | 2024-08-23 | 中科寒武纪科技股份有限公司 | 数据处理方法、相关设备及计算机可读介质 |
US11409654B2 (en) * | 2019-09-05 | 2022-08-09 | Micron Technology, Inc. | Intelligent optimization of caching operations in a data storage device |
CN110426965A (zh) * | 2019-09-17 | 2019-11-08 | 苏州百宝箱科技有限公司 | 一种基于云平台的智能家居远程控制方法 |
CN110647718B (zh) * | 2019-09-26 | 2023-07-25 | 中昊芯英(杭州)科技有限公司 | 数据处理方法、装置、设备及计算机可读存储介质 |
CN110766155A (zh) * | 2019-09-27 | 2020-02-07 | 东南大学 | 一种基于混合精度存储的深度神经网络加速器 |
CN112579042B (zh) * | 2019-09-29 | 2024-04-19 | 广州希姆半导体科技有限公司 | 计算装置及方法、芯片、电子设备及计算机可读存储介质 |
CN110837483B (zh) * | 2019-09-30 | 2021-07-23 | 厦门星宸科技有限公司 | 张量维度变换的方法以及装置 |
CN110673823B (zh) * | 2019-09-30 | 2021-11-30 | 上海寒武纪信息科技有限公司 | 乘法器、数据处理方法及芯片 |
CN114365147A (zh) * | 2019-10-22 | 2022-04-15 | 深圳鲲云信息科技有限公司 | 神经网络计算压缩方法、系统及存储介质 |
CN112712172B (zh) * | 2019-10-25 | 2023-12-26 | 安徽寒武纪信息科技有限公司 | 用于神经网络运算的计算装置、方法、集成电路和设备 |
US20220343165A1 (en) * | 2019-10-29 | 2022-10-27 | Intel Corporation | Device capability aware technology to execute deep learning computation graphs in web applications |
CN110796246A (zh) * | 2019-10-29 | 2020-02-14 | 南京宁麒智能计算芯片研究院有限公司 | 一种基于线性分段的激活函数的硬件实现电路和方法 |
CN110807522B (zh) * | 2019-10-31 | 2022-05-06 | 合肥工业大学 | 一种神经网络加速器的通用计算电路 |
CN112784207B (zh) * | 2019-11-01 | 2024-02-02 | 中科寒武纪科技股份有限公司 | 运算方法及相关产品 |
CN112817638A (zh) * | 2019-11-18 | 2021-05-18 | 北京希姆计算科技有限公司 | 一种数据处理装置及方法 |
CN111027690B (zh) * | 2019-11-26 | 2023-08-04 | 陈子祺 | 执行确定性推理的组合处理装置、芯片和方法 |
US11610102B1 (en) * | 2019-11-27 | 2023-03-21 | Amazon Technologies, Inc. | Time-based memory allocation for neural network inference |
US12099930B2 (en) * | 2019-12-12 | 2024-09-24 | Texas Instruments Incorporated | Parametric power-of-2 clipping activations for quantization for convolutional neural networks |
CN110996171B (zh) * | 2019-12-12 | 2021-11-26 | 北京金山云网络技术有限公司 | 视频类任务的训练数据生成方法、装置及服务器 |
CN111026445A (zh) * | 2019-12-17 | 2020-04-17 | 湖南长城银河科技有限公司 | 一种智能识别方法及芯片 |
CN111178087B (zh) * | 2019-12-20 | 2023-05-09 | 沈阳雅译网络技术有限公司 | 一种基于离散型注意力机制的神经机器翻译解码加速方法 |
CN111125617A (zh) * | 2019-12-23 | 2020-05-08 | 中科寒武纪科技股份有限公司 | 数据处理方法、装置、计算机设备和存储介质 |
US11755683B2 (en) | 2019-12-23 | 2023-09-12 | Western Digital Technologies, Inc. | Flexible accelerator for sparse tensors (FAST) in machine learning |
CN111176725B (zh) * | 2019-12-27 | 2022-05-06 | 北京市商汤科技开发有限公司 | 数据处理方法、装置、设备和存储介质 |
CN113128673B (zh) * | 2019-12-31 | 2023-08-11 | Oppo广东移动通信有限公司 | 数据处理方法、存储介质、神经网络处理器及电子设备 |
CN111144556B (zh) * | 2019-12-31 | 2023-07-07 | 中国人民解放军国防科技大学 | 面向深度神经网络训练和推理的范围批处理归一化算法的硬件电路 |
CN111242293B (zh) * | 2020-01-13 | 2023-07-18 | 腾讯科技(深圳)有限公司 | 一种处理部件、数据处理的方法以及电子设备 |
CN111240747B (zh) * | 2020-01-13 | 2022-05-06 | Oppo广东移动通信有限公司 | 指令生成方法、装置、测试架构和电子设备 |
US12093562B2 (en) * | 2020-01-20 | 2024-09-17 | SK Hynix Inc. | Controller with smart scheduling and method of operating the controller |
CN113220270A (zh) * | 2020-01-21 | 2021-08-06 | 华为技术有限公司 | 一种生成向量化程序的方法及装置 |
CN113222126B (zh) * | 2020-01-21 | 2022-01-28 | 上海商汤智能科技有限公司 | 数据处理装置、人工智能芯片 |
TWI727641B (zh) * | 2020-02-03 | 2021-05-11 | 華邦電子股份有限公司 | 記憶體裝置及其操作方法 |
CN111241204B (zh) * | 2020-02-14 | 2023-01-10 | 苏州浪潮智能科技有限公司 | 一种梯度数据的同步方法、装置、设备及存储介质 |
US20210256384A1 (en) * | 2020-02-14 | 2021-08-19 | Northeastern University | Computer-implemented methods and systems for achieving real-time dnn execution on mobile devices with pattern-based weight pruning |
KR20210105053A (ko) * | 2020-02-18 | 2021-08-26 | 에스케이하이닉스 주식회사 | 연산 회로 및 그것을 포함하는 딥 러닝 시스템 |
US11562235B2 (en) | 2020-02-21 | 2023-01-24 | International Business Machines Corporation | Activation function computation for neural networks |
US11727270B2 (en) | 2020-02-24 | 2023-08-15 | Microsoft Technology Licensing, Llc | Cross data set knowledge distillation for training machine learning models |
EP3872710A1 (en) * | 2020-02-27 | 2021-09-01 | Aptiv Technologies Limited | Method and system for determining information on an expected trajectory of an object |
US20210287074A1 (en) * | 2020-03-12 | 2021-09-16 | Semiconductor Components Industries, Llc | Neural network weight encoding |
US11526743B2 (en) * | 2020-03-13 | 2022-12-13 | Arm Limited | Artificial neural network optical hardware accelerator |
US12039432B2 (en) * | 2020-03-18 | 2024-07-16 | Infineon Technologies Ag | Artificial neural network activation function |
WO2021189294A1 (zh) * | 2020-03-25 | 2021-09-30 | 华为技术有限公司 | 卷积运算系统和卷积运算方法 |
US11797830B2 (en) * | 2020-03-25 | 2023-10-24 | Western Digital Technologies, Inc. | Flexible accelerator for sparse tensors in convolutional neural networks |
CN111488969B (zh) * | 2020-04-03 | 2024-01-19 | 北京集朗半导体科技有限公司 | 基于神经网络加速器的执行优化方法及装置 |
CN111522657B (zh) * | 2020-04-14 | 2022-07-22 | 北京航空航天大学 | 一种分散设备协同深度学习推理方法 |
CN111539462B (zh) * | 2020-04-15 | 2023-09-19 | 苏州万高电脑科技有限公司 | 模仿生物视觉神经元的图像分类方法、系统、装置及介质 |
US11748623B2 (en) * | 2020-04-15 | 2023-09-05 | Mipsology SAS | Modifying structure of artificial neural networks by collocating parameters |
CN111581593B (zh) * | 2020-04-21 | 2023-09-05 | 天津大学 | 可配置重用的分段式查找表激活函数实现装置 |
CN113537205A (zh) * | 2020-04-21 | 2021-10-22 | 中兴通讯股份有限公司 | 图像识别方法、系统、终端、服务器及存储介质 |
CN111522776B (zh) * | 2020-04-27 | 2022-04-05 | 西安交通大学 | 一种计算架构 |
CN111565180B (zh) * | 2020-04-28 | 2021-01-29 | 广州锦行网络科技有限公司 | 一种虚拟端口的保护系统及方法 |
CN111563898B (zh) * | 2020-04-29 | 2023-05-16 | 万翼科技有限公司 | 图像分割方法、电子设备及相关产品 |
US11527089B2 (en) * | 2020-04-29 | 2022-12-13 | Conduent Business Services, Llc | Building light-weight single shot refinement neural network for vehicle passenger detection system |
US11604976B2 (en) * | 2020-04-29 | 2023-03-14 | International Business Machines Corporation | Crossbar arrays for computations in memory-augmented neural networks |
CN111553466B (zh) * | 2020-04-30 | 2024-03-22 | 上海商汤智能科技有限公司 | 信息处理方法、装置及设备 |
US11455143B2 (en) * | 2020-05-07 | 2022-09-27 | Meta Platforms, Inc. | Using a low-bit-width dot product engine to sum high-bit-width numbers |
CN113626080B (zh) * | 2020-05-08 | 2023-10-03 | 安徽寒武纪信息科技有限公司 | 数据处理装置以及相关产品 |
CN111914612B (zh) * | 2020-05-21 | 2024-03-01 | 淮阴工学院 | 一种基于改进的卷积神经网络的施工图图元自适应识别方法 |
JP7488696B2 (ja) * | 2020-06-04 | 2024-05-22 | 株式会社東海理化電機製作所 | 処理装置、プログラム、およびシステム |
US11782685B2 (en) * | 2020-06-17 | 2023-10-10 | Bank Of America Corporation | Software code vectorization converter |
US11435941B1 (en) * | 2020-06-24 | 2022-09-06 | Amazon Technologies, Inc. | Matrix transpose hardware acceleration |
CN113835850A (zh) * | 2020-06-24 | 2021-12-24 | 上海寒武纪信息科技有限公司 | 任务处理方法、系统及存储介质 |
CN111832718B (zh) * | 2020-06-24 | 2021-08-03 | 上海西井信息科技有限公司 | 芯片架构 |
CN113867792A (zh) * | 2020-06-30 | 2021-12-31 | 上海寒武纪信息科技有限公司 | 计算装置、集成电路芯片、板卡、电子设备和计算方法 |
CN111767508B (zh) * | 2020-07-09 | 2024-02-23 | 地平线(上海)人工智能技术有限公司 | 计算机实现张量数据计算的方法、装置、介质和设备 |
CN111913744B (zh) * | 2020-07-15 | 2024-07-19 | 博流智能科技(南京)有限公司 | Ai深度学习数据处理方法及系统 |
CN111857834A (zh) * | 2020-07-16 | 2020-10-30 | 中国科学院计算技术研究所 | 分形计算智能处理器、分形计算智能处理方法 |
CN111857833A (zh) * | 2020-07-16 | 2020-10-30 | 中国科学院计算技术研究所 | 并行计算智能处理器及并行计算智能处理方法 |
CN111831582B (zh) * | 2020-07-16 | 2024-03-29 | 中国科学院计算技术研究所 | 用于智能处理器的内存管理装置、方法及电子设备 |
CN111984189B (zh) * | 2020-07-22 | 2022-05-17 | 深圳云天励飞技术股份有限公司 | 神经网络计算装置和数据读取、数据存储方法及相关设备 |
CN111860818B (zh) * | 2020-07-23 | 2022-11-08 | 哈尔滨工业大学(威海) | 基于智能芯片的som神经网络算法处理方法 |
US11163571B1 (en) * | 2020-07-29 | 2021-11-02 | International Business Machines Corporation | Fusion to enhance early address generation of load instructions in a microprocessor |
CN114070563B (zh) * | 2020-07-31 | 2023-09-05 | 中移(苏州)软件技术有限公司 | 一种数据处理方法、装置、终端及存储介质 |
CN112102816A (zh) * | 2020-08-17 | 2020-12-18 | 北京百度网讯科技有限公司 | 语音识别方法、装置、系统、电子设备和存储介质 |
TWI746126B (zh) | 2020-08-25 | 2021-11-11 | 創鑫智慧股份有限公司 | 矩陣乘法裝置及其操作方法 |
CN112052149B (zh) * | 2020-09-06 | 2022-02-22 | 厦门理工学院 | 一种大数据信息采集系统及使用方法 |
CN112200299B (zh) * | 2020-09-09 | 2024-04-12 | 星宸科技股份有限公司 | 神经网络计算装置、数据处理方法及装置 |
KR102466257B1 (ko) * | 2020-09-10 | 2022-11-14 | 주식회사 더웨이브톡 | 다중 광원을 활용한 분광 장치 |
US20220092408A1 (en) * | 2020-09-23 | 2022-03-24 | Facebook, Inc. | Neural network weight distribution using a tree direct-memory access (dma) bus |
CN112181492A (zh) * | 2020-09-23 | 2021-01-05 | 北京奕斯伟计算技术有限公司 | 一种指令处理方法、指令处理装置和芯片 |
CN111931937B (zh) * | 2020-09-30 | 2021-01-01 | 深圳云天励飞技术股份有限公司 | 图像处理模型的梯度更新方法、装置及系统 |
CN112200305A (zh) * | 2020-09-30 | 2021-01-08 | 中国电力科学研究院有限公司 | 一种神经网络加速协处理器、处理系统及处理方法 |
CN112991358A (zh) * | 2020-09-30 | 2021-06-18 | 北京字节跳动网络技术有限公司 | 风格图像生成方法、模型训练方法、装置、设备和介质 |
US11620818B2 (en) * | 2020-10-01 | 2023-04-04 | Intel Corporation | Spatially sparse neural network accelerator for multi-dimension visual analytics |
TWI748679B (zh) * | 2020-10-08 | 2021-12-01 | 大陸商星宸科技股份有限公司 | 神經網路計算裝置、資料處理方法及裝置 |
CN112256801B (zh) * | 2020-10-10 | 2024-04-09 | 深圳力维智联技术有限公司 | 抽取实体关系图中关键实体的方法、系统和存储介质 |
CN112232486A (zh) * | 2020-10-19 | 2021-01-15 | 南京宁麒智能计算芯片研究院有限公司 | 一种yolo脉冲神经网络的优化方法 |
CN112287222B (zh) * | 2020-10-29 | 2023-12-15 | 深圳大学 | 一种基于异质特征深度残差网络的内容推荐方法 |
CN112540996B (zh) * | 2020-11-12 | 2023-11-24 | Oppo(重庆)智能科技有限公司 | 一种业务数据的校验方法、装置、电子设备及存储介质 |
CN114519167A (zh) * | 2020-11-19 | 2022-05-20 | 华为技术有限公司 | 一种算子计算方法、装置、设备及系统 |
KR20220073306A (ko) * | 2020-11-26 | 2022-06-03 | 에스케이하이닉스 주식회사 | 스토리지 장치 및 그 동작 방법 |
CN112306500B (zh) * | 2020-11-30 | 2022-06-07 | 上海交通大学 | 一种针对粗粒度可重构结构的降低多类访存冲突编译方法 |
CN112580485A (zh) * | 2020-12-14 | 2021-03-30 | 珠海零边界集成电路有限公司 | 图像的读写方法和装置、电子设备和存储介质 |
CN112666860A (zh) * | 2020-12-15 | 2021-04-16 | 合肥中感微电子有限公司 | 数字信号的扩展处理系统、其处理方法和处理器 |
CN112488908B (zh) * | 2020-12-18 | 2021-08-27 | 时擎智能科技(上海)有限公司 | 一种计算装置、计算方法、存储介质及终端 |
US12001385B2 (en) * | 2020-12-24 | 2024-06-04 | Intel Corporation | Apparatuses, methods, and systems for instructions for loading a tile of a matrix operations accelerator |
CN112633505B (zh) | 2020-12-24 | 2022-05-27 | 苏州浪潮智能科技有限公司 | 一种基于risc-v的人工智能推理方法和系统 |
CN112528224B (zh) * | 2020-12-28 | 2022-09-13 | 上海微波技术研究所(中国电子科技集团公司第五十研究所) | 一种矩阵特征值分解分组循环迭代流水实现方法及系统 |
WO2022141344A1 (zh) * | 2020-12-31 | 2022-07-07 | 北京希姆计算科技有限公司 | 执行程序的编译方法、芯片、电子设备及计算机可读存储介质 |
CN112784970B (zh) * | 2020-12-31 | 2023-08-15 | 深圳大普微电子科技有限公司 | 一种硬件加速器、数据处理方法、系统级芯片及介质 |
CN113064841B (zh) * | 2021-01-04 | 2023-06-06 | 统信软件技术有限公司 | 一种数据存储方法、处理方法、计算设备及可读存储介质 |
CN112766477B (zh) * | 2021-01-13 | 2023-05-30 | 天津智模科技有限公司 | 神经网络运算电路 |
CN112905591B (zh) * | 2021-02-04 | 2022-08-26 | 成都信息工程大学 | 一种基于机器学习的数据表连接顺序选择方法 |
CN114944155B (zh) * | 2021-02-14 | 2024-06-04 | 成都启英泰伦科技有限公司 | 一种终端硬件和算法软件处理相结合的离线语音识别方法 |
CN112836513B (zh) * | 2021-02-20 | 2024-07-12 | 广联达科技股份有限公司 | 一种命名实体的链接方法、装置、设备及可读存储介质 |
CN112967188B (zh) * | 2021-03-04 | 2024-04-02 | 中国科学技术大学 | 结合结构化语义码流的空间自适应图像超分辨重建方法 |
CN112835842B (zh) * | 2021-03-05 | 2024-04-30 | 深圳市汇顶科技股份有限公司 | 端序处理方法、电路、芯片以及电子终端 |
US20220300816A1 (en) * | 2021-03-19 | 2022-09-22 | Rebellions Inc. | Neural processing device and method for pruning thereof |
CN113138804B (zh) * | 2021-04-20 | 2022-10-04 | 清华大学 | 在传输过程中提取流数据特征的流处理器及其实现方法 |
CN113284512B (zh) * | 2021-05-25 | 2022-05-27 | 重庆大学 | 一种基于深度稀疏迁移学习的帕金森语音分类方法 |
CN113256497B (zh) * | 2021-06-21 | 2021-09-24 | 中南大学 | 图像重建方法及系统 |
CN113254648B (zh) * | 2021-06-22 | 2021-10-22 | 暨南大学 | 一种基于多层次图池化的文本情感分析方法 |
CN115600659A (zh) * | 2021-07-08 | 2023-01-13 | 北京嘉楠捷思信息技术有限公司(Cn) | 一种神经网络运算的硬件加速装置和加速方法 |
CN113407351B (zh) * | 2021-07-20 | 2024-08-23 | 昆仑芯(北京)科技有限公司 | 执行运算的方法、装置、芯片、设备、介质和程序产品 |
CN113485951B (zh) * | 2021-07-31 | 2022-02-11 | 郑州信大捷安信息技术股份有限公司 | 一种基于fpga的dma读操作实现方法、fpga设备以及通信系统 |
CN113344768B (zh) * | 2021-08-02 | 2021-10-15 | 成都统信软件技术有限公司 | 一种图像矩阵卷积的实现方法、计算设备及储存介质 |
CN113688352B (zh) * | 2021-08-20 | 2023-08-04 | 上海思朗科技有限公司 | 一种数据处理系统、方法及装置 |
CN113709495B (zh) * | 2021-08-24 | 2023-11-24 | 天津津航计算技术研究所 | 一种基于pcie缓冲机制的同步解码方法 |
CN113704689B (zh) * | 2021-08-25 | 2022-11-11 | 北京大学 | 一种基于昇腾ai处理器的矩阵乘算子的处理方法及装置 |
CN113489619B (zh) * | 2021-09-06 | 2021-11-19 | 中国人民解放军国防科技大学 | 一种基于时间序列分析的网络拓扑推断方法及装置 |
US12050858B2 (en) * | 2021-09-21 | 2024-07-30 | Bank Of America Corporation | Personal data discovery |
CN113869495B (zh) * | 2021-09-30 | 2024-02-06 | 苏州浪潮智能科技有限公司 | 神经网络卷积权重layout优化的方法、装置、设备及可读介质 |
CN113988280B (zh) * | 2021-10-26 | 2023-05-05 | 电子科技大学 | 一种基于二值化神经网络的阵列计算加速器架构 |
CN113918883B (zh) * | 2021-11-03 | 2022-05-27 | 海光信息技术股份有限公司 | 数据处理方法、装置以及设备和计算机可读存储介质 |
CN114116547B (zh) * | 2021-11-12 | 2024-03-26 | 成都立思方信息技术有限公司 | 一种可重构的电子对抗设备模拟器架构 |
CN113791889B (zh) * | 2021-11-18 | 2022-03-11 | 中国科学院成都文献情报中心 | 一种基于多级轮询队列控制器部署学习模型的方法 |
CN114281874A (zh) * | 2021-11-19 | 2022-04-05 | 北京大学 | 一种基于昇腾ai处理器的索引转换方法及装置 |
CN114065095B (zh) * | 2021-11-30 | 2024-08-27 | 中国电信股份有限公司 | 网络节点加速方法、装置、计算机可读介质及电子设备 |
CN114172936B (zh) * | 2021-12-08 | 2024-09-13 | 长讯通信服务有限公司 | 一种应用于物联网设备通信可信的方法 |
CN114217710B (zh) * | 2021-12-20 | 2023-07-21 | 平安付科技服务有限公司 | 弹框控制方法、装置、存储介质及系统 |
CN114372012B (zh) * | 2021-12-21 | 2024-02-20 | 中国科学院深圳先进技术研究院 | 一种通用、可配置的高能效池化计算单行输出系统和方法 |
CN114340097B (zh) * | 2021-12-30 | 2024-07-30 | 合肥市芯海电子科技有限公司 | 一种控制灯带的方法、装置、芯片和电子设备 |
CN114359683B (zh) * | 2021-12-31 | 2023-10-20 | 电子科技大学 | 一种面向文本定位的单内核hog高效异构加速方法 |
CN114356235A (zh) * | 2021-12-31 | 2022-04-15 | Oppo广东移动通信有限公司 | 一种数据标准化处理方法、装置、电子设备及存储介质 |
CN116450086B (zh) * | 2022-01-05 | 2024-07-05 | 腾讯科技(深圳)有限公司 | 包括乘累加器的芯片、终端和控制方法 |
CN114491396A (zh) * | 2022-01-20 | 2022-05-13 | 重庆邮电大学 | 一种idma系统发送信号均值计算方法及系统 |
CN114567596B (zh) * | 2022-01-24 | 2024-04-05 | 浙江数秦科技有限公司 | 一种用于区块链的数据快速交换方法 |
CN114567670B (zh) * | 2022-01-25 | 2024-04-05 | 浙江数秦科技有限公司 | 一种区块链网络数据传输方法 |
CN114168522B (zh) * | 2022-02-14 | 2022-04-29 | 北京微核芯科技有限公司 | 一种数据传输方法、装置及传输部件 |
CN114546914B (zh) * | 2022-02-23 | 2024-04-26 | 北京奕斯伟计算技术股份有限公司 | 用于对多个通道信息执行数据处理的处理装置及系统 |
CN114692060A (zh) * | 2022-03-04 | 2022-07-01 | 支付宝(杭州)信息技术有限公司 | 数据处理方法和装置 |
CN114615207B (zh) * | 2022-03-10 | 2022-11-25 | 四川三思德科技有限公司 | 推流前的数据定向化处理方法及装置 |
CN114595173A (zh) * | 2022-03-18 | 2022-06-07 | 山东云海国创云计算装备产业创新中心有限公司 | 一种数据传输方法、系统及计算机可读存储介质 |
TWI795254B (zh) * | 2022-03-30 | 2023-03-01 | 天擎積體電路股份有限公司 | 支持廣播的模組系統、模組單元與廣播方法 |
CN114969029B (zh) * | 2022-04-22 | 2024-07-23 | 南京航空航天大学 | 一种基于泰勒展开的多维插值及其维间点取值方法 |
WO2024004221A1 (ja) * | 2022-07-01 | 2024-01-04 | 日本電信電話株式会社 | 演算処理装置、演算処理方法、及び演算処理プログラム |
CN115190220B (zh) * | 2022-07-07 | 2024-10-01 | 中国科学院半导体研究所 | 基于动态视觉和灰度脉冲传感器的片上脉冲图像处理系统 |
WO2024049568A1 (en) * | 2022-08-31 | 2024-03-07 | Microsoft Technology Licensing, Llc | Increased computation efficiency with multi-stage 8-bit floating point matrix multiplication with format conversion |
CN115412758B (zh) * | 2022-09-01 | 2023-11-14 | 北京奇艺世纪科技有限公司 | 一种视频处理方法及相关装置 |
CN115248701B (zh) * | 2022-09-21 | 2022-12-20 | 进迭时空(杭州)科技有限公司 | 一种处理器寄存器堆之间的零拷贝数据传输装置及方法 |
CN115269205B (zh) * | 2022-09-27 | 2022-12-27 | 之江实验室 | 一种面向神经网络计算的内存优化方法和装置 |
CN115629579B (zh) * | 2022-10-13 | 2023-11-07 | 南京天洑软件有限公司 | 一种cstr系统的控制方法及装置 |
CN115640493B (zh) * | 2022-10-28 | 2024-07-30 | 成都医学院 | 基于fpga的分段线性分数阶运算ip核 |
CN115638833B (zh) * | 2022-12-23 | 2023-03-31 | 保定网城软件股份有限公司 | 一种监控数据处理方法及系统 |
CN116188247B (zh) * | 2023-02-06 | 2024-04-12 | 格兰菲智能科技有限公司 | 寄存器信息处理方法、装置、计算机设备、存储介质 |
WO2024176926A1 (ja) * | 2023-02-22 | 2024-08-29 | 株式会社デンソー | 演算処理装置 |
CN116775556A (zh) * | 2023-06-27 | 2023-09-19 | 无锡中微亿芯有限公司 | 一种高数据传输效率的存算架构fpga |
CN116679988B (zh) * | 2023-08-02 | 2023-10-27 | 武汉芯必达微电子有限公司 | 硬件加速单元、硬件加速方法、芯片及存储介质 |
CN116720554B (zh) * | 2023-08-11 | 2023-11-14 | 南京师范大学 | 一种基于fpga技术的多段线性拟合的神经元电路实现方法 |
CN117235519B (zh) * | 2023-09-13 | 2024-09-24 | 港华数智能源科技(深圳)有限公司 | 能源数据处理方法、装置及存储介质 |
CN117372495B (zh) * | 2023-09-15 | 2024-08-06 | 进迭时空(杭州)科技有限公司 | 一种加速数字图像处理中不同位宽点积的计算方法 |
CN117202242B (zh) * | 2023-11-08 | 2024-02-06 | 南京邮电大学 | 一种基于粒子滤波模型的车联网中节点失效检测方法 |
CN117313803B (zh) * | 2023-11-28 | 2024-02-02 | 进迭时空(杭州)科技有限公司 | 基于risc-v向量处理器架构的滑动窗口2d卷积计算方法 |
CN117707468B (zh) * | 2023-12-07 | 2024-09-20 | 沐曦科技(北京)有限公司 | 一种用于部分写入的数据处理系统 |
CN117725468B (zh) * | 2024-02-06 | 2024-04-26 | 四川鸿霖科技有限公司 | 一种智能医用电保障方法及系统 |
CN118095351B (zh) * | 2024-04-12 | 2024-07-02 | 清华大学 | 层归一化计算的协同处理装置及方法 |
CN118535124A (zh) * | 2024-05-27 | 2024-08-23 | 北京航空航天大学合肥创新研究院 | 移位加法器树结构、计算核架构、执行计算的方法及芯片 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101315770A (zh) * | 2008-05-27 | 2008-12-03 | 北京承芯卓越科技有限公司 | 语音识别片上系统及采用其的语音识别方法 |
CN103002147A (zh) * | 2012-11-29 | 2013-03-27 | 广东欧珀移动通信有限公司 | 一种移动终端自动应答方法和装置 |
CN104038864A (zh) * | 2013-03-08 | 2014-09-10 | 亚德诺半导体股份有限公司 | 带有语音识别的麦克风电路总成和系统 |
CN105703978A (zh) * | 2014-11-24 | 2016-06-22 | 武汉物联远科技有限公司 | 智能家居控制系统和方法 |
CN106850673A (zh) * | 2017-03-09 | 2017-06-13 | 福建省汽车工业集团云度新能源汽车股份有限公司 | 基于声纹识别的汽车用户登入方法及装置 |
Family Cites Families (294)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0444717B1 (en) * | 1982-06-11 | 1996-05-22 | Mitsubishi Denki Kabushiki Kaisha | Vector quantizer |
US4739472A (en) * | 1984-12-07 | 1988-04-19 | Nec Corporation | Information processing device capable of rapidly processing instructions of different groups |
US5047954A (en) * | 1986-01-17 | 1991-09-10 | International Business Machines Corporation | Graphics vector generator setup technique |
JP2785155B2 (ja) * | 1990-09-10 | 1998-08-13 | 富士通株式会社 | ニューロコンピュータの非同期制御方式 |
JPH04195251A (ja) * | 1990-10-03 | 1992-07-15 | Fujitsu Ltd | ニューラルネットの学習計算方法 |
US5283839A (en) * | 1990-12-31 | 1994-02-01 | Neurosciences Research Foundation, Inc. | Apparatus capable of figure-ground segregation |
FR2694430B1 (fr) * | 1992-07-31 | 1994-09-09 | Centre Nat Rech Scient | Dispositif électronique pour l'analyse d'image et la vision artificielle. |
JPH0633237U (ja) * | 1992-09-29 | 1994-04-28 | 紀北電子株式会社 | 計測データの実時間演算機能を有する演算装置 |
US5673407A (en) * | 1994-03-08 | 1997-09-30 | Texas Instruments Incorporated | Data processor having capability to perform both floating point operations and memory access in response to a single instruction |
JP3398673B2 (ja) * | 1994-08-31 | 2003-04-21 | エヌイーシーコンピュータテクノ株式会社 | ベクトルデータ処理装置 |
US6047081A (en) | 1997-10-24 | 2000-04-04 | Imation Corp. | Image processing software system having configurable communication pipelines |
US7085710B1 (en) * | 1998-01-07 | 2006-08-01 | Microsoft Corporation | Vehicle computer system audio entertainment system |
US6477555B1 (en) * | 1999-07-07 | 2002-11-05 | Lucent Technologies Inc. | Method and apparatus for performing rapid convolution |
DE19948373A1 (de) * | 1999-10-06 | 2001-05-17 | Infineon Technologies Ag | Verfahren zur Kanalentzerrung |
EP1160794B1 (en) * | 2000-05-31 | 2008-07-23 | STMicroelectronics S.r.l. | Circuit structure for programming data in reference cells of a multibit non-volatile memory device |
GB2382887B (en) * | 2001-10-31 | 2005-09-28 | Alphamosaic Ltd | Instruction execution in a processor |
CN1142484C (zh) * | 2001-11-28 | 2004-03-17 | 中国人民解放军国防科学技术大学 | 微处理器向量处理方法 |
US6889216B2 (en) * | 2002-03-12 | 2005-05-03 | Knowm Tech, Llc | Physical neural network design incorporating nanotechnology |
US6670895B2 (en) * | 2002-05-01 | 2003-12-30 | Analog Devices, Inc. | Method and apparatus for swapping the contents of address registers |
US7065545B2 (en) * | 2002-05-07 | 2006-06-20 | Quintero-De-La-Garza Raul Gera | Computer methods of vector operation for reducing computation time |
US7475101B2 (en) * | 2003-09-29 | 2009-01-06 | International Business Machines Corporation | Method and structure for producing high performance linear algebra routines using streaming |
US7680208B2 (en) * | 2004-02-25 | 2010-03-16 | Nokia Corporation | Multiscale wireless communication |
US20050268195A1 (en) * | 2004-04-29 | 2005-12-01 | Lund Morten W | Apparatus and method for improving emulation speed of high-level languages in on-chip emulation systems |
JP4586443B2 (ja) * | 2004-07-16 | 2010-11-24 | トヨタ自動車株式会社 | 情報提供装置 |
US7519207B2 (en) | 2004-11-19 | 2009-04-14 | Carestream Health, Inc. | Detection and correction method for radiograph orientation |
CN102831387B (zh) * | 2005-01-07 | 2016-12-14 | 高通股份有限公司 | 检测和跟踪图像中的物体 |
US7490230B2 (en) * | 2005-02-04 | 2009-02-10 | Mips Technologies, Inc. | Fetch director employing barrel-incrementer-based round-robin apparatus for use in multithreading microprocessor |
US20070005248A1 (en) * | 2005-06-29 | 2007-01-04 | Intel Corporation | Data reconstruction in link-based interconnects |
US20070156685A1 (en) * | 2005-12-28 | 2007-07-05 | Hiroshi Inoue | Method for sorting data using SIMD instructions |
CN101449256B (zh) * | 2006-04-12 | 2013-12-25 | 索夫特机械公司 | 对载明并行和依赖运算的指令矩阵进行处理的装置和方法 |
US7574534B2 (en) * | 2006-05-23 | 2009-08-11 | International Business Machines Corporation | Method for using device enumeration information to identify an operating system running on a computer system |
JP4934356B2 (ja) * | 2006-06-20 | 2012-05-16 | 株式会社日立製作所 | 映像処理エンジンおよびそれを含む映像処理システム |
US20080071851A1 (en) * | 2006-09-20 | 2008-03-20 | Ronen Zohar | Instruction and logic for performing a dot-product operation |
US8340795B2 (en) * | 2007-03-26 | 2012-12-25 | Google Inc. | Small removable audio player that attaches to a host media player |
US20080201234A1 (en) * | 2007-02-16 | 2008-08-21 | Microsoft Corporation | Live entities internet store service |
JP4791984B2 (ja) | 2007-02-27 | 2011-10-12 | 株式会社東芝 | 入力された音声を処理する装置、方法およびプログラム |
CN100588172C (zh) * | 2007-04-28 | 2010-02-03 | 腾讯科技(深圳)有限公司 | 一种实现网络预订存储的系统和方法 |
US8644151B2 (en) * | 2007-05-22 | 2014-02-04 | Cisco Technology, Inc. | Processing packet flows |
JP4325708B2 (ja) * | 2007-07-05 | 2009-09-02 | ソニー株式会社 | データ処理装置、データ処理方法およびデータ処理プログラム、符号化装置、符号化方法および符号化プログラム、ならびに、復号装置、復号方法および復号プログラム |
CN101369233A (zh) * | 2007-08-14 | 2009-02-18 | 国际商业机器公司 | 程序编译方法和编译器 |
CN101217628A (zh) * | 2008-01-08 | 2008-07-09 | 北京航空航天大学 | 一种多天线地面数字电视接收机的分集合并装置和其方法 |
JP2009200713A (ja) * | 2008-02-20 | 2009-09-03 | Sony Corp | 画像処理装置、画像処理方法、プログラム |
CN101295405A (zh) * | 2008-06-13 | 2008-10-29 | 西北工业大学 | 人像与车辆识别报警跟踪方法 |
JP5418991B2 (ja) | 2008-07-10 | 2014-02-19 | 日本電気株式会社 | 個人認証システム、個人認証方法 |
CN102216941B (zh) * | 2008-08-19 | 2015-08-12 | 数字标记公司 | 用于内容处理的方法和系统 |
CN101685388B (zh) * | 2008-09-28 | 2013-08-07 | 北京大学深圳研究生院 | 执行比较运算的方法和装置 |
JP5376920B2 (ja) * | 2008-12-04 | 2013-12-25 | キヤノン株式会社 | コンボリューション演算回路、階層的コンボリューション演算回路及び物体認識装置 |
CN101782893B (zh) * | 2009-01-21 | 2014-12-24 | 上海芯豪微电子有限公司 | 可重构数据处理平台 |
CN101556565B (zh) * | 2009-01-22 | 2010-09-29 | 杭州中天微系统有限公司 | 嵌入式处理器的片上高性能dma |
CN101819570B (zh) * | 2009-02-27 | 2012-08-15 | 国际商业机器公司 | 网络环境中的用户信息处理和资源推荐的方法和系统 |
US8331168B2 (en) * | 2009-04-30 | 2012-12-11 | International Business Machines Corporation | Increased capacity heterogeneous storage elements |
CN101620524B (zh) * | 2009-07-03 | 2011-08-10 | 中国人民解放军国防科学技术大学 | 支持矩阵整体读写操作的矩阵寄存器文件 |
CN101615113A (zh) * | 2009-07-31 | 2009-12-30 | 清华大学 | 一条指令完成一次蝶形运算的微处理器实现方法 |
US8577950B2 (en) | 2009-08-17 | 2013-11-05 | International Business Machines Corporation | Matrix multiplication operations with data pre-conditioning in a high performance computing architecture |
CN101710272B (zh) * | 2009-10-28 | 2012-09-05 | 龙芯中科技术有限公司 | 指令调度装置和方法 |
US20110112981A1 (en) | 2009-11-09 | 2011-05-12 | Seung-Taek Park | Feature-Based Method and System for Cold-Start Recommendation of Online Ads |
US8996845B2 (en) * | 2009-12-22 | 2015-03-31 | Intel Corporation | Vector compare-and-exchange operation |
US8984043B2 (en) | 2009-12-23 | 2015-03-17 | Intel Corporation | Multiplying and adding matrices |
CN102014475B (zh) * | 2010-01-08 | 2012-01-04 | 华为技术有限公司 | 资源映射、码分复用方法及装置 |
JP5110098B2 (ja) | 2010-02-08 | 2012-12-26 | カシオ計算機株式会社 | 表示処理装置、及び、プログラム |
CN101794239B (zh) * | 2010-03-16 | 2012-11-14 | 浙江大学 | 一种基于数据流模型的多处理器任务调度管理方法 |
CN101833468B (zh) * | 2010-04-28 | 2013-05-08 | 中国科学院自动化研究所 | 在高性能计算系统中生成向量处理指令集结构的方法 |
CN101833441B (zh) * | 2010-04-28 | 2013-02-13 | 中国科学院自动化研究所 | 并行向量处理引擎结构 |
CN101876892B (zh) * | 2010-05-20 | 2013-07-31 | 复旦大学 | 面向通信和多媒体应用的单指令多数据处理器电路结构 |
JP5408037B2 (ja) * | 2010-05-28 | 2014-02-05 | カシオ計算機株式会社 | 画像処理装置及び方法、並びにプログラム |
CN102346894B (zh) * | 2010-08-03 | 2017-03-01 | 阿里巴巴集团控股有限公司 | 推荐信息的输出方法、系统及服务器 |
JP2012073998A (ja) | 2010-08-31 | 2012-04-12 | Casio Comput Co Ltd | 画像配信システム、画像表示装置、画像配信サーバー、及びプログラム |
GB2483903A (en) * | 2010-09-24 | 2012-03-28 | Advanced Risc Mach Ltd | Instruction which specifies the type of the next instruction to be executed |
CN102012893B (zh) * | 2010-11-25 | 2012-07-18 | 中国人民解放军国防科学技术大学 | 一种可扩展向量运算装置 |
CN102005743A (zh) * | 2010-11-25 | 2011-04-06 | 沈阳工业大学 | 基于径向基神经网络的自适应继电保护装置 |
US8635431B2 (en) * | 2010-12-08 | 2014-01-21 | International Business Machines Corporation | Vector gather buffer for multiple address vector loads |
CN102541814B (zh) * | 2010-12-27 | 2015-10-14 | 北京国睿中数科技股份有限公司 | 用于数据通信处理器的矩阵计算装置和方法 |
CN102098623B (zh) * | 2011-01-27 | 2013-06-12 | 大唐移动通信设备有限公司 | 一种mbsfn操作域动态生成方法和mce |
US8892788B2 (en) * | 2011-02-22 | 2014-11-18 | Red Hat Israel, Ltd. | Exposing a DMA engine to guests in a virtual machine system |
CN102103479B (zh) * | 2011-03-02 | 2015-06-10 | 中兴通讯股份有限公司 | 浮点运算器及浮点运算的处理方法 |
ES2943248T3 (es) * | 2011-04-01 | 2023-06-12 | Intel Corp | Formato de instrucción compatible con vectores y ejecución del mismo |
CN102156637A (zh) * | 2011-05-04 | 2011-08-17 | 中国人民解放军国防科学技术大学 | 向量交叉多线程处理方法及向量交叉多线程微处理器 |
US8620853B2 (en) * | 2011-07-19 | 2013-12-31 | Smartsignal Corporation | Monitoring method using kernel regression modeling with pattern sequences |
CN102262525B (zh) * | 2011-08-29 | 2014-11-19 | 孙瑞玮 | 基于矢量运算的矢量浮点运算装置及方法 |
CN102360344B (zh) * | 2011-10-10 | 2014-03-12 | 西安交通大学 | 矩阵处理器及其指令集和嵌入式系统 |
CN202281998U (zh) * | 2011-10-18 | 2012-06-20 | 苏州科雷芯电子科技有限公司 | 一种标量浮点运算加速器 |
CN102375805B (zh) * | 2011-10-31 | 2014-04-02 | 中国人民解放军国防科学技术大学 | 面向向量处理器的基于simd的fft并行计算方法 |
CN102508643A (zh) * | 2011-11-16 | 2012-06-20 | 刘大可 | 一种多核并行数字信号处理器及并行指令集的运行方法 |
CN102520906A (zh) * | 2011-12-13 | 2012-06-27 | 中国科学院自动化研究所 | 支持定浮点可重构的向量长度可配置的向量点积累加网络 |
US9960917B2 (en) * | 2011-12-22 | 2018-05-01 | Intel Corporation | Matrix multiply accumulate instruction |
US8929539B2 (en) * | 2011-12-22 | 2015-01-06 | Intel Corporation | Instructions to perform Groestl hashing |
US20140207838A1 (en) * | 2011-12-22 | 2014-07-24 | Klaus Danne | Method, apparatus and system for execution of a vector calculation instruction |
WO2013095634A1 (en) * | 2011-12-23 | 2013-06-27 | Intel Corporation | Systems, apparatuses, and methods for performing a horizontal partial sum in response to a single instruction |
US9798541B2 (en) * | 2011-12-23 | 2017-10-24 | Intel Corporation | Apparatus and method for propagating conditionally evaluated values in SIMD/vector execution using an input mask register |
WO2013095613A2 (en) * | 2011-12-23 | 2013-06-27 | Intel Corporation | Apparatus and method of mask permute instructions |
US9619226B2 (en) * | 2011-12-23 | 2017-04-11 | Intel Corporation | Systems, apparatuses, and methods for performing a horizontal add or subtract in response to a single instruction |
US9557998B2 (en) * | 2011-12-28 | 2017-01-31 | Intel Corporation | Systems, apparatuses, and methods for performing delta decoding on packed data elements |
KR20130090147A (ko) * | 2012-02-03 | 2013-08-13 | 안병익 | 신경망 컴퓨팅 장치 및 시스템과 그 방법 |
US8706971B1 (en) * | 2012-03-14 | 2014-04-22 | Netapp, Inc. | Caching and deduplication of data blocks in cache memory |
US9575753B2 (en) * | 2012-03-15 | 2017-02-21 | International Business Machines Corporation | SIMD compare instruction using permute logic for distributed register files |
US9715383B2 (en) * | 2012-03-15 | 2017-07-25 | International Business Machines Corporation | Vector find element equal instruction |
CN102629913B (zh) * | 2012-04-11 | 2014-12-24 | 浙江大学 | 适用于全局异步局部同步片上互连网络的路由器装置 |
RU2600811C2 (ru) * | 2012-05-31 | 2016-10-27 | Лэндмарк Графикс Корпорейшн | Система и способ для оптимальной установки буровой площадки |
CN102750127B (zh) * | 2012-06-12 | 2015-06-24 | 清华大学 | 一种协处理器 |
CN102724482B (zh) * | 2012-06-18 | 2015-08-26 | 西安电子科技大学 | 基于gps和gis的智能视觉传感网络运动目标接力跟踪系统 |
US10095516B2 (en) * | 2012-06-29 | 2018-10-09 | Intel Corporation | Vector multiplication with accumulation in large register space |
US9342479B2 (en) * | 2012-08-23 | 2016-05-17 | Qualcomm Incorporated | Systems and methods of data extraction in a vector processor |
CN102880341B (zh) * | 2012-08-29 | 2015-08-05 | 北京集创北方科技有限公司 | 触摸屏数据处理系统、方法及专用alu |
CN103699360B (zh) * | 2012-09-27 | 2016-09-21 | 北京中科晶上科技有限公司 | 一种向量处理器及其进行向量数据存取、交互的方法 |
US9480439B2 (en) | 2012-11-01 | 2016-11-01 | Virginia Commonwealth University | Segmentation and fracture detection in CT images |
CN103064086B (zh) * | 2012-11-04 | 2014-09-17 | 北京工业大学 | 一种基于深度信息的车辆跟踪方法 |
US9405538B2 (en) * | 2012-12-28 | 2016-08-02 | Intel Corporation | Functional unit having tree structure to support vector sorting algorithm and other algorithms |
US9419792B2 (en) * | 2012-12-28 | 2016-08-16 | Intel Corporation | Instruction for accelerating SNOW 3G wireless security algorithm |
US9804840B2 (en) * | 2013-01-23 | 2017-10-31 | International Business Machines Corporation | Vector Galois Field Multiply Sum and Accumulate instruction |
US9513906B2 (en) * | 2013-01-23 | 2016-12-06 | International Business Machines Corporation | Vector checksum instruction |
US9823924B2 (en) | 2013-01-23 | 2017-11-21 | International Business Machines Corporation | Vector element rotate and insert under mask instruction |
US9231898B2 (en) * | 2013-02-08 | 2016-01-05 | Machine Zone, Inc. | Systems and methods for multi-user multi-lingual communications |
US9430164B1 (en) * | 2013-02-08 | 2016-08-30 | Emc Corporation | Memory efficient sanitization of a deduplicated storage system |
JP5852601B2 (ja) * | 2013-02-26 | 2016-02-03 | 日本電信電話株式会社 | ネットワーク設計装置およびネットワーク設計プログラム |
US9349386B2 (en) * | 2013-03-07 | 2016-05-24 | Analog Device Global | System and method for processor wake-up based on sensor data |
US9250916B2 (en) * | 2013-03-12 | 2016-02-02 | International Business Machines Corporation | Chaining between exposed vector pipelines |
US9094576B1 (en) * | 2013-03-12 | 2015-07-28 | Amazon Technologies, Inc. | Rendered audiovisual communication |
US9417880B2 (en) * | 2013-03-15 | 2016-08-16 | Intel Corporation | Instruction for performing an overload check |
US20140317333A1 (en) * | 2013-04-17 | 2014-10-23 | Microchip Technology Incorporated | Direct Memory Access Controller with Hybrid Scatter-Gather Functionality |
CN104123250B (zh) * | 2013-04-25 | 2019-02-01 | 上海联影医疗科技有限公司 | 基于dma的数据传输方法 |
CN103294648B (zh) * | 2013-05-08 | 2016-06-01 | 中国人民解放军国防科学技术大学 | 支持多mac运算部件向量处理器的分块矩阵乘法向量化方法 |
US9679218B2 (en) | 2013-05-09 | 2017-06-13 | Tata Consultancy Services Limited | Method and apparatus for image matching |
CN104157285B (zh) * | 2013-05-14 | 2016-01-20 | 腾讯科技(深圳)有限公司 | 语音识别方法、装置及电子设备 |
CN103368701B (zh) * | 2013-07-12 | 2016-06-08 | 中国科学技术大学 | 一种基于吉文斯旋转的物理层多播多流数据传输方法 |
CN104376842A (zh) * | 2013-08-12 | 2015-02-25 | 清华大学 | 神经网络语言模型的训练方法、装置以及语音识别方法 |
US9405728B2 (en) * | 2013-09-05 | 2016-08-02 | Altera Corporation | Floating-point adder circuitry |
US9542626B2 (en) * | 2013-09-06 | 2017-01-10 | Toyota Jidosha Kabushiki Kaisha | Augmenting layer-based object detection with deep convolutional neural networks |
CN104461970B (zh) * | 2013-09-18 | 2019-06-11 | 中兴通讯股份有限公司 | Dma控制器、移动终端以及数据搬运方法 |
EP2851786A1 (en) * | 2013-09-23 | 2015-03-25 | Telefonaktiebolaget L M Ericsson (publ) | Instruction class for digital signal processors |
CN103530276B (zh) * | 2013-09-25 | 2016-06-22 | 中国科学技术大学 | 一种基于龙芯3b的自适应矩阵乘法优化方法 |
US20160293167A1 (en) * | 2013-10-10 | 2016-10-06 | Google Inc. | Speaker recognition using neural networks |
KR102120864B1 (ko) | 2013-11-06 | 2020-06-10 | 삼성전자주식회사 | 영상 처리 방법 및 장치 |
CN103646007A (zh) | 2013-12-18 | 2014-03-19 | 北京经纬恒润科技有限公司 | 数据处理方法、装置及系统 |
US9880971B2 (en) * | 2013-12-20 | 2018-01-30 | Rambus Inc. | Memory appliance for accessing memory |
US9507595B2 (en) * | 2014-02-28 | 2016-11-29 | International Business Machines Corporation | Execution of multi-byte memory access instruction specifying endian mode that overrides current global endian mode |
US9740659B2 (en) * | 2014-03-19 | 2017-08-22 | International Business Machines Corporation | Merging and sorting arrays on an SIMD processor |
CN103856727B (zh) * | 2014-03-24 | 2017-01-25 | 北京工业大学 | 一种多路实时视频拼接处理系统 |
CN105446970A (zh) * | 2014-06-10 | 2016-03-30 | 华为技术有限公司 | 推荐项目的方法和装置 |
CN104158753B (zh) * | 2014-06-12 | 2017-10-24 | 南京工程学院 | 基于软件定义网络的动态流调度方法及系统 |
CN104077138B (zh) * | 2014-06-27 | 2017-08-29 | 中国科学院计算技术研究所 | 一种集成网络路由器的众核处理器系统及其集成方法和实现方法 |
CN106325811B (zh) * | 2014-07-02 | 2020-02-07 | 上海兆芯集成电路有限公司 | 微处理器中的方法 |
KR101844932B1 (ko) * | 2014-09-16 | 2018-04-03 | 한국전자통신연구원 | 신호처리 알고리즘이 통합된 심층 신경망 기반의 음성인식 장치 및 이의 학습방법 |
US10061746B2 (en) * | 2014-09-26 | 2018-08-28 | Intel Corporation | Instruction and logic for a vector format for processing computations |
CN104219505A (zh) * | 2014-09-29 | 2014-12-17 | 济南中维世纪科技有限公司 | 一种基于PCIe的多路高清模拟音视频采集系统 |
CN104376326B (zh) * | 2014-11-02 | 2017-06-16 | 吉林大学 | 一种用于图像场景识别的特征提取方法 |
US9824684B2 (en) | 2014-11-13 | 2017-11-21 | Microsoft Technology Licensing, Llc | Prediction-based sequence recognition |
US20160139921A1 (en) * | 2014-11-14 | 2016-05-19 | Intel Corporation | Vector instruction to compute coordiante of next point in a z-order curve |
EP3035204B1 (en) * | 2014-12-19 | 2018-08-15 | Intel Corporation | Storage device and method for performing convolution operations |
CN105787888A (zh) * | 2014-12-23 | 2016-07-20 | 联芯科技有限公司 | 人脸图像美化方法 |
US9851970B2 (en) * | 2014-12-23 | 2017-12-26 | Intel Corporation | Method and apparatus for performing reduction operations on a set of vector elements |
US10671679B2 (en) | 2014-12-30 | 2020-06-02 | Oath Inc. | Method and system for enhanced content recommendation |
CN104537630A (zh) * | 2015-01-22 | 2015-04-22 | 厦门美图之家科技有限公司 | 一种基于年龄估计的图像美颜方法和装置 |
US10846589B2 (en) | 2015-03-12 | 2020-11-24 | William Marsh Rice University | Automated compilation of probabilistic task description into executable neural network specification |
CN106034145B (zh) * | 2015-03-12 | 2019-08-09 | 阿里巴巴集团控股有限公司 | 数据处理的方法和系统 |
CN106302837B (zh) * | 2015-05-12 | 2019-08-06 | 青岛海信宽带多媒体技术有限公司 | 一种光网络单元的mac地址表管理方法及装置 |
CN104834747B (zh) * | 2015-05-25 | 2018-04-27 | 中国科学院自动化研究所 | 基于卷积神经网络的短文本分类方法 |
CN104850845B (zh) * | 2015-05-30 | 2017-12-26 | 大连理工大学 | 一种基于非对称卷积神经网络的交通标志识别方法 |
CN104915322B (zh) * | 2015-06-09 | 2018-05-01 | 中国人民解放军国防科学技术大学 | 一种卷积神经网络硬件加速方法 |
US11755484B2 (en) * | 2015-06-26 | 2023-09-12 | Microsoft Technology Licensing, Llc | Instruction block allocation |
KR102371188B1 (ko) * | 2015-06-30 | 2022-03-04 | 삼성전자주식회사 | 음성 인식 장치 및 방법과 전자 장치 |
CN105068998B (zh) * | 2015-07-29 | 2017-12-15 | 百度在线网络技术(北京)有限公司 | 基于神经网络模型的翻译方法及装置 |
DE102015009981A1 (de) * | 2015-07-31 | 2017-02-02 | Eberhard Karls Universität Tübingen | Verfahren und Vorrichtung zur Bildsynthese |
US10198872B2 (en) * | 2015-08-10 | 2019-02-05 | The Board Of Trustees Of The Leland Stanford Junior University | 3D reconstruction and registration of endoscopic data |
CN105069304B (zh) * | 2015-08-18 | 2019-04-05 | 广东顺德中山大学卡内基梅隆大学国际联合研究院 | 一种基于机器学习的评估预测asd的装置 |
CN106484682B (zh) * | 2015-08-25 | 2019-06-25 | 阿里巴巴集团控股有限公司 | 基于统计的机器翻译方法、装置及电子设备 |
CN105160340A (zh) * | 2015-08-31 | 2015-12-16 | 桂林电子科技大学 | 一种车辆品牌识别系统及方法 |
CN105184366B (zh) * | 2015-09-15 | 2018-01-09 | 中国科学院计算技术研究所 | 一种时分复用的通用神经网络处理器 |
CN108027735B (zh) * | 2015-09-19 | 2021-08-27 | 微软技术许可有限责任公司 | 用于操作处理器的装置、方法和计算机可读存储介质 |
US10789525B2 (en) * | 2015-10-02 | 2020-09-29 | Adobe Inc. | Modifying at least one attribute of an image with at least one attribute extracted from another image |
US10585848B2 (en) | 2015-10-08 | 2020-03-10 | Via Alliance Semiconductor Co., Ltd. | Processor with hybrid coprocessor/execution unit neural network unit |
CN105405443A (zh) * | 2015-10-23 | 2016-03-16 | 福州瑞芯微电子股份有限公司 | 基于ape格式的音频信号压缩处理系统及方法 |
WO2017077121A1 (en) * | 2015-11-06 | 2017-05-11 | Thomson Licensing | Method for transfer of a style of a reference visual object to another visual object, and corresponding electronic device, computer readable program products and computer readable storage medium |
US10691456B2 (en) * | 2015-11-13 | 2020-06-23 | International Business Machines Corporation | Vector store instruction having instruction-specified byte count to be stored supporting big and little endian processing |
CN105488565A (zh) * | 2015-11-17 | 2016-04-13 | 中国科学院计算技术研究所 | 加速深度神经网络算法的加速芯片的运算装置及方法 |
CN105468546B (zh) * | 2015-11-17 | 2017-04-12 | 中国科学院计算技术研究所 | 互连电路的数据处理装置和方法 |
CN105468335B (zh) * | 2015-11-24 | 2017-04-12 | 中国科学院计算技术研究所 | 流水级运算装置、数据处理方法及片上网络芯片 |
CN105354006B (zh) * | 2015-11-27 | 2017-11-21 | 中国科学院计算技术研究所 | 一种非线性函数的快速运算装置及其方法 |
CN105512676A (zh) * | 2015-11-30 | 2016-04-20 | 华南理工大学 | 一种智能终端上的食物识别方法 |
CN106844368B (zh) * | 2015-12-03 | 2020-06-16 | 华为技术有限公司 | 用于人机对话的方法、神经网络系统和用户设备 |
CN105609141B (zh) * | 2015-12-18 | 2018-08-10 | 中国科学院计算技术研究所 | 一种用于自动校正访问存储装置数据的装置及方法 |
US20170177348A1 (en) * | 2015-12-21 | 2017-06-22 | Intel Corporation | Instruction and Logic for Compression and Rotation |
US10467201B1 (en) * | 2015-12-23 | 2019-11-05 | Massachusetts Mutual Life Insurance Company | Systems and methods for integration and analysis of data records |
US10032463B1 (en) | 2015-12-29 | 2018-07-24 | Amazon Technologies, Inc. | Speech processing with learned representation of user interaction history |
US10482380B2 (en) * | 2015-12-30 | 2019-11-19 | Amazon Technologies, Inc. | Conditional parallel processing in fully-connected neural networks |
US20170193397A1 (en) * | 2015-12-30 | 2017-07-06 | Accenture Global Solutions Limited | Real time organization pulse gathering and analysis using machine learning and artificial intelligence |
US20170193361A1 (en) * | 2015-12-31 | 2017-07-06 | Microsoft Technology Licensing, Llc | Neural network training performance optimization framework |
US9760807B2 (en) | 2016-01-08 | 2017-09-12 | Siemens Healthcare Gmbh | Deep image-to-image network learning for medical image analysis |
CN105721354B (zh) * | 2016-01-18 | 2019-06-14 | 云南磊奥明科技有限公司 | 片上网络互联方法及装置 |
CN111340200B (zh) * | 2016-01-20 | 2024-05-03 | 中科寒武纪科技股份有限公司 | 用于执行人工神经网络正向运算的装置和方法 |
CN108595371B (zh) * | 2016-01-20 | 2019-11-19 | 北京中科寒武纪科技有限公司 | 用于向量运算的数据读取、写入及读写调度器及保留站 |
CN110135581B (zh) * | 2016-01-20 | 2020-11-06 | 中科寒武纪科技股份有限公司 | 用于执行人工神经网络反向运算的装置和方法 |
CN107704433A (zh) * | 2016-01-20 | 2018-02-16 | 南京艾溪信息科技有限公司 | 一种矩阵运算指令及其方法 |
CN106991477B (zh) * | 2016-01-20 | 2020-08-14 | 中科寒武纪科技股份有限公司 | 一种人工神经网络压缩编码装置和方法 |
CN111580866B (zh) * | 2016-01-20 | 2024-05-07 | 中科寒武纪科技股份有限公司 | 一种向量运算装置及运算方法 |
CN107563497B (zh) * | 2016-01-20 | 2021-03-19 | 中科寒武纪科技股份有限公司 | 用于稀疏人工神经网络的计算装置和运算方法 |
CN105787557B (zh) * | 2016-02-23 | 2019-04-19 | 北京工业大学 | 一种计算机智能识别的深层神经网络结构设计方法 |
KR101784944B1 (ko) * | 2016-02-26 | 2017-10-12 | 삼성중공업 주식회사 | 과전압 억제필터의 구성방법 |
CN105719327B (zh) * | 2016-02-29 | 2018-09-07 | 北京中邮云天科技有限公司 | 一种艺术风格化图像处理方法 |
US10824858B2 (en) | 2016-03-14 | 2020-11-03 | Nec Corporation | Object management device |
CN205582481U (zh) * | 2016-03-16 | 2016-09-14 | 中航华东光电(上海)有限公司 | 可加载个性化特征模型的语音识别系统 |
CN107203775B (zh) * | 2016-03-18 | 2021-07-27 | 斑马智行网络(香港)有限公司 | 一种图像分类的方法、装置和设备 |
CN105844330B (zh) * | 2016-03-22 | 2019-06-28 | 华为技术有限公司 | 神经网络处理器的数据处理方法及神经网络处理器 |
CN105892989B (zh) * | 2016-03-28 | 2017-04-12 | 中国科学院计算技术研究所 | 一种神经网络加速器及其运算方法 |
CN105869117B (zh) * | 2016-03-28 | 2021-04-02 | 上海交通大学 | 一种针对深度学习超分辨率技术的gpu加速方法 |
CN105912476A (zh) * | 2016-04-06 | 2016-08-31 | 中国科学院计算技术研究所 | 片上重复寻址的方法及装置 |
CN105912667A (zh) * | 2016-04-12 | 2016-08-31 | 玉环看知信息科技有限公司 | 一种信息推荐方法、装置及移动终端 |
CN107301453B (zh) * | 2016-04-15 | 2021-04-20 | 中科寒武纪科技股份有限公司 | 支持离散数据表示的人工神经网络正向运算装置和方法 |
CN107301454B (zh) * | 2016-04-15 | 2021-01-22 | 中科寒武纪科技股份有限公司 | 支持离散数据表示的人工神经网络反向训练装置和方法 |
US20190138922A1 (en) * | 2016-04-15 | 2019-05-09 | Cambricon Technologies Corporation Limited | Apparatus and methods for forward propagation in neural networks supporting discrete data |
CN108510064B (zh) * | 2016-04-18 | 2021-12-10 | 中国科学院计算技术研究所 | 包括多个核心处理模块的人工神经网络的处理系统及方法 |
CN107305484B (zh) * | 2016-04-19 | 2021-11-05 | 中科寒武纪科技股份有限公司 | 一种非线性函数运算装置及方法 |
CN105869024A (zh) * | 2016-04-20 | 2016-08-17 | 北京小米移动软件有限公司 | 商品的推荐方法及装置 |
CN105956608A (zh) * | 2016-04-21 | 2016-09-21 | 恩泊泰(天津)科技有限公司 | 一种基于深度学习的目标定位、分类算法 |
CN105913039B (zh) * | 2016-04-26 | 2020-08-18 | 北京光年无限科技有限公司 | 基于视觉和语音的对话数据交互处理方法及装置 |
CN106022468B (zh) * | 2016-05-17 | 2018-06-01 | 成都启英泰伦科技有限公司 | 人工神经网络处理器集成电路及该集成电路的设计方法 |
US10049425B2 (en) | 2016-05-23 | 2018-08-14 | Google Llc | Merging filters for a graphic processing unit |
CN106067031B (zh) * | 2016-05-26 | 2019-05-24 | 北京新长征天高智机科技有限公司 | 基于人工纠错机制与深度学习网络协作机器视觉识别系统 |
CN105895082A (zh) * | 2016-05-30 | 2016-08-24 | 乐视控股(北京)有限公司 | 声学模型训练方法、语音识别方法及装置 |
CN106095834A (zh) * | 2016-06-01 | 2016-11-09 | 竹间智能科技(上海)有限公司 | 基于话题的智能对话方法及系统 |
CN106066783A (zh) * | 2016-06-02 | 2016-11-02 | 华为技术有限公司 | 基于幂次权重量化的神经网络前向运算硬件结构 |
CN106096542B (zh) * | 2016-06-08 | 2020-02-11 | 中国科学院上海高等研究院 | 基于距离预测信息的图像视频场景识别方法 |
CN106127672B (zh) * | 2016-06-21 | 2019-03-12 | 南京信息工程大学 | 基于fpga的图像纹理特征提取算法 |
CN106126507B (zh) * | 2016-06-22 | 2019-08-09 | 哈尔滨工业大学深圳研究生院 | 一种基于字符编码的深度神经翻译方法及系统 |
CN106227507B (zh) * | 2016-07-11 | 2019-10-18 | 北京深鉴智能科技有限公司 | 计算系统及其控制器 |
CN106228512A (zh) * | 2016-07-19 | 2016-12-14 | 北京工业大学 | 基于学习率自适应的卷积神经网络图像超分辨率重建方法 |
CN106228162B (zh) | 2016-07-22 | 2019-05-17 | 王威 | 一种基于深度学习的移动机器人快速物体识别方法 |
CN106296667A (zh) * | 2016-08-01 | 2017-01-04 | 乐视控股(北京)有限公司 | 手形检测方法和系统 |
CN106250103A (zh) * | 2016-08-04 | 2016-12-21 | 东南大学 | 一种卷积神经网络循环卷积计算数据重用的系统 |
US9864933B1 (en) * | 2016-08-23 | 2018-01-09 | Jasmin Cosic | Artificially intelligent systems, devices, and methods for learning and/or using visual surrounding for autonomous object operation |
CN106408595A (zh) * | 2016-08-31 | 2017-02-15 | 上海交通大学 | 一种基于神经网络画风学习的图像渲染方法 |
EP3507773A1 (en) * | 2016-09-02 | 2019-07-10 | Artomatix Ltd. | Systems and methods for providing convolutional neural network based image synthesis using stable and controllable parametric models, a multiscale synthesis framework and novel network architectures |
CN106408086A (zh) * | 2016-09-12 | 2017-02-15 | 上海影城有限公司 | 用于图像优化的深度学习神经网络处理方法及系统 |
CN106503055B (zh) * | 2016-09-27 | 2019-06-04 | 天津大学 | 一种从结构化文本到图像描述的生成方法 |
CN106650922B (zh) * | 2016-09-29 | 2019-05-03 | 清华大学 | 硬件神经网络转换方法、计算装置、软硬件协作系统 |
US12093813B2 (en) * | 2016-09-30 | 2024-09-17 | Intel Corporation | Dynamic neural network surgery |
CN116823593A (zh) * | 2016-10-21 | 2023-09-29 | 谷歌有限责任公司 | 风格化输入图像 |
CN106447034B (zh) * | 2016-10-27 | 2019-07-30 | 中国科学院计算技术研究所 | 一种基于数据压缩的神经网络处理器、设计方法、芯片 |
CN106548208B (zh) * | 2016-10-28 | 2019-05-28 | 杭州米绘科技有限公司 | 一种照片图像快速智能风格化方法 |
CN106778472A (zh) * | 2016-11-17 | 2017-05-31 | 成都通甲优博科技有限责任公司 | 基于深度学习的输电走廊常见侵入物目标检测与识别方法 |
US10157045B2 (en) | 2016-11-17 | 2018-12-18 | The Mathworks, Inc. | Systems and methods for automatically generating code for deep learning systems |
CN106780367B (zh) * | 2016-11-28 | 2019-11-15 | 上海大学 | 基于字典学习的hdr照片风格转移方法 |
US10916001B2 (en) | 2016-11-28 | 2021-02-09 | Adobe Inc. | Facilitating sketch to painting transformations |
CN107239824A (zh) * | 2016-12-05 | 2017-10-10 | 北京深鉴智能科技有限公司 | 用于实现稀疏卷积神经网络加速器的装置和方法 |
CN106778928B (zh) * | 2016-12-21 | 2020-08-04 | 广州华多网络科技有限公司 | 图像处理方法及装置 |
CN106815321A (zh) * | 2016-12-27 | 2017-06-09 | 深圳前海勇艺达机器人有限公司 | 基于智能聊天机器人的聊天方法及装置 |
CN106782501B (zh) * | 2016-12-28 | 2020-07-24 | 百度在线网络技术(北京)有限公司 | 基于人工智能的语音特征提取方法和装置 |
CN106604216A (zh) * | 2016-12-31 | 2017-04-26 | 广州博冠光电技术有限公司 | 一种双向语音与操作控制数据的传输控制方法及系统 |
US10262218B2 (en) | 2017-01-03 | 2019-04-16 | Qualcomm Incorporated | Simultaneous object detection and rigid transform estimation using neural network |
CN106775599B (zh) * | 2017-01-09 | 2019-03-01 | 南京工业大学 | 递归神经网络的多计算单元粗粒度可重构系统及方法 |
CN106898350A (zh) * | 2017-01-16 | 2017-06-27 | 华南理工大学 | 一种基于深度学习的智能工业机器人语音交互与控制方法 |
CN106844627B (zh) * | 2017-01-20 | 2020-06-19 | 竹间智能科技(上海)有限公司 | 基于对话系统的在线学习方法及装置 |
CN106845549B (zh) * | 2017-01-22 | 2020-08-21 | 珠海习悦信息技术有限公司 | 一种基于多任务学习的场景与目标识别的方法及装置 |
CN106709532B (zh) * | 2017-01-25 | 2020-03-10 | 京东方科技集团股份有限公司 | 图像处理方法和装置 |
CN106952235B (zh) * | 2017-02-10 | 2019-07-26 | 维沃移动通信有限公司 | 一种图像处理方法和移动终端 |
CN108460454B (zh) | 2017-02-21 | 2022-07-26 | 京东方科技集团股份有限公司 | 卷积神经网络和用于其的处理方法、装置、系统 |
US10482639B2 (en) * | 2017-02-21 | 2019-11-19 | Adobe Inc. | Deep high-resolution style synthesis |
CN106951961B (zh) * | 2017-02-24 | 2019-11-26 | 清华大学 | 一种粗粒度可重构的卷积神经网络加速器及系统 |
CN107066239A (zh) * | 2017-03-01 | 2017-08-18 | 智擎信息系统(上海)有限公司 | 一种实现卷积神经网络前向计算的硬件结构 |
CN107038159B (zh) * | 2017-03-09 | 2019-07-12 | 清华大学 | 一种基于无监督领域自适应的神经网络机器翻译方法 |
CN106920545B (zh) * | 2017-03-21 | 2020-07-28 | 百度在线网络技术(北京)有限公司 | 基于人工智能的语音特征提取方法和装置 |
CN106887225B (zh) * | 2017-03-21 | 2020-04-07 | 百度在线网络技术(北京)有限公司 | 基于卷积神经网络的声学特征提取方法、装置和终端设备 |
CN106898353A (zh) * | 2017-03-23 | 2017-06-27 | 东华理工大学 | 一种智能家居语音控制系统及其语音识别方法 |
CN107169503B (zh) * | 2017-03-27 | 2020-05-22 | 中国科学院深圳先进技术研究院 | 一种室内场景的分类方法及装置 |
CN106970896B (zh) * | 2017-03-30 | 2020-05-12 | 中国人民解放军国防科学技术大学 | 面向向量处理器的二维矩阵卷积的向量化实现方法 |
CN106952224B (zh) * | 2017-03-30 | 2019-08-13 | 电子科技大学 | 一种基于卷积神经网络的图像风格转移方法 |
US10152768B2 (en) * | 2017-04-14 | 2018-12-11 | Facebook, Inc. | Artifact reduction for image style transfer |
CN107194938A (zh) * | 2017-04-17 | 2017-09-22 | 上海大学 | 基于深度卷积神经网络的图像轮廓检测方法 |
CN107133222A (zh) * | 2017-04-17 | 2017-09-05 | 中译语通科技(北京)有限公司 | 一种基于异质架构的实时语言转换装置及转换方法 |
CN107193773A (zh) * | 2017-04-20 | 2017-09-22 | 北京安云世纪科技有限公司 | 一种数据处理方法、装置及移动终端 |
CN107092883A (zh) | 2017-04-20 | 2017-08-25 | 上海极链网络科技有限公司 | 物体识别追踪方法 |
CN107124609A (zh) * | 2017-04-27 | 2017-09-01 | 京东方科技集团股份有限公司 | 一种视频图像的处理系统、其处理方法及显示装置 |
CN107171932B (zh) * | 2017-04-27 | 2021-06-08 | 腾讯科技(深圳)有限公司 | 一种图片风格转换方法、装置及系统 |
CN107067825A (zh) * | 2017-04-27 | 2017-08-18 | 四川九洲空管科技有限责任公司 | 一种机载防撞系统的语音告警系统及其语音告警方法 |
US20200193225A1 (en) * | 2017-04-28 | 2020-06-18 | Toyota Motor Europe | System and method for detecting objects in a digital image, and system and method for rescoring object detections |
CN107145467A (zh) * | 2017-05-13 | 2017-09-08 | 贾宏博 | 一种分布式实时计算硬件系统 |
US11694072B2 (en) | 2017-05-19 | 2023-07-04 | Nvidia Corporation | Machine learning technique for automatic modeling of multiple-valued outputs |
CN107291704B (zh) * | 2017-05-26 | 2020-12-11 | 北京搜狗科技发展有限公司 | 处理方法和装置、用于处理的装置 |
CN107247930A (zh) * | 2017-05-26 | 2017-10-13 | 西安电子科技大学 | 基于cnn和选择性注意机制的sar图像目标检测方法 |
US10504267B2 (en) | 2017-06-06 | 2019-12-10 | Adobe Inc. | Generating a stylized image or stylized animation by matching semantic features via an appearance guide, a segmentation guide, and/or a temporal guide |
CN107301383B (zh) * | 2017-06-07 | 2020-11-24 | 华南理工大学 | 一种基于Fast R-CNN的路面交通标志识别方法 |
CN109036446B (zh) * | 2017-06-08 | 2022-03-04 | 腾讯科技(深圳)有限公司 | 一种音频数据处理方法以及相关设备 |
CN107240185B (zh) * | 2017-06-23 | 2019-09-20 | 深圳怡化电脑股份有限公司 | 一种冠字号识别方法、装置、设备及存储介质 |
US10956816B2 (en) | 2017-06-28 | 2021-03-23 | International Business Machines Corporation | Enhancing rating prediction using reviews |
US9959272B1 (en) * | 2017-07-21 | 2018-05-01 | Memsource a.s. | Automatic classification and translation of written segments |
US10909657B1 (en) | 2017-09-11 | 2021-02-02 | Apple Inc. | Flexible resolution support for image and video style transfer |
US11227108B2 (en) * | 2017-09-11 | 2022-01-18 | Nec Corporation | Convolutional neural network architecture with adaptive filters |
CN113808016A (zh) * | 2017-10-09 | 2021-12-17 | 华为技术有限公司 | 一种图像处理方法及设备 |
EP3667569A1 (en) * | 2017-10-20 | 2020-06-17 | Shanghai Cambricon Information Technology Co., Ltd | Processing method and device, operation method and device |
CN108874445A (zh) | 2017-10-30 | 2018-11-23 | 上海寒武纪信息科技有限公司 | 神经网络处理器及使用处理器执行向量点积指令的方法 |
CN107730474B (zh) * | 2017-11-09 | 2022-02-22 | 京东方科技集团股份有限公司 | 图像处理方法、处理装置和处理设备 |
CN107977704B (zh) * | 2017-11-10 | 2020-07-31 | 中国科学院计算技术研究所 | 权重数据存储方法和基于该方法的神经网络处理器 |
US11501153B2 (en) * | 2017-12-28 | 2022-11-15 | Intel Corporation | Methods and apparatus for training a neural network |
US12094456B2 (en) | 2018-09-13 | 2024-09-17 | Shanghai Cambricon Information Technology Co., Ltd. | Information processing method and system |
US11113578B1 (en) * | 2020-04-13 | 2021-09-07 | Adobe, Inc. | Learned model-based image rendering |
-
2017
- 2017-10-30 CN CN201810849492.XA patent/CN108874445A/zh active Pending
- 2017-10-30 CN CN201810800665.9A patent/CN108898554A/zh active Pending
- 2017-10-30 CN CN201810800664.4A patent/CN109064384A/zh active Pending
- 2017-10-30 CN CN201810849484.5A patent/CN109117183B/zh active Active
- 2017-10-30 CN CN201810849488.3A patent/CN109034383B/zh active Active
- 2017-10-30 CN CN201810849498.7A patent/CN108958801B/zh active Active
- 2017-10-30 CN CN201810800001.2A patent/CN108875926A/zh active Pending
- 2017-10-30 CN CN201810799987.6A patent/CN109117947A/zh active Pending
- 2017-10-30 CN CN201810849480.7A patent/CN108984211B/zh active Active
- 2017-10-30 CN CN201810801239.7A patent/CN109034382A/zh active Pending
- 2017-10-30 CN CN201711036374.9A patent/CN109726806A/zh active Pending
- 2017-10-30 CN CN201811440484.6A patent/CN109522254B/zh active Active
- 2017-10-30 CN CN201711212122.7A patent/CN107833176A/zh active Pending
- 2017-10-30 CN CN201811436410.5A patent/CN109542514B/zh active Active
- 2017-10-30 CN CN201711212991.XA patent/CN107992486A/zh active Pending
- 2017-10-30 CN CN201810801238.2A patent/CN109003603A/zh active Pending
- 2017-10-30 CN CN201810849485.XA patent/CN108874444A/zh active Pending
- 2017-10-30 CN CN201810849491.5A patent/CN109063831A/zh active Pending
- 2017-10-30 CN CN201810849486.4A patent/CN109062539A/zh active Pending
- 2017-10-30 CN CN201810849483.0A patent/CN109062606B/zh active Active
- 2017-10-30 CN CN201711212995.8A patent/CN107832845A/zh active Pending
- 2017-10-30 CN CN201810849509.1A patent/CN109117184A/zh active Pending
- 2017-10-30 CN CN201810849496.8A patent/CN109062607B/zh active Active
- 2017-10-30 CN CN201711211933.5A patent/CN107844832A/zh active Pending
- 2017-10-30 CN CN201811440571.1A patent/CN109542515B/zh active Active
- 2017-10-30 CN CN201810799954.1A patent/CN108986022A/zh active Pending
- 2017-10-30 CN CN201810849497.2A patent/CN109086074B/zh active Active
- 2017-10-30 CN CN201711212660.6A patent/CN107895191B/zh active Active
- 2017-10-30 CN CN201810849479.4A patent/CN109063830A/zh active Pending
- 2017-10-30 CN CN201810849499.1A patent/CN109086075B/zh active Active
- 2017-10-30 CN CN201711212994.3A patent/CN107832844A/zh active Pending
- 2017-10-30 CN CN201711244020.3A patent/CN109725936B/zh active Active
- 2017-10-30 CN CN201711212125.0A patent/CN107832804A/zh active Pending
- 2017-10-30 CN CN201711212123.1A patent/CN107993206A/zh active Pending
- 2017-10-30 CN CN201810801236.3A patent/CN109117948B/zh active Active
- 2017-10-30 CN CN201810799988.0A patent/CN109003132B/zh active Active
- 2017-10-30 CN CN201711212656.XA patent/CN107832843B/zh active Active
-
2018
- 2018-09-13 CN CN202010336354.9A patent/CN111310910B/zh active Active
- 2018-09-13 CN CN201910067288.7A patent/CN109523020A/zh active Pending
- 2018-09-13 US US16/760,235 patent/US20210182077A1/en active Pending
- 2018-09-13 CN CN202010190143.9A patent/CN111160549A/zh active Pending
- 2018-09-13 CN CN201911062123.7A patent/CN110610236B/zh active Active
- 2018-09-13 CN CN202010189354.0A patent/CN111178521A/zh active Pending
- 2018-09-13 CN CN201911058910.4A patent/CN110689126B/zh active Active
- 2018-09-13 CN CN201880002336.8A patent/CN109997154A/zh active Pending
- 2018-09-13 CN CN201911058839.XA patent/CN110689125A/zh active Pending
- 2018-09-13 WO PCT/CN2018/105463 patent/WO2019085655A1/zh unknown
- 2018-09-13 CN CN201910070501.XA patent/CN110084361B/zh active Active
- 2018-09-13 EP EP18873474.3A patent/EP3709224A4/en active Pending
- 2018-09-13 CN CN202010190142.4A patent/CN111160548B/zh active Active
- 2018-09-13 CN CN202010309559.8A patent/CN111291880B/zh active Active
-
2020
- 2020-12-11 US US17/119,029 patent/US12050887B2/en active Active
- 2020-12-11 US US17/119,309 patent/US11762631B2/en active Active
- 2020-12-11 US US17/119,148 patent/US11922132B2/en active Active
- 2020-12-11 US US17/119,234 patent/US20210158484A1/en active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101315770A (zh) * | 2008-05-27 | 2008-12-03 | 北京承芯卓越科技有限公司 | 语音识别片上系统及采用其的语音识别方法 |
CN103002147A (zh) * | 2012-11-29 | 2013-03-27 | 广东欧珀移动通信有限公司 | 一种移动终端自动应答方法和装置 |
CN104038864A (zh) * | 2013-03-08 | 2014-09-10 | 亚德诺半导体股份有限公司 | 带有语音识别的麦克风电路总成和系统 |
CN105703978A (zh) * | 2014-11-24 | 2016-06-22 | 武汉物联远科技有限公司 | 智能家居控制系统和方法 |
CN106850673A (zh) * | 2017-03-09 | 2017-06-13 | 福建省汽车工业集团云度新能源汽车股份有限公司 | 基于声纹识别的汽车用户登入方法及装置 |
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110390626A (zh) * | 2019-07-02 | 2019-10-29 | 深兰科技(上海)有限公司 | 一种卷积神经网络的图像处理方法及装置 |
EP3767477A1 (en) * | 2019-07-05 | 2021-01-20 | Samsung Electronics Co., Ltd. | Artificial intelligence processor and method of performing neural network operation thereof |
US11495037B2 (en) | 2019-07-05 | 2022-11-08 | Samsung Electronics Co., Ltd. | Artificial intelligence processor and method of performing neural network operation thereof |
EP3770824A1 (en) * | 2019-07-26 | 2021-01-27 | Cambricon Technologies Corporation Limited | Computation method and related products of recurrent neural network |
WO2021086486A1 (en) * | 2019-10-30 | 2021-05-06 | Raytheon Company | Neural network instruction streaming |
US11475311B2 (en) | 2019-10-30 | 2022-10-18 | Raytheon Company | Neural network instruction streaming |
US20210406342A1 (en) * | 2020-02-19 | 2021-12-30 | Nvidia Corporation | Application programming interface to accelerate matrix operations |
CN111311707A (zh) * | 2020-03-05 | 2020-06-19 | 云知声智能科技股份有限公司 | 一种作画方法及装置 |
CN111311707B (zh) * | 2020-03-05 | 2023-05-05 | 云知声智能科技股份有限公司 | 一种作画方法及装置 |
TWI803854B (zh) * | 2020-05-15 | 2023-06-01 | 大陸商矽力杰半導體技術(杭州)有限公司 | 用於神經網路中信號轉換的系統和方法 |
CN111598227A (zh) * | 2020-05-20 | 2020-08-28 | 字节跳动有限公司 | 数据处理方法、装置、电子设备及计算机可读存储介质 |
CN111598227B (zh) * | 2020-05-20 | 2023-11-03 | 字节跳动有限公司 | 数据处理方法、装置、电子设备及计算机可读存储介质 |
EP4172753A4 (en) * | 2020-06-26 | 2024-07-24 | Advanced Micro Devices Inc | PROCESSING UNIT WITH SMALL SPACE ARITHMETIC LOGIC UNIT |
US11836628B2 (en) | 2020-07-15 | 2023-12-05 | Samsung Electronics Co., Ltd. | Method and apparatus with neural network operation processing |
EP3940600A1 (en) * | 2020-07-15 | 2022-01-19 | Samsung Electronics Co., Ltd. | Method and apparatus with neural network operation processing background |
EP3958190A1 (en) * | 2020-08-19 | 2022-02-23 | Fujitsu Limited | Information processing device, machine learning method, and machine learning program |
US20220147680A1 (en) * | 2020-11-12 | 2022-05-12 | Samsung Electronics Co., Ltd. | Method for co-design of hardware and neural network architectures using coarse-to-fine search, two-phased block distillation and neural hardware predictor |
US12112112B2 (en) * | 2020-11-12 | 2024-10-08 | Samsung Electronics Co., Ltd. | Method for co-design of hardware and neural network architectures using coarse-to-fine search, two-phased block distillation and neural hardware predictor |
CN112631955B (zh) * | 2020-12-18 | 2024-01-19 | 北京地平线机器人技术研发有限公司 | 数据处理方法、装置、电子设备以及介质 |
CN112631955A (zh) * | 2020-12-18 | 2021-04-09 | 北京地平线机器人技术研发有限公司 | 数据处理方法、装置、电子设备以及介质 |
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2019085655A1 (zh) | 信息处理方法及终端设备 | |
US11481215B2 (en) | Calculation method and related product | |
CN109219821B (zh) | 运算装置和方法 | |
US11442786B2 (en) | Computation method and product thereof | |
WO2018214913A1 (zh) | 处理方法及加速装置 | |
US11687762B2 (en) | Acceleration unit for a deep learning engine | |
US11307865B2 (en) | Data processing apparatus and method | |
US11703939B2 (en) | Signal processing device and related products | |
US10671295B2 (en) | Methods and systems for using state vector data in a state machine engine | |
WO2019001418A1 (zh) | 数据共享系统及其数据共享方法 | |
WO2019157812A1 (zh) | 一种计算装置及方法 | |
Nakahara et al. | High-throughput convolutional neural network on an FPGA by customized JPEG compression | |
CN111353591A (zh) | 一种计算装置及相关产品 | |
CN111930681A (zh) | 一种计算装置及相关产品 | |
Gonçalves et al. | Exploring data size to run convolutional neural networks in low density fpgas | |
WO2019076095A1 (zh) | 处理方法及装置 | |
CN111382835A (zh) | 一种神经网络压缩方法、电子设备及计算机可读介质 | |
de Dinechin et al. | Arithmetic for Deep Learning | |
TW202345034A (zh) | 使用條件權重操作神經網路 |
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: 18873474 Country of ref document: EP Kind code of ref document: A1 |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
ENP | Entry into the national phase |
Ref document number: 2018873474 Country of ref document: EP Effective date: 20200602 |