
人工智能大模型模型推理服务本地部署LLMOps【免费下载链接】OpenLLMRun any open-source LLMs, such as DeepSeek and Llama, as OpenAI compatible API endpoint in the cloud.项目地址https://gitcode.com/gh_mirrors/op/OpenLLM点击查看免费下载OpenLLM 是一个让开发者用一条命令即可将任意开源大模型如 Llama 3.3、Qwen2.5、Phi 系列或自定义模型以 OpenAI 兼容 API 形式本地运行、云端部署的工具。本文基于仓库根目录的 DEVELOPMENT.md 开发者指南完整讲解从 Fork/Clone 仓库、配置开发环境到通过recipe.yaml配方新增模型、生成 Bento、维护 Bento 仓库与自定义模型仓库的整套协作流程同时结合本仓库源码src/openllm/给出底层实现佐证帮助你快速成为一名合格的 OpenLLM 贡献者。一、文档定位DEVELOPMENT.md 在仓库中的作用DEVELOPMENT.md 是 OpenLLM 面向贡献者的官方开发者指南也是本仓库 README 中「Contributing」一节反复引用的入口文档见 README.md。它解决的核心问题是一个外部开发者如何从零开始把一个新的开源 LLM 接入 OpenLLM 生态。OpenLLM 的架构决定了这条贡献路径的形态CLI 工具入口在 src/openllm/main.py通过「模型仓库repo」拉取模型清单每个模型对应一个 BentoML 的 Bento由bento.yaml描述见 src/openllm/common.py 中BentoInfo.bento_yaml的解析逻辑而 Bento 的「配方」则由recipe.yaml定义。因此新增模型本质上是写配方 → 生成 Bento → 提交 PR → 模型进入官方仓库这也是本文后续所有实操步骤的底层逻辑。说明当前仓库是 OpenLLM 的 CLI 源码仓库即openllm包本身见 pyproject.tomlrecipe.yaml与vllm-chat/chat_templates/目录实际维护在官方的 openllm-models 模型仓库中。DEVELOPMENT.md 中描述的工作流以这两个仓库为协作对象下文会明确标注每一步操作对应的仓库与源码依据。二、开发环境搭建Fork、Clone 与 upstream 同步DEVELOPMENT.md 给出了 6 步环境搭建流程目标是把官方仓库与你的本地副本建立标准的 GitHub Fork 协作关系。2.1 前置依赖开始之前本机需要安装Git用于克隆与提交代码Python 3.8OpenLLM 的运行环境。从 pyproject.toml 看当前版本实际要求requires-python 3.9支持的 Python 版本涵盖 3.83.12含 PyPy因此按文档安装 3.8 即可兼容绝大多数本地环境。2.2 标准 Fork 工作流# 1) Fork 官方仓库后克隆你自己的副本 git clone gitgithub.com:username/OpenLLM.git cd openllm # 2) 将官方仓库添加为 upstream 远程源 git remote add upstream gitgithub.com:bentoml/OpenLLM.git # 3) 切换到 main 分支并让本地 main 追踪 upstream/main git switch main # 确保你在 main 分支 git fetch upstream --tags git branch --set-upstream-toupstream/main完成上述配置后本地main与官方main建立了追踪关系后续可用git pull upstream main保持同步。2.3 可选固定 Python 版本ln .python-version-default .python-version仓库根目录存在 .python-version-default 文件内容为3.11这是官方 CI 与本地开发统一使用的 Python 版本.pre-commit-config.yaml 中default_language_version: python: python3.11与之一致。该步骤的作用是让支持.python-version的工具如 pyenv、uv读取到统一版本若你的环境没有这类工具可跳过。2.4 本地代码规范校验源码级佐证仓库通过 .pre-commit-config.yaml 配置了完整的 pre-commit 检查链提交代码前建议本地运行pre-commit run --all-files包含ruff / ruff-formatPython 静态检查与格式化--fix自动修复mypy以--strict严格模式做类型检查editorconfig-checker校验缩进与行尾风格trailing-whitespace / end-of-file-fixer / check-yaml / check-toml等基础钩子。三、核心工作流一通过 recipe.yaml 新增模型DEVELOPMENT.md 指出recipe.yaml 包含生成新 LLM Bento 所需的全部关联元数据是新增模型的第一站。一个完整的模型配方如下原文示例model_name:model_tag: project: vllm-chat service_config: name: phi3 traffic: timeout: 300 resources: gpu: 1 gpu_type: nvidia-tesla-l4 engine_config: model: microsoft/Phi-3-mini-4k-instruct max_model_len: 4096 dtype: half chat_template: phi-33.1 五个核心字段逐项拆解字段含义取值约定 / 建议model_name模型类型名当前支持phi3、llama2、llama3、gemma等model_tag模型版本标识约定为model_size-model_type-precision[-quantization]project生成 Bento 所基于的项目模板目前多数模型使用vllm-chat作为默认值service_configBentoML 运行配置建议包含name与model_name一致与resourcesengine_configvLLM 引擎参数建议始终包含model、max_model_len、dtype、trust_remote_codechat_template聊天模板仅对话模型需要存放在 chat_templates 目录下3.2model_tag命名约定详解model_tag强调模型的类型与相关元数据格式为model_size-model_type-precision[-quantization]model_size参数量规模如3.8b、7bmodel_type模型用途类型如instruct指令微调、chat对话precision精度如fp16、fp32quantization可选量化方式如awq-4bit。原文给出的两个映射示例microsoft/Phi-3-mini-4k-instruct→3.8b-instruct-fp16TheBloke/Llama-2-7B-Chat-AWQ→7b-chat-awq-4bit这个命名直接决定了最终 Bento 的 tag。从源码看OpenLLM 的模型 tag 由 Bento 目录结构推导而来src/openllm/common.py 中BentoInfo.tag返回f{path.parent.name}:{path.name}即模型名:版本号因此 recipe 中的 tag 会被映射为模型仓库bentoml/bentos/name/version目录下的版本目录名并作为openllm serve name:tag等命令的输入标识见 README.md 中openllm serve llama3.2:1b等用法。3.3service_configBentoML 运行配置service_config承载 BentoML 相关的全部运行配置包括服务名、流量策略与资源规格service_config: name: phi3 # 服务名建议与 model_name 保持一致 traffic: timeout: 300 # 单次请求超时秒 resources: gpu: 1 # 需要的 GPU 数量 gpu_type: nvidia-tesla-l4 # GPU 型号见下方规格表DEVELOPMENT.md 特别用 NOTE 强调两个推荐字段name应与model_name相同——因为bento.yaml中的服务名/模型名会被 src/openllm/model.py 的list_bento用来做去重与展示resources声明可运行的加速器类型——它是本地/云端可行性判断的关键输入。GPU 型号规格表gpu_type的取值在 src/openllm/accelerator_spec.py 的ACCELERATOR_SPECS中硬编码常用值包括gpu_type显存gpu_type显存nvidia-tesla-l424Gnvidia-l424Gnvidia-tesla-t416Gnvidia-tesla-a10g24Gnvidia-tesla-v10016Gnvidia-tesla-a10040Gnvidia-a100-80g80Gnvidia-tesla-h10080Gnvidia-h200-141gb141Gnvidia-blackwell-b100192Gnvidia-rtx-309024Gnvidia-gtx-1080-ti11G这些规格会被can_run用于计算当前机器/云端实例能否运行该模型src/openllm/accelerator_spec.py 中模型要求的gpu_type显存需 ≤ 目标实例单卡显存且gpu数量需 ≤ 目标实例可用卡数否则返回 0.0不可运行。3.4engine_configvLLM 引擎参数engine_config是传给 vLLM 引擎的参数对应 vLLM 的AsyncEngineArgs。DEVELOPMENT.md 建议始终包含四个字段engine_config: model: microsoft/Phi-3-mini-4k-instruct # Hugging Face 模型 ID max_model_len: 4096 # 最大上下文长度token dtype: half # 推理精度如 half / float16 trust_remote_code: true # 允许执行远端代码自定义模型结构时必需这些参数最终通过bento.yaml的envs/服务配置注入到 vLLM 启动命令中见 src/openllm/local.py 中_get_serve_cmd构造bentoml serve tag命令并注入BENTOML_HOME环境变量的实现。3.5chat_template对话模板如果新模型是对话模型应配置chat_template并把对应的聊天模板文件放入vllm-chat/chat_templates/目录。该目录位于模型仓库openllm-models中与recipe.yaml同仓维护。四、核心工作流二生成并提交 Bento写完 recipe 之后下一步是实际生成 BentoBENTOML_HOME$(openllm repo default)/bentoml/bentos python make.py model_name:model_tag4.1 命令拆解$(openllm repo default)获取默认模型仓库在本地磁盘的缓存路径。该路径由 src/openllm/repo.py 的default命令输出实际为~/.openllm/repos/server/owner/repo/branch见 src/openllm/common.py 中OPENLLM_HOME/REPO_DIR的定义与 src/openllm/repo.py 的parse_repo_url路径拼装逻辑拼接上/bentoml/bentos得到 Bento 存储目录BENTOML_HOME指向它make.py生成的 Bento 就会落入该目录make.py是模型仓库中的生成脚本入参model_name:model_tag即 recipe 的键。4.2 底层机制本地模型如何被发现生成后的 Bento 目录结构为bentoml/bentos/model_name/version/OpenLLM 正是按这个 glob 模式扫描模型的src/openllm/model.py 中list_bento使用bentoml/bentos/*/*全部、bentoml/bentos/tag/*按名或bentoml/bentos/name/version精确版本三种 glob 模式遍历仓库目录并检查每个目录下是否存在bento.yaml来确认它是一个有效 Bento。4.3 提交 PRBento 生成并验证通过后把 recipe 改动提交为 Pull Request 到官方openllm仓库即可DEVELOPMENT.md 原文步骤 3。注意该 PR 针对的是模型仓库openllm-models中的 recipe 变更。五、核心工作流三维护生成的 Bento 与自定义仓库5.1 Adding bentos同步更新生成产物DEVELOPMENT.md 明确OpenLLM 还维护一个生成的 Bento 仓库。当你修改并重新生成 Bento 后需要同时做到两件事更新 recipe保证配方与产物一致把新生成的 Bento 提交到仓库的bentoml/bentos目录下。这样其他用户通过openllm repo update拉取模型仓库后就能直接使用最新的模型。5.2 Adding repos创建你自己的模型仓库如果你希望创建一个自己托管的 git 模型仓库应按官方 openllm-models 仓库的结构来组织核心要求是包含bentos目录存放自定义 Bento。接入 OpenLLM 只需一条命令openllm repo add repo_alias git_url这条命令的底层实现是 src/openllm/repo.py 的cmd_addrepo_alias会被强制转小写且必须是合法 Python 标识符仅含字母、数字、下划线否则报Invalid repo namegit_url必须能通过parse_repo_url的正则校验支持git://、ssh://、http(s)://与gitserver:owner/repo.git四种形态见 src/openllm/repo.py 的GIT_HTTP_RE/GIT_SSH_RE及解析逻辑URL 后可加branch指定分支默认main仓库信息写入~/.openllm/config.jsonsrc/openllm/common.py 的Config/save_config。5.3 仓库的拉取与更新机制新增仓库后模型清单来自远程仓库的克隆缓存src/openllm/repo.py 的cmd_update会对配置中所有仓库执行git clone --depth1 -b branch失败时回退到纯 Python 的dulwich克隆并清理不再使用的缓存目录。同时 OpenLLM 内置了一个3 天更新间隔UPDATE_INTERVALsrc/openllm/repo.py当本地缓存超过 3 天未更新时ensure_repo_updatedsrc/openllm/repo.py会提示你运行openllm repo update以获取最新模型列表。5.4 常见相关命令速查命令作用源码位置openllm repo list列出已配置仓库src/openllm/repo.pyopenllm repo add alias url新增自定义仓库src/openllm/repo.pyopenllm repo remove name移除仓库src/openllm/repo.pyopenllm repo update更新/克隆所有仓库缓存src/openllm/repo.pyopenllm repo default输出默认仓库本地路径src/openllm/repo.pyopenllm model list列出可用模型src/openllm/model.pyopenllm model get tag查看模型详情src/openllm/model.py六、贡献后的验证闭环从配方到可运行完成一次完整的模型贡献后建议按以下顺序验证整条链路是否打通仓库层面openllm repo update确保本地模型清单最新触发条件见上文 3 天间隔机制模型层面openllm model list能看到新模型openllm model get model_name:tag能查到详情src/openllm/model.py 的get底层会调用ensure_bento做存在性校验运行层面openllm serve model_name:tag启动 OpenAI 兼容服务默认端口 3000或openllm run在终端直接对话实现见 src/openllm/local.py 的serve与 src/openllm/local.py 的run资源校验OpenLLM 会在启动前调用can_run检查本机 GPU 是否满足 recipe 中resources的声明不足时会给出黄色警告src/openllm/model.py。另外模型贡献通常涉及多份环境变量如 gated 模型的HF_TOKEN这些变量定义在bento.yaml的envs中运行时由 src/openllm/local.py 的prep_env_vars注入当前进程云端部署时则由 src/openllm/cloud.py 的_get_deploy_cmd统一收集并透传给bentoml deploy。理解这条环境变量链路有助于排查 gated 模型部署失败等常见问题。七、小结OpenLLM 的贡献流程可以浓缩为一条主线在 recipe.yaml 中定义模型配方 → 用 make.py 生成 Bento 并提交到模型仓库 → 通过openllm repo add/update让 CLI 拉取到新模型。DEVELOPMENT.md 的六步环境搭建保证了 Fork 协作的规范性而recipe.yaml的五个核心字段project、service_config、engine_config、chat_template、tag 命名则决定了新模型能否被正确生成、识别与运行。结合本仓库源码你可以进一步在 src/openllm/accelerator_spec.py 验证资源可行性判断、在 src/openllm/repo.py 追踪仓库管理机制、在 src/openllm/model.py 理解模型发现逻辑从而把一个模型从配方完整地变成人人可用的 OpenAI 兼容 API。赞分享人工智能大模型模型推理服务本地部署LLMOps【免费下载链接】OpenLLMRun any open-source LLMs, such as DeepSeek and Llama, as OpenAI compatible API endpoint in the cloud.项目地址https://gitcode.com/gh_mirrors/op/OpenLLM点击查看免费下载相关推荐OpenLLM项目开发指南从环境搭建到模型贡献OpenLLM项目开发指南从环境搭建到模型贡献 项目概述 OpenLLM是一个专注于大型语言模型 LLM 部署与管理的开源项目它基于BentoML框架构建人工智能大模型模型推理服务本地部署LLMOpsSAHI 开发者贡献指南从环境搭建到新增检测模型支持的完整开发流程SAHI 开发者贡献指南从环境搭建到新增检测模型支持的完整开发流程 SAHISlicing Aided Hyper Inference是一个面向大图小目标计算机视觉人工智能pyinfra 贡献者指南从开发环境搭建到新增 Operation、Fact 与 Connector 的完整流程pyinfra 贡献者指南从开发环境搭建到新增 Operation、Fact 与 Connector 的完整流程 导读 本指南基于 pyinfra 仓库的 dDevOps配置管理运维上一篇GHelper惊艳体验华硕笔记本性能优化的革命性工具深度评测下一篇如何利用LeetDown轻松完成老款iPhone/iPad系统降级完整操作指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考