vLLM 本地部署大模型快速入门
见字如面,与大家分享实践中的经验与思考。
之前使用过 Ollama 和 LM Studio 来本地测试大语言模型的能力,文章可以参考:
今天来介绍一下如何使用 vLLM 在本地搭建大语言模型。
vLLM 简介
vLLM 是一个快速且易于使用的大语言模型推理和部署库,最初由加州大学伯克利分校的 Sky Computing Lab 开发,现已发展为一个由学术界和工业界共同贡献的社区驱动项目。
核心优势:
PagedAttention + 持续批处理:内存效率提升,吞吐量最高 23 倍提升
量化支持:GPTQ、AWQ、INT4/8、FP8 等多种格式
并行计算:张量/流水线/数据/专家并行,支持多 GPU 扩展
生态兼容:HuggingFace 集成,OpenAI API 兼容,多 LoRA 支持
硬件支持:NVIDIA GPU(主要)、AMD、Intel、TPU、AWS 加速器
相较于 Ollama 和 LM Studio,vLLM 在不同场景下各有优势:
环境准备
硬件: NVIDIA GPU(20GB+ 显存)、16GB+ 内存、50GB+ SSD 存储
软件: Linux/macOS/Windows、Python 3.8-3.12、CUDA 11.8+、uv/pip
测试环境: macOS 15.6、Python 3.12、UV 0.7.3 、PyTorch 2.0+、ModelScope(国内用户推荐)或 Hugging Face
项目准备
使用 uv 搭建 PyTorch 环境,可以参考官方文档:https://docs.astral.sh/uv/guides/integration/pytorch/。
01 项目初始化
## 新建项目
mkdir vllm-rag
cd vllm-rag
uv init --python 3.12
source .venv/bin/activate
## 添加核心依赖
uv add torch modelscope vllm
依赖说明:
torch
: PyTorch 深度学习框架vllm
: 高性能大模型推理引擎modelscope
: 阿里云模型下载工具
初始化之后:
02 验证 PyTorch 环境
验证本地是否支持 PyTorch ,并且安装成功。
uv run test_pytorch.py
测试结果:
03 模型下载与管理
vLLM 默认从 Hugging Face 下载模型,但建议提前下载以避免运行时等待,同时便于模型版本管理。
使用 ModelScope(推荐,国内网络友好)
# model_download.py
from modelscope import snapshot_download
model_dir = snapshot_download('Qwen/Qwen3-8B', cache_dir='/Volumes/Data1/LLMs/vllm/models', revision='master')
注意:将 cache_dir
改成你的本地目录。
uv run model_download.py
等待模型下载:
vLLM 实测
使用 Qwen/Qwen3-8B
模型进行测试,预计占用 16-20GB 显存。
01 Python 代码编写
02 测试结果
思考模式结果:
输出内容如下:
Prompt: '<|im_start|>user\n给我一个关于大模型的简短介绍。<|im_end|>\n<|im_start|>assistant\n',
Response: '<think>\n好的,用户让我提供一个关于大模型的简短介绍。首先,我需要确定用户的需求是什么。他们可能是一个学生,或者对AI领域感兴趣的人,想要快速了解大模型的基本概念。也有可能是在做研究,需要简要的概述。\n\n接下来,我得考虑大模型的定义。大模型通常指的是参数量巨大的深度学习模型,比如Transformer架构,这些模型在自然语言处理、计算机视觉等领域有广泛应用。需要提到它们的规模,比如参数数量,以及训练数据量,因为这些都是关键点。\n\n然后,用户可能想知道大模型的特点。比如,它们的强大学习能力,能够处理多种任务,还有预训练和微调的概念。这些都是大模型的核心优势,应该涵盖进去。\n\n还要注意用户可能的深层需求。他们可能想了解大模型的实际应用,比如聊天机器人、文本生成、图像识别等。所以需要举几个例子,让介绍更具体。\n\n另外,用户可能对大模型的挑战感兴趣,比如计算资源需求高、训练成本大,以及可能的伦理问题。不过因为要求是简短介绍,这部分可能需要简要提及,避免过于深入。\n\n需要确保语言简洁明了,避免技术术语过多,让不同背景的读者都能理解。同时,保持结构清晰,分点或分段介绍,但用户要求的是简短,所以可能需要整合成一段流畅的文字。\n\n最后,检查是否有遗漏的重要信息,比如大模型的发展趋势,比如多模态模型、自监督学习等,但可能因为篇幅限制,只能简要带过。确保整体内容准确,没有错误信息,比如参数量的范围,训练数据量等,需要准确的数据支持。\n</think>\n\n大模型(Large Language Models, LLMs)是基于深度学习的参数量巨大的人工智能模型,通常包含数十亿甚至数万亿个参数。它们通过海量文本数据训练,具备强大的语言理解、生成和推理能力,可完成文本生成、问答、代码编写、多语言翻译等复杂任务。典型代表如GPT、BERT、PaLM等。大模型的核心优势在于其泛化能力,能通过预训练和微调适应多种应用场景,但同时也面临算力消耗高、训练成本大等挑战。'
非思考模式结果
将 enable_thinking=False
并调整推理参数,再次验证。
输出内容如下:
Prompt: '<|im_start|>user\n给我一个关于大模型的简短介绍。<|im_end|>\n<|im_start|>assistant\n<think>\n\n</think>\n\n',
Response: '大模型(Large Model)是指参数量巨大、具有强大语言理解和生成能力的深度学习模型,通常基于Transformer架构。它们能够处理复杂的自然语言任务,如文本生成、翻译、问答、代码编写等。大模型通过海量数据训练,具备强大的泛化能力和上下文理解能力,广泛应用于人工智能的多个领域,如智能客服、内容创作、数据分析等。代表模型包括GPT、BERT、Ernie Bot等。'
vLLM 搭建类 OpenAI 服务
使用如下命令进行启动:
VLLM_USE_MODELSCOPE=true vllm serve \ /Volumes/Data1/LLMs/vllm/models/Qwen/Qwen3-8B \
--served-model-name Qwen3-8B \
--max_model_len 2048 \
--reasoning-parser deepseek_r1
启动结果:
模型信息:
curl http://localhost:8000/v1/models
{
"object": "list",
"data": [
{
"id": "Qwen3-8B",
"object": "model",
"created": 1755695146,
"owned_by": "vllm",
"root": "/Volumes/Data1/LLMs/vllm/models/Qwen/Qwen3-8B",
"parent": null,
"max_model_len": 2048,
"permission": [
{
"id": "modelperm-3194bd05ecd64efeb188c172ae14804b",
"object": "model_permission",
"created": 1755695146,
"allow_create_engine": false,
"allow_sampling": true,
"allow_logprobs": true,
"allow_search_indices": false,
"allow_view": true,
"allow_fine_tuning": false,
"organization": "*",
"group": null,
"is_blocking": false
}
]
}
]
}
简单问题测试:
curl --location 'http://localhost:8000/v1/completions' \
--header 'Content-Type: application/json' \
--data '{
"model": "Qwen3-8B",
"prompt": "/no_think 3的阶乘是多少?",
"max_tokens": 2000,
"temperature": 0
}'
输出结果:
{
"id": "cmpl-fb6ecf0c554d4ad984cabc9e8a7fc53a",
"object": "text_completion",
"created": 1757429422,
"model": "Qwen3-8B",
"choices": [
{
"index": 0,
"text": " 3的阶乘是3×2×1=6。所以,3的阶乘是6。",
"logprobs": null,
"finish_reason": "stop",
"stop_reason": null,
"prompt_logprobs": null
}
],
"service_tier": null,
"system_fingerprint": null,
"usage": {
"prompt_tokens": 10,
"total_tokens": 34,
"completion_tokens": 24,
"prompt_tokens_details": null
},
"kv_transfer_params": null
}
总结
vLLM 作为高性能的大语言模型推理框架,在生产环境和高并发场景下表现出色。通过 PagedAttention 等创新技术,它能够显著提升推理吞吐量和内存利用效率。
选择建议:
个人学习和快速验证:推荐使用 Ollama,简单易用
非技术用户和模型探索:推荐使用 LM Studio,界面友好
生产部署和高性能需求:推荐使用 vLLM,性能卓越
随着本地大模型技术的不断发展,这些工具都在各自的定位上持续优化,为不同需求的用户提供了丰富的选择。