大模型部署调用 (vLLM+LangChain)
前言
大模型训练完成后,需要部署到服务端以提供 API 接口供上层应用使用。本章将重点介绍如何使用 进行高效推理部署,并结合 框架实现应用层的快速集成。
本文介绍了基于 vLLM 和 LangChain 的大模型部署与调用流程。首先讲解 vLLM 推理库的安装与环境配置,通过 OpenAI 兼容接口暴露模型服务。接着演示如何使用 LangChain 连接本地 vLLM 服务,涵盖 ChatOpenAI 与 OpenAI 客户端的区别及 Base 与 Chat 模型类型的适配问题。最后补充了显存监控、Token 使用统计及常见错误排查方法,帮助开发者快速搭建高效的大模型应用环境。

大模型训练完成后,需要部署到服务端以提供 API 接口供上层应用使用。本章将重点介绍如何使用 进行高效推理部署,并结合 框架实现应用层的快速集成。
vLLMLangChain大模型应用的整体结构通常划分为以下几个层次:
vLLM。LangChain。在开始部署前,请确保满足以下基础环境要求:
vLLM 是一个专为大语言模型(LLMs)设计的高效推理库,旨在优化推理速度和内存使用。它通过动态计算图和先进的内存管理技术(如 PagedAttention),帮助开发者在资源有限的情况下高效地运行大型模型。
pip install vllm
安装完毕后,可通过以下命令验证版本及依赖:
pip show vllm
使用以下命令启动 vLLM 服务,暴露 OpenAI 兼容接口:
python -m vllm.entrypoints.openai.api_server \
--model Qwen2-0.5B-Instruct \
--host 0.0.0.0 \
--port 8000 \
--tensor-parallel-size 1
注意:
--model参数需指定本地模型文件夹路径。若模型位于子目录,请使用绝对路径。Linux 下文件路径大小写敏感,请保持名称一致。
成功部署后,控制台应显示类似如下日志:
INFO: Started server process [1657]
INFO: Waiting for application startup.
INFO: Application startup complete.
INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)
部署后可使用 nvidia-smi 查看显存占用情况:
nvidia-smi
典型的小模型部署可能占用约 19GB 显存,具体取决于模型参数量及量化方式。
pip install langchain-openai
使用 LangChain 连接本地 vLLM 服务:
from langchain_openai import ChatOpenAI
# 连接信息配置
base_url = "http://localhost:8000/v1"
api_key = "EMPTY" # 本地部署通常无需真实 Key
model_id = "Qwen2-0.5B-Instruct"
# 初始化 LLM 实例
llm = ChatOpenAI(
base_url=base_url,
api_key=api_key,
model=model_id
)
# 发起调用
response = llm.invoke(input="你是谁?")
print(response.content)
在实际应用中,推荐使用流式输出以提升用户体验:
for chunk in llm.stream("请介绍一下 Python 的列表推导式"):
print(chunk.content, end="", flush=True)
调用结果包含丰富的元数据,可用于分析 Token 使用情况:
content: 生成的文本内容。response_metadata.token_usage: 包含 completion_tokens (生成 token)、prompt_tokens (输入 token) 和 total_tokens (总 token)。finish_reason: 结束原因,如 stop 表示正常结束。模型常规情况下分为两种类型:Base 类型 和 Chat 类型。
Qwen2-0.5B):适合继续预训练或作为基座,直接预测下一个 token。Qwen2-0.5B-Instruct):经过指令微调,适合对话场景。在 LangChain 中,调用方式需与模型类型匹配:
ChatOpenAI 类,适用于 Chat 类型模型。OpenAI 类,适用于 Base 类型模型。若模型类型与调用方式不匹配,可能导致回复格式异常或逻辑错误。例如,使用 Base 方式调用 Chat 模型时,可能无法正确遵循指令格式。
现象:服务启动失败,报错 CUDA out of memory。
解决:
tensor-parallel-size。load_format=auto 或指定 fp16/int8)。max_model_len)。现象:客户端无法连接到 localhost:8000。
解决:
curl http://localhost:8000/v1/models 测试连通性。现象:生成长文本时被截断。 解决:
max_tokens 参数。max_model_len 配置。本文详细介绍了基于 vLLM 和 LangChain 的大模型部署与调用流程。通过 vLLM 的高吞吐推理引擎,结合 LangChain 的灵活编排能力,开发者可以快速构建稳定、高效的 AI 应用。关键点在于理解模型类型与调用方式的匹配,以及合理配置推理参数以平衡性能与资源消耗。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online