bentoml/BentoML
The easiest way to serve AI apps and models - Build Model Inference APIs, Job queues, LLM apps, Multi-model pipelines, and more!
BentoML – 统一模型服务框架
它是什么
- 一个 Python 库,只需几行代码即可将任何 AI/ML 模型(PyTorch、TensorFlow、Transformers 等)转变为生产级推理 API。
- 处理打包、Docker 镜像创建以及部署到 Kubernetes 或其他环境。
关键能力
- 简单的 API 定义 – 使用
@bentoml.service和@bentoml.api装饰类,将函数暴露为 HTTP 端点。 - 自动容器化 –
bentoml build创建 Bento(版本化工件),bentoml containerize生成包含代码、模型和依赖项的 Docker 镜像。 - 性能优化 – 内置动态批处理、模型并行、多阶段流水线以及多模型编排,以最大化 CPU/GPU 利用率。
- 框架无关 – 适用于任何基于 Python 的模型库;您可以在服务定义中指定所需的包。
- 可观测性与扩展 – 支持分布式服务、自适应批处理,并与监控工具集成。
典型工作流程
- 安装
pip install -U bentoml(Python ≥ 3.9)。 - 编写服务(例如,使用 Hugging Face Transformers 的摘要 API)。
- 本地运行 使用
bentoml serve在http://localhost:3000测试。 - 打包服务:
bentoml build→ 创建版本化的 Bento。 - 部署:
bentoml containerize <bento_name>→ Docker 镜像 → 在任何主机或 Kubernetes 上运行。
示例代码片段
import bentoml
@bentoml.service(
image=bentoml.images.Image(python_version="3.11").python_packages("torch", "transformers"),
)
class Summarization:
def __init__(self):
import torch
from transformers import pipeline
device = "cuda" if torch.cuda.is_available() else "cpu"
self.pipeline = pipeline('summarization', device=device)
@bentoml.api(batchable=True)
def summarize(self, texts: list[str]) -> list[str]:
return [r['summary_text'] for r in self.pipeline(texts)]
运行 bentoml serve 即可立即启动 API。
生态系统与示例
- 为 LLM(Llama 3.2、Mistral、DeepSeek)、扩散模型、嵌入、音频模型、计算机视觉检测器以及高级模式(如函数调用、LangGraph 和 CrewAI)提供现成示例。
- 完整文档见 https://docs.bentoml.com,并提供社区论坛用于故障排除和模式分享。
社区与贡献
- 在 Apache 2.0 许可证下开源。
- 活跃的 GitHub 仓库,包含 CI、问题跟踪器和贡献指南。
- 用户可以通过
--do-not-track或环境变量选择退出匿名使用遥测。
适用人群
- 需要将模型暴露为可扩展 API 而无需编写样板 Docker/Kubernetes 代码的 ML 工程师。
- 构建多模型流水线或需要在 CPU/GPU 上高效运行服务的团队。
- 任何寻求可重现、版本控制方式将 AI 模型部署到生产环境的人。
相关
- 项目
- 项目
- 项目
- 项目
- Dispatch