TWI841838B - 資訊處理電路及資訊處理電路之設計方法 - Google Patents

資訊處理電路及資訊處理電路之設計方法 Download PDF

Info

Publication number
TWI841838B
TWI841838B TW110114833A TW110114833A TWI841838B TW I841838 B TWI841838 B TW I841838B TW 110114833 A TW110114833 A TW 110114833A TW 110114833 A TW110114833 A TW 110114833A TW I841838 B TWI841838 B TW I841838B
Authority
TW
Taiwan
Prior art keywords
circuit
parameter
parameter value
value output
information processing
Prior art date
Application number
TW110114833A
Other languages
English (en)
Other versions
TW202147162A (zh
Inventor
竹中崇
Original Assignee
日商日本電氣股份有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from PCT/JP2020/020701 external-priority patent/WO2021240633A1/ja
Application filed by 日商日本電氣股份有限公司 filed Critical 日商日本電氣股份有限公司
Publication of TW202147162A publication Critical patent/TW202147162A/zh
Application granted granted Critical
Publication of TWI841838B publication Critical patent/TWI841838B/zh

Links

Abstract

本發明之資訊處理電路10係執行深度學習中的層之運算,其包含:乘積累加電路11,使用輸入資料及參數值而進行乘積累加運算;及參數值輸出電路12,輸出參數值;參數值輸出電路12係由組合電路所構成,其包含:第一參數值輸出電路13,以無法變更電路構成之方式製造;及第二參數值輸出電路14,以可變更電路構成之方式製造。

Description

資訊處理電路及資訊處理電路之設計方法
本發明係關於一種執行深度學習之推論階段的資訊處理電路、及如此之資訊處理電路的設計方法。
深度學習係使用多層類神經網路(以下,稱為網路)的演算法。在深度學習中係執行:將各網路(層)最佳化以製作模型(學習模型)的學習階段、及基於學習模型而進行推論的推論階段。又,模型亦被稱為推論模型。又,以下,有時係將模型以推論器來表達。
在學習階段及推論階段中,係執行「用於調整作為參數之權重」的運算,或是進行將輸入資料與權重作為對象的運算,但該等運算的計算量大。其結果,各階段的處理時間會變長。
為了將深度學習高速化,較常使用以GPU(Graphics Processing Unit)實現的推論器,而非以CPU(Central Processing Unit)實現的推論器。再者,深度學習專用的加速器正在實用化。
圖20係顯示卷積類神經網路(CNN:Convolutional Neural Network)之一例亦即VGG(Visual Geometry Group:視覺幾何組)-16之構造的說明圖。VGG-16包含13層的卷積層及3層的全連接層。藉由卷積層或是藉由卷積層與池化層所提取出的特徵,係藉由全連接層加以分類。
在圖20中,「I」表示輸入層。「C」表示卷積層。在圖20中,卷積層為3×3的卷積。因此,例如,在圖20的最初的卷積運算中,每1像素包含3(縱尺寸)×3(橫尺寸)×3(輸入通道)×64(輸出通道)個的乘積累加運算(multiply-accumulate)。又例如,在圖20的第五區塊的卷積層中,每1像素包含3(縱尺寸)×3(橫尺寸)×512(輸入通道)×512(輸出通道)個的乘積累加運算。「P」表示池化層。在圖20所示的CNN中,池化層為MaxPooling(最大池化)層。「F」表示全連接層。「O」表示輸出層。在輸出層中係使用softmax函數。又,卷積層及全連接層包含線性整流函數(Rectified Linear Unit:ReLU)。附加於各層的乘法式,係表示與一片輸入影像對應的資料之縱尺寸×橫尺寸×通道數。又,表示層的直方體之體積,係與層中的激發(activation)的量對應。
[先前技術文獻]
[專利文獻]
[專利文獻1]日本特開2019-139742號公報
[非專利文獻]
[非專利文獻1]P. N. Whatmough et al., "FixyNN: Efficient Hardwarefor Mobile Computer Vision via Transfer Learning", Feb, 27 2019
在以加速器實現推論器的情況下,主要考量兩個方法。
若以CNN為例,在第一個方法中,CNN係以共通的運算器執行構成CNN的複數層之運算(例如,參照專利文獻1的段落0033等)。
圖21係示意地顯示以共通的運算器執行複數層之運算的CNN之運算器的說明圖。執行推論器中之運算的部分,係由運算器700及記憶體(例如,DRAM(Dynamic Random Access Memory:動態隨機存取記憶體))900所構成。在圖21所示的運算器700中,係形成多數加法器與多數乘法器。在圖21中,「+」表示加法器,「*」表示乘法器。又,在圖21中,雖係例示了三個加法器與六個乘法器,然而係形成可執行CNN中所有層各自之運算的數量之加法器與乘法器。
在執行推論器之各層的運算時,運算器700係從DRAM900讀取關於運算執行對象之一層的參數。又,運算器700將參數作為係數而執行一層中的乘積累加運算。
在第二個方法中,CNN係以與各層對應的運算器執行構成CNN之所有層各自(特別是卷積層)的運算(例如,參照非專利文獻1)。又,在非專利文獻1中記載了CNN係分割成兩個階段,並在前段的階段中,設置與各層對應的運算器。
圖22係示意地顯示設有與各層對應之運算器的CNN的說明圖。在圖22中,係例示了CNN中的六個層801、802、803、804、805、806。又,設有分別與層801、802、803、804、805、806對應的運算器(電路)701、702、703、704、705、706。
由於運算器701~706係執行對應之層801~806的運算,因此若參數不變,則為固定的電路構成。又,在非專利文獻1中記載了將參數設為固定值。
在上述第一個方法中,由於具備了DRAM900,即使變更參數,亦可在不變更運算器701~706之電路構成的情況下,執行CNN的功能。然而,DRAM900的資料傳送速度和運算器700的運算速度相比較低。亦即,DRAM900的記憶體頻寬較窄。從而,運算器700與記憶體之間的資料傳送會有瓶頸。其結果,CNN的運算速度會受到限制。
在上述第二個方法中,由於設置分別與各層對應的運算器701~706,因此CNN整體的電路規模會變大。
在非專利文獻1所記載的方法中,係藉由固定參數及網路構成,而使CNN整體的加法器與乘法器之電路規模變小。然而,在非專利文獻1所記載的方法中,由於各層係以可全平行處理(fully-parallel)的方式構成電路,故電路規模會因為如此之電路構成變大。又,由於各層係以「平行處理與各輸入通道、各輸出通道對應之運算」的方式構成電路,故電路規模會因為如此之電路構成而變大。又,由於各層係以可全平行處理的方式構成電路,故期望與一片影像對應的輸入資料之處理時間在各層中為相同時間。
在CNN中,有時越前面的層(接近輸出層的層),與一片影像對應之輸入資料的縱尺寸及橫尺寸會越小。例如,可藉由池化而將與一片影像對應之輸入資料的縱尺寸及橫尺寸縮小。在各層以相同時間處理與一片輸入影像對應之資料的情況下,只要前面的層的通道數並非極端的多,在前面的層的計算量會較小。換言之,本來越前面的層,執行該層之運算的電路規模宜越小。然而,在非專利文獻1所記載的方法中,由於運算器700可將所有輸入通道與輸出通道的運算並行執行,因此輸入資料之縱尺寸及橫尺寸較少的層,其與一片影像對應的輸入資料之處理會較早結束,而直到供給與下一個影像對應之輸入資料為止,會產生等待時間。換言之,運算器700的利用率較低。
又,在非專利文獻1所記載的CNN之構成,係將CNN分割成兩個階段,並在前段的階段中設置與各層對應的運算器這樣的構成。又,後段的階段係將參數傳送至DRAM,並使用可程式的加速器作為運算器。亦即,在非專利文獻1中並 未記載「CNN係以因應某種程度的參數變更或網路構成變更的方式構成,且CNN整體亦即推論器整體係將參數及網路構成固定」。
又,在推論器整體係將參數及網路構造固定的情況下,一旦製造電路後,難以變更深度學習的網路構造及權重(參數)。例如,作為臉部驗證晶片而製造的電路,只能在臉部驗證中使用。亦即,固定住參數及網路構造的電路難以與其他種類的CNN對應。
本發明係提供一種資訊處理電路及資訊處理電路之設計方法,目的在於,在以硬體實現推論器的情況下,從記憶體頻寬的限制中釋放,並且提高推論器中的各層之運算器的使用率。
依本發明的資訊處理電路,係執行深度學習中的層之運算的資訊處理電路,包含:乘積累加電路,使用輸入資料及參數值進行乘積累加運算;及參數值輸出電路,用於輸出參數值;參數值輸出電路係由組合電路所構成,其包含:第一參數值輸出電路,以無法變更電路構成的方式製造;及第二參數值輸出電路,以可變更電路構成方式製造。
依本發明的資訊處理電路之設計方法,係產生「執行深度學習中之層的運算」的資訊處理電路,將包含學習完成之複數參數值的複數種類型之參數集與可特定出網路構造的資料加以輸入;製作使用輸入資料與參數值而進行乘積累 加運算的電路且係專用於網路構造中之層的乘積累加電路;製作以無法變更電路構成之方式實現的第一參數值輸出電路,及製作以可變更電路構成之方式實現的第二參數值輸出電路;該第一參數值輸出電路及該第二參數值輸出電路,係作為輸出複數種類型之參數集中之參數值的組合電路。
依本發明的資訊處理電路之設計程式,係用於產生「執行深度學習中的層之運算」的資訊處理電路,其使電腦執行以下處理:將包含學習完成之複數參數值的複數種類型之參數集、與可特定出網路構造之資料加以輸入的處理;製作使用輸入資料及參數值而進行乘積累加運算之電路且係專用於網路構造之層的乘積累加電路之處理;製作以無法變更電路構成之方式實現的第一參數值輸出電路之處理;及製作以可變更電路構成之方式實現的第二參數值輸出電路之處理;該第一參數值輸出電路及該第二參數值輸出電路,係作為將複數種類型之參數集中的參數值加以輸出之組合電路。
依本發明,可獲得從記憶體頻寬之限制中釋放,且提高推論器中之各層之運算器的使用率的資訊處理電路。
10:資訊處理電路
11:乘積累加電路
12:參數值輸出電路
13:第一參數值輸出電路
14:第二參數值輸出電路
20:資訊處理電路設計裝置
21:輸入手段
22:運算器產生手段
23:參數值輸出電路製作手段
24:第一參數值輸出電路製作手段
25:第二參數值輸出電路製作手段
100,101:資訊處理電路
201~206:運算器
211~216:參數
221~226:第一參數
231~236:第二參數
300,310:基本電路
301:乘積累加電路
302,302a,302b:參數表
3021:參數A電路
3022:參數B電路
303:暫存器
304:第一參數表
305:第二參數表
311,312,401,402,411,412:真值表
400:控制部
500,510:資訊處理電路設計裝置
501,511:參數表最佳化部
502,512:參數表產生部
503,513:平行度決定部
504,514:運算器產生部
515:參數表分割部
700:運算器
801~806:層
701~706:運算器(電路)
900:DRAM
1000:CPU
1001:儲存裝置
1002:記憶體
S11~S17,S21~S29,S141~S144,S251~S255:步驟
圖1係示意地顯示第一實施態樣之資訊處理電路的說明圖。
圖2係顯示第一實施態樣之資訊處理電路的基本電路之構成例的說明圖。
圖3(A)、(B)係用於說明參數表之電路構成例的說明圖。
圖4係顯示第一實施態樣之資訊處理電路設計裝置之一例的方塊圖。
圖5係顯示第一實施態樣之資訊處理電路設計裝置之動作的流程圖。
圖6係顯示將參數表最佳化之處理之一例的流程圖。
圖7(A)、(B)係顯示參數值之變更方法之一例的說明圖。
圖8係示意地顯示第二實施態樣之資訊處理電路之說明圖。
圖9係顯示第二實施態樣之資訊處理電路的基本電路之構成例的說明圖。
圖10係顯示第二實施態樣之資訊處理電路設計裝置之一例的方塊圖。
圖11係顯示將參數表加以分割之處理之一例的說明圖。
圖12係顯示第二實施態樣之資訊處理電路設計裝置之動作的流程圖。
圖13係顯示將參數表最佳化之處理之一例的流程圖。
圖14係顯示變更參數值前之真值表之一例的說明圖。
圖15係顯示變更參數值後之真值表之一例的說明圖。
圖16係顯示各製造方法中之製造後之電路之特徵的說明圖。
圖17係顯示具有CPU之電腦之一例的方塊圖。
圖18係顯示資訊處理電路之主要部分的方塊圖。
圖19係顯示資訊處理電路設計裝置之主要部分的方塊圖。
圖20係顯示VGG-16之構造的說明圖。
圖21係示意地顯示以共通運算器執行複數層之運算的CNN之運算器的說明圖。
圖22係示意地顯示設有與各層對應之運算器之CNN的說明圖。
以下,參照圖式說明本發明之實施態樣。以下,關於資訊處理電路,係以CNN的推論器為例。又,關於輸入至CNN的資料,係以影像(影像資料)為例。
與圖22所例示之構成相同,資訊處理電路係設有與CNN之各層對應的運算器的CNN之推論器。又,資訊處理電路係實現固定參數,且固定網路構成(深度學習演算法的種類、以何種順序配置何種類型的層、各層之輸入資料的尺寸及輸出資料的尺寸等)的CNN之推論器。亦即,資訊處理電路係專用於CNN之各層(例如,各卷積層及全連接層)的電路構成之電路。所謂專用係指專門執行該層之運算的專用電路。
又,所謂固定參數係指學習階段的處理結束而決定適當的參數,並使用決定好的參數。然而,在以下的實施態樣中,有時會變更在學習階段決定好的參數。以下,有時係將「變更參數」表示為「最佳化參數」。
又,在使用依本發明之資訊處理電路的推論器中,平行度係考量資料輸入速度及處理速度等而決定。推論器中的參數(權重)與輸入資料的乘法器,係由組合邏輯電路(組合電路)構成。或是,亦可由管線式運算器構成。或是,亦可由時序電路構成。
實施態樣1.
圖1係示意地顯示第一實施態樣之資訊處理電路的說明圖。在圖1中,係例示了實現CNN的資訊處理電路100中之運算器201、202、203、204、205、206。亦即,在圖1中,係例示了CNN中的6層。各運算器201、202、203、204、205、206,係將層所使用之參數211、212、213、214、215、216與輸入資料作為對象而執行乘積累加運算。運算器201~206係由複數組合電路實現。參數211~216亦由組合電路實現。
又,組合電路係反及電路(NAND電路)、反或電路(NOR電路)、反電路(反轉電路:NOT電路)、及其組合等。在以下的說明中,有時係將一個電路元件表示為組合電路,有時亦將包含複數電路元件(NAND電路、NOR電路、NOT電路等)的電路表示為組合電路。
在圖1中,「+」係表示加法器。「*」係表示乘法器。又,圖1所例示的各層的運算器201~206之區塊所示之加法器的數量及乘法器的數量,僅為用於表記之一例。
在本實施態樣中,係在各運算器201~206中執行平行運算,但將執行平行運算中之一個運算的電路設為基本電路。基本電路係根據層的種類而預先決定。
圖2係顯示第一實施態樣之資訊處理電路的基本電路之構成例的說明圖。又,例示了六個層各自的運算器(電路)201、202、203、204、205、206。各層中, 設有平行處理數量的基本電路300。在圖2中,係例示了運算器203所包含的基本電路300,其他層的運算器201、202、204、205、206亦具有同樣的電路構成。
在圖2所示的例子中,基本電路300包含將輸入資料與來自參數表(權重表)302之參數值相乘,並將相乘值相加的乘積累加電路301。輸入資料可為一個值。又,輸入資料亦可為複數值的群組。又,在圖2中,係顯示了儲存參數值的參數表302,但實際上參數值並非儲存於儲存部(儲存電路),參數表302係由組合電路加以實現。在本實施態樣中,由於將參數固定,因此係從參數表302輸出固定的值亦即參數值。參數表302可輸出一個值。又,參數表302亦可輸出複數值的群組。乘積累加電路301可進行一個輸入值與一個參數值的相乘。又,乘積累加電路301亦可進行輸入值之群組與參數值之群組的相乘。亦可進行輸入值之群組與參數值之群組的相乘結果之群組的總合之計算。又,一般而言,係對於一個層使用複數參數或是複數群組的參數,而輸出哪個參數係控制部400所控制。
基本電路300亦可包含暫時儲存乘積累加運算值的暫存器303。乘積累加電路301亦可包含將暫時儲存於暫存器303之複數相乘值相加的加法器。其他基本電路300的輸出亦可與基本電路300的輸入連接。
圖3係用於說明參數表302之電路構成例的說明圖。在圖3(A)中,係顯示了真值表311之一例。可藉由組合電路而實現真值表311。A、B、C各自為組合電路的輸入。Z1、Z2為組合電路的輸出。在圖3(A)中,就一例而言,係顯示了全加法器的真值表311,將A、B、C視為位址,並將Z1、Z2視為輸出資料。亦即,可 將Z1、Z2視為對指定位址A、B、C的輸出資料。當將輸出資料與參數值附加對應後,便可根據某一輸入(指定位址),而獲得所期望的參數值。
例如,若所期望參數值可不受某特定之輸入值(在真值表311中為A)影響而決定時,則宜僅使用簡化後的真值表312,藉由真值表311中的輸入B、C來決定參數值。換言之,在以組合電路實現參數表302時,決定參數的不同種類之輸入越少,組合電路的電路規模越小。一般而言,在真值表的簡化中係使用奎因-麥克拉斯基法等習知技術。
圖2所示的運算器203包含控制部400。在將參數表302中的參數值作為如圖3所示般與指定位址相對應的輸出資料而實現的情況下,控制部400係在所期望的時間點,將與輸出資料對應的指定位址之資料供給至參數表302。參數表302係將與指定位址相對應的輸出資料亦即參數值輸出至乘積累加電路301。又,所期望的時間點,係乘積累加電路301使用欲從參數表302輸出之參數值,而執行相乘處理的時點。
接著,說明圖2所例示之運算器的設計方法。
圖4係顯示設計CNN之各層參數表的電路構成及運算器之電路構成的資訊處理電路設計裝置之一例的方塊圖。在圖4所示的例子中,資訊處理電路設計裝置500包含:參數表最佳化部501、參數表產生部502、平行度決定部503、及運算器產生部504。
平行度決定部503係輸入網路構造(具體而言為表示網路構造的資料)。運算器產生部504係輸出每層之運算器的電路構成。參數表最佳化部501係輸入在學習階段所學習到的參數集(各層中的權重)、與平行度決定部503所決定的平行度。參數表產生部502係輸出參數表的電路構成。
平行度決定部503係決定每層的平行度。參數表最佳化部501係基於輸入的每層之參數、與平行度決定部503所決定的每層之平行度,而將參數表最佳化。參數表的個數係由平行度決定,但參數表最佳化部501係將複數參數表302中的各參數最佳化。此處,所謂最佳化,係指使與參數表對應的組合電路之電路面積較小。
例如,若以「在平行度決定對象的層(對象層)執行的卷積運算係由3×3×128×128(=147,456的乘積累加運算(將參數值與激發值設為對象的乘積累加運算))所構成的情況」為例,則當平行度決定為「128」後,基本電路300的數量(平行度)便為128。各基本電路300係對1152個的乘積累加運算(147,456/128)執行處理。此情況下,在基本電路300中,係具備128個具有1152參數值的參數表。又,如上述般,參數表302並非由儲存電路加以實現,而係由組合電路加以實現。
如之後所述,參數表最佳化部501係使用預先設定好的方法,將參數表302的參數值最佳化。參數表產生部502係將用於實現具有最佳化後之參數值的參數表302之電路構成,作為參數表的電路構成而加以輸出。
運算器產生部504係輸入平行度決定部503所決定的每層之平行度。運算器產生部504係在每層產生將平行度所示之數量的基本電路300並列的電路構成。又,運算器產生部504係將產生的每層之電路構成,作為運算器電路的構成而加以輸出。
接著,參照圖5的流程圖,說明第一實施態樣的資訊處理電路設計裝置之動作。圖5顯示第一實施態樣的資訊處理電路設計裝置500之動作的流程圖。
參數表最佳化部501係輸入在學習階段所學習到的參數集(複數參數值),平行度決定部503係輸入預先決定好的表示網路構造的資料(步驟S11)。
又,關於本實施態樣中的網路構造之概念之一的深度學習演算法的種類,例如有:AlexNet、GoogLeNet、ResNet(Residual Network)、SENet(Squeeze-and-Excitation Networks)、MobileNet、VGG-16,VGG-19。又,關於網路構造的概念之一的層數,例如,吾人認為係與深度學習演算法之種類相對應的層數。又,關於網路構造的概念,亦可包含過濾器尺寸等。
以下,係將「輸入表示網路構造之資料」以「輸入網路構造」表達。
平行度決定部503係決定每層的平行度(步驟S12)。就一例而言,平行度決定部503係以式(1)決定平行度N。例如,在以輸入的深度學習演算法之種類所特定出的層之數量為19的情況下,平行度決定部503係決定19個層各自的平行度。
N=CL/DL‧‧‧(1)
在(1)式中,CL係表示為了在平行度決定對象的層(對象層)中,以一個乘積累加運算器處理一個畫面的所有像素所必要的時脈數。DL係表示在對象層一個畫面之處理所需要的時脈數(容許的時脈數)。
若以圖20所示的CNN為例,在一個畫面為縱尺寸224、橫尺寸224(50,176像素)的層(設為第一區塊中的層)中,係以1時脈執行縱橫1像素的處理,則會以50,176時脈執行一個畫面全體。相對於此,在一個畫面為縱尺寸14、橫尺寸14的層(設為第五區塊中的層)中,為了以相同時間完成一個畫面的處理,只要以256時脈執行縱橫1像素的處理,便可與第一時脈相同以50,176時脈完成一個畫面分的處理。第一區塊的卷積層之處理係每1像素為3(縱尺寸)×3(橫尺寸)×3(輸入通道)×64(輸出通道)(=1728個)。從而,為了以一個乘積累加運算器處理所有像素所必要的時脈數為1728個×50,176像素=86,704,128個。為了以50,176時脈完成一個畫面全體,第一區塊之層的平行度為1728。另一方面,第五區塊之卷積層的處理係每1像素為3(縱尺寸)×3(橫尺寸)×512(輸入通道)×512(輸出通道)(=2,359,296個)。從而,為了以一個乘積累加運算器處理所有像素所必要的時脈數 為2,359,296個×196像素=462,422,016個。為了以50,176時脈完成一個畫面全體,第五區塊之層的平行度為9,216。
藉由根據所期望的運算速度(一個畫面的處理量/所需的時脈數),而決定各層的平行度,例如,藉由基於式(1)而決定各層的平行度,可使各層的運算器(具體而言為運算器所包含的複數基本電路300)一直處於運作的狀態。在圖22所示的構成中,在對運算器701~706未施予任何精心構思的情況下,運算器706的可用率係低於運算器701的可用率。若以非專利文獻1所記載的構成為例,由於各層係以fully-parallel構成,因此在靠近輸出層的層中,運算器的可用率較低。然而,在本實施態樣中,可將所有層的運算器之可用率維持得較高。
參數表最佳化部501係根據決定好的平行度,而在每層產生參數表302(步驟S13)。再者,參數表最佳化部501係將產生的參數表302最佳化(步驟S14)。
圖6係顯示將參數表302最佳化之處理(參數表最佳化處理)之一例的流程圖。
在參數表最佳化處理中,參數表最佳化部501係測量CNN(推論器)的認知精度(S141)。在步驟S141中,參數表最佳化部501係使用推論器而執行模擬,該推論器係使用了「與決定好之平行度相對應的數量之基本電路300」、和「參數表之電路構成」。模擬係使用了適當的輸入資料之推論。又,藉由將模擬結果與正解進行比較,而獲得認知精度。
參數表最佳化部501係確認認知精度是否在第一基準值以上(步驟S142)。第一基準值係預先設定好的閾值。在認知精度為第一基準值以上的情況下,參數表最佳化部501係預估參數表302的電路面積。又,參數表最佳化部501係確認參數表302的電路面積是否在第二基準值以下(步驟S144)。第二基準值係預先設定好的閾值。參數表最佳化部501例如可基於構成參數表302的組合電路中的邏輯電路之數量,而預估參數表302的電路面積。
在參數表302的電路面積為第二基準值以下的情況下,參數表最佳化部501便結束參數表最佳化處理。
在認知精度未滿第一基準值的情況,或是在參數表302的電路面積超過第二基準值的情況下,參數表最佳化部501係變更參數值(步驟S143)。又,轉移至步驟S141。
在步驟S143中,在認知精度未滿第一基準值的情況下,參數表最佳化部501係往假定認知精度會提高的方向變更參數值。在假定認知精度會提高的方向不明的情況下,參數表最佳化部501亦能以嘗試法(cut and try)變更參數值。
在步驟S143中,參數表最佳化部501係在參數表302的電路面積超過第二基準值的情況下,變更參數值以使參數表302的電路面積變小。關於用於使參數表302的電路面積較小的參數值之變更方法,例如具有如以下的方法。
‧在參數表302中,將絕對值小於既定閾值的參數值變更為0。
‧在參數表302中,以參數表302中最大的參數值取代大於既定閾值的參數值(正數)。
‧以參數表302中最小的參數值取代小於既定閾值的參數值(負數)。
‧對參數表302中的每個既定區域,設定代表值,並將區域內的所有參數值取代成代表值。又,代表值就一例而言,為偶數值、奇數值、最頻值(mode)等。
‧將參數值取代成參數表302中的附近參數值。
又,參數表最佳化部501可使用上述複數方法中的一個方法,亦可將上述複數方法中的兩個以上之方法合併使用。
圖7係顯示參數值之變更方法之一例的說明圖。在圖7中,係例示了3×3尺寸的參數表。在圖7(A)中,係顯示了變更參數值前的參數表302a。在圖7(B)中,係顯示了變更參數值後的參數表302b。
在圖7所示的例子中,係將小於既定閾值亦即「3」的參數值變更為「0」。
上述各方法共通的目的在於,使相同值在參數表302中頻繁出現,亦即使同值的參數值增加、或是使相同圖案連續。又,使相同圖案連續的意思,例如係指使參數值「1」「2」「3」(相同圖案之一例)的圖案連續出現。
如上述般參數表302係由組合電路加以實現的情況下,參數值的種類越少,組合電路的電路規模會越小。又,即使係使相同圖案連續的情況下,亦可期待組合電路的電路規模會變小。
在本實施態樣中,在推論器的認知精度為所期望之層級以上(具體而言,第一基準值以上),並且電路面積為所期望之尺寸以下(具體而言,第二基準值以下)的情況下,資訊處理電路設計裝置500便結束參數表最佳化處理。
回到圖5,運算器產生部504係產生每層之運算器的電路構成並加以輸出(步驟S15、S17)。亦即,運算器產生部504係輸出與平行度決定部503所決定的每層之平行度相對應的運算器之電路構成。又,在本實施態樣中,由於各層的基本電路300係預先決定,因此運算器產生部504係產生與平行度決定部503所決定的平行度相對應之數量的基本電路300(具體而言為層所專用的乘積累加電路301)。
參數表產生部502係產生參數表302的電路構成並加以輸出(步驟S16、S17)。亦即,參數表產生部502係產生「用於輸出參數表最佳化部501所最佳化後之參數值的電路構成」並加以輸出。用於輸出參數值的電路構成,例如為圖3(B)所例示的實現真值表的組合電路之構成。
又,在圖5的流程圖中,步驟S14~S16的處理係依序執行,但步驟S14、S16的處理與步驟S15的處理可並行執行。
又,即使在未設有執行步驟S14之處理的參數表最佳化部501之情況下,亦可藉由平行度決定部503決定適當的平行度,而獲得使電路規模變小這樣的效果。
如以上所說明,在作為本實施態樣之資訊處理電路的推論器中,由於參數表302係由組合電路加以實現,因此和「以從記憶體讀取圖21所示之參數值之方式構成的資訊處理電路」相比,處理速度會提高。又,由於推論器中各層的平行度係根據該層所期望的運算速度等而設定,因此和「以fully-parallel構成各層」的情況相比,可將所有層的運算器之可用率維持得較高。又,本實施態樣的推論器和「以fully-parallel構成各層」的情況相比,電路規模會變小。其結果,推論器的消耗電力會降低。
又,在以將參數值最佳化的方式構成資訊處理電路設計裝置500的情況下,可使推論器的電路規模更小。
又,在本實施態樣中,係以CNN的推論器為例而說明資訊處理電路,但亦可將本實施態樣應用於具有「進行使用輸入資料與參數值之運算的層」的其他網路。又,在本實施態樣中,係使用影像資料作為輸入資料,但即使係將影像資料以外的資料作為輸入資料的網路,亦可活用本實施態樣。
由於資料中心的電力消耗量較多,因此在資料中心中執行深度學習的演算法時,期望以低消耗電力執行。由於在使用本實施態樣之資訊處理電路的情況 下消耗電力會降低,因此本實施態樣的資訊處理電路可有效地在資料中心中活用。
又,即使在邊緣側亦要求低消耗電力。本實施態樣的資訊處理電路在邊緣側亦可有效地活用。
實施態樣2.
圖8係示意地顯示第二實施態樣之資訊處理電路的說明圖。本實施態樣的資訊處理電路即使在將進行深度學習的資訊處理電路使用於複數用途(例如,臉部檢測用或車輛檢測用等)的情況下,亦可藉由更新一部分的參數,而對應於各種用途。
在本實施態樣中,係假定使用兩種類型的參數。第一種參數(以下,記載為第一參數),係在進行深度學習之各用途中共通使用的參數。第二種參數(以下,記載為第二參數)係針對各用途而個別使用的參數。在圖8中,係例示了使用了兩種類型之參數的資訊處理電路101中之運算器201、202、203、204、205、206。亦即,在圖8中,係例示了使用兩種類型的參數之CNN中的6層。
各運算器201、202、203、204、205、206係將在層所使用的第一參數221、222、223、224、225、226、第二參數231、232、233、234、235、236及輸入資料作為對象,而執行乘積累加運算。運算器201~206係由複數組合電路加以實現。又,第一參數221~226及第二參數231~236亦由複數組合電路加以實現。 又,與第一實施態樣的資訊處理電路100的電路構成之不同在於,分別存在構成第一參數及第二參數的電路。
具體而言,構成第一參數的電路係以無法變更電路構成的方式製造。另一方面,構成第二參數的電路係以可變更電路構成的方式製造。無法變更電路構成的方式,就一例而言,可舉基於單元(cell based)的電路。又,可變更電路構成的方式,就一例而言,可舉閘陣列或FPGA(Field Programmable Gate Array,現場可程式邏輯閘陣列)等。在以下的說明中,係將構成第一參數的電路記載為第一參數輸出電路,將構成第二參數的電路記載為第二參數輸出電路。又,可將包含第一參數輸出電路及第二參數輸出電路的電路,稱為參數值輸出電路。
第二參數輸出電路由於可變更電路構成,因此在製造時儲存的資訊為任意。在製造時,第二參數輸出電路可不保存個別的資訊,亦可保存與用途相對應的任何參數。第二參數輸出電路由於係根據用途而調整(更新)電路,因此在圖8中,為了顯示該狀態,係以點線包圍第二參數231~236而顯示。
與第一實施態樣相同,在各運算器201~206中係執行平行運算。將執行平行運算中的一個運算之電路,設為基本電路。又,基本電路係根據層的種類而預先決定。
圖9係顯示第二實施態樣之資訊處理電路的基本電路之構成例的說明圖。在圖9,係例示了6個層各自的運算器(電路)201、202、203、204、205、206。在各 層中,設有平行處理數量的基本電路310。在圖9中,係例示了運算器203所包含的基本電路310,但其他層的運算器201、202、204、205、206亦具有同樣的電路構成。
基本電路310包含:乘積累加電路301、暫存器303、第一參數表304及第二參數表305。乘積累加電路301係與第一實施態樣相同,將輸入資料與來自第一參數表304及第二參數表305的參數值相乘,並將相乘值相加的電路。又,所有的基本電路310並不一定要為同樣的構成,例如,亦可在複數基本電路310中的一個以上,包含乘積累加電路301、第一參數表304及第二參數表305。
第一參數表304係與上述第一參數輸出電路對應,並儲存進行「使用了本實施態樣之資訊處理電路101的深度學習」之各用途中所共通使用的參數的表。又,第二參數表305係與上述第二參數輸出電路對應,並儲存針對各用途而個別使用之參數的表。
如上所述,在圖9所示的例子中,基本電路310包含將輸入資料與「來自第一參數表304及第二參數表305的參數值」相乘,並將相乘值相加的乘積累加電路301。又,在圖9中,係例示儲存參數值的第一參數表304及第二參數表305。然而,實際上,第一參數表304及第二參數表305係與第一實施態樣的參數表302相同,並非儲存於儲存部(儲存電路),而係由組合電路加以實現。
圖9所示的運算器203包含控制部400。在第一參數表304及第二參數表305中的參數值係和第一實施態樣同樣地作為與指定位址相對應之輸出資料而實現的情況下,控制部400係在所期望的時間點,將與輸出資料對應的指定位址之資料供給至第一參數表304。經過了第一參數表304的第二參數表305,係將與指定位址相對應的輸出資料亦即參數值,輸出至乘積累加電路301。又,所期望的時間點,係乘積累加電路301使用欲從第一參數表304及第二參數表305輸出之參數值,而執行相乘處理的時點。
接著,說明圖9所例示的運算器之設計方法。
圖10係顯示設計CNN各層中的第一參數表及第二參數表之電路構成、以及運算器之電路構成的資訊處理電路設計裝置之一例的方塊圖。在圖10所示的例子中,資訊處理電路設計裝置510包含:參數表最佳化部511、參數表產生部512、平行度決定部513、運算器產生部514、及參數表分割部515。又,除了在資訊處理電路設計裝置510存在參數表分割部515以外,係與第一實施態樣的資訊處理電路設計裝置500同樣的構成。
平行度決定部513係輸出網路構造(具體而言為表示網路構造的資料)。運算器產生部514係輸出每層的運算器之電路構成。參數表最佳化部511係輸入在學習階段學習到的複數參數集(各層中的權重)、及平行度決定部513所決定的平行度。具體而言,複數參數集係用於各用途的類神經網路之參數集。
在以下說明中,係針對輸入兩種類型的參數集(以下,記載為參數集A、參數集B。)之情況進行說明。在上述的例子中,參數集A係用於臉部檢測用的參數集,參數集B係用於車輛檢測用的參數集。然而,參數集的種類並不限定於兩種類型,亦可為三種類型以上。
平行度決定部513係決定每層的平行度。又,平行度決定部513決定每層之平行度的方法係與第一實施態樣相同。又,參數表最佳化部511係基於輸入的每層之參數、及平行度決定部513所決定好的每層之平行度,而針對各參數集將參數表最佳化。與第一實施態樣相同,參數表的個數係由平行度決定,參數表最佳化部511係針對各參數集而將各參數表中的各參數最佳化。又,最佳化的方法係之後敘述。
參數表分割部515係將最佳化後的各參數集之參數表,分割成在各參數集共通的共通部、及共通部以外的個別部。具體而言,參數表分割部515係製作分割成「計算在各參數集共通之邏輯運算的組合電路」(亦即,共通部)、及「除了參數表的輸入之外,亦輸入該共通部之輸出而計算個別之邏輯運算的組合電路」(亦即,個別部)的電路,作為輸出參數值的組合電路。又,參數表分割部515亦可製作分割成「實現在各參數集共通之參數表(亦即,共通部)的組合電路」、及「實現除了共通部之外的各參數集中之參數表(亦即,個別部)的組合電路」,作為輸出參數值的組合電路。
具體而言,參數表分割部515係製作表示各參數集之參數表的邏輯式。又,參數表分割部515係在製作好的各參數集之邏輯式中,提取共通的邏輯式作為共通部,並將殘留之邏輯式(亦即,並非共通的邏輯式)作為各參數集的個別部。實現此共通部的組合電路係與上述第一參數輸出電路對應,實現個別部的組合電路係與上述第二參數輸出電路對應。亦即,參數表分割部515係如此實現共通部及個別部。
可作為共通部而產生的電路面積和作為個別部而產生的電路面積相比越大,則總電路面積越小。亦即,共通部所佔的電路面積相對於「個別部所佔的電路面積與共通部所佔的電路面積」之和的比例越大,可謂面積效率越良好(換言之,個別部所佔的電路面積之比例越小,面積效率越良好)。共通部及個別部的電路面積,例如,可基於各組合電路中的邏輯電路之數量,而分別預估。
參數表產生部512係將用於實現第一參數表304及第二參數表305(亦即,共通部及個別部)的電路構成,作為參數表的電路構成而加以輸出。又,如上所述,第一參數表304及第二參數表305並非由儲存電路實現,而係由組合電路加以實現。
運算器產生部514係輸入平行度決定部513所決定好的每層之平行度。運算器產生部514係在每層產生將平行度所示之數量的基本電路310並列的電路構成。又,運算器產生部514係將產生的每層之電路構成,作為運算器電路的構成而加以輸出。
圖11係顯示分割參數表之處理之一例的說明圖。在圖11所示的例子中,係以參數A電路3021表示「實現將參數集A最佳化後的參數表之電路」,以參數B電路3022表示「實現將參數集B最佳化後的參數表之電路」。
參數表分割部515係在參數A電路3021及參數B電路3022中,分別提取A電路(A-1)及B電路(B-1)作為共通部。其結果,A電路(A-2)及B電路(B-2)係成為各參數集的個別部。又,參數表分割部515係將A電路(A-1)及B電路(B-1)作為第一參數表304(共通部),將A電路(A-2)或是B電路(B-2)作為第二參數表305(個別部)。
接著,參照圖12的流程圖
Figure 110114833-A0305-02-0028-1
,說明第二實施態樣之資訊處理電路設計裝置的動作。圖12係顯示第二實施態樣之資訊處理電路設計裝置510之動作的流程圖。
參數表最佳化部511係輸入在學習階段所學習到的臉部檢測用或車輛檢測用等複數種類型的參數集(複數參數值),平行度決定部513係輸入預先決定之表示網路構造的資料(步驟S21)。
平行度決定部503係決定每層的平行度(步驟S22)。平行度的決定方法係與第一實施態樣所使用的方法相同。
參數表最佳化部511係根據決定好的平行度,而在每層產生參數表(步驟S23)。再者,參數表最佳化部511係將產生的參數表最佳化(步驟S24),並將最佳化後的參數集分別分割成兩個(亦即,共通部與個別部)(步驟S25)。
此處,詳細說明將參數表最佳化之處理。圖13係顯示將參數表最佳化之處理(參數值變更處理)之一例的流程圖。
在參數值變更處理中,如上所述,參數表分割部515係將各參數集的參數表各分割成共通部與個別部(步驟S251)。惟在未具有共通部的情況下,參數表分割部515不進行分割。再者,參數表最佳化部511係分別測量使用了複數種類型之參數集(例如,參數集A及參數集B)的CNN(推論器)之認知精度(步驟S252)。又,參數表最佳化部511係判斷使用了各參數集的CNN之認知精度是否在基準值(以下,記載為精度基準值)以上(步驟S253)。
例如,參數集為兩種類型(參數集A及參數集B)的情況,參數表最佳化部511係判斷使用了參數集A的CNN之認知精度是否在第一基準值以上,且使用了參數集B的CNN之認知精度是否在第二基準值以上。
各認知精度在基準值(精度基準值)以上的情況(步驟S253中為是的情況),係轉移至步驟S254。第一基準值及第二基準值係預先設定好的閾值。另一方面,在各認知精度未在基準值(精度基準值)以上的情況(步驟S253中為否的情況),係轉移至步驟S255。
在步驟S254中,參數表最佳化部511係預估共通部所佔之電路面積。又,共通部的面積在基準值(以下,記載為第三基準值或是面積基準值)以上的情況(步驟S254中為是的情況),處理便結束。第三基準值係預先設定好的閾值。另一方面,共通部的面積並未在基準值(面積基準值)以上的情況(步驟S254中為否的情況),係轉移至步驟S255。
在步驟S255中,參數表最佳化部511係變更參數表中的參數值(具體而言,係第一參數值及第二參數值中的至少一者)。參數表最佳化部511例如在共通部所佔的電路面積未滿第三基準值未滿的情況下,係往假定電路面積會提高的方向,變更參數表的參數值。在假定電路面積會提高之方向不明的情況下,參數表最佳化部511亦能以嘗試法(cut and try)變更參數值。
以下,參數表最佳化部511係重複進行步驟S252以後的處理。亦即,參數表最佳化部511係重複變更第一參數值及第二參數值中至少一者。又,在步驟S255中將參數值變更後的結果,認知精度仍未達到基準值的情況下,參數表最佳化部511亦可將在步驟S255變更過的值,變回到變更前原本的值。又,在即使數次變更參數值,而認知精度及電路面積仍未達到基準值的情況下,參數表最佳化部511亦可在參數值的變更次數達到次數限制時,結束參數值變更處理。
圖14係顯示將參數值變更前之真值表之一例的說明圖。在圖14中,係顯示了參數變更前的電路A(參數A電路3021)之真值表、與參數變更前的電路B(參數B電路3022)之真值表之一例。
在電路A的真值表401中,各指定位址A、B、C為組合電路的輸入,參數Z1為組合電路的輸出。亦即,可將Z1視為對於指定位址A、B、C的輸出資料。
同樣地,在電路B的真值表402中,各指定位址A、B、C為組合電路的輸入,參數Z2為組合電路的輸出。又,可將Z2視為對於指定位址A、B、C的輸出資料。
在真值表401中,若將輸出的參數(Z1)以邏輯式表示,則為A&(NOT B)&C|A&B&C。又,在真值表402中,若將輸出的參數(Z2)以邏輯式表示,則為A&(NOT B)&C|(NOT A)&B&(NOT C)。此情況下,A&(NOT B)&C係在各參數表中共通。從而,若將A&(NOT B)&C設為共通部(D),則變換後的式子為D=A&(NOT B)&C,Z1=D|A&B&C,Z2=D|(NOT A)&B&(NOT C)。
另一方面,圖15係顯示將圖14所例示之參數值變更後的真值表之一例的說明圖。在圖15中,係顯示了參數變更後之電路A(參數A電路3021)的真值表、及參數變更後之電路B(參數B電路3022)的真值表之一例。具體而言,在真值表412中,係將以底線表示的最終列之參數值(Z2)從0變更成1。
在真值表411中,若將輸出的參數(Z1)以邏輯式表示,則為A&(NOT B)&C|A&B&C。又,在真值表412中,若將輸出的參數(Z2)以邏輯式表示,則為A&(NOT B)&C|(NOT A)&B&(NOT C)|A&B&C。此情況下,A&(NOT B)&C|A&B&C係在各參數表中共通。從而,若將A&(NOT B)&C|A&B&C設為共通部(D),則變換後的式子為D=A&(NOT B)&C|A&B&C,Z1=D,Z2=D|(NOT A)&B&(NOT C)。
此處,將變更前(圖14)與變更後(圖15)的第一參數表304及第二參數表305之電路面積進行比較。共通部(D)而言,和變更前相比,變更後的共通部(D)其實現A&B&C之電路的部分變得較大。另一方面,個別部(Z1)而言,和變更前相比,變更後的個別部(Z1)其實現A&B&C之電路的部分變得較小。亦即,變更後和變更前相比,共通部的面積比例較大,個別部的面積比例較小。從而,可謂變更後面積效率較為良好。
回到圖12,運算器產生部514係產生並輸出每層之運算器的電路構成(步驟S26、S29)。亦即,運算器產生部514係輸出與平行度決定部513所決定好的每層之平行度相對應的運算器之電路構成。又,在本實施態樣中,由於各層的基本電路310係預先決定,因此運算器產生部514係產生與平行度決定部513所決定好之平行度相對應之數量的基本電路310(具體而言,為層所專用的乘積累加電路301)。
參數表產生部512係產生並輸出第一參數表304及第二參數表305的電路構成(步驟S27、S28、S29)。亦即,參數表產生部512係產生並輸出用於輸出參數表最佳化部511所最佳化,且參數表分割部515所分割之參數值的電路構成。用於輸出參數值的電路構成,係第一參數表電路及第二參數表電路的構成。
又,在圖12的流程圖中,步驟S24~S28的處理係依序執行,但步驟S25、S27、S28的處理與步驟S26的處理可並行執行。
如上所述,第一參數表電路及第二參數表電路係由組合電路所產生。第一參數表電路的製造方法係以製造後無法變更電路構成的方式,例如以基於單元的方式製造。又,第二參數表電路的製造方法係以製造後可變更電路構成的方式,例如以閘陣列的方式或FPGA的方式等製造。
圖16係顯示各製造方法中的製造後之電路的特徵的說明圖。以基於單元的方式製造之電路而言,製造後的電路變更為「不可」,但可使電路面積較小。另一方面,以FPGA的方式製造之電路而言,製造後的電路變更為「可能」,但電路面積較大。又,以閘陣列的方式製造之電路而言,可謂在某程度上可變更,但電路面積大於基於單元之方式。為了使製造後的電路面積之規模較小,期望電路係以基於單元的方式製造。然而,在製造後欲變更電路時,由於在以基於單元的方式中較為困難,因此期望電路係以閘陣列的方式或FPGA的方式製造。
另一方面,本實施態樣的資訊處理電路中,作為由組合電路所構成之參數值輸出電路,係包含以無法變更電路構成的方式(例如,基於單元的方式)製造的第一參數值輸出電路、及以可變更電路構成的方式(例如,FPGA的方式、閘陣列的方式)製造的第二參數值輸出電路。
具體而言,第一參數值輸出電路係基於第一參數表304而製造以輸出第一參數值,該第一參數值係將用於CNN的複數種類型之參數集中,在任一種類型之參數均使用的邏輯運算加以計算。又,第二參數值輸出電路係以在製造後可變更電路構成的方式製造,並在製造後基於第二參數表305進行調整以輸出第二參數值,該第二參數值係除了參數表的輸入以外,亦將第一參數值輸出電路的輸出加以輸入而計算個別的邏輯運算。如此,將可共通化的參數固定化,並可變更在各用途中個別使用的參數,藉此可保持面積效率並更新權重(參數)。
如以上所說明,作為本實施態樣之資訊處理電路的推論器包含:乘積累加電路,使用輸入資料及參數值進行乘積累加運算;及參數值輸出電路,輸出參數值。又,參數值輸出電路係由組合電路所構成,包含:第一參數值輸出電路,以無法變更電路構成的方式製造;及第二參數值輸出電路,以可變更電路構成的方式製造。其結果,本實施態樣的推論器,可保持面積效率,並更新權重(參數)。具體而言,在本實施態樣的推論器中,可在製造後,以除了參數表之輸入以外亦將第一參數值輸出電路的輸出加以輸入,而使第二參數值輸出電路輸出個別之邏輯運算的計算結果之方式進行調整。
圖4及圖10所示之資訊處理電路設計裝置500、510中的各構成元件,可由一個硬體或是一個軟體所構成。又,各構成元件亦可由複數硬體或是複數軟體所構成。又,亦能以硬體構成各構成元件的一部分,並軟體構成其他部分。
又,藉由第二實施態樣的參數表最佳化部511、參數表分割部515及參數表產生部512,而製作輸出參數值(更具體而言,係第一參數值及第二參數值)的電路。由此來看,可將參數表最佳化部511、參數表分割部515及參數表產生部512統稱為參數值輸出電路製作手段(更詳而言之,為第一參數值輸出電路製作手段及第二參數值輸出電路製作手段)。
圖17係顯示具有CPU的電腦之一例的方塊圖。資訊處理電路設計裝置500、510中的各構成元件,在由具有CPU(Central Processing Unit:中央處理單元)等處理器或記憶體等之電腦所實現的情況下,例如,可由圖17所示之具有CPU的電腦實現。圖17中顯示與CPU1000連接的儲存裝置1001及記憶體1002。CPU1000係藉由依照儲存於儲存裝置1001的程式而執行處理(資訊處理電路設計處理),而實現圖4及圖10所示之資訊處理電路設計裝置500、510中的各功能。亦即,電腦係實現圖4及圖10所示之資訊處理電路設計裝置500、510中的參數表最佳化部501、511、參數表產生部502、512、平行度決定部503、513、運算器產生部504、514、及參數表分割部515的功能。
儲存裝置1001例如為非暫時性電腦可讀媒體(non-transitory computer readable medium)。非暫時電腦可讀媒體係各式各樣類型的具有實體之記錄媒體 (tangible storage medium)中的任一者。作為非暫時電腦可讀媒體之具體例,具有:磁氣記錄媒體(例如,硬碟)、光磁氣記錄媒體(例如,磁光碟)、CD-ROM(Compact Disc-Read Only Memory)、CD-R(Compact Disc-Recordable)、CD-R/W(Compact Disc-ReWritable)、半導體記憶體(例如,遮罩ROM、PROM(Programmable ROM)、EPROM(Erasable PROM)、快取ROM)。
又,程式亦可儲存於各式各樣類型的暫時性電腦可讀媒體(transitory computer readable medium)。例如,經由有線通訊路線或是無線通訊路線,亦即經由電訊號、光訊號或是電磁波而將程式供給至暫時性電腦可讀媒體。
記憶體1002例如係由RAM(Random Access Memory:隨機存取記憶體)實現,並且係在CPU1000執行處理時,暫時地儲存資料的儲存手段。亦可假定為將儲存裝置1001或是暫時性電腦可讀媒體所保存的程式傳送至記憶體1002,以使CPU1000基於記憶體1002內的程式而執行處理的形態。
圖18係顯示資訊處理電路的主要部分的方塊圖。資訊處理電路10係執行深度學習中之層的運算,包含:乘積累加電路11(在實施態樣中,係以乘積累加電路301實現),使用輸入資料及參數值而進行乘積累加運算;及參數值輸出電路12(在實施態樣中,係以第一參數表304及第二參數表305實現),輸出參數值;參數值輸出電路12係由組合電路所構成,包含:第一參數值輸出電路13(在實施態樣中係以第一參數表304實現),以無法變更電路構成的方式製造;及第二參數值 輸出電路14(在實施態樣中係以第二參數表305實現),以可變更電路構成的方式製造。
圖19係顯示資訊處理電路設計裝置之主要部分的方塊圖。資訊處理電路設計裝置20包含:輸入手段21(在實施態樣中係作為參數表最佳化部511之一部分及平行度決定部513之一部分而實現),將包含學習完成之複數參數值的複數種類型之參數集、與可特定出網路構造的資料加以輸入;運算器產生手段22(在實施態樣係由運算器產生部514加以實現),製作使用輸入資料及參數值而進行乘積累加運算的電路,且係專用於網路構造中之層的乘積累加電路;及參數值輸出電路製作手段23(在實施態樣中係由參數表最佳化部511、參數表分割部515、及參數表產生部512加以實現),製作輸出複數種類型的參數集中之參數值的組合電路;參數值輸出電路製作手段23包含:第一參數值輸出電路製作手段24(在實施態樣中係由參數表最佳化部511、參數表分割部515及參數表產生部512加以實現),製作以無法變更電路構成的方式實現的第一參數值輸出電路;及第二參數值輸出電路製作手段25(在實施態樣中係由參數表最佳化部511、參數表分割部515及參數表產生部512加以實現),製作以可變更電路構成的方式實現的第二參數值輸出電路。
上述實施態樣的一部分或是全部,亦可如以下附記般記載,但不限定於以下內容。
(附記1)一種資訊處理電路,係執行深度學習中之層的運算,其包含: 乘積累加電路,使用輸入資料及參數值進行乘積累加運算;及參數值輸出電路,輸出該參數值;該參數值輸出電路係由組合電路所構成,其包含:第一參數值輸出電路,以無法變更電路構成的方式製造;及第二參數值輸出電路,以可變更電路構成的方式製造。
(附記2)如附記1的資訊處理電路,其中,該第一參數值輸出電路,係輸出在進行深度學習之各用途中所共通使用的參數值;該第二參數值輸出電路,係輸出針對各該用途而個別使用的參數值。
(附記3)如附記1或是附記2的資訊處理電路,更包含:與平行處理數量相對應之數量的基本電路;複數該基本電路中的一個以上,係包含:該乘積累加電路、該第一參數值輸出電路及該第二參數值輸出電路。
(附記4)一種資訊處理電路的設計方法,係產生執行深度學習中之層的運算的資訊處理電路,其包含以下步驟:將包含學習完成之複數參數值的複數種類型之參數集、及可特定出網路構造的資料加以輸入;製作使用輸入資料及參數值進行乘積累加運算的電路,且係專用於該網路構造中之層的乘積累加電路; 製作以無法變更電路構成的方式實現之第一參數值輸出電路;及製作以可變更電路構成的方式實現之第二參數值輸出電路;該第一參數值輸出電路及該第二參數值輸出電路,係作為輸出該複數種類型之參數集中的參數值的組合電路。
(附記5)如附記4的資訊處理電路之設計方法,更包含以下步驟:製作將用於類神經網路的複數種類型的參數集中,在任一種類型的參數集中均使用的第一邏輯運算加以計算的該第一參數值輸出電路;製作除了參數表的輸入之外,亦輸入該第一參數值輸出電路的輸出而計算個別的邏輯運算的該第二參數值輸出電路。
(附記6)如附記4或附記5的資訊處理電路之設計方法,其中,測量使用了複數種類型的參數集的類神經網路中的資訊處理電路之各精度;預估該第一參數值輸出電路的電路面積、及該第二參數值輸出電路的電路面積;直到滿足「分別使用了該複數種類型的參數集的各類神經網路之精度在預先設定好的精度基準值以上」,並且「該第一參數值輸出電路的電路面積之比例在預先設定好的面積基準值以上」這樣的條件為止,重複變更該第一參數值及該第二參數值中的至少一者。
(附記7)一種電腦可讀取記錄媒體,儲存有資訊處理電路的設計程式,其用於產生執行深度學習中的層之運算的資訊處理電路,該資訊處理電路的設計程式係使處理器執行以下處理:將包含學習完成之複數參數值的複數種類型的參數集、及可特定出網路構造的資料加以輸入之處理;製作使用輸入資料及參數值而進行乘積累加運算的電路,且係專用於該網路構造中之層的乘積累加電路之處理;製作以無法變更電路構成的方式實現之第一參數值輸出電路之處理;及製作以可變更電路構成的方式實現之第二參數值輸出電路之處理;該第一參數值輸出電路及該第二參數值輸出電路,係作為輸出該複數種類型之參數集中之參數值的組合電路。
(附記8)如附記7的記錄媒體,其中,該資訊處理電路的設計程式係使處理器執行以下處理:製作該第一參數值輸出電路之處理,第一參數值輸出電路係將用於類神經網路的複數種類型的參數集中,在任一種類型的參數集中均使用的第一邏輯運算加以計算;及製作該第二參數值輸出電路之處理,該第二參數值輸出電路係除了參數表的輸入以外,亦輸入該第一參數值輸出電路之輸出而計算個別之邏輯運算。
(附記9)一種資訊處理電路設計裝置,係產生執行深度學習中的層之運算的資訊處理電路,其包含: 輸入手段,將包含學習完成之複數參數值的複數種類型的參數集、及可特定出網路構造的資料加以輸入;運算器產生手段,製作使用輸入資料及參數值而進行乘積累加運算的電路,且係專用於該網路構造之層的乘積累加電路;及參數值輸出電路製作手段,製作將該複數種類型之參數集中的參數值加以輸出的組合電路;該參數值輸出電路製作手段包含:第一參數值輸出電路製作手段,製作以無法變更電路構成之方式實現的第一參數值輸出電路;及第二參數值輸出電路製作手段,製作以可變更電路構成之方式實現的第二參數值輸出電路。
(附記10)如附記9的資訊處理電路設計裝置,其中,該第一參數值輸出電路製作手段,係製作將用於類神經網路的複數種類型的參數集中,在任一種類型的參數集中均使用的第一邏輯運算加以計算的該第一參數值輸出電路;該第二參數值輸出電路製作手段,係製作除了參數表的輸入以外,亦輸入該第一參數值輸出電路的輸出而計算個別之邏輯運算的該第二參數值輸出電路。
(附記11)一種資訊處理電路之設計程式,係用於產生執行深度學習中的層之運算的資訊處理電路,並用於使電腦執行以下處理: 將包含學習完成之複數參數值的複數種類型的參數集、及可特定出網路構造的資料加以輸入之處理;製作使用輸入資料及參數值而進行乘積累加運算的電路,且係專用於該網路構造中之層的乘積累加電路之處理;製作以無法變更電路構成之方式實現的第一參數值輸出電路之處理;及製作以可變更電路構成之方式實現的第二參數值輸出電路之處理;該第一參數值輸出電路及該第二參數值輸出電路,係作為輸出該複數種類型之參數集中之參數值的組合電路。
(附記12)如附記11的資訊處理電路之設計程式,其中,使電腦執行以下處理:製作該第一參數值輸出電路之處理,該第一參數值輸出電路係將用於類神經網路的複數種類型的參數集中,在任一種類型的參數集中均使用的第一邏輯運算加以計算;及製作該第二參數值輸出電路之處理,該第二參數值輸出電路係除了參數表的輸入以外,亦輸入該第一參數值輸出電路的輸出而計算個別之邏輯運算。
以上,雖參照實施態樣而說明本案發明,但本案發明並不限定於上述實施態樣。本案發明之構成或細節在本案發明的範圍內,可進行該技術領域中具通常知識者所能理解的各式各樣之變更。
10:資訊處理電路
11:乘積累加電路
12:參數值輸出電路
13:第一參數值輸出電路
14:第二參數值輸出電路

Claims (8)

  1. 一種資訊處理電路,係執行深度學習中的層之運算,其包含: 乘積累加電路,使用輸入資料及參數值而進行乘積累加運算;及 參數值輸出電路,用於輸出該參數值; 該參數值輸出電路係由組合電路所構成,其包含: 第一參數值輸出電路,以無法變更電路構成之方式製造;及 第二參數值輸出電路,以可變更電路構成之方式製造。
  2. 如請求項1所述之資訊處理電路,其中, 該第一參數值輸出電路,係輸出在進行深度學習的各用途中所共通使用的參數值; 該第二參數值輸出電路,係輸出針對各該用途而個別使用的參數值。
  3. 如請求項1所述之資訊處理電路,更包含: 與平行處理數量相對應之數量的基本電路; 複數該基本電路中的一個以上,係包含該乘積累加電路、該第一參數值輸出電路及該第二參數值輸出電路。
  4. 一種資訊處理電路之設計方法,係產生執行深度學習中的層之運算的資訊處理電路,其包含以下步驟: 將包含學習完成之複數參數值的複數種類型之參數集、及可特定出網路構造的資料加以輸入; 製作使用輸入資料及參數值而進行乘積累加運算的電路,且係專用於該網路構造之層的乘積累加電路; 製作以無法變更電路構成之方式實現的第一參數值輸出電路;及 製作以可變更電路構成之方式實現的第二參數值輸出電路; 該第一參數值輸出電路及該第二參數值輸出電路,係作為輸出該複數種類型之參數集當中之參數值的組合電路。
  5. 如請求項4所述之資訊處理電路之設計方法,更包含以下步驟: 製作將用於類神經網路的複數種類型的參數集之中,在任一種類型的參數集中均使用的第一參數值加以輸出的該第一參數值輸出電路;及 製作將該參數集所包含之該第一參數值以外的參數值亦即第二參數值加以輸出的該第二參數值輸出電路。
  6. 如請求項4所述之資訊處理電路之設計方法,更包含以下步驟: 測量使用了複數種類型的參數集的類神經網路中之資訊處理電路的各精度; 預估該第一參數值輸出電路的電路面積、及該第二參數值輸出電路的電路面積;及 直到滿足以下條件為止,重複變更該第一參數值及該第二參數值中之至少一者:分別使用了該複數種類型之參數集的各類神經網路之精度在預先設定好的精度基準值以上,並且該第一參數值輸出電路的電路面積之比例在預先設定好的面積基準值以上。
  7. 一種電腦可讀取記錄媒體,係儲存有資訊處理電路之設計程式,該資訊處理電路之設計程式係用於產生執行深度學習中的層之運算的資訊處理電路; 該資訊處理電路之設計程式係使處理器執行以下處理: 將包含學習完成之複數參數值的複數種類型之參數集、及可特定出網路構造的資料加以輸入之處理; 製作使用輸入資料及參數值而進行乘積累加運算的電路,且係專用於該網路構造之層的乘積累加電路之處理; 製作以無法變更電路構成之方式實現的第一參數值輸出電路之處理;及 製作以可變更電路構成之方式實現的第二參數值輸出電路之處理; 該第一參數值輸出電路及該第二參數值輸出電路,係作為輸出該複數種類型之參數集當中之參數值的組合電路。
  8. 如請求項7所述之記錄媒體,其中, 該資訊處理電路之設計程式係使處理器執行以下處理: 製作將用於類神經網路之複數種類型的參數集之中,在任一種類型的參數集中均使用的第一參數值加以輸出的該第一參數值輸出電路之處理;及 製作將該參數集所包含之該第一參數值以外的參數值,亦即第二參數值加以輸出的該第二參數值輸出電路之處理。
TW110114833A 2020-05-26 2021-04-26 資訊處理電路及資訊處理電路之設計方法 TWI841838B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
PCT/JP2020/020701 WO2021240633A1 (ja) 2020-05-26 2020-05-26 情報処理回路および情報処理回路の設計方法
WOPCT/JP2020/020701 2020-05-26

Publications (2)

Publication Number Publication Date
TW202147162A TW202147162A (zh) 2021-12-16
TWI841838B true TWI841838B (zh) 2024-05-11

Family

ID=

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190318232A1 (en) 2013-10-11 2019-10-17 Hrl Laboratories, Llc Scalable Integrated Circuit with Synaptic Electronics and CMOS integrated Memristors

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190318232A1 (en) 2013-10-11 2019-10-17 Hrl Laboratories, Llc Scalable Integrated Circuit with Synaptic Electronics and CMOS integrated Memristors

Similar Documents

Publication Publication Date Title
Liang et al. Evaluating fast algorithms for convolutional neural networks on FPGAs
CN111667051B (zh) 适用边缘设备的神经网络加速器及神经网络加速计算方法
Geng et al. LP-BNN: Ultra-low-latency BNN inference with layer parallelism
Nazemi et al. Energy-efficient, low-latency realization of neural networks through boolean logic minimization
JP7262819B2 (ja) クラスタリング装置及びクラスタリング方法
Chen et al. DevelSet: Deep neural level set for instant mask optimization
CN111401510A (zh) 一种数据处理方法、装置、计算机设备及存储介质
US10642578B2 (en) Approximating functions
KR102321049B1 (ko) 상이한 희소 수준을 갖는 신경망 다중 프루닝 장치 및 방법
CN111401538A (zh) 一种数据处理方法、装置、计算机设备及存储介质
Fan et al. Reconfigurable acceleration of 3D-CNNs for human action recognition with block floating-point representation
US20190347072A1 (en) Block floating point computations using shared exponents
CN111401511A (zh) 一种数据处理方法、装置、计算机设备及存储介质
Xu et al. Reconfigurable and low-complexity accelerator for convolutional and generative networks over finite fields
CN116974868A (zh) 芯片功耗估计装置、方法、电子设备及存储介质
Lu et al. Doomed run prediction in physical design by exploiting sequential flow and graph learning
Yan et al. FPGAN: an FPGA accelerator for graph attention networks with software and hardware co-optimization
Vo et al. A deep learning accelerator based on a streaming architecture for binary neural networks
Hernández-Araya et al. Auger: A tool for generating approximate arithmetic circuits
CN111401537A (zh) 一种数据处理方法、装置、计算机设备及存储介质
TWI841838B (zh) 資訊處理電路及資訊處理電路之設計方法
Fan et al. High-performance acceleration of 2-D and 3-D CNNs on FPGAs using static block floating point
JP7456501B2 (ja) 情報処理回路および情報処理回路の設計方法
TWI830940B (zh) 資訊處理電路以及資訊處理電路的設計方法
Wang et al. Cnn-inspired analytical global placement for large-scale heterogeneous fpgas