catalog/repos/0xsero--vllm-studio.md

173 lines
5.2 KiB
Markdown
Raw Permalink Normal View History

2026-04-07 11:44:56 +08:00
# vLLM推理模型管理
`vLLM` `SGLang` `模型推理` `LLM` `推理服务器`
# vLLM Studio
面向 vLLM 和 SGLang 推理服务器的模型生命周期管理工具。
## 功能概述
- **启动/卸载模型** — 支持 vLLM 或 SGLang 后端
- **保存配方** — 可复用的模型配置,支持完整参数设置
- **推理支持** — 自动检测 GLM`glm45`、INTELLECT-3`deepseek_r1`)和 MiniMax`minimax_m2_append_think`)解析器
- **工具调用** — 原生函数调用支持自动工具选择GLM 和 INTELLECT-3 模型自动检测)
- **Web 界面** — 用于聊天、模型管理和使用分析
- **LiteLLM 集成** — 提供 API 网关功能(可选)
## 架构
```
┌──────────┐ ┌────────────┐ ┌─────────────┐
│ 客户端 │─────▶│ 控制器 │─────▶│ vLLM/SGLang │
│ │ │ :8080 │ │ :8000 │
└──────────┘ └────────────┘ └─────────────┘
┌─────┴─────┐
│ Web 界面 │
│ :3000 │
└───────────┘
```
**可选:** 添加 LiteLLM 作为 API 网关,支持 OpenAI/Anthropic 格式转换、费用追踪和请求路由。
## 快速开始
```bash
# 安装控制器
pip install -e .
# 启动控制器
vllm-studio
# (可选)启动前端
cd frontend && npm install && npm run dev
```
## API 参考
### 健康检查与状态
| 端点 | 方法 | 描述 |
|------|------|------|
| `/health` | GET | 健康检查及后端状态 |
| `/status` | GET | 运行中的进程详情 |
| `/gpus` | GET | GPU 信息(显存、利用率) |
### 配方管理
| 端点 | 方法 | 描述 |
|------|------|------|
| `/recipes` | GET | 列出所有配方 |
| `/recipes` | POST | 创建配方 |
| `/recipes/{id}` | GET | 获取配方 |
| `/recipes/{id}` | PUT | 更新配方 |
| `/recipes/{id}` | DELETE | 删除配方 |
### 模型生命周期
| 端点 | 方法 | 描述 |
|------|------|------|
| `/launch/{recipe_id}` | POST | 从配方启动模型 |
| `/evict` | POST | 停止运行中的模型 |
| `/wait-ready` | GET | 等待后端就绪 |
### 聊天会话
| 端点 | 方法 | 描述 |
|------|------|------|
| `/chats` | GET | 列出会话 |
| `/chats` | POST | 创建会话 |
| `/chats/{id}` | GET | 获取会话及消息 |
| `/chats/{id}` | PUT | 更新会话 |
| `/chats/{id}` | DELETE | 删除会话 |
| `/chats/{id}/messages` | POST | 添加消息 |
| `/chats/{id}/fork` | POST | 派生会话 |
### MCP模型上下文协议
| 端点 | 方法 | 描述 |
|------|------|------|
| `/mcp/servers` | GET | 列出 MCP 服务器 |
| `/mcp/servers` | POST | 添加服务器 |
| `/mcp/tools` | GET | 列出可用工具 |
| `/mcp/tools/{server}/{tool}` | POST | 调用工具 |
## 配置
### 环境变量
```bash
VLLM_STUDIO_PORT=8080 # 控制器端口
VLLM_STUDIO_INFERENCE_PORT=8000 # vLLM/SGLang 端口
VLLM_STUDIO_API_KEY=your-key # 可选认证密钥
```
### 配方示例
```json
{
"id": "llama3-8b",
"name": "Llama 3 8B",
"model_path": "/models/Meta-Llama-3-8B-Instruct",
"backend": "vllm",
"tensor_parallel_size": 1,
"max_model_len": 8192,
"gpu_memory_utilization": 0.9,
"trust_remote_code": true
}
```
### 配方字段说明
| 字段 | 类型 | 描述 |
|------|------|------|
| `id` | string | 唯一标识符 |
| `name` | string | 显示名称 |
| `model_path` | string | 模型权重路径 |
| `backend` | string | `vllm``sglang` |
| `tensor_parallel_size` | int | GPU 张量并行数 |
| `pipeline_parallel_size` | int | 流水线并行数 |
| `max_model_len` | int | 最大上下文长度 |
| `gpu_memory_utilization` | float | 显存占用率0-1 |
| `kv_cache_dtype` | string | KV 缓存类型 |
| `quantization` | string | 量化方式 |
| `dtype` | string | 模型数据类型 |
| `served_model_name` | string | API 暴露的模型名称 |
| `tool_call_parser` | string | 工具调用解析器 |
| `reasoning_parser` | string | 推理/思考解析器GLM、MiniMax 自动检测) |
| `enable_auto_tool_choice` | bool | 启用自动工具选择 |
| `trust_remote_code` | bool | 允许远程代码 |
| `extra_args` | object | 额外 CLI 参数 |
## 目录结构
```
vllm-studio/
├── controller/
│ ├── app.py # FastAPI 端点
│ ├── process.py # 进程管理
│ ├── backends.py # vLLM/SGLang 命令构建器
│ ├── models.py # Pydantic 数据模型
│ ├── store.py # SQLite 存储
│ ├── config.py # 配置项
│ └── cli.py # 入口点
├── frontend/ # Next.js Web 界面
├── config/
│ └── litellm.yaml # LiteLLM 配置(可选)
└── docker-compose.yml
```
## 与 LiteLLM 配合使用(可选)
如需兼容 OpenAI/Anthropic API 格式:
```bash
docker compose up litellm
```
然后将 `http://localhost:4100` 作为 API 端点,可与任意 OpenAI 兼容客户端配合使用。
## 许可证
Apache 2.0