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
|
|
|
|
|
|
|
|
启动 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 参数的蒸馏版本模型... |
|
|
|
|