TWI795519B - 計算裝置、機器學習運算裝置、組合處理裝置、神經網絡芯片、電子設備、板卡及執行機器學習計算的方法 - Google Patents
計算裝置、機器學習運算裝置、組合處理裝置、神經網絡芯片、電子設備、板卡及執行機器學習計算的方法 Download PDFInfo
- Publication number
- TWI795519B TWI795519B TW108102996A TW108102996A TWI795519B TW I795519 B TWI795519 B TW I795519B TW 108102996 A TW108102996 A TW 108102996A TW 108102996 A TW108102996 A TW 108102996A TW I795519 B TWI795519 B TW I795519B
- Authority
- TW
- Taiwan
- Prior art keywords
- data
- input data
- instruction
- mentioned
- unit
- Prior art date
Links
Images
Classifications
-
- 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/30025—Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
-
- 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/499—Denomination or exception handling, e.g. rounding or overflow
-
- 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/30181—Instruction operation extension or modification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- 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/04—Architecture, e.g. interconnection topology
- G06N3/048—Activation functions
-
- 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
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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/3804—Details
- G06F2207/3808—Details concerning the type of numbers or the way they are handled
- G06F2207/3812—Devices capable of handling different types of numbers
- G06F2207/3824—Accepting both fixed-point and floating-point numbers
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Mathematical Physics (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Data Mining & Analysis (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Neurology (AREA)
- Medical Informatics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Advance Control (AREA)
- Error Detection And Correction (AREA)
- Image Processing (AREA)
- Feedback Control In General (AREA)
- Numerical Control (AREA)
- Complex Calculations (AREA)
- Image Analysis (AREA)
Abstract
一種計算裝置,該計算裝置用於執行機器學習計算,該計算裝置包括:用於獲取輸入數據以及計算指令的存儲單元;用於從存儲單元提取計算指令,對該計算指令進行譯碼以得到一個或多個運算指令和並將一個或多個運算指令以及輸入數據發送給運算單元的控制器單元;和用於根據一個或多個運算指令對至少輸入數據執行計算得到計算指令的結果的運算單元。本發明實施例對參與機器學習計算的數據採用定點數據進行表示,可提升訓練運算的處理速度和處理效率。
Description
本申請涉及信息處理技術領域,具體涉及一種計算裝置及方法。
隨著信息技術的不斷發展和人們日益增長的需求,人們對信息及時性的要求越來越高了。目前,終端對信息的獲取以及處理均是基於通用處理器獲得的。
在實踐中發現,這種基於通用處理器運行軟體程式來處理信息的方式,受限於通用處理器的運行速率,特別是在通用處理器負荷較大的情況下,信息處理效率較低、時延較大,對於信息處理的計算模型例如訓練模型來說,訓練運算的計算量更大,通用的處理器完成訓練運算的時間長,效率低。
本申請實施例提供了一種計算裝置及方法,可提升運算的處理速度,提高效率。
第一方面,本申請實施例提供了一種計算裝置,所述計算裝置用於執行機器學習計算,所述計算裝置包括:運算單元以及控制器單元;所述運算單元包括:一個主處理電路和多個從處理電路;
所述控制器單元,用於獲取第一輸入數據以及計算指令;並解析所述計算指令得到數據轉換指令和多個運算指令,其中,所述數據轉換指令包括操作域和操作碼,該操作碼用於指示所述數據類型轉換指令的功能,所述數據類型轉換指令的操作域包括小數點位置、用於指示第一輸入數據的數據類型的標誌位和數據類型的轉換方式標識;將所述數據轉換指令的操作碼和操作域及所述第一輸入數據傳輸至所述轉換單元;將所述多個運算指令傳輸至所述運算單元;所述轉換單元,用於根據所述數據轉換指令的操作碼和操作域將所述第一輸入數據轉換為第二輸入數據,所述第二輸入數據為定點數據;並將所述第二輸入數據傳輸至運算單元;所述運算單元,用於根據所述多個運算指令對所述第二輸入數據進行運算,以得到所述計算指令的計算結果。
在一種可行的實施例中,所述機器學習計算包括:人工神經網絡運算,所述第一輸入數據包括:輸入神經元和權值;所述計算結果為輸出神經元。
在一種可行的實施例中,所述運算單元包括一個主處理電路和多個從處理電路;所述主處理電路,對所述第二輸入數據進行執行前序處理以及與所述多個從處理電路之間傳輸數據和所述多個運算指令;所述多個從處理電路,用於依據從所述主處理電路傳輸第二輸入數據以及所述多個運算指令並執行中間運算得到多個中間結果,並將多個中間結果傳輸給所述主處理電路;
所述主處理電路,用於對所述多個中間結果執行後續處理得到所述計算指令的計算結果。
在一種可行的實施例中,所述計算裝置還包括:存儲單元和直接內存訪問(direct memory access,DMA)單元,所述存儲單元包括:寄存器、緩存中任意組合;所述緩存,用於存儲所述第一輸入數據;所述寄存器,用於存儲所述第一輸入數據中標量數據;所述緩存包括高速暫存緩存。
在一種可行的實施例中,所述控制器單元包括:指令緩存單元、指令緩存單元和存儲隊列單元;所述指令緩存單元,用於存儲所述人工神經網絡運算關聯關聯的計算指令;所述指令處理單元,用於對所述計算指令解析得到所述數據轉換指令和所述多個運算指令,並解析所述數據轉換指令以得到所述數據轉換指令的操作碼和操作域;所述存儲隊列單元,用於存儲指令隊列,該指令隊列包括:按該隊列的前後順序待執行的多個運算指令或計算指令。
在一種可行的實施例中,所述控制器單元包括:依賴關係處理單元,用於確定第一運算指令與所述第一運算指令之前的第零運算指令是否存在關聯關係,如所述第一運算指令與所述第零運算指令存在關聯關係,將所述第一運算指令緩存在所述指令緩存單元內,在所
述第零運算指令執行完畢後,從所述指令緩存單元提取所述第一運算指令傳輸至所述運算單元;所述確定該第一運算指令與第一運算指令之前的第零運算指令是否存在關聯關係包括:依據所述第一運算指令提取所述第一運算指令中所需數據的第一存儲地址區間,依據所述第零運算指令提取所述第零運算指令中所需數據的第零存儲地址區間,如所述第一存儲地址區間與所述第零存儲地址區間具有重疊的區域,確定所述第一運算指令與所述第零運算指令具有關聯關係,如所述第一存儲地址區間與所述第零存儲地址區間不具有重疊的區域,確定所述第一運算指令與所述第零運算指令不具有關聯關係。
在一種可行的實施例中,當所述第一輸入數據為定點數據時,所述運算單元還包括:推導單元,用於根據所述第一輸入數據的小數點位置,推導得到一個或者多個中間結果的小數點位置,其中所述一個或多個中間結果為根據所述第一輸入數據運算得到的。
在一種可行的實施例中,所述運算單元還包括:數據緩存單元,用於緩存所述一個或多個中間結果。
在一種可行的實施例中,所述運算單元包括:樹型模塊,所述樹型模塊包括:一個根端口和多個支端口,所述樹型模塊的根端口連接所述主處理電路,所述樹型模塊的多個支端口分別連接多個從處理電路中的一個從處理電路;
所述樹型模塊,用於轉發所述主處理電路與所述多個從處理電路之間的數據塊、權值以及運算指令。
在一種可行的實施例中,所述運算單元還包括分支處理電路,所述主處理電路,具體具體用於確定所述輸入神經元為廣播數據,權值為分發數據,將一個分發數據分配成多個數據塊,將所述多個數據塊中的至少一個數據塊、廣播數據以及多個運算指令中的至少一個運算指令發送給所述分支處理電路;所述分支處理電路,用於轉發所述主處理電路與所述多個從處理電路之間的數據塊、廣播數據以及運算指令;所述多個從處理電路,用於依據該運算指令對接收到的數據塊以及廣播數據執行運算得到中間結果,並將中間結果傳輸給所述分支處理電路;所述主處理電路,還用於將所述分支處理電路發送的中間結果進行後續處理得到所述運算指令的結果,將所述計算指令的結果發送至所述控制器單元。
在一種可行的實施例中,所述運算單元包括一個主處理電路以及多個從處理電路;所述多個從處理電路呈陣列分布;每個從處理電路與相鄰的其他從處理電路連接,所述主處理電路連接所述多個從處理電路中的K個從處理電路,所述K個從處理電路為:第1行的n個從處理電路、第m行的n個從處理電路以及第1列的m個從處理電路;
所述K個從處理電路,用於在所述主處理電路以及多個從處理電路之間的數據以及指令的轉發;所述主處理電路,還用於確定所述輸入神經元為廣播數據,權值為分發數據,將一個分發數據分配成多個數據塊,將所述多個數據塊中的至少一個數據塊以及多個運算指令中的至少一個運算指令發送給所述K個從處理電路;所述K個從處理電路,用於轉換所述主處理電路與所述多個從處理電路之間的數據;所述多個從處理電路,用於依據所述運算指令對接收到的數據塊執行運算得到中間結果,並將運算結果傳輸給所述K個從處理電路;所述主處理電路,用於將所述K個從處理電路發送的中間結果進行處理得到該計算指令的結果,將該計算指令的結果發送給所述控制器單元。
在一種可行的實施例中,所述主處理電路,具體用於將多個處理電路發送的中間結果進行組合排序得到該計算指令的結果;或所述主處理電路,具體用於將多個處理電路的發送的中間結果進行組合排序以及激活處理後得到該計算指令的結果。
在一種可行的實施例中,所述主處理電路包括:激活處理電路和加法處理電路中的一種或任意組合;所述激活處理電路,用於執行主處理電路內數據的激活運算;所述加法處理電路,用於執行加法運算或累加運算。
在一種可行的實施例中,所述從處理電路包括:
乘法處理電路,用於對接收到的數據塊執行乘積運算得到乘積結果。
在一種可行的實施例中,所述從處理電路還包括:累加處理電路,用於對該乘積結果執行累加運算得到該中間結果。
在一種可行的實施例中,所述樹型模塊為n叉樹結構,所述n為大於或等於2的整數。
在一種可行的實施例中,所述控制器單元還用於:在獲取第一輸入數據以及計算指令之前,確定所述第一輸入數據的小數點位置和定點數據的位寬;所述定點數據的位寬為所述第一輸入數據轉換為定點數據的位寬;所述運算單元還用於:初始化所述第一輸入數據的小數點位置和調整所述第一輸入數據的小數點位置。
在一種可行的實施例中,所述運算單元初始化所述第一輸入數據的小數點位置,包括:根據所述第一輸入數據絕對值的最大值初始化所述第一輸入數據的小數點位置,或者;根據所述第一輸入數據的絕對值最小值初始化所述第一輸入數據的小數點位置,或者;根據所述第一輸入數據中不同數據類型間關係初始化所述第一輸入數據的小數點位置,或者;根據經驗值常量初始化所述第一輸入數據的小數點位置。
在一種可行的實施例中,所述運算單元根據所述第一輸入數據絕對值的最大值初始化所述第一輸入數據的小數點位置,包括:所述運算單元根據第一預設公式和所述第一輸入數據絕對值的最大值初始化所述第一輸入數據的小數點位置;
其中,所述第一預設公式為,s a 為所述
初始化後的第一輸入數據的小數點位置,所述a max為所述第一輸入數據絕對值的最大值,所述bitnum為所述定點數據的位寬。
在一種可行的實施例中,所述第一輸入數據絕對值的最大值包括按照數據類別獲取的絕對值的最大值,或者;所述第一輸入數據絕對值的最大值包括按照分層和分數據類別獲取的絕對值的最大值,或者;所述第一輸入數據絕對值的最大值包括按照分層、分數據類別和分組獲取的絕對值的最大值。
在一種可行的實施例中,所述運算單元根據所述第一輸入數據絕對值的最小值初始化所述第一輸入數據的小數點位置,包括:所述運算單元根據第二預設公式和所述第一輸入數據絕對值的最小值初始化所述第一輸入數據的小數點位置;
其中,所述第二預設公式為,s a 為所述初始化後
的第一輸入數據的小數點位置,所述a min為所述第一輸入數據絕對值的最大值,所述bitnum為所述定點數據的位寬。
在一種可行的實施例中,所述第一輸入數據絕對值的最小值包括按照數據類別獲取的絕對值的最小值,或者;
所述第一輸入數據絕對值的最小值包括按照分層和分數據類別獲取的絕對值的最小值,或者;所述第一輸入數據絕對值的最小值包括按照分層、分數據類別和分組獲取的絕對值的最小值。
在一種可行的實施例中,所述運算單元根據所述第一輸入數據中不同數據類型間關係初始化所述第一輸入數據的小數點位置,包括:所述運算單元根據多層網絡模型中的任一層(比如第l層)的數據類型a (l)的小數點位置獲取第l層的數據類型b (l)的小數點位置根據公式
確定。
其中,a (l)為輸入神經元X (l)、輸出神經元Y (l)、權值W (l)、輸入神經元導數▽ X (l)、輸出神經元導數▽ Y (l)或權值導數▽ W (l);b (l)為輸入神經元X (l)、輸出神經元Y (l)、權值W (l)、輸入神經元導數▽ X (l)、輸出神經元導數▽ Y (l)或權值導數▽ W (l),且a (l)和b (l)不一致;α b 和β b 為整數常數。
在一種可行的實施例中,所述運算單元調整所述第一輸入數據的小數點位置,包括:根據所述第一輸入數據中數據絕對值的最大值單步向上調整所述第一輸入數據的小數點位置,或者;根據所述第一輸入數據中數據絕對值的最大值逐步向上調整所述第一輸入數據的小數點位置,或者;根據所述第一輸入數據分布單步向上調整所述第一輸入數據的小數點位置,或者;
根據所述第一輸入數據分布逐步向上調整所述第一輸入數據的小數點位置,或者;根據所述第一輸入數據絕對值最大值向下調整所述第一輸入數據的小數點位置。
第二方面,本發明實施例提供了一種執行機器學習計算的方法,該方法包括:獲取第一輸入數據和計算指令;解析所述計算指令,以得到數據轉換指令和多個運算指令,所述數據轉換指令包括數據轉換指令包括操作域和操作碼,該操作碼用於指示所述數據類型轉換指令的功能,所述數據類型轉換指令的操作域包括小數點位置、用於指示第一輸入數據的數據類型的標誌位和數據類型的轉換方式;根據所述數據轉換指令將所述第一輸入數據轉換為第二輸入數據,該第二輸入數據為定點數據;根據所述多個運算指令對所述第二輸入數據執行計算得到計算指令的結果。
在一種可行的實施例中,所述機器學習計算包括:人工神經網絡運算,所述第一輸入數據包括:輸入神經元和權值;所述計算結果為輸出神經元。
在一種可行的實施例中,所述根據所述數據轉換指令將所述第一輸入數據轉換為第二輸入數據,包括:解析所述數據轉換指令,以得到所述小數點位置、所述用於指示第一輸入數據的數據類型的標誌位和數據類型的轉換方式;
根據所述第一輸入數據的數據類型標誌位確定所述第一輸入數據的數據類型;根據所述小數點位置和所述數據類型的轉換方式,將所述第一輸入數據轉換為第二輸入數據,所述第二輸入數據的數據類型與所述第一輸入數據的數據類型不一致。
在一種可行的實施例中,當所述第一輸入數據和所述第二輸入數據均為定點數據時,所述第一輸入數據的小數點位置和所述第二輸入數據的小數點位置不一致。
在一種可行的實施例中,當所述第一輸入數據為定點數據時,所述方法還包括:根據所述第一輸入數據的小數點位置,推導得到一個或者多個中間結果的小數點位置,其中所述一個或多個中間結果為根據所述第一輸入數據運算得到的。
所述方法還包括:在獲取第一輸入數據以及計算指令之前,確定所述第一輸入數據的小數點位置和定點數據的位寬;所述定點數據的位寬為所述第一輸入數據轉換為定點數據的位寬;初始化所述第一輸入數據的小數點位置和調整所述第一輸入數據的小數點位置。
在一種可行的實施例中,所述初始化所述第一輸入數據的小數點位置,包括:根據所述第一輸入數據絕對值的最大值初始化所述第一輸入數據的小數點位置,或者;
根據所述第一輸入數據的絕對值最小值初始化所述第一輸入數據的小數點位置,或者;根據所述第一輸入數據中不同數據類型間關係初始化所述第一輸入數據的小數點位置,或者;根據經驗值常量初始化所述第一輸入數據的小數點位置。
在一種可行的實施例中,所述根據所述第一輸入數據絕對值的最大值初始化所述第一輸入數據的小數點位置,包括:根據第一預設公式和所述第一輸入數據絕對值的最大值初始化所述第一輸入數據的小數點位置;
其中,所述第一預設公式為,s a 為所述
初始化後的第一輸入數據的小數點位置,所述a max為所述第一輸入數據絕對值的最大值,所述bitnum為所述定點數據的位寬。
在一種可行的實施例中,所述第一輸入數據絕對值的最大值包括按照數據類別獲取的絕對值的最大值,或者;所述第一輸入數據絕對值的最大值包括按照分層和分數據類別獲取的絕對值的最大值,或者;所述第一輸入數據絕對值的最大值包括按照分層、分數據類別和分組獲取的絕對值的最大值。
在一種可行的實施例中,所述根據所述第一輸入數據絕對值的最小值初始化所述第一輸入數據的小數點位置,包括:所述根據第二預設公式和所述第一輸入數據絕對值的最小值初始化所述第一輸入數據的小數點位置;
其中,所述第二預設公式為,s a 為所述初始化後
的第一輸入數據的小數點位置,所述a min為所述第一輸入數據絕對值的最大值,所述bitnum為所述定點數據的位寬。
在一種可行的實施例中,所述第一輸入數據絕對值的最小值包括按照數據類別獲取的絕對值的最小值,或者;所述第一輸入數據絕對值的最小值包括按照分層和分數據類別獲取的絕對值的最小值,或者;所述第一輸入數據絕對值的最小值包括按照分層、分數據類別和分組獲取的絕對值的最小值。
在一種可行的實施例中,所述根據所述第一輸入數據中不同數據類型間關係初始化所述第一輸入數據的小數點位置,包括:所述根據多層網絡模型中的任一第l層的數據類型a (l)的小數點位
置獲取第l層的數據類型b (l)的小數點位置根據公式確
定。
其中,a (l)為輸入神經元X (l)、輸出神經元Y (l)、權值W (l)、輸入神經元導數▽ X (l)、輸出神經元導數▽ Y (l)或權值導數▽ W (l);b (l)為輸入神經元X (l)、輸出神經元Y (l)、權值W (l)、輸入神經元導數▽ X (l)、輸出神經元導數▽ Y (l)或權值導數▽ W (l),且a (l)和b (l)不一致;α b 和β b 為整數常數。
在一種可行的實施例中,所述調整所述第一輸入數據的小數點位置,包括:根據所述第一輸入數據中數據絕對值的最大值單步向上調整所述第一輸入數據的小數點位置,或者;
根據所述第一輸入數據中數據絕對值的最大值逐步向上調整所述第一輸入數據的小數點位置,或者;根據所述第一輸入數據分布單步向上調整所述第一輸入數據的小數點位置,或者;根據所述第一輸入數據分布逐步向上調整所述第一輸入數據的小數點位置,或者;根據所述第一輸入數據絕對值最大值向下調整所述第一輸入數據的小數點位置。
第三方面,本發明實施例提供了一種機器學習運算裝置,該機器學習運算裝置包括一個或者多個第一方面所述的計算裝置。該機器學習運算裝置用於從其他處理裝置中獲取待運算數據和控制信息,並執行指定的機器學習運算,將執行結果通過輸入輸出(input/output,I/O)介面傳遞給其他處理裝置;當所述機器學習運算裝置包含多個所述計算裝置時,所述多個所述計算裝置間可以通過特定的結構進行鏈接並傳輸數據;其中,多個所述計算裝置通過高速串行計算機擴展總線標準(peripheral component interconnect express,PCIE)總線進行互聯並傳輸數據,以支持更大規模的機器學習的運算;多個所述計算裝置共享同一控制系統或擁有各自的控制系統;多個所述計算裝置共享內存或者擁有各自的內存;多個所述計算裝置的互聯方式是任意互聯拓撲。
第四方面,本發明實施例提供了一種組合處理裝置,該組合處理裝置包括如第三方面所述的機器學習處理裝置、通用互聯介面,和其他處理
裝置。該機器學習運算裝置與上述其他處理裝置進行交互,共同完成用戶指定的操作。該組合處理裝置還可以包括存儲裝置,該存儲裝置分別與所述機器學習運算裝置和所述其他處理裝置連接,用於保存所述機器學習運算裝置和所述其他處理裝置的數據。
第五方面,本發明實施例提供了一種神經網絡芯片,該神經網絡芯片包括上述第一方面所述的計算裝置、上述第三方面所述的機器學習運算裝置或者上述第四方面所述的組合處理裝置。
第六方面,本發明實施例提供了一種神經網絡芯片封裝結構,該神經網絡芯片封裝結構包括上述第五方面所述的神經網絡芯片;
第七方面,本發明實施例提供了一種板卡,該板卡包括存儲器件、介面裝置和控制器件以及上述第五方面所述的神經網絡芯片;其中,所述神經網絡芯片與所述存儲器件、所述控制器件以及所述介面裝置分別連接;所述存儲器件,用於存儲數據;所述介面裝置,用於實現所述芯片與外部設備之間的數據傳輸;所述控制器件,用於對所述芯片的狀態進行監控。
進一步地,所述存儲器件包括:多組存儲單元,每一組所述存儲單元與所述芯片通過總線連接,所述存儲單元為:雙倍速率同步動態隨機存儲器(double data rate synchronous dynamic random access memory,DDR SDRAM);
所述芯片包括:DDR控制器,用於對每個所述存儲單元的數據傳輸與數據存儲的控制;所述介面裝置為:標準PCIE介面。
第八方面,本發明實施例提供了一種電子裝置,該電子裝置包括上述第五方面所述的神經網絡芯片、第六方面所述的神經網絡芯片封裝結構或者上述第七方面所述的板卡。
在一些實施例中,所述電子設備包括數據處理裝置、機器人、電腦、打印機、掃描儀、平板電腦、智能終端、手機、行車記錄儀、導航儀、傳感器、攝像頭、伺服器、雲端伺服器、相機、攝像機、投影儀、手錶、耳機、移動存儲、可穿戴設備、交通工具、家用電器、和/或醫療設備。
在一些實施例中,所述交通工具包括飛機、輪船和/或車輛;所述家用電器包括電視、空調、微波爐、冰箱、電飯煲、加濕器、洗衣機、電燈、燃氣灶、油煙機;所述醫療設備包括核磁共振儀、B型超音波掃描儀和/或心電圖儀。
可以看出,在本申請實施例的方案中,該計算裝置包括:控制器單元從存儲單元提取計算指令,解析該計算指令得到數據轉換指令和/或一個或多個運算指令,將數據轉換指令和多個運算指令以及第一輸入數據發送給運算單元;運算單元根據數據轉換指令將第一輸入數據轉換為以定點數據表示的第二輸入數據;根據多個運算指令對第二輸入數據執行計算以得到計算指令的結果。本發明實施例對參與機器學習計算的數據採用定點數據進行表示,可提升訓練運算的處理速度和處理效率。
10:存儲單元
101:主處理電路
1011:激活處理電路
1012:加法處理電路
102:從處理電路
103:分支處理電路
108:數據依賴關係判斷單元
11:控制器單元
110:指令緩存單元
111:指令處理單元
112:依賴關係處理單元
113:存儲隊列單元
12:運算單元
13:轉換單元201寄存器
202:緩存
203:數據I/O單元
389:芯片
390:存儲器件
391:接收裝置
392:控制器件
40:樹型模塊
402:支端口
50:DMA單元
63:神經元緩存單元
64:權值緩存單元
901、902、903、904、1001、1002、1003:步驟
為了更清楚地說明本申請實施例中的技術方案,下面將對實施例描述中所需要使用的圖式作簡單地介紹,顯而易見地,下面描述中的圖式是本申請的一些實施例,對於所屬技術領域中具有通常知識者來講,在不付出創造性勞動的前提下,還可以根據這些圖式獲得其他的圖式。
圖1為本申請實施例提供一種定點數據的數據結構示意圖;圖2為本申請實施例提供另一種定點數據的數據結構示意圖;圖2A為本申請實施例提供另一種定點數據的數據結構示意圖;圖2B為本申請實施例提供另一種定點數據的數據結構示意圖;圖3本申請實施例提供一種計算裝置的結構示意圖;圖3A是本申請一個實施例提供的計算裝置的結構示意圖;圖3B是本申請另一個實施例提供的計算裝置的結構示意圖;圖3C是本申請另一個實施例提供的計算裝置的結構示意圖;圖3D是本申請實施例提供的主處理電路的結構示意圖;圖3E是本申請另一個實施例提供的計算裝置的結構示意圖;圖3F是本申請實施例提供的樹型模塊的結構示意圖;圖3G是本申請另一個實施例提供的計算裝置的結構示意圖;圖3H是本申請另一個實施例提供的計算裝置的結構示意圖;圖4為本申請實施例提供的一種單層人工神經網絡正向運算流程圖;圖5為本申請實施例提供的一種神經網絡正向運算和反向訓練流程圖;
圖6是本申請實施例提供的一種組合處理裝置的結構圖;圖6A是本申請另一個實施例提供的計算裝置的結構示意圖;圖7是本申請實施例提供的另一種組合處理裝置的結構圖;圖8為本申請實施例提供的一種板卡的結構示意圖;圖9為本申請實施例提供的一種計算方法的流程示意圖;圖10為本申請實施例提供的一種數據的小數點位置確定和調整流程示意圖;圖11為本申請實施例提供的一種分布式系統的結構示意圖;圖12為本申請實施例提供的另一種分布式系統的結構示意圖。
下面將結合本申請實施例中的圖式,對本申請實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例是本申請一部分實施例,而不是全部的實施例。基於本申請中的實施例,所屬技術領域中具有通常知識者在沒有作出創造性勞動前提下所獲得的所有其他實施例,都屬於本申請保護的範圍。
本申請的說明書和發明專利申請範圍及所述圖式中的術語「第一」、「第二」、「第三」和「第四」等是用於區別不同對象,而不是用於描述特定順序。此外,術語「包括」和「具有」以及它們任何變形,意圖在於覆蓋不排他的包含。例如包含了一系列步驟或單元的過程、方法、系統、產品或設備沒有限定於已列出的步驟或單元,而是可選地還包括沒有列出的步驟或單
元,或可選地還包括對於這些過程、方法、產品或設備固有的其它步驟或單元。
在本文中提及「實施例」意味著,結合實施例描述的特定特徵、結構或特性可以包含在本申請的至少一個實施例中。在說明書中的各個位置出現該短語並不一定均是指相同的實施例,也不是與其它實施例互斥的獨立的或備選的實施例。所屬技術領域中具有通常知識者顯式地和隱式地理解的是,本文所描述的實施例可以與其它實施例相結合
本申請實施例提供一種數據類型,該數據類型包括調整因子,該調整因子用於指示該數據類型的取值範圍及精度。
其中,上述調整因子包括第一縮放因子和第二縮放因子(可選地),該第一縮放因子用於指示上述數據類型的精度;上述第二縮放因子用於調整上述數據類型的取值範圍。
可選地,上述第一縮放因子可為2-m、8-m、10-m、2、3、6、9、10、2m、8m、10m或者其他值。
具體地,上述第一縮放因子可為小數點位置。比如以二進制表示的輸入數據INA1的小數點位置向右移動m位後得到的輸入數據INB1=INA1*2m,即輸入數據INB1相對於輸入數據INA1放大了2m倍;再比如,以十進制表示的輸入數據INA2的小數點位置左移動n位後得到的輸入數據INB2=INA2/10n,即輸入數據INA2相對於輸入數據INB2縮小了10n倍,m和n均為整數。
可選地,上述第二縮放因子可為2、8、10、16或其他值。
舉例說明,上述輸入數據對應的數據類型的取值範圍為8-15-816,在進行運算過程中,得到的運算結果大於輸入數據對應的數據類型的取值範圍對應的最大值時,將該數據類型的取值範圍乘以該數據類型的第二縮放因子(即8),得到新的取值範圍8-14-817;當上述運算結果小於上述輸入數據對應的數據類型的取值範圍對應的最小值時,將該數據類型的取值範圍除以該數據類型的第二縮放因子(8),得到新的取值範圍8-16-815。
對於任何格式的數據(比如浮點數、離散數據)都可以加上縮放因子,以調整該數據的大小和精度。
需要說明的是,本申請說明書下文提到的小數點位置都可以是上述第一縮放因子,在此不再敘述。
下面介紹定點數據的結構,參加圖1,圖1為本申請實施例提供一種定點數據的數據結構示意圖。如圖1所示有符號的定點數據,該定點數據佔X比特位,該定點數據又可稱為X位定點數據。其中,該X位定點數據包括佔1比特的符號位、M比特的整數位和N比特的小數位,X-1=M+N。對於無符號的定點數據,只包括M比特的整數位和N比特的小數位,即X=M+N。
相比於32位浮點數據表示形式,本發明採用的短位定點數據表示形式除了佔用比特位數更少外,對於網路模型中同一層、同一類型的數據,如第一個卷積層的所有卷積核、輸入神經元或者偏置數據,還另外設置了一個標誌位記錄定點數據的小數點位置,該標誌位即為Point Location。這樣可以根據輸入數據的分布來調整上述標誌位的大小,從而達到調整定點數據的精度與定點數據可表示範圍。
舉例說明,將浮點數68.6875轉換為小數點位置為5的有符號16位定點數據。其中,對於小數點位置為5的有符號16位定點數據,其整數部分佔10比特,小數部分佔5比特,符號位佔1比特。上述轉換單元將上述浮點數68.6875轉換成有符號16位定點數據為0000010010010110,如圖2所示。
在一種可能的實施例中,上述定點數據還可用圖2A所示方式進行表示。如圖2A所示,該定點數據所佔的比特位數為bitnum,小數點位置為s,該定點數據的精度為2 s 。第一位為符號位,用於指示該定數據是正數還是負數。比如當符號位為0時,表示該定點數據為正數;當符號位為1時,表示該定點數據為負數。該定點數據表示的範圍為[neg,pos],其中,pos=(2 bitnum-1-1)*2 s ,neg=-(2 bitnum-1-1)*2 s 。
其中,上述bitnum可以去任意正整數。上述s可為任意不小於s_min的整數
可選地,上述bitnum可為8、16、24、32、64或者其他值。進一步地,上述s_min為-64。
可選地,上述bitnum為8,16,24,32或者其他值。s可以取任意不小於s_min的整數,進一步地,s_min取-64。
在一種實施例中,對於數值較大的數據可採用多種定點表示方法,具體參見圖2B:如圖2B所示,對上述數值較大的數據採用3種定點數據組合表示,即該數據由定點數據1、定點數據2和定點數據3組成。其中,定點數據1的位寬為bitnum1,小數點位置為s1,定點數據2的位寬為bitnum2,小數點位置為s2;定點數據3的位寬為bitnum3,小數點位置為s3,且
bitnum2-2=s1-1,bitnum3-2=s2-1。採用3種定點數據表示的範圍為[neg,pos],其中,pos=(2 bitnum-1-1)*2 s ,neg=-(2 bitnum-1-1)*2 s 。
首先介紹本申請使用的計算裝置。參閱圖3,提供了一種計算裝置,該計算裝置包括:控制器單元11、運算單元12和轉換單元13,其中,控制器單元11與運算單元12連接,轉換單元13與上述控制器單元11和運算單元12均相連接;在一個可能的實施例中,控制器單元11,用於獲取第一輸入數據以及計算指令。
在一個實施例裏,第一輸入數據是機器學習數據。進一步地,機器學習數據包括輸入神經元數據,權值數據。輸出神經元數據是最終輸出結果或者中間數據。
在一種可選方案中,獲取第一輸入數據以及計算指令方式具體可以通過數據輸入輸出單元得到,該數據輸入輸出單元具體可以為一個或多個數據I/O介面或I/O引腳。
上述計算指令包括但不限於:正向運算指令或反向訓練指令,或其他神經網絡運算指令等等,例如卷積運算指令,本申請具體實施方式並不限制上述計算指令的具體表現形式。
上述控制器單元11,還用於解析所述計算指令得到數據轉換指令和/或一個或多個運算指令,其中,所述數據轉換指令包括操作域和操作碼,該操作碼用於指示所述數據類型轉換指令的功能,所述數據類型轉換指令的操作域包括小數點位置、用於指示第一輸入數據的數據類型的標誌位和數據類型的轉換方式標識。
當上述數據轉換指令的操作域為存儲空間的地址時,上述控制器單元11根據該地址對應的存儲空間中獲取上述小數點位置、用於指示第一輸入數據的數據類型的標誌位和數據類型的轉換方式標識。
上述控制器單元11將所述數據轉換指令的操作碼和操作域及所述第一輸入數據傳輸至所述轉換單元13;將所述多個運算指令傳輸至所述運算單元12;上述轉換單元13,用於根據所述數據轉換指令的操作碼和操作域將所述第一輸入數據轉換為第二輸入數據,該第二輸入數據為定點數據;並將所述第二輸入數據傳輸至運算單元12;上述運算單元12,用於根據所述多個運算指令對所述第二輸入數據進行運算,以得到所述計算指令的計算結果。
在一中可能的實施例中,本申請提供的技術方案將運算單元12設置成一主多從結構,對於正向運算的計算指令,其可以將依據正向運算的計算指令將數據進行拆分,這樣通過多個從處理電路102即能夠對計算量較大的部分進行並行運算,從而提高運算速度,節省運算時間,進而降低功耗。如圖3A所示,上述運算單元12包括一個主處理電路101和多個從處理電路102;上述主處理電路101,用於對上述第二輸入數據進行執行前序處理以及與上述多個從處理電路102之間傳輸數據和上述多個運算指令;上述多個從處理電路102,用於依據從上述主處理電路101傳輸第二輸入數據以及上述多個運算指令並執行中間運算得到多個中間結果,並將多個中間結果傳輸給上述主處理電路101;
上述主處理電路101,用於對上述多個中間結果執行後續處理得到上述計算指令的計算結果。
在一個實施例裏,機器學習運算包括深度學習運算(即人工神經網絡運算),機器學習數據(即第一輸入數據)包括輸入神經元和權值(即神經網絡模型數據)。輸出神經元為上述計算指令的計算結果或中間結果。下面以深度學習運算為例,但應理解的是,不局限在深度學習運算。
可選的,上述計算裝置還可以包括:該存儲單元10和直接內存訪問(direct memory access,DMA)單元50,存儲單元10可以包括:寄存器、緩存中的一個或任意組合,具體的,所述緩存,用於存儲所述計算指令;所述寄存器201,用於存儲所述第一輸入數據和標量。其中第一輸入數據包括輸入神經元、權值和輸出神經元。
所述緩存202為高速暫存緩存。
DMA單元50用於從存儲單元10讀取或存儲數據。
在一種可能的實施例中,上述寄存器201中存儲有上述運算指令、第一輸入數據、小數點位置、用於指示第一輸入數據的數據類型的標誌位和數據類型的轉換方式標識;上述控制器單元11直接從上述寄存器201中獲取上述運算指令、第一輸入數據、小數點位置、用於指示第一輸入數據的數據類型的標誌位和數據類型的轉換方式標識;將第一輸入數據、小數點位置、用於指示第一輸入數據的數據類型的標誌位和數據類型的轉換方式標識出傳輸至上述轉換單元13;將上述運算指令傳輸至上述運算單元12;
上述轉換單元13根據上述小數點位置、用於指示第一輸入數據的數據類型的標誌位和數據類型的轉換方式標識將上述第一輸入數據轉換為第二輸入數據;然後將該第二輸入數據傳輸至上述運算單元12;上述運算單元12根據上述運算指令對上述第二輸入數據進行運算,以得到運算結果。
可選的,該控制器單元11包括:指令緩存單元110、指令處理單元111和存儲隊列單元113;所述指令緩存單元110,用於存儲所述人工神經網絡運算關聯的計算指令;所述指令處理單元111,用於對所述計算指令解析得到所述數據轉換指令和所述多個運算指令,並解析所述數據轉換指令以得到所述數據轉換指令的操作碼和操作域;所述存儲隊列單元113,用於存儲指令隊列,該指令隊列包括:按該隊列的前後順序待執行的多個運算指令或計算指令。
舉例說明,在一個可選的技術方案中,主處理電路101也可以包括一個控制單元,該控制單元可以包括主指令處理單元,具體用於將指令譯碼成微指令。當然在另一種可選方案中,從處理電路102也可以包括另一個控制單元,該另一個控制單元包括從指令處理單元,具體用於接收並處理微指令。上述微指令可以為指令的下一級指令,該微指令可以通過對指令的拆分或解碼後獲得,能被進一步解碼為各部件、各單元或各處理電路的控制信號。
在一種可選方案中,該計算指令的結構可以如下表1所示。
上表中的省略號表示可以包括多個寄存器或立即數。
在另一種可選方案中,該計算指令可以包括:一個或多個操作域以及一個操作碼。該計算指令可以包括神經網絡運算指令。以神經網絡運算指令為例,如表1所示,其中,寄存器號0、寄存器號1、寄存器號2、寄存器號3、寄存器號4可以為操作域。其中,每個寄存器號0、寄存器號1、寄存器號2、寄存器號3、寄存器號4可以是一個或者多個寄存器的號碼。
上述寄存器可以為片外存儲器,當然在實際應用中,也可以為片內存儲器,用於存儲數據,該數據具體可以為n維數據,n為大於等於1的整數,例如,n=1時,為1維數據,即向量,如n=2時,為2維數據,即矩陣,如n=3或3以上時,為多維張量。
可選的,該控制器單元11還可以包括:
依賴關係處理單元112,用於在具有多個運算指令時,確定第一運算指令與所述第一運算指令之前的第零運算指令是否存在關聯關係,如所述第一運算指令與所述第零運算指令存在關聯關係,則將所述第一運算指令緩存在所述指令緩存單元110內,在所述第零運算指令執行完畢後,從所述指令緩存單元110提取所述第一運算指令傳輸至所述運算單元;所述確定該第一運算指令與第一運算指令之前的第零運算指令是否存在關聯關係包括:依據所述第一運算指令提取所述第一運算指令中所需數據(例如矩陣)的第一存儲地址區間,依據所述第零運算指令提取所述第零運算指令中所需矩陣的第零存儲地址區間,如所述第一存儲地址區間與所述第零存儲地址區間具有重疊的區域,則確定所述第一運算指令與所述第零運算指令具有關聯關係,如所述第一存儲地址區間與所述第零存儲地址區間不具有重疊的區域,則確定所述第一運算指令與所述第零運算指令不具有關聯關係。
在另一種可選實施例中,如圖3B所示,上述運算單元12包括一個主處理電路101、多個從處理電路102和多個分支處理電路103。
上述主處理電路101,具體用於確定所述輸入神經元為廣播數據,權值為分發數據,將一個分發數據分配成多個數據塊,將所述多個數據塊中的至少一個數據塊、廣播數據以及多個運算指令中的至少一個運算指令發送給所述分支處理電路103;所述分支處理電路103,用於轉發所述主處理電路101與所述多個從處理電路102之間的數據塊、廣播數據以及運算指令;
所述多個從處理電路102,用於依據該運算指令對接收到的數據塊以及廣播數據執行運算得到中間結果,並將中間結果傳輸給所述分支處理電路103;上述主處理電路101,還用於將上述分支處理電路103發送的中間結果進行後續處理得到上述運算指令的結果,將上述計算指令的結果發送至上述控制器單元11。
在另一種可選實施例中,運算單元12如圖3C所示,可以包括一個主處理電路101和多個從處理電路102。如圖3C所示,多個從處理電路102呈陣列分布;每個從處理電路102與相鄰的其他從處理電路102連接,主處理電路101連接所述多個從處理電路102中的K個從處理電路102,所述K個從處理電路102為:第1行的n個從處理電路102、第m行的n個從處理電路102以及第1列的m個從處理電路102,需要說明的是,如圖3C所示的K個從處理電路102僅包括第1行的n個從處理電路102、第m行的n個從處理電路102以及第1列的m個從處理電路102,即該K個從處理電路102為多個從處理電路102中直接與主處理電路101連接的從處理電路102。
K個從處理電路102,用於在上述主處理電路101以及多個從處理電路102之間的數據以及指令的轉發;所述主處理電路101,還用於確定上述輸入神經元為廣播數據,權值為分發數據,將一個分發數據分配成多個數據塊,將所述多個數據塊中的至少一個數據塊以及多個運算指令中的至少一個運算指令發送給所述K個從處理電路102;
所述K個從處理電路102,用於轉換所述主處理電路101與所述多個從處理電路102之間的數據;所述多個從處理電路102,用於依據所述運算指令對接收到的數據塊執行運算得到中間結果,並將運算結果傳輸給所述K個從處理電路102;所述主處理電路101,用於將所述K個從處理電路102發送的中間結果進行處理得到該計算指令的結果,將該計算指令的結果發送給所述控制器單元11。
可選的,如圖3D所示,上述圖3A-圖3C中的主處理電路101還可以包括:激活處理電路1011、加法處理電路1012中的一種或任意組合;激活處理電路1011,用於執行主處理電路101內數據的激活運算;加法處理電路1012,用於執行加法運算或累加運算。
上述從處理電路102包括:乘法處理電路,用於對接收到的數據塊執行乘積運算得到乘積結果;轉發處理電路(可選的),用於將接收到的數據塊或乘積結果轉發。累加處理電路,用於對該乘積結果執行累加運算得到該中間結果。
在一種可行的實施例中,上述第一輸入數據為數據類型與參與運算的運算指令所指示的運算類型不一致的數據,第二輸入數據為數據類型與參與運算的運算指令所指示的運算類型一致的數據,上述轉換單元13獲取上述數據轉換指令的操作碼和操作域,該操作碼用於指示該數據轉換指令的功能,操作域包括小數點位置和數據類型的轉換方式標識。上述轉換單元13根據上述
小數點位置和數據類型的轉換方式標識將上述第一輸入數據轉換為第二輸入數據。
具體地,上述數據類型的轉換方式標識與上述數據類型的轉換方式一一對應。參見下表3,表3為一種可行的數據類型的轉換方式標識與數據類型的轉換方式的對應關係表。
如表3所示,當上述數據類型的轉換方式標識為00時,上述數據類型的轉換方式為定點數據轉換為定點數據;當上述數據類型的轉換方式標識為01時,上述數據類型的轉換方式為浮點數據轉換為浮點數據;當上述數據類型的轉換方式標識為10時,上述數據類型的轉換方式為定點數據轉換為浮點數據;當上述數據類型的轉換方式標識為11時,上述數據類型的轉換方式為浮點數據轉換為定點數據。
可選地,上述數據類型的轉換方式標識與數據類型的轉換方式的對應關係還可如下表4所示。
如表4所示,當上述數據類型的轉換方式標識為0000時,上述數據類型的轉換方式為64位定點數據轉換為64位浮點數據;當上述數據類型的轉換方式標識為0001時,上述數據類型的轉換方式為32位定點數據轉換為64位浮
點數據;當上述數據類型的轉換方式標識為0010時,上述數據類型的轉換方式為16位定點數據轉換為64位浮點數據;當上述數據類型的轉換方式標識為0011時,上述數據類型的轉換方式為32位定點數據轉換為32位浮點數據;當上述數據類型的轉換方式標識為0100時,上述數據類型的轉換方式為16位定點數據轉換為32位浮點數據;當上述數據類型的轉換方式標識為0101時,上述數據類型的轉換方式為16位定點數據轉換為16位浮點數據;當上述數據類型的轉換方式標識為0110時,上述數據類型的轉換方式為64位浮點數據轉換為64位定點數據;當上述數據類型的轉換方式標識為0111時,上述數據類型的轉換方式為32位浮點數據轉換為64位定點數據;當上述數據類型的轉換方式標識為1000時,上述數據類型的轉換方式為16位浮點數據轉換為64位定點數據;當上述數據類型的轉換方式標識為1001時,上述數據類型的轉換方式為32位浮點數據轉換為32位定點數據;當上述數據類型的轉換方式標識為1010時,上述數據類型的轉換方式為16位浮點數據轉換為32位定點數據;當上述數據類型的轉換方式標識為1011時,上述數據類型的轉換方式為16位浮點數據轉換為16位定點數據。
在一種可行的實施例中,上述控制器單元11從上述存儲單元10中獲取計算指令,解析該計算指令以得到一個或者多個運算指令,其中該運算指令可為可變格式運算指令或者定點格式運算指令。
其中,上述可變格式運算指令包括操作碼和操作域,該操作碼用於指示該可變格式運算指令的功能,上述操作域包括第一輸入數據的首地址、第一輸入數據的長度(可選地)、輸出數據的首地址、小數點位置、第一輸入數據的數據類型標誌位(可選地)和操作類型標識。
當上述運算指令為可變格式運算指令時,上述控制器單元11解析上述可變格式運算指令,以得到上述第一輸入數據的首地址、第一輸入數據的長度、輸出數據的首地址、小數點位置、第一輸入數據的數據類型標誌位和操作類型標識,然後根據第一輸入數據的首地址和上述第一輸入數據的長度從上述存儲單元10中獲取第一輸入數據,然後將第一輸入數據、小數點位置、第一輸入數據的數據類型標誌位和操作類型標識傳輸至上述轉換單元13,然後將上述輸出數據的首地址上述運算單元12;上述轉換單元13根據上述數據類型標誌位、上述小數點位置和上述操作類型標識指示的操作類型將上述第一輸入數據轉換為第二輸入數據;然後將該第二輸入數據傳輸至上述運算單元12。
上述運算單元12的主處理電路101和從處理電路102對上述第二輸入數據進行運算,以得到上述計算指令的結果;將該計算指令的結果存儲至上述存儲單元10中上述輸出數據的首地址對應的位置。
其中,上述操作類型標識用於指示上述運算單元12進行運算時參與運算的數據的類型。該類型包括定點數據,浮點數據、整型數據和離散數據等。
在一種可能的實施例中,上述存儲單元10中存儲有上述第一輸入數據的首地址、第一輸入數據的長度、輸出數據的首地址、小數點位置、第一輸入數據的數據類型標誌位和操作類型標識,上述控制器單元11直接從上述存儲單元10中獲取上述上述第一輸入數據的首地址、第一輸入數據的長度、輸出數據的首地址、小數點位置、第一輸入數據的數據類型標誌位和操作類型標識,然後按照上述過程進行後續操作。
舉例說明,上述操作類型標識為0或1。當該標誌位為1時,上述運算單元12的主處理電路101和從處理電路102進行浮點運算,即參與運算的數據類型為浮點數據;當操作類型標識為0時,上述運算單元12的主處理電路101和從處理電路102進行定點運算,即參與運算的數據類型為定點數據。
上述運算單元12可根據上述數據標誌位和操作類型標識確定輸入數據的類型和進行運算的類型。
具體地,參見表5,表5為數據類型標誌位與操作類型標識的映射關係表。
如表5所示,當上述操作類型標識為0且上述數據類型標誌位為0時,上述第一輸入數據為定點數據,上述運算單元12的主處理電路101和從處理電路102進行定點運算,不進行數據轉換;當上述操作類型標識為0且上述數據類型標誌位為1時,上述第一輸入數據為浮點數據,上述運算單元12的主處理電路101和從處理電路102進行浮點運算,不進行數據轉換;當上述操作類型標識為1且上述數據類型標誌位為0時,上述第一輸入數據為定點數據,上述轉
換單元13先根據上述小數點位置將上述第一輸入數據轉換為第二輸入數據,第二輸入數據為浮點數據,上述運算單元12的主處理電路101和從處理電路102對第二輸入數據進行運算;當上述操作類型標識為1且上述數據類型標誌位為1時,上述第一輸入數據為浮點數據,上述轉換單元13先根據上述小數點位置將上述第一輸入數據轉換為第二輸入數據,第二輸入數據為定點數據,上述運算單元12的主處理電路101和從處理電路102對該第二輸入數據進行運算。
其中,上述定點數據包括64位定點數據、32位定點數據、16位定點數據。上述浮點數據64位浮點數據、32位浮點數據和16位浮點數據。上述標誌位與操作類型標識的映射關係具體還可參見下表6。
如表6所示,當上述操作類型標識為0000且上述數據類型標誌位為0時,上述第一輸入數據為64為定點數據,上述運算單元12的主處理電路101和從處理電路102進行64位定點運算,不進行數據類型轉換;當上述操作類型標識為0000且上述數據類型標誌位為1時,上述第一輸入數據為64為浮點數據,上述運算單元12的主處理電路101和從處理電路102進行64位浮點運算,不
進行數據類型轉換;當上述操作類型標識為0001且上述數據類型標誌位為0時,上述第一輸入數據為32為定點數據,上述運算單元12的主處理電路101和從處理電路102進行32位定點運算,不進行數據類型轉換;當上述操作類型標識為0001且上述數據類型標誌位為1時,上述第一輸入數據為32為浮點數據,上述運算單元12的主處理電路101和從處理電路102進行32位浮點運算,不進行數據類型轉換;當上述操作類型標識為0010且上述數據類型標誌位為0時,上述第一輸入數據為16為定點數據,上述運算單元12的主處理電路101和從處理電路102進行16位定點運算,不進行數據類型轉換;當上述操作類型標識為0010且上述數據類型標誌位為1時,上述第一輸入數據為16為浮點數據,上述運算單元12的主處理電路101和從處理電路102進行16位浮點運算,不進行數據類型轉換。
當上述操作類型標識為0011且上述數據類型標誌位為0時,上述第一輸入數據為64為定點數據,上述轉換單元13先根據上述小數點位置將上述第一輸入數據轉換為第二輸入數據,第二輸入數據為64為浮點數據,然後上述運算單元12的主處理電路101和從處理電路102對該第二輸入數據進行64位浮點運算;當上述操作類型標識為0011且上述數據類型標誌位為1時,上述第一輸入數據為64為浮點數據,上述轉換單元13先根據上述小數點位置將上述第一輸入數據轉換為第二輸入數據,第二輸入數據為64為定點數據,然後上述運算單元12的主處理電路101和從處理電路102對該第二輸入數據進行64位定點運算。
當上述操作類型標識為0100且上述數據類型標誌位為0時,上述第一輸入數據為32為定點數據,上述轉換單元13根據上述小數點位置將上述第一輸入數據轉換為第二輸入數據,第二輸入數據為64為浮點數據,然後上述運
算單元12的主處理電路101和從處理電路102對該第二輸入數據進行64位浮點運算;當上述操作類型標識為0100且上述數據類型標誌位為1時,上述第一輸入數據為32為浮點數據,上述轉換單元13先根據上述小數點位置將上述第一輸入數據轉換為第二輸入數據,第二輸入數據為64為定點數據,然後上述運算單元12的主處理電路101和從處理電路102對該第二輸入數據進行64位定點運算。
當上述操作類型標識為0101且上述數據類型標誌位為0時,上述第一輸入數據為16為定點數據,上述轉換單元13先根據上述小數點位置將上述第一輸入數據轉換為第二輸入數據,第二輸入數據為64為浮點數據,然後上述運算單元12的主處理電路101和從處理電路102對該第二輸入數據進行64位浮點運算;當上述操作類型標識為0101且上述數據類型標誌位為1時,上述第一輸入數據為16為浮點數據,上述轉換單元13先根據上述小數點位置將上述第一輸入數據轉換為第二輸入數據,第二輸入數據為64為定點數據,然後上述運算單元12的主處理電路101和從處理電路102對該第二輸入數據進行64位定點運算。
當上述操作類型標識為0110且上述數據類型標誌位為0時,上述第一輸入數據為32為定點數據,上述轉換單元13先根據上述小數點位置將上述第一輸入數據轉換為第二輸入數據,第二輸入數據為32為浮點數據,然後上述運算單元12的主處理電路101和從處理電路102對該第二輸入數據進行32位浮點運算;當上述操作類型標識為0110且上述數據類型標誌位為1時,上述第一輸入數據為32為浮點數據,上述轉換單元13先根據上述小數點位置將上述第一輸入數據轉換為第二輸入數據,第二輸入數據為32為定點數據,然後上述運算單元12的主處理電路101和從處理電路102對該第二輸入數據進行32位定點運算。
當上述操作類型標識為0111且上述數據類型標誌位為0時,上述第一輸入數據為16為定點數據,上述轉換單元13先根據上述小數點位置將上述第一輸入數據轉換為第二輸入數據,第二輸入數據為32為浮點數據,然後上述運算單元12的主處理電路101和從處理電路102對該第二輸入數據進行32位浮點運算;當上述操作類型標識為0111且上述數據類型標誌位為1時,上述第一輸入數據為16為浮點數據,上述轉換單元13先根據上述小數點位置將上述第一輸入數據轉換為第二輸入數據,第二輸入數據為32為定點數據,然後上述運算單元12的主處理電路101和從處理電路102對該第二輸入數據進行32位定點運算。
當上述操作類型標識為1000且上述數據類型標誌位為0時,上述第一輸入數據為16為定點數據,上述轉換單元13先根據上述小數點位置將上述第一輸入數據轉換為第二輸入數據,第二輸入數據為16為浮點數據,然後上述運算單元12的主處理電路101和從處理電路102對該第二輸入數據進行16位浮點運算;當上述操作類型標識為1000且上述數據類型標誌位為1時,上述第一輸入數據為16為浮點數據,上述轉換單元13先根據上述小數點位置將上述第一輸入數據轉換為第二輸入數據,第二輸入數據為16為定點數據,然後上述運算單元12的主處理電路101和從處理電路102對該第二輸入數據進行16位定點運算。
當上述操作類型標識為1001且上述數據類型標誌位為0時,上述第一輸入數據為64為定點數據,上述轉換單元13先根據上述小數點位置將上述第一輸入數據轉換為第二輸入數據,第二輸入數據為32為浮點數據,然後上述運算單元12的主處理電路101和從處理電路102對該第二輸入數據進行32位浮點運算;當上述操作類型標識為1001且上述數據類型標誌位為1時,上述第一輸入數據為64為浮點數據,上述轉換單元13先根據上述小數點位置將上述第一輸
入數據轉換為第二輸入數據,第二輸入數據為32為定點數據,然後上述運算單元12的主處理電路101和從處理電路102對該第二輸入數據進行32位定點運算。
當上述操作類型標識為1010且上述數據類型標誌位為0時,上述第一輸入數據為64為定點數據,上述轉換單元13先根據上述小數點位置將上述第一輸入數據轉換為第二輸入數據,第二輸入數據為16為浮點數據,然後上述運算單元12的主處理電路101和從處理電路102對該第二輸入數據進行16位浮點運算;當上述操作類型標識為1010且上述數據類型標誌位為1時,上述第一輸入數據為64為浮點數據,上述轉換單元13先根據上述小數點位置將上述第一輸入數據轉換為第二輸入數據,第二輸入數據為16為定點數據,然後上述運算單元12的主處理電路101和從處理電路102對該第二輸入數據進行16位定點運算。
當上述操作類型標識為1011且上述數據類型標誌位為0時,上述第一輸入數據為32為定點數據,上述轉換單元13先根據上述小數點位置將上述第一輸入數據轉換為第二輸入數據,第二輸入數據為16為浮點數據,然後上述運算單元12的主處理電路101和從處理電路102對該第二輸入數據進行16位浮點運算;當上述操作類型標識為1011且上述數據類型標誌位為1時,上述第一輸入數據為32為浮點數據,上述轉換單元13先根據上述小數點位置將上述第一輸入數據轉換為第二輸入數據,第二輸入數據為16為定點數據,然後上述運算單元12的主處理電路101和從處理電路102對該第二輸入數據進行16位定點運算。
在一種可行的實施例中,上述運算指令為定點格式運算指令,該定點格式運算指令包括操作域和操作碼,該操作碼用於指示該定點格式運算指令的功能,定點格式運算指令的操作碼包括第一輸入數據的首地址,第一輸入數據的長度(可選地)、輸出數據的首地址和小數點位置。
上述控制器單元11獲取上述定點格式運算指令後,解析該定點格式運算指令,以得到上述第一輸入數據的首地址、第一輸入數據的長度、輸出數據的首地址和小數點位置;然後上述控制器單元11根據上述第一輸入數據的首地址和第一輸入數據的長度從上述存儲單元10中獲取第一輸入數據,接著將該第一輸入數據和小數點位置傳輸至上述轉換單元13;將上述輸出數據的首地址傳輸至上述運算單元12。上述轉換單元根據上述小數點位置將上述第一輸入數據轉換為第二輸入數據,然後將該第二輸入數據傳輸至上述運算單元12,該運算單元12的主處理電路101和從處理電路102按照對上述第二輸入數據進行運算,以得到計算指令的結果,並將該計算指令的結果存儲至上述存儲單元10中上述輸出數據的首地址對應的位置。
在一種可行的實施例中,上述計算裝置的運算單元12在進行上述多層神經網絡模型的第i層的運算之前,該計算裝置的控制器單元11獲取配置指令,該配置指令包括小數點位置和參與運算的數據類型。該控制器單元11解析該配置指令,以得到小數點位置和參與運算的數據類型,或者從上述存儲單元10中直接獲取上述小數點位置和參與運算的數據類型,然後上述控制器單元11獲取輸入數據後,判斷輸入數據的數據類型與參與運算的數據類型是否一致;當確定輸入數據的數據類型與參與運算的數據類型不一致時,上述控制器單元11將上述輸入數據、小數點位置和參與運算的數據類型傳輸至上述轉換單元13;該轉換單元根據上述小數點位置和參與運算的數據類型對上述輸入數據進行數據類型轉換,使得輸入數據的數據類型與參與運算的數據類型一致;然後將轉換後的數據傳輸至上述運算單元12,該運算單元12的主處理電路101和從處理電路102對轉換後的輸入數據進行運算;當確定輸入數據的數據類型與
參與運算的數據類型一致時,上述控制器單元11將上述輸入數據傳輸至上述運算單元12,該運算單元12的主處理電路101和從處理電路102直接對輸入數據進行運算,不用進行數據類型轉換。
進一步地,當上述輸入數據為定點數據且參與運算的數據類型為定點數據時,上述控制器單元11判斷輸入數據的小數點位置與參與運算的小數點位置是否一致,若不一致,上述控制器單元11將上述輸入數據、輸入數據的小數點位置和參與運算的小數點位置傳輸至上述轉換單元13,該轉換單元13將輸入數據轉換為與小數點位置與參與運算的數據的小數點位置一致的定點數據,然後將轉換後的數據傳輸至上述運算單元,該運算單元12的主處理電路101和從處理電路102對轉換後的數據進行運算。
換句話說,上述運算指令可以替換為上述配置指令。
另一個實施例裏,該運算指令為矩陣乘以矩陣的指令、累加指令、激活指令等等計算指令。
在一種可選的實施方案中,如圖3E所示,所述運算單元包括:樹型模塊40,所述樹型模塊包括:一個根端口401和多個支端口402,所述樹型模塊的根端口連接所述主處理電路101,所述樹型模塊的多個支端口分別連接多個從處理電路102中的一個從處理電路102;上述樹型模塊具有收發功能,如圖3E所示,該樹型模塊即為發送功能,如圖6A所示,該樹型模塊即為接收功能。
所述樹型模塊,用於轉發所述主處理電路101與所述多個從處理電路102之間的數據塊、權值以及運算指令。
可選的,該樹型模塊為計算裝置的可選擇結果,其可以包括至少1層節點,該節點為具有轉發功能的線結構,該節點本身可以不具有計算功能。如樹型模塊具有零層節點,即無需該樹型模塊。
可選的,該樹型模塊可以為n叉樹結構,例如,如圖3F所示的二叉樹結構,當然也可以為三叉樹結構,該n可以為大於等於2的整數。本申請具體實施方式並不限制上述n的具體取值,上述層數也可以為2,從處理電路102可以連接除倒數第二層節點以外的其他層的節點,例如可以連接如圖3F所示的倒數第一層的節點。
可選的,上述運算單元可以攜帶單獨的緩存,如圖3G所示,可以包括:神經元緩存單元,該神經元緩存單元63緩存該從處理電路102的輸入神經元向量數據和輸出神經元值數據。
如圖3H所示,該運算單元還可以包括:權值緩存單元64,用於緩存該從處理電路102在計算過程中需要的權值數據。
在一種可選實施例中,以神經網絡運算中的全連接運算為例,過程可以為:y=f(wx+b),其中,x為輸入神經元矩陣,w為權值矩陣,b為偏置標量,f為激活函數,具體可以為:sigmoid函數,tanh、relu、softmax函數中的任意一個。這裡假設為二叉樹結構,具有8個從處理電路102,其實現的方法可以為:控制器單元11從存儲單元10內獲取輸入神經元矩陣x,權值矩陣w以及全連接運算指令,將輸入神經元矩陣x,權值矩陣w以及全連接運算指令傳輸給主處理電路101;
主處理電路101將輸入神經元矩陣x拆分成8個子矩陣,然後將8個子矩陣通過樹型模塊分發給8個從處理電路102,將權值矩陣w廣播給8個從處理電路102,從處理電路102並行執行8個子矩陣與權值矩陣w的乘法運算和累加運算得到8個中間結果,將8個中間結果發送給主處理電路101;上述主處理電路101,用於將8個中間結果排序得到wx的運算結果,將該運算結果執行偏置b的運算後執行激活操作得到最終結果y,將最終結果y發送至控制器單元11,控制器單元11將該最終結果y輸出或存儲至存儲單元10內。
在一個實施例裏,運算單元12包括但不僅限於:第一部分的第一個或多個乘法器;第二部分的一個或者多個加法器(更具體的,第二個部分的加法器也可以組成加法樹);第三部分的激活函數單元;和/或第四部分的向量處理單元。更具體的,向量處理單元可以處理向量運算和/或池化運算。第一部分將輸入數據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相關的一個池化核中的數據。以上幾個部分的運算可以自由選擇一個多個部分進行不同順序的組合,從而實現各種不同功能的運算。運算單元相應的即組成了二級,三級,或者四級流水級架構。
需要說明的是,上述第一輸入數據為長位數非定點數據,例如32位浮點數據,也可以是針對標準的64位或者16位浮點數等,這裡只是以32位為具體實施例進行說明;上述第二輸入數據為短位數定點數據,又稱為較少位數定點數據,表示相對於長位數非定點數據的第一輸入數據來說,採用更少的位數來表示的定點數據。
在一種可行的實施例中,上述第一輸入數據為非定點數據,上述第二輸入數據為定點數據,該第一輸入數據佔的比特位數大於或者等於上述
第二輸入數據佔的比特位數。比如上述第一輸入輸入數據為32位浮點數,上述第二輸入數據為32位定點數據;再比如上述第一輸入輸入數據為32位浮點數,上述第二輸入數據為16位定點數據。
具體地,對於不同的網絡模型的不同的層,上述第一輸入數據包括不同類型的數據。該不同類型的數據的小數點位置不相同,即對應的定點數據的精度不同。對於全連接層,上述第一輸入數據包括輸入神經元、權值和偏置數據等數據;對於卷積層時,上述第一輸入數據包括卷積核、輸入神經元和偏置數據等數據。
比如對於全連接層,上述小數點位置包括輸入神經元的小數點位置、權值的小數點位置和偏置數據的小數點位置。其中,上述輸入神經元的小數點位置、權值的小數點位置和偏置數據的小數點位置可以全部相同或者部分相同或者互不相同。
在一種可行的實施例中,所述控制器單元11還用於:在獲取第一輸入數據以及計算指令之前,確定所述第一輸入數據的小數點位置和定點數據的位寬;所述定點數據的位寬為所述第一輸入數據轉換為定點數據的位寬;運算單元12,還用於初始化所述第一輸入數據的小數點位置和調整所述第一輸入數據的小數點位置。
其中,上述第一輸入數據的定點數據的位寬為以定點數據表示的第一輸入數據所佔的比特位,上述小數點位置為以定點數據表示的第一數據數據的小數部分所佔的比特位。該小數點位置用於表徵定點數據的精度。具體參見圖2A的相關描述。
其中,當上述第一輸入數據a滿足條件neg a pos時,上述第二輸入數據為 a/2 s *2 s ;當上述第一輸入數據a大於pos時,上述第二輸入數據為pos;當上述第一輸入數據a小於neg時,上述第二輸入數據為neg。
在一種實施例中,對於卷積層和全連接層的輸入神經元、權值、輸出神經元、輸入神經元導數、輸出神經元導數和權值導數均採用定點數據進行表示。
可選地,上述輸入神經元採用的定點數據的位寬可為8、16、32、64或者其他值。進一步地,上述輸入神經元採用的定點數據的位寬為8。
可選地,上述權值採用的定點數據的位寬可為8、16、32、64或者其他值。進一步地,上述權值採用的定點數據的位寬為8。
可選地,上述輸入神經元導數採用的定點數據的位寬可為8、16、32、64或者其他值。進一步地,上述輸入神經元導數採用的定點數據的位寬為16。
可選地,上述輸出神經元導數採用的定點數據的位寬可為8、16、32、64或者其他值。進一步地,上述輸出神經元導數採用的定點數據的位寬為24。
可選地,上述權值導數採用的定點數據的位寬可為8、16、32、64或者其他值。進一步地,上述權值導數採用的定點數據的位寬為24。
在一種實施例中,對於參與上述多層網絡模型運算的數據中數值較大的數據a可採用多種定點表示方法,具體參見圖2B的相關描述。
其中,當上述第一輸入數據a滿足條件neg a pos時,上述第
二輸入數據為,且,;當上述第一輸入數據a大
於pos時,上述第二輸入數據為pos;當上述第一輸入數據a小於neg時,上述第二輸入數據為neg。
進一步地,所述運算單元12初始化所述第一輸入數據的小數點位置,包括:根據所述第一輸入數據絕對值的最大值初始化所述第一輸入數據的小數點位置,或者;根據所述第一輸入數據的絕對值最小值初始化所述第一輸入數據的小數點位置,或者;根據所述第一輸入數據中不同數據類型間關係初始化所述第一輸入數據的小數點位置,或者;根據經驗值常量初始化所述第一輸入數據的小數點位置。
具體地,其中,上述小數點位置s需要根據不同類別的數據、不同神經網絡層的數據,處於不同迭代輪次的數據進行初始化和動態調整。
下面具體介紹第一輸入數據的小數點位置s的初始化過程,即確定進行第一次將第一輸入數據轉換時定點數據所採用的小數點位置s。
其中,上述運算單元1211對上述第一輸入數據的小數點位置s進行初始化包括:根據第一輸入數據絕對值最大值初始化第一輸入數據的小數點位置s;根據第一輸入數據絕對值的最小值初始化第一輸入數據的小數點位置s;根據第一輸入數據中不同數據類型間關係初始化第一輸入數據的小數點位置s;根據經驗值常量初始化第一輸入數據的小數點位置s。
具體地,下面分別具體介紹上述初始化過程。
a)、上述運算單元12根據第一輸入數據絕對值的最大值初始化第一輸入數據的小數點位置s:
其中,上述a max為上述第一輸入數據絕對值的最大值,上述bitnum為上述第一輸入數據轉換為定點數據的位寬,上述s a 為上述第一輸入數據的小數點位置。
其中,參與運算的數據按類別與網絡層次可分為:第l層的輸入神經元X (l)、輸出神經元Y (l)、權值W (l)、輸入神經元導數▽ X (l)、輸出神經元導數▽ Y (l)和權值導數▽ W (l)。尋找絕對值最大值時,可以按數據類別尋找;可以分
層、分類別尋找;可以分層、分類別、分組尋找。第一輸入數據絕對值的最大值的確定方法包括:
a.1)、上述運算單元12按數據類別尋找絕對值最大值
具體地,第一輸入數據包括向量/矩陣中的每個元素為a i (l),其中,該a (l)可為輸入神經元X (l)或輸出神經元Y (l)或權值W (l)或輸入神經元導數▽ X (l)或輸出神經元導數▽ Y (l)或權值導數▽ W (l)。換言之,上述第一輸入數據包括輸入神經元、權值、輸出神經元、輸入神經元導數、權值導數和輸出神經元導數,上述第一輸入數據的小數點位置包括輸入神經元的小數點位置、權值的小數點位置、輸出神經元的小數點位置、輸入神經元導數的小數點位置、權值導數的小數點位置和輸出神經元導數的小數點位置。該輸入神經元、權值、輸出神經元、輸入神經元導數、權值導數和輸出神經元導數均以矩陣或者向量形式表示的。上述運算單元12通過遍歷上述多層網絡模型的每一層的向量/矩陣中所有元素,獲取每種類別數
a.2)、上述運算單元12按照分層和分數據類別尋找絕對值最大值
具體地,第一輸入數據向量/矩陣中的每個元素為a i (l),其中,該a (l)可為輸入神經元X (l)或輸出神經元Y (l)或權值W (l)或輸入神經元導數▽ X (l)或輸出神經元導數▽ Y (l)或權值導數▽ W (l)。換言之,上述多層網絡模型的每層均包括輸入神經元、權值、輸出神經元、輸入神經元導數、權值導數和輸出神經元導數。上述第一輸入數據的小數點位置包括輸入神經元的小數點位置、權值的小數點位置、輸出神經元的小數點位置、輸入神經元導數的小數點位置、權
值導數的小數點位置和輸出神經元導數的小數點位置。該輸入神經元、權值、輸出神經元、輸入神經元導數、權值導數和輸出神經元導數均以矩陣/向量表示。上述運算單元12通過遍歷多層網絡模型的每層的每種數據的向量/矩陣中的所有元素,獲取每種類別
a.3)、上述運算單元12按照分層、分數據類別和分組進尋找絕對值最大值:
具體地,第一輸入數據向量/矩陣中的每個元素為a i (l),其中a (l)可為輸入神經元X (l)或輸出神經元Y (l)或權值W (l)或輸入神經元導數▽ X (l)或輸出神經元導數▽ Y (l)或權值導數▽ W (l)。換言之,上述多層網絡模型的每層的數據類別包括輸入神經元、權值、輸出神經元、輸入神經元導數、權值導數和輸出神經元導數。上述運算單元12將上述多層網絡模型的每層的每種類型數據分為g組,或者通過其他任意分組規則進行分組。上述運算單元12然後遍歷上述多層網絡模型中每層每種類型數據對應的g組數據中每組數據的每個元素,獲取該
組數據中絕對值最大的元素,即,通過公式
確定每層中每種數據類別對應的g組數據每組的小數
點位置。
其中,上述任意分組規則包括但不限定於根據數據範圍進行分組、根據數據訓練批次進行分組等規則。
b)上述運算單元12根據第一輸入數據的絕對值最小值初始化該第一輸入數據的小數點位置s:
具體地,上述運算單元12找到待量化數據的絕對值最小值a min,通過以下公式確定定點化精度s。
其中,上述a min為上述第一輸入數據的絕對值最小值。獲取a min的過程具體可參見上述步驟a.1)、a.2)、a.3)。
c)上述運算單元12根據第一輸入數據中不同數據類型間關係初始化所述第一輸入數據的小數點位置s:
其中,a (l)和b (l)可為輸入神經元X (l)或輸出神經元Y (l)或權值W (l)或輸入神經元導數▽ X (l)或輸出神經元導數▽ Y (l)或權值導數▽ W (l)。其中,a (l)和b (l)為整數常數。
d)上述運算單元12根據經驗值常量初始化第一輸入數據的小數點位置s:
具體地,上述多層網絡模型的任一層(比如第l層)的數據類型a (l)的小數點位置s a (l)可人為設定s a (l)=c,其中c為整數常數,上述a (l)可為輸入神經元X (l)或輸出神經元Y (l)或權值W (l)或輸入神經元導數▽ X (l)或輸出神經元導數▽ Y (l)或權值導數▽ W (l)。
進一步地,上述輸入神經元的小數點位置初始化值和輸出神經元的小數點位置初始化值均可在[-8,8]範圍內選取;權值的小數點位置初始化值可在[-17,8]範圍內選取,輸入神經元導數的小數點位置初始化值和輸出神經元
導數的小數點位置初始化值均可在[-40,-20]範圍內選取。權值導數的小數點位置初始化值可在[-48,-12]範圍內選取。
下面具體介紹上述運算單元12動態調整數據上述小數點位置s的方法。
上述運算單元12動態調整小數點位置s的方法包括向上調整s(s變大),和向下調整s(s變小)。具體包括根據第一輸入數據絕對值最大值單步向上調整;根據第一輸入數據絕對值最大值逐步向上調整;根據第一輸入數據分布單步向上調整;根據第一輸入數據分布逐步向上調整;根據第一輸入數據絕對值最大值向下調整。
a)、上述運算單元12根據第一輸入數據中數據絕對值的最大值單步向上調整:
假設上述小數點位置調整之前為s_old,該小數點位置s_old對應的定點數據可表示數據範圍是[neg,pos]。其中,pos=(2 bitnum-1-1)*2 s_old ,neg=-(2 bitnum-1-1)*2 s_old 。當上述第一輸入數據中數據絕對值的最大值a max pos
時,則調整之後的小數點位置為;否則不調整上述
小數點位置,即s_new=s_old。
b)、上述運算單元12根據第一輸入數據中數據絕對值的最大值逐步向上調整:
假設上述小數點位置調整之前為s_old,該小數點位置s_old對應的定點數據可表示數據範圍是[neg,pos],其中pos=(2 bitnum-1-1)*2 s_old ,neg=-(2 bitnum-1-1)*2 s_old 。當上述第一輸入數據中數據絕對值的最大值a max pos
時,則調整之後的小數點位置為s_new=s_old+1;否則不調整上述小數點位置,即s_new=s_old。
c)、上述運算單元12根據第一輸入數據分布單步向上調整:
假設上述小數點位置調整之前為s_old,該小數點位置s_old對應的定點數據可表示數據範圍是[neg,pos],其中pos=(2 bitnum-1-1)*2 s_old ,neg=-(2 bitnum-1-1)*2 s_old 。計算第一輸入數據的絕對值的統計量,如絕對值的均值a mean 和絕對值的標準差a std 。設置數據的最大範圍a max=a mean +na std 。當
a max pos時,,否則不調整上述小數點位置,即
s_new=s_old。
進一步地,上述n可取2或者3。
d)、上述運算單元12根據第一輸入數據分布逐步向上調整:
假設上述小數點位置調整之前為s_old,該小數點位置s_old對應的定點數據可表示數據範圍是[neg,pos],其中pos=(2 bitnum-1-1)*2 s_old ,neg=-(2 bitnum-1-1)*2 s_old 。計算第一輸入數據的絕對值的統計量,如絕對值的均值a mean 和絕對值的標準差a std 。設置數據的最大範圍a max=a mean +na std ,n可取3。當a max pos時,s_new=s_old+1,否則不調整上述小數點位置,即s_new=s_old。
e)、上述運算單元12根據第一輸入數據絕對值最大值向下調整:
假設上述小數點位置調整之前為s_old,該小數點位置s_old對應的定點數據可表示數據範圍是[neg,pos],其中pos=(2 bitnum-1-1)*2 s_old ,neg=-(2 bitnum-1-1)*2 s_old 。當第一輸入數據的絕對值最大值a max<2 s_old+(bitnum-n)且
s_old s min時,s_new=s_old-1,其中n為整數常數,s min可以是整數,也可以是負無窮。
進一步地,上述n為3,上述s min為-64。
可選地,對於調整上述小數點位置的頻率,可以是永遠不調整第一輸入數據的小數點位置;或者是每隔n個第一訓練週期(即iteration)調整一次,n為常量;或者每隔n個第二訓練週期(即epoch)調整一次,n為常量;或者是每隔n個第一訓練週期或n個第二訓練週期調整一次第一輸入數據的小數點位置,每隔n個第一訓練週期或第二訓練週期調整一次第一輸入數據的小數點位置,然後調整n=αn,其中α大於1;或者是每隔n個第一訓練週期或第二訓練週期調整一次第一輸入數據的小數點位置,隨著訓練輪數遞增,逐漸減小n。
進一步地,每隔100個第一訓練週期調整一次輸入神經元的小數點位置、權值的小數點位置和輸出神經元的小數點位置。每隔20個第一訓練週期調整一次輸入神經元導數的小數點位置和輸出神經元導數的小數點位置。
需要說明的是,上述第一訓練週期為訓練一批次樣本所需的時間,第二訓練週期為對所有訓練樣本進行一次訓練所需的時間。
在一種可能的實施例中,上述控制器單元11或上述運算單元12按照上述過程獲取上述第一輸入數據的小數點位置後,將第一輸入數據的小數點位置存儲至存儲單元10的緩存202中。
當上述計算指令為立即數尋址的指令時,上述主處理單元101直接根據該計算指令的操作域所指示的小數點位置將第一輸入數據進行轉換為第二輸入數據;當上述計算指令為直接尋址或者間接尋址的指令時,上述主處理
單元101根據該計算指令的操作域所指示的存儲空間獲取第一輸入數據的小數點位置,然後根據該小數點位置將第一輸入數據進行轉換為第二輸入數據。
上述計算裝置還包括捨入單元,在進行運算過程中,由於對第二輸入數據進行加法運算、乘法運算和/或其他運算得到的運算結果(該運算結果包括中間運算結果和計算指令的結果)的精度會超出當前定點數據的精度範圍,因此上述運算緩存單元緩存上述中間運算結果。在運算結束後,上述捨入單元對超出定點數據精度範圍的運算結果進行捨入操作,得到捨入後的運算結果,然後上述數據轉換單元將該捨入後的運算結果轉換為當前定數數據類型的數據。
具體地,上述捨入單元對上述中間運算結果進行捨入操作,該捨入操作為隨機捨入操作、四捨五入操作、向上捨入操作、向下捨入操作和截斷捨入操作中的任一種。
當上述捨入單元執行隨機捨入操作時,該捨入單元具體執行如下操作:
其中,y表示對捨入前的運算結果x進行隨機捨入得到的數據,即上述捨入後的運算結果,ε為當前定點數據表示格式所能表示的最小正數,即2-Point Location , x 表示對上述捨入前的運算結果x直接截得定點數據所得的數(類似於對小數做向下取整操作),w.p.表示概率,上述公式表示對上述
捨入前的運算結果x進行隨機捨入獲得的數據為 x 的概率為,對上述
中間運算結果x進行隨機捨入獲得的數據為 x +ε的概率為。
其中,y表示對上述捨入前的運算結果x進行四捨五入後得到的數據,即上述捨入後的運算結果,ε為當前定點數據表示格式所能表示的最小正整數,即2-Point Location , x 為ε的整數倍,其值為小於或等於x的最大數。
上述公式表示當上述捨入前的運算結果x滿足條件時,上述捨入
後的運算結果為 x ;當上述捨入前的運算結果滿足條件時,
上述捨入後的運算結果為 x +ε。
其中,y表示對上述捨入前運算結果x進行向上捨入後得到的數據,即上述捨入後的運算結果, x 為ε的整數倍,其值為大於或等於x的最小數,ε為當前定點數據表示格式所能表示的最小正整數,即2 -Point Location 。
其中,y表示對上述捨入前的運算結果x進行向下捨入後得到的數據,即上述捨入後的運算結果, x 為ε的整數倍,其值為小於或等於x的最大數,ε為當前定點數據表示格式所能表示的最小正整數,即2 -Point Location 。
當上述捨入單元進行截斷捨入操作時,該捨入單元具體執行如下操作:y=[x]
其中,y表示對上述捨入前的運算結果x進行截斷捨入後得到的數據,即上述捨入後的運算結果,[x]表示對上述運算結果x直接截得定點數據所得的數據。
上述捨入單元得到上述捨入後的中間運算結果後,上述運算單元12根據上述第一輸入數據的小數點位置將該捨入後的中間運算結果轉換為當前定點數據類型的數據。
在一種可行的實施例中,上述運算單元12對上述一個或者多個中間結果中的數據類型為浮點數據的中間結果不做截斷處理。
上述運算單元12的從處理電路102根據上述方法進行運算得到的中間結果,由於在該運算過程中存在乘法、除法等會使得到的中間結果超出存儲器存儲範圍的運算,對於超出存儲器存儲範圍的中間結果,一般會對其進行截斷處理;但是由於在本申請運算過程中產生的中間結果不用存儲在存儲器中,因此不用對超出存儲器存儲範圍的中間結果進行截斷,極大減少了中間結果的精度損失,提高了計算結果的精度。
在一種可行的實施例中,上述運算單元12還包括推導單元,當該運算單元12接收到參與定點運算的輸入數據的小數點位置,該推導單元根據該參與定點運算的輸入數據的小數點位置推導得到進行定點運算過程中得到一個或者多個中間結果的小數點位置。上述運算子單元進行運算得到的中間結果超過其對應的小數點位置所指示的範圍時,上述推導單元將該中間結果的小數點位置左移M位,以使該中間結果的精度位於該中間結果的小數點位置所指示的精度範圍之內,該M為大於0的整數。
舉例說明,上述第一輸入數據包括輸入數據I1和輸入數據I2,分別對應的小數點位置分別為P1和P2,且P1>P2,當上述運算指令所指示的運算類型為加法運算或者減法運算,即上述運算子單元進行I1+I2或者I1-I2操作時,上述推導單元推導得到進行上述運算指令所指示的運算過程的中間結果的小數點位置為P1;當上述運算指令所指示的運算類型為乘法運算,即上述運算子單元進行I1*I2操作時,上述推導單元推導得到進行上述運算指令所指示的運算過程的中間結果的小數點位置為P1*P2。
在一種可行的實施例中,上述運算單元12還包括:數據緩存單元,用於緩存上述一個或多個中間結果。
在一種可選的實施例中,上述計算裝置還包括數據統計單元,該數據統計單元用於對所述多層網絡模型的每一層中同一類型的輸入數據進行統計,以得到所述每一層中每種類型的輸入數據的小數點位置。
該數據統計單元也可以是外部裝置的一部分,上述計算裝置在進行數據轉換之前,從外部裝置獲取參與運算數據的小數點位置。
具體地,上述數據統計單元包括:
獲取子單元,用於提取所述多層網絡模型的每一層中同一類型的輸入數據;統計子單元,用於統計並獲取所述多層網絡模型的每一層中同一類型的輸入數據在預設區間上的分布比例;分析子單元,用於根據所述分布比例獲取所述多層網絡模型的每一層中同一類型的輸入數據的小數點位置。
其中,上述預設區間可為[-2 X-1-i ,2 X-1-i -2-i ],i=0,1,2,...,n,n為預設設定的一正整數,X為定點數據所佔的比特位數。上述預設區間[-2 X-1-i ,2 X-1-i -2-i ]包括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 為上述多層網絡模型的每一層中同一類型的輸入數據中取值在區間[-2 X-1-i ,2 X-1-i -2-i ]中的輸入數據的個數與上述多層網絡模型的每一層中同一類型的輸入數據總個數的比值。比如m1個多層網絡模型
的每一層中同一類型的輸入數據中有m2個輸入數據取值在區間[-2 X-1-i ,2 X-1-i -2-i ]
中,則上述。
在一種可行的實施例中,為了提高運算效率,上述獲取子單元隨機或者抽樣提取所述多層網絡模型的每一層中同一類型的輸入數據中的部分數據,然後按照上述方法獲取該部分數據的小數點位置,然後根據該部分數據的小數點位置對該類型輸入數據進行數據轉換(包括浮點數據轉換為定點數據、定點數據轉換為定點數據、定點數據轉換為定點數據等等),可以實現在即保持精度的前提下,又可以提高計算速度和效率。
可選地,上述數據統計單元可根據上述同一類型的數據或者同一層數據的中位值確定該同一類型的數據或者同一層數據的位寬和小數點位置,或者根據上述同一類型的數據或者同一層數據的平均值確定該同一類型的數據或者同一層數據的位寬和小數點位置。
可選地,上述運算單元根據對上述同一類型的數據或者同一層數據進行運算得到的中間結果超過該同一層類型的數據或者同一層數據的小數點位置和位寬所對應的取值範圍時,該運算單元不對該中間結果進行截斷處理,並將該中間結果緩存到該運算單元的數據緩存單元中,以供後續的運算使用。
具體地,上述操作域包括輸入數據的小數點位置和數據類型的轉換方式標識。上述指令處理單元對該數據轉換指令解析以得到上述輸入數據的小數點位置和數據類型的轉換方式標識。上述處理單元還包括數據轉換單元,該數據轉換單元根據上述輸入數據的小數點位置和數據類型的轉換方式標識將上述第一輸入數據轉換為第二輸入數據。
需要說明的是,上述網絡模型包括多層,比如全連接層、卷積層、池化層和輸入層。上述至少一個輸入數據中,屬於同一層的輸入數據具有同樣的小數點位置,即同一層的輸入數據共用或者共享同一個小數點位置。
上述輸入數據包括不同類型的數據,比如包括輸入神經元、權值和偏置數據。上述輸入數據中屬於同一類型的輸入數據具有同樣的小數點位置,即上述同一類型的輸入數據共用或共享同一個小數點位置。
比如運算指令所指示的運算類型為定點運算,而參與該運算指令所指示的運算的輸入數據為浮點數據,故而在進行定點運算之前,上述數轉換單元將該輸入數據從浮點數據轉換為定點數據;再比如運算指令所指示的運算類型為浮點運算,而參與該運算指令所指示的運算的輸入數據為定點數據,則在進行浮點運算之前,上述數據轉換單元將上述運算指令對應的輸入數據從定點數據轉換為浮點數據。
對於本申請所涉及的宏指令(比如計算指令和數據轉換指令),上述控制器單元11可對宏指令進行解析,以得到該宏指令的操作域和操作碼;根據該操作域和操作碼生成該宏指令對應的微指令;或者,上述控制器單元11對宏指令進行譯碼,得到該宏指令對應的微指令。
在一種可行的實施例中,在片上系統(system on chip,SOC)中包括主處理器和協處理器,該主處理器包括上述計算裝置。該協處理器根據上述方法獲取上述多層網絡模型的每一層中同一類型的輸入數據的小數點位置,並將該多層網絡模型的每一層中同一類型的輸入數據的小數點位置傳輸至上述計算裝置,或者該計算裝置在需要使用上述多層網絡模型的每一層中同一類型
的輸入數據的小數點位置時,從上述協處理器中獲取上述多層網絡模型的每一層中同一類型的輸入數據的小數點位置。
在一種可行的實施例中,上述第一輸入數據為均為非定點數據,該非定點數據包括包括長位數浮點數據、短位數浮點數據、整型數據和離散數據等。
上述第一輸入數據的數據類型互不相同。比如上述輸入神經元、權值和偏置數據均為浮點數據;上述輸入神經元、權值和偏置數據中的部分數據為浮點數據,部分數據為整型數據;上述輸入神經元、權值和偏置數據均為整型數據。上述計算裝置可實現非定點數據到定點數據的轉換,即可實現長位數浮點數據、短位數浮點數據、整型數據和離散數據等類型等數據向定點數據的轉換。該定點數據可為有符號定點數據或者無符號定點數據。
在一種可行的實施例中,上述第一輸入數據和第二輸入數據均為定點數據,且第一輸入數據和第二輸入數據可均為有符號的定點數據,或者均為無符號的定點數據,或者其中一個為無符號的定點數據,另一個為有符號的定點數據。且第一輸入數據的小數點位置和第二輸入數據的小數點位置不同。
在一種可行的實施例中,第一輸入數據為定點數據,上述第二輸入數據為非定點數據。換言之,上述計算裝置可實現定點數據到非定點數據的轉換。
圖4為本發明實施例提供的一種單層神經網絡正向運算流程圖。該流程圖描述利用本發明實施的計算裝置和指令集實現的一種單層神經網絡正向運算的過程。對於每一層來說,首先對輸入神經元向量進行加權求和計算出
本層的中間結果向量。該中間結果向量加偏置並激活得到輸出神經元向量。將輸出神經元向量作為下一層的輸入神經元向量。
在一個具體的應用場景中,上述計算裝置可以是一個訓練裝置。在進行神經網絡模型訓練之前,該訓練裝置獲取參與神經網絡模型訓練的訓練數據,該訓練數據為非定點數據,並按照上述方法獲取上述訓練數據的小數點位置。上述訓練裝置根據上述訓練數據的小數點位置將該訓練數據轉換為以定點數據表示的訓練數據。上述訓練裝置根據該以定點數據表示的訓練數據進行正向神經網絡運算,得到神經網絡運算結果。上述訓練裝置對超出訓練數據的小數點位置所能表示數據精度範圍的神經網絡運算結果進行隨機捨入操作,以得到捨入後的神經網絡運算結果,該神經網絡運算結果位於上述訓練數據的小數點位置所能表示數據精度範圍內。按照上述方法,上述訓練裝置獲取多層神經網絡每層的神經網絡運算結果,即輸出神經元。上述訓練裝置根據每層輸出神經元得到輸出神經元的梯度,並根據該輸出神經元的梯度進行反向運算,得到權值梯度,從而根據該權值梯度更新神經網絡模型的權值。
上述訓練裝置重複執行上述過程,以達到訓練神經網絡模型的目的。
需要指出的是,在進行正向運算和反向訓練之前,上述計算裝置對參與正向運算的數據進行數據轉換;對參與反向訓練的數據不進行數據轉換;或者,上述計算裝置對參與正向運算的數據不進行數據轉換;對參與反向訓練的數據進行數據轉換;上述計算裝置對參與正向運算的數據參與反向訓練的數據均進行數據轉換;具體數據轉換過程可參見上述相關實施例的描述,在此不再敘述。
其中,上述正向運算包括上述多層神經網絡運算,該多層神經網絡運算包括卷積等運算,該卷積運算是由卷積運算指令實現的。
上述卷積運算指令為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)。其中標量比較包括但不限於大於,小
於,等於,大於或等於,小於或等於和不等於。標量邏輯運算包括與,或,非。
對於多層神經網絡,其實現過程是,在正向運算中,當上一層人工神經網絡執行完成之後,下一層的運算指令會將運算單元中計算出的輸出神經元作為下一層的輸入神經元進行運算(或者是對該輸出神經元進行某些操作再作為下一層的輸入神經元),同時,將權值也替換為下一層的權值;在反向運算中,當上一層人工神經網絡的反向運算執行完成後,下一層運算指令會將運算單元中計算出的輸入神經元梯度作為下一層的輸出神經元梯度進行運算(或者是對該輸入神經元梯度進行某些操作再作為下一層的輸出神經元梯度),同時將權值替換為下一層的權值。如圖5所示,圖5中虛線的箭頭表示反向運算,實現的箭頭表示正向運算。
另一個實施例裏,該運算指令為矩陣乘以矩陣的指令、累加指令、激活指令等等計算指令,包括正向運算指令和方向訓練指令。
下面通過神經網絡運算指令來說明如圖3A所示的計算裝置的具體計算方法。對於神經網絡運算指令來說,其實際需要執行的公式可以為:s=s(Σ wx i +b),其中,即將權值w乘以輸入數據x i ,進行求和,然後加上偏置b後做激活運算s(h),得到最終的輸出結果s。
如圖3A所示的計算裝置執行神經網絡正向運算指令的方法具體可以為:上述轉換單元13對上述第一輸入數據進行數據類型轉換後,控制器單元11從指令緩存單元110內提取神經網絡正向運算指令、神經網絡運算
指令對應的操作域以及至少一個操作碼,控制器單元11將該操作域傳輸至數據訪問單元,將該至少一個操作碼發送至運算單元12。
控制器單元11從存儲單元10內提取該操作域對應的權值w和偏置b(當b為0時,不需要提取偏置b),將權值w和偏置b傳輸至運算單元的主處理電路101,控制器單元11從存儲單元10內提取輸入數據Xi,將該輸入數據Xi發送至主處理電路101。
主處理電路101將輸入數據Xi拆分成n個數據塊;控制器單元11的指令處理單元111依據該至少一個操作碼確定乘法指令、偏置指令和累加指令,將乘法指令、偏置指令和累加指令發送至主處理電路101,主處理電路101將該乘法指令、權值w以廣播的方式發送給多個從處理電路102,將該n個數據塊分發給該多個從處理電路102(例如具有n個從處理電路102,那麼每個從處理電路102發送一個數據塊);多個從處理電路102,用於依據該乘法指令將該權值w與接收到的數據塊執行乘法運算得到中間結果,將該中間結果發送至主處理電路101,該主處理電路101依據該累加指令將多個從處理電路102發送的中間結果執行累加運算得到累加結果,依據該偏執指令將該累加結果執行加偏執b得到最終結果,將該最終結果發送至該控制器單元11。
另外,加法運算和乘法運算的順序可以調換。
需要說明的是,上述計算裝置執行神經網絡反向訓練指令的方法類似於上述計算裝置執行神經網絡執行正向運算指令的過程,具體可參見上述反向訓練的相關描述,在此不再敘述。
本申請提供的技術方案通過一個指令即神經網絡運算指令即實現了神經網絡的乘法運算以及偏置運算,在神經網絡計算的中間結果均無需存儲或提取,減少了中間數據的存儲以及提取操作,所以其具有減少對應的操作步驟,提高神經網絡的計算效果的優點。
本申請還揭露了一個機器學習運算裝置,其包括一個或多個在本申請中提到的計算裝置,用於從其他處理裝置中獲取待運算數據和控制信息,執行指定的機器學習運算,執行結果通過I/O介面傳遞給外圍設備。外圍設備譬如攝像頭,顯示器,鼠標,鍵盤,網卡,wifi介面,伺服器。當包含一個以上計算裝置時,計算裝置間可以通過特定的結構進行鏈接並傳輸數據,譬如,通過PCIE總線進行互聯並傳輸數據,以支持更大規模的機器學習的運算。此時,可以共享同一控制系統,也可以有各自獨立的控制系統;可以共享內存,也可以每個加速器有各自的內存。此外,其互聯方式可以是任意互聯拓撲。
該機器學習運算裝置具有較高的兼容性,可通過PCIE介面與各種類型的伺服器相連接。
本申請還揭露了一個組合處理裝置,其包括上述的機器學習運算裝置,通用互聯介面,和其他處理裝置。機器學習運算裝置與其他處理裝置進行交互,共同完成用戶指定的操作。圖6為組合處理裝置的示意圖。
其他處理裝置,包括中央處理器(central processing unit,CPU)、圖形處理器(Graphics Processing Unit,GPU)、機器學習處理器等通用/專用處理器中的一種或以上的處理器類型。其他處理裝置所包括的處理器數量不做限制。其他處理裝置作為機器學習運算裝置與外部數據和控制的介
面,包括數據搬運,完成對本機器學習運算裝置的開啟、停止等基本控制;其他處理裝置也可以和機器學習運算裝置協作共同完成運算任務。
通用互聯介面,用於在所述機器學習運算裝置與其他處理裝置間傳輸數據和控制指令。該機器學習運算裝置從其他處理裝置中獲取所需的輸入數據,寫入機器學習運算裝置片上的存儲裝置;可以從其他處理裝置中獲取控制指令,寫入機器學習運算裝置片上的控制緩存;也可以讀取機器學習運算裝置的存儲模塊中的數據並傳輸給其他處理裝置。
可選的,該結構如圖7所示,還可以包括存儲裝置,存儲裝置分別與所述機器學習運算裝置和所述其他處理裝置連接。存儲裝置用於保存在所述機器學習運算裝置和所述其他處理裝置的數據,尤其適用於所需要運算的數據在本機器學習運算裝置或其他處理裝置的內部存儲中無法全部保存的數據。
該組合處理裝置可以作為手機、機器人、無人機、視頻監控設備等設備的SOC片上系統,有效降低控制部分的核心面積,提高處理速度,降低整體功耗。此情況時,該組合處理裝置的通用互聯介面與設備的某些部件相連接。某些部件譬如攝像頭,顯示器,鼠標,鍵盤,網卡,wifi介面。
在一個可行的實施例中,還申請了一種分布式系統,該系統包括n1個主處理器和n2個協處理器,n1是大於或等於0的整數,n2是大於或等於1的整數。該系統可以是各種類型的拓撲結構,包括但不限於如圖3B所示的拓撲結果、圖3C所示的拓撲結構、圖11所示的拓撲結構和圖12所示的拓撲結構。
該主處理器將輸入數據及其小數點位置和計算指令分別發送至上述多個協處理器;或者上述主處理器將上述輸入數據及其小數點位置和計算指令發送至上述多個從處理器中的部分從處理器,該部分從處理器再將上述輸
入數據及其小數點位置和計算指令發送至其他從處理器。上述該協處理器包括上述計算裝置,該計算裝置根據上述方法和計算指令對上述輸入數據進行運算,得到運算結果;其中,上述輸入數據包括但不限定於輸入神經元、權值和偏置數據等等。
上述協處理器將運算結果直接發送至上述主處理器,或者與主處理器沒有連接關係的協處理器將運算結果先發送至與主處理器有連接關係的協處理器,然後該協處理器將接收到的運算結果發送至上述主處理器。
在一些實施例裏,還申請了一種芯片,其包括了上述機器學習運算裝置或組合處理裝置。
在一些實施例裏,申請了一種芯片封裝結構,其包括了上述芯片。
在一些實施例裏,申請了一種板卡,其包括了上述芯片封裝結構。
在一些實施例裏,申請了一種電子設備,其包括了上述板卡。參閱圖8,圖8提供了一種板卡,上述板卡除了包括上述芯片389以外,還可以包括其他的配套部件,該配套部件包括但不限於:存儲器件390、接收裝置391和控制器件392;所述存儲器件390與所述芯片封裝結構內的芯片通過總線連接,用於存儲數據。所述存儲器件可以包括多組存儲單元393。每一組所述存儲單元與所述芯片通過總線連接。可以理解,每一組所述存儲單元可以是DDR SDRAM。
DDR不需要提高時鐘頻率就能加倍提高SDRAM的速度。DDR允許在時鐘脈衝的上升沿和下降沿讀出數據。DDR的速度是標準SDRAM的兩倍。在一個實施例中,所述存儲裝置可以包括4組所述存儲單元。每一組所述存儲單元可以包括多個DDR4顆粒(芯片)。在一個實施例中,所述芯片內部可以包括4個72位DDR4控制器,上述72位DDR4控制器中64bit用於傳輸數據,8bit用於錯誤檢查和糾正(error checking and correcting,ECC)校驗。可以理解,當每一組所述存儲單元中採用DDR4-3200顆粒時,數據傳輸的理論帶寬可達到25600MB/s。
在一個實施例中,每一組所述存儲單元包括多個並聯設置的雙倍速率同步動態隨機存儲器。DDR在一個時鐘週期內可以傳輸兩次數據。在所述芯片中設置控制DDR的控制器,用於對每個所述存儲單元的數據傳輸與數據存儲的控制。
所述介面裝置與所述芯片封裝結構內的芯片電連接。所述介面裝置用於實現所述芯片與外部設備(例如伺服器或計算機)之間的數據傳輸。例如在一個實施例中,所述介面裝置可以為標準PCIE介面。比如,待處理的數據由伺服器通過標準PCIE介面傳遞至所述芯片,實現數據轉移。優選的,當採用PCIE 3.0 X 16介面傳輸時,理論帶寬可達到16000MB/s。在另一個實施例中,所述介面裝置還可以是其他的介面,本申請並不限制上述其他的介面的具體表現形式,所述介面單元能夠實現轉接功能即可。另外,所述芯片的計算結果仍由所述介面裝置傳送回外部設備(例如伺服器)。
所述控制器件與所述芯片電連接。所述控制器件用於對所述芯片的狀態進行監控。具體的,所述芯片與所述控制器件可以通過串行外設介面
(Serial Peripheral Interface,SPI)介面電連接。所述控制器件可以包括單片機(micro controller unit,MCU)。如所述芯片可以包括多個處理芯片、多個處理核或多個處理電路,可以帶動多個負載。因此,所述芯片可以處於多負載和輕負載等不同的工作狀態。通過所述控制裝置可以實現對所述芯片中多個處理芯片、多個處理和或多個處理電路的工作狀態的調控。
電子設備包括數據處理裝置、機器人、電腦、打印機、掃描儀、平板電腦、智能終端、手機、行車記錄儀、導航儀、傳感器、攝像頭、伺服器、雲端伺服器、相機、攝像機、投影儀、手錶、耳機、移動存儲、可穿戴設備、交通工具、家用電器、和/或醫療設備。
所述交通工具包括飛機、輪船和/或車輛;所述家用電器包括電視、空調、微波爐、冰箱、電飯煲、加濕器、洗衣機、電燈、燃氣灶、油煙機;所述醫療設備包括核磁共振儀、B型超音波掃描儀和/或心電圖儀。
參見圖9,圖9為本發明實施例提供的一種執行機器學習計算的方法,所述方法包括:
S901、計算裝置獲取第一輸入數據和計算指令。
其中,上述第一輸入數據包括輸入神經元和權值。
S902、計算裝置解析所述計算指令,以得到數據轉換指令和多個運算指令。
其中,所述數據轉換指令包括數據轉換指令包括操作域和操作碼,該操作碼用於指示所述數據類型轉換指令的功能,所述數據類型轉換指令的操作域包括小數點位置、用於指示第一輸入數據的數據類型的標誌位和數據類型的轉換方式。
S903、計算裝置根據所述數據轉換指令將所述第一輸入數據轉換為第二輸入數據,該第二輸入數據為定點數據。
其中,所述根據所述數據轉換指令將所述第一輸入數據轉換為第二輸入數據,包括:解析所述數據轉換指令,以得到所述小數點位置、所述用於指示第一輸入數據的數據類型的標誌位和數據類型的轉換方式;根據所述第一輸入數據的數據類型標誌位確定所述第一輸入數據的數據類型;根據所述小數點位置和所述數據類型的轉換方式,將所述第一輸入數據轉換為第二輸入數據,所述第二輸入數據的數據類型與所述第一輸入數據的數據類型不一致。
其中,當所述第一輸入數據和所述第二輸入數據均為定點數據時,所述第一輸入數據的小數點位置和所述第二輸入數據的小數點位置不一致。
在一種可行的實施例中,當所述第一輸入數據為定點數據時,所述方法還包括:根據所述第一輸入數據的小數點位置,推導得到一個或者多個中間結果的小數點位置,其中所述一個或多個中間結果為根據所述第一輸入數據運算得到的。
S904、計算裝置根據所述多個運算指令對所述第二輸入數據執行計算得到計算指令的結果。
其中,上述運算指令包括正向運算指令和反向訓練指令,即上述計算裝置在執行正向運算指令和或反向訓練指令(即該計算裝置進行正向運算和/或反向訓練)過程中,上述計算裝置可根據上述圖9所示實施例將參與運算的數據轉換為定點數據,進行定點運算。
需要說明的是,上述步驟S901-S904具體描述可參見圖1-8所示實施例的相關描述,在此不再敘述。
在一個具體的應用場景中,上述計算裝置將參與運算的數據轉換為定點數據,並對定點數據的小數點位置進行調整,具體過程參見圖10,如圖10所示,該方法包括:
S1001、計算裝置獲取第一輸入數據。
其中,上述第一輸入數據為參與多層網絡模型的第m層運算的數據,該第一輸入數據為任意類型的數據。比如該第一輸入數據為定點數據、浮點數據、整型數據或離散數據,m為大於0的整數。
其中,上述多層網絡模型的第m層為線性層,該線性層包括但不限定於卷積層和全連接層。上述第一輸入數據包括輸入神經元、權值、輸出神經元、輸入神經元導數、權值導數和輸出神經元導數。
S1002、計算裝置確定第一輸入數據的小數點位置和定點數據的位寬。
其中,上述第一輸入數據的定點數據的位寬為以定點數據表示的第一輸入數據所佔的比特位,上述小數點位置為以定點數據表示的第一數據數據的小數部分所佔的比特位。該小數點位置用於表徵定點數據的精度。具體參見圖2A的相關描述。
其中,當上述第一輸入數據a滿足條件neg a pos時,上述第二輸入數據為 a/2 s *2 s ;當上述第一輸入數據a大於pos時,上述第二輸入數據為pos;當上述第一輸入數據a小於neg時,上述第二輸入數據為neg。
在一種實施例中,對於卷積層和全連接層的輸入神經元、權值、輸出神經元、輸入神經元導數、輸出神經元導數和權值導數均採用定點數據進行表示。
可選地,上述輸入神經元採用的定點數據的位寬可為8、16、32、64或者其他值。進一步地,上述輸入神經元採用的定點數據的位寬為8。
可選地,上述權值採用的定點數據的位寬可為8、16、32、64或者其他值。進一步地,上述權值採用的定點數據的位寬為8。
可選地,上述輸入神經元導數採用的定點數據的位寬可為8、16、32、64或者其他值。進一步地,上述輸入神經元導數採用的定點數據的位寬為16。
可選地,上述輸出神經元導數採用的定點數據的位寬可為8、16、32、64或者其他值。進一步地,上述輸出神經元導數採用的定點數據的位寬為24。
可選地,上述權值導數採用的定點數據的位寬可為8、16、32、64或者其他值。進一步地,上述權值導數採用的定點數據的位寬為24。
在一種實施例中,對於參與上述多層網絡模型運算的數據中數值較大的數據a可採用多種定點表示方法,具體參見圖2B的相關描述。
其中,當上述第一輸入數據a滿足條件neg a pos時,上述第二
輸入數據為,且,;當上述第一輸入數據a大於
pos時,上述第二輸入數據為pos;當上述第一輸入數據a小於neg時,上述第二輸入數據為neg。
S1003、計算裝置初始化第一輸入數據的小數點位置和調整第一輸入數據的小數點位置。
其中,上述小數點位置s需要根據不同類別的數據、不同神經網絡層的數據,處於不同迭代輪次的數據進行初始化和動態調整。
下面具體介紹第一輸入數據的小數點位置s的初始化過程,即確定進行第一次將第一輸入數據轉換時定點數據所採用的小數點位置s。
其中,上述計算裝置第一輸入數據的小數點位置s的初始化包括:根據第一輸入數據絕對值最大值初始化第一輸入數據的小數點位置s;根據第一輸入數據絕對值的最小值初始化第一輸入數據的小數點位置s;根據第一輸
入數據中不同數據類型間關係初始化第一輸入數據的小數點位置s;根據經驗值常量初始化第一輸入數據的小數點位置s。
具體地,下面分別具體介紹上述初始化過程。
a)、上述計算裝置根據第一輸入數據絕對值的最大值初始化第一輸入數據的小數點位置s:
上述計算裝置具體通過以下公式初始化上述第一輸入數據的小數點位置s:。
其中,上述a max為上述第一輸入數據絕對值的最大值,上述bitnum為上述第一輸入數據轉換為定點數據的位寬,上述s a 為上述第一輸入數據的小數點位置。
其中,參與運算的數據按類別與網絡層次可分為:第l層的輸入神經元X (l)、輸出神經元Y (l)、權值W (l)、輸入神經元導數▽ X (l)、輸出神經元導數▽ Y (l)和權值導數▽ W (l)。尋找絕對值最大值時,可以按數據類別尋找;可以分層、分類別尋找;可以分層、分類別、分組尋找。第一輸入數據絕對值的最大值的確定方法包括:
a.1)、上述計算裝置按數據類別尋找絕對值最大值
具體地,第一輸入數據包括向量/矩陣中的每個元素為a i (l),其中,該a (l)可為輸入神經元X (l)或輸出神經元Y (l)或權值W (l)或輸入神經元導數▽ X (l)或輸出神經元導數▽ Y (l)或權值導數▽ W (l)。換言之,上述第一輸入數據包括輸入神經元、權值、輸出神經元、輸入神經元導數、權值導數和輸出神經元導數,上述第一輸入數據的小數點位置包括輸入神經元的小數點位置、權值的小
數點位置、輸出神經元的小數點位置、輸入神經元導數的小數點位置、權值導數的小數點位置和輸出神經元導數的小數點位置。該輸入神經元、權值、輸出神經元、輸入神經元導數、權值導數和輸出神經元導數均以矩陣或者向量形式表示的。計算裝置通過遍歷上述多層網絡模型的每一層的向量/矩陣中所有元
素,獲取每種類別數據的絕對值最大值,即,通過公式
確定每種類別數據a轉換為定點數據的小數點位置s a 。
a.2)、上述計算裝置按照分層分類別尋找絕對值最大值
具體地,第一輸入數據向量/矩陣中的每個元素為a i (l),其中,該a (l)可為輸入神經元X (l)或輸出神經元Y (l)或權值W (l)或輸入神經元導數▽ X (l)或輸出神經元導數▽ Y (l)或權值導數▽ W (l)。換言之,上述多層網絡模型的每層均包括輸入神經元、權值、輸出神經元、輸入神經元導數、權值導數和輸出神經元導數。上述第一輸入數據的小數點位置包括輸入神經元的小數點位置、權值的小數點位置、輸出神經元的小數點位置、輸入神經元導數的小數點位置、權值導數的小數點位置和輸出神經元導數的小數點位置。該輸入神經元、權值、輸出神經元、輸入神經元導數、權值導數和輸出神經元導數均以矩陣/向量表示。上述計算裝置通過遍歷多層網絡模型的每層的每種數據的向量/矩陣中的所
有元素,獲取每種類別數據的絕對值的最大值,即,通過公
式:確定在第l層每種類別數據a的小數點位置。
a.3)、上述計算裝置按照分層分類別分組進尋找絕對值最大值
具體地,第一輸入數據向量/矩陣中的每個元素為a i (l),其中a(l)可為輸入神經元X (l)或輸出神經元Y (l)或權值W (l)或輸入神經元導數▽ X (l)或輸出神經元導數▽ Y (l)或權值導數▽ W (l)。換言之,上述多層網絡模型的每層的數據類
別包括輸入神經元、權值、輸出神經元、輸入神經元導數、權值導數和輸出神經元導數。上述計算裝置將上述多層網絡模型的每層的每種類型數據分為g組,或者通過其他任意分組規則進行分組。然後遍歷上述多層網絡模型中每層每種類型數據對應的g組數據中每組數據的每個元素,獲取該組數據中絕對值
最大的元素,即,通過公式確定每
層中每種數據類別對應的g組數據每組的小數點位置。
其中,上述任意分組規則包括但不限定於根據數據範圍進行分組、根據數據訓練批次進行分組等規則。
b)上述計算裝置根據第一輸入數據的絕對值最小值初始化該第一輸入數據的小數點位置s:
具體地,上述計算裝置找到待量化數據的絕對值最小值a min,通過以下公式確定定點化精度s。
其中,上述a min為上述第一輸入數據的絕對值最小值。獲取a min的過程具體可參見上述步驟a.1)、a.2)、a.3)。
c)上述計算裝置根據第一輸入數據中不同數據類型間關係初始化所述第一輸入數據的小數點位置s:
其中,a (l)和b (l)可為輸入神經元X (l)或輸出神經元Y (l)或權值W (l)或輸入神經元導數▽ X (l)或輸出神經元導數▽ Y (l)或權值導數▽ W (l)。其中,a (l)和b (l)為整數常數。
d)上述計算裝置根據經驗值常量初始化第一輸入數據的小數點位置s:
具體地,上述多層網絡模型的任一層(比如第l層)的數據類型a (l)的小數點位置s a (l)可人為設定s a (l)=c,其中c為整數常數,上述a (l)可為輸入神經元X (l)或輸出神經元Y (l)或權值W (l)或輸入神經元導數▽ X (l)或輸出神經元導數▽ Y (l)或權值導數▽ W (l)。
進一步地,上述輸入神經元的小數點位置初始化值和輸出神經元的小數點位置初始化值均可在[-8,8]範圍內選取;權值的小數點位置初始化值可在[-17,8]範圍內選取,輸入神經元導數的小數點位置初始化值和輸出神經元導數的小數點位置初始化值均可在[-40,-20]範圍內選取。權值導數的小數點位置初始化值可在[-48,-12]範圍內選取。
下面具體介紹上述計算裝置動態調整數據上述小數點位置s的方法。
上述計算裝置動態調整小數點位置s的方法包括向上調整s(s變大),和向下調整s(s變小)。具體包括根據第一輸入數據絕對值最大值單步向上調整;根據第一輸入數據絕對值最大值逐步向上調整;根據第一輸入數據分布單步向上調整;根據第一輸入數據分布逐步向上調整;根據第一輸入數據絕對值最大值向下調整。
a)、上述計算裝置根據第一輸入數據中數據絕對值的最大值單步向上調整:
假設上述小數點位置調整之前為s_old,該小數點位置s_old對應的定點數據可表示數據範圍是[neg,pos]。其中,pos=(2 bitnum-1-1)*2 s_old ,neg=-(2 bitnum-1-1)*2 s_old 。當上述第一輸入數據中數據絕對值的最大值a max pos
時,則調整之後的小數點位置為;否則不調整上述
小數點位置,即s_new=s_old。
b)、上述計算裝置根據第一輸入數據中數據絕對值的最大值逐步向上調整:
假設上述小數點位置調整之前為s_old,該小數點位置s_old對應的定點數據可表示數據範圍是[neg,pos],其中pos=(2 bitnum-1-1)*2 s_old ,neg=-(2 bitnum-1-1)*2 s_old 。當上述第一輸入數據中數據絕對值的最大值a max pos時,則調整之後的小數點位置為s_new=s_old+1;否則不調整上述小數點位置,即s_new=s_old。
c)、上述計算裝置根據第一輸入數據分布單步向上調整:
假設上述小數點位置調整之前為s_old,該小數點位置s_old對應的定點數據可表示數據範圍是[neg,pos],其中pos=(2 bitnum-1-1)*2 s_old ,neg=-(2 bitnum-1-1)*2 s_old 。計算第一輸入數據的絕對值的統計量,如絕對值的均值a mean 和絕對值的標準差a std 。設置數據的最大範圍a max=a mean +na std 。當a max pos
時,,否則不調整上述小數點位置,即
s_new=s_old。
進一步地,上述n可取2或者3
d)、上述計算裝置根據第一輸入數據分布逐步向上調整:
假設上述小數點位置調整之前為s_old,該小數點位置s_old對應的定點數據可表示數據範圍是[neg,pos],其中pos=(2 bitnum-1-1)*2 s_old ,neg=-(2 bitnum-1-1)*2 s_old 。計算第一輸入數據的絕對值的統計量,如絕對值的均值a mean 和絕對值的標準差a std 。設置數據的最大範圍a max=a mean +na std ,n可取3。當a max pos時,s_new=s_old+1,否則不調整上述小數點位置,即s_new=s_old。
e)、上述計算裝置根據第一輸入數據絕對值最大值向下調整:
假設上述小數點位置調整之前為s_old,該小數點位置s_old對應的定點數據可表示數據範圍是[neg,pos],其中pos=(2 bitnum-1-1)*2 s_old ,neg=-(2 bitnum-1-1)*2 s_old 。當第一輸入數據的絕對值最大值a max<2 s_old+(bitnum-n)且s_old s min時,s_new=s_old-1,其中n為整數常數,s min可以是整數,也可以是負無窮。
進一步地,上述n為3,上述為-64。
可選地,對於調整上述小數點位置的頻率,可以是永遠不調整第一輸入數據的小數點位置;或者是每隔n個第一訓練週期(即iteration)調整一次,n為常量;或者每隔n個第二訓練週期(即epoch)調整一次,n為常量;或者是每隔n個第一訓練週期或n個第二訓練週期調整一次第一輸入數據的小數點位置,每隔n個第一訓練週期或第二訓練週期調整一次第一輸入數據的小數點位置,然後調整n=αn,其中α大於1;或者是每隔n個第一訓練週期或第二訓練週期調整一次第一輸入數據的小數點位置,隨著訓練輪數遞增,逐漸減小n。
進一步地,每隔100個第一訓練週期調整一次輸入神經元的小數點位置、權值的小數點位置和輸出神經元的小數點位置。每隔20個第一訓練週期調整一次輸入神經元導數的小數點位置和輸出神經元導數的小數點位置。
需要說明的是,上述第一訓練週期為訓練一批次樣本所需的時間,第二訓練週期為對所有訓練樣本進行一次訓練所需的時間。
需要說明的是,上述通過上述數據絕對值的平均值或者中間值,初始化和調整上述數據的小數點位置,具體可參見上述通過數據的絕對值的最大值初始化和調整上述數據的小數點位置的相關描述,在此不再敘述。
需要說明的是,對於前述的各方法實施例,為了簡單描述,故將其都表述為一系列的動作組合,但是所屬技術領域中具有通常知識者應該知悉,本申請並不受所描述的動作順序的限制,因為依據本申請,某些步驟可以採用其他順序或者同時進行。其次,所屬技術領域中具有通常知識者也應該知悉,說明書中所描述的實施例均屬於可選實施例,所涉及的動作和模塊並不一定是本申請所必須的。
在上述實施例中,對各個實施例的描述都各有側重,某個實施例中沒有詳述的部分,可以參見其他實施例的相關描述。
在本申請所提供的幾個實施例中,應該理解到,所揭露的裝置,可通過其它的方式實現。例如,以上所描述的裝置實施例僅僅是示意性的,例如所述單元的劃分,僅僅為一種邏輯功能劃分,實際實現時可以有另外的劃分方式,例如多個單元或組件可以結合或者可以集成到另一個系統,或一些特徵可以忽略,或不執行。另一點,所顯示或討論的相互之間的耦合或直接
耦合或通信連接可以是通過一些介面,裝置或單元的間接耦合或通信連接,可以是電性或其它的形式。
所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位於一個地方,或者也可以分布到多個網絡單元上。可以根據實際的需要選擇其中的部分或者全部單元來實現本實施例方案的目的。
另外,在本申請各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以採用硬件的形式實現,也可以採用軟體程式模塊的形式實現。
所述集成的單元如果以軟體程式模塊的形式實現並作為獨立的產品銷售或使用時,可以存儲在一個計算機可讀取存儲器中。基於這樣的理解,本申請的技術方案本質上或者說對現有技術做出貢獻的部分或者該技術方案的全部或部分可以以軟體產品的形式體現出來,該計算機軟體產品存儲在一個存儲器中,包括若干指令用以使得一台計算機設備(可為個人計算機、伺服器或者網絡設備等)執行本申請各個實施例所述方法的全部或部分步驟。而前述的存儲器包括:USB硬碟、唯讀存儲器(read-only memory,ROM)、隨機存取存儲器(random access memory,RAM)、移動硬碟、磁碟或者光碟等各種可以存儲程式代碼的介質。
所屬技術領域中具有通常知識者可以理解上述實施例的各種方法中的全部或部分步驟是可以通過程式來指令相關的硬件來完成,該程式可以
存儲於一計算機可讀存儲器中,存儲器可以包括:快閃記憶體、ROM、RAM、磁碟或光碟等。
以上對本申請實施例進行了詳細介紹,本文中應用了具體個例對本申請的原理及實施方式進行了闡述,以上實施例的說明只是用於幫助理解本申請的方法及其核心思想;同時,對於所屬技術領域中具有通常知識者,依據本申請的思想,在具體實施方式及應用範圍上均會有改變之處,綜上所述,本說明書內容不應理解為對本申請的限制。
Claims (28)
- 一種計算裝置,其中,該計算裝置用於執行機器學習計算,該計算裝置包括:一運算單元、一控制器單元和一轉換單元;該控制器單元,用於獲取一第一輸入數據以及一計算指令;並解析該計算指令得到一數據轉換指令和/或一個或多個運算指令,其中,該數據轉換指令包括操作域和一操作碼,該操作碼用於指示該數據轉換指令的功能,該數據轉換指令的操作域包括小數點位置、用於指示該第一輸入數據的數據類型的標誌位和數據類型的轉換方式標識;將該數據轉換指令的操作碼和操作域及該第一輸入數據傳輸至該轉換單元;將該多個運算指令傳輸至該運算單元;該轉換單元,用於根據該數據轉換指令的操作碼和操作域將該第一輸入數據轉換為一第二輸入數據,該第二輸入數據為定點數據;並將該第二輸入數據傳輸至該運算單元;該運算單元,用於根據該多個運算指令對該第二輸入數據進行運算,以得到該計算指令的計算結果。
- 根據申請專利範圍第1項的裝置,其中,該機器學習計算包括:人工神經網絡運算,該第一輸入數據包括:一輸入神經元和一權值;該計算結果為一輸出神經元。
- 根據申請專利範圍第2項的裝置,其中,該運算單元包括一個主處理電路和多個從處理電路;該主處理電路,用於對該第二輸入數據進行執行前序處理以及與該多個從處理電路之間傳輸數據和該多個運算指令; 該多個從處理電路,用於依據從該主處理電路傳輸該第二輸入數據以及該多個運算指令並執行中間運算得到多個中間結果,並將該多個中間結果傳輸給該主處理電路;該主處理電路,用於對該多個中間結果執行後續處理得到該計算指令的計算結果。
- 根據申請專利範圍第3項的裝置,其中,該計算裝置還包括:一存儲單元和直接內存訪問DMA單元,該存儲單元包括:一寄存器、一緩存中任意組合;該緩存,用於存儲該第一輸入數據;該寄存器,用於存儲該第一輸入數據中標量數據;該緩存包括高速暫存緩存。
- 根據申請專利範圍第3項的裝置,其中,該控制器單元包括:一指令緩存單元、一指令處理單元和一存儲隊列單元;該指令緩存單元,用於存儲人工神經網絡運算關聯的計算指令;該指令處理單元,用於對該計算指令解析得到該數據轉換指令和該多個運算指令,並解析該數據轉換指令以得到該數據轉換指令的操作碼和操作域;該存儲隊列單元,用於存儲一指令隊列,該指令隊列包括:按該指令隊列的前後順序待執行的多個運算指令或計算指令。
- 根據申請專利範圍第5項的裝置,其中,該控制器單元還包括:一依賴關係處理單元,用於確定一第一運算指令與該第一運算指令之前的一第零運算指令是否存在關聯關係,如該第一運算指令與該第零運算指令存在 關聯關係,將該第一運算指令緩存在該指令緩存單元內,在該第零運算指令執行完畢後,從該指令緩存單元提取該第一運算指令傳輸至該運算單元;確定該第一運算指令與該第一運算指令之前的該第零運算指令是否存在關聯關係包括:依據該第一運算指令提取該第一運算指令中所需數據的一第一存儲地址區間,依據該第零運算指令提取該第零運算指令中所需數據的一第零存儲地址區間,如該第一存儲地址區間與該第零存儲地址區間具有重疊的區域,確定該第一運算指令與該第零運算指令具有關聯關係,如該第一存儲地址區間與該第零存儲地址區間不具有重疊的區域,確定該第一運算指令與該第零運算指令不具有關聯關係。
- 根據申請專利範圍第3項的裝置,其中,當該第一輸入數據為定點數據時,該運算單元還包括:一推導單元,用於根據該第一輸入數據的小數點位置,推導得到一個或者多個中間結果的小數點位置,其中該一個或多個中間結果為根據該第一輸入數據運算得到的。
- 根據申請專利範圍第7項的裝置,其中,該運算單元還包括:一數據緩存單元,用於緩存該一個或多個中間結果。
- 根據申請專利範圍第3項的裝置,其中,該運算單元還包括:一樹型模塊,該樹型模塊包括:一個根端口和多個支端口,該樹型模塊的根端口連接該主處理電路,該樹型模塊的多個支端口分別連接該多個從處理電路中的一個從處理電路; 該樹型模塊,用於轉發該主處理電路與該多個從處理電路之間的數據以及運算指令。
- 根據申請專利範圍第3項的裝置,其中,該運算單元還包括分支處理電路,該主處理電路,具體用於確定該輸入神經元為廣播數據,該權值為分發數據,將一個分發數據分配成多個數據塊,將該多個數據塊中的至少一個數據塊、廣播數據以及多個運算指令中的至少一個運算指令發送給該分支處理電路;該分支處理電路,用於轉發該主處理電路與該多個從處理電路之間的數據塊、廣播數據以及一運算指令;該多個從處理電路,用於依據該運算指令對接收到的數據塊以及廣播數據執行運算得到中間結果,並將中間結果傳輸給該分支處理電路;該主處理電路,還用於將該分支處理電路發送的中間結果進行後續處理得到該運算指令的結果,將該計算指令的結果發送至該控制器單元。
- 根據申請專利範圍第3項的裝置,其中,該多個從處理電路呈陣列分布;每個從處理電路與相鄰的其他從處理電路連接,該主處理電路連接該多個從處理電路中的K個從處理電路,該K個從處理電路為:第1行的n個從處理電路、第m行的n個從處理電路以及第1列的m個從處理電路;該K個從處理電路,用於在該主處理電路以及該多個從處理電路之間的數據以及指令的轉發; 該主處理電路,還用於確定該輸入神經元為廣播數據,該權值為分發數據,將一個分發數據分配成多個數據塊,將該多個數據塊中的至少一個數據塊以及多個運算指令中的至少一個運算指令發送給該K個從處理電路;該K個從處理電路,用於轉換該主處理電路與該多個從處理電路之間的數據;該多個從處理電路,用於依據該運算指令對接收到的數據塊執行運算得到中間結果,並將運算結果傳輸給該K個從處理電路;該主處理電路,用於將該K個從處理電路發送的中間結果進行處理得到該計算指令的結果,將該計算指令的結果發送給該控制器單元。
- 根據申請專利範圍第9-11項任一項的裝置,其中,該主處理電路,具體用於將多個處理電路發送的中間結果進行組合排序得到該計算指令的結果;或該主處理電路,具體用於將多個處理電路的發送的中間結果進行組合排序以及激活處理後得到該計算指令的結果。
- 根據申請專利範圍第9-11項任一項的裝置,其中,該主處理電路包括:一激活處理電路和一加法處理電路中的一種或任意組合;該激活處理電路,用於執行該主處理電路內數據的激活運算;該加法處理電路,用於執行加法運算或累加運算。
- 根據申請專利範圍第10或11項的裝置,其中,該從處理電路包括:一乘法處理電路,用於對接收到的數據塊執行乘積運算得到乘積結果。
- 根據申請專利範圍第14項的裝置,其中,該從處理電路還包括:一累加處理電路,用於對該乘積結果執行累加運算得到該中間結果。
- 根據申請專利範圍第9項的裝置,其中,該樹型模塊為n叉樹結構,該n為大於或等於2的整數。
- 一種機器學習運算裝置,其中,該機器學習運算裝置包括一個或多個如申請專利範圍第1-16項任一項的計算裝置,用於從其他處理裝置中獲取待運算數據和控制信息,並執行指定的機器學習運算,將執行結果通過I/O介面傳遞給該其他處理裝置;當該機器學習運算裝置包含多個該計算裝置時,該多個該計算裝置間可以通過特定的結構進行連接並傳輸數據;其中,多個該計算裝置通過快速外部設備互連總線PCIE總線進行互聯並傳輸數據,以支持更大規模的機器學習的運算;多個該計算裝置共享同一控制系統或擁有各自的控制系統;多個該計算裝置共享內存或者擁有各自的內存;多個該計算裝置的互聯方式是任意互聯拓撲。
- 一種組合處理裝置,其中,該組合處理裝置包括如申請專利範圍第17項的機器學習運算裝置,通用互聯介面和其他處理裝置;該機器學習運算裝置與該其他處理裝置進行交互,共同完成用戶指定的計算操作。
- 根據申請專利範圍第18項的組合處理裝置,其中,還包括:一存儲裝置,該存儲裝置分別與該機器學習運算裝置和該其他處理裝置連接,用於保存該機器學習運算裝置和該其他處理裝置的數據。
- 一種神經網絡芯片,其中,該神經網絡芯片包括如申請專利範圍第17項的機器學習運算裝置或如申請專利範圍第18項的組合處理裝置或如申請專利範圍第19項的組合處理裝置。
- 一種電子設備,其中,該電子設備包括如該申請專利範圍第20項的芯片。
- 一種板卡,其中,該板卡包括:一存儲器件、一介面裝置和一控制器件以及如申請專利範圍第20項的神經網絡芯片;其中,該神經網絡芯片與該存儲器件、該控制器件以及該介面裝置分別連接;該存儲器件,用於存儲數據;該介面裝置,用於實現該芯片與外部設備之間的數據傳輸;該控制器件,用於對該芯片的狀態進行監控。
- 根據申請專利範圍第22項的板卡,其中,該存儲器件包括:多組存儲單元,每一組該存儲單元與該芯片通過總線連接,該存儲單元為:雙倍速率同步動態隨機存儲器DDR SDRAM;該芯片包括:雙倍速率DDR控制器,用於對每個該存儲單元的數據傳輸與數據存儲的控制;該介面裝置為:標準高速串行計算機擴展總線標準PCIE介面。
- 一種執行機器學習計算的方法,其中,包括:獲取一第一輸入數據和一計算指令;解析該計算指令,以得到一數據轉換指令和多個運算指令,該數據轉換指令包括操作域和一操作碼,該操作碼用於指示該數據轉換指令的功能,該數據 轉換指令的操作域包括一小數點位置、用於指示該第一輸入數據的數據類型的標誌位和數據類型的轉換方式;根據該數據轉換指令將該第一輸入數據轉換為一第二輸入數據,該第二輸入數據為定點數據;根據該多個運算指令對該第二輸入數據執行計算得到該計算指令的結果。
- 根據申請專利範圍第24項的方法,其中,該機器學習計算包括:人工神經網絡運算,該第一輸入數據包括:一輸入神經元和一權值;一計算結果為一輸出神經元。
- 根據申請專利範圍第24或25項的方法,其中,根據該數據轉換指令將該第一輸入數據轉換為該第二輸入數據,包括:解析該數據轉換指令,以得到該小數點位置、用於指示該第一輸入數據的數據類型的標誌位和數據類型的轉換方式;根據該第一輸入數據的數據類型標誌位確定該第一輸入數據的數據類型;根據該小數點位置和該數據類型的轉換方式,將該第一輸入數據轉換為該第二輸入數據,該第二輸入數據的數據類型與該第一輸入數據的數據類型不一致。
- 根據申請專利範圍第24或25項的方法,其中,當該第一輸入數據和該第二輸入數據均為定點數據時,該第一輸入數據的小數點位置和該第二輸入數據的小數點位置不一致。
- 根據申請專利範圍第27項的方法,其中,當該第一輸入數據為定點數據時,該方法還包括: 根據該第一輸入數據的小數點位置,推導得到一個或者多個中間結果的小數點位置,其中該一個或多個中間結果為根據該第一輸入數據運算得到的。
Applications Claiming Priority (9)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
??201810149287.2 | 2018-02-13 | ||
CN201810149287.2A CN110163350B (zh) | 2018-02-13 | 2018-02-13 | 一种计算装置及方法 |
CN201810149287.2 | 2018-02-13 | ||
CN201810207915.8A CN110276447B (zh) | 2018-03-14 | 2018-03-14 | 一种计算装置及方法 |
??201810207915.8 | 2018-03-14 | ||
CN201810207915.8 | 2018-03-14 | ||
PCT/CN2018/103850 WO2019157812A1 (zh) | 2018-02-13 | 2018-09-03 | 一种计算装置及方法 |
WOPCT/CN2018/103850 | 2018-09-03 | ||
??PCT/CN2018/103850 | 2018-09-03 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201935265A TW201935265A (zh) | 2019-09-01 |
TWI795519B true TWI795519B (zh) | 2023-03-11 |
Family
ID=67618498
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW112100421A TWI827432B (zh) | 2018-02-13 | 2019-01-25 | 計算裝置、機器學習運算裝置、組合處理裝置、神經網絡芯片、電子設備、板卡、及計算方法 |
TW108102996A TWI795519B (zh) | 2018-02-13 | 2019-01-25 | 計算裝置、機器學習運算裝置、組合處理裝置、神經網絡芯片、電子設備、板卡及執行機器學習計算的方法 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW112100421A TWI827432B (zh) | 2018-02-13 | 2019-01-25 | 計算裝置、機器學習運算裝置、組合處理裝置、神經網絡芯片、電子設備、板卡、及計算方法 |
Country Status (7)
Country | Link |
---|---|
US (1) | US11609760B2 (zh) |
EP (12) | EP3651077B1 (zh) |
JP (5) | JP6846534B2 (zh) |
KR (5) | KR102148110B1 (zh) |
CN (1) | CN110383300B (zh) |
TW (2) | TWI827432B (zh) |
WO (1) | WO2019157812A1 (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11663461B2 (en) * | 2018-07-05 | 2023-05-30 | International Business Machines Corporation | Instruction distribution in an array of neural network cores |
JP6528893B1 (ja) * | 2018-11-07 | 2019-06-12 | 富士通株式会社 | 学習プログラム、学習方法、情報処理装置 |
CN111782577B (zh) * | 2019-04-04 | 2023-03-24 | 安徽寒武纪信息科技有限公司 | 数据处理装置及方法以及相关产品 |
JP7243498B2 (ja) * | 2019-07-11 | 2023-03-22 | 富士通株式会社 | 演算処理装置、制御プログラム、及び制御方法 |
CN110597756B (zh) * | 2019-08-26 | 2023-07-25 | 光子算数(北京)科技有限责任公司 | 一种计算电路以及数据运算方法 |
JP7354736B2 (ja) * | 2019-09-30 | 2023-10-03 | 富士通株式会社 | 情報処理装置、情報処理方法、情報処理プログラム |
CN111144556B (zh) * | 2019-12-31 | 2023-07-07 | 中国人民解放军国防科技大学 | 面向深度神经网络训练和推理的范围批处理归一化算法的硬件电路 |
CN113269319A (zh) * | 2020-02-14 | 2021-08-17 | 阿里巴巴集团控股有限公司 | 深度学习模型的调优方法、编译方法及计算装置 |
CN111538942B (zh) * | 2020-04-21 | 2023-04-07 | 招商局金融科技有限公司 | 表达式处理方法、电子装置及存储介质 |
CN111651490A (zh) * | 2020-06-04 | 2020-09-11 | 深圳前海微众银行股份有限公司 | 数据筛选方法、装置、设备及计算机存储介质 |
US11972348B2 (en) | 2020-10-30 | 2024-04-30 | Apple Inc. | Texture unit circuit in neural network processor |
JP7495533B2 (ja) | 2020-12-31 | 2024-06-04 | 中科寒武紀科技股▲分▼有限公司 | ニューラルネットワークモデルを実行するデータ処理装置、方法及び関連製品 |
CN114841016A (zh) * | 2022-05-26 | 2022-08-02 | 北京交通大学 | 一种多模型联邦学习方法、系统及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102981854A (zh) * | 2012-11-16 | 2013-03-20 | 天津市天祥世联网络科技有限公司 | 基于浮点数运算内联函数库的神经网络优化方法 |
CN106502626A (zh) * | 2016-11-03 | 2017-03-15 | 北京百度网讯科技有限公司 | 数据处理方法和装置 |
CN107451658A (zh) * | 2017-07-24 | 2017-12-08 | 杭州菲数科技有限公司 | 浮点运算定点化方法及系统 |
CN107608715A (zh) * | 2017-07-20 | 2018-01-19 | 上海寒武纪信息科技有限公司 | 用于执行人工神经网络正向运算的装置及方法 |
Family Cites Families (194)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0375860A (ja) | 1989-08-18 | 1991-03-29 | Hitachi Ltd | パーソナライズド端末 |
US5052043A (en) | 1990-05-07 | 1991-09-24 | Eastman Kodak Company | Neural network with back propagation controlled through an output confidence measure |
US5517596A (en) * | 1991-05-17 | 1996-05-14 | International Business Machines Corporation | Learning machine synapse processor system apparatus |
US6144977A (en) | 1995-07-10 | 2000-11-07 | Motorola, Inc. | Circuit and method of converting a floating point number to a programmable fixed point number |
GB9602701D0 (en) | 1996-02-09 | 1996-04-10 | Canon Kk | Image manipulation |
US7242414B1 (en) | 1999-07-30 | 2007-07-10 | Mips Technologies, Inc. | Processor having a compare extension of an instruction set architecture |
JP2000293371A (ja) | 1999-04-09 | 2000-10-20 | Hitachi Ltd | マイクロプログラム制御方法及び装置 |
US6557096B1 (en) * | 1999-10-25 | 2003-04-29 | Intel Corporation | Processors with data typer and aligner selectively coupling data bits of data buses to adder and multiplier functional blocks to execute instructions with flexible data types |
US6671796B1 (en) | 2000-02-25 | 2003-12-30 | Sun Microsystems, Inc. | Converting an arbitrary fixed point value to a floating point value |
US6931639B1 (en) | 2000-08-24 | 2005-08-16 | International Business Machines Corporation | Method for implementing a variable-partitioned queue for simultaneous multithreaded processors |
EP1315846B1 (en) | 2000-09-07 | 2007-02-21 | Nippon Steel Corporation | Hexavalent chromium-free surface-treating agent for sn- or al-based coated steel sheet, and surface treated steel sheet |
US20020138714A1 (en) | 2001-03-22 | 2002-09-26 | Sun Microsystems, Inc. | Scoreboard for scheduling of instructions in a microprocessor that provides out of order execution |
CN1270273C (zh) | 2001-04-19 | 2006-08-16 | 艾利森电话股份有限公司 | 自适应存储器分配 |
US20030167460A1 (en) | 2002-02-26 | 2003-09-04 | Desai Vipul Anil | Processor instruction set simulation power estimation method |
US7346881B2 (en) * | 2002-05-13 | 2008-03-18 | Tensilica, Inc. | Method and apparatus for adding advanced instructions in an extensible processor architecture |
US7236995B2 (en) | 2002-12-27 | 2007-06-26 | Arm Limited | Data processing apparatus and method for converting a number between fixed-point and floating-point representations |
DE10316381A1 (de) | 2003-04-10 | 2004-10-28 | Bayer Technology Services Gmbh | Verfahren zum Training von neuronalen Netzen |
JP4202244B2 (ja) | 2003-12-22 | 2008-12-24 | Necエレクトロニクス株式会社 | Vliw型dsp,及びその動作方法 |
JP2006154992A (ja) * | 2004-11-26 | 2006-06-15 | Akita Prefecture | ニューロプロセッサ |
US20060161375A1 (en) | 2004-12-30 | 2006-07-20 | Allen Duberstein | Optimizing processing speed based on measured temperatures |
US7721128B2 (en) | 2005-11-29 | 2010-05-18 | International Business Machines Corporation | Implementation of thermal throttling logic |
CN1851668A (zh) | 2006-06-01 | 2006-10-25 | 北京天碁科技有限公司 | 片上系统芯片、片上系统芯片的跟踪调试系统及方法 |
JP4861087B2 (ja) * | 2006-07-31 | 2012-01-25 | 富士通株式会社 | 演算プログラム変換装置、演算プログラム変換プログラム、演算プログラム変換方法 |
DE102006059156B4 (de) | 2006-12-14 | 2008-11-06 | Advanced Micro Devices, Inc., Sunnyvale | Verfahren zum Testen eines integrierten Schaltkreischips mit zumindest zwei Schaltungskernen sowie integrierter Schaltkreischip und Testsystem |
US8443029B2 (en) * | 2007-03-01 | 2013-05-14 | International Business Machines Corporation | Round for reround mode in a decimal floating point instruction |
US20110060587A1 (en) | 2007-03-07 | 2011-03-10 | Phillips Michael S | Command and control utilizing ancillary information in a mobile voice-to-speech application |
US8560591B2 (en) | 2007-04-25 | 2013-10-15 | International Business Machines Corporation | Detection of potential need to use a larger data format in performing floating point operations |
US8051118B2 (en) | 2007-04-26 | 2011-11-01 | International Business Machines Corporation | Composition of decimal floating point data |
US8051117B2 (en) | 2007-04-26 | 2011-11-01 | International Business Machines Corporation | Shift significand of decimal floating point data |
US8190664B2 (en) | 2007-04-26 | 2012-05-29 | International Business Machines Corporation | Employing a mask field of an instruction to encode a sign of a result of the instruction |
JP5184824B2 (ja) | 2007-06-15 | 2013-04-17 | キヤノン株式会社 | 演算処理装置及び方法 |
JP2009110353A (ja) * | 2007-10-31 | 2009-05-21 | Hitachi Ltd | マイクロコントローラ及び制御システム |
US7904287B2 (en) | 2007-11-13 | 2011-03-08 | International Business Machines Corporation | Method and system for real-time prediction of power usage for a change to another performance state |
JP4998794B2 (ja) | 2007-11-29 | 2012-08-15 | Nkワークス株式会社 | 画像補正方法と画像補正装置 |
JP4529098B2 (ja) * | 2008-07-29 | 2010-08-25 | ソニー株式会社 | 演算処理装置および方法、並びにプログラム |
US20100073068A1 (en) | 2008-09-22 | 2010-03-25 | Hanwoo Cho | Functional block level thermal control |
CN101572829B (zh) | 2009-06-10 | 2011-02-02 | 中国联合网络通信集团有限公司 | Iptv视频质量监测方法、装置和系统 |
EP2336882A1 (en) | 2009-12-18 | 2011-06-22 | Telefonaktiebolaget L M Ericsson (PUBL) | Technique for run-time provision of executable code using off-device services |
WO2011132277A1 (ja) | 2010-04-21 | 2011-10-27 | トヨタ自動車株式会社 | 内燃機関の制御装置 |
JP2011253374A (ja) | 2010-06-02 | 2011-12-15 | Sony Corp | 情報処理装置、および情報処理方法、並びにプログラム |
US8452463B2 (en) | 2010-06-04 | 2013-05-28 | Apple Inc. | Adjusting the thermal behavior of a computing system using indirect information about ambient temperature |
US8694572B2 (en) | 2010-07-06 | 2014-04-08 | Silminds, Llc, Egypt | Decimal floating-point fused multiply-add unit |
CN102637157B (zh) * | 2011-02-15 | 2014-12-03 | 郑磊 | 一种片上数字模板系统dtsoc |
US8924455B1 (en) | 2011-02-25 | 2014-12-30 | Xilinx, Inc. | Multiplication of matrices using systolic arrays |
CN102761509B (zh) | 2011-04-27 | 2016-01-06 | 联芯科技有限公司 | Ofdm系统的接收系统及降低接收系统内存的方法 |
CN103534664B (zh) | 2011-05-12 | 2016-08-31 | 苹果公司 | 存在感测 |
CN102789413B (zh) | 2011-05-23 | 2016-02-17 | 同济大学 | 一种并行程序的调试系统及方法 |
US8594982B2 (en) | 2011-06-09 | 2013-11-26 | Pulsar Informatics, Inc. | Systems and methods for distributed calculation of fatigue-risk prediction and optimization |
CN102404673B (zh) | 2011-11-24 | 2013-12-18 | 苏州上声电子有限公司 | 数字化扬声器系统通道均衡与声场控制方法和装置 |
CN103152673B (zh) | 2011-12-07 | 2015-07-08 | 中国科学院声学研究所 | 基于四元码动态失配整形的数字扬声器驱动方法和装置 |
CN107220027A (zh) * | 2011-12-23 | 2017-09-29 | 英特尔公司 | 用于执行掩码位压缩的系统、装置以及方法 |
US9335993B2 (en) * | 2011-12-29 | 2016-05-10 | International Business Machines Corporation | Convert from zoned format to decimal floating point format |
CN102684701B (zh) | 2012-04-27 | 2014-07-09 | 苏州上声电子有限公司 | 基于编码转换的数字扬声器驱动方法和装置 |
DE102012009502A1 (de) | 2012-05-14 | 2013-11-14 | Kisters Ag | Verfahren zum Trainieren eines künstlichen neuronalen Netzes |
US9417891B2 (en) | 2012-06-11 | 2016-08-16 | Vmware, Inc. | Unified storage/VDI provisioning methodology |
US9063731B2 (en) | 2012-08-27 | 2015-06-23 | Samsung Electronics Co., Ltd. | Ultra low power apparatus and method to wake up a main processor |
CN102903089B (zh) | 2012-09-07 | 2014-12-17 | 山东大学 | 一种Linux环境下生成遥感图像快视图的方法 |
US9412366B2 (en) | 2012-09-18 | 2016-08-09 | Adobe Systems Incorporated | Natural language image spatial and tonal localization |
WO2014081007A1 (ja) | 2012-11-22 | 2014-05-30 | 学校法人慶應義塾 | アクリル系共重合体、光学フィルム、偏光板および液晶表示装置 |
US9851977B2 (en) | 2012-12-06 | 2017-12-26 | Kalray | Apparatus and method for combining thread warps with compatible execution masks for simultaneous execution and increased lane utilization |
US9720732B1 (en) | 2013-02-11 | 2017-08-01 | Amazon Technologies, Inc. | Parameter selection for optimization of task execution based on execution history for prior tasks |
JP2014170295A (ja) | 2013-03-01 | 2014-09-18 | Honda Motor Co Ltd | 物体認識システム及び物体認識方法 |
US12047340B2 (en) | 2013-04-29 | 2024-07-23 | Dell Products L.P. | System for managing an instructure with security |
KR101752082B1 (ko) | 2013-06-12 | 2017-07-11 | 미쓰비시덴키 가부시키가이샤 | 개발 환경 시스템, 개발 환경 장치, 개발 환경 제공 방법 및 프로그램을 기록한 컴퓨터 판독 가능한 매체 |
JP6184891B2 (ja) | 2014-03-12 | 2017-08-23 | 東芝メモリ株式会社 | 情報処理装置、半導体チップ、情報処理方法およびプログラム |
US9507405B2 (en) | 2014-06-18 | 2016-11-29 | Oracle International Corporation | System and method for managing power in a chip multiprocessor using a proportional feedback mechanism |
US9575537B2 (en) | 2014-07-25 | 2017-02-21 | Intel Corporation | Adaptive algorithm for thermal throttling of multi-core processors with non-homogeneous performance states |
US10282100B2 (en) | 2014-08-19 | 2019-05-07 | Samsung Electronics Co., Ltd. | Data management scheme in virtualized hyperscale environments |
GB2524126B (en) | 2014-08-28 | 2016-07-27 | Imagination Tech Ltd | Combining paths |
US9916130B2 (en) * | 2014-11-03 | 2018-03-13 | Arm Limited | Apparatus and method for vector processing |
FR3030077B1 (fr) | 2014-12-10 | 2016-12-02 | Arnault Ioualalen | Procede d'ajustement de la precision d'un programme d'ordinateur manipulant au moins un nombre a virgule. |
EP3035204B1 (en) | 2014-12-19 | 2018-08-15 | Intel Corporation | Storage device and method for performing convolution operations |
US20170061279A1 (en) | 2015-01-14 | 2017-03-02 | Intel Corporation | Updating an artificial neural network using flexible fixed point representation |
JP6410637B2 (ja) * | 2015-02-25 | 2018-10-24 | ルネサスエレクトロニクス株式会社 | 浮動小数点加算器、半導体装置及び浮動小数点加算器の制御方法 |
US20160328645A1 (en) | 2015-05-08 | 2016-11-10 | Qualcomm Incorporated | Reduced computational complexity for fixed point neural network |
US10373050B2 (en) * | 2015-05-08 | 2019-08-06 | Qualcomm Incorporated | Fixed point neural network based on floating point neural network quantization |
US10083395B2 (en) | 2015-05-21 | 2018-09-25 | Google Llc | Batch processing in a neural network processor |
CN104899641B (zh) | 2015-05-25 | 2018-07-13 | 杭州朗和科技有限公司 | 深度神经网络学习方法、处理器和深度神经网络学习系统 |
CN115100016A (zh) | 2015-06-10 | 2022-09-23 | 无比视视觉技术有限公司 | 用于处理图像的图像处理器和方法 |
CN104978303B (zh) | 2015-06-19 | 2019-06-04 | 上海兆芯集成电路有限公司 | 单芯片整合的传感器集线器和多传感器管理方法 |
CN106469291A (zh) | 2015-08-19 | 2017-03-01 | 中兴通讯股份有限公司 | 图像处理方法及终端 |
US10031765B2 (en) | 2015-09-24 | 2018-07-24 | Intel Corporation | Instruction and logic for programmable fabric hierarchy and cache |
US10812831B2 (en) | 2015-09-30 | 2020-10-20 | Piksel, Inc. | Video stream delivery via adaptive quality enhancement using error correction models |
US11061672B2 (en) | 2015-10-02 | 2021-07-13 | Via Alliance Semiconductor Co., Ltd. | Chained split execution of fused compound arithmetic operations |
CN106570559A (zh) | 2015-10-09 | 2017-04-19 | 阿里巴巴集团控股有限公司 | 一种基于神经网络的数据处理方法和装置 |
CN105426344A (zh) * | 2015-11-09 | 2016-03-23 | 南京大学 | 基于Spark的分布式大规模矩阵乘法的矩阵计算方法 |
WO2017087568A1 (en) | 2015-11-17 | 2017-05-26 | Eman Bayani | A digital image capturing device system and method |
CN106814639A (zh) | 2015-11-27 | 2017-06-09 | 富泰华工业(深圳)有限公司 | 语音控制系统及方法 |
CN105893419A (zh) | 2015-11-30 | 2016-08-24 | 乐视致新电子科技(天津)有限公司 | 一种多媒体照片生成方法、装置、设备及手机 |
US10699186B2 (en) | 2015-12-02 | 2020-06-30 | Google Llc | Determining orders of execution of a neural network |
CN110135581B (zh) * | 2016-01-20 | 2020-11-06 | 中科寒武纪科技股份有限公司 | 用于执行人工神经网络反向运算的装置和方法 |
CN106997236B (zh) | 2016-01-25 | 2018-07-13 | 亮风台(上海)信息科技有限公司 | 基于多模态输入进行交互的方法和设备 |
US10664766B2 (en) | 2016-01-27 | 2020-05-26 | Bonsai AI, Inc. | Graphical user interface to an artificial intelligence engine utilized to generate one or more trained artificial intelligence models |
US10497089B2 (en) | 2016-01-29 | 2019-12-03 | Fotonation Limited | Convolutional neural network |
EP3416105A4 (en) | 2016-02-12 | 2019-02-20 | Sony Corporation | INFORMATION PROCESSING METHOD AND INFORMATION PROCESSING DEVICE |
JP2017156511A (ja) | 2016-03-01 | 2017-09-07 | ソニー株式会社 | 情報処理装置、情報処理方法、およびプログラム |
US10103714B2 (en) | 2016-03-01 | 2018-10-16 | Qualcomm Incorporated | Adjust voltage for thermal mitigation |
US10019779B2 (en) | 2016-03-08 | 2018-07-10 | Amazon Technologies, Inc. | Browsing interface for item counterparts having different scales and lengths |
CN107305538B (zh) * | 2016-04-22 | 2020-07-31 | 中科寒武纪科技股份有限公司 | 一种子矩阵运算装置及方法 |
CN110188870B (zh) * | 2016-04-27 | 2021-10-12 | 中科寒武纪科技股份有限公司 | 用于执行人工神经网络自学习运算的装置和方法 |
CN111860814B (zh) * | 2016-04-29 | 2024-01-16 | 中科寒武纪科技股份有限公司 | 一种用于执行batch normalization运算的装置和方法 |
CN107330515A (zh) * | 2016-04-29 | 2017-11-07 | 北京中科寒武纪科技有限公司 | 一种用于执行人工神经网络正向运算的装置和方法 |
CN107341541B (zh) * | 2016-04-29 | 2021-01-29 | 中科寒武纪科技股份有限公司 | 一种用于执行全连接层神经网络训练的装置和方法 |
CN107329936A (zh) * | 2016-04-29 | 2017-11-07 | 北京中科寒武纪科技有限公司 | 一种用于执行神经网络运算以及矩阵/向量运算的装置和方法 |
US10552119B2 (en) | 2016-04-29 | 2020-02-04 | Intel Corporation | Dynamic management of numerical representation in a distributed matrix processor architecture |
US11055063B2 (en) | 2016-05-02 | 2021-07-06 | Marvell Asia Pte, Ltd. | Systems and methods for deep learning processor |
US10187568B1 (en) | 2016-05-02 | 2019-01-22 | Bao Tran | Video smart phone |
GB201607713D0 (en) * | 2016-05-03 | 2016-06-15 | Imagination Tech Ltd | Convolutional neural network |
CN105978611B (zh) | 2016-05-12 | 2019-09-17 | 京信通信系统(中国)有限公司 | 一种频域信号压缩方法及装置 |
AU2016203619A1 (en) | 2016-05-31 | 2017-12-14 | Canon Kabushiki Kaisha | Layer-based operations scheduling to optimise memory for CNN applications |
EP3252949B1 (en) | 2016-06-01 | 2020-03-18 | Intel IP Corporation | Methods and devices for predistortion of signals |
US20170357910A1 (en) | 2016-06-10 | 2017-12-14 | Apple Inc. | System for iteratively training an artificial intelligence using cloud-based metrics |
CN107545889B (zh) | 2016-06-23 | 2020-10-23 | 华为终端有限公司 | 适用于模式识别的模型的优化方法、装置及终端设备 |
CN106131139B (zh) * | 2016-06-23 | 2019-07-19 | 暨南大学 | 一种云关系数据库的浮点数据的加密及查询方法 |
CN106156310A (zh) | 2016-06-30 | 2016-11-23 | 努比亚技术有限公司 | 一种图片处理装置和方法 |
US10372588B2 (en) | 2016-07-08 | 2019-08-06 | International Business Machines Corporation | Providing debug information on production containers using debug containers |
DE102016214786A1 (de) | 2016-08-09 | 2018-02-15 | Fujitsu Limited | Anwendungsprofiling-Jobmanagement-System, -Programm und -Verfahren |
US20180046903A1 (en) | 2016-08-12 | 2018-02-15 | DeePhi Technology Co., Ltd. | Deep processing unit (dpu) for implementing an artificial neural network (ann) |
CN107657316B (zh) | 2016-08-12 | 2020-04-07 | 北京深鉴智能科技有限公司 | 通用处理器与神经网络处理器的协同系统设计 |
CN106354568A (zh) | 2016-08-23 | 2017-01-25 | 京信通信技术(广州)有限公司 | 一种不同进程间的通信方法及通信装置 |
CN107797913A (zh) | 2016-09-07 | 2018-03-13 | 大陆汽车电子(连云港)有限公司 | 一种实时系统的软件分析系统与方法 |
US11907760B2 (en) | 2016-09-23 | 2024-02-20 | Apple Inc. | Systems and methods of memory allocation for neural networks |
CN106650922B (zh) | 2016-09-29 | 2019-05-03 | 清华大学 | 硬件神经网络转换方法、计算装置、软硬件协作系统 |
US20180096243A1 (en) | 2016-09-30 | 2018-04-05 | General Electric Company | Deep learning for data driven feature representation and anomaly detection |
US10726330B2 (en) | 2016-10-11 | 2020-07-28 | The Research Foundation For The State University Of New York | System, method, and accelerator to process convolutional neural network layers |
CN106485316B (zh) | 2016-10-31 | 2019-04-02 | 北京百度网讯科技有限公司 | 神经网络模型压缩方法以及装置 |
US10216479B2 (en) | 2016-12-06 | 2019-02-26 | Arm Limited | Apparatus and method for performing arithmetic operations to accumulate floating-point numbers |
US10997492B2 (en) | 2017-01-20 | 2021-05-04 | Nvidia Corporation | Automated methods for conversions to a lower precision data format |
JP6540725B2 (ja) * | 2017-01-30 | 2019-07-10 | 富士通株式会社 | 演算処理装置、方法、およびプログラム |
US10650303B2 (en) * | 2017-02-14 | 2020-05-12 | Google Llc | Implementing neural networks in fixed point arithmetic computing systems |
CN106951587A (zh) | 2017-02-15 | 2017-07-14 | 芯启源(南京)半导体科技有限公司 | Fpga调试系统及方法 |
CN106951962B (zh) | 2017-03-22 | 2020-09-01 | 南京地平线机器人技术有限公司 | 用于神经网络的复合运算单元、方法和电子设备 |
US10402932B2 (en) | 2017-04-17 | 2019-09-03 | Intel Corporation | Power-based and target-based graphics quality adjustment |
US10332302B2 (en) | 2017-04-17 | 2019-06-25 | Intel Corporation | Scatter gather engine |
CN107025629B (zh) | 2017-04-27 | 2021-03-26 | 维沃移动通信有限公司 | 一种图像处理方法及移动终端 |
US11842280B2 (en) | 2017-05-05 | 2023-12-12 | Nvidia Corporation | Loss-scaling for deep neural network training with reduced precision |
US10019668B1 (en) | 2017-05-19 | 2018-07-10 | Google Llc | Scheduling neural network processing |
US11144828B2 (en) | 2017-06-09 | 2021-10-12 | Htc Corporation | Training task optimization system, training task optimization method and non-transitory computer readable medium for operating the same |
US10944902B2 (en) | 2017-06-20 | 2021-03-09 | Adobe Inc. | Digital image generation using capture support data |
WO2019005088A1 (en) | 2017-06-30 | 2019-01-03 | Intel Corporation | HETEROGENEOUS MULTIPLIER |
CN107451654B (zh) | 2017-07-05 | 2021-05-18 | 深圳市自行科技有限公司 | 卷积神经网络的加速运算方法、服务器及存储介质 |
US10427306B1 (en) | 2017-07-06 | 2019-10-01 | X Development Llc | Multimodal object identification |
CN107688849B (zh) | 2017-07-28 | 2021-04-13 | 赛灵思电子科技(北京)有限公司 | 一种动态策略定点化训练方法及装置 |
US11481218B2 (en) | 2017-08-02 | 2022-10-25 | Intel Corporation | System and method enabling one-hot neural networks on a machine learning compute platform |
WO2019031858A1 (en) | 2017-08-08 | 2019-02-14 | Samsung Electronics Co., Ltd. | METHOD AND APPARATUS FOR DETERMINING MEMORY NEEDS IN A NETWORK |
US20190050710A1 (en) | 2017-08-14 | 2019-02-14 | Midea Group Co., Ltd. | Adaptive bit-width reduction for neural networks |
CN107644254A (zh) | 2017-09-09 | 2018-01-30 | 复旦大学 | 一种卷积神经网络权重参数量化训练方法及系统 |
US11450319B2 (en) | 2017-09-29 | 2022-09-20 | Cambricon (Xi'an) Semiconductor Co., Ltd. | Image processing apparatus and method |
US10224954B1 (en) | 2017-09-29 | 2019-03-05 | Intel Corporation | Floating point to fixed point conversion |
US10223114B1 (en) | 2017-09-29 | 2019-03-05 | Intel Corporation | Fixed point to floating point conversion |
KR102380494B1 (ko) | 2017-09-29 | 2022-03-29 | 상하이 캠브리콘 인포메이션 테크놀로지 컴퍼니 리미티드 | 화상처리장치 및 방법 |
US11437032B2 (en) | 2017-09-29 | 2022-09-06 | Shanghai Cambricon Information Technology Co., Ltd | Image processing apparatus and method |
JP6540770B2 (ja) | 2017-10-17 | 2019-07-10 | 富士通株式会社 | 演算処理回路、演算処理回路を含む演算処理装置、演算処理装置を含む情報処理装置、および方法 |
US10410121B2 (en) | 2017-10-25 | 2019-09-10 | SparkCognition, Inc. | Adjusting automated neural network generation based on evaluation of candidate neural networks |
US20210061028A1 (en) | 2017-10-26 | 2021-03-04 | Applied Mechatronic Products | Apparatus and method for vehicular monitoring, analysis, and control |
US10783634B2 (en) | 2017-11-22 | 2020-09-22 | General Electric Company | Systems and methods to deliver point of care alerts for radiological findings |
US10803379B2 (en) | 2017-12-12 | 2020-10-13 | Amazon Technologies, Inc. | Multi-memory on-chip computational network |
CN108053028B (zh) | 2017-12-21 | 2021-09-14 | 深圳励飞科技有限公司 | 数据定点化处理方法、装置、电子设备及计算机存储介质 |
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 |
US11373088B2 (en) | 2017-12-30 | 2022-06-28 | Intel Corporation | Machine learning accelerator mechanism |
US20190251429A1 (en) | 2018-02-12 | 2019-08-15 | Kneron, Inc. | Convolution operation device and method of scaling convolution input for convolution neural network |
US11630666B2 (en) | 2018-02-13 | 2023-04-18 | Shanghai Cambricon Information Technology Co., Ltd | Computing device and method |
US11106598B2 (en) | 2018-02-13 | 2021-08-31 | Shanghai Cambricon Information Technology Co., Ltd. | Computing device and method |
CN110163361B (zh) * | 2018-02-13 | 2021-06-25 | 上海寒武纪信息科技有限公司 | 一种计算装置及方法 |
US11397579B2 (en) | 2018-02-13 | 2022-07-26 | Shanghai Cambricon Information Technology Co., Ltd | Computing device and method |
CN116991226A (zh) | 2018-02-14 | 2023-11-03 | 上海寒武纪信息科技有限公司 | 处理器的控制装置、方法及设备 |
JP7056225B2 (ja) | 2018-02-26 | 2022-04-19 | 富士通株式会社 | 演算処理装置、情報処理装置、情報処理方法、およびプログラム |
US10628275B2 (en) | 2018-03-07 | 2020-04-21 | Nxp B.V. | Runtime software-based self-test with mutual inter-core checking |
US11475306B2 (en) | 2018-03-22 | 2022-10-18 | Amazon Technologies, Inc. | Processing for multiple input data sets |
CN108510067B (zh) | 2018-04-11 | 2021-11-09 | 西安电子科技大学 | 基于工程化实现的卷积神经网络量化方法 |
US11562213B2 (en) | 2018-04-17 | 2023-01-24 | Intel Corporation | Methods and arrangements to manage memory in cascaded neural networks |
EP3624020A4 (en) | 2018-05-18 | 2021-05-05 | Shanghai Cambricon Information Technology Co., Ltd | CALCULATION PROCEDURES AND RELATED PRODUCTS |
CN108717570A (zh) | 2018-05-23 | 2018-10-30 | 电子科技大学 | 一种脉冲神经网络参数量化方法 |
CN115268082A (zh) | 2018-05-31 | 2022-11-01 | 中强光电股份有限公司 | 头戴式显示装置 |
US10360304B1 (en) | 2018-06-04 | 2019-07-23 | Imageous, Inc. | Natural language processing interface-enabled building conditions control system |
CN109062540B (zh) | 2018-06-06 | 2022-11-25 | 北京理工大学 | 一种基于cordic算法的可重构浮点运算装置 |
CN109063820A (zh) | 2018-06-07 | 2018-12-21 | 中国科学技术大学 | 利用时频联合长时循环神经网络的数据处理方法 |
KR102470893B1 (ko) | 2018-06-27 | 2022-11-25 | 상하이 캠브리콘 인포메이션 테크놀로지 컴퍼니 리미티드 | 온 칩 코드의 브레이크 포인트에 의한 디버그 방법, 온 칩 프로세서 및 브레이크 포인트에 의한 칩 디버그 시스템 |
CN110728364A (zh) | 2018-07-17 | 2020-01-24 | 上海寒武纪信息科技有限公司 | 一种运算装置和运算方法 |
US11966583B2 (en) | 2018-08-28 | 2024-04-23 | Cambricon Technologies Corporation Limited | Data pre-processing method and device, and related computer device and storage medium |
US11703939B2 (en) | 2018-09-28 | 2023-07-18 | Shanghai Cambricon Information Technology Co., Ltd | Signal processing device and related products |
CN109685202B (zh) | 2018-12-17 | 2023-03-21 | 腾讯科技(深圳)有限公司 | 数据处理方法及装置、存储介质和电子装置 |
CN111383638A (zh) | 2018-12-28 | 2020-07-07 | 上海寒武纪信息科技有限公司 | 信号处理装置、信号处理方法及相关产品 |
CN109902745A (zh) | 2019-03-01 | 2019-06-18 | 成都康乔电子有限责任公司 | 一种基于cnn的低精度训练与8位整型量化推理方法 |
CN110059733A (zh) | 2019-04-01 | 2019-07-26 | 苏州科达科技股份有限公司 | 卷积神经网络的优化及快速目标检测方法、装置 |
CN109993296B (zh) | 2019-04-01 | 2020-12-29 | 安徽寒武纪信息科技有限公司 | 量化实现方法及相关产品 |
US20200334522A1 (en) | 2019-04-18 | 2020-10-22 | Cambricon Technologies Corporation Limited | Data processing method and related products |
CN111832738B (zh) | 2019-04-18 | 2024-01-09 | 中科寒武纪科技股份有限公司 | 一种数据处理方法及相关产品 |
US11676028B2 (en) | 2019-06-12 | 2023-06-13 | Shanghai Cambricon Information Technology Co., Ltd | Neural network quantization parameter determination method and related products |
WO2021036908A1 (zh) | 2019-08-23 | 2021-03-04 | 安徽寒武纪信息科技有限公司 | 数据处理方法、装置、计算机设备和存储介质 |
JP7146954B2 (ja) | 2019-08-23 | 2022-10-04 | 安徽寒武紀信息科技有限公司 | データ処理方法、装置、コンピュータデバイス、及び記憶媒体 |
US12001955B2 (en) | 2019-08-23 | 2024-06-04 | Anhui Cambricon Information Technology Co., Ltd. | Data processing method, device, computer equipment and storage medium |
WO2021036905A1 (zh) | 2019-08-27 | 2021-03-04 | 安徽寒武纪信息科技有限公司 | 数据处理方法、装置、计算机设备和存储介质 |
CN110780845B (zh) | 2019-10-17 | 2021-11-30 | 浙江大学 | 一种用于量化卷积神经网络的可配置近似乘法器及其实现方法 |
-
2018
- 2018-09-03 EP EP19212756.1A patent/EP3651077B1/en active Active
- 2018-09-03 KR KR1020197026717A patent/KR102148110B1/ko active IP Right Grant
- 2018-09-03 EP EP19213389.0A patent/EP3651078B1/en active Active
- 2018-09-03 EP EP19212749.6A patent/EP3651070B1/en active Active
- 2018-09-03 CN CN201880002628.1A patent/CN110383300B/zh active Active
- 2018-09-03 WO PCT/CN2018/103850 patent/WO2019157812A1/zh unknown
- 2018-09-03 JP JP2019549547A patent/JP6846534B2/ja active Active
- 2018-09-03 EP EP18906652.5A patent/EP3617959B1/en active Active
- 2018-09-03 KR KR1020197023810A patent/KR102252137B1/ko active IP Right Grant
- 2018-09-03 EP EP19212755.3A patent/EP3651076B1/en active Active
- 2018-09-03 US US16/614,215 patent/US11609760B2/en active Active
- 2018-09-03 EP EP19212750.4A patent/EP3651071B1/en active Active
- 2018-09-03 KR KR1020197028161A patent/KR102354720B1/ko active IP Right Grant
- 2018-09-03 EP EP19212752.0A patent/EP3651073B1/en active Active
- 2018-09-03 KR KR1020197028167A patent/KR102354722B1/ko active IP Right Grant
- 2018-09-03 EP EP19212746.2A patent/EP3640863B1/en active Active
- 2018-09-03 EP EP19212754.6A patent/EP3651075B1/en active Active
- 2018-09-03 EP EP19214004.4A patent/EP3651079B1/en active Active
- 2018-09-03 KR KR1020197028148A patent/KR102354718B1/ko active IP Right Grant
- 2018-09-03 EP EP19212753.8A patent/EP3651074B1/en active Active
- 2018-09-03 EP EP19212751.2A patent/EP3651072B1/en active Active
-
2019
- 2019-01-25 TW TW112100421A patent/TWI827432B/zh active
- 2019-01-25 TW TW108102996A patent/TWI795519B/zh active
- 2019-12-09 JP JP2019222370A patent/JP6880160B2/ja active Active
- 2019-12-09 JP JP2019222369A patent/JP6826181B2/ja active Active
- 2019-12-09 JP JP2019222372A patent/JP6905573B2/ja active Active
- 2019-12-09 JP JP2019222371A patent/JP6865805B2/ja active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102981854A (zh) * | 2012-11-16 | 2013-03-20 | 天津市天祥世联网络科技有限公司 | 基于浮点数运算内联函数库的神经网络优化方法 |
CN106502626A (zh) * | 2016-11-03 | 2017-03-15 | 北京百度网讯科技有限公司 | 数据处理方法和装置 |
CN107608715A (zh) * | 2017-07-20 | 2018-01-19 | 上海寒武纪信息科技有限公司 | 用于执行人工神经网络正向运算的装置及方法 |
CN107451658A (zh) * | 2017-07-24 | 2017-12-08 | 杭州菲数科技有限公司 | 浮点运算定点化方法及系统 |
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI795519B (zh) | 計算裝置、機器學習運算裝置、組合處理裝置、神經網絡芯片、電子設備、板卡及執行機器學習計算的方法 | |
US11630666B2 (en) | Computing device and method | |
US11704125B2 (en) | Computing device and method | |
US11106598B2 (en) | Computing device and method | |
CN110163359B (zh) | 一种计算装置及方法 | |
CN111198714A (zh) | 重训练方法及相关产品 |