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 的模型库;您可以在服务定义中指定所需的包。
  • 可观测性与扩展 – 支持分布式服务、自适应批处理,并与监控工具集成。

典型工作流程

  1. 安装 pip install -U bentoml(Python ≥ 3.9)。
  2. 编写服务(例如,使用 Hugging Face Transformers 的摘要 API)。
  3. 本地运行 使用 bentoml serve 在 http://localhost:3000 测试。
  4. 打包服务:bentoml build → 创建版本化的 Bento。
  5. 部署: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。

生态系统与示例

社区与贡献

  • 在 Apache 2.0 许可证下开源。
  • 活跃的 GitHub 仓库,包含 CI、问题跟踪器和贡献指南。
  • 用户可以通过 --do-not-track 或环境变量选择退出匿名使用遥测。

适用人群

  • 需要将模型暴露为可扩展 API 而无需编写样板 Docker/Kubernetes 代码的 ML 工程师。
  • 构建多模型流水线或需要在 CPU/GPU 上高效运行服务的团队。
  • 任何寻求可重现、版本控制方式将 AI 模型部署到生产环境的人。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • Dispatch