跳到主要内容

·阅读时长 1 分钟
MLflow maintainers

我们很高兴地宣布 MLflow 2.2.2 已发布!

MLflow 2.2.2 是一个补丁版本,包含以下错误修复

  • [模型注册表] 允许在指定 `run_id` 的运行工件目录中将 `source` 用作本地路径 (#7993, @harupy)
  • [模型注册表] 修复了 Windows UNC 路径被误认为是本地路径的错误 (#7988, @WeichenXu123)
  • [模型注册表] 禁止在 `FileStore.get_registered_model` 中将 `name` 用作文件路径 (#7965, @harupy)

有关更改的完整列表,请参阅发布变更日志,并在 mlflow.org 上查看最新文档。

·阅读时长 1 分钟
MLflow maintainers

我们很高兴地宣布 MLflow 2.2.1 已发布!

MLflow 2.2.1 是一个补丁版本,包含以下错误修复

  • [模型注册表] 修复了调用 `MlflowClient.search_model_versions()` 时默认请求过多结果的错误 (#7935, @dbczumar)

有关更改的完整列表,请参阅发布变更日志,并在 mlflow.org 上查看最新文档。

·阅读时长 4 分钟
MLflow maintainers

我们很高兴地宣布 MLflow 2.2.0 已发布!

MLflow 2.2.0 包含几个主要功能和改进

功能

错误修复

  • [Recipes] 修复自定义数据集源的 ingest 步骤中的数据集格式验证问题 (#7638, @sunishsheth2009)
  • [Recipes] 修复训练期间识别表现最差示例的错误 (#7658, @sunishsheth2009)
  • [Recipes] 确保调用 `inspect()` 时 Recipe 图的一致呈现 (#7852, @sunishsheth2009)
  • [Recipes] 在 transform 步骤中正确遵循 `positive_class` 配置 (#7626, @sunishsheth2009)
  • [Recipes] 使日志记录的指标名称与 `mlflow.evaluate()` 一致 (#7613, @sunishsheth2009)
  • [Recipes] 向日志记录的 MLmodel 文件添加 `run_id` 和 `artifact_path` 键 (#7651, @sunishsheth2009)
  • [UI] 修复 UI 中实验名称、模型名称和标签键验证的错误 (#7818, @subramaniam02)
  • [追踪] 创建实验时将工件位置解析为绝对路径 (#7670, @bali0019)
  • [追踪] 从 Spark datasource 自动日志记录中排除 Delta 检查点 (#7902, @harupy)
  • [追踪] 当指标不存在时,GetMetricHistory 始终返回空列表 (#7589, @bali0019; #7659, @harupy)
  • [工件] 修复对 Windows UNC 格式路径进行工件操作的支持 (#7750, @bali0019)
  • [工件] 修复 HDFS 工件列表中的错误 (#7581, @pwnywiz)
  • [模型注册表] 禁止在 `mlflow server` 中创建带有本地文件系统源的模型版本 (#7908, @harupy)
  • [模型注册表] 修复 FileStore 中已删除模型版本的处理 (#7716, @harupy)
  • [模型注册表] 正确初始化独立于 MLflow Tracking 的模型注册表 SQL 表 (#7704, @harupy)
  • [模型] 在使用 pyfunc 进行推理时,正确地将 PyTorch 模型输出从 GPU 移到 CPU (#7885, @ankit-db)
  • [构建] 修复与使用 `PYTHONOPTIMIZE=2` 编译的 Python 安装的兼容性问题 (#7791, @dbczumar)
  • [构建] 修复与即将发布的 pandas 2.0 版本的兼容性问题 (#7899, @harupy; #7910, @dbczumar)

文档更新

  • [文档] 添加使用 MLflow 保存和加载 Spark MLlib 模型的示例 (#7706, @dipanjank)
  • [文档] 添加 `mlflow.lightgbm` API 的使用示例 (#7565, @canerturkseven)
  • [文档] 添加使用 `sktime` 创建自定义模型 flavor 的示例 (#7624, @benjaminbluhm)
  • [文档] 澄清 `mlflow.evaluate()` 中 `precision_recall_auc` 指标的计算方式 (#7701, @BenWilson2)
  • [文档] 移除过时的示例链接 (#7587, @asloan7)

有关更改的完整列表,请参阅发布变更日志,并在 mlflow.org 上查看最新文档。

·阅读时长 1 分钟
MLflow maintainers

我们很高兴地宣布 MLflow 2.1.1 已发布!

MLflow 2.1.1 是一个补丁版本,包含以下错误修复

  • [评分] 修复了具有 `ColSpec` 输入 schema 的模型上 `mlflow.pyfunc.spark_udf()` 的类型转换错误,并使 `PyFuncModel.predict` 支持包含 `numpy.ndarray` 类型元素的 DataFrame (#7592 @WeichenXu123)
  • [评分] 使 `mlflow.pyfunc.scoring_server.client.ScoringServerClient` 支持包含 `numpy.ndarray` 类型元素的输入 DataFrame (#7594 @WeichenXu123)
  • [追踪] 确保 MLflow 延迟导入 ML 包 (#7597, @harupy)

有关更改的完整列表,请参阅发布变更日志,并在 mlflow.org 上查看最新文档。

·阅读时长 3 分钟
MLflow maintainers

我们很高兴地宣布 MLflow 2.1.0 已发布!

MLflow 2.1.0 包含几个主要功能和改进

功能

  • [Recipes] 引入对多类别分类的支持 (#7458, @mshtelma)
  • [Recipes] 扩展分类模型的 pyfunc 表示,使其除了标签外还能输出分数 (#7474, @sunishsheth2009)
  • [UI] 在运行页面添加用户 ID 和生命周期阶段的快速搜索链接 (#7462, @jaeday)
  • [追踪] 对 GetMetricHistory API 进行分页处理 (#7523, #7415, @BenWilson2)
  • [追踪] 为运行搜索添加与 UI 列名对应的运行名称和开始时间的别名 (#7492, @apurva-koti)
  • [追踪] 为 `mlflow server` 添加 `/version` 端点,用于查询服务器的 MLflow 版本 (#7273, @joncarter1)
  • [模型注册表] 为模型注册表添加 FileStore 支持 (#6605, @serena-ruan)
  • [模型注册表] 引入 `mlflow.search_registered_models()` 流畅 API (#7428, @TSienki)
  • [模型注册表 / Java] 为 Java 客户端添加 `getRegisteredModel()` 方法 (#6602) (#7511, @drod331)
  • [模型注册表 / R] 为 R 客户端添加 `mlflow_set_model_version_tag()` 方法 (#7401, @leeweijie)
  • [模型] 为 MLmodel 规范和 `log_model()` 方法引入 `metadata` 字段 (#7237, @jdonzallaz)
  • [模型] 扩展 `Model.load()` 以支持从远程位置加载 MLmodel 规范 (#7517, @dbczumar)
  • [模型] 在模型的 `requirements.txt` 和 `conda.yaml` 文件中锁定 MLflow 的主版本 (#7364, @BenWilson2)
  • [评分] 扩展 `mlflow.pyfunc.spark_udf()` 以支持 StructType 结果 (#7527, @WeichenXu123)
  • [评分] 扩展 TensorFlow 和 Keras 模型以支持使用 `mlflow.pyfunc.spark_udf()` 进行多维输入 (#7531, #7291, @WeichenXu123)
  • [评分] 支持在将模型部署到 SageMaker 时指定部署环境变量和标签 (#7433, @jhallard)

错误修复

  • [Recipes] 修复了阻止在模型调优期间使用自定义 `early_stop` 函数的错误 (#7538, @sunishsheth2009)
  • [Recipes] 修复了数据摄取期间用于创建 Spark 会话的逻辑中的错误 (#7307, @WeichenXu123)
  • [追踪] 使 `mlflow.autolog()` 生成的指标名称与 `mlflow.evaluate()` 一致 (#7418, @wenfeiy-db)
  • [追踪] 修复了导致为 XGBoost 和 LightGBM 模型记录嵌套、冗余信息的自动日志记录错误 (#7404, @WeichenXu123)
  • [追踪] 正确地将 SQLAlchemy OperationalErrors 分类为可重试的 HTTP 错误 (#7240, @barrywhart)
  • [工件] 修复在使用 FTP 工件存储时,正确处理凭据中的特殊字符的问题 (#7479, @HCTsai)
  • [模型] 解决了阻止在 Windows 上保存 MLeap 模型的问题 (#6966, @dbczumar)
  • [评分] 修复了使用 `mlflow.pyfunc.spark_udf()` 进行模型评分时,NFS 遇到的权限问题 (#7427, @WeichenXu123)

文档更新

  • [文档] 在运行搜索文档页面添加更多示例 (#7487, @apurva-koti)
  • [文档] 添加社区开发的模型 flavors 的文档 (#7425, @mmerce)
  • [文档] 添加日志记录和评分 ONNX 模型的示例 (#7398, @Rusteam)
  • [文档] 修复模型评分 REST API 示例中 `dataframe_split` 格式输入的一个拼写错误 (#7540, @zhouyangyu)
  • [文档] 修复模型评分 REST API 示例中 `dataframe_records` 格式输入的一个拼写错误 (#7361, @dbczumar)

有关更改的完整列表,请参阅发布变更日志,并在 mlflow.org 上查看最新文档。

·阅读时长 5 分钟
MLflow maintainers

我们很高兴地宣布 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 上查看最新文档。

·阅读时长 3 分钟
MLflow maintainers

我们很高兴地宣布 MLflow 1.30.0 已发布!

MLflow 1.30.0 包含几个主要功能和改进

功能

  • [Pipelines] 为 MLflow Pipelines 引入超参数调优支持 (#6859, @prithvikannan)
  • [Pipelines] 引入支持将预测异常值与训练数据集进行比较的功能 (#6991, @jinzhang21)
  • [Pipelines] 引入支持记录所有训练参数以实现可重现性的功能 (#7026, #7094, @prithvikannan)
  • [Pipelines] 在 ingest 步骤中添加对将 `Delta` 表作为数据源的支持 (#7010, @sunishsheth2009)
  • [Pipelines] 添加了扩展的数据画像支持,最多可达 10,000 列 (#7035, @prithvikanna)
  • [Pipelines] 使用 FLAML 在 MLflow Pipelines 中添加对 AutoML 的支持 (#6959, @mshtelma)
  • [Pipelines] 通过允许未指定配置来添加对简化 transform 步骤执行的支持 (#6909, @apurva-koti)
  • [Pipelines] 在 transform 步骤卡中引入数据预览选项卡 (#7033, @prithvikannan)
  • [追踪] 为 `create_run`, `get_run` 和 `update_run` API 引入 `run_name` 属性 (#6782, #6798 @apurva-koti)
  • [追踪] 为 `search_experiments` API 添加按 `creation_time` 和 `last_update_time` 搜索的支持 (#6979, @harupy)
  • [追踪] 为 `search_runs` API 添加搜索项 `run_id IN` 和 `run ID NOT IN` 的支持 (#6945, @harupy)
  • [追踪] 为 `search_runs` API 添加按 `user_id` 和 `end_time` 搜索的支持 (#6881, #6880 @subramaniam02)
  • [追踪] 为 `search_runs` API 添加按 `run_name` 和 `run_id` 搜索的支持 (#6899, @harupy; #6952, @alexacole)
  • [追踪] 添加对运行 `name` 属性和 `mlflow.runName` 标签同步的支持 (#6971, @BenWilson2)
  • [追踪] 添加对使用 AWSSigv4 和 AWS IAM 签名追踪服务器请求的支持 (#7044, @pdifranc)
  • [追踪] 引入 `update_run()` API,用于修改现有运行的 `status` 和 `name` 属性 (#7013, @gabrielfu)
  • [追踪] 在 `mlflow gc` cli API 中添加对实验删除的支持 (#6977, @shaikmoeed)
  • [模型] 添加对 `evaluate()` API 中环境恢复的支持 (#6728, @jerrylian-db)
  • [模型] 移除 `evaluate()` API 中对二元分类标签的限制 (#7077, @dbczumar)
  • [评分] 为 `mlflow.pyfunc.spark_udf()` 添加对 `BooleanType` 的支持 (#6913, @BenWilson2)
  • [SQLAlchemy] 为 `SqlAlchemyStore` 添加可配置的 `Pool` 类选项支持 (#6883, @mingyu89)

错误修复

  • [Pipelines] 使 Pipeline 子进程命令能够在不存在的情况下创建新的 `SparkSession` (#6846, @prithvikannan)
  • [Pipelines] 修复 Step Card 数据配置文件中 `bool` 列类型的渲染问题 (#6907, @sunishsheth2009)
  • [Pipelines] 如果缺少必需的 step 文件,则添加验证和异常处理 (#7067, @mingyu89)
  • [Pipelines] 更改 step 配置验证,使其仅在 step 运行时执行期间进行 (#6967, @prithvikannan)
  • [追踪] 修复在 `mlflow.pyspark.ml.autolog()` 中推断模型 schema 时的无限递归错误 (#6831, @harupy)
  • [UI] 移除无法获取工件时的浏览器错误通知 (#7001, @kevingreer)
  • [模型] 允许 `mlflow-skinny` 包在 `MLmodel` requirements 中用作基础 requirement (#6974, @BenWilson2)
  • [模型] 修复加载 SparkML 模型时代码路径解析的问题 (#6968, @dbczumar)
  • [模型] 修复日志记录 SparkML 模型时依赖推断的问题 (#6912, @BenWilson2)
  • [模型] 修复 SparkML 模型潜在重复下载的问题 (#6903, @serena-ruan)
  • [模型] 在 `mlflow.evaluate()` 中为 `sklearn.metrics.precision_recall_curve` 添加缺失的 `pos_label` (#6854, @dbczumar)
  • [SQLAlchemy] 修复 `SqlAlchemyStore` 中 `set_tag()` 更新错误标签的错误 (#7027, @gabrielfu)

文档更新

  • [模型] 更新关于默认 `Keras` 序列化格式的详细信息 (#7022, @balvisio)

有关更改的完整列表,请参阅发布变更日志,并在 mlflow.org 上查看最新文档。

·阅读时长 3 分钟
MLflow maintainers

我们很高兴地宣布 MLflow 1.29.0 已发布!

MLflow 1.29.0 包含几个主要功能和改进

功能

  • [Pipelines] 改进 scikit-learn 回归 Pipeline 中数据集画像的性能和准确性 (#6792, @sunishsheth2009)
  • [Pipelines] 添加一个 mlflow pipelines get-artifact CLI 用于检索 Pipeline 工件 (#6517, @prithvikannan)
  • [Pipelines] 为 scikit-learn 回归 Pipeline 引入跳过数据集画像的选项 (#6456, @apurva-koti)
  • [Pipelines / UI] 在 MLflow UI 中显示用于重现 Pipeline 运行的 mlflow pipelines CLI 命令 (#6376, @hubertzub-db)
  • [追踪] 如果用户未提供,则自动为 Runs 生成友好名称 (#6736, @BenWilson2)
  • [追踪] 添加 load_text(), load_image() 和 load_dict() 流畅 API 以方便工件加载 (#6475, @subramaniam02)
  • [追踪] 为 Experiment 类添加 creation_time 和 last_update_time 属性 (#6756, @subramaniam02)
  • [追踪] 将官方 MLflow Tracking Server Dockerfile 添加到 MLflow 仓库 (#6731, @oojo12)
  • [追踪] 向 Java 客户端添加 searchExperiments API 并弃用 listExperiments (#6561, @dbczumar)
  • [追踪] 向 R 客户端添加 mlflow_search_experiments API 并弃用 mlflow_list_experiments (#6576, @dbczumar)
  • [UI] 使 MLflow Tracking UI 中的 URL 可点击 (#6526, @marijncv)
  • [UI] 在工件查看器窗格中引入对 CSV 数据预览的支持 (#6567, @nnethery)
  • [模型注册表 / 模型] 引入 mlflow.models.add_libraries_to_model() API,用于向 MLflow 模型添加库 (#6586, @arjundc-db)
  • [模型] 向 mlflow.evaluate() 添加模型验证支持 (#6582, @zhe-db, @jerrylian-db)
  • [模型] 为 mlflow.evaluate() 引入 sample_weights 支持 (#6806, @dbczumar)
  • [模型] 向 mlflow.evaluate() 添加 pos_label 支持以识别正类别 (#6696, @harupy)
  • [模型] 使 mlflow.evaluate() 中的指标名称前缀和数据集信息可配置 (#6593, @dbczumar)
  • [模型] 添加用于验证数据集与模型签名兼容性的实用工具 (#6494, @serena-ruan)
  • [模型] 为 scikit-learn 模型的 pyfunc 表示添加 predict_proba() 支持 (#6631, @skylarbpayne)
  • [模型] 添加对 MLflow 模型 schema 的 Decimal 类型推断的支持 (#6600, @shitaoli-db)
  • [模型] 添加用于生成模型服务 Dockerfile 的新 CLI 命令 (#6591, @anuarkaliyev23)
  • [评分] 向评分服务器添加 /health 端点 (#6574, @gabriel-milan)
  • [评分] 在 Sagemaker 部署期间支持指定 variant_name (#6486, @nfarley-soaren)
  • [评分] 在 SageMaker 部署期间支持指定 data_capture_config (#6423, @jonwiggins)

错误修复

  • [追踪] 使 Run 和 Experiment 的删除和恢复操作具有幂等性 (#6641, @dbczumar)
  • [UI] 修复影响 MLflow UI 中实验列表的对齐错误 (#6569, @sunishsheth2009)
  • [模型] 修复 MLflow 1.28.0 中发生的日志记录 Spark Models 目录路径结构的回退问题 (#6683, @gwy1995)
  • [模型] 加载模型代码时不再重新加载主模块 (#6647, @Jooakim)
  • [工件] 修复在 `--serve-artifacts` 模式下运行的 mlflow server 与 HDFS 的兼容性问题 (#6482, @shidianshifen)
  • [评分] 修复 TensorFlow 和 Keras 中 1 维张量输入导致的推理失败 (#6796, @LiamConnell)

文档更新

  • [追踪] 将 SearchExperiments API 标记为稳定 (#6551, @dbczumar)
  • [追踪 / 模型注册表] 弃用 ListExperiments, ListRegisteredModels 和 list_run_infos() API (#6550, @dbczumar)
  • [评分] 弃用 mlflow.sagemaker.deploy(),转而使用 SageMakerDeploymentClient.create() (#6651, @dbczumar)

有关更改的完整列表,请参阅发布变更日志,并在 mlflow.org 上查看最新文档。

·阅读时长 4 分钟
MLflow maintainers

我们很高兴地宣布 MLflow 1.28.0 已发布!

MLflow 1.28.0 包含几个主要功能和改进

功能

  • [Pipelines] 在 Pipeline 执行期间将完整的 Pipeline 运行时配置日志记录到 MLflow Tracking 中 (#6359, @jinzhang21)
  • [Pipelines] 添加 `pipeline.yaml` 配置,用于指定模型注册使用的 Model Registry 后端 (#6284, @sunishsheth2009)
  • [Pipelines] 支持可选地跳过 scikit-learn 回归 pipeline 的 `transform` 步骤 (#6362, @sunishsheth2009)
  • [Pipelines] 在 Databricks 上的 Pipeline Step Cards 中添加指向 Runs 和 Models 的 UI 链接 (#6294, @dbczumar)
  • [追踪] 引入 `mlflow.search_experiments()` API,用于按名称和标签搜索实验 (#6333, @WeichenXu123; #6227, #6172, #6154, @harupy)
  • [追踪] 将 File 和 SQL 后端支持的最大参数值长度增加到 500 个字符 (#6358, @johnyNJ)
  • [追踪] 为 `mlflow gc` 引入 `--older-than` 标志,用于根据删除时间移除运行 (#6354, @Jason-CKY)
  • [追踪] 添加 `MLFLOW_SQLALCHEMYSTORE_POOL_RECYCLE` 环境变量,用于回收 SQLAlchemy 连接 (#6344, @postrational)
  • [UI] 在实验页面的 Runs Table 中显示深层嵌套的运行 (#6065, @tospe)
  • [UI] 在 Compare Runs 页面为指标添加箱线图可视化 (#6308, @ahlag)
  • [UI] 在 Compare Runs 页面显示标签 (#6164, @CaioCavalcanti)
  • [UI] 在 Metrics 页面查看对数刻度指标图时,使用科学记数法表示坐标轴 (#6176, @RajezMariner)
  • [UI] 在 Metrics 页面上的图中包含 NaN 和 +/- infinity 值 (#6422, @hubertzub-db)
  • [UI] 添加按钮以便将 Metrics 页面上的指标下载为 CSV 文件 (#6048, @rafaelvp-db)
  • [追踪 / 模型注册表] 引入环境变量,用于控制 REST API 请求的重试行为和超时时间 (#5745, @peterdhansen)
  • [追踪 / 模型注册表] 使 `MlflowClient` 可以作为 `mlflow.MlflowClient` 导入 (#6085, @subramaniam02)
  • [模型注册表] 添加按标签搜索注册模型和模型版本的支持 (#6413, #6411, #6320, @WeichenXu123)
  • [模型注册表] 向 `set_model_version_tag()` 添加 `stage` 参数 (#6185, @subramaniam02)
  • [模型注册表] 为 `mlflow server` 添加 `--registry-store-uri` 标志,用于指定 Model Registry 后端 URI (#6142, @Secbone)
  • [模型] 改进 Databricks 上 Spark 模型日志记录的性能 (#6282, @bbarnes52)
  • [模型] 在推断模型 schema 时包含 Pandas Series 名称 (#6361, @RynoXLI)
  • [评分] 使 `mlflow models build-docker` 中的 `model_uri` 可选,以支持构建通用模型服务镜像 (#6302, @harupy)
  • [R] 支持日志记录 NA 和 NaN 参数值 (#6263, @nathaneastwood)

错误修复和文档更新

  • [Pipelines] 通过将数据集画像限制在前 100 列,改进 scikit-learn 回归 pipeline 的延迟 (#6297, @sunishsheth2009)
  • [Pipelines] 在 Linux 系统上使用 `xdg-open` 而非 `open` 查看 Pipeline 结果 (#6326, @strangiato)
  • [Pipelines] 修复了阻止在 Jupyter Notebooks 中渲染 Step Card 的错误 (#6378, @apurva-koti)
  • [追踪] 在授权失败的 REST API 响应中使用 401 HTTP 响应代码,而不是 500 (#6106, @balvisio)
  • [追踪] 使用 Azure Blob Storage 时,正确地将工件分类为文件和目录 (#6237, @nerdinand)
  • [追踪] 修复 File 后端的一个错误,该错误导致在写入失败时运行元数据丢失 (#6388, @dbczumar)
  • [追踪] 调整 `mlflow.pyspark.ml.autolog()`,仅为支持的输入/输出数据类型记录模型签名 (#6365, @harupy)
  • [追踪] 调整 `mlflow.tensorflow.autolog()`,当指定 `log_models=False` 时,记录 TensorFlow 早停回调信息 (#6170, @WeichenXu123)
  • [追踪] 修复 `mlflow.sklearn.autolog()` 中包含 transformer 的模型的签名和输入示例日志记录错误 (#6230, @dbczumar)
  • [跟踪] 修复了在删除其 artifact 已被删除的运行 (`mlflow gc`) 时发生的故障 (#6165, @dbczumar)
  • [跟踪] 为 MLflow Skinny 客户端添加了缺失的 `sqlparse` 库,搜索支持需要此库 (#6174, @dbczumar)
  • [跟踪 / 模型注册表] 修复了 `mlflow server` 拒绝参数和标签的空字符串值的错误 (#6179, @dbczumar)
  • [模型注册表] 修复了在启用 `--serve-arifacts` 时无法下载模型版本 schemas 的故障 (#6355, @abbas123456)
  • [评分] 修补了 Java 模型服务器,以支持在 Databricks Runtime 最新版本上记录的 MLflow 模型 (#6337, @dbczumar)
  • [评分] 验证在调用 `mlflow deployments predict` CLI 时是否指定了部署名称或端点 (#6323, @dbczumar)
  • [评分] 使用 `mlflow.pyfunc.spark_udf()` 执行批量推理时,正确编码 datetime 列 (#6244, @harupy)
  • [项目] 修复了运行项目时本地目录路径被误分类为 Git URI 的问题 (#6218, @ElefHead)
  • [R] 修复了 +/- infinity 值的指标记录行为 (#6271, @nathaneastwood)
  • [文档] 将 `MlflowClient` 的 Python API 文档从 `mlflow.tracking` 移至 `mlflow.client` (#6405, @dbczumar)
  • [文档] 说明 MLflow Pipelines 需要 Make (#6216, @dbczumar)
  • [文档] 改进了 `CONTRIBUTING.rst` 中有关开发和测试 MLflow JS 更改的文档 (#6330, @ahlag)

有关更改的完整列表,请参阅版本更新日志,并在mlflow.org上查看最新文档。

·阅读时长 3 分钟
MLflow maintainers

我们很高兴地宣布 MLflow 1.27.0 已可用!

MLflow 1.27.0 包括几项重要的新功能和改进

  • [Pipelines] 随着 MLflow 1.27.0 的发布,我们很高兴宣布推出 MLflow Pipelines,这是一个用于构建 MLOps 工作流的规范化框架,可简化和标准化机器学习应用程序的开发和生产化。MLflow Pipelines 使数据科学家可以轻松遵循最佳实践来创建生产就绪的 ML 可交付成果,让他们能够专注于开发出色的模型。MLflow Pipelines 还使 ML 工程师和 DevOps 团队能够无缝地将模型部署到生产环境并将其集成到应用程序中。要开始使用 MLflow Pipelines,请访问文档:https://mlflow.org.cn/docs/latest/pipelines.html。( #6115)

  • [UI] 引入了 UI 支持,用于跨多个实验搜索和比较运行 (#5971, @r3stl355)

更多功能

  • [跟踪] 使用批量日志记录 API 时,自动将大量 metrics、tags 和 params 分割成多个请求 (#6052, @nzw0301)
  • [跟踪] 当实验被删除时,基于 SQL 的后端也会将关联的运行移动到“deleted”生命周期阶段 (#6064, @AdityaIyengar27)
  • [跟踪] 添加了通过 `mlflow.log_metric()` API 将单元素 `ndarray` 和 tensor 实例记录为指标的支持 (#5756, @ntakouris)
  • [模型] 添加了对 `CatBoostRanker` 模型到 `mlflow.catboost` flavor 的支持 (#6032, @danielgafni)
  • [模型] 将 SHAP 的 `KernelExplainer` 与 `mlflow.evaluate()` 集成,支持在分类数据上进行模型解释 (#6044, #5920, @WeichenXu123)
  • [模型] 扩展了 `mlflow.evaluate()`,以自动将 scikit-learn 模型的 `score()` 输出记录为指标 (#5935, #5903, @WeichenXu123)

错误修复和文档更新

  • [UI] 修复了 MLflow 实验页面上运行表中的模型链接断开问题 (#6014, @hctpbl)
  • [跟踪/安装] 在安装 MLflow 时要求 `sqlalchemy>=1.4.0`,这对于使用基于 SQL 的 MLflow Tracking 后端是必需的 (#6024, @sniafas)
  • [跟踪] 修复了导致 `mlflow server` 拒绝包含空字符串值的 `LogParam` API 请求的回归问题 (#6031, @harupy)
  • [跟踪] 修复了在主机系统上未安装 `matplotlib` 时 scikit-learn autologging 中发生的故障 (#5995, @fa9r)
  • [跟踪] 修复了在使用 `tf.data.Dataset` 输入训练模型时 TensorFlow autologging 中发生的故障 (#6061, @dbczumar)
  • [Artifacts] 解决了因并发管理不当导致的 SFTP 位置 artifact 下载失败问题 (#5840, @rsundqvist)
  • [模型] 修复了一个 bug,如果多个模型使用相同的代码模块名称,MLflow Models 无法正确恢复捆绑的代码 (#5926, @BFAnas)
  • [模型] 解决了一个问题,`mlflow.sklearn.model()` 未能正确恢复捆绑的模型代码 (#6037, @WeichenXu123)
  • [模型] 修复了 `mlflow.evaluate()` 中的一个 bug,该 bug 在评估某些 scikit-learn 模型时导致输入数据对象被修改 (#6141, @dbczumar)
  • [模型] 修复了 `mlflow.pyfunc.spark_udf` 在 UDF 在空的 RDD 分区上被调用时发生的故障 (#6063, @WeichenXu123)
  • [模型] 修复了在指定 `env-manager=local` 时 `mlflow models build-docker` 中发生的故障 (#6046, @bneijt)
  • [项目] 提高了 MLflow Project 执行前进行的 git 仓库检查的稳健性 (#6000, @dkapur17)
  • [项目] 解决了运行没有 `master` 分支的项目时出现的故障 (#5889, @harupy)
  • [文档] 更正了 MLflow 文档中的几处拼写错误 (#5959, @ryanrussell)

有关更改的完整列表,请参阅版本更新日志,并在mlflow.org上查看最新文档。