第一步:下载anaconda for mac
https://zhuanlan.zhihu.com/p/350828057 知乎保姆级教程
https://www.anaconda.com/docs/getting-started/anaconda/install#macos-linux-installation 下载地址
第二步:部署vllm的虚拟环境
https://www.53ai.com/news/OpenSourceLLM/2025040116542.html
注意⚠️ vllm不支持python 3.13及以上版本,所以配置时得指定
https://docs.vllm.ai/en/latest/getting_started/installation/gpu.html
conda create -n usingvllm python=3.10 jupyter
conda activate usingvllm
git clone https://github.com/vllm-project/vllm.git 已经clone
pip install torch torchvision
一次性安装所有 vLLM 的依赖
pip install -e .
如果报了error可能是没有install成功。
检查
du -sh ~/.cache/huggingface/hub/models–tiiuae–falcon-7b-instruct
删除
rm -rf ~/.cache/huggingface/hub/models–tiiuae–falcon-7b-instruct
第三步:从offline_inference+qwen3入手
快速开始:本地推理从examples/offline_inference/basic/basic.py开始
● LLM 是用于运行 vLLM 引擎离线推理的主类。
● SamplingParams 指定了采样过程的参数。
sampling_params = SamplingParams(temperature=0.8, top_p=0.95)
● 采样温度(输出的随机程度):越小越保守(0.1),越高越创造性(1.0-1.2)
● 核心采样概率top_p(nucleus sampling):采样时候选词概率总和,表示模型会从累计概率为前 95% 的候选词中选一个(对比top-k 选前k个词)
llm = LLM(model=“facebook/opt-125m”)
● 模型从https://huggingface.co/Qwen/Qwen3-0.6B
在线服务从examples/online_serving/openai_completion_client.py开始
第四步:本地跑serve出错及解决
Load and run the model:
vllm serve “Qwen/Qwen3-0.6B”
● 解决——不选择默认的=4,调整最大maxlen:
export VLLM_CPU_KVCACHE_SPACE=8
vllm serve “Qwen/Qwen3-0.6B” --max-model-len 2048
已上在vsc部署成功(约等于把自己电脑当成服务器了)
另起终端
//Call the server using curl:
curl -X POST “http://localhost:8000/v1/chat/completions”
-H “Content-Type: application/json”
–data ‘{
“model”: “Qwen/Qwen3-0.6B”,
“messages”: [
{
“role”: “user”,
“content”: “What is the capital of France?”
}
]
}’
输出:
对应“服务器”输出:即为部署成功。
分析:
- WARNING [cpu.py:248] Pin memory is not supported on CPU.使用的是 CPU 环境(Mac M3 Pro 无 CUDA),这个警告是预期的,不会影响结果,只是说不能做 pinned memory 提速(只有 GPU 可用)。
- INFO [metrics.py:417] Avg prompt throughput: 3.0 tokens/s
INFO [metrics.py:417] Avg generation throughput: 10.5 tokens/s
模型每秒处理平均 3 个 prompt token,生成 token 平均 10.5 个/s,对于 Mac CPU 跑的模型来说,这个速度是完全合理的(0.6B 的 Qwen 模型) - INFO: 127.0.0.1:58210 - “POST /v1/chat/completions HTTP/1.1” 200 OK
响应状态码 200,说明接口调用完全成功,用 curl 或 Python requests.post() 调用的 API 得到了返回结果