跳到主要内容
企业私有 RAG 大模型构建:Qwen2.5 与 vLLM 部署实战 | 极客日志
Python AI 算法
企业私有 RAG 大模型构建:Qwen2.5 与 vLLM 部署实战 综述由AI生成 企业私有 RAG 系统中 Qwen2.5-7B 大模型的 vLLM 部署实战。内容涵盖环境配置、模型下载、Python 推理脚本编写及 OpenAI 兼容 API 服务构建。通过 vLLM 加速可显著提升推理性能,支持单卡或多卡部署,适用于客服、文案生成等场景。文章还补充了 Docker 容器化部署及多卡负载均衡策略,为 RAG 应用落地提供技术参考。
灵魂摆渡 发布于 2025/2/6 更新于 2026/6/9 28 浏览企业私有 RAG 大模型构建指南:Qwen2.5 与 vLLM 部署示例
在上一篇文章中,我们详细介绍了如何通过 vLLM 加速部署开源模型 GLM-4-9B-Chat。在企业真实场景中,开发接口通常需要针对具体需求进行定制化处理,以更好地适配 RAG(检索增强生成)应用系统的实际需求。
背景与架构
在 RAG 系统的架构中,大模型扮演着至关重要的角色,是整个流程的'最后一环'。知识库的构建、检索,以及知识的排序与整合,都是为了为大模型提供准确、完整的上下文知识。这种知识支撑可以显著降低大模型生成过程中的幻觉问题(如生成不可靠或错误答案)。因此,大模型的生成能力直接决定了 RAG 系统的服务质量,特别是在为用户问题生成答案时,精准性与可靠性尤为关键。
目前可商用的开源大模型主要包括:
GLM-4-9B-Chat
Qwen2.5-7B
DeepSeek-7B-Chat
DeepSeekV3 近期备受瞩目,其多项测试指标超越了其他开源模型,甚至在某些方面达到或超过部分闭源大模型的水平。V3 模型体量巨大,尽管 vLLM、SGLang 和 LMDeploy 等加速框架已支持其部署,但仍有许多优化空间。此外,部署所需的 GPU 资源极为庞大,对企业硬件条件提出了较高要求。因此,本文主要介绍阿里 Qwen2.5-7B 模型的 vLLM 部署与示例。
Qwen2.5 介绍
Qwen2.5 是 Qwen 家族的新成员,具有以下特点:
密集、易于使用、仅解码器的语言模型,有 0.5B、1.5B、3B、7B、14B、32B 和 72B 大小以及基本和指示变体。
在我们最新的大规模数据集上进行预训练,涵盖多达 18T 个标记。
在指令跟踪、生成长文本(超过 8K 个标记)、理解结构化数据(例如表格)以及生成结构化输出(尤其是 JSON)方面有显著改进。
更能适应系统提示的多样性,增强聊天机器人的角色扮演实现和条件设定。
上下文长度最多支持 128K 个 token,最多可生成 8K 个 token。
支持超过 29 种语言,包括中文、英语、法语、西班牙语、葡萄牙语、德语、意大利语、俄语、日语、韩语、越南语、泰语、阿拉伯语等。
vLLM 部署环境配置
硬件与环境建议
企业可根据成本和业务需求选择硬件设备,以下是推荐配置:
GPU 建议
建议使用 NVIDIA 3090 或 4090 显卡。若仅用于功能验证,一块 GPU 即可满足需求;实际部署可根据业务规模决定 GPU 数量。
操作系统
Ubuntu 20.04 或更高版本。
CUDA 版本
需安装 CUDA 12.1 或更高版本。
深度学习框架
PyTorch 2.1.0 或更高版本。
Python 版本
使用 Python 3.10 或更高版本(推荐使用 Conda 环境管理工具)。
确保环境与硬件兼容,是大模型高效运行的关键。
安装 vLLM
执行以下命令创建 Conda 环境并安装依赖:
conda create -n vllm_qwen python=3.10
conda activate vllm_qwen
python -m pip install --upgrade pip
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
pip install vllm
pip install modelscope[framework]
直接安装 vLLM,默认会安装支持 CUDA 12.1 及以上版本的 vLLM。如果我们需要在 CUDA 11.8 的环境下安装 vLLM,需指定 vLLM 版本和 Python 版本下载安装。
模型下载
模型的下载可以使用以下两种方式:
使用 ModelScope 下载
执行以下命令,将模型下载到 /qwen 目录下:
git clone https://www.modelscope.cn/Qwen/Qwen2.5-7B-Instruct.git
使用 HF 国内镜像下载
执行以下命令,将模型下载到 /qwen 目录下:
git clone https://hf-mirror.com/Qwen/Qwen2.5-7B-Instruct
qwen/Qwen2.5 -7 B-Instruct/
|
|
|
|
|
|
|
|
|
|
|
|
|
`
代码准备与推理
简单示例 Python 文件 在 /qwen 目录下创建 vllm_run.py,创建完目录结构如下:
vllm_run.py 代码如下,通过示例代码可以快速熟悉 vLLM 引擎的使用方式:
from transformers import AutoTokenizer
from vllm import LLM, SamplingParams
max_model_len, tp_size = 2048 , 1
model_name = "./Qwen2.5-7B-Instruct"
prompt = [{"role" : "user" , "content" : "你好,讲讲你是谁?" }]
tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True )
llm = LLM(
model=model_name,
tensor_parallel_size=tp_size,
max_model_len=max_model_len,
trust_remote_code=True ,
enforce_eager=True ,
enable_chunked_prefill=True ,
max_num_batched_tokens=2048
)
stop_token_ids = [151329 , 151336 , 151338 ]
sampling_params = SamplingParams(temperature=0.95 , max_tokens=1024 , stop_token_ids=stop_token_ids)
inputs = tokenizer.apply_chat_template(prompt, tokenize=False , add_generation_prompt=True )
outputs = llm.generate(prompts=inputs, sampling_params=sampling_params)
print (outputs[0 ].outputs[0 ].text)
INFO 01-11 04:21:12 model_runner.py:1099] Loading model weights took 14.2487 GB
INFO 01-11 04:21:13 worker.py:241] Memory profiling takes 0.69 seconds
INFO 01-11 04:21:13 worker.py:241] the current vLLM instance can use total_gpu_memory (23.64GiB) x gpu_memory_utilization (0.90) = 21.28GiB
INFO 01-11 04:21:13 worker.py:241] model weights take 14.25GiB
INFO 01-11 04:21:13 gpu_executor.py:76]
INFO 01-11 04:21:13 gpu_executor.py:80] Maximum concurrency for 2048 tokens per request: 50.34x
INFO 01-11 04:21:17 llm_engine.py:431] init engine (profile, create kv cache, warmup model) took 4.89 seconds
Processed prompts: 100%|█████████████████████████████████████████| 1/1 [00:00<00:00, 1.01it/s, est. speed input: 36.52 toks/s, output: 53.76 toks/s]
你好!我是 Qwen,我是由阿里云开发的一种超大规模语言模型。我被设计用来回答问题、提供信息、参与对话,旨在帮助用户获得所需的知识和信息。如果你有任何问题或需要帮助,都可以尝试和我交流。
构建与 OpenAI 兼容的 API 服务 使用 vLLM 来构建与 OpenAI 兼容的 API 服务,包括工具使用支持。使用聊天模型启动服务器。
export CUDA_VISIBLE_DEVICES=3 // 指定 GPU 默是 0 卡
vllm serve Qwen2.5-7B-Instruct
通过 curl 命令查看当前 API Server 的模型列表。
curl http://localhost:8000/v1/models
{
"object" : "list" ,
"data" : [ {
"id" : "Qwen2.5-7B-Instruct" ,
"object" : "model" ,
"created" : 1736570004 ,
"owned_by" : "vllm" ,
"root" : "Qwen2.5-7B-Instruct" ,
"parent" : null ,
"max_model_len" : 32768 ,
"permission" : [ {
"id" : "modelperm-62acae496e714754b5d8866fff32f0cb" ,
"object" : "model_permission" ,
"created" : 1736570004 ,
"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 使用 prompt 调用:
curl http://localhost:8000/v1/chat/completions -H "Content-Type: application/json" -d '{
"model": "Qwen2.5-7B-Instruct",
"messages": [
{"role": "system", "content": "You are Qwen, created by Alibaba Cloud. You are a helpful assistant."},
{"role": "user", "content": "告诉我一些关于大型语言模型的事情。"}
],
"temperature": 0.7,
"top_p": 0.8,
"repetition_penalty": 1.05,
"max_tokens": 512
}'
{
"id" : "chatcmpl-c774bbba1c5c47579a77dec6ef87d987" ,
"object" : "chat.completion" ,
"created" : 1736570396 ,
"model" : "Qwen2.5-7B-Instruct" ,
"choices" : [ {
"index" : 0 ,
"message" : {
"role" : "assistant" ,
"content" : "当然,我很乐意为您介绍一些关于大型语言模型的知识!..." ,
"tool_calls" : [ ]
} ,
"logprobs" : null ,
"finish_reason" : "stop" ,
"stop_reason" : null
} ] ,
"usage" : {
"prompt_tokens" : 37 ,
"total_tokens" : 424 ,
"completion_tokens" : 387 ,
"prompt_tokens_details" : null
} ,
"prompt_logprobs" : null
}
使用 vLLM 加速后模型的性能通常可提升 30% 以上,具体取决于显存带宽和并发请求数。
进阶部署与优化
Docker 容器化部署 为了便于管理和迁移,推荐使用 Docker 部署 vLLM 服务。
FROM nvidia/cuda:12.1.0-runtime-ubuntu22.04
RUN apt-get update && apt-get install -y python3-pip
WORKDIR /app
COPY requirements.txt .
RUN pip install vllm torch transformers
COPY . .
CMD ["vllm", "serve", "Qwen2.5-7B-Instruct"]
多卡并行与负载均衡 对于高并发场景,可采用多 GPU 部署。设置 tensor_parallel_size 参数为 GPU 数量。同时,结合 Nginx 方案可实现高效负载均衡,确保服务的高可用性。
RAG 集成注意事项 开源模型在应对 RAG 生成任务时表现不错,单卡 4090 足以支持单企业的多人并发 RAG 问答需求。然而,目前开源模型在知识图谱识别能力上仍有局限。对于 RAG 系统中知识图谱的建立功能,建议引入各大模型厂商的 API 服务进行调用,这样能够显著提升效果,确保数据更精准地满足业务需求。
Qwen2.5 典型的应用包括:客服聊天、文案生成、PPT 文案生成等。在实际接入企业内部各种应用时,需注意上下文窗口的管理,避免超出模型限制导致截断。
总结 本文详细介绍了 Qwen2.5-7B 模型在 vLLM 框架下的部署流程,包括环境搭建、模型下载、本地推理脚本编写以及 OpenAI 兼容 API 服务的启动。通过 vLLM 加速,可以显著提升推理速度,满足企业级私有化部署的需求。后续可根据业务量扩展多 GPU 集群,并结合 LangChain 等框架进一步构建完整的 RAG 应用系统。
相关免费在线工具 加密/解密文本 使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
RSA密钥对生成器 生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
Mermaid 预览与可视化编辑 基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
随机西班牙地址生成器 随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online
Gemini 图片去水印 基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online
curl 转代码 解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online