TW201907319A - 適用於人工神經網路之矩陣及向量相乘的方法 - Google Patents

適用於人工神經網路之矩陣及向量相乘的方法 Download PDF

Info

Publication number
TW201907319A
TW201907319A TW107121443A TW107121443A TW201907319A TW 201907319 A TW201907319 A TW 201907319A TW 107121443 A TW107121443 A TW 107121443A TW 107121443 A TW107121443 A TW 107121443A TW 201907319 A TW201907319 A TW 201907319A
Authority
TW
Taiwan
Prior art keywords
matrix
index
elements
column
values
Prior art date
Application number
TW107121443A
Other languages
English (en)
Other versions
TWI680409B (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
Application filed by 英屬開曼群島商意騰科技股份有限公司 filed Critical 英屬開曼群島商意騰科技股份有限公司
Publication of TW201907319A publication Critical patent/TW201907319A/zh
Application granted granted Critical
Publication of TWI680409B publication Critical patent/TWI680409B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/044Recurrent networks, e.g. Hopfield networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3082Vector coding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/01Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/60General implementation details not specific to a particular type of compression
    • H03M7/6017Methods or arrangements to increase the throughput
    • H03M7/6023Parallelization

Landscapes

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

Abstract

本發明揭露一種矩陣及向量相乘的方法,適用於一人工神經網路系統,包含:壓縮一權值矩陣的多個權值及一輸入向量的多個索引成一壓縮主串流;分別儲存M組突觸值於M個記憶體裝置;以及,根據該M組突觸值以及該壓縮主串流,進行讀取以及乘法累加運算,以平行地得到M個輸出向量。其中該壓縮步驟包含:將該權值矩陣分隔為多個NxL的區塊;將一目標區塊及該輸入向量的對應索引轉換成一操作區塊及一索引矩陣,以致於各輸出向量的各元素相關於該操作區塊及該索引矩陣之一對應列;移除該操作區塊中的零值元素;以逐列方式,依序移動該操作區塊中的非零元素至其右側及左側之其一;以及,分別移動該索引矩陣的對應元素。

Description

適用於人工神經網路之矩陣及向量相乘的方法
本發明係有關於資料處理,尤有關於一種矩陣及向量相乘的方法,係使用於人工神經網路中具有多個神經元(neuron)且各該神經元具有多個輸入的任一神經元層。
人工神經網路(artificial neural network)是基於一個大量連結神經元的集合。當處理及傳播輸入訊號時,對於饋入至神經元突觸(synapse)的各輸入值(以下稱之為”突觸值”),係利用突觸的各權值來分別調整。此過程的作用是讓部分突觸值通過該突觸,而該部分突觸值的大小是與該權值成比例。依此方式,該權值調整該突觸的連結強度,之後,再與其他同樣方式處理的突觸值加總而產生結果。
在人工神經網路及深度學習(deep learning)應用中,矩陣及向量之乘法(MxV)是一個基本構建基塊。例如,於一般人工神經網路中,具有多個神經元且各該神經元具有多個輸入的一神經元層執行以下計算:b=f(Wa+v),其中a是輸入向量、b是輸出向量、v是偏量、W是權值矩陣、f是轉換函數;因此,該神經元層是以MxV來實施;於卷積 (convolutional)神經網路中,完全聯結(fully connected,FC)層是以MxV來實施,以及一大部分的連接是由FC層所佔據;於遞歸(recurrent)神經網路中,各時間步驟(time step)的新輸入及隱藏態(hidden state)執行MxV運算,而產生一個新隱藏態及輸出。一般而言,該MxV運算是一個複雜的程序,會耗費大量計算資源。尤其,人工神經網路中的權值矩陣通常是大尺寸而且稀疏(sparse)。例如,一典型的FC層,如VGG-16模型中的FC7,輸入向量的大小有4K長,而權值矩陣大小為4Kx4K(16M個權值)。當一個矩陣包含少量非零元素時,被稱為稀疏。於傳統人工神經網路中,需耗費時間對該稀疏權值矩陣的大量的零值做運算及傳送該些大量的零值,甚至需要大量儲存空間來儲存該稀疏的權值矩陣,故增加儲存成本及降低MxV運算的效率。
為了增加MxV運算的效率,以助於一般人工神經網路中的資料處理,因此提出本發明。
有鑒於上述問題,本發明的目的之一是提供一種矩陣及向量相乘的方法,可以同時和多組突觸值一起運作,而且極大化硬體(MAC)使用率。
根據本發明之一實施例,提供一種矩陣及向量相乘的方法,,適用於一人工神經網路系統,包含:壓縮一權值矩陣的多個權值及一輸入向量的多個索引成一壓縮 主串流;分別儲存M組突觸值於M個記憶體裝置中;以及,根據該M組突觸值以及該壓縮主串流,進行讀取以及乘法累加運算,以平行地得到M個輸出向量。其中該壓縮步驟包含:將該權值矩陣分隔為多個NxL的區塊;將一目標區塊的元素及該輸入向量的對應索引轉換成一操作區塊及一索引矩陣,以致於各輸出向量的各元素相關於該操作區塊及該索引矩陣之一對應列;移除該操作區塊中的零值元素;以逐列方式,依序移動該操作區塊中的非零元素至其右側及左側之其一;分別移動該索引矩陣的對應元素;根據該移動後的操作區塊以及該移動後的索引矩陣,形成一壓縮次串流;以及,重複該轉換步驟、該移除步驟、該依序移動步驟、該分別移動步驟以及該形成步驟,直到處理完所有區塊以形成該壓縮主串流;其中,代表該索引矩陣的元素的位元長度等於log2L,以及,N及L皆為偶數。
茲配合下列圖示、實施例之詳細說明及申請專利範圍,將上述及本發明之其他目的與優點詳述於後。
10A、10B‧‧‧擷取及計算電路
15a‧‧‧乘法器
15b‧‧‧加法器
15c‧‧‧累加器
20‧‧‧次矩陣/區塊
50‧‧‧索引對
52‧‧‧權值對
100、700‧‧‧計算裝置
110‧‧‧SRAM裝置
111、112、113、114‧‧‧SRAM記憶組
120、120A、120B‧‧‧記憶體控制器
121、122、123、124‧‧‧記憶體控制器單元
125‧‧‧索引控制器
126、127、128、129‧‧‧資料暫存器
130、140‧‧‧資料緩衝器
160‧‧‧儲存裝置
170‧‧‧解壓縮模組
150~157‧‧‧乘法累加器
310‧‧‧操作索引矩陣D’
311、312‧‧‧壓縮矩陣D”
320、520‧‧‧操作區塊Wb’
330‧‧‧移位矩陣X”
521、522‧‧‧壓縮區塊
526‧‧‧資料胞格
527‧‧‧EoB碼
550、552‧‧‧胞格群
560、562‧‧‧壓縮次串流
570‧‧‧胞格列
第1A圖係根據本發明一實施例,顯示用以處理單一突觸資料流的計算裝置的架構示意圖。
第1B圖係根據第1A圖,顯示一個具非複製組態的記憶 體控制器的方塊圖。
第1C圖係根據第1A圖,顯示一個具複製組態的記憶體控制器的方塊圖。
第2圖係顯示1024x1024的權值矩陣、1024x1的輸入向量X以及1024x1的輸出向量Y的例子。
第3A圖顯示一權值次矩陣/區塊Wb(8x8)、一輸入次向量Xb(8x1)以及一輸出次向量Yb(8x1)的例子。
第3B圖係在轉換第3A圖的輸入次向量Xb的元素及索引之後,顯示一8x8純量矩陣X’以及一8x1索引矩陣D的例子。
第3C圖係根據第3B圖的純量矩陣X’以及索引矩陣D,顯示一移位區塊X”、其對應操作索引矩陣D’以及其對應操作區塊Wb’的例子。
第4A圖係根據本發明,顯示由計算裝置100所執行的矩陣及向量相乘的方法流程圖。
第4B-4D圖係顯示第4A圖中步驟S410(壓縮一權值矩陣W的權值及一輸入向量X的索引)的一詳細流程圖。
第5A圖係在一目標區塊的原始元素及向量X的對應索引載入及轉換後,顯示一操作區塊Wb’520和一操作索引矩陣D’310的例子。
第5B圖係根據第5A圖的例子及記憶體控制器120B是在複製組態的情況下,顯示一壓縮區塊Wb”521和一壓縮索引矩陣D”311。
第5C圖係根據第5A圖的例子及記憶體控制器120A是在非複製組態的情況下,顯示一壓縮區塊Wb”522和一壓縮索引矩陣D”312。
第6圖係根據第2圖之該權值矩陣中所有區塊的壓縮次串流的掃描及串接順序示意圖。
第7圖係根據本發明一實施例,顯示用以處理二突觸資料流的計算裝置的架構示意圖。
在通篇說明書及後續的請求項當中所提及的「一」及「該」等單數形式的用語,都同時包含單數及複數的涵義,除非本說明書中另有特別指明。
本發明的特色之一是利用一權值矩陣的稀疏性及一輸入向量X(對應一組突觸值)的完全相對索引特性,將該權值矩陣的元素及該輸入向量X的索引壓縮成一壓縮主串流。本發明的另一特色是允許該壓縮主串流同時與多個突觸資料串流(即多組突觸值)一起運作。本發明的另一特色是藉由N個相同的乘法累加器(multiplier-accumulator,MAC)平行地進行該些MxV運算,其中MAC的數目N等於每個時脈週期(clock cycle)從一靜態隨機存取記憶體(SRAM)裝置讀出的突觸值的數目N。本發明的另一特色是在與該權值矩陣有關的一操作區塊(如圖3C的操作區塊Wb’)中,移除/略過零值元素且移動非零元素至該操作區塊的最左/右側的空 白位置,以極大化MAC硬體利用率。本發明的另一特色是透過(1)移除/略過該操作區塊的零值元素(步驟S416)、(2)移動非零元素至該操作區塊的最左/右側的空白位置(步驟S418)、(3)該輸入向量X的完全相對索引特性、(4)壓縮索引矩陣D”中各索引對具差值1以及(5)壓縮空白胞格(步驟S435),來提高該壓縮主串流的壓縮率以極小化一儲存裝置160的儲存空間,該儲存裝置160係用以儲存該壓縮主串流。
第1A圖係根據本發明一實施例,顯示一計算裝置的架構示意圖。本發明計算裝置100用以執行矩陣及向量之乘法(MxV),係適用於一般人工神經網路系統中具有多個神經元且各神經元具有多個輸入的一神經元層。該計算裝置100包含一擷取及計算電路10A、一資料緩衝器140、一儲存裝置160以及一解壓縮模組170。其中,V代表一輸入向量(如第2圖的輸入向量X),係饋入至該具有多個神經元且各神經元具有多個輸入的神經元層;M代表一個具有多個權值的矩陣(如第2圖的權值矩陣W),該些權值是連接至該神經元層輸出端之連結的權值。一實施例中,該擷取及計算電路10A包含一SRAM裝置110、一記憶體控制器120、一資料緩衝器130以及八個相同的乘法累加器150~157。
在本實施例中,該SRAM裝置110(預存了一組突觸值(對應一輸入向量X))被分割為四個相同的SRAM記憶 組(bank)111~114,而且假設每個時脈週期允許從各SRAM記憶組讀出32位元的資料(即二個突觸值),因此,每個時脈週期該四個SRAM記憶組111~114同時輸出八個突觸值。請注意,如第1A圖所示,為了每個時脈週期可輸出八個突觸值,該組突觸值是以交錯(interleaved)的方式儲存於該四個SRAM記憶組111~114中。對應地,搭配八個相同的乘法累加器150~157及二個資料緩衝器130、140分別具有四個記憶體位置(各儲存二個值),用以儲存八個突觸值及八個權值。請注意,每個時脈週期輸出八個突觸值僅是一個示例,而非本發明之限制,另一實施例中,取決於SRAM裝置或記憶組的設計方式,每個時脈週期可輸出其他數目的突觸值。
根據本發明,該記憶體控制器120被配置為二種組態之一,即複製(duplication)組態與非複製組態,用以根據修正索引對,對SRAM裝置110進行讀取操作,以及對資料緩衝器130進行寫入操作。請參考第1B圖,該記憶體控制器120A包含四個記憶體控制器單元121~124及一索引控制器125。相較於記憶體控制器120A,第1C圖記憶體控制器120B另包含四個資料暫存器126~129以複製突觸值。換言之,該記憶體控制器120A不支援複製突觸值,故稱為”非複製組態”,而該記憶體控制器120B支援複製突觸值,故稱為”複製組態”。各乘法累加器150~157係利用一乘法器15a、一加法器15b及一累加器15c來實施。請注意,在本說 明書及圖式中,具相同或類似功能的電路元件使用相同的參考符號/數字。
如第2圖的例子所示,假設一權值矩陣W的大小為1024x1024,一輸入向量X的大小為1024x1以及一輸出向量Y的大小為1024x1,該權值矩陣W被分割成為一普通格網(grid),包含多個正方形的8x8次矩陣/區塊20。該格網的每一行(column)或每一列(row)包含128(=1024/8)個區塊20,且每次處理一個區塊20。必須先處理完該格網的一水平列的所有區塊之後,才能處理該格網的其他水平列的區塊。各區塊20與該輸入向量X的一區段(segment)及輸出向量Y的一區段有關,例如,位於該格網左上角的區塊20與該輸入向量X的x[0,0]~x[7,0]及輸出向量Y的y[0,0]~y[7,0]有關。以下範例(第3A~3C圖)顯示如何轉換位於該格網左上角的區塊20以及該輸入向量X的對應索引以便進行壓縮。
請注意,上述權值矩陣W的大小以及正方形的8x8次矩陣/區塊20僅是一個示例,而非本發明之限制。另一實施例中,取決於不同的應用,該權值矩陣W及次矩陣/區塊20可採用其他不同的尺寸;另一實施例中,該權值矩陣W被分割為多個NxL個次矩陣/區塊20,其中N及L皆為偶數。為方便清楚描述,以下範例均以1024x1024的權值矩陣W以及正方形的8x8次矩陣/區塊20為例做說明,除非本說明書中另有特別指明。第3A圖顯示一權值次矩陣/區塊Wb(8x8)、一輸入 次向量Xb(8x1)以及一輸出次向量Yb(8x1)的例子。因為次向量Xb僅包含八個元素x[0,0]~x[7,0]且次向量Yb僅包含八個元素y[0,0]~y[7,0],為方便表示,在以下說明書及圖式中,係以x[0]~x[7]表示八個元素x[0,0]~x[7,0],以及以y[0]~y[7]表示八個元素y[0,0]~y[7,0]。如第3A圖所示,區塊Wb中一列的八個元素乘上輸入次向量Xb的八個元素並加總,可得到輸出次向量Yb的一個對應元素,如以下方程式1所示:
為了利用八個乘法累加器150~157平行地進行MxV運算,將次向量Xb的八個元素及索引0~7分別轉換成一個8x8的純量矩陣X’以進行點乘積(dot product)運算以及一個8x8的索引矩陣D以進行壓縮,如第3B圖所示。因此,藉由逐元素地(entry-by-entry)將該區塊Wb的第i列元素及矩陣X’的第i列元素相乘,再加總該八個乘積,可得到元素y[i]。換言之,y[i]是該區塊Wb的第i列元素及矩陣X’的第i列元素的點乘積,其中i=0~7。例如,y[0]=w[0,0]x[0]+w[0,1]x[1]+w[0,2]x[2]+w[0,3]x[3]+w[0,4]x[4]+w[0,5]x[5]+w[0,6]x[6]+w[0,7]x[7]。
假設在一個時脈週期內從該四個SRAM記憶組111~114同時讀出八個突觸值x[0]~x[7]。為充分利用該八個突觸值x[0]~x[7]及八個乘法累加器150~157,本發明重新安排純量矩陣X’的每一行/列的元素以形成一移位矩陣X”,使得移位矩陣X”的每一行/列都包含該八個突觸值 x[0]~x[7],如第3B~3C圖所示。一實施例,在該純量矩陣X’中,以二列元素為單位,係相對於較上面的二列,將較下面的二列元素往左移二個位置以進行循環移位(circular shift)後,再兩兩交換各奇數列上各該四個元素對(entry pair)中的二個元素,以形成一移位矩陣X”330。請注意,矩陣D和X’的元素之間有一對一的位置一致性,且矩陣X’和Wb的元素之間有一對一的位置一致性。因此,由於相對於矩陣X’,矩陣X”的元素位置有改變,Wb的對應元素的位置也隨之改變以形成一操作區塊Wb’320,矩陣D的對應元素的位置也隨之改變以形成一操作索引矩陣D’310。例如,由於位在矩陣X’第7列及第6行的元素x[6]被移動到矩陣X”第7列及第1行,在矩陣Wb的相對應元素w[7,6]就從第7列及第6行移動到矩陣Wb’第7列及第1行,而在矩陣D的相對應元素6就從第7列及第6行移動到矩陣D’第7列及第1行。從第3C圖可觀察到,轉換後,y[i]仍然等於Wb’320的第i列元素及矩陣X”330的第i列元素的點乘積,其中i=0~7。再請注意,矩陣D’310和Wb’320的元素之間也存在一對一的位置一致性。根據本發明,在進行壓縮前,須分別轉換第2圖的一目標區塊20的原始元素(權值)及輸入向量X的相關區段的索引,以符合矩陣Wb’320和D’310的格式。
第4A圖係根據本發明,顯示由計算裝置100所執行的矩陣及向量相乘的方法流程圖。請參考第1A-1C、 2、4A圖,本發明矩陣及向量相乘的方法,係適用於一般人工神經網路系統中具有多個神經元且各神經元具有多個輸入的一神經元層,說明如下。
步驟S410:壓縮一權值矩陣W的權值及一輸入向量X的索引成一壓縮主串流。
第4B-4D圖係顯示第4A圖中步驟S410(壓縮一權值矩陣W及一輸入向量X的索引)的一詳細流程圖。
步驟S412:將一權值矩陣W分割為多個NxL次矩陣/區塊。一實施例中,將1024x1024的權值矩陣W分割為多個8x8次矩陣/區塊20,如第2圖所示。
步驟S414:轉換一目標區塊20的元素及輸入向量X的對應索引以符合操作區塊Wb’320和操作索引矩陣D’310的格式。舉例而言,因為第2圖權值矩陣W中位於左上角的一目標區塊20與該輸入向量X的x[0]~x[7]有關,故轉換該目標區塊20的元素及向量X的對應索引0~7,以符合第3C圖中操作區塊Wb’320和操作索引矩陣D’310的格式。第5A圖係在一目標區塊20的原始元素及向量X的對應索引載入及轉換後,顯示一操作區塊Wb’520和一操作索引矩陣D’310的例子。請參考第5A圖的例子,在一目標區塊20的元素及向量X的對應索引0~7載入及轉換後,對應的操作區塊Wb’520顯示包含有大量的零值元素且非零元素是群聚的。
步驟S416:移除/略過該操作區塊Wb’中的零值 元素。一般人工神經網路系統中,權值矩陣W的非零元素是稀疏且群聚的。由於第5A圖的操作區塊Wb’520中有很多的零值元素以及零是任何數目的倍數,故移除/略過該操作區塊Wb’520中的零值元素,另外,也移除/略過該操作索引矩陣D’310中的對應元素(亦即:和Wb’520中的零值元素有相同位置的元素)。該操作區塊Wb’520中的零值元素以及該操作索引矩陣D’310中的對應元素被移除後,只留下空白位置。
第5B圖係根據第5A圖的例子及記憶體控制器120B是在複製組態的情況下,顯示一壓縮區塊Wb”521和一壓縮索引矩陣D”311。第5C圖係根據第5A圖的例子及記憶體控制器120A是在非複製組態的情況下,顯示一壓縮區塊Wb”522和一壓縮索引矩陣D”312。其中,該壓縮索引矩陣D”311/312中各行的多個元素被安排組成多個索引對50(於垂直方向)。請注意,第5B圖的例子中是假設記憶體控制器120B支援突觸值複製(即複製組態),故允許矩陣D”311之一行中任二個或更多的索引對(index pair)50對應至相同的SRAM記憶組;同時,因為第5C圖的例子中是假設記憶體控制器120A不支援突觸值複製(即非複製組態),故矩陣D”312之一行中所有的索引對50必須對應至不同的SRAM記憶組,因此須將三個索引對(5,4)分散至不同行。請再注意,根據該些SRAM記憶組111~114的組態,在各該些 索引對中,即使其中的二個索引有交換,例如(5,4)及(4,5),也會被視為對應至相同的SRAM記憶組。
步驟S418:在壓縮區塊Wb”中,以逐列的方式,依序移動非零元素至其最左邊的空位。例如,將權值對(weight pair)(w[0,5]及w[1,4])從區塊Wb’520第5行移動至壓縮區塊Wb”521第1行,以及將權值對(w[2,5]及w[3,4])從區塊Wb’520第3行移動至區塊Wb”521第0行。然而,在壓縮區塊Wb”中,以逐列的方式,依序移動非零元素至其最左邊的空位僅是一個示例,而非本發明之限制。另一實施例中,在壓縮區塊Wb”中,以逐列的方式,依序移動非零元素至其最右邊的空位。
步驟S420:在操作索引矩陣D’中,分別將對應元素(和Wb’中的非零值元素有相同位置的元素)移動到其對應位置。移動後,區塊Wb”521第i行的非零元素與矩陣D”311第i行的對應元素會位在相同的行,i=0~7。此步驟是用來維持區塊Wb”521與矩陣D”311之間的一對一的位置一致性。
步驟S421:判斷L是否大於N,或者,記憶體控制器120是否是非複製組態。若L>N或記憶體控制器120為非複製組態,跳到步驟S422;若L=N且記憶體控制器120為複製組態,跳到步驟S430。
步驟S422:於壓縮索引矩陣D”中,逐行檢查 是否有位在相同行的二個或更多的索引對係對應到相同的SRAM記憶組。若是的話,跳到步驟S423;否則,跳到步驟S425。在第5B圖的矩陣D”311的例子(已完成步驟S420)中,在第0行有二個索引對(0,1)及二個索引對(5,4)有衝突。具體而言,二個索引對(5,4)對應到相同的SRAM記憶組113,而二個索引對(0,1)對應到相同的SRAM記憶組111。
步驟S423:於壓縮索引矩陣D”中,將位在相同行的二個或更多的衝突索引對之一移出。有以下二種方法可以將位在相同行的二個或更多的索引對之一移出。(1)持續移動:以步驟S418中係將非零元素移動至壓縮區塊Wb”的最左邊的空位為例,將一目標索引對(該二個或更多的衝突索引對之一),連同其右側的其他索引對,往右移動一個位置,並檢查該目標索引對在新的一行會不會與任何索引對有衝突,若無的話,就停止;若是的話,持續再往右移一個位置,直到該目標索引對在新的一行不會與任何索引對有衝突為止。(2)直接交換:若確定在另一行沒有相同的索引對,則直接將該目標索引對與位在不同行但相同列的不同的索引對相交換。請參考第5B-5C圖,在非複製組態或L>N的情況下,二個衝突索引對(5,4)之一以及二個索引對(0,1)之一,連同其右側的其他索引對,由矩陣D”311第0行移動到矩陣D”312第1行,而第3個索引對(5,4)則由矩陣D”311第1行移動到矩陣D”312第2行。
步驟S424:判斷是否已處理完於矩陣D”之相同行的該二個或更多的衝突索引對。若是的話,跳到步驟S425;否則,回到步驟S422。
步驟S425:判斷是否已處理完矩陣D”之所有行。若是,跳到步驟S427;否則,回到步驟S422。
步驟S427:在壓縮區塊Wb”中,分別將對應元素(和D”中的元素有相同位置的元素)移動到其對應位置。此步驟是用來維持區塊Wb”522的元素與矩陣D”312的元素之間的一對一的位置一致性。
步驟S430:在壓縮區塊Wb”的空白位置中,填入零值,而在壓縮索引矩陣D”’的空白位置中,填入第一符號。在第5B圖的例子中,逐行檢查區塊Wb”521的一行中是否包含至少一非零元素。若是,在Wb”521包含該至少一非零元素的該行的空白位置中,填入零值,並在壓縮索引矩陣D”的對應位置中,填入第一符號,例如-1。請參考第5A-5B圖的例子,在步驟S420之後,在Wb”521的第1行及第2-6列的五個空白位置中,填入零值,並在壓縮索引矩陣D”的第1行及第2-6列的五個空白位置中,填入-1。
步驟S432:在壓縮區塊Wb”的最左邊空白行的至少一位置中,填入第二符號,表示區塊的結尾(EoB)。例如,在第5B圖的區塊Wb”521中最左邊空白行的最上方位置,填入”#”符號,表示區塊的結尾(EoB)。結果,在第5B 圖的複製例子中,目標區塊20原本八項的點乘積運算(耗費八個時脈週期)被壓縮成二項的點乘積運算(耗費二個時脈週期),因此,計算時可極大化硬體(MAC)的使用效率。比較區塊Wb”520及Wb”521明顯可知,移除/略過零值元素(步驟S416)及移動非零元素至其最左邊的空位(步驟S418)可顯著增加壓縮主串流的壓縮率以及硬體(MAC)的使用效率。
步驟S434:以逐對(pair-by-pair)方式,組合壓縮索引矩陣D”每一行的索引對50及壓縮區塊Wb”的對應權值對52,以形成一胞格群(cell group)。例如,從區塊Wb”521及矩陣D”311的左上角至右下角(如第5C圖Wb”及矩陣D”的虛線),以逐對方式,組合壓縮索引矩陣D”311每一行的索引對50及壓縮區塊Wb”521的對應權值對52,以形成一胞格群550。該胞格群550包含二個胞格列570以及一個EoB碼(如#符號)527,表示區塊的結尾。各胞格列570包含四個資料胞格526,而各資料胞格526包含矩陣D”的一個索引對50(垂直方向)以及區塊Wb”521的一對應權值對(和該索引對50位在相同位置)52。換言之,該胞格群550的各胞格列570包含區塊Wb”521及矩陣D”311中一對應行的四個權值對52及四個索引對50。
步驟S435:壓縮該胞格群以形成一壓縮次串流。本發明利用以下二個特色,壓縮該胞格群550(552)以形成一壓縮次串流560(562)。(1)各索引對具差值1:從矩陣 D”311(312)可觀察到,具差值1(除了一種資料胞格(以下稱之為空胞格)包含二個索引值-1)的各索引對,不是遞增就是遞減,因此各索引對中只需記錄第一個索引在該壓縮次串流560(562)中。(2)壓縮空胞格:在壓縮次串流560(562)中係利用”-1”來代表一空胞格,而在”-1”之後的數字則代表在該胞格群550(552)中連續空胞格的數目。以上二個特色更進一步增加該壓縮主串流的壓縮率。
步驟S436:判斷是否已處理完第2圖的格網中一水平列的所有區塊。若是的話,跳到步驟S438;否則,回到步驟S414以處理下一個區塊。必須先處理完第2圖的格網的一水平列的所有區塊之後,才能處理該格網的其他水平列的區塊。
步驟S438:判斷是否已處理完第2圖的格網中所有的水平列。若是的話,跳到步驟S440;否則,回到步驟S414。
步驟S440:將所有區塊的壓縮次串流串接在一起以形成一壓縮主串流,再儲存該壓縮主串流。具體而言,依序從第2圖中第0個水平列的第0個區塊至第127個區塊,再從第0個水平列到第127個水平列(串接順序如第6圖所示),將所有區塊20的壓縮次串流串接在一起以形成一壓縮主串流。換言之,所有區塊20的壓縮次串流是以Z字形掃描,再串接在一起以形成該壓縮主串流,然後,再將該壓縮主串流儲存於該儲存裝置160。該儲存裝置160可以是任何形式的非揮發 性記憶體、媒體及記憶體裝置。
另一方面,在第2圖中,1024x1024的權值矩陣W被分割成為多個8x8次矩陣/區塊20。由於各區塊20會乘以輸入向量X的八個元素,向量X的八個元素的相對索引的範圍是從0到7。即使是向量X的(乘以區塊20)最後一個區段(索引值1016~1023),索引基數(base)等於1016,但其相對索引的範圍仍是從0到7。因為向量X的該些元素是依序處理的(即每次八個元素),故不需要為各區段紀錄索引基數,只需透過該解壓縮模組170即時計算出索引基數即可。因此,就第2圖的例子而言,代表輸入向量X每一區段的該些索引(即每一區塊20的矩陣D’310、D”311/312中的元素)所需的位元長度只有三(=log28)個位元。上述特性在本說明書中稱之為完全相對索引特性,相當地提升了壓縮主串流的壓縮率。另一實施例中,一權值矩陣W被分割成為多個NxL的次矩陣/區塊,則代表輸入向量X每一區段的該些索引(即每一區塊的操作索引矩陣D’310中的元素)所需的位元長度只需log2L個位元。
在第5C圖的非複製的案例中,當完成步驟S432後,產生壓縮區塊Wb”522和壓縮矩陣D”312;當完成步驟S434後,根據矩陣D”312及壓縮區塊Wb”522形成該胞格群552;當完成步驟S435後,該胞格群552被壓縮成該壓縮次串流562。目標區塊20原本八項的點乘積(耗費八個時脈週 期)被壓縮成三項的點乘積(耗費三個時脈週期),因此,亦改善了壓縮主串流的壓縮率及硬體(MAC)的使用效率。
請回到第4A圖。
步驟S450:以交錯方式,儲存一組突觸值於一SRAM裝置中。如第1A圖所示,以交錯方式,儲存一組突觸值(對應於第2圖的輸入向量X)於該四個SRAM記憶組111~114中。因此,在一時脈週期內,該四個SRAM記憶組111~114輸出八個突觸值,而且該計算裝置100充分利用該八個突觸值。
步驟S452:解壓縮該壓縮主串流。一實施例中,該解壓縮模組170以逐區塊方式(block by block),將來自該儲存裝置160的該壓縮主串流解壓縮,以形成一連串的胞格群。如上所述,由於各壓縮次串流560/562是以EoB碼(即#符號)做結尾,故該解壓縮模組170可以容易地辨別各壓縮次串流的結尾。
步驟S454:將八個權值寫入該資料緩衝器140。假設該解壓縮模組170將(來自該壓縮主串流的)該壓縮次串流562解壓縮,以形成第5C圖的該胞格群552,該計算裝置100係以逐列方式處理該胞格群552。如上所述,因為向量X的元素是依序處理的(即每次八個元素),故不需要為各區段紀錄索引基數,只需透過該解壓縮模組170即時計算出索引基數即可。因此,就該胞格群552的第0個胞格列570 中的四個資料胞格526而言,該解壓縮模組170即時計算出該索引基數等於0(因為是第2圖的格網中第0個水平列的第0個區塊)、將其中的四個索引對加上該索引基數以得到四個修正索引對、再將該四個修正索引對傳送給該記憶體控制器120B;同時,該解壓縮模組170依序將其中的八個權值(即四個權值對)寫入該資料緩衝器140的四個固定記憶體位置(各儲存二個值)以暫存該些權值。請注意,若該胞格群中有任何索引對(-1,-1),該解壓縮模組170會直接傳送該索引對(-1,-1)給該記憶體控制器120B,而不會加上該索引基數。
步驟S456:根據該些胞格群之一的一胞格列,在一時脈週期內,讀出八個突觸值。在第1B-1C圖中,該索引控制器125每次接收源自該胞格群的一胞格列的四個修正索引對、將各修正索引對轉換成一組控制參數(bn、bi、ds)、再分別將四組控制參數傳送給四個記憶體控制單元121~124,其中,參數bn代表SRAM記憶組號碼(bn=0~3)、參數bi代表該SRAM記憶組的索引號碼以及參數ds代表是否需交換一對應修正索引對中的二個索引。一實施例中,若該修正索引對(如(0,1))為遞增,該索引控制器125將參數ds設為0;反之,若該修正索引對(如(5,4))為遞減,則將參數ds設為1。舉例而言,若該修正索引對(5,4)為遞減且儲存於SRAM記憶組113/索引0,則該索引控制器125將該修正索引對(5,4)轉換成三個控制 參數(bn=2,bi=0,ds=1)。
在非複製的案例中,假設該解壓縮模組170將該壓縮次串流562解壓縮以形成第5C圖的該胞格群552,該索引控制器125每次接收源自該胞格群552的各胞格列的四個修正索引對526。具體而言,該索引控制器125接收和該胞格群552的第0個胞格列570的第0個資料胞格526有關的第0個修正索引對(0,1)、將該修正索引對(0,1)轉換成一組控制參數(bn=0、bi=0、ds=0)、再將該組控制參數傳送給一對應的記憶體控制單元121。之後,該索引控制器125接收和該胞格群552的第0個胞格列570的第1個資料胞格526有關的第1個修正索引對(5,4)、將修正索引對(5,4)轉換成一組控制參數(bn=2、bi=0、ds=1)、再將該組控制參數傳送給一對應的記憶體控制單元122。然而,當該索引控制器125接收和該胞格群552的第0個胞格列570的第2個及第3個資料胞格526有關的第2個及第3個修正索引對(-1,-1)時,該索引控制器125直接傳送一組預設的控制參數(bn=-1、bi=-1、ds=-1)給對應的記憶體控制單元123~124。
接著,記憶體控制單元121~122分別將接收到的控制參數bn、bi轉換成二個讀取SRAM位址add0及add1、傳送該二個讀取SRAM位址add0及add1至SRAM裝置110、再從該SRAM裝置110讀取出資料i-da0及i-da1。然後,由於參數ds等於0,記憶體控制單元121直接輸出該輸入資料i-da0(即 x[0],x[1])當作輸出資料o-da0,連同一寫入位址add4,傳送至該資料緩衝器130的該四個固定位置(各儲存二個突觸值)之一以便暫存。同時,由於參數ds等於1,記憶體控制單元122須交換該輸入資料i-da1(即x[4],x[5])、並輸出交換後的資料當作輸出資料(即x[5],x[4]),連同一寫入位址add5,傳送至該資料緩衝器130的該四個固定位置之另一以便暫存。此外,由於參數bn、bi等於-1,記憶體控制單元123~124不需從該SRAM裝置110讀取任何資料,而是分別輸出零值當作輸出資料o-da2及o-da3,連同一寫入位址add6及add7,傳送至該資料緩衝器130的該四個固定位置(各儲存二個突觸值)之另二以便暫存。
步驟S458:平行地執行乘法累加(MAC)運算。在第1A圖的實施例中,該八個乘法累加器150~157平行地進行乘法累加運算;二個資料緩衝器130、140分別有八個輸出埠,資料緩衝器130的八個輸出埠分別輸出儲存於其四個固定位置中的八個突觸值,而資料緩衝器140的八個輸出埠分別輸出儲存於其四個固定位置中的八個權值。二個資料緩衝器130、140的第0個輸出埠分別連接到乘法累加器150的二個輸入端、二個資料緩衝器130、140的第1個輸出埠分別連接到乘法累加器151的二個輸入端、...以此類推。一旦二個資料緩衝器130、140被寫入資料,該八個乘法累加器150~157就會被啟動以平行地進行乘法累加運算。
步驟S460:判斷是否已處理完該區塊的胞格群。若是的話,跳到步驟S462;否則,回到步驟S454及步驟S456,以處理後續四個資料胞格(位在該胞格群的下一列)。
步驟S462:判斷是否已處理完該格網的一水平列的所有區塊。若是的話,跳到步驟S464;否則,回到步驟S454及步驟S456,以處理下一個區塊。
步驟S464:重置(reset)所有乘法累加器150~157的累加器15c。請注意,在重置所有乘法累加器150~157的累加器15c之前,須將來自乘法累加器150~157的累加器15c的所有累加值ac10~ac17寫入至一外部的記憶體裝置(未示)。假設已處理完第2圖中格網的第0個水平列,等於輸出向量Y的元素y[0]~y[7]的累加值ac10~ac17被寫入至該外部的記憶體裝置,然後,再重置所有乘法累加器150~157的累加器15c以便處理第2圖中格網的第1個水平列(以便計算後續元素y[8]~y[15])。
步驟S466:判斷是否已處理完該格網的所有水平列。若是的話,結束本流程;否則,回到步驟S454及步驟S456,以處理下一個水平列。
在複製的案例中,假設該解壓縮模組170將第5B圖的該壓縮次串流560解壓縮以形成該胞格群550,該索引控制器125每次接收源自該胞格群550的各胞格列的四個修正 索引對526。在步驟S456,該索引控制器125接收和該胞格群550的第0個胞格列570的第0個及第3個資料胞格526有關的第0個及第3個修正索引對(0,1)、將各該修正索引對(0,1)轉換成一組控制參數(bn=0、bi=0、ds=0)、再將該二組控制參數分別傳送給二個對應的記憶體控制單元121、124。同時,該索引控制器125接收和該胞格群550的第0個胞格列570的第1個及第2個資料胞格526有關的第1個及第2個修正索引對(5,4)、將各該修正索引對(5,4)轉換成一組控制參數(bn=2、bi=0、ds=1)、再將該二組控制參數分別傳送給二個對應的記憶體控制單元122、123。因為二個記憶體控制單元121、124接收到相同的修正索引對(0,1)而有相同的讀取SRAM位址,故二個記憶體控制單元121、124之一,例如單元121,被安排發出一讀取SRAM位址add0給該SRAM裝置110,之後,該SRAM裝置110輸出資料i-da0(即x[0],x[1])至該資料暫存器126。接著,二個記憶體控制單元121、124被安排從該資料暫存器126中讀取出資料i-da0(即x[0],x[1]),由於ds=0,便直接輸出讀取資料i-da0當作輸出資料o-da0及o-da3,連同寫入位址add4及add7,分別傳送至該資料緩衝器130的第0個及第3個固定位置(各儲存二個突觸值)。
同樣地,因為二個記憶體控制單元122~123接收到相同的修正索引對(5,4)而有相同的讀取SRAM位址,故二個記憶體控制單元122~123之一,例如單元122,被安排 發出一讀取SRAM位址add1給該SRAM裝置110,之後,該SRAM裝置110輸出資料i-da1(即x[4],x[5])至該資料暫存器127。接著,二個記憶體控制單元122~123被安排從該資料暫存器127中讀取出資料i-da1(即x[4],x[5]),由於ds=1,便交換資料i-da1並輸出交換資料i-da1(即x[5],x[4])當作輸出資料o-da1及o-da2,連同寫入位址add5及add6,分別傳送至該資料緩衝器130的第1個及第2個固定位置(各儲存二個突觸值)。
雖然第1A、4A圖的實施例係利用一權值矩陣(或一壓縮主串流)及單一突觸資料流(如儲存於SRAM裝置110的一組突觸值)做說明,應理解的是本發明不因此而受限,而可廣泛的應用到一權值矩陣(或一壓縮主串流)及多個突觸資料流(即多組突觸值)。事實上,該壓縮主串流只與權值矩陣W的非零權值及輸入向量X的相關索引(或對應索引號碼)有關,而與任何突觸值無關,因此,該壓縮主串流不僅可應用到一組突觸值,也可應用到多組突觸值。例如,第7圖是二個突觸資料流的例子,可以很容易利用二個擷取及計算電路10A、10B來實施該計算裝置700的電路,故硬體和該壓縮主串流可和二組突觸值同時運作。在第7圖中,該二個擷取及計算電路10A、10B具有相同的元件,但根據相同的壓縮主串流分別處理二組突觸值(係分別預存於該二個擷取及計算電路10A、10B的SRAM裝置110)。關於第7圖,有二組突觸值分 別儲存於各擷取及計算電路10A、10B的SRAM裝置110(對應步驟S450);根據該些胞格群之一的相同胞格列,分別從該二個擷取及計算電路10A、10B的SRAM裝置110中平行地讀出共十六個突觸值(對應步驟S456);該二個擷取及計算電路10A、10B的乘法累加器150~157平行地執行該乘法累加運算以得到該些累加值ac10~ac17及ac20~ac27(對應步驟S458)。
雖然上述實施例係利用一般入工神經網路系統中具有多個神經元且各神經元具有多個輸入的一神經元層做說明,應理解的是本發明不因此而受限,而可廣泛的應用到需要進行MxV運算的任何人工神經網路的任何神經元層或任何結構,例如卷積神經網路中的FC層,或遞歸神經網路,等等。
上述實施例以及功能性操作可利用數位電子電路、具體化的電腦軟體或韌體、電腦硬體,包含揭露於說明書的結構及其等效結構、或者上述至少其一之組合等等,來實施。在第4A-4D圖揭露的方法與邏輯流程可利用至少一部電腦執行至少一電腦程式的方式,來執行其功能。在第4A-4D圖揭露的方法與邏輯流程以及第1、7圖揭露的計算裝置100/700可利用特殊目的邏輯電路來實施,例如:現場可程式閘陣列(FPGA)或特定應用積體電路(ASIC)等。適合執行該至少一電腦程式的電腦包含,但不限於,通用或特殊目的的微處理器,或任一型的中央處理器(CPU)。適合儲存電腦程式 指令及資料的電腦可讀取媒體包含所有形式的非揮發性記憶體、媒體及記憶體裝置,包含,但不限於,半導體記憶體裝置,例如,可抹除可規劃唯讀記憶體(EPROM)、電子可抹除可規劃唯讀記憶體(EEPROM)以及快閃(flash)記憶體裝置;磁碟,例如,內部硬碟或可移除硬碟;磁光碟(magneto-optical disk),例如,CD-ROM或DVD-ROM。
上述僅為本發明之較佳實施例而已,而並非用以限定本發明的申請專利範圍;凡其他未脫離本發明所揭示之精神下所完成的等效改變或修飾,均應包含在下述申請專利範圍內。

Claims (11)

  1. 一種矩陣及向量相乘的方法,適用於一人工神經網路系統,包含:壓縮一權值矩陣的多個權值及一輸入向量的多個索引成一壓縮主串流;分別儲存M組突觸值於M個記憶體裝置中;以及根據該M組突觸值以及該壓縮主串流,進行讀取以及乘法累加運算,以平行地得到M個輸出向量;其中該壓縮步驟包含:將該權值矩陣分隔為多個NxL的區塊;將一目標區塊的元素及該輸入向量的對應索引轉換成一操作區塊及一索引矩陣,以致於各輸出向量的各元素相關於該操作區塊及該索引矩陣之一對應列;移除該操作區塊中的零值元素;以逐列方式,依序移動該操作區塊中的非零元素至其右側及左側之其一;分別移動該索引矩陣的對應元素;根據該移動後的操作區塊以及該移動後的索引矩陣,形成一壓縮次串流;以及重複該轉換步驟、該移除步驟、該依序移動步驟、該分別移動步驟以及該形成步驟,直到處理完所有區塊以形成該壓縮主串流; 其中,代表該索引矩陣的該些元素的位元長度等於log 2L,以及,N及L皆為偶數。
  2. 如申請專利範圍第1項所記載之方法,係應用於該人工神經網路系統的一神經元層,該神經元層包含多個神經元且各神經元具有多個輸入。
  3. 如申請專利範圍第1項所記載之方法,其中各該M個記憶體裝置是一靜態隨機存取記憶體(SRAM)裝置,且各SRAM裝置被分割為多個SRAM記憶組。
  4. 如申請專利範圍第3項所記載之方法,其中該壓縮步驟更包含:在該形成步驟之前,若在該移動後的索引矩陣中偵測到位在同一行有二個或更多的索引對係對應到相同的SRAM記憶組,則將位在同一行的該二個或更多的索引對之一移動至另一行;以及根據該移動後的索引矩陣中該移動後的索引對,分別移動該移動後的操作區塊中的對應元素;其中,該索引矩陣中各行的多個元素被安排組成為多個索引對。
  5. 如申請專利範圍第4項所記載之方法,其中L>N。
  6. 如申請專利範圍第1項所記載之方法,其中該分別儲存步驟更包含:以交錯方式,儲存各該M組突觸值於各該M個SRAM裝置,以致於各該M個SRAM裝置可同時輸出N個突觸值。
  7. 如申請專利範圍第6項所記載之方法,其中該索引矩陣的各行具有N個不同元素,而各列具有L個不同元素。
  8. 如申請專利範圍第2項所記載之方法,其中該依序移動步驟更包含:以逐列方式,依序移動該操作區塊中的非零元素至其最右側空白位置及最左側空白位置之其一。
  9. 如申請專利範圍第1項所記載之方法,更包含:儲存該壓縮主串流於一儲存裝置;以及解壓縮來自該儲存裝置的該壓縮主串流為一連串的胞格群。
  10. 如申請專利範圍第9項所記載之方法,其中該進行讀取以及乘法累加運算步驟包含:根據一目標胞格群的一胞格列,從各該M個SRAM裝置讀取出N個突觸值;從該目標胞格群的該胞格列讀取出N個權值;對各該M組突觸值,根據該N個突觸值及該N個權值,平行地進行該讀取以及乘法累加運算以產生N個累加值;以及重複該讀取出該N個突觸值步驟、該讀取出該N個權值步驟以及該平行地進行該讀取以及乘法累加運算步驟,直到處理完所有胞格群的所有胞格列以平行地形成該M個輸出向量; 其中,各胞格群包含至少一胞格列,各胞格列對應至該移動後的操作區塊以及該移動後的索引矩陣的一對應行。
  11. 如申請專利範圍第1項所記載之方法,其中該壓縮步驟更包含:在該分別移動步驟之後以及該形成步驟之前,在該移動後的操作區塊的空白位置中,填入零值,而在該移動後的索引矩陣的對應空白位置中,填入一預設符號。
TW107121443A 2017-07-08 2018-06-22 適用於人工神經網路之矩陣及向量相乘的方法 TWI680409B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201762530120P 2017-07-08 2017-07-08
US62/530,120 2017-07-08

Publications (2)

Publication Number Publication Date
TW201907319A true TW201907319A (zh) 2019-02-16
TWI680409B TWI680409B (zh) 2019-12-21

Family

ID=64904251

Family Applications (1)

Application Number Title Priority Date Filing Date
TW107121443A TWI680409B (zh) 2017-07-08 2018-06-22 適用於人工神經網路之矩陣及向量相乘的方法

Country Status (2)

Country Link
US (1) US10534839B2 (zh)
TW (1) TWI680409B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110147347A (zh) * 2019-03-18 2019-08-20 腾讯科技(深圳)有限公司 用于矩阵处理的芯片、矩阵处理方法、装置及存储介质
TWI745697B (zh) * 2019-05-24 2021-11-11 創鑫智慧股份有限公司 用於神經網路參數的運算系統及其壓縮方法

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10417304B2 (en) * 2017-12-15 2019-09-17 International Business Machines Corporation Dual phase matrix-vector multiplication system
US10740434B1 (en) 2018-04-20 2020-08-11 Perceive Corporation Reduced dot product computation circuit
US11586910B1 (en) 2018-04-20 2023-02-21 Perceive Corporation Write cache for neural network inference circuit
US11531727B1 (en) 2018-04-20 2022-12-20 Perceive Corporation Computation of neural network node with large input values
US11210586B1 (en) 2018-04-20 2021-12-28 Perceive Corporation Weight value decoder of neural network inference circuit
US11568227B1 (en) 2018-04-20 2023-01-31 Perceive Corporation Neural network inference circuit read controller with multiple operational modes
US11049013B1 (en) 2018-04-20 2021-06-29 Perceive Corporation Encoding of weight values stored on neural network inference circuit
US11531868B1 (en) 2018-04-20 2022-12-20 Perceive Corporation Input value cache for temporarily storing input values
WO2020014590A1 (en) * 2018-07-12 2020-01-16 Futurewei Technologies, Inc. Generating a compressed representation of a neural network with proficient inference speed and power consumption
US12008475B2 (en) * 2018-11-14 2024-06-11 Nvidia Corporation Transposed sparse matrix multiply by dense matrix for neural network training
JP6741159B1 (ja) * 2019-01-11 2020-08-19 三菱電機株式会社 推論装置及び推論方法
US20200320002A1 (en) * 2019-04-04 2020-10-08 EMC IP Holding Company LLC Intelligently managing data facility caches
JP7323697B2 (ja) * 2019-07-26 2023-08-08 オッポ広東移動通信有限公司 伝送リソースの選択方法、ネットワーク機器、ユーザ機器
US11507814B1 (en) * 2019-09-09 2022-11-22 Meta Platforms Technologies, Llc Neural network based on total hamming distance
KR20210071471A (ko) * 2019-12-06 2021-06-16 삼성전자주식회사 뉴럴 네트워크의 행렬 곱셈 연산을 수행하는 장치 및 방법
CN111079082B (zh) * 2019-12-20 2023-03-10 支付宝(杭州)信息技术有限公司 一种提高涉及稀疏矩阵计算速率的方法和***
US11562240B2 (en) 2020-05-27 2023-01-24 International Business Machines Corporation Efficient tile mapping for row-by-row convolutional neural network mapping for analog artificial intelligence network inference
US11823018B1 (en) 2020-06-30 2023-11-21 Cadence Design Systems, Inc. Method, product, and apparatus for a machine learning process using weight sharing within a systolic array having reduced memory bandwidth
US11615320B1 (en) 2020-06-30 2023-03-28 Cadence Design Systems, Inc. Method, product, and apparatus for variable precision weight management for neural networks
US11676068B1 (en) 2020-06-30 2023-06-13 Cadence Design Systems, Inc. Method, product, and apparatus for a machine learning process leveraging input sparsity on a pixel by pixel basis
US11651283B1 (en) * 2020-06-30 2023-05-16 Cadence Design Systems, Inc. Method, product, and apparatus for a machine learning process using dynamic rearrangement of sparse data and corresponding weights
US11687831B1 (en) 2020-06-30 2023-06-27 Cadence Design Systems, Inc. Method, product, and apparatus for a multidimensional processing array for hardware acceleration of convolutional neural network inference
TWI742802B (zh) 2020-08-18 2021-10-11 創鑫智慧股份有限公司 矩陣運算裝置及其操作方法
US11922178B2 (en) * 2021-06-25 2024-03-05 Intel Corporation Methods and apparatus to load data within a machine learning accelerator
US11941111B2 (en) * 2021-07-31 2024-03-26 International Business Machines Corporation Exploiting fine-grained structured weight sparsity in systolic arrays

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5267185A (en) * 1989-04-14 1993-11-30 Sharp Kabushiki Kaisha Apparatus for calculating matrices
US5369773A (en) * 1991-04-26 1994-11-29 Adaptive Solutions, Inc. Neural network using virtual-zero
US5621674A (en) * 1996-02-15 1997-04-15 Intel Corporation Computer implemented method for compressing 24 bit pixels to 16 bit pixels
US8612723B2 (en) * 2008-05-06 2013-12-17 L-3 Communications Integrated Systems, L.P. System and method for storing a sparse matrix
US8676874B2 (en) * 2010-12-06 2014-03-18 International Business Machines Corporation Data structure for tiling and packetizing a sparse matrix
US9367519B2 (en) * 2013-08-30 2016-06-14 Microsoft Technology Licensing, Llc Sparse matrix data structure
CN106598545B (zh) * 2015-10-08 2020-04-14 上海兆芯集成电路有限公司 沟通共享资源的处理器与方法及非瞬时计算机可使用媒体
US10242311B2 (en) * 2016-08-11 2019-03-26 Vivante Corporation Zero coefficient skipping convolution neural network engine
US10360163B2 (en) * 2016-10-27 2019-07-23 Google Llc Exploiting input data sparsity in neural network compute units
US11003985B2 (en) * 2016-11-07 2021-05-11 Electronics And Telecommunications Research Institute Convolutional neural network system and operation method thereof
CN107239824A (zh) * 2016-12-05 2017-10-10 北京深鉴智能科技有限公司 用于实现稀疏卷积神经网络加速器的装置和方法
KR102499396B1 (ko) * 2017-03-03 2023-02-13 삼성전자 주식회사 뉴럴 네트워크 장치 및 뉴럴 네트워크 장치의 동작 방법
US10452744B2 (en) * 2017-03-27 2019-10-22 Oracle International Corporation Memory management for sparse matrix multiplication

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110147347A (zh) * 2019-03-18 2019-08-20 腾讯科技(深圳)有限公司 用于矩阵处理的芯片、矩阵处理方法、装置及存储介质
CN110147347B (zh) * 2019-03-18 2023-01-06 腾讯科技(深圳)有限公司 用于矩阵处理的芯片、矩阵处理方法、装置及存储介质
TWI745697B (zh) * 2019-05-24 2021-11-11 創鑫智慧股份有限公司 用於神經網路參數的運算系統及其壓縮方法

Also Published As

Publication number Publication date
US20190012296A1 (en) 2019-01-10
TWI680409B (zh) 2019-12-21
US10534839B2 (en) 2020-01-14

Similar Documents

Publication Publication Date Title
TWI680409B (zh) 適用於人工神經網路之矩陣及向量相乘的方法
US11003985B2 (en) Convolutional neural network system and operation method thereof
CN108205700B (zh) 神经网络运算装置和方法
TWI570573B (zh) 矩陣轉置電路
US11797855B2 (en) System and method of accelerating execution of a neural network
CN110796235B (zh) 卷积神经网络Valid卷积的向量化实现方法
TW201913460A (zh) 芯片裝置及相關産品
WO2022037257A1 (zh) 卷积计算引擎、人工智能芯片以及数据处理方法
CN104636273A (zh) 一种带多级Cache的SIMD众核处理器上的稀疏矩阵存储方法
CN112286864B (zh) 加速可重构处理器运行的稀疏化数据处理方法及***
US20200159810A1 (en) Partitioning sparse matrices based on sparse matrix representations for crossbar-based architectures
CN103699442B (zh) MapReduce计算框架下的可迭代式数据处理方法
CN109840585B (zh) 一种面向稀疏二维卷积的运算方法和***
CN110399591B (zh) 基于卷积神经网络的数据处理方法和装置
US20080126467A1 (en) Technique for transposing nonsymmetric sparse matrices
IT202000018043A1 (it) Procedimenti e sistemi di elaborazione di rete neurale artificiale
CN113486298A (zh) 基于Transformer神经网络的模型压缩方法、矩阵乘法模块
CN114781629A (zh) 基于并行复用的卷积神经网络的硬件加速器及并行复用方法
EP4095719A1 (en) Sparse matrix multiplication in hardware
US20160239948A1 (en) Method and circuitry for performing census transforms
CN110889259B (zh) 针对排列的块对角权重矩阵的稀疏矩阵向量乘法计算单元
CN105844009A (zh) 高效稀疏矩阵存储及油藏数值模拟的方法和装置
CN110765413B (zh) 矩阵求和结构及神经网络计算平台
CN102447898B (zh) 用fpga实现klt变换的方法
CN113705784A (zh) 一种基于矩阵共享的神经网络权重编码方法及硬件***