TW202307654A - 管理處理單元的設備、製品及方法 - Google Patents

管理處理單元的設備、製品及方法 Download PDF

Info

Publication number
TW202307654A
TW202307654A TW111110864A TW111110864A TW202307654A TW 202307654 A TW202307654 A TW 202307654A TW 111110864 A TW111110864 A TW 111110864A TW 111110864 A TW111110864 A TW 111110864A TW 202307654 A TW202307654 A TW 202307654A
Authority
TW
Taiwan
Prior art keywords
exemplary
circuit
hardware
processor
instructions
Prior art date
Application number
TW111110864A
Other languages
English (en)
Inventor
文森 斯摩
尼萊什 杰恩
拉傑西 波納加倫
阿比吉特 達瓦雷
考希克 巴拉蘇拉
尚特 萊斯韋爾
卡蘭 普坦納
方家豪
薩拉塔 班尼克
雷賈倫 雷古派希
薩利爾 湯瑪士
Original Assignee
美商英特爾股份有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US17/558,284 external-priority patent/US20220114495A1/en
Priority claimed from US17/559,730 external-priority patent/US20220114451A1/en
Priority claimed from US17/645,742 external-priority patent/US20220116284A1/en
Priority claimed from PCT/CN2021/141150 external-priority patent/WO2022267408A1/en
Application filed by 美商英特爾股份有限公司 filed Critical 美商英特爾股份有限公司
Publication of TW202307654A publication Critical patent/TW202307654A/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4403Processor initialisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • G06N3/0455Auto-encoder networks; Encoder-decoder networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0464Convolutional networks [CNN, ConvNet]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/092Reinforcement learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/0985Hyperparameter optimisation; Meta-learning; Learning-to-learn
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/044Recurrent networks, e.g. Hopfield networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/02Knowledge representation; Symbolic representation
    • G06N5/022Knowledge engineering; Knowledge acquisition

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • General Engineering & Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Computer Security & Cryptography (AREA)
  • Neurology (AREA)
  • Stored Programmes (AREA)

Abstract

管理處理單元的設備、製品、及方法被揭露。於此揭露的例子促成利用異質處理單元、XPU等的系統的管理,以有效地利用此等處理單元。例如,一些設備、製品及方法根據硬體資源促成資源共享、資源配置、及或核心產生。

Description

管理處理單元的設備、製品及方法
本案大致關係於計算系統,更明確地說,關係於用以管理處理單元的設備、製品、及方法。
本案主張申請於2021年六月23日的印度專利申請案號202141028125;申請於2021年七月16日的美國專利申請案號63/222,938;申請於2021年八月10日的印度專利申請案號202141036070;申請於2021年十二月22日的美國專利申請序號17/645,742;申請於2021年十二月22日的美國專利申請序號17/559,730;申請於2021年十二月22日的美國專利申請序號17/560,025;申請於2021年十二月21日的美國專利申請序號17/558,284的權益。印度專利申請案號202141028125;美國專利申請案63/222,938;印度專利申請案號202141036070;美國專利申請序號17/645,742;美國專利申請序號17/559,730;美國專利申請序號17/560,025;及美國專利申請序號17/558,284係在此被全部引用併入。因此,在此主張印度專利申請案號202141028125;美國專利申請案63/222,938;印度專利申請案號202141036070;美國專利申請序號17/645,742;美國專利申請序號17/559,730;美國專利申請序號17/560,025;及美國專利申請序號17/558,284的優先權。
計算系統的演進已經造成具有很多類型處理單元的計算系統的利用。例如,XPU的概念係指向於可以包含於一計算系統中的特定應用處理單元的利用。例如,計算系統可以包含通用處理單元、圖形處理單元、及人工智慧處理單元。XPU為跨架構計算解決方案,其可以被一起綁在一單一應用程式介面(如,OneAPI標準應用程式介面),其管理將各個工作指定至最適合處理它的處理單元的指派工作。例如,很多雲端服務提供者(CSP)正將其硬體平台改善成由通用處理器、異質加速器及專門建造的垂直整合基礎架構處理單元(IPU)構成的分列單元。此等處理單元可以藉由附接卡(如,快速週邊控制互連(PCIE)附接卡、經由表(如,經由霹靂(Thunderbolt)埠)連接的外部處理單元、經由焊接或附著至主機板的主機板下(MB-down)解決方案建築於中央處理單元(CPU)內等加以實施。
如於此所用,連接表示(如,附接、耦接、連接、及結合)可以包含在連接符號所表示的元件間的中間組件及/或在這些元件之相對移動,除非特別指明以外。因此,連接表示並不必然暗示兩元件為直接連接及/或彼此有固定關係。
除非特別指出,如“第一”、“第二”、“第三”等的描述用語係在此被使用,而不被賦與或表示有優先性、實體順序、名單中的排列、及/或任何方式的排列的任何意義,僅只作為標示及/或任何名稱係為了容易了解區分揭露例子中的元件。在一些例子中,雖然描述用語“第一”可以用以表示在詳細說明中的一元件,但相同元件可以在申請專利範圍中被以不同描述用語,如“第二”或“第三”表示。在此等實例中,應了解此等描述符只被使用以有區分地識別出這些元件,否則,它們將共用一相同名稱。
如於此所用,用語“基本即時”及“基本同時”表示認知計算時間、傳輸等的真實世界延遲,但以接近瞬時方式發生。因此,除非特別指明,“基本即時”與“基本同時”表示真實時間±1秒。如於此所用,用語“相通訊”及其變化包含直接通訊及/或透過一或更多中間元件的間接通訊,並且並不需要直接實體(即,接線)通訊及/或固定通訊,而是額外包含以週期間隔、排程間隔、非週期間隔、及/或一次事件的可選擇性之通訊。
如於此所用,“處理器電路”係被界定為包含(i)一或更多特殊用途電路被建構以執行特殊操作並包含一或更多半導體為基的邏輯裝置(如,為一或更多電晶體所實施的電性硬體),及/或(ii)一或更多被以指令程式化的通用半導體為基的電路,以執行特定操作並包含一或更多半導體為基的邏輯裝置(如,為一或更多電晶體所實施的電氣硬體)。處理器電路的例子包含程式化微處理器、可以樣例化指令的場可程式閘陣列(FPGA)、中央處理單元(CPU)、圖形處理器單元(GPU)、數位信號處理器(DSP)、XPU、或微控制器,及例如特殊應用積體電路(ASIC)的積體電路。例如,XPU可以以異質計算系統(如,計算系統具有一或更多異質處理單元)實施,該異質計算系統包含多重類型處理器電路(如,一或更多FPGA、一或更多CPU、一或更多GPU、一或更多DSP等,及/或其組合)及應用程式界面(API),其可以指定計算工作給多重類型處理電路中之最適者以執行計算工作。
例如,包含處理器的組件包括異質處理器的電腦組件、及/或其他電腦組件可以使用韌體,用以開機、初始化、及/或操作。想要提供電腦組件與電腦具有多重處理的能力,例如,圖形及/或人工智慧。也想要降低材料清單(BoM)及/或此等計算系統的成本。設備、製品及方法係被揭露,以促成在例如CPU、GPU、AI晶片、FPGA、ASIC、微控制器(如,嵌式微控制器)等之處理器間之資源共享。識別出在異質處理器平台(如,包含CPU及分立圖形的平台)中,CPU與其他處理器間的共同及/或可共享資源可以降低在平台的專用硬體用量,而可以協助降低BoM成本。於此所揭露的揭露設備、製品及方法,例如,藉由再使用韌體及/或軟體(如,使用OneAPI程式館),而有效地改良效率。
一些雲端服務提供者(CSP)正將其硬體平台改善成由通用處理器、異質加速器及專門建造的垂直整合基礎架構處理單元(IPU)、XPU、DPU等構成的分列元件。一些資源管理系統(RMS)(如,英特爾®RDT)以CPU的領域操作為控制點並以該CPU為樞軸,管理伺服器節點層級平台資源。此等手法可能不是可縮放或甚至不可應用至IPU為主的微服務為基的基礎架構,其中IPU變成控制點。IPU為基系統正中斷資料中心資源管理系統的操作方式(如,將CPU不朝向作為控制點,以分解異質可自管理智慧加速器的方向移動)。
於此所揭露的設備、製品、及方法促成提供分散服務的IPU資源管理系統(IPURMS)的實施方式。在一些例子中,提議IPURMS提供去中心化點對點IPU資源協商及沒有CPU中心涉入的管理,朝向低潛時微服務。在一些例子中,提議IPURMS提供應用感知資源管理,其中IPU可以動態地再協商RMS服務層級協議(SLA),有關在運行時間的各種微服務。在一些例子中,提議IPURMS促成IPU P2P協商以及經由去中心化分散公共帳簿追蹤的資源管理,如同具有撤銷能力的區塊鏈,以具有可稽核性追蹤/記錄遙測。在一些例子中,提議IPURMS包含被分成兩部分的IPU,即i)資料面,及ii)控制面。控制面處置資源配置、監視及策略執行,及資料面處置在IPU間之資料流及與該IPU相關的邏輯單元。
深度類神經網路(DNN)程式館(如,OneAPI深度類神經網路(OneDNN)提供計算基元,以促成以開發用於CPU、GPU等的統一/相同API或其任意組合,在CPU及GPU上的改良深度學習效能。現存DNN程式館檢測潛藏目標硬體能力(如,英特爾®深度學習加強技術),以加速推理/訓練效能。例如,OneDNN可以利用及時(JIT)碼產生並試著根據所檢測目標硬體特性,選擇指令集架構(ISA)或ISA的混合。雖然此抽象法提供了利用潛藏硬體的能力,但此能力仍有挑戰。於此所揭露的設備、製品、及方法提供動態可協商深度學習類神經網路程式館,其促成可組態及可協商介面,可供應用框架指明SLA,以在運行時間組態JIT碼產生參數。此等系統可以被策略組態有或沒有平台信任執行環境(TEE),其可以除了純硬體的能力外,針對能力、效能、能量效率、最佳化,協助動態管理核心(Kernel)。於此所揭露的設備、製品、及方法過濾實施參數集,以根據應用SLA及平台資訊,識別出候選組。對應JIT核心可以由候選組所動態產生用於各個。於此所揭露設備、製品及方法可以逐個地乾執行該等核心,挑出具有最佳效能者(如,功率/能量效率、TCO優點、等等),並將之快取供後續使用。
圖1為一示範架構100的方塊圖,包含:示範最佳應用104、示範最佳中間軟體及框架106、及示範應用程式介面(API)108。在一些例子中,最佳應用104可以為被客製化、調整、及/或最佳化以實施可組構ML計算節點的識別及/或產生的應用(如,軟體應用、網路-或瀏覽器-為基應用、等)所實施。例如,最佳應用104可以被開發者(如,軟體開發者、研究人員等)、資訊科技(IT)人員等所存取、利用等。在一些此等例子中,最佳應用104可以被存取、利用等,以針對可以由AI/ML技術獲得益處的技術問題,共同設計硬體/軟體(HW/SW)解決方案。在一些例子中,最佳中間軟體及框架106可以被客製化、調整、及/或最佳化以實施可組構ML計算節點的識別及/或產生的中間軟體及框架所實施。例如,最佳中間軟體及框架106可以實施在最佳應用104與API 108間之介面(如,通訊、連接、等)。
API 108的例示例子可以調用以藉由直接規劃或API為基的規劃的至少之一,來規劃化、開發、及/或產生AI/ML應用。API 108的例示例子包含示範移植工具110、示範直接規劃API 112、示範API為基規劃API 114、及示範分析工具116。
在一些例子中,移植工具110可以為軟體(如,軟體應用)所實施,其可以將一程式調適以在第一計算或電子環境中完成一些形式的執行目的,該第一計算或電子環境係與該程式所原始設計的第二計算或電子環境不同。例如,移植工具100可以將開發用於第一類型硬體、作業系統(OS)、程式館等的第一程式轉換及/或調適為用於第二類型硬體、OS、程式館等之第二程式。
在一些例子中,直接規劃API 112可以被調用以實施直接規劃工作,其可以包含開發及/或編譯資料平行C++應用。在一些例子中,API為基規劃API 114可以被調用以實施API為基規劃,其可以包含開發及/或編譯應用,其呼叫(或調用、樣例化等)數學核心程式館(MKL)、MKL深度類神經網路(DNN)程式館、資料分析加速程式館、線建築方塊程式館、平行標準模板程式館、媒體軟體開發組件(SDK)、深度學習部署工具組、機器學習定標程式館等、及/或其任意組合。
在一些例子中,分析工具116可以被呼叫、樣例化、及/或調用以分析可組構ML計算節點的硬體、軟體、及/或其組態。例如,分析工具116可以樣例化仿真器,以仿真該可組構ML計算節點的所有硬體及/或軟體特性,以產生及/或輸出一或更多評估參數。在一些此等例子中,評估參數可以包含參數,其代表及/或表示該可組構ML計算節點的準確度、潛時、完成工作負載的週期數、或產出量。在一些例子中,評估參數可以包含參數,其代表及/或表示處理器或時鐘頻率、組織頻率、讀取記憶體頻寬、寫入記憶體頻寬、硬體降額定因數、記憶體埠數量、資料處理單元(DPU)數量、模型層(如,類神經網路層、卷積層等)數量、啟動精準度(如,予以被處理的啟動值的精準度)、權重精準度(如,予以處理的權重值的精準度)等、及/或其任意組合。例如,分析工具116可以根據可組構ML計算節點來執行仿真器。在一些此等例子中,分析工具116可以執行仿真器,以當可組構ML計算節點來執行具有特定組態的特定AI/ML模型時,確定可組構ML計算節點的產出量。
在一些例子中,分析工具116可以樣例化模擬器,以模擬可組構ML計算節點的行為、組態等,以產生及/或輸出一或更多評估參數。例如,分析工具116可以根據可組構ML計算節點,執行一模型(如,模擬模型、AI/ML模型等)。在一些此等例子中,當可組構ML計算節點執行具有特定組態的特定AI/ML模型時,分析工具116可以執行該模型,以估算、預測、及/或確定該可組構ML計算節點的產出量。
架構100的例示例子包含不同類型的硬體及/或軟體,可組構ML計算節點可以由該處產生。在例示例子中,架構100包含用於純量、向量、矩陣、及空間硬體的介面與目標系統軟體。額外及/或替代地,也可以使用任何其他類型硬體。在此例子中,純量硬體係為示範CPU 118及示範CPU系統軟體120所實施。例如,CPU系統軟體120可以包含對應於CPU指令集架構(ISA)的指令。在此例子中,向量硬體係為示範GPU 122及示範GPU系統軟體124所實施。例如,GPU系統軟體124可以包含核心、碼的部分等,例如,核心、計算核心、及/或著色器。在一些例子中,核心、碼的部分等可以以高階程式語言,如,高階著色器語言(HLSL)、OpenCL等加以代表。
在此例子中,矩陣硬體係為示範AI處理器126及示範AI系統軟體128所實施。例如,AI系統軟體128可以包含一或更多AI/ML演算法、模型等,例如,類神經網路(如,卷積類神經網路(CNN)、深度類神經網路(DNN)、遞歸類神經網路(RNN)等)、線性迴歸模型、邏輯式迴歸模型、決策樹模型、學習向量量化模型等、及/或其組合。在此例子中,空間硬體係為示範FPGA 130及示範FPGA系統軟體132所實施。例如,FPGA系統軟體132可以根據例如Verilog的硬體描述語言(HDL)包含核心、碼的部分等。
在例示例子中,CPU系統軟體120、GPU系統軟體124、AI系統軟體128、FPGA系統軟體132、主機介面134、及/或零階介面136可以對應及/或實施在示範零階下系統軟體138。例如,零階下系統軟體138可以對應及/或實施低階直接到金屬(direct-to-metal)介面,這些係被調整至例如CPU 118、GPU 122等的硬體。
在例示例子中,API 108可以實施示範零階上系統軟體140及示範開發者介面142。例如,開發者、使用者等可以藉由API 108存取及/或利用架構100。在一些例子中,開發者、使用者等可以藉由API 108以較低階直接至金屬介面為高的階層存取及/或利用系統軟體。在一些例子中,開發者、使用者等可以經由主機介面134及/或零階介面136存取及/或利用零階下系統軟體138。
架構100係適用以藉由API 108而促成例如CPU 118、GPU 122等的硬體的有效利用。例如,API可以加至API 108,以促成及/或改良各種處理。例如,揭露例子包含API指向一組程式館功能,其可以與XPU硬體通訊(如,用以促成處理單元間之韌體及軟體資源的共享)。在一些揭露例子中,API 108可以包含平台組件,用以支援機器學習(如,動態可協商深度類神經網路平台)。例如,API 108的機器學習組件可以操作以改良對準硬體目標能力,以改良效能(如,改良深度學習推論效能)。所揭露API改良(及在此所揭露的其他改良)可以被分開及/或組合實施。例如,API 108可以包含指向一組可以與XPU硬體通訊的程式館功能的API,以促成在處理單元間之韌體及軟體資源的共享,API 108可以包含API,以改良對準硬體目標的能力,以改良深度學習推論效能。例如,當各種改良組合時可以提供相加性系統效能增加並降低BOM成本。 共生開機
圖2為用以在兩處理單元(如,CPU及GPU)間共享記憶體的示範架構200的方塊圖。例如,架構200可以結合圖1的架構100或任何包含多重處理單元的其他電腦架構加以利用。圖2的示範架構200包含示範CPU 202,其包含示範平台控制器集線器204及示範串列週邊介面(SPI)206、示範GPU 208,其包含示範專用GPU快閃210及示範共享SPI 212、及示範SPI快閃214。依據例示例子,架構200促成CPU 202及GPU 208共享SPI快閃214。
示範GPU 202係為用於計算系統的中央處理單元。或者,CPU 202可以為任何其他類型的處理單元。示範CPU 202包含示範平台控制集線器(PCH)204,其包含用以管理資料路徑及CPU 202的支援功能的電路、軟體、及/或韌體。或者,任何其他類型控制電路、晶片組、軟體及/或韌體可以被利用。示範PCH 204可以包含若干介面,包含依據所示例子的SPI 206。示範SPI 206將PCH 204及CPU 202與SPI快閃214作成介面,以促成整個CPU 202及架構200的初始化與開機。
示範GPU 208為焊接至主機板上的圖形處理單元系統晶片(SoC),主機板上安裝有CPU 202(如,主機板(MB)下解決方案)。或者,GPU 208可以是任何其他類型的以任何其他方式(如,分立PCIE為基加入卡(AIC)附接至客戶裝置中的PCIE槽、經由架構200的纜線/埠(如,霹靂埠)連接的外部圖形處理單元等)耦接至架構200的處理單元(如,AI處理單元、XPU等)。
雖然典型GPU將具有其本身儲存指令的SPI記憶體(如,8MB快閃記憶體),用以處置除了CPU的SPI記憶體(如,32MB快閃記憶體)外的與GPU相關的開機程序,示範GPU 208包含專用GPU快閃210及共享SPI 212,其促成SPI快閃214與CPU 202的共享。依據例示例子,GPU的整合韌體影像(IFWI)被儲存於共享SPU快閃214中。
示範SPI快閃214為包含用於存取的SPI介面的SPINOR快閃記憶體裝置。SPI快閃214儲存CPU 202及GPU 208的初始化及開機所用的IFWI資訊。或者,也可以利用任何其他類型快閃記憶體。
圖3為利用附接快閃共享以共享SPI快閃214的示範手法的方塊圖。依據例示例子,示範GPU 208為經由與GPU 208的示範第二SPI(eSPI)介面304相通訊的CPU 202的可通訊地耦接至示範CPU 202的示範第一加強SPI(eSPI)介面302可通訊地耦接至示範CPU 202。因此,GPU 208可以透過為第一eSPI介面302及第二eSPI介面304所支援的快閃存取通道存取SPI快閃214,同時,CPU 202的PCH 204經由SPI 206存取SPI快閃214。
透過由第一eSPI 302及第二eSPI 304所建立的eSPI介面運行時間存取SPI快閃214將通過eSPI主體(CPU 202),其然後在週期被轉送至CPU 202的PCH(如,PCH 204的SPI快閃控制器)之前,配送週期至CPU 202的快閃存取塊。然後,SPI快閃控制器將代表eSPI次體(GPU 208)執行對SPI快閃214的存取。因為由eSPI次體裝置(例如GPU 208)所使用的快閃存取位址為實體快閃線性位址,所以,涵蓋整個快閃定址空間。然而,SPI快閃控制器可以對SPI快閃214的某些區域作出存取限制,以確保安全。
改變以支援共享SPI快閃214的提議硬體可以被耦接以對SPI快閃214(如,更新主部描述符)佈局的更新,以容許映射入SPI快閃214的專用次裝置韌體。描述符改變可以促成將次裝置韌體區注入在SPI快閃214上的IFWI佈局。
圖4例示用於SPI快閃214的示範更新IFWI佈局400。如於圖4所示,IFWI佈局400包含用於各個XPU裝置的專用韌體區。例如,示範IFWI佈局400包含:區13,用於儲存初始GPU的韌體(如,特定國家碼(CSC)韌體、韌體貼片、及冗餘影像)、區14,用於儲存場可程式閘陣列(FPGA)的韌體、區15,用於儲存用於AI處理單元的韌體。開機期間,在開機與初始化之前,基本輸入輸出系統(BIOS)(如,系統開機軟體)係由SPI快閃存取。一旦硬體重設(如,RESET#)被發送至GPU 208,則GPU 208將使得ROM開始由SPI快閃214擷取韌體影像,以讀取描述符,得知映射用於初始化GPU 208的專用快閃範圍。
SPI快閃214的區可以藉由設定在快閃描述符中的保護參數,而被界定為用於讀取或寫入存取。例如,區0用於CPU只可以讀取並不能存取GPU,區1可以為CPU所讀取與寫入(如,在POST結束前(EOP))並不能為GPU所存取,區13可以為CPU(如,為了韌體更新)及GPU所讀取及寫入。
雖然圖1的架構100的實施組件的示範方式係被例示於圖2及圖3,但示於圖2及/或圖3的元件、程序、及/或裝置之一或更多可以被以其他方式組合、細分、重排列、省略、消除、及/或實施。再者,示範CPU 202、示範PCH 204、示範SPI 206、示範GPU 208、示範共享SPI 212、示範第一eSPI 302、示範第二eSPI 304、及/或更廣泛地說,圖2及/或圖3的架構200及/或300可以以單單硬體實施或者硬體結合上軟體及/或韌體加以實施。因此,例如,示範CPU 202、示範PCH 204、示範SPI 206、示範GPU 208、示範共享SPI 212、示範第一eSPI 302、示範第二eSPI 304、及/或更大體來說,圖2及/或圖3的架構200及/或300之任一可以為處理器電路、類比電路、數位電路、邏輯電路、可程式處理器、可程式微控制器、圖形處理單元(GPU)、數位信號處理器(DSP)、特定應用積體電路(ASIC)、可程式邏輯裝置(PLD)、及/或場可程式邏輯裝置(FPLD),如場可程式閘陣列(FPGA)所實施。再者,圖1的示範架構100可以包含除外或替代圖2及圖3中所示的一或更多元件、程序、及/或裝置,及/或可以包含所例示元件、程序及裝置之一個以上或全部。
一流程圖被顯示於圖5,其代表用以實施圖2的架構200及/或圖3的示範架構300的示範硬體邏輯電路、機器可讀指令、硬體實施狀態機、及/或其任意組合。機器可讀指令可以為一或更多可執行程式或可執行程式的部分,以供例如示於參考圖16所討論如下的示範處理器平台1600中之處理器電路1612及/或有關圖48及/或49的討論如下的示範處理器電路的處理器電路所執行。程式可以實施為儲存在一或更多非暫態電腦可讀儲存媒體,如光碟(CD)、軟碟、硬碟機(HDD)、固態驅動機(SSD)、數位多功能光碟(DVD)、藍光碟、揮發記憶體(如,隨機存取記憶體(RAM)的任意類型等)或與位於一或更多硬體裝置中的處理器電路相關的非揮發記憶體(如,電可抹除可程式唯讀記憶體(EEPROM)、快閃記憶體、HDD、SSD等)中的軟體,但整個程式及/或其部分也可以為處理器電路以外的一或更多硬體裝置所執行,及/或實施於韌體或專用硬體中。機器可讀指令可以被分配於多重硬體裝置及/或為兩或更多硬體裝置(如,伺服器及客戶硬體裝置)所執行。例如,客戶硬體裝置可以是端點客戶硬體裝置(如,與使用者相關的硬體裝置)或中間客戶硬體裝置(如,無線接取網路(RAN))閘道所實施,其可以促成在伺服器與端點客戶硬體裝置間之通訊)。類似地,非暫態電腦可讀儲存媒體可以包含位於一或更多硬體裝置中的一或更多媒體。再者,雖然示範程式為參考圖5所示的流程圖加以描述,但也可以使用很多其他方法以實施示範架構200及/或300。例如,方塊的執行順序可以改變,及/或部分所述方塊可以被改變、消除、或組合。額外或替代地,任一或所有方塊可以為被結構以執行對應操作而不執行軟體或韌體的一或更多硬體電路(如,處理器電路、分立及/或整合類比及/或數位電路、FPGA、ASIC、比較器、運算放大器(op-amp)、邏輯電路等)所實施。處理器電路可以分配於不同網路位置及/或在單一機器中的一或更多硬體裝置(如,單一核心處理器(如,單一核心中央處理單元(CPU))、多核心處理器(如,多核心CPU)等)、在伺服器框架的多重伺服器分佈的多重處理器、在一或更多伺服器框架分佈的多重處理器的本地、CPU及/或位於相同封裝(如,相同積體電路(IC)封裝或在兩或更多分開外殼中等)中的FPGA。
於此所述之機器可讀指令可以被儲存為壓縮格式、加密格式、分段格式、編譯格式、可執行格式、套裝格式等之一或更多。於此所述之機器可讀指令可以被儲存為資料或資料結構(如,作為指令的部分、碼、碼表示法等),其可以被利用以建立、製造、及/或生產機器可執行指令。例如,機器可讀指令可以被分段並儲存在位於網路或網路集合(如,於雲端、邊裝置中等)的相同或不同位置的一或更多儲存裝置及/或計算裝置(如,伺服器)中。機器可讀指令可能需要一或更多的安裝、修改、調適、更新、組合、增補、組態、解密、解壓縮、解封、分配、重指派、編譯等,以使之可以為計算裝置及/或其他機器所直接可讀、可解譯、及/或可執行。例如,機器可讀指令可以儲存在多重部分,這些可以被個別壓縮、加密、及/或儲存在分開計算裝置上,其中當這些部分被解密、解壓縮、及/或組合形成一組實施一或更多操作的機器可執行指令時,其可以一起形成如在此所述的程式。
在另一例子中,機器可讀指令可以被以一狀態儲存,其中它們可以為處理器電路所讀取,但需要額外的程式館(如,動態鏈結程式館(DLL))、軟體開發套件(SDK)、應用程式介面(API)等,以在特定計算裝置或其他裝置上執行該機器可讀指令。在另一例子中,機器可讀指令及/或對應程式可以整體或部分被執行之前,機器可讀指令可能需要被組態(如,設定儲存、資料輸入、網路位址記錄等)。因此,如於此所用,機器可讀媒體可能包含機器可讀指令及/或程式,而不管該機器可讀指令及/或程式被儲存或靜止或在中轉時的特定格式或狀態。
於此所述之機器可讀指令可以為任何過去、現在、或未來指令語言、劇本式語言、程式語言等所表示。例如,機器可讀指令可以使用以下的任一語言加以表示:C、C++、Java、C#、Perl、Python、JavaScript、超文件標示語言(HTML)、結構化查詢語言(SQL)、Swift等。
如上所述,圖5的示範操作可以使用儲存於一或更多非暫態電腦及/或機器可讀媒體上的可執行指令(如,電腦及/或機器可讀指令)加以實施,媒體係例如光儲存裝置、磁儲存裝置、HDD、快閃記憶體、唯讀記憶體(ROM)、CD、DVD、快取、任何類型的RAM、暫存器、及/或任何其他儲存裝置或儲存碟片,其中,在任何持續時間內(如,延長時間段、永久、或簡短瞬間、暫時緩衝、及/或快取資訊)儲存有資訊。如於此所用,用語非暫態電腦可讀媒體及非暫態電腦可讀儲存媒體被特別界定以包含任何類型的電腦可讀儲存裝置及/或儲存碟片,並排除傳遞信號及排除傳輸媒體。
“包括”及“包含”(及所有其形式與時態)在此被使用為開放端用語。因此,只要請求項使用任何形式之“包括”或“包含”(如,包含、包括、具有等)作為前言或在任何類型內的請求項引用,可以了解的是也可以出現有額外元件、條件等仍在對應請求項或引用的範圍內。如於此所用,當用語“至少”被使用作為過渡用語,如作為請求項前言時,它如同用語“包含”及“包括”為開放式般地也是開放式。當使用用語“及/或”於例如A、B、及/或C的形式時,表示A、B、C子集或任意組合,如(1)單獨A、(2)單獨B、(3)單獨C、(4)A與B、(5)A與C、(6)B與C、或(7)A與B及C。在此所用,在描述結構、構件、項目、物件及/或事項的上下文中,片語“A與B的至少之一”係想要表示包含(1)至少一A、(2)至少一B、(3)至少一A與至少一B的任一的實施方式。類似地,如於此所用,在描述結構、構件、項目、物件、及/或事項的上下文中,片語“A或B的至少之一”係想要表示以下任一的實施方式:(1)至少一A、(2)至少一B、或(3)至少一A及至少一B。如於此所用,描述程序、指令、動作、活動及/或步驟的實行或執行的上下文中,片語“至少一A與B”係想要表示以下任一的實施方式:(1)至少一A、(2)至少一B、或(3)至少一A及至少一B。類似地,如於此所用,在描述程序、指令、動作、活動、及/或步驟的實行或執行的上下文中,片語“至少一A或B”係想要表示以下任一的實施方式:(1)至少一A、(2)至少一B、或(3)至少一A與至少一B。
如於此所用,單數參考(如,“一”、“第一”、“第二”等)並不排除多數。如於此所用的用語“一”物件表示一或更多該物件。用語“一”、“一或更多”、及“至少一”係在此可交換使用。再者,雖然個別列出,但多數手段、元件或方法動作可以例如為相同實體或物件所實施。另外,雖然個別特性可以包含在不同例子或請求項中,但它們也可能組合,包含在不同例子或請求項中並不暗示特性的組合並不可行及/或不利。
圖5為代表可以為處理器電路所執行及/或樣例化的示範機器可讀指令及/或示範操作500,以執行系統的韌體開機的流程圖,該系統中已經在兩處理單元(如,CPU 202與GPU 208)間實施共享存取快閃。
圖5的機器可讀指令及/或操作500以方塊502開始,其中CPU 202由SPI快閃214經由SPI 206擷取BIOS(方塊502)。依據所例示例子,BIOS依據圖4的IFWI佈局400由區2開始執行(方塊504)。CPU將持續規劃CPU 202及晶片組暫存器(方塊506)。
依據所例示例子,平行於BIOS執行,GPU 208接收重設(如,RESET#)並開始執行CSC ROM(方塊508)。示範GPU 208由SPI快閃214(如,區13)擷取GPU韌體(方塊510)。示範GPU韌體將鑑別及負載來自SPI快閃214的pCode修補片(方塊512)。由GPU 208所執行的GPI韌體將執行記憶體控制器初始化(方塊514)。雖然GPU 208的初始化係被例示於方塊508-514,但程序可以額外或替代地執行任何其他處理單元的初始化(如,在方塊514後開始另一處理單元的初始化)。
GPU 208將確定是否記憶體控制器初始化完成(方塊516)。當記憶體控制器初始化完成,則BIOS將初始GPU初始化(方塊518)。例如,用以執行GPU初始化的示範程序係配合圖7A及7B加以描述。一旦GPU初始化被執行,則在GPU(如,分立圖形)上的任何輸出裝置(如,高解析度多媒體介面(HDMI)或顯示埠(DP))將準備好解析度及配置框緩衝器,供進一步顯示相關用途(方塊520)。執行BIOS或作業系統(OS)載入器的CPU將使得使用框緩衝器作為OS的預-OS初現螢幕開機(方塊522)。圖5的程序500然後完成。
圖6為BIOS 600的示範佈局的方塊圖(如,儲存在圖4的IFWI佈局400的區2中的BIOS)。示範BIOS 600包含開機載入器602及矽初始化碼604(如,在此稱為韌體支援封裝(FSP))。例如,矽初始化碼可以為包含用於共享SPI快閃的支援的英特爾®FSP。示範FSP 604包含示範FSP矽(FSP-S)606、示範FSP記憶體(FSP-M)608、及FSP Temp RAM(FSP-T)610。
現代系統BIOS典型由作為以二進制格式表示的SoC供應商提供的矽初始化碼的2主要元件構成(如,英特爾®韌體支援封裝(FSP)),其係各種開放及/或閉合資源開機載入器實施方式(如,tianocore.org、coreboot.org 、slim bootloader、等)所消耗,以區分為用於原始設計製造(ODM)/原始設備製造(OEM)平台的生產BIOS。雖然以多重異質處理器在平台上工作,但所有其他異質處理器具有由專用韌體二進制大型物件(blob)構成的本身SPI快閃,這些blob於矽初始化碼(如,FSP)邊界外執行會造成冗餘。用於各個異質處理器的專用韌體二進制大型物件將需要分立硬體方塊,這造成較高BoM。再者,允許執行於開機載入器上下文中的DG初始化碼將不會合格為SoC驗證開機並且由於在初始化控制器或裝置之前,在PCI列舉的相依及動態資源配置之故,在各個處理器上執行選用ROM會造成較高開機時間。
依據所例示例子,FSP 604被擴充,以使得在FSP的範圍內的所有XPU初始化建立硬體抽象層,其確保所有SoC供應商推薦的晶片組規劃使用統一方塊加以執行。藉由利用FSP 604及其構件以初始化處理單元(如,GPU),專用選用ROM可以被免除,減少冗餘組件。
代表示範硬體邏輯電路、機器可讀指令、硬體實施狀態機、及/或其任何組合以實施用於示範架構200及/或圖3的示範架構300的統一韌體的流程圖係被顯示於圖7A-7B。機器可讀指令可以為一或更多可執行程式或可執行程式的部分,用以為處理器電路所執行,處理器電路係例如如下參考圖16所討論的示範處理器平台1600中所示的處理器電路1612及/或如下有關圖48及/或49所討論的示範處理器電路。程式可以被實施為儲存在一或更多非暫態電腦可讀儲存媒體上的軟體,該儲存媒體係例如光碟(CD)、軟碟、硬碟機(HDD)、固態驅動機(SSD)、數位多功能光碟(DVD)、藍光碟、揮發記憶體(如,任何類型的隨機存取記憶體(RAM)等)、或有關於定位在一或更多硬體裝置中的處理器電路的非揮發記憶體(如,電可抹除可程式唯讀記憶體(EEPROM)、快閃記憶體、HDD、SSD等),但整個程式及/或其部分也可以為處理器電路以外的一或更多硬體裝置所執行及/或實施在韌體或專用硬體中。機器可讀指令可以被分配於多重硬體裝置及/或為兩或更多硬體裝置(如,伺服器及客戶硬體裝置)所執行。例如,客戶硬體裝置可以為端點客戶硬體裝置(如,有關於使用者的硬體裝置)或中間客戶硬體裝置(如,無線電接取網路(RAN)閘道所實施,其可以促成在伺服器與端點客戶硬體裝置間之通訊)。類似地,非暫態電腦可讀儲存媒體可以包含一或更多位於一或更多硬體裝置中的媒體。再者,雖然示範程式參考圖7A-7B所例示的流程圖加以描述,但實施示範架構200及/或300的很多其他方法也可以被使用。例如,方塊的執行順序可以改變,及/或部分所述的方塊可以被改變、免除、或組合。額外或替代地,任何或所有方塊可以被一或更多硬體電路(如,處理器電路、分立及/或整合類比及/或數位電路、FPGA、ASIC、比較器、運算放大器(op-amp)、邏輯電路等)所實施,其被建構以執行對應操作,而不會執行軟體或韌體。處理器電路可以是被分配於不同網路位置及/或在一或更多硬體裝置(如,單一核心處理器(如,單核心中央處理單元(CPU))的本地;單一機器中的多核心處理器(如,多核心(CPU)等);分配於伺服器架的多重伺服器上的多重處理器;分配於一或更多伺服器架的多重伺服器;CPU及/或位在相同封裝(如,相同積體電路(IC)封裝或兩或更多分開外殼等中)中的FPGA。
圖7A及7B為代表可以為處理器電路所執行及樣例化的示範機器可讀指令及/或示範操作700,以使用矽初始化碼執行處理單元的統一初始化(FSP 604)的流程圖。
圖7A-7B的機器可讀指令及/或操作700開始於方塊702,其中,開機載入器602擁有重設向量(方塊702)。例如,開機載入器602包含真實模式重設向量處置器碼。在一些例子中,開機載入器602可以呼叫用於快取作為RAM(CAR)設立並初始化一堆疊的FSP-T 610。執行開機載入器602的CPU 202填充FSP初始化參數(方塊704)。例如,開機載入器602可以填充可更新產品資料(UPD)。
示範開機載入器602呼叫用於記憶體初始化的FSP-M 608(方塊706)。在FSP-M 608的出口,開機載入器卸下CAR(方塊708)。開機載入器602執行矽規劃(方塊710)。例如,矽規劃可以包含為了FSP-S 606填充UPD。開機載入器602然後呼叫FSP-S 606以初始化晶片組(方塊712)。
依據所例示例子,異質處理器(如,GPU 208)使用專用PCI-E槽被下焊至主機板,並且,因此,開機載入器602並不需要執行PCI列舉。相反地,開機載入器602可以依賴特定主機板的組態資訊,以提供此PCI-E槽資訊給FSP 604。或者,開機載入器602可以執行PCI列舉,以識別該硬體。
開機載入器然後將該呼叫轉移至FSP-S 606,以開始XPU初始化順序(方塊714)。例如,控制到達在FSP-S 606內的XPU初始化順序。
持續至圖7B,FSP 604加入新FSP初始化參數(如,UPD),以將PCIE槽資訊(如,有關於經由PCIE附接的異質處理器的資訊)由開機載入器602傳送至FSP二進制大型物件(方塊716)。例如,UPD可以包含IAXPUAddress,其係為開機載入器所填入的一陣列的32位元UPD參數,以告訴FSP 604有關被以匯流排、裝置及功能的形式附著有PCIE槽的XPU的位址格式。例如,預設值將為0x0,其識別出無效位址。IAXPUAddress的格式可以為:匯流排<<16∣裝置<<11∣功能<<8∣偏移(假設0)。例如,對於匯流排數為0xFE及裝置/功能為0,IAdGPUAddress UPD值將為0x00FE0000。另一UPD可以為XPUConfigPtr,其係為開機載入器602所填入的32位元UPD參數,以告訴FSP 604有關例如,用於GPU 208的視訊BIOS表(VBT)的額外組態資料的位置。例如,預設值將為空(NULL),其識別出無效位址。
在FSP 604內的示範UPD變數定義可以包含:
#!BSF NAME:{用於FSP用途的XPU PCI-E位址格式}TYPE: {EditNum,HEX,(0x00,0xFFFFFFFF)}
#!BSF HELP:{開機載入器以告訴FSP有關用於FSP用途的附接PCIE槽的位址格式,預設值將為0,識別出無裝置附接。}
gPlatformFspPkgTokenSpaceGuid.IAXPUAddress ∣*∣0x20∣{0x00FE0000,0x00,0x00}
#!BSF NAME:{XPU Configuration Ptr}
#!BSF TYPE” {EditNum,HEX,(0x0,0xFFFFFFFF)}
#!BSF HELP:{指向組態資料檔如同VBT}
gPlatformFspPkgTokenSpaceGuid.XPUConfigPtr ∣*∣0x04∣0x00000000
回到程序700,示範開機載入器602呼叫FSP-S 606,以XPU位址FSP初始化參數被超越,以初始化顯示裝置(如,替換分立DGPU)(方塊718)。示範FSP-S 606讀取XPU位址FSP初始化參數,以知道是否平台已經有任何異質處理器附著(方塊720)。例如,如果“IAXPUAddress”UPD值>0,出現有Dash-G,則由UPD取得B:D:F資訊並讀取XPU資料組態指標,以知道如VBT的組態表出現。FSP 604識別及初始化附著有該處理器的任何XPU裝置(方塊722)。例如,FSP 604可以識別與PCIE埠相關的XPU的類型並執行個別呼叫,以初始化附接有處理器的裝置(如,附接有GPU的顯示器)。示範詳細程序係被例示於圖8。
控制存在有FSP-S 606操作(方塊724)。於存在時,顯示器將為了附著有該GPU的裝置(如,DGPU),而被初始化。示範開機載入器602執行PCI列舉及用於PCI/PCI-E裝置的資源配置(方塊726)。例如,除了Dash-G裝置,資源配置可能根據查看已經被實施的基礎位址暫存器(BAR)及被致能的MMIO/IO位址空間。FSP 604然後傳送VBT資訊給OS(方塊728)。例如,FSP 604可以建立DGPU GFX ACPI操作區,以將用於GPU驅動器的VBT資訊傳送給OS。
開機載入器602然後呼叫通知階段(方塊730)。例如,開機載入器602可以在轉交給酬載前呼叫通知階段。控制被傳送至開機載入器602,以描繪OS前標記、UEFI設定螢幕、或OS初現螢幕(方塊732)。程序700然後結束作為OS開機。
由於FSP被指定以執行XPU裝置的初始化,所以初始化順序可以被細分為兩部分:1.靜態DG初始化程序作為在FSP 604內的開機服務的一部分,及2.建立用於存取XPU硬體資源的OneAPI程式館功能:用於與XPU硬體通訊的一組程式館功能係可以用作為FSP運行時間服務的一部分,使得不同OS堆疊並不需要用以與XPU硬體通訊的專用OS驅動器。例如,圖1的API 108可以包含用於存取XPU硬體資源的OneAPI程式館。
圖8為例示具有整合圖形裝置(IGD)與GPU的示範詳細統一FSP初始化流程的流程圖。
圖8的機器可讀指令及/或操作800在方塊802開始,其中FSP-S讀取UPD IADGpuAddress。FSP-S確定是否出現有分立圖形處理單元(DGPU)(方塊804)。如果未出現DGPU,則藉由取得IGD VBT PTR(方塊806),讀取RGX MMIO基礎位址(方塊808),讀取子裝置組態(方塊810),及讀取GFX框緩衝器位址(方塊812)而執行整合圖形處理單元(IGPU)的初始化。控制然後進行至如下所述之方塊830。
如果FSP-S確定出現有DGPU(方塊804),則FSP-S如下執行DGPU的初始化。FSP-S取得PCI位置(方塊814)並取得DGPU VBT PTR(方塊816)。FSP-S讀取GFX MMIO基礎位址(方塊818)並讀取子裝置組態(方塊820)。FSP-S讀取裝置識別符(DID)並將之與支援DID名單比較(方塊822)。如果DID為無效(即,未支援)(方塊824),則不出現顯示(方塊826),及控制回到方塊802。如果DID為有效,則FSP-S讀取GFX框緩衝器位址(方塊828)並控制進行至方塊830。
在IGD(方塊806-812)或DGPU(方塊814-828)開始初始化後,FSP-S由GT驅動器郵箱讀取一值(方塊830)。然後,FSP-S初始化視訊記憶體變數(方塊832)並規劃GTT(如,設定最大電壓、規劃CD CLK、等)(方塊834)。FSP-S執行浮水印初始化(方塊836)。然後,為了到達附接顯示器,FSP-S列舉支援顯示器並執行顯示器計時演算法(方塊838)。最後,FSP-S規劃相鎖迴路(PLL)(方塊840)及顯示器然後導通(方塊842)。圖8的程序然後結束。
由前述,將了解到示範系統、方法、設備、及製品已經揭露,用以在異質處理器間共生開機。所揭露系統、方法、設備、及製品藉由共享記憶體資源,如SPI快閃,以降低BoM成本及降低開機次數,來改良使用計算裝置的效率。藉由將XPU初始化移至FSP,XPU矽初始化的封裝保護了智慧財產並維持開機程序的安全,同時,允許共享利用記憶體(如,儲存IFWI的記憶體)。利用統一韌體及軟體模組用於異質處理器造成更小的佔用區及最佳化驗證開機。所揭露例子也在CPU與其他處理單元間支援統一韌體快閃佈局,以允許具有現場韌體更新(如,用於DG主機板下解決方案)。 基礎架構處理單元資源指引器技術
揭露了用以實施基礎架構處理單元資源目標技術(IPURMS)的設備、製品、及方法。示範IPURMS提供去中心化點對點IPU資源協商及管理,而沒有CPU中心涉入,以促成低潛時微服務及工作負載,如VRAN等。另外,IPURMS提供應用感知資源管理,其中IPU可以動態再協商RMS SLA,用於在運行時間的各種微服務。再者,IPURMS可以促成IPU P2P協商及資源管理,其可以經由去中心化分配公共帳簿如加以追蹤,如用具有撤銷能力(如,撤銷管理)的正規鏈,以追蹤/記錄具有可稽核性的遙測。另外,IPURMS可以促成IPU,其被細分為兩部分,即i)資料面,及ii)控制面,其中控制面處置資源配置、監視及策略執行;及資料面處置在IPU及與該IPU相關的邏輯單元間之資料流。
圖9為用於IPURMS的示範架構900的方塊圖。依據圖9的例示例子,新工作負載(或VM)902與示範協調器904通訊,以請求具有特定SLA的系統。示範架構900包含協調器904、示範使用者空間908、示範XPU/IPU軟體域908、及示範IPU硬體域910。
示範協調器904為伺服器電路,其協商現存工作負載,用以根據SLA將工作負載置放在計算資源。示範協調器904與一或更多計算系統906相通訊,以管理工作負載的指派至計算資源。
示範計算資源906係為幾個抽象所代表,該等抽象包含使用者空間908、XPU/IPU軟體域910、及IPU硬體域912。示範使用者空間908包含應用A 914及應用B 916,但可以包含任何數量或類型應用。示範使用者空間908係為協調器904所監視。
示範XPU/IPU軟體域910包含為示範SLA管理器920所監視的示範RMS曝露918。示範RMS曝露918促成應用層次資訊與協調器904的通訊。
示範IPU硬體域912包含為示範SLA管理器924所監視的示範XPU/IPU資源監視922、由示範SLA管理器928所監視的示範XPU/IPU資源執行926、及Punit RMS 930。
示範XPU/IPU資源監視922提供資源回授至示範RMS曝露918,而示範XPU/IPU資源監視922及示範XPU/IPU資源執行926傳遞有關硬體策略。示範RMS曝露918傳遞QoS暗示給示範XPU/IPU資源執行926及示範XPU/IPU資源執行926傳遞Punit RMS 930有關QoS硬體特性。示範架構900促成由CPU中心的單一節點資源管理至可縮放可自管理XPU/IPU的轉移,其可以動作於一點對點合作。在此協同資源管理中的共識可以經由中心化信任經紀人,如圖13所例示的去中心化共享帳簿狀區塊鏈等所完成。
代表示範硬體邏輯電路、機器可讀指令、硬體實施狀態機、及/或其任意組合,以用以實施用於示範架構900的統一韌體的流程圖係被顯示於圖10及圖11。機器可讀指令可以是一或更多可執行程式或可執行程式的一(或多)部分,以供處理器電路所執行,處理器電路係例如有關於圖16所如下討論的示範處理器平台1600中所示的處理器電路1612及/或有關於圖48及/或49所討論如下的示範處理器電路。程式可以實施為儲存於一或更多非暫態電腦可讀儲存媒體中的軟體,儲存媒體例如光碟(CD)、軟碟、硬碟機(HDD)、固態驅動機(SSD)、數位多功能光碟(DVD)、藍光碟、揮發記憶體(如,任何類型的隨機存取記憶體(RAM)等)、或與位在一或更多硬體裝置內的處理器電路相關的非揮發記憶體(如,電可抹除可程式唯讀記憶體(EEPROM)、快閃記憶體、HDD、SSD等),但整個程式及/或其部分也可以替代地為一或更多硬體裝置所執行,以替代處理器電路及/或實施在韌體或專用硬體中。機器可讀指令可以分配於多重硬體裝置及/或由兩或更多硬體裝置(如,伺服器及客戶硬體裝置)所執行。例如,客戶硬體裝置可以為端點客戶硬體裝置(如,與使用者相關的硬體裝置)或中間客戶硬體裝置(如,無線電接取網路(RAN))閘道所實施,其可以促成在伺服器與端點客戶硬體裝置間之通訊)。類似地,非暫態電腦可讀儲存媒體可以包含位於一或更多硬體裝置中的一或更多媒體。再者,雖然示範程式係參考圖10及圖11所例示流程圖加以描述,但很多實施示範架構900的其他方法也可以被使用。例如,方塊的執行順序可以改變,及/或所述的一些方塊可以被改變、免除、或組合。額外或替代地,任何或所有方塊可以被一或更多硬體電路所執行(如,處理器電路、分立及/或整合類比及/或數位電路、FPGA、ASIC、比較器、運算放大器(op-amp)、邏輯電路等),其係被結構以執行對應操作,而不執行軟體或韌體。處理器電路可以分配至不同網路位置及/或在單一機器中的一或更多硬體裝置(如,單核心處理器(如,單核心中央處理單元(CPU))的本地、多核心處理器(如,多核心CPU)等)、伺服器架的多重伺服器上的多重處理器、一或更多伺服器架上的多重處理器、CPU及/或位於相同封裝(如,相同積體電路(IC)封裝或在兩或更多分開外殼等)內的FPGA。
圖10為代表示範機器可讀指令及/或示範操作1000的流程圖,其可以為處理器電路所執行及/或樣例化,以使用IPURMS執行組態。
圖10的機器可讀指令及/或操作1000於方塊1002開始,其中示範協調器904檢測能連同資源與遷移容許SLA運行於異質IPU為基資料中心平台的新實例/應用(如,工作負載902)。例如,當建立新實例/應用(如,使用SLA模板)時,資源要件及容許可以被使用者/管理者所建立。協調器904確定裝置與資源要件的驗證是否成功(方塊1004)。例如,資源要件可以被分析以確定是否它們可行而沒有計算系統的侷限。如果資源要件無效及/或不能配合計算系統,則協調器904將控制送回至方塊1002。
如果資源要件有效(方塊1004),則協調器904與IPU控制面協商,以識別出用以執行新實例/應用的資源(方塊1006)。例如,根據在請求中指明的硬體資源的類型(如,CPU、GPU、FPGA、與SSD),一組對應於指明資源的IPU係被選擇。然後,開始在IPU中的新請求與現存App間之協商。例如,協商可以包含使用識別出的資源容許臨限作出策略為基決定並動態遷移現存工作負載於IPU之間,以有效地利用所有資源。各個IPU可以包含兩部分,i)資料面,及ii)控制面。控制面處置資源配置、監視及策略執行,及資料面處置在IPU及與該IPU相關的邏輯單元間之資料流。用於協商的示範程序係配合圖11加以描述。
協調器904確定協商是否成功(方塊1008)。例如,如果協調器能找出在該組IPU內的必要資源,則協商可以被確定為成功。例如,在一情況中,現存應用持續運行於該給定IPU上,但有額外資源空著供新應用旋轉。在另一情況中,協調器904與現存應用協商並安排該應用被遷移至不同組IPU,以釋放資源供新實例/應用。
如果協商不成(方塊1008),則控制回到方塊1002,協調器904尋找滿足該資源要件的不同組IPU。
如果協商成功(方塊1008),則協調器904在IPU控制面內提供IPU/XPU資源監視與執行(方塊1010)。然後,協調器904組態於IPU為基資料中心平台上的硬體資源供新實例/應用(方塊1012)。因此,在IPU間之協商程序可促成在資料中心層次的跨域協調資源管理。
圖11為代表可以為處理器電路所執行及/或樣例化的示範機器可讀指令及/或示範操作1100的流程圖,以根據由應用及可用IPU資源所規定的容許度,動態配置資源進行協商。
圖11的機器可讀指令及/或操作1100於方塊1102開始,其中協調器904檢測使用者已經加速新實例/應用(如,VM、應用等)。例如,請求可以識別出QoS參數、SLA要件等。例如,QoS參數可以被設定為QOS=FUNC(DE VICE REQS,FREQUENCY,CACHE,MEM-BW,POWER,IPC,CORES,STORAGE,MIGRATION-TOLERANCE)。指出SLA參數致使在資料中心內的硬體資源(如,CPU、GPU、FPGA、SSD及個別IPU)的規格書。示範SLA模板係指明如下: 1.CPU: A.頻率範圍 B.記憶體頻寬範圍 C.快取大小範圍 D.TDP範圍 E.核心計數範圍 F.遷移容許度 G.XEON IPC範圍 2.SSD儲存空間範圍 3.GPU核心範圍 4.FPGA 5.PCIE產生要件 6.IPU控制面管理 h.網路頻寬範圍 i.佇列優先化
協調器904驗證請求的有效性(方塊1104)。如果請求無效,則使用者被提示提供有效請求並且控制回到方塊1102。如果請求有效(方塊1104),則協調器904確定計算資源的可用性(方塊1106)。如果無法取得想要協商的可用計算裝置(如,IPU資源),則控制回到方塊1102。
如果可用計算資源被確定為想要協商(方塊1106),則協調器904開始與正執行在IPU上的現存實例/應用協商並確定是否協商成功(方塊1108)。例如,協商可能涉及確實在IPU上的可以容許較低資源的現存應用放出資源供新實例/應用。或者,協商可以識別出可以被遷移至其他資源的應用,以釋放選擇資源供新實例/應用。如果協商未能釋放資源供新實例/應用,則控制回到方塊1106,以識別出不同資源。
如果協商成功地識別出可用資源供新實例/應用執行(方塊1108),則協調器904確定是否有現存實例/應用要被遷出資源(方塊1110)。如果有現存實例/應用要被遷出,則控制回到方塊1106,以管理現存實例/應用的協商及配置。
如果現存應用/實例並未被遷出(方塊1110),則協調器904更新資源配置器(如,現存實例/應用的服務等級(CloS))(方塊1112)。協調器904以協商的IPU組加速所請求實例/應用(如,工作負載902)(方塊1114)。
圖12例示示範環境1200,其中為IPU 1202(或任何類型的處理單元,如XPU、GPU等)所管理的資源在CPU 1204、GPU 1206、SSD 1208等之間具空間與忙碌資源的各種狀態。依據所示例子,APP-1正利用CPU 1204、GPU 1206、及SSD儲存1208的一部分,APP-2正利用CPU 1204及GPU 1206的一部分,及APP-3正利用CPU 1204及SSD儲存1208的一部分。
圖13例示一示範環境1300,其中在協同資源管理中的共識係經由一去中心化公共區塊鏈帳簿加以完成。如圖13所例示,幾個IPU 1至IPU N的操作狀態(如,狀態S 1、狀態S 2、狀態S N)。因此,在區塊鏈(如,區塊B 1至B N)中的各個區塊可以儲存狀態資訊,其可以被利用作為點對點資源協商。利用此一區塊鏈促成資訊的分散式集合,其係可信任以有效地操作為信任經紀人。雖然圖9例示單一中心化協調器904,但區塊鏈或其他去中心化技術可以被利用以促成去中心化協調器,其管理追求IPU的控制面部的資源。在此去中心化手法中,資源管理可以透過具有撤銷能力的去中心化公共帳簿加以追蹤,以追蹤/記錄具有稽核力的遙測。因此,IPU 1202可以被認為是具有電腦資源及用於與該IPU相關裝置的管理智財(Ips)。IPU的控制面主導處置資源配置、監視和策略執行的去中心化協調器。
由前述看來,將了解到已經揭露用以利用IPU管理系統中的資源指派的示範系統、方法、設備及製品。所揭露系統、方法、設備及製品藉由改良IPU及成分資源利用、具有可稽核性的可管理性、朝向改良所有權節省的總成本的安全計量,改良了使用計算裝置的效率。揭露例子促成在超規格資料中心中的細粒度資源監視及跨IPU可管理性。提供可應用協商資源監視與管理允許動態優先化,以提供確定性效能給規格內微服務。 動態可協商深度類神經網路
一些類神經網路系統想要檢測潛藏目標硬體能力,以加速推論/訓練效能。例如,JIT碼產生可以被利用以試著根據計算環境的檢測目標硬體特性,選擇指令集架構(ISA)或ISA的混合。雖然此一抽象提供了利用潛藏硬體能力的能力,但它有缺點。
在此揭露的設備、製品及設備提供動態可協商深度類神經網路解決方案。此手法促成硬體資源的利用,更明確地說,在有大量可能特性(如,單一指令串流、多資料串流(SIMD)特性、學習加強特性(如,英特爾®深度學習加強)等的實例中的利用。所揭露動態可協商深度學習類神經網路堆疊涉及實施在圖1的API 108中的可組態及可協商介面,以指明SLA。一候選組的特性可以由可用實施方式組濾出,及JIT核心可以被動態產生用於該候選組硬體特性。所揭露動態可協商深度類神經網路堆疊可以逐一地乾運行該等核心,以選擇出具有最佳效能的核心並快取它供後續使用。
圖14為示範動態可協商動態類神經網路程式館1400的方塊圖。例如,動態可協商動態類神經網路程式館1400可以被加入至圖1的架構100的API 108。示範動態可協商動態類神經網路程式館1400包含示範可組態使用者介面1402、示範平台能力管理器1404、示範應用SLA管理器1406、示範JIT管理器1410、及示範核心評估引擎1410。
示範可組態使用者介面1402提供使用者介面(如,經由架構100的OneAPI堆疊)以供應用中間軟體/框架組態與操作相關的SLA。例如,使用者介面1402可以為圖形使用者介面、文字介面、API等。
示範平台相容性管理器1404識別出目標硬體能力。平台相容性管理器1404也配合可組態使用者介面1402,以供應用組態JIT核心組態。
示範應用SLA管理器1406收集並執行經由可組態使用者介面1402提供的SLA。
示範JIT管理器1408根據指明SLA並結合在過去觀察到的裸金屬/VM啟發法,產生及管理動態JIT核心。
示範核心評估引擎1410提供能力以在大規模佈署之前,完成熔合的新產生核心/操作的沙箱評估。
代表示範硬體邏輯電路、機器可讀指令、硬體實施狀態機、及/或其任意組合,以實施圖14的動態可協商深度類神經網路1400的流程圖係被顯示於圖14。機器可讀指令可以為處理器電路所執行的一或更多可執行程式或可執行程式的一部分,處理器電路係例如示於以下配合圖16所討論的示範處理器平台1600中所示的處理器電路1612及/或以下配合圖48及/或49所討論的示範處理器電路。該程式可以被實施為儲存在一或更多非暫態電腦可讀儲存媒體中的軟體,儲存媒體係例如光碟(CD)、軟碟、硬碟機(HDD)、固態驅動機(SSD)、數位多功能光碟(DVD)、藍光碟、揮發記憶體(如,任何類型的隨機存取記憶體(RAM)等)、或位在一或更多硬體裝置中的處理器電路相關的非揮發記憶體(如,電可抹除可程式唯讀記憶體(EEPROM)、快閃記憶體、HDD、SSD等)中的軟體,但整個程式及/或其部分也可以為處理器電路以外的一或更多硬體裝置所執行及/或實施為韌體或專用硬體。機器可讀指令可以分配於多重硬體裝置及/或為兩或更多硬體裝置所執行(如,伺服器及客戶硬體裝置)。例如,客戶硬體裝置可以為端點客戶硬體裝置(如,與使用者相關的硬體裝置)或一中間客戶硬體裝置(如,可以促成在伺服器與端點客戶硬體裝置間之通訊的無線電接取網路(RAN)閘道)所實施。類似地,非暫態電腦可讀儲存媒體可以包含位於一或更多硬體裝置中的一或更多媒體。再者,雖然示範程式係參考圖14所例示的流程圖加以描述,但很多其他實施示範動態可協商深度類神經網路1400的方法也可以替代使用。例如,執行這些方塊的順序可以改變,及/或一些所述的方塊可以被改變、免除或組合。額外或替代地,這些方塊之任一或所有可以為被結構以執行對應操作而不執行軟體或韌體的一或更多硬體電路(如,處理器電路、分立及/或整合類比及/或數位電路、FPGA、ASIC、比較器、運算放大器(op-amp)、邏輯電路等)所實施。處理器電路可以是:被分配於不同網路位置及/或一或更多硬體裝置(如,單一核心處理器(如,單核心中央處理單元(CPU))的本地、在一單一機器中的多核心處理器(如,多核心CPU等)、分配於伺服器架的多重伺服器上的多重處理器、在一或更多伺服器架的多重處理器、CPU及/或位於相同封裝(如,相同積體電路(IC)封裝或者兩或更多分開外殼中等)的FPGA。
圖15為代表可以為處理器電路所執行及/或樣例化以根據硬體能力,選擇用於深度類神經網路學習的特性的示範機器可讀指令及/或示範操作1500的流程圖。
圖15的機器可讀指令及/或操作1500開始於方塊1502,其中,示範可組態使用者介面1402取得操作描述(如,使用者所輸入的指令及SLA資訊)。示範SLA管理器1406取得用於現行組態的SLA準則(方塊1504)。示範平台能力管理器1404根據目標硬體能力,選擇候選組態(如,基元描述符)(方塊1506)。例如,平台能力管理器1404可以根據平台資訊SLA準則,選擇成功由實施組建立的候選者。
示範JIT管理器1408產生對應於選擇候選者的核心(方塊1508)。例如,JIT管理器1408可以針對該候選組中的各個候選者逐一地產生核心。示範核心評估引擎1410然後可以執行該核心的乾運行/試運行並收集效能資訊(方塊1510)。例如,當多重核心係為JIT管理器1408所逐一產生時,示範核心評估引擎1410可以執行各個核心的試運行並收集效能結果,以促成根據該效能的核心選擇(如,選擇具有最佳效能的核心)。例如,核心評估引擎1410可以快取具有最佳效能的核心。
示範應用SLA管理器1406然後根據組態策略確定所選擇核心是否符合在沙箱組態的請求SLA(方塊1512)。如果不符SLA,則控制回到方塊1508,以嘗試產生另一個可能符合SLA的核心。如果應用SLA管理器1406確定符合SLA,則程序1500結束並已經選擇具有適當核心供操作。
在一些實施方式中,程序1500可以檢測CPU或另一處理單元的ISA能力並在一操作中,產生一佇列用於所有實施方式。例如,以下為用於FP32的資料類型及卷積操作的示範佇列: {{forward, f32, f32, f32}, { CPU_INSTANCE_X64(jit_avx512_common_dw_convolution_fwd_t CPU_INSTANCE_X64(jit_avx512_common_1x1_convolution_fwd_f 32_t) CPU_INSTANCE_X64(jit_avx512_core_f32_wino_conv_2x3_fwd_t) CPU_INSTANCE_X64(jit_avx512_core_f32_wino_conv_4x3_fwd_t) CPU_INSTANCE_X64(jit_avx512_common_convolution_winograd_f wd_t) CPU_INSTANCE_X64(jit_avx512_common_convolution_fwd_t<f32 >) CPU_INSTANCE_X64(jit_avx2_dw_convolution_fwd_t) CPU_INSTANCE_X64(jit_avx2_1x1_convolution_fwd_t) CPU_INSTANCE_X64(jit_sse41_dw_convolution_fwd_t) CPU_INSTANCE_X64(jit_sse41_1x1_convolution_fwd_t) CPU_INSTANCE_X64(jit_avx2_convolution_fwd_t) CPU_INSTANCE_X64(jit_sse41_convolution_fwd_t) CPU_INSTANCE(gemm_convolution_fwd_t) CPU_INSTANCE(ref_convolution_fwd_t<f32>) CPU_INSTANCE(ref_fused_convolution_fwd_t) nullptr, }},
示範程序1500可以試著樣例化在實施佇列中的各個基元描述符。平台能力管理器1404可以根據應用/中間軟體SLA及目標硬體平台能力,選出所有成功樣例化基元描述符作為用於下一層的候選者。然後,JIT管理器1408可以產生對應於各個基元描述符候選者的JIT核心並將之儲存於JIT核心候選佇列中。示範核心評估引擎1410將在現行平台中乾運行來自JIT核心候選佇列的各個核心,報告效能資料,並根據效能選擇JIT核心(如,選擇具有最佳產出量的JIT核心)並快取它供後續使用。
在一些例子中,提議手法提供優於現行手法(如,選擇符合SLA要件的第一JIT核心的手法)約10%的效能改良。
圖16為被建構以執行及/或樣例化一或更多圖5、7A、7B、8、10、11、及/或15的機器可讀指令及/或操作以實施架構100、200、300、BIOS 600、及/或動態可協商深度類神經網路1400的示範處理器平台1600的方塊圖。處理器平台1600可以例如伺服器、個人電腦、工作站、自學習機器(如,類神經網路)、行動裝置(如,手機、智慧手機、如iPad TM的平板)、頭戴組(如,擴增實境(AR)頭戴組、虛擬實境(VR)頭戴組等)或其他穿戴式裝置、或任何其他類型的計算裝置。
例示例子的處理器平台1600包含處理器電路1612。例示例子的處理器電路1612為硬體。例如,處理器電路1612可以為一或更多來自任何想要系列或製造商的積體電路、邏輯電路、FPGA、微處理器、CPU、GPU、DSP、及/或微控制器所實施。處理器電路1612可以為一或更多半導體為基(如,矽為基)裝置所實施。
處理器電路1612的例示例子包含本地記憶體1613(如,快取、暫存器等)。處理器電路1612的例示例子與包含揮發記憶體1614及非揮發記憶體1616的主記憶體透過匯流排1618加以通訊。揮發記憶體1614可以為同步動態隨機存取記憶體(SDRAM)、動態隨機存取記憶體(DRAM)、RAMBUS®動態隨機存取記憶體(RDRAM®)、及/或任何其他類型RAM裝置所實施。非揮發記憶體1616可以為快閃記憶體及/或任何其他想要類型記憶體裝置所實施。對例示例子的主記憶體1614、1616存取係為記憶體控制器1617所控制。
處理器平台1600的例示例子也包含介面電路1620。介面電路1620可以為依據任何類型介面標準,如,乙太介面、通用串列匯流排(USB)介面、藍牙®介面、近場通訊(NFC)介面、週邊組件互連(PCI)介面、及/或快速週邊組件互連(PCIe)介面的硬體所實施。
在所例示例子中,一或更多輸入裝置1622被連接至介面電路1620。輸入裝置1622允許使用者輸入資料及/或命令至處理器電路1612。輸入裝置1622可以為例如音訊感應器、麥克風、攝影機(靜態或視訊)、鍵盤、按鈕、滑鼠、觸控螢幕、軌跡板、軌跡球、等電點裝置、及/或語音識別系統所實施。
一或更多輸出裝置1624也被連接至例示例子的介面電路1620。輸出裝置1624可以例如為顯示裝置(如,發光二極體(LED)、有機發光二極體(OLED)、液晶顯示器(LCD)、陰極射線管(CRT)顯示器、面內切換(IPS)顯示器、觸控螢幕等)、觸覺輸出裝置、印表機、及/或喇叭所實施。介面電路1620的例示例子因此典型包含圖形驅動器卡、圖形驅動器晶片、及/或如GPU的圖形處理器電路。
介面電路1620的例示例子也包含例如發射器、接收器、收發器、數據機、住宅閘道、無線接取點、及/或網路介面的通訊裝置,以藉由網路1626促成與外部機器(如,任何類型的計算裝置)的資料交換。通訊也可以是例如藉由乙太連接、數位用戶線(DSL)連接、電話線連接、同軸電纜系統、衛星系統、現場線無線系統、蜂巢式電話系統、光連接等。
處理器平台1600的例示例子也包含一或更多大量儲存裝置1628,以儲存軟體及/或資料。此大量儲存裝置1628的例子包含磁儲存裝置、光儲存裝置、軟碟機、HDD、CD、藍光碟機、獨立磁碟冗餘陣列(RAID)系統、固態儲存裝置,例如快閃記憶體裝置及/或SSD,及DVD光碟機。
可以為圖5、7A、7B、8、10、11及/或15的機器可讀指令所實施的機器可執行指令1632可以被儲存在大量儲存裝置1628、在揮發記憶體1614、在非揮發記憶體1616、及/或在如CD或DVD的可移除非暫態電腦可讀儲存媒體上。
圖16的處理器平台1600的例示例子包含示範加速電路1634,其包含示範GPU 1640、示範視覺處理單元(VPU)1642、及示範類神經網路處理器1644。額外或替代地,加速電路1634可以包含任何其他類型的硬體,例如,CPU、FPGA、ASIC等。在此例子中,GPU 1640、VPU 1642及類神經網路處理器1644係與處理器平台1600的不同硬體,如,揮發記憶體1614、非揮發記憶體1616等,透過匯流排1618通訊。在此例子中,類神經網路處理器1644可以為一或更多來自任何想要系列或製造商的積體電路、邏輯電路、微處理器、GPU、DSP、或控制器所實施,其可以用以執行例如類神經網路的AI模型。 動態 XPU 硬體感知深度學習模型管理的方法與設備
用於計算裝置的計算工作負載可以透過使用深度學習(DL)模型加以執行。例如類神經網路(NN)的深度學習(DL)模型為有用工具,其已經對解決有關圖案辨識、物件分類、自然語言處理、自動語音辨識等的複雜問題展現了其價值。由於硬體及/或深度學習(DL)模型及其客製化有大範圍的可用類型,所以,識別出硬體(HW)及/或軟體(SW)的最佳組合(如,深度學習模型)以執行計算工作負載是很複雜的。
包含機器學習(ML)、深度學習(DL)、及/或其他人工機器驅動邏輯的人工智慧(AI)致使機器(如,電腦、邏輯電路等)使用一模型,以處理輸入資料,以根據模型所經由訓練程序所先前學習的態樣與/或相關性,產生輸出。例如,模型可以以資料訓練,以辨識出處理輸入資料時的態樣及/或相關性,使得其他輸入造成與所辨識出態樣及/或相關性相符的輸出。
有很多不同類型的機器學習模型及/或機器學習架構存在。在此所揭露的一些例子中,使用了決策樹模型。使用決策樹模型致使資料的解譯簡單及可解釋。通常,適用於在此所揭露的示範手法的機器學習模型/架構將是卷積類神經網路(CNN)及/或深度類神經網路(DNN),其中在模型外並無法看見互連性。然而,其他類型的機器學習模型可以額外或替代地被使用,例如,遞歸類神經網路(RNN)、支援向量機(SVM)、加閘遞歸單元(GRU)、長短期記憶體(LSTM)等。
通常,實施ML/AI系統涉及兩階段,即學習/訓練階段及推論階段。在學習/訓練階段,訓練演算法係被使用以訓練模型,以根據例如訓練資料,依據態樣及/或相關性操作。通常,模型包含內部參數,其導引輸入資料如何被轉換為輸出資料,例如,透過一連串的節點及在模型內的連接,以將輸入資料轉換為輸出資料。另外,超參數被使用作為訓練程序的一部分,以控制學習如何執行(如,學習率、被用於機器學習模型中的層的數目等)。超參數被界定為在初始訓練程序前確定的訓練參數。
不同類型的訓練可以根據ML/AI模型的類型及/或期望輸出加以執行。例如,監督訓練使用輸入及對應期望(如,標記)輸出,以選擇降低模型錯誤的參數(如,藉由迭代選擇參數的組合)用於ML/AI模型。如於此所用,標記表示機器學習模型的預期輸出(如,分類、期待輸出值等)。或者,未監督訓練(如,用於深度學習、機器學習的次集等)涉及由輸入推論態樣,以選擇用於ML/AI模型的參數(如,沒有期待(如,標記)輸出的有利點)。
在此所揭露的例子中,ML/AI模型使用已知軟體取樣(如,惡意及/或清潔)來訓練。然而,任何其他訓練演算法可以被額外或替代地使用。在此所揭露的例子中,訓練被執行於一組最佳化用於選擇目標(如,效能、準確性、成本等)的模型上。
訓練係使用控制學習如何進行(如,被使用於機器學習模型中的學習率、層數目等)的超參數加以執行。
訓練係使用訓練資料加以執行。在此所揭露的例子中,訓練資料可以是任何類型資料集的特性(如,AI特性)。
一旦訓練完成,模型被部署使用作為可執行結構,其處理輸入並根據在該模型中所定義的節點網路與連接,提供輸出。模型被儲存在記憶體中。模型然後被圖18的模型管理電路1808所執行。
一旦訓練,部署的模型可以被操作於推論階段,以處理資料。在推論階段中,予以分析的資料(即,活資料)被輸入至該模型,及模型執行以建立輸出。此推論階段可以被視為AI“思考”,以根據由訓練所學習到的產生輸出(如,藉由執行模型,以將學習態樣及/或相關性應用至活資料)。在一些例子中,在輸入資料被使用作為至機器學習模型的輸入之前,輸入資料受到預處理。再者,在一些例子中,輸出資料可以在其被AI模型所產生之後,受到後處理,以將輸出轉換為有用結果(如,資料的顯示、予以為機器所執行的指令等)。
在一些例子中,部署模型的輸出可以被捕捉並提供作為回授。藉由分析回授,部署模型的準確性可以被確定。如果回授表示部署模型的準確性低於臨限或其他準則,則更新模型的訓練可以使用該回授及更新訓練資料集、超參數等加以觸發,以產生更新部署模型。
新人工智慧(AI)特性的探索與發現為費時問題。新硬體特性的快速發現將加快新AI產品及/或特性的上市時間。
現在,在DL模型管理系統中的訓練及推論階段係聚焦於單一DL模型。部分的這些單一DL模型被分解成多重較小模型,然而,這些DL模型管理系統係聚焦於單一抽象實體。這些現行DL模型管理系統並未分析在替代模型間之差異,以獲取先見之明並對AI特性開發及/或探索提議新特性。
類神經架構搜尋(NAS)表示用於深度學習(DL)模型管理的手法,其聚焦於找到用於一特定組要件的正確網路拓樸。當搜尋最佳類神經網路拓樸時,硬體感知NAS手法考量來自目標硬體(HW)的資訊。硬體感知NAS手法的主要焦點為找出配合所列出準則的單一DL模型。
現行對DL模型管理的NAS手法以隔離方式處置各個所發現模型。即,它們並未進一步考量在模型間存在著差異(如,由NAS演算法所為不同目標最佳化的候選特性),以發現新的特性及/或取得進一步先見之明。
多數現行NAS解決方案並未考量最佳模型將如何部署、部署在哪、及在什麼情況下部署。例如,在模型被最佳化的同時,目標硬體可能具有影響裝置資源的可用性的其他程序,在推論時,建立假設所有可用資源將配置至該模型。這被證明為在部署期間有顯著的缺點,然而,因為如果目標硬體在運行時間期間,受到資源利用的改變,則硬體將很可能需要將模型替換至較適用於新狀況的另一模型。
模型對偶性必須被利用,以探索最佳化用於多重目標(如,準確性、潛時、效能、成本等)的兩或更多不同架構選項。在這些架構選項間之差量係被識別出與探索,以在軟體(SW)或硬體(HW)中建立新特性及/或間隙,以協助模型設計/管理及/或硬體共最佳化。
圖17為示範AutoML架構1700的示意圖,其包含示範機器學習(ML)系統組態器1702,以識別出及/或產生可組構ML計算節點。AutoML架構1700包含ML系統組態器1702,以根據計算工作或工作負載(如,人工智慧/機器學習(AI/ML)計算工作或工作負載),產生硬體搜尋空間及/或軟體搜尋空間。ML系統組態器1702可以由硬體搜尋空間,識別出硬體、或其部分。ML系統組態器1702也可以由軟體搜尋空間,發現及/或識別出軟體(如,AI/ML模型),或其部分。在一些例子中,ML系統組態器1702可以藉由迭代(i)架構及/或硬體及/或軟體的類型,及/或(ii)硬體及/或軟體的組態,個別及/或同時展開可組構ML計算節點。例如,ML系統組態器1702可以藉由當執行工作負載時,評估該硬體及/或軟體及/或根據執行工作負載的硬體及/或軟體模擬,而可以展開可組構ML計算節點。在一些此等例子中,可組構ML計算節點可以是可組構,因為硬體及/或軟體組件可以被選擇並組合成各種組合,以滿足特定或預定要求(如,準確性要求、潛時要求、產出量要求等)。在一些此等例子中,回應於識別出滿足特定或預定要求的硬體及/或軟體的特定組合,ML系統組態器1702可以輸出該組合為可組構ML計算節點,以執行想要的工作負載。
在一些例子中,可組構ML計算節點可以為單一同質計算或電子系統所實施,該計算或電子系統可以被組態及/或利用以執行AI/ML模型。例如,可組構ML計算節點可以為單一中央處理器單元(CPU)、圖形處理器單元(GPU)、人工智慧處理器(AI處理器)、場可程式閘陣列(FPGA)、數位信號處理器(DSP)、XPU等所實施。在一些例子中,可組構ML計算節點可以為單一同質計算或電子系統的部分所實施,例如,單一CPU、GPU、AI處理器、FPGA、DSP、XPU等的部分(如,核心)所實施。在一些此等例子,該等部分可以包含核心(如,硬體核心)及/或不同核心、硬體等可以耦接(如,實體耦接、通訊耦接、經由計算或電匯流排的耦接等)的對應互連。在一些例子中,可組構ML計算節點可以為相同類型的同質計算或電子系統的多者,或其部分所實施。例如,可組構ML計算節點可以以兩或更多CPU(或其部分)、兩或更多GPU(或其部分)、兩或更多AI處理器(或其部分)、兩或更多FPGA(或其部分)、兩或更多DSP(或其部分)、兩或更多XPU(或其部分)等所實施。
在一些例子中,可組構ML計算節點可以為單一異質計算或電子系統所實施,該計算或電子系統可以被組態及/或利用以執行AI/ML模型。例如,可組構ML計算節點可以為CPU、GPU、AI處理器、FPGA、DSP、XPU等、及/或其任意組合所實施。在一些此等例子中,可組構ML計算節點可以為一或更多CPU、一或更多GPU、一或更多AI處理器、一或更多FPGA、一或更多DSP、一或更多XPU等、及/或其任意組合所實施。在一些例子中,可組構ML計算節點可以為單一異質計算或電子系統的部分所實施,該計算或電子系統係例如CPU、GPU、AI處理器、FPGA、DSP、XPU等、及/或其任何組合的部分。在一些例子中,可組構ML計算節點可以為同一異質計算或電子系統、或其部分的多重所實施。例如,可組構ML計算節點可以為異質計算系統的兩或更多實例所實施,其包含一或更多CPU(或其部分)、一或更多GPU(或其部分)、一或更多AI處理器(或其部分)、一或更多FPGA(或其部分)、一或更多DSP(或其部分)、一或更多XPU(或其部分)等、及/或其組合所實施。在一些例子中,可組構ML計算節點可以為兩或更多不同異質計算或電子系統所實施。例如,可組構ML計算節點可以為第一異質計算系統及第二異質計算系統所實施。在一些此等例子中,第一異質計算系統及第二異質計算系統的部分可以不同。
在一些例子中,可組構ML計算節點可以包含、儲存、及/或存取可執行構造,以執行AI/ML模型,以完成工作負載,或其部分。例如,可執行構造可以為組態影像、可執行二進制碼、可執行碼(如,可執行機器可讀碼)、可執行檔案(如,可執行二進制檔)、可執行程式、可執行指令(如,可執行機器可讀指令)等所實施,當被執行時,可以實施AI/ML模型,以達成AI/ML工作負載的完成。
例示例子的AutoML架構1700包含示範最佳應用1704、示範最佳中間軟體及框架1706、及示範應用程式介面(API)1708。在一些例子中,最佳應用1704可以為應用(如,軟體應用、網路或瀏覽器為基應用等)所實施,其被客製化、調整、及/或最佳化,以達成可組構ML計算節點的識別及/或產生。例如,最佳應用1704可以被開發者(如,軟體開發者、研究者等)、資訊科技(IT)人員等所存取、利用等。在此等例子中,最佳應用1704可以被存取、利用等,以針對可以由AL/ML技術得利的技術問題,共同設計硬體/軟體(HW/SW)解決方案。在一些例子中,最佳中間軟體及框架1706可以為中間軟體及框架所實施,其係被客製化、調整、及/或最佳化以達成可組構ML計算節點的識別及/或產生。例如,最佳中間軟體及框架1706可以在最佳應用1704及API 1708間實施一介面(如,通訊、連接等)。
例示例子的API 1708可以被調用,以藉由直接規劃或API為基規劃的至少之一,來規劃、開發、及/或產生AI/ML應用。API 1708的例示例子包含示範移植工具1710、示範直接規劃API 1712、示範API為基規劃API 1714、及示範分析工具1716。
在一些例子中,移植工具1710可以為軟體(如,軟體應用)所實施,其可以為了完成某些形式的在與程式所原始設計的第二計算或電子環境不同的第一計算或電子環境內執行的目的,而調適一程式。例如,移植工具1710可以將開發用於第一類型的硬體的第一程式、作業系統(OS)、程式館等轉換及/或調適為用於第二類型硬體、OS、程式館等的第二程式。
在一些例子中,直接規劃API 1712可以被調用以達成直接規劃工作,其可以包含開發及/或編譯資料平行C++應用。在一些例子中,API為基規劃API 1714可以被調用以達成API為基規劃,其可以包含開發及/或編譯可以呼叫(或調用、樣例化等)數學核心程式館(MKL)、MKL深度類神經網路(DNN)程式館、資料分析加速程式館、線程建築方塊程式館、平行標準模板程式館、媒體軟體開發套件(SDK)、深度學習部署工具套件、機器學習定標程式館等,及/或其任何組合的應用。
在一些例子中,分析工具1716可以被呼叫、樣例化、及/或調用以分析可組構ML計算節點的硬體、軟體、及/或其組態。例如,分析工具1716可以樣例化仿真器,以仿真所有該可組構ML計算節點的硬體及/或軟體特性,以產生及/或輸出一或更多評估參數。在一些此等例子中,評估參數可以包含代表及/或表示準確度、潛時、以完成工作負載的週期數、或可組構ML計算節點的產出量的參數。在一些例子中,評估參數可以包含代表及/或表示處理器或時鐘頻率、組織頻率、讀取記憶體頻寬、寫入記憶體頻寬、硬體降額定因數、記憶體埠數量、資料處理單元(DPU)數量、模型層(如,類神經網路層、卷積層等)數量、啟動精準度(如,予以處理的啟動值的精準度)、權重精準度(如,予以處理的權重值的精準度)等、及/或其組合的參數。例如,分析工具1716可以根據可組構ML計算節點,執行仿真器。在一些此等例子中,分析工具1716可以執行仿真器,以確定當該可組構ML計算節點執行一具有特定組態的特定AI/ML模型時,該可組構ML計算節點的產出量。
在一些例子中,分析工具1716可以樣例化模擬器,以模擬可組構ML計算節點的行為、組態等,以產生及/或輸出一或更多評估參數。例如,分析工具1716可以根據該可組構ML計算節點,執行一模型(如,模擬模型、AI/ML模型等)。在一些此等例子中,分析工具1716可以執行模型,以當該可組構ML計算節點執行具有特定組態的特定AI/ML模型時,評估、預測、及/或確定該可組構ML計算節點的產出量。
AutoML架構1700的例示例子包含可以產生該可組構ML計算節點的不同類型的硬體及/或軟體。在所例示例子中,AutoML架構1700包含用於純量、向量、矩陣、及空間硬體的介面與目標系統的軟體。額外及/或替代地,也可以使用任何其他類型的硬體。在此例子中,純量硬體可以為示範CPU 1718及示範CPU系統軟體1720所實施。例如,CPU系統軟體1720可以包含對應於CPU指令集架構(ISA)的指令。在此例子中,向量硬體被示範GPU 1722及示範GPU系統軟體1724所實施。例如,GPU系統軟體1724可以包含核心、碼的部分等,例如,核心、計算核心、及/或著色器。在一些例子中,核心、碼的部分等可以以高階程式語言,例如,如高階著色器語言(HLSL)、OpenCL等所代表。
在此例子中,矩陣硬體係為示範AI處理器1726及示範AI系統軟體1728所實施。例如,AI系統軟體1728可以包含一或更多AI/ML演算法、模型等,例如類神經網路(如,卷積類神經網路(CNN)、深度類神經網路(DNN)、遞歸類神經網路(RNN)等)、線性迴歸模型、邏輯式迴歸模型、決策樹模型、學習向量量化模型等、及/或其組合。在此例子中,空間硬體為示範FPGA 1730及示範FPGA系統軟體1732所實施。例如,FPGA系統軟體1732可以根據例如Verilog的硬體描述語言(HDL),包含核心、碼的部分等。
例示例子的ML系統組態器1702可以經由示範主機介面1734與CPU 1718及/或CPU系統軟體1720作成介面。ML系統組態器1702的例示例子可以透過示範零階介面1736與GPU 1722、GPU系統軟體1724、AI處理器1726、AI系統軟體1728、FPGA 1730、及/或FPGA系統軟體1732作成介面。
在所例示例子中,CPU系統軟體1720、GPU系統軟體1724、AI系統軟體1728、FPGA系統軟體1732、主機介面1734、及/或零階介面1736可以對應及/或實施示範的零階下系統軟體1738。例如,零階下系統軟體1738可以對應及/或實施被調整至例如CPU 1718、GPU 1722等的硬體的低階直接至金屬介面。
在例示例子中,API 1708可以實施示範的零階上系統軟體1740及示範開發者介面1742。例如,開發者、使用者等可以透過API 1708存取及/或利用AutoML架構1700。在一些例子中,開發者、使用者等可以藉由API 1708,以高於低階直接至金屬介面的階層,存取及/或利用系統軟體。在一些例子中,開發者、使用者等可以透過主機介面1734及/或零階介面1736存取及/或利用零階下系統軟體1738。
圖18為依據本案的教示加以實施的動態XPU硬體感知深度學習(DL)模型管理系統的示範組態的方塊圖。示範DL模型管理系統1800包含示範輸入資料集1802、示範模型訓練電路1804(包含示範差異確定器電路1806、示範類似性確定器電路1808、及示範特性收集器電路1810)、示範第一、第二、及第三模型1812A、1812B、及1812C、及示範模型管理電路1814(包含示範QoS選擇器電路1816、示範QoS取樣器電路1818、及示範模型排程器電路1820)。
在此所揭露的例子中,示範輸入資料集1802可以包含候選特性、模型所最佳化的目標等。示範輸入資料集1802被傳送至模型訓練電路1804,讓DL模型管理系統1800所用於訓練及/或模型最佳化。
包含示範差異確定器電路1806、示範類似性確定器電路1808、及示範特性收集器電路1810的示範模型訓練電路1804接收示範輸入資料集1802並根據選擇目標,產生一組模型(如,第一模型1812A、第二模型1812B、及第三模型1812C)。例如,在此所揭露的DL模型管理系統1800中,第一模型1812A被訓練以最佳準確度作為主要目標、第二模型1812B被訓練以最佳效能作為主要目標、及第三模型1812C被訓練以最佳成本作為主要目標。
示範差異確定器電路1806分析最佳化用於不同選擇目標(如,準確度、效能、成本等)的模型的特性名單,以識別出在各種模型間之特性差異。在此所揭露的例子中,差異確定器電路1806藉由將第一目標被選擇用於第一模型時出現(如,來自選擇準確度目標的第一模型1812A的特性),但在第二目標被選擇用於第二模型時未出現(如,來自選擇效能目標的第二模型1812B的特性)的特性相關,來識別出這些差異。在確定這些差異時,取得進一步先見之明,有關為何一模型以另一目標(如,成本)為代價改良其整體效能。
在一些例子中,模型訓練電路1804包含識別手段,用以針對不同選擇目標(如,準確度、效能、成本等)最佳化,識別出模型間之候選差異。例如,差異識別手段可以為示範差異確定器電路1806所實施。在一些例子中,示範差異確定器電路1806可以為例如圖21的示範處理器電路2112的處理器電路所樣例化。例如,示範差異確定器電路1806可以被執行例如由圖19的至少方塊1905、1910、及1915所實施的機器可執行指令的圖21的示範通用處理器電路2100所樣例化。在一些例子中,示範差異確定器電路1806可以為硬體邏輯電路所樣例化,該硬體邏輯電路可以為被建構以執行對應機器可讀指令的操作的ASIC或圖49的FPGA電路4900所實施。額外或替代地,示範差異確定器電路1806可以為硬體、軟體及/或韌體的任何其他組合所樣例化。例如,示範差異確定器電路1806可以為建構以執行部分或全部機器可讀指令及/或執行部分或全部對應於該機器可讀指令而不執行軟體或韌體的操作的至少一或更多硬體電路(如,處理器電路、分立及/或整合類比及/或數位電路、FPGA、特殊應用積體電路(ASIC)、比較器、運算放大器(op-amp)、邏輯電路等)所實施,但其他結構也可以同樣適用。
示範類似性確定器電路1808分析針對不同選擇目標(如,準確度、效能、成本等)最佳化的模型的特性名單,以識別出在各種不同模型間之特性類似性。在此所揭露的例子中,類似性確定器電路1808藉由將針對第一模型所選的第一目標時出現的特性(如,來自具有準確性的選定目標的第一模型1812A的特性)相關至針對第二模型所選的第二目標時仍出現的特性(如,來自具有效能的選定目標的第二模型1812B的特性),而識別出其間之類似性。在確定這些類似性時,進一步的先見之明被引入,其中特性對於整體模型效能是重要的(如,可以結論出一些層當執行物件檢測時是很重要的)。
在一些例子中,模型訓練電路1804包含識別針對不同選擇目標(如,準確性、效能、成本等)最佳化的模型間之類似性的手段。例如,識別類似性的手段可以為示範類似性確定器電路1808所實施。在一些例子中,示範類似性確定器電路1808可以為如圖21的示範處理器電路2112的處理器電路所樣例化。例如,示範類似性確定器電路1808可以為執行例如以圖19的至少方塊1920所實施的機器可執行指令的圖21的示範通用處理器電路2112所樣例化。在一些例子中,示範類似性確定器電路1808可以為硬體邏輯電路所樣例化,硬體邏輯電路可以為ASIC或被結構以執行對應於機器可讀指令的操作的圖49的FPGA電路4900所實施。額外或替代地,示範類似性確定器電路1808可以為硬體、軟體、及/或韌體的任何其他組合所樣例化。例如,示範類似性確定器電路1808可以為被結構以執行部分或所有機器可讀指令及/或執行部分或全部對應於機器可讀指令的操作而不執行軟體或韌體的至少一或更多硬體電路(如,處理器電路、分立及/或整合類比及/或數位電路、FPGA、特殊應用積體電路(ASIC)、比較器、運算放大器(op-amp)、邏輯電路等)所實施,但其他結構也同樣適用。
示範特性收集器電路1810收集由差異確定器電路1806及類似性確定器電路120兩者所識別的特性名單。在一些例子中,特性收集器電路1810然後可以對收集的特性名單執行進一步分析,然而,在此所揭露的例子中,名單可以被保留供輸出。
在一些例子中,模型訓練電路1804包含收集為示範差異確定器電路1806及示範類似性確定器電路1808所識別的特性的手段。例如,收集特性的手段可以為示範特性收集器電路1810所實施。在一些例子中,示範特性收集器電路1810可以為例如圖21的示範處理器電路2112的處理器電路所樣例化。例如,示範特性收集器電路1810可以為執行例如為圖19的至少方塊1925所實施的機器可執行指令的圖21的示範通用處理器電路2112所樣例化。在一些例子中,示範特性收集器電路1810可以為硬體邏輯電路所樣例化,硬體邏輯電路可以被ASIC或建構以執行對應於機器可讀指令的操作的圖49的FPGA 4900所實施。額外或替代地,示範特性收集器電路1810可以為硬體、軟體及/或韌體的任何其他組合所樣例化。例如,示範特性收集器電路1810可以為至少一或更多硬體電路(如,處理器電路、分立及/或整合類比及/或數位電路、FPGA、特殊應用積體電路(ASIC)、比較器、運算放大器(op-amp)、邏輯電路等)所實施,該硬體電路被建構以執行部分或全部機器可讀指令及/或執行對應機器可讀指令的部分或全部操作,而不執行軟體或韌體,但其他結構也同樣適用。
由輸入資料集802所取得之第一、第二、及第三模型(1812A、1812B、及1812C)係被輸入至示範模型管理電路1814,以在為模型訓練電路1804所使用後供進一步處理。在此所揭露的例子中,第一模型1812A被最佳化,以最大化準確度的選定目標,第二模型1812B被最佳化,以最大化效能的選定目標,及第三模型1812C被最佳化,以最大化成本的選定目標。
在此所揭露的例子中,示範模型管理電路1814包含示範服務品質(QoS)取樣電路1816、示範QoS選擇器電路1818、及示範模型排程器電路1820。
示範服務品質(QoS)取樣器電路1816取樣目標硬體平台的現行狀態。例如,服務品質(QoS)取樣器電路1816可以確定目標硬體平台現正回應於來自應用的高優先請求。
在一些例子中,模型管理電路1814包含用以確定目標硬體平台的現行狀態的手段。例如,確定手段可以為示範QoS取樣器電路1816所實施。在一些例子中,示範QoS取樣器電路1816可以為例如圖21的示範處理器電路2112的處理器電路所樣例化。例如,示範QoS取樣器電路1816可以為執行例如為圖20的至少方塊2005所實施的機器可執行指令的圖21的示範通用處理器電路2112所樣例化。在一些例子中,示範QoS取樣器電路1816可以為硬體邏輯電路所樣例化,其可以為ASIC或被結構以執行對應機器可讀指令的操作的圖49的FPGA電路4900所實施。額外或替代地,示範QoS取樣器電路1816可以為硬體、軟體及/或韌體的任何其他組合所樣例化。例如,示範QoS取樣器電路1816可以為至少一或更多硬體電路(如,處理器電路、分立及/或整合類比及/或數位電路、FPGA、特殊應用積體電路(ASIC)、比較器、運算放大器(op-amp)、邏輯電路等)所實施,該硬體電路被建構以執行部分或全部機器可讀指令及/或執行對應機器可讀指令的部分或全部操作,而不執行軟體或韌體,但其他結構也同樣適用。
示範QoS選擇器電路1818根據由QoS取樣器電路1816所確定的目標硬體平台的現行狀態,選擇予以優先化的服務品質(QoS)。例如,如果QoS取樣器電路1816對目標硬體平台現正回應於來自應用的高優先請求作為優先,則QoS選擇器電路1818可以選擇準確度作為最高優先的QoS目標。
在一些例子中,模型管理電路1814包含選擇手段,用以選擇服務品質(QoS)目標。例如,選擇QoS目標的手段可以為示範QoS選擇器電路1818所實施。在一些例子中,示範QoS選擇器電路1818可以為例如圖21的示範處理器電路2112的處理器電路所樣例化。例如,示範QoS選擇器電路1818可以為執行如由圖20的至少方塊2010、2015、及2020所實施的機器可執行指令的圖21的示範通用處理器電路2100所樣例化。在一些例子中,示範QoS選擇器電路1818可以為硬體邏輯電路所樣例化,該硬體邏輯電路可以為ASIC或建構以執行對應於機器可讀指令的操作的圖49的FPGA電路4900所實施。額外或替代地,示範QoS選擇器電路1818可以為硬體、軟體及/或韌體的任何其他組合所樣例化。例如,示範QoS選擇器電路1818可以為至少一或更多硬體電路(如,處理器電路、分立及/或整合類比及/或數位電路、FPGA、特殊應用積體電路(ASIC)、比較器、運算放大器(op-amp)、邏輯電路等)所實施,該硬體電路被建構以執行部分或全部機器可讀指令及/或執行對應機器可讀指令的部分或全部操作,而不執行軟體或韌體,但其他結構也同樣適當。
示範模型排程器電路1820選擇最佳滿足用於優先化選擇服務品質(QoS)目標的要件的模型,供目標硬體平台所使用。另外,模型排程器電路1820也監視目標硬體平台的利用度量。如果任一利用度量被建立為低於預定臨限值時,則該模型排程器電路1820調整模型選擇,以產生供目標硬體平台所使用的另一模型。例如,如果第一模型1812A在硬體平台上開始產生低利用度量,則模型排程器電路1820選擇第二模型1812B作為供使用的新模型。如果第二模型1812B在一些時間後開始得到低利用度量,則模型排程器電路1820可以確定該第一模型1812A為較優以供硬體平台所使用。
在一些例子中,模型管理電路1814包含選擇一模型的手段。例如,選擇手段可以為示範模型排程器電路1820所實施。在一些例子中,示範模型排程器電路1820可以為例如圖21的示範處理器電路2112的處理器電路所樣例化。例如,示範模型排程器電路1820可以為執行如由圖20的至少方塊2025、2030、及2035所實施的機器可執行指令的圖21的示範通用處理器電路2100所樣例化。在一些例子中,示範模型排程器電路1820可以為硬體邏輯電路所樣例化,該硬體邏輯電路可以為ASIC或被建構以執行對應於該機器可讀指令的操作的圖49的FPGA電路4900所實施。額外或替代地,示範模型排程器電路1820可以為硬體、軟體及/或韌體的任何其他組合所樣例化。例如,示範模型排程器電路1820可以為至少一或更多硬體電路(如,處理器電路、分立及/或整合類比及/或數位電路、FPGA、特殊應用積體電路(ASIC)、比較器、運算放大器(op-amp)、邏輯電路等)所實施,該硬體電路被建構以執行部分或全部機器可讀指令及/或執行對應機器可讀指令的部分或全部操作,而不執行軟體或韌體,但其他結構也同樣適當。
雖然實施圖18的模型訓練電路1804的示範方式被例示於圖18,但例示於圖18中的一或更多元件、程序、及/或裝置可以被組合、細分、重排列、省略、免除、及/或以其他方式實施。再者,示範差異確定器電路1806、示範類似性確定器電路1808、示範特性收集器電路1810、及/或,大體來說,圖18的示範模型訓練電路1804可以以單獨硬體或以硬體組合上軟體及/或韌體加以實施。因此,例如,示範類似性確定器電路1806、示範類似性確定器電路1808、示範特性收集器電路1810之任一、及/或大體來說,示範模型訓練電路1804可以以處理器電路、類比電路、數位電路、邏輯電路、可程式處理器、可程式微控制器、圖形處理單元(GPU)、數位信號處理器(DSP)、特殊應用積體電路(ASIC)、可程式邏輯裝置(PLD)、及/或場可程式邏輯裝置(FPLD),例如,場可程式閘陣列(FPGA)實施。再者,圖18的示範模型訓練電路1804可以包含除了圖18所示以外的一或更多元件、程序、及/或裝置、或替代它們,及/或可以包含所例示的元件、程序及裝置的一個以上或全部。
雖然實施圖18的模型管理電路1814的示範方式係被例示於圖18,但圖18所例示之一或更多元件、程序及/或裝置可以被組合、細分、重排列、省略、免除、及/或以任何其他方式實施。再者,示範服務品質(QoS)取樣器電路1816、示範QoS選擇器電路1818、示範模型排程器電路1820、及/或,大體來說,圖18的示範模型管理電路1814可以以單獨硬體或硬體與軟體及/或韌體的組合來實施。因此,例如,示範服務品質(QoS)取樣器電路1816、示範QoS選擇器電路1818、示範模型排程器電路1820的任一、及/或大體來說,示範模型管理電路1814可以以處理器電路、類比電路、數位電路、邏輯電路、可程式處理器、可程式微控制器、圖形處理單元(GPU)、數位信號處理器(DSP)、特殊應用積體電路(ASIC)、可程式邏輯裝置(PLD)、及/或場可程式邏輯單元(FPLD),例如,場可程式閘陣列(FPGA)實施。再者,圖18的示範模型管理電路1814可以包含除了圖18所示以外的一或更多元件、程序、及/或裝置、或替代它們,及/或可以包含所例示的元件、程序及裝置的一個以上或全部。
一種代表實施圖18的模型訓練電路1804的示範硬體邏輯電路、機器可讀指令、硬體實施狀態機、及/或其任意組合的流程圖係被顯示於圖19。一種代表實施圖18的模型管理電路1814的示範硬體邏輯電路、機器可讀指令、硬體實施狀態機、及/或其任意組合的流程圖係被顯示於圖20。該機器可讀指令可以是用以供處理器電路執行的一或更多可執行程式或執行程式的一部分,該處理器電路係例如參考圖21所討論如下的示範處理器平台2100中所示的處理器電路2112及/或參考圖48及/或49所討論如下的示範處理器電路。該程式可以被實施為儲存在一或更多非暫態電腦可讀儲存媒體中的軟體,該非暫態電腦可讀儲存媒體係例如光碟(CD)、軟碟、硬碟機(HDD)、固態驅動機(SSD)、數位多功能光碟(DVD)、藍光碟、揮發記憶體(如,任意類型的隨機存取記憶體(RAM)等),或與位於一或更多硬體裝置中的處理器電路相關的非揮發記憶體(如,電可抹除可程式唯讀記憶體(EEPROM)、快閃記憶體、HDD、SSD等),但整個程式及/或其部分也可以被處理器電路以外的一或更多硬體裝置所執行及/或被實施在韌體或專用硬體中。機器可讀指令可以分配於多重硬體裝置上及/或被兩或更多硬體裝置(如,伺服器及客戶硬體裝置)執行。例如,客戶硬體裝置可以為端點客戶硬體裝置(如,與使用者相關的硬體裝置)或中間客戶硬體裝置(如,無線電接取網路(RAN))閘道所實施,其促成在伺服器與端點客戶硬體裝置間之通訊)。類似地,非暫態電腦可讀儲存媒體可以包含位在一或更多硬體裝置中的一或更多媒體。再者,雖然示範程式係參考圖19及/或20所示的流程圖加以描述,但實施示範模型訓練電路1804及/或示範模型管理電路1814的很多其他方法也可以替代地使用。例如,方塊的執行順序可以改變,及/或部分方塊可以被改變、免除、或組合。額外或替代地,任一或所有方塊可以為一或更多硬體電路(如,處理器電路、分立及/或整合類比及/或數位電路、FPGA、ASIC、比較器、運算放大器(op-amp)、邏輯電路等)所實施,該硬體電路被建構以執行對應操作,而不執行軟體或韌體。處理器電路可以分配在不同網路位置及/或在單一機中的一或更多硬體裝置(如,單核心處理器(如,單一核心中央處理器單元(CPU))、多核心處理器(如,多核心CPU)等)、分配在伺服器架之多伺服器上的多重處理器分配在一或更多伺服器架上的多重處理器、CPU及/或位於相同封裝(如,相同積電路(IC)封裝或在兩或更多分開外殼中等)的FPGA本地。
於此所述之機器可讀指令可以被儲存為壓縮格式、加密格式、分段格式、編譯格式、可執行格式、套裝格式等之一或更多。於此所述之機器可讀指令可以被儲存為資料或資料結構(如,作為指令的部分、碼、碼表示法等),其可以被利用以建立、製造、及/或生產機器可執行指令。例如,機器可執行指令可以被分段並儲存在位於網路或網路集合(如,於雲端、邊裝置中等)的相同或不同位置的一或更多儲存裝置及/或計算裝置(如,伺服器)中。機器可讀指令可能需要一或更多的安裝、修改、調適、更新、組合、增補、組態、解密、解壓縮、解封、分配、重指派、編譯等,以使之可以為計算裝置及/或其他機器所直接可讀、可解譯、及/或可執行。例如,機器可讀指令可以儲存在多重部分,這些可以被個別壓縮、加密、及/或儲存在分開計算裝置上,其中當這些部分被解密、解壓縮、及/或組合形成一組實施一或更多操作的機器可執行指令時,其可以一起形成如在此所述的程式。
在另一例子中,機器可讀指令可以被以一狀態儲存,其中它們可以為處理器電路所讀取,但需要額外的程式館(如,動態鏈結程式館(DLL))、軟體開發套件(SDK)、應用程式介面(API)等,以在特定計算裝置或其他裝置上執行該機器可讀指令。在另一例子中,機器可讀指令及/或對應程式可以整體或部分被執行之前,機器可讀指令可能需要被組態(如,設定儲存、資料輸入、網路位址記錄等)。因此,如於此所用,機器可讀媒體可能包含機器可讀指令及/或程式,而不管該機器可讀指令及/或程式被儲存或靜止或在中轉時的特定格式或狀態。
於此所述之機器可讀指令可以為任何過去、現在、或未來指令語言、劇本式語言、程式語言等所表示。例如,機器可讀指令可以使用以下的任一語言加以表示:C、C++、Java、C#、Perl、Python、JavaScript、超文件標示語言(HTML)、結構化查詢語言(SQL)、Swift等。
如上所述,圖19及/或20的示範操作可以使用儲存於一或更多非暫態電腦及/或機器可讀媒體上的可執行指令(如,電腦及/或機器可讀指令)加以實施,該可讀媒體係例如光儲存裝置、磁儲存裝置、HDD、快閃記憶體、唯讀記憶體(ROM)、CD、DVD、快取、任何類型的RAM、暫存器、及/或任何其他儲存裝置或儲存碟片,其中,在任何持續時間內(如,延長時間段、永久、或簡短瞬間、暫時緩衝、及/或快取資訊)儲存有資訊。如於此所用,用語非暫態電腦可讀媒體及非暫態電腦可讀儲存媒體被特別界定以包含任何類型的電腦可讀儲存裝置及/或儲存碟片,並排除傳遞信號及排除傳輸媒體。
“包括”及“包含”(及所有其形式與時態)在此被使用為開放端用語。因此,只要請求項使用任何形式之“包括”或“包含”(如,包含、包括、包含、包括、具有等)作為前言或在任何類型內的請求項引用,可以了解的是也可以出現有額外元件、條件等仍在對應請求項或引用的範圍內。如於此所用,當用語“至少”被使用作為過渡用語,如作為請求項前言時,它如同用語“包含”及“包括”為開放式般地也是開放式。當使用用語“及/或”於例如A、B、及/或C的形式時,表示A、B、C的子集的任意組合,如(1)單獨A、(2)單獨B、(3)單獨C、(4)A與B、(5)A與C、(6)B與C、或(7)A與B及C。在此所用,在描述結構、構件、項目、物件及/或事項的上下文中,片語“A與B的至少之一”係想要表示包含(1)至少一A、(2)至少一B、(3)至少一A與至少一B的任一的實施方式。類似地,如於此所用,在描述結構、構件、項目、物件、及/或事項的上下文中,片語“A或B的至少之一”係想要表示以下任一的實施方式:(1)至少一A、(2)至少一B、或(3)至少一A及至少一B。如於此所用,描述程序、指令、動作、活動及/或步驟的實行或執行的上下文中,片語“至少一A與B”係想要表示以下任一的實施方式:(1)至少一A、(2)至少一B、或(3)至少一A及至少一B。類似地,如於此所用,在描述程序、指令、動作、活動、及/或步驟的實行或執行的上下文中,片語“至少一A或B”係想要表示以下任一的實施方式:(1)至少一A、(2)至少一B、或(3)至少一A與至少一B。
如於此所用,單數參考(如,“一”、“一”、“第一”、“第二”等)並不排除多數。如於此所用的用語“一”或“一”物件表示一或更多該物件。用語“一”(或“一”)、“一或更多”、及“至少一”係在此可交換使用。再者,雖然個別列出,但多數手段、元件或方法動作可以為相同實體或物件所實施。另外,雖然個別特性可以包含在不同例子或請求項中,但它們也可能組合,包含在不同例子或請求項中並不暗示特性的組合並不可行及/或不利。
圖19為一流程圖,代表可以為處理器電路所執行及/或樣例化的示範機器可讀指令及/或示範操作1900,以識別及收集針對各種目標平台目標最佳化的模型的集合間的類似及/或不同特性。圖19的機器可讀指令及/或操作1900開始於方塊1905,其中,差異確定器電路1806接收圖18的輸入資料集1802供處理。
如於圖19所例示,在方塊1905,差異確定器電路1806接收資料集(如,來自圖18的輸入資料集1802)供處理。在此所揭露的例子中,資料集包含最佳化模型,然而,在其他例子中,資料集可以被組態以包含候選特性、平台度量等。
在方塊1910,差異確定器電路1806檢查在方塊1905中接收的示範資料集(如,來自圖18的輸入資料集1802)內所包含的模型是否針對相同目標硬體最佳化。在各種模型被彼此相比較之前,差異確定器電路1806檢查用於該等模型的目標硬體匹配。如果差異確定器電路1806針對相同目標硬體建立最佳化的模型,則程序前進至方塊1915。然而,如果差異確定器電路1806確定模型全部並未針對相同目標硬體最佳化,則程序移回至開始處。
在方塊1915,差異確定器電路1806識別出被接收供在方塊1905處理的各個模型間之特性差異。在此所揭露的例子中,所接收供在方塊1905中處理的示範資料集包含各種模型,各個模型被針對相同目標硬體平台上的不同目標加以最佳化。因此,差異確定器電路1806藉由比較在各個模型中出現的特性名單並選擇未出現在所有模型中的特性,而識別出在各個模型間之特性差異。例如,當在以準確度為選定目標的模型出現但在以效能為選定目標的模型並未出現的某些特性係為差異確定器電路1806所識別。
在方塊1920,示範類似性確定器電路1808執行類似於示範差異確定器電路1806的程序,然而,在各個模型間之特性類似性被識別出。例如,在以準確度為選擇目標的模型出現及在以效能為選擇目標的模型也出現的某些特性係為類似性確定器電路1808所識別。
在方塊1925,示範特性收集器電路1810聚集由示範差異確定器電路1806及示範類似性確定器電路1808所識別的特性成為單一集合。在此所揭露的例子中,特性收集器電路1810可以輸出聚集特性集。
圖20為一流程圖,代表可以為處理器電路所執行及/或樣例化的示範機器可讀指令及/或示範操作2000,以根據目標硬體平台的現行狀態及/或模型利用度量,動態選擇及/或調整最佳化模型供使用。圖20的機器可讀指令及/或操作2000開始於方塊2002,其中,服務品質(QoS)取樣器電路1816取樣硬體平台的現行狀態。
如於圖20所例示,在方塊2005,QoS取樣器電路1816取樣硬體平台的現行狀態。例如,QoS取樣器電路1816可以確定該硬體平台現行正反應於來自應用的高優先請求。
在方塊2010,QoS選擇器電路1818根據為QoS取樣器電路1816在方塊2005中所確定的硬體平台的現行狀態(如,現正反應於來自應用的高優先請求),選擇要優先化的服務品質(QoS)目標(如,成本、準確度、效能等)。例如,如果QoS取樣器電路1816建立該硬體平台現正反應於來自應用的高優先請求,則QoS選擇器電路1818可以選擇準確度作為QoS目標的最高優先。
在方塊2015,QoS選擇器電路1818排序模型的集合,使得每一模型根據在方塊2010中所選擇QoS優先目標,針對不同QoS目標加以最佳化。在此所揭露的例子中,QoS選擇器電路1818可以根據用以最大化供優先化的選擇QoS目標的能力,來以下降順序排序模型集合。
在方塊2020,QoS選擇器電路1818檢查看是否(如,根據最大化供優先化的選擇QoS目標的能力排序的)排序模型名單為空的。如果QoS選擇器電路1818確定名單為空的,則程序回到方塊2005。然而,如果QoS選擇器電路1818確定名單不是空的,則程序向前移動至方塊2025。
在方塊2025,模型排程器電路1820選擇將滿足供優先化的選擇QoS目標要求的模型,供目標硬體平台所使用。在此所揭露的例子中,因為最佳化模型名單係根據滿足選擇QoS優先目標的能力,以下降順序排序,所以,在名單中的第一模型被選擇供使用。
在方塊2030,模型排程器電路1820確定選擇模型是否在目標硬體平台上得到低利用度量。如果模型排程器電路1820確定該模型確實具有低利用度量,則程序移動至方塊2035。然而,如果模型排程器電路1820確定選擇模型並未在目標平台上得到低利用度量,則程序結束。
在方塊2035,在確定選擇模型在目標硬體平台上得到低利用度量後,模型排程器電路1820將該現正使用的模型由排序模型的名單中移除。然後,程序回到方塊2020,其中,QoS選擇器電路1818檢查看是否在排序模型名單為空的。
圖21為被建構以執行及/或樣例化圖19-20的機器可讀指令及/或操作的示範處理器平台2100的方塊圖,以實施模型訓練電路1804、模型管理電路1814、及/或大體來說,圖18的深度學習(DL)模型管理系統1800。處理器平台2100可以例如是伺服器、個人電腦、工作站、自學習機器(如,類神經網路)、行動裝置(如,蜂巢手機、智慧手機、如iPad TM的平板)、個人數位助理(PDA)、網際網路設施、DVD播放器、CD播放器、數位視訊記錄器、藍光碟機、遊戲平台、個人視訊記錄器、機上盒、頭戴機(如,擴增實境(AR)頭戴機、虛擬實境(VR)頭戴機等)、或其他穿戴裝置、或任何其他類型的計算裝置。
處理器平台2100的例示例子包含處理器電路2112。處理器電路2112的例示例子為硬體。例如,處理器電路2112可以為一或更多來自任何想要系列或製造商的積體電路、邏輯電路、FPGA、微處理器、CPU、GPU、DSP、及/或微控制器所實施。處理器電路2112可以為一或更多半導體為基(如,矽為基)裝置所實施。在此例子中,處理器電路2112實施示範模型訓練電路1804(包含示範差異確定器電路1806、示範類似性確定器電路1808、及示範特性收集器電路1810)及示範模型管理電路1814(包含示範服務品質(QoS)取樣器電路1816、示範QoS選擇器電路1818、及示範模型排程器電路)。
處理器電路2112的例示例子包含本地記憶體2113(如,快取、暫存器等)。處理器電路2112的例示例子透過匯流排2118與包含揮發記憶體2114及非揮發記憶體2116的主記憶體通訊。揮發記憶體2114可以為同步動態隨機存取記憶體(SDRAM)、動態隨機存取記憶體(DRAM)、RAMBUS®動態隨機存取記憶體(RDRAM®)、及/或任何其他類型RAM裝置所實施。非揮發記憶體2116可以為快閃記憶體及/或任何其他想要類型的記憶體裝置所實施。對主記憶體2114、2116的存取的例示例子係為記憶體控制器2117所控制。
處理器平台2100的例示例子也包含介面電路2120。介面電路2120可以為依據任何類型介面標準以硬體加以實施,介面標準係例如乙太介面、通用串列匯流排(USB)介面、藍牙®介面、近場通訊(NFC)介面、週邊組件互連(PCI)介面、及/或快速週邊組件互連(PCIe)介面。
在所例示例子中,一或更多輸入裝置2122被連接至介面電路2120。輸入裝置2122允許使用者以將資料及/或命令輸入至處理器電路2112。輸入裝置2122可以為例如音訊感應器、麥克風、攝影機(靜態或視訊)、鍵盤、按鈕、滑鼠、觸控螢幕、軌跡墊、軌跡球、等電裝置、及/或語音辨識系統所實施。
一或更多輸出裝置2124同時也連接至例示例子的介面電路2120。輸出裝置2124可以例如為顯示裝置(如,發光二極體(LED)、有機發光二極體(OLED)、液晶顯示器(LCD)、陰極射線管(CRT)顯示器、面內切換(IPS)顯示器、觸控螢幕等)、觸覺輸出裝置、印表機、及/或喇叭所實施。介面電路2120的例示例子因此典型包含圖形驅動器卡、圖形驅動器晶片、及/或如GPU的圖形處理器電路。
介面電路2120的例示例子也包含例如發射器、接收器、收發器、數據機、住宅閘道、無線接取點、及/或網路介面的通訊裝置,以藉由網路2126促成與外部機器(如,任何類型的計算裝置)的資料交換。通訊也可以是例如藉由乙太連接、數位用戶線(DSL)連接、電話線連接、同軸電纜系統、衛星系統、現場線無線系統、蜂巢式電話系統、光連接等。
處理器平台2100的例示例子也包含一或更多大量儲存裝置2128,以儲存軟體及/或資料。此大量儲存裝置2128的例子包含磁儲存裝置、光儲存裝置、軟碟機、HDD、CD、藍光碟機、獨立磁碟冗餘陣列(RAID)系統、固態儲存裝置,例如快閃記憶體裝置及/或SSD、及DVD機。
可以為圖19-20的機器可讀指令所實施的機器可執行指令2132可被儲存在大量儲存裝置2128、在揮發記憶體2114、在非揮發記憶體2116、及/或在如CD或DVD的可移除非暫態電腦可讀儲存媒體上。
由以上,將了解已經揭露用於動態XPU硬體感知深度學習(DL)模型管理的示範系統、方法、設備、及製品。所揭露的系統、方法、設備、及製品藉由允許快速發現新硬體特性,而改良了使用計算裝置的效率,這加速了新人工智慧(AI)產品及/或特性的上市時間並透過新發現特性的應用,而加強了計算裝置的效能改良手法。所揭露系統、方法、設備、及製品因此有關於在操作如電腦或其他電子及/或機械裝置的機器時的一或更多改良。 資料加強的自動模型產生的方法與設備
機器學習為重要致能技術,以正在人工智慧中進行革新,在例如,物件檢測、影像分類、語音辨識、自然語言處理等的領域中,真正完成顯著進步。當利用使用機器學習建立的模型時,使得輸出可以根據輸入加以產生。當建立機器學習模型時,類神經架構搜尋促使各種架構被搜尋。
類神經架構搜尋(NAS)為一種手法,用以探索不同機器學習演算法,以解決機器學習工作。NAS演算法採用大量資源(如,計算資源、時間資源、能量資源等),以識別出可接受的架構。在探索期間,多數的這些資源都藉由檢測非最佳架構組態而被用掉。現存NAS演算法並未對選擇一特定架構所作的決定提出清楚解釋,並且,此等演算法並未從有關先前發現(如,操作順序、FLOP等)或目標硬體能力所收集資料中取得好處。此資訊典型被丟棄並無利於NAS演算法的未來應用。
由於工作的複雜性,NAS解決方案傾向於忘記由一運行至下一運行的任何先見之明。在先前解決方案中的初始條件/組態係無關於先前使用的任何其他組態。
現存NAS手法並未再使用有關於經由NAS識別出的模型的先前執行資料。即,現存手法並未從模型將執行的工作有關(如,檢測、分段等)的收集知識中獲得益處。當執行NAS時,於尋找最佳模型時,現存手法每次都由暫用記憶體開始。當移動至不同工作時,很多現存NAS手法同時需要大量的重新組態,並且,此等手法並未總結類神經網路架構搜尋程序。
在此所揭露的示範手法分析技術現況與出現的工作負載並收集有關該等模型的包含效能、操作順序、尺寸、每秒浮點運算(FLOPS)等的歷史資訊,以供各個操作。
在此所揭露的例子中,使用者提供工作(目標辨識、分段等)及目標(準確性、潛時、混合等),及NAS系統選擇包含針對該工作、目標、及在一些例子中的模型將執行於其上的目標硬體的最佳組態的開始超參數/組態資訊。
所收集執行及/或效能資訊提供搜尋滿足該等要件的架構的初始條件的先見之明及導引。系統同時也收集目標硬體資源,使得系統為硬體感知並允許系統精鍊該特定目標硬體。例如,如果核心並未良好執行(如,選定目標硬體的潛時超出潛時的臨限量),則系統可以避免詳述7×7卷積核心。
在此所揭露的示範手法提供使用者該產生模型並當選擇操作,提供這些選擇後的推理。決定是根據收集的歷史資料及由知識建築器(KB)取得的工作知識。提供決定推理可以造成用於未來HW改良(如,最佳化特定核心、記憶體BW等)的先見之明。
圖22為依據本案教示所實施的用於資料加強自動模型產生的示範系統的方塊圖。圖22的示範系統2200包含:知識建築器電路2205,其接收使用者輸入2210;及模型建築器電路2215,其建築並提供模型給目標硬體2220。
圖22的示範系統2200呈現點到點的解決方案,其由使用者接收資訊(目標、工作、目標HW),使用知識庫,分析此資訊並建築用於NAS手法的搜尋空間及初始組態的建議。該手法係與予以被使用的NAS手法無關,促使使用者決定將接收建議組態的技術現況手法。
示範使用者輸入2210包含資訊,例如包括機器學習模型的目標、為機器學習模型所將要執行的工作、及選用地,該機器學習模組所將要執行於其上的目標硬體的一或更多特徵。工作(物件辨識、分段等)將包含輸入層要求、輸出層要求、及資料要求。圖22的系統為足夠彈性,使得使用者可以提供用以影響模型產生的資訊(如,藉由指明現行工作是否類似另一工作、及/或藉由指明額外層(未在知識庫中,或相關於不同工作),以包含在搜尋空間中)。
圖22的知識建築器電路2205可以被例如執行指令的中央處理單元的處理器電路所樣例化(如,建立實例、帶入任何長度的時間、具體化、實施等)。額外或替代地,圖22的知識建築器電路2205可以為ASIC或被建構以執行對應該指令的操作的FPGA所樣例化(如,建立指令、帶入任何時間長度、具體化、實施等)。應了解的是,部分或所有圖22的電路可以因此被同時或不同時(及/或藉由不同硬體電路)樣例化。部分或所有電路可以被例如在硬體上同時執行及/或於硬體上串列執行一或更多線程中被樣例化。再者,在一些例子中,部分或所有圖22的電路可以為一或更多執行於微控制器上的虛擬機器及/或容器所實施。
圖22的示範知識建築器電路2205的例示例子包含請求存取器電路2230、硬體資料協調電路2235、工作資料協調電路2240、及知識資料儲存2245。示範知識建築器電路2205將用於模型與硬體的資訊歸檔至知識資料儲存2245。如果硬體並未在知識資料儲存2245中已知,則使用者能使得該系統執行目標硬體2220,以抽取效能度量。取得此效能度量的報告並將之加入至知識資料儲存2245,以建立工作知識。如果工作並未在知識資料儲存2245中,則工作資料協調電路2240為新工作建立工作知識。圖2例示用以建立或更新知識資料儲存2245的程序。
在此所揭露的例子中,知識建築器電路2205的知識資料儲存2245可以預填充技術現況(SOTA)或客製模型及硬體組態。另外,知識資料儲存2245可以在任何時間,根據例如,由目標硬體2220所收集的統計資料加以更新。在此所揭露的例子中,知識資料儲存2245以工作區分這些模型。為了建築工作知識,模型資訊係由知識資料儲存2245檢索出特定工作及由該等模型抽出的特性。在新或客製工作的情況中,類似工作/模型係根據使用者輸入加以檢索。這些特性包含但並不限於用以訓練該模型的框架、HW規格及包含HW遙測的用於映射模型的任何資訊(潛時等)、效能目標、操作順序、FLOP數、所用資料集、層數等。這些特性然後可以以硬體特性、目標等加以排名。所抽取與排名的特性被認為是工作知識,其然後可以被歸檔於知識資料儲存2245中,供未來使用。
圖22的示範請求存取器電路2230的例示例子接收產生模型以執行選擇工作的請求。在此所揭露的例子中,為請求存取器電路2230所接收的使用者輸入2210包含資訊,包括有例如機器學習模型的目標、予以為機器學習模型所執行的工作、及在一些例子中,機器學習所將要執行的目標硬體的一或更多特徵。該請求可以被格式化為例如在網頁伺服器所接收的請求、格式化為結構資料格式的請求(如,JavaScript物件表示法(JSON)格式、可延伸標示語言(XML)格式等)。示範請求存取器電路2230經由硬體資料協調電路2235存取硬體資料協調資訊及經由工作資料協調電路2240存取工作資料協調資訊。所存取資訊(如果有的話)及請求被提供至模型建築器電路2215的搜尋空間管理電路2260。
在一些例子中,設備包含存取一請求的手段。例如,該存取手段可以為請求取存器電路2230所實施。在一些例子中,請求存取器電路2230可以為例如圖26的示範處理器電路2612的處理器電路所樣例化。例如,請求存取器電路2230可以為例如執行由圖24的至少方塊2410所實施的機器可執行指令的圖48的示範通用處理器電路4800所樣例化。在一些例子中,請求存取器電路2230可以為ASIC或建構以執行對應於機器可讀指令的操作的圖49的FPGA電路4900所實施的硬體邏輯電路所樣例化。額外或替代地,請求存取器電路2230可以為硬體、軟體、及/或韌體的任何其他組合所樣例化。例如,請求存取器電路2230可以為被建構以執行部分或所有機器可讀指令及/或執行對應於機器可讀指令但不執行軟體或韌體的部分或全部操作的至少一或更多硬體電路(如,處理器電路、分立及/或整合類比及/或數位電路、FPGA、特殊應用積體電路(ASIC)、比較器、運算放大器(op-amp)、邏輯電路等)所實施,但其他結構也是適用。
圖22的示範硬體資料協調電路2235的例示例子確定在知識資料儲存2245中是否出現有用於被選擇硬體(如,在為請求存取器電路2230所存取的請求中所識別出的選擇硬體)的任何先前知識。如果對選擇硬體沒有任何知識為已知,則示範硬體資料協調電路2235將該選擇硬體的識別加入至知識資料儲存2245。該硬體的識別促使與選擇硬體相關的後續效能度量被以有組織方式儲存在知識資料儲存2245中。在一些例子中,選擇硬體的識別可以在模型建立前被省略並且可以當效能度量被執行效能統計集合電路2285所提供至知識資料儲存時被執行。
圖22的示範工作資料協調電路2240的例示例子確定是否有任何工作資訊為選擇工作所用。如果沒有先前知識可供選擇工作所用,則示範工作資料協調電路2240將選擇工作的識別加入至知識資料儲存2245。選擇工作的識別促使有關於選擇工作的後續效能度量被以有組織方式儲存在知識資料儲存2245中。在一些例子中,選擇工作的識別可以在模型建立前被省略,並可以當效能度量被執行效能統計集合電路2285所提供至知識資料儲存時被執行。
在一些例子中,設備包含產生工作知識的手段。例如,產生工作知識的手段可以為工作資料協調電路2240所實施。在一些例子中,示範工作資料協調電路2240可以為例如圖26的示範處理器電路2612的處理器電路所樣例化。例如,示範工作資料協調電路2240可以為例如執行由圖24的至少方塊2420、2435、2425所實施的機器可執行指令的圖48的示範通用處理器電路4800所樣例化。在一些例子中,示範工作資料協調電路2240可以為ASIC或建構以執行對應於機器可讀指令的操作的圖49的FPGA電路4900所實施的硬體邏輯電路所樣例化。額外或替代地,示範工作資料協調電路2240可以為硬體、軟體、及/或韌體的任何其他組合所樣例化。例如,示範工作資料協調電路2240可以為被建構以執行部分或所有機器可讀指令及/或執行對應於機器可讀指令但不執行軟體或韌體的部分或全部操作的至少一或更多硬體電路(如,處理器電路、分立及/或整合類比及/或數位電路、FPGA、特殊應用積體電路(ASIC)、比較器、運算放大器(op-amp)、邏輯電路等)所實施,但其他結構也是適用。
圖22的示範知識資料儲存2245的例示例子係為任何記憶體、儲存裝置及/或用以儲存資料的儲存碟片,例如,快閃記憶體、磁媒體、光媒體、固態記憶體、硬體機、大姆哥隨身碟等所實施。再者,儲存於示範知識資料儲存2245中的資料可以為任何資料格式,例如,二進制資料、逗號定界資料、欄標定界資料、結構化查詢語言(SQL)結構等。雖然在所例示例子中,知識資料儲存2245係被例示為單一裝置,但示範知識資料儲存2245及/或任何在此所述的其他資料儲存裝置可以為任何其他數量及/或類型的記憶體所實施。在圖22的例示例子中,示範知識資料儲存2245儲存硬體及/或工作知識。
圖22的模型建築器電路2215可以為例如執行指令的中央處理單元的處理器電路所樣例化(如,建立實例、帶入任意長度的時間、具體化、實施等)。額外或替代地,圖22的模型建築器電路2215可以為ASIC或被建構以執行對應指令的操作的FPGA所樣例化(如,建立實例、帶入任意長度的時間、具體化、實施等)。如上所述,應了解圖22的部分或所有電路可以因此以同時或不同時(及/或以不同硬體電路)加以樣例化。部分或全部電路可以被樣例化為例如同時執行在硬體上及/或串列執行在硬體上的一或更多線程。再者,在一些例子中,部分或全部圖22的電路可以為執行在微處理器上的一或更多虛擬機器及/或容器所實施。
圖22的示範模型建築器電路2215的例示例子包含:搜尋空間管理電路2260、定錨點插入器電路2265、類神經架構搜尋電路2270、及模型輸出器電路2275。模型建築器電路2215係負責抽取於知識資料儲存中的先見之明並執行類神經架構搜尋以識別出最佳模型。首先,示範搜尋空間管理電路2260建立一搜尋空間。此搜尋空間包含由來自知識資料儲存的工作知識所提供的操作、這些操作的變體、及如果使用者指明的話的額外層。類神經架構搜尋電路2270執行搜尋,其係為用於該目標、工作、HW等的搜尋空間管理電路2260所識別出的組態加以初始化。定錨點被定錨點插入器電路2265所插入至選擇的NAD演算法中,以捕捉在此程序期間所作出的決定。工作知識被併入類神經架構搜尋電路2270中的訓練環路中,以通知決定並導引搜尋。在訓練期間,歷史決定、置信等級、及由工作知識取得之知識資料儲存為基推薦係被用以導引類神經架構搜尋。
在一些例子中,該設備包含用以建立搜尋空間的手段。例如,該建立手段可以為示範搜尋空間管理電路2260所實施。在一些例子中,示範搜尋空間管理電路2260可以為例如圖26的示範處理器電路2612的處理器電路所樣例化。例如,示範搜尋空間管理電路2260可以為執行例如為圖24的至少方塊2427、2440所實施的機器可執行指令的圖26的示範通用處理器電路2600所樣例化。在一些例子中,示範搜尋空間管理電路2260可以為ASIC或建構以執行對應於機器可讀指令的操作的圖49的FPGA電路4900所實施的硬體邏輯電路所樣例化。額外或替代地,示範搜尋空間管理電路2260可以為硬體、軟體、及/或韌體的任何其他組合所樣例化。例如,示範搜尋空間管理電路2260可以為被建構以執行部分或所有機器可讀指令及/或執行對應於機器可讀指令但不執行軟體或韌體的部分或全部操作的至少一或更多硬體電路(如,處理器電路、分立及/或整合類比及/或數位電路、FPGA、特殊應用積體電路(ASIC)、比較器、運算放大器(op-amp)、邏輯電路等)所實施,但其他結構也是適用。
在一些例子中,該設備包含手段,用以產生機器學習模型。例如,該產生手段可以為示範類神經架構搜尋電路2270所實施。在一些例子中,示範類神經架構搜尋電路2270可以為例如圖26的示範處理器電路2612的處理器電路所樣例化。例如,示範類神經架構搜尋電路2270可以為執行例如由圖24的至少方塊2430、2450所實施的機器可執行指令的圖48的示範通用處理器電路4800所樣例化。在一些例子中,示範類神經架構搜尋電路2270可以為ASIC或建構以執行對應於機器可讀指令的操作的圖49的FPGA電路4900所實施的硬體邏輯電路所樣例化。額外或替代地,示範類神經架構搜尋電路2270可以為硬體、軟體、及/或韌體的任何其他組合所樣例化。例如,示範類神經架構搜尋電路2270可以為被建構以執行部分或所有機器可讀指令及/或執行對應於機器可讀指令但不執行軟體或韌體的部分或全部操作的至少一或更多硬體電路(如,處理器電路、分立及/或整合類比及/或數位電路、FPGA、特殊應用積體電路(ASIC)、比較器、運算放大器(op-amp)、邏輯電路等)所實施,但其他結構也是適用。
在一些例子中,該設備包含插入手段。例如,插入手段可以為示範定錨點插入器電路2265所實施。在一些例子中,示範定錨點插入器電路2265可以例如為圖26的示範處理器電路2612的處理器電路所樣例化。例如,示範定錨點插入器電路2265可以為執行例如為圖24的至少方塊2460所實施的機器可執行指令的圖48的示範通用處理器電路4800所樣例化。在一些例子中,示範定錨點插入器電路2265可以為ASIC或建構以執行對應於機器可讀指令的操作的圖49的FPGA電路4900所實施的硬體邏輯電路所樣例化。額外或替代地,示範定錨點插入器電路2265可以為硬體、軟體、及/或韌體的任何其他組合所樣例化。例如,示範定錨點插入器電路2265可以為被建構以執行部分或所有機器可讀指令及/或執行對應於機器可讀指令但不執行軟體或韌體的部分或全部操作的至少一或更多硬體電路(如,處理器電路、分立及/或整合類比及/或數位電路、FPGA、特殊應用積體電路(ASIC)、比較器、運算放大器(op-amp)、邏輯電路等)所實施,但其他結構也是適用。
在產生模型後,示範模型輸出器電路2275提供用以執行的模型。在一些例子中,在類神經架構搜尋期間所選擇的決定及/或理由係可以相關於所產生模型而可得到。
圖22的目標硬體2220可以藉由例如執行指令的中央處理單元的處理器電路所樣例化(如,建立實例、帶入任意長度的時間、具體化、實施等)。額外或替代地,圖22的目標硬體2220可以為ASIC或被建構以執行對應指令的操作的FPGA所樣例化(如,建立實例、帶入任意長度的時間、具體化、實施等)。如上所述,應了解圖22的部分或所有電路可以因此以同時或不同時(及/或以不同硬體電路)加以樣例化。部分或全部電路可以被樣例化為同時執行在硬體上及/或串列執行在硬體上的一或更多線程。再者,在一些例子中,部分或全部圖22的電路可以為執行在微處理器上的一或更多虛擬機器及/或容器所實施。
圖22的示範目標硬體2220的例示例子包含模型執行電路2280及執行效能統計集合電路2285。圖22的示範模型執行電路2280的例示例子執行為模型輸出器電路2275所提供的模型。
在模型執行電路2280執行模型期間,圖22的示範執行效能統計集合電路2285的例示例子使用被插入定錨點,收集模型執行統計。所收集執行統計被提供至知識資料儲存2245。在此所揭露的例子中,所收集執行統計包含有關定錨點的資訊。包含有關定錨點的資訊促使當產生工作知識時,特定於特別特性的統計被利用。
圖2為利用圖22的示範系統的示範程序流程的方塊圖。當使用者提出產生模型以執行選定工作的請求時,示範程序開始(方塊2310)。所請求模型使用類神經架構搜尋及有關於所選定工作的模型的先前知識加以產生(方塊220)。所產生模型被提供至目標硬體供執行及效能統計的收集(方塊230)。執行特性由模型抽出(方塊240)。被抽出特性根據收集的效能度量加以排名(方塊250)。抽出特性及其相關效能度量被加至知識資料儲存2245(方塊260)。此加入知識可以然後後續被使用於未來模型的產生(方塊220)。
雖然實施示範知識建築器電路2205及/或示範模型建築器電路2215的示範方式係被例示於圖22,但示於圖22中的一或更多元件、程序、及/或裝置可以被組合、細分、重排列、省略、免除、及/或以任何其他方式實施。再者,示範請求存取器電路2230、示範硬體資料協調電路2235、示範工作資料協調電路2240、及/或更大體來說,圖22的示範知識建築器電路2205、及/或示範搜尋空間管理電路2260、示範定錨點插入器電路2265、示範類神經架構搜尋電路2270、示範模型輸出器電路2275、及/或更大體來說,圖22的示範模型建築器電路2215可以為單獨硬體或硬體組合上軟體及/或韌體所實施。因此,例如,示範請求存取器電路2230、示範硬體資料協調電路2235、示範工作資料協調電路2240的任一、及/或更大體來說,圖22的示範知識建築器電路2205、及/或示範搜尋空間管理電路2260、示範定錨點插入器電路2265、示範類神經架構搜尋電路2270、示範模型輸出器電路2275、及/或更大體來說,圖22的示範模型建築器電路2215可以為處理器電路、類比電路、數位電路、邏輯電路、可程式處理器、可程式微控制器、圖形處理單元(GPU)、數位信號處理器(DSP)、特殊應用積體電路(ASIC)、可程式邏輯裝置(PLD)、及/或場可程式邏輯裝置(FPLD),例如,場可程式閘陣列(FPGA)所實施。再者,示範請求存取器電路2230、示範硬體資料協調電路2235、示範工作資料協調電路2240、及/或更大體來說,圖22的示範知識建築器電路2205、及/或示範搜尋空間管理電路2260、示範定錨點插入器電路2265、示範類神經架構搜尋電路2270、示範模型輸出器電路2275、及/或更大體來說,圖22的示範模型建築器電路2215可以包含圖22所例示的元件、程序、及/或裝置之額外或替代的一或更多元件、程序、及/或裝置,及/或可以包含一個以上或全部的所例示元件、程序及裝置。
代表用以實施圖22的知識建築器電路2205及/或示範模型建築器電路2215的示範硬體邏輯電路、機器可讀指令、硬體實施狀態機、及/或其任何組合的流程圖係被顯示於圖24中。該機器可讀指令可以是為處理器電路所執行之一或更多可執行程式或可執行程式之部分,該處理器電路係例如以下配合圖26所討論的示範處理器平台2600中之處理器電路2612及/或以下配合圖48及/或49所討論的示範處理器電路。
代表用以實施圖22的目標硬體2220的示範硬體邏輯電路、機器可讀指令、硬體實施狀態機、及/或其任意組合的流程圖係如圖25所示。該機器可讀指令可以是為處理器電路所執行之一或更多可執行程式或可執行程式之部分,該處理器電路係例如以下配合圖26所討論的示範處理器平台2600中之處理器電路2612及/或以下配合圖48及/或49所討論的示範處理器電路。
圖24及/或25的程式可以被實施為儲存在一或更多非暫態電腦可讀儲存媒體上的軟體,該電腦可讀儲存媒體係例如光碟(CD)、軟碟、硬碟機(HDD)、固態驅動機(SSD)、數位多功能光碟(DVD)、藍光碟、揮發記憶體(如,隨機存取記憶體(RAM)的任意類型等)或與位於一或更多硬體裝置中的處理器電路相關的非揮發記憶體(如,電可抹除可程式唯讀記憶體(EEPROM)、快閃記憶體、HDD、SSD等)中的軟體,但整個程式及/或其部分也可以為處理器電路以外的一或更多硬體裝置所執行,及/或實施於韌體或專用硬體中。機器可讀指令可以被分配於多重硬體裝置及/或為兩或更多硬體裝置(如,伺服器及客戶硬體裝置)所執行。例如,客戶硬體裝置可以是端點客戶硬體裝置(如,與使用者相關的硬體裝置)或中間客戶硬體裝置(如,無線接取網路(RAN))閘道所實施,其可以促成在伺服器與端點客戶硬體裝置間之通訊)。類似地,非暫態電腦可讀儲存媒體可以包含位於一或更多硬體裝置中的一或更多媒體。再者,雖然示範程式為參考圖24所示的流程圖加以描述,但也可以使用很多其他方法以實施示範知識建築器電路2205及/或模型建築器電路2215。例如,這些方塊的執行順序可以改變,及/或部分所述方塊可以被改變、消除、或組合。額外或替代地,任一或所有方塊可以為被結構以執行對應操作而不執行軟體或韌體的一或更多硬體電路(如,處理器電路、分立及/或整合類比及/或數位電路、FPGA、ASIC、比較器、運算放大器(op-amp)、邏輯電路等)所實施。處理器電路可以分配於不同網路位置及/或在單一機器中的一或更多硬體裝置(如,單一核心處理器(如,單一核心中央處理單元(CPU))、多核心處理器(如,多核心CPU)等)、在伺服器框架的多重伺服器分佈的多重處理器、在一或更多伺服器框架分佈的多重處理器的本地、可以是CPU及/或位於相同封裝(如,相同積體電路(IC)封裝或在兩或更多分開外殼中等)中的FPGA。
於此所述之機器可讀指令可以被儲存為壓縮格式、加密格式、分段格式、編譯格式、可執行格式、套裝格式等之一或更多。於此所述之機器可讀指令可以被儲存為資料或資料結構(如,作為指令的部分、碼、碼表示法等),其可以被利用以建立、製造、及/或生產機器可執行指令。例如,機器可執行指令可以被分段並儲存在位於網路或網路集合(如,於雲端、邊裝置等之中)的相同或不同位置的一或更多儲存裝置及/或計算裝置(如,伺服器)中。機器可讀指令可能需要一或更多的安裝、修改、調適、更新、組合、增補、組態、解密、解壓縮、解封、分配、重指派、編譯等,以使之可以為計算裝置及/或其他機器所直接可讀、可解譯、及/或可執行。例如,機器可讀指令可以儲存在多重部分,這些可以被個別壓縮、加密、及/或儲存在分開計算裝置上,其中當這些部分被解密、解壓縮、及/或組合形成一組實施一或更多操作的機器可執行指令時,其可以一起形成如在此所述的程式。
在另一例子中,機器可讀指令可以被以一狀態儲存,其中它們可以為處理器電路所讀取,但需要額外的程式館(如,動態鏈結程式館(DLL))、軟體開發套件(SDK)、應用程式介面(API)等,以在特定計算裝置或其他裝置上執行該機器可讀指令。在另一例子中,機器可讀指令及/或對應程式可以整體或部分被執行之前,機器可讀指令可能需要被組態(如,設定儲存、資料輸入、網路位址記錄等)。因此,如於此所用,機器可讀媒體可能包含機器可讀指令及/或程式,而不管該機器可讀指令及/或程式被儲存或靜止或在中轉時的特定格式或狀態。
於此所述之機器可讀指令可以為任何過去、現在、或未來指令語言、劇本式語言、程式語言等所表示。例如,機器可讀指令可以使用以下的任一語言加以表示:C、C++、Java、C#、Perl、Python、JavaScript、超文件標示語言(HTML)、結構化查詢語言(SQL)、Swift等。
如上所述,圖24及/或25的示範操作可以使用儲存於一或更多非暫態電腦及/或機器可讀媒體上的可執行指令(如,電腦及/或機器可讀指令)加以實施,媒體係例如光儲存裝置、磁儲存裝置、HDD、快閃記憶體、唯讀記憶體(ROM)、CD、DVD、快取、任何類型的RAM、暫存器、及/或任何其他儲存裝置或儲存碟片,其中,在任何持續時間內(如,延長時間段、永久、或簡短瞬間、暫時緩衝、及/或快取資訊)儲存有資訊。如於此所用,用語非暫態電腦可讀媒體及非暫態電腦可讀儲存媒體被特別界定以包含任何類型的電腦可讀儲存裝置及/或儲存碟片,並排除傳遞信號及排除傳輸媒體。
“包括”及“包含”(及所有其形式與時態)在此被使用為開放端用語。因此,只要請求項使用任何形式之“包括”或“包含”(如,包含、包括、包含、包括、具有等)作為前言或在任何類型內的請求項引用,可以了解的是也可以出現有額外元件、條件等仍在對應請求項或引用的範圍內。如於此所用,當用語“至少”被使用作為過渡用語,如作為請求項前言時,它如同用語“包含”及“包括”為開放式般地也是開放式。當使用用語“及/或”於例如A、B、及/或C的形式時,表示A、B、C的子集的任意組合,如(1)單獨A、(2)單獨B、(3)單獨C、(4)A與B、(5)A與C、(6)B與C、或(7)A與B及C。在此所用,在描述結構、構件、項目、物件及/或事項的上下文中,片語“A與B的至少之一”係想要表示包含(1)至少一A、(2)至少一B、(3)至少一A與至少一B的任一的實施方式。類似地,如於此所用,在描述結構、構件、項目、物件、及/或事項的上下文中,片語“A或B的至少之一”係想要表示以下任一的實施方式:(1)至少一A、(2)至少一B、或(3)至少一A及至少一B。如於此所用,描述程序、指令、動作、活動及/或步驟的實行或執行的上下文中,片語“至少一A與B”係想要表示以下任一的實施方式:(1)至少一A、(2)至少一B、或(3)至少一A及至少一B。類似地,如於此所用,在描述程序、指令、動作、活動、及/或步驟的實行或執行的上下文中,片語“至少一A或B”係想要表示以下任一的實施方式:(1)至少一A、(2)至少一B、或(3)至少一A與至少一B。
如於此所用,單數參考(如,“一”、“一”、 “第一”、“第二”等)並不排除多數。如於此所用的用語“一”或“一”物件表示一或更多該物件。用語“一”(或“一”)、“一或更多”、及“至少一”係在此可交換使用。再者,雖然個別列出,但多數手段、元件或方法動作可以為相同實體或物件所實施。另外,雖然個別特性可以包含在不同例子或請求項中,但它們也可能組合,包含在不同例子或請求項中並不暗示特性的組合並不可行及/或不利。
圖24代表可以為處理器電路以實施圖22的示範知識建築器電路及示範模型建築器電路所執行及/或樣例化的示範機器可讀指令及/或示範操作2400的流程圖。圖24的機器可讀指令及/或操作2400開始於方塊2410,其中,請求存取器電路2230接收產生模型,以執行選擇工作的請求(方塊2410)。在此所揭露的例子中,為請求存取器電路2230所接收的使用者輸入2210包含資訊,包括有例如機器學習模型的目標、予以為機器學習模型所執行的工作、及在一些例子中,機器學習所將要執行的目標硬體的一或更多特徵。該請求可以被格式化為例如在網頁伺服器所接收的請求、格式化為結構資料格式的請求(如,JavaScript物件表示法(JSON)格式、可延伸標示語言(XML)格式等)。示範請求存取器電路2230經由硬體資料協調電路2235存取硬體資料協調資訊及經由工作資料協調電路2240存取工作資料協調資訊。所存取資訊(如果有的話)及請求被提供至模型建築器電路2215的搜尋空間管理電路2260。
示範硬體資料協調電路2235確定在知識資料儲存2245中是否出現有用於被選擇硬體的任何先前知識(方塊2412)。如果對選擇硬體沒有任何知識為已知(如,方塊2412回到否的結果),則示範硬體資料協調電路2235將該選擇硬體的識別加入至知識資料儲存2245(方塊2414)。該硬體的識別促使與選擇硬體相關的後續效能度量被以有組織方式儲存在知識資料儲存2245中。在一些例子中,選擇硬體的識別可以在模型建立前被省略並且可以當效能度量被執行效能統計集合電路2285所提供至知識資料儲存時被執行。
示範工作資料協調電路2240確定是否有任何工作資訊為選擇工作所用(方塊2420)。如果沒有先前知識可供選擇工作所用(如,方塊2420回到否的結果),則示範工作資料協調電路2240將選擇工作的識別加入至知識資料儲存2245(方塊2425)。選擇工作的識別促使有關於選擇工作的後續效能度量被以有組織方式儲存在知識資料儲存2245中。在一些例子中,選擇工作的識別可以在模型建立前被省略,並可以當效能度量被執行效能統計集合電路2285所提供至知識資料儲存時被執行。示範搜尋空間管理電路2260根據使用者選擇的可用建築方塊或來自該工作的技術現況架構的建築方塊,建立搜尋空間(方塊2427)。以此方式,搜尋空間被建立,但並不是根據特定先前工作知識(如下,參考方塊2440所述)。在一些例子中,執行使用者選擇可用建築方塊的能力(及/或是否使用該工作的技術現況架構)可以以策略加以組態。
示範NAS搜尋電路2270執行類神經架構搜尋,以使用該搜尋空間產生模型(方塊2430)。在圖24的例示例子中,NAS搜尋電路2270由未初始化狀態開始。即,當執行方塊2430的類神經架構搜尋時,並未使用各種工作及/或有關於將執行的工作的硬體的效能的任何先前知識。
回到方塊2420,如果工作資料協調電路2240確定出現有用於選擇工作的先前知識(如,方塊2420得到是的結果),則示範工作資料協調電路2240建築工作知識(方塊2435)。為了建築工作知識,模型資訊係為工作資料協調電路2240由知識資料儲存2245檢索用於特定工作及特性係由這些模型抽出。在新或客製工作時,類似工作/模型係根據使用者輸入加以檢索。這些特性包含但並不限於被用以訓練模型的框架、硬體規格及/或任何用於映射模型的資訊(如潛時等),包含硬體遙測、效能目標、操作的順序、FLOP數目、所使用資料集、層的數量等。這些特性然後以硬體、目標等排名。由模型所抽出及排名的個別特性係一起被識別為工作知識,其然後被使用以建立搜尋空間。在一些例子中,此工作知識係被歸檔於知識資料儲存2245,以允許萬一相同工作被後續請求時的有效檢索。
示範搜尋空間管理電路2260由先前工作知識建立搜尋空間(方塊2440)。搜尋空間可以例如藉由排名及選擇對目標硬體(及/或類似目標硬體的硬體)的效能有可接受效能層次的先前架構加以建立。在一些例子中,儲存在有關於不同架構及工作的知識資料儲存2245中的效能統計係被比較,以選擇符合臨限效能統計的架構。在一些例子中,選擇所根據的效能統計可以相關於使用者輸入2210,其可以例如指示電源消耗統計是否優先於處理速度統計。
在一些例子中,優先的選擇(如,功能的優選化、效能、電源最佳化等)可以為策略所導引。例如,策略可以為策略提供實體所提供,以控制訓練操作及/或搜尋空間管理的行為。在一些例子中,策略控制有關模型的建立及/或訓練的其他細節,包含例如,不同層次的類神經網路稀疏(如,260%、90%等)、不同層次的準確度(如,三十二位元浮點值、十六位元浮點值、八位元整數值等)。
在一些例子中,策略提供實體可以為圖22的系統的使用者。然而,策略提供實體可以為導引圖22的系統的功能的任何其他實體,包含例如,系統管理者、製造商、裝置提供者等。在一些例子中,策略提供實體可以與使用者分開。在此方式中,使用者可以輸入訓練及/或建立機器學習模型的請求,同時,允許機器學習模型的訓練及/或建立的參數係根據由該策略提供實體所建立的策略。
在一些例子中,策略係為策略提供實體所經由平台信任執行環境(TEE)提供至圖22的系統。然而,策略可以以任何其他方式提供給圖22的系統。
示範NAS搜尋電路2270根據由搜尋空間管理電路2260所產生的搜尋空間,使用類神經架構搜尋,產生模型(方塊2450)。在此方式中,在方塊2450之由NAS搜尋電路2270所執行之類神經架構搜尋根據先前工作知識由初始狀態開始(如,由先前符合效能臨限的架構開始)。
示範定錨點插入器電路2265然後將定錨點插入所產生模型中(方塊2460)。定錨點提供將要為執行效能統計集合電路2285所測量的效能統計的位置。再者,定錨點提供有關該模型的額外資訊的位置及/或該模型可以被捕捉的目標及/或工作。在此所揭露的例子中,定錨點係為所產生模型的被插入中間個別層。在一些例子中,定錨點係在該模型的第一層之前及在最後層之後被加入該模型。在一些其他例子中,定錨點為加入的相鄰(如,前與後)特定類型層(如,卷積層)。
示範模型輸出器電路2275提供所產生模型給目標硬體2220,用於為模型執行電路2280所執行(方塊2470)。在此所揭露的例子中,在被提供給模型執行電路2280之前,模型可以被先儲存在儲存位置(如,伺服器)。在一些例子中,模型執行電路2280可以由該儲存位置或直接收模型輸出器電路2275檢索該模型。圖24的例示例子的程序然後終止,但可以在例如接收後續使用者輸入2210時再執行。
圖25代表可以為處理器電路所執行及/或樣例化以實施圖22的示範目標硬體2220的示範機器的可讀指令及/或示範操作2500的流程圖。圖25的機器可讀指令及/或操作2500開始於方塊2510,其中,模型執行電路2280開始執行由模型輸出器電路2275接收的模型的執行(方塊2510)。在模型執行期間,示範執行效能統計集合電路2285使用被插入定錨點,收集模型執行統計(方塊2520)。所收集執行統計提供給知識資料儲存2245(方塊2530)。在此所揭露的例子中,收集執行統計包含有關定錨點的資訊。當產生工作知識時,包含有關於定錨點的資訊促使特定於特殊特性的統計被利用。
圖26為被建構以執行及/或樣例化圖24及/或25的機器可讀指令及/或操作以實施圖22的系統2200的示範處理器平台2600的方塊圖。處理器平台2600可以例如伺服器、個人電腦、工作站、自學習機器(如,類神經網路)、行動裝置(如,蜂巢手機、智慧手機、如iPad TM的平板)、個人數位助理(PDA)、網際網路設施、DVD播放器、CD播放器、數位視訊記錄器、藍光碟機、遊戲平台、個人視訊記錄器、機上盒、頭戴機(如,擴增實境(AR)頭戴機、虛擬實境(VR)頭戴機等)、或其他穿戴裝置、或其他類型的計算裝置。
處理器平台2600的例示例子包含處理器電路2612。處理器電路2612的例示例子為硬體。例如,處理器電路2612可以為一或更多來自任何想要系列或製造商的積體電路、邏輯電路、FPGA、微處理器、CPU、GPU、DSP、及/或微控制器所實施。處理器電路2612可以為一或更多半導體為基(如,矽為基)裝置所實施。在此例子中,處理器電路2612實施知識建築器電路2205及模型建築器電路2215。在一些例子中,知識建築器電路2205及模型建築器電路2215可以實施在分開處理器平台上。
處理器電路2612的例示例子包含本地記憶體2613(如,快取、暫存器等)。處理器電路2612的例示例子透過匯流排2618與包含揮發記憶體2614及非揮發記憶體2616的主記憶體通訊。揮發記憶體2614可以為同步動態隨機存取記憶體(SDRAM)、動態隨機存取記憶體(DRAM)、RAMBUS®動態隨機存取記憶體(RDRAM®)、及/或任何其他類型RAM裝置所實施。非揮發記憶體2616可以為快閃記憶體及/或任何其他想要類型的記憶體裝置所實施。對主記憶體2614、2616的存取的例示例子係為記憶體控制器2617所控制。
處理器平台2600的例示例子也包含介面電路2620。介面電路2620可以為依據任何類型介面標準以硬體加以實施,介面標準係例如乙太介面、通用串列匯流排(USB)介面、藍牙®介面、近場通訊(NFC)介面、週邊組件互連(PCI)介面、及/或快速週邊組件互連(PCIe)介面。
在所例示例子中,一或更多輸入裝置2622被連接至介面電路2620。輸入裝置2622允許使用者以將資料及/或命令輸入至處理器電路2612。輸入裝置2622可以為例如音訊感應器、麥克風、攝影機(靜態或視訊)、鍵盤、按鈕、滑鼠、觸控螢幕、軌跡墊、軌跡球、等電裝置、及/或語音辨識系統所實施。
一或更多輸出裝置2624同時也連接至例示例子的介面電路2620。輸出裝置2624可以例如為顯示裝置(如,發光二極體(LED)、有機發光二極體(OLED)、液晶顯示器(LCD)、陰極射線管(CRT)顯示器、面內切換(IPS)顯示器、觸控螢幕等)、觸覺輸出裝置、印表機、及/或喇叭所實施。介面電路2620的例示例子因此典型包含圖形驅動器卡、圖形驅動器晶片、及/或如GPU的圖形處理器電路。
介面電路2620的例示例子也包含例如發射器、接收器、收發器、數據機、住宅閘道、無線接取點、及/或網路介面的通訊裝置,以藉由網路2626促成與外部機器(如,任何類型的計算裝置)的資料交換。通訊也可以是例如藉由乙太連接、數位用戶線(DSL)連接、電話線連接、同軸電纜系統、衛星系統、現場線無線系統、蜂巢式電話系統、光連接等。
處理器平台2600的例示例子也包含一或更多大量儲存裝置2628,以儲存軟體及/或資料。此大量儲存裝置2628的例子包含磁儲存裝置、光儲存裝置、軟碟機、HDD、CD、藍光碟機、獨立磁碟冗餘陣列(RAID)系統、固態儲存裝置,例如快閃記憶體裝置及/或SSD、及DVD機。
可以為圖24及/或25的機器可讀指令所實施的機器可執行指令2632可以被儲存在大量儲存裝置2628、在揮發記憶體2614、在非揮發記憶體2616、及/或在如CD或DVD的可移除非暫態電腦可讀儲存媒體上。
由以上,將了解已經揭露示範系統、方法、設備、及製品,以使得類神經架構搜尋根據被建立以執行特定工作的模型的先前知識加以執行。所揭露的系統、方法、設備、及製品藉由避免重新發現為類神經架構搜尋所初始發現但對於想要工作並不動作良好特性,而改良了使用計算裝置的效率。藉由根據先前知識開始,可以更快速識別出較高執行模型。這不但減少目標硬體的資源消耗(如,可開發更有效率模型),同時,也減少產生模型的系統上的資源消耗(如,可以更快速/有效地發現較高執行模型)。所揭露系統、方法、設備、及製品因此有關於在操作如電腦或其他電子及/或機械裝置的機器時的一或更多改良。 條件性啟動計算系統中的大核心的方法與設備
一些計算系統包含一或更多大裝置處理器(如,核心)及/或一或更多小裝置處理器(如,原子)以執行操作。大裝置處理器可以包含一或更多核心及/或處理單元,而小裝置處理器可以具有一或兩核心。另外,大裝置處理器較小裝置處理器更有能力及/或消耗更多的空間。大裝置處理器可以處置高效能應用,而小裝置處理器提供較低能力、較小佔用面積、及相較於大裝置處理器提供更適度的效能。小裝置處理器的例子包含英特爾®Atom®、英特爾®Quark®SoC、LITTLE核心等。
硬體為基微碼(同時也稱為硬體層次指令)可以被實施於計算系統(如,電腦、膝上型電腦、行動電話、伺服器、邊裝置、雲端為基裝置等)的硬體中,以組態該計算系統的硬體。在一些例子中,此等硬體層次指令(如,uCode、XuCode等)可以控制包含處理裝置的硬體的操作。如果計算裝置包含多重處理裝置(如,大核心、小核心、原子、中央處理單元(CPU)插槽、CPU、槽等),則微碼可以促成多重處理裝置的操作及/或組態。
當架構的數量及/或類型增加時,在規劃指令中的困難增加,因為它們可能需要用於各個類型架構的指令的備用組態。例如,指令可以提供2724位元指令,其被建構以為可以處置2724位元指令的硬體所執行。類似地,具有可以處置64位元指令的多重較小處理單元的系統將不能執行超出64位元的指令。
於此所揭露的例子提供軟體及/或韌體為基的應用程式介面(API),以處理來自執行於作業系統、虛擬機器管理器(VMM)等的應用的指令並指示微碼以組態處理單元能夠執行指令,而不管指令係如何地被建構。例如,如果512位元指令由應用取得,則在此所揭露的例子可以組態八個64位元處理單元,以將512位元指令細分為八個64位元指令、並聯執行該64位元指令、並組合這些結果,藉以操作為條件性啟動大核心(如,能處置512位元指令的大核心)。以此方式,應用可以產生一指令並且在此所揭露的例子可以確定是否及/或如何執行指令,給定指令係透過該計算系統的侷限執行。
示範揭露API由OS/VMM取得ISA指令。ISA指令為一指令,其呼叫多重處理裝置以操作為單一大處理裝置,其能處置ISA指令者。當揭露API取得ISA請求以執行來自應用的ISA指令(如,中斷),則API首先確定是否處理單元能夠及/或可用以執行指令,同時,符合對應於該等指令的服務層級協議(SLA)、潛時要求、容許要求等。如果API確定處理單元能夠並可用以執行指令同時符合這些要求,則API指示微碼以使得處理單元依據這些要求執行指令。如果API確定處理單元能夠但不可用以執行指令,則API可以指示(1)(如,應用),何時處理單元為可用(如,當現行實施工作負載將接近完成),及/或(2)大核心可以被仿真,但要求可能不符合。以此方式,應用可以確定是否等待執行指令,以符合要求,進行仿真但不符一或更多要求,或者,不以對應處理元件執行該指令。如果API確定處理單元未能執行該指令,則API指示(如,對該應用),則該指令不能被執行。
圖27為示範計算裝置2700的方塊圖。示範計算裝置2700包含示範硬體2702,其包含一或更多示範核心2704、一或更多小裝置處理器2706、示範微碼處理電路2711、及示範暫存器2713。示範計算裝置2700更包含示範BIOS 2708,其包含示範ISA管理電路2710。示範計算裝置2700更包含示範作業系統(OS)/虛擬機器管理器(VMM)2707及示範應用(APPS)2714。
圖27的示範硬體2702執行對應於來自應用2714、OS/VMM 2722、及/或BIOS 2708的指令之工作。示範硬體2702可以包含處理器資源(如,示範處理器核心2704及/或小裝置處理器2706的記憶體、暫存器及/或邏輯電路),以執行指令,以實施示範應用2714的指令及/或存取來自記憶體的資料。
圖27的示範處理器核心2704及/或示範小裝置處理器2706執行來自應用(如,藉由讀取及/或寫入資料)的指令(如,工作負載)。在一或更多核心2704上執行的工作可能相較於小工作被執行在一或更多小裝置處理器2706上造成不同數量的完成時間及/或不同的效率。例如,當執行電腦界限工作時,有關於每週期迭代(IPC)比,一或更多核心2704可能較有效率。另外,一或更多核心2704可以具有較小裝置處理器2706有更大快取,供執行快取界限工作。一或更多小裝置處理器2706可能對應於等待記憶體的更多管線暫停時間的記憶體界限工作更有效率及/或可能對於I/O界限工作更有效率,因為IO界限工作並未取決處理操作速度。雖然示範硬體2702包含核心2704及小裝置處理器2706,但硬體2702可以包含任何數量及/或類型的處理組件(如,小核心、大核心、線程等)。小裝置處理器2706的例子包含英特爾®Atom®、英特爾®Quark®SoC、LITTLE核心等。如上所進一步說明,兩或更多核心2704及/或小裝置處理器2706可以一起動作(如,根據來自ISA管理電路2710及/或微碼處理電路2711的指令),以將一大指令細分為多數次指令並執行於對應處理裝置上。以此方式,應用2714及/或OS/VMM 2707可以傳送單一指令,單一核心或小裝置處理器並不能單獨執行,及核心2704及/或小裝置處理器2706可以一起工作成為較大計算裝置,以執行該單一指令。
圖27的示範OS/VMM 2707為軟體系統管理計算裝置2700的示範硬體2702、軟體資源、及/或提供伺服器電腦程式及/或應用。圖27的OS/VMM 2707傳送指令及/或ISA執行請求至ISA管理電路2710,以使得ISA管理電路2710控制處理資源(如,核心2704及/或小裝置處理器2706),以操作為大核心。在一些例子中,OS/VMM 2707儲存指令及/或ISA執行請求於ISA管理電路2710所監視的示範暫存器2713中。以此方式,OS/VMM 2707可以造成一中斷發生,以當新資料置放於暫存器2713中時,促成ISA執行。
圖27的示範BIOS 2708提供對計算裝置2700的硬體2702的低階控制。例如,BIOS 2712可以使用示範核心2704及/或小裝置處理器2706,以執行指令及/或執行操作以操作為大核心。BIOS 2708可以執行硬體初始化及/或提供運行時間服務供OS/VMM 2707及/或其他程式。雖然圖27的示範計算裝置2700包含BIOS 2708,但該BIOS 2708可以為可以作為硬體及OS/VMM 2707間的介面的EFI、UEFI、及/或任何其他類型韌體所替代。示範BIOS 2708包含示範ISA管理電路2710。
圖27的示範ISA管理電路2710由應用經由OS/VMM 2707取得指令(如,用以以操作為大核心的處理器資源,實施ISA執行)。在一些例子中,ISA管理電路2710確定OS/VMM 2707已經請求硬體2702的處理組件藉由監視在硬體2702中的一或更多暫存器2713中的資料變化,操作為大核心。例如,當OS/VMM 2707需要或請求大核心操作時,OS/VMM 2707可以將資料置放於一或更多暫存器2713中,以指示大核心操作(如,為一中斷)。因此,ISA管理電路2710可以監視暫存器2713(如,如同中斷),以確定何時促成該大核心操作。
當圖27的示範ISA管理電路2710確定將發生大核心操作時,ISA管理電路2710確定指令中將被大核心結構所執行的ISA要求(SLA、潛時要求、容許要求等)。例如,如果指令被儲存在一或更多暫存器2713中,則ISA管理電路2710處理ISA指令以識別該等要求。ISA管理電路2710依據所確定的要求,評估是否處理資源(如,一或更多核心2704及/或小裝置處理器2706)能否/或可否被用於處置ISA執行為大核心。在一些例子中,因為處理資源可以執行其他工作負載,所以一或更多處理資源能夠處置ISA執行,但現在不可被用以執行該等指令。在一些例子中,處理資源可能不是能處置ISA執行。例如,處理資源可以被建構以處置整數為基指令。在此一例子中,如果OS/VMM 2707傳送指令以處置浮點數,則該處理資源可能不能處置此一資源。因此,示範ISA管理電路2710確定處理資源是否可被用及/或能夠用以執行來自OS/VMM 2707的對應於ISA執行的指令。
如果圖27的示範ISA管理電路2710確定處理資源能夠並可被用以執行ISA執行,藉由組合核心2704及/或小處理組件2706的多重者的操作為大核心,則示範ISA管理電路2710指示硬體2702的微碼處理電路2711以使得核心2704及/或小處理組件2706操作為大核心。如果圖27的示範ISA管理電路2710確定處理資源能夠但並不可被用以執行該等指令(如,只有一部分的處理資源可被用),則示範ISA管理電路2710可以確定(a)何時將有足夠處理器資源可被用以操作為大核心(如,根據現行工作負載及/或排程工作負載將何時完成)及/或(b)大核心仿真是否可能。能夠作動為較大處理裝置的小裝置處理器的組合為策略可組態並且可以經由平台信任執行環境(TEE)加以執行。當可被用處理器資源能夠執行為大核心但執行將無法滿足所有要求時,仿真是可能的。例如,ISA管理電路2710可以確定每週期512位元不可能,但每週期256位元是可能。在此一例子中,512位元指令可以在兩個256位元週期中執行,而不是一個512位元週期。因此,雖然指令可以完成,但它將在512位元週期要求中的一半完成。示範ISA管理電路2710可以傳送有關仿真及/或何時額外資源將可用於示範OS/VMM 2707的資訊。以此方式,OS/VMM 2707可以根據來自ISA管理電路2710的指令,確定是否等待、進行仿真、及/或不前進。在一些例子中,OS/VMM 2707及ISA管理電路2710可以協商用以仿真的條件。如果ISA管理電路2710確定處理器資源不能操作為大核心及/或不能執行該指令,則ISA管理電路2710可以產生用於ISA執行的異常(如,也稱為陷阱及/或阻擋)並通知OS/VMM 2707它將不執行該指令,因為它不能夠。示範ISA管理電路2710被進一步參考圖27加以描述如下。
圖27的示範微碼處理電路2711為執行微碼(如,Xucode等)的硬體,以控制示範核心及/或小裝置處理器2706的操作。例如,如果小裝置處理器2706為每週期64位元處理器及ISA管理電路2710指示微碼處理電路2711操作為每週期指令執行512位元指令的大核心,則微碼處理電路2711將該512位元指令細分為八個64位元指令,使得八個每週期64位元的小裝置處理器2706執行對應64位元指令並組合該等結果以輸出一結果。例如,微碼處理電路2711可以細分及/或群組該指令成為較小部分或次指令。較小次指令被載入小裝置處理器2706及微碼處理電路2711在暫時儲存器(如,虛擬暫存器)的較大暫存器空間中,完成累積的組合。例如,如果小裝置處理器2706只支援256位元寬,則取得512位元操作,及小裝置處理器2706具有512位元累積暫存器,及小裝置處理器2706可以使用累積暫存器及/或組態累積暫存器可以被組態於SRAM供操作。額外操作可以包含乘法、相加式加密等。以此方式,512位元指令可以為作動為大核心的八個小裝置處理器所執行。如果微碼處理電路2711在執行期間識別出一錯誤,則微碼處理電路2711可以送回該錯誤至ISA管理電路2710,以識別出該ISA執行失敗並防止當機。示範微碼處理電路2711進一步配合圖27描述如下。
圖28為圖27的示範ISA管理電路2710及微碼處理電路2711的示範實施方式的方塊圖。示範ISA管理電路2710包含一或更多示範介面200、示範鑑別電路2802、及示範硬體管理電路2804。示範微碼處理電路2711包含一或更多示範介面210、示範硬體控制電路2812、示範錯誤確定電路2814、及示範輸出控制電路2816。
圖28的ISA管理電路2710的示範介面200取得指令以藉由用多重處理裝置操作為大核心,執行ISA執行。在一些例子中,ISA管理電路2710直接由圖27的OS/VMM 2707取得指令。在一些例子中,當想要ISA執行時,OS/VMM 2707將資料寫入暫存器2713。在此等例子中,介面200存取在暫存器2713中之資料,以允許硬體管理電路2804確定ISA執行是否可能。另外,示範介面2800傳送指令至微碼處理電路2711,以使得處理資源依據來自OS/VMM 2707的ISA執行請求加以操作。
圖28的示範鑑別電路2802鑑別ISA執行請求及/或指令,以驗證請求是否有效及/或可信。為了驗證ISA執行請求,示範鑑別電路2802可以(a)匹配於平台中的CPU,(b)檢查標頭、載入器版本、及/或ISA執行請求的核對和,(c)執行鑑別及/或簽名檢查證,及/或(d)利用任何驗證技術。示範鑑別電路2802可以將平台中的CPU匹配至在製造期間(如,熔絲設定)經由工廠提供的臨時CPU ID/規定檔或者經由韌體/微碼修補的現場供應。CPU匹配可以經由策略在現場中的後部署及/或經由平台信任執行環境(TEE)的帶外可管理性被動態控制。如果ISA執行請求不是有效及/或未鑑別,則鑑別電路2802可以通知OS/VMM 2707,該ISA執行請求可能不能生效,及/或將控制返回OS/VMM 2707。
圖28的示範硬體管理電路2804取得驗證ISA執行請求並根據ISA執行請求的要求、處理資源(如,核心2704及/或小裝置處理器2706)的可用性及/或能力、及任何策略,確定如何執行ISA執行請求。策略可以是使用者及/或製造商設計策略,其根據各種因素,識別出是否ISA執行應被執行否、應被仿真否、及/或應被阻擋否。硬體管理電路2804監視處理器資源(如,核心2704及/或小裝置處理器2706)的能力及/或可用性。如果ISA請求對應於包含浮點運算的執行每週期X位元的指令,則硬體管理電路2804確定處理資源是否可用及能夠處置以每週期X位元的ISA執行請求的浮點運算。例如,如果為兩或更多可用處理器資源所提供的每週期的總位元等於或超過每週期X位元,則硬體管理電路2804可以確定ISA執行可用並指示微碼處理電路2711以協調ISA執行的執行為使用兩或更多處理器資源(如,核心2704及/或小裝置處理器2706)的大核心。
另外,圖28的示範硬體管理電路2804可以確定兩或更多處理器資源可以執行浮點運算,但不依據ISA執行的要求。如果硬體管理電路2804確定ISA執行要求不能符合,則硬體管理電路2804可以識別出何時要求可以符合及/或可以產生仿真協定,以執行ISA請求,但並不依據要求。以此方式,硬體管理電路2804可以與OS/VMM 2707協商,以確定是否進行仿真、不進行、及/或等待直到有額外資源可用為止。如果硬體管理電路2804確定ISA執行不可能及/或未來也不可能,則硬體管理電路2804傳送回應(如,經由介面200)至OS/VMM 2707,以指示ISA執行為不可能。如果硬體管理電路2804確定處理資源不能處置ISA執行請求(如,不管可用否),則示範硬體管理電路2804產生ISA執行方塊的異常,以防止ISA執行的執行並對示範OS/VMM 2707指示處理資源並不能執行ISA執行。在硬體管理電路2804確定如何處置ISA執行請求後,硬體管理電路2804指示微碼處理電路2711,以據此控制處理資源。
圖28的微碼處理電路2711的示範介面2810取得有關於來自ISA管理電路2710的ISA執行請求的執行的指令。另外,示範介面210取得ISA為基指令供ISA執行。在ISA指令完成後,介面210傳送輸出至OS/VMM 2707(如,直接或經由BIOS 2708)。
圖28的示範硬體控制電路2812確定如何建構處理資源(如,示範核心2704及/或示範小裝置處理器2706),以根據來自ISA管理電路2710的指令,執行ISA執行。例如,硬體控制電路2812可以將ISA指令細分為可以為可用處理資源所執行的次指令並提供次指令至對應處理資源(如,經由介面210)。例如,如果2728位元指令被取得,則硬體控制電路2812可以將該2728位元指令細分為兩個予以為兩個64位元小裝置處理器(如,第一次指令至第一小裝置處理器及第二次指令至第二小裝置處理器)的兩個64位元次指令。以此方式,處理資源可以執行較大指令,而不必使用較大處理資源。
圖28的示範錯誤確定電路2814監視ISA執行的執行的錯誤。例如,如果指令造成為零所除、無限環路、及/或其他指令錯誤,則錯誤確定電路2814可以識別出該錯誤,停止執行,並將信息送回至OS/VMM 2707,表示指令執行不能被完成。以此方式,錯誤確定電路2814可以防止當機發生。
圖28的示範輸出控制電路2816取得來自多重處理資源的多重輸出並將這些輸出組合以產生單一輸出。例如,如果硬體控制電路2812將2728位元指令細分為用於兩個64位元處理資源的兩個64位元指令,則該輸出控制電路2816由第一處理資源取得第一輸出及由第二處理資源取得第二輸出,並組合這些輸出以產生2728位元輸出。輸出控制電路2816經由介面2810傳送輸出至OS/VMM 2707。
雖然實施圖27的ISA管理電路2710及/或微碼處理電路2711的示範方式係被例示於圖2中,但圖28所示的一或更多元件、程序、及/或裝置可以被組合、細分、重排列、省略、免除、及/或以任何其他方式實施。再者,示範介面200、示範鑑別電路2802、示範硬體管理電路2804、示範介面210、示範硬體控制電路2812、示範錯誤確定電路2814、示範輸出控制電路2816、及/或更大體來說,圖27-2的ISA管理電路2710及/或微碼處理電路2711可以以硬體、軟體、韌體、及/或硬體、軟體、及/或韌體的任意組合加以實施。因此,例如,示範介面200、示範鑑別電路2802、示範硬體管理電路2804、示範介面210、示範硬體控制電路2812、示範錯誤確定電路2814、示範輸出控制電路2816、及/或更大體來說,圖27-2的ISA管理電路2710及/或微碼處理電路2711之任一可以為處理器電路、類比電路、數位電路、邏輯電路、可程式處理器、可程式微控制器、圖形處理單元(GPU)、數位信號處理器(DSP)、特殊應用積體電路(ASIC)、可程式邏輯裝置(PLD)、及/或場可程式邏輯裝置(FPLD),例如,場可程式閘陣列(FPGA)所實施。當讀取本專利案的設備或系統請求項之任一涵蓋純軟體及/或韌體實施方式時,圖27-2的ISA管理電路2710及/或微碼處理電路2711的至少之一在此被明確界定以包括有軟體及/或韌體的包含非暫態電腦可讀儲存裝置或儲存碟片,如記憶體、數位多功能光碟(DVD)、光碟(CD)、藍光碟等。再者,圖27-28的ISA管理電路2710及/或微碼處理電路2711可以包含除圖27-28所例示以外的一或更多元件、程序、及/或裝置,或替代它們,及/或可以包含較所例示元件、程序及裝置的一個以上或全部。
用以代表實施圖27-2的ISA管理電路2710及/或微碼處理電路2711的示範硬體邏輯電路、機器可讀指令、硬體實施狀態機、及/或其任意組合的流程圖係被顯示於圖3-5。機器可讀指令可以為一或更多可執行程式或可執行程式的部分,以供例如示於圖以下參考圖33所討論的示範處理器平台3300中之處理器電路3312及/或有關圖48的以下所討論的示範處理器電路的處理器電路所執行。程式可以實施為儲存在一或更多非暫態電腦可讀儲存媒體,如光碟(CD)、軟碟、硬碟機(HDD)、DVD、藍光碟、揮發記憶體(如,隨機存取記憶體(RAM)的任意類型等)或與位於一或更多硬體裝置中的處理器電路相關的非揮發記憶體(如,快閃記憶體、HDD等)中的軟體,但整個程式及/或其部分也可以為處理器電路以外的一或更多硬體裝置所執行,及/或實施於韌體或專用硬體中。機器可讀指令可以被分配於多重硬體裝置及/或為兩或更多硬體裝置(如,伺服器及客戶硬體裝置)所執行。例如,客戶硬體裝置可以是端點客戶硬體裝置(如,與使用者相關的硬體裝置)或中間客戶硬體裝置(如,無線接取網路(RAN))閘道所實施,其可以促成在伺服器與端點客戶硬體裝置間之通訊)。類似地,非暫態電腦可讀儲存媒體可以包含位於一或更多硬體裝置中的一或更多媒體。再者,雖然示範程式為參考圖2所示的流程圖加以描述,但也可以使用很多其他方法以實施圖27-2的計算裝置2700、ISA管理電路2710、及/或微碼處理電路2711。例如,方塊的執行順序可以改變,及/或部分所述方塊可以被改變、消除、或組合。額外或替代地,任一或所有方塊可以為被結構以執行對應操作而不執行軟體或韌體的一或更多硬體電路(如,處理器電路、分立及/或整合類比及/或數位電路、FPGA、ASIC、比較器、運算放大器(op-amp)、邏輯電路等)所實施。處理器電路可以是分配於不同網路位置及/或在單一機器中的一或更多硬體裝置(如,單一核心處理器(如,單一核心中央處理單元(CPU))的本地、多核心處理器(如,多核心CPU)等)、在伺服器框架的多重伺服器分佈的多重處理器、在一或更多伺服器框架分佈的多重處理器、CPU及/或位於相同封裝(如,相同積體電路(IC)封裝或在兩或更多分開外殼中等)內的FPGA。
於此所述之機器可讀指令可以被儲存為壓縮格式、加密格式、分段格式、編譯格式、可執行格式、套裝格式等之一或更多。於此所述之機器可讀指令可以被儲存為資料或資料結構(如,作為指令的部分、碼、碼表示法等),其可以被利用以建立、製造、及/或生產機器可執行指令。例如,機器可執行指令可以被分段並儲存在位於網路或網路集合(如,於雲端、邊裝置中等)的相同或不同位置的一或更多儲存裝置及/或計算裝置(如,伺服器)中。機器可讀指令可能需要一或更多的安裝、修改、調適、更新、組合、增補、組態、解密、解壓縮、解封、分配、重指派、編譯等,以使之可以為計算裝置及/或其他機器所直接可讀、可解譯、及/或可執行。例如,機器可讀指令可以儲存在多重部分,這些可以被個別壓縮、加密、及/或儲存在分開計算裝置上,其中當這些部分被解密、解壓縮、及/或組合形成一組實施一或更多操作的機器可執行指令時,其可以一起形成如在此所述的程式。
在另一例子中,機器可讀指令可以被以一狀態儲存,其中它們可以為處理器電路所讀取,但需要額外的程式館(如,動態鏈結程式館(DLL))、軟體開發套件(SDK)、應用程式介面(API)等,以在特定計算裝置或其他裝置上執行該機器可讀指令。在另一例子中,機器可讀指令及/或對應程式可以整體或部分被執行之前,機器可讀指令可能需要被組態(如,設定儲存、資料輸入、網路位址記錄等)。因此,如於此所用,機器可讀媒體可能包含機器可讀指令及/或程式,而不管該機器可讀指令及/或程式被儲存或靜止或在中轉時的特定格式或狀態。
於此所述之機器可讀指令可以為任何過去、現在、或未來指令語言、劇本式語言、程式語言等所表示。例如,機器可讀指令可以使用以下的任一語言加以表示:C、C++、Java、C#、Perl、Python、JavaScript、超文件標示語言(HTML)、結構化查詢語言(SQL)、Swift等。
如上所述,圖3-5的示範操作可以使用儲存於一或更多非暫態電腦及/或機器可讀媒體上的可執行指令(如,電腦及/或機器可讀指令)加以實施,媒體係例如光儲存裝置、磁儲存裝置、HDD、快閃記憶體、唯讀記憶體(ROM)、CD、DVD、快取、任何類型的RAM、暫存器、及/或任何其他儲存裝置或儲存碟片,其中,在任何持續時間內(如,延長時間段、永久、或簡短瞬間、暫時緩衝、及/或快取資訊)儲存有資訊。如於此所用,用語非暫態電腦可讀媒體及非暫態電腦可讀儲存媒體被特別界定以包含任何類型的電腦可讀儲存裝置及/或儲存碟片,並排除傳遞信號及排除傳輸媒體。
“包括”及“包含”(及所有其形式與時態)在此被使用為開放端用語。因此,只要請求項使用任何形式之“包括”或“包含”(如,包含、包括、包含、包括、具有等)作為前言或在任何類型內的請求項引用,可以了解的是也可以出現有額外元件、條件等仍在對應請求項或引用的範圍內。如於此所用,當用語“至少”被使用作為過渡用語,如作為請求項前言時,它如同用語“包含“及“包括”為開放式般地也是開放式。當使用用語“及/或”於例如A、B、及/或C的形式時,表示A、B、C的子集的任意組合,如(1)單獨A、(2)單獨B、(3)單獨C、(4)A與B、(5)A與C、(6)B與C、或(7)A與B及C。在此所用,在描述結構、構件、項目、物件及/或事項的上下文中,片語“A與B的至少之一”係想要表示包含(1)至少一A、(2)至少一B、(3)至少一A與至少一B的任一的實施方式。類似地,如於此所用,在描述結構、構件、項目、物件、及/或事項的上下文中,片語“A或B的至少之一”係想要表示以下任一的實施方式:(1)至少一A、(2)至少一B、或(3)至少一A及至少一B。如於此所用,描述程序、指令、動作、活動及/或步驟的實行或執行的上下文中,片語“至少一A與B”係想要表示以下任一的實施方式:(1)至少一A、(2)至少一B、或(3)至少一A及至少一B。類似地,如於此所用,在描述程序、指令、動作、活動、及/或步驟的實行或執行的上下文中,片語“至少一A或B”係想要表示以下任一的實施方式:(1)至少一A、(2)至少一B、或(3)至少一A與至少一B。
如於此所用,單數參考(如,“一”、“一”、“第一”、“第二”等)並不排除多數。如於此所用的用語“一”或“一”物件表示一或更多該物件。用語“一”(或“一”)、“一或更多”、及“至少一”係在此可交換使用。再者,雖然個別列出,但多數手段、元件或方法動作可以為如相同實體或物件所實施。另外,雖然個別特性可以包含在不同例子或請求項中,但它們也可能組合,包含在不同例子或請求項中並不暗示特性的組合並不可行及/或不利。
圖29代表可以為處理器電路(如,圖2的示範ISA管理電路2710)所執行及/或樣例化的示範機器可讀指令及/或示範操作2900,以處置ISA執行請求的流程圖。當示範硬體管理電路2804確定資料是否已經被寫入ISA管理器狀態暫存器(如,圖27的一或更多暫存器2713)中時,指令開始於方塊2902。如上所述,OS/VMM 2707可以將資料寫入暫存器2713,以當ISA執行將要發生時,發動中斷。在一些例子中,OS/VMM 2707可以直接將指令傳送至ISA管理電路2710。
如果示範硬體管理電路2804確定資料並未被寫入ISA管理器狀態暫存器2713(方塊2902:否),則控制回到方塊2902。如果示範硬體管理電路2804確定資料已經被寫入ISA管理器狀態暫存器2713(方塊2902:是),則示範鑑別電路2802鑑別對應於在ISA管理器狀態暫存器2713中之資料的ISA執行請求(方塊2904)。如上配合圖2所述,示範鑑別電路2802可以使用任何鑑別技術來鑑別ISA請求,以確定ISA執行請求為有效。
如果示範鑑別電路2802確定ISA請求為不可信(方塊306:否),則鑑別電路2802對OS/VMM 2707回覆以一反應,表示ISA請求不能被執行(方塊2908)及控制持續進行至方塊2922。如果示範鑑別電路2802確定ISA請求為可信(方塊306:是),則示範硬體管理電路2804根據一或更多極性、資源容量、及/或資源能力,評估ISA請求(方塊310)。例如,硬體管理電路2804可以處理一或更多策略,以確定如何處置該請求及/或可以確定是否有處理器資源可以處置該請求。
在方塊2912,示範硬體管理電路2804確定ISA是否可以依據對應於ISA執行的要求(如,潛時、位元率等)及/或依據所述一或更多策略執行。例如,硬體管理電路2804確定處理器資源是否能及/或可用以處置ISA執行。如果硬體管理電路2804確定ISA請求可以為處理器資源所執行(方塊2912:是),則示範硬體管理電路2804指示硬體的微碼(如,微碼ISA管理電路2711),以使得處理組件操作為大核心,處置ISA執行(方塊314)。例如,硬體管理電路2804可以提供ISA執行指令及/或要求給微碼,以使得微碼以對應處理器資源促成ISA執行。
如果硬體管理電路2804確定ISA請求不能為處理器資源執行(方塊2912:否),則示範硬體管理電路2804確定處理器資源是否可仿真ISA執行及/或在隨後時間(如,根據策略、資源能力、及/或資源可用性)執行ISA請求(方塊2916)。如果示範硬體管理電路2804確定應發生仿真(方塊2916:是),則示範ISA管理電路2710促成ISA仿真的執行(方塊2918),並將進一步配合圖29說明如下。
如果示範硬體管理電路2804確定仿真不應發生(方塊2916:否),則示範硬體管理電路2804針對ISA請求建立異常及/或阻擋ISA請求至VMM/主機 2706(如,經由介面200),以表示ISA請求不能被執行(方塊2920)。在方塊2922,示範硬體管理電路2804將控制回到示範OS/VMM 2707。
圖30為代表可以為處理器電路(如,圖2的ISA管理電路2710)所執行及/或樣例化的示範機器可讀指令及/或示範操作,以結合圖29的方塊2918促成ISA仿真的流程圖。
當示範硬體管理電路2804確定隨後是否有額外資源可用以執行對應於ISA請求的ISA執行時,圖30的對應於方塊2918的機器可讀指令及/或操作開始於方塊3002。例如,硬體管理電路2804可能確定是否有額外硬體(如,足夠資源以依據及/或更對準策略及/或參數,執行ISA執行)現正執行一或更多工作負載,但將在該一或更多工作負載完成後可供ISA執行用。
如果示範硬體管理電路2804確定隨後仍沒有可用額外資源,以執行對應於ISA請求的ISA執行(方塊3002:否),則控制進行至方塊3008。如果示範硬體管理電路2804確定隨後將有額外資源可用以執行對應於ISA請求的ISA執行(方塊3002:是),則示範硬體管理電路2804指示介面200以傳送何時ISA指令可以為處理器資源所執行的指示給示範OS/VMM 2707(方塊3004)。例如,硬體管理電路2804可以根據現行不能用資源的速度及尚未完成工作負載的量,確定及/或估算現行不能用處理器資源何時將為可用。
在方塊3006,示範硬體管理電路2804根據來自OS/VMM 2707的反應,確定是否OS/VMM 2707已經拒絕後續執行。例如,在有關何時處理資源將為可用的指示被送至OS/VMM 2707後,OS/VMM 2707可以確定是否它要等待ISA指令的完全執行或者立即仿真向前進行。在一些例子中,如果OS/VMM 2707確定等待額外資源變為可用(如,根據使用者及/或製造商喜好,表示如果現在不可用,何時等待資源變為完全可用),控制回到OS/VMM 2707並且OS/VMM 2707可以根據資源何時為可用的識別出的時間,提交後續請求。在一些例子中,如果OS/VMM 2707決定等待額外資源變成可用,則硬體管理電路2804可以針對現行不可用資源保留及/或佇列ISA指令,以供現行不可用資源,在工作負載完成後,執行ISA指令。
如果示範硬體管理電路2804確定OS/VMM 2707並未拒絕後續執行(方塊3006:否),則控制回到圖29的方塊2922。如果示範硬體管理電路2804確定OS/VMM 2707確實拒絕後續執行(方塊3006:是),則示範硬體管理電路2804識別出可以被利用以仿真ISA的資源的組態。例如,如果有兩可用小裝置處理器具有64位元率及ISA指令對應於256位元指令,則硬體管理電路2804可以使用兩小裝置處理器以識別出組態,以一半位元率執行該指令(如,2728位元每週*2週期=256位元每2週期)。在方塊3010,示範硬體管理電路2804經由介面200傳送仿真組態資訊至OS/VMM 2707。仿真組態資訊可以包含有關於將被用以仿真ISA執行的處理器資源、將符合的策略及/或參數、將不符合的策略及/或參數、及/或仿真組態的參數(如,位元率、潛時等)的資訊。
在方塊3012,示範硬體管理電路2804(如,根據經由介面200自OS/VMM 2707取得之反應)確定該組態是否為OS/VMM 2707所接受。如果示範硬體管理電路2804確定組態被接受(方塊3012:是),則示範硬體管理電路2804指示硬體的微碼(如,微碼處理電路2711)以使得處理資源依據仿真組態操作(方塊414)及控制回到圖29的方塊2922。如果示範硬體管理電路2804確定組態未被接受(方塊3012:否),則示範硬體管理電路2804確定是否有其他仿真組態可用(方塊416)。以此方式,示範OS/VMM 2707及ISA管理電路2710可以協商仿真組態。在一些例子中,OS/VMM 2707可以提供想要在仿真組態中看到的指令及/或喜好,及ISA管理電路2710可以嘗試滿足該指令及/或喜好及/或提供較適合該指令及/或喜好的仿真組態。
如果示範硬體管理電路2804確定有其他仿真組態可用(方塊416:是),則控制回到方塊3010。如果示範硬體管理電路2804確定無其他仿真組態可用(方塊416:否),則示範硬體管理電路2804傳送無仿真可用的指示(如,使用示範介面200給OS/VMM 2707)(方塊418),並且控制回到方塊2922。
圖31代表可以為處理器電路(如,微碼處理電路2711)所執行及/或樣例化的示範機器可讀指令及/或示範操作3100,以控制處理資源,處置ISA指令的執行的流程圖。當示範硬體控制電路2812確定是否取得ISA指令時(如,直接由OS/VMM 2707或經由BIOS 2708),該指令開始於方塊3102。
如果示範硬體控制電路2812確定並未取得ISA指令(方塊3102:否),則控制回到方塊3102,直到取得ISA指令為止。如果示範硬體控制電路2812確定已取得ISA指令(方塊3102:是),則示範硬體控制電路2812依據來自ISA管理電路2710的組態指令,將指令細分為次指令(方塊3104)。例如,如果組態對應於一2728位元處理器及兩64位元處理器,則硬體控制電路2812可以將256位元指令細分為2728位元指令及兩個64位元指令,以對應於該組態,如上配合圖27所進一步描述。
在方塊3106,示範硬體控制電路2812使得處理資源,根據組態指令執行細分指令。使用上述例子,硬體控制電路2812可以提供2728位元指令至以每週期2728位元操作的處理資源執行,第一64位元指令給每週期64位元操作的第一處理資源執行,及第二64位元指令給每週期64位元操作的第二處理資源執行。在方塊3108,示範錯誤確定電路2814確定是否在任何處理資源發生錯誤。例如,錯誤確定電路2814可以識別出造成錯誤、無限環路等的操作。
如果示範錯誤確定電路2814確定錯誤已發生(方塊3108:是),則示範錯誤確定電路2814傳送(使用介面210)ISA指令不能完成的指示(方塊510)及指令結束。如果示範錯誤確定電路2814確定並未發生錯誤(方塊3108:否),則示範輸出控制電路2816組合來自在多重處理器資源的多重執行的結果(如,輸出),以產生用於該週期的最終輸出(方塊512),如進一步配合圖27說明如上。例如,輸出控制電路2816可以藉由序連輸出、相加輸出、相乘輸出等而組合這些結果(如,輸出)。如果ISA指令在多重週期上對應於多重指令,則微碼處理電路2711可以儲存用於該等週期的輸出於記憶體(如,暫存器、快取、揮發記憶體、非揮發記憶體等)中,以在後續週期中使用及/或直到所有指令完成再使用,然後,組合這些週期的部分或所有輸出。在方塊3114,示範輸出控制電路2816使用介面210,用以傳送輸出至OS/VMM 2707(如,直接或經由BIOS 2708)。
圖32例示對應於圖27的ISA管理電路2710的操作的示範示意圖3200。圖32的示範圖3200開始於當OS/VMM 2707將資料寫入至ISA管理器狀態暫存器(ISA_MSR)以對ISA管理電路2710啟動中斷,以確定是否及/或如何依據ISA執行請求,執行ISA指令。當ISA管理電路(如,實施UEFI BIOS微碼更新管理器)識別ISA_MSR寫入時,鑑別電路2802(如,實施ISA解碼器及/或評估器)解碼及驗證ISA_MSR寫入的真實性。如果被鑑別,則硬體管理電路2804(如,實施ISA管理器)驗證用於與信息傳遞介面(MPI)位元的現行交談的ISA組態、以與允許執行、仿真或產生異常相關地組態ISA MPI位元,並藉由指示Xucode(如,微碼處理電路2711)應用用於現行交談的ISA組態。在一些例子中,硬體管理電路2804可以採策略為基動作,包含使用多餘對應器以產生新的微運算供執行,以組態處理資源,來執行ISA指令。在完成後,示範ISA管理電路2710將控制送回至OS/VMM 2707。為了返回正常薄模式(如,這些處理資源並未操作為大核心,而是分開較小處理器裝置),發生類似程序。
圖33為被建構以執行及/或樣例化圖3-5的機器可讀指令及/或操作以實施圖27的ISA管理電路2710及/或微碼處理電路2711的示範處理器平台3300的方塊圖。處理器平台3300可以例如為伺服器、個人電腦、工作站、自學習機器(如,類神經網路)、行動裝置(如,蜂巢手機、智慧手機、如iPad TM的平板)、個人數位助理(PDA)、網際網路設施、DVD播放器、CD播放器、數位視訊記錄器、藍光碟機、遊戲平台、個人視訊記錄器、機上盒、頭戴機(如,擴增實境(AR)頭戴機、虛擬實境(VR)頭戴機等)、或其他穿戴裝置、或其他類型的計算裝置。
處理器平台3300的例示例子包含處理器電路3312。處理器電路3312的例示例子為硬體。例如,處理器電路3312可以為一或更多來自任何想要系列或製造商的積體電路、邏輯電路、FPGA、微處理器、CPU、GPU、DSP、及/或微控制器所實施。處理器電路3312可以為一或更多半導體為基(如,矽為基)裝置所實施。在此例子中,處理器電路3312實施示範介面200、示範鑑別電路2802、示範硬體管理電路2804、示範介面210、示範硬體控制電路2812、示範錯誤確定電路2814、及示範輸出控制電路2816。
處理器電路3312的例示例子包含本地記憶體3313(如,快取、暫存器等)。處理器電路3312的例示例子透過匯流排3318與包含揮發記憶體3314及非揮發記憶體3316的主記憶體通訊。揮發記憶體3314可以為同步動態隨機存取記憶體(SDRAM)、動態隨機存取記憶體(DRAM)、RAMBUS®動態隨機存取記憶體(RDRAM®)、及/或任何其他類型RAM裝置所實施。非揮發記憶體3316可以為快閃記憶體及/或任何其他想要類型的記憶體裝置所實施。對主記憶體3314、3316的存取的例示例子係為記憶體控制器3317所控制。
處理器平台3300的例示例子也包含介面電路3320。介面電路3320可以為依據任何類型介面標準以硬體加以實施,介面標準係例如乙太介面、通用串列匯流排(USB)介面、藍牙®介面、近場通訊(NFC)介面、PCI介面、及/或PCIe介面。
在所例示例子中,一或更多輸入裝置3322被連接至介面電路3320。輸入裝置3322允許使用者以將資料及/或命令輸入至處理器電路3312。輸入裝置3322可以為例如音訊感應器、麥克風、攝影機(靜態或視訊)、鍵盤、按鈕、滑鼠、觸控螢幕、軌跡墊、軌跡球、等電裝置、及/或語音辨識系統所實施。
一或更多輸出裝置3324同時也連接至例示例子的介面電路3320。輸出裝置3324可以例如為顯示裝置(如,發光二極體(LED)、有機發光二極體(OLED)、液晶顯示器(LCD)、陰極射線管(CRT)顯示器、面內切換(IPS)顯示器、觸控螢幕等)、觸覺輸出裝置、印表機、及/或喇叭所實施。介面電路3320的例示例子因此典型包含圖形驅動器卡、圖形驅動器晶片、及/或如GPU的圖形處理器電路。
介面電路3320的例示例子也包含例如發射器、接收器、收發器、數據機、住宅閘道、無線接取點、及/或網路介面的通訊裝置,以藉由網路3326促成與外部機器(如,任何類型的計算裝置)的資料交換。通訊也可以是例如藉由乙太連接、數位用戶線(DSL)連接、電話線連接、同軸電纜系統、衛星系統、現場線無線系統、蜂巢式電話系統、光連接等。
處理器平台3300的例示例子也包含一或更多大量儲存裝置3328,以儲存軟體及/或資料。此大量儲存裝置3328的例子包含磁儲存裝置、光儲存裝置、軟碟機、HDD、CD、藍光碟機、獨立磁碟冗餘陣列(RAID)系統、固態儲存裝置,例如快閃記憶體裝置、及DVD機。
可以為圖3-5的機器可讀指令所實施的機器可執行指令3332可以被儲存在大量儲存裝置3328、在揮發記憶體3314、在非揮發記憶體3316、及/或在如CD或DVD的可移除非暫態電腦可讀儲存媒體上。
由以上,將了解已經揭露用於增加開機效能的示範系統、方法、設備、及製品。所揭露的系統、方法、設備、及製品提供軟體及/或韌體為基的應用程式介面(API),以處理來自正執行於作業系統上的應用、虛擬機器管理器(VMM)等的指令,並指示微碼以組態處理單元以能夠執行指令,而不管指令如何被建構。因此,在此所揭露的例子可以組合較小資源,以執行被設計用於較大資源的碼,而不需指令被建構用於較小資源。以此方式,該應用可以產生一指令並回覆,在此所揭露的例子可以確定是否及/或如何在該計算系統的侷限下執行指令。 可組構機器學習計算節點的設備、製品及方法
可以藉由使用機器學習模型執行計算工作負載。例如類神經網路的機器學習模型為有用工具,已經對解決有關於圖案辨識、自然語言處理、自動語音辨識等的複雜問題展現了其價值。識別出硬體及/或軟體的最佳組合(如,機器學習模型)以執行計算工作負載會由於硬體及/或機器學習模型及其客製化的大範圍的可用類型而變得複雜。
自動機器學習(AutoML)提供技術,以改良機器學習(ML)對各應用及使用情況的取用及可用性。AutoML為將ML應用至工作及工作負載的自動操作程序。例如,AutoML可以被用以自動選擇、組成、及參數化ML模型。在一些此等例子中,AutoML可以被用於整個ML管線,由接收原始資料集到產生可部署機器學習模型。
部分AutoML手法可以根據硬體搜尋空間及/或軟體搜尋空間,選擇ML模型(如,ML模型以執行工作負載)。如於此所用,“硬體搜尋空間”為一空間或組可行硬體、該硬體的組態等、及/或其組合,在其間存有想要的硬體組態,以執行ML模型。例如,AutoML系統可以根據包含在硬體搜尋空間內的硬體的組態,評估各種類型ML模型。如於此所用,“軟體搜尋空間”為一空間的可行ML模型、ML模型的組態等、及/或其組合,在其間存有想要軟體組態,以執行工作負載(如,計算工作負載、ML工作負載、ML工作、ML操作等)。例如,AutoML系統可以根據該等ML模型及/或包含在軟體搜尋空間內ML模型的組態,評估各種類型的ML模型。
一些AutoML手法可以使用硬體(如,CPU、GPU、FPGA等)的單一及不能變模板以表達硬體搜尋空間,該空間可以為AutoML系統可以使用以識別出一ML模型來執行有興趣的工作負載。例如,硬體模板可以是不能變,因為硬體的互連拓樸可能是固定的及/或不可組態的。一些此等AutoML手法可以根據單一類型的硬體,評估不同類型ML模型及/或ML模型的組態。在一些此等例子中,當樣例化ML模型中之特定ML模型時,該類型的硬體可能具有弱點。因此,ML模型之一(或多者)可能根據硬體評估的類型,而不能被選擇作為一特定類型的ML工作負載。在一些此等例子中,當在不同硬體上,執行該特定類型ML工作負載時,ML模型之一(或多者)可能有效率,但因為在正被評估的ML模型上的潛藏類型硬體的低效率,AutoML系統可能不選擇所述ML模型。
一些AutoML手法可以使用的單一及不能變軟體模板(如,一類型的類神經網路、類神經網路的組態等)以表達軟體搜尋空間,該AutoML系統可以使用以識別出一ML模型來執行有興趣的工作負載。一些此等AutoML手法可以根據單一類型的ML模型,評估工作負載的執行。在一些此等例子中,當執行特定類型工作負載時,該ML模型可能具有弱點。因此,ML模型之一(或多者)可能不被選擇作為一特定類型的ML工作負載。在一些此等例子中,當執行該特定類型ML工作負載時,ML模型之一(或多者)可能有效率,但因為在正被評估的ML模型上的軟體搜尋空間的不能變組態的低效率,AutoML系統可能不選擇所述ML模型。
人工智慧/機器學習(AI/ML)模型與其上所執行及/或樣例化的硬體的共同開發,針對取得高效解決方案是有利的。然而,此共同開發需要藉由在硬體設計及AI/ML演算法中之跨領域人類專家的很緩慢、人工迭代。近來,上述AutoML手法已經提出藉由執行自動AI/ML硬體/軟體(HW/SW)共同設計,而降低人類設計努力。然而,如上所述,現存AutoML手法欠缺可以解放AI/ML HW/SW共同設計的真正潛力的硬體及軟體設計彈性。例如,現存AutoML手法典型根據一固定組的模組及連接性,使用單一固定硬體架構模板,對各個模組具有固定組的低階設計參數(如,緩衝器大小、計算單元數等)。結果,硬體設計搜尋空間被限制為只有來自單一硬體架構式樣的有限組的實例。同樣地,軟體搜尋空間也具有限制。在類神經網路搜尋中,典型地,搜尋空間針對一單一類別的網路(如,只遞歸類神經網路(RNN)分類,或只卷積類神經網路(CNN)分類,例如)。
在此所揭露的例子包含用以可組構機器學習計算節點的設備、製品及方法。在一些揭露例子中,將硬體及軟體異質併入AutoML搜尋中可能可以發現新模型(如,AI/ML模型),其利用了不同計算平台的強度(如,在CPU上的分支及重控制、在GPU上的大量平行層、FPGA上的客製新層),以根據硬體及/或軟體的可組構、模型化建築方塊,產生機器學習系統。
在此所揭露的例子包含表達搜尋空間表示法,其涵蓋硬體及軟體架構的多重模板。在一些揭露例子中,模板可以在HW/SW共同設計搜尋期間為動態可修改。有利地,表達搜尋空間致使HW/SW共同設計系統在多重架構式樣間,探索更大及豐富的HW/SW設計空間。在一些揭露例子中,一(或多個)架構式樣可以在其個別組的模型及連接性(如,連接的選擇及/或組態、拓樸、輸入/輸出等)中有彈性。在一些此等揭露例子中,該組模組與連接性可以透過可組構建築方塊加以形成。有利地,在此所揭露的例子改良發現更有效率硬體架構實例的可能性及相較於先前AutoML手法的對應共同設計軟體,因為此等所提供的例子提供較大HW/SW搜尋空間及其可組構版本。
在此所揭露的例子包含一組硬體架構模板及軟體架構模板。有利地,硬體及軟體模板可以根據一色盤的可組構架構建築方塊,各個建築方塊可以具有一組微架構參數。在一些揭露例子中,微架構參數可以為可搜尋,以加強AutoML搜尋的粒度。有利地,示範硬體及軟體模板並不限於如一些先前AutoML手法所用的預定組模組與其固定連接性狀模板。在一些揭露例子中,可組構架構建築方塊可以根據一組設計規則(如,預定設計規則、在動態指定或現場指定的設計規則等)彈性組合、相加、移除、修改、及/或變化,以建立過多的新HW/SW架構實例。在一些揭露例子中,示範硬體及軟體模板的正式及精準語意以及介面允許在AutoML框架中的HW/SW設計空間中的自動搜尋,以及容易以新使用者及/或機器特定方塊擴充HW/SW方塊色板。
在此所揭露的例子包含同時展開多重組的相關可組構建築方塊,各個建築方塊可以涵蓋不同架構類別及設計式樣。例如,在硬體搜尋空間中,令AI/ML處理器架構根據收縮陣列設計式樣可以適用於計算密集的AI/ML模型,但並不適用於記憶體界限及較不計算密集的工作負載。因此,在此所揭露的例子可以同時展開具有不同架構設計式樣的HW架構,以允許AI/ML模型彈性展開以在共同設計程序期間,完成改良的軟體準確度與硬體效率。類似地,例如,在軟體搜尋空間(如,類神經網路軟體搜尋空間)中,有多重類別的網路具有其本身有利特性(如,CNN、RNN、轉換器等)及可組構建築方塊(如,用於RNN的矩陣乘以向量運算(如,矩陣×向量)、用於CNN的卷積等)。有利地,在此所揭露的例子可以根據可組構ML計算節點,建築改良HW/SW解決方案,以相較於先前AutoML手法,以較少開發努力,來執行工作負載。
圖34為示範AutoML架構3400的示意圖,其包含示範機器學習(ML)系統組態器3402,以識別及/或產生可組構ML計算節點。AutoML架構3400包含ML系統組態器3402,以根據計算工作或工作負載(如,人工智慧/機器學習(AI/ML)計算工作或工作負載),產生硬體搜尋空間及/或軟體搜尋空間。ML系統組態器3402可以由硬體搜尋空間,識別出硬體或其部分。ML系統組態器3402也可以由軟體搜尋空間,發現及/或識別出軟體(如,AI/ML模型),或其部分。在一些例子中,ML系統組態器3402可以個別及/或同時地藉由遞代(i)硬體及/或軟體的類型及架構及/或/或(ii)硬體及/或軟體的組態,而展開可組構ML計算節點。例如,ML系統組態器3402可以藉由當執行工作負載時,評估該硬體及/或軟體及/或根據執行該工作負載的硬體及/或軟體的模擬,而展開該可組構ML計算節點。在一些此等例子中,可組構ML計算節點可以為可組構,因為硬體及/或軟體組件可以以各種組合加以選擇及組合,以滿足特定或預定要求(如,準確度要求、潛時要求、產出量要求等)。在一些此等例子中,回應於滿足特定或預定要求的硬體及/或軟體的特定組合的識別,ML系統組態器3402可以輸出作為可組構ML計算節點的該組合,以執行有興趣工作負載。
在一些例子中,可組構ML計算節點可以為單一同質計算或電子系統所實施,該系統可以被組態及/或利用以執行AI/ML模型。例如,可組構ML計算節點可以為單一中央處理器單元(CPU)、圖形處理器單元(GPU)、人工智慧處理器(AI處理器)、場可程式閘陣列(FPGA)、數位信號處理器(DSP)、XPU等所實施。在一些例子中,可組構ML計算節點可以為單一同質計算或電子系統的部分所實施,例如,單一CPU、GPU、AI處理器、FPGA、DSP、XPU等的部分(如,核心)。在一些此等例子,該等部分可以包含核心(如,硬體核心)及/或不同核心、硬體等可以耦接(如,實體耦接、通訊耦接、經由計算或電匯流排的耦接等)的對應互連。在一些例子中,可組構ML計算節點可以為相同類型的同質計算或電子系統的多者,或其一部分加以實施。例如,可組構ML計算節點可以以兩或更多CPU(或其部分)、兩或更多GPU(或其部分)、兩或更多AI處理器(或其部分)、兩或更多FPGA(或其部分)、兩或更多DSP(或其部分)、兩或更多XPU(或其部分)等所實施。
在一些例子中,可組構ML計算節點可以為單一異質計算或電子系統所實施,該計算或電子系統可以被組態或利用以執行AI/ML模型。例如,可組構ML計算節點可以為CPU、GPU、AI處理器、FPGA、DSP、XPU等、及/或其任意組合所實施。在一些此等例子中,可組構ML計算節點可以為一或更多CPU、一或更多GPU、一或更多AI處理器、一或更多FPGA、一或更多DSP、一或更多XPU等、及/或其任意組合所實施。在一些例子中,可組構ML計算節點可以為單一異質計算或電子系統的部分所實施,該計算或電子系統的部分例如CPU、GPU、AI處理器、FPGA、DSP、XPU等、及/或其任何組合的部分。在一些例子中,可組構ML計算節點可以為同一異質計算或電子系統、或其部分的多重所實施。例如,可組構ML計算節點可以為異質計算系統的兩或更多實例所實施,其包含一或更多CPU(或其部分)、一或更多GPU(或其部分)、一或更多AI處理器(或其部分)、一或更多FPGA(或其部分)、一或更多DSP(或其部分)、一或更多XPU(或其部分)等、及/或其組合。在一些例子中,可組構ML計算節點可以為兩或更多不同異質計算或電子系統所實施。例如,可組構ML計算節點可以為第一異質計算系統及第二異質計算系統所實施。在一些此等例子中,第一異質計算系統及第二異質計算系統的部分可以不同。
在一些例子中,可組構ML計算節點可以包含、儲存、及/或存取可執行構造,以執行AI/ML模型,以完成工作負載,或其部分。例如,可執行構造可以為組態影像、可執行二進制碼、可執行碼(如,可執行機器可讀碼)、可執行檔案(如,可執行二進制檔)、可執行程式、可執行指令(如,可執行機器可讀指令)等所實施,當這些被執行時,可以實施AI/ML模型,以促成AI/ML工作負載的完成。
AutoML架構3400的例示例子包含示範最佳應用3404、示範最佳中間軟體及框架3406、及示範應用程式介面(API)3408。在一些例子中,最佳應用3404可以為應用(如,軟體應用、網路或瀏覽器為基應用等)所實施,其被客製化、調整、及/或最佳化,以達成可組構ML計算節點的識別及/或產生。例如,最佳應用3404可以被開發者(如,軟體開發者、研究者等)、資訊科技(IT)人員等所存取、利用等。在此等例子中,最佳應用3404可以被存取、利用等,以針對可以由AI/ML技術得利的技術問題,共同設計硬體/軟體(HW/SW)解決方案。在一些例子中,中間軟體及框架3406可以為中間軟體及框架所實施,其係被客製化、調整、及/或最佳化以達成可組構ML計算節點的識別及/或產生。例如,最佳中間軟體及框架3406可以在最佳應用3404及API 3408間實施一介面(如,通訊、連接等)。
API 3408的例示例子可以被調用,以藉由直接規劃或API為基規劃的至少之一,來規劃、開發、及/或產生AI/ML應用。API 3408的例示例子包含示範移植工具3410、示範直接規劃API 3412、示範API為基規劃API 3414、及示範分析工具3416。
在一些例子中,移植工具3410可以為軟體(如,軟體應用)所實施,其可以為了完成在與程式所原始設計的第二計算或電子環境不同的第一計算或電子環境內某些形式的執行的目的,而調適一程式。例如,移植工具3410可以將開發用於第一類型的硬體、作業系統(OS)、程式館等的第一程式轉換及/或調適為用於第二類型硬體、OS、程式館等的第二程式。
在一些例子中,直接規劃API 3412可以被調用以達成直接規劃工作,其可以包含開發及/或編譯資料平行C++應用。在一些例子中,API為基規劃API 3414可以被調用以達成API為基規劃,其可以包含開發及/或編譯可以呼叫(或調用、樣例化等)數學核心程式館(MKL)、MKL深度類神經網路(DNN)程式館、資料分析加速程式館、線程建築方塊程式館、平行標準模板程式館、媒體軟體開發套件(SDK)、深度學習部署工具套件、機器學習定標程式館等,及/或其任何組合。
在一些例子中,分析工具3416可以被呼叫、樣例化、及/或調用以分析可組構ML計算節點的硬體、軟體、及/或其組態。例如,分析工具3416可以樣例化仿真器,以仿真該可組構ML計算節點的所有硬體及/或軟體特性,以產生及/或輸出一或更多評估參數。在一些此等例子中,評估參數可以包含代表及/或表示準確度、潛時、完成工作負載的週期數、或可組構ML計算節點的產出量的參數。在一些例子中,評估參數可以包含代表及/或表示處理器或時鐘頻率、組織頻率、讀取記憶體頻寬、寫入記憶體頻寬、硬體降額定因數、記憶體埠數量、資料處理單元(DPU)數量、模型層(如,類神經網路層、卷積層等)數量、啟動精準度(如,予以處理的啟動值的精準度)、權重精準度(如,予以處理的權重值的精準度)等、及/或其組合的參數。例如,分析工具3416可以根據可組構ML計算節點,執行仿真器。在一些此等例子中,分析工具3416可以執行仿真器,以確定當該可組構ML計算節點執行一具有特定組態的特定AI/ML模型時,該可組構ML計算節點的產出量。
在一些例子中,分析工具3416可以樣例化模擬器,以模擬可組構ML計算節點的行為、組態等,以產生及/或輸出一或更多評估參數。例如,分析工具3416可以根據該可組構ML計算節點,執行一模型(如,模擬模型、AI/ML模型等)。在一些此等例子中,分析工具3416可以執行模型,以當該可組構ML計算節點執行具有特定組態的特定AI/ML模型時,評估、預測、及/或確定該可組構ML計算節點的產出量。
AutoML架構3400的例示例子包含可以產生該可組構ML計算節點的不同類型的硬體及/或軟體。在所例示例子中,AutoML架構3400包含用於純量、向量、矩陣、及空間硬體的介面與目標系統的軟體。額外及/或替代地,也可以使用任何其他類型的硬體。在此例子中,純量硬體可以為示範CPU 3418及示範CPU系統軟體3420所實施。例如,CPU系統軟體3420可以包含對應於CPU指令集架構(ISA)的指令。在此例子中,向量硬體被示範GPU 3422及示範GPU系統軟體3424所實施。例如,GPU系統軟體3424可以包含核心、碼的部分等,例如,核心、計算核心、及/或著色器。在一些例子中,核心、碼的部分等可以以高階程式語言,例如,如高階著色器語言(HLSL)、OpenCL等所代表。
在此例子中,矩陣硬體係為示範AI處理器3426及示範AI系統軟體3428所實施。例如,AI系統軟體3428可以包含一或更多AI/ML演算法,模型等,例如類神經網路(如,卷積類神經網路(CNN)、深度類神經網路(DNN)、遞歸類神經網路(RNN)等)、線性迴歸模型、邏輯式迴歸模型、決策樹模型、學習向量量化模型等、及/或其組合。在此例子中,空間硬體為示範FPGA 3430及示範FPGA系統軟體3432所實施。例如,FPGA系統軟體3432可以根據例如Verilog的硬體描述語言(HDL),包含核心、碼的部分等。
ML系統組態器3402的例示例子可以經由示範主機介面3434與CPU 3418及/或CPU系統軟體3420作成介面。ML系統組態器3402的例示例子可以透過示範零階介面466與GPU 3422、GPU系統軟體3424、AI處理器3426、AI系統軟體3428、FPGA 3430、及/或FPGA系統軟體3434作成介面。
在所例示例子中,CPU系統軟體3420、GPU系統軟體3424、AI系統軟體3428、FPGA系統軟體3432、主機介面3434、及/或零階介面3436可以對應及/或實施示範零階下系統軟體3436。例如,零階下系統軟體3436可以對應及/或實施被調整至例如CPU 3418、GPU 3422等的硬體的低階直接至金屬介面。
在例示例子中,API 3408可以實施示範零階上系統軟體3440及示範開發者介面3442。例如,開發者、使用者等可以透過API 3408存取及/或利用AutoML架構3400。在一些例子中,開發者、使用者等可以藉由API 3408,以高於低階直接至金屬介面的階層存取及/或利用系統軟體。在一些例子中,開發者、使用者等可以透過主機介面3434及/或零階介面3436存取及/或利用零階下系統軟體3436。
圖35為圖34的ML系統組態器3402的示範實施方式的方塊圖。ML系統組態器3402包含示範控制器3502、示範評估器3504、示範本體產生器3506、及示範本體資料庫3508。
在所例示例子中,本體資料庫3508包含多數示範可組構建築方塊資料庫3510。在所例示例子中,可組構建築方塊資料庫3510包含示範軟體模板3512及硬體模板3514。例如,可組構建築方塊資料庫3510可以包含第一可組構建築方塊資料庫,其可以包含軟體模板3512的第一軟體模板(由SW TEMPLATE 34所識別)。在一些例子中,第一軟體模板可以包含一或更多CNN,或其組態、及/或元資料。例如,元資料可以描述CNN的操作、CNN的不同組態及/或能力、可以被修改或變化的CNN態樣等。在一些例子中,第一軟體模板可以曝露及/或使得CNN的可用態樣、組態、互連等可以被調整、改變、修改、變化等。在一些例子中,可組構建築方塊資料庫3510可以包含:第二可組構建築方塊資料庫,其可以包含軟體模板3512的第二軟體模板(由SW TEMPLATE 35所識別);第三可組構建築方塊資料庫,其可以包含軟體模板3512的第三軟體模板(由SW TEMPLATE N所識別)等。在所例示例子中,第二軟體模板可以包含一或更多RNN及/或其組態。在所例示例子中,第三軟體模板可以包含一或更多轉換器及/或其組態。額外及/或替代地,任何其他類型的AI/ML模型及/或其組態可以包含在可組構建築方塊資料庫3510中。
在一些例子中,可組構建築方塊資料庫3510可以包含來自示範貢獻者3513的資料庫及/或模板。例如,貢獻者3513可以為使用者、開發者、研究者等。貢獻者3513的例示例子可以更新及/或提供資料庫、模板等至示範儲存庫3515。在一些例子中,貢獻者3513可以包含在資料庫、模板等之中的元資料,其可以提供模板的硬體及/或軟體的可組態性的指示。在所例示例子中,儲存庫3515為可以為ML系統組態器3402所存取的應用儲存(如,App儲存),以供組構、產生等示範ML計算節點3517。例如,ML計算節點3517可以實施可組構ML計算節點。ML計算節點3517的例示例子包含示範軟體3519及示範硬體3521。例如,軟體3519可以為一或更多AI/ML模型所實施。在一些例子中,硬體3521可以為一或更多CPU(或其部分)、一或更多GPU(或其部分)、一或更多AI處理器(或其部分)、一或更多FPGA(或其部分)、一或更多ASIC(或其部分)等、及/或其組合所實施。
在所例示例子中,可組構建築方塊資料庫3510可以包含第四可組構建築方塊資料庫,其可以包含硬體模板3514的第一硬體模板(由HW TEMPLATE 34所識別)。在一些此等例子中,第一硬體模板可以包含一或更多FPGA(如,FPGA的一或更多架構、製造商模型、類型等)及/或其組態。例如,硬體模板可以曝露及/或使得FPGA的可用態樣、組態、互連等可以被調整、改變、修改、變化等。在一些例子中,可組構建築方塊資料庫3510可以包含:第五可組構建築方塊資料庫,其可以包含第二硬體模板(由HW TEMPLATE 35識別);第六可組構建築方塊資料庫,其可以包含第三硬體模板(由HW TEMPLATE N識別)等。在所例示例子中,第二硬體模板可以包含一或更多GPU(如,GPU的一或更多架構、製造商模型、類型等)及/或其組態。在所例示例子中,第三硬體模板可以包含一或更多CPU(如,CPU的一或更多架構、製造商模型、類型等)及/或其組態。額外及/或替代地,任何其他類型的硬體及/或其組態可以包含在可組構建築方塊資料庫3510中。
在示範操作中,控制器3502可以接收、取得、及/或識別出示範工作負載(如,一或更多AI/ML工作負載)3516。例如,工作負載3516可以是科學模擬、財務分析、AI/深度學習、3D模型與分析、影像及音訊/視訊處理、密碼學、資料壓縮等。在所例示例子中,控制器3502可以根據工作負載3516產生示範軟體搜尋空間3518及示範硬體搜尋空間3520 。
在一些例子中,回應於對本體產生器3506查詢有關對應於工作負載3516的先前AutoML搜尋的HW/SW解決方案,控制器3502可以產生軟體搜尋空間3518及硬體搜尋空間3520。例如,控制器3502可以以對應於該工作負載3516的識別符查詢本體產生器3506可以執行工作負載3516的初始或種AI/ML模型等。在一些此等例子中,本體產生器3506可以識別出在本體資料庫3508中的初始或種AI/ML模型與另一AI/ML模型的相關性。例如,本體產生器3506可以由ML系統組態器3402的先前搜尋運行等追蹤與之學習。在一些例子中,本體產生器3506可以搜尋本體資料庫3508有關此等先前搜尋、運行等。例如,本體資料庫3508可以儲存來自先前搜尋的跨硬體及/或軟體域的與軟體模板3512及/或硬體模板3514相關的學習、映射等。在一些例子中,先前搜尋可以對應於前一工作負載的搜尋。在一些例子中,先前搜尋可以對應於搜尋工作負載3516的迭代。有利地,控制器3502可以利用本體產生器3506以識別出細粒可組構建築方塊,來混合與匹配被用在產生軟體搜尋空間3518及硬體搜尋空間3520的動態彈性模板產生。
有利地,控制器3502可以提供涵蓋硬體與軟體架構的多重模板(如,軟體模板3512、硬體模板3514等)的表達搜尋空間表示法(如,軟體搜尋空間3518、硬體搜尋空間3520等),其中這些模板可以在HW/SW共同設計搜尋期間可被動態修改。有利地,控制器3502可以促使可以為ML系統組態器3402所實施的HW/SW共同設計系統,以跨越多重架構式樣探索更大更豐富的HW/SW設計空間。在一些例子中,對應於軟體模板3512及/或硬體模板3514之架構式樣之一(或多者)在其個別組的模組與連接性(如,連接、拓樸、輸入/輸出等的選擇及/或組態等)可以有彈性。在一些此等例子中,該等組模組與連接性可以透過可以包含在軟體模板3512中的可組構建築方塊(如,在軟體模板3512中的可組構軟體建築方塊)及/或在硬體模板3514中的可組構建築方塊(如,在硬體模板3514中的可組構硬體建築方塊)加以形成。有利地,相較於先前AutoML手法,控制器3502及/或大體來說,ML系統組態器3402可以改良發現更有效硬體架構實例及其對應共同設計軟體的可能性,因為控制器3502的例示例子可以利用更大HW/SW搜尋空間及其可組構版本。
在一些例子中,控制器3502、評估器3504、本體產生器3506等及/或大體來說,ML系統組態器3402可以利用人工智慧及/或機器學習技術,以識別出及/或產生ML計算節點3517,以執行工作負載3516。包含機器學習(ML)、深度學習(DL)、及/或其他人工機器驅動邏輯的人工智慧(AI)促使機器(如,電腦、邏輯電路等)使用一模型以處理輸入資料以根據該機器經由訓練程序(如,機器學習訓練程序)所先前學習到的型樣及/或相關性產生輸出。例如,控制器3502、評估器3504、本體產生器3506、及/或大體來說,ML系統組態器3402可以以資料來訓練,以認出型樣及/或相關性,並當處理輸入資料時,遵循此等型樣及/或相關性,使得其他輸入造成與所認出型樣及/或相關性相符的輸出。
有很多不同類型的機器學習模型及/或機器學習架構存在。在一些例子中,ML系統組態器3402產生軟體3519作為類神經網路模型。有利地,使用類神經網路模型促使硬體3521及/或更大體來說,ML計算節點3517執行AI/ML工作負載。通常,適用於此所揭露的示範手法中的機器學習模型/架構包含加強學習網路。然而,其他類型的機器學習模型可以額外或替代地被使用,例如遞歸類神經網路(RNN)、監督學習人工類神經網路(ANN)模型、叢集模型、分類模型等、及/或其組合。示範監督學習ANN模型可以包含兩層(2-層)徑向基底類神經網路(RBN)、學習向量量化(LVQ)分類類神經網路等。示範叢集模型可以包含k-平均叢集、階層叢集、平均移位叢集、密度為基叢集等。示範分類模型可以包含邏輯式迴歸、支援向量機器或網路、Naive Bayes等。在一些例子中,ML系統組態器3402可以編譯及/或產生軟體3519作為質輕機器學習模型。
通常,實施ML/AI系統涉及兩階段,學習/訓練階段及推理階段。在學習/訓練階段,訓練演算法被用以訓練ML系統組態器3402,以依據基於如訓練資料的型樣及/或相關性操作。通常,ML系統組態器3402包含內部參數,其導引輸入資料如何被轉換為輸出資料,例如,透過在ML系統組態器3402內的一連串的節點及連接,以將輸入資料轉換為輸出資料。另外,超參數被使用作為訓練程序的一部分,以控制如何進行學習(如,學習率、在機器學習模型中所使用的層數等)。超參數被界定為訓練參數,其係在初始訓練程序前被確定。在一些例子中,超參數可以控制學習如何執行(如,學習率、予以被用於機器學習模型中的層數等)。在一些例子中,控制模型效能及訓練速度的超參數可以為學習率、人工智慧訓練型樣數、類神經網路的拓樸、類神經網路的尺寸、及/或正則化參數。此等超參數被例如試誤法所選擇,以到達最佳模型效能。在一些例子中,也可以執行重新訓練。此重新訓練可以相應於使用者的超越(override)而執行。
不同類型訓練可以根據ML/AI模型的類型及/或預期輸出加以執行。例如,加強學習包含與其環境互動的機器、代理等、執行動作、及試誤技術學習。在其他例子中,監督訓練使用輸入及對應預期(如,標記)輸出,以選擇用於AI/ML模型的參數(如,藉由選擇參數組合的迭代),以降低模型錯誤。如在此所用,標記表示機器學習模型的預期輸出(如,分類、預期輸出值等)。或者,未監督訓練(如,用於深度學習、機器學習次組等)涉及由輸入推理型樣,以選擇用於ML/AI模型的參數(如,沒有預期(如,標記)輸出的優點)。額外及/或替代地,任何其他訓練技術可以被使用,例如,隨機梯度下降、模擬降溫、粒子群最佳化、進化演算法、基因演算法、及/或非線性共軛梯度。
一旦訓練完成,ML系統組態器3402被部署使用作為可執行構造,其處理輸入並根據在模型中界定的節點的網路與連接,提供輸出。例如,ML系統組態器3402可以在推理階段中操作以處理資料。在推理階段,予以分析的資料(如,活資料、工作負載3516等)係被輸入至ML系統組態器3402,及ML系統組態器3402執行以建立輸出。此推理階段可以被認為是AI“思考”,以根據由訓練、由加強學習等學習到什麼而產生輸出。在一些例子中,在被使用作為至ML系統組態器3402的輸入之前,輸入資料先受到預處理。再者,在一些例子中,輸出資料可能在由ML系統組態器3402所產生之後,受到後處理,以將該輸出轉換為有用結果(如,軟體3519的編譯、產生與硬體3521相關的組態檔案等)。
在一些例子中,ML系統組態器3402例示例子可以儲存在一或更多計算系統的記憶體中或者一或更多遠端計算系統的資料庫中。ML系統組態器3402然後可以為一或更多計算系統或一或更多不同計算系統所執行。
在例示例子中,ML系統組態器3402可以使用加強學習,來組構及/或造成ML計算節點3517的編譯。然而,任何其他AI/ML演算法或技術也可以額外或替代地使用。在一些例子中,ML系統組態器3402可以迭代地產生提議HW/SW實例3522,直到錯誤的層次不再降低及/或滿足臨限(如,準確度臨限、訓練臨限等)為止。如於此所用,“臨限”被表達為例如以任何形式表達的數值的資料,其可以為處理器電路所使用作為比較操作的參考。如於此所用,資料為任何形式之資訊,其可以被處理器電路所消化、處理、解譯及/或調處,以產生結果。所產生結果本身可以為資料。如在此所用,模型為一組可以被處理器電路所消化、處理、解譯及/或調處,以產生一結果的指令及/或資料。經常,模型使用輸入來操作,以依據在模型中所反映的一或更多關係,產生輸出資料。模型可以根據訓練資料。
在一些例子中,ML系統組態器3402利用貝氏超參數最佳化,以確定最佳及/或改良或更有效網路及/或硬體架構,以避免模型過擬合並改良ML計算節點3517的軟體3519及/或硬體3521的整體可應用性。或者,ML系統組態器3402可以使用任何其他類型最佳化。
在示範操作中,控制器3502可以接收針對工作負載3516的類型(不同類型的工作負載)的ML系統組態器3402的先前運行的歷史。控制器3502可以藉由以在先前運行中所用的一或更多AI/ML模型,填充軟體搜尋空間3518,而產生軟體搜尋空間3518。在一些例子中,控制器3502可以根據工作負載3516以一或更多不同類型AI/ML模型填充軟體搜尋空間3518。在所例示例子中,軟體搜尋空間3516包含一或更多類神經網路(NN)演算法及/或其組態。額外及/或替代地,軟體搜尋空間3516可以包含任何其他類型的AI/ML模型、演算法等。例如,控制器3502可以藉由檢視及/或搜尋可組構建築方塊資料庫3510發現及/或識別出一或更多RNN、一或更多轉換器等。
在例示操作中,控制器3502可以藉由以在先前運行中所使用的一或更多類型硬體及/或其組態,填充硬體搜尋空間3520,而產生硬體搜尋空間3520。在一些例子中,控制器3502可以根據工作負載3516以一或更多不同類型AI/ML模型,填充硬體搜尋空間3520。在所例示例子中,硬體搜尋空間3520包含一或更多NN加速器。額外或替代地,硬體搜尋空間3520可以包含任何其他類型的硬體(如,一或更多CPU、一或更多FPGA等)。
在示範操作中,控制器3502可以產生示範提議HW/SW實例3522並提供提議HW/SW實例3522至評估器3504。在一些例子中,提議的HW/SW實例3522可以實施候選或提議ML計算節點。例如,提議HW/SW實例3522可以是由具有第一硬體組態的NN加速器與具有第一軟體組態的NN演算法所實施的可組構ML計算節點。
在示範操作中,評估器3504可以執行示範效能模型化3524,以產生及/或輸出示範評估參數3526。例如,評估器3504可以模擬、仿真、除錯等提議HW/SW實例3522,以產生評估參數3526。例如,評估參數3526可以為代表及/或指示準確度、潛時、完成工作負載的週期數、或提議的HW/SW實例3522的產出量的評估度量的值所實施。在一些例子中,評估參數可以代表及/或指示處理器或與提議HW/SW實例3522相關的時鐘頻率、組織頻率、讀取記憶體頻寬、寫入記憶體頻寬、硬體降額定因數、記憶體埠的數量、資料處理單元(DPU)的數量、模型層(如,類神經網路層、卷積層等)的數量、啟動精準度(如,予以處理的啟動值的精準度)、權重精準度(如,予以處理的權重值的精準度)等、及/或其組合。
在一些例子中,評估器3504可以執行及/或樣例化分析、軟體模擬、暫存器轉移層(RTL)模擬,以驗證數位積體電路(IC)操作、仿真(如,NN加速器仿真器)的正確性等。在一些此等例子中,當NN加速器以第一軟體組態執行NN演算法時,評估器3504可以藉由以第一硬體組態,來模擬、仿真、除錯等NN加速器,以執行該效能模型化3524。例如,評估器3504可以樣例化執行NN演算法的NN加速器的模擬,以輸出評估參數3526。在一些例子中,評估器3504可以樣例化執行NN演算法的NN加速器的仿真,以確定評估參數3526。
在示範操作中,評估器3504可以輸出示範報酬函數3528。在一些例子中,報酬函數3528可以為數學函數所實施,其捕捉想要的最佳化(如,數學函數包含用於最佳化產出量的產出量的較高權重)及想要的罰則(如,數學函數包含用於最佳化產出量以潛時為代價的潛時較低權重)。例如,報酬函數3528可以包含來自評估器3504的一或更多輸出(如,評估參數3526)。在一些例子中,評估器3504可以產生報酬函數3528,以至少包含:如準確度的具有第一權重的第一輸出;及如產出量的具有第二權重的第二輸出。在一些例子中,評估參數3526可以使用第一輸出(及/或第一權重)及第二輸出(及/或第二權重)加以實施。評估器3504可以產生第一權重大於第二權重,以調用及/或使得控制器3502增加強調增加及/或最佳化準確度及降低強調增加及/或最佳化第二輸出。在一些例子中,回應於取得報酬函數3528,控制器3502可以改變、修改、及/或調整提議HW/SW實例3522,以根據報酬函數3528的第一與第二輸出的個別第一與第二權重,增加準確度與降低產出量。在一些例子中,當執行NN演算法時,報酬函數3528可以為提議HW/SW實例3522的準確度。在所例示例子中,報酬函數3528可以對應於被提供及/或回授至控制器3502的評估結果,以更新(如,迭代更新)下一版本的提議HW/SW實例3522。
在示範操作中,控制器3502可以根據提議報酬函數3528更新提議HW/SW實例3522。例如,控制器3502可以改變製造商模型、NN加速器的組態等,以最大化及/或增加提議報酬函數3528。在一些此等例子中,控制器3502可以修改硬體互連(如,NN加速器的部分的輸入及/或輸出、組態影像(如NN加速器的一或更多組態暫存器的值)等,及/或其任意組合。或者,控制器3502也可以以不同類型硬體,如GPU替換NN加速器。在一些例子中,控制器3502可以根據提議報酬函數3528修改NN演算法。例如,控制器3502可以改變NN演算法的層數、NN演算法的啟動及/或權重的值、互連(如,輸入及/或輸出)等。或者,控制器3502可以以不同類型AI/ML演算法,如轉換器,來替代該NN演算法。
在一些例子中,回應於報酬函數3528被最大化及/或滿足例如報酬臨限的臨限,控制器3502可以輸出提議HW/SW實例3522作為ML計算節點3517,以執行工作負載3516。例如,控制器3502可以編譯提議HW/SW實例3522的軟體部分為被執行於HW/SW實例3522的硬體部上的可執行構造(如,可執行檔案、機器可讀可執行等)。
圖36為示範ML系統組態電路3600的方塊圖,以組構ML計算節點(如,圖35的ML計算節點3517),以執行工作負載(如,圖35的工作負載3516)。在一些例子中,圖36的ML系統組態電路3600可以實施圖34及/或35的ML系統組態器3402。圖36的ML系統組態電路3600可以被執行指令的例如CPU的處理器電路所樣例化(如,建立實例、持續任何時間長度的帶入、實質化、實施等)。額外及/或替代地,圖36的ML系統組態電路3600可以被ASIC或被建構以執行對應指令的操作的FPGA所樣例化(如,建立實例、持續任何時間長度的帶入、實質化、實施等)。應了解,部分或所有圖36的ML系統組態電路3600可以因此被同時或在不同時間樣例化。部分或所有ML系統組態電路3600可以被樣例化於同時執行在硬體及/或串列執行在硬體上的一或更多線程中。再者,在一些例子中,部分或所有圖36的ML系統組態電路3600可以為一或更多執行在微處理器上的虛擬機器及/或容器所實施。
ML系統組態電路3600的例示例子包含示範介面電路3610、示範ML軟體組態電路3620、示範ML硬體組態電路3630、示範組態評估電路3640、示範本體產生電路3650、示範工作負載執行電路3660、示範資料儲存3670、及示範匯流排3680。資料儲存3670的例示例子包含示範軟體模板3672、示範硬體模板3674、示範互連拓樸3676、及示範歷史組態3678。
在圖36的例示例子中,介面電路3610、ML軟體組態電路3620、ML硬體組態電路3630、組態評估電路3640、本體產生電路3650、工作負載執行電路3660、資料儲存3670係與匯流排3680相通訊。例如,匯流排3680可以為積體電路間(I2C)匯流排、串列週邊介面(SPI)匯流排、週邊組件互連(PCI)匯流排、或快速週邊組件互連(PCIe或PCIE)匯流排的至少之一所實施。額外或替代地,匯流排3680可以為任何其他類型計算或電匯流排所實施。
圖36的ML系統組態電路3600的例示例子包含介面電路3610,以接收執行AI/ML工作負載的請求。例如,介面電路3610可以接收來自使用者、計算或電子系統等的請求,以根據工作負載3516組構AutoML解決方案(如,硬體及/或軟體的組合)。在一些例子中,介面電路3610可以接收AI/ML模型與對應硬體的執行AI/ML工作負載的請求。在一些例子中,介面電路3610可以接收AI/ML工作負載。
圖36的ML系統組態電路3600的例示例子包含ML軟體組態電路3620,以根據工作負載,產生第一組態的一或更多模型(如,一或更多ML模型、一或更多AI/ML模型等)。在一些例子中,ML軟體組態電路3620可以根據請求或歷史組態的至少之一,產生軟體搜尋空間。例如,ML軟體組態電路3620可以填充及/或產生軟體搜尋空間3518,以包含在本體資料庫3508或可組構建築方塊資料庫3510的至少之一中所識別出的一或更多AI/ML模型。在一些此等例子中,ML軟體組態電路3620可以根據工作負載3416或其態樣或其部分,產生軟體搜尋空間3518。
在一些例子中,ML軟體組態電路3620使用API以該工作負載查詢組態資料庫。例如,可組構建築方塊資料庫3510之一(或多者)可以實施組態資料庫,及ML軟體組態電路3620可以查詢該可組構建築方塊資料庫3510之一(或多者)。在一些此等例子中,ML軟體組態電路3620可以查詢可組構建築方塊資料庫3510之一(或多者),以工作負載3516或其態樣作為輸入。
在一些例子中,ML軟體組態電路3620確定用於AI/ML模型的層數。例如,ML軟體組態電路3620可以識別出在軟體模板3512、軟體模板3672等中的CNN。在一些此等例子中,ML軟體組態電路3620可以確定CNN的層數。
在一些例子中,ML軟體組態電路3620確定AI/ML模型的層的權重。例如,ML軟體組態電路3620可以識別出對應於軟體模板3512中的CNN的權重值。在一些此等例子中,ML軟體組態電路3620可以利用在軟體模板3512中所識別出的權重、確定新的權重、調整一或多數權重的值等,及/或其任意組合。
在一些例子中ML軟體組態電路3620確定AI/ML模型的訓練類型。例如,ML軟體組態電路3620可以確定加強學習係相關於在軟體模板3512中的CNN。在一些例子中,ML軟體組態電路3620可以選擇CNN的不同類型訓練,例如,隨機梯度下降、模擬降溫、粒子群最佳化、進化演算法、基因演算法、非線性共軛梯度等。
在一些例子中,ML軟體組態電路3620確定超參數,以訓練AI/ML模型。例如,ML軟體組態電路3620可以識別出對應至軟體模板3512的CNN的超參數、超參數的值等。在一些此等例子中,ML軟體組態電路3620可以利用在軟體模板3512中所識別出的超參數,確定(一或多數)新的超參數、調整一或多數超參數的值等、及/或其任意組合。
在一些例子中,ML軟體組態電路3620確定是否有另一AI/ML模型被識別出。例如,ML軟體組態電路3620除了CNN外,可以確定轉換器模型被識別出。在一些此等例子中,ML軟體組態電路3620可以確定一個以上AI/ML模型已經被識別出,例如,CNN與轉換器模型。在一些此等例子中,ML軟體組態電路3620可以根據在一或多數AI/ML模型間的連接產生一拓樸(如,互連或互連拓樸、輸入/輸(I/O)拓樸等)。例如,ML軟體組態電路3620可以選擇CNN為第一或主模型及轉換器模型為第二或次模型。例如,ML軟體組態電路3620可以確定CNN及轉換器模型可以藉由將CNN的輸出連接至轉換器模型的輸入,而耦接在一起。
在一些例子中,ML軟體組態電路3620根據評估參數調整第一組態(如,予以包含在提議HW/SW實例3522中的軟體的組態)。例如,評估器3504可以根據提議HW/SW實例3522的評估,計算及/或確定評估參數3526。在一些此等例子中,評估器3504可以確定評估參數3526的第一評估參數為準確度參數(如,提議HW/SW實例3522的輸出準確度,準確度評估參數等)。
在一些例子中,ML軟體組態電路3620確定是否以不同AI/ML模型替換第一AI/ML模型。例如,ML軟體組態電路3620可以確定以不同模型,例如,ANN、DNN等替換CNN。在一些此等例子中,ML軟體組態電路3620可以根據以增加及/或改良該準確度參數的值的努力方向中的準確度參數的值,確定替換該CNN。在一些例子中,回應於確定以不同AI/ML模型替換第一AI/ML模型,該ML軟體組態電路3620可以識別出在組態資料庫中的第二ML模型。例如,ML軟體組態電路3620可以識別出在軟體模板3512中的ANN、DNN等。在一些例子中,ML軟體組態電路3620根據以第二AI/ML模型替換第一AI/ML模型,而產生新組態。例如,ML軟體組態電路3620可以根據以不同AI/ML模型替換CNN,而產生提議HW/SW實例3522的新的更新等的版本。
在一些例子中,ML軟體組態電路3620可以確定將第二AI/ML模型增加至組態。例如,ML軟體組態電路3620可以確定配合CNN將另一AI/ML模型,例如,ANN、DNN等加入。在一些此等例子中,ML軟體組態電路3620可以確定根據評估參數的值,例如,準確度參數的值,加入另一AI/ML模型。在一些例子中,ML軟體組態電路3620可以識別出第二AI/ML模型,以藉由識別出在軟體模板3512,及/或,更大體來說,在可組構建築方塊資料庫3510中的第二AI/ML模型,而識別出加入至組態的第二AI/ML模型。
在一些例子中,回應於確定將另一AI/ML模型加入至提議HW/SW實例3522的組態,ML軟體組態電路3620確定第一AI/ML模型的一或更多第一層執行工作負載的第一部分,及該第二AI/ML模型的一或更多第二層執行工作負載的第二部分。例如,ML軟體組態電路3620可以識別出(或選擇)CNN的一或更多第一層以執行工作負載3516的第一部分,及識別出(或選擇)ANN、DNN等的一或更多第二層以執行工作負載3516的第二部分。在一些例子中,ML軟體組態電路3620可以根據該一或更多第一層與一或更多第二層的拓樸,確定新組態。例如,ML軟體組態電路3620可以根據耦接至第一AI/ML模型與第二AI/ML模型的拓樸,確定提議HW/SW實例3522的新及/或更新實例、版本等。
圖36的ML系統組態電路3600的例示例子包含ML硬體組態電路3630,以根據AI/ML工作負載,產生硬體的第二組態。在一些例子中,ML硬體組態電路3630可以使用API以AI/ML工作負載查詢組態資料庫。例如,可組構建築方塊資料庫3510之一(或多者)可以實施組態資料庫,及ML硬體組態電路3630可以查詢可組構建築方塊資料庫3510之一(或多者)。在一些此等例子中,ML硬體組態電路3630可以以工作負載3516或其態樣作為輸入,查詢可組構建築方塊資料庫3510之一(或多者)。
在一些例子中,ML硬體組態電路3630可以識別出硬體的第一方塊(或部分)以執行矩陣-矩陣工作負載。例如,工作負載3516可以包含矩陣-矩陣計算操作、向量-向量計算操作、矩陣-向量計算操作等、及/或其任何組合。在一些例子中,ML硬體組態電路3630可以識別出GPU(或其他硬體)的第一核心,以執行矩陣-矩陣工作負載。在一些此等例子中,ML硬體組態電路3630可以識別出第一核心,及/或更大體來說,在硬體模板3514、硬體模板3674等之一中的GPU。
在一些例子中,ML硬體組態電路3630可以識別出該硬體的第二方塊(或部分)以執行向量-向量工作負載。例如,ML硬體組態電路3630可以識別出該GPU(或其他硬體)的第二核心,以執行向量-向量工作負載。在一些此等例子中,ML硬體組態電路3630可以識別出第二核心,及/或更大體來說,在硬體模板3514之一中的GPU。
在一些例子中,ML硬體組態電路3630可以識別出硬體的第三方塊(或部分),以執行矩陣-向量工作負載。例如,ML硬體組態電路3630可以識別出GPU(或其他硬體)的第三核心,以執行矩陣-向量工作負載。在一些此等例子中,ML硬體組態電路3630可以識別出第三核心,及/或更大體來說,在硬體模板3514之一中的GPU。
在一些例子中,ML硬體組態電路3630可以識別出一暫存器檔案,以組態個別的第一方塊、第二方塊、及/或第三方塊。例如,ML硬體組態電路3630可以識別出與該GPU相關的暫存器檔案,該暫存器檔案可以被在硬體模板3514之一中被識別。在一些此等例子中,暫存器檔案可以包含第一組態,以組態GPU的第一核心;第二組態,以組態GPU的第二核心;及/或第三組態,以組態該GPU的第三核心。
在一些例子中,ML硬體組態電路3630確定是否已經識別出另一類型的硬體及/或另一實例的硬體。例如,ML硬體組態電路3630除了第一實例的GPU外,可以確定另一實例的GPU被識別出。在一些例子中,ML硬體組態電路3630可以確定不同類型的硬體,例如,AI處理器已經在硬體模板3514中被識別出。在一些此等例子中,ML硬體組態電路3630可以根據一或多數第一GPU與第二GPU或AI處理器間之連接,產生拓樸(如,互連或互連拓樸、輸入/輸出(I/O)拓樸、互連拓樸3676之一(或多者)等)。例如,ML硬體組態電路3630可以選擇第一GPU為第一或主硬體及第二GPU或AI處理器為第二或次硬體。例如,ML硬體組態電路3630可以確定第一GPU及第二GPU或AI處理器可以藉由將第一GPU的輸出連接至第二GPU或AI處理器的輸入而被耦接在一起。
在一些例子中,ML硬體組態電路3630根據評估參數,調整第二組態(如,予以包含在提議HW/SW實例3522中的硬體的組態)。例如,評估器3504可以根據提議HW/SW實例3522的評估,計算及/或確定評估參數3526。在一些此等例子中,評估器3504可以確定評估參數3526的第一評估參數為產出量參數(如,提議HW/SW實例3522的輸出的產出量、產出量評估參數等)。
在一些例子中,ML硬體組態電路3630確定是否以不同硬體替換第一硬體。例如,ML硬體組態電路3630可以確定以如CPU、AL處理器、FPGA等的不同硬體替換GPU。在一些此等例子中,ML硬體組態電路3630可以根據努力以增加及/或改良產出量參數的值的一個值,確定替換該GPU。在一些例子中,回應於確定以不同硬體替換第一硬體,該ML硬體組態電路3630可以識別出在組態資料庫中的第二硬體。例如,ML硬體組態電路3630可以識別出在硬體模板3514中的CPU、AI處理器、FPGA等。在一些例子中,ML硬體組態電路3630根據以第二硬體替換該第一硬體,來產生新組態。例如,ML硬體組態電路3630可以根據以不同硬體替換GPU,產生提議HW/SW實例3522的新的、更新等的版本。
在一些例子中,ML硬體組態電路3630可以確定將第二硬體加至該組態。例如,ML硬體組態電路3630可以確定以將例如CPU、另一GPU、AI處理器、FPGA等的額外硬體配合第一GPU加入。在一些此等例子中,ML硬體組態電路3630可以根據評估參數的值,例如產出量參數的值,確定加入額外硬體。在一些例子中,ML硬體組態電路3630可以藉由識別出在硬體模板3514中的第二硬體,及/或更大體來說,在可組構建築方塊資料庫3510中的第二硬體,識別出第二硬體以加入該組態。
在一些例子中,回應於確定將硬體加入至提議HW/SW實例3522的組態,ML硬體組態電路3630確定第一硬體的一或更多第一部分,以執行工作負載的第一部分;及該第二硬體的一或更多第二部分執行該工作負載的第二部分。例如,ML硬體組態電路3630可以識別出(或選擇)第一GPU的一或更多第一核心以執行工作負載3516的第一部分;及識別出(或選擇)第二GPU、AI處理器、CPU、FPGA等的一或更多第二核心,以執行該工作負載3516的第二部分。在一些例子中,ML硬體組態電路3630可以根據該一或更多第一部分及該一或更多第二部分的拓樸,確定新組態。例如,ML硬體組態電路3630可以根據耦接第一硬體與第二硬體的拓樸,確定提議HW/SW實例3522的新及/或更新實例、版本等。
圖36的ML系統組態電路3600的例示例子包含組態評估電路3640,以根據根據基於第一組態與第二組態的工作負載的執行,產生評估數。例如,組態評估電路3640產生評估參數3526。在一些此等例子中,組態評估電路3640可以回應於利用提議HW/SW實例3522的工作負載3516(或不同工作負載)的仿真、模擬等、執行,產生評估參數3526。在一些此等例子中,組態評估電路3640可以根據組構提議HW/SW實例3522的軟體的第一組態(如,一或更多AI/ML模型)及硬體的第二組態(例如,一或更多實例及/或類型的硬體),評估提議HW/SW實例3522。
在一些例子中,組態評估電路3640可以確定評估參數是否滿足臨限。例如,組態評估電路3640可以確定準確度參數的第一值是否滿足準確度臨限。在一些此等例子中,回應於確定第一值大於準確度臨限,組態評估電路3640可以確定第一值滿足該準確度臨限。例如,組態評估電路3640可以確定40%的準確度參數並未滿足90%的準確度臨限,因為40%小於90%。在一些例子中,組態評估電路3640可以確定95%的準確度參數滿足90%的準確度臨限,因為95%大於90%。額外或替代地,組態評估電路3640可以確定一或更多其他評估參數(如,潛時參數、產出量參數等)是否滿足一或更多個別評估臨限(如,潛時臨限、產出量臨限等)。
圖36的ML系統組態電路3600的例示例子包含本體產生電路3650,以產生、更新、及/或維持本體資料庫。在一些例子中,本體產生電路3650根據可組構建築方塊資料庫3510或應用儲存3515的至少之一,產生本體資料庫3508。在一些此等例子中,本體產生電路3650可以藉由包含在不同AI/ML模型間之相關性、其組態、AI/ML工作負載的類型等、及/或其任意組合,而產生本體資料庫3508。在一些此等例子中,相關性可以由識別符、變數、指標等、或任何其他識別資料結構加以實施。在一些例子中,本體產生電路3650可以根據提議HW/SW實例3522、如歷史組態3678的歷史組態、評估參數3526、報酬函數3528等、及/或其任意組合更新本體資料庫3508。例如,本體產生電路3650可以根據提議HW/SW實例3522的先前版本、與之相關的評估參數3526之一(或多者)等,來更新本體資料庫3508。
在一些例子中,本體產生電路3650根據歷史組態識別出AI/ML模型。例如,本體產生電路3650可以根據先前產生ML計算節點、提議HW/SW實例等、及/或其任意組合,識別出如NN的AI/ML模型。在一些例子中,本體產生電路3650根據例如歷史組態3678的歷史組態,識別出硬體。例如,本體產生電路3650可以根據先前產生ML計算節點、提議HW/SW實例等、及/或其任意組合,識別出如GPU的硬體。
圖36的ML系統組態電路3600的例示例子包含工作負載執行電路3660,以部署計算節點以執行工作負載。例如,工作負載執行電路3660可以部署ML計算節點3517,以執行工作負載3516。在一些此等例子中,工作負載執行電路3660可以回應於一或更多評估參數滿足一或更多個別臨限,而部署ML計算節點3517。在一些例子中,工作負載執行電路3660可以藉由使用由ML軟體組態電路3620所確定的軟體組態編譯軟體3519,而部署ML計算節點3517。在一些例子中,工作負載執行電路3660可以藉由組態使用由ML硬體組態電路3630所確定的硬體組態的硬體3521而部署ML計算節點3517。在一些此等例子中,工作負載執行電路3660可以根據軟體組態與硬體組態,執行可以由軟體3519所實施的一或更多AI/ML模型。
圖36的ML系統組態電路3600的例示例子包含資料儲存3670以記錄資料(如,軟體模板3672、硬體模板3674、互連拓樸3676、歷史組態3678等)。資料儲存3670可以以揮發記憶體(如,同步動態隨機存取記憶體(SDRAM)、動態隨機存取記憶體(DRAM)、RAMBBUS動態隨機存取記憶體(RDRAM)等)及/或非揮發記憶體(如,電可抹除可程式唯讀記憶體(EEPROM)、快閃記憶體、硬體機(HDD)、固態硬碟(SSD)機等)所實施。資料儲存3670可以額外或替代地以一或更多雙資料率(DDR)記憶體、如DDR、DDR2、DDR3、DDR4、DDR5、行動DDR(mDDR)、DDR SDRAM等實施。資料儲存3670可以額外或替代地以例如HDD、雷射光碟(CD)機、數位多功能光碟(DVD)機、SSD機、安全數位(SD)卡、微型快閃(CF)卡等的一或更多大量儲存裝置實施。雖然在所例示例子中,資料儲存3670係被例示為單一資料儲存,但資料儲存3670可以以任意數量及/或類型的資料儲存加以實施。再者,在資料儲存3670中所儲存的資料可以為任何資料格式,例如,如二進制資料、逗號定界資料、欄標定界資料、結構化查詢語言(SQL)結構等。在一些例子中,資料儲存3670可以包含及/或實施一或更多資料庫。在此所用之用語“資料庫”表示相關資料的有組織體,而不管資料或其組織體所呈現的方式為何。例如,相關資料的組織體可以為一或更多的表、圖、格、包、資料報、框、檔案、文件、報告、名單的形式或任何其他形式。
在一些例子中,軟體模板3672可以為圖35的軟體模板3512所實施。例如,軟體模板3672可以包含對應於第一類型AI/ML模型(如,譬如ANN、CNN、DNN、RNN等之NN)及/或其相關組態的第一模板。在一些此等例子中,軟體模板3672可以包含對應於第二類型AI/ML模型(如,轉換模型)及/或其組態、第三類型AI/ML模型(如,加強學習模型)及/或其組態等的第二模板。
在一些例子中,硬體模板3674可以為圖35的硬體模板3514所實施。例如,硬體模板3674可以包含:對應於第一類型硬體(如,CPU等)及/或其組態的第一模板;對應於第二類型硬體(如,GPU)及/或其組態、對應於第三類型硬體(如,AI處理器)及/或其組態等的第二模板。
在一些例子中,互連拓樸3676可以為軟體模板3512及/或硬體模板3514的部分所實施。例如,互連拓樸3676可以包含AI/ML網路拓樸(如,層組態等)、模型輸入、模型輸出等。在一些此等例子中,AI/ML網路拓樸、模型輸入、模型輸出等可以被包含在軟體模板3512的部分中。在一些例子中,互連拓樸3676可以包含硬體架構拓樸(如,核心耦接、印刷電路板佈局等)、輸入(如,裸金屬輸入、介面等)、輸出(如,裸金屬輸出、介面等)等。在一些此等例子中,硬體架構拓樸、輸入、輸出等可以被包含於硬體模板3514的部分中。
在一些例子中,歷史組態3678可以為本體資料庫3508的部分、及/或更大體來說,本體資料庫3508實施。例如,歷史組態3678可以包含先前產生、確定、識別出等的ML計算節點、提議HW/SW實例、工作負載等、及/或其任意組合。在一些例子中,歷史組態3678可以包含與ML計算節點中的硬體及/或軟體核心相關的發生或其他統計。
在一些例子中,ML系統組態電路3600包含用以接收工作負載的手段。例如,該接收手段可以為介面電路3610所實施。在一些例子中,介面電路3610可以為例如圖47的示範處理器電路4712的處理器電路所實施。例如,介面電路3610可以為執行機器可執行指令的圖345的示範通用處理器電路34500所樣例化,該機器可執行指令例如可以為圖41的至少方塊4102、圖42的方塊4202、圖43的方塊4302、圖46的方塊4602所實施。在一些例子中,介面電路3610可以為硬體邏輯電路所樣例化,該硬體邏輯電路可以為ASIC或圖346的FPGA電路34600所實施,其被建構以執行對應於機器可讀指令的操作。額外或替代地,介面電路3610可以為硬體、軟體、及/或韌體的任何其他組合所樣例化。例如,介面電路3610可以為至少一或更多硬體電路(如,處理器電路、分立及/或整合類比及/或數位電路、FPGA、ASIC、比較器、運算放大器(op-amp)、邏輯電路等)、發射器、接收器、收發器、數據機、住宅閘道、無線接取點、及/或任何類型的網路介面所實施,這些被結構以執行對應於部分或所有機器可讀指令及/或執行對應於機器可讀指令的部分或全部操作,而不執行軟體或韌體,但其他結構也同樣適用。
在一些例子中,ML系統組態電路3600包含第一手段,用以根據工作負載,產生用於產生一或更多機器學習模型的第一組態。在一些此等例子中,第一組態被儲存在第一組態資料庫,第一組態資料庫包含多數機器學習模型,及該多數機器學習模型包含一或更多機器學習模型。例如,用以產生的第一手段可以為ML軟體組態電路3620所實施。在一些例子中,ML軟體組態電路3620可以為如圖47的示範處理器電路4712的處理器電路所樣例化。例如,ML軟體組態電路3620可以為執行機器可執行指令的圖345的示範通用處理器電路34500所樣例化,該機器可執行指令例如為至少圖41的至少方塊4104及4114、圖42的方塊4202、4206、4208、4210、4212、4214、4216及4218、圖44的方塊4402、4404、4406、4408、4410、4412、4414、及4416、及圖46的方塊4604、4606、及4608所實施者。在一些例子中,ML軟體組態電路3620可以為硬體邏輯電路所樣例化,其可以為ASIC或建構以執行對應於該機器可讀指令的操作的圖346的FPGA電路34600所實施。額外或替代地,ML軟體組態電路3620可以為硬體、軟體及/或韌體的任意其他組合所樣例化。例如,ML軟體組態電路3620可以為被建構以執行部分或所有機器可讀指令及/或執行部分或所有對應於該機器可讀指令但不執行軟體或韌體的操作的至少一或更多硬體電路(如,處理器電路、分立及/或整合類比及/或數位電路、FPGA、ASIC、比較器、運算放大器(op-amp)、邏輯電路等)所實施,但其他結構也同樣地適用。
在該一或更多機器學習模型包含第一機器學習模型的一些例子中,該第一產生手段,用以:回應於評估參數未滿足該臨限,而識別出在第一組態資料庫中的第二機器學習模型;產生第二機器學習模型的第三組態;根據基於該第三組態的工作負載的執行,而確定該評估參數;及部署該第二機器學習模型,以根據該第三組態執行該工作負載。
在該一或更多機器學習模型包含第一機器學習模型的一些例子中,該第一產生手段,用以:回應於該評估參數未滿足該臨限,確定該第一機器學習模型的一或更多第一層,以執行該工作負載的第一部分;識別出在該第一組態資料庫中的第二機器學習模型;確定該第二機器學習模型之一或更多第二層,以執行該工作負載的第二部分;及根據該一或更多第一層與該一或更多第二層的拓樸,確定第三組態,該拓樸根據自該一或更多第一層的輸出作為至該一或更多第二層的輸入。
在該一或更多機器學習模型包含第一機器學習模型的一些例子中,該用以產生的第一手段,係用以:識別出在該第一組態資料庫中的第一機器學習模型;根據本體資料庫的查詢,以該第一機器學習模型的識別符作為輸入,識別出第二機器學習模型,該本體資料庫包含第一機器學習模型與第二機器學習模型的相關;及回應該評估參數滿足該臨限,根據該第一組態更新該本體資料庫。
在一些例子中,ML系統組態電路3600包含第二手段,用以產生硬體的第二組態。在一些此等例子中,第二組態係被儲存在第二組態資料庫中,該第二組態資料庫包含多數硬體的一或更多部分,及該多數硬體包含硬體。例如,用以產生的第二手段可以為ML硬體組態電路3630所實施。在一些例子中,ML硬體組態電路3630可以為如圖47的示範處理器電路4712的處理器電路所樣例化。例如,ML硬體組態電路3630可以為執行機器可執行指令的圖345的示範通用處理器電路34500所樣例化,該機器可執行指令係例如由至少圖41的方塊4106及4116、圖43的4302、4306、4308、4310、4312、4314、4316及4318、圖45的方塊4502、4504、4506、4508、4510、4512、4514及4516、及圖46的方塊4604、4606、及4608所實施。在一些例子中,ML硬體組態電路3630可以為硬體邏輯電路所樣例化,該硬體邏輯電路可以為ASIC或被建構以執行對應於該機器可讀指令的操作的圖346的FPGA電路34600所樣例化。額外或替代地,ML硬體組態電路3630可以為硬體、軟體及/或韌體的任意其他組合所樣例化。例如,ML硬體組態電路3630可以被建構以執行部分或有機器可讀指令及/或執行對應於該機器可讀指令但不執行軟體或韌體的部分或全部操作的至少一或更多硬體電路(如,處理器電路、分立及/或整合類比及/或數位電路、FPGA、ASIC、比較器、運算放大器(op-amp)、邏輯電路等)所實施,但其他結構也同樣適用。
在該一或更多部分包含至少一第一方塊、第二方塊、或第三方塊的一些例子中,用以產生的第二手段係用以:識別出該硬體的第一方塊,以執行矩陣-矩陣工作負載;識別出該硬體的第二方塊,以執行向量-向量工作負載;識別出該硬體的第三方塊,以執行矩陣-向量工作負載;及識別出用於個別第一方塊、第二方塊及第三方塊的暫存器檔案,該暫存器檔案用以儲存個別第一方塊、第二方塊、及第三方塊的狀態,該第二組態根據包含至少之一第一方塊、第二方塊、或第三方塊的拓樸。
在硬體為第一硬體的一些例子中,用以產生的第二手段係用以:回應於評估參數未滿足臨限,識別出在第二組態資料庫中的第二硬體;產生第二硬體的第三組態;根據以該第三組態中的該第二硬體的該工作負載的執行,確定該評估參數;及部屬具有該第三組態的該第二硬體,以執行該一或更多機器學習模型,以執行該工作負載。
在硬體為第一硬體的一些例子中,用以產生的第二手段係用以:回應於評估參數未滿足臨限,確定該第一硬體的一或更多第一部分,以執行該工作負載的第一部分;識別出在該第一組態資料庫中的第二硬體;確定該第二硬體的一或更多第二部分,以執行該工作負載的第二部分;及根據該一或更多第一部分及該一或更多第二部分的拓樸,確定第三組態,該拓樸係根據來自該一或更多第一部分的輸出作為至該一或更多第二部分的輸入。
在一些例子中,ML系統組態電路3600包含確定手段,用以根據工作負載的執行,確定評估參數。在一些此等例子中,工作負載的執行係根據該一或更多機器學習模型的第一組態及該硬體的第二組態。在一些此等例子中,第二組態被儲存於第二組態資料庫中,該第二組態資料庫包含多數硬體的一或更多部分,及多數硬體包含硬體。在一些例子中,其中評估參數係為第一評估參數,該確定手段,用以:確定包含具有第一權重的第一評估參數及具有第二權重的第二評估參數的報酬函數,該第一權重大於該第二權重;及回應於確定該第一評估參數或第二評估參數的至少之一未滿足該臨限,改變該第一組態或第二組態的至少之一以增加該第一評估參數或降低該第二評估參數的至少之一。例如,確定手段可以藉由組態評估電路3640所實施。在一些例子中,組態評估電路3640可以為如圖47的示範處理器電路4712的處理器電路所樣例化。例如,組態評估電路3640可以為執行機器可執行指令的圖345的示範通用處理器電路34500所樣例化,機器可執行指令係為至少圖41的方塊4108及4110、圖46的方塊4610及4612所實施者。在一些例子中,組態評估電路3640可以為硬體邏輯電路所樣例化,該硬體邏輯電路可以為ASIC或建構以執行對應於機器可讀指令的操作的圖346的FPGA電路34600所實施。額外或替代地,組態評估電路3640可以為硬體、軟體、及/或韌體的任意其他組合所樣例化。例如,組態評估電路3640可以為被建構以執行部分或所有機器可讀指令及/或執行對應於機器可讀指令的部分或所有操作但不執行軟體或韌體的至少一或更多硬體電路(如,處理器電路、分立及/或整合類比及/或數位電路、FPGA、ASIC、比較器、運算放大器(op-amp)、邏輯電路等)所實施,但其他結構也同樣地適用。
在一些例子中,ML系統組態電路3600包含根據評估參數,而產生、維護、及/或更新本體資料庫的手段。例如,產生、維護、及/或更新手段可以為本體產生電路3650所實施。在一些例子中,本體產生電路3650可以為例如圖47的示範處理器電路4712的處理器電路所樣例化。例如,本體產生電路3650可以為執行機器可執行指令的圖345的示範通用處理器電路34500所樣例化,該機器可執行指令係例如為至少圖41的方塊4112、圖42的方塊4204、圖43的方塊4304、及圖46的方塊4606所實施。在一些例子中,本體產生電路3650可以為硬體邏輯電路所樣例化,該邏輯電路可以為ASIC或被建構以執行對應於機器可讀指令的操作的圖346的FPGA電路34600所實施。額外或替代地,本體產生電路3650可以為硬體、軟體及/或韌體的任意其他組合所樣例化。例如,本體產生電路3650可以為被建構以執行部分或所有機器可讀指令及/或執行對應於機器可讀指令的部分或所有操作但不執行軟體或韌體的至少一或更多硬體電路(如,處理器電路、分立及/或整合類比及/或數位電路、FPGA、ASIC、比較器、運算放大器(op-amp)、邏輯電路等)所實施,但其他結構也同樣地適用。
在一些例子中,ML系統組態電路3600包含執行手段,用以在第二組態的硬體上,執行在第一組態的一或更多機器學習模型。在一些此等例子中,該執行係對評估參數滿足於一臨限作出一回應。在一些此等例子中,一或更多機器學習模型及硬體係被執行工作負載。例如,該執行手段可以為工作負載執行電路3660所實施。在一些例子中,該工作負載執行電路3660可以為例如圖47的示範處理器電路4712的處理器電路所樣例化。例如,組態評估電路3640可以為執行機器可執行指令的圖345的示範通用處理器電路34500所樣例化,該機器可執行指令係例如至少為圖41的方塊4118及圖46的方塊4616所實施。在一些例子中,工作負載執行電路3660可以為硬體邏輯電路所樣例化,該硬體邏輯電路可以是為ASIC或被建構以執行對應於機器可讀指令的操作的圖346的FPGA電路34600所實施。額外或替代地,工作負載執行電路3660可以為硬體、軟體、及/或韌體的任意其他組合所樣例化。例如,工作負載執行電路3660可以為被建構以執行部分或所有機器可讀指令及/或執行對應於機器可讀指令的部分或所有操作但不執行軟體或韌體的至少一或更多硬體電路(如,處理器電路、分立及/或整合類比及/或數位電路、FPGA、ASIC、比較器、運算放大器(op-amp)、邏輯電路等)所實施,但其他結構也同樣地適用。
在一些例子中,ML系統組態電路3600包含資料儲存手段。在一些例子中,資料可包含軟體模板3672、硬體模板3674、互連拓樸3676、歷史組態3678、或在此所述的任何其他資料。例如,儲存手段可以為資料儲存3670所實施。在一些例子中,資料儲存3670可以為例如圖47的示範處理器電路4712的處理器電路所樣例化。例如,資料儲存3670可以為執行機器可執行指令的圖345的示範通用處理器電路34500所樣例化。在一些例子中,資料儲存3670可以為硬體邏輯電路所樣例化,硬體邏輯電路可以為ASIC或被建構以執行對應於機器可讀指令的操作的圖346的FPGA電路34600所實施。額外或替代地,資料儲存3670可以為硬體、軟體、及/或韌體的任意其他組合所樣例化。例如,資料儲存3670可以為一或更多大量儲存裝置(如,圖47的一或更多大量儲存裝置4728)、被建構以執行部分或所有機器可讀指令及/或執行對應於機器可讀指令的部分或所有操作但不執行軟體或韌體的一或更多硬體電路(如,處理器電路、分立/或及整合類比及/或數位電路、FPGA、ASIC、比較器、運算放大器(op-amp)、邏輯電路等)所實施,但其他結構也同樣地適用。
雖然實施圖34及/或35的ML系統組態器3402 的示範方式係被例示於圖36,但示於圖36中的一或更多元件、程序、及/或裝置可以被組合、細分、重排列、省略、免除、及/或以任何其他方式實施。再者,示範介面電路3610、示範ML軟體組態電路3620、示範ML硬體組態電路3630、示範組態評估電路3640、示範本體產生電路3650、示範工作負載執行電路3660、示範資料儲存3670、示範匯流排3680之任一、及/或更大體來說,圖34及/或35的示範ML系統組態器3402可以為單獨硬體或硬體組合上軟體及/或韌體所實施。因此,例如,示範介面電路3610、示範ML軟體組態電路3620、示範ML硬體組態電路3630、示範組態評估電路3640、示範本體產生電路3650、示範工作負載執行電路3660、示範資料儲存3670、示範匯流排3680、及/或更大體來說,示範ML系統組態器3402可以為處理器電路、類比電路、數位電路、邏輯電路、可程式處理器、可程式微控制器、GPU、DSP、ASIC、可程式邏輯裝置(PLD)、及/或場可程式邏輯裝置(FPLD),例如,FPGA所實施。再者,圖34及/或35的示範ML系統組態器3402可以包含圖36所例示的元件、程序、及/或裝置之額外或替代的一或更多元件、程序、及/或裝置,及/或可以包含一個以上的所例示元件、程序及裝置的任一或全部。
圖37為用以產生如圖35的可組構ML計算節點3517的ML計算節點的示範工作流程3700的示意圖。工作流程3700包含圖35的可組構建築方塊資料庫3510的第一可組構建築方塊資料庫3510A,圖35的硬體模板3514的第一硬體模板3514A,圖35的本體產生器3506、圖35的本體資料庫3508、圖35的ML計算節點3517、及圖35的硬體3521。
第一硬體模板3514A的例示例子包含第一示範方塊3702、第二示範方塊3704、及示範暫存器檔案3706。在此例子中,第一方塊3702為矩陣-向量方塊(由MAT_VEC BLOCK所識別)。例如,第一方塊3702可以為硬體方塊或硬體的一部分,例如,圖34的GPU 3422(或圖34的CPU 3418、AI處理器3426、FPGA 3430等),其可以執行矩陣-向量計算操作。額外及/或替代地,第一方塊3702可以為軟體方塊、核心等,其可以包含機器可讀指令的一部分或片段。在一些此等例子中,第一方塊3702可以為碼所實施,其當為硬體或處理器電路所執行時,可以執行矩陣-向量計算。
在此例子中,第二方塊3702為向量-向量方塊(由VEC_VEC_BLOCK所識別)。例如,第二方塊3704可以為硬體方塊或硬體的一部分,例如,圖34的GPU 3422(或圖34的CPU 3418、AI處理器3426、FPGA 3430等),其可以執行向量-向量計算操作。額外及/或替代地,第二方塊3704可以為軟體方塊、核心等,其可以包含機器可讀指令的一部分或片段。在一些此等例子中,第二方塊3704可以為碼所實施,當其為硬體或處理器電路所執行時,可以執行向量-向量計算。
在此例子中,暫存器檔案3706可以包含一或更多暫存器檔案,其各個可以為處理器暫存器的一陣列、排等所實施。例如,暫存器檔案3706可以儲存支援工作負載的執行的處理器線程(如,CPU線程、GPU線程等)的狀態。
在圖37的例示例子中,工作流程3700當圖34及/或35的ML系統組態器3402根據第一硬體模板3514A,及/或更大體來說,第一可組構建築方塊資料庫3510A,產生第一示範組態3708(由CONFIGURATION ITERATION 34識別)。第一組態3708的例示例子包含第一方塊3702、第二方塊3704、及暫存器檔案3706的兩暫存器檔案。回應於產生第一組態3708,ML系統組態器3402可以根據利用第一組態3708的圖35的工作負載3516的執行,評估第一組態3708。本體產生器3506可以根據第一組態3708、與第一組態3708相關的評估參數等、及/或其任意組合,更新本體資料庫3508。
在圖37的例示例子中,工作流程3700包含根據第一硬體模板3514A、及/或更大體來說,第一可組構建築方塊資料庫3510A,產生第二示範組態3710(由CONFIGURATION ITERATION 35所識別)的ML系統組態器3402。在例示例子中,第二組態3710為第一組態3708的迭代、更新等。在一些例子中,第一組態3708的迭代可以根據與該第一組態3708相關的評估參數加以生效(如,用以增加如準確度、潛時、產出量等的評估參數值的動機所生效)。第二組態3710的例示例子包含第一方塊3702、兩實例的第二方塊3704、及暫存器檔案3706的三暫存器檔案。回應於產生第二組態3710,ML系統組態器3402可以根據以第二組態3710執行工作負載3516,而評估第二組態3710。本體產生器3506可以根據第二組態3710與第二組態3710相關的評估參數等、及/或其任意組合,更新本體資料庫3508。
有利地,ML系統組態器3402可以同時展開多重組的相關可組構建築方塊,各個涵蓋不同架構分類與設計式樣。例如,工作流程3700可以針對不同硬體同時(如,基本上同時)執行。在一些此等例子中,工作流程3700可以以基本上相同時間,針對CPU、GPU、AI處理器等執行。有利地,同時針對不同硬體展開多重組的相關可組構建築方塊可以造成滿足給定工作負載的要求的硬體的識別。例如,ML系統組態器3402可以根據適用於計算密集的AI模型但不適用於記憶體界限但較少計算密集工作負載的收縮陣列設計,確定AI處理器架構。因此,藉由同時以不同設計式樣,展開硬體架構允許ML系統組態器3402彈性展開,以完成在共同設計程序期間的最佳準確度及硬體效率組合,這些可以整個及/或部分地為工作流程3700所實施。類似地,工作流程3700可以藉由針對不同軟體,同時展開多重組的相關可組構建築方塊,而被執行於圖35的軟體搜尋空間3518中。以在類神經網路軟體搜尋為例,有多重類別的網路具有其本身有利特質(如,RNN、CNN、轉換器等)及其本身可組構建築方塊(如,RNN的矩陣x向量、用於CNN的卷積等)。
在工作流程3700期間,ML系統組態器3402可以根據多重組態迭代(如,第一組態3708、第二組態3710等)而產生及/或識別出ML計算節點3517。在此例子中,ML系統組態器3402可以根據第三示範組態3712(由CONFIGURATION  ITERATION N識別),產生ML計算節點3517。第三組態3712包含第一方塊3702、三實例的第三方塊3704、及暫存器檔案3706的兩暫存器檔案。本體產生器3506可以根據第三組態3712、與第三組態3712相關的評估參數等、及/或其任意組合,來更新本體資料庫3508。
圖38為另一示範工作流程3800的示意圖,以識別出如圖35的ML計算節點3517的可組態機器學習計算節點。工作流程3800的例示例子包含:圖35的可組構建築方塊資料庫3510的第二可組構建築方塊資料庫3510B、圖35的控制器3502、圖35的評估器3504、圖35的軟體搜尋空間3518、圖35的硬體搜尋空間3520、圖35的提議HW/SW實例3522、圖35的效能模型化3524、圖35的評估參數3526、圖35的報酬函數3528、及示範互連拓樸的程式館3802。
在例示例子中,第二可組構建築方塊資料庫3510B包含及/或實施互連拓樸的程式館3802。在一些例子中,互連拓樸的程式館3802可以為圖36的互連拓樸3676所實施。在例示例子中,互連拓樸的程式館3802描繪不同示範節點3804、3806、3808、3810的示範拓樸,節點包含第一示範節點3804、第二示範節點3806、第三示範節點3808、及第四示範節點3810。節點3804、3806、3808、3810的例示例子為異質計算節點,其可以為來自不同類型硬體的一或更多部分所實施。例如,第一節點3804包含第一示範硬體核心3812、第二示範硬體核心3814、及第三示範硬體核心3816。在一些此等例子中,第一硬體核心核心3812可以為GPU的硬體核心,第二硬體核心3814可以為AI處理器的硬體核心,及第三硬體核心3816可以為CPU的硬體核心。
在所例示例子中,各個節點3804、3806、3808、3810具有不同拓樸(如,互連組態)。例如,第一節點3804具有第一拓樸,其中各個核心3812、3814、3816為依序。第二節點3806具有第二拓樸,其中各個核心3812、3814、3816為耦接至另兩個核心。第三節點3808具有第三拓樸,其中一核心提供輸出給各個剩餘核心。第四節點3810具有第四拓樸,其中除了一個以外,所有其他核心提供其個別輸出至另一核心。或者,任何其他拓樸可以包含在該互連拓樸的程式館3802中。
工作流程3800可以大致實施第一示範操作3818及第二示範操作3820。例如,ML系統組態器3402可以藉由在給定候選AI模型架構(如,圖35的軟體3519、圖35的提議HW/SW實例3522的部分等)下,最佳化及/或改良異質系統解決方案(如,ML計算節點3517的示範實施方式)執行第一操作3818。在一些此等例子中,藉由迭代地評估節點3804、3806、3808、3810之一(或多者)及其個別拓樸,ML系統組態器3402可以迭代地展開提議HW/SW實例3522的硬體部分,以確定哪(些)節點3804、3806、3808、3810完成有興趣評估參數的改良及/或最佳化值。
在一些例子中,ML系統組態器3402可以藉由在該候選系統解決方案下,最佳化及/或改良AI模型,而執行第二操作3820。例如,ML系統組態器3402可以藉由回應於提議HW/SW實例3522的硬體部分中之變化,迭代評估不同AI/ML模型、不同AI/ML模型拓樸等,而迭代地展開提議HW/SW實例3522的軟體部分。在一些例子中,第一操作3818及第二操作3820可以被迭代地執行,以識別出(i)不同計算核心的最好及/或最佳目標平台(如,硬體及/或軟體平台),及/或(ii)在不同計算節點間之最好及/或最佳互連拓樸。
圖39為示範本體資料庫3900的示範實施方式的示意圖。在一些例子中,本體資料庫3900可以實施圖35的本體資料庫3508、圖36的歷史組態3678、及/或圖36的資料儲存3670。
本體資料庫3900的例示例子包含建築方塊的示範本體3902。建築方塊的本體3902的例示例子為圖表(如,本體圖表)所實施。額外及/或替代地,建築方塊的本體3902可以為任何其他資料表示法,如表、圖、格、包、資料報、框、檔案、文件、報告、名單或任何其他形式所實施。建築方塊的本體3902包含示範軟體方塊3904與彼此間之關係。例如,軟體方塊3904可以對應於AI/ML模型的部分。在所例示例子中,軟體方塊3904包含卷積方塊、殘餘方塊、池方塊、瓶頸方塊、線性方塊等。在所例示例子中,卷積方塊包含二維卷積(由CONV2D所識別)、三維卷積(由CONV3D所識別)、群聚卷積等。例如,不同層的建築方塊的本體3902可以提供不同類型及子類型的AI/ML組件的增加粒度。
本體資料庫3900的例示例子包含歷史組態3904的示範資料庫。資料庫3904的例示例子為一表(如,歷史組態表)所實施。額外及/或替代地,資料庫3904可以為任何其他資料表示法所實施,例如表、圖、格、包、資料報、框、檔案、文件、報告、名單或任何其他形式。資料庫3904的例示例子包含用於索引的行、層類型、核心大小、輸入通道、輸出通道、類型間之排名、層前及層後的位置、在最佳SW/HW中的發生等。在所例示例子中,索引的第一個(由INDEX 7所識別)對應於AI/ML模型的一層,其在此例子中為在類神經網路中的特定位置的一層,其可以實施二維卷積者。在所例示例子中,INDEX 7對應於具有5×5核心大小、128輸入通道、64輸出通道、及在二維卷積層間之第三的排名的二維卷積。在此例示例子中,由INDEX 7所識別的二維卷積層典型具有對應於在表中的INDEX 2所識別的層的前層,以及,對應於在表中的INDEX 43所識別的層的後層。例如,AI/ML模型可以具有第一層(如,由INDEX 2所識別的層)、第二層(如,由INDEX 7所識別的層)、及第三層(如,由INDEX 43所識別的層)。在一些此等例子中,由INDEX 2所識別的層的輸出被提供至由INDEX 7所識別的層的輸入。在一些此等例子中,由INDEX 7所識別的層的輸出被提供至由INDEX 43所識別的層的輸入。
圖40為示範工作流程4000的示意圖,以識別出如圖35的ML計算節點3517的可組態ML計算節點。工作流程4000包含圖35的控制器3502及評估器3504。工作流程4000包含示範建築方塊4002及示範模型層4004。在一些例子中,建築方塊4002可以為軟體模板3512、硬體模板3514、及/或大體來說,圖35的可組構建築方塊資料庫3510所實施。在所例示例子中,建築方塊4002包含示範CPU核心4006、示範GPU核心4008、示範FPGA核心4010、及示範ASIC核心4012。在一些例子中,核心4006、4008、4010、4012之一(或多數)可以為圖35的硬體模板3514之一(或多數)所實施。例如,CPU核心4006可以為圖35的HW TEMPLATE N所實施,GPU核心4008可以為圖35的HW TEMPLATE 35所實施,FPGA核心4010可以為圖34的HW TEMPLATE 34所實施等。
在一些例子中,模型層4004可以為圖35的提議HW/SW實例3522及/或圖35的軟體3519所實施。例如,模型層4004可以為包含ML計算節點的歷史實施方式、在評估中的ML計算節點的即刻或現行實施方式等的資料庫所實施。
工作流程4000期間,初始示範操作4014中,控制器3502接收一初始AI模型,其可以稱為種AI模型。例如,初始AI模型可以是為被認為是對於例如,影像處理的有興趣工作負載有效率的特定類神經網路。額外及/或替代地,初始操作4014可以包含函數輸入、請求等,以表示想要AI/ML操作(如,想要完成影像處理,而不必指明初始AI模型)。在一些此等例子中,控制器3502可以根據函數輸入、請求等,識別出初始AI模型。
在第一示範操作4016,控制器3502可以在給定初始AI模型下選擇層實施方式。例如,控制器3502可以將初始AI模型映圖至建築方塊4002的核心4006、4008、4010、4012之一(或多者)。在一些此等例子中,控制器3502可以根據確定出GPU核心4008為有效以執行初始AI模型,而識別出GPU核心4008。例如,控制器3502可以識別出初始AI模型的層的實施方式,其中,實施方式可以對應於硬體,例如GPU核心4008之一或更多。
在第二示範操作4018期間,控制器3502可以提供初始AI模型及層實施方式給評估器3504。例如,評估器3504可以根據當模型與層實施方式係將用以執行想要或所要的工作負載時,該模型與層實施方式的仿真、模擬等,來評估該模型與層實施方式。評估器3504可以評估該模型與層實施方式,以產生示範準確度參數4020、示範效能參數4022、示範能量參數4024、及/或任何其他類型參數,例如,潛時、成本(如,計算成本、貨幣成本、生產或製造成本、購買電力以供電執行該模型的硬體的成本等)等。例如,準確度參數4020可以為模型與層實施方式的準確度。在一些例子中,效能參數4022可以為該模型與層實施方式的效率、產出量等。在一些例子中,能量參數4024可以為當執行該模型時,該層實施方式的功率消耗。在一些例子中,能量參數724可以是當執行該模型時,使用層實施方式所組態的硬體的熱消耗。在所例示例子中,參數4020、4022、4024係被提供作為至示範成本函數4026的輸入。在一些例子中,成本函數4026可以為圖35的報酬函數3528所實施。例如,成本函數4026可以確定在參數4020、4022、4024的值與參數4020、4022、4024的預期或預測值間之差。
在第三示範操作4028期間,成本函數4026的輸出可以造成為控制器3502所處置及/或維持的代理參數(如,在加強學習AI/ML模型中的代理參數)的更新。例如,控制器3502可以確定是否修改模型,以優先化一參數(如,熱消耗、準確度)於另一參數(如,能量消耗等)之上。
在第四示範操作4030期間,控制器3502可以根據來自成本函數4026的輸出,微調該模型及/或層實施方式。例如,控制器3502可以以不同類型的AI/ML模型替換初始AI模型,改變初始AI模型的組態等。在一些例子中,控制器3502可以以不同核心(如,FPGA核心4010等)替換GPU核心4008,改變GPU核心4008的組態(如,暫存器檔案、拓樸等)等。
在第五示範操作4032期間,控制器3502提供模型與層實施方式的另一迭代給評估器3504供評估。有利地,圖40的工作流程4000可以被執行(如,迭代執行),以識別出一模型與對應層實施方式,以執行具有改良的準確度、效能、能量消耗、熱消耗、成本等的工作負載。
代表用以實施圖34及/或35的ML系統組態器3402及/或圖36的ML系統組態電路3600的示範硬體邏輯電路、機器可讀指令、硬體實施狀態機、及/或其任意組合的流程圖係被顯示於圖41-13。機器可讀指令可以為一或更多可執行程式或可執行程式的部分,以供例如示於圖以下參考圖47所討論的示範處理器平台4700中之處理器電路4712及/或有關圖345及/或346的以下所討論的示範處理器電路的處理器電路所執行。程式可以實施為儲存在一或更多非暫態電腦可讀儲存媒體,如光碟(CD)、軟碟、硬碟機(HDD)、固態驅動機(SSD)、數位多功能光碟(DVD)、藍光碟、揮發記憶體(如,隨機存取記憶體(RAM)的任意類型等)或與位於一或更多硬體裝置中的處理器電路相關的非揮發記憶體(如,電可抹除可程式唯讀記憶體(EEPROM)、快閃記憶體、HDD、SSD等)中的軟體,但整個程式及/或其部分也可以為處理器電路以外的一或更多硬體裝置所執行,及/或實施於韌體或專用硬體中。機器可讀指令可以被分配於多重硬體裝置及/或為兩或更多硬體裝置(如,伺服器及客戶硬體裝置)所執行。例如,客戶硬體裝置可以是端點客戶硬體裝置(如,與使用者相關的硬體裝置)或中間客戶硬體裝置(如,無線接取網路(RAN))閘道所實施,其可以促成在伺服器與端點客戶硬體裝置間之通訊)。類似地,非暫態電腦可讀儲存媒體可以包含位於一或更多硬體裝置中的一或更多媒體。再者,雖然示範程式為參考圖41-13所示的流程圖加以描述,但也可以使用很多其他方法以實施圖34及/或35的示範ML系統組態器3402及/或圖36的示範ML系統組態電路3600。例如,方塊的執行順序可以改變,及/或部分所述方塊可以被改變、消除、或組合。額外或替代地,任一或所有方塊可以為被結構以執行對應操作而不執行軟體或韌體的一或更多硬體電路(如,處理器電路、分立及/或整合類比及/或數位電路、FPGA、ASIC、比較器、運算放大器(op-amp)、邏輯電路等)所實施。處理器電路可以分配於不同網路位置及/或在單一機器中的一或更多硬體裝置(如,單一核心處理器(如,單一核心中央處理單元(CPU))、多核心處理器(如,多核心CPU)等)、在伺服器框架的多重伺服器分佈的多重處理器、在一或更多伺服器框架分佈的多重處理器的本地、CPU及/或位於相同封裝(如,相同積體電路(IC)封裝或在兩或更多分開外殼中等)中的FPGA。
於此所述之機器可讀指令可以被儲存為壓縮格式、加密格式、分段格式、編譯格式、可執行格式、套裝格式等之一或更多。於此所述之機器可讀指令可以被儲存為資料或資料結構(如,作為指令的部分、碼、碼表示法等),其可以被利用以建立、製造、及/或生產機器可執行指令。例如,機器可執行指令可以被分段並儲存在位於網路或網路集合(如,於雲端、邊裝置中等)的相同或不同位置的一或更多儲存裝置及/或計算裝置(如,伺服器)中。機器可讀指令可能需要一或更多的安裝、修改、調適、更新、組合、增補、組態、解密、解壓縮、解封、分配、重指派、編譯等,以使之可以為計算裝置及/或其他機器所直接可讀、可解譯、及/或可執行。例如,機器可讀指令可以儲存在多重部分,這些可以被個別壓縮、加密、及/或儲存在分開計算裝置上,其中當這些部分被解密、解壓縮、及/或組合形成一組實施一或更多操作的機器可執行指令時,其可以一起形成如在此所述的程式。
在另一例子中,機器可讀指令可以被以一狀態儲存,其中它們可以為處理器電路所讀取,但需要額外的程式館(如,動態鏈結程式館(DLL))、軟體開發套件(SDK)、應用程式介面(API)等,以在特定計算裝置或其他裝置上執行該機器可讀指令。在另一例子中,機器可讀指令及/或對應程式可以整體或部分被執行之前,機器可讀指令可能需要被組態(如,設定儲存、資料輸入、網路位址記錄等)。因此,如於此所用,機器可讀媒體可能包含機器可讀指令及/或程式,而不管該機器可讀指令及/或程式被儲存或靜止或在中轉時的特定格式或狀態。
於此所述之機器可讀指令可以為任何過去、現在、或未來指令語言、劇本式語言、程式語言等所表示。例如,機器可讀指令可以使用以下的任一語言加以表示:C、C++、Java、C#、Perl、Python、JavaScript、超文件標示語言(HTML)、結構化查詢語言(SQL)、Swift等。
如上所述,圖41-13的示範操作可以使用儲存於一或更多非暫態電腦及/或機器可讀媒體上的可執行指令(如,電腦及/或機器可讀指令)加以實施,媒體係例如光儲存裝置、磁儲存裝置、HDD、快閃記憶體、唯讀記憶體(ROM)、CD、DVD、快取、任何類型的RAM、暫存器、及/或任何其他儲存裝置或儲存碟片,其中,在任何持續時間內(如,延長時間段、永久、或簡短瞬間、暫時緩衝、及/或快取資訊)儲存有資訊。如於此所用,用語非暫態電腦可讀媒體及非暫態電腦可讀儲存媒體被特別界定以包含任何類型的電腦可讀儲存裝置及/或儲存碟片,並排除傳遞信號及排除傳輸媒體。
“包括”及“包含”(及所有其形式與時態)在此被使用為開放端用語。因此,只要請求項使用任何形式之“包括”或“包含”(如,包含、包括、包含、包括、具有等)作為前言或在任何類型內的請求項引用,可以了解的是也可以出現有額外元件、條件等仍在對應請求項或引用的範圍內。如於此所用,當用語“至少”被使用作為過渡用語,如作為請求項前言時,它如同用語“包含”及“包括”為開放式般地也是開放式。當使用用語“及/或”於例如A、B、及/或C的形式時,表示A、B、C的子集的任意組合,如(1)單獨A、(2)單獨B、(3)單獨C、(4)A與B、(5)A與C、(6)B與C、或(7)A與B及C。在此所用,在描述結構、構件、項目、物件及/或事項的上下文中,片語“A與B的至少之一”係想要表示包含(1)至少一A、(2)至少一B、(3)至少一A與至少一B的任一的實施方式。類似地,如於此所用,在描述結構、構件、項目、物件、及/或事項的上下文中,片語“A或B的至少之一”係想要表示以下任一的實施方式:(1)至少一A、(2)至少一B、或(3)至少一A及至少一B。如於此所用,描述程序、指令、動作、活動及/或步驟的實行或執行的上下文中,片語“至少一A與B”係想要表示以下任一的實施方式:(1)至少一A、(2)至少一B、或(3)至少一A及至少一B。類似地,如於此所用,在描述程序、指令、動作、活動、及/或步驟的實行或執行的上下文中,片語“至少一A或B”係想要表示以下任一的實施方式:(1)至少一A、(2)至少一B、或(3)至少一A與至少一B。
如於此所用,單數參考(如,“一”、“一”、“第一”、“第二”等)並不排除多數。如於此所用的用語“一”或“一”物件表示一或更多該物件。用語“一”(或“一”)、“一或更多”、及“至少一”係在此可交換使用。再者,雖然個別列出,但多數手段、元件或方法動作可以為相同實體或物件所實施。另外,雖然個別特性可以包含在不同例子或請求項中,但它們也可能組合,包含在不同例子或請求項中並不暗示特性的組合並不可行及/或不利。
圖41為代表示範機器可讀指令及/或示範操作4100的流程圖,其可以為處理器電路所執行及/或樣例化以可組構ML計算節點執行工作負載。圖41的示範機器可讀指令及/或示範操作4100開始於方塊4102,其中ML系統組態電路3600接收執行機器學習(ML)工作負載的請求。例如,介面電路3610(圖36)可以接收一請求,以識別出硬體及/或軟體的組合,來執行圖35的工作負載3516。在一些此等例子中,硬體及/或軟體的組合可以為軟體3519、硬體3521、及/或更大體來說,圖35的ML計算節點3517所實施。
在方塊4104,ML系統組態電路3600根據該ML工作負載產生一或更多ML模型的第一組態。例如,ML軟體組態電路3620(圖36)可以由軟體搜尋空間3518識別出例如CNN的AI/ML模型。在一些此等例子中,ML軟體組態電路3620可以根據對應於CNN的圖35的軟體模板3512、圖36的軟體模板3672等之一,識別出CNN的組態。可以被執行以實施方塊4104的示範程序係參考圖42描述如下。
在方塊4106,ML系統組態電路3600根據ML工作負載,產生硬體的第二組態。例如,ML硬體組態電路3630(圖36)可以由硬體搜尋空間3520識別出例如GPU的硬體。在一些此等例子中,ML硬體組態電路3630可以根據對應於GPU的圖35的硬體模板3514、圖36的硬體模板3674等之一,識別出GPU的組態。可以被執行以實施方塊4104的示範程序係參考圖43加以描述如下。
在方塊4108,ML系統組態電路3600根據基於第一組態與第二組態的工作負載的執行,而產生評估參數。例如,組態評估電路3640(圖36)可以執行相關於執行CNN的GPU的效能模型化(如,仿真器、模擬器、除錯等)。在一些此等例子中,組態評估電路3640可以產生對應於以CNN執行AI/ML工作負載的GPU的模擬、仿真等的評估參數3526。
在方塊4110,ML系統組態電路3600確定評估參數是否滿足臨限。例如,組態評估電路3640可以確定如準確度參數的評估參數是否有滿足如準確度參數(如,準確度參數臨限)的評估參數臨限的值。在一些此等例子中,組態評估電路3640可以確定準確度參數具有425%的值,這滿足了420%的準確度臨限,因為425%的值大於420%。
如果在方塊4110,ML系統組態電路3600確定評估參數並未滿足臨限,則在方塊4112,ML系統組態電路3600根據評估參數更新本體資料庫。例如,本體產生電路3650(圖36)可以根據評估參數3526、與評估參數3526相關的提議HW/SW實例3522等、及/或其任意組合,更新圖35的本體資料庫3508。
在方塊4114,ML系統組態電路3600根據評估參數,調整第一組態。例如,ML軟體組態電路3620可以以不同AI/ML模型替換CNN、加入另一AI/ML模型、改變CNN的組態等、及/或其任意組合。可以被執行實施方塊4114的示範程序係參考圖44描述如下。
在方塊4116,ML系統組態電路3600根據評估參數調整第二組態。例如,ML硬體組態電路3630可以以不同硬體替換GPU、加入另一硬體、改變GPU的組態等、及/或其任意組合。可以被執行以實施方塊4116的示範程序係參考圖45描述如下。回應於在方塊4116評估參數根據調整第二組態,控制回到方塊4108,以根據基於第一組態(如,第一組態的更新或調整版本)及第二組態(如,第二組態的更新或調整版本)的工作負載的執行,產生評估參數。
如果在方塊4110,ML系統組態電路3600確定評估參數滿足臨限,則控制進行至方塊4118,以根據基於在第二組態的硬體上的第一組態的ML模型,執行一或更多ML模型。例如,工作負載執行電路3660(圖36)可以編譯、組構、產生、識別、及/或樣例化圖35中的ML計算節點3517。在一些此等例子中,ML計算節點3517的軟體3519可以根據第一組態為一或更多AI/ML模型所實施。在一些例子中,ML計算節點3517的硬體3521可以根據第二組態為一或更多類型及/或實例的硬體所實施。在一些例子中,ML計算節點3517可以部署及/或作成可用於執行工作負載3516。回應於在方塊4118,基於在第二組態的硬體上的第一組態執行一或更多ML模型,圖41的示範機器可讀指令及/或示範操作4100結束。
圖42代表為示範機器可讀指令及/或示範操作4200的流程圖,其可以為處理器電路所執行及/或樣例化,以根據機器學習工作負載,產生一或更多機器學習模型的第一組態。圖42的示範機器可讀指令及/或示範操作4200可以為處理器電路所執行及/或樣例化,以實施圖41的示範機器可讀指令及/或示範操作4100的方塊4104。圖42的示範機器可讀指令及/或示範操作4200開始於方塊4202,其中,圖36的ML系統組態電路3600使用應用程式介面,以ML工作負載查詢組態資料庫。例如,ML軟體組態電路3620(圖36)可以經由一或更多API,查詢圖35的可組構建築方塊資料庫3510、圖36的軟體模板3672、及/或圖36的互連拓樸3676之一(或多者)。
在方塊4204,ML系統組態電路3600根據歷史組態,識別出ML模型。例如,本體產生電路3660(圖36)可以識別出在先前AutoML搜尋中所使用的如NN的ML模型。在一些此等例子中,本體產生電路3660可以根據可以儲存在圖35的本體資料庫3508及/或圖36的歷史組態3678的歷史組態,識別出ML模型。
在方塊4206,ML系統組態電路3600確定用於ML模型的層數。例如,ML軟體組態電路3620可以確定NN將具有的多數層(如,網路層、NN層等),其中,多數層將以NN組態耦接至多數層中的不同一(或多)層。在一些此等例子中,ML軟體組態電路3620可以根據包含在圖35的軟體模板3512、圖36的軟體模板3672等中的資訊(如,元資料或其他資料),確定多數層及/或其組態。
在方塊4208,ML系統組態電路3600確定ML模型的層的權重。例如,ML軟體組態電路3620可以確定ML多數層之一(或多層)具有特定權重(如,權重值)。在一些此等例子中,ML軟體組態電路3620可以根據包含在軟體模板3512、圖36的軟體模板3672等中的資訊(如,元資料或其他資料)確定權重。
在方塊4210,ML系統組態電路3600確定用於ML模型的ML訓練的類型。例如,ML軟體組態電路3620可以確定NN模型將被以加強學習訓練。在一些此等例子中,ML軟體組態電路3620可以根據包含在軟體模板3512、圖36的軟體模板3672等中的資訊(如,元資料或其他資料),確定用以訓練NN模型的ML訓練的類型。
在方塊4212,ML系統組態電路3600確定超參數,以訓練ML模型。例如,ML軟體組態電路3620可以確定可以被利用以訓練ML模型的一或更多超參數的值。在一些此等例子中,ML軟體組態電路3620可以根據包含在軟體模板3512、圖36的軟體模板3672等中的資訊(如,元資料或其他資料),確定該等超參數的值。
在方塊4214,ML系統組態電路3600確定是否另一ML模型被識別出。例如,ML軟體組態電路3620可以確定例如轉換器的另一類型AI/ML模型被識別出為被結合NN使用。在一些此等例子中,ML軟體組態電路3620可以藉由搜尋軟體搜尋空間3518,而識別出AI/ML模型的數量及/或其類型。在一些例子中,ML軟體組態電路3620可以確定被識別出的第一NN模型為CNN及例如ANN、DNN等之另一類型NN模型可以被利用以結合該CNN。
如果在方塊4214,ML系統組態電路3600確定另一ML模型被識別出,則控制回到方塊4206,以確定用於額外識別出ML模型的層數。如果在方塊4214,ML系統組態電路3600確定並未識別出另一ML模型,則在方塊4216,ML系統組態電路3600確定是否有一個以上ML模型被識別出。例如,ML軟體組態電路3620可以確定只有一個ML模型被識別(如,CNN),而在其他例子中,ML軟體組態電路3620可以確定一個以上ML模型被識別(如,CNN及轉換器模型)。
如果在方塊4216,ML系統組態電路3600確定只有一ML模型被識別,則圖42的示範機器可讀指令及/或示範操作4200結束。例如,圖42的示範機器可讀指令及/或示範操作4200可以回到圖41的機器可讀指令及/或示範操作4100的方塊4106,以根據ML工作負載,產生硬體的第二組態。
如果在方塊4216,ML系統組態電路3600確定有一個以ML上模型被識別,則在方塊4218,ML系統組態電路3600根據ML模型之一(或多者)間之連接,產生拓樸。例如,ML軟體組態電路3620可以分析在互連拓樸3676中之不同拓樸,以識別出在第一識別AI/ML模型(如,CNN)與第二識別AI/ML模型(如,轉換器模型)間之連接。在一些此等例子中,ML軟體組態電路3620可以根據在互連拓樸3676中之拓樸,將第一識別AI/ML模型的輸出耦接至第二識別AI/ML模型之輸入。
回應於在方塊4218,根據在ML模型之一(或多者)間之連接產生拓樸,在圖42之示範機器可讀指令及/或示範操作4200結束。例如,圖42的示範機器可讀指令及/或示範操作4200可以回到圖41的機器可讀指令及/或示範操作4100的方塊4106,以根據ML工作負載,產生硬體的第二組態。
圖43為代表可以為處理器電路所執行及/或樣例化的示範機器可讀指令及/或示範操作4300的流程圖,以用以根據機器學習工作負載,產生硬體的第二組態。圖43的示範機器可讀指令及/或示範操作4300可以被處理器電路所執行及/或樣例化,以實施圖41的示範機器可讀指令及/或示範操作4100的方塊4106。圖43的示範機器可讀指令及/或示範操作4300開始於方塊4302,其中圖36的ML系統組態電路3600使用應用程式介面,以ML工作負載查詢組態資料庫。例如,ML硬體組態電路3630(圖36)可以經由一或更多API,查詢圖35的可組構建築方塊資料庫3510、圖36的硬體模板3674、及/或圖36的互連拓樸3676。
在方塊4304,ML系統組態電路3600根據歷史組態識別出硬體類型。例如,本體產生電路3660(圖36)可以識別出於利用於先前AutoML搜尋中利用的例如GPU的硬體類型。在一些此等例子中,本體產生電路3660可以根據儲存在圖35之本體資料庫3508中的歷史組態及/或圖36的歷史組態3678的歷史組態,識別GPU。
在方塊4306,ML系統組態電路3600確定硬體的第一方塊,以執行矩陣-矩陣工作負載。例如,ML硬體組態電路3630可以識別出GPU的第一核心,以執行矩陣-矩陣計算操作。在一些此等例子中,ML硬體組態電路3630可以根據包含在圖35的硬體模板3514、圖36的硬體模板3674等中的資訊(如,元資料或其他資料),識別出第一核心及/或其組態。
在方塊4308,ML系統組態電路3600確定硬體的第二方塊,以執行向量-向量工作負載。例如,ML硬體組態電路3630可以識別出GPU的第二核心(如,圖4的第二方塊404),以執行向量-向量計算操作。在一些此等例子中,ML硬體組態電路3630可以根據包含在圖35的硬體模板3514、圖36的硬體模板3674等中的資訊(如,元資料或其他資料),識別出第二核心及/或其組態。
在方塊4310,ML系統組態電路3600確定硬體的第三方塊,以執行矩陣-向量工作負載。例如,ML硬體組態電路3630可以識別出GPU的第三核心(如,圖4的第一方塊402),以執行矩陣-向量計算操作。在一些此等例子中,ML硬體組態電路3630可以根據包含在圖35的硬體模板3514、圖36的硬體模板3674等中的資訊(如,元資料或其他資料),識別出第三核心及/或其組態。
在方塊4312,ML系統組態電路3600識別出暫存器檔案,以儲存個別第一方塊、第二方塊、及/或第三方塊的狀態。例如,ML硬體組態電路3630可以產生及/或識別第一暫存器檔案(如,圖4的暫存器檔案406之一),其中可以儲存有對應於第一核心的硬體線程之狀態。在一些此等例子中,ML硬體組態電路3630可以產生、識別、及/或樣例化對應於第二核心的第二暫存器檔案,及/或對應於第三核心的第三暫存器檔案。
在方塊4314,ML系統組態電路3600確定是否有另一類型硬體被識別。例如,ML硬體組態電路3630可以確定有另一類型硬體,如CPU、AI處理器、FPGA等被識別結合GPU使用。在一些此等例子中,ML硬體組態電路3630可以藉由搜尋硬體搜尋空間3520,而識別硬體的實例數量(或其部分)及/或其類型。在一些例子中,ML硬體組態電路3630可以確定另一實例的GPU(或其部分)可以結合GPU使用。
如果在方塊4314,ML系統組態電路3600確定另一類型硬體被識別,則控制回到方塊4306,以識別所識別出硬體的第一方塊。如果在方塊4314,ML系統組態電路3600確定並未識別另一類型硬體,則在方塊4316,ML系統組態電路3600確定是否一個以上類型及/或實例硬體被識別。例如,ML硬體組態電路3630可以確定只有一類型及/或實例硬體被識別(如,單一GPU核心、單一GPU等)。在一些此等例子中,ML硬體組態電路3630可以確定一均質ML計算節點已被識別。在一些例子中,ML硬體組態電路3630可以確定一個以上實例及/或類型硬體(如,一個以上GPU、一個以上GPU核心、GPU及FPGA、至少一GPU核心及至少一FPGA核心等)已經被識別。在一些此等例子中,ML硬體組態電路3630可以確定異質ML計算節點被識別。
如果在方塊4316,ML系統組態電路3600確定只有一類型及/或實例的硬體被識別,則圖43的示範機器可讀指令及/或示範操作4300結束。例如,圖43的機器可讀指令及/或示範操作4300可以回到圖41的機器可讀指令及/或示範操作4100的方塊4108,以根據基於第一組態及第二組態的工作負載的執行,產生評估參數。
如果在方塊4316,ML系統組態電路3600確定一個以上類型及/或實例硬體被識別,則在方塊4318,ML系統組態電路3600根據硬體的連接,產生拓樸。例如,ML硬體組態電路3630可以分析在互連拓樸3676中的不同拓樸,以識別出在第一硬體核心(如,第一GPU核心)及第二硬體核心(如,第二GPU核心)間之連接。在一些例子中,ML硬體組態電路3630可以分析在互連拓樸3676中之不同拓樸,以識別出在第一類型硬體(如,GPU)及第二類型硬體(如,AI處理器)間之連接。在一些例子中,ML硬體組態電路3630可以根據包含在互連拓樸3676中的拓樸,耦接第一硬體核心與第二硬體核心的輸出。在一些例子中,ML硬體組態電路3630可以根據包含在互連拓樸3676中的拓樸,耦接第一類型硬體與第二類型的硬體的輸出。
回應於在方塊4318根據硬體的連接的產生拓樸,圖43的示範機器可讀指令及/或示範操作4300結束。例如,圖43的機器可讀指令及/或示範操作4300可以回到圖41的機器可讀指令及/或示範操作4100的方塊4108,以根據基於第一組態與第二組態的工作負載的執行,產生評估參數。
圖44為代表可以為處理器電路所執行及/或樣例化的示範機器可讀指令及/或示範操作4400的流程圖,以用以根據該評估參數,調整第一組態。圖44的示範機器可讀指令及/或示範操作4400可以為處理器電路所執行及/或樣例化,以實施圖41的示範機器可讀指令及/或示範操作4100的方塊4114。圖44的示範機器可讀指令及/或示範操作4400開始於方塊4402,其中ML系統組態電路3600確定是否以不同ML模型替換第一ML模型。例如,ML軟體組態電路3620(圖36)可以確定圖35的提議HW/SW實例3522包含例如CNN的第一AI/ML模型。在一些此等例子中,ML軟體組態電路3620可以確定CNN模型將被以DNN模型替換。
如果在方塊4402,ML系統組態電路3600確定不以不同ML模型替換第一ML模型,則控制進行至方塊4408。如果在方塊4402,ML系統組態電路3600確定以不同ML模型替換第一ML模型,則在方塊4404,ML系統組態電路3600在組態資料庫中識別出第二ML模型。例如,ML軟體組態電路3620可以識別出在可組構建築方塊資料庫3510之軟體模板3512中之DNN。
在方塊4406,ML系統組態電路3600根據以第二ML模型替換第一ML模型,而產生一新組態。例如,ML軟體組態電路3620可以藉由以DNN替換CNN,而在提議HW/SW實例3522中,產生軟體的新或更新組態。
在方塊4408,ML系統組態電路3600確定是否將第二ML模型加入組態。例如,ML軟體組態電路3620可以確定將DNN加入至軟體的組態中,結合CNN及/或不同AI/ML模型。
如果在方塊4408,ML系統組態電路3600確定不將第二ML模型加入至組態,則圖44的示範機器可讀指令及/或示範操作4400結束。例如,圖44的示範機器可讀指令及/或示範操作4400可以回到圖41的機器可讀指令及/或示範操作4100的方塊4116,以根據評估參數,調整第二組態。
如果在方塊4408,ML系統組態電路3600確定將第二ML模型加入至組態,則在方塊4410,ML系統組態電路3600確定第一ML模型的一或更多第一層,用以執行工作負載的第一部分。例如,在包含CNN及DNN的組態中,ML軟體組態電路3620可以識別及/或確定CNN的一或更多第一層,執行工作負載3516的第一部分。
在方塊4412,ML系統組態電路3600識別出在組態資料庫中的第二ML模型。例如,ML軟體組態電路3620可以識別出在可組構建築方塊資料庫3510的軟體模板3512中的DNN。
在方塊4414,ML系統組態電路3600確定第二ML模型的一或更多第二層,以執行該工作負載的第二部分。例如,在包含CNN與DNN的組態中,ML軟體組態電路3620可以識別出及/或確定DNN的一或更多第二層,以執行工作負載3516的第二部分。
在方塊4416,ML系統組態電路3600根據一或更多第一層及一或更多第二層的拓樸,確定新組態。例如,ML軟體組態電路3620可以確定以根據包含在互連拓樸3676中的拓樸,將CNN的輸出耦接至DNN的輸入(或反之亦然)。
回應於在方塊4416,根據一或更多第一層及一或更多第二層的拓樸,而確定新組態,圖44的示範機器可讀指令及/或示範操作4400結束。例如,圖44的示範機器可讀指令及/或示範操作4400可以回到圖41的機器可讀指令及/或示範操作4100的方塊4116,以根據評估參數,調整第二組態。
圖45為代表示範機器可讀指令及/或示範操作4500的流程圖,其可以為處理器電路所執行及/或樣例化,以根據評估參數,調整第二組態。圖45的示範機器可讀指令及/或示範操作4500可以為處理器電路所執行及/或樣例化,以實施圖41的示範機器可讀指令及/或示範操作4100的方塊4116。圖45的示範機器可讀指令及/或示範操作4500開始於方塊4502,其中ML系統組態電路3600確定是否以不同硬體替換第一硬體。例如,ML硬體組態電路3630(圖36)可以確定圖35的提議HW/SW實例3522包含如GPU的第一硬體。在一些此等例子中,ML硬體組態電路3630可以確定GPU將被以FPGA替換。
如果在方塊4502,ML系統組態電路3600確定不以不同硬體替換第一硬體,則控制回到方塊4508。如果在方塊4502,ML系統組態電路3600確定以不同硬體替換第一硬體,則在方塊4504,ML系統組態電路3600識別出在組態資料庫中的第二硬體。例如,ML硬體組態電路3630可以識別出在可組構建築方塊資料庫3510中之硬體模板3514中的FPGA。
在方塊4506,ML系統組態電路3600根據以第二組態替換第一硬體,產生新組態。例如,ML硬體組態電路3630可以藉由以FPGA替換GPU,而在提議HW/SW實例3522中產生硬體新的或更新的組態。
在方塊4508,ML系統組態電路3600確定是否將第二硬體加入至組態。例如,ML硬體組態電路3630可以確定將FPGA加入至硬體的組態,配合GPU及/或不同硬體(如,AI處理器)。
如果在方塊4508,ML系統組態電路3600確定不將第二硬體加入至組態,則圖45的示範機器可讀指令及/或示範操作4500結束。例如,圖45的示範機器可讀指令及/或示範操作4500回到圖41的示範機器可讀指令及/或示範操作4100的方塊4118,以根據在第二組態中之硬體上的第一組態,執行一或更多ML模型。
如果在方塊4508,ML系統組態電路3600確定將第二硬體加入至組態,則在方塊4510,ML系統組態電路3600確定第一硬體的一或更多第一部分,執行工作負載的第一部分。例如,在包含GPU及FPGA的組態中,ML硬體組態電路3630可以識別及/或確定GPU的一或更多第一核心,執行工作負載3516的第一部分。
在方塊4512,ML系統組態電路3600識別出組態資料庫中之第二硬體。例如,ML硬體組態電路3630可以識別出在可組構建築方塊資料庫3510之硬體模板3514中的FPGA。
在方塊4514,ML系統組態電路3600確定第二硬體的一或更多第二部分,以執行該工作負載的第二部分。例如,在包含GPU及FPGA的組態中,ML硬體組態電路3630可以識別及/或確定FPGA的一或更多第二核心,以執行該工作負載3516的第二部分。
在方塊4516,ML系統組態電路3600根據該一或更多第一部分及一或更多第二部分的拓樸,確定新組態。例如,ML硬體組態電路3630可以根據包含在互連拓樸3676中的拓樸,確定以將GPU的輸出耦接至FPGA的輸入(或FPGA的輸出耦接至GPU的輸入)。
回應於在方塊4516的根據一或更多第一部分及一或更多第二部分的拓樸而確定新組態,圖45的示範機器可讀指令及/或示範操作4500結束。例如,圖45的示範機器可讀指令及/或示範操作4500可以回到圖41的示範機器可讀指令及/或示範操作4100的方塊4118,以根據在第二組態中的硬體上的第一組態,執行一或更多ML模型。
圖46為代表示範機器可讀指令及/或示範操作4600的流程圖,以為處理器電路所執行及/或樣例化,以部署計算節點,以執行機器學習工作負載。圖46的示範機器可讀指令及/或示範操作4600開始於方塊4602,其中ML系統組態電路3600接收機器學習(ML)模型及對應硬體的請求,以執行工作負載。例如,介面電路3610(圖36)可以接收一請求,以識別硬體及/或軟體的組合,以執行圖35的工作負載3516。在一些此等例子中,硬體及/或軟體的組合可以為軟體3519、硬體3521、及/或更大體來說,圖35的ML計算節點3517所實施。
在方塊4604,ML系統組態電路3600根據該請求或歷史組態的至少之一,產生軟體搜尋空間及硬體搜尋空間。例如,ML軟體組態電路3620可以根據工作負載3516、可以儲存在圖35的本體資料庫3508中的ML計算節點的歷史組態、圖36的歷史組態3678等、及/或其任意組合,產生圖35的軟體搜尋空間3518。在一些例子中,ML硬體組態電路3630可以根據工作負載3516、可以儲存在圖35的本體資料庫3508中的ML計算節點的歷史組態、圖36的歷史組態3678等、及/或其任意組合,產生圖35的硬體搜尋空間3520。
在方塊4606,ML系統組態電路3600根據軟體搜尋空間或硬體搜尋空間的至少之一,選擇ML模型及對應硬體的組態,用於一計算節點。例如,ML軟體組態電路3620及/或ML硬體組態電路3630可以根據來自軟體搜尋空間3518及硬體搜尋空間3520的一或更多AI/ML模型,產生圖35的提議HW/SW實例3522。
在方塊4608,ML系統組態電路3600選擇ML模型及對應硬體的組態的拓樸用於計算節點。例如,ML軟體組態電路3620可以將提議HW/SW實例3522的一或更多ML模型耦接在一起。在一些例子中,ML硬體組態電路3630可以將提議HW/SW實例3522的硬體耦接在一起。
在方塊4610,ML系統組態電路3600輸出與組態相關的評估參數。例如,組態評估電路3640(圖36)可以根據提議HW/SW實例3522的效能模型化3524,確定評估參數3526。
在方塊4612,ML系統組態電路3600確定是否評估參數之一(或多者)滿足個別臨限。例如,組態評估電路3640可以確定是否準確度參數的第一值滿足準確度臨限,潛時參數的第二值滿足潛時參數等、及/或其任意組合。
如果在方塊4612,ML系統組態電路3600確定評估參數之一(或多者)均未滿足個別臨限,則控制回到方塊4606,否則,在方塊4614,ML系統組態電路3600部署計算節點以執行ML工作負載。例如,工作負載執行電路3660(圖36)可以部署ML計算節點3517,以執行工作負載3516。在一些此等例子中,工作負載執行電路3660可以編譯及/或提供ML計算節點3517作為可執行構造,其當被執行及/或樣例化時,可以執行工作負載3516。回應於部署計算節點以在方塊4614執行ML工作負載,圖46的示範機器可讀指令及/或示範操作4600結束。
圖47為被建構以執行及/或樣例化圖41-13的機器可讀指令及/或操作,以實施圖34及/或35的ML系統組態器3402及/或圖36的ML系統組態電路3600的示範處理器平台4700的方塊圖。處理器平台4700可以例如是伺服器、個人電腦、工作站、自學習機器(如,類神經網路)、行動裝置(如,蜂巢式手機、智慧手機、如,iPad TM的平板)、頭載機(如,擴增(AR)頭載機、虛擬實境(VR)頭載機等)或其他穿戴式裝置、或任何其他類型的計算裝置。
處理器平台4700的例示例子包含處理器電路4712。處理器電路4712的例示例子為硬體。例如,處理器電路4712可以為一或更多來自任何想要系列或製造商的積體電路、邏輯電路、FPGA、微處理器、CPU、GPU、DSP、及/或微控制器所實施。處理器電路4712可以為一或更多半導體為基(如,矽為基)裝置所實施。在此例子中,處理器電路4712實施圖36的ML軟體組態電路3620(由ML SW CONFIG CIRCUITRY識別出)、ML硬體組態電路3630(由ML HW CONFIG CIRCUITRY識別出)、組態評估電路3640(由CONFIG EVAL CIRCUITRY識別出)、本體產生電路3650(由ONTOL GEN CIRCUITRY識別出)、及工作負載執行電路3660(由WORKLOAD EXEC CIRCUITRY識別出)。
處理器電路4712的例示例子包含本地記憶體4713(如,快取、暫存器等)。處理器電路4712的例示例子透過匯流排4718與包含揮發記憶體4714與非揮發記憶體4716的主記憶體通訊。在一些例子中,匯流排4718實施圖36的匯流排3680。揮發記憶體4714可以為同步動態隨機存取記憶體(SDRAM)、動態隨機存取記憶體(DRAM)、RAMBUS®動態隨機存取記憶體(RDRAM®)、及/或任何其他類型RAM裝置所實施。非揮發記憶體4716可以為快閃記憶體及/或任何其他想要類型的記憶體裝置所實施。對主記憶體4714、4716的存取的例示例子係為記憶體控制器4717所控制。
處理器平台4700的例示例子也包含介面電路4720。在此例子中,介面電路4720實施圖36的介面電路3610。介面電路4720可以為依據任何類型介面標準的硬體加以實施,介面標準係例如乙太介面、通用串列匯流排(USB)介面、藍牙®介面、近場通訊(NFC)介面、週邊組件互連(PCI)介面、及/或快速週邊組件互連(PCIe)介面。
在所例示例子中,一或更多輸入裝置4722被連接至介面電路4720。輸入裝置4722允許使用者以將資料及/或命令輸入至處理器電路4712。輸入裝置4722可以為例如音訊感應器、麥克風、攝影機(靜態或視訊)、鍵盤、按鈕、滑鼠、觸控螢幕、軌跡墊、軌跡球、等電裝置、及/或語音辨識系統所實施。
一或更多輸出裝置4724同時也連接至例示例子的介面電路4720。輸出裝置4724可以例如為顯示裝置(如,發光二極體(LED)、有機發光二極體(OLED)、液晶顯示器(LCD)、陰極射線管(CRT)顯示器、面內切換(IPS)顯示器、觸控螢幕等)、觸覺輸出裝置、印表機、及/或喇叭所實施。介面電路4720的例示例子因此典型包含圖形驅動器卡、圖形驅動器晶片、及/或如GPU的圖形處理器電路。
介面電路4720的例示例子也包含例如發射器、接收器、收發器、數據機、住宅閘道、無線接取點、及/或網路介面的通訊裝置,以藉由網路4726促成與外部機器(如,任何類型的計算裝置)的資料交換。通訊也可以是例如藉由乙太連接、數位用戶線(DSL)連接、電話線連接、同軸電纜系統、衛星系統、現場線無線系統、蜂巢式電話系統、光連接等。
處理器平台4700的例示例子也包含一或更多大量儲存裝置4728,以儲存軟體及/或資料。在此例子中,一或更多大量儲存裝置4728實施資料儲存3670、軟體模板3672(由SW TEMP所識別)、硬體模板3674(以HW TEMP所識別)、互連拓樸3676(由INTER TOPOLOGIES所識別)、及歷史組態3678(由HIST CONFIGS所識別)。此等大量儲存裝置4728的例子包含磁儲存裝置、光儲存裝置、軟碟機、HDD、CD、藍光碟機、獨立磁碟冗餘陣列(RAID)系統、固態儲存裝置,例如快閃記憶體裝置及/或SSD、及DVD機。
可以為圖41-13的機器可讀指令所實施的機器可執行指令4732可以被儲存在大量儲存裝置4728、在揮發記憶體4714、在非揮發記憶體4716、及/或在如CD或DVD的可移除非暫態電腦可讀儲存媒體上。
圖47的處理器平台4700的例示例子包含:示範加速電路4734,其包含示範GPU 4740;示範視覺處理單元(VPU)4742;及示範類神經網路處理器4744。額外及/或替代地,加速電路4734可以包含任何其他類型的硬體,例如,CPU、FPGA、ASIC等。在此例子中,GPU 4740、VPU 4742、及類神經網路處理器4744透過匯流排4718與處理器平台4700的不同硬體通訊,例如,揮發記憶體4714、非揮發記憶體4716等。在此例子中,類神經網路處理器4744可以為一或更多來自任何想要系列或製造商的積體電路、邏輯電路、微處理器、GPU、DSP、或控制器的實施,其可用以執行AI模型,如類神經網路。在一些例子中,一或更多ML軟體組態電路3620、ML硬體組態電路3630、組態評估電路3640、本體產生電路3650、及/或工作負載執行電路3660可以被實施於至少一GPU 4740、VPU 4742、或類神經網路處理器4744中,或替代處理器4712或加於處理器4712外。
由前述可以了解到,已經揭露用於可組構機器學習計算節點的示範系統、方法、設備、及製品。所揭露的系統、方法、設備、及製品藉由識別及/或產生硬體及/或軟體的改良及/或最佳組合,改良了使用計算裝置的效率,以生效AI/ML工作負載。所揭露系統、方法、設備、及製品包含涵蓋硬體及軟體架構的多重模板的表達搜尋空間表示。這些模板可以在HW/SW共同設計搜尋期間被動態修改。有利地,表達搜尋空間使得HW/SW共同設計系統探索跨越多重架構式樣的HW/SW設計的更大及更豐富空間。架構式樣之一(或多者)可以在其個別組的模型與連接性(例如,連接、拓樸、輸入/輸出等的選擇及/或組態)上有彈性。所述組的模型與連接性可以透過可組構建築方塊加以形成。有利地,所揭露系統、方法、設備及製品相較於先前AutoML手法,改良發現更有效硬體架構實例及其對應共同設計軟體的可能性,因為於此所揭露的例子提供較大的HW/SW搜尋空間及其可組態版本。所揭露系統、方法、設備及製品因此為有關於在操作如電腦、或其他電子及/或機械裝置的機器中的一或更多改良。
圖48為圖16的處理器電路1612、圖21的處理器電路2112、圖26的處理器電路2612、圖33的處理器電路312、及/或圖47的處理器電路4712的示範實施方式的方塊圖。在此例子中,圖16的處理器電路1612、圖21的處理器電路2112、圖26的處理器電路2612、圖33的處理器電路312、及/或圖47的處理器電路4712係為通用微處理器4800所實施。通用微處理器4800執行於此所揭露的流程圖的部分或整個機器可讀指令,以有效地樣例化邏輯電路,以執行對應於這些機器可讀指令的操作。例如,微處理器4800可以實施多-核心硬體電路,例如,CPU、DSP、GPU、XPU等。雖然其可能包含任何數量的示範核心4802(如,1核心),但此例子的微處理器4800為包含N核心的多核心半導體裝置。微處理器4800的核心4802可以獨立操作或可以合作以執行機器可讀指令。例如,對應於韌體程式、嵌式軟體程式、或軟體程式的機器碼可以為核心4802之一所執行或者可以為核心4802的多重核心同時或不同時執行。在一些例子中,對應於韌體程式、嵌式軟體程式、或軟體程式的機器碼係被細分為線程並被兩或更多核心4802所並列執行。軟體程式可以對應於由在此揭露的一或更多流程圖所代表的部分或所有機器可讀指令及/或操作。
核心4802可以以第一示範匯流排4804通訊。在一些例子中,第一匯流排4804可以實施通訊匯流排,以生效與核心4802之一(或多者)有關的通訊。例如,第一匯流排4802可以實施至少一積體電路間(I2C)匯流排、串列週邊介面(SPI)匯流排、PCI匯流排、或PCIe匯流排。額外或替代地,第一匯流排4804可以實施任何其他類型計算或電匯流排。核心4802可以由示範介面電路4806由一或更多外部裝置,取得資料、指令、及/或信號。核心4802可以藉由介面電路4806輸出資料、指令、及/或信號至一或更多外部裝置。雖然此例子的核心4802包含示範本地記憶體4820(如,第一階(L1)快取,其可以被分成L1資料快取及L1指令快取),但微處理器4800也包含示範共享記憶體4810,其可以為核心(如,第二階(L2_快取))所共享,以對資料及/或指令的高速存取。資料及/或指令可以藉由寫入及/或讀出自共享記憶體4810而被轉移(如,分享)。各個核心4802的本地記憶體4820及分享記憶體4810可以是儲存裝置的階層的一部分,其包含多階的快取記憶體與主記憶體(如,圖16、21、26、33及47之一或多數的主記憶體)。典型地,在階層中的記憶體階層愈高,則展示較低之存取時間並具有較較低階層記憶體為少的儲存容量。在快取階層的各種層中的改變係為快取一致性策略所管理(如,協調)。
各個核心4802可以稱為CPU、DSP、GPU等、或任何其他類型硬體電路。各個核心4802包含控制單元電路4814、算術與邏輯(AL)電路(有時稱ALU)4816、多數暫存器4818、L1快取4820、及第二示範匯流排4822。也可以出現其他結構。例如,各個核心4802可以包含向量單元電路、單一指令多重資料(SIMD)單元電路、負載/儲存單元(LSU)電路、分支/跳越單元電路、浮點單元(FPU)電路等。控制單元電路4814包含半導體為基電路,被建構以控制(如,協調)在對應核心4802內的資料移動。AL電路4816包含半導體為基電路,被建構以對在對應核心4802中的資料,執行一或更多算術及/或邏輯操作。AL電路4816的一些例子執行整數為基操作。在其他例子中,AL電路4816也執行浮點操作。在其他例子中,AL電路4816可以包含第一AL電路,其執行整數為基操作;及第二AL電路,其執行浮點操作。在一些例子中,AL電路4816可以被稱為算術邏輯單元(ALU)。暫存器4818為半導體為基結構,用以儲存例如由對應核心4802的AL電路4816所執行的一或更多操作的結果的資料及/或指令。例如,暫存器4818可以包含向量暫存器、SIMD暫存器、通用暫存器、旗標暫存器、分段暫存器、機器特定暫存器、指令指標暫存器、控制暫存器、除錯暫存器、記憶體管理暫存器、機器檢查暫存器等。暫存器4818可以被排為如圖48所示的一排。或者,暫存器4818可以被組織成任何其他配置、格式、或結構,包含分佈於整個核心4802,以縮短存取時間。第二匯流排4822可以實施I2C匯流排、SPI匯流排、PCI匯流排、或PCIe匯流排的至少之一。
各個核心4802及/或更大體來說,微處理器4800可以包含以上所示與所述的額外及/或替代結構。例如,可以出現一或更多時鐘電路、一或更多電源電路、一或更多電力閘、一或更多快取家用代理(CHA)、一或更多收斂/共同網目停止(CMS)、一或更多移位器(如,桶移位器)及/或其他電路。微處理器4800為被製造以包含很多互連電晶體的半導體裝置,以實施在包含在一或更多封裝中的一或更多積體電路(IC)中的上述結構。處理器電路可以包含及/或配合一或更多加速器。在一些例子中,加速器被以邏輯電路實施,以較通用處理器所能完成更快及/或更有效的方式執行某些工作。加速器的例子包含如在此所述之ASIC及FPGA。GPU或其他可程式裝置也可以是加速器。加速器可以是板上處理器電路,在一些與處理器電路相同的晶片封裝中及/或在與處理器電路分開的一或更多封裝中。
圖49為圖16的處理器電路1612、圖21的處理器電路2112、圖26的處理器電路2612、圖33的處理器電路312、及/或圖47的處理器電路4712的另一示範實施方式的方塊圖。在此例子中,圖16的處理器電路1612、圖21的處理器電路2112、圖26的處理器電路2612、圖33的處理器電路312、及/或圖47的處理器電路4712係以FPGA電路4900加以實施。FPGA電路4900可以例如被用以執行操作,其也可以為執行對應機器可讀指令的圖48的示範微處理器4800所實施。然而,一旦組態,FPGA電路4900以硬體樣例化機器可讀指令,因此,可以經常以快於執行對應軟體的通用微處理器所執行為快的方式執行操作。
更明確地說,相對應於上述圖48的微處理器4800(其為可以被規劃以執行部分或所有機器可讀指令的通用裝置,該等指令係以在此所揭露的流程圖加以表示,但其中之互連與邏輯電路為一旦製造就被固定),圖49的FPGA電路4900的例子包含互連及邏輯電路,其可以在製造後以不同方式被組態及/或互連,以例如樣例化由在此所揭露流程圖所表示的一些或所有機器可讀指令。更明確地說,FPGA 4900可以被認為是一陣列的邏輯閘、互連、及開關。開關可以被規劃以改變邏輯閘將如何為互連加以互相連接,以有效形成一或更多專用邏輯電路(除非直到FPGA電路4900被再規劃)。組態邏輯電路致使邏輯閘以不同方式配合,以對為輸入電路所接收的資料,執行不同操作。這些操作可以對應於由在此揭露的流程圖所表示的一些或所有軟體。因此,FPGA電路4900可以被建構以有效樣例化在此所揭露流程圖的部分或所有機器可讀指令,成為專用邏輯電路,以類似於ASIC的專用方式,執行對應於這些軟體指令的操作。因此,FPGA電路4900可以以快於通用微處理器可以執行的方式,執行對應在此所揭露的部分或所有機器可讀指令的操作。
在圖49的例子中,FPGA電路4900被建構為末端使用者以如Verilog的硬體描述語言(HDL)所規劃(及/或再規劃一或更多次)。圖49的FPGA電路4900包含示範輸入/輸出(I/O)電路4902,以取得及/或輸出資料進/出示範組態電路4904及/或外部硬體(如,外部硬體電路)1606。例如,組態電路1604可以實施介面電路,其可以取得機器可讀指令,以組態FPGA電路4900,或其部分。在一些此等例子中,組態電路1604可以由使用者、機器(如,可以實施人工智慧/機器學習(AI/ML)模型以產生指令的硬體電路(如,可程式或專用電路)等取得機器可讀指令。在一些例子中,外部硬體1606可以實施圖48的微處理器1500。FPGA電路4900也包含一陣列的示範邏輯閘電路4908、多數示範可組態互連4910、及示範儲存電路4912。邏輯閘電路4908及互連4910可組態以樣例化可以對應於圖8-13的至少部分機器可讀指令的一或更多操作及/或其他想要操作。示於圖49的邏輯閘電路4908被成群或成方塊製造。各個方塊包含半導體為基電結構,其可以被組態成邏輯電路。在一些例子中,電結構包含邏輯閘(如,及閘、或閘、反或閘等),其提供用於邏輯電路的基本建築方塊。可電控制開關(如,電晶體)係出現在各個邏輯閘電路4908內,以促成電結構及/或邏輯閘的組態形成執行想要操作的電路。邏輯閘電路4908可以包含其他電結構,例如,查找表(LUT)、暫存器(如,正反器或閂鎖)、多工器等。
互連4910的例示例子為導電路徑、軌跡、導孔、或類似物,其可以包含可電控制開關(如,電晶體),其狀態可以為程式化(如,使用HDL指令語言)所改變,以啟動或停止在一或多者邏輯閘電路4908之間的一或更多連接,以執行想要的邏輯電路。
儲存電路4912的例示例子係被建構以儲存由對應邏輯閘所執行的一或更多操作的結果。儲存電路4912可以為暫存器或類似物所實施。在例示例子中,儲存電路4912在邏輯閘電路4908間分佈,以促進存取並增加執行速度。
圖49的示範FPGA電路4900也包含示範專用操作電路4914。在此例子中,專用操作電路4914包含特殊用途電路4916,其可以被調用以實施共同使用功能,以避免要在現場規劃這些功能。此等特殊用途電路4916的例子包含:記憶體(如,DRAM)控制器電路、PCIe控制器電路、時鐘電路、收發器電路、記憶體、及乘法器-累加器電路。也可以出現其他類型特殊用途電路。在一些例子中,FPGA電路4900也可以包含示範通用可程式電路4918,例如,示範CPU 4920及/或示範DSP 4922。其他通用可程式電路4918可以額外或替代地出現,如GPU、XPU等,其可以被規劃以執行其他操作。
雖然圖48及49例示圖16的處理器電路1612、圖21的處理器電路2112、圖26的處理器電路2612、圖33的處理器電路312、及/或圖47的處理器電路4712的兩示範實施方式,但也可以想出很多其他手法。例如,如上所述,現代FPGA電路可以包含板上CPU,例如,圖49的一或更多示範CPU 4920。因此,圖16的處理器電路1612、圖21的處理器電路2112、圖26的處理器電路2612、圖33的處理器電路312、及/或圖47的處理器電路4712可以被額外藉由組合圖48的示範微處理器4800及圖49的示範FPGA電路4900加以實施。在一些此等混合例子中,由圖8-13的流程圖所表示的機器可讀指令的第一部分可以為圖48的一或更多核心4802所執行,由圖8-13的流程圖所表示的機器可讀指令的第二部分可以為圖49的FPGA電路4900所執行,及/或由在此所揭露流程圖所代表的機器可讀指令的第三部分可以為ASIC所執行。一部分或所有電路可以例如被樣例化於同時及/或串列執行的一或更多線程中。
在一些例子中,圖16的處理器電路1612、圖21的處理器電路2112、圖26的處理器電路2612、圖33的處理器電路312、及/或圖47的處理器電路4712可以在一或更多封裝中。例如,圖48的處理器電路4800及/或圖49的FPGA電路1600可以在一或更多封裝中。在一些例子中,XPU可以為可在一或更多封裝內的圖16的處理器電路1612、圖21的處理器電路2112、圖26的處理器電路2612、圖33的處理器電路312、及/或圖47的處理器電路4712所實施。例如,XPU可以包含在一封裝內的CPU、在另一封裝內的DSP、在另一封裝內的GPU、及在另一封裝內的FPGA。
例示示範軟體分配平台5005,以將例如示範機器可讀指令1632或圖16、圖21、圖26、圖33及/或圖47的一或多者的機器可讀指令的軟體分配至由第三方所擁有及/或操作的硬體裝置的方塊圖係被例示於圖50。示範軟體分配平台5005可以為任何能儲存及傳送軟體至其他計算裝置的電腦伺服器、資料設施、雲端服務等所實施。第三方可以為實體擁有及/或操作軟體分配平台5005的顧客。例如,擁有及/或操作軟體分配平台5005的實體可以是如示範機器可讀指令1632的軟體的開發者、販售者、及/或授權者。第三方可以是購買及/或授權軟體作使用及/或再銷售及/或再授權的顧客、使用者、零售商、OEM等。在例示例子中,軟體分配平台5005包含一或更多伺服器及一或更多儲存裝置。儲存裝置如上所述儲存可以對應於在此所揭露的流程圖的示範機器可讀指令的機器可讀指令1632。該示範軟體分配平台5005的一或更多伺服器係與網路5010相通訊,網路5010可以對應於任一或更多網際網路及/或任一上述示範網路1626。在一些例子中,一或更多伺服器係反應於發射軟體至請求方作為商用交易的一部分的請求。軟體的輸送、銷售、及/或授權的付款可以為軟體分配平台的一或更多伺服器及/或第三方付款實體所處置。伺服器致使購買者及/或授權者由軟體分配平台5005下載機器可讀指令1632。例如,可以對應於在此所揭露的流程的示範機器可讀指令的軟體可以被下載至示範處理器平台1600或任何圖16、21、26、33及/或47之一或多者所揭露的處理器平台,其將執行機器可讀指令。在一些例子中,軟體分配平台5005的一或更多伺服器週期地提供、傳送、及/或強迫更新軟體(如,示範機器可讀指令1632),以確保改良、修補、更新等被分配並應用至在末端使用者裝置上的軟體。
用於可組構機器學習計算節點的示範方法、設備、系統及製品被在此揭露。進一步例子及其組合包含如下:
在此揭露示範方法、設備、系統、及製品,以管理處理單元。進一步例子及其組合包含如下:
例子1包含一種管理處理單元的設備,包含:介面電路,用以檢測初始化計算系統的請求,及處理器電路,包含至少一中央處理單元、圖形處理單元或數位信號處理器的一或更多,該至少一該中央處理單元、該圖形處理單元、或該數位信號處理器具有控制電路、算術與邏輯電路、及一或更多暫存器,該處理器電路用以執行指令,以執行由記憶體取回的系統開機軟體、執行異質處理單元的韌體、該韌體由該記憶體取回、經由矽初始化碼識別出該異質處理單元的類型、及經由該矽初始化碼,造成該異質處理單元的初始化。
例子2包含如例子1定義的設備,其中該記憶體為串列週邊介面快閃記憶體。
例子3包含如例子2定義的設備,更包含加強串列週邊介面,以促成在該中央處理單元與該異質處理單元間之該串列週邊介面快閃記憶體的共享。
例子4包含如例子1定義的設備,其中該異質處理器為圖形處理單元。
例子5包含如例子1定義的設備,其中該異質處理器為分立圖形處理單元。
例子6包含如例子1定義的設備,其中該處理器電路係用以執行該指令,以經由該矽初始化碼取回包含週邊連接介面加強(PCI-E)槽資訊的主機板特定組態。
例子7包含如例子1定義的設備,其中該處理器電路係用以執行指令,以儲存包含用於該異質處理單元的位址資訊的可更新產品資料。
例子8包含如例子7定義的設備,其中該處理器電路係用以執行該指令,以經由該矽初始化碼取回該可更新產品資料,以存取用於該異質處理單元的資訊。
例子9包含一種非暫態電腦可讀媒體,包含指令,當被執行時,使得處理器用以至少檢測初始化計算系統的請求,並執行自記憶體取回的系統開機軟體,執行用於異質處理單元的由該記憶體取回的韌體,以經由矽初始化碼,識別出該異質處理單元的類型,及經由該矽初始化碼,造成該異質處理單元初始化。
例子10包含如例子9定義的非暫態電腦可讀媒體,其中該記憶體為串列週邊介面快閃記憶體。
例子11包含如例子10定義的非暫態電腦可讀媒體,其中當所述指令被執行時,使得該處理器用以促成在該中央處理單元與該異質處理單元間之該串列週邊介面快閃記憶體的共享。
例子12包含如例子9定義的非暫態電腦可讀媒體,其中該異質處理器為圖形處理單元。
例子13包含如例子9定義的非暫態電腦可讀媒體,其中該異質處理器為分立圖形處理單元。
例子14包含如例子9定義的非暫態電腦可讀媒體,其中當所述指令被執行時,使得該處理器用以經由該矽初始化碼,取回包含週邊連接介面加強(PCI-E)槽資訊的主機板特定組態。
例子15包含如例子9定義的非暫態電腦可讀媒體,其中當所述指令被執行時,使得該處理器用以儲存包含用於該異質處理單元的位址資訊的可更新產品資料。
例子16包含如例子15定義的非暫態電腦可讀媒體,其中當所述指令被執行時,使得該處理器用以經由該矽初始化碼,取回該可更新產品資料,以存取用於該異質處理單元的資訊。
例子17包含一種方法,包含:檢測初始化計算系統的請求,及執行由記憶體取回的系統開機軟體,執行用於異質處理單元的由該記憶體取回的韌體,經由矽初始化碼,識別出該異質處理單元的類型,及經由該矽初始化碼,造成該異質處理單元的初始化。
例子18包含例子17定義的方法,其中該記憶體為串列週邊介面快閃記憶體。
例子19包含例子18定義的方法,更包含促成在該中央處理單元與該異質處理單元間之該串列週邊介面快閃記憶體的共享。
例子20包含例子17定義的方法,其中該異質處理器為圖形處理單元。
例子21包含例子17定義的方法,其中該異質處理器為分立圖形處理單元。
例子22包含例子17定義的方法,更包含經由該矽初始化碼,取回包含週邊連接介面加強(PCI-E)槽資訊的主機板特定組態。
例子23包含例子17定義的方法,更包含儲存包含用於該異質處理單元的位址資訊的可更新產品資料。
例子24包含例子23定義的方法,更包含經由該矽初始化碼,取回該可更新產品資料,以存取用於該異質處理單元的資訊。
例子25包含一種用以管理處理單元的設備,包含定義介面電路,用以檢測從工作負載取得資源請求的請求;處理器電路,包含至少一中央處理單元、圖形處理單元或數位信號處理器的一或更多,該至少一中央處理單元、圖形處理單元或數位信號處理器具有控制電路、算術與邏輯電路、及一或更多暫存器,該處理器電路用以執行指令,以用以:確定是否有資源可用於在基礎架構處理單元管理系統上的該工作負載;與該基礎架構處理單元協商,以確定執行中的工作負載可否被遷移,回應於確定執行中工作負載可以被遷移,使得該執行中的工作負載被遷移,並使得該工作負載執行於該資源上。
例子26包含如例子25定義的設備,其中該工作負載為虛擬機器。
例子27包含如例子25定義的設備,其中該處理器電路係用以執行該等指令,以驗證該資源請求。
例子28包含如例子25定義的設備,其中該資源請求識別出一服務層級協議。
例子29包含如例子28定義的設備,其中該處理器電路係用以執行所述指令,以確定由該資源請求中所識別的服務層級協議是否符合任何可用資源。
例子30包含如例子29定義的設備,其中該處理器電路係用以回應於確定該服務層級協議不能符合,提示使用者提供有效請求。
例子31包含如例子25定義的設備,其中該處理器電路係用以執行所述指令,以更新用以執行工作負載的服務的等級。
例子32包含如例子25定義的設備,其中該處理器電路係用以執行所述指令,以儲存該工作負載與所述資源的相關性於區塊鏈中。
例子33包含一種非暫態電腦可讀媒體,包含指令,當所述指令被執行時,使得處理器用以至少:檢測請求,以由工作負載取得資源請求,確定是否有資源可用於在基礎架構處理單元管理系統上的該工作負載,與該基礎架構處理單元協商,以確定執行中的工作負載可否被遷移,回應於確定執行中的工作負載可以被遷移,使得該執行中的工作負載被遷移,及使得該工作負載執行於該資源上。
例子34包含如例子33定義的非暫態電腦可讀媒體,其中該工作負載為虛擬機器。
例子35包含如例子33定義的非暫態電腦可讀媒體,其中當所述指令被執行時,使得該處理器用以驗證該資源請求。
例子36包含如例子33定義的非暫態電腦可讀媒體,其中該資源請求識別出服務層級協議。
例子37包含例子36定義的非暫態電腦可讀媒體,其中當所述指令被執行時,使得該處理器用以執行所述指令,以確定在該資源請求中所識別出的該服務層級協議可否符合任何可用資源。
例子38包含如例子37定義的非暫態電腦可讀媒體,其中當所述指令被執行時,使得該處理器用以回應於確定該服務層級協議不能符合,而提示使用者提供一有效請求。
例子39包含如例子33定義的非暫態電腦可讀媒體,其中當所述指令被執行時,使得該處理器用以更新用於該執行中的工作負載的服務等級。
例子40包含如例子33定義的非暫態電腦可讀媒體,其中當所述指令被執行時,使得該處理器用以儲存該工作負載與所述資源的相關性於區塊鏈中。
例子41包含一種方法,包含定義檢測一請求,以從工作負載取得資源請求;確定是否有資源可用於在基礎架構處理單元管理系統上的該工作負載;與該基礎架構處理單元協商,以確定是否有執行中工作負載可被遷移,回應於確定有執行中工作負載可被遷移,使得該執行中工作負載被遷移,及使得該工作負載執行於該資源上。
例子42包含如例子41定義的方法,其中該工作負載為虛擬機器。
例子43包含如例子41定義的方法,更包含驗證該資源請求。
例子44包含如例子41定義的方法,其中該資源請求識別出服務層級協議。
例子45包含如例子44定義的方法,更包含執行所述指令,以確定在該資源請求中所識別出的該服務層級協議可否符合任何可用資源。
例子46包含如例子45定義的方法,更包含回應於確定該服務層級協議不能符合,提示使用者提供一有效請求。
例子47包含如例子41定義的方法,更包含更新用於該執行中工作負載的服務等級。
例子48包含如例子41定義的方法,更包含儲存該工作負載與所述資源之相關性於區塊鏈中。
例子49包含一種用於管理處理單元的設備,包含:介面電路,用以檢測執行深度類神經網路的請求,及處理器電路,包含至少一中央處理單元、圖形處理單元或數位信號處理器的一或更多,該至少一中央處理單元、該圖形處理單元或該數位信號處理器具有控制電路、算術與邏輯電路、及一或更多暫存器,該處理器電路用以執行指令,以取得相關於該請求的服務層級協議,確定候選組操作參數,以根據該服務層級協議,服務該請求,由該候選組,產生用於一群操作參數核心,及執行該核心,以確定該核心的效能。
例子50包含如例子49定義的設備,其中該處理器電路被用以執行所述指令,以確定該效能是否符合該服務層級協議。
例子51包含如例子49定義的設備,其中該處理器電路被用以執行所述指令,以根據計算系統執行該核心的硬體能力,確定該候選組。
例子52包含如例子49定義的設備,其中該處理器電路被用以執行所述指令,以取得與該請求相關的操作說明。
例子53包含如例子49定義的設備,其中該處理器電路被用以執行所述指令,以實施應用程式介面,以接收該請求。
例子54包含如例子53定義的設備,其中該應用程式介面管理多數異質處理器。
例子55包含如例子53定義的設備,其中該應用程式介面被包含於oneAPI框架中。
例子56包含一種非暫態電腦可讀媒體,包含指令,當所述指令被執行時,使得處理器用以至少:檢測執行深度類神經網路的請求,及取得相關於該請求的服務層級協議,根據該服務層級協議,確定服務該請求的一候選組的操作參數,由該候選組,產生用於一群操作參數的核心,及執行該核心,以確定該核心的效能。
例子57包含如例子56定義的非暫態電腦可讀媒體,其中當所述指令被執行時,使得該處理器確定該效能是否符合該服務層級協議。
例子58包含如例子56定義的非暫態電腦可讀媒體,其中當所述指令被執行時,使得該處理器用以根據計算系統執行該核心的硬體能力,確定該候選組。
例子59包含如例子56定義的非暫態電腦可讀媒體,其中當所述指令被執行時,使得該處理器用以取得有關於該請求的操作說明。
例子60包含如例子56定義的非暫態電腦可讀媒體,其中當所述指令被執行時,使得該處理器用以實施一應用程式介面,以接收該請求。
例子61包含如例子60定義的非暫態電腦可讀媒體,其中該應用程式介面管理多數異質處理器。
例子62包含如例子60定義的非暫態電腦可讀媒體,其中該應用程式介面被包含在oneAPI框架中。
例子63包含一種方法,包含定義檢測執行深度類神經網路的請求,及取得與該請求相關的服務層級協議,根據該服務層級協議,確定服務該請求的候選組操作參數,由該候選組,產生用於一群操作參數的核心,及執行該核心,以確定該核心的效能。
例子64包含如例子63定義的方法,更包含確定該效能是否符合該服務層級協議。
例子65包含如例子63定義的方法,更包含根據計算系統執行該核心的硬體能力,確定該候選組。
例子66包含如例子63定義的方法,更包含取得與該請求相關的操作說明。
例子67包含如例子63定義的方法,更包含實施應用程式介面,以接收該請求。
例子68包含如例子67定義的方法,其中該應用程式介面管理多數異質處理器。
例子69包含如例子67定義的方法,其中該應用程式介面包含在oneAPI框架中。
於此揭露用於動態XPU硬體感知深度學習模型的示範方法、設備、系統及製品。進一步的例子及其組合包含如下:
例子70包含一種用於深度學習(DL)模型管理系統的設備,包含:介面電路;處理器電路,包含至少一中央處理單元、圖形處理單元或數位信號處理器的一或更多,該至少一該中央處理單元、該圖形處理單元或該數位信號處理器具有控制電路,以控制在該處理器電路內的資料移動,算術與邏輯電路,用以依據指令執行一或更多第一操作,及一或更多暫存器,用以儲存該一或更多第一操作的結果,該等指令於該設備中,場可程式閘陣列(FPGA),該FPGA包含邏輯閘電路、多數可組態互連、及儲存電路,該邏輯閘電路及互連用以執行一或更多第二操作,該儲存電路,用以儲存該一或更多第二操作的結果,或特殊應用積體電路(ASIC),包含邏輯閘電路,用以執行一或更多第三操作,該處理器電路用以執行該第一操作、該第二操作、或該第三操作的至少之一,以樣例化:差異確定器電路,以分析針對選定目標最佳化的模型的特性名單,以識別出在多數模型間之特性差異;類似性確定器電路,以分析針對多數選定目標最佳化的該多數模型的多數特性名單,以識別出在該多數模型間的特性類似性;QoS選擇器電路,用以建立用以優先化該多數選定目標的QoS目標;及模型排程器電路,用以由該多數模型選擇一模型,供在目標硬體平台上使用。
例子71包含例子70的設備,其中該處理器電路係用以樣例化QoS取樣器電路,用以取樣該目標硬體平台的現行狀態。
例子72包含例子70的設備,其中該QoS選擇器電路係用以進一步根據用以最大化該QoS目標的優先化的能力,而排序該多數模型。
例子73包含例子70的設備,其中該模型排程器電路係用以進一步計算在該目標硬體平台上所選擇模型的模型利用度量,及回應於確定該模型利用度量低於臨限值,選擇該多數模型的另一模型,供在目標硬體平台上使用。
例子74包含例子70的設備,其中該特性收集器電路係用以保留為該差異確定器電路與該類似性確定器電路所識別出的多數特性。
例子75包含一種深度學習(DL)模型訓練的方法,該方法包含:由資料集抽取多數模型,該多數模型的個別模型係針對多數服務品質(QoS)目標的一選擇QoS目標加以最佳化;識別出在該多數模型之個別模型間之多數特性差異,及識別出在該多數模型的個別模型間之多數特性類似性。
例子76包含例子75的方法,其中該多數特性差異與該多數特性類似性係被聚集供保留。
例子77包含一種深度學習(DL)模型管理的方法,該方法包含:取樣目標硬體平台的現行狀態,根據該目標硬體平台的該現行狀態,選擇多數服務品質(QoS)目標的一供優先化的QoS目標,針對該多數QoS目標的個別QoS目標最佳化的該多數模型的個別模型,排序多數模型,選擇所排序多數模型的一模型,供該目標硬體平台使用,在該目標硬體平台上,計算該模型的利用度量,及回應於確定該利用度量並未滿足臨限,選擇該多數模型的另一模型供該目標硬體平台所使用。
例子78包含例子77的方法,其中排序所述多數模型係根據所選擇的QoS目標。
例子79包含一種包含指令的非暫態電腦可讀媒體,當所述指令被執行時,使得機器用以至少:分析針對所選擇目標最佳化的模型的特性名單,以識別出在多數模型間之特性差異,分析針對所選擇目標最佳化的所述多數模型的所述多數特性名單,以識別在該多數模型間之特性類似性,針對該多數所選擇目標的優先化建立QoS目標,並由該多數模型選擇一模型,以供目標硬體平台使用。
例子80包含例子11的非暫態電腦可讀媒體,其中該目標硬體平台的現行狀態係被取樣。
例子81包含例子80的非暫態電腦可讀媒體,其中該多數模型可以根據用以最大化用於優先化的該QoS目標的能力加以排序。
例子82包含例子80的非暫態電腦可讀媒體,其中當該等指令被執行時,進一步使得該機器用以針對該目標硬體平台上的所選擇模型,計算模型利用度量,並回應於確定該模型利用度量低於臨限值,選擇該多數模型中的另一模型供該目標硬體平台使用。
例子83包含例子80的非暫態電腦可讀媒體,其中由該差異確定器電路與該類似性確定器電路所識別出的該多數特性係被保留。
例子84包含一種設備,包含至少一介面電路,在該設備中的指令、及處理器電路,用以執行所述指令,以分析針對所選擇目標最佳化的模型的特性名單,以識別出在多數模型間之特性差異,分析針對多數所選擇目標最佳化的多數模型的多數特性名單,以識別出在該多數模型間之特性類似性,針對該多數所選擇目標優先化,建立QoS目標,及由該多數模型,選擇一模型,供目標硬體平台使用。
例子85包含例子84的設備,其中該處理器電路係用以取樣該目標硬體平台的現行狀態。
例子86包含例子84的設備,其中該處理器電路係用以進一步根據最大化用於優先化的該QoS目標的能力,排序該多數模型。
例子87包含例子84的設備,其中該處理器電路係用以進一步計算在該目標硬體平台上的該所選擇模型的模型利用度量,及回應於確定該模型利用度量低於臨限值,選擇該多數模型中的另一模型,以供該目標硬體平台所使用。
例子88包含例子84的設備,其中該處理器電路係用以保留由該差異確定器電路與該類似性確定器電路所識別的多數特性。
例子89包含例子87的設備,其中該模型利用度量的該臨限係為預定臨限。
於此揭露用於資料加強自動模型產生的示範方法、設備、系統及製品。其他例子與其組合包含如下:
例子90包含一種用於資料加強自動模型產生的設備,該設備包含:介面電路,用以接取產生機器學習模型的一請求,及處理器電路,包含至少一中央處理單元、圖形處理單元、或數位信號處理器的一或更多,該至少一中央處理單元、圖形處理單元、或數位信號處理器具有控制電路,用以控制在該處理器電路內的資料移動,算術與邏輯電路,用以執行對應於指令的一或更多第一操作,及一或更多暫存器,用以儲存該一或更多第一操作的結果,在該設備中的所述指令,場可程式閘陣列(FPGA),該FPGA包含邏輯閘電路,多數可組態互連,及儲存電路,該邏輯閘電路與該互連用以執行一或更多第二操作,該儲存電路用以儲存該一或更多第二操作的結果,或特殊應用積體電路(ASIC),包含邏輯閘電路,用以執行一或更多第三操作,該處理器電路用以執行該第一操作、該第二操作、或該第三操作的至少之一,以樣例化工作資料協調電路,以根據先前產生機器學習模型,產生工作知識,搜尋空間管理電路,用以根據該工作知識,建立搜尋空間,及類神經架構搜尋電路,用以使用類神經架構搜尋,產生該機器學習模型,該類神經架構搜尋電路根據該搜尋空間,開始架構搜尋。
例子91包含例子90的設備,其中該處理器電路係用以在產生該機器學習模型期間,將多數定錨點插入該機器學習模型中,所述定錨點被用以收集有關該機器學習模型執行的效能統計。
例子92包含例子91的設備,其中該效能統計包含功率效率或能量效率的至少之一。
例子93包含例子91的設備,其中該處理器電路係進一步用以基於所述定錨點收集效能統計。
例子94包含例子93的設備,其中為了產生該工作知識,該處理器電路更進一步用以排名該先前產生機器學習模型的特性。
例子95包含例子90的設備,其中為了建立該搜尋空間,該處理器電路係用以根據在一所選擇硬體上的先前架構的效能,選擇先前架構。
例子96包含一種包含有指令的至少一非暫態電腦可讀儲存媒體,當指令被執行時,使得至少一處理器用以至少存取產生機器學習模型的請求,以執行選擇工作,根據先前產生機器學習模型,產生工作知識,根據該工作知識,建立搜尋空間,及使用類神經架構搜尋,產生機器學習模型,該類神經架構搜尋根據該搜尋空間開始。
例子97包含例子96的至少一非暫態電腦可讀儲存媒體,其中當所述指令被執行時,進一步使得該至少一處理器用以將多數定錨點插入該機器學習模型,該等定錨點係當收集有關該機器學習模型執行的效能統計時被使用。
例子98包含例子97的至少一非暫態電腦可讀儲存媒體,其中當所述指令被執行時,進一步使得該至少一處理器用以基於所述定錨點收集效能統計。
例子99包含例子98的至少一非暫態電腦可讀儲存媒體,其中當所述指令被執行時,進一步使得該至少一處理器用以排名在先前產生機器學習模型的特性,以產生該工作知識。
例子100包含例子96的至少一非暫態電腦可讀儲存媒體,其中當所述指令被執行時,進一步使得該至少一處理器根據在選擇硬體上的先前架構的效能,選擇一先前架構,以建立該搜尋空間。
例子101包含一種用於資料加強自動模型產生的方法,該方法包含:接取產生機器學習模型的請求,以執行所選擇工作,根據先前產生機器學習模型,產生工作知識,根據該工作知識,建立搜尋空間,及使用類神經架構搜尋,產生機器學習模型,該類神經架構搜尋根據該搜尋空間開始。
例子102包含例子101的方法,更包含:在產生該機器學習模型期間,將多數定錨點插入該機器學習模型,所述定錨點當收集有關該機器學習模型執行時的效能統計時被使用。
例子103包含例子102的方法,更包含基於所述定錨點,收集效能統計。
例子104包含例子103的方法,其中所述產生該工作知識包含排名先前產生機器學習模型的特性。
例子105包含例子101的方法,其中所述建立該搜尋空間包含根據在所選擇硬體上的先前架構的效能,選擇先前架構。
例子106包含一種用於資料加強自動模型產生的設備,該設備包含:接取手段,用以接取產生執行一選擇工作的機器學習模型的請求,產生手段,用以根據先前產生機器學習模型,產生工作知識,建立手段,用以根據該工作知識,建立搜尋空間,及產生手段,用以使用類神經架構搜尋,產生機器學習模型,該類神經架構搜尋根據該搜尋空間開始。
例子107包含例子106的設備,更包含插入手段,用以在產生機器學習模型時,將多數定錨點插入該機器學習模型,所述定錨點係當收集有關該機器學習模型執行的效能統計時使用。
例子108包含例子107的設備,更包含收集手段,用以收集基於所述定錨點的效能統計。
例子109包含例子108的設備,其中該產生手段更進一步用以排名先前產生機器學習模型的特性。
例子110包含例子106的設備,其中該建立手段係用以根據在所選擇硬體上的該先前架構的效能,選擇先前架構。
於此揭露用以條件性啟動在計算系統中之大核心的示範方法、設備、系統、與製品。其他例子與其組合包含如下:
例子111包含一種用以條件性啟動在計算系統中的大核心的設備,該設備包含:在該設備中的第一指令,及處理器電路,用以執行該第一指令,以回應於操作兩或更多處理裝置作為單一處理裝置的請求,確定所述兩或更多處理裝置是否為可用並能依據該請求執行第二指令,當所述兩或更多處理裝置為可用並能執行該第二指令時,將該第二指令細分為第一「次指令」及第二「次指令」,(a)將該第一次指令提供給所述兩或更多處理裝置的第一處理裝置及(b)將該第二次指令提供給所述兩或更多處理裝置的第二處理裝置,並藉由組合該第一處理裝置的第一輸出與該第二處理裝置的第二輸出,產生用於該第二指令的輸出。
例子112包含例子111的設備,其中該請求為第一請求,該處理器電路用以回應於操作所述兩或更多處理裝置作為單一處理裝置的第二請求,確定所述兩或更多處理裝置是否可用並能依據該第二請求執行第三指令,及當所述兩或更多處理裝置能執行該第三指令但不可用時,確定是否所述兩或更多處理裝置將可在後續時間點執行該第三指令。
例子113包含例子112的設備,其中該處理器電路係用以回應於確定所述兩或更多處理裝置將能在未來執行該第三指令,傳送一回應以指示所述兩或更多處理裝置將何時為可用。
例子114包含例子111的設備,其中該請求係為第一請求,該處理器電路係用以回應於操作所述兩或更多處理裝置作為單一處理裝置的請求,確定所述兩或更多處理裝置是否為可用並能依據與該第二請求相關的參數執行第二指令,及當所述兩或更多處理裝置能依據該參數執行該第三指令但並不為可用時,根據該第一處理裝置與該第二處理裝置,產生對應於該第三指令的執行的仿真組態。
例子115包含例子114的設備,其中該處理器電路係用以傳送該第三指令能依據該仿真組態執行的一指示,及回應於該仿真組態的接收,將該第三指令細分為第三「次指令」及第四「次指令」,提供(a)該第三次指令至該兩或更多處理裝置的第一處理裝置,及(b)該第四次指令至該處理裝置的該第二處理裝置,並組合該第一處理裝置的第三輸出與該第二處理裝置的第四輸出。
例子116包含例子114的設備,其中該處理器電路係用以確定所述兩或更多處理裝置能執行該第三指令但在第一時間依據該參數為不可用及確定所述兩或更多處理裝置能依據該參數執行該第三指令並在第二時間依據該參數為可用。
例子117包含例子111的設備,其中該處理器電路係用以當所述兩或更多處理裝置不能執行該第一指令時,傳送該第一指令不能被執行的指示。
例子118包含例子111的設備,其中該處理器電路係用以在確定所述兩或更多處理裝置是否為可用並能根據該請求執行該第一指令之前,鑑別該請求。
例子119包含例子111的設備,其中所述兩或更多處理裝置係為可組態以操作為不同大小的單一處理裝置。
例子120包含例子119的設備,其中組合所述兩或更多處理裝置係透過一策略而為可組態的。
例子121包含例子120的設備,其中該策略係透過平台信任執行環境執行。
例子122包含例子111的設備,其中該處理電路係用以藉由序連該第一輸出與該第二輸出、將該第一輸出與該第二輸出相加、或將該第一輸出與該第二輸出相乘的至少之一,以組合該第一處理裝置的該第一輸出與該第二處理裝置的該第二輸出。
例子123包含一種包含指令的非暫態電腦可讀媒體,當所述指令被執行時,使得一或更多處理器用以至少:回應於操作兩或更多處理裝置成為單一處理裝置的請求,確定所述兩或更多處理裝置是否為可用並能依據該請求執行指令,當所述兩或更多處理裝置為可用並能執行該指令時,將該指令細分為第一「次指令」及第二「次指令」,提供(a)該第一次指令至所述兩或更多處理裝置的第一處理裝置及(b)該第二次指令至所述兩或更多處理裝置的第二處理裝置,及藉由組合該第一處理裝置的第一輸出與該第二處理裝置的第二輸出,而產生用於該指令的輸出。
例子124包含例子123的電腦可讀媒體,其中該請求為第一請求及該指令為第一指令,該指令使得該一或更多處理器用以回應於操作所述兩或更多處理裝置作為單一處理裝置的第二請求,確定所述兩或更多處理裝置是否為可用並能依據該第二請求執行第二指令,及當所述兩或更多處理裝置能執行該第二指令但不是可用時,確定所述兩或更多處理裝置是否在後續時間點能執行該第二指令。
例子125包含例子124的電腦可讀媒體,其中該指令使得所述一或更多處理器用以回應於確定所述兩或更多處理裝置將在未來能執行該第二指令,傳送指示所述兩或更多處理裝置何時將為可用的回應。
例子126包含例子123的電腦可讀媒體,其中該請求為第一請求及該指令為第一指令,該指令使得該一或更多處理器用以回應於操作所述兩或更多處理裝置為單一處理裝置的第二請求,確定所述兩或更多處理裝置是否為可用並能依據相關於該第二請求的參數,執行第二指令,及當所述兩或更多處理裝置能執行該第二指令但依據該參數為不可用時,根據該第一處理裝置與該第二處理裝置,產生對應於該第二指令執行的仿真組態。
例子127包含例子126的電腦可讀媒體,其中該指令使得該一或更多處理器用以傳送該第二指令可以依據該仿真組態執行的指示,及回應於接受該仿真組態,將該第二指令細分為第三次指令及第四次指令,提供(a)該第三次指令至所述兩或更多處理裝置的第一處理裝置,及(b)該第四次指令至該處理裝置的該第二處理裝置,並組合該第一處理裝置的第三輸出與該第二處理裝置的第四輸出。
例子128包含例子126的電腦可讀媒體,其中該指令使得該一或更多處理器用以確定所述兩或更多處理裝置能執行該第二指令但在第一時間依據該參數並不為可用,以及,確定所述兩或更多處理裝置能執行該第二指令並在與該第一時間不同的第二時間依據該參數為可用的。
例子129包含例子123的電腦可讀媒體,其中該指令使得該一或更多處理器用以當所述兩或更多處理裝置不能執行該指令時,傳送該指令不能被執行的指示。
例子130包含例子123的電腦可讀媒體,其中該指令使得該一或更多處理器用以在確定所述兩或更多處理裝置是否為可用並能根據該請求執行該指令之前,鑑別該請求。
例子131包含例子123的電腦可讀媒體,其中所述兩或更多處理裝置係為可組態以操作為不同大小的單一處理裝置。
例子132包含例子131的電腦可讀媒體,其中所述兩或更多處理裝置的組合係透過一策略而為可組態的。
例子133包含例子132的電腦可讀媒體,其中該策略係透過平台信任執行環境執行。
例子134包含例子123的電腦可讀媒體,其中該指令使得該一或更多處理器用以藉由序連該第一輸出與該第二輸出、將該第一輸出與該第二輸出相加、或將該第一輸出與該第二輸出相乘的至少之一,以組合該第一處理裝置的該第一輸出與該第二處理裝置的該第二輸出。
例子135包含一種條件性啟動計算系統中的大核心的設備,該設備包含:介面電路,用以取得操作兩或更多處理裝置為單一處理裝置的請求,及處理器電路,包含至少一中央處理單元、圖形處理單元、或數位信號處理器的一或更多,該至少一該中央處理單元、該圖形處理單元、或該數位信號處理器具有:控制電路,用以控制在該處理器電路內的資料移動;算術與邏輯電路,用以執行對應於指令的一或更多第一操作;及一或更多暫存器,用以儲存該一或更多第一操作的結果,在該設備中的該指令,場可程式閘陣列(FPGA),該FPGA包含邏輯閘電路,多數可組態互連,及儲存電路,該邏輯閘電路與互連係用以執行一或更多第二操作,該儲存電路係用以儲存該一或更多第二操作的結果,或特殊應用積體電路(ASIC)包含邏輯閘電路,用以執行一或更多第三操作,該處理器電路用以執行該第一操作,該第二操作,或該第三操作的至少之一,以樣例化硬體管理電路,以用以回應該請求,確定所述兩或更多處理裝置是否為可用並能依據該請求執行指令,當所述兩或更多處理裝置為可用並能執行該指令時,將該指令細分為第一次指令及第二次指令,提供(a)該第一次指令至所述兩或更多處理裝置的第一處理裝置及(b)該第二次指令至所述兩或更多處理裝置的第二處理裝置,及藉由組合該第一處理裝置的第一輸出與該第二處理裝置的第二輸出,而產生用於該指令的輸出。
例子136包含例子135的設備,其中該請求為第一請求及該指令為第一指令,該硬體管理電路用以回應於操作所述兩或更多處理裝置作為單一處理裝置的第二請求,確定所述兩或更多處理裝置是否為可用並能依據該第二請求執行第二指令,及當所述兩或更多處理裝置能執行該第二指令但不是可用時,確定所述兩或更多處理裝置是否在後續時間點能執行該第二指令。
例子137包含例子136的設備,其中該硬體管理電路係用以回應於確定所述兩或更多處理裝置將在未來能執行該第二指令,傳送指示所述兩或更多處理裝置何時將為可用的回應。
例子138包含例子135的設備,其中該請求為第一請求及該指令為第一指令,該硬體管理電路係用以回應於操作所述兩或更多處理裝置為單一處理裝置的第二請求,確定所述兩或更多處理裝置是否為可用並能依據相關於該第二請求的參數,執行第二指令,及當所述兩或更多處理裝置能執行該第二指令但依據該參數為不可用時,根據該第一處理裝置與該第二處理裝置,產生對應於該第二指令執行的仿真組態。
例子139包含例子138的設備,其中該硬體管理電路係用以傳送該第二指令可以依據該仿真組態執行的指示,及回應於接受該仿真組態,將該第二指令細分為第三次指令及第四次指令,提供(a)該第三次指令至所述兩或更多處理裝置的第一處理裝置,及(b)該第四次指令至該處理裝置的該第二處理裝置,及組合該第一處理裝置的第三輸出與該第二處理裝置的第四輸出。
例子140包含例子138的設備,其中該硬體管理電路係用以確定所述兩或更多處理裝置能執行該第二指令但在第一時間依據該參數並不為可用,以及,確定所述兩或更多處理裝置能執行該第二指令並在第二時間依據該參數為可用的。
例子141包含例子135的設備,其中該硬體管理電路係用以當所述兩或更多處理裝置不能執行該指令時,傳送該指令不能被執行的指示。
例子142包含例子135的設備,其中該處理器電路係用以樣例化鑑別電路,用以在確定所述兩或更多處理裝置是否為可用並能根據該請求執行該指令之前,鑑別該請求。
例子143包含例子135的設備,其中所述兩或更多處理裝置係為可組態以操作為不同大小的單一處理裝置。
例子144包含例子143的設備,其中所述兩或更多處理裝置的組合係透過一策略而為可組態的。
例子145包含例子144的設備,其中該策略係透過平台信任執行環境執行。
例子146包含例子135的設備,其中該硬體管理電路係用以藉由序連該第一輸出與該第二輸出、將該第一輸出與該第二輸出相加、或將該第一輸出與該第二輸出相乘的至少之一,以組合該第一處理裝置的該第一輸出與該第二處理裝置的該第二輸出。
例子147包含一種條件性啟動計算系統中的大核心的方法,該方法包含回應於操作兩或更多處理裝置為單一處理裝置的請求,藉由以一或更多處理器執行指令,而確定所述兩或更多處理裝置是否為可用並能依據該請求執行指令,當所述兩或更多處理裝置為可用並能執行該指令時,藉由以該一或更多處理器執行指令,以將該指令細分為第一次指令及第二次指令,藉由以該一或更多處理器執行指令,而提供(a)該第一次指令至所述兩或更多處理裝置的第一處理裝置及(b)該第二次指令至所述兩或更多處理裝置的第二處理裝置,及藉由以該一或更多處理器執行指令,以藉由組合該第一處理裝置的第一輸出與該第二處理裝置的第二輸出,而產生用於該指令的輸出。
例子148包含例子147的方法,其中該請求為第一請求及該指令為第一指令,更包含回應於操作所述兩或更多處理裝置作為單一處理裝置的第二請求,確定所述兩或更多處理裝置是否為可用並能依據該第二請求執行第二指令,及當所述兩或更多處理裝置能執行該第二指令但不是可用時,確定所述兩或更多處理裝置是否在後續時間點能執行該第二指令。
例子149包含例子148的方法,更包含回應於確定所述兩或更多處理裝置將在未來能執行該第二指令,傳送指示所述兩或更多處理裝置何時將為可用的回應。
例子150包含例子147的設備,其中該請求為第一請求及該指令為第一指令,更包含回應於操作所述兩或更多處理裝置為單一處理裝置的第二請求,確定所述兩或更多處理裝置是否為可用並能依據相關於該第二請求的參數,執行第二指令,及當所述兩或更多處理裝置能執行該第二指令但依據該參數為不可用時,根據該第一處理裝置與該第二處理裝置,產生對應於該第二指令執行的仿真組態。
例子151包含例子150的方法,更包含傳送該第二指令可以依據該仿真組態執行的指示,及回應於接受該仿真組態,將該第二指令細分為第三次指令及第四次指令,提供(a)該第三次指令至所述兩或更多處理裝置的第一處理裝置,及(b)該第四次指令至該處理裝置的該第二處理裝置,及組合該第一處理裝置的第三輸出與該第二處理裝置的第四輸出。
例子152包含例子150的方法,更包含確定所述兩或更多處理裝置能執行該第二指令但在第一時間依據該參數並不為可用,以及,確定所述兩或更多處理裝置能執行該第二指令並在與該第一時間不同的第二時間依據該參數為可用的。
例子153包含例子147的方法,更包含當所述兩或更多處理裝置不能執行該指令時,傳送該指令不能被執行的指示。
例子154包含例子147的方法,更包含在確定所述兩或更多處理裝置是否為可用並能根據該請求執行該指令之前,鑑別該請求。
例子155包含例子147的方法,其中所述兩或更多處理裝置係為可組態以操作為不同大小的單一處理裝置。
例子156包含例子155的方法,其中所述兩或更多處理裝置的組合係透過一策略而為可組態的。
例子157包含例子156的方法,其中該策略係透過平台信任執行環境執行。
例子158包含例子147的方法,其中組合該第一處理裝置的該第一輸出與該第二處理裝置的該第二輸出包含序連該第一輸出與該第二輸出、將該第一輸出與該第二輸出相加、或將該第一輸出與該第二輸出相乘的至少之一。
在此揭露為用以可組構機器學習計算節點的示範方法、設備、系統、及製品。其他例子與其組合包含如下:
例子159包含一種產生計算節點的設備,該設備包含:介面電路,用以接收工作負載,在該設備中的指令,及處理器電路,用以以下至少之一:執行或樣例化該指令,以根據該工作負載產生一或更多機器學習模型的第一組態,該第一組態儲存在第一組態資料庫中,該第一組態資料庫包含多數機器學習模型,該多數機器學習模型包含該一或更多機器學習模型;產生硬體的第二組態,該第二組態儲存在第二組態資料庫中,該第二組態資料庫包含多數硬體的一或更多部分,該多數硬體包含硬體;根據該工作負載的執行,確定評估參數,該工作負載的執行根據該第一組態與該第二組態,及回應於該評估參數滿足臨限,在第二組態中的該硬體上,執行在該第一組態中的一或更多機器學習模型,該一或更多機器學習模型與該硬體用以執行該工作負載。
例子160包含例子159的設備,其中該第一組態包含模型層的數量、所述模型層的權重、機器學習模型的類型、或與該一或更多機器學習模型相關的一或更多超參數的至少之一。
例子161包含例子159的設備,其中該一或更多部分包含第一方塊、第二方塊、或第三方塊的至少之一,及該處理器電路係用以以下至少之一:執行或樣例化該指令,以識別出該硬體的該第一方塊,以執行矩陣-陣列工作負載,識別出該硬體的該第二方塊,以執行向量-向量工作負載,識別出該硬體的該第三方塊,以執行矩陣-向量工作負載,及識別出暫存器檔案,用於該第一方塊、該第二方塊、及該第三方塊的個別方塊,該暫存器檔案用以儲存該第一方塊、該第二方塊、及該第三方塊的個別方塊的狀態,該第二組態根據包含該第一方塊、該第二方塊、或該第三方塊的至少之一的拓樸。
例子162包含例子159的設備,其中該一或更多機器學習模型包含第一機器學習模型,及該處理器電路係用以以下至少之一:執行或樣例化該指令,以回應於該評估參數未滿足該臨限,識別在該第一組態資料庫中的第二機器學習模型,產生該第二機器學習模型的第三組態,根據基於該第三組態的該工作負載的執行,確定該評估參數,及部署該第二機器學習模型,以根據該第三組態執行該工作負載。
例子163包含例子159的設備,其中該一或更多機器學習模型包含第一機器學習模型,及該處理器電路係用以以下至少之一:執行或樣例化該指令,以回應於該評估參數未滿足該臨限,確定該第一機器學習模型的一或更多第一層,用以執行該工作負載的第一部分,識別出在該第一組態資料庫中的第二機器學習模型,確定該第二機器學習模型的一或更多第二層,以執行該工作負載的第二部分,及根據該一或更多第一層及該一或更多第二層的拓樸,確定第三組態,該拓樸係根據來自該一或更多第一層的輸出作為至該一或更多第二層的輸入。
例子164包含例子159的設備,其中該一或更多機器學習模型包含第一機器學習模型,及該處理器電路係用以以下至少之一:執行或樣例化該指令,以識別出在該第一組態資料庫中的該第一機器學習模型;根據以該第一機器學習模型的識別符作為輸入,查詢本體資料庫,識別出第二機器學習模型,該本體資料庫包含該第一機器學習模型與該第二機器學習模型的相關性,及回應於評估參數滿足該臨限,根據該第一組態,更新該本體資料庫。
例子165包含例子159的設備,其中該硬體為第一硬體,及該處理器電路係用以以下至少之一:執行或樣例化該指令,用以回應於該評估參數未滿足該臨限,識別出在該第二組態資料庫中的第二硬體,產生該第二硬體的第三組態,根據以該第三組態的該第二硬體對該工作負載的執行,確定該評估參數,及以該第三組態部署該第二硬體,以執行該一或更多機器學習模型,以執行該工作負載。
例子166包含例子159的設備,其中該硬體為第一硬體,及該處理器電路係用以以下至少之一:執行或樣例化該指令,用以回應於該評估參數未滿足該臨限,確定該第一硬體的一或更多第一部分,用以執行該工作負載的第一部分,識別出在該第一組態資料庫中的第二硬體,確定該第二硬體的一或更多第二部分,以執行該工作負載的第二部分,及根據該一或更多第一部分及該一或更多第二部分的拓樸,確定第三組態,該拓樸係根據來自該一或更多第一部分的輸出作為至該一或更多第二部分的輸入。
例子167包含例子166的設備,其中該第一硬體與該第二硬體係為中央處理單元、圖形處理單元、數位信號處理器、人工智慧處理器、類神經網路處理器、或場可程式閘陣列之一。
例子168包含例子159的設備,其中該評估參數為第一評估參數,及該處理器電路係用以以下至少之一:執行或樣例化該指令,以輸出報酬函數,其包含具有第一權重的第一評估參數及具有第二權重的第二評估參數,該第一權重大於該第二權重,及回應於確定該第一評估參數或該第二評估參數的至少之一未滿足該臨限,修改該第一組態或該第二組態的至少之一,以增加該第一評估參數或降低該第二評估參數的至少之一。
例子169包含例子159的設備,其中該評估參數為與該一或更多機器學習模型或硬體的至少之一相關的準確度、成本、能量消耗、潛時、效能、或產出量的至少之一。
例子170包含一種用以產生計算節點的設備,該設備包含:第一產生手段,用以根據工作負載,產生一或更多機器學習模型的第一組態,該第一組態被儲存在第一組態資料庫,該第一組態資料庫包含多數機器學習模型,該多數機器學習模型包含一或更多機器學習模型;第二產生手段,用以產生該硬體的第二組態,該第二組態被儲存在第二組態資料庫中,該第二組態資料庫包含多數硬體的一或更多部分,該多數硬體包含硬體;確定手段,用以根據該工作負載的執行,確定評估參數,該工作負載的執行根據該第一組態與該第二組態;及執行手段,用以回應於該評估參數滿足臨限,而在該第二組態中的該硬體上,執行在該第一組態中的該一或更多機器學習模型,該一或更多機器學習模型與該硬體用以執行該工作負載。
例子171包含例子170的設備,其中該一或更多部分包含第一方塊、第二方塊、或第三方塊的至少之一,及該第二產生手段,用以識別出該硬體的該第一方塊,以執行矩陣-矩陣工作負載,識別出該硬體的該第二方塊,以執行向量-向量工作負載,識別出該硬體的該第三方塊,以執行矩陣-向量工作負載,及識別出用於個別該第一方塊、該第二方塊、及該第三方塊的暫存器檔案,該暫存器檔案係用以儲存個別該第一方塊、該第二方塊、及該第三方塊的狀態,該第二組態係根據包含該第一方塊、該第二方塊、或該第三方塊的至少之一的拓樸。
例子172包含例子170的設備,其中該一或更多機器學習模型包含第一機器學習模型,及該第一產生手段,用以回應於該評估參數未滿足該臨限,識別出在該第一組態資料庫中的第二機器學習模型,產生該第二機器學習模型的第三組態,根據基於第三組態的工作負載的執行,確定該評估參數,及部署該第二機器學習模型,以根據該第三組態,執行該工作負載。
例子173包含例子170的設備,其中該一或更多機器學習模型包含第一機器學習模型,及該第一產生手段係用以回應於該評估參數未滿足該臨限,確定該第一機器學習模型的一或更多第一層,以執行該工作負載的第一部分;識別出在該第一組態資料庫中的第二機器學習模型;確定該第二機器學習模型的一或更多第二層,以執行該工作負載的第二部分;及根據在該一或更多第一層與該一或更多第二層的拓樸,確定第三組態,該拓樸係根據來自該一或更多第一層的輸出作為該一或更多第二層的輸入。
例子174包含例子170的設備,其中該一或更多機器學習模型包含第一機器學習模型,及該第一產生手段,係用以識別出在該第一組態資料庫中的該第一機器學習模型,根據以該第一機器學習模型的識別符作為輸入,查詢本體資料庫,識別出第二機器學習模型,該本體資料庫包含該第一機器學習模型與該第二機器學習模型的相關性,及回應於該評估參數滿足該臨限,根據該第一組態更新該本體資料庫。
例子175包含例子170的設備,其中該硬體為第一硬體,及第二產生手段係用以:回應於該評估參數未滿足該臨限,識別出在該第二組態資料庫中的第二硬體;產生該第二硬體的第三組態,根據在該第三組態中的該第二硬體的執行該工作負載,確定該評估參數,及以該第三組態部署該第二硬體,以執行該一或更多機器學習模型,以執行該工作負載。
例子176包含例子170的設備,其中該硬體係為第一硬體,及該第二產生手段係用以:回應於該評估參數未滿足該臨限,確定該第一硬體的一或更多第一部分,以執行該工作負載的第一部分,識別出在該第一組態資料庫中的第二硬體,確定該第二硬體中的一或更多第二部分,以執行該工作負載的第二部分,及根據該一或更多第一部分與該一或更多第二部分的拓樸,確定第三組態,該拓樸係根據來自該一或更多第一部分的輸出成為至該一或更多第二部分的輸入。
例子177包含例子170的設備,其中該評估參數為第一評估參數,及該確定手段係用以確定一報酬函數,其包含具有第一權重的該第一評估參數及具有第二權重的第二評估參數,該第一權重大於該第二權重,及回應於確定該第一評估參數或該第二評估參數的至少之一未滿足該臨限,改變該第一組態或該第二組態的至少之一,以增加該第一評估參數或降低該第二評估參數的至少之一。
例子178包含一種包含指令的至少一非暫態電腦可讀儲存媒體,當指令被執行時,使得處理器電路至少用以:根據工作負載,產生一或更多機器學習模型的第一組態,該第一組態被儲存在第一組態資料庫,該第一組態資料庫包含多數機器學習模型,該多數機器學習模型包含一或更多機器學習模型,產生該硬體的第二組態,該第二組態被儲存在第二組態資料庫中,該第二組態資料庫包含多數硬體的一或更多部分,該多數硬體包含硬體,根據工作負載的執行,確定評估參數,該工作負載的執行係根據該第一組態與該第二組態,及回應於該評估參數滿足臨限,在該第二組態中的硬體上,執行在該第一組態中的該一或更多機器學習模型,該一或更多機器學習模型與該硬體係用以執行該工作負載。
例子179包含例子178的至少一非暫態電腦可讀儲存媒體,其中該第一組態包含模型層數、該模型層的權重、機器學習訓練的類型、或與該一或更多機器學習模型相關的一或更多超參數的至少之一。
例子180包含例子178的至少一非暫態電腦可讀儲存媒體,其中該一或更多部分包含第一方塊、第二方塊、或第三方塊的至少之一,及該指令當被執行時,使得該處理器電路用以選擇該硬體的第一方塊,以執行矩陣-矩陣工作負載,選擇該硬體的該第二方塊,以執行向量-向量工作負載,選擇該硬體的該第三方塊,以執行矩陣-向量工作負載,及建立用於個別該第一方塊、該第二方塊、及該第三方塊的暫存器檔案,該暫存器檔案係用以儲存個別該第一方塊、該第二方塊、及該第三方塊的狀態,該第二組態係根據包含該第一方塊、該第二方塊、或該第三方塊的至少之一的拓樸。
例子181包含例子178的至少一非暫態電腦可讀儲存媒體,其中該一或更多機器學習模型包含第一機器學習模型,及當該指令被執行時,使得該處理器電路用以回應於該評估參數未滿足該臨限,識別出在該第一組態資料庫中的第二機器學習模型,識別在該第一組態資料庫中的第二機器學習模型,組構該第二機器學習模型的第三組態,根據基於第三組態的工作負載的執行,計算該評估參數,及部署該第二機器學習模型,以根據該第三組態,執行該工作負載。
例子182包含例子178的至少一非暫態電腦可讀儲存媒體,其中該一或更多機器學習模型包含第一機器學習模型,及該指令當被執行時,使得該處理器電路用以回應於該評估參數未滿足該臨限,確定該第一機器學習模型的一或更多第一層,以造成該工作負載的第一部分的執行;識別出在該第一組態資料庫中的第二機器學習模型;確定該第二機器學習模型的一或更多第二層,以造成該工作負載的第二部分的執行;及根據在該一或更多第一層與該一或更多第二層的拓樸,確定第三組態,該拓樸係根據來自該一或更多第一層的輸出予以被耦接至該一或更多第二層的輸入。
例子183包含例子178的至少一非暫態電腦可讀儲存媒體,其中該一或更多機器學習模型包含第一機器學習模型,及該指令當被執行時,使得該處理器電路用以發現在該第一組態資料庫中的該第一機器學習模型;根據以該第一機器學習模型的識別符作為輸入,查詢本體資料庫,識別出第二機器學習模型,該本體資料庫包含該第一機器學習模型與該第二機器學習模型的相關性,及回應於該評估參數滿足該臨限,根據該第一組態更新該本體資料庫。
例子184包含例子180的至少一非暫態電腦可讀儲存媒體,其中該硬體為第一硬體,及該指令當被執行時,使得該處理器電路用以:回應於該評估參數未滿足該臨限,識別出在該第二組態資料庫中的第二硬體;產生該第二硬體的第三組態;根據在該第三組態中的該第二硬體的執行該工作負載,確定該評估參數;及以該第三組態部署該第二硬體,以執行該一或更多機器學習模型,以執行該工作負載。
例子185包含例子178的至少一非暫態電腦可讀儲存媒體,其中該硬體係為第一硬體,及該指令當被執行時,使得該處理器電路用以:回應於該評估參數未滿足該臨限,選擇該第一硬體的一或更多第一部分,以執行該工作負載的第一部分;識別出在該第一組態資料庫中的第二硬體;選擇該第二硬體中的一或更多第二部分,以執行該工作負載的第二部分;及根據該一或更多第一部分與該一或更多第二部分的拓樸,確定第三組態,該拓樸係根據來自該一或更多第一部分的輸出成為至該一或更多第二部分的輸入。
例子186包含例子178的至少一非暫態電腦可讀儲存媒體,其中該評估參數為第一評估參數,及該指令當被執行時,使得該處理器電路用以產生一報酬函數,其包含具有第一權重的該第一評估參數及具有第二權重的第二評估參數,該第一權重大於該第二權重,及回應於確定該第一評估參數或該第二評估參數的至少之一未滿足該臨限,調整該第一組態或該第二組態的至少之一,以增加該第一評估參數或降低該第二評估參數的至少之一。
例子187包含一種產生計算節點的方法,該方法包含:根據工作負載,產生一或更多機器學習模型的第一組態,該第一組態儲存於第一組態資料庫中,該第一組態資料庫包含多數機器學習模型,該多數機器學習模型包含一或更多機器學習模型;產生硬體的第二組態,該第二組態儲存於第二組態資料庫中,該第二組態資料庫包含多數硬體的一或更多部分,該多數硬體包含硬體;根據該工作負載的執行,確定評估參數,該工作負載的執行係根據該第一組態與該第二組態;及回應於該評估參數滿足臨限,執行在該第二組態中的硬體上的在第一組態中的該一或更多機器學習模型,該一或更多機器學習模型及該硬體用以執行該工作負載。
例子188包含例子187的方法,其中該第一組態包含模型層的數量、所述模型層的權重、機器學習訓練的類型、或與該一或更多機器學習模型相關的一或更多超參數的至少之一。
例子189包含例子187的方法,其中該一或更多部分包含第一方塊、第二方塊、或第三方塊的至少之一,及更包含識別出該硬體的該第一方塊,以執行矩陣-陣列工作負載,識別出該硬體的該第二方塊,以執行向量-向量工作負載,識別出該硬體的該第三方塊,以執行矩陣-向量工作負載,及識別出暫存器檔案,用於該第一方塊、該第二方塊、及該第三方塊的個別方塊,該暫存器檔案用以儲存該第一方塊、該第二方塊、及該第三方塊的個別方塊的狀態,該第二組態根據包含該第一方塊、該第二方塊、或該第三方塊的至少之一的拓樸。
例子190包含例子187的方法,其中該一或更多機器學習模型包含第一機器學習模型,及更包含:回應於該評估參數未滿足該臨限,識別在該第一組態資料庫中的第二機器學習模型,產生該第二機器學習模型的第三組態,根據基於該第三組態的該工作負載的執行,確定該評估參數,及部署該第二機器學習模型,以根據該第三組態執行該工作負載。
例子191包含例子187的方法,其中該一或更多機器學習模型包含第一機器學習模型,及更包含:回應於該評估參數未滿足該臨限,確定該第一機器學習模型的一或更多第一層,用以執行該工作負載的第一部分,識別出在該第一組態資料庫中的第二機器學習模型,確定該第二機器學習模型的一或更多第二層,以執行該工作負載的第二部分,及根據該一或更多第一層及該一或更多第二層的拓樸,確定第三組態,該拓樸係根據來自該一或更多第一層的輸出作為至該一或更多第二層的輸入。
例子192包含例子187的方法,其中該一或更多機器學習模型包含第一機器學習模型,及更包含:識別出在該第一組態資料庫中的該第一機器學習模型;根據以該第一機器學習模型的識別符作為輸入,查詢本體資料庫,識別第二機器學習模型該本體資料庫包含該第一機器學習模型與該第二機器學習模型的相關性,及回應於評估參數滿足該臨限,根據該第一組態,更新該本體資料庫。
例子193包含例子187的方法,其中該硬體為第一硬體,及更包含:回應於該評估參數未滿足該臨限,識別出在該第二組態資料庫中的第二硬體;產生該第二硬體的第三組態;根據以該第三組態的該第二硬體對該工作負載的執行,確定該評估參數,及以該第三組態部署該第二硬體,以執行該一或更多機器學習模型,以執行該工作負載。
例子194包含例子187的方法,其中該硬體為第一硬體,及更包含回應於該評估參數未滿足該臨限,確定該第一硬體的一或更多第一部分,用以執行該工作負載的第一部分;識別出在該第一組態資料庫中的第二硬體;確定該第二硬體的一或更多第二部分,以執行該工作負載的第二部分;及根據該一或更多第一部分及該一或更多第二部分的拓樸,確定第三組態,該拓樸係根據來自該一或更多第一部分的輸出作為至該一或更多第二部分的輸入。
例子195包含例子194的方法,其中該第一硬體與該第二硬體係為中央處理單元、圖形處理單元、數位信號處理器、人工智慧處理器、類神經網路處理器、或場可程式閘陣列之一。
例子196包含例子187的方法,其中該評估參數為第一評估參數,及更包含:輸出報酬函數,其包含具有第一權重的第一評估參數及具有第二權重的第二評估參數,該第一權重大於該第二權重,及回應於確定該第一評估參數或該第二評估參數的至少之一未滿足該臨限,調整該第一組態或該第二組態的至少之一,以增加該第一評估參數或降低該第二評估參數的至少之一。
例子197包含例子187的方法,其中該評估參數為與該一或更多機器學習模型或硬體的至少之一相關的準確度、成本、能量消耗、潛時、效能、或產出量的至少之一。
以下請求項係被併入此詳細說明中作為參考。雖然某些示範系統、方法、設備及製品已經在此揭露,但本專利的涵蓋範圍並不限於此。相反地,本專利涵蓋公平落入本專利的申請專利範圍內的所有系統、方法、設備與製品。
100:架構 104:最佳應用 106:最佳中間軟體及框架 108:應用程式介面 110:移植工具 112:直接規劃API 114:API為基規劃API 116:分析工具 118:CPU 120:CPU系統軟體 122:GPU 124:GPU系統軟體 126:AI處理器 128:AI系統軟體 130:FPGA 132:FPGA系統軟體 134:主機介面 136:零階介面 138:零階下系統軟體 140:零階上系統軟體 142:開發者介面 200:架構 202:CPU 204:平台控制器集線器 206:串列週邊介面 208:GPU 210:專用GPU快閃 212:共享SPI 214:SPI快閃 300:架構 302:第一加強SPI介面 304:第二eSPI介面 400:更新IFWI佈局 600:BIOS 602:開機載入器 604:矽初始化碼 606:FSP矽 608:FSP記憶體 610:FSP Temp RAM 900:架構 902:工作負載 904:協調器 906:計算系統 908:使用者空間 910:XPU/IPU 軟體域 912:IPU硬體域 914:應用A 916:應用B 918:RMS曝露 920:SLA管理器 922:XPU/IPU資源監視器 924:SLA管理器 926:XPU/IPU資源執行 928:SLA管理器 930:Punit RMS 1200:環境 1202:IPU 1204:CPU 1206:GPU 1208:SSD 1300:環境 1400:動態可協商動態類神經網路程式館 1402:可組態使用者介面 1404:平台能力管理器 1406:應用SLA管理器 1408:JIT管理器 1410:核心評估引擎 1600:處理器平台 1612:處理器電路 1613:本地記憶體 1614:揮發記憶體 1616:非揮發記憶體 1617:記憶體控制器 1618:匯流排 1620:介面電路 1622:輸入裝置 1624:輸出裝置 1626:網路 1628:大量儲存裝置 1632:機器可執行指令 1634:加速電路 1640:GPU 1642:VPU 1644:類神經網路處理器 1700:AotoML架構 1702:機器學習系統組態器 1704:最佳應用 1706:最佳中間軟體及框架 1708:應用程式介面 1710:移植工具 1712:直接規劃API 1714:API為基規劃API 1716:分析工具 1718:CPU 1720:CPU系統軟體 1722:GPU 1724:GPU系統軟體 1726:AI處理器 1728:AI系統軟體 1730:FPGA 1732:FPGA系統軟體 1734:主機介面 1736:零階介面 1738:零階下系統軟體 1740:零階上系統軟體 1742:開發者介面 1800:DL模型管理系統 1802:輸入資料集 1804:模型訓練電路 1806:差異確定器電路 1808:類似性確定器電路 1810:特性收集器電路 1812A-C:模型 1814:模型管理電路 1816:QoS選擇器電路 1818:QoS取樣器電路 1820:模型排程器電路 2100:處理器平台 2112:處理器電路 2113:本地記憶體 2114:揮發記憶體 2116:非揮發記憶體 2117:記憶體控制器 2118:匯流排 2120:介面電路 2122:輸入裝置 2124:輸出裝置 2126:網路 2128:大量儲存裝置 2132:機器可執行指令 2200:系統 2205:知識建築器電路 2210:使用者輸入 2215:模型建築器電路 2220:目標硬體 2230:請求存取器電路 2235:硬體資料協調電路 2240:工作資料協調電路 2245:知識資料儲存 2260:搜尋空間管理電路 2265:定錨點插入器電路 2270:類神經架構搜尋電路 2275:模型輸出器電路 2280:模型執行電路 2285:效能統計集合電路 2600:通用處理器電路 2612:處理器電路 2613:本地記憶體 2614:揮發記憶體 2616:非揮發記憶體 2618:匯流排 2620:介面電路 2622:輸入裝置 2624:輸出裝置 2628:大量儲存裝置 2632:機器可執行指令 2700:計算裝置 2702:硬體 2704:核心 2706:小裝置處理器 2707:OS/VMM 2708:BIOS 2710:ISA管理電路 2711:微碼處理電路 2713:暫存器 2714:應用 2800:介面 2802:鑑別電路 2804:硬體管理電路 2810:介面 2812:硬體控制電路 2814:錯誤確定電路 2816:輸出控制電路 3300:處理器平台 3312:處理器電路 3313:本地記憶體 3314:揮發記憶體 3316:非揮發記憶體 3317:記憶體控制器 3318:匯流排 3320:介面電路 3322:輸入裝置 3324:輸出裝置 3326:網路 3328:大量儲存裝置 3332:機器可執行指令 3400:AutoML架構 3402:ML系統組態器 3404:最佳應用 3406:最佳中間軟體及框架 3408:應用程式介面 3410:移植工具 3412:直接規劃API 3414:API為基規劃API 3416:分析工具 3418:CPU 3420:CPU系統軟體 3422:GPU 3424:GPU系統軟體 3426:AI處理器 3428:AI系統軟體 3430:FPGA 3432:FPGA系統軟體 3434:主機介面 3436:零階介面 3438:零階下系統軟體 3440:零階上系統軟體 3442:開發者介面 3502:控制器 3504:評估器 3506:本體產生器 3508:本體資料庫 3510:可組構建築方塊資料庫 3512:軟體模板 3513:貢獻者 3514:硬體模板 3515:儲存庫 3516:工作負載 3517:ML計算節點 3518:軟體搜尋空間 3519:軟體 3520:硬體搜尋空間 3521:硬體 3522:提議HW/SW實例 3524:效能模型化 3526:評估參數 3528:報酬函數 3600:ML系統組態電路 3610:介面電路 3620:ML軟體組態電路 3630:ML硬體組態電路 3640:組態評估電路 3650:本體產生電路 3660:工作負載執行電路 3670:資料儲存 3672:軟體模板 3674:硬體模板 3676:互連拓樸 3678:歷史組態 3680:匯流排 3700:工作流程 3702:第一方塊 3704:第二方塊 3706:暫存器檔案 3708:第一組態 3710:第二組態 3712:第三組態 3800:工作流程 3802:互連拓樸的程式館 3804:節點 3806:節點 3808:節點 3810:節點 3812:核心 3814:核心 3816:核心 3818:第一操作 3820:第二操作 3900:本體資料庫 3902:建築方塊的本體 3904:軟體方塊 4000:工作流程 4002:建築方塊 4004:模型層 4006:核心 4008:核心 4010:核心 4012:核心 4014:初始操作 4016:第一操作 4018:第二操作 4020:準確度參數 4022:效能參數 4024:能量參數 4026:成本函數 4028:第三操作 4030:第四操作 4700:處理器平台 4712:處理器電路 4713:本地記憶體 4714:揮發記憶體 4716:非揮發記憶體 4717:記憶體控制器 4718:匯流排 4720:介面電路 4722:輸入裝置 4724:輸出裝置 4726:網路 4728:大量儲存裝置 4732:機器可執行指令 4734:加速電路 4740:GPU 4742:VPU 4744:類神經網路處理器 4800:微處理器 4802:核心 4804:第一匯流排 4806:介面電路 4810:共享記憶體 4814:控制單元電路 4816:算術與邏輯電路 4818:暫存器 4820:本地記憶體 4822:第二匯流排 4900:FPGA電路 4902:輸出/輸出電路 4904:組態電路 4906:外部硬體 4908:邏輯閘電路 4910:互連 4912:儲存電路 4914:專用操作電路 4916:特殊用途電路 4918:通用可程式電路 4920:CPU 4922:DSP 5005:軟體分配平台 5010:網路
[圖1]為用以支援異質計算的示範架構的方塊圖。
[圖2]為用於在兩處理單元(如,CPU與GPU)間共享記憶體的示範架構的方塊圖。
[圖3]為用以使用附接快閃共享的共享SPI快閃的示範手法的方塊圖。
[圖4]例示用於圖2的SPI快閃的示範更新IFWI佈局。
[圖5]為流程圖,代表可以被處理器電路所執行及/或樣例化的示範機器可讀指令及/或示範操作,以執行系統的韌體開機,其中共享存取快閃已經被實施於兩處理單元之間。
[圖6]為BIOS(如,儲存於圖4的IFWI佈局的區2中的BIOS)的示範佈局的方塊圖。
[圖7A及7B]為流程圖,代表可以為處理器電路所執行及/或樣例化的示範機器可讀指令及/或示範操作,以執行使用矽初始化碼的處理單元的統一初始化。
[圖8]為一流程圖,例示利用整合圖形裝置(IGD)及GPU的示範詳細統一FSP初始化流。
[圖9]為用於IPURDT的示範架構的方塊圖。
[圖10]為流程圖,代表可以為處理器電路所執行及/或樣例化的示範機器可讀指令及/或示範操作,以使用IPURDT執行組態。
[圖11]為流程圖,代表可以為處理器電路所執行及/或樣例化的示範機器可讀指令及/或示範操作,以進行協商,以根據由應用所規定的容許度及可用IPU資源,動態配置資源。
[圖12]例示一示範環境,其中由IPU所管理的資源在CPU、GPU、SSD等之間具有各種空閒與忙碌資源的各種狀態。
[圖13]例示一示範環境,其中經由一去中心化公共區塊鏈帳簿而完成在協同資源管理的共識。
[圖14]為示範動態可協商動態類神經網路程式館的方塊圖。
[圖15]為流程圖,代表可以為處理器電路所執行及/或樣例化的示範機器可讀指令及/或示範操作,以根據硬體能力選擇特性供深度類神經網路學習。
[圖16]為示範處理平台的方塊圖,該處理平台包含處理器電路被建構以執行示範機器可讀指令及/或示範操作,以實施圖1、2及/或3的示範可組構機器學習系統組態器。
[圖17]為包含示範機器學習系統組態器的示範自動機器學習(AutoML)架構的示意圖,以識別出及/或產生可組構機器學習計算節點。
[圖18]為依據本案教示實施的動態XPU硬體感知深度學習(DL)模型管理系統200的示範組態的方塊圖。
[圖19]為流程圖,代表可以為示範處理器電路所執行以實施圖18的示範模型訓練電路的示範機器可讀指令及/或示範操作。
[圖20]為流程圖,代表可以為示範處理器電路所執行以實施圖18的示範模型管理電路的示範機器可讀指令及/或示範操作。
[圖21]為包含建構以執行圖19的示範機器可讀指令及/或示範操作的處理器電路的示範處理平台的方塊圖,以實施圖18的模型訓練電路及模型管理電路。
[圖22]為依據本案的教示實施的示範系統的方塊圖,以用於資料加強自動模型產生。
[圖23]為利用圖22的示範系統的示範處理流程的方塊圖。
[圖24]為流程圖,代表可以為示範處理器電路所執行以實施圖22的示範知識建築器電路及示範模型建築器電路的示範機器可讀指令及/或示範操作。
[圖25]為流程圖,代表可以為示範處理器電路所執行以實施圖22的示範目標硬體的示範機器可讀指令及/或示範操作。
[圖26]為包含被建構以執行圖24的示範機器可讀指令及/或示範操作以實施圖22的示範知識建築器電路及示範模型建築器電路的處理器電路的示範處理平台的方塊圖。
[圖27]為示範計算裝置的方塊圖。
[圖28]為圖27的示範指令集架構(ISA)管理電路及微碼處理電路的實施方式的方塊圖。
[圖29及30]為流程圖,代表可以為示範處理器電路所執行的示範機器可讀指令,以實施圖28的ISA管理電路。
[圖31]為流程圖,代表可以為示範處理器電路所執行以實施圖28的微碼處理電路的示範機器可讀指令。
[圖32]為示範圖,代表可以為圖28的ISA管理電路所執行的示範操作。
[圖33]為包含被建構以執行圖29-31的示範機器可讀指令以實施圖27的示範計算裝置的處理器電路的示範處理平台的方塊圖。
[圖34]為示範自動機器學習(AutoML)架構的示意圖,其包含示範機器學習系統組態器,以識別出及/或產生可組構機器學習計算節點。
[圖35]為圖34的機器學習系統組態器的示範實施方式的方塊圖。
[圖36]為圖34及/或35的機器學習系統組態器的示範實施方式的方塊圖。
[圖37]為用以產生可組構機器學習計算節點的示範工作流程的示意圖。
[圖38]為識別出可組構機器學習計算節點的另一示範工作流程的示意圖。
[圖39]為示範本體資料庫的示範實施方式的示意圖。
[圖40]為識別出可組構機器學習計算節點的再一示範工作流程的示意圖。
[圖41]為流程圖,代表可以為示範處理器電路所執行以實施圖34、35及/或36的示範可組構機器學習系統組態器以可組態機器學習計算節點執行工作負載的示範機器可讀指令及/或示範操作。
[圖42]為流程圖,代表可以為示範處理器電路所執行以實施圖34、35及/或36的示範可組構機器學習系統組態器以根據機器學習工作負載,產生一或更多機器學習模型的第一組態的示範機器可讀指令及/或示範操作。
[圖43]為流程圖,代表可以為示範處理器電路所執行以實施圖34、35及/或36的示範可組構機器學習系統組態器以產生硬體的第二組態的示範機器可讀指令及/或示範操作。
[圖44]為流程圖,代表可以為示範處理器電路所執行以實施圖34、35及/或36的示範可組構機器學習系統組態器以根據評估參數,調整第一組態的示範機器可讀指令及/或示範操作。
[圖45]為流程圖,代表可以為示範處理器電路所執行以實施圖34、35及/或36的示範可組構機器學習系統組態器以根據評估參數,調整第二組態的示範機器可讀指令及/或示範操作。
[圖46]為流程圖,代表可以為示範處理器電路所執行以實施圖34、35及/或36的示範可組構機器學習系統組態器以部署計算節點以執行機器學習工作負載的示範機器可讀指令及/或示範操作。
[圖47]為包含被建構以執行圖41-46的示範機器可讀指令及/或示範操作,以實施圖34、35及/或36的示範可組構機器學習系統組態器的處理器電路的示範處理平台的方塊圖。
[圖48]為圖16、圖21、圖26、圖33、及/或圖47的處理器電路的示範實施方式的方塊圖。
[圖49]為圖16、圖21、圖26、圖33、及/或圖47的處理器電路的另一示範實施方式的方塊圖。
[圖50]為示範軟體分配平台(如,一或更多伺服器)的方塊圖,用以分配軟體(如,對應於在此所述的示範機器可讀指令的軟體)至與末端使用者及/或消費者相關的客戶裝置(如,用以授權、銷售、及/或使用)、零售商(如,銷售、再銷售、授權、及/或再授權)、及/或原始設備製造商(OEM)(如,用以包含將銷售例如給零售商及/或其他末端使用者,如直接購買消費者的產品)。
通常,在整個圖式與隨附的說明中,相同元件符號將用以表示相同或類似元件。圖式並未依比例繪製。

Claims (24)

  1. 一種用以管理處理單元的設備,包含: 介面電路,用以檢測從工作負載取得資源請求的請求; 處理器電路,包含以下之一或多數: 至少一中央處理單元、圖形處理單元或數位信號處理器的一或更多,該至少一該中央處理單元、該圖形處理單元或該數位信號處理器具有控制電路、算術與邏輯電路、及一或更多暫存器,該處理器電路用以執行指令,以用以: 確定是否有資源可用於在基礎架構處理單元管理系統上的該工作負載; 與該基礎架構處理單元協商,以確定是否執行中的工作負載可以被遷移; 回應於確定執行中工作負載可以被遷移,使得該執行中的工作負載被遷移;及 使得該工作負載執行於該資源上。
  2. 如請求項1的設備,其中該工作負載為虛擬機器。
  3. 如請求項1的設備,其中該處理器電路係用以執行所述指令,以驗證該資源請求。
  4. 如請求項1-3中之任一項的設備,其中該資源請求識別出一服務層級協議。
  5. 如請求項4的設備,其中該處理器電路係用以執行所述指令,以確定由該資源請求中所識別出的該服務層級協議是否能符合任何可用資源。
  6. 如請求項5的設備,其中該處理器電路係用以回應於確定該服務層級協議不能符合,提示使用者提供有效請求。
  7. 如請求項1-3中之任一項的設備,其中該處理器電路係用以執行所述指令,以更新用以執行工作負載的服務的等級。
  8. 如請求項1-3中之任一項的設備,其中該處理器電路係用以執行所述指令,以儲存該工作負載與所述資源的相關性於區塊鏈中。
  9. 一種包含指令的電腦可讀媒體,當所述指令被執行時,使得處理器用以至少: 檢測由工作負載取得資源請求的請求; 確定是否有資源可用於在基礎架構處理單元管理系統上的該工作負載; 與該基礎架構處理單元協商,以確定是否執行中的工作負載可以被遷移; 回應於確定執行中的工作負載可以被遷移,使得該執行中的工作負載被遷移;及 使得該工作負載執行於該資源上。
  10. 如請求項9的電腦可讀媒體,其中該工作負載為虛擬機器。
  11. 如請求項9的電腦可讀媒體,其中當所述指令被執行時,使得該處理器用以驗證該資源請求。
  12. 如請求項9-11的電腦可讀媒體,其中該資源請求識別出服務層級協議。
  13. 如請求項12的電腦可讀媒體,其中當所述指令被執行時,使得該處理器用以執行所述指令,以確定在該資源請求中所識別出的該服務層級協議是否能符合任何可用資源。
  14. 如請求項13的電腦可讀媒體,其中當所述指令被執行時,使得該處理器用以回應於確定該服務層級協議不能符合,提示使用者提供有效請求。
  15. 如請支項9-11中之任一項的電腦可讀媒體,其中當所述指令被執行時,使得該處理器用以更新用於該執行中的工作負載的服務等級。
  16. 如請求項9-11中之任一項的電腦可讀媒體,其中當所述指令被執行時,使得該處理器用以儲存該工作負載與所述資源的相關性於區塊鏈中。
  17. 一種方法,包含: 檢測從工作負載取得資源請求的請求; 確定是否有資源可用於在基礎架構處理單元管理系統上的該工作負載; 與該基礎架構處理單元協商,以確定是否有執行中的工作負載可以被遷移; 回應於確定有執行中的工作負載可以被遷移,使得該執行中的工作負載被遷移;及 使得該工作負載執行於該資源上。
  18. 如請求項17的方法,其中該工作負載為虛擬機器。
  19. 如請求項17的方法,更包含驗證該資源請求。
  20. 如請求項17-19中之任一項的方法,其中該資源請求識別出服務等級協議。
  21. 如請求項20的方法,更包含確定在該資源請求中所識別出的該服務等級協議是否能符合任何可用資源。
  22. 如請求項21的方法,更包含回應於確定該服務等級協議不能符合,提示使用者提供有效請求。
  23. 如請求項17-19中之任一項的方法,更包含更新用於該執行中的工作負載的服務等級。
  24. 如請求項17-19中之任一項的方法,更包含儲存該工作負載與所述資源之相關性於區塊鏈中。
TW111110864A 2021-06-23 2022-03-23 管理處理單元的設備、製品及方法 TW202307654A (zh)

Applications Claiming Priority (16)

Application Number Priority Date Filing Date Title
IN202141028125 2021-06-23
IN202141028125 2021-06-23
US202163222938P 2021-07-16 2021-07-16
US63/222,938 2021-07-16
IN202141036070 2021-08-10
IN202141036070 2021-08-10
US17/558,284 2021-12-21
US17/558,284 US20220114495A1 (en) 2021-08-10 2021-12-21 Apparatus, articles of manufacture, and methods for composable machine learning compute nodes
US17/645,742 2021-12-22
US17/559,730 US20220114451A1 (en) 2021-07-16 2021-12-22 Methods and apparatus for data enhanced automated model generation
US17/559,730 2021-12-22
US17/645,742 US20220116284A1 (en) 2021-12-22 2021-12-22 Methods and apparatus for dynamic xpu hardware-aware deep learning model management
US17/560,025 US20220113978A1 (en) 2021-07-16 2021-12-22 Methods and apparatus to conditionally activate a big core in a computing system
US17/560,025 2021-12-22
WOPCT/CN2021/141150 2021-12-24
PCT/CN2021/141150 WO2022267408A1 (en) 2021-06-23 2021-12-24 Apparatus, articles of manufacture, and methods for managing processing units

Publications (1)

Publication Number Publication Date
TW202307654A true TW202307654A (zh) 2023-02-16

Family

ID=86669901

Family Applications (1)

Application Number Title Priority Date Filing Date
TW111110864A TW202307654A (zh) 2021-06-23 2022-03-23 管理處理單元的設備、製品及方法

Country Status (2)

Country Link
EP (1) EP4359923A1 (zh)
TW (1) TW202307654A (zh)

Also Published As

Publication number Publication date
EP4359923A1 (en) 2024-05-01

Similar Documents

Publication Publication Date Title
Park et al. Scale-out acceleration for machine learning
WO2020072819A1 (en) Parcelled quantum resources
NL2030226B1 (en) Methods, systems, articles of manufacture and apparatus to optimize resources in edge networks
CN109791508A (zh) 具有多个可重配置区域的可配置逻辑平台
CN110023905A (zh) 联网可编程逻辑服务提供商
CN110088734A (zh) 逻辑储存库服务
US11188348B2 (en) Hybrid computing device selection analysis
US20220413943A1 (en) Apparatus, articles of manufacture, and methods for managing processing units
CN117597670A (zh) 用以调试加速器硬件的系统、装置和方法
US20220114495A1 (en) Apparatus, articles of manufacture, and methods for composable machine learning compute nodes
Ang et al. Reimagining codesign for advanced scientific computing: Report for the ascr workshop on reimagining codesign
Jarachanthan et al. Astrea: Auto-serverless analytics towards cost-efficiency and qos-awareness
WO2022267408A1 (en) Apparatus, articles of manufacture, and methods for managing processing units
US20240134707A1 (en) Apparatus, articles of manufacture, and methods for managing processing units
Quintero et al. IBM PowerAI: Deep Learning Unleashed on IBM Power Systems Servers
NL2031965B1 (en) Apparatus, articles of manufacture, and methods for managing processing units
TW202307654A (zh) 管理處理單元的設備、製品及方法
CN117546141A (zh) 用于管理处理单元的装置、制品和方法
DE102022107178A1 (de) Einrichtungen, herstellungsartikel und verfahren zum verwalten von verarbeitungseinheiten
US20220116284A1 (en) Methods and apparatus for dynamic xpu hardware-aware deep learning model management
EP4155917A1 (en) Methods and apparatus to increase boot performance
US20220114083A1 (en) Methods and apparatus to generate a surrogate model based on traces from a computing unit
US20240013099A1 (en) Frameworks for training of federated learning models
US20220222177A1 (en) Systems, apparatus, articles of manufacture, and methods for improved data transfer for heterogeneous programs
EP4134821A1 (en) Apparatus, articles of manufacture, and methods for composable machine learning compute nodes