跳到主要内容

MLflow 2.18.0

·5分钟阅读
MLflow maintainers
MLflow 维护者

我们很高兴地宣布 MLflow 2.18.0 的发布!本次发布包含了一系列重要的新功能、改进和错误修复。

Python 版本更新

Python 3.8 已达到生命周期终点。随着官方对这一旧版本的支持被弃用,MLflow 现在要求 Python 3.9 作为最低支持版本。

注意:如果您当前正在使用 MLflow 的 ChatModel 接口来编写自定义 GenAI 应用程序,请确保您已阅读下面的未来破坏性更改部分。

主要新特性

  • 🦺 统一 API 线程/进程安全 - MLflow 的统一 API(用于跟踪和模型注册表)已得到改进,以支持线程和多进程安全。现在,您不再必须在多进程和多线程应用程序中使用客户端 API 来管理实验、运行和日志记录。(#13456#13419@WeichenXu123

  • 🧩 DSPy flavor - MLflow 现在支持 DSPy 模型的日志记录、加载和跟踪,从而扩展了 MLflow 对高级 GenAI 编写的支持。请查看 MLflow DSPy Flavor 文档以开始使用!(#13131#13279#13369#13345@chenmoneygithub#13543#13800#13807@B-Step62#13289@michael-berk

  • 🖥️ 增强的 Trace UI - MLflow Tracing 的 UI 经过了重大改进,为审计和调查 GenAI trace 的内容带来了可用性和生活质量的更新,包括使用 markdown 增强 span 内容渲染和标准化的 span 组件结构。(#13685#13357#13242@daniellok-db

  • 🚄 新的 Tracing 集成 - MLflow Tracing 现在支持 DSPyLiteLLMGoogle Gemini,实现了单行、完全自动化的跟踪体验。这些集成可以跨更广泛的行业工具增强可观测性。敬请期待即将推出的集成和更新!(#13801@TomeHirata#13585@B-Step62

  • 📊 扩展的 LLM-as-a-Judge 支持 - MLflow 现在通过支持其他提供商(包括 AnthropicBedrockMistralTogetherAI)以及现有的提供商(如 OpenAI)来增强其评估功能。用户还可以通过使用新的 proxy_urlextra_headers 选项,配置遵循提供商 API 规范的代理端点或自托管 LLM。访问 LLM-as-a-Judge 文档了解更多详情!(#13715#13717@B-Step62

  • ⏰ 环境变量检测 - 作为部署模型时的有用提醒,MLflow 现在会检测并提醒用户在模型日志记录期间设置的环境变量,确保它们已为部署配置。此外,mlflow.models.predict 实用程序也已更新,以在服务模拟中包含这些变量,从而改进部署前验证。(#13584@serena-ruan

ChatModel 接口的破坏性更改

  • ChatModel 接口更新 - 作为 MLflow 内部以及依赖或深度集成 MLflow GenAI 功能的服务之间更广泛的统一工作的一部分,我们正在分阶段实施,以对自定义 GenAI 应用程序的开发和使用建立一致的标准接口。在第一阶段(计划在 MLflow 的未来几个版本中发布),我们已将多个接口标记为已弃用,因为它们将会发生更改。这些更改将是

    • 接口重命名:
      • ChatRequestChatCompletionRequest,以便为将来计划的请求接口提供区分。
      • ChatResponseChatCompletionResponse,原因与输入接口相同。
      • ChatRequestChatResponse 中的 metadata 字段 → 分别为 custom_inputscustom_outputs
    • 流式传输更新:
      • predict_stream 将被更新,以支持自定义 GenAI 应用程序的真实流式传输。目前,它会返回一个带有 predict 同步输出的生成器。在未来的版本中,它将返回一个 ChatCompletionChunks 的生成器,从而实现异步流式传输。虽然 API 调用结构将保持不变,但返回的数据负载将发生显著变化,以与 LangChain 的实现保持一致。
    • 旧版数据类弃用:
      • mlflow.models.rag_signatures 中的数据类将被弃用,并合并到统一的 ChatCompletionRequestChatCompletionResponseChatCompletionChunks 中。

其他特性

以下是更新的部分,包含每个 PR ID 和作者的链接

markdown Copy code 其他功能

  • [Evaluate] 将 Huggingface BLEU 指标添加到 MLflow Evaluate。(#12799@nebrass
  • [Models / Databricks] 在 Databricks Serverless 运行时、Databricks Connect 和预构建的 Python 环境上运行时,添加对 spark_udf 的支持。(#13276#13496@WeichenXu123
  • [Scoring] 为 pyfunc.spark_udf 添加 model_config 参数,用于自定义批推理负载提交。(#13517@WeichenXu123
  • [Tracing] 将检索器 span 输出标准化为 MLflow Documents 列表。(#13242@daniellok-db
  • [UI] 在 MLflow UI 中添加对可视化和比较嵌套参数的支持。(#13012@jescalada
  • [UI] 在 MLflow UI 的 Compare Run 页面中添加对比较已记录 artifact 的支持。(#13145@jescalada
  • [Databricks] 添加对 LangChain 模型日志记录的 resources 定义的支持。(#13315@sunishsheth2009
  • [Databricks] 添加对 Agent 定义中 dependencies 内定义多个检索器的支持。(#13246@sunishsheth2009

错误修复

  • [Database] 在删除实验时级联删除数据集,以修复 MLflow 的 gc 命令在删除具有已记录数据集的实验时出现的错误。(#13741@daniellok-db
  • [Models] 修复 LangChainpyfunc predict 输入转换的错误。(#13652@serena-ruan
  • [Models] 修复子类和定义模型签名的 Optional 数据类进行签名推断的错误。(#13440@bbqiu
  • [Tracking] 修复异步日志批次拆分验证规则的错误。(#13722@WeichenXu123
  • [Tracking] 修复 LangChain 自动日志记录的线程安全行为的错误。(#13672@B-Step62
  • [Tracking] 由于 Spark 的限制,禁用在线程池中运行 Spark 自动日志记录的支持。(#13599@WeichenXu123
  • [Tracking] 将 chat schema 的 roleindex 标记为必需。(#13279@chenmoneygithub
  • [Tracing] 在 OpenAI 自动日志中处理原始响应。(#13802@harupy
  • [Tracing] 修复在 LangChain 模型上使用多线程进行推理时,跟踪源运行行为的错误。(#13610@WeichenXu123

文档更新

  • [Docs] 添加关于 ChatModel 即将进行的更改的 docstring 警告。(#13730@stevenchen-db
  • [Docs] 添加实现跟踪集成的贡献者指南。(#13333@B-Step62
  • [Docs] 添加关于在将模型记录为代码时使用 model_config 的指南。(#13631@sunishsheth2009
  • [Docs] 添加关于使用 code_paths 模型日志记录功能的自定义库 artifact 的文档。(#13702@TomeHirata
  • [Docs] 通过关于如何从分类模型返回概率的指南,改进 SparkML log_model 文档。(#13684@WeichenXu123

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