概述
BentoML 是一个开源 Python 框架,它将经过训练的机器学习模型打包成标准化的可部署单元,称为“Bentos”。它弥合了笔记本中的模型与实际上可以通过 API 提供预测服务的生产服务之间的差距。
BentoML 和模型打包是一个技术构建块,会大规模影响模型质量、基础设施成本、延迟和可靠性。
深入探讨
当数据科学家完成模型训练后,将其投入生产通常意味着手动编写服务代码、固定依赖项、构建 Docker 映像并连接 API。 BentoML 可以自动执行此操作。您将模型保存到其本地模型存储中,然后定义一个 Service 类,并使用修饰后的 API 端点来处理推理。 “bentoml build”命令将模型、Python 代码、依赖项版本和运行时配置打包到独立的版本化 Bento 中。从那里“bentoml containerize”生成一个 OCI Docker 镜像。 BentoML 支持几乎所有框架(PyTorch、TensorFlow、scikit-learn、XGBoost、Hugging Face Transformers、ONNX),并添加了自适应微批处理,可自动对传入请求进行分组,以最大限度地提高 GPU 吞吐量,而无需更改代码。
技术洞察
BentoML 将“Runners”(计算密集型模型执行)与 API 服务器逻辑分开。运行程序可以独立扩展并在自己的工作进程中运行,而轻量级 HTTP/gRPC 服务器则处理请求路由和 I/O。其自适应批处理在运行时动态调整批处理大小和延迟窗口,因此它可以吸收流量突发并使昂贵的加速器保持忙碌。标准化的 Bento 格式嵌入了清单、模型文件和可重现的环境,使跨机器的构建具有确定性。
掌握 BentoML 和模型打包
BentoML 是一个开源 Python 框架,它将经过训练的机器学习模型打包成标准化的可部署单元,称为“Bentos”。它弥合了笔记本中的模型与实际上可以通过 API 提供预测服务的生产服务之间的差距。 BentoML 和模型打包是一个技术构建块,会大规模影响模型质量、基础设施成本、延迟和可靠性。为了建立深入的理解,请将 BentoML 和模型打包视为一种操作模型,而不是单个功能:定义所需的结果,澄清假设,并将系统可以可靠地执行的操作与仍需要专家判断的操作分开。
在实践中,强大的团队使用 BentoML 和模型打包根据可靠性和成本优化架构、数据和基础设施选择。他们记录明确的成功标准,根据实际数据和工作流程进行测试,并根据观察到的失败模式而不是一次性基准测试胜利进行迭代。这就是理论理解转变为跨产品、政策和运营的持久能力的地方。
多年来,架构决策决定着性能和运营成本。与此同时,优化一个基准测试可以隐藏更广泛的系统弱点。最具弹性的方法是将实验速度与治理规则结合起来:运行试点、捕获证据、发布决策日志,并随着模型行为、用户期望和监管要求的发展不断更新保障措施。
战略影响
多年来,架构决策决定着性能和运营成本。
多年来,架构决策决定着性能和运营成本。在高质量部署中,这会转化为可衡量的操作规则、所有权边界和定期审查仪式,以便团队可以增强信心,而不是扩大模糊性。
技术教育帮助团队选择正确的堆栈,而不仅仅是最新的堆栈。
技术教育帮助团队选择正确的堆栈,而不仅仅是最新的堆栈。在高质量部署中,这会转化为可衡量的操作规则、所有权边界和定期审查仪式,以便团队可以增强信心,而不是扩大模糊性。
更好的工程选择可以减少生产中的可靠性事故。
更好的工程选择可以减少生产中的可靠性事故。在高质量部署中,这会转化为可衡量的操作规则、所有权边界和定期审查仪式,以便团队可以增强信心,而不是扩大模糊性。
现实世界的实施
欺诈检测团队将 XGBoost 模型保存到 BentoML 存储,并构建一个 Bento,该 Bento 公开 /predict REST 端点,以便支付服务实时调用。
ML 平台团队使用“bentoml 容器化”将 Hugging Face 情感模型转换为部署到其内部 Kubernetes 集群的 Docker 映像。
一家初创公司使用 OpenLLM(基于 BentoML 构建)提供经过微调的 Llama 模型,将令牌流式传输到聊天 UI,并通过自适应批处理保持 GPU 饱和。
一家计算机视觉公司将 PyTorch 图像分类器及其预处理管道打包到一个 Bento 中,以便在训练模型时使用精确的转换。
实施模式
BentoML 和模型打包的实践
欺诈检测团队将 XGBoost 模型保存到 BentoML 存储,并构建一个 Bento,该 Bento 公开 /predict REST 端点,以便支付服务实时调用。
欺诈检测团队将 XGBoost 模型保存到 BentoML 存储中,并构建一个 Bento,该 Bento 公开 /predict REST 端点,以便支付服务实时调用。当团队预先定义质量阈值、为边缘情况保留人工升级路径并随着时间的推移跟踪生产力增益和错误成本时,通常会获得更好的结果。
BentoML 和模型打包的实践
ML 平台团队使用“bentoml 容器化”将 Hugging Face 情感模型转换为部署到其内部 Kubernetes 集群的 Docker 映像。
ML 平台团队使用“bentoml 容器化”将 Hugging Face 情感模型转换为 Docker 映像,部署到其内部 Kubernetes 集群。当团队预先定义质量阈值、为边缘情况保留人工升级路径并随着时间的推移跟踪生产力增益和错误成本时,通常会获得更好的结果。
BentoML 和模型打包的实践
一家初创公司使用 OpenLLM(基于 BentoML 构建)提供经过微调的 Llama 模型,将令牌流式传输到聊天 UI,并通过自适应批处理保持 GPU 饱和。
一家初创公司使用 OpenLLM(基于 BentoML 构建)提供微调的 Llama 模型,通过自适应批处理将令牌流式传输到聊天 UI,保持 GPU 饱和。当团队预先定义质量阈值、为边缘情况保留人工升级路径并跟踪一段时间内的生产力增益和错误成本时,通常会获得更好的结果。
BentoML 和模型打包的实践
一家计算机视觉公司将 PyTorch 图像分类器及其预处理管道打包到一个 Bento 中,以便在训练模型时使用精确的转换。
一家计算机视觉公司将 PyTorch 图像分类器及其预处理管道打包到一个 Bento 中,以便在模型训练中使用的精确转换团队在预先定义质量阈值、为边缘情况保留人工升级路径并随着时间的推移跟踪生产力增益和错误成本时通常会获得更好的结果。
风险与防护栏
优化一项基准测试可以隐藏更广泛的系统弱点。
基础设施和维护成本常常被低估。
随着系统变得更加复杂,安全性和可观察性差距可能会扩大。
实施路线图
在实施之前定义延迟、质量和成本目标。
在实施之前定义延迟、质量和成本目标。将每个步骤视为证据门:如果不满足标准,则暂停推出,缩小差距,然后再扩大使用。
在实际负载和数据条件下进行基准测试。
在实际负载和数据条件下进行基准测试。将每个步骤视为证据门:如果不满足标准,则暂停推出,缩小差距,然后再扩大使用。
仪器监控错误、漂移和用户影响。
仪器监控错误、漂移和用户影响。将每个步骤视为证据门:如果不满足标准,则暂停推出,缩小差距,然后再扩大使用。
在扩展之前准备回滚和事件响应路径。
在扩展之前准备回滚和事件响应路径。将每个步骤视为证据门:如果不满足标准,则暂停推出,缩小差距,然后再扩大使用。