我们很高兴地宣布 MLflow 2.0.1 已发布!
MLflow 2.0.1 版本是一个重要的里程碑版本,重点在于简化端到端 MLOps 工作流程的管理,提供新的功能丰富的功能,并扩展 MLflow 提供的生产就绪型 MLOps 能力。请查看MLflow 2.0 博客文章以获取深入介绍!
此版本包含几个重要的与 1.x API 的破坏性更改,以及额外的重大功能和改进。
功能
- [Recipes] MLflow Pipelines 现在更名为 MLflow Recipes - 一个使数据科学家能够快速开发高质量模型并将其部署到生产环境的框架
- [Recipes] 为 MLflow Recipes 添加对分类模型的支持 (#7082, @bbarnes52)
- [UI] 引入在实验 UI 中固定运行的支持 (#7177, @harupy)
- [UI] 简化实验 UI 中的布局,并提供指标、参数和标签的定制显示 (#7177, @harupy)
- [UI] 简化实验 UI 中的运行过滤和排序 (#7177, @harupy)
- [追踪] 更新 `mlflow.pyfunc.get_model_dependencies()` 以下载指定模型的所有引用 requirements 文件 (#6733, @harupy)
- [追踪] 添加对选择 `mlflow.tensorflow.autolog()` 使用的 Keras 模型 `save_format` 的支持 (#7123, @balvisio)
- [模型] 将 `mlflow.evaluate()` 状态设置为 stable,因为它现在是生产就绪型 API
- [模型] 简化使用 `mlflow.evaluate()` 进行模型评估时指定自定义指标和自定义工件的 API (#7142, @harupy)
- [模型] 在 `mlflow.evaluate()` 中正确推断二元分类的正标签 (#7149, @dbczumar)
- [模型] 启用 `mlflow.tensorflow.autolog()` 时,为 `tensorflow` 和 `keras` 模型启用自动签名日志记录 (#6678, @BenWilson2)
- [模型] 在 `mlflow.tensorflow` 中添加对原生 Keras 和 Tensorflow Core 模型支持 (#6530, @WeichenXu123)
- [模型] 添加对定义 `mlflow.xgboost.save/log_model()` 使用的 `model_format` 的支持 (#7068, @AvikantSrivastava)
- [评分] 全面改进模型评分 REST API,引入输入格式指示符并支持多个输出字段 (#6575, @tomasatdatabricks; #7254, @adriangonz)
- [评分] 为模型签名添加对 ragged arrays 的支持 (#7135, @trangevi)
- [Java] 向 Java 客户端添加 `getModelVersion` API (#6955, @wgottschalk)
破坏性更改
以下破坏性更改列表按其在各类别中的重要性排序。
- [Core] 已停止对 Python 3.7 的支持。MLflow 现在需要 Python >=3.8
- [Recipes] `mlflow.pipelines` API 已被 `mlflow.recipes` 替换
- [追踪 / 注册表] 移除 Tracking 和 Model Registry REST API 的 `/preview` 路由 (#6667, @harupy)
- [追踪] 移除 Python、Java、R 和 REST API 中实验、模型和运行的已弃用 `list` API (#6785, #6786, #6787, #6788, #6800, #6868, @dbczumar)
- [追踪] 移除 `Get Experiment` REST API 响应中已弃用 `runs` 响应字段 (#6541, #6524 @dbczumar)
- [追踪] 移除已弃用 `MlflowClient.download_artifacts` API (#6537, @WeichenXu123)
- [追踪] 更改 `MLFLOW_EXPERIMENT_NAME` 环境变量处理行为,以便在创建实验时始终使用该值 (#6674, @BenWilson2)
- [追踪] 更新 `mlflow server` 默认以 `--serve-artifacts` 模式运行 (#6502, @harupy)
- [追踪] 更新 FileStore 后端用于生成 Experiment ID 的方法,以实现线程安全并发 (#7070, @BenWilson2)
- [追踪] 移除 `mlflow.evaluate()` 指标键中的 `dataset_name` 和 `on_data_{name | hash}` 后缀 (#7042, @harupy)
- [模型 / 评分 / 项目] 将模型推理和项目执行的默认环境管理器更改为 `virtualenv` 而非 `conda` (#6459, #6489 @harupy)
- [模型] 将 Keras 模型日志记录 API 移至 `mlflow.tensorflow` flavor,并停止支持 TensorFlow Estimators (#6530, @WeichenXu123)
- [模型] 移除已弃用 `mlflow.sklearn.eval_and_log_metrics()` API,转而使用 `mlflow.evaluate()` API (#6520, @dbczumar)
- [模型] 要求 `mlflow.evaluate()` 模型输入指定为 URI (#6670, @harupy)
- [模型] 停止支持在使用 `mlflow.evaluate()` 时从同一函数返回自定义指标和工件,转而使用 `custom_artifacts` (#7142, @harupy)
- [模型] 扩展 `PyFuncModel` 规范以支持 `conda` 和 `virtualenv` 子字段 (#6684, @harupy)
- [评分] 移除对使用 `Content-Type` 头定义输入格式的支持 (#6575, @tomasatdatabricks; #7254, @adriangonz)
- [评分] 将原生服务 CLI 选项参数中的 `--no-conda` 替换为 `--env-manager='local'` (#6501, @harupy)
- [评分] 移除 `mlflow.sagemaker.deploy()` 和 `mlflow.sagemaker.delete()` 的公共 API,转而使用 MLflow 部署 API,例如 `mlflow deployments -t sagemaker` (#6650, @dbczumar)
- [评分] 在 `mlflow.deployments.predict()` 方法中将输入参数 `df` 重命名为 `inputs` (#6681, @BenWilson2)
- [项目] 在 MLflow Projects 的 `run` CLI 命令中,将 `use_conda` 参数替换为 `env_manager` 参数 (#6654, @harupy)
- [项目] 修改 MLflow Projects docker 镜像构建选项,将 `--skip-image-build` 重命名为 `--build-image`,默认值为 `False` (#7011, @harupy)
- [集成 / Azure] 从 MLflow 中移除已弃用 `mlflow.azureml` 模块,转而使用 `azure-mlflow` 部署插件 (#6691, @BenWilson2)
- [R] 移除 R 客户端与 conda 的集成 (#6638, @harupy)
错误修复
- [Recipes] 修复 profile cards polyfill 的渲染问题 (#7154, @hubertzub-db)
- [追踪] 当 `mlflow.start_run()` 的 `tags` 参数中指定时,正确设置 MLflow Run 名称 (#7228, @Cokral)
- [追踪] 修复如果设置了 `mlflow.runName` 标签导致的 MLflow Run 名称分配冲突问题 (#7138, @harupy)
- [评分] 修复 SageMaker 部署客户端 `predict()` API 中不正确的 payload 构造函数错误 (#7193, @dbczumar)
- [评分] 修复更新 Sagemaker 部署时 `DataCaptureConfig` 信息未保留的问题 (#7281, @harupy)
有关更改的完整列表,请参阅发布变更日志,并在 mlflow.org 上查看最新文档。