[ PROMPT_NODE_22678 ]
Mlops Mlflow 部署
[ SKILL_DOCUMENTATION ]
# 部署指南
将 MLflow 模型部署到生产环境的完整指南。
## 目录
- 部署选项
- 本地服务
- REST API 服务
- Docker 部署
- 云端部署
- 批量推理
- 生产模式
- 监控
## 部署选项
MLflow 支持多种部署目标:
| 目标 | 使用场景 | 复杂度 |
|--------|----------|------------|
| **本地服务器** | 开发、测试 | 低 |
| **REST API** | 生产服务 | 中 |
| **Docker** | 容器化部署 | 中 |
| **AWS SageMaker** | AWS 托管部署 | 高 |
| **Azure ML** | Azure 托管部署 | 高 |
| **Kubernetes** | 可扩展编排 | 高 |
| **批量** | 离线预测 | 低 |
## 本地服务
### 本地部署模型
bash
# 服务已注册模型
mlflow models serve -m "models:/product-classifier/Production" -p 5001
# 从运行中服务
mlflow models serve -m "runs:/abc123/model" -p 5001
# 使用自定义主机服务
mlflow models serve -m "models:/my-model/Production" -h 0.0.0.0 -p 8080
# 使用工作进程服务(用于可扩展性)
mlflow models serve -m "models:/my-model/Production" -p 5001 --workers 4
**输出:**
Serving model on http://127.0.0.1:5001
### 测试本地服务器
bash
# 单次预测
curl http://127.0.0.1:5001/invocations
-H 'Content-Type: application/json'
-d '{
"inputs": [[1.0, 2.0, 3.0, 4.0]]
}'
# 批量预测
curl http://127.0.0.1:5001/invocations
-H 'Content-Type: application/json'
-d '{
"inputs": [
[1.0, 2.0, 3.0, 4.0],
[5.0, 6.0, 7.0, 8.0]
]
}'
# CSV 输入
curl http://127.0.0.1:5001/invocations
-H 'Content-Type: text/csv'
--data-binary @data.csv
### Python 客户端
python
import requests
import json
url = "http://127.0.0.1:5001/invocations"
data = {
"inputs": [[1.0, 2.0, 3.0, 4.0]]
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=data, headers=headers)
predictions = response.json()
print(predictions)
## REST API 服务
### 构建自定义服务 API
python
from flask import Flask, request, jsonify
import mlflow.pyfunc
app = Flask(__name__)
# 启动时加载模型
model = mlflow.pyfunc.load_model("models:/product-classifier/Production")
@app.route('/predict', methods=['POST'])
def predict():
"""预测端点。"""
data = request.get_json()
inputs = data.get('inputs')
# 进行预测
predictions = model.predict(inputs