单卡多模型混合部署
一张卡上同时服务多个模型时(对话模型加向量化与重排),做法是先做显存预算分配:把高频小模型设为常驻,低频大模型按需加载,并限制同时驻留的实例数量,防止互相挤占。硬性约束是各实例声明的显存比例之和要小于 1,并给框架与驱动留出余量。
基本信息
| 规划方式 | 先做显存预算分配表,再按表设置各实例的显存比例 |
|---|---|
| 硬性约束 | 各实例显存比例之和小于 1 |
| 端口划分 | 每个实例独立端口,便于单独观测与排障 |
| 加载策略 | 高频模型常驻,低频模型按需加载 |
| 主要风险 | 互相挤占导致 OOM 或加载失败 |
典型使用场景
- 对话模型与向量化、重排服务同卡部署,节省机器成本
- 小模型多租户:多个小模型共享一张卡,按租户分配实例
- 开发机同时跑多个模型做对比验证
- 成本控制:把低频模型改成按需加载,释放显存给高频模型
- 预留余量:给突发请求与框架开销留出显存空间
显存预算分配示例
显存预算分配示例
24GB 卡预算分配(示意):
向量化模型 1.5 GB
重排模型 1.5 GB
对话模型(7B 低位量化) 5 GB 权重 + 4 GB KV
系统与碎片预留 2 GB
合计 14 GB,余量留作突发多实例端口划分
多实例端口划分
# 每个实例独立端口与显存比例,比例之和必须小于 1
vllm serve ./models/chat --port 8000 --gpu-memory-utilization 0.45
vllm serve ./models/embed --port 8001 --gpu-memory-utilization 0.15
# 校验:启动后核对卡上各进程占用与实例可用性
nvidia-smi --query-compute-apps=pid,used_memory --format=csv预算分配表怎么填
| 项目 | 估算方式 | 说明 |
|---|---|---|
| 小模型常驻 | 权重 + 少量 KV | 高频调用,常驻收益高 |
| 大模型权重 | 按量化档位估算 | 量化后体积明显下降 |
| KV 预算 | 按窗口与并发估算 | 长上下文场景占比高 |
| 系统与碎片预留 | 固定留出一块 | 太少会偶发 OOM |
多模型共存时每个实例的显存比例之和要小于 1:留出的余量不是浪费,而是驱动、框架与运行时碎片的生存空间。
常驻与按需要区分开:把高频小模型常驻,低频大模型按需加载,否则每次冷启动都会让用户等一长段加载时间。