vllm安装

 
pip uninstall vllm 

pip install torch==2.4.0 torchaudio==2.4.0 torchvision==0.19.0 transformers==4.44.0   -i https://pypi.tuna.tsinghua.edu.cn/simple

pip install tokenizers==0.19.1 triton==3.0.0 vllm==0.5.5 vllm-flash-attn==2.6.1  -i https://pypi.tuna.tsinghua.edu.cn/simple

vllm==0.5.5出来的时间是2024年8月,也就是说其他依赖包差不多也要这个时间的


 
Successfully installed audioread-3.0.1 datasets-3.4.1 dill-0.3.8 
fsspec-2024.12.0 gguf-0.9.1 lazy_loader-0.4 librosa-0.11.0 
lm-format-enforcer-0.10.6 multiprocess-0.70.16 nvidia-cublas-cu12-12.1.3.1 
nvidia-cuda-cupti-cu12-12.1.105 nvidia-cuda-nvrtc-cu12-12.1.105 
nvidia-cuda-runtime-cu12-12.1.105 nvidia-cufft-cu12-11.0.2.54 
nvidia-curand-cu12-10.3.2.106 nvidia-cusolver-cu12-11.4.5.107 
nvidia-cusparse-cu12-12.1.0.106 nvidia-nccl-cu12-2.20.5 
nvidia-nvtx-cu12-12.1.105 outlines-0.0.46 pooch-1.8.2 
pyairports-2.1.1 pyarrow-19.0.1 soundfile-0.13.1 soxr-0.5.0.post1 
tokenizers-0.19.1 
torch-2.4.0 torchvision-0.19.0 transformers-4.44.0 
triton-3.0.0 vllm-0.5.5 vllm-flash-attn-2.6.1 
xformers-0.0.27.post2 xxhash-3.5.0


 

    

 
pip install uvicorn -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install vllm -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install sse_starlette -i https://pypi.tuna.tsinghua.edu.cn/simple

    

vllm也可以在CPU上进行安装

 
# 安装PyTorch CPU版本
pip install torch torchvision --index-url https://download.pytorch.org/whl/cpu
pip install vllm
  

 
VLLM的CPU安装是可行的,但性能会显著受限。
建议根据实际需求(推理/训练)和硬件条件选择部署环境。

轻量化替代:若仅需在CPU上运行,
可考虑使用VLLM的轻量化版本(如蒸馏模型)或降低输入分辨率/模型复杂度。

 

    

DeepSeek-R1-Distill-Qwen-32B

 

https://www.modelscope.cn/models/deepseek-ai/DeepSeek-R1-Distill-Qwen-32B

sudo apt install curl git
sudo curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | bash
sudo apt install git-lfs

git lfs install

mkdir deepseek 
cd deepseek
git clone https://www.modelscope.cn/deepseek-ai/DeepSeek-R1-Distill-Qwen-32B.git

DeepSeek-R1-Distill-Qwen-14B

 

https://www.modelscope.cn/models/deepseek-ai/DeepSeek-R1-Distill-Qwen-14B


 


 
CUDA_VISIBLE_DEVICES=0,1 python -m vllm.entrypoints.openai.api_server --model ./path/deepseek_model --port 8000 --tensor-parallel-size 2

CUDA_VISIBLE_DEVICES=0,1 表示让程序看到设备 ID 为 0 和 1 的两个 GPU,
同时 --tensor-parallel-size 2 表示使用 2 个 GPU 进行张量并行计算,以加速推理过程。
其中./path/deepseek_model 指定模型文件路径,替换为本地自己的,--port 可自定义端口。

CUDA_VISIBLE_DEVICES=0 python -m vllm.entrypoints.openai.api_server --model /wks/models/deepseek/DeepSeek-R1-Distill-Qwen-1.5B --port 8000 
    

 
确保模型路径正确,文件无损坏。

推理服务启动后,可通过浏览器访问 http://localhost:8000 检查服务状态。

或观察终端输出,如果看到类似 INFO: Started server process 和 INFO: Uvicorn running on ... 的信息,则表示 vLLM 服务启动成功。

注意 GPU 显存: 启动 vLLM 服务会占用 GPU 显存。请确保您的 GPU 显存足够运行模型。如果显存不足,可能会导致启动失败或运行缓慢。您可以尝试减小 --max-model-len 参数或使用更小规模的模型。

如果启动 vLLM 服务时遇到 CUDA 相关错误,请检查您的 NVIDIA 驱动版本和 CUDA 环境是否正确安装。

    

两种启动方式

 
https://www.modelscope.cn/models/deepseek-ai/DeepSeek-R1

vllm serve /wks/models/deepseek/DeepSeek-R1-Distill-Qwen-1.5B --tensor-parallel-size 1 --max-model-len 10240 --enforce-eager

vllm serve deepseek-ai/DeepSeek-R1-Distill-Qwen-32B --tensor-parallel-size 2 --max-model-len 32768 --enforce-eager

python3 -m sglang.launch_server --model deepseek-ai/DeepSeek-R1-Distill-Qwen-32B --trust-remote-code --tp 2


https://www.modelscope.cn/models/deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B
  
    

 


 

  

 


vllm启动

启动 API 服务器(在线服务)

 
vLLM 可以启动一个 HTTP/OpenAI 兼容的 API 服务器,用于在线推理服务。
这种方式适合需要实时响应的场景,如聊天机器人、在线问答系统等。

参数含义
--model:指定要加载的模型路径或名称(支持 Hugging Face 模型)。
--host:指定服务器监听的主机地址(默认为 0.0.0.0)。
--port:指定服务器监听的端口(默认为 8000)。
--tensor-parallel-size:指定张量并行的 GPU 数量(默认为 1)。
--gpu-memory-utilization:指定 GPU 内存使用率(默认为 0.9)。
--max-num-seqs:指定每次推理的最大序列数(默认为 256)。
--max-num-batched-tokens:指定每次推理的最大批处理 token 数量(默认为 2048)。
--dtype:指定模型权重和激活的数据类型(如 bfloat16、float16)。
    

具体命令

 
python -m vllm.entrypoints.api_server \
  --model /path/to/your/model \
  --host 0.0.0.0 \
  --port 8000 \
  --tensor-parallel-size 1 \
  --gpu-memory-utilization 0.9 \
  --max-num-seqs 256 \
  --max-num-batched-tokens 2048 \
  --dtype bfloat16
  
    

启动后,可以通过 HTTP 请求(如 curl 或 Python 的 requests 库)调用 API。

 
curl http://localhost:8000/generate \
-H "Content-Type: application/json" \
-d '{
    "prompt": "Hello, world!",
    "max_tokens": 32,
    "temperature": 0.7
}'

    

离线批量推理(Offline Batch Inference)

 
vLLM 也支持离线批量推理,适用于需要处理大量输入数据的场景(如批量生成文本、批量翻译等)。这种方式可以一次性加载模型并处理多个输入。

参数含义
--model:指定要加载的模型路径或名称(支持 Hugging Face 模型)。
--input-path:指定输入文件的路径(JSON 格式,包含多个 prompt 字段)。
--output-path:指定输出文件的路径(JSON 格式,包含生成结果)。
--temperature:控制生成文本的随机性(默认为 1.0)。
--max-tokens:指定生成的最大 token 数量(默认为 32)。
--top-p:使用 nucleus sampling 控制生成多样性(默认为 1.0)。
--top-k:使用 top-k sampling 控制生成多样性(默认为 50)。
--dtype:指定模型权重和激活的数据类型(如 bfloat16、float16)。

    

具体命令

 
python -m vllm.entrypoints.offline_inference \
  --model /path/to/your/model \
  --input-path prompts.json \
  --output-path outputs.json \
  --temperature 0.7 \
  --max-tokens 32 \
  --top-p 0.9 \
  --top-k 40 \
  --dtype bfloat16


 
输入文件 prompts.json 示例:
json
[
    {"prompt": "Translate to French: Hello, world!"},
    {"prompt": "Summarize this text: ..."}
]

输出文件 outputs.json 将包含生成结果。


 


 
python -m vllm.entrypoints.cli \
  --model DeepSeek-AI/DeepSeek-R1-Distill-Qwen-32B \
  --tensor-parallel-size 4 \
  --gpu-memory-utilization 0.9 \
  --max-num-batched-tokens 4096 \
  --dtype half
  

 
  参数	含义	示例值
--model	模型路径	DeepSeek-AI/DeepSeek-R1-Distill-Qwen-32B
--tensor-parallel-size	GPU 张量并行数量	4(4 卡)
--gpu-memory-utilization	GPU 显存利用率	0.9
--max-num-batched-tokens	最大批处理 token 数	4096
--dtype	计算精度(half/float16/bfloat16)	half

 
输入: 你好,DeepSeek-R1 是什么模型?
输出: DeepSeek-R1 是 DeepSeek 团队推出的一个 32B 参数的蒸馏版本模型...

 

  

 


参考