Qwen3.5-4B-AWQ代码实例:Python调用API+WebUI交互+日志排查全流程
Qwen3.5-4B-AWQ代码实例:Python调用API+WebUI交互+日志排查全流程
1. 模型介绍与部署准备
Qwen3.5-4B-AWQ-4bit是阿里云通义千问团队推出的轻量级稠密模型,经过4bit AWQ量化后显存占用仅约3GB,可在RTX 3060/4060等消费级显卡上流畅运行。该模型在MMLU-Pro基准测试中接近Qwen3-30B-A3B的性能,在OmniDocBench上甚至超越了GPT-5-Nano,实现了精度与速度的完美平衡。
1.1 核心特性
- 多语言支持:覆盖201种语言处理能力
- 多模态能力:原生支持图文交互
- 长上下文处理:可处理超长文本输入
- 工具调用:适配轻量Agent、知识库、客服等场景
- 部署友好:兼容llama.cpp等多种推理框架
1.2 环境准备
# 创建conda环境 conda create -n qwen python=3.10 -y conda activate qwen # 安装基础依赖 pip install torch torchvision torchaudio pip install vllm transformers fastapi uvicorn2. 服务部署与管理
2.1 项目结构
模型默认安装在/root/ai-models/cyankiwi/Qwen3___5-4B-AWQ-4bit路径下,使用vLLM作为推理引擎,WebUI服务运行在7860端口。
2.2 服务控制命令
# 查看服务状态 supervisorctl status # 启动服务 supervisorctl start qwen35-4b-awq # 停止服务 supervisorctl stop qwen35-4b-awq # 重启服务 supervisorctl restart qwen35-4b-awq2.3 日志监控
# 实时查看运行日志 tail -f /root/Qwen3.5-4B-AWQ-4bit/logs/webui.log # 查看错误日志 tail -f /root/Qwen3.5-4B-AWQ-4bit/logs/webui.err.log3. Python API调用实战
3.1 基础API调用
from vllm import LLM, SamplingParams # 初始化模型 llm = LLM(model="/root/ai-models/cyankiwi/Qwen3___5-4B-AWQ-4bit") # 设置采样参数 sampling_params = SamplingParams(temperature=0.7, top_p=0.9, max_tokens=512) # 生成文本 prompt = "请用中文解释量子计算的基本原理" outputs = llm.generate([prompt], sampling_params) # 输出结果 print(outputs[0].outputs[0].text)3.2 流式输出实现
from vllm import LLM, SamplingParams def stream_generator(prompt): llm = LLM(model="/root/ai-models/cyankiwi/Qwen3___5-4B-AWQ-4bit") sampling_params = SamplingParams(temperature=0.7, stream=True) for output in llm.generate([prompt], sampling_params): yield output.outputs[0].text # 使用示例 for chunk in stream_generator("写一篇关于人工智能的短文"): print(chunk, end="", flush=True)4. WebUI交互指南
启动服务后,通过浏览器访问http://localhost:7860即可使用Web界面:
- 输入框:输入您的提示词或问题
- 参数调节:可调整温度(temperature)、top_p等生成参数
- 历史记录:自动保存对话历史
- 多模态支持:支持图片上传和图文对话
5. 常见问题排查
5.1 显存不足问题
# 检查GPU显存占用 nvidia-smi # 查找并终止残留进程 ps aux | grep VLLM kill -9 <PID>5.2 服务启动失败
- 检查日志文件
/root/Qwen3.5-4B-AWQ-4bit/logs/webui.err.log - 确认conda环境已正确激活
- 验证模型路径是否正确
5.3 响应速度慢
- 降低
max_tokens参数值 - 尝试减小
top_p值(如0.7) - 检查系统资源占用情况
6. 高级应用场景
6.1 知识库问答集成
from vllm import LLM from langchain.vectorstores import FAISS from langchain.embeddings import HuggingFaceEmbeddings # 加载嵌入模型 embeddings = HuggingFaceEmbeddings(model_name="GanymedeNil/text2vec-large-chinese") # 创建知识库索引 documents = ["量子计算利用量子比特...", "人工智能主要分为..."] db = FAISS.from_texts(documents, embeddings) # 结合Qwen3.5进行问答 def answer_with_context(question): relevant_docs = db.similarity_search(question, k=2) context = "\n".join([doc.page_content for doc in relevant_docs]) prompt = f"根据以下上下文回答问题:\n{context}\n\n问题:{question}" llm = LLM(model="/root/ai-models/cyankiwi/Qwen3___5-4B-AWQ-4bit") outputs = llm.generate([prompt], SamplingParams(max_tokens=256)) return outputs[0].outputs[0].text6.2 多轮对话实现
from vllm import LLM class ChatBot: def __init__(self): self.llm = LLM(model="/root/ai-models/cyankiwi/Qwen3___5-4B-AWQ-4bit") self.history = [] def chat(self, user_input): prompt = "\n".join([f"用户:{msg[0]}\n助手:{msg[1]}" for msg in self.history[-3:]]) prompt += f"\n用户:{user_input}\n助手:" outputs = self.llm.generate([prompt], SamplingParams(temperature=0.8)) response = outputs[0].outputs[0].text self.history.append((user_input, response)) return response7. 总结与进阶建议
通过本教程,我们全面介绍了Qwen3.5-4B-AWQ模型的部署、API调用和WebUI交互方法。这个轻量级模型在消费级GPU上表现出色,特别适合以下场景:
- 本地开发:快速原型设计和测试
- 教育研究:低成本运行大型语言模型
- 企业应用:构建知识库、客服系统等
对于希望进一步探索的开发者,建议尝试:
- 使用FastAPI构建自定义API端点
- 集成LangChain框架开发复杂应用
- 探索模型的多模态能力(图文交互)
- 测试长上下文处理性能(支持超长文本输入)
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。
