文章

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 加速器

数据来源:https://docs.vllm.ai/en/latest/index.html

相较于 Ollama 和 LM Studio,vLLM 在不同场景下各有优势:

工具

定位

适用场景

核心优势

主要限制

vLLM

高性能推理引擎

生产环境部署、高并发 API 服务

PagedAttention 内存优化、持续批处理、2.7x 吞吐量提升

仅支持 NVIDIA GPU、部署复杂、显存需求大

Ollama

轻量级本地工具

个人开发、快速原型验证、离线环境

一键安装、跨平台支持、Docker 风格命令、支持 Apple Silicon

单用户设计、性能相对较低、功能相对简单

LM Studio

可视化桌面应用

非技术用户、模型探索、教育场景

图形界面友好、内置模型市场、支持多模态、零代码体验

闭源软件、资源占用较高、定制化程度有限

环境准备

硬件: 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: 阿里云模型下载工具

初始化之后:

images-20250909-22.19.39@2x

02 验证 PyTorch 环境

验证本地是否支持 PyTorch ,并且安装成功。

uv run test_pytorch.py

测试结果:

images-20250909-22.22.45@2x

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

等待模型下载:

images-20250820-20.02.38@2x

vLLM 实测

使用 Qwen/Qwen3-8B 模型进行测试,预计占用 16-20GB 显存。

01 Python 代码编写

images-20250909-22.32.09@2x

02 测试结果

思考模式结果:

images-20250820-20.27.50@2x

输出内容如下:

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 并调整推理参数,再次验证。

images-20250820-20.38.58@2x

输出内容如下:

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

启动结果:

images-20250820-20.57.34@2x

模型信息:

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,性能卓越

随着本地大模型技术的不断发展,这些工具都在各自的定位上持续优化,为不同需求的用户提供了丰富的选择。

License:  CC BY 4.0