手把手教你用vLLM部署通义千问1.5-1.8B-Chat-GPTQ-Int4模型

1. 引言:为什么选择这个轻量级模型?

如果你正在寻找一个既能快速部署、又能流畅对话,同时对硬件要求还特别友好的AI模型,那么通义千问1.5-1.8B-Chat-GPTQ-Int4绝对值得你花十分钟了解一下。

这个模型的核心优势可以用三个词概括:小、快、省

  • :模型参数量只有18亿(1.8B),体积小巧,一个经过GPTQ-Int4量化后的模型文件可能只有几百MB,下载和加载都飞快。
  • :得益于vLLM这个高性能推理引擎,模型生成文本的速度非常可观,能实现接近实时的对话体验。
  • :Int4量化技术大幅降低了模型对显存的需求。这意味着你甚至可以在消费级显卡(比如8GB显存的卡)上流畅运行它,极大地降低了部署门槛和成本。

想象一下,你可以快速搭建一个属于自己的智能对话助手,用于学习测试、创意写作辅助,或者集成到一些轻量级应用中。整个过程不需要复杂的调优,跟着本教程,从零开始,一步步就能搞定。

本教程的目标很明确:让你在10分钟内,成功部署并运行起这个模型,并通过一个漂亮的网页界面和它聊天。 我们不需要深厚的机器学习背景,只要会基本的命令行操作就行。

2. 环境准备与模型部署

在开始之前,我们得先确保环境已经就绪。这里假设你已经获取了包含此模型的镜像环境。整个部署流程,镜像已经为我们做好了绝大部分工作,我们只需要进行简单的验证和启动。

2.1 验证模型服务状态

模型部署的核心是vLLM服务。它就像一个高性能的推理服务器,在后台加载好模型,等待我们的调用。我们首先需要确认它是否已经成功启动。

打开终端或WebShell,输入以下命令来查看服务日志:

cat /root/workspace/llm.log

这条命令会显示vLLM服务器的启动日志。你需要关注日志的末尾部分,寻找类似下面的关键信息:

INFO 02-28 10:00:00 llm_engine.py:70] Initializing an LLM engine with config: model="/path/to/model", tokenizer="/path/to/tokenizer"...
INFO 02-28 10:00:05 llm_engine.py:210] GPU memory usage: 3.5/8.0 GB
INFO 02-28 10:00:10 llm_engine.py:350] LLM engine is ready.

当你看到 LLM engine is ready. 或者没有报错信息、日志停止在等待连接的状态时,就说明vLLM服务已经成功加载了通义千问模型,正在8000端口(或配置的端口)上等待请求。

如果日志还在滚动加载模型权重,请耐心等待一两分钟,模型加载需要一点时间,特别是首次运行时。

2.2 理解部署架构

在动手操作前,花30秒了解一下我们搭建的系统是怎么工作的,这样遇到问题心里更有底。

整个系统非常简单,只有两个核心部分:

  1. 后端 (vLLM):这是大脑。它负责加载通义千问1.5-1.8B-Chat-GPTQ-Int4模型,处理我们发送的文本,并生成回复。它通过一个标准的API接口(OpenAI兼容格式)提供服务。
  2. 前端 (Chainlit):这是脸面。它是一个轻量级的Web应用,提供了一个类似ChatGPT的聊天界面。我们在这个网页里输入问题,Chainlit会把问题打包成API请求发送给后端的vLLM,拿到回复后再漂亮地展示给我们看。

它们之间的关系就像餐厅的后厨和前厅。vLLM是后厨,埋头做菜(生成文本);Chainlit是前厅服务员,接收顾客点单(用户输入)并把做好的菜端上来(显示回复)。我们接下来要做的就是确保“后厨”已经开火,然后去“前厅”点菜。

3. 快速上手:使用Chainlit与模型对话

模型服务跑起来之后,我们不需要写任何代码就能直接和它对话。Chainlit已经为我们准备好了一个开箱即用的网页界面。

3.1 启动Chainlit前端

通常,Chainlit服务会随着模型一起启动。你需要找到访问这个网页界面的方式。

  1. 在镜像提供的Web IDE或管理界面中,寻找名为 “Chainlit”“Web UI”“打开应用” 的按钮或链接。
  2. 点击后,浏览器会打开一个新的标签页,显示Chainlit的聊天界面。它的界面非常简洁,通常中间有一个醒目的输入框,写着“Type a message...”或者“Ask me anything”。

如果找不到明确按钮,可以尝试在浏览器中访问镜像提供的特定端口地址(例如 http://<你的服务器IP>:8001 或类似端口,具体请查看镜像文档)。

3.2 开始你的第一次对话

打开Chainlit界面后,你就可以像使用任何聊天软件一样开始使用了。

  1. 在底部的输入框中,键入你想问的问题。例如,你可以从简单的开始:
    • “你好,请介绍一下你自己。”
    • “用Python写一个计算斐波那契数列的函数。”
    • “给我讲一个关于人工智能的短故事。”
  2. 按下回车键或点击发送按钮。
  3. 稍等片刻(通常1-3秒),模型的回复就会以气泡的形式显示在界面上。

成功对话的界面看起来是这样的: 你会在屏幕上看到清晰的对话流。你的问题在右侧(通常),模型的回复在左侧,排版清晰。这证明从前端界面到后端vLLM模型的整个链路都是通的。

3.3 试试更丰富的玩法

和模型打过招呼后,可以尝试一些更能体现它能力的对话:

  • 多轮对话:直接在上一个话题后面接着问。比如,先问“推荐几本科幻小说”,等它回答后,再问“其中哪一本最适合初学者?”。模型应该能记住对话的上下文。
  • 指令跟随:让它完成特定格式的任务。“请将以下句子翻译成英文:今天天气真好。”、“用要点总结一下机器学习的主要步骤。”
  • 创意生成:“写一首关于春天的五言绝句。”、“为一个名叫‘智星’的科技公司想一句广告语。”

通义千问1.5-1.8B-Chat虽然是个小模型,但在指令理解和基础对话上表现相当不错。你可以通过这些测试,亲身感受一下这个轻量级模型的“智力”水平。

4. 进阶使用与调用方式

除了在网页上聊天,我们还可以通过更编程的方式直接调用模型,这为集成到其他应用提供了可能。因为vLLM提供了兼容OpenAI的API,所以调用方法非常标准。

4.1 通过Python代码直接调用API

如果你需要在自己的Python脚本中使用这个模型,可以这样做。首先,确保你的Python环境可以访问到运行vLLM服务的服务器(通常是本地localhost)。

下面是一个最简单的调用示例:

from openai import OpenAI

# 初始化客户端,指向本地运行的vLLM服务
# vLLM的默认API端口通常是8000
client = OpenAI(
    base_url="http://localhost:8000/v1", # 注意这里的 /v1
    api_key="token-abc123" # vLLM默认可以任意key,非空即可
)

# 构造对话消息
messages = [
    {"role": "user", "content": "你好,你是谁?"}
]

# 调用聊天补全接口
response = client.chat.completions.create(
    model="Qwen1.5-1.8B-Chat", # 模型名,vLLM会使用它加载的模型
    messages=messages,
    max_tokens=512, # 控制回复的最大长度
    temperature=0.7, # 控制创造性,越低越确定,越高越随机
    stream=False # 是否流式输出
)

# 打印回复
print(response.choices[0].message.content)

运行这段代码,你会在控制台收到模型的自我介绍。这种方式让你能灵活地将模型能力嵌入到自动化脚本、数据分析流程或其他需要文本生成的地方。

4.2 关键参数调节

在调用API时,有几个参数可以显著影响回复效果,你可以根据需求调整:

  • max_tokens:生成回复的最大token数。设得太小可能回答不完整,太大则浪费资源。对于一般对话,256-1024是个合理范围。
  • temperature:创造性开关。范围0~2。temperature=0.1时,模型输出非常确定和保守;temperature=0.8时,会更有创意和变化。日常对话建议0.7左右。
  • top_p:另一种控制随机性的方法。通常和temperature二选一即可。建议值0.9-0.95。

你可以尝试用不同参数问同一个问题,比如“写一句诗”,感受一下输出风格的变化。

4.3 系统提示词(System Prompt)的使用

你可以通过设置系统提示词,来引导模型扮演特定角色或遵循某些规则。这在构建专业应用时特别有用。

messages = [
    {
        "role": "system",
        "content": "你是一个乐于助人且幽默的编程助手,回答技术问题时要准确,同时可以加入一些有趣的比喻。"
    },
    {
        "role": "user",
        "content": "解释一下什么是递归。"
    }
]

这样,模型的回答就会更贴近“幽默编程助手”的风格。系统提示词是定制模型行为的一个强大工具。

5. 总结:你的轻量级AI对话引擎已就位

回顾一下,我们完成了几件关键事情:

  1. 验证并启动了vLLM后端服务,它高效地加载了经过量化的通义千问1.5-1.8B-Chat模型,做到了“小、快、省”。
  2. 使用了Chainlit前端,无需编码就获得了一个直观友好的聊天界面,可以立即开始与模型互动。
  3. 探索了通过标准API编程调用模型的方式,为未来集成到更复杂的应用中打开了大门。

这个由vLLM + 通义千问1.5-1.8B-Chat-GPTQ-Int4 + Chainlit构成的组合,是一个非常理想的轻量级AI应用原型平台。它硬件门槛低、部署简单、响应迅速,非常适合用于:

  • 学习和实验:理解大模型服务的基本架构。
  • 原型验证:快速验证一个基于对话AI的应用想法。
  • 轻量级辅助工具:搭建一个内部使用的文档问答或创意生成小工具。

如果你在部署或使用过程中遇到问题,首先回头检查llm.log日志文件,它通常能给出最直接的错误线索。确保vLLM服务状态是“ready”,并且Chainlit能正确连接到后端端口。

现在,你的专属AI对话引擎已经准备就绪。接下来,就尽情发挥你的想象力,去探索和构建吧。从简单的问答到复杂的多轮对话,这个轻量但能力不俗的模型,或许能给你带来不少惊喜。


获取更多AI镜像

想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐