MLflow 2.11.0 包含几项主要功能和改进
随着 MLflow 2.11.0 版本的发布,我们很高兴带来一系列涵盖 GenAI 和深度学习用例的重大且有影响力的功能。
MLflow UI 中针对深度学习的新改进
MLflow 跟踪 UI 进行了全面改进,以更好地支持深度学习工作负载的训练运行的审查和比较。从分组到贯穿 DL 模型训练周期的大规模指标绘制,有大量用户体验改进,以增强您的深度学习 MLOps 工作流程。
HuggingFace 流行库 PEFT 的支持现已在 mlflow.transformers
flavor 中提供。除了 PEFT 支持外,我们还取消了对可记录到 MLflow 的 Pipeline 类型的限制,并增加了在开发和测试模型时,能够不复制基础模型权重即可记录 transformers pipeline 的功能。这些增强功能旨在使 transformers flavor 对尖端 GenAI 模型、新的 pipeline 类型更加有用,并简化 prompt engineering、微调的开发过程,使迭代开发更快、更便宜。立即尝试更新的 flavor 吧!(#11240, @B-Step62)
TensorFlow 和 PyTorch 的 Autologging 现在支持模型权重的检查点
我们在 PyTorch 和 TensorFlow 中都添加了对模型权重自动检查点 (包括从先前状态恢复) 的支持,用于这两种 flavor 中的 auto logging 实现。这项备受期待的功能允许您自动配置长时间运行的深度学习训练,以安全地保存您的最佳 epoch,从而消除训练后期因故障而丢失模型优化状态的风险。(#11197, #10935, @WeichenXu123)
用于与 pyfunc 模型统一聊天体验的 ChatModel 接口
我们为 GenAI 工作负载在 Pyfunc 中添加了一个新接口。新的 ChatModel
接口允许您像与任何其他提供者交互一样,与已部署的 GenAI 聊天模型交互。简化的接口(不再要求符合 Pandas DataFrame 输入类型)旨在统一 API 接口体验。(#10820, @daniellok-db)
MLflow 支持 Keras 3
我们现在支持 Keras 3。Keras 库的这项重大改进引入了 Keras 与不同 DL 框架集成的新的基本变化,带来了许多新功能和互操作性。要了解更多信息,请参阅 Keras 3.0 教程,立即开始使用更新的模型 flavor 吧!(#10830, @chenmoneygithub)
Mistral AI 模型现已在 MLflow 部署服务器中可用
Mistral AI 已被添加为 MLflow 部署服务器的原生提供者。您现在可以使用其强大的 GenAI 模型,创建到 Mistral AI 服务的代理连接,用于补全和嵌入。(#11020, @thnguyendn)
MLflow 现在支持 OpenAI 1.x SDK
我们为 OpenAI 1.x SDK 添加了兼容性支持。无论您是使用 OpenAI LLM 进行模型评估,还是在 LangChain 模型中调用 OpenAI,您现在都可以使用 OpenAI SDK 的 1.x 系列,而无需指向已弃用的旧版 API。(#11123, @harupy)
功能
- [UI] 重塑 MLflow 跟踪 UI,使其更适合深度学习工作流程,提供更直观、高效的用户体验 (#11233, @daniellok-db)
- [数据] 引入了无需将数据集加载到内存即可记录的功能,优化资源使用和处理时间 (#11172, @chenmoneygithub)
- [模型] 引入 TensorFlow 的记录频率控制,使其与 Keras 对齐以实现一致的性能监控 (#11094, @chenmoneygithub)
- [模型] 在
mlflow.pyfunc.predict
中添加 PySpark DataFrame 支持,增强了批处理推理的数据兼容性和分析选项 (#10939, @ernestwong-db)
- [模型] 引入用于更新模型需求的新 CLI 命令,无需重新记录即可更轻松地维护、验证和更新模型 (#11061, @daniellok-db)
- [模型] 更新 sentence transformers 的 Embedding API,以确保与 OpenAI 格式兼容,扩大模型应用范围 (#11019, @lu-wang-dl)
- [模型] 改进文本生成模型的输入和签名支持,优化聊天和补全任务 (#11027, @es94129)
- [模型] 在文本生成 pipeline 中启用聊天和补全任务输出,扩展交互能力 (#10872, @es94129)
- [跟踪] 为系统指标添加节点 ID,以增强多节点设置中的记录,改进诊断和监控 (#11021, @chenmoneygithub)
- [跟踪] 实现
mlflow.config.enable_async_logging
用于异步记录,改进日志处理和系统性能 (#11138, @chenmoneygithub)
- [评估] 增强模型评估,支持 endpoint URL,简化性能评估和集成 (#11262, @B-Step62)
- [部署] 实现 Cohere 的聊天和聊天流支持,增强交互式模型部署能力 (#10976, @gabrielfu)
- [部署] 启用 Cohere 流支持,允许 MLflow 部署服务器与 Cohere 提供者实现实时交互功能 (#10856, @gabrielfu)
- [Docker / 推理] 优化模型服务的 Docker 镜像,确保更高效的部署和可伸缩性 (#10954, @B-Step62)
- [推理] 支持推理服务器中的补全(
prompt
)和嵌入(input
)格式输入,增加模型交互的灵活性 (#10958, @es94129)
错误修复
- [模型注册表] 纠正模型注册表设置中未利用默认凭据文件的问题 (#11261, @B-Step62)
- [模型注册表] 解决已注册模型详情页面中模型版本表格中别名可见性问题 (#11223, @smurching)
- [模型] 确保在强制执行
ChatModel
输出时调用 load_context()
,以便所有必需的外部引用都包含在模型对象实例中 (#11150, @daniellok-db)
- [模型] 纠正签名不匹配中的 keras 输出 dtype,确保数据一致性和准确性 (#11230, @chenmoneygithub)
- [模型] 解决 spark 模型加载失败问题,增强模型可靠性和可访问性 (#11227, @WeichenXu123)
- [模型] 消除 Databricks 中缺失签名的误报警告,改善用户体验和模型验证流程 (#11181, @B-Step62)
- [模型] 在 Transformer 模型记录期间实现签名/需求推理的超时,优化记录流程并避免延迟 (#11037, @B-Step62)
- [模型] 解决 transformer pipelines 缺失 dtype 的问题,确保数据完整性和模型准确性 (#10979, @B-Step62)
- [模型] 纠正由于对模型配置进行就地更新导致的非幂等预测问题,稳定模型输出 (#11014, @B-Step62)
- [模型] 修复将
torch.dtype
指定为字符串时未正确应用于底层 transformer 模型的问题 (#11297, #11295, @harupy)
- [跟踪] 修复
mlflow.evaluate
中针对非 LLM/自定义指标的 col_mapping
错误,确保准确的评估和指标计算 (#11156, @sunishsheth2009)
- [跟踪] 解决
TensorInfo
TypeError 异常消息问题,确保为用户提供清晰准确的错误报告 (#10953, @leecs0503)
- [跟踪] 增强
RestException
对象的可 pickle 化能力,提高其在需要序列化的分布式计算场景中的可用性 (#10936, @WeichenXu123)
- [跟踪] 解决未识别响应错误代码的处理问题,确保鲁棒的错误处理并在边缘案例中改善用户反馈 (#10918, @chenmoneygithub)
- [Spark] 将硬编码的
io.delta:delta-spark_2.12:3.0.0
依赖项更新到正确的 scala 版本,使依赖项与项目需求对齐 (#11149, @WeichenXu123)
- [服务器基础设施] 通过避免使用
importlib.metadata.entry_points().get
来适应更新版本的 python,增强兼容性和稳定性 (#10752, @raphaelauv)
- [服务器基础设施 / 跟踪] 引入一个环境变量,用于禁用 mlflow 在导入时配置日志记录,提高可配置性和用户控制能力 (#11137, @jmahlik)
- [认证] 增强
mlflow.login()
的认证验证,简化认证流程并提高安全性 (#11039, @chenmoneygithub)
文档更新
有关更改的完整列表,请参阅版本更新日志,并在 mlflow.org 上查看最新文档。