部署与MLOps#

本参考列出了 sktime 与部署和 MLOps 解决方案的集成。

目前,sktime 原生支持与 mlflow 的集成。

请参阅 examples/mlflow 获取笔记本教程。

MLflow#

sktime.utils.mlflow_sktime

mlflow_sktime 模块为 sktime 预测器提供了一个 MLflow API。

此模块以下列格式导出 sktime 模型:

sktime (原生) 格式

这是可以重新加载回 sktime 的主要格式,它内部依赖于 pickle 来序列化模型。

mlflow.pyfunc

为基于pyfunc的通用部署工具和批量推理而生成。

模型的 pyfunc 风格支持 sktime 的预测方法 predictpredict_intervalpredict_probapredict_quantilespredict_var

使用加载为 pyfunc 类型的 sktime 模型生成预测的接口需要将外生回归变量作为 Pandas DataFrame 传递给 pyfunc.predict() 方法(如果没有使用外生回归变量,则必须传递一个空的 DataFrame)。预测方法的配置和传递给预测方法的参数值由一个字典定义,该字典将保存为拟合的 sktime 模型实例的属性。如果没有定义预测配置,pyfunc.predict() 将返回 sktime predict 方法的输出。请注意,对于 pyfunc 类型,预测范围 fh 必须传递给 fit 方法。

预测方法和参数值可以通过两种方式定义:如果参数值传递给 pyfunc.predict(),则使用 Dict[str, dict],例如 {"predict_method": {"predict": {}, "predict_interval": {"coverage": [0.1, 0.9]}}}。如果预测方法中有默认参数,则使用 Dict[str, list],例如 {"predict_method": ["predict", "predict_interval"]}``(注意:当包含 ``predict_proba 方法时,必须遵循前一种方法,因为 quantiles 参数必须由用户提供)。如果没有定义预测配置,pyfunc.predict() 将返回 sktime 的 predict() 方法的输出。

get_default_pip_requirements([...])

为 MLflow 模型创建默认的 pip 需求列表。

get_default_conda_env([include_cloudpickle])

返回MLflow模型的默认Conda环境。

save_model(sktime_model, path[, conda_env, ...])

将 sktime 模型保存到本地文件系统上的路径。

log_model(sktime_model, artifact_path[, ...])

将 sktime 模型记录为当前运行的 MLflow 工件。

load_model(model_uri[, dst_path])

从本地文件或运行中加载 sktime 模型。