我正在为一个ML项目开发一个版本跟踪系统,并希望使用MLflow来实现这一点。我的项目使用AWS Sagemaker的DeepAR进行预测
我想做的很简单。我尝试用MLFlow记录Sagemaker DeepAR模型(Sagemaker估计器)。由于它的“mlflow.sagemaker”模块中没有“log_model”函数,所以我尝试使用“mlflow.pyfunc”模块进行日志记录。不幸的是,它没有起作用。如何记录Sagemaker模型并获取MLFlow生成的cloudpickle和yaml文件
我现在的代码:
mlflow.pyfunc.log_model(model)
其中model是sagemaker.estimator.estimator对象,我从代码中得到的误差是
mlflow.exceptions.MlflowException: Either `loader_module` or `python_model` must be specified. A `loader_module` should be a python module. A `python_model` should be a subclass of PythonModel
我知道AWS Sagemaker会记录我的模型,但对我的项目来说,使用MLFlow记录也非常重要
不能使用pyfunc存储任何类型对象
您应该指定一个loader_模块,如下面的示例所示,或者您必须编写实现PythonModel接口的包装器,并提供逻辑来从先前存储的工件反序列化您的模型,如下所述 https://www.mlflow.org/docs/latest/models.html#example-saving-an-xgboost-model-in-mlflow-format
加载程序示例:
我认为PythonModel更适合您,因为mlflow没有用于SageMaker DeepAR模型的内置加载程序
尽管如此,您必须了解如何从工件恢复SageMaker模型,因为我根本不确定这是否可行,因为一些内置SageMaker算法都是黑盒
您可能还对允许您在Sagemaker内运行任何MLFlow项目的容器感兴趣:https://github.com/odahu/sagemaker-mlflow-container
相关问题 更多 >
编程相关推荐