TWI782131B - 用於記憶體管理的方法和用於機器學習的系統及方法 - Google Patents
用於記憶體管理的方法和用於機器學習的系統及方法 Download PDFInfo
- Publication number
- TWI782131B TWI782131B TW107139416A TW107139416A TWI782131B TW I782131 B TWI782131 B TW I782131B TW 107139416 A TW107139416 A TW 107139416A TW 107139416 A TW107139416 A TW 107139416A TW I782131 B TWI782131 B TW I782131B
- Authority
- TW
- Taiwan
- Prior art keywords
- data object
- determining
- task
- neural network
- count
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/0499—Feedforward networks
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/28—Indexing scheme for image data processing or generation, in general involving image processing hardware
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/20—Special algorithmic details
- G06T2207/20084—Artificial neural networks [ANN]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- Computing Systems (AREA)
- Evolutionary Computation (AREA)
- Mathematical Physics (AREA)
- General Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Human Computer Interaction (AREA)
- Neurology (AREA)
- Databases & Information Systems (AREA)
- Medical Informatics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Advance Control (AREA)
- Image Analysis (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Image Generation (AREA)
- Debugging And Monitoring (AREA)
Abstract
本發明涉及一種用於記憶體管理的方法和用於機器學習
的系統及方法。在一個實施例中,所述方法包括產生依賴關聯式結構,所述依賴關聯式結構包含一個或多個任務識別符及一個或多個資料物件識別符。所述依賴關聯式結構包含對所述一個或多個資料物件識別符中的第一資料物件識別符的一個或多個依賴關係的列表,所述列表的第一依賴關係識別以由所述第一資料物件識別符識別的資料物件作為輸入的第一任務。所述方法進一步包括計數對所述第一資料物件識別符的依賴關係的數目,當所述第一任務完成執行時將所述計數遞減1,且當所述計數達到零時將所述第一資料物件解除配置。
Description
根據本發明的實施例的一個或多個方面涉及記憶體管理,且更具體來說,涉及一種用於為機器學習而管理記憶體的系統及方法。
機器學習(machine learning,ML)當在圖形處理器(graphics processing unit,GPU)上執行時可遭受與GPU記憶體相關的性能瓶頸。因此,當某些資料物件對於有待執行的計算來說不再被需要時,如果記憶體仍被不必要地分配給那些資料物件,則性能可受到影響。
因此,需要一種改善的記憶體管理系統及方法。
根據本發明的實施例,提供一種用於記憶體管理的方法,包括:產生依賴關聯式結構(dependency structure),所述依賴關聯式結構包含一個或多個任務識別符及一個或多個資料物件
識別符,所述依賴關聯式結構包含對所述一個或多個資料物件識別符中的第一資料物件識別符的一個或多個依賴關係的列表,所述列表的第一依賴關係識別以由所述第一資料物件識別符識別的第一資料物件作為輸入的第一任務;確定計數,所述計數是對所述第一資料物件識別符的依賴關係的數目;確定所述第一任務已完成執行;至少部分地基於確定所述第一任務已完成執行而將所述計數遞減1;確定所述計數小於第一閾值;以及至少部分地基於確定所述計數小於所述第一閾值而將所述第一資料物件解除配置。
在一個實施例中,所述第一閾值是1。
在一個實施例中,所述方法包括確定與所述第一任務相關聯的依賴關係的數目。
在一個實施例中,所述第一任務是神經網路的第一層中的計算運算。
在一個實施例中,所述第一資料物件是所述第一層中的啟動(activation)。
在一個實施例中,所述第一任務包括在反向推算(backward pass)期間:計算所述啟動中的梯度;以及計算權重中的梯度。
在一個實施例中,所述第一資料物件是所述第一層中的輸入梯度。
在一個實施例中,所述第一任務包括在反向推算期間:計算啟動中的梯度;以及計算權重中的梯度。
在一個實施例中,所述第一資料物件是所述第一層中的
權重梯度。
在一個實施例中,所述第一任務包括對與所述權重梯度對應的權重執行就地更新(in-place update)。
在一個實施例中,所述方法包括:產生零個或更多個推算內存留(pass-persistent)資料物件識別符的清單,所述零個或更多個推算內存留資料物件識別符中的第一推算內存留資料物件識別符識別神經網路中的第一資料物件;確定反向推算已完成;以及基於確定所述反向推算已完成而將所述第一資料物件解除配置。
在一個實施例中,所述第一資料物件是神經網路的第一層的啟動。
在一個實施例中,所述方法包括:產生零個或更多個訓練內存留(training-persistent)資料物件識別符的清單,第一訓練內存留資料物件識別符識別神經網路中的第一資料物件,確定所述神經網路的訓練已完成,以及基於確定所述神經網路的訓練已完成而將所述第一資料物件解除配置。
在一個實施例中,所述第一資料物件是神經網路的第一層中的權重。
根據本發明的實施例,提供一種用於機器學習的系統,所述系統包括:圖形處理器及連接到所述圖形處理器的記憶體,所述圖形處理器被配置成:調用非重用檢測器(no reuse detector);以及在調用所述非重用檢測器之後,啟動圖形處理器內核,所述非重用檢測器被配置成:識別第一資料物件,所述第一資料物件具有至少由以所述資料物件作為輸入的一個或多個任務
界定的存留期(persistence);產生依賴關聯式結構,所述依賴關聯式結構包含識別所述第一資料物件的第一資料物件識別符、以及所述一個或多個任務中以所述資料物件作為輸入的第一任務;確定計數,所述計數是對所述第一資料物件識別符的依賴關係的數目;確定所述第一任務已完成執行;至少部分地基於確定所述第一任務已完成執行而將所述計數遞減1;確定所述計數小於第一閾值;以及至少部分地基於確定所述計數小於所述第一閾值而將所述第一資料物件解除配置。
在一個實施例中,所述第一閾值是1。
在一個實施例中,所述第一任務是神經網路的第一層中的計算運算。
在一個實施例中,所述第一資料物件是所述第一層中的啟動。
在一個實施例中,所述第一任務包括在反向推算期間:計算所述啟動中的梯度;以及計算權重中的梯度。
根據本發明的實施例,提供一種用於機器學習的方法,所述方法包括:為神經網路中的第一資料物件分配記憶體;確定所述第一資料物件具有至少由以所述第一資料物件作為輸入的一個或多個任務界定的存留期;確定以所述第一資料物件作為輸入的所述一個或多個任務中的最後一個已完成執行;以及基於確定以所述第一資料物件作為輸入的所述一個或多個任務中的所述最後一個已完成執行且基於確定所述第一資料物件具有至少由以所述第一資料物件作為輸入的所述一個或多個任務界定的存留期而將所述第一資料物件解除配置。
在一個實施例中,所述方法包括:為所述神經網路中的第二資料物件分配記憶體;確定所述第二資料物件具有由反向推算的完成界定的存留期;以及基於確定所述第二資料物件具有由所述反向推算的所述完成界定的存留期而在所述反向推算的完成時將所述第二資料物件解除配置。
在一個實施例中,所述方法包括:為所述神經網路中的第三資料物件分配記憶體;確定所述第三資料物件具有由所述神經網路的訓練的完成界定的存留期;以及基於確定所述第三資料物件具有由所述神經網路的訓練的完成界定的存留期而在所述神經網路的訓練的完成時將所述第三資料物件解除配置。
100:GPU記憶體
105:慢速系統記憶體
110:機器學習執行引擎
115:機器學習記憶體管理器
120:非重用檢測器
A、B、C、D、E:資料物件
dE:誤差梯度
dWx:權重梯度/原始梯度
dWy:梯度/輸入/權重梯度
dX、dY:梯度
dZ:損失梯度/輸入/輸入梯度/梯度
E:誤差
mWx:滑動平均值
mWx*:經更新的滑動平均值
Wx、Wx*、Wy*:權重
Wy:權重/輸入
X:資料物件/輸入
Y:輸出/輸入/啟動
Z:輸出/所預測輸出/輸入/資料物件
Z*:真實輸出
參照說明書、權利要求書及附圖,將瞭解及理解本發明的這些以及其他特徵及優點,附圖中:圖1是根據本發明實施例的流程圖。
圖2是根據本發明實施例的有向非循環圖表的圖示。
圖3是根據本發明實施例的正向推算(forward pass)的資料流程圖。
圖4是根據本發明實施例的反向推算的資料流程圖。
圖5A是根據本發明實施例的向量和圖。
圖5B是根據本發明實施例的資料流程圖。
以下結合附圖所述的詳細說明旨在作為對根據本發明
所提供的用於為機器學習而管理記憶體的系統及方法的示例性實施例的說明,而非旨在表示其中可構造或利用本發明的僅有形式。所述說明結合所示的實施例陳述本發明的特徵。然而,應理解,可通過也旨在涵蓋于本發明的範圍內的不同實施例來實現相同的或等效的功能及結構。如本文中別處所示,相同的元件編號旨在指示相同的元件或特徵。
在一些相關技術系統中,在機器學習訓練期間為資料物件分配記憶體,且所述資料物件存留至其被釋放為止,並且所述資料物件中的一些資料物件被快取在GPU記憶體中。一旦GPU記憶體達到其最大容量,系統便在作業系統(operating system,OS)級上將分配在GPU上的資料物件以頁細微性(page granularity)遷移到系統記憶體。此種方法可導致性能的損失。
對於GPU上的機器學習(ML)運算,有限的GPU記憶體可造成性能瓶頸。因此,一些實施例通過將較慢但較大的記憶體與快速GPU記憶體一起使用來為GPU提供大的記憶體以進行高效機器學習訓練。
圖1示出在主機上利用快速GPU記憶體100及慢速系統記憶體105來為GPU提供大記憶體的一些實施例的整體流程。此種實施例可包括機器學習執行引擎110、機器學習記憶體管理器115及非重用檢測器120。機器學習執行引擎110執行GPU代碼,且通過調用機器學習記憶體管理器115來存取資料物件。機器學習記憶體管理器115可為基於平板(slab)的使用者級記憶體管理引擎,其管理由機器學習執行引擎110執行的GPU代碼所存取的資料物件。非重用檢測器120依據資料物件類型(或“類別”,
如以下更詳細地論述)來區分資料物件,並通過檢查神經網路的有向非循環圖表(directed acyclic graph,DAG)來對不需要存留的資料物件進行標記,以使得機器學習記憶體管理器115可將這些資料物件解除配置。機器學習執行引擎110在執行每一GPU代碼之後執行對非重用檢測器120的調用。
在一些實施例中,以上所提及的非重用檢測器利用機器學習訓練的特性,且緩解因在GPU上的機器學習訓練期間不必要地請求大的動態隨機存取記憶體(Dynamic Random Access Memory,DRAM)大小所致的性能關鍵低效性。所述非重用檢測器對非重用的資料物件進行識別及標記,以使得機器學習記憶體管理器可將這些資料物件解除配置以減少資料物件遷移開銷(overhead)。
如在圖2所示的實例中,非重用檢測器檢查神經網路的有向非循環圖表(DAG),以識別非重用的資料物件。圖2例如示出在計算出“B”及“C”之後,準備好執行計算“D”及“E”。在此實例中,非重用檢測器識別出不存在需要“A”的其他計算(或“任務”)並將“A”標記為“非重用”,以使得“A”可由機器學習記憶體管理器解除配置。
圖3及圖4示出可如何為機器學習訓練而使用非重用檢測器的實例。神經網路的每一層的計算是依序執行:對於正向推算是從左向右,且對於反向推算是從右向左。在圖3中的第一層以輸入“X”及權重“Wx”計算出輸出“Y”之後,第二層以輸入“Y”及權重“Wy”來計算輸出“Z”。在計算出所預測輸出“Z”之後,損失函數將“Z”與真實輸出“Z*”進行比較並計算
誤差“E”。
參照圖4,反向推算通過以輸入“Z”及誤差梯度“dE”來計算損失梯度(或“輸入梯度”)“dZ”而開始。然後,下一層以輸入“dZ”、“Y”及“Wy”來計算梯度“dY”及“dWy”。當輸入“dWy”變得可用時,執行如下計算:執行將權重“Wy”更新成“Wy*”的就地更新(in-place updating)。當梯度“dY”變得可用時,類似地執行圖4中最左層的反向推算。
在一些實施例中,非重用檢測器產生依賴關聯式結構,所述依賴關聯式結構包含:一個或多個任務識別符,其各自識別相應的任務(例如,在正向推算期間計算輸出“Y”的任務、在反向推算期間計算輸入梯度“dZ”的任務、以及在反向推算期間計算啟動“Y”中的梯度“dY”及權重“Wy”中的梯度“dWy”的任務);以及一個或多個資料物件識別符(例如,作為任務輸入的資料物件的識別符,例如“X”及“Wx”(用於在正向推算期間計算輸出“Y”的任務)的識別符、或者“Y”及“dZ”(用於在反向推算期間計算梯度“dY”及梯度“dWy”的任務)的識別符)。所述依賴關聯式結構可將資料物件識別符連結到需要所述資料物件識別符來作為輸入的任務。舉例來說,所述依賴關聯式結構可包含對第一資料物件識別符(例如,“X”的識別符)的一個或多個依賴關係的列表,且所述列表的第一依賴關係可識別以由第一資料物件識別符識別的資料物件(“X”)作為輸入的第一任務(例如,在正向推算期間計算輸出“Y”的任務)。非重用檢測器可計數例如對第一資料物件識別符的依賴關係的數目,只有當第一任務完成執行時才將計數減小1,且當計數達到零時,將第一
資料物件解除配置。如此一來,第一資料物件的存留期是由以第一資料物件作為輸入的一個或多個任務界定(或者至少由所述一個或多個任務界定或至少部分地由所述一個或多個任務界定)。
在此實例中,一些實施例中的非重用檢測器在反向推算期間通過利用以下特性將正向推算期間每一層的輸出(圖3及圖4中的“X”、“Y”及“Z”)標記為“非重用”:在使用這些資料物件來計算出梯度(圖4中的“dX”、“dY”及“dZ”)之後,這些資料物件不再被使用。舉例來說,在計算出梯度“dZ”之後,資料物件“Z”不再被參考。由於在下一反覆運算(對下一資料項目進行處理的機器學習訓練)處“Z”的值不取決於前一反覆運算處“Z”的值,因此不需要為下一反覆運算維持“Z”的值。在一些實施例中,非重用檢測器維持此類別中的資料物件或“推算內存留”資料物件(即,啟動)的列表,並在反向推算結束時將所述資料物件標記為“非重用”,以便在反向推算完成時將所述資料物件解除配置。非重用檢測器可進一步維持“訓練內存留”資料物件識別符的清單,所述資料物件識別符中的每一者可識別只有當訓練完成時才被解除配置的資料物件(例如,權重,例如“Wx”)。
在一些實施例中,非重用檢測器還使用依賴關聯式結構在使用在反向推算期間計算出的權重梯度(圖4中的“dWx”、“dWy”)來更新權重之後將這些資料物件標記為“非重用”。圖5A及圖5B示出使用動量更新進行的權重更新的實例。類似于多種權重更新方法,動量更新維持權重梯度(圖5B中的“dWx”)的滑動平均值(running average)(圖5A中的“mWx”),並應用
滑動平均值來更新權重(在圖5B中從“Wx”更新成“Wx*”)而非應用原始梯度。在計算出權重及滑動平均值並對其執行就地更新之後,不再需要原始梯度(圖5B中的“dWx”)。將在反向推算期間計算出的權重梯度以及正向推算的輸出解除配置可降低在GPU上的機器學習訓練期間對GPU記憶體的記憶體壓力,因此減少GPU上的系統記憶體與GPU記憶體之間的不必要遷移。
用語“處理電路”在本文中用於意指處理資料或數位信號所採用的硬體、韌體及軟體的任一組合。處理電路硬體可例如包括專用積體電路(application specific integrated circuit,ASIC)、通用或專用中央處理器(CPU)、數位訊號處理器(digital signal processor,DSP)、圖形處理器(GPU)及可程式化邏輯裝置(例如現場可程式化閘陣列(field programmable gate array,FPGA))。在本文所使用的處理電路中,每一功能由被配置(即,被硬連線)成執行所述功能的硬體執行,或者由被配置成執行儲存在非暫時性儲存媒體中的指令的更通用硬體(例如CPU)執行。處理電路可製作在單個印刷電路板(printed circuit board,PCB)上,或者分佈在若干經互連的PCB上。處理電路可包含其他處理電路;例如,處理電路可包括在PCB上被互連的兩個處理電路,即FPGA及CPU。
應理解,雖然本文中可使用用語“第一”、“第二”、“第三”等來闡述各種元件、元件、區、層及/或區段,然而這些元件、元件、區、層及/或區段不應受這些用語限制。這些用語僅用於將一個元件、元件、區、層或區段與另一元件、元件、區、層或區段區分開。因此,在不背離本發明概念的精神及範圍的條
件下,本文中所述的第一元件、第一元件、第一區、第一層或第一區段可被稱為第二元件、第二元件、第二區、第二層或第二區段。
本文中所使用的用語僅用於闡述特定實施例,而非旨在限制本發明概念。如本文中所使用,用語“實質上(substantially)”、“約(about)”及類似用語用作近似用語而非用作程度用語,且旨在考慮到所屬領域中的普通技術人員將認識到的所測量值或所計算值的固有偏差。如本文中所使用,用語“主要組分(major component)”指代以比組合物、聚合物或產物中的任何其他單一組分的量大的量存在於所述組合物或產物中的組分。相比之下,用語“主組分(primary component)”指代構成組合物、聚合物或產物的按重量計至少50%或更多的組分。如本文中所使用,用語“主要部分(major portion)”在應用于多個項時意指各項的至少一半。
如本文中所使用,除非上下文另有清楚指示,否則單數形式“一個(a及an)旨在也包括複數形式。應進一步理解,在本說明書中所使用的用語“包括(comprises及/或comprising)”指明所陳述特徵、整數、步驟、操作、元件及/或元件的存在,但並不排除一個或多個其他特徵、整數、步驟、操作、元件、元件及/或其群組的存在或添加。如本文中所使用,用語“及/或(and/or)”包括相關聯所列各項中的一者或多者的任意及所有組合。當位於一系列元件之前時,例如“...中的至少一者(at least one of)”等表達語修飾整個所述一系列元件且不修飾所述一系列中的個別元件。此外,在闡述本發明概念的實施例時所使用的“可
(may)”指代“本發明概念的一個或多個實施例”。此外,用語“示例性(exemplary)”旨在指代實例或例證。如本文中所使用,用語“使用(use)”、“正使用(using)”、“被使用(used)”可被視為分別與用語“利用(utilize、utilizing及utilized)”、“正利用(utilizing)”、“被利用(utilized)”同義。
應理解,當將元件或層稱為“位於”另一元件或層“上”、“連接到”、“耦合到”或“相鄰於”另一元件或層時,所述元件或層可直接位於所述另一元件或層上、直接連接到、直接耦合到或直接相鄰於所述另一元件或層,或者可存在一個或多個中間元件或層。相比之下,當將元件或層稱為“直接位於”另一元件或層“上”、“直接連接到”、“直接耦合到”或“緊鄰於”另一元件或層時,不存在中間元件或層。
雖然本文中已具體闡述及示出了用於為機器學習而管理記憶體的系統及方法的示例性實施例,然而對於所屬領域中的技術人員來說,許多修改及變化形式將為顯而易見的。因此,應理解,使用根據本發明原理所構造的用於為機器學習而管理記憶體的系統及方法可以除本文中所具體闡述的方式之外的方式來實施。本發明還在以上權利要求書及其等效內容中被界定。
100:GPU記憶體
105:慢速系統記憶體
110:機器學習執行引擎
115:機器學習記憶體管理器
120:非重用檢測器
Claims (22)
- 一種用於記憶體管理的方法,包括: 產生依賴關聯式結構,所述依賴關聯式結構包含一個或多個任務識別符及一個或多個資料物件識別符,所述依賴關聯式結構包含對所述一個或多個資料物件識別符中的第一資料物件識別符的一個或多個依賴關係的列表,所述列表的第一依賴關係識別以由所述第一資料物件識別符識別的第一資料物件作為輸入的第一任務; 確定計數,所述計數是對所述第一資料物件識別符的依賴關係的數目; 確定所述第一任務已完成執行; 至少部分地基於確定所述第一任務已完成執行而將所述計數遞減1; 確定所述計數小於第一閾值;以及 至少部分地基於確定所述計數小於所述第一閾值而將所述第一資料物件解除配置。
- 如申請專利範圍第1項所述的方法,其中所述第一閾值是1。
- 如申請專利範圍第1項所述的方法,更包括確定與所述第一任務相關聯的依賴關係的數目。
- 如申請專利範圍第1項所述的方法,其中所述第一任務是神經網路的第一層中的計算運算。
- 如申請專利範圍第4項所述的方法,其中所述第一資料物件是所述第一層中的啟動。
- 如申請專利範圍第5項所述的方法,其中所述第一任務包括在反向推算期間: 計算所述啟動中的梯度;以及 計算權重中的梯度。
- 如申請專利範圍第4項所述的方法,其中所述第一資料物件是所述第一層中的輸入梯度。
- 如申請專利範圍第7項所述的方法,其中所述第一任務包括在反向推算期間: 計算啟動中的梯度;以及 計算權重中的梯度。
- 如申請專利範圍第4項所述的方法,其中所述第一資料物件是所述第一層中的權重梯度。
- 如申請專利範圍第9項所述的方法,其中所述第一任務包括對與所述權重梯度對應的權重執行就地更新。
- 如申請專利範圍第1項所述的方法,更包括: 產生零個或更多個推算內存留資料物件識別符的清單,第一推算內存留資料物件識別符識別神經網路中的第一資料物件; 確定反向推算已完成;以及 基於確定所述反向推算已完成而將所述第一資料物件解除配置。
- 如申請專利範圍第11項所述的方法,其中所述第一資料物件是神經網路的第一層的啟動。
- 如申請專利範圍第1項所述的方法,更包括: 產生零個或更多個訓練內存留資料物件識別符的清單,第一訓練內存留資料物件識別符識別神經網路中的第一資料物件, 確定所述神經網路的訓練已完成,以及 基於確定所述神經網路的訓練已完成而將所述第一資料物件解除配置。
- 如申請專利範圍第13項所述的方法,其中所述第一資料物件是所述神經網路的第一層中的權重。
- 一種用於機器學習的系統,所述系統包括: 圖形處理器,以及 記憶體,連接到所述圖形處理器, 所述圖形處理器被配置成: 調用非重用檢測器;以及 在調用所述非重用檢測器之後,啟動圖形處理器內核, 所述非重用檢測器被配置成: 識別第一資料物件,所述第一資料物件具有由以所述第一資料物件作為輸入的一個或多個任務界定的存留期; 產生依賴關聯式結構,所述依賴關聯式結構包含: 第一資料物件識別符,識別所述第一資料物件,以及 所述一個或多個任務中以所述第一資料物件作為輸入的第一任務; 確定計數,所述計數是對所述第一資料物件識別符的依賴關係的數目; 確定所述第一任務已完成執行; 至少部分地基於確定所述第一任務已完成執行而將所述計數遞減1; 確定所述計數小於第一閾值;以及 至少部分地基於確定所述計數小於所述第一閾值而將所述第一資料物件解除配置。
- 如申請專利範圍第15項所述的系統,其中所述第一閾值是1。
- 如申請專利範圍第15項所述的系統,其中所述第一任務是神經網路的第一層中的計算運算。
- 如申請專利範圍第17項所述的系統,其中所述第一資料物件是所述第一層中的啟動。
- 如申請專利範圍第18項所述的系統,其中所述第一任務包括在反向推算期間: 計算所述啟動中的梯度;以及 計算權重中的梯度。
- 一種用於機器學習的方法,所述方法包括: 為神經網路中的第一資料物件分配記憶體; 確定所述第一資料物件具有至少由以所述第一資料物件作為輸入的一個或多個任務界定的存留期; 確定以所述第一資料物件作為輸入的所述一個或多個任務中的最後一個已完成執行;以及 基於確定以所述第一資料物件作為輸入的所述一個或多個任務中的所述最後一個已完成執行且基於確定所述第一資料物件具有至少由以所述第一資料物件作為輸入的一個或多個任務界定的存留期而將所述第一資料物件解除配置。
- 如申請專利範圍第20項所述的方法,更包括為所述神經網路中的第二資料物件分配記憶體; 確定所述第二資料物件具有由反向推算的完成界定的存留期;以及 基於確定所述第二資料物件具有由所述反向推算的所述完成界定的所述存留期而在所述反向推算的所述完成時將所述第二資料物件解除配置。
- 如申請專利範圍第21項所述的方法,更包括為所述神經網路中的第三資料物件分配記憶體; 確定所述第三資料物件具有由所述神經網路的訓練的完成界定的存留期;以及 基於確定所述第三資料物件具有由所述神經網路的訓練的所述完成界定的所述存留期而在所述神經網路的訓練的所述完成時將所述第三資料物件解除配置。
Applications Claiming Priority (4)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US201862625530P | 2018-02-02 | 2018-02-02 | |
| US62/625,530 | 2018-02-02 | ||
| US15/948,706 US11468312B2 (en) | 2018-02-02 | 2018-04-09 | Memory management for machine learning training on GPU |
| US15/948,706 | 2018-04-09 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| TW201935293A TW201935293A (zh) | 2019-09-01 |
| TWI782131B true TWI782131B (zh) | 2022-11-01 |
Family
ID=67475595
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW107139416A TWI782131B (zh) | 2018-02-02 | 2018-11-07 | 用於記憶體管理的方法和用於機器學習的系統及方法 |
Country Status (5)
| Country | Link |
|---|---|
| US (1) | US11468312B2 (zh) |
| JP (1) | JP2019133666A (zh) |
| KR (1) | KR20190094089A (zh) |
| CN (1) | CN110135588B (zh) |
| TW (1) | TWI782131B (zh) |
Families Citing this family (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US11182694B2 (en) * | 2018-02-02 | 2021-11-23 | Samsung Electronics Co., Ltd. | Data path for GPU machine learning training with key value SSD |
| CN112783640B (zh) * | 2019-11-11 | 2023-04-04 | 上海肇观电子科技有限公司 | 预先分配内存的方法与设备、电路、电子设备及介质 |
| KR102263622B1 (ko) * | 2019-11-29 | 2021-06-10 | 울산과학기술원 | 메모리 사용 프로필에 기초하여 기계 학습 모델의 트레이닝을 위한 메모리 할당 방법 및 장치 |
| US11521062B2 (en) * | 2019-12-05 | 2022-12-06 | International Business Machines Corporation | Neural network training using a data flow graph and dynamic memory management |
| CN114625536B (zh) * | 2022-03-15 | 2023-10-31 | 北京有竹居网络技术有限公司 | 显存分配方法、装置、介质及电子设备 |
| CN117591274B (zh) * | 2023-11-09 | 2025-10-31 | 北京工业大学 | 一种面向深度神经网络的异构多核系统访存管理方法 |
Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20160335537A1 (en) * | 2012-10-19 | 2016-11-17 | Pearson Education, Inc. | Neural networking system and methods |
| US20170032487A1 (en) * | 2015-07-30 | 2017-02-02 | International Business Machines Corporation | Pipelined approach to fused kernels for optimization of machine learning workloads on graphical processing units |
Family Cites Families (28)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH07114470A (ja) * | 1993-10-19 | 1995-05-02 | Nec Corp | 共有データ管理システム |
| US6721865B2 (en) * | 2001-04-10 | 2004-04-13 | International Business Machines Corporation | Elimination of coloring during object creation for concurrent garbage collection |
| US20040181562A1 (en) * | 2003-03-13 | 2004-09-16 | Piotr Findeisen | System and method for determining deallocatable memory in a heap |
| US20040181782A1 (en) * | 2003-03-13 | 2004-09-16 | Piotr Findeisen | System and method for optimizing memory usage by locating lingering objects |
| US7325118B2 (en) * | 2003-09-30 | 2008-01-29 | Samsung Electronics, Co., Ltd. | Method and apparatus for executing dynamic memory management with object-oriented program |
| US7219085B2 (en) * | 2003-12-09 | 2007-05-15 | Microsoft Corporation | System and method for accelerating and optimizing the processing of machine learning techniques using a graphics processing unit |
| US8001336B2 (en) * | 2007-03-02 | 2011-08-16 | International Business Machines Corporation | Deterministic memory management in a computing environment |
| US9053017B2 (en) * | 2011-09-09 | 2015-06-09 | Microsoft Technology Licensing, Llc | Managing object lifetime in a cyclic graph |
| US20130113809A1 (en) | 2011-11-07 | 2013-05-09 | Nvidia Corporation | Technique for inter-procedural memory address space optimization in gpu computing compiler |
| US10073626B2 (en) * | 2013-03-15 | 2018-09-11 | Virident Systems, Llc | Managing the write performance of an asymmetric memory system |
| US8966438B2 (en) * | 2013-06-02 | 2015-02-24 | Mark Spencer Chamberlain | System and methods for end-users to graphically program and manage computers and devices |
| CN104036451B (zh) | 2014-06-20 | 2018-12-11 | 深圳市腾讯计算机系统有限公司 | 基于多图形处理器的模型并行处理方法及装置 |
| US9965824B2 (en) | 2015-04-23 | 2018-05-08 | Google Llc | Architecture for high performance, power efficient, programmable image processing |
| US10452995B2 (en) * | 2015-06-29 | 2019-10-22 | Microsoft Technology Licensing, Llc | Machine learning classification on hardware accelerators with stacked memory |
| US10013348B2 (en) * | 2015-09-10 | 2018-07-03 | University Of Rochester | Parallel memory allocator employing liveness metrics |
| WO2017073000A1 (ja) * | 2015-10-29 | 2017-05-04 | 株式会社Preferred Networks | 情報処理装置及び情報処理方法 |
| US9819900B2 (en) * | 2015-12-30 | 2017-11-14 | Spreadtrum Communications (Shanghai) Co., Ltd. | Method and apparatus for de-interlacing television signal |
| US9965382B2 (en) | 2016-04-04 | 2018-05-08 | Omni Ai, Inc. | Data composite for efficient memory transfer in a behavioral recognition system |
| US20170287104A1 (en) | 2016-04-04 | 2017-10-05 | Omni Al, Inc. | Dynamic memory allocation in a behavioral recognition system |
| CN106027300B (zh) * | 2016-05-23 | 2019-03-05 | 深圳市飞仙智能科技有限公司 | 一种应用神经网络的智能机器人参数优化系统及方法 |
| AU2017281095B2 (en) * | 2016-06-21 | 2022-03-03 | Ryan CALME | System and method for automated evaluation system routing |
| US10228957B2 (en) * | 2017-01-20 | 2019-03-12 | International Business Machines Corporation | Online method handle deduplication |
| GB201704844D0 (en) * | 2017-03-27 | 2017-05-10 | Microsoft Technology Licensing Llc | Manual memory management using lazy patching |
| US10949660B2 (en) * | 2017-04-10 | 2021-03-16 | Pearson Education, Inc. | Electronic handwriting processor with convolutional neural networks |
| US10380259B2 (en) * | 2017-05-22 | 2019-08-13 | International Business Machines Corporation | Deep embedding for natural language content based on semantic dependencies |
| US20190026473A1 (en) * | 2017-07-21 | 2019-01-24 | Pearson Education, Inc. | System and method for automated feature-based alert triggering |
| US10936238B2 (en) * | 2017-11-28 | 2021-03-02 | Pure Storage, Inc. | Hybrid data tiering |
| US10990282B1 (en) * | 2017-11-28 | 2021-04-27 | Pure Storage, Inc. | Hybrid data tiering with cloud storage |
-
2018
- 2018-04-09 US US15/948,706 patent/US11468312B2/en active Active
- 2018-11-07 TW TW107139416A patent/TWI782131B/zh not_active IP Right Cessation
- 2018-12-04 KR KR1020180154809A patent/KR20190094089A/ko not_active Ceased
-
2019
- 2019-01-16 CN CN201910040704.4A patent/CN110135588B/zh active Active
- 2019-02-01 JP JP2019016622A patent/JP2019133666A/ja active Pending
Patent Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20160335537A1 (en) * | 2012-10-19 | 2016-11-17 | Pearson Education, Inc. | Neural networking system and methods |
| US20170032487A1 (en) * | 2015-07-30 | 2017-02-02 | International Business Machines Corporation | Pipelined approach to fused kernels for optimization of machine learning workloads on graphical processing units |
Also Published As
| Publication number | Publication date |
|---|---|
| KR20190094089A (ko) | 2019-08-12 |
| CN110135588B (zh) | 2025-05-06 |
| US20190244096A1 (en) | 2019-08-08 |
| US11468312B2 (en) | 2022-10-11 |
| JP2019133666A (ja) | 2019-08-08 |
| CN110135588A (zh) | 2019-08-16 |
| TW201935293A (zh) | 2019-09-01 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| TWI782131B (zh) | 用於記憶體管理的方法和用於機器學習的系統及方法 | |
| TWI728421B (zh) | 用於修改機器學習模型之方法及非暫時性電腦儲存媒體以及機器學習計算系統 | |
| CN110276454B (zh) | 用于机器学习的系统和控制该系统的方法以及电子系统 | |
| US7996630B2 (en) | Method of managing memory in multiprocessor system on chip | |
| CN113688062B (zh) | 用于存储数据的方法和相关产品 | |
| JP2016503205A (ja) | スケーラブル競合適応性を有する統計カウンタを実施するシステムおよび方法 | |
| CN111984400A (zh) | 神经网络的内存分配方法及装置 | |
| US12039450B2 (en) | Adaptive batch reuse on deep memories | |
| KR20240023642A (ko) | 메모리-로컬 컴퓨팅을 위한 아토믹 메모리 동작들의 동적 병합 | |
| CN104156323B (zh) | 一种高速缓冲存储器的数据块长度自适应读取方法及装置 | |
| CN113939830B (zh) | 神经网络模型的高效处理 | |
| US20230147472A1 (en) | Neural network training with acceleration | |
| WO2025097560A1 (zh) | 一种面向深度神经网络的异构多核系统访存管理方法 | |
| CN104536764A (zh) | 程序运行方法和装置 | |
| CN104516823A (zh) | 一种数据存储方法和装置 | |
| US12333625B2 (en) | Neural network training with acceleration | |
| KR20240104560A (ko) | 통합 가상 메모리 관리 방법 및 장치 | |
| CN120596169B (zh) | 多核系统启动任务的处理方法、装置、设备及存储介质 | |
| JP7339537B2 (ja) | 情報処理装置、情報処理プログラム、及び情報処理方法 | |
| US20250328470A1 (en) | Technique for prefetching with a pointer prefetcher | |
| US9606829B2 (en) | Suspending transactional-memory transactions without stack corruption | |
| CN120179360A (zh) | 任务执行方法、装置、电子设备以及存储介质 | |
| KR20240163515A (ko) | 호스트 액세스 가능한 프리페처 큐를 통해 데이터를 프리페칭하는 시스템 및 방법 | |
| CN120762594A (zh) | 数据存储方法、装置、电子设备和存储介质 | |
| CN120872503A (zh) | 一种gpu访存模拟系统、方法、存储介质及电子设备 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| MM4A | Annulment or lapse of patent due to non-payment of fees |