保姆级落地|中文大模型本地部署全流程(Qwen+ChatGLM3+BGE+vLLM)
本文介绍了中文大模型的高效部署方案,重点推荐两套"中文最稳组合":通用配置(Qwen3-7B+BGE-M3)和轻量配置(ChatGLM3-6B+m3e-large)。详细讲解了从环境配置、模型获取到vLLM加速和嵌入模型使用的全流程,并提供了RAG实战案例。文章特别强调使用vLLM推理引擎可显著提升性能(5-10倍速度提升,显存降低30%+),同时给出常见问题解决方案。这套方案
前言:作为一名AI开发者,相信很多人都踩过「中文大模型部署」的坑——选模型踩雷、推理速度慢、显存不够用、嵌入模型检索不准,折腾半天还是无法落地。今天结合实操经验,把「最稳中文大模型组合」的完整部署流程讲透,从模型获取、vLLM加速,到嵌入模型使用、简单RAG实战,新手也能10分钟上手,全程干货无废话,收藏起来!
核心亮点:无需复杂调参,选用业界公认「中文最稳组合」,兼顾效果、部署难度和商用合规,适配消费级显卡(8G显存即可跑通),适合做本地服务、RAG知识库、聊天机器人等场景。
一、先明确:我们要部署的「中文最稳组合」
先避开“模型选型坑”,直接上两套组合,按需选择:
组合1:通用稳配(首选,中文全能,8G显存可跑)
-
生成模型:Qwen3-7B-Instruct(阿里通义千问开源版)—— 中文理解、生成、长文本能力拉满,指令遵循度高,生态完善,支持商用。
-
嵌入模型:BGE-M3(智源AI)—— 中文检索天花板,召回率碾压同级,支持长上下文(8192 tokens),RAG场景标配。
-
加速工具:vLLM —— 推理并发提升5-10倍,显存占用降低30%+,完美适配Qwen,生产环境必用。
组合2:轻量稳配(低算力首选,6G显存可跑)
-
生成模型:ChatGLM3-6B(智谱AI)—— 中文老牌模型,新手友好,部署最简单,文档最完善。
-
嵌入模型:m3e-large(MokaAI)—— 轻量高效,中文语义匹配准,安装简单,与ChatGLM联动丝滑。
-
加速工具:vLLM —— 轻量组合也能拉满性能,性价比首选。
补充说明
很多人问Llama系列,这里统一回复:Llama 3(Meta开源)是国际标杆,但中文表现不如Qwen/ChatGLM3,做中文应用优先选上面两套;vLLM不是模型,是「大模型推理加速器」,专门解决“模型跑的慢、显存不够用”的问题,所有主流开源大模型都能适配。
1. Llama 是什么?
Llama 是 Meta(Facebook)开源的大语言模型。
- 你可以把它理解成一个通用 AI 大脑:能聊天、写文案、回答问题、做总结、写代码。
- Llama 3 8B 就是它的一个版本:80 亿参数,小而强,普通人用显卡就能跑。
简单说:Llama = 可以本地部署的开源大模型本体。
2. vLLM 是什么、有什么用?
vLLM 是 专门给大模型提速、提高并发的推理引擎。
作用一句话:让 Llama 这类大模型跑得更快、能同时服务更多人,显存用得更少。
更通俗:
- 不用 vLLM:大模型推理慢、一次只能处理一两个请求。
- 用了 vLLM:并发高很多、延迟低,适合真正拿来做服务、做产品。
vLLM = 大模型的 “高性能加速器”。
二、前置准备:环境配置(必做,一步到位)
无论哪套组合,先配置基础环境,Windows、Mac、Linux通用(优先推荐Linux/Mac,GPU兼容性更好),全程用pip安装,无需复杂编译。
1. 基础依赖安装
# 升级pip(避免安装失败)
pip install --upgrade pip
# 安装核心依赖(vLLM+嵌入模型依赖+PyTorch)
# PyTorch需匹配自己的显卡,建议安装1.18+版本
pip install vllm sentence-transformers torch git-lfs
2. 显卡要求(关键,避免显存不足)
-
组合1(Qwen3-7B+BGE-M3):最低8G显存(推荐10G+,更流畅),如RTX 3060/4060/4070。
-
组合2(ChatGLM3-6B+m3e-large):最低6G显存,如RTX 3050/4050。
-
无独立显卡:不建议部署7B/6B模型,可尝试更小参数模型(如Qwen1.5-4B),但体验一般。
三、核心步骤1:模型获取(两种方式,解决网络坑)
所有模型均托管在Hugging Face(开源模型官方仓库),新手优先选「自动下载」,网络慢/下载失败选「手动下载」(用国内镜像,速度翻倍)。
方式1:自动下载(最省事,推荐新手)
无需手动下载,后续运行代码/启动vLLM时,会自动从Hugging Face下载模型到本地(首次下载慢,后续复用,默认路径:~/.cache/huggingface)。
示例:启动Qwen3-7B-Instruct时,直接指定模型名,会自动下载。
方式2:手动下载(解决网络超时,国内镜像)
先安装git-lfs(模型文件较大,必须用这个工具),再克隆模型仓库(用hf-mirror国内镜像,比官方快10倍)。
# 1. 安装git-lfs(已安装可跳过)
git lfs install
# 2. 克隆模型(按需选择,复制对应命令)
# 克隆Qwen3-7B-Instruct(组合1生成模型)
git clone https://hf-mirror.com/Qwen/Qwen3-7B-Instruct
# 克隆ChatGLM3-6B(组合2生成模型)
git clone https://hf-mirror.com/THUDM/ChatGLM3-6B
# 克隆BGE-M3(组合1嵌入模型)
git clone https://hf-mirror.com/FlagAI-Open/BGE-M3
# 克隆m3e-large(组合2嵌入模型)
git clone https://hf-mirror.com/moka-ai/m3e-large
克隆完成后,模型会保存在当前目录,后续使用时,直接指定本地模型路径即可(比如:./Qwen3-7B-Instruct)。
四、核心步骤2:vLLM使用(加速生成模型,关键一步)
vLLM的核心作用是「让大模型跑得更快、显存用得更少、支持更多并发」,用法很简单:启动推理服务 → 调用服务。
1. vLLM安装验证
安装完成后,运行以下命令,无报错即安装成功:
vllm --version
2. 启动vLLM推理服务(分两种组合)
启动服务后,会占用部分显存,保持终端运行即可(关闭终端,服务停止)。
示例1:启动组合1(Qwen3-7B-Instruct)
# 自动下载模型+启动服务(端口8000,可自定义)
vllm serve Qwen/Qwen3-7B-Instruct \
--port 8000 \
--tensor-parallel-size 1 \ # 单显卡填1,多卡填对应数量(如2张卡填2)
--gpu-memory-utilization 0.8 # 显存利用率,8G显存建议0.7,10G+填0.8-0.9
# 若已手动下载模型,用本地路径(推荐,避免重复下载)
vllm serve ./Qwen3-7B-Instruct \
--port 8000 \
--tensor-parallel-size 1 \
--gpu-memory-utilization 0.8
示例2:启动组合2(ChatGLM3-6B)
# ChatGLM3需要加--trust-remote-code参数,加载自定义代码
vllm serve THUDM/ChatGLM3-6B \
--port 8000 \
--trust-remote-code \
--tensor-parallel-size 1 \
--gpu-memory-utilization 0.8
# 手动下载后,本地路径启动
vllm serve ./ChatGLM3-6B \
--port 8000 \
--trust-remote-code \
--tensor-parallel-size 1
启动成功标志
终端显示「Uvicorn running on http://0.0.0.0:8000」,说明服务启动成功,可正常调用。
3. 调用vLLM服务(生成文本,Python代码)
vLLM兼容OpenAI API格式,调用方式简单,直接复制代码,修改prompt即可生成文本。
import requests
import json
# 1. 配置请求信息(模型名和启动时一致)
url = "http://localhost:8000/v1/completions"
headers = {"Content-Type": "application/json"}
data = {
"model": "Qwen/Qwen3-7B-Instruct", # 若用ChatGLM3,改为THUDM/ChatGLM3-6B
"prompt": "帮我写一段介绍中文大模型本地部署的文案,100字左右,通俗易懂", # 自定义prompt
"max_tokens": 200, # 生成文本最大长度,按需调整
"temperature": 0.7, # 随机性:0=严谨(适合问答),1=灵活(适合创作)
"stream": False # 非流式输出,新手首选
}
# 2. 发送请求,获取生成结果
try:
response = requests.post(url, headers=headers, json=data)
response.raise_for_status() # 捕获请求错误
result = json.loads(response.text)
# 打印生成结果
print("生成结果:\n", result["choices"][0]["text"])
except Exception as e:
print("调用失败:", str(e))
运行代码后,即可快速得到生成结果,比直接用Transformers库调用快5-10倍,显存占用也会明显降低。
五、核心步骤3:嵌入模型使用(BGE-M3/m3e-large)
嵌入模型的作用是「将文本转为向量」,用于RAG检索、文本相似度计算、知识库匹配等场景,无需vLLM,用sentence-transformers库直接调用,用法统一。
1. 嵌入模型调用(分两种组合,代码可直接复制)
示例1:使用BGE-M3(组合1,检索首选)
from sentence_transformers import SentenceTransformer
from sklearn.metrics.pairwise import cosine_similarity
# 1. 加载模型(自动下载或本地路径)
# 自动下载:model = SentenceTransformer("FlagAI-Open/BGE-M3")
# 手动下载后,本地路径加载(推荐)
model = SentenceTransformer("./BGE-M3")
# 2. 待向量化的文本(可单句、可列表,适合批量处理)
texts = [
"vLLM是大模型推理加速引擎,能提升并发、降低显存占用",
"Qwen3-7B-Instruct是阿里开源的中文大模型,适合本地部署",
"BGE-M3是中文嵌入模型,检索效果优于同类模型"
]
# 3. 生成文本向量(核心操作,归一化提升检索效果)
embeddings = model.encode(
texts,
normalize_embeddings=True, # 必须归一化,否则相似度计算不准
max_length=8192 # BGE-M3支持长文本,按需调整
)
# 4. 查看结果(向量维度:BGE-M3为1024维)
print("向量维度:", embeddings.shape) # 输出 (3, 1024),3个文本,每个1024维
print("第一个文本的向量前10位:", embeddings[0][:10])
# 5. 计算文本相似度(RAG核心功能,匹配相关文本)
similarity = cosine_similarity([embeddings[0]], [embeddings[1]])
print("文本1和文本2的相似度:", round(similarity[0][0], 4)) # 相似度越接近1,越相关
示例2:使用m3e-large(组合2,轻量首选)
from sentence_transformers import SentenceTransformer
# 加载模型(自动下载或本地路径)
# model = SentenceTransformer("moka-ai/m3e-large")
model = SentenceTransformer("./m3e-large")
# 生成向量(用法和BGE-M3完全一致)
text = "中文大模型本地部署,首选Qwen+ChatGLM3,配合vLLM加速"
embedding = model.encode(text, normalize_embeddings=True)
# 查看向量维度(m3e-large也是1024维,与BGE-M3兼容)
print("m3e-large向量维度:", embedding.shape) # 输出 (1024,)
2. 关键注意事项
-
嵌入模型无需加速,本身轻量,6G显存可轻松运行。
-
生成向量时,必须加「normalize_embeddings=True」,否则相似度计算会失真。
-
若用于RAG,建议将文本拆分(如每段200字),再生成向量,检索效果更好。
六、实战案例:简单RAG检索增强生成(落地核心)
结合上面的生成模型(vLLM启动)和嵌入模型,做一个简单的RAGdemo——先检索相关文本,再让大模型基于检索结果生成回答,比纯生成更精准(适合知识库问答)。
from sentence_transformers import SentenceTransformer
from sklearn.metrics.pairwise import cosine_similarity
import requests
import json
# 第一步:初始化嵌入模型(用BGE-M3为例)
embedding_model = SentenceTransformer("./BGE-M3")
# 第二步:构建简单知识库(实际场景可替换为本地文档、数据库)
knowledge_base = [
"vLLM是一款高效的大模型推理引擎,核心技术是PagedAttention,能高效管理KV Cache,提升吞吐量5-10倍。",
"Qwen3-7B-Instruct是阿里通义千问开源的70亿参数大模型,中文表现优秀,8G显存可本地部署,支持商用。",
"BGE-M3是智源AI推出的中文嵌入模型,支持长上下文8192 tokens,检索召回率在中文领域处于领先水平。",
"ChatGLM3-6B是智谱AI推出的60亿参数中文大模型,新手友好,部署简单,6G显存即可运行。"
]
# 第三步:生成知识库向量
kb_embeddings = embedding_model.encode(knowledge_base, normalize_embeddings=True)
# 第四步:用户提问,生成提问向量
user_query = "Qwen3-7B-Instruct需要多少显存才能部署?"
query_embedding = embedding_model.encode(user_query, normalize_embeddings=True)
# 第五步:检索知识库中最相关的文本(取相似度最高的1条)
similarities = cosine_similarity([query_embedding], kb_embeddings)[0]
max_idx = similarities.argmax()
related_text = knowledge_base[max_idx]
# 第六步:调用vLLM服务,基于检索结果生成回答
url = "http://localhost:8000/v1/completions"
headers = {"Content-Type": "application/json"}
data = {
"model": "Qwen/Qwen3-7B-Instruct",
"prompt": f"基于以下信息,回答用户问题,简洁明了:\n信息:{related_text}\n用户问题:{user_query}",
"max_tokens": 100,
"temperature": 0.3, # 降低随机性,保证回答准确
"stream": False
}
response = requests.post(url, headers=headers, json=data)
result = json.loads(response.text)
print("用户问题:", user_query)
print("生成回答:", result["choices"][0]["text"])
# 运行结果示例:
# 用户问题:Qwen3-7B-Instruct需要多少显存才能部署?
# 生成回答:Qwen3-7B-Instruct需要8G显存即可本地部署。
这个demo虽然简单,但已经实现了RAG的核心逻辑,实际场景中,只需将「knowledge_base」替换为本地文档(如PDF、TXT),即可实现专属知识库问答。
七、新手必看:常见踩坑总结(避坑关键)
结合自己部署经验,整理了5个新手最常踩的坑,提前规避,节省时间:
坑1:下载模型超时 → 解决方案:用hf-mirror国内镜像手动克隆,或换网络(手机热点试一下)。
坑2:启动vLLM报错「显存不足」 → 解决方案:降低「gpu-memory-utilization」参数(如8G显存改为0.7),关闭其他占用显存的程序。
坑3:调用ChatGLM3报错 → 解决方案:启动vLLM时必须加「--trust-remote-code」参数,加载模型自定义代码。
坑4:嵌入模型生成向量后,相似度计算不准 → 解决方案:生成向量时,一定要加「normalize_embeddings=True」。
坑5:vLLM启动后,调用失败 → 解决方案:检查模型名是否和启动时一致,端口是否被占用(换个端口,如8001)。
八、总结与拓展
本文讲解的「中文大模型部署全流程」,核心是「选对模型+用对工具」——Qwen/ChatGLM3解决中文生成问题,BGE-M3/m3e-large解决检索问题,vLLM解决速度和显存问题,三者结合,既能落地,又能保证效果。
拓展方向:
1. 部署到服务器:将vLLM服务部署到云服务器,对外提供API接口,支持多端调用。
2. 优化RAG:结合LangChain/LlamaIndex框架,实现PDF、Word等文档的自动加载、拆分、检索。
3. 模型量化:将模型量化为4-bit(如Qwen3-7B-4bit),进一步降低显存占用,适配更低配置的显卡。
嗯 ... ... 再补充点吧
一、主流开源大语言模型(LLM,负责聊天 / 生成 / 思考)
国际主流
- Llama 3 / Llama 2(Meta)开源基座里的 “标杆”,效果稳、生态最成熟,8B/70B 最常用。
- Mistral / Mixtral小模型速度快、效果强,7B 级别性价比很高。
- Phi-3(微软)小参数但很强,适合低资源部署。
中文最强主流(国内做应用优先选)
- Qwen 通义千问开源版(阿里)中文理解、生成、长文本都很强,生态完善。
- ChatGLM3 / GLM-4(清华 + 智谱)老牌中文友好,极易部署,对新手友好。
- Yi 系列(零一万物)长上下文表现突出。
- DeepSeek 系列代码、长文本、数学能力强。
二、主流开源嵌入模型(Embedding,负责向量化 / RAG 检索)
全部是中文领域最能打的,做知识库、检索、相似度必用:
- m3e-base / m3e-large ,中文效果稳、速度快,最常用。
- bge-base-zh /bge-large-zh(智源)业内公认综合最强的中文嵌入模型。
- gte-base-zh /gte-large-zh(阿里)效果强,和 bge 同一梯队。
- text2vec-base-chinese轻量、老牌、稳定,很多老项目在用。
极简总结(直接照抄拿去用)
- 要聊天生成:Llama 3、Qwen、ChatGLM3
- 要RAG 向量检索:bge-zh、m3e、gte-zh
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐

所有评论(0)