機械学習モデルを使用する
機械学習モデルをトレーニングしたら、予測できるようにそれを使用します。
ML.NET モデルはシリアル化されて、ファイルに保存されます。 モデル ファイルを任意の .NET アプリケーションに読み込み、ML.NET API を通じて、それを使用して予測を行うことができます。
Model Builder により、コード スニペットを使用して既存のアプリケーションで、またはテンプレートを使用して新しいアプリケーションで、モデルを簡単に使用できるようになります。
コード スニペット
モデルを使用して予測を行う既存のアプリケーションがある場合、コード スニペットによりプロセスが簡単になります。 アプリケーションでコード スニペットを使用するには:
- モデルを使用するプロジェクトから、モデルを含むクラス ライブラリへの参照を追加します。
- アプリケーションにコード スニペットを追加します。
コード スニペットによって、モデル入力のインスタンスが作成されます。 次に、.consumption.cs ファイルの Predict
メソッドが呼び出され、提供した入力データを使用して予測が行われます。
プロジェクト テンプレート
トレーニング プロセス中に自動生成されるトレーニングおよび使用コードと同様に、Model Builder によって、モデルを使用する新しい .NET アプリケーションを自動生成するための次のテンプレートが提供されます。
コンソール アプリケーション
コンソール アプリケーション テンプレートは、モデルを使用して予測を行う C# .NET コンソール アプリケーションです。 次のファイルが含まれます。
- Program.cs: アプリケーションのエントリ ポイント。 コード スニペットと同様、このファイルによってモデルの入力インスタンスが作成され、.consumption.cs ファイルの
Predict
メソッドを使用して、コンソールに結果が表示されます。 - <MODEL-NAME>.mbconfig: モデル、生成されたトレーニング、および使用コードの .mbconfig ファイル。 これらのファイルは、最初に機械学習プロジェクトの追加先としたクラス ライブラリ プロジェクトからコピーされます。
Web API
Web API テンプレートは、モデルを Web サービスとして簡単にホスティングできるようにする、ASP.NET 最小 API アプリケーション モデルを使用して作成された ASP.NET Core プロジェクトです。 Web API は、デスクトップ、Web、モバイル アプリケーションなどのさまざまなクライアントからの HTTP Web 要求に対して、モデルを使用して予測を行う柔軟性を備えています。
Web API テンプレートには、次のファイルが含まれています。
Program.cs: アプリケーションのエントリ ポイント。 このファイルに、アプリケーションが依存関係挿入を使用して
PredictionEnginePool
サービスを構成し、1 つの/predict
エンドポイントを定義し、着信 HTTP 要求をリッスンするアプリケーションを起動します。predict
エンドポイント定義の一部として、ハンドラーも定義されます。 ハンドラーでは、PredictionEnginePool
サービスを使用して、モデルの入力データを含む着信 JSON 要求に対する予測が行われます。 次にハンドラーから、それらの予測の結果がクライアントに返されます。<MODEL-NAME>.mbconfig: モデル、生成されたトレーニング、および使用コードの .mbconfig ファイル。 これらのファイルは、最初に機械学習プロジェクトの追加先としたクラス ライブラリ プロジェクトからコピーされます。
重要
Web API プロジェクトは、.consumption.cs ファイルの Predict
メソッドは使用しません。 代わりに、依存関係挿入を使用して PredictionEnginePool
がサービスとして登録されます。 PredictionEngine
はスレッド セーフではありません。 また、アプリケーション内でそれを必要とするすべての場所に、そのインスタンスを作成する必要もあります。 アプリケーションの規模が拡大すると、このプロセスが管理不能になる可能性があります。
パフォーマンスとスレッド セーフを向上させるには、依存性の挿入と PredictionEnginePool
サービスを組み合わせて使用します。これにより、アプリケーション全体で使用する PredictionEngine
オブジェクトの ObjectPool
が作成されます。
依存関係挿入について詳しくは、「ASP.NET Core での依存関係の挿入」を参照してください。
次のユニットでは、.NET コンソール アプリケーションでマシンの障害を予測するためにトレーニングしたモデルを使用します。