BentoML 使用介绍:功能、价格与上手指南

BentoML 是开源模型部署框架,支持将训练好的模型打包为可复现的 Bento,并一键部署为 API 服务。本文介绍其核心功能、BentoCloud 价格、与 FastAPI/TorchServe 的差异,并给出安装、定义服务、构建与部署的完整步骤,帮助 AI 工程师快速上手。

BentoML 是面向 AI 工程师的开源模型部署框架,目标是把训练好的模型快速变成可复现、可扩展的在线 API。它通过标准化的 Bento 打包格式,把模型、依赖、推理代码和配置封装在一起,让部署不再依赖临时脚本。

BentoML 是什么

BentoML 提供从模型保存、服务定义、构建打包到部署上线的完整工作流。核心概念是 Bento:一个包含模型文件、Python 依赖、服务代码和配置的目录。你可以把 Bento 部署到本地、Docker、Kubernetes 或 BentoCloud。

核心功能

  • 多框架支持:兼容 PyTorch、TensorFlow、Scikit-learn、XGBoost、Hugging Face 等。
  • 服务定义:用 Python 类定义 API,支持同步、异步和流式响应。
  • 自动打包:生成 Bento 和 Docker 镜像,锁定依赖版本。
  • 自适应批处理:自动合并请求,提高 GPU 利用率。
  • 模型注册与版本:管理模型版本和元数据。
  • 可观测性:内置日志、指标和追踪接口。

价格方案

BentoML 本身是开源项目,可免费使用。商业产品 BentoCloud 提供托管部署,常见方案如下:

方案价格适用场景
开源版免费本地开发、自建集群
开发者版按需付费小规模测试
团队版约 $500/月起生产环境、协作
企业版定制安全合规、私有部署

具体价格以官网为准。若已有 Kubernetes,可先用开源版自建,成本更低。

与 FastAPI、TorchServe 对比

工具优势局限
BentoML打包标准化、多框架、部署简单学习曲线略高
FastAPI灵活、生态大需手动管理依赖和模型
TorchServePyTorch 官方仅限 PyTorch

上手指南

1. 安装

pip install bentoml

2. 保存模型

以 Scikit-learn 为例:

import bentoml
from sklearn.ensemble import RandomForestClassifier

model = RandomForestClassifier()
model.fit(X_train, y_train)
bentoml.sklearn.save_model("iris_clf", model)

3. 定义服务

创建 service.py

import bentoml
import numpy as np
from bentoml.io import NumpyNdarray

runner = bentoml.sklearn.get("iris_clf:latest").to_runner()
svc = bentoml.Service("iris_classifier", runners=[runner])

@svc.api(input=NumpyNdarray(), output=NumpyNdarray())
def predict(input_data):
    return runner.predict.run(input_data)

4. 本地运行

bentoml serve service:svc --reload

访问 http://localhost:3000 测试接口。

5. 构建 Bento

bentoml build

6. 容器化部署

bentoml containerize iris_classifier:latest

然后运行 Docker 镜像即可。

最佳实践

  • 锁定依赖版本,避免环境漂移。
  • 使用自适应批处理提升 GPU 利用率。
  • 为生产服务配置健康检查和日志。
  • 用 BentoCloud 或 Kubernetes 做水平扩展。

结论

BentoML 适合需要快速、标准化部署 AI 模型的团队。开源版免费且功能完整,BentoCloud 提供托管方案。通过 Bento 打包和 Python 服务定义,你可以在几分钟内把模型变成 API。建议先从本地服务开始,再逐步迁移到生产环境。

返回 AI 教程列表