TWI664587B - 排程神經網路處理 - Google Patents
排程神經網路處理 Download PDFInfo
- Publication number
- TWI664587B TWI664587B TW107104603A TW107104603A TWI664587B TW I664587 B TWI664587 B TW I664587B TW 107104603 A TW107104603 A TW 107104603A TW 107104603 A TW107104603 A TW 107104603A TW I664587 B TWI664587 B TW I664587B
- Authority
- TW
- Taiwan
- Prior art keywords
- neural network
- layer
- layers
- super
- batch
- Prior art date
Links
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 257
- 238000012545 processing Methods 0.000 title claims description 112
- 230000015654 memory Effects 0.000 claims abstract description 158
- 238000000034 method Methods 0.000 claims abstract description 85
- 230000008569 process Effects 0.000 claims abstract description 47
- 238000005192 partition Methods 0.000 claims abstract description 14
- 210000005036 nerve Anatomy 0.000 claims 1
- 239000010410 layer Substances 0.000 description 261
- 230000004913 activation Effects 0.000 description 16
- 238000001994 activation Methods 0.000 description 16
- 238000010586 diagram Methods 0.000 description 14
- 238000010801 machine learning Methods 0.000 description 12
- 238000004891 communication Methods 0.000 description 9
- 238000004590 computer program Methods 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 6
- 230000009471 action Effects 0.000 description 4
- 238000005265 energy consumption Methods 0.000 description 4
- 239000011159 matrix material Substances 0.000 description 4
- 238000009825 accumulation Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000003062 neural network model Methods 0.000 description 3
- 238000011176 pooling Methods 0.000 description 3
- 230000009467 reduction Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 238000013527 convolutional neural network Methods 0.000 description 2
- 230000001965 increasing effect Effects 0.000 description 2
- 230000005055 memory storage Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 239000004020 conductor Substances 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 239000002356 single layer Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000008685 targeting Effects 0.000 description 1
Classifications
-
- 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/04—Architecture, e.g. interconnection topology
- G06N3/042—Knowledge-based neural networks; Logical representations of neural networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- 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
-
- 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
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/06—Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computing Systems (AREA)
- Artificial Intelligence (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Business, Economics & Management (AREA)
- Human Resources & Organizations (AREA)
- Economics (AREA)
- Entrepreneurship & Innovation (AREA)
- Strategic Management (AREA)
- Neurology (AREA)
- Game Theory and Decision Science (AREA)
- Development Economics (AREA)
- Marketing (AREA)
- Operations Research (AREA)
- Quality & Reliability (AREA)
- Tourism & Hospitality (AREA)
- General Business, Economics & Management (AREA)
- Educational Administration (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
- Image Analysis (AREA)
- Semiconductor Memories (AREA)
- Memory System (AREA)
Abstract
一種電腦實施方法包含接收待使用一硬體電路上之一神經網路處理之一批次神經網路輸入。該神經網路具有配置成一有向圖之多個層且各層具有一各自參數集。該方法包含判定將該等神經網路層分割成一序列超層。各超層係包含一或多個層之該有向圖之一分割區。該方法包含使用該硬體電路處理該批次輸入,其包含,對於該序列中之各超層:i)將針對該超層中之該等層之該各自參數集載入至該硬體電路之記憶體中,及ii)對於該批次中之各輸入,透過該超層中之該等層之各者使用該硬體電路之該記憶體中之該等參數處理輸入以針對該輸入產生一超層輸出。
Description
本說明書係關於用於執行神經網路運算之記憶體管理程序。
神經網路係採用一或多個操作層以針對一經接收輸入產生一輸出(例如,一分類)的機器學習模型。一些神經網路除了一輸出層之外亦包含一或多個隱藏層。各隱藏層之輸出係用作至該網路中之下一層(即,該網路之下一隱藏層或該輸出層)之輸入。該網路之一些或所有層根據一各自參數集之當前值自一經接收輸入產生一輸出。 一些神經網路包含一或多個卷積神經網路層。各卷積神經網路層具有一組相關聯內核。各內核包含憑藉藉由一使用者建立之一神經網路模型建立的值。在一些實施方案中,內核識別特定影像輪廓、形狀或色彩。內核可表示為權數輸入之一矩陣結構。各卷積層亦可處理一組啟動輸入。該組啟動輸入亦可表示為一矩陣結構。
本說明書中所描述之標的包含用於接收待使用一硬體電路上之一神經網路處理之一批次神經網路輸入的系統及方法。該神經網路可包含配置成一有向圖之多個層且各層可具有一各自參數集。根據所描述技術之方法包含判定將該等神經網路層分割成一序列超層(superlayer)。各超層可為包含一或多個層之該有向圖之一分割區。 所描述方法可包含使用該硬體電路處理該批次輸入。例如,處理該批次輸入可包含將針對該序列之各超層中之層之各自參數集載入至該硬體電路之一記憶體中。此外,對於該批次中之各輸入,該等所描述方法可包含透過該超層中之該等層之各者使用該硬體電路之該記憶體中之該等參數處理輸入以基於該輸入產生一超層輸出。 本說明書中所描述之標的之一項態樣可體現於一種電腦實施方法中。該方法包含:接收待使用一硬體電路上之一神經網路處理之一批次神經網路輸入,該神經網路具有配置成一有向圖之複數個層,各層具有一各自參數集;及判定將該等神經網路層分割成一序列超層,各超層為包含一或多個層之該有向圖之一分割區。 該方法進一步包含使用硬體電路處理該批次神經網路輸入,其包含,對於該序列中之各超層:將針對該超層中之層之各自參數集載入至該硬體電路之記憶體中;及對於該批次中之各神經網路輸入,透過該超層中之該等層之各者使用該硬體電路之該記憶體中之該等參數處理對應於該神經網路輸入之一超層輸入以針對該神經網路輸入產生一超層輸出。 此等及其他實施方案可各視需要包含以下特徵之一或多者。例如,在一些實施方案中,對於序列中之一第一超層,對應於神經網路輸入之超層輸入係神經網路輸入。在一些實施方案中,至該第一超層輸出之後的各超層之超層輸入係藉由該序列中之一先前超層產生之一超層輸出。 在一些實施方案中,使用硬體電路處理該批次神經網路輸入包括,對於各超層:透過該超層中之層之各者循序處理對應於該批次神經網路輸入之超層輸入,使得在隨後透過該超層中之該等層之各者處理對應於該批次中之一第二神經網路輸入之一超層輸入之前,透過該超層中之該等層之各者處理針對該批次中之一第一神經網路輸入之超層輸入。 在一些實施方案中,一超層之各自層與一工作集相關聯,至少藉由以下各者定義各工作集:i)待使用硬體電路上之神經網路處理之該批次神經網路輸入之一或多個輸入,或該超層之一先前層之一或多個輸出;及ii)指示透過該超層中之該等層之各者處理該一或多個輸入所需之一記憶體量的一大小參數。 在一些實施方案中,判定將神經網路層分割成一序列超層包含:i)判定針對至少一工作集之一特定大小參數;ii)判定硬體電路之記憶體之一特定彙總參數容量;及iii)基於針對該至少一工作集之該特定大小參數或該硬體電路之該記憶體之該特定彙總參數容量之至少一者判定將該等神經網路層分割成一序列超層。 在一些實施方案中,硬體電路之記憶體具有一臨限儲存容量,且判定將神經網路層分割成一序列超層包含:基於該硬體電路之該記憶體之該臨限儲存容量將該等神經網路層分割成一序列超層。 在一些實施方案中,將神經網路層分割成一序列超層以在硬體電路處理該批次神經網路輸入時,不超過記憶體之臨限儲存容量。 在一些實施方案中,該批次神經網路輸入及各自參數集係接收自硬體電路外部之一來源,且其中透過超層之各層處理對應於該等神經網路輸入之超層輸入包括在不自該外部來源接收任何額外參數的情況下處理該等超層輸入。 此態樣及其他態樣之其他實施方案包含經組態以執行方法之動作之對應系統、設備及編碼於電腦儲存裝置上之電腦程式。一或多個電腦之一運算系統或硬體電路可憑藉安裝於系統上之在操作中引起該系統執行動作之軟體、韌體、硬體或其等之組合而如此組態。一或多個電腦程式可憑藉具有在藉由資料處理設備執行時引起該設備執行動作之指令而如此組態。 本說明書中所描述之標的可實施於特定實施例中以實現以下優點之一或多者。藉由將神經網路層分割成一序列超層,在神經網路使用參數集處理一輸入時可最小化由一神經網路硬體電路進行之外部通信。在運算程序期間藉由硬體電路進行之經最小化外部通信可導致該硬體電路之經改良之頻寬消耗及能量優化。 此外,一序列超層可提供一種全域排程程序,該全域排程程序使一神經網路模型之「批次」及「層」維度互混以最佳化用於透過神經網路層處理輸入之一或多個記憶體工作集。例如,藉由對批次及層維度執行全域排程,可最小化神經網路應用程式之即時(live)記憶體工作集,藉此增強針對一給定硬體電路之輸入之不分批次執行。即時記憶體工作集可對應於用於透過一神經網路之層處理之資料,其中該資料當前駐存於一資料處理設備或處理器硬體電路之一實體記憶體空間中。 此外,一實例性硬體電路可包含晶片上記憶體(例如,SRAM),使得經最小化工作集之輸入及參數可使用SRAM容量儲存於晶片上。因此,若在基於提供若干序列超層之一全域排程程序有效利用SRAM容量時不再需要額外記憶體資源來儲存輸入及參數,則可實現成本節省。在一些實施方案中,晶片上SRAM容量可視需要按比例調大或調小以滿足特定設計要求及提供可包含或可不包含形成超層序列之排程程序。 本說明書中所描述之標的之一或多項實施方案之細節係在下文附圖及描述中闡述。將自描述、圖式及技術方案明白標的之其他可能特徵、態樣及優點。
具有多個層之一神經網路可用於運算推論。例如,給定一輸入,該神經網路可針對該輸入運算一推論。該神經網路藉由透過該神經網路之層之各者處理該輸入而運算此推論。特定言之,該神經網路之該等層可配置成一有向圖,其中一些或所有層具有一各自參數集。各層接收一輸入且根據針對該層之該參數集處理該輸入以產生一輸出。該輸出可用作下一神經網路層處之一輸入。 因此,為自一經接收輸入運算一推論,神經網路接收該輸入且透過該有向圖中之神經網路層之各者處理該輸入以產生該推論,其中來自一神經網路層之輸出被提供作為至下一神經網路層之輸入。至一神經網路層之資料輸入(例如,至該神經網路之輸入或至一神經網路層之連接至該有向圖中之層之一或多個層之輸出)可被稱為至該層之啟動輸入。 有向圖中之任何特定層可接收多個輸入,產生多個輸出或兩種情況。神經網路之層亦可經配置使得一層之一輸出可作為一輸入發送回至一先前層。根據所描述技術之方法可包含判定將該等神經網路層分割成一序列超層,使得各超層係包含一或多個層之該有向圖之一分割區。 所描述方法可包含透過針對一硬體電路上之一神經網路之序列中之各自超層之層處理該批次輸入。處理該批次輸入可包含將該等層之參數載入至該硬體電路之一記憶體中,及使用該等參數處理一神經網路輸入以針對該輸入產生各自超層輸出。 在一些實施方案中,本說明書中所描述之一或多個功能可使用一系統之一硬體電路或電子組件執行。該硬體電路可自電耦合至該硬體電路之一控制裝置接收控制信號。該硬體電路可為一經封裝電子裝置,該經封裝電子裝置包含用於儲存至一神經網路層之輸入及用於處理該等輸入之參數的一或多個非暫時性機器可讀儲存媒體(例如,記憶體)。 硬體電路可包含形成一經封裝積體電路或諸如一處理器微晶片之處理器裝置(例如,一CPU或GPU)之多個組件。因此,在此例項中,硬體電路之記憶體相對於形成該微晶片之該多個其他組件可為「晶片上」記憶體。如本說明書中所使用,一經封裝硬體電路或電子裝置可包含經囊封或圍封於一支撐殼內之半導體材料(諸如一矽晶圓)。該支撐殼可包含自該殼之一周邊延伸以用於將裝置連接至一印刷電路板之一導體線。 控制裝置可為與硬體電路間隔開且在藉由該硬體電路之組件封裝(例如,支撐殼)圍封之至少晶片上記憶體外部的一外部控制器。該外部控制器可為提供控制信號至硬體電路以引起該硬體電路使用上文所論述之輸入及參數執行神經網路推論運算之一系統級控制器。該外部控制器可包含「晶片外」記憶體,其中該記憶體係在晶片外,此至少係因為該記憶體並不與經封裝硬體電路之晶片上記憶體共同定位。 在一些實施方案中,當執行推論運算時,外部控制器可使用硬體電路之晶片上記憶體而非使用晶片外記憶體來儲存輸入及參數。回應於自系統之至少一控制器接收控制信號,硬體電路存取晶片上記憶體及使用該等經儲存之輸入及參數執行神經網路運算。 圖1展示可用於執行神經網路運算之一硬體電路100之一實例。執行神經網路運算可包含電路100透過一神經網路之各具有一各自參數集之層處理神經網路輸入。在一些實施方案中,電路100對應於包含一或多個處理器、處理器微晶片或體現一神經網路之其他電路組件之一硬體電路。在其他實施方案中,電路100可包含一或多個硬體電路、處理器及形成一或多個神經網路之其他相關電路組件。一般而言,根據所描述技術之方法可應用於各種處理器架構(諸如CPU、GPU、數位信號處理器(DSP)或其他相關處理器架構)或可使用該等處理器架構實施。 電路100大體上包含一控制器108,該控制器108提供一或多個控制信號110以引起與記憶體104相關聯之輸入儲存至記憶體102之一記憶體位址或自記憶體102之一記憶體位址擷取。同樣地,控制器108亦提供一或多個控制信號110以引起參數記憶體106之參數儲存至記憶體102之一記憶體位址或自記憶體102之一記憶體位址擷取。 電路100進一步包含一或多個乘法累加(MAC)胞/單元107、一輸入啟動匯流排112及一輸出啟動匯流排114。控制信號110可(例如)引起記憶體102提供一或多個輸入至輸入啟動匯流排112,引起記憶體102提供來自參數記憶體106之一或多個參數,及/或引起MAC胞/單元107使用該等輸入及參數執行產生經提供至輸出啟動匯流排114之輸出啟動之運算。 控制器108可包含一或多個處理單元及記憶體。控制器108之處理單元可包含一或多個處理器(例如,微處理器或中央處理單元(CPU))、圖形處理單元(GPU)、特定應用積體電路(ASIC)或不同處理器之一組合。控制器108亦可包含提供用於執行本說明書中所描述之判定及計算之一或多者之額外處理選項的其他儲存或運算資源/裝置(例如,緩衝器、暫存器、控制電路等)。 在一些實施方案中,控制器108之(若干)處理單元執行儲存於記憶體中之指令以引起控制器108及電路110執行本說明書中所描述之一或多個功能。控制器108之記憶體可包含一或多個非暫時性機器可讀儲存媒體。本文中所描述之非暫時性機器可讀儲存媒體可包含一固態記憶體、一磁碟、一光碟、一可攜式電腦磁片、一隨機存取記憶體(RAM)、一唯讀記憶體(ROM)、一可擦除可程式化唯讀記憶體(例如,EPROM、EEPROM或快閃記憶體),或能夠儲存資訊之任何其他有形媒體。 電路100可為一實例性運算單元或運算塊(tile)且可包含用以執行與多維資料結構(諸如張量、矩陣及/或資料陣列)相關聯之運算的額外硬體結構。在一些實施方案中,使用藉由電路100自與一神經網路運算系統相關聯之一外部或較高層級控制裝置接收之資料值可將輸入值預載入至啟動記憶體104且可將參數/權數值預載入至參數記憶體106。 電路100可接收定義待藉由使用系統之一神經網路執行之一特定運算操作之指令。一般而言,儲存於記憶體102中之資料值通常各寫入至一各自記憶體位址位置。當需要一資料值(諸如一輸入)來執行一特定運算操作時可接著藉由一實例性控制裝置(例如,控制器108)存取記憶體102中之該位址位置。 控制器108可提供一或多個控制信號110至記憶體102以將來自記憶體102之輸入載入至輸入啟動匯流排112上且提供值至包含MAC 107之一運算單元陣列。啟動記憶體104之一索引可包含具有輸入之所有記憶體位址位置。資料匯流排112可藉由一運算陣列之一或多個單元存取。該運算陣列之該等單元可自資料匯流排112接收一或多個啟動值以基於該等經接收之啟動值執行與矩陣乘法有關之運算。 對於一給定運算週期,電路100可需要存取啟動記憶體104及參數記憶體106之一元素以執行與針對一神經網路層之推論運算相關聯之乘法運算。對於其中執行運算之一週期,控制器108可每次提供一個輸入值且包含MAC胞107之運算單元陣列將使一啟動與一權數/參數相乘以針對一給定輸入產生不同輸出啟動。 在一些實施方案中,運算單元陣列之各MAC胞107可負責一神經網路層之不同輸出深度。該運算單元陣列可完全藉由控制器108加以控制,且控制器108可基於一啟動值之偵測判定何時需要執行一特定運算。 此外,輸入值可在到達電路100之後經分析以儲存於記憶體102中。回應於分析該等輸入,控制器108可執行程式化指令以藉由僅將特定輸入值(例如,僅非零啟動值)儲存於記憶體102中而有效壓縮啟動資料,藉此節省記憶體儲存空間及對應頻寬。 當電路100接收輸入及參數時,控制器108可(例如)執行一或多個直接記憶體存取操作。此等記憶體存取操作之執行包含將對應於啟動記憶體104之維度元素之輸入儲存於記憶體102之位址位置中。同樣地,控制器108亦可將對應於參數記憶體106之維度元素之參數儲存於記憶體102之位址位置中。控制器108可進一步包含維持將自其提取一特定輸入之記憶體位址之一或多個位址暫存器。此外,該一或多個暫存器亦將儲存自其提取一對應參數以與該特定輸入相乘之記憶體位址。 當循序處理一第一輸入及一第二輸入時,控制器108可參考上文提及之暫存器以判定針對該第一輸入之一對應參數(及記憶體位址)及判定針對該第二輸入之一對應參數(及記憶體位址)。在一些實施方案中,在一第一神經網路層處運算之輸出啟動係用作至該網路中之下一/後續第二層(例如,該網路之下一隱藏層或輸出層)之輸入。一般而言,神經網路之各層根據一各自參數集之當前值自一經接收輸入產生一輸出。 在替代實施方案中,可能存在一些運算操作,其中將一單個輸入用作覆蓋針對參數記憶體106之一給定維度元素之各種權數之若干乘法運算的一運算元(例如,以反覆一「X」或「Y」維度)。根據所描述技術,電路100可經組態以自一運算系統或機器學習系統之一外部控制器接收控制信號。該外部控制器可提供儲存於電路100之一晶片上記憶體中之若干批次神經網路輸入及參數。如下文更詳細描述,該外部控制器可經組態以實施由電路100上之一神經網路進行批次元素處理之一排程原則。 例如,系統之一外部控制器可提供控制信號至電路100以引起電路100透過該神經網路之層使用儲存於電路100之晶片上記憶體中之輸入及參數處理神經網路輸入。根據所描述技術,一特定排程原則可用於將該神經網路之層分割成形成一或多個序列之超層之層群組(下文描述)。系統控制器可接著使用電路100存取儲存於晶片上記憶體中之輸入及參數且接著透過一序列超層中之各層處理若干批次神經網路輸入。 圖2A繪示與使用一神經網路之各自層處理一單批次元素有關的一實例性圖表200A。在一些實施方案中,圖表200A/200B及下文所描述之圖表300、500及600A/600B係不同於可表示一神經網路之拓樸之一實例性有向圖。 圖表200A展示在透過該神經網路之層處理該批次元素期間一工作集之大小如何改變。該工作集之該大小係以儲存單元204表示。一般而言,針對一給定神經網路層之一工作集包含至該神經網路層之輸入、來自該神經網路層之輸出及用於藉由該神經網路層處理該等輸入之參數。工作集大體上包含一給定神經網路運算所需且在下文更詳細描述之一或多個資料結構之一群組。 一或多個儲存單元204係用於儲存針對一神經網路層之一工作集及相關聯參數之輸入。儲存單元204可與上文所描述之記憶體102之記憶體資源相關聯。一批次元素係使用一硬體電路上之一實例性神經網路處理之一單個神經網路輸入。 如上文所提及,一神經網路可包含用於運算推論之多個層,且一推論係藉由透過該神經網路之該等層處理一神經網路輸入而予以運算。因此,圖表200A進一步展示包含層A、層B、層C、層D及層E之神經網路層206。圖表200A展示一批次元素首先透過層A處理,接著透過層B處理,接著透過層C處理,接著透過層D處理且接著透過層E處理。在一些實施方案中,層206之各自層可為以下類型之神經網路層之一者:一卷積層、一縮減層、一完全連接(FC)層、一分類器層、一逐個元素相乘層或一池化層(例如,平均池化層或最大池化層)。 針對一神經網路層之一工作集可包含一或多個批次元素及用於透過該神經網路之各自層處理該等批次元素之參數。一工作集可藉由以下各者定義:i)待使用該硬體電路上之神經網路處理之一批次輸入之一或多個輸入/批次元素;及ii)指示儲存該等輸入及參數所需之一記憶體量的儲存單元204之一大小參數或數目。除了輸入之外,一工作集亦可包含輸出啟動。在一些實施方案中,一神經網路可被描述為具有與上文所描述之批次元素相關聯之一「批次」維度及對應於層206之一「層」維度。 一般而言,圖2A之以下描述為在下文參考(例如)圖3至圖6所描述之經改良神經網路排程程序提供背景內容。例如,層206可為包含至少五個層(例如,層A、B、C、D及E)之一實例性機器學習模型之神經網路層。藉由該機器學習模型執行之推論運算可經歷特徵深度或輸出跨步(striding)之突然或意外增加。當此發生時,一神經網路運算程序中之一給定點處之一作用工作集可隨時間流逝增加輸入及輸出啟動數量或減少輸入及輸出啟動數量。 例如,如圖2A中所展示,藉由一機器學習模型處理之一單批次元素之一工作集可需要針對在層A處發生之批次處理之一單個儲存單元204。針對一給定工作集處理之輸入啟動之增加可在層B處之批次處理期間發生。因此,機器學習模型可在層B處之批次處理期間需要使用8個儲存單元204而非在層A處需要使用單個儲存單元204。此外,在圖2A之實施方案中,在層C、D及E處處理之工作集可分別需要2個、4個及1個儲存單元。 在一些實施方案中,輸入/輸出啟動數量及對應所需儲存單元之增加或減少可基於一神經網路之各具有不同數目個參數或權數之層而發生。因此,針對層A之一工作集相對於層B可包含更少啟動及參數,且因此針對層A之該工作集相對於可需要更多儲存資源之針對層B之一較大工作集可僅需要更少儲存資源。 在一些實施方案中,儲存單元204可對應於輸入記憶體104及參數記憶體106之記憶體資源。例如,儲存單元204可對應於與電路100之一硬體電路之上述電子組件之晶片上記憶體相關聯的一靜態隨機存取記憶體(SRAM)之記憶體資源。包含記憶體104、106之晶片上記憶體資源可具有一固定或臨限儲存容量。此臨限儲存容量可小於或實質上小於與電路100之晶片外記憶體相關聯之一動態隨機存取記憶體(DRAM)資源之一儲存容量。如上文所指示,該晶片外記憶體可為一較高層級外部控制裝置之記憶體。 圖2B繪示與針對一神經網路之一給定層處理多批次元素有關的一實例性圖表200B。圖表200B包含用於儲存與批次212之各自批次元素相關聯之工作集之輸入之儲存單元208的一第一集合。圖表200B進一步包含用於儲存與批次214之各自批次元素相關聯之工作集之輸入之儲存單元210的一第二集合。 在圖2B之實施方案中,兩個或兩個以上批次可各包含多個批次元素,即批次212可具有至少一個別批次元素「0」,且批次214可具有至少一個別批次元素「1」。至少兩個批次212、214的處理可引起一給定工作集之一相對大小放大批次大小的倍數。例如,如圖2B中所展示,層206之各者(層A至層E)處之工作集大小可基於具有對應批次大小之至少兩個批次(批次212及批次214)之處理輸入而放大(例如)兩倍。 如上文所論述,一系統控制器可經組態以包含用於實施定義透過一神經網路之一或多層處理若干批次輸入之方式的一神經網路排程程序或原則之編譯時間排程或其他運算邏輯。例如,電路100接收一批次神經網路輸入且該系統控制器針對應如何處理該等輸入以對該批次中之各輸入執行一推論而判定一排程程序。處理該等輸入引起該神經網路產生可經提供至該神經網路之一後續層之中間輸入(諸如輸入啟動)。中間輸入可對應於作為輸入啟動提供至一後續神經網路層之一第一神經網路層之輸出啟動。 在一習知排程原則中,一神經網路透過一第一神經網路層處理一批次中之各輸入或批次元素以針對各批次元素產生一層輸出(輸出啟動)。接著透過一第二神經網路層處理各層輸出等等,直至完成處理該批次中之該等批次元素。即,在神經網路中之下一層之任何處理發生之前,針對該批次中之所有批次元素執行一給定層的處理。此習知神經網路排程原則可受限於諸如記憶體容量之約束且因此在最大化一機器學習系統之可用記憶體及運算資源之使用時可能無效。 關於使用一實例性硬體電路之晶片上記憶體(例如,記憶體104、106之儲存單元204),在一些實施方案中,可基於一工作集之一大小而判定可藉由晶片上記憶體資源支援之一最大批次大小。特定言之,藉由儲存單元204支援之該最大批次大小可至少部分基於藉由一給定神經網路層處理之輸入及參數之最大工作集而判定。 例如且參考圖2B,與記憶體102及104相關聯之一總晶片上儲存容量可限於20個儲存單元204。在圖2B中,因為藉由層B處理之兩個批次元素之一工作集需要16個儲存單元204,所以處理一第三批次元素將需要儲存單元204之24個單元且因此超過該20儲存單元容量。因此,在此實例中,當處理各批次元素需要至少8個儲存單元時,一神經網路可僅支援包含兩個批次元素之一特定最大工作集大小。 明確言之,在圖2B之實施方案中,處理工作集中之批次元素「0」需要8個如藉由元件符號208所指示之儲存單元且處理工作集中之批次元素「1」亦需要8個如藉由元件符號210所指示之儲存單元。因此,因為處理批次元素0及1共同需要16個儲存單元204,所以處理需要4個以上儲存單元204之至少一額外批次元素將超過一神經網路之一硬體電路之可用記憶體資源之晶片上儲存容量(此處限於20個單元)。 圖3繪示與在形成一或多個超層308及310之一神經網路之多個層206中處理批次元素有關的一實例性圖表300,其中超層308 (例如)包含層A、B及C。圖表300包含用於儲存與各自批次元素302之批次元素0相關聯之工作集之輸入及參數之儲存單元304的一第一集合。同樣地,圖表300進一步包含用於儲存與各自批次元素302之批次元素1相關聯之工作集之輸入及參數之儲存單元306的一第二集合(其等在圖3中以灰色展示)。 如上文所指示,電路100可包含相對於電路100之其他組件或電路可具有較少晶片上或SRAM儲存資源之一實例性電子組件或硬體電路。然而,如本文中所描述,電路100可經組態以使用可用晶片上記憶體執行運算密集型機器學習演算法。在此等例項中,一機器學習系統之一神經網路可包含一加速器架構,該加速器架構不對可藉由硬體電路之晶片上記憶體之儲存單元204支援之一最小或最大批次大小強加不必要的約束。 根據所描述技術,一經改良之神經網路排程程序可用於有效利用透過使用電路100之一硬體電路之本端晶片上儲存資源而賦予之批次本端性。此外,使用此晶片上儲存以及其他本端運算資源可在頻寬敏感及能量敏感運算環境中最佳化可用頻寬及節約組件能量消耗。又進一步,使用此晶片上儲存資源及其他本端資源可用於在透過一神經網路之層處理輸入期間最小化藉由硬體電路之外部通信。 例如,如上文簡要提及,實施一神經網路之一硬體電路可在外部與一主機裝置/外部控制器通信以接收藉由該神經網路用於運算推論之神經網路輸入及參數。此等外部通信可需要使用該硬體電路之晶片上運算資源。因此,該等外部通信可減小該硬體電路之可用運算頻寬,增加系統延時且亦可引起該硬體電路之電子組件之能量消耗的增加。 鑑於與頻寬及能量消耗有關之此等約束,本說明書描述使一實例性神經網路模型之「批次」及「層」維度互混以最佳化特定記憶體工作集之使用的一全域排程原則或程序。特定言之,所描述技術之實施方案可包含利用一機器學習模型之批次及層維度最小化藉由神經網路處理之批次元素之作用工作集之一大小的一靈活神經網路排程原則。 例如,根據所描述教示之一經改良神經網路排程程序使作用工作集能設定大小,使得晶片上記憶體104、106中之該等工作集(包含參數)之儲存並未超過晶片上記憶體資源之一臨限儲存容量。因此,本文中所描述之方法實現一神經網路之批次元素處理之有效排程。例如,可基於一排程原則實現效率,該排程原則以不對輸入及用於處理該等輸入之參數之一批次大小強加不必要的約束之一方式使工作集能儲存於一硬體電路之晶片上儲存器中。 此外,根據所描述教示之一經改良排程原則可最大化用於儲存輸入及參數之可用晶片上資源之有效使用,使得最小化用以存取晶片外資源之外部通信。晶片上資源之有效使用及經減少之外部通信可導致可用系統頻寬增加及系統組件之能量消耗的整體減少。 在一些實施方案中,可使用軟體指令或程式碼來編碼一經改良排程程序或原則之態樣。該等指令可藉由電路100之至少一處理器、控制器108之至少一處理器,或電路100之一實例性硬體電路或控制器108或兩者之至少一處理器執行。 圖4係透過一神經網路之超層使用電路100處理神經網路輸入之一方法400的一實例性流程圖。方法或程序400對應於用於藉由一神經網路進行批次元素處理之一經改良排程原則。在方塊402處,電路100接收待使用系統之一硬體電路上之一神經網路處理之一批次神經網路輸入。該神經網路可具有配置成一有向圖之多個層且各層可具有一各自參數集。如上文所論述,在一些實施方案中,電路100之一硬體電路可自一實例性神經網路硬體系統之一主機介面裝置或較高層級控制器接收輸入。 在方塊404處,電路100判定將神經網路層分割成一序列超層。例如,電路100可包含或可存取經組態以判定將神經網路層一或多次分割成若干序列超層之編譯器邏輯。替代性地或除該編譯器邏輯之外,電路100可包含或可存取經組態以判定將神經網路層一或多次分割成若干序列超層之至少一硬體區塊。在一些實施方案中,超層序列中之各超層係包含一或多個層之一有向圖之一分割區。 在方塊406處,電路100使用系統之硬體電路處理批次神經網路輸入。在一些實施方案中,使用硬體電路處理一批次神經網路輸入可包含將針對超層中之層之各自參數集載入至記憶體106中。在一些例項中,針對一超層中之層之參數係針對一序列超層中之各超層而載入。此外,使用硬體電路處理一批次神經網路輸入亦可包含針對該批次中之各神經網路輸入,透過超層中之層之各者使用該硬體電路之記憶體中之參數處理該神經網路輸入以針對該神經網路輸入產生一超層輸出。 對於序列中之一第一超層,至該超層之神經網路輸入(例如,一超層輸入)之輸出係一第一超層輸出。此外,在該第一超層之後至各超層之超層輸入係藉由序列中之一先前超層產生之一超層輸出。在一些實施方案中,處理一批次神經網路輸入包含透過序列中之一第一超層之所有層處理該等輸入且接著透過該序列中之各後續超層之所有層處理該等輸入直至已透過神經網路中之所有超層處理該批次中之所有輸入。 再次參考圖3,當使用一經改良神經網路排程程序時,可針對多個層308及310以一不分批次方式執行一批次元素。根據所描述技術,多個層308可形成一第一超層,而多個層310可形成不同於該第一超層之一第二超層。經分割以形成超層之多個層之群組係在下文參考圖4更詳細描述。 如圖3中所展示,在一些實施方案中,相對於其中處理一較小工作集之層C處之所需儲存單元量,一實例性機器學習模型之層B可需要大量儲存單元204來處理一大工作集。當針對一批次元素之一工作集足夠小時,一經改良排程程序可包含一機器學習模型切換至藉由多個層之一特定群組(例如,一超層) (諸如超層/層308)處理之下一批次元素。 例如,實施於電路100之一硬體電路上之一神經網路可經組態以對一神經網路之「批次」及「層」維度執行全域排程。特定言之,可藉由在一第一程序反覆中對於一第一批次元素0執行層308之一群組(A、B、C),且接著在一第二程序反覆中對於一第二批次元素1執行相同層之群組(A、B、C) 308,而執行至一神經網路層之輸入之批次處理。 如圖3中所展示,相對於上文所描述之習知排程原則之一最大工作集大小,根據一經改良排程原則在不同批次元素之間交替減小工作集之一最大大小。例如,至少關於針對批次元素1之在層B處之批次處理,在不同批次元素之間交替可將層B之一最大工作集大小減小至10個單元,來代替在使用上文所描述之習知排程原則時需要16個單元之最大工作集大小。例如,8個單元可用於針對批次元素1之在層B處之批次處理,且2個單元可用於儲存批次元素0之層A、B、C處之先前批次處理的輸出及/或與用於在層D及E處處理之批次元素0相關聯的工作集之輸入及參數。 圖5繪示表示被分割成用於使用經分割以形成超層之多個層處理至少一單批次元素之一序列超層之神經網路層的一實例性圖表500。圖表500包含用於儲存針對各自批次元素502之批次元素0之工作集之輸入之儲存單元504的一第一集合。 同樣地,圖表500進一步包含:a)用於儲存針對各自批次元素502之批次元素1之工作集之輸入之儲存單元506的一第二集合;b)用於儲存針對各自批次元素502之批次元素2之工作集之輸入之儲存單元508的一第三集合;及c)用於儲存針對各自批次元素502之批次元素3之工作集之輸入之儲存單元510的一第四集合。 圖表500進一步包含沿著該圖表之一X軸之一序列超層。例如,圖表500包含:i)透過層A、B、C之各者處理批次元素0、1、2及3之一第一超層512;及ii)透過層D、E之各者處理批次元素0、1、2及3之一第二超層514。根據所描述教示,基於一經改良神經網路排程原則定義之一序列超層可在不超過執行一神經網路之一硬體電路之晶片上記憶體容量或臨限容量的情況下支援一相對較高工作集批次大小。 例如,如圖5中所展示,當在一實例性「B3」層及批次階段期間處理輸入時,一工作集之一最大大小可僅需要14個儲存單元用於四個批次元素(例如,如藉由各自儲存單元204之區分陰影圖案所指示之批次元素0、1、2及3)。如與習知排程程序(例如,其需要16個儲存單元)相比,所需儲存單元之此減少容許經由一硬體電路之晶片上記憶體接收及儲存之輸入及參數之本端性的改良利用。晶片上資源之此經改良利用可導致部分基於晶片外或DRAM記憶體資源之經減少使用而實現之增加之頻寬及能量節省。 此外,如上文簡要提及,一經改良排程原則可用於在不超過電路100之一硬體電路之晶片上記憶體容量的情況下處理一或多個批次輸入或一或多個輸入。在一些實施方案中,透過一序列中之一超層之層處理一或多個批次神經網路輸入可包含藉由該序列中之一第一超層(512)產生作為至一神經網路之至少一後續層之一輸入而由該後續層接收之一第一超層輸出。 在一些例項中,至一序列超層中之一第二超層之一神經網路輸入可對應於藉由該序列中之一第一超層產生之一第一超層輸出。此外,透過一序列中之一超層之層處理一批次輸入可包含透過該第二超層中之層之各者使用一硬體電路之一記憶體中之參數處理一神經網路輸入以針對對應於一第一超層輸出之一神經網路輸入產生一第二超層輸出。 在一些實施方案中,透過一序列超層中之一超層之層處理一批次神經網路輸入可包含透過該超層之各層逐一處理針對一批次元素之輸入。例如,處理一批次輸入可包含透過一超層中之層之各者循序處理兩個或兩個以上神經網路輸入。此循序處理可包含透過該超層之各層處理一第一神經網路輸入且接著透過該超層之各層處理一第二神經網路輸入。 在一些實施方案中,對於序列中之各超層,透過該超層之層處理輸入可包含透過該超層中之該等層之各者循序處理對應於批次神經網路輸入之超層輸入,使得在隨後透過該超層中之該等層之各者處理對應於該批次中之一第二神經網路輸入之一超層輸入之前,透過該超層中之該等層之各者處理針對該批次中之一第一神經網路輸入之超層輸入。 在一些實施方案中,一序列超層中之一第一超層可包含一單個神經網路層。在此實施方案中,透過一序列超層處理輸入可包含透過包含該單個神經網路層之該第一超層處理一第一輸入。在透過該第一超層之該單個層處理此第一輸入之後,可緊接在透過後續超層(其在該序列中之該第一超層之後)之所有層處理該第一輸入之前,藉由該第一超層處理一第二輸入。藉由該序列中之該後續超層處理之該第一輸入可為包含該單個神經網路層之該第一超層之一超層輸出。 可根據一經改良神經網路排程原則基於分割層群組形成一超層及一或多個序列超層。在一些實施方案中,電路100包含針對一經改良排程原則之程式化指令且此等指令可包含判定將神經網路層分割成一序列超層。各超層可為包含一或多個層之一有向圖之一分割區。 一經改良排程程序之態樣可引起神經網路層形成為多個超層,使得可自電路100之一硬體電路之晶片上儲存器存取針對一給定超層之所有輸入及參數。如上文所指示,對輸入及參數之晶片上存取可最小化藉由該硬體電路之外部通信,例如,因為該硬體電路可避免與自一晶片外介面獲得額外數量之輸入及參數之循環提取操作相關聯的運算程序,所以可最小化外部通信。 在一些實施方案中,一晶片外介面可將一硬體電路耦合至提供輸入及參數至電路100之一外部控制裝置。特定言之,一序列超層中之各超層可接收用於處理針對該超層之一或多個神經網路輸入之一特定數量的參數。在一些例項中,透過該超層之層處理該一或多個神經網路輸入可包含在不接收後續數量之參數來處理針對該超層之一特定數量之輸入的情況下處理輸入。 在一些實施方案中,電路100執行程式碼以判定一序列超層之一或多個超層分割區或邊界。例如,電路100可判定或運算針對一給定層之一啟動工作集與彙總參數容量之一總和。電路100可接著使用該經判定總和以部分基於一硬體電路之記憶體資源之一預定義或臨限晶片上儲存容量(例如,記憶體104及106)而判定將神經網路層分割成一序列超層。因此,可將神經網路層分割成一序列超層以在電路100之一硬體電路處理一或多個批次神經網路輸入時,不超過晶片上記憶體之一臨限儲存容量。 在一些實施方案中,判定將神經網路層分割成一序列超層包含:i)電路100判定針對包含藉由神經網路處理之輸入之至少一工作集的一特定大小參數;ii)電路100判定一硬體電路之一記憶體之一特定彙總輸入啟動及參數容量;及iii)電路100至少基於針對該至少一工作集之該特定大小參數或該硬體電路之該記憶體之該特定彙總輸入啟動及參數容量而判定將該等層分割成一序列超層。 例如,晶片上記憶體之一儲存容量或臨限容量可為500百萬位元組(MB)。電路100可基於一等式1 [總使用量= (工作集* N) +參數]而判定總晶片上記憶體使用量,其中等式1之一變量N係一批次大小。電路100可接著判定儲存針對一神經網路之各層之各自參數集所需之一記憶體量。在一些實施方案中,參考圖5,電路100可判定:i)針對層A之一參數集需要25 MB之記憶體;ii)針對層B之一參數集需要125 MB之記憶體;及iii)針對層C之一參數集需要50 MB之記憶體。 因此,在此實例中,電路100判定針對層A、B及C之各自參數集之彙總記憶體使用量係200 MB,留下300 MB之可用晶片上記憶體以用於儲存輸入(例如,500 MB晶片上記憶體容量減去200 MB之彙總記憶體使用量)。對於各自層A、B、C,電路100可判定針對待藉由該等各自層處理之工作集之輸入之一特定大小參數及針對該工作集之一對應批次大小。使用針對該工作集之該等輸入之該大小參數及該對應批次大小,電路100可判定記憶體之彙總啟動及參數容量。電路100可使用該記憶體之該彙總啟動及參數容量來判定將層分割成一序列超層。 在一些實施方案中,電路100使用等式1、(例如,記憶體單元中之)輸入之大小參數、批次大小及用於參數之彙總記憶體來判定針對一或多個層群組之一總晶片上記憶體使用量。電路100可比較針對各層群組之該總記憶體使用量與500 MB晶片上儲存容量。電路100可接著基於該比較之結果判定形成一序列超層之層之一分割或分組。電路100判定將該等層分割成一序列超層以在一硬體電路處理針對工作集之一批次神經網路輸入時,不超過晶片上記憶體之臨限儲存容量(500 MB)。 圖6A繪示表示針對一神經網路層之一啟動工作集大小的一實例性圖表600A,而圖6B繪示表示針對一神經網路之一超層之一啟動工作集大小的一實例性圖表600B。如上文所論述,且如藉由圖表600A及600B所指示,在與針對配置成超層之神經網路層之一工作集之一大小相比時,針對並未配置成超層之神經網路層之工作集可包含實質上更大工作集大小。 例如,針對使用上文所描述之習知排程原則之批次處理之工作集可導致包含數百萬個輸入之工作集大小。當晶片上儲存單元204用於儲存輸入及用於處理該等輸入之參數時,此等大數量之輸入可超過一硬體電路之晶片上記憶體資源之一儲存或臨限容量。相比而言,針對基於如本文中所描述之一經改良排程原則之使用超層分割區之批次處理之工作集可導致包含實質上更少輸入之工作集大小。該等實質上更少數量之輸入可使用晶片上儲存單元204有效儲存,使得並未超過晶片上記憶體容量。 可在數位電子電路、有形體現之電腦軟體或韌體、電腦硬體(包含本說明書中所揭示之結構及其等之結構等效物)或其等之一或多者之組合中實施本說明書中所描述之標的及功能操作之實施例。本說明書中所描述之標的之實施例可實施為一或多個電腦程式,即,在一有形非暫時性程式載體上編碼以藉由資料處理設備執行或控制資料處理設備之操作之電腦程式指令之一或多個模組。 替代性地或此外,程式指令可在一人工產生之傳播信號(例如,一機器產生之電、光學或電磁信號)上予以編碼,該傳播信號經產生以編碼資訊用於傳輸至合適接收器設備以藉由一資料處理設備執行。電腦儲存媒體可為一機器可讀儲存裝置、一機器可讀儲存基板、一隨機或串列存取記憶體裝置或其等之一或多者之一組合。 可藉由執行一或多個電腦程式以藉由對輸入資料操作及產生(若干)輸出來執行功能之一或多個可程式化電腦來執行本說明書中所描述之程序及邏輯流程。亦可藉由專用邏輯電路(例如,一FPGA (場可程式化閘陣列)、一ASIC (特定應用積體電路)、一GPGPU (通用圖形處理單元)或一些其他處理單元)來執行該等程序及邏輯流程,且設備亦可實施為該專用邏輯電路。 適用於一電腦程式的執行之電腦包含(舉例而言,可基於)通用微處理器或專用微處理器或兩者或任何其他種類之中央處理單元。一般而言,一中央處理單元將自一唯讀記憶體或一隨機存取記憶體或兩者接收指令及資料。一電腦之關鍵元件係用於執行(performing或executing)指令之一中央處理單元及用於儲存指令及資料之一或多個記憶體裝置。一般而言,一電腦將亦包含用於儲存資料之一或多個大容量儲存裝置(例如,磁碟、磁光碟或光碟),或可操作耦合以自該一或多個大容量儲存裝置接收資料或將資料傳送至該一或多個大容量儲存裝置,或該兩種情況。然而,一電腦未必具有此等裝置。 適用於儲存電腦程式指令及資料之電腦可讀媒體包含所有形式的非揮發性記憶體、媒體及記憶體裝置,舉例而言,包含:半導體記憶體裝置,例如,EPROM、EEPROM,及快閃記憶體裝置;磁碟,例如,內部硬碟或隨身碟。處理器及記憶體可藉由專用邏輯電路補充或併入專用邏輯電路中。 雖然本說明書含有許多特定實施方案細節,但此等細節不應被理解為限制任何發明或可主張之內容之範疇,而是被理解為描述可特定於特定發明之特定實施例之特徵。本說明書中在分離實施例之背景內容中所描述之特定特徵亦可組合實施於一單個實施例中。相反地,在一單個實施例之背景內容中描述之各種特徵亦可分別實施於多個實施例中或以任何合適子組合實施。此外,儘管特徵可在上文被描述為依特定組合起作用且甚至最初如此主張,然來自一所主張之組合之一或多個特徵在一些情況中可自該組合免除,且該所主張之組合可係關於一子組合或一子組合之變型。 類似地,雖然在圖式中依一特定順序描繪操作,但此不應被理解為需要依所展示之該特定順序或依循序順序來執行此等操作或需要執行所有經繪示之操作以達成所要結果。在特定境況中,多任務處理及平行處理可為有利的。此外,上文所描述之實施例中之各種系統模組及組件之分離不應被理解為在所有實施例中需要此分離,且應理解,所描述之程式組件及系統可大體上一起整合於一單個軟體產品中或封裝至多個軟體產品中。 已描述標的之特定實施例。其他實施例係在以下發明申請專利範圍之範疇內。例如,在發明申請專利範圍中敘述之動作可依不同順序執行且仍達成所要結果。作為一實例,附圖中所描繪之程序並不一定需要所展示之特定順序或循序順序來達成所要結果。在某些實施方案中,多任務處理及平行處理可為有利的。
0‧‧‧批次元素
1‧‧‧批次元素
2‧‧‧批次元素
3‧‧‧批次元素
100‧‧‧硬體電路/電路
102‧‧‧記憶體
104‧‧‧記憶體/啟動記憶體
106‧‧‧參數記憶體/記憶體
107‧‧‧乘法累加(MAC)胞/乘法累加(MAC)單元/乘法累加(MAC)
108‧‧‧控制器
110‧‧‧控制信號
112‧‧‧輸入啟動匯流排/資料匯流排
114‧‧‧輸出啟動匯流排
200A‧‧‧圖表
200B‧‧‧圖表
204‧‧‧儲存單元/晶片上儲存單元
206‧‧‧神經網路層/層
208‧‧‧儲存單元
210‧‧‧儲存單元
212‧‧‧批次
214‧‧‧批次
300‧‧‧圖表
302‧‧‧批次元素
304‧‧‧儲存單元
306‧‧‧儲存單元
308‧‧‧超層/層
310‧‧‧超層/層
400‧‧‧方法/程序
402‧‧‧方塊
404‧‧‧方塊
406‧‧‧方塊
500‧‧‧圖表
502‧‧‧批次元素
504‧‧‧儲存單元
506‧‧‧儲存單元
508‧‧‧儲存單元
510‧‧‧儲存單元
512‧‧‧第一超層
514‧‧‧第二超層
600A‧‧‧圖表
600B‧‧‧圖表
A‧‧‧層
B‧‧‧層
C‧‧‧層
D‧‧‧層
E‧‧‧層
圖1繪示用於透過各具有一各自參數集之一神經網路之層處理神經網路輸入的一實例性硬體電路。 圖2A繪示與使用一神經網路之各自層處理一單批次元素有關的一實例性圖表。 圖2B繪示與針對一神經網路之一給定層處理多批次元素有關的一實例性圖表。 圖3繪示與在形成一超層之一神經網路之多個層中處理一單批次元素有關的一實例性圖表。 圖4係透過一神經網路之超層處理神經網路輸入之一方法的一實例性流程圖。 圖5繪示表示被分割成一序列超層用於使用一超層之多個層處理一單批次元素之神經網路層的一實例性圖表。 圖6A繪示表示針對一神經網路層之一工作集大小的一實例性圖表。 圖6B繪示表示針對一神經網路之一超層之一工作集大小的一實例性圖表。 各種圖式中之相同元件符號及名稱指示相同元件。
Claims (20)
- 一種方法,其包括: 接收待使用一硬體電路上之一神經網路處理之一批次神經網路輸入,該神經網路具有配置成一有向圖之複數個層,各層具有一各自參數集; 判定將該等神經網路層分割成一序列超層,各超層為包含一或多個層之該有向圖之一分割區; 使用該硬體電路處理該批次神經網路輸入,其包括,對於該序列中之各超層: 將針對該超層中之該等層之該各自參數集載入至該硬體電路之記憶體中;及 對於該批次中之各神經網路輸入: 透過該超層中之該等層之各者使用該硬體電路之該記憶體中之該等參數處理對應於該神經網路輸入之一超層輸入以針對該神經網路輸入產生一超層輸出。
- 如請求項1之方法,其中對於該序列中之一第一超層,對應於該神經網路輸入之該超層輸入係該神經網路輸入。
- 如請求項2之方法,其中在該第一超層輸出之後至各超層之該超層輸入係藉由該序列中之一先前超層產生之一超層輸出。
- 如請求項1至3中一項之方法,其中使用該硬體電路處理該批次神經網路輸入包括,對於各超層: 透過該超層中之該等層之各者循序處理對應於該批次神經網路輸入之該等超層輸入,使得在隨後透過該超層中之該等層之各者處理對應於該批次中之一第二神經網路輸入之一超層輸入之前,透過該超層中之該等層之各者處理針對該批次中之一第一神經網路輸入之該超層輸入。
- 如請求項1至3中一項之方法,其中一超層之各自層與一工作集相關聯,至少藉由以下各者定義各工作集: i)待使用該硬體電路上之該神經網路處理之該批次神經網路輸入之一或多個輸入,或該超層之一先前層之一或多個輸出;及 ii)指示透過該超層中之該等層之各者處理該一或多個輸入所需之一記憶體量的一大小參數。
- 如請求項5之方法,其中判定該將該等神經網路層分割成一序列超層包括: i)判定針對至少一工作集之一特定大小參數; ii)判定該硬體電路之該記憶體之一特定彙總參數容量;及 iii)基於針對該至少一工作集之該特定大小參數或該硬體電路之該記憶體之該特定彙總參數容量之至少一者判定將該等神經網路層分割成一序列超層。
- 如請求項1至3中一項之方法,其中該硬體電路之該記憶體具有一臨限儲存容量,且判定將該等神經網路層分割成一序列超層包括: 基於該硬體電路之該記憶體之該臨限儲存容量將該等神經網路層分割成一序列超層。
- 如請求項7之方法,其中將該等神經網路層分割成一序列超層以在該硬體電路處理該批次神經網路輸入時,不超過該記憶體之該臨限儲存容量。
- 如請求項1至3中一項之方法,其中該批次神經網路輸入及該各自參數集係接收自該硬體電路外部之一來源,且其中透過該超層之各層處理對應於該等神經網路輸入之該等超層輸入包括在不自該外部來源接收任何額外參數的情況下處理該等超層輸入。
- 一種運算系統,其包括: 一硬體電路,其安置於該運算系統中,該硬體電路包含一或多個處理裝置;及 一或多個機器可讀儲存裝置,其或其等用於儲存可藉由該一或多個處理裝置執行以執行包括以下各者之操作之指令: 接收待使用一硬體電路上之一神經網路處理之一批次神經網路輸入,該神經網路具有配置成一有向圖之複數個層,各層具有一各自參數集; 判定將該等神經網路層分割成一序列超層,各超層為包含一或多個層之該有向圖之一分割區; 使用該硬體電路處理該批次神經網路輸入,其包括,對於該序列中之各超層: 將針對該超層中之該等層之該各自參數集載入至該硬體電路之記憶體中;及 對於該批次中之各神經網路輸入: 透過該超層中之該等層之各者使用該硬體電路之該記憶體中之該等參數處理對應於該神經網路輸入之一超層輸入以針對該神經網路輸入產生一超層輸出。
- 如請求項10之運算系統,其中對於該序列中之一第一超層,對應於該神經網路輸入之該超層輸入係該神經網路輸入。
- 如請求項11之運算系統,其中在該第一超層輸出之後至各超層之該超層輸入係藉由該序列中之一先前超層產生之一超層輸出。
- 如請求項10至12中一項之運算系統,其中使用該硬體電路處理該批次神經網路輸入包括,對於各超層: 透過該超層中之該等層之各者循序處理對應於該批次神經網路輸入之該等超層輸入,使得在隨後透過該超層中之該等層之各者處理對應於該批次中之一第二神經網路輸入之一超層輸入之前,透過該超層中之該等層之各者處理針對該批次中之一第一神經網路輸入之該超層輸入。
- 如請求項10至12中一項之運算系統,其中一超層之各自層與一工作集相關聯,至少藉由以下各者定義各工作集: i)待使用該硬體電路上之該神經網路處理之該批次神經網路輸入之一或多個輸入,或該超層之一先前層之一或多個輸出;及 ii)指示透過該超層中之該等層之各者處理該一或多個輸入所需之一記憶體量的一大小參數。
- 如請求項14之運算系統,其中判定將該等神經網路層分割成一序列超層包括: i)判定針對至少一工作集之一特定大小參數; ii)判定該硬體電路之該記憶體之一特定彙總參數容量;及 iii)基於針對該至少一工作集之該特定大小參數或該硬體電路之該記憶體之該特定彙總參數容量之至少一者判定將該等神經網路層分割成一序列超層。
- 如請求項10至12中一項之運算系統,其中該硬體電路之該記憶體具有一臨限儲存容量,且判定將該等神經網路層分割成一序列超層包括: 基於該硬體電路之該記憶體之該臨限儲存容量將該等神經網路層分割成一序列超層。
- 如請求項16之運算系統,其中將該等神經網路層分割成一序列超層以在該硬體電路處理該批次神經網路輸入時,不超過該記憶體之該臨限儲存容量。
- 如請求項10至12中一項之運算系統,其中該批次神經網路輸入及該各自參數集係接收自該硬體電路外部之一來源,且其中透過該超層之各層處理對應於該等神經網路輸入之該等超層輸入包括在不自該外部來源接收任何額外參數的情況下處理該等超層輸入。
- 一種機器可讀儲存裝置,其或其等儲存可藉由一或多個儲存裝置執行以執行包括以下各者之操作的指令: 接收待使用一硬體電路上之一神經網路處理之一批次神經網路輸入,該神經網路具有配置成一有向圖之複數個層,各層具有一各自參數集; 判定將該等神經網路層分割成一序列超層,各超層為包含一或多個層之該有向圖之一分割區; 使用該硬體電路處理該批次神經網路輸入,其包括,對於該序列中之各超層: 將針對該超層中之該等層之該各自參數集載入至該硬體電路之記憶體中;及 對於該批次中之各神經網路輸入: 透過該超層中之該等層之各者使用該硬體電路之該記憶體中之該等參數處理對應於該神經網路輸入之一超層輸入以針對該神經網路輸入產生一超層輸出。
- 如請求項19之機器可讀儲存裝置,其中使用該硬體電路處理該批次神經網路輸入包括,對於各超層: 透過該超層中之該等層之各者循序處理對應於該批次神經網路輸入之該等超層輸入,使得在隨後透過該超層中之該等層之各者處理對應於該批次中之一第二神經網路輸入之一超層輸入之前,透過該超層中之該等層之各者處理針對該批次中之一第一神經網路輸入之該超層輸入。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/599,559 US10019668B1 (en) | 2017-05-19 | 2017-05-19 | Scheduling neural network processing |
US15/599,559 | 2017-05-19 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201901534A TW201901534A (zh) | 2019-01-01 |
TWI664587B true TWI664587B (zh) | 2019-07-01 |
Family
ID=61157323
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW107104603A TWI664587B (zh) | 2017-05-19 | 2018-02-09 | 排程神經網路處理 |
TW108119004A TWI699712B (zh) | 2017-05-19 | 2018-02-09 | 用於執行神經網路運算之方法及系統及相關非暫時性機器可讀儲存裝置 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW108119004A TWI699712B (zh) | 2017-05-19 | 2018-02-09 | 用於執行神經網路運算之方法及系統及相關非暫時性機器可讀儲存裝置 |
Country Status (7)
Country | Link |
---|---|
US (3) | US10019668B1 (zh) |
EP (1) | EP3577605A1 (zh) |
JP (2) | JP7025441B2 (zh) |
KR (1) | KR102346636B1 (zh) |
CN (2) | CN117291239A (zh) |
TW (2) | TWI664587B (zh) |
WO (1) | WO2018212799A1 (zh) |
Families Citing this family (66)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11437032B2 (en) | 2017-09-29 | 2022-09-06 | Shanghai Cambricon Information Technology Co., Ltd | Image processing apparatus and method |
US11164074B2 (en) | 2018-02-08 | 2021-11-02 | Western Digital Technologies, Inc. | Multi-core systolic processor system for neural network processing |
US11461579B2 (en) | 2018-02-08 | 2022-10-04 | Western Digital Technologies, Inc. | Configurable neural network engine for convolutional filter sizes |
EP3651077B1 (en) | 2018-02-13 | 2021-10-27 | Shanghai Cambricon Information Technology Co., Ltd | Computation device and method |
US11630666B2 (en) | 2018-02-13 | 2023-04-18 | Shanghai Cambricon Information Technology Co., Ltd | Computing device and method |
US11397579B2 (en) | 2018-02-13 | 2022-07-26 | Shanghai Cambricon Information Technology Co., Ltd | Computing device and method |
CN116991226A (zh) | 2018-02-14 | 2023-11-03 | 上海寒武纪信息科技有限公司 | 处理器的控制装置、方法及设备 |
US11475306B2 (en) | 2018-03-22 | 2022-10-18 | Amazon Technologies, Inc. | Processing for multiple input data sets |
US11461631B2 (en) * | 2018-03-22 | 2022-10-04 | Amazon Technologies, Inc. | Scheduling neural network computations based on memory capacity |
US11562213B2 (en) * | 2018-04-17 | 2023-01-24 | Intel Corporation | Methods and arrangements to manage memory in cascaded neural networks |
CN109313673A (zh) * | 2018-04-17 | 2019-02-05 | 深圳鲲云信息科技有限公司 | 网络模型的运行方法及相关产品 |
EP3624020A4 (en) | 2018-05-18 | 2021-05-05 | Shanghai Cambricon Information Technology Co., Ltd | CALCULATION PROCEDURES AND RELATED PRODUCTS |
US10970120B2 (en) * | 2018-06-26 | 2021-04-06 | Advanced Micro Devices, Inc. | Method and system for opportunistic load balancing in neural networks using metadata |
KR102470893B1 (ko) | 2018-06-27 | 2022-11-25 | 상하이 캠브리콘 인포메이션 테크놀로지 컴퍼니 리미티드 | 온 칩 코드의 브레이크 포인트에 의한 디버그 방법, 온 칩 프로세서 및 브레이크 포인트에 의한 칩 디버그 시스템 |
CN109117949A (zh) * | 2018-08-01 | 2019-01-01 | 南京天数智芯科技有限公司 | 用于人工智能设备的灵活数据流处理器和处理方法 |
US11966583B2 (en) * | 2018-08-28 | 2024-04-23 | Cambricon Technologies Corporation Limited | Data pre-processing method and device, and related computer device and storage medium |
EP3844620A1 (en) | 2018-08-29 | 2021-07-07 | Qualcomm Incorporated | Method, apparatus, and system for an architecture for machine learning acceleration |
US11703939B2 (en) | 2018-09-28 | 2023-07-18 | Shanghai Cambricon Information Technology Co., Ltd | Signal processing device and related products |
US11263529B2 (en) | 2018-10-10 | 2022-03-01 | Google Llc | Modifying machine learning models to improve locality |
CN111383638A (zh) | 2018-12-28 | 2020-07-07 | 上海寒武纪信息科技有限公司 | 信号处理装置、信号处理方法及相关产品 |
JP7379821B2 (ja) * | 2019-01-09 | 2023-11-15 | 日本電信電話株式会社 | 推論処理装置および推論処理方法 |
US11586929B2 (en) | 2019-02-15 | 2023-02-21 | Wipro Limited | Method and system for optimizing memory requirement for training an artificial neural network model |
CN111667046A (zh) * | 2019-03-08 | 2020-09-15 | 富泰华工业(深圳)有限公司 | 深度学习加速方法及用户终端 |
US11783176B2 (en) | 2019-03-25 | 2023-10-10 | Western Digital Technologies, Inc. | Enhanced storage device memory architecture for machine learning |
US10929058B2 (en) | 2019-03-25 | 2021-02-23 | Western Digital Technologies, Inc. | Enhanced memory device architecture for machine learning |
CN111832738B (zh) | 2019-04-18 | 2024-01-09 | 中科寒武纪科技股份有限公司 | 一种数据处理方法及相关产品 |
US20200334522A1 (en) | 2019-04-18 | 2020-10-22 | Cambricon Technologies Corporation Limited | Data processing method and related products |
US11175898B2 (en) * | 2019-05-31 | 2021-11-16 | Apple Inc. | Compiling code for a machine learning model for execution on a specialized processor |
US11676028B2 (en) | 2019-06-12 | 2023-06-13 | Shanghai Cambricon Information Technology Co., Ltd | Neural network quantization parameter determination method and related products |
CN112085191B (zh) | 2019-06-12 | 2024-04-02 | 上海寒武纪信息科技有限公司 | 一种神经网络的量化参数确定方法及相关产品 |
CN114008636A (zh) * | 2019-06-18 | 2022-02-01 | 高通股份有限公司 | 优化机器学习模型性能 |
CN114341888A (zh) * | 2019-07-03 | 2022-04-12 | 华夏芯(北京)通用处理器技术有限公司 | 用于操作加速器电路的指令 |
US11354579B2 (en) * | 2019-07-15 | 2022-06-07 | Microsoft Technology Licensing, Llc | Dynamic multi-layer execution for artificial intelligence modeling |
US11436019B2 (en) | 2019-07-15 | 2022-09-06 | Microsoft Technology Licensing, Llc | Data parallelism in distributed training of artificial intelligence models |
US11520592B2 (en) * | 2019-07-15 | 2022-12-06 | Microsoft Technology Licensing, Llc | Executing large artificial intelligence models on memory-constrained devices |
TWI764236B (zh) * | 2019-08-16 | 2022-05-11 | 美商谷歌有限責任公司 | 晶片上操作的顯式排程 |
US12001955B2 (en) | 2019-08-23 | 2024-06-04 | Anhui Cambricon Information Technology Co., Ltd. | Data processing method, device, computer equipment and storage medium |
WO2021036905A1 (zh) | 2019-08-27 | 2021-03-04 | 安徽寒武纪信息科技有限公司 | 数据处理方法、装置、计算机设备和存储介质 |
US11573828B2 (en) * | 2019-09-16 | 2023-02-07 | Nec Corporation | Efficient and scalable enclave protection for machine learning programs |
DE102019127795A1 (de) * | 2019-10-15 | 2021-04-15 | Infineon Technologies Ag | Schaltung und ein Verfahren zum Bestimmen einer Lage eines Magneten und Joystick |
CN110515739B (zh) * | 2019-10-23 | 2020-01-31 | 上海燧原智能科技有限公司 | 深度学习神经网络模型负载计算方法、装置、设备及介质 |
CN112862085B (zh) * | 2019-11-27 | 2023-08-22 | 杭州海康威视数字技术股份有限公司 | 存储空间优化方法及装置 |
EP4010848A1 (en) * | 2019-12-18 | 2022-06-15 | Google LLC | Parameter caching for neural network accelerators |
CN111338816B (zh) * | 2020-02-18 | 2023-05-12 | 深圳鲲云信息科技有限公司 | 基于神经网络的指令交互方法、系统、设备及存储介质 |
JP6834097B1 (ja) * | 2020-05-15 | 2021-02-24 | エッジコーティックス ピーティーイー. リミテッド | 推論のニューラルネットワークアクセラレータのハードウェア固有分割 |
WO2021237755A1 (zh) * | 2020-05-29 | 2021-12-02 | 华为技术有限公司 | 神经网络调度方法及装置 |
US11288097B2 (en) * | 2020-06-12 | 2022-03-29 | Disney Enterprises, Inc. | Automated hardware resource optimization |
KR20240042266A (ko) * | 2020-08-21 | 2024-04-01 | 주식회사 딥엑스 | 추론 연산을 수행하는 전자 장치 |
KR102299084B1 (ko) * | 2020-08-24 | 2021-09-07 | 오픈엣지테크놀로지 주식회사 | 하드웨어 가속기의 출력 데이터를 메모리에 저장하는 방법, 하드웨어 가속기의 입력 데이터를 메모리로부터 읽는 방법, 및 이를 위한 하드웨어 가속기 |
KR102384587B1 (ko) * | 2020-08-25 | 2022-04-08 | 오픈엣지테크놀로지 주식회사 | 하드웨어 가속기의 출력 데이터를 압축하는 방법, 하드웨어 가속기로의 입력 데이터를 디코딩하는 방법, 및 이를 위한 하드웨어 가속기 |
KR20220027500A (ko) * | 2020-08-27 | 2022-03-08 | 에스케이하이닉스 주식회사 | 가속 장치, 데이터 저장 장치, 데이터 처리 시스템 및 가속 장치의 동작방법 |
KR20220033314A (ko) * | 2020-09-09 | 2022-03-16 | 삼성전자주식회사 | 호스트 프로세서 및 가속기의 동작 방법 및 이들을 포함한 전자 장치 |
KR20220078290A (ko) * | 2020-12-03 | 2022-06-10 | 삼성전자주식회사 | 뉴럴 네트워크 연산 스케줄링 방법 및 장치 |
US11734072B2 (en) * | 2020-12-31 | 2023-08-22 | Nuvolo Technologies Corporation | Stream-based job processing |
KR102506613B1 (ko) * | 2021-04-30 | 2023-03-06 | 주식회사 딥엑스 | 이종의 센서로 제공되는 이종의 데이터를 처리하기 위한 퓨전-인공신경망을 위해 구현되는 npu |
US11511772B2 (en) | 2021-04-30 | 2022-11-29 | Deepx Co., Ltd. | NPU implemented for artificial neural networks to process fusion of heterogeneous data received from heterogeneous sensors |
EP4099609A1 (en) * | 2021-06-04 | 2022-12-07 | Zama SAS | Computational network conversion for fully homomorphic evaluation |
KR102651559B1 (ko) * | 2021-12-08 | 2024-03-26 | 주식회사 딥엑스 | 영상 융합을 위한 신경 프로세싱 유닛 및 인공신경망 시스템 |
WO2023106723A1 (ko) * | 2021-12-08 | 2023-06-15 | 주식회사 딥엑스 | 영상 융합을 위한 신경 프로세싱 유닛 및 인공신경망 시스템 |
US11657260B2 (en) * | 2021-10-26 | 2023-05-23 | Edgecortix Pte. Ltd. | Neural network hardware accelerator data parallelism |
TWI802070B (zh) * | 2021-11-03 | 2023-05-11 | 大陸商星宸科技股份有限公司 | 積體電路及其配置方法 |
US11442775B1 (en) * | 2021-12-03 | 2022-09-13 | FriendliAI Inc. | Dynamic batching for inference system for transformer-based generation tasks |
US11514370B1 (en) | 2021-12-03 | 2022-11-29 | FriendliAI Inc. | Selective batching for inference system for transformer-based generation tasks |
KR102548582B1 (ko) * | 2022-12-26 | 2023-06-29 | 리벨리온 주식회사 | 뉴럴 프로세서 및 이의 명령어 페치 방법 |
KR20240102798A (ko) | 2022-12-26 | 2024-07-03 | 리벨리온 주식회사 | 뉴럴 프로세서 및 이의 명령어 페치 방법 |
US20240256285A1 (en) * | 2023-01-31 | 2024-08-01 | Microsoft Technology Licensing, Llc | Parallelizing multi-phase kernels with cross-phase dependency on heterogenous hardware |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201232429A (en) * | 2011-01-17 | 2012-08-01 | Univ Nat Taipei Technology | High-speed hardware back-propagation and recurrent type artificial neural network with flexible architecture |
TW201701199A (zh) * | 2015-05-21 | 2017-01-01 | 咕果公司 | 類神經網路處理器中之批次處理 |
TW201714078A (zh) * | 2015-10-08 | 2017-04-16 | 上海兆芯集成電路有限公司 | 具有架構神經網路執行單元之處理器 |
Family Cites Families (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7089185B2 (en) | 2002-06-27 | 2006-08-08 | Intel Corporation | Embedded multi-layer coupled hidden Markov model |
US7171043B2 (en) | 2002-10-11 | 2007-01-30 | Intel Corporation | Image recognition using hidden markov models and coupled hidden markov models |
US7203368B2 (en) | 2003-01-06 | 2007-04-10 | Intel Corporation | Embedded bayesian network for pattern recognition |
KR100486735B1 (ko) | 2003-02-28 | 2005-05-03 | 삼성전자주식회사 | 최적구획 분류신경망 구성방법과 최적구획 분류신경망을이용한 자동 레이블링방법 및 장치 |
US7639727B1 (en) * | 2004-10-05 | 2009-12-29 | Cingular Wireless Ii, L.L.C. | System and method for selecting wireless signal bandwidth based on signal strength measurements provided by wireless receivers |
US8462018B1 (en) * | 2011-05-26 | 2013-06-11 | Rockwell Collins, Inc. | Systems and method for controlling the simultaneous display of multi-level classified information on the same surface of an aircraft display unit |
US8725658B2 (en) * | 2011-09-21 | 2014-05-13 | Brain Corporation | Elementary network description for efficient memory management in neuromorphic systems |
US8914315B2 (en) * | 2012-01-27 | 2014-12-16 | International Business Machines Corporation | Multi-compartment neuron suitable for implementation in a distributed hardware model by reducing communication bandwidth |
US9477925B2 (en) | 2012-11-20 | 2016-10-25 | Microsoft Technology Licensing, Llc | Deep neural networks training for speech and pattern recognition |
US10331823B2 (en) * | 2013-10-24 | 2019-06-25 | Mentor Graphics Corporation | Method and system of fast nested-loop circuit verification for process and environmental variation and hierarchical circuits |
US10095917B2 (en) | 2013-11-04 | 2018-10-09 | Facebook, Inc. | Systems and methods for facial representation |
US20160026912A1 (en) * | 2014-07-22 | 2016-01-28 | Intel Corporation | Weight-shifting mechanism for convolutional neural networks |
EP3035204B1 (en) * | 2014-12-19 | 2018-08-15 | Intel Corporation | Storage device and method for performing convolution operations |
US20160335119A1 (en) | 2015-05-12 | 2016-11-17 | minds.ai inc | Batch-based neural network system |
US10438117B1 (en) * | 2015-05-21 | 2019-10-08 | Google Llc | Computing convolutions using a neural network processor |
US9747546B2 (en) * | 2015-05-21 | 2017-08-29 | Google Inc. | Neural network processor |
US10049322B2 (en) * | 2015-05-21 | 2018-08-14 | Google Llc | Prefetching weights for use in a neural network processor |
CN107690663B (zh) * | 2015-06-05 | 2022-04-12 | 渊慧科技有限公司 | 白化神经网络层 |
US10387770B2 (en) | 2015-06-10 | 2019-08-20 | Samsung Electronics Co., Ltd. | Spiking neural network with reduced memory access and reduced in-network bandwidth consumption |
EP3104309B1 (en) * | 2015-06-10 | 2020-04-01 | Samsung Electronics Co., Ltd. | Spiking neural network with reduced memory access and reduced in-network bandwidth consumption |
US9582726B2 (en) * | 2015-06-24 | 2017-02-28 | Qualcomm Incorporated | Systems and methods for image processing in a deep convolution network |
US10452971B2 (en) | 2015-06-29 | 2019-10-22 | Microsoft Technology Licensing, Llc | Deep neural network partitioning on servers |
CN108351983A (zh) | 2015-10-28 | 2018-07-31 | 谷歌有限责任公司 | 修改计算图 |
US20170154262A1 (en) * | 2015-11-30 | 2017-06-01 | Google Inc. | Resizing neural networks |
US10482380B2 (en) * | 2015-12-30 | 2019-11-19 | Amazon Technologies, Inc. | Conditional parallel processing in fully-connected neural networks |
KR102120396B1 (ko) * | 2016-05-26 | 2020-06-08 | 더 가버닝 카운슬 오브 더 유니버시티 오브 토론토 | 심층 신경망용 가속기 |
AU2016203619A1 (en) * | 2016-05-31 | 2017-12-14 | Canon Kabushiki Kaisha | Layer-based operations scheduling to optimise memory for CNN applications |
US10922610B2 (en) * | 2017-09-14 | 2021-02-16 | Intel Corporation | Synchronization scheduler of distributed neural network training |
-
2017
- 2017-05-19 US US15/599,559 patent/US10019668B1/en active Active
-
2018
- 2018-01-17 CN CN202311182467.8A patent/CN117291239A/zh active Pending
- 2018-01-17 JP JP2019552217A patent/JP7025441B2/ja active Active
- 2018-01-17 WO PCT/US2018/013939 patent/WO2018212799A1/en unknown
- 2018-01-17 CN CN201880019345.8A patent/CN110447044B/zh active Active
- 2018-01-17 KR KR1020197027653A patent/KR102346636B1/ko active IP Right Grant
- 2018-01-17 EP EP18703134.9A patent/EP3577605A1/en active Pending
- 2018-02-09 TW TW107104603A patent/TWI664587B/zh active
- 2018-02-09 TW TW108119004A patent/TWI699712B/zh active
- 2018-06-25 US US16/017,052 patent/US11157794B2/en active Active
-
2021
- 2021-10-25 US US17/509,522 patent/US20220156557A1/en active Pending
-
2022
- 2022-02-10 JP JP2022019764A patent/JP7439149B2/ja active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201232429A (en) * | 2011-01-17 | 2012-08-01 | Univ Nat Taipei Technology | High-speed hardware back-propagation and recurrent type artificial neural network with flexible architecture |
TW201701199A (zh) * | 2015-05-21 | 2017-01-01 | 咕果公司 | 類神經網路處理器中之批次處理 |
TW201714078A (zh) * | 2015-10-08 | 2017-04-16 | 上海兆芯集成電路有限公司 | 具有架構神經網路執行單元之處理器 |
Non-Patent Citations (3)
Title |
---|
Han et al,"CNN-MERP:An FPGA-Based Memory-Efficient Reconfigurable Processor for Forward and Backward Propagation of Convolutional Neural Networks",22 March 2017,page1-8,URL:https://arxiv.orgabs1703.07348 * |
Jeffrey Dean ET AL:"Large scale distributed deep networks",The 26th annual conference on Neural Information Processing Systems,6 December 2012,page 1-9,URL:http://papers.nips.cc/paper/4687-large-scale-distributed-deep-networks.pdf * |
Jeffrey Dean ET AL:"Large scale distributed deep networks",The 26th annual conference on Neural Information Processing Systems,6 December 2012,page 1-9,URL:http://papers.nips.cc/paper/4687-large-scale-distributed-deep-networks.pdf。 |
Also Published As
Publication number | Publication date |
---|---|
WO2018212799A1 (en) | 2018-11-22 |
CN110447044B (zh) | 2023-10-10 |
JP7025441B2 (ja) | 2022-02-24 |
TW201937416A (zh) | 2019-09-16 |
JP7439149B2 (ja) | 2024-02-27 |
CN110447044A (zh) | 2019-11-12 |
JP2020521195A (ja) | 2020-07-16 |
TW201901534A (zh) | 2019-01-01 |
KR20190118635A (ko) | 2019-10-18 |
TWI699712B (zh) | 2020-07-21 |
US10019668B1 (en) | 2018-07-10 |
JP2022070955A (ja) | 2022-05-13 |
US20220156557A1 (en) | 2022-05-19 |
KR102346636B1 (ko) | 2022-01-03 |
US20180373976A1 (en) | 2018-12-27 |
US11157794B2 (en) | 2021-10-26 |
CN117291239A (zh) | 2023-12-26 |
EP3577605A1 (en) | 2019-12-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI664587B (zh) | 排程神經網路處理 | |
KR102385349B1 (ko) | 신경 네트워크 명령어 세트 아키텍처 | |
Zhang et al. | BoostGCN: A framework for optimizing GCN inference on FPGA | |
Belviranli et al. | A dynamic self-scheduling scheme for heterogeneous multiprocessor architectures | |
JP2020537789A (ja) | 超並列ソフトウェア定義ハードウェアシステムにおける静的ブロックスケジューリング | |
JP2020500365A (ja) | ニューラルネットワーク計算ユニットにおける入力データのスパース性の活用 | |
US11847507B1 (en) | DMA synchronization using alternating semaphores | |
WO2020219335A1 (en) | Computation graph mapping in heterogeneous computer system | |
Lim et al. | ODMDEF: on-device multi-DNN execution framework utilizing adaptive layer-allocation on general purpose cores and accelerators | |
KR20210089247A (ko) | 그래픽 처리 장치에서 행렬 곱셈의 파이프라인 처리 | |
US20190370060A1 (en) | Multi-processor system, multi-core processing device, and method of operating the same | |
Du et al. | Feature-aware task scheduling on CPU-FPGA heterogeneous platforms | |
CN109086137B (zh) | Gpu并行计算资源配置方法及装置 | |
CN116402091A (zh) | 面向人工智能芯片的混合引擎智能计算方法和装置 | |
Erdem et al. | Runtime design space exploration and mapping of dcnns for the ultra-low-power orlando soc | |
US9098917B2 (en) | Method and system for accelerating collision resolution on a reconfigurable processor | |
CN114356510A (zh) | 用于调度的方法和电子装置 | |
Jain et al. | Energy-Efficient Single-Core Hardware Acceleration | |
TWI842584B (zh) | 電腦實施方法及電腦可讀儲存媒體 | |
Wen et al. | Design Exploration of An Energy-Efficient Acceleration System for CNNs on Low-Cost Resource-Constraint SoC-FPGAs | |
US20240220314A1 (en) | Data dependency-aware scheduling | |
Wolf | Platforms and architectures for distributed smart cameras | |
Sousa et al. | Acceleration of optical flow computations on tightly-coupled processor arrays | |
BOESCH et al. | Runtime Design Space Exploration and Mapping of DCNNs for the Ultra-Low-Power Orlando SoC | |
WO2024153909A1 (en) | Efficient data processing |