기계 학습 모델 사용

완료됨

기계 학습 모델을 학습시킨 후에는 예측을 할 수 있도록 모델을 사용해야 합니다.

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 Minimal API 애플리케이션 모델을 통해 빌드된 ASP.NET Core 프로젝트입니다. Web API는 데스크톱, 웹 및 모바일 애플리케이션과 같은 다양한 클라이언트의 HTTP 웹 요청을 통해 모델을 사용하여 예측을 수행할 수 있는 유연성을 제공합니다.

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 콘솔 애플리케이션에서 머신 오류를 예측합니다.