Utilizzare i modelli di Machine Learning

Completato

Dopo aver eseguito il training di un modello di Machine Learning, è necessario usarlo in modo che sia possibile effettuare stime.

i modelli ML.NET vengono serializzati e salvati in un file. È possibile caricare il file di modello in qualsiasi applicazione .NET e usarlo tramite le API ML.NET.

Model Builder semplifica l'uso del modello nelle applicazioni esistenti usando frammenti di codice e nelle nuove applicazioni usando modelli.

Frammento di codice

Se si dispone di un'applicazione esistente in cui si vuole usare il modello per effettuare stime, un frammento di codice semplifica il processo. Per usare un frammento di codice nell'applicazione:

  1. Aggiungere un riferimento alla libreria di classi contenente il modello dal progetto in cui si userà il modello.
  2. Aggiungere il frammento di codice all'applicazione.

Il frammento di codice crea un'istanza dell'input del modello. Chiama quindi il metodo Predict nel file con estensione consumption.cs per effettuare stime usando i dati di input forniti.

Modelli di progetto

Come il codice di training e utilizzo generato automaticamente durante il processo di training, Model Builder fornisce i modelli seguenti per generare automaticamente nuove applicazioni .NET per l'uso del modello.

Applicazione console

Il modello di applicazione console è un'applicazione .NET C# che usa il modello per effettuare stime. Contiene i file seguenti:

  • Program.cs: punto di ingresso dell'applicazione. Analogamente al frammento di codice, questo file crea un'istanza dell'input del modello, usa il metodo Predict nel file con estensione consumption.cs e visualizza il risultato nella console.
  • <MODEL-NAME>.mbconfig: The .mbconfig per il modello e il codice di training e utilizzo generato. Questi file vengono copiati dal progetto della libreria di classi in cui è stato originariamente aggiunto il progetto di Machine Learning.

API Web

Il modello API Web è un progetto di ASP.NET Core compilato tramite il modello di applicazione API minimo ASP.NET per semplificare l'hosting del modello come servizio Web. Le API Web offrono la flessibilità di effettuare stime con il modello tramite richieste Web HTTP da diversi client, ad esempio desktop, Web e applicazioni per dispositivi mobili.

Il modello API Web contiene i file seguenti:

  • Program.cs: punto di ingresso dell'applicazione. In questo file l'applicazione configura il servizio usando l'inserimento delle dipendenze, definisce un singolo endpoint PredictionEnginePool e avvia l'applicazione /predict in ascolto delle richieste HTTP in ingresso.

    Come parte della definizione dell'endpoint predict, viene definito anche un gestore. Il gestore usa il servizio PredictionEnginePool per effettuare stime sulle richieste JSON in ingresso che contengono i dati di input del modello. Il gestore restituisce quindi i risultati di tali stime al client.

  • <MODEL-NAME>.mbconfig: The .mbconfig per il modello e il codice di training e utilizzo generato. Questi file vengono copiati dal progetto della libreria di classi in cui è stato originariamente aggiunto il progetto di Machine Learning.

Importante

Il progetto API Web non usa il metodo Predict nel file con estensione consumption.cs. Registra invece PredictionEnginePool come servizio usando l'inserimento delle dipendenze. PredictionEngine non è thread-safe. È anche necessario crearne un'istanza ovunque sia necessaria all'interno dell'applicazione. Man mano che l'applicazione cresce, la gestione di questo processo può rivelarsi difficile.

Per migliorare le prestazioni e la sicurezza dei thread, usare una combinazione di inserimento delle dipendenze e del servizio PredictionEnginePool, che crea un ObjectPool di oggetti PredictionEngine da usare in tutta l'applicazione.

Per altre informazioni sull'inserimento delle dipendenze, vedere Inserimento delle dipendenze in ASP.NET Core.

Nell'unità successiva si userà il modello sottoposto a training per stimare gli errori del computer in un'applicazione console .NET.