性能优化指南
本指南提供在本地或云服务器运行 Webis 时的性能优化技巧。
由于 Webis 基于 vLLM 和大语言模型,GPU 显存和 CPU 吞吐量 对性能影响很大。
硬件推荐
- GPU:支持 CUDA 的 NVIDIA GPU
- 推荐:≥ 8GB 显存
- 最低:6GB 显存(需降低
--memory-limit
和精度)
- CPU:≥ 4 个物理核心
- 内存:≥ 16GB
- 硬盘:SSD(加快模型加载速度)
GPU 显存优化
- 调整显存利用率
- 默认 vLLM 使用 90% 可用显存
- 显存不足时可降低:
bash
python scripts/start_model_server.py --memory-limit 0.6
使用低精度
float16
:显著减少显存占用,精度损失较小int8
量化:进一步减少显存,但可能影响效果
示例(在
start_model_server.py
中修改模型加载):
python
model = LLM(
model=model_path,
tensor_parallel_size=1,
gpu_memory_utilization=gpu_memory_utilization,
trust_remote_code=True,
dtype="float16"
)
- 释放显存后再启动
bash
nvidia-smi
kill -9 <PID>
CPU 与并发优化
- 提升并发请求数
bash
uvicorn scripts.start_model_server:app --host 0.0.0.0 --port 8000 --workers 2
- 请求批处理
- vLLM 支持批量处理多条 prompt
- 建议合并小请求为一次 API 调用
磁盘与模型加载
- 缓存模型
HuggingFace 缓存目录:
bash
~/.cache/huggingface/hub
- 使用 SSD 存储
模型加载速度远快于 HDD
网络优化
- 云服务器选择离用户最近的区域
- 使用 Nginx 等反向代理,启用 HTTP keep-alive
- 启用响应压缩(gzip)
常见优化场景
低显存 GPU (6GB):
--memory-limit 0.6
dtype="float16"
- 降低 API 请求中的
max_tokens
高并发 API:
- 增加
uvicorn
workers - 使用批处理
- 增加
模型加载慢:
- 保持服务持续运行,避免频繁重启
- 模型放在 SSD 上
故障排查
- "No available memory for cache blocks":降低
--memory-limit
或释放显存 - "Free memory on device ... less than desired":减少显存利用率或关闭其他 GPU 进程
- "CUDA not found":安装 NVIDIA 驱动和 CUDA 工具包