安装与配置 #
安装方式 #
快速安装 #
最简单的安装方式是通过 pip:
bash
pip install mlflow
安装特定版本 #
bash
pip install mlflow==2.10.0
安装额外依赖 #
bash
pip install mlflow[extras]
从源码安装 #
bash
git clone https://github.com/mlflow/mlflow.git
cd mlflow
pip install -e .
系统要求 #
text
┌─────────────────────────────────────────────────────────────┐
│ MLflow 系统要求 │
├─────────────────────────────────────────────────────────────┤
│ │
│ Python 版本: │
│ ├── Python 3.8+ │
│ ├── 推荐 Python 3.10 或 3.11 │
│ └── 不支持 Python 2.x │
│ │
│ 操作系统: │
│ ├── Linux(推荐生产环境) │
│ ├── macOS(开发环境) │
│ └── Windows(支持但有限制) │
│ │
│ 依赖项: │
│ ├── numpy │
│ ├── pandas │
│ ├── scipy │
│ └── Flask(UI 服务) │
│ │
└─────────────────────────────────────────────────────────────┘
验证安装 #
检查版本 #
bash
mlflow --version
Python 中验证 #
python
import mlflow
print(mlflow.__version__)
运行测试 #
python
import mlflow
with mlflow.start_run():
mlflow.log_param("test", "value")
mlflow.log_metric("score", 0.95)
print("MLflow is working correctly!")
MLflow UI 启动 #
本地启动 #
bash
mlflow ui
默认访问地址:http://localhost:5000
指定端口 #
bash
mlflow ui --port 8080
指定存储路径 #
bash
mlflow ui --backend-store-uri sqlite:///mlflow.db
完整启动命令 #
bash
mlflow ui \
--backend-store-uri sqlite:///mlflow.db \
--default-artifact-root ./mlruns \
--host 0.0.0.0 \
--port 5000
存储后端配置 #
Backend Store 配置 #
text
┌─────────────────────────────────────────────────────────────┐
│ Backend Store 类型 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 1. FileStore(文件系统) │
│ ───────────────────────────────────────────────────── │
│ 默认方式,适合单机开发 │
│ 路径:./mlruns 或 file:///path/to/mlruns │
│ │
│ 2. SQLStore(数据库) │
│ ───────────────────────────────────────────────────── │
│ 适合团队协作和生产环境 │
│ │
│ SQLite: │
│ sqlite:///mlflow.db │
│ │
│ PostgreSQL: │
│ postgresql://user:password@host:port/database │
│ │
│ MySQL: │
│ mysql://user:password@host:port/database │
│ │
└─────────────────────────────────────────────────────────────┘
SQLite 配置 #
bash
mlflow ui --backend-store-uri sqlite:///mlflow.db
PostgreSQL 配置 #
bash
export MLFLOW_BACKEND_STORE_URI="postgresql://mlflow:password@localhost:5432/mlflow"
mlflow ui --backend-store-uri $MLFLOW_BACKEND_STORE_URI
MySQL 配置 #
bash
export MLFLOW_BACKEND_STORE_URI="mysql://mlflow:password@localhost:3306/mlflow"
mlflow ui --backend-store-uri $MLFLOW_BACKEND_STORE_URI
Artifact Store 配置 #
本地文件系统 #
python
import mlflow
mlflow.set_tracking_uri("file:///path/to/mlruns")
AWS S3 #
bash
pip install mlflow[boto3]
python
import mlflow
mlflow.set_tracking_uri("s3://my-bucket/mlruns")
配置 AWS 凭证:
bash
export AWS_ACCESS_KEY_ID="your-access-key"
export AWS_SECRET_ACCESS_KEY="your-secret-key"
export AWS_DEFAULT_REGION="us-west-2"
Azure Blob Storage #
bash
pip install mlflow[azure]
python
import mlflow
mlflow.set_tracking_uri("wasbs://container@storageaccount.blob.core.windows.net/mlruns")
配置 Azure 凭证:
bash
export AZURE_STORAGE_CONNECTION_STRING="your-connection-string"
Google Cloud Storage #
bash
pip install mlflow[gcp]
python
import mlflow
mlflow.set_tracking_uri("gs://my-bucket/mlruns")
配置 GCP 凭证:
bash
export GOOGLE_APPLICATION_CREDENTIALS="/path/to/service-account.json"
MLflow Tracking Server #
简单部署 #
bash
mlflow server \
--backend-store-uri sqlite:///mlflow.db \
--default-artifact-root ./mlruns \
--host 0.0.0.0 \
--port 5000
生产环境部署 #
bash
mlflow server \
--backend-store-uri postgresql://user:pass@host:5432/mlflow \
--default-artifact-root s3://my-bucket/mlruns \
--host 0.0.0.0 \
--port 5000 \
--workers 4 \
--gunicorn-opts "--timeout 120"
配置参数说明 #
text
┌─────────────────────────────────────────────────────────────┐
│ MLflow Server 参数 │
├─────────────────────────────────────────────────────────────┤
│ │
│ --backend-store-uri │
│ ───────────────────────────────────────────────────────── │
│ 元数据存储位置 │
│ 默认:./mlruns │
│ │
│ --default-artifact-root │
│ ───────────────────────────────────────────────────────── │
│ 工件存储根目录 │
│ 默认:./mlruns │
│ │
│ --host │
│ ───────────────────────────────────────────────────────── │
│ 监听地址 │
│ 默认:127.0.0.1(仅本地) │
│ 生产环境建议:0.0.0.0 │
│ │
│ --port │
│ ───────────────────────────────────────────────────────── │
│ 监听端口 │
│ 默认:5000 │
│ │
│ --workers │
│ ───────────────────────────────────────────────────────── │
│ 工作进程数 │
│ 建议:CPU 核心数 * 2 + 1 │
│ │
│ --gunicorn-opts │
│ ───────────────────────────────────────────────────────── │
│ Gunicorn 额外参数 │
│ │
└─────────────────────────────────────────────────────────────┘
客户端连接配置 #
Python 客户端 #
python
import mlflow
mlflow.set_tracking_uri("http://localhost:5000")
环境变量配置 #
bash
export MLFLOW_TRACKING_URI="http://localhost:5000"
python
import mlflow
print(mlflow.get_tracking_uri())
认证配置 #
python
import mlflow
mlflow.set_tracking_uri("http://localhost:5000")
os.environ["MLFLOW_TRACKING_USERNAME"] = "user"
os.environ["MLFLOW_TRACKING_PASSWORD"] = "password"
Docker 部署 #
Dockerfile 示例 #
dockerfile
FROM python:3.10-slim
WORKDIR /app
RUN pip install mlflow psycopg2-binary boto3
EXPOSE 5000
CMD ["mlflow", "server", \
"--backend-store-uri", "postgresql://user:pass@host:5432/mlflow", \
"--default-artifact-root", "s3://my-bucket/mlruns", \
"--host", "0.0.0.0", \
"--port", "5000"]
Docker Compose 示例 #
yaml
version: '3.8'
services:
postgres:
image: postgres:14
environment:
POSTGRES_USER: mlflow
POSTGRES_PASSWORD: mlflow
POSTGRES_DB: mlflow
volumes:
- postgres_data:/var/lib/postgresql/data
ports:
- "5432:5432"
mlflow:
image: mlflow-server:latest
build: .
ports:
- "5000:5000"
environment:
- AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID}
- AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY}
depends_on:
- postgres
volumes:
postgres_data:
启动命令 #
bash
docker-compose up -d
Kubernetes 部署 #
Deployment 配置 #
yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: mlflow-server
spec:
replicas: 2
selector:
matchLabels:
app: mlflow
template:
metadata:
labels:
app: mlflow
spec:
containers:
- name: mlflow
image: mlflow-server:latest
ports:
- containerPort: 5000
env:
- name: MLFLOW_BACKEND_STORE_URI
value: "postgresql://user:pass@postgres:5432/mlflow"
- name: MLFLOW_DEFAULT_ARTIFACT_ROOT
value: "s3://my-bucket/mlruns"
resources:
requests:
memory: "512Mi"
cpu: "500m"
limits:
memory: "1Gi"
cpu: "1000m"
---
apiVersion: v1
kind: Service
metadata:
name: mlflow-service
spec:
selector:
app: mlflow
ports:
- port: 5000
targetPort: 5000
type: LoadBalancer
配置最佳实践 #
开发环境 #
text
开发环境配置:
├── 使用本地文件存储
├── SQLite 数据库
├── 单进程运行
└── 无需认证
测试环境 #
text
测试环境配置:
├── PostgreSQL 数据库
├── S3/MinIO 工件存储
├── 多进程运行
└── 基础认证
生产环境 #
text
生产环境配置:
├── 高可用 PostgreSQL 集群
├── 分布式工件存储(S3/Azure/GCS)
├── 多节点负载均衡
├── 完整认证授权
├── HTTPS 加密
├── 定期备份
└── 监控告警
常见问题 #
1. 端口被占用 #
bash
lsof -i :5000
kill -9 <PID>
2. 权限问题 #
bash
chmod -R 755 ./mlruns
3. 数据库连接失败 #
bash
检查连接字符串格式
确认数据库服务运行中
检查网络连接
验证用户名密码
4. S3 连接问题 #
bash
确认 AWS 凭证正确
检查 S3 bucket 权限
确认区域设置正确
下一步 #
现在你已经完成了 MLflow 的安装和配置,接下来学习 快速开始,开始你的第一个 MLflow 实验!
最后更新:2026-04-04