本文基于实战经验,提供从环境准备到性能调优的全流程避坑指南。
1. NVIDIA 驱动与 CUDA 版本对齐
确保NVIDIA驱动和CUDA版本相互匹配是关键。例如,CUDA 12.x需要至少525.60+的驱动版本。
nvidia-smi nvcc --version
2. 物理设备识别与资源竞争
多GPU环境下,通过设置 CUDA_VISIBLE_DEVICES
来指定使用的GPU,以避免资源争抢。
export CUDA_VISIBLE_DEVICES=0,1
1. PyTorch 版本选择
为了确保PyTorch能够正确调用GPU,需选择与CUDA版本相匹配的PyTorch版本。
pip install torch==2.1.2 torchvision==0.16.2 --extra-index-url https://download.pytorch.org/whl/cu121
2. vLLM 安装与更新
建议从源码编译安装以启用最新优化功能。
git clone https://github.com/vllm-project/vllm.git cd vllm && pip install -e .
1. 模型加载参数优化
为防止显存不足(OOM),特别是在处理长文本时,应调整相关参数。
python -m vllm.entrypoints.api_server \ --model deepseek-ai/deepseek-llm-7b-base \ --tensor-parallel-size 2 \ --gpu-memory-utilization 0.9 \ --max-num-batched-tokens 4096
2. API 服务端口冲突
为了避免默认端口被占用的问题,可以指定一个未使用的端口号。
python -m vllm.entrypoints.api_server --port 8001 curl http://localhost:8001/v1/models
1. 连续批处理(Continuous Batching)
启用动态批处理机制可以提高GPU利用率。
from vllm import SamplingParams sampling_params = SamplingParams(max_tokens=512, batch_type="auto")
2. 量化与显存压缩
利用AWQ/GPTQ技术进行模型量化,减少显存需求。
python -m vllm.entrypoints.api_server \ --model deepseek-ai/deepseek-llm-7b-base-awq \ --quantization awq \ --dtype half
对于常见的错误如CUDA Out of Memory或模型加载失败,提供详细的排查步骤和解决方案。
使用 nvidia-smi
实时监控GPU利用率,并分析vLLM的日志文件来定位潜在问题。
vllm链接:https://vllm.hyper.ai/docs/getting-started/installation/
deepseek 开源链接:https://www.modelscope.cn/docs/models/download
原文链接:https://blog.csdn.net/weixin_45631123/article/details/145669898?ops_request_misc=%257B%2522request%255Fid%2522%253A%25228dd53726ba60e274e11bf72f47bbd0ad%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=8dd53726ba60e274e11bf72f47bbd0ad&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~times_rank-3-145669898-null-null.nonecase&utm_term=deepseek%E5%91%BD%E4%BB%A4