TWI757153B - 用於修改機器學習模型之方法及非暫時性電腦儲存媒體以及機器學習計算系統 - Google Patents
用於修改機器學習模型之方法及非暫時性電腦儲存媒體以及機器學習計算系統 Download PDFInfo
- Publication number
- TWI757153B TWI757153B TW110113999A TW110113999A TWI757153B TW I757153 B TWI757153 B TW I757153B TW 110113999 A TW110113999 A TW 110113999A TW 110113999 A TW110113999 A TW 110113999A TW I757153 B TWI757153 B TW I757153B
- Authority
- TW
- Taiwan
- Prior art keywords
- machine learning
- memory
- data
- learning model
- operations
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
- G06N20/20—Ensemble learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/082—Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/10—Interfaces, programming languages or software development kits, e.g. for simulating neural networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/02—Knowledge representation; Symbolic representation
- G06N5/022—Knowledge engineering; Knowledge acquisition
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/126—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1021—Hit rate improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6028—Prefetching based on hints or prefetch instructions
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Artificial Intelligence (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Medical Informatics (AREA)
- Neurology (AREA)
- Advance Control (AREA)
- Complex Calculations (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Manipulator (AREA)
Abstract
本發明描述用於更新機器學習模型以改善局域性之方法、系統及設備。在一態樣中,一種方法包含接收一機器學習模型之資料。該資料表示該機器學習模型之運算及該等運算之間的資料相依性。接收指定其上將部署該機器學習模型之一機器學習處理器之一記憶體階層之特性的資料。該記憶體階層包含多個記憶體層級處之多個記憶體,其等用於儲存在使用該機器學習模型來執行機器學習計算時由該機器學習處理器使用之機器學習資料。藉由修改該機器學習模型之該等運算及控制相依性以導致該記憶體階層之該等特性來產生一更新機器學習模型。使用該更新機器學習模型來執行機器學習計算。
Description
本說明書大體上係關於基於記憶體之特性來修改機器學習模型以改善局域性。
神經網路係採用一或多個模型層來產生一接收輸入之一輸出(例如一分類)之機器學習模型。一些神經網路包含一或多個隱藏層及一外層。各隱藏層之輸出用作網路中下一層(即,網路之下一隱藏層或輸出層)之輸入。網路之各層根據一組各自參數之當前值來自一接收輸入產生一輸出。
一神經網路可表示為具有節點及邊之一圖形。一節點可表示可具有零或多個輸入及零或多個輸出之一運算。一邊可表示運算之間的資料及/或控制相依性。一機器學習處理器可使用不同資料(通常為一次之一批輸入樣本)來重複執行圖形。針對各運算,機器學習處理器可自記憶體獲得輸入資料且將輸出資料儲存於記憶體中。
本說明書描述關於改善機器學習模型之局域性且使用改善模型來執行機器學習計算之技術。
一般而言,本說明書中所描述之標的之一創新態樣可體現為一種方法,其包含接收一機器學習模型之資料。該資料可表示該機器學習模型之運算及該等運算之間的資料相依性。接收指定其上將部署該機器學習模型之一機器學習處理器之一記憶體階層之特性的資料。該記憶體階層可包含多個記憶體層級處之多個記憶體,其等用於儲存在使用該機器學習模型來執行機器學習計算時由該機器學習處理器使用之機器學習資料。該等特性可包含各記憶體之一資料儲存容量及各記憶體之一記憶體頻寬。該等記憶體之至少一者可具有不同於至少一其他記憶體之一記憶體頻寬。可基於該機器學習模型之該資料及該記憶體階層之該等特性來產生一更新機器學習模型。可藉由修改該機器學習模型之該等運算及控制相依性以導致該記憶體階層之該等特性來產生該更新機器學習模型。可使用該更新機器學習模型來執行機器學習計算。
此等及其他實施方案可各視情況包含以下特徵之一或多者。在一些態樣中,該機器學習模型之該資料可包含表示該機器學習模型之該等運算、該等運算之間的該等控制相依性及該等運算之間的資料相依性之一圖形。
在一些態樣中,產生該更新機器學習模型可包含:針對該等運算之至少一部分,基於運算之輸出將用作另一運算之輸入的時間來選擇用於儲存該等輸出之該等記憶體之一者。
在一些態樣中,產生該更新機器學習模型可包含基於一第一運算之輸出資料將由一第二運算用作輸入之時間來判定將該第一運算之該輸出資料儲存於該多個記憶體之一第一記憶體中。該第一記憶體可具有比該多個記憶體之一第二記憶體低之一記憶體頻寬。回應於該判定,該更新機器學習模型可包含:第一控制資料,其引起該機器學習處理器在由該第一運算產生該輸出資料之後將該第一運算之該輸出資料儲存於該第一記憶體中;及第二控制資料,其引起該機器學習處理器在將該輸出資料用作該第二運算之輸入之前將該輸出資料自該第一記憶體傳送至該第二記憶體。
在一些態樣中,該第二控制資料引起該機器學習處理器回應於執行一第三運算而將該輸出資料自該第一記憶體傳送至該第二記憶體。該第三運算可不同於該第一運算及該第二運算。基於一第一運算之輸出資料將由一第二運算用作輸入之時間來判定將該第一運算之該輸出資料儲存於該多個記憶體之一第一記憶體中可包含基於以下之至少一者來判定將該第一運算之該輸出資料儲存於該第一記憶體中:(i)將執行於該第一運算與該第二運算之間的運算之數目或(ii)將執行該第一運算之時間與將執行該第二運算之時間之間的一估計持續時間。
在一些態樣中,產生該更新機器學習模型可包含判定該機器學習模型之一特定運算序列之輸入資料需要比該多個記憶體之一特定記憶體大的資料儲存容量。作為回應,該更新機器學習模型可包含:多個運算序列,其等包含相同於該特定運算序列之一運算序列;第一控制資料,其引起該機器學習處理器將該輸入資料分割成資料之多個部分;第二控制資料,其引起該機器學習處理器將資料之各部分指派給該多個運算序列之一各自運算序列;及第三控制資料,其引起該機器學習處理器連續執行該多個運算序列。
可在特定實施例中實施本說明書中所描述之標的以實現一或多個以下優點。可基於其上實施模型之一機器學習處理器之一記憶體階層之特性來修改機器學習模型以改善資料存取之局域性(例如資料放置及/或資料移動之局域性)以導致記憶體之改善記憶體頻寬(例如更快資料存取)及利用率。記憶體頻寬及記憶體利用率之此改善使機器學習處理器能夠比使用原始機器學習模型更快及更高效率地執行機器學習計算。
可更新機器學習模型之運算、資料相依性及/或控制相依性,使得將比其他資料更快被使用之來自運算之輸出資料可儲存於比其他資料更快之記憶體(例如更高頻寬記憶體)中。亦可更新運算及資料及控制相依性,使得在存取其他資料用作另一運算之輸入之前將其他資料預取至更快記憶體。此提高存取資料之速度且改善更快記憶體之使用,例如由於未浪費更快記憶體空間來儲存未使用之資料代替再使用之資料。
藉由基於指定一記憶體階層之特性的資料來更新機器學習模型,一機器學習模型之局域性可適用於各種記憶體階層,使得可針對各種機器學習處理器或執行架構來改善機器學習模型之執行。將頻繁使用資料(例如權重)儲存於晶片上或其他快速存取記憶體中能夠更快載入此資料用於機器學習計算。
此及其他態樣之其他實施方案包含經組態以執行編碼於電腦儲存裝置上之方法之動作的對應系統、方法及電腦程式。可藉由在運算中引起系統執行作之安裝於系統上之軟體、韌體、硬體或其等之一組合來組態一或多個電腦之一系統。可藉由具有在由資料處理設備執行時引起設備執行動作之指令來組態一或多個電腦程式。
附圖及以下描述中闡述本說明書中所描述之標的之一或多個實施方案之細節。將自[實施方式]、圖式及申請專利範圍明白標的之其他潛在特徵、態樣及優點。
一般而言,本說明書中所描述之標的係關於產生更新機器學習模型以導致其上將部署機器學習模型之一機器學習處理器之一記憶體階層之特性。可藉由修改機器學習模型之運算、資料相依性及/或控制相依性來更新一機器學習模型以基於記憶體階層之特性來改善機器學習模型之資料存取之局域性。例如,可修改機器學習模型以改善資料放置之局域性(例如,將常用資料儲存於較快記憶體中)及/或資料移動之局域性(例如,將在一段時間內不使用之資料儲存於較慢記憶體中且在使用資料之前將資料預取至較快記憶體中)。
機器學習模型(諸如神經網路)可為具有關鍵核心運算(諸如矩陣乘法及卷積)之高度計算密集型。另外,神經網路演進為更深及更複雜。為滿足此日益增長需求,引入具有密集計算單元(例如處理器核心)之新加速器(例如機器學習處理器)。低記憶體頻寬會(例如)因使閒置計算單元等待來自記憶體之資料而限制計算單元之效能。本文中所描述之用於改善神經網路執行之局域性之硬體-軟體技術可提高記憶體存取速度以藉此提高計算單元執行機器學習計算之速度。
圖1係其中一機器學習系統120改善機器學習模型之局域性且使用機器學習模型來執行機器學習計算之一實例性環境100之一方塊圖。機器學習系統120包含一或多個前端伺服器130,其等自使用者裝置110接收機器學習模型112 (例如神經網路或其他適當機器學習模型)之資料且提供機器學習輸出114 (例如由機器學習模型輸出之資料)至使用者裝置110。前端伺服器130可經由一網路150 (諸如一區域網路(LAN)、一廣域網路(WAN)、網際網路、一行動網路或其等之一組合)來與使用者裝置110通信。
機器學習模型112之資料可包含表示機器學習模型之運算及運算之間的資料相依性的資料。例如,機器學習模型之資料可包含一圖形,其包含表示運算之節點及表示運算之間的控制相依性(及/或資料相依性)之邊。表示一資料相依性之一邊指示一運算取決於來自另一運算之資料(例如,一運算將使用來自另一運算之輸出資料來執行機器學習計算)。表示一控制相依性之一邊指示一運算取決於另一運算之執行(例如,直至執行另一運算才執行一運算)。運算可為透過一機器學習模型來執行一正推法(例如透過機器學習模型來計算一推論)所需之運算。此等運算可包含(例如)由一神經網路之層執行之矩陣乘法運算及/或卷積運算。作為另一實例,運算可為執行一訓練程序之一反覆以訓練機器學習模型所需之運算。此等運算可包含透過機器學習模型來執行一正推法所需之運算且亦包含透過機器學習模型來執行一反推法所需之運算,即,判定關於機器學習模型之權重及參數之梯度所需之反向傳播運算。
機器學習系統120可改善機器學習模型之局域性,訓練模型,且執行模型以判定機器學習輸出(例如分類輸入資料)。機器學習系統120包含一機器學習模型改善模組131 (亦簡稱為改善模組132),其接收機器學習模型112之資料且產生具有改善局域性(例如改善資料再使用、資料放置局域性及/或資料移動局域性)之更新機器學習模型132。改善模組131可基於其上將部署機器學習模型之一機器學習處理器之一記憶體階層之特性來更新機器學習模型。即,模型改善模組131產生一更新機器學習模型132,更新機器學習模型132已改善其上將執行更新機器學習模型132之機器學習處理器之記憶體階層之局域性。改善模組131可更新神經網路及可使用本文中所描述之技術來表示為運算及運算之間的相依性之一集合的其他適當機器學習模型。
例如,機器學習系統120包含N個機器學習處理器140-1至140-N。各機器學習處理器140可具有儲存機器學習處理器140之機器學習資料之記憶體之一相關聯記憶體階層。各記憶體階層可包含多個記憶體層級處之多個記憶體。記憶體可經組態以儲存在使用機器學習模型來執行機器學習計算時由機器學習處理器140使用之機器學習資料。例如,機器學習資料可包含運算之輸入(例如輸入張量)、來自運算之輸出(例如輸出張量)、由運算使用之權重及/或在使用一機器學習模型來執行機器學習計算時由一機器學習處理器140使用之其他適當資料。
記憶體階層之各層級可包含具有共同(或類似)特性之一或多個記憶體。一記憶體之特性可包含記憶體之一資料儲存容量及記憶體之一記憶體頻寬。記憶體頻寬係可由一處理器自記憶體讀取資料或將資料儲存至記憶體中之速率。記憶體頻寬可表示為以位元組/秒(或每單位時間量測之其他適當資料大小)為單位。各記憶體之特性可包含處理器(例如一處理器核心)與記憶體之間的記憶體通道之特性,諸如直接或間接、共用或專用、速度等等。
各層級之記憶體之特性可不同。例如,一記憶體層級可快於(例如記憶體頻寬高於)其他層級。然而,其他層級可具有比具有最快記憶體之一層級大的資料儲存容量。
指定各機器學習處理器140之記憶體階層之特性的資料儲存於一記憶體階層資料儲存單元135中。記憶體階層之特性可包含記憶體階層中各記憶體之特性。當產生具有改善局域性之一更新機器學習模型時,改善模組131可獲得記憶體階層資料136,記憶體階層資料136指定其上將部署機器學習模型之機器學習處理器140之記憶體階層之特性。例如,若一機器學習模型將由機器學習處理器140-1執行,則改善模組131可自記憶體階層資料儲存單元135獲得機器學習處理器140-1之記憶體階層之特性。
接著,改善模組131可基於輸入機器學習模型112及由記憶體階層資料136指定之記憶體階層之特性來產生更新機器學習模型132。更新機器學習模型132可具有相同(或類似)於輸入機器學習模型112之功能。即,更新機器學習模型132依相同或類似(例如,在一臨限容限內)準確度及/或品質執行相同於輸入機器學習模型之任務。例如,若更新機器學習模型132及輸入機器學習模型112兩者被提供相同輸入資料,則更新機器學習模型132可產生相同於輸入機器學習模型112之輸出類型且輸出輸入機器學習模型112將輸出之相同(或在一臨限容限內類似)資料。然而,更新機器學習模型132可具有不同於輸入機器學習模型112之運算順序、運算之間的資料相依性及/或運算之間的控制相依性。
可自一機器學習模型判定執行機器學習模型所需之資訊。例如上文所描述,表示一機器學習模型之一圖形可包含表示運算之節點及表示運算之間的資料及/或控制相依性之邊。改善模組131可自圖形判定各運算將需要什麽資料及將何時執行運算。使用此資訊、各運算之各輸入及各輸出之資料大小(例如,基於運算之一輸入張量之大小)及記憶體階層之特性,改善模組131可判定儲存各運算之輸入及輸出資料之時間及位置。
例如,考量包含L1記憶體及主記憶體之一記憶體階層,其中L1記憶體快於主記憶體,但L1記憶體具有20百萬位元組(MB)之一資料儲存容量且主記憶體具有10吉位元組(GB)之一資料儲存容量。若運算A及運算B兩者同時或幾乎同時輸出20 MB資料但由運算A輸出之資料將即時由另一運算用作輸入而由運算B輸出之資料直至執行若干其他運算才被使用,則由運算A輸出之資料可儲存於L1記憶體中且由運算B輸出之資料可儲存於主記憶體中。接著,由運算B輸出之資料可在用作另一運算之輸入之前自主記憶體預取至L1記憶體。在此實例中,一更新機器學習模型可包含引起由運算B輸出之資料在完成另一運算(例如運算C)時被預取的一新運算(或一註解或其他指令或程式碼)。因此,更新機器學習模型可包含運算C與預取運算之間的一控制相依性,其在執行運算C之後觸發預取運算。
改善模組131可產生各更新機器學習模型132以在任何給定時間不過度利用記憶體階層之各種記憶體之資料容量。例如,改善模型131可基於輸入機器學習模型112之資料(例如表示模型之一圖形)來判定各運算需要輸入資料(及其資料大小)之時間且排定(例如使用控制及資料相依性、新運算、運算順序及/或註解)記憶體之間的資料,使得各記憶體滿容量或低於最大容量。若較快記憶體在任何給定時間超過容量,則改善模組131可在此時將一些資料排定為儲存於較慢記憶體中。
改善模組131可藉由修改模型之運算、修改模型之控制相依性及/或修改模型之資料相依性以改善記憶體階層之局域性來產生一輸入機器學習模型112之更新機器學習模型132。修改運算可包含新增排定將資料儲存於記憶體中的運算。例如,改善模組131可判定由一運算輸出之資料將在至少臨限數目個介入運算中或在產生輸出資料之後的至少臨限時間量內不被使用。作為回應,改善模組131可使引起輸出資料傳送至較慢記憶體之一第一運算及引起資料在資料由另一運算用作輸入之前傳送回較快記憶體之一第二運算包含於更新機器學習模型132中。改善模組131亦可使引起機器學習處理器140在執行一特定運算之後執行第二運算之一控制相依性包含於更新機器學習模型132中。改善模組131可基於特定運算與將使用資料之運算之間的運算數目及將資料自較慢記憶體傳送至較快記憶體所需之一估計時間量來選擇引起此資料預取之特定運算,使得在運算需要資料之前完成資料傳送。
改善模組131可基於儲存容量及其他運算所需之資料儲存量及其他運算需要輸出資料之時間來判定將輸出資料儲存於較慢記憶體中。例如,若較快記憶體具有足以用於所有此資料之資料容量,則改善模組131可使輸出資料留在較快記憶體中。因此,可基於當時之總資料儲存需求來決定儲存一特定運算之資料之位置。
修改運算亦可包含新增將一張量分割成多個子張量的一運算且包含一或多個運算之多次反覆。例如,若將輸入至一運算(或一運算序列)之一張量之大小因太大而不適合於較快記憶體,則改善模組131可新增將張量分割成可適合於較快記憶體之多個子張量的一運算。改善模組131亦可包含分割運算之後的一或多個運算之多次反覆,各子張量一次反覆。改善模組131亦可包含一控制相依性,其將控制自各反覆之最後運算傳送至下一反覆之第一運算,直至最後反覆。改善模組131亦可包含一串連運算,其將由各反覆輸出之子張量合併成表示原始輸入張量上之一或多個原始運算之輸出的一輸出張量。圖8中繪示且下文將描述使用一運算序列之多個反覆之此分割及合併之一實例。
在一些實施方案中,改善模組131藉由新增註解、指令及/或引起機器學習模組將由運算輸出之資料儲存於適當記憶體中之其他控制資料來產生一更新機器學習模型132。例如,一更新機器學習模型131可包含自一運算(例如運算A)至另一運算(例如運算B)之各邊之一註解,其指定哪個記憶體將儲存將由運算B使用之運算A之輸出。一註解亦可用於將資料自一較慢記憶體預取至一較快記憶體。例如,一註解可包含於用於觸發另一運算之資料之預取的一特定運算處。
各註解可相關聯於(例如指派給)一運算或邊。機器學習處理器140可經組態以在基於邊來執行運算或傳送控制或資料時讀取各運算或邊之註解。接著,機器學習處理器140可基於註解來執行適當運算(例如將資料儲存於一適當記憶體中、開始傳送資料、傳送控制至另一運算等等)。
改善模組131可使用一組規則、一或多個機器學習模型、機器學習模型之(若干)模擬及/或其他適當技術來基於一輸入機器學習模型131產生一更新機器學習模型132。一組規則可包含指定改善模組131如何基於模型112之資料再使用模式來修改輸入機器學習模型112的規則。例如,一規則可指定:若較快記憶體之容量不適合於兩個運算之輸出,則改善模組131將修改輸入機器學習模組131以將先由另一運算使用之資料儲存於較快記憶體中且將稍後被使用之資料儲存於較慢記憶體中。規則亦可指定:改善模組131將包含控制資料(例如一運算或註解),其引起稍後使用之資料在一適當時間被預取,使得在資料由另一運算用作輸入之前將資料儲存於較快記憶體中。
規則組亦可指定用於儲存於較快記憶體中之資料之間的優先級。例如,將比其他資料更早被使用之資料可具有高於稍後使用之資料之一優先級。類似地,將共用於核心之間的資料可具有高於其他資料之共用於核心之間的記憶體之一優先級。
改善模組131亦可模擬使用機器學習處理器140之一記憶體階層來執行機器學習模型,機器學習處理器140上將執行模型以判定超過較快記憶體之容量之時間及/或輸出資料由一運算輸出且接著由另一運算使用之時間的時間量或運算數目。改善模組131可使用此資料來判定將資料儲存於較慢記憶體中之時間、應將哪些資料儲存於較慢記憶體中(例如將較晚而非較早使用之資料)及/或預取資料之時間。接著,改善模組131可使用此資料(例如,結合規則組)來修改輸入機器學習模型112以產生更新機器學習模型132。
改善模組131可使用記憶體管理技術(例如軟體或圖形變換管理技術)來判定哪些資料將儲存於哪些記憶體中且更新機器學習模型以因此排定機器學習資料之儲存。例如,改善模組131可使用頁面替換技術(諸如貝萊迪(Belady)演算法)來判定在任何時間點應將哪些資料儲存於較快記憶體中及應將哪些資料自較快記憶體移動至較慢記憶體以給其他資料讓出空間。使用此一技術及表示模型之資料再使用模式之機器學習模型之資料(例如機器學習模型之一圖形),改善模組131可判定在模型之執行期間之任何時間點應將哪些資料儲存於哪個記憶體中。例如,在貝萊迪演算法中,可將在最長時間量內未被使用之資料自較快記憶體移動至一較慢記憶體,使得將被更快使用之其他資料可儲存於較快記憶體中。因為改善模組131可判定接著將使用由各運算輸出之資料的時間,所以改善模組131可使用記憶體管理技術來判定儲存由各運算輸出之資料的位置且更新機器學習模組以將由機器學習模型輸出之資料儲存於適當記憶體中。
貝萊迪演算法無法用於典型硬體管理快取記憶體中。然而,因為已知神經網路及可由一圖形表示之其他機器學習模型之未來資料存取模式,所以可使用貝萊迪演算法來選擇將移出較快記憶體之資料。
改善模組131亦可基於一輸入機器學習模型112及一記憶體階層之特性來訓練一機器學習模型產生一更新機器學習模型132。例如,改善模組131可使用強化學習技術來學習使機器學習模型更快之方式。在一特定實例中,改善模組131可使用一機器學習模型來運行輸入機器學習模型112且量測輸入機器學習模型112之效能。接著,機器學習模型可將圖形變換應用於輸入機器學習模型112之圖形上以產生更新機器學習模型。接著,機器學習模型可量測更新模型之效能且識別具有最佳效能之更新模型。
改善模組131亦可使引起機器學習處理器140將頻繁使用(例如由至少臨限數目個運算使用)之資料保存於較快記憶體(例如晶片上記憶體)中的資料包含於一更新機器學習模型132或由一機器學習處理器140用於執行機器學習模型132之其他程式碼中。例如,改善模組131可使引起機器學習處理器140將用於機器學習計算中之權重保存於晶片上記憶體中的資料包含於更新機器學習模型132中。此能夠將此資料較快載入至計算單元(例如核心)。
若一相同晶片上之多個核心將使用相同資料,則改善模組131可使引起機器學習處理器140將資料保存於晶片上記憶體中的資料包含於更新機器學習模型(或其他程式碼)中。此能夠使此資料由各核心較快載入。此亦允許跨一晶片內之多個核心劃分機器學習模型。例如,核心可透過晶片上記憶體來彼此通信。
一記憶體階層中之各記憶體可作為可定址名稱空間或命名記憶體裝置暴露於軟體(例如用於執行機器學習模型之軟體)。為向機器學習處理器140指示哪個記憶體將儲存由一運算輸出之資料,更新機器學習模型132可指定至少一些運算之適當名稱空間或記憶體裝置。軟體可使用此資料來將資料儲存於適當記憶體中。
圖2至圖6繪示一些實例性執行架構,其等包含可由一機器學習處理器使用以使用機器學習模型來執行機器學習計算之記憶體之實例性記憶體階層。如上文所描述,可基於指定記憶體階層之特性的資料來更新機器學習模型(例如用於改善資料放置及/或移動之局域性),記憶體階層用於儲存在使用機器學習模型來執行機器學習計算時由機器學習處理器使用之機器學習資料。圖2至圖6中所繪示之記憶體階層係實例,且用於修改本文中所描述之機器學習模型之技術可應用於其他記憶體階層。
可用於實例性執行架構中之實例性機器學習處理器可包含中央處理單元(CPU)、圖形處理單元(GPU)及/或張量處理單元(TPU)。例如,執行架構可包含一或多個NVIDIA KEPLER K40 GPU加速器、一或多個NVIDIA PASCAL P100 GPU及/或一或多個NIVDIA VOLTA V100張量核心GPU及/或能夠執行機器學習計算之其他適當處理器。機器學習處理器可為具有快速晶片上記憶體之TPU,快速晶片上記憶體係暴露於軟體(例如執行機器學習模型之軟體)之一可定址名稱空間。
圖2係一機器學習處理器201之一實例性執行架構200之一方塊圖。執行架構200包含一實例性記憶體階層230,其包含兩個記憶體層級:L1記憶體203及主記憶體204。L1記憶體203係晶片上記憶體,其與機器學習處理器201之一處理器核心202整合於機器學習處理器之晶片(例如積體電路)上。核心202係晶片之一個別處理器,其經組態以使用一或多個機器學習模型來執行機器學習計算。一些晶片包含多個核心,如下文將描述。
主記憶體204可為不與核心202及L1記憶體203整合於晶片上之晶片外記憶體。因此,主記憶體204可大於(例如具有更大儲存容量) L1記憶體203。因為L1記憶體203係在晶片上,所以L1記憶體203可具有遠高於主記憶體204之一頻寬。然而,歸因於L1記憶體203之有限大小,一些機器學習資料可能需要儲存於主記憶體204中,直至資料將由核心202使用。在一些實施方案中,L1記憶體203係靜態隨機存取記憶體(SRAM)且主記憶體204係動態隨機存取記憶體(DRAM)。
在此實例中,核心202可分別透過記憶體通道211及212來直接存取主記憶體204及L1記憶體203兩者。核心202亦可使用記憶體通道212及213、透過L1記憶體203來間接存取主記憶體204。例如,可藉由將資料自主記憶體204移動至L1記憶體203以由核心202存取來完成此間接存取。可在後台執行移動資料於記憶體之間,例如使用直接記憶體存取(DMA)。在其他實例中,可不包含記憶體通道211以僅需要核心202間接存取主記憶體。
圖3係一機器學習處理器301之另一實例性執行架構300之一方塊圖。在此實例中,執行架構300包含一記憶體階層330,其包含三個記憶體層級:L1記憶體303、L2記憶體304及主記憶體305。L1記憶體303及L2記憶體304可為與核心302整合於一晶片上之晶片上記憶體。在另一實例中,L1記憶體303可在晶片上,而L2記憶體304在晶片外但與晶片緊密整合(例如3D堆疊或其他適當快速晶片互連技術)。主記憶體305係不與核心302整合於晶片上但亦可與晶片緊密整合之晶片外記憶體。
L1記憶體303可具有記憶體303至305之最高頻寬,但具有記憶體303至305之最少儲存容量。L2記憶體304可具有低於L1記憶體303之頻寬但高於主記憶體305之頻寬的頻寬。主記憶體305可具有三個記憶體303至305之最高儲存容量。在一些實施方案中,L1記憶體303及L2記憶體304係SRAM且主記憶體305係DRAM。在另一實例中,L1記憶體303係SRAM且L2記憶體304及主記憶體305係DRAM。
在此實例中,不適合於L1記憶體303或L2記憶體304之大資料可儲存於主記憶體305中。另外,可能在一段時間內(例如在至少臨限時間量或臨限數目個運算內)不使用之資料可儲存於主記憶體305中且在被使用之前預取至L1記憶體303或L2記憶體304。如上文所描述,可在後台執行移動資料於記憶體303至305之間,例如使用DMA。
核心302可分別透過記憶體通道311、312及313來直接存取主記憶體305、L2記憶體304及L1記憶體303。核心302亦可使用記憶體通道312及315、透過L2記憶體304或使用記憶體通道313、314及315、透過L1及L2記憶體來間接存取主記憶體305。如上文所描述,間接存取可涉及移動資料於記憶體之間。類似地,核心302可使用記憶體通道313及314、透過L1記憶體303來間接存取L2記憶體304。繞過L1記憶體303及L2記憶體304之記憶體通道311可用於使較小較頻繁存取之資料不被覆寫且保持可用於自主記憶體305快速存取。
在其他實例中,記憶體階層330可包含L1記憶體303與主記憶體305之間的一直接記憶體通道以允許核心302經由L1記憶體303且無需透過L2記憶體304來存取主記憶體305。在另一實例中,L1記憶體303及L2記憶體304可共用至/來自主記憶體305之一記憶體通道。
圖2及圖3之機器學習處理器201及301可包含各具有相同(或不同)記憶體階層之多個核心。例如,機器學習處理器201可具有自身各具有L1記憶體且存取至一共用主記憶體之兩個核心。在另一實例中,機器學習處理器301可包含共同相同L1、L2及主記憶體之三個核心。
圖4係一機器學習處理器401之另一實例性執行架構400之一方塊圖。實例性機器學習處理器401包含兩個核心402及412。在此實例中,執行架構400包含一記憶體階層430,其包含各核心402及412之一單獨記憶體階層,該單獨記憶體階層包含專用L1記憶體、專用L2記憶體及專用主記憶體。例如,核心402可透過一記憶體通道421來直接存取其L1記憶體404。核心402亦可透過L1記憶體404及一記憶體通道422來間接存取其L2記憶體406,且進一步透過記憶體通道423來存取其主記憶體408。記憶體階層430亦可包含核心402與L2記憶體406之間及/或核心402與主記憶體408之間的直接記憶體通道。
L1記憶體404可具有記憶體404、406及408之最高頻寬,但具有記憶體404、406及408之最少儲存容量。L2記憶體406可具有低於L1記憶體404之頻寬但高於主記憶體408之頻寬的頻寬。主記憶體408可具有三個記憶體404、406及408之最高儲存容量。例如,L1記憶體404可為晶片上記憶體,L2記憶體406可為晶片上記憶體或在晶片外但與晶片緊密整合,且主記憶體408可為晶片外記憶體。
類似地,核心412可透過一記憶體通道424來直接存取其L1記憶體414。核心412亦可透過L1記憶體414及一記憶體通道425來間接存取其L2記憶體416,且進一步透過記憶體通道426來存取其共用主記憶體418。記憶體階層430亦可包含核心412與L2記憶體416之間及/或核心412與主記憶體418之間的直接記憶體通道。
L1記憶體414可具有記憶體414、416及418之最高頻寬,但具有記憶體414、416及418之最少儲存容量。L2記憶體416可具有低於L1記憶體414之頻寬但高於主記憶體418之頻寬的頻寬。主記憶體418可具有三個記憶體414、416及418之最高儲存容量。例如,L1記憶體414可為晶片上記憶體,L2記憶體416可為晶片上記憶體或在晶片外但與晶片緊密整合,且主記憶體418可為晶片外記憶體。
在一些實施方案中,L1記憶體404及414及L2記憶體406及416係SRAM且主記憶體408及418係DRAM。在另一實例中,L1記憶體404及414係SRAM且L2記憶體406及416及主記憶體408及418係DRAM。
儘管實例性機器學習處理器401包含具有單獨記憶體階層之兩個核心402及412,但機器學習處理器401可包含自身各具有記憶體階層之其他適當數量之核心(例如4個、8個等等)。一些記憶體可共用於核心之間。例如,不是具有專用L2記憶體及主記憶體,而是可共用此等記憶體,如圖5中所繪示。
圖5係一機器學習處理器501之另一實例性執行架構500之一方塊圖。實例性機器學習處理器501包含兩個核心502及512。在此實例中,執行架構500包含一記憶體階層530,其包含各核心502及512之一單獨記憶體階層,該單獨記憶體階層包含專用L1記憶體及共用L2及主記憶體。例如,核心502可透過一記憶體通道521來直接存取其L1記憶體504。核心502亦可透過L1記憶體504及一記憶體通道522來間接存取共用L2記憶體516,且進一步透過共用記憶體通道523來存取共用主記憶體520。記憶體階層530亦可包含核心502與L2記憶體516之間及/或核心502與主記憶體520之間的直接記憶體通道。
類似地,核心512可透過一記憶體通道524來直接存取其L1記憶體514。核心512亦可透過L1記憶體514及一記憶體通道526來間接存取共用L2記憶體516,且進一步透過共用記憶體通道523來存取共用主記憶體520。記憶體階層530亦可包含核心512與L2記憶體516之間及/或核心512與主記憶體520之間的直接記憶體通道。
L1記憶體504及514可具有高於L2記憶體516及主記憶體520之一頻寬。然而,L1記憶體504及514可各具有小於L2記憶體516及主記憶體520之儲存容量。L2記憶體516可具有低於L1記憶體504及514之頻寬但高於主記憶體520之頻寬的頻寬。主記憶體520可具有記憶體504、514、516及520之最高儲存容量。例如,L1記憶體504及514可為晶片上記憶體,L2記憶體516可為晶片上記憶體或在晶片外但與晶片緊密整合,且主記憶體520可為晶片外記憶體。
在一些實施方案中,L1記憶體504及514及L2記憶體516係SRAM,且主記憶體520係一DRAM。在另一實例中,L1記憶體504及514係SRAM,且L2記憶體516及主記憶體520係DRAM。
在此實例中,L2記憶體516及主記憶體520由核心502及512共用。由兩個核心502及512使用之機器學習資料可儲存於L2記憶體516及/或主記憶體520中。例如,由兩個核心502及512使用之權重或偏壓值可儲存於L2記憶體516及/或主記憶體520中。核心502及512亦可藉由將資料儲存於L2記憶體516及/或主記憶體520中來彼此共用其他機器學習資料(例如運算之輸出)。
儘管實例性機器學習處理器501包含具有單獨及共用記憶體之兩個核心502及512,但機器學習處理器501可包含自身各具有記憶體階層之其他適當數量之核心(例如4個、8個等等)。例如,一機器學習處理器可包含自身各具有L1記憶體但共用共同L2及主記憶體之四個核心。
圖6係一機器學習處理器601之另一實例性執行架構600之一方塊圖。實例性機器學習處理器601包含四個核心602至605,其等共用包含L1記憶體610及主記憶體620之一共同記憶體階層630。儘管圖中未展示,但四個核心602至605亦可共用L2記憶體及/或其他記憶體。
在此實例中,各核心602至605具有用於存取L1記憶體610之個別記憶體通道621至624。核心602至605共用至主記憶體620之一記憶體通道625。在其他實例中,各核心602至605可具有至主記憶體620之一專用記憶體通道及/或至L1記憶體610之一共用通道。
L1記憶體610可具有高於主記憶體620之一頻寬,但具有小於主記憶體620之儲存容量。例如,L1記憶體610可為晶片上記憶體,而主記憶體620可為晶片外記憶體。在一些實施方案中,L1記憶體601係SRAM且主記憶體620係DRAM。
圖7係繪示一機器學習模型之一輸入圖形710及具有相對於輸入圖形710之改善局域性之一更新圖形720的一圖式700。輸入圖形710係包含運算(由節點表示)及控制及資料相依性(由節點之間的邊表示)之一更大圖形之一部分。輸入圖形710包含運算C至I及運算之間的邊(箭頭),邊表示運算之間的控制及/或資料相依性。例如,運算C使用輸入資料A及輸入資料B。輸入資料A及/或輸入資料B可為輸入至機器學習模型或由圖7中未展示之另一運算輸出之機器學習資料。在此實例中,運算C可使用輸入資料A及輸入資料B來執行一機器學習計算。
輸入圖形710包含輸入資料A與運算C之間的一邊711及輸入資料B與運算C之間的一邊712。此等邊711及712表示運算C之一資料相依性。即,運算C取決於輸入資料A及輸入資料B。類似地,運算D、E及I取決於首先執行之運算C,如分別由邊713、714及715所表示。在此實例中,運算D、E及I使用由運算C輸出之資料來執行機器學習計算。因此,邊713表示運算C與運算D之間的控制及資料相依性。類似地,邊714及715分別表示運算C與E之間及運算C與I之間的控制及資料相依性。
當一機器學習處理器執行由圖形710表示之機器學習模型時,邊引起機器學習處理器基於邊之方向來依序轉變於運算之間。例如,邊711引起機器學習處理器在輸入資料A變成可用之後執行運算C。然而,邊712需要直至輸入資料B亦可用才執行運算C。此表示此等邊之資料相依性。類似地,邊713引起機器學習處理器在執行運算C之後執行運算D。邊715及716引起機器學習處理器在已執行運算C及運算H兩者之後執行運算I。
更新圖形720相對於輸入圖形710更新。一改善模組(例如圖1之改善模組131)可基於其上將部署機器學習模型之一機器學習處理器之一記憶體階層之特性來產生更新圖形720。在此實例中,記憶體階層包含L1記憶體722及L2記憶體724。L1記憶體可快於L2記憶體,但具有小於L2記憶體之資料儲存容量。
改善模組可基於輸入圖形710來判定由運算輸出之機器學習資料之再使用模式且基於再使用模式及記憶體階層之特性來修改輸入圖形710以產生更新圖形720。例如,改善模組可針對由各運算輸出之各組輸出資料來判定將執行於再使用資料之前的運算數目(及/或將在再使用資料之前流逝之一估計時間量)。改善模組可基於將執行各運算之時間、使用資料之前的運算數目(及/或時間)及記憶體之儲存容量來判定儲存資料之記憶體及將資料預取至較快記憶體之時間。
更新圖形720包含不同控制及資料相依性及指定儲存運算之輸出之記憶體的資料。例如,更新圖形720指示輸入資料A及B儲存於L2記憶體724中。更新圖形包含引起機器學習處理器將輸入資料A及B預取至L1記憶體722以輸入至運算C的邊731及732。
更新圖形720亦指定將來自運算C之輸出資料用作運算D及E之一輸入,其匹配輸入圖形710。更新圖形720包含引起機器學習處理器將來自運算C之輸出資料亦儲存於L2記憶體724中(作為資料C')(因為直至運算I才再使用輸出資料)之一新邊733。
更新圖形720包含運算F與輸出資料C" (其可相同於輸出資料C')之間的另一新邊。邊734表示引起機器學習處理器將輸出資料C"自L2記憶體724預取至L1記憶體722之一控制相依性。例如,可將來自運算C之輸出資料預取至L1記憶體722以由運算I使用。可在執行運算I之前預取輸出資料以減少延時,否則延時會發生於在執行運算H之後將資料自L2記憶體724傳送至運算I時。相反地,更新圖形720包含表示運算F與預取輸出資料C"之間的一控制相依性的一邊734。在此實例中,在執行運算F之後,將儲存於L2記憶體724中之輸出資料C"預取至L1記憶體722。可在由機器學習處理器執行運算G及H時在後台傳送資料(例如使用DMA)。
改善模組可基於需要傳送之資料量(例如基於用於傳送之一估計時間量)及機器學習處理器執行運算I之前的運算將花費之估計時間量來判定引發預取之時間(例如用作一觸發之運算)。依此方式,改善模組可確保在執行運算I之前傳送資料,但必然需要使用可用於儲存其他資料(例如運算F與G之間的資料)之較快L1記憶體722。
在一些實施方案中,更新圖形720除(例如)包含表示資料及/或控制相依性之邊之外,亦可包含向機器學習處理器指示儲存資料之記憶體及傳送資料之時間的註解而非機器學習模型本身之運算。註解可包含於更新圖形720中或作為由機器學習處理器執行之其他程式碼之部分。
圖8係繪示一機器學習模型之另一輸入圖形810及具有改善局域性之另一更新圖形820的一圖式800。在此實例中,輸入圖形810包含使用一張量X來執行機器學習計算之一運算序列1A至6A。運算序列1A至6A可為一較大圖形之部分。例如,運算序列1A至6A可為一第一運算序列且張量X可為機器學習模型之一輸入張量。在另一實例中,運算序列1A至6A可執行於其他運算之後且張量X可為一中間張量(例如歸因於先前運算而不同於輸入張量)或一部分張量(例如輸入張量之一部分)。
在此實例中,張量X會因太大而無法儲存於其上將執行機器學習模型之一機器學習處理器之一記憶體階層之最快記憶體(例如L1記憶體)中。改善模組可使將張量X分割成多個子張量之一分批運算821包含於更新圖形820中。改善模組亦可使運算序列1A至5A之多次反覆包含於更新圖形中。可對一子張量執行運算序列1A至5A之各反覆。
例如,考量張量X具有5倍於L1記憶體之資料大小的一資料大小。改善模組可使將張量分割成可各適合於L1記憶體之5個子張量的一分批運算包含於更新模組820中。另外,改善模組可使運算序列1A至5A之5次反覆(各子張量一次)包含於更新模組820中。依此方式,各運算之輸出可儲存於L1記憶體中用於下一運算,直至對子張量執行運算序列1A至5A中之各運算。
藉由將資料保存於L1記憶體中,可比使用輸入圖形810來對全張量X執行運算1A至5A快得多地執行由各運算1A至5A執行之機器學習計算。例如,在輸入圖形中,各運算之至少一些輸入資料將必須自一較慢記憶體擷取以引起機器學習處理器必須在各運算中等待資料。
當判定自張量X產生之子張量之數目及包含於更新圖形820中之運算序列之反覆次數時,改善模組亦可考量由運算序列中之各運算輸出之資料之大小。例如,若一運算之輸出超過L1記憶體之容量,則即使輸入至運算1A之子張量適合於L1記憶體,但改善模組要將張量X分割成多個子張量,使得由各運算輸出之資料可適合於L1記憶體。
改善模組亦可產生及在更新圖形820中包含運算5A之各反覆之後、運算5A之最後反覆之前的一控制相依性823。控制相依性823引起機器學習處理器將控制轉變至運算序列1A至5A之下一反覆以開始運算1A之下一反覆。依此方式,可對張量X之各子張量執行運算序列1A至5A。
改善模組亦可產生及在更新圖形820中包含可將運算序列1A至5A之各反覆之輸出資料串連成一輸出張量之一串連運算824。串連運算824可合併由分批運算821產生之各子張量之5A輸出之資料(例如張量)。接著,輸出張量可提供為運算6A之輸入。
圖9係繪示用於產生具有改善局域性之一更新圖形且使用更新圖形來執行機器學習計算之一實例性程序900的一流程圖。程序900可由圖1之機器學習系統120執行。
接收一機器學習模型之資料(910)。資料可表示機器學習模型之運算及運算之間的資料相依性。例如,資料可包含一圖形,其包含各運算之一節點及運算之間的邊。各邊可表示由邊連接之兩個運算之間的一資料相依性。例如,自一第一運算至一第二運算之一邊可指示在第二運算之前執行第一運算且第二運算使用由第一運算輸出之資料。
接收指定一機器學習處理器之一記憶體階層之特性的資料(920)。機器學習處理器可為其上將部署機器學習模型之一處理器。記憶體階層可包含多個記憶體層級,其等用於儲存在使用機器學習模型來執行機器學習計算時由機器學習處理器使用之機器學習資料。
各記憶體層級可具有彼此不同之層級特性。如上文所描述,各記憶體層級之特性可包含記憶體之一資料儲存容量及記憶體之一記憶體頻寬。各記憶體之特性可包含處理器(例如一處理器核心)與記憶體之間的記憶體通道之特性,諸如直接或間接、共用或專用、速度等等。
基於機器學習模型之圖形及記憶體階層之特性來產生一更新機器學習模型(930)。例如上文所描述,一改善模組可使用一組規則、一或多個機器學習模型及/或一輸入機器學習模型之模擬來產生具有改善局域性之一更新機器學習模型。
如上文所描述,產生更新機器學習模型可包含:針對至少一部分運算,基於運算之輸出將用作另一運算之輸入的時間來選擇用於儲存運算之輸出之記憶體階層中之一記憶體。例如,若較快記憶體無法儲存運算之輸出及將執行於執行運算之時間與由另一運算使用運算之輸出之時間之間的其他運算之輸出,則運算之輸出可儲存於較慢記憶體中且稍後預取至較快記憶體。
產生更新機器學習模型可包含:基於一第一運算之輸出資料將由一第二運算用作輸入之時間來判定將該運算之該輸出資料儲存於記憶體階層之多個記憶體之一第一記憶體(例如較慢記憶體)中。作為回應,改善模組可使第一控制資料(例如一運算、註解等等)包含於更新機器學習模組中,第一控制資料引起機器學習處理器在由第一運算產生輸出資料之後將第一運算之輸出資料儲存於第一記憶體中。改善模組亦可使第二控制資料包含於更新機器學習模型中,第二控制資料引起機器學習處理器在輸出資料用作第二運算之輸入之前將輸出資料自第一記憶體傳送(例如預取)至第二記憶體(例如較快記憶體)。
第二控制資料可引起機器學習處理器回應於執行一第三運算而將輸出資料自第一記憶體傳送至第二記憶體。例如,第二控制資料可包含第三運算與引起輸出資料傳送之一運算之間的一控制相依性。
改善模組可基於將執行於一第一運算與將使用第一運算之輸出資料來執行一機器學習計算之一第二運算之間的運算數目來判定用於儲存該輸出資料之多個記憶體之記憶體。例如,若運算數目超過臨限運算數目,則輸出資料可儲存於較慢記憶體中。若運算數目未超過臨限值,則輸出資料可儲存於較快記憶體中。
改善模組可基於執行一第一運算之時間與將執行第二運算之時間之間的一估計持續時間來判定用於儲存第一運算之輸出資料之多個記憶體之記憶體。例如,若持續時間超過一臨限持續時間,則輸出資料可儲存於較慢記憶體中。若持續時間未超過臨限值,則輸出資料可儲存於較快記憶體中。
產生更新機器學習模型可包含判定機器學習模型之一特定運算序列之輸入資料(例如一張量)需要比多個記憶體之一特定記憶體(例如最快記憶體)大的資料儲存容量。作為回應,改善模組可使多個運算序列包含於更新機器學習模型中,多個運算序列包含相同於特定運算序列之一運算序列。改善模組亦可使以下各者包含於更新機器學習模型中:第一控制資料,其引起機器學習處理器將輸入資料分割成多個資料部分(例如子張量);第二控制資料,其引起機器學習處理器將資料之各部分指派給多個運算序列之一各自運算序列;及第三控制資料(例如控制相依性),其引起機器學習處理器連續執行多個運算序列。圖8中繪示及上文描述將輸入資料分割成多個部分及使多個運算序列包含於一更新機器學習模型中之一實例。
使用更新機器學習模型來執行機器學習計算(940)。例如,更新機器學習模型可部署於機器學習處理器上。機器學習處理器可使用訓練資料來訓練更新機器學習模型。例如,機器學習處理器可訓練機器學習模型分類輸入資料。接著,機器學習處理器可使用經訓練機器學習模型來執行機器學習計算以(例如)分類其他輸入資料。
如上文所描述,機器學習模型之運算可包含透過機器學習模型來執行一正推法(例如透過機器學習模型來計算一推論)所需之運算。此等運算可包含(例如)由一神經網路之層執行之矩陣乘法運算及/或卷積運算。運算亦包含執行一訓練程序之一反覆以訓練機器學習模型所需之運算。此等運算可包含透過機器學習模型來執行一正推法所需之運算且亦包含透過機器學習模型來執行一反推法所需之運算,即,判定關於機器學習模型之權重或參數之梯度所需之反向傳播運算。
本說明書中所描述之標的及功能運算之實施例可實施於數位電子電路、有形體現之電腦軟體或韌體、電腦硬體(其包含本說明書中所揭示之結構及其結構等效物)或其等之一或多者之組合中。本說明書中所描述之標的之實施例可實施為一或多個電腦程式,即,編碼於一有形非暫時性程式載體上以由資料處理設備執行或控制資料處理設備之運算之電腦程式指令之一或多個模組。替代地或另外,程式指令可編碼於一人工產生之傳播信號(例如一機器產生之電、光學或電磁信號)上,人工產生之傳播信號經產生以編碼用於傳輸至適合接收器設備以由一資料處理設備執行之資訊。電腦儲存媒體可為一機器可讀儲存裝置、一機器可讀儲存基板、一隨機或串列存取記憶體裝置或其等之一或多者之一組合。
本說明書中所描述之程序及邏輯流程可由一或多個可程式化電腦執行,一或多個可程式化電腦執行一或多個電腦程式以藉由操作輸入資料且產生輸出來執行功能。程序及邏輯流程亦可由專用邏輯電路(例如一FPGA (場可程式化閘陣列)、一ASIC (專用積體電路)或一GPGPU (通用圖形處理單元))執行,且設備亦可實施為該專用邏輯電路。
適合於執行一電腦程式之電腦包含(例如)可基於通用或專用微處理器或兩者或任何其他種類之中央處理單元。一般而言,一中央處理單元將自一唯讀記憶體或一隨機存取記憶體或兩者接收指令及資料。一電腦之基本元件係用於執行(performing)或執行(executing)指令之一中央處理單元及用於儲存指令及資料之一或多個記憶體裝置。一般而言,一電腦亦將包含用於儲存資料之一或多個大容量儲存裝置(例如磁碟、磁光碟或光碟),或經可操作耦合以自該一或多個大容量儲存裝置接收資料或將資料傳送至該一或多個大容量儲存裝置或兩者。然而,一電腦無需具有此等裝置。此外,一電腦可嵌入例如以下各者之另一裝置中:一行動電話、一個人數位助理(PDA)、一行動音訊或視訊播放器、一遊戲機、一全球定位系統(GPS)接收器或一可攜式儲存裝置(例如一通用串列匯流排(USB)快閃硬碟)等等。
適合於儲存電腦程式指令及資料之電腦可讀媒體包含所有形式之非揮發性記憶體、媒體及記憶體裝置,其包含(例如):半導體記憶體裝置,例如EPROM、EEPROM及快閃記憶體裝置;磁碟,例如內部硬碟或可抽換磁碟;磁光碟;及CD-ROM及DVD-ROM磁碟。處理器及記憶體可由專用邏輯電路補充或併入專用邏輯電路中。
儘管本說明書含有諸多特定實施細節,但此等不應被解釋為限制任何發明或可主張內容之範疇,而是應被解釋為可專用於特定發明之特定實施例之特徵之描述。本說明書之單獨實施例之內文中所描述之特定特徵亦可組合實施於一單一實施例中。相反地,一單一實施例之內文中所描述之各種特徵亦可單獨或以任何子組合實施於多個實施例中。此外,儘管上文可將特徵描述為作用於特定組合且甚至最初如此主張,但在一些情況中,來自一主張組合之一或多個特徵可自組合刪去且主張組合可針對一子組合或一子組合之變動。
類似地,儘管圖式中依一特定順序描繪操作,但此不應被理解為要求依所展示之特定順序或循序順序執行此等操作,或執行所有所繪示操作以達成所要結果。在特定情形中,多任務及並行處理可為有利的。此外,上述實施例中之各種系統模組及組件之分離不應被理解為在所有實施例中需要此分離,且應瞭解,所描述之程式組件及系統一般可一起整合於一單一軟體產品中或封裝至多個軟體產品中。
已描述標的之特定實施例。其他實施例係在以下申請專利範圍之範疇內。例如,可依一不同順序執行申請專利範圍中所列舉之動作且仍達成所要結果。作為一實例,附圖中所描繪之程序未必需要所展示之特定順序或循序順序來達成所要結果。在特定實施方案中,多任務及並行處理可為有利的。
100:環境
110:使用者裝置
112:輸入機器學習模型
114:機器學習輸出
120:機器學習系統
130:前端伺服器
131:機器學習模型改善模組
132:更新機器學習模型
135:記憶體階層資料儲存單元
136:記憶體階層資料
140:機器學習處理器
140-1至140-N:機器學習處理器
150:網路
200:執行架構
201:機器學習處理器
202:處理器核心
203:L1記憶體
204:主記憶體
211:記憶體通道
212:記憶體通道
213:記憶體通道
230:記憶體階層
300:執行架構
301:機器學習處理器
302:核心
303:L1記憶體
304:L2記憶體
305:主記憶體
311:記憶體通道
312:記憶體通道
313:記憶體通道
314:記憶體通道
315:記憶體通道
330:記憶體階層
400:執行架構
401:機器學習處理器
402:核心
404:L1記憶體
406:L2記憶體
408:主記憶體
412:核心
414:L1記憶體
416:L2記憶體
418:主記憶體
421:記憶體通道
422:記憶體通道
423:記憶體通道
424:記憶體通道
425:記憶體通道
426:記憶體通道
430:記憶體階層
500:執行架構
501:機器學習處理器
502:核心
504:L1記憶體
512:核心
514:L1記憶體
516:L2記憶體
520:主記憶體
521:記憶體通道
522:記憶體通道
523:記憶體通道
524:記憶體通道
526:記憶體通道
530:記憶體階層
600:執行架構
601:機器學習處理器
602:核心
603:核心
604:核心
605:核心
610:L1記憶體
620:主記憶體
621:記憶體通道
622:記憶體通道
623:記憶體通道
624:記憶體通道
625:記憶體通道
630:記憶體階層
700:圖式
710:輸入圖形
711:邊
712:邊
713:邊
714:邊
715:邊
716:邊
720:更新圖形
722:L1記憶體
724:L2記憶體
731:邊
732:邊
733:邊
734:邊
800:圖式
810:輸入圖形
820:更新圖形
821:分批運算
823:控制相依性
824:串連運算
900:程序
910:接收一機器學習模型之資料
920:接收指定一機器學習處理器之一記憶體階層之特性的資料
930:基於機器學習模型之圖形及記憶體階層之特性來產生一更新機器學習模型
940:使用更新機器學習模型來執行機器學習計算
圖1係其中一機器學習系統改善機器學習模型之局域性且使用改善機器學習模型來執行機器學習計算之一實例性環境之一方塊圖。
圖2係一機器學習處理器之一實例性執行架構之一方塊圖。
圖3係一機器學習處理器之另一實例性執行架構之一方塊圖。
圖4係一機器學習處理器之另一實例性執行架構之一方塊圖。
圖5係一機器學習處理器之另一實例性執行架構之一方塊圖。
圖6係一機器學習處理器之另一實例性執行架構之一方塊圖。
圖7係繪示一機器學習模型之一輸入圖形及具有改善局域性之一更新圖形的一圖式。
圖8係繪示一機器學習模型之另一輸入圖形及具有改善局域性之另一更新圖形的一圖式。
圖9係繪示用於產生具有改善局域性之一更新機器學習模型及使用更新機器學習模型來執行機器學習計算之一實例性程序的一流程圖。
各個圖式中之相同元件符號及名稱指示相同元件。
100:環境
110:使用者裝置
112:輸入機器學習模型
114:機器學習輸出
120:機器學習系統
130:前端伺服器
131:機器學習模型改善模組
132:更新機器學習模型
135:記憶體階層資料儲存單元
136:記憶體階層資料
140:機器學習處理器
140-1至140-N:機器學習處理器
150:網路
Claims (21)
- 一種用於改善機器學習模型局域性之方法,該方法由資料處理設備執行,該方法包括:接收一機器學習模型之資料,該資料表示該機器學習模型之運算;接收指定其上將部署(deployed)該機器學習模型之一或多個機器學習處理器之一記憶體階層(memory hierarchy)之特性的資料,該記憶體階層包含多個記憶體,該多個記憶體用於儲存在使用該機器學習模型來執行機器學習計算時由該一或多個機器學習處理器使用之機器學習資料,該等特性包含各記憶體之一資料儲存容量及各記憶體之一記憶體頻寬,其中該等記憶體之至少一者具有不同於至少一其他記憶體之一記憶體頻寬;基於該機器學習模型之該資料及該記憶體階層之該等特性來產生一更新機器學習模型,該產生包括:基於該機器學習模型來判定該機器學習模型之一給定運算之輸出資料應該被儲存於該多個記憶體之一最高頻寬記憶體;判定該給定運算之該輸出資料具有大於該最高頻寬記憶體之資料儲存容量之一資料大小;及回應於判定該給定運算之該輸出資料具有大於該最高頻寬記憶體之該資料儲存容量之該資料大小,將用於將該輸出資料分割(split)成該輸出資料之多個部分之一或多個運算增加至該更新機器學習模型,使得該輸出資料之各部分具有小於或等於該最高頻寬記憶體之該資料儲存容量之一資料大小;及使用該更新機器學習模型來執行機器學習計算。
- 如請求項1之方法,其中:該輸出資料包括一張量(tensor);及用於將該輸出資料分割成該輸出資料之該多個部分之該一或多個運算包括用於將該張量分割為多個子張量(sub-tensor)之一分割運算。
- 如請求項2之方法,其中產生該更新機器學習模型包括將用於各子張量之一各自運算序列增加至該機器學習模型,其中每一各自運算序列(respective sequence of operations)對應於待執行於該機器學習模型中該張量上之一特定運算序列(a particular sequence of operations)。
- 如請求項3之方法,其中產生該更新機器學習模型包括在該各自運算序列之一或多者之一最後運算處之一各自控制相依性增加至該機器學習模型,該最後運算將控制自該各自運算序列轉移至一下一各自運算序列之一第一運算。
- 如請求項4之方法,其中產生該更新機器學習模型包括修改(modifying)該機器學習模型以在當一給定運算序列被執行時儲存用於該給定運算序列之子張量於該最高頻寬記憶體上。
- 如請求項2之方法,其中產生該更新機器學習模型包括增加經組態以合併該多個子張量為一輸出張量之一串連(concat)運算至該更新機器學習 模型。
- 如請求項1之方法,其中產生該更新機器學習模型包括針對該機器學習模型之該等運算之一或多者之各者,基於該一或多個機器學習處理器之該記憶體階層之該等特性來修改將該運算之輸出儲存於該一或多個機器學習處理器之該多個記憶體之那一記憶體中。
- 一種機器學習計算系統,其包括:一資料處理設備;及一記憶體儲存設備,其與該資料處理設備資料通信,該記憶體儲存設備儲存指令,該等指令可由該資料處理設備執行且在此執行之後引起該資料處理設備執行包括以下各者之運算:接收一機器學習模型之資料,該資料表示該機器學習模型之運算;接收指定其上將部署該機器學習模型之一或多個機器學習處理器之一記憶體階層之特性的資料,該記憶體階層包含多個記憶體層級處之多個記憶體,該多個記憶體用於儲存在使用該機器學習模型來執行機器學習計算時由該一或多個機器學習處理器使用之機器學習資料,該等特性包含各記憶體之一資料儲存容量及各記憶體之一記憶體頻寬,其中該等記憶體之至少一者具有不同於至少一其他記憶體之一記憶體頻寬;基於該機器學習模型之該資料及該記憶體階層之該等特性來產生一更新機器學習模型,該產生包括: 基於該機器學習模型來判定該機器學習模型之一給定運算之輸出資料應該被儲存於該多個記憶體之一最高頻寬記憶體;判定該給定運算之該輸出資料具有大於該最高頻寬記憶體之資料儲存容量之一資料大小;及回應於判定該給定運算之該輸出資料具有大於該最高頻寬記憶體之該資料儲存容量之該資料大小,將用於將該輸出資料分割(split)成該輸出資料之多個部分之一或多個運算增加至該更新機器學習模型,使得該輸出資料之各部分具有小於或等於該最高頻寬記憶體之該資料儲存容量之一資料大小;及使用該更新機器學習模型來執行機器學習計算。
- 如請求項8之系統,其中:該輸出資料包括一張量;及用於將該輸出資料分割成該輸出資料之該多個部分之該一或多個運算包括用於將該張量分割為多個子張量之一分割運算。
- 如請求項9之系統,其中產生該更新機器學習模型包括增加用於各子張量之一各自運算序列至該機器學習模型,其中每一各自運算序列對應於待執行於該機器學習模型中該張量上之一特定運算序列。
- 如請求項10之系統,其中產生該更新機器學習模型包括在該各自運算序列之一或多者之一最後運算處之一各自控制相依性增加至該機器學習模型,該最後運算將控制自該各自運算序列轉移至一下一各自運算序列之 一第一運算。
- 如請求項11之系統,其中產生該更新機器學習模型包括修改該機器學習模型以在當一給定運算序列被執行時儲存用於該給定運算序列之子張量於該最高頻寬記憶體上。
- 如請求項9之系統,其中產生該更新機器學習模型包括增加經組態以合併該多個子張量為一輸出張量之一串連運算至該更新機器學習模型。
- 如請求項8之系統,其中產生該更新機器學習模型包括針對該機器學習模型之該等運算之一或多者之各者,基於該一或多個機器學習處理器之該記憶體階層之該等特性來修改將該運算之輸出儲存於該一或多個機器學習處理器之該多個記憶體之那一記憶體中。
- 一種非暫時性電腦儲存媒體,其使用一電腦程式來編碼,該程式包括指令,該等指令在由一或多個資料處理設備執行時引起該資料處理設備執行包括以下各者之運算:接收一機器學習模型之資料,該資料表示該機器學習模型之運算;接收指定其上將部署該機器學習模型之一或多個機器學習處理器之一記憶體階層之特性的資料,該記憶體階層包含多個記憶體層級處之多個記憶體,該等記憶體用於儲存在使用該機器學習模型來執行機器學習計算時由該一或多個機器學習處理器使用之機器學習資料,該等特性包含各記憶體之一資料儲存容量及各記憶體之一記憶體頻寬,其中該等記憶體之至 少一者具有不同於至少一其他記憶體之一記憶體頻寬;基於該機器學習模型之該資料及該記憶體階層之該等特性來產生一更新機器學習模型,該產生包括:基於該機器學習模型來判定該機器學習模型之一給定運算之輸出資料應該被儲存於該多個記憶體之一最高頻寬記憶體;判定該給定運算之該輸出資料具有大於該最高頻寬記憶體之資料儲存容量之一資料大小;及回應於判定該給定運算之該輸出資料具有大於該最高頻寬記憶體之該資料儲存容量之該資料大小,將用於將該輸出資料分割(split)成該輸出資料之多個部分之一或多個運算增加至該更新機器學習模型,使得該輸出資料之各部分具有小於或等於該最高頻寬記憶體之該資料儲存容量之一資料大小;及使用該更新機器學習模型來執行機器學習計算。
- 如請求項15之非暫時性電腦儲存媒體,其中:該輸出資料包括一張量;及用於將該輸出資料分割成該輸出資料之該多個部分之該一或多個運算包括用於將該張量分割為多個子張量之一分割運算。
- 如請求項16之非暫時性電腦儲存媒體,其中產生該更新機器學習模型包括將用於各子張量之一各自運算序列增加至該機器學習模型,其中每一各自運算序列對應於待執行於該機器學習模型中該張量上之一特定運算序列。
- 如請求項17之非暫時性電腦儲存媒體,其中產生該更新機器學習模型包括在該各自運算序列之一或多者之一最後運算處之一各自控制相依性增加至該機器學習模型,該最後運算將控制自該各自運算序列轉移至一下一各自運算序列之一第一運算。
- 如請求項18之非暫時性電腦儲存媒體,其中產生該更新機器學習模型包括修改該機器學習模型以在當一給定運算序列被執行時儲存用於該給定運算序列之子張量於該最高頻寬記憶體上。
- 如請求項16之非暫時性電腦儲存媒體,其中產生該更新機器學習模型包括增加經組態以合併該多個子張量為一輸出張量之一串連運算至該更新機器學習模型。
- 如請求項15之非暫時性電腦儲存媒體,其中產生該更新機器學習模型包括針對該機器學習模型之該等運算之一或多者之各者,基於該一或多個機器學習處理器之該記憶體階層之該等特性來修改將該運算之輸出儲存於該一或多個機器學習處理器之該多個記憶體之那一記憶體中。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/156,573 | 2018-10-10 | ||
US16/156,573 US11263529B2 (en) | 2018-10-10 | 2018-10-10 | Modifying machine learning models to improve locality |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202134957A TW202134957A (zh) | 2021-09-16 |
TWI757153B true TWI757153B (zh) | 2022-03-01 |
Family
ID=67551741
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW110113999A TWI757153B (zh) | 2018-10-10 | 2019-08-08 | 用於修改機器學習模型之方法及非暫時性電腦儲存媒體以及機器學習計算系統 |
TW108128203A TWI728421B (zh) | 2018-10-10 | 2019-08-08 | 用於修改機器學習模型之方法及非暫時性電腦儲存媒體以及機器學習計算系統 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW108128203A TWI728421B (zh) | 2018-10-10 | 2019-08-08 | 用於修改機器學習模型之方法及非暫時性電腦儲存媒體以及機器學習計算系統 |
Country Status (10)
Country | Link |
---|---|
US (2) | US11263529B2 (zh) |
EP (1) | EP3864582A1 (zh) |
JP (2) | JP7078758B2 (zh) |
KR (2) | KR102572757B1 (zh) |
CN (1) | CN112236784A (zh) |
BR (1) | BR112020024353B1 (zh) |
CA (1) | CA3101214C (zh) |
SG (1) | SG11202011588QA (zh) |
TW (2) | TWI757153B (zh) |
WO (1) | WO2020076392A1 (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11610117B2 (en) * | 2018-12-27 | 2023-03-21 | Tesla, Inc. | System and method for adapting a neural network model on a hardware platform |
KR20200084099A (ko) * | 2019-01-02 | 2020-07-10 | 삼성전자주식회사 | 뉴럴 네트워크 최적화 장치 및 뉴럴 네트워크 최적화 방법 |
US11687795B2 (en) * | 2019-02-19 | 2023-06-27 | International Business Machines Corporation | Machine learning engineering through hybrid knowledge representation |
CN113366454A (zh) | 2019-03-15 | 2021-09-07 | 英特尔公司 | 用于图形操作的多片架构 |
US11610134B2 (en) * | 2019-07-08 | 2023-03-21 | Vianai Systems, Inc. | Techniques for defining and executing program code specifying neural network architectures |
US11556757B1 (en) * | 2020-12-10 | 2023-01-17 | Neuralmagic Ltd. | System and method of executing deep tensor columns in neural networks |
US20220188631A1 (en) * | 2020-12-16 | 2022-06-16 | Xmos Inc. | Artificial neural network implementation |
US20240144030A1 (en) * | 2021-06-09 | 2024-05-02 | Intel Corporation | Methods and apparatus to modify pre-trained models to apply neural architecture search |
US11960982B1 (en) | 2021-10-21 | 2024-04-16 | Neuralmagic, Inc. | System and method of determining and executing deep tensor columns in neural networks |
US20230205539A1 (en) * | 2021-12-29 | 2023-06-29 | Advanced Micro Devices, Inc. | Iommu collocated resource manager |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017075346A1 (en) * | 2015-10-28 | 2017-05-04 | Google Inc. | Modifying computational graphs |
US10019668B1 (en) * | 2017-05-19 | 2018-07-10 | Google Llc | Scheduling neural network processing |
TW201826140A (zh) * | 2017-01-06 | 2018-07-16 | 香港商阿里巴巴集團服務有限公司 | 組件發佈及基於圖形化機器學習演算法平台的組件構建方法、圖形化機器學習演算法平台 |
EP3376441A1 (en) * | 2017-03-15 | 2018-09-19 | Siemens Aktiengesellschaft | A method for execution of a machine learning model on memory restricted industrial device |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5664191A (en) | 1994-06-30 | 1997-09-02 | Microsoft Corporation | Method and system for improving the locality of memory references during execution of a computer program |
US6456803B2 (en) * | 2000-02-04 | 2002-09-24 | Canon Kabushiki Kaisha | Image forming apparatus capable of detecting both of regularly reflected light and irregularly reflected light |
US7826396B2 (en) | 2005-03-07 | 2010-11-02 | Miller John L | System and method for implementing PNRP locality |
US20060212654A1 (en) | 2005-03-18 | 2006-09-21 | Vinod Balakrishnan | Method and apparatus for intelligent instruction caching using application characteristics |
US8965819B2 (en) | 2010-08-16 | 2015-02-24 | Oracle International Corporation | System and method for effective caching using neural networks |
US10489703B2 (en) | 2015-05-20 | 2019-11-26 | Nec Corporation | Memory efficiency for convolutional neural networks operating on graphics processing units |
US10699186B2 (en) | 2015-12-02 | 2020-06-30 | Google Llc | Determining orders of execution of a neural network |
JP6648257B2 (ja) | 2016-03-24 | 2020-02-14 | 富士ゼロックス株式会社 | 画像処理装置、画像処理方法、及び画像処理プログラム |
US10956500B2 (en) | 2017-01-19 | 2021-03-23 | Google Llc | Dynamic-length stateful tensor array |
US20190392287A1 (en) * | 2018-06-22 | 2019-12-26 | Samsung Electronics Co., Ltd. | Neural processor |
-
2018
- 2018-10-10 US US16/156,573 patent/US11263529B2/en active Active
-
2019
- 2019-07-29 WO PCT/US2019/043861 patent/WO2020076392A1/en unknown
- 2019-07-29 KR KR1020227038854A patent/KR102572757B1/ko active IP Right Grant
- 2019-07-29 CA CA3101214A patent/CA3101214C/en active Active
- 2019-07-29 JP JP2020566754A patent/JP7078758B2/ja active Active
- 2019-07-29 KR KR1020207034304A patent/KR102465896B1/ko active IP Right Grant
- 2019-07-29 CN CN201980036543.XA patent/CN112236784A/zh active Pending
- 2019-07-29 EP EP19752352.5A patent/EP3864582A1/en active Pending
- 2019-07-29 BR BR112020024353-1A patent/BR112020024353B1/pt active IP Right Grant
- 2019-07-29 SG SG11202011588QA patent/SG11202011588QA/en unknown
- 2019-08-08 TW TW110113999A patent/TWI757153B/zh active
- 2019-08-08 TW TW108128203A patent/TWI728421B/zh active
-
2022
- 2022-02-15 US US17/672,163 patent/US11915139B2/en active Active
- 2022-05-19 JP JP2022082336A patent/JP7430744B2/ja active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017075346A1 (en) * | 2015-10-28 | 2017-05-04 | Google Inc. | Modifying computational graphs |
TW201826140A (zh) * | 2017-01-06 | 2018-07-16 | 香港商阿里巴巴集團服務有限公司 | 組件發佈及基於圖形化機器學習演算法平台的組件構建方法、圖形化機器學習演算法平台 |
EP3376441A1 (en) * | 2017-03-15 | 2018-09-19 | Siemens Aktiengesellschaft | A method for execution of a machine learning model on memory restricted industrial device |
US10019668B1 (en) * | 2017-05-19 | 2018-07-10 | Google Llc | Scheduling neural network processing |
Also Published As
Publication number | Publication date |
---|---|
TW202134957A (zh) | 2021-09-16 |
US20220172060A1 (en) | 2022-06-02 |
BR112020024353B1 (pt) | 2023-11-07 |
KR20210002676A (ko) | 2021-01-08 |
KR102572757B1 (ko) | 2023-08-29 |
EP3864582A1 (en) | 2021-08-18 |
CA3101214C (en) | 2023-09-26 |
CA3101214A1 (en) | 2020-04-16 |
JP7078758B2 (ja) | 2022-05-31 |
US20200117999A1 (en) | 2020-04-16 |
CN112236784A (zh) | 2021-01-15 |
BR112020024353A2 (pt) | 2021-02-23 |
WO2020076392A1 (en) | 2020-04-16 |
US11263529B2 (en) | 2022-03-01 |
JP2022130363A (ja) | 2022-09-06 |
KR102465896B1 (ko) | 2022-11-09 |
JP2021532437A (ja) | 2021-11-25 |
TW202014939A (zh) | 2020-04-16 |
US11915139B2 (en) | 2024-02-27 |
TWI728421B (zh) | 2021-05-21 |
SG11202011588QA (en) | 2020-12-30 |
JP7430744B2 (ja) | 2024-02-13 |
KR20220153689A (ko) | 2022-11-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI757153B (zh) | 用於修改機器學習模型之方法及非暫時性電腦儲存媒體以及機器學習計算系統 | |
JP7233656B2 (ja) | 加速化ディープラーニングのタスクアクティベーション | |
KR102175044B1 (ko) | 인공 신경망 역방향 트레이닝 실행용 장치와 방법 | |
KR101959376B1 (ko) | 멀티 코어 최적화된 순환 신경망을 위한 시스템 및 방법 | |
US20190147325A1 (en) | Neural Network Architecture Using Control Logic Determining Convolution Operation Sequence | |
JP2020517031A (ja) | 加速化ディープラーニングのニューロンスメアリング | |
US11934826B2 (en) | Vector reductions using shared scratchpad memory | |
JP2021506032A (ja) | オンチップの計算ネットワーク | |
KR20210148586A (ko) | 스케줄러, 스케줄러의 동작 방법 및 이를 포함한 가속기 시스템 | |
TWI782403B (zh) | 具有平行載入儲存之共享高速暫存記憶體 | |
CN116680063B (zh) | 任务调度方法、装置、计算系统、电子设备和存储介质 | |
US20230196124A1 (en) | Runtime predictors for neural network computation reduction | |
US11907098B2 (en) | Method for measuring performance of neural processing device and device for measuring performance | |
CN116029890A (zh) | 一种神经网络增强的图形处理器流水线架构 | |
TW202414200A (zh) | 減少硬體加速器中之記憶體庫衝突 | |
KR20220049294A (ko) | 스케줄러, 스케줄러의 동작 방법 및 이를 포함한 전자 장치 | |
CN117724835A (zh) | 深度神经网络多核加速器的片上缓存分配方法及相关装置 |