[發明專利]一種神經網絡的內存分配方法有效
| 申請號: | 202010618681.3 | 申請日: | 2020-06-30 |
| 公開(公告)號: | CN111814971B | 公開(公告)日: | 2022-08-05 |
| 發明(設計)人: | 鄭迪;任俊林;劉祥有;凌云 | 申請(專利權)人: | 杭州國芯科技股份有限公司 |
| 主分類號: | G06N3/063 | 分類號: | G06N3/063;G06F9/50;G06F12/02 |
| 代理公司: | 杭州君度專利代理事務所(特殊普通合伙) 33240 | 代理人: | 楊舟濤 |
| 地址: | 310012 浙江省杭州市文*** | 國省代碼: | 浙江;33 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 神經網絡 內存 分配 方法 | ||
本發明公開了一種神經網絡的內存分配方法。傳統的動態內存分配方法存有較大浪費,而手動分配內存方法需要花費較多人工時間。本發明方法首先獲取計算圖中的計算單元,并按計算順序對每個計算單元依次編號;然后獲取模型中所有計算單元的內存可重用張量的計算編號集合;確定內存可重用張量的最終內存分配方式,并獲取模型所需可重用內存的總大小和每個內存可重用張量的分配出來的內存地址。本發明方法可以有效減少神經網絡模型申請和釋放內存時產生的內存碎片,降低神經網絡模型所需的總內存大小,可以方便地在實際工程中使用。
技術領域
本發明屬于計算機技術領域,尤其是人工智能技術領域,具體涉及一種神經網絡的內存分配方法。
背景技術
人工智能這幾年來迅猛發展,而深度學習和神經網絡正是人工智能發展的基礎。由于神經網絡往往層數較多且張量大小較大,會消耗較多內存。并且,近年來把神經網絡部署到嵌入式設備上的需求越來越強烈。因此對內存分配的優化至關重要。
一種內存優化的方法是采用傳統的動態內存分配方法,如C語言標準庫中malloc函數的內存分配。但這種動態分配方法未從更全局的角度去分配內存,容易產生較多的內存碎片,導致實際分配的內存有較多浪費。
另一種內存優化的方法是采用手動分配內存,由軟件工程師手動分配每個操作單元的內存地址。這種方式可以較好地提高內存使用率,但是會花費很多人工時間,不適合在實際工程中使用。
發明內容
本發明的目的就是提供了一種神經網絡的內存分配方法,可以有效地減少內存分配和釋放過程中產生的內存碎片,從而降低神經網絡模型運行時所需的內存大小。
本發明方法包括如下步驟:
S1.獲取計算圖中的計算單元,并按計算順序對每個計算單元依次編號;
S2.獲取模型中所有計算單元的內存可重用張量的計算編號集合;
S3.確定內存可重用張量的最終內存分配方式;
S4.獲取模型所需可重用內存的總大小和每個內存可重用張量的分配出來的內存地址。
進一步,步驟S1具體是:
S11.遍歷神經網絡計算圖,去除輸入張量和輸出張量在內存中數據存儲完全一致的操作單元,得到實際需要計算的計算單元;
S12.對所有的計算單元的按照計算順序進行排序,使前面計算單元的輸入張量不依賴于后面計算單元的輸出張量;
S13.按排序后的計算單元依次編號,K個計算單元的編號依次為1,2,…,K。
進一步,步驟S2具體是:
S21.確定模型中的內存可重用張量:
模型中的張量包括模型輸入張量、模型輸出張量、模型權重張量、模型數據張量;其中,模型輸入張量和模型數據張量的內存可重復使用,即為內存可重用張量;
S22.確定計算單元的內存可重用張量:
每個計算單元的張量包括單元輸入張量和單元輸出張量;對于計算單元,單元輸入張量可能為模型輸入張量、模型權重張量或模型數據張量,單元輸出張量可能為模型輸出張量或模型數據張量;
如果單元輸入張量為模型輸入張量或模型數據張量,則該單元輸入張量為計算單元的內存可重用張量;
如果單元輸出張量為模型數據張量,則該單元輸出張量為計算單元的內存可重用張量;
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于杭州國芯科技股份有限公司,未經杭州國芯科技股份有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202010618681.3/2.html,轉載請聲明來源鉆瓜專利網。





