10 KiB
Note
本文档由 WeHub 基于上游 README 翻译整理,属于社区翻译,非官方中文文档。
English · 原始项目 · 上游 README
原作者、版权与许可证归属以原始项目及本仓库 LICENSE 文件为准。
OpenLLM 让开发者只需一条命令,即可将任意开源 LLM(Llama 3.3、Qwen2.5、Phi3 及更多)或自定义模型作为兼容 OpenAI 的 API 运行。它提供内置聊天 UI、最先进的推理后端,以及通过 Docker、Kubernetes 和 BentoCloud 创建企业级云部署的简化工作流。
了解 OpenLLM 的设计理念.
快速开始
运行以下命令安装 OpenLLM 并交互式探索。
pip install openllm # or pip3 install openllm
openllm hello
支持的模型
OpenLLM 支持广泛的最先进开源 LLM。你也可以添加模型仓库以运行自定义模型 并在 OpenLLM 中使用。
| 模型 | 参数量 | 所需 GPU | 启动服务 |
|---|---|---|---|
| deepseek | r1-671b | 80Gx16 | openllm serve deepseek:r1-671b |
| gemma2 | 2b | 12G | openllm serve gemma2:2b |
| gemma3 | 3b | 12G | openllm serve gemma3:3b |
| jamba1.5 | mini-ff0a | 80Gx2 | openllm serve jamba1.5:mini-ff0a |
| llama3.1 | 8b | 24G | openllm serve llama3.1:8b |
| llama3.2 | 1b | 24G | openllm serve llama3.2:1b |
| llama3.3 | 70b | 80Gx2 | openllm serve llama3.3:70b |
| llama4 | 17b16e | 80Gx8 | openllm serve llama4:17b16e |
| mistral | 8b-2410 | 24G | openllm serve mistral:8b-2410 |
| mistral-large | 123b-2407 | 80Gx4 | openllm serve mistral-large:123b-2407 |
| phi4 | 14b | 80G | openllm serve phi4:14b |
| pixtral | 12b-2409 | 80G | openllm serve pixtral:12b-2409 |
| qwen2.5 | 7b | 24G | openllm serve qwen2.5:7b |
| qwen2.5-coder | 3b | 24G | openllm serve qwen2.5-coder:3b |
| qwq | 32b | 80G | openllm serve qwq:32b |
完整模型列表请参阅 OpenLLM 模型仓库.
启动 LLM 服务
要在本地启动 LLM 服务,请使用 openllm serve 命令并指定模型版本。
Note
OpenLLM 不存储模型权重。访问受限(gated)模型需要 Hugging Face 令牌(HF_TOKEN)。
- 在此处. 创建你的 Hugging Face 令牌
- 申请受限模型的访问权限,例如 meta-llama/Llama-3.2-1B-Instruct.
- 通过运行以下命令将令牌设置为环境变量:
export HF_TOKEN=<your token>
openllm serve llama3.2:1b
服务将在 http://localhost:3000, 处可用,提供兼容 OpenAI 的 API 用于交互。你可以使用支持兼容 OpenAI API 的不同框架和工具调用端点。通常,你可能需要指定以下内容:
- API 主机地址:默认情况下,LLM 托管于 http://localhost:3000.
- 模型名称: 名称可能因你使用的工具而异。
- API 密钥:用于客户端身份验证的 API 密钥。此项为可选。
以下是一些示例:
OpenAI Python 客户端
from openai import OpenAI
client = OpenAI(base_url='http://localhost:3000/v1', api_key='na')
# Use the following func to get the available models
# model_list = client.models.list()
# print(model_list)
chat_completion = client.chat.completions.create(
model="meta-llama/Llama-3.2-1B-Instruct",
messages=[
{
"role": "user",
"content": "Explain superconductors like I'm five years old"
}
],
stream=True,
)
for chunk in chat_completion:
print(chunk.choices[0].delta.content or "", end="")
LlamaIndex
from llama_index.llms.openai import OpenAI
llm = OpenAI(api_bese="http://localhost:3000/v1", model="meta-llama/Llama-3.2-1B-Instruct", api_key="dummy")
...
聊天 UI
OpenLLM 在 /chat 端点为 http://localhost:3000/chat. 上启动的 LLM 服务提供聊天 UI。
在 CLI 中与模型对话
要在 CLI 中开始聊天对话,请使用 openllm run 命令并指定模型版本。
openllm run llama3:8b
模型仓库
OpenLLM 中的模型仓库表示你可运行的可用 LLM 目录。OpenLLM 提供默认模型仓库,包含 Llama 3、Mistral 和 Qwen2 等最新开源 LLM,托管于此 GitHub 仓库. 要查看默认仓库及任何已添加仓库中的所有可用模型,请运行:
openllm model list
为确保本地模型列表与所有已连接仓库的最新更新同步,请运行:
openllm repo update
要查看模型信息,请运行:
openllm model get llama3.2:1b
向默认模型仓库添加模型
你可以通过添加他人可使用的新模型来为默认模型仓库做贡献。这涉及创建并提交 LLM 的 Bento。更多信息请参阅此示例拉取请求.
设置自定义仓库
你可以将包含自定义模型的自有仓库添加到 OpenLLM。为此,请遵循默认 OpenLLM 模型仓库的格式,使用 bentos 目录存储自定义 LLM。你需要使用 BentoML 构建 Bentos 并将其提交到你的模型仓库。
首先,按照 BentoML 构建 Bentos 指南. 在 bentos 目录中准备自定义模型。可参考默认模型仓库 示例,并阅读开发者指南 了解详情。
接下来,在 OpenLLM 中注册你的自定义模型仓库:
openllm repo add <repo-name> <repo-url>
注意:目前,OpenLLM 仅支持添加公开仓库。
部署到 BentoCloud
OpenLLM 支持通过 BentoML(统一模型服务框架)和 BentoCloud(面向企业 AI 团队的 AI 推理平台)进行 LLM 云端部署。BentoCloud 提供针对 LLM 推理优化的全托管基础设施,具备自动扩缩容、模型编排、可观测性等众多功能,让你能够在云端运行任意 AI 模型。
注册 BentoCloud 免费账号,并登录. 然后运行 openllm deploy 将模型部署到 BentoCloud:
openllm deploy llama3.2:1b --env HF_TOKEN
Note
如果你正在部署受限(gated)模型,请确保在环境变量中设置 HF_TOKEN。
部署完成后,你可以在 BentoCloud 控制台运行模型推理:
社区
OpenLLM 由 BentoML 团队积极维护。欢迎与我们联系,加入我们一起让 LLM 更易获取、更易使用的努力 👉 加入我们的 Slack 社区!
贡献
作为开源项目,我们欢迎各类贡献,例如新功能、缺陷修复和文档改进。以下是一些贡献方式:
- 通过创建 GitHub issue. 报告缺陷
- 提交 pull request,或帮助审查其他开发者的 pull request.
- 将 LLM 添加到 OpenLLM 默认模型仓库,以便其他用户运行你的模型。请参阅 pull request 模板.
- 查看开发者指南 了解更多。
致谢
本项目使用了以下开源项目:
- bentoml/bentoml 用于生产级模型服务
- vllm-project/vllm 用于生产级 LLM 后端
- blrchen/chatgpt-lite 用于精美的 Web 聊天 UI
- astral-sh/uv 用于极速安装模型依赖
我们感谢这些项目的开发者和贡献者所付出的辛勤工作与奉献。