安装与配置 #

安装方式 #

快速安装 #

最简单的安装方式是通过 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