MLflow 2.18.0
我们很高兴地宣布 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 现在支持 DSPy、LiteLLM 和 Google Gemini,实现了单行、完全自动化的跟踪体验。这些集成可以跨更广泛的行业工具增强可观测性。敬请期待即将推出的集成和更新!(#13801,@TomeHirata,#13585,@B-Step62)
-
📊 扩展的 LLM-as-a-Judge 支持 - MLflow 现在通过支持其他提供商(包括
Anthropic、Bedrock、Mistral和TogetherAI)以及现有的提供商(如OpenAI)来增强其评估功能。用户还可以通过使用新的proxy_url和extra_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 的未来几个版本中发布),我们已将多个接口标记为已弃用,因为它们将会发生更改。这些更改将是
- 接口重命名:
ChatRequest→ChatCompletionRequest,以便为将来计划的请求接口提供区分。ChatResponse→ChatCompletionResponse,原因与输入接口相同。ChatRequest和ChatResponse中的metadata字段 → 分别为custom_inputs和custom_outputs。
- 流式传输更新:
predict_stream将被更新,以支持自定义 GenAI 应用程序的真实流式传输。目前,它会返回一个带有 predict 同步输出的生成器。在未来的版本中,它将返回一个ChatCompletionChunks的生成器,从而实现异步流式传输。虽然 API 调用结构将保持不变,但返回的数据负载将发生显著变化,以与 LangChain 的实现保持一致。
- 旧版数据类弃用:
mlflow.models.rag_signatures中的数据类将被弃用,并合并到统一的ChatCompletionRequest、ChatCompletionResponse和ChatCompletionChunks中。
- 接口重命名:
其他特性
以下是更新的部分,包含每个 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] 修复
LangChain的pyfuncpredict 输入转换的错误。(#13652,@serena-ruan) - [Models] 修复子类和定义模型签名的
Optional数据类进行签名推断的错误。(#13440,@bbqiu) - [Tracking] 修复异步日志批次拆分验证规则的错误。(#13722,@WeichenXu123)
- [Tracking] 修复
LangChain自动日志记录的线程安全行为的错误。(#13672,@B-Step62) - [Tracking] 由于 Spark 的限制,禁用在线程池中运行 Spark 自动日志记录的支持。(#13599,@WeichenXu123)
- [Tracking] 将 chat schema 的
role和index标记为必需。(#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] 通过关于如何从分类模型返回概率的指南,改进
SparkMLlog_model文档。(#13684,@WeichenXu123)
有关更改的完整列表,请参阅 发布更改日志,并查看 mlflow.org 上的最新文档。
