SuperAPI AI 工具集

mlflow

数据与分析

查看项目

更新于 10-21 16:18

技能介绍

MLflow:机器学习生命周期管理平台

用途

当你需要跟踪机器学习实验(参数、指标、产物)、管理带版本与阶段转换的模型注册表、将模型部署到本地或云端平台、通过项目配置复现实验、比较模型版本与性能指标、以团队工作流协作开展机器学习项目,或与任意机器学习框架集成(框架无关)时,可以使用 MLflow。

安装

安装 MLflow:

pip install mlflow

安装带扩展的版本:

pip install mlflow[extras] # 包含 SQLAlchemy、boto3 等

启动 MLflow UI:

mlflow ui

访问地址为 http://localhost:5000

主要能力

  1. 实验与运行:实验是相关运行的逻辑容器,运行是机器学习代码的单次执行(包含参数、指标、产物)。可创建/设置实验,启动运行并记录参数、指标与模型,运行 ID 会自动生成。

  2. 记录参数:支持记录单个参数、多个参数(log_params),以及嵌套参数(以字典形式记录)。

  3. 记录指标:可在训练循环中按 step 记录指标,支持一次记录多个指标(log_metrics),也可记录最终指标。

  4. 记录产物:支持记录文件(log_artifact)、目录(log_artifacts)、文本文件,以及将字典以 JSON 形式记录(log_dict)。

  5. 记录模型:支持 PyTorch、Scikit-learn、Keras/TensorFlow、HuggingFace Transformers 等框架的模型记录。

  6. 自动日志(Autologging):通过 mlflow.autolog() 启用后,训练过程中的指标、参数和模型会自动记录。

  7. 模型注册表:支持版本管理与阶段转换。

  8. 搜索运行:可通过 MlflowClient 以编程方式搜索运行,支持过滤字符串(如 metrics.accuracy > 0.9)和排序。

使用方式

基本跟踪示例:

import mlflow

with mlflow.start_run(): mlflow.log_param("learning_rate", 0.001) mlflow.log_param("batch_size", 32) model = train_model() mlflow.log_metric("train_loss", 0.15) mlflow.log_metric("val_accuracy", 0.92) mlflow.sklearn.log_model(model, "model")

自动日志示例:

import mlflow from sklearn.ensemble import RandomForestClassifier

mlflow.autolog() model = RandomForestClassifier(n_estimators=100, max_depth=5) model.fit(X_train, y_train)

搜索运行示例:

from mlflow.tracking import MlflowClient

client = MlflowClient() experiment_id = client.get_experiment_by_name("my-experiment").experiment_id runs = client.search_runs( experiment_ids=[experiment_id], filter_string="metrics.accuracy > 0.9", order_by=["metrics.accuracy DESC"], max_results=10 )

部署

本地服务模型:

mlflow models serve -m "models:/my-classifier/Production" -p 5001

测试端点:

curl http://127.0.0.1:5001/invocations -H 'Content-Type: application/json' -d '{ "inputs": [[1.0, 2.0, 3.0, 4.0]] }'

部署到云端:

mlflow sagemaker deploy -m "models:/my-classifier/Production" --region-name us-west-2 mlflow azureml deploy -m "models:/my-classifier/Production"

配置

启动带后端存储的跟踪服务器:

mlflow server
--backend-store-uri postgresql://user:password@localhost/mlflow
--default-artifact-root s3://my-bucket/mlflow
--host 0.0.0.0
--port 5000

客户端配置:

import mlflow mlflow.set_tracking_uri("http://localhost:5000")

或使用环境变量:export MLFLOW_TRACKING_URI=http://localhost:5000

适用场景

  • 跟踪机器学习实验的参数、指标与产物
  • 管理模型注册表与版本、阶段转换
  • 将模型部署到本地、云端或 serving 平台
  • 复现实验、比较模型版本与性能
  • 团队协作开展机器学习项目
  • 与任意机器学习框架集成

最佳实践

  • 用实验组织不同任务,避免所有模型放在一个实验中
  • 使用描述性的运行名称
  • 记录全面的元数据(超参数、系统信息、数据信息)
  • 跟踪模型血缘(如引用父运行 ID)
  • 部署时使用模型注册表,而非硬编码运行 ID

限制与注意事项

  • 版本相关细节可能已过时,应以所安装版本的官方文档为准
  • 若指令中的函数、标志或端点在已安装版本中缺失,应查阅该版本文档并告知用户,不要臆造 API
  • 不要公开暴露服务或凭据;在开通云资源前确认成本
  • 涉及花钱、占用共享 GPU 或云配额、触碰个人或患者数据、或不可撤销的操作前应先询问
  • 若输入、标识符或参数不明确,应询问用户或明确说明假设后再运行

资源

文档:https://mlflow.org/docs/latest GitHub:https://github.com/mlflow/mlflow 示例:https://github.com/mlflow/mlflow/tree/master/examples 社区:https://mlflow.org/community