取用機器學習模型

已完成

為機器學習模型定型之後,就可以取用模型來進行預測了。

ML.NET 模型會進行序列化並儲存至檔案。 您可以將模型檔案載入到任何 .NET 應用程式,並用它來透過 ML.NET API 進行預測。

Model Builder 可讓您輕鬆地取用模型,如果模型在現有應用程式中,則要使用程式碼片段來取用,如果模型在新的應用程式中,則要使用範本來取用。

程式碼片段

如果您有現有的應用程式,並想要在其中使用模型來進行預測,則程式碼片段可簡化此程序。 若要在應用程式中使用程式碼片段:

  1. 從您會使用模型的專案新增模型所在類別庫的參考。
  2. 在應用程式中新增程式碼片段。

程式碼片段會建立模型輸入執行個體。 然後,它會呼叫 .consumption.cs 檔案中的 Predict 方法,以使用所提供的輸入資料來進行預測。

專案範本

和在定型程序進行期間自動產生的定型和取用程式碼一樣,Model Builder 會提供下列範本來自動產生用來取用模型的新 .NET 應用程式。

主控台應用程式

主控台應用程式範本是使用模型進行預測的 C# .NET 應用程式。 其包含下列檔案:

  • Program.cs:應用程式的進入點。 和程式碼片段類似,此檔案也會建立模型的輸入執行個體、使用 .consumption.cs 檔案中的 Predict 方法,並在主控台中顯示結果。
  • <MODEL-NAME>.mbconfig:模型的 .mbconfig 檔案,以及所產生的定型和取用程式碼。 這些檔案會從您最初在其中新增機器學習專案的類別庫專案複製過來。

Web API

Web API 範本是透過 ASP.NET 最小 API 應用程式模型所建置的 ASP.NET Core 專案,可簡化將模型裝載為 Web 服務的程序。 Web API 可讓您彈性地透過各種用戶端 (例如,桌面、Web 和行動應用程式) 的 HTTP Web 要求,使用模型來進行預測。

Web API 範本包含下列檔案:

  • Program.cs:應用程式的進入點。 在此檔案中,您的應用程式會使用相依性插入來設定 PredictionEnginePool 服務、定義單一 /predict 端點,並啟動應用程式以接聽傳入的 HTTP 要求。

    在定義 predict 端點時,也會定義處理常式。 處理常式會使用 PredictionEnginePool 服務,針對包含模型輸入資料的傳入 JSON 要求進行預測。 然後,處理常式會將這些預測的結果傳回給用戶端。

  • <MODEL-NAME>.mbconfig:模型的 .mbconfig 檔案,以及所產生的定型和取用程式碼。 這些檔案會從您最初在其中新增機器學習專案的類別庫專案複製過來。

重要

Web API 專案不會使用 .consumption.cs 檔案中的 Predict 方法。 相反地,其會使用相依性插入來將 PredictionEnginePool 註冊為服務。 PredictionEngine 不是安全執行緒。 您也必須在應用程式內有需要的任何地方建立其執行個體。 隨著應用程式成長,此程序可能會變得無法管理。

為了提升效能和執行緒安全性,請合併使用相依性插入與 PredictionEnginePool 服務,以建立 PredictionEngine 物件的 ObjectPool 供整個應用程式使用。

若要深入了解相依性插入,請參閱 ASP.NET Core 中的相依性插入

在下一個單元中,您會取用所定型的模型來預測 .NET 主控台應用程式中的機器失敗。