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

173 lines
5.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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