Události
Vytváření inteligentních aplikací
17. 3. 23 - 21. 3. 23
Připojte se k řadě meetupů a vytvořte škálovatelná řešení AI založená na skutečných případech použití s kolegy vývojáři a odborníky.
ZaregistrovatTento prohlížeč se už nepodporuje.
Upgradujte na Microsoft Edge, abyste mohli využívat nejnovější funkce, aktualizace zabezpečení a technickou podporu.
Naučte se ukládat a načítat natrénované modely ve vaší aplikaci.
V průběhu procesu sestavování modelu se model nachází v paměti a je přístupný v průběhu životního cyklu aplikace. Jakmile se ale aplikace přestane spouštět, pokud se model neuloží místně nebo vzdáleně, nebude už přístupný. Modely se obvykle používají v určitém okamžiku po trénování v jiných aplikacích pro odvozování nebo opětovné trénování. Proto je důležité model uložit. Při použití kanálů přípravy dat a trénování modelů můžete modely ukládat a načítat pomocí kroků popsaných v následujících částech tohoto dokumentu. I když tento vzorek používá lineární regresní model, stejný proces se vztahuje na jiné algoritmy ML.NET.
HousingData[] housingData = new HousingData[]
{
new HousingData
{
Size = 600f,
HistoricalPrices = new float[] { 100000f, 125000f, 122000f },
CurrentPrice = 170000f
},
new HousingData
{
Size = 1000f,
HistoricalPrices = new float[] { 200000f, 250000f, 230000f },
CurrentPrice = 225000f
},
new HousingData
{
Size = 1000f,
HistoricalPrices = new float[] { 126000f, 130000f, 200000f },
CurrentPrice = 195000f
}
};
// Create MLContext
MLContext mlContext = new MLContext();
// Load Data
IDataView data = mlContext.Data.LoadFromEnumerable<HousingData>(housingData);
// Define data preparation estimator
EstimatorChain<RegressionPredictionTransformer<LinearRegressionModelParameters>> pipelineEstimator =
mlContext.Transforms.Concatenate("Features", new string[] { "Size", "HistoricalPrices" })
.Append(mlContext.Transforms.NormalizeMinMax("Features"))
.Append(mlContext.Regression.Trainers.Sdca());
// Train model
ITransformer trainedModel = pipelineEstimator.Fit(data);
// Save model
mlContext.Model.Save(trainedModel, data.Schema, "model.zip");
Vzhledem k tomu, že většina modelů a kanálů přípravy dat dědí ze stejné sady tříd, podpisy metody ukládání a načítání pro tyto komponenty jsou stejné. V závislosti na vašem případu použití můžete kanál přípravy dat a model zkombinovat do jednoho, který by vypíše EstimatorChain
jeden ITransformer
nebo oddělený, a tím pro každý z nich vytvořil samostatný ITransformer
kanál.
Při ukládání modelu potřebujete dvě věci:
ITransformer
.ITransformer
Očekávaný DataViewSchema
vstup.Po trénování modelu použijte metodu Save
k uložení natrénovaného modelu do souboru volaného model.zip
pomocí DataViewSchema
vstupních dat.
// Save Trained Model
mlContext.Model.Save(trainedModel, data.Schema, "model.zip");
K místnímu uložení verze modelu ONNX budete potřebovat nainstalovaný balíček NuGet Microsoft.ML.OnnxConverter .
S nainstalovaným balíčkem OnnxConverter
ho můžeme použít k uložení modelu do formátu ONNX. To vyžaduje Stream
objekt, který můžeme poskytnout jako FileStream
použití File.Create
metody. Metoda File.Create
přebírá řetězec jako parametr, který bude cestou modelu ONNX.
using FileStream stream = File.Create("./onnx_model.onnx");
Pomocí vytvořeného datového proudu můžeme volat metodu ConvertToOnnx
a dát jí natrénovaný model, data použitá k trénování modelu a datový proud. Ne všechny trenéry a transformátory se ale dají exportovat do ONNX. Úplný seznam najdete v průvodcích transformací a návody k volbě ML.NET algoritmu .
mlContext.Model.ConvertToOnnx(trainedModel, data, stream);
Modely uložené místně lze použít v jiných procesech nebo aplikacích, jako je ASP.NET Core
a Serverless Web Applications
. Další informace najdete v článku Použití ML.NET ve webovém rozhraní API a nasazení ML.NET bezserverové webové aplikace .
V samostatné aplikaci nebo procesu použijte Load
metodu spolu s cestou k souboru a získejte trénovaný model do vaší aplikace.
//Define DataViewSchema for data preparation pipeline and trained model
DataViewSchema modelSchema;
// Load trained model
ITransformer trainedModel = mlContext.Model.Load("model.zip", out modelSchema);
K načtení v modelu ONNX pro předpovědi budete potřebovat balíček NuGet Microsoft.ML.OnnxTransformer .
S nainstalovaným OnnxTransformer
balíčkem můžete pomocí ApplyOnnxModel
metody načíst existující model ONNX. Povinný parametr je řetězec, který je cestou místního modelu ONNX.
OnnxScoringEstimator estimator = mlContext.Transforms.ApplyOnnxModel("./onnx_model.onnx");
Metoda ApplyOnnxModel
vrátí OnnxScoringEstimator
objekt. Nejprve musíme načíst nová data.
HousingData[] newHousingData = new HousingData[]
{
new()
{
Size = 1000f,
HistoricalPrices = new[] { 300_000f, 350_000f, 450_000f },
CurrentPrice = 550_00f
}
};
S novými daty je můžeme načíst do IDataView
metody.LoadFromEnumerable
IDataView newHousingDataView = mlContext.Data.LoadFromEnumerable(newHousingData);
Teď můžeme použít nové IDataView
, abychom se vešli na nová data.
estimator.Fit(newHousingDataView);
Jakmile použijete metodu Fit na odhadátoru z ApplyOnnxModel
, pak ji můžete uložit jako nový model pomocí metody Save zmíněné uložit model místně oddíl.
K načtení kanálů přípravy dat a modelů uložených ve vzdáleném umístění do aplikace použijte Stream
místo cesty k souboru v Load
metodě.
// Create MLContext
MLContext mlContext = new MLContext();
// Define DataViewSchema and ITransformers
DataViewSchema modelSchema;
ITransformer trainedModel;
// Load data prep pipeline and trained model
using (HttpClient client = new HttpClient())
{
Stream modelFile = await client.GetStreamAsync("<YOUR-REMOTE-FILE-LOCATION>");
trainedModel = mlContext.Model.Load(modelFile, out modelSchema);
}
Poznámka
Práce s samostatnými kanály přípravy dat a trénování modelů je volitelná. Oddělení kanálů usnadňuje kontrolu naučených parametrů modelu. U předpovědí je jednodušší uložit a načíst jeden kanál, který zahrnuje operace přípravy dat a trénování modelu.
Při práci s samostatnými kanály a modely přípravy dat platí stejný proces jako u jednotlivých kanálů; kromě toho, že oba kanály musí být uloženy a načteny současně.
Vzhledem k samostatné přípravě dat a trénovacím kanálům modelu:
// Define data preparation estimator
IEstimator<ITransformer> dataPrepEstimator =
mlContext.Transforms.Concatenate("Features", new string[] { "Size", "HistoricalPrices" })
.Append(mlContext.Transforms.NormalizeMinMax("Features"));
// Create data preparation transformer
ITransformer dataPrepTransformer = dataPrepEstimator.Fit(data);
// Define StochasticDualCoordinateAscent regression algorithm estimator
var sdcaEstimator = mlContext.Regression.Trainers.Sdca();
// Pre-process data using data prep operations
IDataView transformedData = dataPrepTransformer.Transform(data);
// Train regression model
RegressionPredictionTransformer<LinearRegressionModelParameters> trainedModel = sdcaEstimator.Fit(transformedData);
Pokud chcete uložit kanál přípravy dat i natrénovaný model, použijte následující příkazy:
// Save Data Prep transformer
mlContext.Model.Save(dataPrepTransformer, data.Schema, "data_preparation_pipeline.zip");
// Save Trained Model
mlContext.Model.Save(trainedModel, transformedData.Schema, "model.zip");
V samostatném procesu nebo aplikaci načtěte kanál přípravy dat a natrénovaný model současně následujícím způsobem:
// Create MLContext
MLContext mlContext = new MLContext();
// Define data preparation and trained model schemas
DataViewSchema dataPrepPipelineSchema, modelSchema;
// Load data preparation pipeline and trained model
ITransformer dataPrepPipeline = mlContext.Model.Load("data_preparation_pipeline.zip",out dataPrepPipelineSchema);
ITransformer trainedModel = mlContext.Model.Load("model.zip", out modelSchema);
Zpětná vazba k produktu .NET
.NET je open source projekt. Vyberte odkaz pro poskytnutí zpětné vazby:
Události
Vytváření inteligentních aplikací
17. 3. 23 - 21. 3. 23
Připojte se k řadě meetupů a vytvořte škálovatelná řešení AI založená na skutečných případech použití s kolegy vývojáři a odborníky.
ZaregistrovatŠkolení
Modul
V tomto modulu se dozvíte, jak pomocí nástroje ML.NET Model Builder trénovat a využívat model strojového učení pro prediktivní údržbu.
Certifikace
Microsoft Certified: Azure Data Scientist Associate (certifikace) - Certifications
Správa příjmu a přípravy dat, trénování a nasazení modelů a monitorování řešení strojového učení pomocí Pythonu, Azure Machine Learning a MLflow