CentOS 9 下 MLFlow 官方 Totorial 详解 : (四) 部署模型 Serve

CentOS 9 下 MLFlow 官方 Totorial 详解 : (四) 部署模型 Serve

精选文章moguli202025-05-24 18:35:172A+A-

我们通过 MLflow Models(
https://mlflow.org/docs/latest/models.html)来部署模型。一个 MLflow Model 是一种打包机器学习模型的标准格式,可以被用于多种下游工具,比如实时推理的 REST API 或者批量推理的 Apache Spark 。


示例:离线训练模型发布 (mlflow 2.22.0)


examples/sklearn_elasticnet_wine/train.py 中,这行代码用于保存模型(称为artifact):

mlflow.sklearn.log_model(lr, "model")

模型训练:

python examples/sklearn_elasticnet_wine alpha=0.42

通过调用 mlflow.sklearn.log_model 产生文件,位于类似目录
/home/your_name/mlflow/mlflow/mlruns/0/b53f1fed5fee458bb5e48d7f5df4fea0/artifacts/model。

├── conda.yaml
├── MLmodel
├── model.pkl
├── python_env.yaml
└── requirements.txt
  • MLmodel元数据文件是告诉MLflow如何加载模型。
  • model.pkl文件是训练好的序列化的线性回归模型。

运行Serve命令,可以将模型部署成本地REST服务。

# 需要替换成你自己的目录
 mlflow models serve -m /home/s2402561/mlflow/mlflow/mlruns/0/b53f1fed5fee458bb5e48d7f5df4fea0/artifacts/model -p 1234 --no-conda 

由于记录模型时,没有提供conda.yaml,这里我们使用--no-conda参数,直接使用现有conda环境。若没有提供conda.yaml,mlflow会尝试新建pyenv虚拟环境,本地没有安装pyenv,会报错:

mlflow.exceptions.MlflowException: Could not find the pyenv binary. See https://github.com/pyenv/pyenv#installation for installation instructions.

这里我们可以用 mlflow models serve -m
/home/s2402561/mlflow/mlflow/mlruns/0/b53f1fed5fee458bb5e48d7f5df4fea0/artifacts/model -p 1234 --no-conda

部署好服务之后,可以通过curl命令发送json序列化的pandas DataFrame来测试下。模型服务器接受的数据格式可以参考MLflow deployment tools documentation.

MLflow 2.0 及以上版本要求预测请求的 JSON 数据必须包含以下四个字段之一:

  • instances:适用于非表格数据(如张量、数组)。
  • dataframe_split:适用于表格数据(Pandas DataFrame 拆分格式)。
  • inputs:通用输入字段(部分场景使用)。
  • dataframe_records:表格数据的另一种格式(按记录列表传递)。
curl -X POST -H "Content-Type:application/json" \
--data '{"columns":["alcohol", "chlorides", "citric acid", "density", "fixed acidity", "free sulfur dioxide", "pH", "residual sugar", "sulphates", "total sulfur dioxide", "volatile acidity"],"data":[[12.8, 0.029, 0.48, 0.98, 6.2, 29, 3.33, 1.2, 0.39, 75, 0.66]]}' \
http://127.0.0.1:1234/invocations

服务器会返回类似输出:

{"predictions": [5.814644095729717]}

在发送请求前,确保 MLflow 模型服务器已正确启动并监听指定端口(如 127.0.0.1:1234)。可通过以下命令检查:

curl http://127.0.0.1:1234/health  # 健康检查接口,正常应返回 {"status": "healthy"}
点击这里复制本文地址 以上内容由莫古技术网整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!
qrcode

莫古技术网 © All Rights Reserved.  滇ICP备2024046894号-2