用 vLLM 在两张 RTX 3090 上部署 Qwen2.5-14B BF16全量大模型的完整过程

发布于:2025-07-04 ⋅ 阅读:(17) ⋅ 点赞:(0)

🐇明明跟你说过:个人主页

🏅个人专栏:《深度探秘:AI界的007》 🏅

🔖行路有良友,便是天堂🔖

目录

一、前言

1、Qwen2.5-14B 简介与优势

2、双 3090 的算力配置

二、技术栈介绍

1、vLLM简介

2、NVIDIA 系列 GPU 简介

3、Qwen系列模型简介

4、什么是模型量化(Quantization)

三、环境准备

1、硬件环境

2、软件环境

四、部署Qwen2.5:14B

1、模型文件准备

2、安装vLLM

3、使用 Python 脚本方式运行

4、常驻运行(对外提供服务)

5、本地调用测试

6、进阶建议


一、前言

1、Qwen2.5-14B 简介与优势

🤖 Qwen2.5-14B 是什么?

Qwen2.5-14B 是阿里云推出的大语言模型 Qwen2.5 系列中的「大块头」——拥有 140亿参数 的智能大脑🧠!

你可以把它想象成一个能写、能答、能聊、还能编程的超级助手,既聪明又可靠~


🌟 Qwen2.5-14B 有啥亮点?

1️⃣ 更聪明的大脑 🧠

相比之前的版本,Qwen2.5-14B 在理解语言、分析问题、写作、推理等方面全面升级
无论是日常对话,还是技术问题,它都能“对答如流”。


2️⃣ 多才多艺 ✍️🧑‍💻📚

它不仅能写文章📄、生成代码💻、翻译语言🌍,还能辅助写论文、整理文档,甚至参与编程教学!

👉 应用场景举几个:

  • 写周报、写PPT大纲 ✅

  • 翻译中英文 ✅

  • 分析数据结构、写 Python、Go、SQL ✅

  • 总结长文档、提取关键信息 ✅

  


3️⃣ 支持多轮对话,记忆力💾更强

Qwen2.5-14B 的对话能力更自然、更有逻辑,而且可以“记住上下文”,实现更流畅的多轮交流👏。

比如:你前面问了一个问题,后面继续提问时,它还能“接得上茬”!


4️⃣ 中英双语都厉害 🌏

中文自然不用说,母语级别✅
英文水平也很强,能轻松处理技术文档、科研论文和日常交流✒️


5️⃣ 开源友好 🔓

Qwen 系列是 开放的、可商用的模型,意味着开发者、企业可以自由使用和集成,构建自己的 AI 应用,少了很多束缚!💼💡

比如:

  • 构建企业客服助手

  • 嵌入到办公系统中

  • 自研 AI 产品(智能问答、知识库等)


2、双 3090 的算力配置

💥双 RTX 3090:极限性能,性价比之选⚡

如果说显卡是深度学习的“发动机”,那么双 RTX 3090绝对是民间炼丹师们的“神级座驾”!🏎️💨

在消费级显卡中,3090 拥有:

  • 🧠 24GB 大显存(训练大模型的“必需品”)

  • 🔥 强劲的 FP16/TF32 算力

  • 💵 相对合理的二手价格(尤其是在 4090/5090 推出之后)

而 **双卡并联(NVLink 或多进程策略)**更是把性价比拉满,成为小团队、本地实验、独立研究者的理想选择!


✅ 为什么说它是“极限”?

  • 可以单机跑 LLaMA、Qwen、Mistral 等中等规模模型 🧠

  • 数据吞吐速度快,训练速度比单卡提升一大截 🚀

  • 能胜任多模型并发推理任务,边训练边测试都不是问题!

   


✅ 为什么说它是“性价比”?

  • 二手一张 3090 价格≈一张 4080,但显存更大!

  • 比 4090 更便宜、比 A6000 更实用、比 4090Ti 更可控 👊

  • 配合 Open Source 大模型,打通训练 + 推理全流程 🧑‍💻


🧊 小提醒:

当然,双卡发热量大、功耗高,建议搭配:

  • 大功率电源(≥1000W)

  • 优秀的散热系统(风道通畅 or 水冷)

  • 机箱空间足够大!


🔚 总结一句话:

**双 3090,不只是极限堆料,更是 AI 开发者的“性价比之选”!**💻🔥

  


二、技术栈介绍

1、vLLM简介

🚀 什么是 vLLM?

vLLM 是一个开源的 高性能推理引擎,专为大语言模型(LLMs)打造,它让模型“跑得更快、用得更省”💨。

📌 项目地址:https://github.com/vllm-project/vllm
✅ 支持 Hugging Face 上的大多数主流模型(如 LLaMA、Mistral、Qwen 等)


🌟 vLLM 的核心亮点

1️⃣ 超快推理速度 ⚡

vLLM 使用了一种叫做 PagedAttention 的新机制,优化了传统 Transformer 的内存使用方式,使模型推理变得更高效,速度提升可达 2~4 倍


2️⃣ 多用户高并发 ✨

你可以让很多人同时调用同一个模型,vLLM 会智能调度,避免资源冲突。

适合部署到:

  • AI 聊天机器人

  • 多人问答接口

  • 在线写作、翻译工具

  


3️⃣ 支持 OpenAI 接口风格 🧠

只需几行命令,就能让你的本地大模型支持 OpenAI API 接口,像 chat/completions 一样调用,

再用 curlopenai SDK 调用就行!是不是很丝滑😎?


4️⃣ 多 GPU 高效利用 🔧

vLLM 支持 多 GPU 部署,能智能把模型参数分布到多个显卡上,非常适合:

  • 多张 3090 / A100 / H100 环境

  • 单机多卡或集群部署


5️⃣ 高吞吐、低延迟 🌀

即使是上百个请求同时进来,vLLM 也能做到:

  • ✅ 快速响应

  • ✅ 内存精打细算

  • ✅ 批处理优化

适合追求实时性的 AI 应用场景。

更多vLLM介绍,可以参考这篇文章

  


2、NVIDIA 系列 GPU 简介

🎮💻 NVIDIA GPU 系列介绍

NVIDIA 是显卡界的扛把子 💪,其 GPU 不仅统治着游戏圈,更是AI 和深度学习界的最强大脑 🧠。
它的产品线主要分为以下几大类👇:


🎮 GeForce 系列 —— 游戏 & 入门 AI 的主力军

这是最常见的一类显卡,主打游戏玩家和普通创作者。

型号 说明 是否适合 AI
GTX 1660、1050Ti 老将,适合办公和轻游戏 ❌ 显存太小,不推荐
RTX 2060/3060/4060 主流级游戏卡,性价比高 ⚠️ 可做基础 AI 实验(如小模型)
RTX 3080 / 3090 / 4070 / 4080 / 4090 顶级消费卡,24GB 显存(3090/4090) ✅ 深度学习性价比之选,能训模型

🌟 特别推荐:RTX 3090/4090

  • 24GB 大显存,能跑 LLaMA、Qwen、Mistral 等大语言模型

  • vLLM 推理、多卡训练完全胜任!

  


🤖 Tesla / A100 / H100 系列 —— 数据中心神器

这类 GPU 是为AI 训练 & 超大规模计算设计的,常见于服务器集群中:

型号 显存 适用场景
Tesla V100 16/32GB 经典 AI 卡,现在仍可用
A100 40/80GB 强大训练卡,AI 大模型常用
H100 80GB HBM3 当前最强卡之一,用于 GPT 级别模型

🔥 特点:

  • 不接显示器

  • 专为训练优化(FP16、TensorCore 超强)

  • 用在如 ChatGPT、BERT、Stable Diffusion 的大规模训练上


🧪 Jetson 系列 —— 边缘计算 / 物联网 AI

面向开发板 & 机器人等小型设备的 GPU:

型号 特点
Jetson Nano 轻量、便携
Jetson Xavier 性能更强

👍 如果你做嵌入式 AI,小而强的 Jetson 是好选择!


🧠 总结一下:

场景 推荐 GPU
游戏娱乐 + AI 入门 RTX 3060/3080/3090
本地部署大模型 RTX 3090、4090、A6000
多卡训练/企业研发 A100、H100
移动设备 & 教育开发 Jetson Nano/Xavier

  


3、Qwen系列模型简介

🤖 Qwen 系列大模型简介

你是否听说过「Qwen」这个名字?它是阿里云推出的开源大语言模型家族,名字取自 “通义千问”(Qwen = QianWen),寓意 “千问千答、智慧无边”🌌。

它不仅是国产开源大模型的佼佼者,还支持商业化使用,用起来放心又强大!


🧬 Qwen 系列进化之路

版本 发布时间 特点亮点 参数范围 代表模型
Qwen1.5 2023年末 首次大规模开源中英文大模型,适合入门使用 0.5B ~ 72B Qwen1.5-7B、Qwen1.5-14B
Qwen2.5 2024年中 架构优化 + 数据增强,支持 vLLM,推理速度快 同上 Qwen2.5-1.8B、7B、14B
Qwen3 2025年初 接近 GPT-4 水准,中文 SOTA,多模态更强 1.5B ~ 72B+ Qwen3-7B、14B、72B、MoE

  


🧩 Qwen1.5:奠基之作

✅ 优点:

  • 良好的中英文通用性

  • 开源 + 商用许可

  • 已有众多第三方工具支持(如 LangChain)

⚠️ 限制:

  • 推理速度稍慢

  • 训练数据中英文比重偏中文

🔧 推荐用途:轻量部署、学习研究、初级应用开发


⚙️ Qwen2.5:速度与性能双升级

🚀 优化亮点:

  • 架构升级:基于 Transformer + SwiGLU + Rotary PosEmbedding

  • 支持 vLLM、多线程推理,速度飞快⚡

  • 中文、英文、代码理解都更强

✅ 更适合部署在 RTX3090 / 4090 / A100 等显卡上

🔧 推荐用途:企业私有部署、中型应用开发、快速响应系统


🧠 Qwen3:全能旗舰,媲美 GPT-4

🎯 核心优势:

  • 中英文能力双满分(中文能力甚至领先 GPT-4)

  • 更长上下文、更强代码推理、多轮对话无压力

  • 训练数据更丰富,知识更广泛

  • 支持 Qwen3-MoE(混合专家模型)👉 高性能低成本!

🏆 在 CMMLU、MMLU、HumanEval 等多个榜单碾压 LLaMA3 同级别模型

🔧 推荐用途:大模型基础设施、科研场景、AI 原生应用开发


💡 简单比一比:谁更适合你?

使用需求 推荐版本 显卡建议
学习 / 实验 / 嵌入式 Qwen1.5-1.8B / Qwen2.5-1.8B 8G显存左右
中型服务 / 本地 AI 助手 Qwen2.5-7B / Qwen3-7B ≥16G 显存
本地智能体 / 私有部署 Qwen2.5-14B / Qwen3-14B ≥24G 显存(如 3090)
科研 / AI 应用开发平台 Qwen3-72B / Qwen3-MoE A100 / H100 多卡集群

🔚 总结一句话:

Qwen 是中国开源大模型的代表作,从 1.5 到 3,每一代都更聪明、更快、更强大,是国产 LLM 中最值得尝试的系列之一!💪

  


4、什么是模型量化(Quantization)

大模型非常大(几十GB起步),运行时显存压力巨大 💥。量化是为了:

  • ✅ 降低模型体积

  • ✅ 降低显存占用

  • ✅ 加速推理速度

  • ❗但可能会损失一定精度(需要权衡)


格式 精度 占用空间 速度 精度损失 是否训练用 说明
FP32 32位浮点数 非常大 🧱 慢 🐌 训练 & 推理最标准格式
FP16 16位浮点数 ↓ 一半 💾 中 🐢 极小 高性能推理与训练推荐格式
BF16 16位浮点数 ↓ 一半 💾 中 🐢 极小 与FP16类似,但更稳定于训练
INT8 8位整数 ↓ 75% 🔥 快 🏃 中等 ❌(仅推理) 典型量化方案,兼顾速度与准确率
INT4 4位整数 极小 🧊 更快 🏎️ 明显 ❌(仅推理) 极致压缩,适合部署但精度损失明显
GPTQ 4位整数量化 极小 🧊 快 🏁 可调 ❌(仅推理) 基于分组感知误差最小化的先进量化方案,广泛用于部署
AWQ / GQA 4~8位变精度 极小 🧊 快 🛞 低~中 各种研究型或优化型量化格式,兼顾精度与速度

🧱 FP32:原汁原味的大模型

  • 占空间最大,常见模型 50GB+

  • 准确率最高

  • 通常只用于训练和验证

✨ FP16(float16):“高性能原味”

  • 一般用于推理和训练,速度更快,显存减半

  • 精度接近 FP32,几乎无损失

  • 如你运行的 Qwen2.5-14B FP16,就是高质量推理版本

🧠 BF16(bfloat16)

  • 与 FP16 类似,但保留更多指数位,适合训练阶段

  • Google TPU 系上常见


⚡ INT8:“压缩之后还挺聪明”

  • 占空间只有 FP32 的 1/4

  • 推理速度显著提升

  • 精度略有下降,但可接受,常用于部署(ONNX, TensorRT)

🔬 INT4:“极限压缩选手”

  • 超省空间,仅 FP32 的 1/8

  • 推理快得飞起(尤其适合边缘设备)

  • 精度可能下降明显,不适合要求高准确率任务


🧠 哪种格式该选谁?

使用场景 推荐格式 备注
本地训练模型 FP32 / BF16 训练最可靠
本地高精度推理 FP16 性价比最佳
显存不足部署模型 INT8 部署好帮手
极致压缩跑模型 INT4 / GPTQ 推理速度最快,但可能牺牲少量准确率
WebUI部署 / 云端API GPTQ / AWQ 更快更省资源,适配广泛部署框架


三、环境准备

1、硬件环境

  • GPU:RTX 3090 x 2
  • CPU:32C
  • 内存:64G
  • 硬盘:≥ 50G 

2、软件环境

  • 操作系统:Ubuntu 22.04
  • GPU驱动版本:≥ 525(建议 570)
  • CUDA版本:CUDA 11.8 或 CUDA 12.x(推荐 CUDA 12.4)
  • Python 版本:python3.12
  • PyTorch版本: ≥ 2.1(推荐2.5.1) 


四、部署Qwen2.5:14B

1、模型文件准备

通过 Hugging Face 或 魔搭社区进行模型文件的下载,国内推荐魔搭社区

以魔搭社区为例,执行以下命令将 Qwen2.5-14B-Instruct 模型拉取至本地

pip install modelscope
modelscope download --model Qwen/Qwen2.5-14B-Instruct  --local_dir ./Qwen2.5-14B-Instruct


2、安装vLLM

创建虚拟环境(可选但推荐)

python -m venv vllm-env
source vllm-env/bin/activate

# 安装 vLLM + transformers(官方推荐)

pip install --upgrade pip
pip install "vllm[all]" transformers accelerate safetensors

安装包非常大,耗时可能会比较久


3、使用 Python 脚本方式运行

编写代码

from vllm import LLM, SamplingParams

# 初始化模型
llm = LLM(
    model="/root/autodl-tmp/Qwen2.5-14B-Instruct",
    dtype="float16",
    tensor_parallel_size=2,
    max_model_len=8192,
    gpu_memory_utilization=0.95,
)

# 定义推理参数
sampling_params = SamplingParams(temperature=0.7)

# 拼接 prompt(低版本不支持 chat 格式)
prompt = "你是一个有帮助的 AI 助手。\n用户:你好,介绍一下Qwen2.5模型吧\n助手:"

outputs = llm.generate(prompt, sampling_params)

print(outputs[0].outputs[0].text)

执行代码

python test.py 


4、常驻运行(对外提供服务)

在命令行执行下面的命令

python -m vllm.entrypoints.openai.api_server \
  --model /root/autodl-tmp/Qwen2.5-14B-Instruct \
  --served-model-name Qwen2.5-14B-Instruct \
  --dtype float16 \
  --tensor-parallel-size 2 \
  --max-model-len 8192 \
  --gpu-memory-utilization 0.95

参数解释:

参数 说明
--model 模型名称(HF上自动拉取)
--dtype float16 使用 FP16 推理,节省显存
--tensor-parallel-size 2 使用 2 张显卡并行
--gpu-memory-utilization 控制使用显存比例
--max-model-len 最大上下文长度(Qwen2.5 支持 8K)

5、本地调用测试

上面我们已经将大模型启动完毕,接下来进行调用测试

vLLM 会默认监听 http://localhost:8000/v1/chat/completions,兼容 OpenAI 接口!

在命令行执行下面的命令

curl http://localhost:8000/v1/chat/completions   -H "Content-Type: application/json"   -d '{
    "model": "Qwen2.5-14B-Instruct",
    "messages": [{"role": "user", "content": "你好,介绍一下Qwen模型吧"}],
    "temperature": 0.7
  }'


也可以用 Python + openai 兼容客户端调用:

from openai import OpenAI

client = OpenAI(base_url="http://localhost:8000/v1", api_key="EMPTY")

response = client.chat.completions.create(
    model="Qwen2.5-14B-Instruct",
    messages=[
        {"role": "system", "content": "你是一个有帮助的AI助手"},
        {"role": "user", "content": "介绍一下你自己吧"}
    ],
    temperature=0.7,
)

print(response.choices[0].message.content)


6、进阶建议

--swap-space --load-format safetensorsvLLM 加载大型模型时两个常用的性能优化参数,它们可以:

  • ✅ 加速大模型加载速度(特别是首次运行)

  • ✅ 降低内存或显存压力

  • ✅ 提升容错性和部署效率


--load-format safetensors

🔍 作用:

告诉 vLLM 使用 .safetensors 格式加载权重文件,相比传统 .bin 格式,它:

  • 加载更快(是原生内存映射格式)

  • 更安全(防止任意代码执行)

  • 更节省内存

🛠 使用方式:

只需加上参数:

--load-format safetensors

✅ 条件:

  • 下载的模型文件夹必须包含 .safetensors 文件(大多数新模型默认已经支持了)。

--swap-space

🔍 作用:

设置 vLLM 在模型加载时最多使用的 CPU swap 空间(单位为 MB)

这非常有用,尤其是在:

  • 显卡内存不够时 ➜ 临时放一部分数据到内存

  • 第一次加载大模型时 ➜ 减缓“爆内存”崩溃

  • 启动大模型(如 Qwen2.5-14B)时显存紧张

🛠 使用方式(例如使用 8GB 交换空间):

--swap-space 8192

或者给个更大的缓冲:

--swap-space 16000

💡 注意:这个“swap”是 vLLM 自己管理的,并不是 Linux 的 swap 分区。


🧪 完整命令行推荐(适合双 3090 启动 Qwen2.5-14B)

python -m vllm.entrypoints.openai.api_server \
  --model /root/autodl-tmp/Qwen2.5-14B-Instruct \
  --served-model-name Qwen2.5-14B-Instruct \
  --dtype float16 \
  --tensor-parallel-size 2 \
  --max-model-len 8192 \
  --gpu-memory-utilization 0.95
  --swap-space 16000 \
  --load-format safetensors

启动后可以通过 nvidia-smi 命令来查看GPU功耗以及显存使用情况


💕💕💕每一次的分享都是一次成长的旅程,感谢您的陪伴和关注。希望这些文章能陪伴您走过技术的一段旅程,共同见证成长和进步!😺😺😺

🧨🧨🧨让我们一起在技术的海洋中探索前行,共同书写美好的未来!!!