鲲鹏服务器在仅CPU情况下使用VLLM推理框架推理的操作指导
发表于 2025/08/18
0
本文档主要为在鲲鹏服务器,仅有 CPU 情况下部署运行推理服务 参考资料:CPU — vLLM
环境
软件 | 版本 |
---|---|
OS | openEuler 22.03 sp 4 |
anaconda | python 3.12 |
gcc | 12 |
cmake | 3.26 |
操作步骤
下载并安装 Anaconda 软件包
wget -k https://repo.anaconda.com/archive/Anaconda3-2022.05-Linux-aarch64.sh
# 安装Anaconda
bash Anaconda3-2022.05-Linux-aarch64.sh
source /root/anaconda3/etc/profile.d/conda.sh
# 创建环境并激活环境
conda create --name vllm python=3.12 -y
conda activate vllm
更新 cmake 版本
cd /home
wget https://github.com/Kitware/CMake/releases/download/v3.26.3/cmake-3.26.3-linux-aarch64.sh
sh cmake-3.26.3-linux-aarch64.sh
# 选择y统一安装
# 设置临时变量,将新下载的作为cmake路径
export PATH=/home/cmake-3.26.3-linux-aarch64/bin:$PATH
下载大模型(可选)
这里可以不下,因为之后推理服务中可以指定模型进行推理,此时会自动下载
pip install modelscope
# 下载整个模型repo(到默认/root/.cache地址)
modelscope download --model Qwen/Qwen3-0.6B
# 下载整个模型repo到指定目录
mkdir -p /home/model
modelscope download --model Qwen/Qwen3-0.6B --local_dir /home/model
编译和安装 vllm
运行 vllm(CPU)benchmark 测试可用性
git clone https://github.com/vllm-project/vllm.git vllm_source
cd vllm_source
pip install --upgrade pip
pip install "cmake>=3.26" wheel packaging ninja "setuptools-scm>=8" numpy
pip install -v -r requirements/cpu.txt --extra-index-url https://download.pytorch.org/whl/cpu
# 构建和安装vllm
VLLM_TARGET_DEVICE=cpu python setup.py install
运行 vllm(CPU)benchmark 测试可用性
VLLM_CPU_KVCACHE_SPACE=64 python3 benchmarks/benchmark_throughput.py --model Qwen/Qwen3-0.6B --dataset-name sonnet --dataset
正确应显示如下:
验证推理服务
命令行运行
服务器窗口 A 下运行
# 部署推理服务
VLLM_CPU_KVCACHE_SPACE=64 vllm serve Qwen/Qwen3-0.6B --dtype float16 -tp=1 --distributed-executor-backend mp --host 127.0.0.1 --port 8000
在服务器窗口 B 下运行
curl http://localhost:8000/v1/chat/completions -H "Content-Type: application/json" -d '{
"model": "Qwen/Qwen3-0.6B",
"messages": [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "天空为什么是蓝色的?"}
],
"temperature": 0.7,
"top_p": 0.8,
"repetition_penalty": 1.05,
"max_tokens": 512
}'
脚本运行
服务器窗口 A 下运行
# 一端开启本地服务
VLLM_CPU_KVCACHE_SPACE=64 vllm serve Qwen/Qwen3-0.6B --dtype float16 -tp=1 --distributed-executor-backend mp --host 127.0.0.1 --port 8000
在服务器窗口 B 下运行
编辑 py 文件
vim test_vllm.py
输入以下内容
# Qwen2-vLLM-Local.py
import os
from transformers import AutoTokenizer
from vllm import LLM, SamplingParams
# 设置环境变量
os.environ['VLLM_TARGET_DEVICE'] = 'cpu'
os.environ['VLLM_CPU_KVCACHE_SPACE'] = '64'
# 模型ID:我们下载的模型权重文件目录
model_dir = '/root/.cache/modelscope/hub/models/Qwen/Qwen3-0___6B/' # 更换为具体的模型文件!!!!
# Tokenizer初始化
tokenizer = AutoTokenizer.from_pretrained(
model_dir,
local_files_only=True,
)
# Prompt提示词
messages = [
{'role': 'system', 'content': 'You are a helpful assistant.'},
{'role': 'user', 'content': '天空为什么是蓝色的?'}
]
text = tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True,
)
# 初始化大语言模型
llm = LLM(
model=model_dir,
tensor_parallel_size=1, # CPU无需张量并行
device='cpu',
dtype='float16'
)
# 超参数:最多512个Token
sampling_params = SamplingParams(temperature=0.7, top_p=0.8, repetition_penalty=1.05, max_tokens=512)
# 模型推理输出
outputs = llm.generate([text], sampling_params)
for output in outputs:
prompt = output.prompt
generated_text = output.outputs[0].text
print(f'Prompt提示词: {prompt!r}, 大模型推理输出: {generated_text!r}')
执行脚本
python3 test_vllm.py
显示如下:
卸载框架
# 首先进入自己的conda环境
conda env list # 查看当前环境
# 如我的环境为 /home/test/llm/envs/vllm
conda activate /home/test/llm/envs/vllm
# 进入完成后
pip uninstall vllm
其他
解决模型下载环境设置问题
Python 下载网站内容时遇到 urllib3.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self-signed
home/test/llm/envs/vllm/lib/python3.11/site-packages/requests/sessions.py
:set nu # 设置行号
:500 # 跳转到500行
i # 修改文件信息
:wq # 保存修改并退出
大概在500行左右的位置,找到 request
函数,将传参 verify
的默认值由 None
改为 False
,保存。