BentoML

BentoML 是一个现代的开源框架,用于 构建、交付和扩展人工智能应用。它弥合了机器学习实验与生产部署之间的差距,让你能够在几分钟内将任何框架中的任意模型打包为可用于生产的 API 服务。在 Clore.ai 的 GPU 云上运行 BentoML,可实现具有成本效益的 AI 应用托管。


什么是 BentoML?

BentoML 让将训练好的模型变为可扩展的 API 服务变得简单:

  • 与框架无关: 支持 PyTorch、TensorFlow、JAX、scikit-learn、HuggingFace、XGBoost、LightGBM 等

  • Bento: 一个自包含、可复现的工件(模型 + 代码 + 依赖)

  • Runner(运行单元): 具有自动批处理功能的可扩展模型推理单元

  • Service(服务): 类似 FastAPI 的 HTTP/gRPC 服务定义

  • BentoCloud: 可选的托管部署平台

  • Docker 优先: 每个 Bento 都可以用一条命令容器化

主要功能:

  • 用于吞吐量优化的自适应微批处理

  • 内置基于 Pydantic 的输入/输出验证

  • 自动生成 OpenAPI 规范

  • 内置 Prometheus 指标

  • 支持流式响应(LLM)


先决条件

要求
最低要求
推荐配置

GPU 显存

8 GB

16–24 GB

GPU

任何 NVIDIA

RTX 4090 / A100

内存(RAM)

8 GB

16 GB

存储

20 GB

40 GB

Python

3.9+

3.11+


步骤 1 — 在 Clore.ai 上租用 GPU

  1. 点击 市场 并选择具有 ≥ 16 GB 显存的 GPU 实例。

  2. 设置 Docker 镜像:我们将使用自定义构建(见第 2 步)。

  3. 设置开放端口: 22 (SSH)和 3000 (BentoML 服务)。

  4. 点击 租用.


第 2 步 — Dockerfile

BentoML 没有官方的 GPU Docker 镜像,因此我们需要构建一个:

构建并推送

构建镜像并将其推送到你自己的 Docker Hub 帐户(替换 YOUR_DOCKERHUB_USERNAME 为你的实际用户名):

circle-info

BentoML 未在 Docker Hub 提供官方的 GPU Docker 镜像。那些 bentoml/bento-server 在 Docker Hub 上的镜像用于服务预打包的 Bentos,不包含 CUDA 支持。为在 Clore.ai 上启用 GPU 的部署,请从上面的 Dockerfile 构建镜像。


第 3 步 — 通过 SSH 连接

验证 BentoML:


第 4 步 — 你的第一个 BentoML 服务

简单文本分类器

创建一个服务文件:

启动服务

circle-info

参数 --reload 该标志在开发期间启用热重载。在生产环境中为稳定性请移除它。


第 5 步 — 访问服务

打开自动生成的 Swagger UI:

或通过以下方式测试 curl:

预期响应:


第 6 步 — 图像分类服务

视觉模型服务

使用图像进行测试:


第 7 步 — LLM 流式服务

对于具有流式响应的语言模型:


第 8 步 — 保存并构建 Bento

一个 Bento 是一个已打包的、可复现的工件:

bentofile.yaml


监控与指标

BentoML 在以下路径暴露 Prometheus 指标: /metrics:

关键指标:


自适应批处理配置


故障排除

服务无法启动

将批量大小减小到 1

  • 检查 CUDA 可用性: python -c "import torch; print(torch.cuda.is_available())"

  • 验证 GPU 显存: nvidia-smi

  • 检查模型下载是否完成(在日志中查看下载进度)

端口 3000 无法访问

首次请求延迟高

这是正常的——第一次请求会触发模型加载(预热)。此后的所有请求都会很快。启动后添加一次预热端点调用:

导入错误

解决方案:


Clore.ai 的 GPU 建议

BentoML 是一个服务框架——GPU 要求完全取决于你部署的模型。以下是常见工作负载的预期:

GPU
显存(VRAM)
Clore.ai 价格
LLM(7B Q4)吞吐量
扩散(SDXL)
视觉(ResNet50)

RTX 3090

24 GB

~$0.12/小时

~80 tok/s

~4 img/min

~400 req/s

RTX 4090

24 GB

~$0.70/小时

~140 tok/s

~8 img/min

~700 req/s

A100 40GB

40 GB

~$1.20/小时

~110 tok/s

~6 img/min

~1200 req/s

💡 本指南中的所有示例均可部署在

80 GB

~$2.00/小时

~130 tok/s

~7 img/min

~1400 req/s

使用场景指引:

  • LLM API 服务(7B–13B): RTX 3090(约 $0.12/小时)——最佳性价比

  • 图像生成 API: 根据吞吐量需求选择 RTX 3090 或 RTX 4090

  • 大型模型(34B–70B Q4): A100 40GB(约 $1.20/小时)——可轻松容纳

  • 生产环境多模型服务: A100 80GB 以保留内存余量

circle-info

BentoML 的 自适应微批处理 在 A100 上特别有效——硬件调度器高效处理批处理,比简单的单请求服务每美元提取更多吞吐量。对于高流量 API,A100 40GB 往往比两块 RTX 4090 提供更好的投资回报。


有用的资源

最后更新于

这有帮助吗?