)
模型推理服务人工智能后端大模型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 官方示例docs/source/examples/vllm.rst展开讲解如何用 BentoML 将 vLLM 内置的 HTTP 服务器包装成可部署、可自动扩缩容的推理 Service并以 Llama-3.1-8B-Instruct 为例完成从本地bentoml serve到 BentoCloud 云端部署的完整流程。读完本文你将掌握模板参数、运行时镜像、HuggingFaceModel模型引用、__command__自定义启动命令等关键机制并能用 OpenAI 客户端直接调用你部署的端点。为什么用 vLLM BentoML 组合vLLM 是为 LLM 高效推理而生的库支持 gpt-oss、DeepSeek、Qwen、Llama 等主流模型。它的核心优化包括PagedAttention以分页方式管理 KV cache显著提升显存利用率与注意力内存管理效率Continuous batching连续动态批处理提高服务吞吐多种推理优化技术prefill-decode disaggregation预填充与解码分离、speculative decoding投机解码、KV cache offloadingKV 缓存卸载等。而 BentoML 负责把 vLLM 的推理能力封装成一个标准的 Bento统一分发格式使其获得可复现的依赖环境、OpenAI 兼容端点、本地开发体验与云端一键部署/自动扩缩容能力。两者各司其职vLLM 管推理引擎BentoML 管打包、服务与运维。本例面向聊天交互场景暴露 OpenAI 兼容端点。例如向模型提交如下消息{ role: user, content: Who are you? Please respond in pirate speak! }模型示例输出Ye be wantin to know who I be, eh? Alright then, listen close and Ill tell ye me story. I be a wight computer program, a vast and curious brain with abilities beyond yer wildest dreams. Me name be Assistant, and I be servin ye now. ...代码剖析service.py 分步讲解完整示例项目位于BentoVLLM仓库的llama3.1-8b-instruct目录核心代码集中在service.py共五步。1. 用use_arguments定义模型与 GPU 模板参数示例使用 Llama-3.1-8B-Instruct该模型需要从 Hugging Face 获取访问权限gated model。你可以替换为 BentoVLLM 仓库中的其他 LLM或任何 vLLM 支持的模型。import pydantic import bentoml # Use Pydantic to validate data class BentoArgs(pydantic.BaseModel): name: str llama3.1-8b-instruct gpu_type: str nvidia-h100-80gb tp: int 1 # One GPU here for tensor parallelism model_id: str meta-llama/Meta-Llama-3.1-8B-Instruct # Other optional fields omitted for brevity bento_args bentoml.use_arguments(BentoArgs)这是 BentoML 的**模板参数template arguments**机制通过 Pydantic 模型声明参数结构在 serve、build、deploy 阶段都可以用--arg namevalue动态传入并被校验代码中则可以像普通 Python 变量一样引用。从源码看use_arguments实现在 src/bentoml/_internal/utils/args.py若传入 Pydantic 模型则用其解析并校验bento_arguments校验失败抛出InvalidArgument提示通过--arg提供正确参数若模型为None则返回可直接按属性访问的SimpleNamespace。因此上例中bento_args.tp、bento_args.model_id等值在命令行未覆盖时即为默认值。2. 定义 Bento 的运行时环境Bento 是 BentoML 的统一分发格式打包了全部源码、Python 依赖、模型引用与环境配置保证跨环境部署的一致性。运行时环境用bentoml.images.Image声明image ( bentoml.images.Image(python_version3.12).system_packages(curl, git).requirements_file(requirements.txt) )python_version3.12指定基础镜像的 Python 版本system_packages(curl, git)安装系统级工具包requirements_file(requirements.txt)引入项目依赖清单。从源码看这些方法支持链式调用src/_bentoml_sdk/images.pysystem_packages会校验发行版是否在支持列表中requirements_file将依赖文件注入镜像构建流程。示例依赖中通常包含vllm、bentoml与相应框架组件这些将由 vLLM 与 uv 在镜像构建阶段安装。3. 用bentoml.service装饰器声明 Service 配置bentoml.service装饰器用于定义一个 BentoML Service你可以在此定制模型的服务方式包括超时时间、GPU 资源等详见 docs/source/reference/bentoml/configurations.rst。部分字段可直接引用上面的模板参数bentoml.service( namebento_args.name, envs[ {name: UV_NO_PROGRESS, value: 1}, {name: UV_TORCH_BACKEND, value: cu128}, # Env vars here for uv and vllm ], imageimage, # Apply the runtime specs traffic{timeout: 300}, resources{ gpu: bento_args.tp, gpu_type: bento_args.gpu_type }, # More optional fields ) class LLM:关键字段含义nameService 名称来自模板参数默认llama3.1-8b-instructenvs服务进程的环境变量。这里UV_NO_PROGRESS1关闭 uv 安装进度条UV_TORCH_BACKENDcu128指定 PyTorch 的 CUDA 后端版本二者服务于 uv 依赖安装与 vLLM 的 Torch 构建image应用上一步定义的运行时镜像规格traffic{timeout: 300}请求超时配置。LLM 长文本生成耗时可能远超常规 HTTP 请求需要放宽超时从 src/_bentoml_sdk/service/config.py 可见traffic属于 Service 级每副本配置项与resources、workers等同级resources{gpu: bento_args.tp, gpu_type: bento_args.gpu_type}GPU 资源声明。tptensor parallelism即张量并行度示例为 1 张 H100 80GBgpu_type指定在 BentoCloud 上申请的具体 GPU 型号。更多资源字段可参考 Service 配置文档。4. 用HuggingFaceModel声明模型引用在类内部将模型定义为类变量通过HuggingFaceModel声明对 Hugging Face 模型的引用class LLM: hf_model bentoml.models.HuggingFaceModel(bento_args.model_id, exclude[.pth, .pt, original/**/*])exclude参数用于排除不需要下载的文件如.pth、.pt权重备份与original/原始权重目录从而缩小下载体积、减少镜像构建时间与冷启动时间。从源码看src/_bentoml_sdk/models/huggingface.pyHuggingFaceModel是一个模型引用对象包含model_id、revision默认main、endpoint默认官方 HF 端点可用环境变量HF_ENDPOINT覆盖、include/exclude等字段。它在resolve()阶段通过huggingface_hub.snapshot_download实际拉取模型并用 commit hash 固化版本to_info()生成带 registry、metadata 的BentoModelInfo使模型版本可被 Bento 追踪与复现。该符号在 src/bentoml/models.py 中被导出为bentoml.models.HuggingFaceModel。5. 用__command__启动 vLLM 内置服务器Service 可以直接运行 vLLM 自带的 HTTP 服务器从而暴露 OpenAI 兼容端点。额外 CLI 参数编译选项、max length、KV dtype 等都可在此追加class LLM: hf_model hf_model def __command__(self) - list[str]: return [ vllm, serve, self.hf_model, # ...extra CLI args (compilation, max length, kv dtype, etc.) --served-model-name, bento_args.model_id, ]vllm serve model-path是 vLLM 的官方服务命令self.hf_model会解析为已下载的模型路径--served-model-name设置对外暴露的模型名这里直接复用模板参数model_id方便客户端按名称请求。从源码结构看src/_bentoml_sdk/service/factory.py 通过has_custom_command()检测类是否定义了__command__或显式传入cmd一旦存在自定义命令Service 就以该命令作为进程启动入口并会自动按 CPU 核数推断默认 worker 数。这意味着你完全可以用同样的方式启动任意自定义推理进程BentoML 只负责进程编排与流量接入。以上就是基本配置的全部内容。若想探索 FlashAttention、AMD ROCm 支持、KV cache 配置等进阶选项可参考 BentoVLLM 仓库中llama3.1-8b-instruct/service.py的完整源码——BentoML 允许为你的用例完全定制推理代码。在 BentoCloud 上部署BentoCloud 提供在云端构建与扩展 AI 应用的基础设施本例开箱即可部署与扩缩容。登录与创建 Secret先安装 BentoML 并通过 CLI 登录 BentoCloud登录方式详见 docs/source/scale-with-bentocloud/manage-api-tokens.rst若没有账号可先在官网免费注册pip install bentoml bentoml cloud login接着克隆BentoVLLM仓库并进入示例项目。建议先在 BentoCloud 创建一个 Secret 来存放所需的HF_TOKEN环境变量Secret 管理参考 docs/source/scale-with-bentocloud/manage-secrets-and-env-vars.rstgit clone https://github.com/bentoml/BentoVLLM.git cd BentoVLLM/llama3.1-8b-instruct bentoml secret create huggingface HF_TOKENyour-api-key bentoml deploy --secret huggingface调用 OpenAI 兼容端点部署完成后可以通过 BentoCloud Playground 的聊天界面直接交互也可以用 OpenAI Python 客户端调用from openai import OpenAI client OpenAI(base_urlhttps://llama-3-1-8-b-instruct-ckng-d3767914.mt-guc1.bentoml.ai/v1, api_keyna) # Use the following func to get the available models # client.models.list() chat_completion client.chat.completions.create( modelmeta-llama/Meta-Llama-3.1-8B-Instruct, messages[ { role: user, content: Who are you? Please respond in pirate speak! } ], streamTrue, ) for chunk in chat_completion: # Extract and print the content of the models reply print(chunk.choices[0].delta.content or , end)要点base_url设为 BentoML 服务器地址末尾带/v1代码中的 Deployment URL 需替换为你自己的端点如何获取端点 URL 参考 docs/source/scale-with-bentocloud/deployment/call-deployment-endpoints.rst若你的 Deployment 开启了受保护端点需要先设置OPENAI_API_KEY为你的 BentoCloud API Keyexport OPENAI_API_KEY{YOUR_BENTOCLOUD_API_TOKEN}配置自动扩缩容为确保 Deployment 在指定副本范围内自动伸缩部署时追加 scaling 参数bentoml deploy --secret huggingface --scaling-min 0 --scaling-max 3 # Set your desired count若已部署完成可通过 update 命令调整允许的副本范围bentoml deployment update deployment-name --scaling-min 0 --scaling-max 3 # Set your desired count--scaling-min设为 0 可让空闲时缩到零副本节省成本--scaling-max决定流量高峰时可扩展的上限。更完整的并发与自动扩缩容配置说明见 docs/source/scale-with-bentocloud/scaling/autoscaling.rst。本地运行与测试BentoML 允许在本地运行和验证代码帮助你用本地计算资源快速确认逻辑正确性。克隆仓库并进入目标项目安装依赖推荐 Python 3.11导出 Hugging Face Tokengit clone https://github.com/bentoml/BentoVLLM.git cd BentoVLLM/llama3.1-8b-instruct # Recommend Python 3.11 pip install -r requirements.txt export HF_TOKENyour-hf-token本地启动服务bentoml serve注意在本地运行 Llama 3.1 8B Instruct 需要至少 16G 显存的 NVIDIA GPU。通过 OpenAI 兼容端点调用默认地址为http://localhost:3000/v1from openai import OpenAI client OpenAI(base_urlhttp://localhost:3000/v1, api_keyna) completion client.chat.completions.create( modelmeta-llama/Meta-Llama-3.1-8B-Instruct, messages[{role: user, content: Who are you? Please respond in pirate speak!}], streamTrue, ) for chunk in completion: print(chunk.choices[0].delta.content or , end)本地验证通过后若要部署到自有基础设施可让 BentoML 生成 OCI 兼容镜像见 docs/source/get-started/packaging-for-deployment.rst再推送到任意容器平台运行。小结通过本文你已掌握 BentoML vLLM 部署 LLM 推理服务的完整套路模板参数use_arguments Pydantic将模型名、GPU 类型、张量并行度等配置参数化serve/build/deploy 阶段均可动态注入并校验运行时镜像bentoml.images.Image声明 Python 版本、系统包与依赖清单保证跨环境一致Service 装饰器集中声明环境变量、超时与 GPU 资源HuggingFaceModel以引用方式声明模型配合include/exclude精简下载体积、固化版本__command__直接复用 vLLM 内置 HTTP 服务器免费获得 OpenAI 兼容端点。无论你选择本地bentoml serve快速验证还是 BentoCloud 一键部署并配置--scaling-min/--scaling-max自动扩缩容这套模式都让你把精力集中在模型与推理本身而非基础设施细节。赞分享模型推理服务人工智能后端大模型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点击查看免费下载相关推荐Czkawka/Krokiet 重复文件清理完整指南免费开源支持 Win、Linux、macOS 与 AndroidCzkawka/Krokiet 重复文件清理完整指南免费开源支持 Win、Linux、macOS 与 Android Czkawka 是一款完全免费开源的文桌面应用MiniCPM5-1B 生产级部署实战基于 vLLM 搭建 OpenAI 兼容推理服务MiniCPM5 1B 生产级部署实战基于 vLLM 搭建 OpenAI 兼容推理服务 vLLM 官方在 0.21 版本中原生支持 MiniCPM5 1B人工智能大模型基础模型本地部署微调模型量化openBMBwvp-GB28181-pro快速搭建自己的 GB28181 国标视频平台30 分钟让摄像头跑起来wvp GB28181 pro快速搭建自己的 GB28181 国标视频平台30 分钟让摄像头跑起来 假设你现在的情况是这样新买的海康摄像头要接进监控系统后端音视频前端上一篇终极CAPEv2 YARA签名实战如何编写高效恶意软件检测规则下一篇PyTorch-VAE损失函数对比MSE、BCE与SSIM的实验分析创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考