如何创建一个服务于多个模型的PredictEnginePool ?



我的项目是一个在线订餐app,这个app的主要特点是"每日营养摄入监测"。此监视器显示30种营养素的每日摄入量推荐值与用户购物车中食物中实际含有的营养素的差异。

我基于这些营养素创建了30个模型,每个模型都有一个继承自基类的InputData - NutrientInputDataBase,下面是添加糖的InputData类和基类的示例:

public class AddedSugarUlInputData : NutrientInputDataBase
{
[ColumnName(@"AddedSugar-AMDR-UL")]
public float AddedSugar_AMDR_UL { get; set; }
}
public class NutrientInputDataBase
{
[ColumnName(@"Sex")]
public float Sex { get; set; }
[ColumnName(@"Age")]
public float Age { get; set; }
[ColumnName(@"Activity")]
public float Activity { get; set; }
[ColumnName(@"BMI")]
public float BMI { get; set; }
[ColumnName(@"Disease")]
public float Disease { get; set; }
}

摘自官方文件:https://learn.microsoft.com/en-us/dotnet/machine-learning/how-to-guides/serve-model-web-api-ml-net我知道我需要创建一个"predictionengineepool",我已经知道如何在应用程序启动文件中注册predictionengineepool。我的应用逻辑是当用户从购物车中添加或删除商品时,前端将请求api,后端将首先获得用户配置文件(以获取预测的输入数据),然后返回包含所有30种营养预测结果的打包对象。

我的问题是,我应该在启动文件中单独为每个营养模型注册predictionengineepool吗?还是用其他我不知道的有效方法?

你有多种方法可以做到。

  1. 注册每个模型predictionengineepool。FromFileFromUri方法允许您为每个模型指定名称,这样当您在应用程序中使用它们进行预测时,您可以通过名称引用它们。

  2. 将模型保存为blob到数据库中。然后,您可以在应用程序中添加逻辑,以根据您指定的标准加载特定的模型。这样做的缺点是你必须更动态地获取你的模型,而不是有一个predictionengineepool准备好了。

最新更新