网站首页 > 技术文章 正文
我们通过 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"}
- 上一篇: CentOS各版本介绍及下载
- 下一篇: CENTOS Mysql5.7数据库自动安装脚本
猜你喜欢
- 2025-06-12 CentOS7安装Mongodb 4.x.x
- 2025-06-12 VMware11将至,最新10.0.4或为VMware10绝唱
- 2025-06-12 Step by Step之CentOS7安装Selenium篇
- 2025-06-12 centos6.5系统中,yum源报错,如何解决?
- 2025-06-12 ELK 上手4 安装filebeat并读取ThinkPHP5日志写入logstash
- 2025-06-12 CENTOS Mysql5.7数据库自动安装脚本
- 2025-06-12 CentOS各版本介绍及下载
- 2025-06-12 CentOS7.5系统更新yum源的详细过程
- 2025-06-12 CentOS7系统如何修改主机名
- 2025-06-12 CentOS 版 VSFTPD 全面配置与运维手册
- 06-22Python开发工程师必会的3个设计模式(工厂、单例、适配器)
- 06-22创建型设计模式——工厂模式和抽象工厂模式
- 06-221. 工厂模式详解
- 06-22工厂模式详解
- 06-22设计模式问题:说一说简单工厂模式?
- 06-22深入设计模式:工厂方法
- 06-22C++设计模式——简单工厂模式
- 06-22什么是工厂模式?工厂模式有哪些类型?如何使用它们?
- 最近发表
- 标签列表
-
- axure 注册码 (25)
- exploit db (21)
- mutex_lock (30)
- oracleclient (27)
- think in java (14)
- javascript权威指南 (19)
- nfs (25)
- componentart (17)
- yii框架 (14)
- springbatch (28)
- oracle数据库备份 (25)
- iptables (21)
- 自动化单元测试 (18)
- mvc模式 (13)
- python编写软件 (14)
- dir (26)
- connectionstring属性尚未初始化 (23)
- output (32)
- panel滚动条 (28)
- centos 5 4 (23)
- sql学习 (33)
- dfn (14)
- http error 503 (21)
- pop3服务器 (18)
- 图表组件 (17)