用于部署的打包¶
BentoML 提供了一种称为 Bentos 的标准化格式,用于打包 AI/ML 服务。一个 Bento 包含运行 AI 服务所需的所有组件,例如源代码、Python 依赖项、模型 artifacts 和配置。这确保您的 AI 服务在不同环境中保持一致且可重现。

定义运行时环境¶
在构建 Bento 之前,您需要定义它的运行时环境。以下是一个示例
import bentoml
my_image = bentoml.images.Image(python_version="3.11") \
.python_packages("torch", "transformers")
@bentoml.service(
image=my_image,
envs=[
{"name": "HF_TOKEN"}, # You can omit value and set it when deploying the Service
{"name": "DB_HOST", "value": "localhost"}
]
)
class Summarization:
...
关键环境变量字段
python_version
: 指定要使用的 Python 版本。默认为您构建环境中的 Python 版本。python_packages
: 列出所需的 Python 包。或者,使用.requirements_file("requirements.txt")
引用 requirements 文件。
在 @bentoml.service
装饰器中,通过 image
将运行时环境应用于您的服务。您也可以使用 envs
参数指定所需的环境变量。
参阅更多 可用字段 以自定义您的构建。
构建 Bento¶
在与您的 service.py
文件相同的目录下运行以下命令。
bentoml build
注意
默认情况下,此命令会打包执行它的目录下所有文件。要排除特定文件或目录,请在 .bentoignore
文件中定义它们。
构建后,每个 Bento 会自动分配一个唯一版本。您可以使用以下命令列出所有可用的 Bentos
bentoml list
bentoml build
命令是 bentoml deploy
工作流的一部分。只有当您想构建 Bento 而不将其部署到 BentoCloud 时,才应使用此命令。要直接将您的项目部署到 BentoCloud,请使用 bentoml deploy
。有关详细信息,请参阅 云部署。
将 Bento 容器化¶
要使用 Docker 将 Bento 容器化,只需运行 bentoml containerize <bento_tag>
。例如
bentoml containerize summarization:latest
注意
对于配备 Apple silicon 的 Mac 电脑,您可以指定 --platform
选项,以避免某些 Python 库可能出现的兼容性问题。
bentoml containerize --platform=linux/amd64 summarization:latest
Docker 镜像的标签默认与 Bento 标签相同。查看已创建的 Docker 镜像
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
summarization lkpxx2u5o24wpxjr 79a06b402644 2 minutes ago 6.66GB
在本地运行 Docker 镜像
docker run -it --rm -p 3000:3000 summarization:lkpxx2u5o24wpxjr serve
有了 Docker 镜像,您可以在任何兼容 Docker 的环境中运行模型。