TWI736404B - 用於在邊緣設備上執行機器學習操作的可程式設計電路 - Google Patents

用於在邊緣設備上執行機器學習操作的可程式設計電路 Download PDF

Info

Publication number
TWI736404B
TWI736404B TW109129455A TW109129455A TWI736404B TW I736404 B TWI736404 B TW I736404B TW 109129455 A TW109129455 A TW 109129455A TW 109129455 A TW109129455 A TW 109129455A TW I736404 B TWI736404 B TW I736404B
Authority
TW
Taiwan
Prior art keywords
programmable circuit
fuse
coupled
machine learning
programmable
Prior art date
Application number
TW109129455A
Other languages
English (en)
Other versions
TW202119426A (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 TW202119426A publication Critical patent/TW202119426A/zh
Application granted granted Critical
Publication of TWI736404B publication Critical patent/TWI736404B/zh

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C17/00Read-only memories programmable only once; Semi-permanent stores, e.g. manually-replaceable information cards
    • G11C17/14Read-only memories programmable only once; Semi-permanent stores, e.g. manually-replaceable information cards in which contents are determined by selectively establishing, breaking or modifying connecting links by permanently altering the state of coupling elements, e.g. PROM
    • G11C17/16Read-only memories programmable only once; Semi-permanent stores, e.g. manually-replaceable information cards in which contents are determined by selectively establishing, breaking or modifying connecting links by permanently altering the state of coupling elements, e.g. PROM using electrically-fusible links
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • 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
    • G06N3/0442Recurrent networks, e.g. Hopfield networks characterised by memory or gating, e.g. long short-term memory [LSTM] or gated recurrent units [GRU]
    • 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
    • G06N3/065Analogue means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/54Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using elements simulating biological cells, e.g. neuron
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5692Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency read-only digital stores using storage elements with more than two stable states
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/0069Writing or programming circuits or methods
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C17/00Read-only memories programmable only once; Semi-permanent stores, e.g. manually-replaceable information cards
    • G11C17/14Read-only memories programmable only once; Semi-permanent stores, e.g. manually-replaceable information cards in which contents are determined by selectively establishing, breaking or modifying connecting links by permanently altering the state of coupling elements, e.g. PROM
    • G11C17/18Auxiliary circuits, e.g. for writing into memory
    • 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/04Architecture, e.g. interconnection topology
    • G06N3/047Probabilistic or stochastic networks
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C17/00Read-only memories programmable only once; Semi-permanent stores, e.g. manually-replaceable information cards
    • G11C17/14Read-only memories programmable only once; Semi-permanent stores, e.g. manually-replaceable information cards in which contents are determined by selectively establishing, breaking or modifying connecting links by permanently altering the state of coupling elements, e.g. PROM
    • G11C17/143Read-only memories programmable only once; Semi-permanent stores, e.g. manually-replaceable information cards in which contents are determined by selectively establishing, breaking or modifying connecting links by permanently altering the state of coupling elements, e.g. PROM using laser-fusible links

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Software Systems (AREA)
  • Biophysics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Computer Hardware Design (AREA)
  • Neurology (AREA)
  • Optics & Photonics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Medical Informatics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)
  • Stored Programmes (AREA)
  • Programmable Controllers (AREA)

Abstract

本案的某些態樣係關於一種用於對具有一或多個可程式設計電路的設備進行程式設計以實現例如機器學習模型的方法和裝置。一個示例性裝置通常包括複數條字線、複數條位元線和可程式設計電路陣列。每個可程式設計電路被耦合至複數條字線中的對應字線和複數條位元線中的對應位元線,並且包括:被耦合在對應字線與對應位元線之間的主電阻器、輔助電阻器、與輔助電阻器串聯耦合的熔斷器(其中該輔助電阻器和該熔斷器被耦合在對應字線與對應位元線之間),以及被配置成選擇性地將熔斷器熔斷的程式設計電路。

Description

用於在邊緣設備上執行機器學習操作的可程式設計電路
本專利申請案主張於2019年8月30日提出申請的題為「PROGRAMMABLE CIRCUITS FOR PERFORMING MACHINE LEARNING OPERATIONS ON EDGE DEVICES(用於在邊緣設備上執行機器學習操作的可程式設計電路)」的非臨時申請案第16/556,505的優先權,該申請案被轉讓給本案受讓人並由此經由援引明確納入於此。
本案大體而言係關於人工神經網路,並且尤其係關於用於在邊緣設備上執行機器學習操作的技術和裝置。
可包括一群互連的人工神經元(例如,神經元模型)的人工神經網路是一種計算設備或者表示將由計算設備執行的方法。該等神經網路可被用於各種應用及/或設備,諸如網際網路協定(IP)相機、物聯網路(IoT)設備、自主車輛,及/或服務機器人。
人工神經網路中的個體節點可經由獲取輸入資料並對該資料執行簡單操作來模擬生物神經元。對輸入資料執行的簡單操作的結果被選擇性地傳遞給其他神經元。權重值與網路之每一者向量和節點相關聯,並且該等值限制了輸入資料如何與輸出資料有關。例如,每個節點的輸入資料可乘以對應的權重值,並且可對該等乘積求和。該等乘積的總和可經由可任選的偏置進行調節,並且可將啟用函數應用於結果,從而產生節點的輸出信號或「輸出啟用」。權重值最初可由訓練資料經由網路的反覆運算流程來決定(例如,權重值是在其中網路學習如何經由其典型輸入資料特徵來辨識特定類別的訓練階段期間建立的)。
存在不同類型的人工神經網路,諸如遞迴神經網路(RNN)、多層感知器(MLP)神經網路、迴旋神經網路(CNN)等。RNN的工作原理是保存層的輸出並將該輸出回饋到輸入,以幫助預測層的結果。在MLP神經網路中,資料可被饋送到輸入層中,並且一或多個隱藏層為資料提供抽象水平。隨後可基於所抽象的資料來在輸出層上進行預測。MLP可以特別適用於分類預測問題,其中輸入被指派類別或標籤。迴旋神經網路(CNN)是一種前饋人工神經網路。迴旋神經網路可包括人工神經元集合,其中每一個人工神經元具有感受野(例如,輸入空間的空間局部化區域),並且共同地拼出一輸入空間。迴旋神經網路具有眾多應用。具體而言,CNN已經在模式辨識和分類領域中被廣泛使用。
在分層神經網路架構中,第一層人工神經元的輸出成為第二層人工神經元的輸入,第二層人工神經元的輸出成為第三層人工神經元的輸入,依此類推。迴旋神經網路可被訓練以辨識特徵階層。迴旋神經網路架構中的計算可分佈在處理節點群體上,其可被配置在一或多個計算鏈中。該等多層架構可每次訓練一層並可使用後向傳播來微調。
本案的某些態樣係關於一種可在其上執行機器學習模型的裝置。該裝置通常包括複數條字線、複數條位元線和可程式設計電路陣列。陣列之每一者可程式設計電路被耦合至複數條字線中的對應字線和複數條位元線中的對應位元線。每個可程式設計電路包括:主電阻器,其被耦合在對應字線與對應位元線之間;輔助電阻器;熔斷器,其與輔助電阻器串聯耦合,其中該輔助電阻器和該熔斷器被耦合在對應字線與對應位元線之間;及程式設計電路,其被配置成選擇性地將熔斷器熔斷。
本案的某些態樣係關於一種用於對具有複數條字線、複數條位元線和可程式設計電路陣列的設備進行程式設計的方法。可程式設計電路陣列之每一者可程式設計電路被耦合至複數條字線中的對應字線和複數條位元線中的對應位元線。該方法大體而言包括以下步驟:經由選擇性地將熔斷器熔斷(例如,使用程式設計電路)來對可程式設計電路陣列中的可程式設計電路進行程式設計,其中該熔斷器與輔助電阻器串聯耦合,該輔助電阻器和該熔斷器被耦合在對應字線與對應位元線之間;及主電阻器,其被耦合在對應字線與對應位元線之間,以及使用經程式設計的可程式設計電路來操作該設備。
本案的某些態樣係關於一種用於對設備進行程式設計的裝置。該裝置通常包括複數條字線,複數條位元線,可程式設計電路陣列,用於經由使用用於程式設計的構件選擇性地將熔斷器熔斷來對可程式設計電路陣列中的可程式設計電路進行程式設計的構件,以及用於使用經程式設計的可程式設計電路來操作該設備的構件。熔斷器與輔助電阻器串聯耦合,該輔助電阻器和該熔斷器被耦合在對應字線與對應位元線之間,並且主電阻器被耦合在對應字線與對應位元線之間。
本案的某些態樣係關於一種包括指令的非暫時性電腦可讀取媒體,該等指令在由至少一個處理器執行時使該處理器執行用於對具有複數條字線、複數條位元線和可程式設計電路陣列的設備進行程式設計的操作。該操作大體而言包括:經由選擇性地將熔斷器熔斷(例如,使用程式設計電路)來對可程式設計電路陣列中的可程式設計電路進行程式設計,其中該熔斷器與輔助電阻器串聯耦合,該輔助電阻器和該熔斷器被耦合在對應字線與對應位元線之間,並且主電阻器被耦合在對應字線與對應位元線之間;及使用經程式設計的可程式設計電路來操作該設備。
本案的某些態樣係關於一種用於對設備進行程式設計以實現機器學習模型的方法。該方法大體而言包括以下步驟:在該設備處接收要在可程式設計電路上實現的經訓練的機器學習模型的權重值;基於經訓練的機器學習模型的權重值,經由選擇性地解耦可程式設計電路中與主電阻器並聯耦合的一或多個輔助電阻器來對該可程式設計電路進行程式設計;及使用經程式設計的可程式設計電路來操作該設備。
本案的某些態樣係關於一種包括指令的非暫時性電腦可讀取媒體,該等指令在由至少一個處理器執行時使該處理器執行用於對具有處理器和可程式設計電路的設備進行程式設計以實現機器學習模型的操作。該等操作大體而言包括:在該設備處接收要在可程式設計電路上實現的經訓練的機器學習模型的權重值;基於經訓練的機器學習模型的權重值,經由選擇性地解耦可程式設計電路中與主電阻器並聯耦合的一或多個輔助電阻器來對該可程式設計電路進行程式設計;及使用經程式設計的可程式設計電路來操作該設備。
本案的某些態樣係關於一種用於對設備進行程式設計以實現機器學習模型的裝置。該裝置大體而言包括:可程式設計電路陣列;用於從伺服器接收要在該可程式設計電路陣列上實現的經訓練的機器學習模型的權重值的構件;用於基於經訓練的機器學習模型的權重值,經由選擇性地解耦可程式設計電路中與主電阻器並聯耦合的一或多個輔助電阻器來對該可程式設計電路陣列中的至少一個可程式設計電路進行程式設計的構件;及用於使用經程式設計的可程式設計電路來操作該裝置的構件;用於在該設備處從伺服器接收要在可程式設計電路上實現的經訓練的機器學習模型的權重值的構件;用於基於經訓練的機器學習模型的權重值,經由選擇性地解耦可程式設計電路中與主電阻器並聯耦合的一或多個輔助電阻器來對該可程式設計電路進行程式設計的構件;及用於使用經程式設計的可程式設計電路來操作該設備的構件。
本案的某些態樣係關於一種用於對設備進行程式設計以實現機器學習模型的裝置。該裝置包括可程式設計電路陣列,以及至少一個處理器,其被耦合至該可程式設計電路陣列。該至少一個處理器通常被配置成:接收要在該可程式設計電路陣列上實現的經訓練的機器學習模型的權重值;基於經訓練的機器學習模型的權重值,經由選擇性地解耦可程式設計電路中與主電阻器並聯耦合的一或多個輔助電阻器來對該可程式設計電路陣列中的至少一個可程式設計電路進行程式設計;及使用經程式設計的可程式設計電路來操作該裝置。
本案的其他態樣、優點和特徵將在閱讀整個申請案後變得明瞭,整個申請案包括以下章節:圖式簡單說明、實施方式,以及發明申請專利範圍。
本案的某些態樣提供了用於在具有可程式設計電路的設備上執行機器學習操作的方法和裝置。
現在參照附圖,描述本案的若干示例性態樣。措辭「示例性」在本文中用於意指「用作示例、實例、或說明」。本文中描述為「示例性」的任何態樣不必被解釋為優於或勝過其他態樣。 示例性人工神經網路
圖1圖示了根據本案的某些態樣的晶片上系統(SOC)100的示例性實現,其可包括配置成執行並行Monte Carlo丟棄功能的中央處理單元(CPU)102或多核CPU。變數(例如,神經信號和突觸權重)、與計算設備相關聯的系統參數(例如,帶有權重的神經網路)、延遲、頻率頻段資訊,以及任務資訊可被儲存在與神經處理單元(NPU)108相關聯的記憶體區塊中、與CPU 102相關聯的記憶體區塊中、與圖形處理單元(GPU)104相關聯的記憶體區塊中、與數位信號處理器(DSP)106相關聯的記憶體區塊中、記憶體區塊118中,或可跨多個區塊分佈。在CPU 102處執行的指令可從與CPU 102相關聯的程式記憶體載入或可從記憶體區塊118載入。
SOC 100亦可包括為具體功能定製的附加處理區塊(諸如GPU 104、DSP 106、連接性區塊110,其可包括第五代(5G)連接性、第四代長期進化(4G LTE)連接性、Wi-Fi連接性、USB連接性、藍芽連接性等)以及例如可偵測和辨識姿勢的多媒體處理器112。在一種實現中,NPU實現在CPU 102、DSP 106,及/或GPU 104中。SOC 100亦可包括感測器處理器114、圖像信號處理器(ISP)116,及/或導航模組120(其可包括全球定位系統)。
SOC 100可基於ARM指令集。在本案的一態樣中,載入到CPU 102中的指令可包括用於在與輸入值和濾波器權重的乘積相對應的查閱資料表(LUT)中搜尋所儲存的乘法結果的代碼。載入到CPU 102中的指令亦可包括用於在乘積的查閱資料表命中被偵測到時在該乘積的乘法操作期間禁用乘數的代碼。另外,載入到CPU 102中的指令可包括用於在乘積的查閱資料表未命中被偵測到時儲存輸入值和濾波器權重的所計算乘積的代碼。
SOC 100可進一步包括可程式設計電路陣列。如以下進一步詳細論述的,可程式設計電路陣列之每一者電路可以是包括複數個電阻器的單元。每個電路可被程式設計為選擇性地將主電阻器與一或多個輔助電阻器耦合或解耦,以在機器學習模型中實現權重參數。可程式設計電路陣列可被更新以反映用於機器學習模型的新權重參數,或者可根據需要被重新程式設計以實現不同機器學習模型。
SOC 100及/或其元件可被配置成在邊緣設備(諸如,自主機動交通工具(例如,自動駕駛汽車)或行動計算設備)處執行各種機器學習任務或深度學習任務。該等邊緣設備可具有有限的計算資源,但可在其中期望減少等待時間和資料通訊成本的環境中進行操作(例如,在從即時擷取的視訊資料執行物件辨識任務時,在本端執行辨識任務以最小化向遠端系統提供資料以供分析所涉及的等待時間等)。進一步地,該等邊緣設備可具有可限制可在邊緣設備外部揭示多少資料的安全性約束。經由使用可程式設計電路陣列來實現機器學習模型或深度學習架構,本案的各態樣可允許在邊緣設備上機器學習功能的功率高效執行。
深度學習架構可經由學習在每一層中以逐次更高的抽象水平來表示輸入、藉此構建輸入資料的有用特徵表示來執行物件辨識任務。以此方式,深度學習解決了傳統機器學習的主要瓶頸。在深度學習出現之前,用於物件辨識問題的機器學習辦法可能嚴重依賴人類工程設計的特徵,或許與淺分類器相結合。淺分類器可以是兩類線性分類器,例如,其中可將輸入值(例如,輸入向量分量)的加權和與閾值作比較以預測輸入屬於何者類別。人類工程設計的特徵可以是由擁有領域專業知識的工程師針對特定問題領域定製的模版或核心。相比之下,深度學習架構可學習以表示與人類工程師可能會設計的類似的特徵,但深度學習架構是經由訓練來學習的。此外,深度網路可以學習以表示和辨識人類可能還沒有考慮過的新類型的特徵。
深度學習架構可以學習特徵階層。例如,若向第一層呈遞視覺資料,則第一層可學習以辨識輸入串流中的相對簡單的特徵(諸如邊)。在另一實例中,若向第一層呈遞聽覺資料,則第一層可學習以辨識特定頻率中的頻譜功率。取第一層的輸出作為輸入的第二層可以學習以辨識特徵組合,諸如對於視覺資料辨識簡單形狀或對於聽覺資料辨識聲音組合。例如,更高層可學習以表示視覺資料中的複雜形狀或聽覺資料中的詞語。再高層可學習以辨識常見視覺物件或口語短語。
深度學習架構在被應用於具有自然階層結構的問題時可能表現特別好。例如,機動交通工具的分類可受益於首先學習以辨識輪子、擋風玻璃,以及其他特徵。該等特徵可在更高層以不同方式被組合以辨識轎車、卡車和飛機。
神經網路可被設計成具有各種連接性模式。在前饋網路中,資訊從較低層被傳遞到較高層,其中給定層之每一者神經元向更高層中的神經元進行傳達。如前述,可在前饋網路的相繼層中構建階層式表示。神經網路亦可具有遞迴或回饋(亦被稱為自頂向下(top-down))連接。在遞迴連接中,來自給定層中的神經元的輸出可被傳達給相同層中的另一神經元。遞迴架構可有助於辨識跨越多於一個按順序遞送給該神經網路的輸入資料組塊的模式。從給定層中的神經元到更低層中的神經元的連接被稱為回饋(或自頂向下)連接。當高層級概念的辨識可輔助辨別輸入的特定低層級特徵時,具有許多回饋連接的網路可能是有助益的。
深度置信網路(DBN)是包括多層隱藏節點的概率性模型。DBN可被用於提取訓練資料集的階層式表示。DBN可經由堆疊多層受限波爾茲曼機(RBM)來獲得。RBM是一類可在輸入集上學習概率分佈的人工神經網路。由於RBM可在沒有關於每個輸入應該被分類到何者類別的資訊的情況下學習概率分佈,因此RBM經常被用於無監督式學習中。使用混合無監督式和受監督式範式,DBN的底部RBM可按無監督方式被訓練並且可以用作特徵提取器,而頂部RBM可按受監督方式(在來自先前層的輸入和目標類別的聯合分佈上)被訓練並且可用作分類器。
深度迴旋網路(DCN)是迴旋網路的網路,其配置有附加的池化和正規化層。DCN已在許多任務上達成現有最先進的效能。DCN可使用受監督式學習來訓練,其中輸入和輸出目標兩者對於許多典範是已知的並被用於經由使用梯度下降法來修改網路的權重。
DCN可以是前饋網路。另外,如前述,從DCN的第一層中的神經元到下一更高層中的神經元群組的連接跨第一層中的神經元被共享。DCN的前饋和共享連接可被利用於進行快速處理。DCN的計算負擔可比例如類似大小的包括遞迴或回饋連接的神經網路的計算負擔小得多。 用於在邊緣設備上執行機器學習操作的示例性可程式設計電路
深度學習操作通常可在高效能中央處理單元(CPU)或專用處理器(諸如,張量處理器單元(TPU)或可程式設計圖形處理單元(GPU))上執行。深度學習操作可以在計算上是昂貴的且是記憶體密集的。進一步地,由於該等操作的計算管理負擔,在其上執行該等深度學習操作的處理器可消耗大量的功率(例如,超過200瓦的功率)。然而,在其上執行深度學習操作的該等CPU或專用處理器的功耗可以限制在各種邊緣設備(諸如,機動交通工具或行動電話)上實現深度學習操作的能力。
已經提出了將非揮發性記憶體(NVM)和憶阻器用於低能耗機器學習應用。憶阻器通常是可以經由增加或減小電路的電阻來改變儲存在記憶體設備中的值的記憶體設備。在機器學習應用中,已經提出了用於實現矩陣-向量及/或矩陣-矩陣乘法操作的憶阻器陣列。例如,可使用憶阻器的高密度交叉開關陣列,其中憶阻器在陣列的每個交叉點處連接字線和位元線,使得電壓集合的輸入向量被同時輸入到陣列中的每一條字線。在該等實例中,NVM可用作突觸來縮放信號或機器學習模型中使用的權重。可以經由改變機器學習模型中使用的權重來執行學習。NVM元件及/或憶阻器的陣列可以允許進行記憶體中計算(例如,執行記憶體中各種邏輯操作)以及權重固定資料流程(例如,執行各種操作而無需將資料移入或移出記憶體,而不是典型CPU或GPU中涉及三個記憶體讀取操作和一個記憶體寫入操作的乘法和累加操作),此舉可降低系統內移動資料的能耗。因為NVM和憶阻器可以允許功率高效計算,所以NVM和憶阻器可以適合在邊緣設備上執行深度學習或推斷的應用,而將計算上昂貴的模型訓練和開發留置在遠端伺服器上。
但是,憶阻器可能具有降低該等設備在邊緣設備中部署的適用性的其他特性。例如,憶阻器(諸如,電阻式隨機存取記憶體(RRAM)、相變記憶體(PCM)或自旋轉移轉矩(STT)磁性隨機存取記憶體(MRAM))可具有在製造時間產生的設備間差異且在程式設計之後具有程式當前依賴性。PCM電導電荷的標準差可以超過平均改變。RRAM可能需要大量的功率(例如,超過2.5伏)以供程式設計,並且可在電阻上具有較大的變化。最終,STT MRAM可具有限制STT MRAM與其他電路的整合的大小約束。例如,可利用大型程式設計電晶體和周邊電路系統在28 nm製程上製造STT MRAM,而邊緣設備中的其他積體電路(例如,CPU、GPU、SOC等)可能在較小光刻製程上被製造。
附加地,在半導體製造中可存在其他晶片間變化。可以從用於對半導體及/或後端(BEOL)金屬製程變化進行圖案化的前端(FEOL)設備產生變化。由於設備間和製造變化,可能能夠在雲端中訓練有限數目個具有用於機器學習應用的憶阻器的晶片;但是,可能無法在行動設備上訓練大量具有用於機器學習應用的憶阻器的晶片。例如,設備缺陷可導致一或多個失敗的憶阻器,諸如被凍結在高電導(「黏住」)或低電導(「脫離」)狀態的憶阻器。由於設備缺陷,每個晶片可具有數目不等的失敗憶阻器,此情形可能導致跨實現相同模型的不同晶片對於任何給定輸入的輸出變化。最後,因為NVM或憶阻器設備可使用與用於邊緣設備(例如,CPU、GPU、SOC等)的其他積體電路的製造中使用的批量製造製程不同的製造製程,所以NVM或憶阻器與邊緣設備中使用的處理器的整合可能受到限制。
為了允許在邊緣設備上進行能量高效的機器學習操作,本案的各態樣提供了一種包括可用於實現經訓練的機器學習模型(例如,深度神經網路)的權重參數的電阻器陣列的可程式設計電路。遠離邊緣設備(例如,專用伺服器或雲端計算系統)的電腦系統或電腦系統集群可以訓練機器學習模型(例如,深度神經網路)以決定突觸權重和偏置,並可以向邊緣設備提供所決定的突觸權重和偏置,並且該邊緣設備可對可程式設計電路相應地進行程式設計,以實現經訓練的機器學習模型。在一些態樣,可程式設計電路可針對特定任務被測試,以決定是否應更新突觸權重和偏置以滿足規範。進一步地,邊緣設備可在被部署時被更新以執行新任務或反映由遠端電腦系統或計算系統集群派生的新學習。
經由使用包括用於執行機器學習操作的電阻器陣列的可程式設計電路,本案的各態樣可允許在接近基於憶阻器的晶片的功率效率和速度的可程式設計電路上實現機器學習模型。該等可程式設計電路可避免使用憶阻器,而可使用在現有製程技術上製造的元件,從而可允許該等可程式設計電路的大量生產。此外,經由使用習知電子元件,晶片可被製造成具有一致特性(例如,陣列中的可程式設計電阻器的數目),跨不同晶片的變化性可被最小化,並且該等晶片可被調諧以緩解由金屬線電阻、電晶體變化和電阻器變化中的差異帶來的製造變化性。進一步地,可程式設計電路的允許對電路中的突觸權重和偏置進行更新的可調諧性可以允許將新學習能力部署到現場中的邊緣設備。
圖2圖示了根據本案的各態樣的可被程式設計以執行機器學習操作的可程式設計電路陣列200。如所圖示的,陣列200可包括複數個可程式設計電路202,其可以對應於圖3A和圖3B所圖示的可程式設計電路300。陣列200可包括n 條輸入線Vi 、Vi+1 、Vi+2 、...、Vi+n 的集合和m 條輸出線Nj 、Nj+1 、Nj+2 、...、Nj+m 的集合,其中nm 是正整數。輸入線V可以是字線,經由該等字線將表示特徵向量的類比輸入提供給陣列200,而輸出線N可以是位元線,該等位元線表示特徵向量元素與由陣列200中的可程式設計電路202的電阻值表示的突觸權重的乘積。陣列200之每一者可程式設計電路202可以位於輸入線V和輸出線N的交點處,使得每個可程式設計電路經由處理經由主電阻器和與該主電阻器並聯電耦合的任何輔助電阻器(例如,對應可程式設計熔斷器尚未被熔斷的輔助電阻器)接收到的電壓輸入(例如,來自輸入線V)來產生值。例如,如圖2所圖示,可程式設計電路202a、202b和202c可以分別位於輸入線Vi 與輸出線Nj 、Nj+1 和Nj+2 的交點處,使得可程式設計電路202a、202b和202c從輸入線Vi 接收輸入以供處理並在相應輸出線Nj 、Nj+1 和Nj+2 上產生輸出。類似地,可程式設計電路202d、202e和202f可以分別位於輸入線Vi+1 與輸出線Nj 、Nj+1 和Nj+2 的交點處,以處理來自輸入線Vi+1 的輸入,可程式設計電路202g、202h和202i可以分別位於輸入線Vi+2 與輸出線Nj 、Nj+1 和Nj+2 的交點處,以處理來自輸入線Vi+2 的輸入,依此類推。
陣列200之每一者可程式設計電路202可將輸出(例如,電流輸出)產生為通過可程式設計電路202的主電阻器的輸入值和通過與該主電阻器選擇性耦合的一或多個輔助電阻器的輸入值的組合。由複數個可程式設計電路產生的輸出可被組合(例如,電流求和)作為陣列200中的單個輸出線的輸出。例如,由可程式設計電路202a、202d和202g產生的輸出可被組合成在輸出線Nj 上產生的輸出,由可程式設計電路202b、202e和202h產生的輸出可被組合成在輸出線Nj+1 上產生的輸出,由可程式設計電路202c、202f和202i產生的輸出可被組合成在輸出線Nj+2 上產生的輸出,依此類推。通常,從每個可程式設計電路202在輸出線N上產生的輸出可以是特徵向量元素和由輸出線上的每個可程式設計電路的總可程式設計電阻表示的突觸權重的乘積。如本文中所論述,在經由多個可程式設計電路202產生輸出時,乘法和累加操作可被整合到陣列200中,此舉可減少機器學習操作期間的能量消耗。對於某些態樣,可將由給定輸出線N上的可程式設計電路產生的所組合電流作為輸入類比信號提供給下一階段(例如,另一類比電路)。對於其他態樣,所組合位元線電流可被用於給電容器充電以產生輸出尖峰。在該情形中,當電容器由各種合適的技術中的任何一者觸發時(例如,當電容器電壓達到預定電壓時觸發尖峰的電路),電容器可以放電以產生尖峰。對於又一些其他態樣,可以由類比數位轉換器(ADC)將所組合位元線電流轉換為數位信號。
在一些態樣,可在對陣列200中的可程式設計電路202進行程式設計以驗證陣列200在規範內操作(例如,對於給定輸入產生機器學習程序的所預期結果)之後,可對陣列200進行測試。若陣列200未產生所預期結果(例如,由於可程式設計電路202中一或多個元件的製造變化或誤差),則陣列200可被進一步測試以辨識陣列中超出規範並導致陣列200產生不正確結果的一或多個可程式設計電路202。在所辨識的一或多個可程式設計電路202中的可程式設計熔斷器可被熔斷,以便調節可程式設計電路202的突觸權重或從陣列200有效地移除所辨識的一或多個可程式設計電路202。
圖3A圖示了使用具有主電阻器和輔助電阻器的電阻器陣列以實現機器學習模型的權重值的示例性可程式設計電路300A。可程式設計電路300A可對應於圖2所圖示的任何可程式設計電路202。可程式設計電路300A可使用標準電子元件(諸如,金屬電阻器、可程式設計熔斷器和電晶體),如以上所論述的,該等標準電子元件可以促進在其他積體電路(諸如,CPU或SOC)中可程式設計電路300A(或其陣列)的實現。如所圖示的,可程式設計電路300A包括主電阻器302和輔助電阻器電路303A。如所圖示的,輔助電阻器電路303A可包括輔助電阻器304、可程式設計熔斷器306(例如,電熔絲)、熔斷器程式設計開關308和程式設計賦能開關310。如以下進一步詳細論述的,輔助電阻器電路303A可被選擇性地程式設計以在機器學習模型中實現作為主電阻器302和輔助電阻器304的電阻的組合的變化權重值。
主電阻器302和被包括作為輔助電阻器電路303A一部分的輔助電阻器304可被並聯建立,以使用主電阻器302和輔助電阻器304的所組合電阻來實現機器學習模型中的權重值。在一些態樣,主電阻器302可包括高電阻電阻器,而輔助電阻器304可包括高電阻電阻器或低電阻電阻器。在一些態樣,主電阻器302和輔助電阻器304可包括具有大致相等電阻的電阻器。與電阻相差一或多個數量級的電阻器相比,對主電阻器302和輔助電阻器304兩者使用電阻大致相等的電阻器提供在被程式設計到每個可程式設計電路300A中的權重中增加的調節範圍。主電阻器302及/或輔助電阻器304可被實現作為精密金屬電阻器。
可程式設計電路300A通常將電流輸出產生為流經主電阻器302和潛在地通過輔助電阻器304的電流的總和。對於基本不修改輸入的值的權重值,可程式設計電路300A可被程式設計以使輔助電阻器304與主電阻器302解耦,使得可程式設計電路300A的電流輸出不改變或最小地改變,是由於在該情形中可程式設計電路300A的總電阻等於主電阻器302的電阻。對於修改輸入的值的權重值,可程式設計電路300A可被程式設計使得主電阻器302和輔助電阻器304並聯電耦合以產生輸出值。經由並聯耦合主電阻器302和輔助電阻器304,可根據下式計算輸出電流Nj
Figure 02_image001
,其中該總電阻是主電阻器302和輔助電阻器304的電阻的並聯組合,該總電阻具有小於並聯組合中任何個體電阻器的值,並且因此導致相對較大的輸出電流Nj
為了對可程式設計電路300A進行程式設計,程式設計賦能開關310可被切換到程式設計狀態(例如,經由封閉開關來啟用),並且熔斷器程式設計開關308可被設置為向輔助電阻器電路303A內的可程式設計熔斷器306施加電壓。程式設計賦能開關310可例如經由將控制信號ENprog輸入到程式設計賦能開關310中以選擇性地賦能輔助電阻器電路303A的程式設計來切換到程式設計狀態。熔斷器程式設計開關308可被耦合在第一節點312與第二節點314之間。為了對可程式設計熔斷器306進行程式設計(例如,選擇性地將熔斷器306熔斷並使輔助電阻器304與可程式設計電路300A解耦),控制信號P1可被輸入到熔斷器程式設計開關308以允許將電壓P強制 施加到可程式設計熔斷器306。電壓P強制 可經由第一節點312輸入到熔斷器程式設計開關308中,並經由第二節點314選擇性地施加到可程式設計熔斷器306。通常,將程式設計賦能開關310置於程式設計狀態中並導通P1控制信號允許程式設計電流流過熔斷器程式設計開關308、可程式設計熔斷器306和程式設計賦能開關310並流出到可程式設計電路300A的參考電勢節點(例如,電接地)。電壓P強制 在經由熔斷器程式設計開關308被施加到可程式設計熔斷器306時可能足以熔斷可程式設計熔斷器306並使輔助電阻器304與主電阻器302電解耦。例如,電壓P強制 可以是電源電壓。在一些態樣,電壓亦可以經由熔斷器程式設計開關308施加到可程式設計熔斷器306,以將熔斷器反向熔斷並將輔助電阻器304重新耦合至主電阻器302。
圖3B圖示了在輔助電阻器電路303B中包括複數個輔助電阻器的示例性可程式設計電路300B。可程式設計電路300B可對應於圖2所圖示的任何可程式設計電路202。如所圖示,程式設計賦能開關310和熔斷器程式設計開關308A和308B可操作以經由分別將輔助電阻器304A和304B與主電阻器302電耦合或解耦來對可程式設計電路300B進行程式設計。儘管僅兩個輔助電阻器304A和304B在圖3B中被圖示,讀者將理解一些態樣可包括多於兩個選擇性地並聯耦合的輔助電阻器。然而,為了便於描述和說明概念,以下描述將利用兩個輔助電阻器。
當程式設計賦能開關310被切換到程式設計狀態時(例如,經由將ENprog控制信號施加到程式設計賦能開關310),熔斷器程式設計開關308A可被設置(例如,經由將P1信號施加到熔斷器程式設計開關308A)以將節點312A處的電壓Pforce_1 經由第二節點314A施加到熔斷器306A。分開地,熔斷器程式設計開關308B可被設置(例如,經由將P2信號施加到熔斷器程式設計開關308B)以將節點312B處的電壓Pforce_2 經由第二節點314B施加到熔斷器306B。如所論述的,電壓Pforce_1 和Pforce_2 可以分別用於將熔斷器306A和306B熔斷,其可以使輔助電阻器電路303B中的輔助電阻器304與主電阻器302電解耦,或者可以用於將熔斷器306A和306B反向熔斷,其使輔助電阻器電路303B中的輔助電阻器304A和304B與主電阻器302並聯電耦合。儘管圖3B圖示了可以經由導通程式設計賦能開關310以及相應熔斷器程式設計開關308A及/或308B來個體地選擇性地將熔斷器306A和306B熔斷,但是應認識到,可使用單個熔斷器程式設計開關308共同地將可程式設計熔斷器306熔斷(例如,基於要由可程式設計電路300B實現的權重值來將輔助電阻器電路303B中的所有輔助電阻器304與主電阻器302解耦)。
在一些態樣,被電耦合至主電阻器302的輔助電阻器304的數目可以對應於用於權重值的位元的數目。例如,可使用主電阻器302和單個輔助電阻器304在可程式設計電路300A中實現兩位元權重值,可使用主電阻器302和兩個輔助電阻器304A和304B在可程式設計電路300B中實現三位元加權值,依此類推。
為了操作可程式設計電路300以執行機器學習操作,熔斷器程式設計開關308和程式設計賦能開關310可被關斷(例如,經由斷開開關來停用)。關斷熔斷器程式設計開關308和程式設計賦能開關310使可程式設計電路300能夠接收表示特徵向量或要對其執行機器學習操作的其他輸入的電輸入,使電輸入通過主電阻器302和任何耦合的輔助電阻器304,並且將輸出值產生為主電阻器302和與主電阻器302並聯耦合的任何輔助電阻器304的輸出的組合。
圖4圖示了根據本案的各態樣的可由具有可程式設計電路的設備執行以執行機器學習操作的示例性操作400。如所圖示,操作400始於方塊402處,其中設備從伺服器接收要在可程式設計電路上實現的經訓練的機器學習模型的權重值。如所論述的,權重值可由伺服器經由處理伺服器上的訓練資料集來產生,使得機器學習模型可被部署在邊緣設備上,而無需在訓練機器學習模型中涉及該邊緣設備。
在方塊404處,設備基於經訓練的機器學習模型的權重值,經由選擇性地解耦與主電阻器並聯耦合的一或多個輔助電阻器來對該可程式設計電路進行程式設計。為了選擇性地解耦一或多個輔助電阻器,設備可以啟用可程式設計電路中的程式設計賦能開關以將電路切換到寫入模式,並啟用可程式設計電路中的熔斷器程式設計開關以允許將電壓施加到可程式設計熔斷器,該電壓足以將該可程式設計熔斷器熔斷並使與可程式設計熔斷器耦合的輔助電阻器變為與可程式設計電路中的主電阻器電解耦。當可程式設計電路被程式設計時,設備可以經由斷開(關斷)程式設計賦能開關和熔斷器程式設計開關來退出程式設計模式,從而允許其他輸入流入可程式設計電路以供處理。
在方塊406處,系統使用經程式設計的可程式設計電路來操作該設備。為了使用經程式設計的可程式設計電路來操作該設備,系統可接收要對其執行機器學習操作的資料。該資料例如可以是與所擷取的圖像、音訊、文字資料等相對應的位元串流。該系統可將該位元串流轉換為類比信號,將該類比信號輸入至經程式設計的可程式設計電路,並從經程式設計的可程式設計電路接收表示對輸入信號執行機器學習操作的結果的輸出信號。
根據一些態樣,選擇性地解耦可程式設計電路中的一或多個輔助電阻器包括選擇性地將一或多個可程式設計熔斷器熔斷,以使可程式設計電路中的該一或多個輔助電阻器與可程式設計電路中的主電阻器電解耦。可程式設計熔斷器中的每一個可程式設計熔斷器可與該一或多個輔助電阻器中的一輔助電阻器串聯耦合(例如,在輔助電阻器電路303A中)。根據一些態樣,選擇性地將一或多個可程式設計熔斷器熔斷可包括選擇性地封閉(啟用或導通)一或多個開關,每個開關被耦合在被耦合至電壓源的第一節點與被耦合至輔助電阻器和可程式設計熔斷器的第二節點之間。
根據一些態樣,系統可進一步基於經訓練的機器學習模型的經更新權重值來對可程式設計電路進行重新程式設計。
根據一些態樣,系統可進一步對可程式設計電路進行重新程式設計以實現不同機器學習模型。
根據一些態樣,使用可程式設計電路來操作該設備包括接收包括被表示為類比輸入的特徵向量的輸入。輸出可以基於特徵向量的元素與主電阻器和與該主電阻器耦合的一或多個輔助電阻器的電阻的乘積來產生。
根據一些態樣,電路中的一或多個輔助電阻器的數目對應於與權重值相關聯的精度的位元數目。
根據一些態樣,使用經程式設計的可程式設計電路來操作設備包括在乘法和累加操作中將可程式設計電路的輸出與一或多個其他可程式設計電路的輸出結合使用。
根據一些態樣,經訓練的機器學習模型是基於經訓練以執行特定任務的深度神經網路的。
根據一些態樣,該設備可以包括行動計算設備。根據一些態樣,該設備可以包括自主機動交通工具。
圖5圖示了根據本案的各態樣的可被執行以對設備進行程式設計的示例性操作500。如所論述的,該設備可具有複數條字線、複數條位元線和可程式設計電路陣列。可程式設計電路陣列之每一者可程式設計電路可被耦合至複數條字線中的對應字線和複數條位元線中的對應位元線。對可程式設計電路進行程式設計可以經由選擇性地將串聯的輔助電阻器與主電阻器耦合或解耦來修改可程式設計電路的總電阻。
如所圖示,操作500始於方塊502處,其中設備經由使用程式設計電路選擇性地將熔斷器熔斷來對可程式設計電路陣列中的可程式設計電路進行程式設計。熔斷器可與輔助電阻器串聯耦合,且該輔助電阻器和熔斷器可被耦合在對應字線與對應位元線之間。主電阻器亦可被耦合在對應字線與對應位元線之間。為了對可程式設計電路進行程式設計,該設備使用程式設計電路選擇性地將熔斷器熔斷。經由選擇性地熔斷與輔助電阻器耦合的熔斷器,該設備可將輔助電阻器與可程式設計電路中的主電阻器解耦。一旦被解耦,則輔助電阻器可以不再被耦合在字線和位元線之間,從而將可程式設計電路的總電阻調節為主電阻器和仍然與主電阻器串聯耦合的輔助電阻器(若有)的電阻的組合。
在方塊504處,系統使用經程式設計的可程式設計電路來操作該設備。為了使用經程式設計的可程式設計電路來操作該設備,系統可接收要對其執行機器學習操作的資料。該資料例如可以是與所擷取的圖像、音訊、文字資料等相對應的位元串流。該系統可將該位元串流轉換為類比信號,將該類比信號輸入至經程式設計的可程式設計電路,並從經程式設計的可程式設計電路接收表示對輸入信號執行機器學習操作的結果的輸出信號。
圖6圖示了其中具有可程式設計電路陣列的邊緣設備可由伺服器程式設計為實現機器學習模型的示例性聯網環境。如所圖示,聯網環境600包括邊緣設備620、訓練伺服器630和訓練資料儲存庫640,至少該邊緣設備620和該訓練伺服器630經由網路610連接。
邊緣設備620可表示將在其上執行機器學習操作(諸如,從圖像或一系列所擷取的圖像進行物件辨識)的設備。邊緣設備620可包括例如行動電話、平板電腦、膝上型或桌上型電腦、自主機動交通工具,或可在其上執行機器學習操作的其他設備。因為邊緣設備620可能是計算資源或功率受限的,所以在該等設備上訓練機器學習模型可能不切實際;但是,可以在該等設備上執行經訓練的機器學習模型。
如所圖示,邊緣設備620包括收發機622、處理器624和可程式設計電路626。收發機622通常從訓練伺服器630接收資訊,該資訊包括要在可程式設計電路626中實現以便在邊緣設備620上執行機器學習操作的模型權重參數。收發機622將參數傳遞給處理器624,該處理器可產生程式設計信號,並將該程式設計信號輸入到可程式設計電路626(例如,如圖3A的可程式設計電路300A所示實現的)。如以上所論述的,程式設計信號可包括被施加到熔斷器程式設計開關和程式設計賦能開關的電壓,以將可程式設計電路626切換到程式設計模式,並選擇性地將一或多個輔助電阻器與可程式設計電路626中的主電阻器解耦。在已經對可程式設計電路進行了程式設計之後,處理器624可將可程式設計電路626切換到操作模式,獲得要對其執行機器學習操作的資料,並將所獲得資料傳遞給經程式設計的可程式設計電路626以供處理。
訓練伺服器630通常表示在其上機器學習模型可被訓練以用於邊緣設備620上的部署的伺服器、伺服器集群、雲端計算例子或其他計算設備。如所圖示,訓練伺服器630包括模型訓練器632和收發機634。模型訓練器632可被配置成基於從訓練資料儲存庫640取得的資料集,使用無監督式、半監督式或完全監督式機器學習技術來訓練機器學習模型。無監督式學習技術可以針對來自訓練資料儲存庫640的原始的、未註釋的訓練資料集來執行。半監督式學習技術可以針對來自訓練資料儲存庫640的訓練資料集來執行,該訓練資料集包括可用於驗證機器學習模型的經標記的資料集和未經標記的資料集。受監督式學習技術可以針對來自訓練資料儲存庫640的經標記的訓練資料集來執行。
在模型訓練器632已經訓練了機器學習模型(例如,決定了要應用於輸入到機器學習模型的資料的權重)之後,訓練伺服器630可以經由收發機634將關於機器學習模型的資訊輸出到一或多個邊緣設備620並且指示邊緣設備620根據輸出資訊對可程式設計電路626進行程式設計。附加資訊可以隨時間經由收發機634被輸出,例如以更新被部署在邊緣設備620上的機器學習模型及/或在邊緣設備620上實現新機器學習模型。
圖7是圖示可使人工智慧(AI)功能模組化的示例性軟體架構700的方塊圖。根據本案的各態樣,使用架構700,應用可被設計成可使得SOC 720的各種處理區塊(例如,CPU 722、DSP 724、GPU 726及/或NPU 728)支援使用深度產生性模型的視訊壓縮及/或解壓縮。
AI應用程式702可被配置成調用在使用者空間704中定義的功能,該功能可例如使用深度產生性模型來壓縮及/或解壓縮視訊信號(或其經編碼版本)。例如,AI應用程式702可取決於辨識出的場景是辦公室、報告廳、餐館、亦是室外環境(諸如湖泊)而以不同方式配置話筒和相機。AI應用程式702可以請求編譯與在AI功能應用程式設計介面(API)706中定義的庫相關聯的程式碼。該請求可最終依賴於被配置成基於例如視訊和定位資料來提供推斷回應的深度神經網路的輸出。
運行時間引擎708(其可以是運行時間框架的經編譯代碼)可進一步可由AI應用程式702存取。例如,AI應用程式702可使得運行時間引擎請求以特定的時間區間或由應用程式的使用者介面偵測到的事件觸發的推斷。在使得運行時間引擎提供推斷回應時,運行時間引擎可進而將信號發送到在SOC 720上執行的作業系統(OS)空間710(諸如Linux核心712)中的作業系統。作業系統進而可使得要在CPU 722、DSP 724、GPU 726、NPU 728,或其某種組合上執行使用深度產生性模型的視訊壓縮及/或解壓縮。CPU 722可由作業系統直接存取,而其他處理區塊可經由驅動器(諸如分別用於DSP 724、GPU 726,或NPU 728的驅動器714、716或718)來存取。在示例性實例中,深度神經網路可被配置成在處理區塊(諸如CPU 722、DSP 724和GPU 726)的組合上執行,或可在NPU 728上執行。
用於接收的構件可包括例如收發機(例如,圖1所圖示的連接性區塊110及/或圖5所圖示的收發機522)。用於程式設計的構件和用於重新程式設計的構件可包括處理器(諸如,圖1中所圖示的CPU 102、GPU 104、DSP 106或NPU 108及/或圖6中所圖示的處理器624)及/或開關(諸如,圖3A和圖3B中的開關308、308A、308B及/或310)。用於操作的構件可包括處理器,諸如圖1中所圖示的CPU 102、GPU 104、DSP 106或NPU 108及/或圖6中所圖示的處理器624。用於產生的構件可包括圖3A或圖3B所圖示的可程式設計電路300A或300B及/或圖2所圖示的可程式設計電路陣列200。
結合本文中所描述的各態樣所描述的各種說明性電路可以在積體電路(IC)(諸如,處理器、數位信號處理器(DSP)、特殊應用積體電路(ASIC)、現場可程式設計閘陣列(FPGA)或其他可程式設計邏輯設備)中實現或與其實現。處理器可以是微處理器,但在替換方案中,處理器可以是任何習知處理器、控制器、微控制器或狀態機。處理器亦可以被實現為計算設備的組合,例如,DSP與微處理器的組合、複數個微處理器、與DSP核心協同的一或多個微處理器,或任何其他此類配置。
亦注意到,本文任何示例性態樣中所描述的操作步驟是為了提供實例而被描述的。所描述的操作可按除了所圖示的順序之外的眾多不同順序來執行。此外,在單個操作步驟中描述的操作實際上可在多個不同步驟中執行。另外,可組合示例性態樣中論述的一或多個操作步驟。將理解,如對熟習此項技術者將顯而易見地,在流程圖中圖示的操作步驟可進行眾多不同的修改。熟習此項技術者亦將理解,資訊和信號可使用各種不同技術和技藝中的任何一種來表示。例如,貫穿上文說明始終可能被述及的資料、指令、命令、資訊、信號、位元、符號和碼片可由電壓、電流、電磁波、磁場或磁粒子、光場或光粒子,或其任何組合來表示。
如本文中所使用的,引述一列項目「中的至少一者」的短語是指該等項目的任何組合,包括單個成員。作為實例,「a、b或c中的至少一者」意欲涵蓋:a、b、c、a-b、a-c、b-c和a-b-c,以及具有多重相同元素的任何組合(例如,a-a、a-a-a、a-a-b、a-a-c、a-b-b、a-c-c、b-b、b-b-b、b-b-c、c-c和c-c-c,或者a、b和c的任何其他排序)。
提供本案內容是為使得任何熟習此項技術者皆能夠製作或使用本案內容的各態樣。對本案的各種修改對熟習此項技術者而言將容易是顯而易見的,並且本文中所定義的普適原理可被應用到其他變型而不會脫離本案的精神或範疇。由此,本案並非意欲被限定於本文中所描述的實例和設計,而是應被授予與本文中所揭示的原理和新穎特徵一致的最廣義的範疇。
100:晶片上系統(SOC) 102:中央處理單元(CPU) 104:圖形處理單元(GPU) 106:數位信號處理器(DSP) 108:NPU 110:連接性區塊 112:多媒體處理器 114:感測器處理器 116:圖像信號處理器(ISP) 118:記憶體區塊 120:導航模組 200:可程式設計電路陣列 202a:可程式設計電路 202b:可程式設計電路 202c:可程式設計電路 202d:可程式設計電路 202e:可程式設計電路 202f:可程式設計電路 202g:可程式設計電路 202h:可程式設計電路 202i:可程式設計電路 300A:可程式設計電路 300B:可程式設計電路 302:主電阻器 303A:輔助電阻器電路 303B:輔助電阻器電路 304:輔助電阻器 304A:輔助電阻器 304B:輔助電阻器 306:可程式設計熔斷器 306A:熔斷器 306B:熔斷器 308:熔斷器程式設計開關 308A:熔斷器程式設計開關 308B:熔斷器程式設計開關 310:程式設計賦能開關 312:第一節點 312A:節點 312B:節點 314:第二節點 314A:第二節點 314B:第二節點 400:操作 402:方塊 404:方塊 406:方塊 500:操作 502:方塊 504:方塊 600:聯網環境 610:網路 620:邊緣設備 622:收發機 624:處理器 626:可程式設計電路 630:訓練伺服器 632:模型訓練器 634:收發機 640:訓練資料儲存庫 700:架構 702:AI應用程式 704:使用者空間 706:AI功能應用程式設計介面(API) 708:運行時間引擎 710:作業系統(OS)空間 712:Linux核心 714:驅動器 716:驅動器 718:驅動器 720:SOC 722:CPU 724:DSP 726:GPU 728:NPU
圖1圖示了晶片上系統(SOC)的示例性實現。
圖2圖示了根據本案的各態樣的可被程式設計以執行機器學習操作的可程式設計電路的示例性陣列。
圖3A圖示了根據本案的各態樣的包括用於實現機器學習模型的權重參數的主電阻器和輔助電阻器的示例性可程式設計電路。
圖3B圖示了根據本案的各態樣的用於實現機器學習模型的權重參數的包括主電阻器和複數個輔助電阻器的示例性可程式設計電路。
圖4圖示了根據本案的各態樣的用於在具有可程式設計電路的設備上執行機器學習操作的示例性操作。
圖5圖示了根據本案的各態樣的用於對可程式設計電路進行程式設計以調節可程式設計電路的電阻的示例性操作。
圖6圖示根據本案的各態樣的其中邊緣設備中的可程式設計電路被程式設計以實現經訓練的機器學習模型的示例性聯網環境。
圖7圖示根據本案的各態樣的用於將人工智慧(AI)功能模組化的示例性軟體架構的方塊圖。
國內寄存資訊(請依寄存機構、日期、號碼順序註記) 無 國外寄存資訊(請依寄存國家、機構、日期、號碼順序註記) 無
300A:可程式設計電路
302:主電阻器
304:輔助電阻器
306:可程式設計熔斷器
308:熔斷器程式設計開關
310:程式設計賦能開關
312:第一節點
314:第二節點

Claims (30)

  1. 一種用於對一設備進行程式設計的裝置,包括:複數條字線;複數條位元線;及一可程式設計電路陣列,其中每個可程式設計電路被耦合至該複數條字線中的一對應字線和該複數條位元線中的一對應位元線,並且包括:一主電阻器,其被耦合在該對應字線與該對應位元線之間,一輔助電阻器,一熔斷器,其與該輔助電阻器串聯耦合,其中該輔助電阻器和該熔斷器被耦合在該對應字線與該對應位元線之間,以及一程式設計電路,其被配置成選擇性地將該熔斷器熔斷。
  2. 如請求項1之裝置,其中:該可程式設計電路進一步包括耦合至至少一個附加熔斷器的至少一個附加輔助電阻器,該至少一個附加輔助電阻器和該至少一個附加熔斷器串聯連接,以及該程式設計電路被配置成選擇性地將該熔斷器和該至少一個附加熔斷器中的一者或多者熔斷。
  3. 如請求項1之裝置,其中該可程式設計電路進一步包括一或多個開關,每個開關被耦合在被耦合至 一電壓源的一第一節點與被耦合至該輔助電阻器和該熔斷器的一第二節點之間。
  4. 如請求項1之裝置,進一步包括一處理器,其被配置成:基於一經訓練的機器學習模型的一經更新權重值來對該陣列中的該等可程式設計電路中的至少一者進行重新程式設計。
  5. 如請求項1之裝置,進一步包括一處理器,其被配置成:對該陣列中的該等可程式設計電路中的至少一者進行重新程式設計以實現一不同機器學習模型。
  6. 如請求項1之裝置,其中每個可程式設計電路中的輔助電阻器的一數目對應於與一經訓練的機器學習模型的權重值相關聯的精度的一位元數目。
  7. 如請求項1之裝置,其中該可程式設計電路陣列之每一者可程式設計電路的一輸出用於一乘法和累加操作。
  8. 如請求項1之裝置,其中該可程式設計電路陣列被配置以執行一經訓練的機器學習模型,且其中該經訓練的機器學習模型是基於經訓練以執行一特定任務的一深度神經網路的。
  9. 如請求項1之裝置,其中該裝置是一行動計算設備。
  10. 如請求項1之裝置,其中該裝置是一自主機 動交通工具。
  11. 一種用於對具有複數條字線、複數條位元線和一可程式設計電路陣列的一設備進行程式設計的方法,其中每個可程式設計電路被耦合至該複數條字線中的一對應字線和該複數條位元線中的一對應位元線,該方法包括以下步驟:經由選擇性地將一熔斷器熔斷來對該可程式設計電路陣列中的一可程式設計電路進行程式設計,其中:該熔斷器與一輔助電阻器串聯耦合,該輔助電阻器和該熔斷器被耦合在該對應字線與該對應位元線之間,並且一主電阻器被耦合在該對應字線與該對應位元線之間;及使用該經程式設計的可程式設計電路來操作該設備。
  12. 如請求項11之方法,其中該選擇性地將該熔斷器熔斷之步驟包括以下步驟:選擇性地將與該輔助電阻器耦合的該熔斷器和與至少一個附加輔助電阻器耦合的至少一個附加熔斷器中的一者或多者熔斷,該至少一個附加熔斷器和該至少一個附加輔助電阻器串聯連接。
  13. 如請求項12之方法,其中該選擇性地將該熔斷器熔斷之步驟包括以下步驟:選擇性地封閉一或多個開關,每個開關被耦合在被耦合到一電壓源的一第一節點與被耦合到該輔助電阻器和該熔斷器的一第二節點 之間。
  14. 如請求項11之方法,其中該可程式設計電路被程式設計為實現一經訓練的機器學習模型,並且基於該經訓練的機器學習模型的一權重值來程式設計。
  15. 如請求項14之方法,進一步包括以下步驟:基於該經訓練的機器學習模型的一經更新權重值來對該可程式設計電路進行重新程式設計。
  16. 如請求項14之方法,進一步包括以下步驟:對該可程式設計電路進行重新程式設計以實現一不同機器學習模型。
  17. 如請求項14之方法,其中該經訓練的機器學習模型是基於經訓練以執行一特定任務的一深度神經網路的。
  18. 如請求項14之方法,其中該可程式設計電路中的輔助電阻器的一數目對應於與該經訓練的機器學習模型的該權重值相關聯的精度的一位元數目。
  19. 如請求項11之方法,其中該使用該可程式設計電路來操作該設備之步驟包括以下步驟:接收包括被表示為一類比輸入的一特徵向量的一輸入;及基於該特徵向量的一元素與該主電阻器和該輔助電阻器的一電阻的一乘積來產生一輸出。
  20. 如請求項11之方法,其中該操作之步驟包括以下步驟:在一乘法和累加操作中,將該可程式設計 電路的一輸出與該可程式設計電路陣列中的一或多個其他可程式設計電路的一輸出結合使用。
  21. 如請求項11之方法,其中該設備包括一行動計算設備或一自主機動交通工具中的一者。
  22. 一種用於對一設備進行程式設計的裝置,包括:複數條字線;複數條位元線;一可程式設計電路陣列,其中每個可程式設計電路被耦合到該複數條字線中的一對應字線和該複數條位元線中的一對應位元線;用於經由以下操作來對該可程式設計電路陣列中的一可程式設計電路進行程式設計的構件:使用該用於進行程式設計的構件選擇性地將一熔斷器熔斷,其中:該熔斷器與一輔助電阻器串聯耦合,該輔助電阻器和該熔斷器被耦合在該對應字線與該對應位元線之間,以及一主電阻器被耦合在該對應字線與該對應位元線之間;及用於使用該經程式設計的可程式設計電路來操作該裝置的構件。
  23. 如請求項22之裝置,其中該用於進行程式設計的構件被配置成選擇性地將與該輔助電阻器耦合的該熔斷器和與至少一個附加輔助電阻器耦合的至少一個 附加熔斷器中的一者或多者熔斷,該至少一個附加熔斷器和該至少一個附加輔助電阻器串聯連接。
  24. 如請求項23之裝置,其中該用於進行程式設計的構件被配置成經由封閉一或多個開關來選擇性地將該熔斷器熔斷,每個開關被耦合在被耦合到一電壓源的一第一節點與被耦合到該輔助電阻器和該熔斷器的一第二節點之間。
  25. 如請求項22之裝置,其中該可程式設計電路被程式設計為實現一經訓練的機器學習模型,其中該可程式設計電路基於該經訓練的機器學習模型的一權重值來程式設計,並且其中該裝置進一步包括用於基於該經訓練的機器學習模型的一經更新權重值來對該可程式設計電路進行重新程式設計的構件。
  26. 如請求項22之裝置,其中該可程式設計電路被程式設計為實現一經訓練的機器學習模型,並且其中該裝置進一步包括用於對該可程式設計電路進行重新程式設計以實現一不同機器學習模型的構件。
  27. 如請求項22之裝置,其中該用於使用該經程式設計的可程式設計電路來操作該裝置的構件包括:用於接收包括被表示為一類比輸入的一特徵向量的一輸入的構件;及用於基於該特徵向量的一元素與該主電阻器和該輔助電阻器的一電阻的一乘積來產生一輸出的構件。
  28. 如請求項22之裝置,其中該可程式設計電 路被程式設計為實現一經訓練的機器學習模型,其中該可程式設計電路基於該經訓練的機器學習模型的一權重值來程式設計,並且其中該可程式設計電路中的輔助電阻器的一數目對應於與該經訓練的機器學習模型的該權重值相關聯的精度的一位元數目。
  29. 如請求項22之裝置,其中該用於操作的構件包括:用於在一乘法和累加操作中,將該可程式設計電路的一輸出與該可程式設計電路陣列中的一或多個其他可程式設計電路的一輸出結合使用的構件。
  30. 一種其上儲存有指令的非暫時性電腦可讀取媒體,該等指令在由一處理器執行時執行用於對包括該處理器、複數條字線、複數條位元線和一可程式設計電路陣列的一設備進行程式設計的一操作,其中每個可程式設計電路被耦合至該複數條字線中的一對應字線和該複數條位元線中的一對應位元線,該操作包括:經由選擇性地將一熔斷器熔斷來對該可程式設計電路陣列中的一可程式設計電路進行程式設計,其中:該熔斷器與一輔助電阻器串聯耦合,該輔助電阻器和該熔斷器被耦合在該對應字線與該對應位元線之間,並且一主電阻器被耦合在該對應字線與該對應位元線之間;及使用該經程式設計的可程式設計電路來操作該設備。
TW109129455A 2019-08-30 2020-08-28 用於在邊緣設備上執行機器學習操作的可程式設計電路 TWI736404B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/556,505 US10825536B1 (en) 2019-08-30 2019-08-30 Programmable circuits for performing machine learning operations on edge devices
US16/556,505 2019-08-30

Publications (2)

Publication Number Publication Date
TW202119426A TW202119426A (zh) 2021-05-16
TWI736404B true TWI736404B (zh) 2021-08-11

Family

ID=72433018

Family Applications (1)

Application Number Title Priority Date Filing Date
TW109129455A TWI736404B (zh) 2019-08-30 2020-08-28 用於在邊緣設備上執行機器學習操作的可程式設計電路

Country Status (8)

Country Link
US (1) US10825536B1 (zh)
EP (1) EP4022618A1 (zh)
JP (1) JP7157893B2 (zh)
KR (1) KR102466979B1 (zh)
CN (1) CN114270441B (zh)
BR (1) BR112022003243A2 (zh)
TW (1) TWI736404B (zh)
WO (1) WO2021041526A1 (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11348002B2 (en) * 2017-10-24 2022-05-31 International Business Machines Corporation Training of artificial neural networks
US11574173B2 (en) * 2019-12-19 2023-02-07 Qualcomm Incorporated Power efficient near memory analog multiply-and-accumulate (MAC)
US20210406661A1 (en) * 2020-06-25 2021-12-30 PolyN Technology Limited Analog Hardware Realization of Neural Networks
US20210406662A1 (en) * 2020-06-25 2021-12-30 PolyN Technology Limited Analog hardware realization of trained neural networks for voice clarity
US11983619B2 (en) * 2020-08-14 2024-05-14 Micron Technology, Inc. Transformer neural network in memory
US11694733B2 (en) 2021-08-19 2023-07-04 Apple Inc. Acceleration of in-memory-compute arrays

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020003447A1 (en) * 2000-07-04 2002-01-10 Fujitsu Limited Trimming circuit of semiconductor integrated device
US20110080765A1 (en) * 2008-04-16 2011-04-07 Silicon Line Gmbh Programmable antifuse transistor and method for programming thereof
US20150279479A1 (en) * 2014-04-01 2015-10-01 Qualcomm Incorporated Anti-fuse one-time programmable resistive random access memories
WO2019043446A1 (en) * 2017-09-04 2019-03-07 Nng Software Developing And Commercial Llc METHOD AND APPARATUS FOR COLLECTING AND USING SENSOR DATA FROM A VEHICLE
US20190138534A1 (en) * 2018-12-28 2019-05-09 Intel Corporation Technologies for providing dynamic persistence of data in edge computing
US20190180173A1 (en) * 2017-12-11 2019-06-13 Gyrfalcon Technology Inc. Method and apparatus for using reference resistor in one-time programmable memory of an artificial intelligence integrated circuit

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9182767B2 (en) * 2013-03-11 2015-11-10 Qualcomm Incorporated Devices and methods for calibrating and operating a snapback clamp circuit
JP2016134515A (ja) * 2015-01-20 2016-07-25 ソニー株式会社 メモリセルおよびメモリ装置
US10331368B2 (en) * 2017-04-03 2019-06-25 Gyrfalcon Technology Inc. MLC based magnetic random access memory used in CNN based digital IC for AI
TWI659428B (zh) * 2018-01-12 2019-05-11 中原大學 運用非揮發性記憶體執行類神經網絡前饋與遞迴運算之方法
US11687766B2 (en) * 2018-06-19 2023-06-27 Qualcomm Incorporated Artificial neural networks with precision weight for artificial intelligence

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020003447A1 (en) * 2000-07-04 2002-01-10 Fujitsu Limited Trimming circuit of semiconductor integrated device
US20110080765A1 (en) * 2008-04-16 2011-04-07 Silicon Line Gmbh Programmable antifuse transistor and method for programming thereof
US20150279479A1 (en) * 2014-04-01 2015-10-01 Qualcomm Incorporated Anti-fuse one-time programmable resistive random access memories
WO2019043446A1 (en) * 2017-09-04 2019-03-07 Nng Software Developing And Commercial Llc METHOD AND APPARATUS FOR COLLECTING AND USING SENSOR DATA FROM A VEHICLE
US20190180173A1 (en) * 2017-12-11 2019-06-13 Gyrfalcon Technology Inc. Method and apparatus for using reference resistor in one-time programmable memory of an artificial intelligence integrated circuit
US20190138534A1 (en) * 2018-12-28 2019-05-09 Intel Corporation Technologies for providing dynamic persistence of data in edge computing

Also Published As

Publication number Publication date
KR102466979B1 (ko) 2022-11-11
TW202119426A (zh) 2021-05-16
EP4022618A1 (en) 2022-07-06
WO2021041526A1 (en) 2021-03-04
KR20220028161A (ko) 2022-03-08
JP7157893B2 (ja) 2022-10-20
JP2022538938A (ja) 2022-09-06
US10825536B1 (en) 2020-11-03
CN114270441A (zh) 2022-04-01
CN114270441B (zh) 2023-02-28
BR112022003243A2 (pt) 2022-05-17

Similar Documents

Publication Publication Date Title
TWI736404B (zh) 用於在邊緣設備上執行機器學習操作的可程式設計電路
US11733766B2 (en) Ultra-low power neuromorphic artificial intelligence computing accelerator
JP6922387B2 (ja) ディープニューラルネットワークに基づく認識装置、トレーニング装置及び方法
Liu et al. A memristor-based optimization framework for artificial intelligence applications
CN116011510A (zh) 用于优化机器学习架构的框架
TWI601078B (zh) 多層人造神經網路及其控制方法
US11776608B2 (en) Static random-access memory (SRAM) compute in-memory integration
US11500960B2 (en) Memory cell for dot product operation in compute-in-memory chip
WO2019209658A1 (en) Learning a truncation rank of singular value decomposed matrices representing weight tensors in neural networks
CN115965061A (zh) 通过实时代理评估反馈增强的深度神经网络模型设计
US10777259B1 (en) Static random-access memory (SRAM) for in-memory computing
US11494629B2 (en) Charge-sharing compute-in-memory system
US11410040B2 (en) Efficient dropout inference for bayesian deep learning
US20200293864A1 (en) Data-aware layer decomposition for neural network compression
US20230100139A1 (en) Efficient tile mapping for row-by-row convolutional neural network mapping for analog artificial intelligence network inference
WO2022031446A1 (en) Optimized sensor fusion in deep learning accelerator with integrated random access memory
US20220147809A1 (en) Deep learning accelerators with configurable hardware options optimizable via compiler
CN111527502B (zh) 用于部分数字再训练的系统和方法
TWI853083B (zh) 用於經由調整記憶體內計算陣列的列閾值來執行 xnor 等效運算的裝置、方法與電腦可讀取媒體
WO2023155183A1 (en) Systems, apparatus, articles of manufacture, and methods for teacher-free self-feature distillation training of machine learning models
US20220147811A1 (en) Implement the computation of an artificial neural network using multiple deep learning accelerators
TW202349274A (zh) 具有由多終端邏輯閘形成的多層的深度神經網路