新闻详情

新闻详情

首页 / 资讯中心 / 详情

BentoML 部署打包指南:从定义运行时环境到构建 Bento 与容器化发布

发布时间:2026/11/11 1:59:42来源:尧图网络
BentoML 部署打包指南:从定义运行时环境到构建 Bento 与容器化发布
模型推理服务人工智能后端大模型MLOpsLLMOps【免费下载链接】BentoMLThe easiest way to serve AI apps and models - Build Model Inference APIs, Job queues, LLM apps, Multi-model pipelines, and more!项目地址https://gitcode.com/gh_mirrors/be/BentoML点击查看免费下载本文面向希望在任意 Docker 兼容环境中复现、部署 AI/ML 服务的开发者完整讲解 BentoML 的标准化打包格式Bento如何通过bentoml.images.Image与bentoml.service定义运行时环境如何用bentoml build构建可复现的 Bento 产物以及如何用bentoml containerize生成 Docker 镜像并本地运行。读完本文你将掌握一套从源码到可部署镜像的完整打包流水线并理解其底层实现原理。什么是 BentoBentoML 的标准化打包格式BentoML 为打包 AI/ML 服务提供了一种标准化格式称为Bento。一个 Bento 封装了运行 AI 服务所需的全部组件包括源代码服务定义如service.py及其业务逻辑Python 依赖运行所需的第三方包及其锁定版本模型产物model artifacts训练好的模型文件与元数据运行时配置Python 版本、基础镜像、环境变量、启动命令等。这种打包即标准化的设计确保了同一个 AI 服务在不同环境本地、CI、Kubernetes、BentoCloud 等中保持一致性与可复现性——这正是生产级部署的核心诉求。Bento 架构如下图所示从仓库源码看Bento 的构建由 build_config.py 中的BentoBuildConfig负责驱动bentoml build命令在 bentos.py 中通过build_bentofile完成从构建上下文到 Bento 产物的转换。整个构建流程围绕代码 依赖 模型 配置四要素展开这与上文架构图一一对应。定义运行时环境Image 与 bentoml.service构建 Bento 之前你需要先定义其运行时环境。BentoML 通过bentoml.images.Image描述基础镜像、Python 版本、系统包与 Python 依赖并通过bentoml.service装饰器中的image与envs参数将其应用到 Service 上。最小示例service.py以下示例定义了一个名为Summarization的服务使用 Python 3.11并声明torch、transformers两个 Python 依赖import bentoml my_image bentoml.images.Image(python_version3.11) \ .python_packages(torch, transformers) bentoml.service( imagemy_image, envs[ {name: HF_TOKEN}, # 可省略 value在部署时再设置 {name: DB_HOST, value: localhost} ] ) class Summarization: ...关键环境字段说明字段说明默认值python_version指定使用的 Python 版本格式如3.11构建环境中当前运行的 Python 版本见 images.py 中DEFAULT_PYTHON_VERSION f{sys.version_info.major}.{sys.version_info.minor}python_packages列出所需 Python 包支持链式调用chain call无requirements_file(requirements.txt)通过 requirements 文件批量声明依赖等价于将文件内容逐行加入python_requirements无python_packages与requirements_file的底层实现位于 images.py 与 images.py两者都会把依赖写入python_requirements并置_after_pip_install True后续由freeze()统一生成requirements.txt。envs声明运行时环境变量在bentoml.service装饰器中除image外还可通过envs参数指定所需环境变量。每个条目是一个字典支持仅声明名称省略 value如{name: HF_TOKEN}值在部署时再注入——适合存放 token、密钥等敏感信息声明名称与默认值如{name: DB_HOST, value: localhost}为本地运行提供默认配置。envs的底层类型为ServiceEnvConfig在 factory.py 中通过convert_envs转换为BentoEnvSchema。该 Schema 在 build_config.py 中定义除name、value外还支持stage字段取值为all、build、runtime默认all用于区分环境变量生效的阶段——构建阶段如私有镜像源凭据与运行时阶段。更多可定制字段如需进一步定制构建Image还提供以下链式方法均定义在 images.pysystem_packages(...)按发行版包管理器安装系统级依赖requirements_file(path)/pyproject_toml(path)从文件导入依赖run(cmd)/run_script(script)在镜像构建时执行命令或脚本build_include(...)额外纳入构建上下文的文件或目录distro与base_image选择发行版默认debian或完全自定义基础镜像。构建 Bentobentoml build在service.py所在目录下执行bentoml build构建行为说明默认情况下该命令会打包执行目录下的所有文件。如需排除特定文件或目录可在目录中定义.bentoignore文件语法与.gitignore一致BentoML 使用pathspec解析忽略规则见 build_config.py。构建完成后每个 Bento 会被自动分配一个唯一版本号。该版本基于构建上下文内容计算生成保证同一份代码产出的 Bento 可复现、可追溯。若只想构建而不部署到 BentoCloud应使用bentoml build若希望构建后直接部署到 BentoCloud则应使用bentoml deploy详见 cloud-deployment。从源码看bentoml build命令定义于 bentos.py其完整签名包含以下常用选项选项作用-f / --bentofile指定 bentofile 配置文件默认bentofile.yaml-n / --name覆盖 Bento 名称--version覆盖 Bento 版本号--labels附加标签keyvalue格式-o / --output输出格式default或tagtag模式只打印__tag__:tag便于脚本消费--push构建后推送到 BentoCloud需先执行bentoml cloud login--containerize构建后直接容器化等价于追加执行bentoml containerize tag--platform指定构建目标平台构建成功后命令会打印后续可执行步骤包括bentoml deploy、bentoml containerize与bentoml push。查看已构建的 Bentobentoml listbentoml list该命令列出本地 Bento Store 中所有可用的 Bento也可追加名称筛选某一 Bento 的全部版本例如bentoml list Summarization。其实现位于 bentos.py底层通过BentoStore.list读取本地存储。容器化 Bentobentoml containerize构建完成后可借助 Docker 将 Bento 容器化。只需执行bentoml containerize summarization:latestBento 标签tag采用name:version格式其中latest会自动指向最近构建的版本。默认生成的 Docker 镜像 tag 与 Bento tag 相同例如summarization:lkpxx2u5o24wpxjr。可用-t / --image-tag指定自定义镜像 tag甚至可为镜像名加上仓库主机名前缀以便推送例如bentoml containerize summarization:latest -t myrepo.com:username/summarization。可通过--backend选择 OCI 构建后端默认docker仓库注册的可用后端为docker、buildx、buildah、podman、nerdctl、buildctl见 container/init.py。底层会优先启用 BuildKit如需关闭可设置DOCKER_BUILDKIT0。Apple Silicon 的兼容性处理对于搭载 Apple siliconM 系列芯片的 Mac部分 Python 库可能存在兼容性问题可通过--platform指定构建/运行平台bentoml containerize --platformlinux/amd64 summarization:latest这与bentoml build --platform的行为一致仓库源码在非 Linux x86_64 环境下会自动以DEFAULT_LOCK_PLATFORM锁定 PyPI 包版本见 images.py确保依赖解析面向目标平台。查看生成的 Docker 镜像$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE summarization lkpxx2u5o24wpxjr 79a06b402644 2 minutes ago 6.66GB注意镜像体积较大上例约 6.66GB属正常现象因为镜像内包含完整的 Python 运行时、依赖包与模型产物。在本地运行容器化的模型服务拿到镜像后即可在任何 Docker 兼容环境中运行docker run -it --rm -p 3000:3000 summarization:lkpxx2u5o24wpxjr serve参数说明-it以交互模式运行便于观察日志--rm容器退出后自动清理-p 3000:3000将容器内 3000 端口映射到宿主机BentoML 服务默认监听 3000 端口serve传入的启动命令指示镜像以服务模式启动镜像入口点封装在 container/frontend/dockerfile 生成的entrypoint.sh中。运行后即可通过http://localhost:3000访问服务 API。由此同一个 Bento 镜像可被推到任何 Docker 兼容环境本地、云主机、Kubernetes运行实现一次打包、随处部署。总结与完整流程回顾一条完整的打包即部署流水线如下定义运行时环境在service.py中用bentoml.images.Image声明 Python 版本与依赖用bentoml.service(image..., envs...)绑定到服务构建 Bento在service.py目录执行bentoml build得到带唯一版本号的 Bento可用bentoml list查看容器化执行bentoml containerize bento_tag生成同 tag 的 Docker 镜像运行与分发docker run在本地启动服务或将镜像推送到任意 Docker 兼容环境。整个过程以 Bento 这一标准化格式为中枢配合Image的声明式环境定义与envs的环境变量注入让 AI 服务的构建、交付与运行保持高度一致性和可复现性。若你的目标是直接部署到 BentoCloud则可跳过手动构建参考 cloud-deployment 使用bentoml deploy一步到位。赞分享模型推理服务人工智能后端大模型MLOpsLLMOps【免费下载链接】BentoMLThe easiest way to serve AI apps and models - Build Model Inference APIs, Job queues, LLM apps, Multi-model pipelines, and more!项目地址https://gitcode.com/gh_mirrors/be/BentoML点击查看免费下载相关推荐BentoML Bento 构建选项Build Options完整指南从 bentofile.yaml 到可部署 Bento 的运行时规格配置BentoML Bento 构建选项Build Options完整指南从 bentofile.yaml 到可部署 Bento 的运行时规格配置 Bento模型推理服务人工智能后端大模型MLOpsLLMOpsZenML 集成 BentoML Model Deployer 实战从 Bento 构建到本地 HTTP 与容器化模型部署ZenML 集成 BentoML Model Deployer 实战从 Bento 构建到本地 HTTP 与容器化模型部署 本文以 ZenML 官方文档《BeMLOps机器学习后端工作流自动化AI AgentMDCX容器化部署实战从零构建高效应用运行环境MDCX容器化部署实战从零构建高效应用运行环境 在现代化应用部署中容器化技术已成为提升效率的关键手段。MDCX Docker项目通过精心设计的容器镜像为技DevOps容器编排上一篇3分钟掌握DeepL Chrome翻译插件免费开源工具让外文网页阅读零障碍下一篇Midday 大批量附件导出到 Xero 需要多长时间怎么估算并避开每日 5000 次调用上限创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

【外设】之大彩串口显示屏 2026/11/10 4:49:37

【外设】之大彩串口显示屏

大彩串口屏初步使用 1 .官网下载 STM32 屏幕 GUI 设计资料 http://www.gz-dc.com/category/typeid/4112 找到 STM32 Keil 工程,移植相关代码因项目而异进行移植,由于项目简单,本人只对用到的指令接口进行修改。 比如:注意事项&…

阅读更多 →
无法下载Windows系统iso文件 2026/11/10 19:42:40

无法下载Windows系统iso文件

当我遇到这个问题的时候,我打开了一个网站: 登录 然后我打算下载的时候: 突然那个官方的连接就可以下载了:

阅读更多 →
【清华代码熊】DeepSeek V4.1 Flash 后训练详解 2026/11/10 9:14:31

【清华代码熊】DeepSeek V4.1 Flash 后训练详解

📌 上期解析了 DeepSeek V4.1 Flash 模型架构改进,本期解析 DeepSeek V4.1 Flash 预训练/后训练技术: 🌟 预训练:45T 文本 多模态混合语料、直接训练 sparse attention(取消 DeepSeek V4 的 dense 冷启动&…

阅读更多 →
Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ... 2026/11/10 1:10:29

Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ...

文章主要内容和创新点 主要内容 本文聚焦于多模态大语言模型(MLLM)强化学习(RL)训练中的效率问题,提出了一个名为Shuffle-R1的框架。研究发现,当前RL训练存在两个关键缺陷: 优势值坍缩(Advantage Collapsing):批次中大多数优势值集中在零附近,导致有效梯度信号被淹…

阅读更多 →
PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction 2026/11/10 15:15:31

PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction

一、文章主要内容总结 本文聚焦于利用大型语言模型(LLMs)实现个人身份信息(PII)脱敏的研究,旨在解决传统脱敏方法(如基于规则的系统、领域特定命名实体识别(NER)模型)泛化能力差、跨格式/跨语境适应性弱的问题。 研究通过全面评估多种LLM架构(包括密集型LLM(D-LLM…

阅读更多 →
LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model 2026/11/10 17:14:10

LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model

文章主要内容和创新点 主要内容 本文聚焦于二进制图像-文本相关性评估任务(判断图像与文本“相关”或“不相关”),针对该任务中文本格式多样、相关性定义随场景变化等挑战,提出了基于多模态大语言模型(MLLM)的解决方案LLaVA-RE。 模型设计:LLaVA-RE基于LLaVA 1.5架构,…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉