TWI766288B - 將學習模型整合至軟體開發系統中的方法及裝置,以及非暫時性機器可讀媒體 - Google Patents
將學習模型整合至軟體開發系統中的方法及裝置,以及非暫時性機器可讀媒體 Download PDFInfo
- Publication number
- TWI766288B TWI766288B TW109118066A TW109118066A TWI766288B TW I766288 B TWI766288 B TW I766288B TW 109118066 A TW109118066 A TW 109118066A TW 109118066 A TW109118066 A TW 109118066A TW I766288 B TWI766288 B TW I766288B
- Authority
- TW
- Taiwan
- Prior art keywords
- model
- code
- machine learning
- learning model
- interface
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/35—Creation or generation of source code model driven
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/10—Requirements analysis; Specification techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/33—Intelligent editors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/10—Interfaces, programming languages or software development kits, e.g. for simulating neural networks
- G06N3/105—Shells for specifying net layout
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/36—Software reuse
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Artificial Intelligence (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Medical Informatics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Stored Programmes (AREA)
Abstract
本標的技術提供用於判定採一第一格式的一機器學習模型包括充分資料以符合採一第二格式的一特定模型規格,該第二格式對應於一物件導向程式設計語言),其中該機器學習模型包括該機器學習模型的一模型參數。本標的技術將該機器學習模型轉換成與該特定模型規格相容的一經轉換機器學習模型。本標的技術產生用於該經轉換機器學習模型的一碼介面及碼,該碼介面包括採該物件導向程式設計語言的碼敘述,該等碼敘述對應於表示該經轉換機器學習模型的一物件,且該物件包括一介面以更新該模型參數。進一步地,本標的技術提供所產生之該碼介面及該碼以用於在一整合開發環境(IDE)中顯示,該IDE實現所產生之碼介面及該碼的修改。
Description
本說明大致關於將學習模型整合至軟體開發系統中,包括可更新機器學習模型在整合開發環境中的轉換及呈現。
軟體開發環境可用以在不同的計算平台上以給定的程式設計語言建立軟體程式。
100:網路環境
106:網路
110:電子裝置
115:電子裝置
120:伺服器
200:整合開發環境(IDE)
210:儲存器
212:機器學習(ML)模型
214:原始碼檔案
215:機器學習(ML)模型轉換器
220:規格變換器
235:經轉換ML模型
240:碼產生器
252:自動化碼文件製作組件
254:碼完成組件
256:索引器
258:資料庫
260:語言編譯器
270:鏈接器/封裝器
280:使用者介面/UI
282:碼列表
284:計畫導覽器
286:搜尋介面
300:程序
302:方塊
304:方塊
306:方塊
308:方塊
310:方塊
312:方塊
400:程序
402:方塊
404:方塊
406:方塊
500:程序
502:方塊
504:方塊
506:方塊
610:ML模型
612:ML基元
614:ML資料格式
616:硬體及/或處理需求
618:ML介面/參數
620:參數
630:經轉換ML模型
640:碼介面
642:函數
644:副常式
646:資料類型
648:介面/經轉換ML模型/ML模型
650:經編譯ML模型碼
652:所需的軟體程式庫
654:參數
654A:輸入介面/介面
654B:輸出介面/介面
654C:更新介面/介面
656A:輸入介面
656B:輸出介面
656C:更新介面
660:軟體程式庫
700:電子系統
702:永久性儲存裝置
704:系統記憶體
706:輸出裝置介面
708:匯流排
710:ROM
712:處理單元
714:輸入裝置介面
716:網路介面
在隨附申請專利範圍中闡明本揭露技術的某些特徵。然而,為了解釋的目的,以下附圖中提出標的技術的數個實施例。
〔圖1〕繪示根據一或多個實施方案之可於其中實作用於將學習模型整合至軟體開發系統中之系統的實例網路環境。
〔圖2〕繪示根據一或多個實施方案之使用物件導向碼整合可更新機器學習(ML)模型之整合開發環境的實例軟體架構。
〔圖3〕繪示根據一或多個實施方案之用於將既存ML模型轉換成模型規格之實例程序的流程圖。
〔圖4〕繪示根據一或多個實施方案之用於提供經轉換ML模型以用於在軟體開發環境中觀看之實例程序的流程圖。
〔圖5〕繪示根據一或多個實施方案之用於將經編譯ML模型發送至目標裝置之執行環境之實例程序的流程圖。
〔圖6A〕繪示根據一或多個實施方案之用於既存ML模型及經轉換ML模型之資料的實例結構。
〔圖6B〕繪示根據一或多個實施方案之用於既存ML介面及經轉換ML模型之資料的實例結構。
〔圖7〕繪示可以其實作標的技術之一或多個實施方案的電子系統。
本申請案主張於2019年5月31日申請之美國臨時專利申請案第62/855,893號之優先權,其全文係以引用方式併入本文中以提供揭露的連續性。
以下提出的詳細描述旨在作為標的技術的各種組態的描述,且不旨在僅表示可實施標的技術的組態。附圖併入本文中,並構成詳細描述的一部分。針對提供對標的技術的透徹理解的目的,詳細描述包括具體細節。然而,標的技術不限於本文陳述的具體細節,並可使用一或多個其他實施方案實踐。在一或多個實施方案中,結構及組件以方塊圖形式顯示,以避免模糊標的技術的概念。
用於使軟體開發者能在軟體開發環境中利用機器學習模型的既存方法可能需要顯著的組態量。在一些情況下,開發機器學習模型需要設定額外的軟體程式庫、硬體組態等,其可對一些軟體發開者建立進入的感知障礙。此外,許多軟體開發者精通於在物件導向程式設計的典範中工作,該等典範整合在用於開發軟體之許多既存工具中。相較之下,機器學習領域中的最近發展產生由不同的第三方提供的軟體程式庫,該等軟體程式庫經設計以在獨立或分開的開發環境中運作,並可能需要軟體開發者採用不同的方法以開發脫離,有時相當廣泛地脫離,許多開發者所習慣之物件導向程式設計的已瞭解概念的機器學習模型。
在本文描述的一或多個實施方案中,機器學習(ML)模型可以類似於第一類別物件(諸如函數、類別、及類似物)之內部表示的方式內部地表示在整合軟體開發環境(IDE)中,而不係僅表示成正在建立之程式的不透明資源。使用此一模型工作的軟體開發者可接著利用IDE之針對ML模型功能性的調用的生產力特徵(諸如打字同時的語法檢查、自動完成、參數列中之名稱或類型錯誤的偵測等),就像開發者在使用標準系統程式庫或類別時可能利用者。達成此的機制包括具有用於ML模型之描述的標準規格、從模型導出之接著用於索引模型內之名稱及關鍵字之資料的建立、及由IDE使用此等經索引名稱及關鍵字以提供上述的經改善功能性。
在一個實施例中,機器學習模型可包括一或多個介面。在此實施例中,介面係不具有具體植入之物件之能力的描述。在一個實施例中,機器學習模型可具有輸入介面、輸出介面、及/或更新介面。在此實例中,輸入介面可定義可用於提供用於至機器學習模型之輸入的一組函數呼叫。在此實例中,
輸出介面可定義可用於提供來自機器學習模型之輸出的函數呼叫組。此外,更新介面可定義可用於更新模型參數的一組函數呼叫。在一個實施例中,該等可更新模型參數可係學習率、臨限、權重、層數、模型的類型、迭代數目、及/或使用在機器學習模型中之另一參數的一或多者。
在一個實施例中,可更新機器學習模型可轉換成用於編譯至應用程式中的物件。在此實施例中,應用程式可使用此物件修改機器學習模型。修改可用於微調機器學習模型、可用於選擇待使用之機器學習模型類型的一者(例如,影像辨識應用程式可使用具有多個不同基元機器學習模型以自其等選擇的機器學習模型)、針對使用者的特定環境及/或其他情景訓練機器學習模型。例如,且在一個實施例中,考慮其係使用影像辨識機器學習模型之影像辨識應用程式的應用程式。此應用程式的基本操作係輸入影像並輸出標籤分類。機器學習模型係可辨別一般類別(諸如將植物從動物或人類識別)之經大致訓練的模型。花商希望使用此影像辨識應用程式識別不同的花。因為此模型目前係經大致訓練的機器學習模型,應用程式未經充分訓練以區分不同的花(例如,會將各花影像識別為「植物」)。使用可更新機器學習模型,花商可藉由輸入一組用於不同類型之花的訓練影像及標籤而通過該應用程式訓練影像辨識程式。因此,使用可更新機器學習模型,花商可使用花影像及標籤的訓練組訓練影像辨識應用程式,因此用於此應用程式的機器學習模型可針對花商的具體需求定製。
圖1繪示根據一或多個實施方案之可於其中實作用於將可更新機器學習模型整合至軟體開發系統中之系統的實例網路環境100。然而,不是所有的經描繪組件可在所有的實施方案中使用,且一或多個實施方案可包括圖中
所示組件以外的額外組件或不同組件。可在組件的配置及類型上進行變化而不脫離本文陳述之申請專利範圍的精神或範圍。可提供額外組件、不同組件、或較少組件。
網路環境100包括電子裝置110、電子裝置115、及伺服器120。網路106可通訊地(直接或間接地)耦接電子裝置110及/或伺服器120。在一或多個實施方案中,網路106可係裝置的互連網路,該互連網路可包括或可通訊地耦接至網際網路。為解釋之目的,在圖1中將網路環境100繪示成包括電子裝置110及115、及伺服器120;然而,網路環境100可包括任何數目的電子裝置及任何數目的伺服器,諸如伺服器雲端。
電子裝置110可係,例如,桌上型電腦、可攜式計算裝置(諸如膝上型電腦)、智慧型手機、周邊裝置(例如,數位相機、頭戴式耳機)、平板裝置、可穿戴裝置(諸如手錶、手環、及類似者)、或包括,例如,一或多個無線介面(諸如WLAN無線電、蜂巢式無線電、藍牙無線電、Zigbee無線電、近場通訊(near field communication,NFC)無線電,及/或其他無線電)的任何其他合適裝置。在圖1中,舉實例而言,將電子裝置110描繪成桌上型電腦。電子裝置110可係及/或可包括相關於圖7於下文討論的電子系統的全部或部分。
電子裝置115可包括觸控螢幕,並可係例如可攜式計算裝置(諸如包括觸控螢幕的膝上型電腦)、包括觸控螢幕的智慧型手機、包括觸控螢幕的周邊裝置(例如,數位相機、頭戴式耳機)、包括觸控螢幕的平板裝置、包括觸控螢幕的可穿戴裝置(諸如,手錶、手環、及類似者)、包括例如觸控螢幕的任何其他合適裝置、或具有觸控板的任何電子裝置。在一或多個實施方案中,電子裝置115可不包括觸控螢幕,但可支援類觸控螢幕的手勢,諸如在虛
擬實境或擴增實境環境中。在一或多個實施方案中,電子裝置115可包括觸控板。在圖1中,舉實例而言,將電子裝置115描繪成具有觸控螢幕的行動裝置。在一或多個實施方案中,電子裝置115可係及/或可包括相關於電子系統於下文討論之電子裝置之全部或部分,該電子系統相關於圖7於下文討論。
在一或多個實施方案中,電子裝置110可提供軟體開發環境,諸如軟體開發者可使用以建立經編譯(例如,可執行)碼、除錯、維護、或以其他方式支援電腦程式及應用程式的電腦程式。例如,軟體開發環境可使用經編譯碼建立便於從伺服器120部署在目標裝置上的套裝軟體。
在一或多個實施方案中,伺服器120將經編譯碼部署至目標裝置以用於執行。在一實例中,電子裝置115可係用於接收經編譯碼並在電子裝置115的執行環境中執行該經編譯碼的目標裝置。在另一實例中,伺服器120(及/或另一伺服器)可提供網路服務,並可執行與經編譯碼關聯的操作(諸如複雜處理操作)。
圖2繪示根據一或多個實施方案之使用物件導向碼整合機器學習模型之整合開發環境200的實例軟體架構。為解釋之目的,將整合開發環境(IDE)200描述成由圖1的電子裝置110提供,諸如藉由電子裝置110的處理器及/或記憶體;然而,IDE 200可藉由任何其他電子裝置實作。然而,不是所有的經描繪組件可在所有的實施方案中使用,且一或多個實施方案可包括圖中所示組件以外的額外組件或不同組件。可在組件的配置及類型上進行變化而不脫離本文陳述之申請專利範圍的精神或範圍。可提供額外組件、不同組件、或較少組件。
IDE 200可係多平台軟體開發環境,諸如,例如,Xcode®整合開發環境或類似者,其提供軟體開發者可使用以建立、運行、及除錯電腦程式碼的特徵。在一或多個實施方案中,IDE 200以電子裝置110上的程序執行,諸如運行作業系統(例如,Mac OS XTM、或類似者)的桌上型電腦。
在一或多個實施方案中,IDE 200提供可呈現在電子裝置110之顯示器上的使用者介面280。使用者介面280可在編輯器中顯示碼列表282,諸如正開發之程式的原始碼。原始碼可係採物件導向程式設計語言(諸如Swift、Objective C、C++、Python、Java等)的電腦程式碼指令。使用者介面280亦提供可在新的軟體開發計畫建立時顯示的計畫導覽器284。計畫導覽器284使使用者能管理計畫中的檔案及/或選擇檔案以在提供碼列表282的編輯器中觀看或編輯。使用者介面280亦提供用於搜尋碼列表282中的項目、計畫中的檔案、及/或其他資產等的搜尋介面286。
在一個實施例中,機器學習模型可具有一或多個介面,實例機器學習介面係輸入、輸出、及更新介面。在一個實施例中,不具有使模型參數對應用程式暴露的可更新介面,應用程式內的機器學習模型係靜態的。在此實施例中,靜態機器學習模型可用於預測之目的,但不能更新以改變模型參數及針對應用程式中之機器學習模型的使用者特定用途定製機器學習模型。相反地,具有更新介面,機器學習模型係動態的,並可在應用程式內暴露一個、一些、或全部的機器學習模型參數,使得此等機器學習模型參數可由應用程式改變。例如,且在一個實施例中,可由更新介面暴露的機器學習參數的類型可係機器學習模型的權重、待用於機器學習模型的層數、臨限、學習率、及/或其他類型的機器學習模型參數。在一個實施例中,當將機器學習模型從該機器學習
模型轉換成可用於編譯/鏈接至應用程式中之物件的經轉化學習模型時,不同的機器學習模型介面可供使用。在此實施例中,將機器學習模型轉換成物件時之機器學習模型的介面稱為碼介面。
IDE 200進一步包括儲存器210,該儲存器將機器學習(ML)模型212及關聯的ML資料(例如,用於ML模型的資料集)、原始碼檔案214、及/或有關IDE 200之軟體開發計畫的其他資料儲存在記憶體中。機器學習模型可包括以根據機器學習軟體程式庫(諸如TensorFlow、Keras、Caffe等)的格式或語法表示的資料,其可能不為IDE 200所支援。在一個實施例中,來自此等程式庫的一者的機器學習模型可具有定義在來自此軟體程式庫之機器學習模型中的更新介面(或另一介面)。替代地,開發者可在機器學習模型已轉換後建立介面(諸如更新介面)。實例機器學習模型可施用機器學習技術(諸如自動化程序以從資料提取模式)、自動識別資料集中的描述特徵與目標特徵之間的關係的演算法(例如,預測模型)、深類神經網路、指定一些輸入屬於類別之何者的分類器等。本文及先前實例設想的其他類型的機器學習模型不限於本標的技術。此外,機器學習模型可與以可能不為IDE 200所支援或僅支援用於某些部署情景之語言(諸如JAVA或.NET或API)撰寫之原始碼使用實例、教學、或參考實施方案關聯(例如,以儲存庫供應或來自網頁的下載)。
在進一步實施例中,機器學習模型可鏈接至另一機器學習模型。在此實施例中,可更新機器學習模型可具有該模型的靜態部分及一動態部分。可更新機器學習模型可鏈接至用於該可更新機器學習模型的部分或全部的靜態部分的另一靜態機器學習模型。此外,此鏈接可在將機器學習模型轉換成經轉換機器學習模型並轉換成物件時傳播。
對於整合既存機器學習模型(例如,ML模型212),IDE 200可包括機器學習(ML)模型轉換器215,該機器學習模型轉換器包括規格變換器220,及碼產生器240。此等組件之各者進一步於下文描述。轉換既存ML模型的實例程序於下文進一步在圖2中描述。在一些實施方案中,雖然將ML模型轉換器215繪示為IDE 200的一部分,可將ML模型轉換器215執行為與IDE 200分開的程序。進一步地,雖然在本文中物件導向程式設計係相關於碼產生器240及其他組件而提及,應理解本標的技術設想其他類型的程式設計語言且物件導向程式設計語言在本文中係用於解釋之目的。具體而言,任何程式設計語言均可相關於IDE 200的組件使用,且仍在本標的技術的範疇內。
如所繪示的,IDE 200亦提供規格變換器220。在一實例中,規格變換器220可接收來自儲存器210的ML模型212。規格變換器220判定及/或驗證採第一格式(例如,Kerns、TensorFlow、Caffe等)的既存ML模型是否包括充分資料以符合由IDE 200支援或與該IDE相容的特定模型規格(例如,由第三方供應商或其他實體提供的模型規格)。實例模型規格可定義用於將給定機器學習模型變換成適於利用IDE 200所提供之特徵的碼格式的參數、資料格式、資料類型、及/或處理或硬體需求,包括,例如,打字同時的語法檢查、自動完成、參數列中之名稱或類型錯誤的偵測等。規格變換器220將ML模型212轉換成經轉換ML模型235,該經轉換ML模型係採與IDE 200所支援之特定模型規格(例如,經轉換ML模型)相容的格式。在一實施方案中,規格變換器220可利用串列化格式(例如,「ProtoBuf」或協定緩衝器)將經轉換ML模型235儲存在特定模型規格的資料綱目中。
碼產生器240產生用於經轉換ML模型的碼介面。碼介面可指採特定程式設計語言的碼敘述,該等碼敘述描述使用經轉換ML模型所需的函數及/或資料類型。用於ML模型之碼介面的實例係如上文描述的輸入、輸出、及更新。在一實例中,使用經轉換ML模型的函數可接受一或多種資料類型(例如,作為至函數的輸入變數)。在一實例中,經轉換ML模型的碼介面因此提供與特定程式設計語言(當使用在目前計畫中時)相容的函數及資料類型。在一實例中,碼產生器240判定採特定程式設計語言及其API之可存取與經轉換模型關聯之既存ML資料的資料類型。在一實例中,碼產生器240建立副常式,該副常式促進經由以特定程式設計語言支援之特定資料類型存取既存ML資料的值。在產生用於經轉換ML模型之碼介面及其他碼上具有更多細節的一實例程序係在圖3中描述,其中程式設計語言及其API支援對應於既存ML資料類型的多種類型,其中所選擇的特定類型可基於適當性或熟練的程式設計師的熟悉度選擇。
在一實施方案中,碼產生器240可執行下列操作。對於由模型使用的各類型Tm,選擇在程式設計語言及其API中可用的類型Tpn。在多種類型Tp可能可用的情形中,選擇「最佳」類型使得最常使用者會係良好選擇,採用該程式設計語言的一類型應更佳於僅採用API的一類型。對於由模型使用的各函數Fm,其將類型Tmi 1、Tmi2的一組值採用為輸入並將一組值Tmvl、Tmv2等作為輸出傳回-產生將對應類型Tpil、Tpi2、Tpvl、Tpv2採用為輸入的函數。在函數內側,產生將各模型類型轉換成語言類型或自語言類型轉換各模型類型的碼,其可係簡單的或其可能需要多個步驟。此經產生的碼稱為副常式。
在一或多個實施方案中,額外的基於非碼的酬載(例如,「經編譯ML模型」)亦從該ML模型產生並遞送至發送至目標裝置的封裝中。封裝可包括經產生碼介面及經產生碼的經編譯表示,並包括此經編譯ML模型(例如,基於非碼的酬載)。此基於非碼的酬載與上文討論之經產生碼介面及碼的經編譯表示不同。在一實例中,針對下列原因,此方面的經編譯ML模型包括經訓練權重及在目標裝置上有用且不以上文討論之經產生碼的適合形式供應的其他資訊:1)原始碼在保持很多資料(阻抗、空間、速度)上不佳;及2)儘管對使用者係非常便於存取的,原始碼類型通常不像用於機器(例如,軟體)的資料類型般易於內觀-所以希望對該模型進行推理的其他組件可能偏好造訪資料(例如,判定使用者想要之影像的大小)。
碼產生器240亦可判定可能需要哪些其他的既存軟體程式庫(若有)(例如,儲存在儲存器210上)以用於編譯及/或執行經轉換ML模型,諸如對於在GPU上執行指令提供支援的圖形處理單元(GPU)程式庫。與經轉換ML模型關聯之資料的一實例結構於圖6中更詳細地描述。
額外地,在一實例中,經產生碼介面可使用計畫導覽器284在UI 280中觀看。用於觀看經產生碼介面的一實例程序於圖4中更詳細地討論。
語言編譯器260編譯經產生碼介面並產生碼介面的目標碼。
如進一步顯示的,作為建立可執行應用程式的一部分,鏈接器/封裝器270組合一或多個目標檔案(例如,來自語言編譯器260)及,在一些情況下,來自既存軟體庫(例如,用於機器學習的GPU程式庫)的碼,將上文提及之目標碼及/或程式庫碼轉換成可由電子裝置110執行的可執行機器碼。鏈接器/封裝器270的封裝器部分將可執行碼讀至記憶體中並運行導致一運行應用程
式的碼。在另一實例中,鏈接器/封裝器270可將可執行碼發送至目標電子裝置以用於部署。用於將完全編譯的ML模型發送至目標裝置的執行環境的一實例程序於圖5中更詳細地討論。
IDE 200進一步包括為經轉換ML模型提供不同特徵的預處理組件。如所繪示的,自動化碼文件製作組件252執行預處理以實現對應於正由使用者輸入之碼及/或計畫中的既存碼的即時文件製作。在一實例中,自動化碼文件製作組件252提供關於ML模型碼之態樣的資訊,並提供與模型有關的額外細節,諸如給定函數的描述、函數之參數的列表、與函數擲出之錯誤(若有)有關的資訊、函數的任何傳回值、及碼的任何註解。碼完成組件254在使用者正在IDE 200的編輯器中鍵入碼列表282時提供碼的自動完成建議。索引器提供由搜尋介面286搜尋之ML模型碼的索引。用於上文提及之預處理組件的任何資料(例如,搜尋索引、文件製作、自動完成建議等)可儲存在資料庫258中。
圖3繪示根據一或多個實施方案之用於將既存ML模型轉換成模型規格之實例程序300的流程圖。為解釋之目的,程序300主要參考圖2之IDE 200的各種組件於本文中描述,其可由圖1之電子裝置110的一或多個處理器執行。然而,程序300未受限於電子裝置110及/或IDE 200,且程序300的一或多個方塊(或操作)可由其他合適裝置的一或多個其他組件及/或軟體開發環境執行。進一步為了解釋的目的,在本文中將程序300的方塊描述為連續地或線性地發生。然而,程序300的多個方塊可平行地發生。此外,程序300的方塊不必以所示順序執行,及/或程序300的一或多個方塊不必實行及/或可由其他操作置換。
IDE 200的ML模型轉換器215判定採第一格式(例如,Kerns、TensorFlow等)的機器學習(ML)模型包括充分資料以符合採第二格式的特定模型規格(302)。在一實例中,第二格式對應於物件導向程式設計語言(例如,Swift、Objective C等)。尤其係,規格變換器220可判定既存模型是否遺漏變換所需的資料/物件,並判定既存模型是否不係有效的及/或大致一致的(例如,不正確的資料、由模型執行的(多個)操作與聲稱的目標或結果不一致等)。在ML模型包括不充分資料或不係有效的此類實例中,ML模型轉換器215可提供錯誤敘述並放棄ML模型的進一步處理。
規格變換器220亦可在既存模型的內側的資料上執行額外轉換,以更佳地適應使用者之開發環境上的既存程式庫。(例如,當既存模型係採TensorFlow格式時,則將模型資料轉換成基於使用者之開發環境中之既存程式庫的格式)。
在判定ML模型包括充分資料後,規格變換器220將ML模型轉換成特定模型規格,並提供因此與特定模型規格相容的經轉換ML模型(304)。
在一實例中,轉換ML模型可包括映射ML模型中的ML操作(例如,對應於由表示ML模型之圖表的節點執行的操作),以匹配可由模型規格定義的對應操作。在採此相容格式後,IDE 200可進一步處理經轉換ML模型並提供如上文於圖1中描述的額外功能性。
規格變換器220標記經轉換ML模型以指示該ML模型已轉換成特定模型規格(306)。例如,標記包括將識別符指派給經轉換ML模型,使得IDE 200可參考經轉換ML模型。
碼產生器240產生用於經轉換ML模型的碼介面及碼(308)。碼介面包括採物件導向程式設計語言的碼敘述,其中碼敘述對應於表示經轉換ML模型的物件。所產生的碼亦可對應於該物件。例如,物件可包括用於執行經轉換ML模型之操作的一或多個函數的碼,其中各函數可包括映射至由經轉換ML模型利用之資料及/或資料類型的輸入資料類型。對應於經轉換模型的物件、碼、及碼介面可呈現在IDE 200的使用者介面280中(例如,在碼列表282及/或計畫導覽器284中)。
在一或多個實施方案中,碼產生器240執行操作以產生用於經轉換ML模型的碼。例如,碼產生器240
判定由既存ML模型使用的輸入資料格式(例如,具有序列地編碼在記憶體中的浮點值的3-D矩陣),並判定用於經轉換模型的目標資料格式(例如,NSArrays、Swift陣列的陣列、或新的定製N-維矩陣)。碼產生器240判定既存ML模型的硬體/處理需求(例如,既存模型是否在GPU、CPU上、或經由雲端運行),並產生在GPU、CPU、及/或雲端等上運行的碼。此外,碼產生器240採用ML模型中的機器學習基元(例如,實體、性質、矩陣、及矩陣處理步驟),並產生符合特定規格的資料物件。額外地,碼產生器240將函數呼叫映射至輸入資料類型(例如,輸入向量、矩陣、或ML模型所需的任何者)。碼產生器240以程式設計語言產生函數。
軟體開發者可編輯來自碼產生器240的經產生碼。例如,軟體開發者可檢視所產生的函數,並判定是否需要額外的編輯。取決於在IDE 200中運行的目前計畫,軟體開發者可決定以目前計畫的給定程式設計語言(例如,Objective C、Swift等)撰寫的額外碼需要符合目前計畫之目的的一者。例如,
目前計畫可對應於藉由利用給定的ML模型對特定地理區域預測住宅的價格。對應於預測住家之價格的函數可針對軟體開發者決定需要修改及/或額外碼(例如,對價格計算的調整、不由ML模型提供之額外資料的使用等)的ML模型產生。軟體開發者接著可在有利地獲得在打字同時的即時語法檢查、自動完成、參數列中之名稱或類型錯誤的偵測等的利益的同時,藉由編輯此函數及/或建立呼叫該函數的新碼而利用IDE 200的功能性。
在用於ML模型的碼產生及/或碼由軟體開發者修改或添加之後,語言編譯器260編譯經產生碼及/或包括由軟體開發者提供之對應於經轉換機器學習模型的任何碼修改或添加(310)。編譯經轉換機器學習模型包括產生該物件導向程式設計語言的物件碼。語言編譯器260亦將碼介面編譯至經轉換ML模型(例如,以將某些性質強加在表示ML模型之物件上)。各別物件碼可從編譯經產生碼及碼介面產生。進一步地,編譯由軟體開發者提供的任何碼修改或添加(例如,在經產生函數上呼叫的碼)以產生各別的物件碼。
在一實例中,鏈接器/封裝器270組合所有對應於ML模型的物件碼及/或由軟體開發者修改或添加的碼,並將物件碼轉換成可執行機器碼(用於目標計算裝置)。可執行機器碼可採用軟體封裝的形式,該軟體封裝可部署至目標計算裝置以用於在目標計算裝置的執行環境中執行。在一實例中,鏈接器/封裝器270可發送包括經編譯碼的封裝至目標裝置的執行環境(312)。部署經編譯ML模型以用於在目標裝置上執行的另一實例於圖5中討論。
圖4繪示根據一或多個實施方案之用於提供經轉換ML模型以用於在軟體開發環境(例如,IDE 200)中觀看之實例程序400的流程圖。為解釋之目的,程序400於本文中主要參考圖2之IDE 200的組件描述,其可由圖1之電
子裝置110的一或多個處理器執行。然而,程序400未受限於電子裝置110及/或IDE 200,且程序400的一或多個方塊(或操作)可由其他合適裝置的一或多個其他組件及/或軟體開發環境執行。進一步為了解釋的目的,在本文中將程序400的方塊描述為連續地或線性地發生。然而,程序400的多個方塊可平行地發生。此外,程序400的方塊不必以所示順序執行,及/或程序400的一或多個方塊不必實行及/或可由其他操作置換。
IDE 200接收經轉換模型檔案(402)。在一實例中,經轉換模型檔案係在使用者拖曳該檔案並將該檔案放至IDE 200的使用者介面280中之後在IDE 200中接收。如上文所述,經轉換模型檔案可藉由參考描述於圖3的操作提供,且在本文中推定符合由IDE 200支援的特定模型規格。在一實例中,經轉換模型檔案可包括指示模型檔案對應於特定模型規格的標籤(例如,識別符)。回應於經拖曳檔案,IDE 200可建立對應於經轉換模型檔案的新計畫,或若目前計畫已開啟,將經轉換模型檔案加至目前計畫。
如先前提及的,軟體開發者可觀看及/或編輯對應於經轉換模型檔案的碼。例如,軟體開發者可檢視與經轉換模型檔案關聯的函數,並判定是否需要額外的編輯。更具體地說,軟體開發者可決定以目前計畫的給定程式設計語言(例如,Objective C、Swift等)撰寫的額外碼需要符合目前計畫之目的的一者。例如,目前計畫可對應於藉由利用給定的ML模型對特定地理區域預測住宅的價格。可能已產生軟體開發者決定需要修改及/或額外碼(例如,對價格計算的調整、不由ML模型提供之額外資料的使用等)之對應於預測住家之價格的函數。軟體開發者接著可在有利地獲得在打字同時的即時語法檢查、自
動完成、參數列中之名稱或類型錯誤的偵測等的利益的同時,藉由編輯此函數及/或建立呼叫該函數的新碼而利用IDE 200的功能性。
IDE 200提供經轉換模型檔案的圖形視圖(404)。例如,使用者介面280將模型顯示為IDE 200中的物件(例如,對應於物件導向程式設計語言),且IDE 200可提供關於物件之性質的資訊及/或存取資料庫258中與IDE 200之預處理組件(例如,索引器256、碼完成組件254、及/或自動化碼文件製作組件252)關聯的資料。在另一實例中,使用者介面280的計畫導覽器284提供具有不同性質之物件的階層圖及/或提供關聯檔案(例如,來自軟體程式庫的支援檔案)或其他有關檔案/資產(例如,影像、視訊、文字等)的列表。使用者因此可觀看計畫導覽器284中的物件並與該物件互動,並利用由IDE 200提供的功能性(例如,以檢視及/或編輯對應於經轉換模型檔案的碼)。進一步地,使用者可將額外檔案及/或資產加至目前計畫。
IDE 200提供與經轉換模型檔案關聯之碼的列表(406)。例如,使用者介面280將碼的列表提供在IDE 200的碼列表282中。以此方式,使用者可觀看及/或編輯與經轉換模型檔案關聯的碼,並有利地存取由IDE 200提供的功能性,諸如類型檢查、偵測編碼錯誤、除錯碼、碼完成、語法強調、及以碼列表282中的碼提供其他上下文相關資訊。
在一或多個實施方案中,IDE 200可將經編譯ML模型部署至一個或不同的目標裝置以用於執行。經編譯ML模型可用軟體封裝包括,該軟體封裝能夠部署在給定目標計算裝置上並執行。當在IDE 200中的計畫上工作時,可選擇一或多個目標裝置以用於在目標平台上編譯及/或部署在目標平台上。IDE 200可產生用於部署至此類目標裝置之經轉換ML模型的不同變體,該等變
體可針對給定平台的特定硬體及/或軟體能力最佳化。在一實例中,IDE 200可發送經編譯ML模型至伺服器120,該伺服器可繼而接著將經編譯模型提供至目標裝置。
圖5繪示根據一或多個實施方案之用於將經編譯ML模型發送至目標裝置(例如,圖1中的電子裝置115)之執行環境之實例程序500的流程圖。為解釋之目的,程序500於本文中主要參考圖2之IDE 200的組件描述,其可由圖1之電子裝置110執行。然而,程序500未受限於電子裝置110及/或IDE 200,且程序500的一或多個方塊(或操作)可由其他合適裝置的一或多個其他組件及/或軟體開發環境執行。進一步為了解釋的目的,在本文中將程序500的方塊描述為連續地或線性地發生。然而,程序500的多個方塊可平行地發生。此外,程序500的方塊不必以所示順序執行,及/或程序500的一或多個方塊不必實行及/或可由其他操作置換。
碼產生器240從ML文件檔案及/或其他資產產生ML模型碼(502)。在一實例中,建立ML模型碼可如上文參考圖3描述地執行。在此實例中,產生ML模型利用實作檔(例如,.m檔案)或原始碼(例如,Swift或Objective C原始碼)及/或資料及/或對應於ML模型的其他碼。
軟體開發者可觀看及/或編輯對應於ML模型的原始碼。例如,軟體開發者可檢視與ML模型關聯的函數,並判定是否需要額外的編輯。更具體地說,軟體開發者可決定以目前計畫的給定程式設計語言(例如,Objective C、Swift等)撰寫的額外碼需要符合目前計畫之目的的一者。例如,目前計畫可對應於藉由利用給定的ML模型對特定地理區域預測住宅的價格。可能已產生軟體開發者決定需要修改及/或額外碼(例如,對價格計算的調整、不由ML
模型提供之額外資料的使用等)之對應於預測住家之價格的函數。軟體開發者接著可在有利地獲得在打字同時的即時語法檢查、自動完成、參數列中之名稱或類型錯誤的偵測等的利益的同時,藉由編輯此函數及/或建立呼叫該函數的新碼而利用IDE 200的功能性。
語言編譯器260從ML模型碼及/或由軟體開發者提供的任何額外碼(例如,以呼叫對應於由ML模型提供之操作的函數)產生經編譯ML模型(504)。在一實例中,語言編譯器260提供經編譯物件碼(例如,.o檔案)及/或二進位檔案(例如,可執行機器碼)。
鏈接器/封裝器270發送包括經編譯ML模型及/或由軟體開發者提供的任何額外碼的封裝至目標裝置(或使用者的桌上型電腦)上的執行環境以用於執行(506)。在一實例中,可發送對應於各別目標裝置(例如,智慧型手機、可穿戴裝置、串流媒體裝置等)的不同變體。在另一實例中,鏈接接/封裝器270可將經編譯ML模型發送檔案庫或封裝中,接著將其發送至雲端(例如,應用程式商店或應用程式伺服器、雲端計算服務等)以用於部署及/或執行。ML模型可包括關於將為其建立模型之裝置之類型的資訊(例如,目標的運行時間環境)。在另一實例中,目標裝置可在IDE 200中由使用者選擇,使得語言編譯器260及/或鏈接器/封裝器270可進一步將經編譯ML模型最佳化。例如,當此一GPU存在於目標裝置上時,語言編譯器260可最佳化碼的編譯以使用目標裝置的GPU。在另一實例中,語言編譯器260可針對在雲端計算服務上的執行使編譯最佳化,該雲端計算服務可提供利用提供在網路(例如,網路106)中的伺服器(例如,伺服器120)部署及執行經編譯碼的服務。
圖6A繪示根據一或多個實施方案之用於既存ML模型610及經轉換ML模型630之資料的實例結構。然而,不是所有的經描繪組件可在所有的實施方案中使用,且一或多個實施方案可包括圖中所示組件以外的額外組件或不同組件。可在組件的配置及類型上進行變化而不脫離本文陳述之申請專利範圍的精神或範圍。可提供額外組件、不同組件、或較少組件。
如上文在圖1至圖4中提及的,既存ML模型可轉換成符合特定模型規格的經轉換模型。如所繪示的,ML模型610表示採與特定模型規格不同之格式的既存模型。ML模型610包括ML基元612、ML資料(例如,用於諸如訓練、驗證、測試等目的的ML資料集)的ML資料格式614、及一組硬體及/或處理需求616。ML基元612可包括由ML模型610利用的基元(諸如實體、性質、矩陣、及矩陣處理步驟)。ML資料格式614可指示ML資料係採序列地編碼在記憶體中、或採某種其他資料格式等的格式。該組硬體及/或處理需求616的設定可包括指示ML模型610需要使用GPU及/或CPU及/或雲端計算服務以用於特定操作的資訊。此外,ML模型610可包括一或多個ML介面618(例如,輸入、輸出、更新等)及參數618。在一實施例中,ML介面618係機器學習模型之介面,且參數618係與ML模型610相關聯之參數(例如,機器學習模型之權重、待用於機器學習模型之層的數目、臨限、學習速率、及/或其他類型的機器學習模型參數)如上文所述。
經轉換ML模型630包括碼介面640。碼介面640包括函數642、副常式644、資料類型646、及介面648。函數642可包括將函數呼叫映射至輸入資料類型(例如,輸入向量、矩陣、或ML模型610所需的任何者)的資訊。資料類型646(例如,NSArrays、陣列的陣列,諸如Swift陣列的陣列、或新的定製
N-維矩陣)可對應於ML資料格式614,並使經轉換ML模型630能存取採ML資料格式614的ML資料。為促進此類ML資料的存取,副常式644為所利用的函數642提供子常式。經轉換ML模型630進一步包括經編譯ML模型碼650,其可採對應於目標裝置的物件碼格式。如上文所述,介面648係經轉換ML模型的介面。在一實施例中,經編譯ML模型650可包括參數654,其等係用於經轉換ML模型630的參數。在一實施例中,參數654可係與ML模型610相關聯之參數620(或其轉換)。
可選地,經轉換ML模型630取決於ML模型610的該組硬體及/或處理需求616(例如,GPU處理、雲端計算等)而包括一或多個所需的軟體程式庫660或與該一或多個所需的軟體程式庫相關聯。雖然在一實施例中,所需的軟體程式庫652可係經轉換ML模型630的一部分,在替代實施例中,可使用經轉換ML模型630安裝所需的軟體程式庫652的一些或全部。
圖6B繪示根據一或多個實施方案之用於既存ML介面618及經轉換ML模型648之資料的實例結構。在圖6B中,ML介面618可包括輸入656A、輸出656B、及/或更新656C介面的一或多者。在一個實施例中,輸入介面656A可定義可用於提供用於至機器學習模型之輸入的一組函數呼叫。在此實施例中,輸出介面656B可定義可用於提供來自機器學習模型之輸出的函數呼叫組。此外,經更新介面656C可定義可用於更新模型參數的一組函數呼叫。
在一個實施例中,將ML介面648轉換成經轉換ML模型630的介面648。在此實施例中,ML介面可包括介面654A至654C的一或多者,諸如輸入介面654A、輸出介面654B、及/或更新介面654C。
圖7繪示可以其實作本標的技術之一或多個實施方案的電子系統700。電子系統700可係圖1所示的電子裝置110及/或伺服器120及/或可係彼等的一部分。電子系統700可包括各種類型的電腦可讀媒體及用於各種其他類型之電腦可讀媒體的介面。電子系統700包括匯流排708、一或多個處理單元712、系統記憶體704(及/或緩衝器)、ROM 710、永久性儲存裝置702、輸入裝置介面714、輸出裝置介面706、及一或多個網路介面716、或其子集及變型。
匯流排708共同表示通訊地連接電子系統700的許多內部裝置的所有系統、周邊、及晶片組匯流排。在一或多個實施方案中,匯流排708通訊地連接一或多個處理單元712與ROM 710、系統記憶體704、及永久性儲存裝置702。一或多個處理單元712從此等各種記憶體單元提取執行的指令及處理的資料以執行本標的揭露的程序。一或多個處理單元712在不同的實施方案中可係單一處理器或多核心處理器。
ROM 710儲存由一或多個處理單元712及電子系統700的其他模組所需要的靜態資料及指令。另一方面,永久性儲存裝置702可係讀寫記憶體裝置。永久性儲存裝置702可係即使在電子系統700關閉時仍儲存指令及資料的非揮發性記憶體單元。在一或多個實施方案中,可將大量儲存裝置(諸如磁碟或光碟及其對應的碟驅動機(disk drive))使用為永久性儲存裝置702。
在一或多個實施方案中,可將可移除儲存裝置(諸如軟碟、隨身碟、及其對應的碟驅動機)使用為永久性儲存裝置702。相似於永久性儲存裝置702,系統記憶體704可係讀寫記憶體裝置。然而,與永久性儲存裝置702不同,系統記憶體704可係揮發性讀寫記憶體,諸如隨機存取記憶體。系統記憶體704可儲存一或多個處理單元712在運行時間可能需要的指令及資料的任何
者。在一或多個實施方案中,本標的揭露的程序係儲存在系統記憶體704、永久性儲存裝置702、及/或ROM 710中。一或多個處理單元712從此等各種記憶體單元提取執行的指令及處理的資料以執行一或多個實施方案的程序。
匯流排708亦連接至輸入裝置介面714及輸出裝置介面706。輸入裝置介面714讓使用者能將資訊及選擇命令傳達至電子系統700。可與輸入裝置介面714一起使用的輸入裝置可包括,例如,字母數字鍵盤及指標裝置(也稱為「游標控制裝置」)。例如,輸出裝置介面706可實現,例如,由電子系統700產生之影像的顯示。可與輸出裝置介面706一起使用的輸出裝置可包括,例如,印表機及顯示裝置,諸如液晶顯示器(liquid crystal display,LCD)、發光二極體(light emitting diode,LED)顯示器、有機發光二極體(organic light emitting diode,OLED)顯示器、可撓式顯示器、平板顯示器、固態顯示器、投影機、或用於輸出資訊的任何其他裝置。一或多個實施方案可包括作用為輸入及輸出裝置二者的裝置,諸如觸控螢幕。在此等實施方案中,提供給使用者的反饋可係任何形式的感覺反饋(諸如,視覺反饋、聽覺反饋、或觸覺反饋);且可以任何形式接收來自使用者的輸入,包括聲響、語音、或觸覺輸入。
最後,如圖7所示,匯流排708亦通過一或多個網路介面716將電子系統700耦接至一或多個網路及/或一或多個網路節點,諸如圖1所示的電子裝置110及/或115。以此方式,電子系統700可係電腦網路(諸如LAN、廣域網路(「WAN(wide area network)」)、或內部網路、或網路的網路(諸如網際網路)的一部分。電子系統700的任何或所有組件可結合本標的揭露使用。
在本揭露的範圍內的實施方案可使用編碼一或多個指令的一有形電腦可讀儲存媒體(或一或多種類型的多個有形電腦可讀儲存媒體)部分地或完全地實現。該有形電腦可讀儲存媒體在本質上亦可係非暫時性的。
該電腦可讀儲存媒體可係可由包括能夠執行指令的任何處理電子器件及/或處理電路系統的一通用或專用計算裝置讀取、寫入、或以其他方式存取的任何儲存媒體。例如,該電腦可讀媒體可不受限地包括任何揮發性半導體記憶體,諸如RAM、DRAM、SRAM、T-RAM、Z-RAM、及TTRAM。該電腦可讀媒體亦可包括任何非揮發性半導體記憶體,諸如ROM、PROM、EPROM、EEPROM、NVRAM、快閃、nvSRAM、FeRAM、FeTRAM、MRAM、PRAM、CBRAM、SONOS、RRAM、NRAM、賽道記憶體(racetrack memory)、FJG、及節肢動物雛型記憶體(millipede memory)。
此外,該電腦可讀儲存媒體可包括任何非半導體記憶體,諸如光碟儲存器、磁碟儲存器、磁帶、其他磁性儲存裝置、或能夠儲存一或多個指令的任何其他媒體。在一或多個實施方案中,該有形電腦可讀儲存媒體可直接耦接至一計算裝置,而在其他實施方案中,該有形電腦可讀儲存媒體可間接地耦接至一計算裝置,例如經由一或多個有線連接、一或多個無線連接、或其任何組合。
指令可係可直接執行的,或可用以發展可執行指令。例如,可將指令實現為可執行或不可執行的機器碼,或實現為可經編譯以生成可執行或不可執行的機器碼的一高階語言的指令。此外,指令亦可實現為資料或可包括資料。電腦可執行指令亦可係以任何格式組織,包括常式、次常式、程式、資料結構、物件、模組、應用程式、小型應用程式(applet)、函數等。如所屬技術
領域中具有通常知識者所認知的,包括但不限於指令的數目、結構、順序、及組織的細節可顯著變化而不改變該基礎邏輯、功能、處理、及輸出。
雖然上文之討論主要係指執行軟體的微處理器或多核心處理器,一或多個實施方案係由一或多個積體電路(諸如ASIC或FPGA)實行。在一些實施方案中,此類積體電路執行儲存在該電路本身上的指令
所屬技術領域中具有通常知識者將理解本文描述的各種說明性方塊、模組、元件、組件、方法、及演算法可實作為電子硬體、電腦軟體、或二者的組合。為說明硬體及軟體的此互換性,各種說明性方塊、模組、元件、組件、方法、及演算法大致已以彼等的功能性於上文描述。此種功能性是否實作為硬體或軟體取決於加諸在整個系統上的特定應用及設計限制。技術人員可針對各特定應用以不同方式實現所描述的功能性。各種組件及方塊可不同地配置(例如,以不同順序配置,或以不同的方式分割)而完全不脫離本標的技術的範圍。
須理解所揭露程序中的方塊之任何特定順序或階層是實例方法的一例證。基於設計偏好,須了解可重新安排程序中之方塊的特定順序或階層或執行所有繪示方塊。可同時實行方塊的任何者。在一或多個實施方案中,多工及平行處理可係有利的。此外,不應將上述實施方案中之各種系統組件的分開理解為在所有實施方案中皆需要此種分開,且應理解所描述的程式組件及系統大致可在單一軟體產品中整合在一起或封裝至多個軟體產品中。
如本說明書及本申請案之任何專利請求項中所使用者,用語「基地台(base station)」、「接收器(receiver)」、「電腦(computer)」、「伺服器(server)」、「處理器(processor)」、及「記憶體(memory)」皆指電子或其他
技術裝置。此等用語排除人或人群。為了本說明書之目的,用語「顯示(display/displaying)」意指在電子裝置上顯示。
如本文中所使用者,在一系列項目之前的詞組「之至少一者(at least one of)」修飾列表整體而非列表的各成員(亦即,各項目),其中用語「及(and)」或「或(or)」分隔該等項目之任何者。詞組「之至少一者(at least one of)」不需要選擇所列之各項目的至少一者;相反地,該詞組允許的含義包括以下之至少一者:該等項目的任一者、及/或該等項目的任何組合的至少一者、及/或該等項目的各者的至少一者。舉實例而言,詞組「A、B、及C的至少一者(at least one of A,B,and C)」或「A、B、或C的至少一者(at least one of A,B,or C)」各指的係僅A、僅B、或僅C;A、B、與C的任何組合;及/或A、B、與C之各者中之至少一者。
述語用辭「經組態以(configured to)」、「可操作以(operable to)」、及「經程式化以(programmed to)」並不意味著主辭的任何特殊的有形或無形的修改,而係意圖互換地使用。在一或多個實施方案中,經組態以監測及控制操作或組件的處理器亦可意指該處理器經程式化以監測及控制該操作或該處理器可操作以監測及控制該操作。相似地,經組態以執行程式碼的處理器可係解釋為經程式化以執行程式碼或可操作以執行程式碼的處理器。
詞組(諸如,一態樣(an aspect)、該態樣(the aspect)、另一態樣(another aspect)、一些態樣(some aspects)、一或多個態樣(one or more aspects)、一實施方案(an implementation)、該實施方案(the implementation)、另一實施方案(another implementation)、一些實施方案(some implementations)、一或多個實施方案(one or more implementations)、一實施例(an embodiment)、該實施例(the
embodiment)、另一實施例(another embodiment)、一些實施方案(some implementations)、一或多個實施方案(one or more implementations)、一組態(a configuration)、該組態(the configuration)、另一組態(another configuration)、一些組態(some configurations)、一或多個組態(one or more configurations)、標的技術(the subject technology)、該揭露(the disclosure)、本揭露(the present disclosure)、其之其他變化、與類似者)都是為了方便起見,並不隱含有關(多個)此種詞組的揭露對標的技術係必要的或此種揭露應用於標的技術的所有組態。與此類詞組相關的揭露可應用於所有組態、或一或多個組態。與此類詞組相關的揭露可提供一或多個實例。詞組,諸如態樣或一些態樣,可指一或多個態樣,且反之亦然,且此類似地應用於其他前述詞組。
用辭「例示性(exemplary)」在本文係用以意指「用作實例、例項、或說明」。不必然將本文描述為「例示性」或「實例」的任何實施例解釋為比其他實施方案更佳或有利。此外,在將用語「包括(include)」、「具有(have)」、或類似者用於本說明書或申請專利範圍的情況下,此類用語意圖以類似於用語「包含(comprise)」在「包含(comprise)」用作申請專利範圍中的連接詞時所解譯的方式含括。
所屬技術領域中具有通常知識者已知或稍後才知道之本揭露全文中所述之各種態樣之元件的所有結構及功能等同物係以引用方式明確地併入本文中,且意欲由申請專利範圍涵括。此外,在本文中揭示的任何事項都不打算貢獻予公眾,無論此類揭露是否在申請專利範圍明確述及。沒有申請專利範圍的元素係根據35 U.S.C.§112第六段的規定解釋,除非元素係使用詞組「用
於...的構件(means for)」明確地述及,或者,在方法申請專利範圍的情形中,元素係/使用詞組「用於...的步驟(step for)」述及。
提供先前敘述以使所屬技術領域中具有通常知識者能夠實踐本文所述的各種態樣。所屬技術領域中具有通常知識者將輕易明白此等態樣的各種修改,且本文所定義的泛用原則可適用於其他態樣。因此,申請專利範圍未意圖限制本文所示之態樣,而係應符合與該語言之申請專利範圍一致的全部範圍,其中除非具體如此陳述,否則以單數提及一元件未意圖指稱「一個及僅一個(one and only one)」而係指「一或多個(one or more)」。除非以其他方式具體陳述,用語「一些(some)」係指一或多個。陽性代詞(諸如他的)包括女性及中性(諸如她的及它的),且反之亦然。標題及副標題(若有的話)僅為了方便而使用,且不限制本揭露。
610:ML模型
612:ML基元
614:ML資料格式
616:硬體及/或處理需求
618:ML介面/參數
620:參數
630:經轉換ML模型
640:碼介面
642:函數
644:副常式
646:資料類型
648:介面/經轉換ML模型
650:經編譯ML模型碼
652:所需的軟體程式庫
654:參數
Claims (20)
- 一種將學習模型整合至軟體開發系統中的方法,其包含:判定採一第一格式的一機器學習模型包括充分資料以符合採一第二格式的一特定模型規格,該第二格式對應於與一整合開發環境(IDE)相容的一第二格式,其中該機器學習模型包括該機器學習模型的一模型參數;將該機器學習模型轉換成與該特定模型規格相容的一經轉換機器學習模型;產生用於該經轉換機器學習模型的一碼介面及碼,該碼介面包括採一物件導向程式設計語言的碼敘述,該等碼敘述對應於表示該經轉換機器學習模型的一物件,且該物件包括一更新介面以藉由使用該機器學習模型的一應用程式來更新該模型參數;及提供所產生之該碼介面及所產生之該碼以用於在該IDE中顯示,該IDE實現所產生之該碼介面及該碼的修改。
- 如請求項1之方法,其中該模型參數係選自由一學習率、臨限、模型的類型、及權重所組成之群組。
- 如請求項1之方法,其中該機器學習模型包括一輸入介面及一輸出介面中之至少一者。
- 如請求項1之方法,其中該物件的該更新介面係不具有一具體植入之該物件的一能力的一描述。
- 如請求項1之方法,其進一步包含:接收對應於呼叫由用於該經轉換機器學習模型之該碼提供的一函數的額外碼。
- 如請求項5之方法,其進一步包含:將該碼介面、用於該經轉換機器學習模型之該碼、及該額外碼編譯成一經編譯機器學習模型,其中編譯包括產生該物件導向程式設計語言的物件碼且該物件包括用於更新該模型參數的一物件函數呼叫;及將該經編譯機器學習模型作為一軟體封裝的部分發送至一目標計算裝置的一執行環境以用於執行,該目標計算裝置包括該應用程式。
- 如請求項6之方法,其中該函數呼叫係一取得模型參數值及設定模型參數值之一者。
- 如請求項1之方法,其中該機器學習模型指示該模型參數係可更新的。
- 如請求項1之方法,其中該機器學習模型不指示該模型參數係可更新的且該模型參數在該機器學習模型轉換之後成為可更新的。
- 一種具有可執行指令以導致一或多個處理單元執行一將學習模型整合至軟體開發系統中的方法的非暫時性機器可讀媒體,該方法包含:判定採一第一格式的一機器學習模型包括充分資料以符合採一第二格式的一特定模型規格,該第二格式對應於與一整合開發環境(IDE)相容的一第二格式,其中該機器學習模型包括該機器學習模型的一模型參數;將該機器學習模型轉換成與該特定模型規格相容的一經轉換機器學習模型;產生用於該經轉換機器學習模型的一碼介面及碼,該碼介面包括採一物件導向程式設計語言的碼敘述,該等碼敘述對應於表示該經轉換機器學習模型的 一物件,且該物件包括一更新介面以藉由使用該機器學習模型的一應用程式來更新該模型參數;及提供所產生之該碼介面及所產生之該碼以用於在該IDE中顯示,該IDE實現所產生之該碼介面及該碼的修改。
- 如請求項10之機器可讀媒體,其中該模型參數係選自由一學習率、臨限、模型的類型、及權重所組成之群組。
- 如請求項10之機器可讀媒體,其中該機器學習模型包括一輸入介面及一輸出介面中之至少一者。
- 如請求項10之機器可讀媒體,其中該物件的該更新介面係不具有一具體植入之該物件的一能力的一描述。
- 如請求項10之機器可讀媒體,其進一步包含:接收對應於呼叫由用於該經轉換機器學習模型之該碼提供的一函數的額外碼。
- 如請求項14之機器可讀媒體,其進一步包含:將該碼介面、用於該經轉換機器學習模型之該碼、及該額外碼編譯成一經編譯機器學習模型,其中編譯包括產生該物件導向程式設計語言的物件碼且該物件包括用於更新該模型參數的一物件函數呼叫;及將該經編譯機器學習模型作為一軟體封裝的部分發送至一目標計算裝置的一執行環境以用於執行,該目標計算裝置包括該應用程式。
- 如請求項15之機器可讀媒體,其中該函數呼叫係一取得模型參數值及設定模型參數值之一者。
- 如請求項10之機器可讀媒體,其中該機器學習模型指示該模型參數係可更新的。
- 如請求項10之機器可讀媒體,其中該機器學習模型不指示該模型參數係可更新的且該模型參數在該機器學習模型轉換之後成為可更新的。
- 一種將學習模型整合至軟體開發系統中的裝置,其包含:一處理器;一記憶體,其通過一匯流排耦接至該處理器;及一程序,其由該處理器自該記憶體執行,該程序導致該處理器判定採一第一格式的一機器學習模型包括充分資料以符合採一第二格式的一特定模型規格,該第二格式對應於與一整合開發環境(IDE)相容的一第二格式,其中該機器學習模型包括該機器學習模型的一模型參數;將該機器學習模型轉換成與該特定模型規格相容的一經轉換機器學習模型;產生用於該經轉換機器學習模型的一碼介面及碼,該碼介面包括採一物件導向程式設計語言的碼敘述,該等碼敘述對應於表示該經轉換機器學習模型的一物件,且該物件包括一介面以藉由使用該機器學習模型的一應用程式來更新該模型參數;及提供所產生之該碼介面及所產生之該碼以用於在該IDE中顯示,該IDE實現所產生之該碼介面及該碼的修改。
- 如請求項19之裝置,其中該機器學習模型包括一輸入介面及一輸出介面中之至少一者。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962855893P | 2019-05-31 | 2019-05-31 | |
US62/855,893 | 2019-05-31 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202105170A TW202105170A (zh) | 2021-02-01 |
TWI766288B true TWI766288B (zh) | 2022-06-01 |
Family
ID=73551308
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW109118066A TWI766288B (zh) | 2019-05-31 | 2020-05-29 | 將學習模型整合至軟體開發系統中的方法及裝置,以及非暫時性機器可讀媒體 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11687830B2 (zh) |
EP (1) | EP3977263A1 (zh) |
CN (1) | CN113892082A (zh) |
TW (1) | TWI766288B (zh) |
WO (1) | WO2020242809A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI842427B (zh) * | 2023-02-10 | 2024-05-11 | 大陸商鼎捷軟件股份有限公司 | 軟體開發系統以及軟體開發方法 |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10915333B2 (en) * | 2016-03-30 | 2021-02-09 | Sony Interactive Entertainment Inc. | Deriving application-specific operating parameters for backwards compatiblity |
EP4113403A4 (en) * | 2020-02-26 | 2023-03-29 | NEC Corporation | ASSISTANT INFORMATION GENERATION DEVICE, ASSISTANT INFORMATION GENERATION METHOD AND PROGRAM RECORDING MEDIA |
US11269597B2 (en) * | 2020-03-31 | 2022-03-08 | Sap Se | Real-time code recommendations using machine learning and reinforcement learning |
US11693637B1 (en) * | 2020-05-15 | 2023-07-04 | Google Llc | Using natural language latent representation in automated conversion of source code from base programming language to target programming language |
CN113127058B (zh) * | 2021-04-28 | 2024-01-16 | 北京百度网讯科技有限公司 | 数据标注方法、相关装置及计算机程序产品 |
US11681505B2 (en) * | 2021-06-29 | 2023-06-20 | Opentrons LabWorks Inc. | Systems and methods for facilitating generation and deployment of machine learning software applications |
CN113641873B (zh) * | 2021-07-09 | 2022-07-22 | 厦门雅基软件有限公司 | 数据处理方法、装置、电子设备及可读存储介质 |
WO2023036400A1 (en) * | 2021-09-07 | 2023-03-16 | Mendix Technology B.V. | Managing an app, especially developing an app comprising a trained function, method and system |
US20230107925A1 (en) * | 2021-09-29 | 2023-04-06 | Amazon Technologies, Inc. | Modeling individual interfaces for executing interface queries over multiple interfaces |
CN114706568B (zh) * | 2022-04-22 | 2024-07-05 | 深圳伯德睿捷健康科技有限公司 | 深度学习在线编码方法和系统 |
US20230359458A1 (en) * | 2022-05-06 | 2023-11-09 | Microsoft Technology Licensing, Llc | Machine learning model management and software development integration |
CN115878096B (zh) * | 2023-01-31 | 2023-05-23 | 北京面壁智能科技有限责任公司 | 深度学习模型统一应用方法、装置、服务器及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7610545B2 (en) * | 2005-06-06 | 2009-10-27 | Bea Systems, Inc. | Annotations for tracking provenance |
TW201835784A (zh) * | 2016-12-30 | 2018-10-01 | 美商英特爾公司 | 物聯網 |
WO2018222289A1 (en) * | 2017-06-03 | 2018-12-06 | Apple Inc. | Integration of learning models into a software development system |
US20180349114A1 (en) * | 2017-06-03 | 2018-12-06 | Apple Inc. | Integrating machine learning models into an interpreted software development environment |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9298427B2 (en) * | 2010-01-06 | 2016-03-29 | Microsoft Technology Licensing, Llc. | Creating inferred symbols from code usage |
US10474566B2 (en) | 2015-08-05 | 2019-11-12 | Equifax Inc. | Model integration tool |
US10606566B2 (en) * | 2017-06-03 | 2020-03-31 | Apple Inc. | Integration of learning models into a software development system |
-
2020
- 2020-05-15 US US16/875,565 patent/US11687830B2/en active Active
- 2020-05-18 WO PCT/US2020/033482 patent/WO2020242809A1/en unknown
- 2020-05-18 CN CN202080039162.XA patent/CN113892082A/zh active Pending
- 2020-05-18 EP EP20730904.8A patent/EP3977263A1/en active Pending
- 2020-05-29 TW TW109118066A patent/TWI766288B/zh active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7610545B2 (en) * | 2005-06-06 | 2009-10-27 | Bea Systems, Inc. | Annotations for tracking provenance |
TW201835784A (zh) * | 2016-12-30 | 2018-10-01 | 美商英特爾公司 | 物聯網 |
WO2018222289A1 (en) * | 2017-06-03 | 2018-12-06 | Apple Inc. | Integration of learning models into a software development system |
US20180349114A1 (en) * | 2017-06-03 | 2018-12-06 | Apple Inc. | Integrating machine learning models into an interpreted software development environment |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI842427B (zh) * | 2023-02-10 | 2024-05-11 | 大陸商鼎捷軟件股份有限公司 | 軟體開發系統以及軟體開發方法 |
Also Published As
Publication number | Publication date |
---|---|
CN113892082A (zh) | 2022-01-04 |
US20200380415A1 (en) | 2020-12-03 |
TW202105170A (zh) | 2021-02-01 |
WO2020242809A1 (en) | 2020-12-03 |
US11687830B2 (en) | 2023-06-27 |
EP3977263A1 (en) | 2022-04-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI766288B (zh) | 將學習模型整合至軟體開發系統中的方法及裝置,以及非暫時性機器可讀媒體 | |
US11614922B2 (en) | Integration of learning models into a software development system | |
CN110603520B (zh) | 将学习模型集成到软件开发系统中 | |
US11537368B2 (en) | Integrating machine learning models into an interpreted software development environment | |
US11667033B2 (en) | Systems and methods for robotic process automation | |
US9841953B2 (en) | Pluggable components for runtime-image generation | |
EP3008585B1 (en) | Automatic source code generation | |
CN110263546B (zh) | 一种对容器镜像进行安全检查的方法、装置以及设备 | |
Bernaschina | ALMOsT. js: an agile model to model and model to text transformation framework | |
Del Sole | Microsoft computer vision APIs distilled: Getting started with cognitive services | |
Tran et al. | Systematic generation of abstract user interfaces | |
Kulkarni et al. | Intelligent software engineering: the significance of artificial intelligence techniques in enhancing software development lifecycle processes | |
Stephens | C# 5.0 Programmer's reference | |
US11775293B1 (en) | Deploying a static code analyzer based on program synthesis from input-output examples | |
Oubelli et al. | Test Cases Evolution of Mobile Applications | |
Dao et al. | An approach to analyzing execution preservation in java program refactoring | |
Paternò | Models for universal usability | |
Babayev | The Challenges and Possibilities of Using VIPER Architecture in SwiftUI | |
Herath et al. | Software Building Blocks: From Python to Version Control | |
Gaikwad | GIS tool for learning about Ottoman Empire | |
Ullman | Effortless Flex 4 Development | |
Giulio et al. | Multi-Platform Design of Smartphone Applications | |
Jackson et al. | Android Screen Design: Writing to the Display Using Activity and View | |
Tanksale | GIS tool on fuel resources of the American continent |