SuperAPI AI 工具集

mlflow

数据与分析

查看项目

更新于 10-15 10:24

技能介绍

MLflow 是一个机器学习生命周期管理平台,定位为框架无关(framework-agnostic)的工具,用于跟踪 ML 实验、管理模型注册表、部署模型到生产环境以及复现实验。资料显示其用户超过 20,000 个组织,GitHub 星标 23k+,采用 Apache 2.0 许可证。

一、用途与适用场景 当需要跟踪带参数、指标和产物的 ML 实验;管理带版本与阶段流转的模型注册表;将模型部署到本地、云端或服务化平台;通过项目配置复现实验;比较模型版本与性能指标;以团队工作流协作 ML 项目;或与任意 ML 框架集成时,可使用 MLflow。

二、安装与启动 安装命令:pip install mlflow;带扩展安装:pip install mlflow[extras](包含 SQLAlchemy、boto3 等)。启动界面:mlflow ui,默认访问地址 http://localhost:5000。

三、核心概念

  1. 实验(Experiment)与运行(Run):实验是相关运行的逻辑容器,运行是 ML 代码的单次执行,包含参数、指标和产物。可通过 mlflow.set_experiment 设置实验,通过 mlflow.start_run 启动运行,运行 ID 自动生成。
  2. 记录参数:支持单个参数 mlflow.log_param、多个参数 mlflow.log_params,以及嵌套配置(以字典形式记录)。
  3. 记录指标:支持按 step 记录训练/验证指标,如 mlflow.log_metric("train_loss", train_loss, step=epoch),也支持一次记录多个指标 mlflow.log_metrics。
  4. 记录产物:可记录文件(log_artifact)、目录(log_artifacts)、文本文件,以及以 JSON 形式记录字典(log_dict)。
  5. 记录模型:支持 PyTorch(mlflow.pytorch.log_model)、Scikit-learn(mlflow.sklearn.log_model)、Keras/TensorFlow(mlflow.keras.log_model)、HuggingFace Transformers(mlflow.transformers.log_model)等。

四、自动日志(Autologging) 可对受支持的框架自动记录指标、参数和模型。启用方式包括全局 mlflow.autolog(),或针对特定框架如 mlflow.sklearn.autolog()、mlflow.pytorch.autolog()、mlflow.keras.autolog()、mlflow.xgboost.autolog()。资料给出了 Scikit-learn 与 PyTorch Lightning 的自动日志示例,说明会自动记录准确率、f1_score、训练时长、超参数、训练指标与最佳模型检查点等。

五、模型注册表(Model Registry) 支持模型生命周期管理与版本、阶段流转。可在记录模型时通过 registered_model_name 立即注册,或之后用 mlflow.register_model 注册。阶段流转为 None → Staging → Production → Archived,通过 MlflowClient 的 transition_model_version_stage 完成,并可用 archive_existing_versions 归档旧的生产版本。加载模型支持按阶段(models:/my-classifier/Production、Staging)或按版本号(models:/my-classifier/3)加载。还支持列出所有版本、按阶段获取最新版本、获取版本详情,以及添加描述和标签(update_model_version、set_model_version_tag)。

六、搜索运行 可通过 MlflowClient 的 search_runs 按过滤条件(如 metrics.accuracy > 0.9、params.model = 'ResNet50'、tags.dataset = 'ImageNet')和排序(如 metrics.accuracy DESC)查找运行,并限制返回数量。

七、集成示例 资料提供了 PyTorch、HuggingFace Transformers、XGBoost 的集成示例,展示如何结合自动日志、手动记录指标与将模型注册到注册表。

八、最佳实践 包括:用实验组织不同任务(避免所有模型放在一个实验);使用描述性运行名称;记录全面的元数据(超参数、系统信息、数据信息、git commit);跟踪模型血缘(用标签引用父运行);部署时使用模型注册表而非硬编码运行 ID。

九、部署 本地服务:mlflow models serve -m "models:/my-classifier/Production" -p 5001,或从运行服务 mlflow models serve -m "runs:/<RUN_ID>/model" -p 5001,并通过 curl 调用 /invocations 端点。云端部署:支持 AWS SageMaker(mlflow sagemaker deploy)与 Azure ML(mlflow azureml deploy)。

十、配置 跟踪服务器:mlflow server 可指定 --backend-store-uri(如 PostgreSQL)、--default-artifact-root(如 S3)、--host 与 --port。客户端可通过 mlflow.set_tracking_uri 或环境变量 MLFLOW_TRACKING_URI 配置。

十一、资源与限制 官方文档:https://mlflow.org/docs/latest;GitHub:https://github.com/mlflow/mlflow;示例:https://github.com/mlflow/mlflow/tree/master/examples;社区:https://mlflow.org/community。资料还提及参考文档 references/tracking.md、references/model-registry.md、references/deployment.md。关于具体收费、价格与平台支持范围,资料未提供,暂未提供相关信息。