跳到主内容

MLflow 2.18.0

·阅读时长5分钟
MLflow maintainers

我们很高兴宣布发布 MLflow 2.18.0!此版本包含多项重要功能、增强功能和错误修复。

Python 版本更新

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

注意:如果您目前使用 MLflow 的 ChatModel 接口编写自定义 GenAI 应用程序,请确保您已阅读下面的未来重大变更部分。

主要新功能

  • 🦺 Fluent API 线程/进程安全 - MLflow 用于跟踪和模型注册表的 fluent API 已进行全面改进,以支持线程和多进程安全。您现在不再被强制使用 Client 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

  • 🖥️ 增强的追踪 UI - MLflow Tracing 的 UI 经过了重大改进,提升了审计和调查 GenAI 追踪内容的可用性和便捷性,包括使用 markdown 增强 span 内容渲染以及标准化的 span 组件结构。(#13685#13357#13242@daniellok-db

  • 🚄 新的追踪集成 - MLflow Tracing 现在支持 DSPyLiteLLMGoogle Gemini,实现了单行代码、全自动的追踪体验。这些集成在更广泛的行业工具中解锁了增强的可观察性。敬请关注即将到来的集成和更新!(#13801@TomeHirata#13585@B-Step62

  • 📊 扩展的 LLM-as-a-Judge 支持 - MLflow 现在通过支持更多提供商(包括 AnthropicBedrockMistralTogetherAI)增强了其评估能力,这些提供商加入了 OpenAI 等现有提供商。用户现在还可以通过使用新的 proxy_urlextra_headers 选项来配置遵循提供商 API 规范的代理端点或自托管 LLMs。请访问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 复制代码 其他功能

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

错误修复

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

文档更新

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

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